summaryrefslogtreecommitdiff
path: root/src/video_core/engines
diff options
context:
space:
mode:
authorGravatar bunnei2018-06-17 13:26:11 -0400
committerGravatar bunnei2018-06-17 15:27:48 -0400
commitafdd657d307306af27796199b798e7441fb7e21d (patch)
tree196b3267a4521b1bd0fb103e6e20854705499b35 /src/video_core/engines
parentgl_shader_decompiler: Refactor LOP32I instruction a bit in support of LOP. (diff)
downloadyuzu-afdd657d307306af27796199b798e7441fb7e21d.tar.gz
yuzu-afdd657d307306af27796199b798e7441fb7e21d.tar.xz
yuzu-afdd657d307306af27796199b798e7441fb7e21d.zip
gl_shader_decompiler: Implement LOP instructions.
Diffstat (limited to 'src/video_core/engines')
-rw-r--r--src/video_core/engines/shader_bytecode.h14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/video_core/engines/shader_bytecode.h b/src/video_core/engines/shader_bytecode.h
index 800b70dbf..cefd57f4c 100644
--- a/src/video_core/engines/shader_bytecode.h
+++ b/src/video_core/engines/shader_bytecode.h
@@ -230,6 +230,14 @@ union Instruction {
230 } fmnmx; 230 } fmnmx;
231 231
232 union { 232 union {
233 BitField<39, 1, u64> invert_a;
234 BitField<40, 1, u64> invert_b;
235 BitField<41, 2, LogicOperation> operation;
236 BitField<44, 2, u64> unk44;
237 BitField<48, 3, Pred> pred48;
238 } lop;
239
240 union {
233 BitField<53, 2, LogicOperation> operation; 241 BitField<53, 2, LogicOperation> operation;
234 BitField<55, 1, u64> invert_a; 242 BitField<55, 1, u64> invert_a;
235 BitField<56, 1, u64> invert_b; 243 BitField<56, 1, u64> invert_b;
@@ -476,6 +484,9 @@ public:
476 I2I_C, 484 I2I_C,
477 I2I_R, 485 I2I_R,
478 I2I_IMM, 486 I2I_IMM,
487 LOP_C,
488 LOP_R,
489 LOP_IMM,
479 LOP32I, 490 LOP32I,
480 MOV_C, 491 MOV_C,
481 MOV_R, 492 MOV_R,
@@ -675,6 +686,9 @@ private:
675 INST("0100110000000---", Id::BFE_C, Type::Bfe, "BFE_C"), 686 INST("0100110000000---", Id::BFE_C, Type::Bfe, "BFE_C"),
676 INST("0101110000000---", Id::BFE_R, Type::Bfe, "BFE_R"), 687 INST("0101110000000---", Id::BFE_R, Type::Bfe, "BFE_R"),
677 INST("0011100-00000---", Id::BFE_IMM, Type::Bfe, "BFE_IMM"), 688 INST("0011100-00000---", Id::BFE_IMM, Type::Bfe, "BFE_IMM"),
689 INST("0100110001000---", Id::LOP_C, Type::ArithmeticInteger, "LOP_C"),
690 INST("0101110001000---", Id::LOP_R, Type::ArithmeticInteger, "LOP_R"),
691 INST("0011100001000---", Id::LOP_IMM, Type::ArithmeticInteger, "LOP_IMM"),
678 INST("000001----------", Id::LOP32I, Type::ArithmeticIntegerImmediate, "LOP32I"), 692 INST("000001----------", Id::LOP32I, Type::ArithmeticIntegerImmediate, "LOP32I"),
679 INST("0100110001001---", Id::SHL_C, Type::Shift, "SHL_C"), 693 INST("0100110001001---", Id::SHL_C, Type::Shift, "SHL_C"),
680 INST("0101110001001---", Id::SHL_R, Type::Shift, "SHL_R"), 694 INST("0101110001001---", Id::SHL_R, Type::Shift, "SHL_R"),