diff options
| author | FernandoS27 <fsahmkow27@gmail.com> | 2021-03-21 18:23:16 +0100 | 
|---|---|---|
| committer | ameerj <52414509+ameerj@users.noreply.github.com> | 2021-07-22 21:51:24 -0400 | 
| commit | 56be556eee65335cdc896bb1eb47999d04850b77 (patch) | |
| tree | d20b37eeea5381d6051e00d3a7cd770b68798d60 /src/shader_recompiler/frontend/maxwell/translate/impl | |
| parent | a62f04efab4331eeabd4441962f86a5e87db3f2d (diff) | |
shader: Implement FADD32I
Diffstat (limited to 'src/shader_recompiler/frontend/maxwell/translate/impl')
| -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) {      FADD(*this, insn, GetFloatImm20(insn));  } -void TranslatorVisitor::FADD32I(u64) { -    throw NotImplementedException("FADD32I"); +void TranslatorVisitor::FADD32I(u64 insn) { +    union { +        u64 raw; +        BitField<55, 1, u64> ftz; +        BitField<53, 1, u64> neg_b; +        BitField<54, 1, u64> abs_a; +        BitField<52, 1, u64> cc; +        BitField<56, 1, u64> neg_a; +        BitField<57, 1, u64> abs_b; +        BitField<50, 1, u64> sat; +    } const fadd32i{insn}; + +    FADD(*this, insn, fadd32i.sat != 0, fadd32i.cc != 0, fadd32i.ftz != 0, FpRounding::RN, +         GetFloatImm32(insn), fadd32i.abs_a != 0, fadd32i.neg_a != 0, fadd32i.abs_b != 0, +         fadd32i.neg_b != 0);  }  } // namespace Shader::Maxwell | 
