diff options
| author | 2018-10-15 02:08:31 -0300 | |
|---|---|---|
| committer | 2018-10-15 02:55:51 -0300 | |
| commit | 3d65aa4caf88a440eeaf2082b1f5ca3e2c41317c (patch) | |
| tree | 39d062165482925c7e0b584daaecbfa97df26939 /src/video_core/engines | |
| parent | gl_shader_decompiler: Implement HADD2_IMM and HMUL2_IMM (diff) | |
| download | yuzu-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.h | 32 |
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"), |