summaryrefslogtreecommitdiff
path: root/src/video_core/engines
diff options
context:
space:
mode:
authorGravatar ReinUsesLisp2018-10-15 02:08:31 -0300
committerGravatar ReinUsesLisp2018-10-15 02:55:51 -0300
commit3d65aa4caf88a440eeaf2082b1f5ca3e2c41317c (patch)
tree39d062165482925c7e0b584daaecbfa97df26939 /src/video_core/engines
parentgl_shader_decompiler: Implement HADD2_IMM and HMUL2_IMM (diff)
downloadyuzu-3d65aa4caf88a440eeaf2082b1f5ca3e2c41317c.tar.gz
yuzu-3d65aa4caf88a440eeaf2082b1f5ca3e2c41317c.tar.xz
yuzu-3d65aa4caf88a440eeaf2082b1f5ca3e2c41317c.zip
gl_shader_decompiler: Implement HFMA2 instructions
Diffstat (limited to 'src/video_core/engines')
-rw-r--r--src/video_core/engines/shader_bytecode.h32
1 files changed, 32 insertions, 0 deletions
diff --git a/src/video_core/engines/shader_bytecode.h b/src/video_core/engines/shader_bytecode.h
index 3fbdd20b8..23bfd8988 100644
--- a/src/video_core/engines/shader_bytecode.h
+++ b/src/video_core/engines/shader_bytecode.h
@@ -615,6 +615,29 @@ union Instruction {
615 } half_imm; 615 } half_imm;
616 616
617 union { 617 union {
618 union {
619 BitField<37, 2, HalfPrecision> precision;
620 BitField<32, 1, u64> saturate;
621
622 BitField<30, 1, u64> negate_c;
623 BitField<35, 2, HalfType> type_c;
624 } rr;
625
626 BitField<57, 2, HalfPrecision> precision;
627 BitField<52, 1, u64> saturate;
628
629 BitField<49, 2, HalfMerge> merge;
630
631 BitField<47, 2, HalfType> type_a;
632
633 BitField<56, 1, u64> negate_b;
634 BitField<28, 2, HalfType> type_b;
635
636 BitField<51, 1, u64> negate_c;
637 BitField<53, 2, HalfType> type_reg39;
638 } hfma2;
639
640 union {
618 BitField<40, 1, u64> invert; 641 BitField<40, 1, u64> invert;
619 } popc; 642 } popc;
620 643
@@ -1212,6 +1235,10 @@ public:
1212 HMUL2_C, 1235 HMUL2_C,
1213 HMUL2_R, 1236 HMUL2_R,
1214 HMUL2_IMM, 1237 HMUL2_IMM,
1238 HFMA2_CR,
1239 HFMA2_RC,
1240 HFMA2_RR,
1241 HFMA2_IMM_R,
1215 POPC_C, 1242 POPC_C,
1216 POPC_R, 1243 POPC_R,
1217 POPC_IMM, 1244 POPC_IMM,
@@ -1290,6 +1317,7 @@ public:
1290 Bfe, 1317 Bfe,
1291 Shift, 1318 Shift,
1292 Ffma, 1319 Ffma,
1320 Hfma2,
1293 Flow, 1321 Flow,
1294 Synch, 1322 Synch,
1295 Memory, 1323 Memory,
@@ -1464,6 +1492,10 @@ private:
1464 INST("0111100-1-------", Id::HMUL2_C, Type::ArithmeticHalf, "HMUL2_C"), 1492 INST("0111100-1-------", Id::HMUL2_C, Type::ArithmeticHalf, "HMUL2_C"),
1465 INST("0101110100001---", Id::HMUL2_R, Type::ArithmeticHalf, "HMUL2_R"), 1493 INST("0101110100001---", Id::HMUL2_R, Type::ArithmeticHalf, "HMUL2_R"),
1466 INST("0111100-0-------", Id::HMUL2_IMM, Type::ArithmeticHalfImmediate, "HMUL2_IMM"), 1494 INST("0111100-0-------", Id::HMUL2_IMM, Type::ArithmeticHalfImmediate, "HMUL2_IMM"),
1495 INST("01110---1-------", Id::HFMA2_CR, Type::Hfma2, "HFMA2_CR"),
1496 INST("01100---1-------", Id::HFMA2_RC, Type::Hfma2, "HFMA2_RC"),
1497 INST("0101110100000---", Id::HFMA2_RR, Type::Hfma2, "HFMA2_RR"),
1498 INST("01110---0-------", Id::HFMA2_IMM_R, Type::Hfma2, "HFMA2_R_IMM"),
1467 INST("0101000010000---", Id::MUFU, Type::Arithmetic, "MUFU"), 1499 INST("0101000010000---", Id::MUFU, Type::Arithmetic, "MUFU"),
1468 INST("0100110010010---", Id::RRO_C, Type::Arithmetic, "RRO_C"), 1500 INST("0100110010010---", Id::RRO_C, Type::Arithmetic, "RRO_C"),
1469 INST("0101110010010---", Id::RRO_R, Type::Arithmetic, "RRO_R"), 1501 INST("0101110010010---", Id::RRO_R, Type::Arithmetic, "RRO_R"),