diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/shader_recompiler/frontend/maxwell/translate/impl/floating_point_add.cpp | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/src/shader_recompiler/frontend/maxwell/translate/impl/floating_point_add.cpp b/src/shader_recompiler/frontend/maxwell/translate/impl/floating_point_add.cpp index 76a807d4e..487198aa6 100644 --- a/src/shader_recompiler/frontend/maxwell/translate/impl/floating_point_add.cpp +++ b/src/shader_recompiler/frontend/maxwell/translate/impl/floating_point_add.cpp | |||
| @@ -64,8 +64,21 @@ void TranslatorVisitor::FADD_imm(u64 insn) { | |||
| 64 | FADD(*this, insn, GetFloatImm20(insn)); | 64 | FADD(*this, insn, GetFloatImm20(insn)); |
| 65 | } | 65 | } |
| 66 | 66 | ||
| 67 | void TranslatorVisitor::FADD32I(u64) { | 67 | void TranslatorVisitor::FADD32I(u64 insn) { |
| 68 | throw NotImplementedException("FADD32I"); | 68 | union { |
| 69 | u64 raw; | ||
| 70 | BitField<55, 1, u64> ftz; | ||
| 71 | BitField<53, 1, u64> neg_b; | ||
| 72 | BitField<54, 1, u64> abs_a; | ||
| 73 | BitField<52, 1, u64> cc; | ||
| 74 | BitField<56, 1, u64> neg_a; | ||
| 75 | BitField<57, 1, u64> abs_b; | ||
| 76 | BitField<50, 1, u64> sat; | ||
| 77 | } const fadd32i{insn}; | ||
| 78 | |||
| 79 | FADD(*this, insn, fadd32i.sat != 0, fadd32i.cc != 0, fadd32i.ftz != 0, FpRounding::RN, | ||
| 80 | GetFloatImm32(insn), fadd32i.abs_a != 0, fadd32i.neg_a != 0, fadd32i.abs_b != 0, | ||
| 81 | fadd32i.neg_b != 0); | ||
| 69 | } | 82 | } |
| 70 | 83 | ||
| 71 | } // namespace Shader::Maxwell | 84 | } // namespace Shader::Maxwell |