diff options
| author | 2018-06-17 13:26:11 -0400 | |
|---|---|---|
| committer | 2018-06-17 15:27:48 -0400 | |
| commit | afdd657d307306af27796199b798e7441fb7e21d (patch) | |
| tree | 196b3267a4521b1bd0fb103e6e20854705499b35 /src/video_core/engines | |
| parent | gl_shader_decompiler: Refactor LOP32I instruction a bit in support of LOP. (diff) | |
| download | yuzu-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.h | 14 |
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"), |