From d1f2250a200912540606613ba8d2180f59148b52 Mon Sep 17 00:00:00 2001 From: DanielSvoboda Date: Sun, 28 Jul 2024 23:38:40 -0300 Subject: [PATCH] Update translate.cpp --- src/shader_recompiler/frontend/translate/translate.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/shader_recompiler/frontend/translate/translate.cpp b/src/shader_recompiler/frontend/translate/translate.cpp index d525490f9..22be373b7 100644 --- a/src/shader_recompiler/frontend/translate/translate.cpp +++ b/src/shader_recompiler/frontend/translate/translate.cpp @@ -164,6 +164,8 @@ IR::U32F32 Translator::GetSrc(const InstOperand& operand, bool force_flt) { value = ir.GetVccHi(); } break; + case OperandField::M0: + value = m0_value; default: UNREACHABLE(); } @@ -327,7 +329,7 @@ void Translator::SetDst(const InstOperand& operand, const IR::U32F32& value) { if (operand.output_modifier.multiplier != 0.f) { result = ir.FPMul(result, ir.Imm32(operand.output_modifier.multiplier)); } - if (operand.output_modifier.clamp) { + if (operand.output_modifier.clamp && value.Type() == IR::Type::F32) { result = ir.FPSaturate(value); } switch (operand.field) { @@ -340,7 +342,7 @@ void Translator::SetDst(const InstOperand& operand, const IR::U32F32& value) { case OperandField::VccHi: return ir.SetVccHi(result); case OperandField::M0: - break; + m0_value = result; default: UNREACHABLE(); }