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