summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFernandoS27 <fsahmkow27@gmail.com>2021-03-21 18:23:16 +0100
committerameerj <52414509+ameerj@users.noreply.github.com>2021-07-23 03:51:24 +0200
commit56be556eee65335cdc896bb1eb47999d04850b77 (patch)
treed20b37eeea5381d6051e00d3a7cd770b68798d60
parentshader: Implement F2F (diff)
downloadyuzu-56be556eee65335cdc896bb1eb47999d04850b77.tar
yuzu-56be556eee65335cdc896bb1eb47999d04850b77.tar.gz
yuzu-56be556eee65335cdc896bb1eb47999d04850b77.tar.bz2
yuzu-56be556eee65335cdc896bb1eb47999d04850b77.tar.lz
yuzu-56be556eee65335cdc896bb1eb47999d04850b77.tar.xz
yuzu-56be556eee65335cdc896bb1eb47999d04850b77.tar.zst
yuzu-56be556eee65335cdc896bb1eb47999d04850b77.zip
-rw-r--r--src/shader_recompiler/frontend/maxwell/translate/impl/floating_point_add.cpp17
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