From 017474c3f89e5afcb3ffdb9fac3e412c40986092 Mon Sep 17 00:00:00 2001 From: ReinUsesLisp Date: Sat, 1 Feb 2020 02:57:01 -0300 Subject: shader/shift: Implement SHF_LEFT_{IMM,R} Shifts a pair of registers to the left and returns the high register. --- src/video_core/engines/shader_bytecode.h | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'src/video_core/engines/shader_bytecode.h') diff --git a/src/video_core/engines/shader_bytecode.h b/src/video_core/engines/shader_bytecode.h index f443ec0fe..901adb97b 100644 --- a/src/video_core/engines/shader_bytecode.h +++ b/src/video_core/engines/shader_bytecode.h @@ -624,6 +624,19 @@ enum class ShuffleOperation : u64 { Bfly = 3, // shuffleXorNV }; +enum class ShfType : u64 { + Bits32 = 0, + U64 = 2, + S64 = 3, +}; + +enum class ShfXmode : u64 { + None = 0, + HI = 1, + X = 2, + XHI = 3, +}; + union Instruction { constexpr Instruction& operator=(const Instruction& instr) { value = instr.value; @@ -775,6 +788,13 @@ union Instruction { BitField<39, 1, u64> wrap; } shr; + union { + BitField<37, 2, ShfType> type; + BitField<48, 2, ShfXmode> xmode; + BitField<50, 1, u64> wrap; + BitField<20, 6, u64> immediate; + } shf; + union { BitField<39, 5, u64> shift_amount; BitField<48, 1, u64> negate_b; -- cgit v1.2.3