diff --git a/src/shader_recompiler/frontend/translate/vector_alu.cpp b/src/shader_recompiler/frontend/translate/vector_alu.cpp index a434567a0..876305445 100644 --- a/src/shader_recompiler/frontend/translate/vector_alu.cpp +++ b/src/shader_recompiler/frontend/translate/vector_alu.cpp @@ -393,8 +393,10 @@ void Translator::V_ASHRREV_I32(const GcnInst& inst) { } void Translator::V_MAD_U32_U24(const GcnInst& inst) { - // TODO: - V_MAD_I32_I24(inst); + const IR::U32 src0 = ir.BitFieldExtract(GetSrc(inst.src[0]), ir.Imm32(0), ir.Imm32(24), false); + const IR::U32 src1 = ir.BitFieldExtract(GetSrc(inst.src[1]), ir.Imm32(0), ir.Imm32(24), false); + const IR::U32 src2 = GetSrc(inst.src[2]); + SetDst(inst.dst[0], ir.IAdd(ir.IMul(src0, src1), src2)); } void Translator::V_RNDNE_F32(const GcnInst& inst) {