summaryrefslogtreecommitdiffstats
path: root/src/shader_recompiler/frontend/maxwell/translate/impl/integer_floating_point_conversion.cpp
diff options
context:
space:
mode:
authorReinUsesLisp <reinuseslisp@airmail.cc>2021-05-10 08:55:09 +0200
committerameerj <52414509+ameerj@users.noreply.github.com>2021-07-23 03:51:31 +0200
commit3b6a632237e2f8388f2591d54fb31bebdc2a0ade (patch)
tree7c7c1c4ca32f986bae1fc8f23330a21551bf5086 /src/shader_recompiler/frontend/maxwell/translate/impl/integer_floating_point_conversion.cpp
parentglasm: Properly clamp Fp64 on GLASM (diff)
downloadyuzu-3b6a632237e2f8388f2591d54fb31bebdc2a0ade.tar
yuzu-3b6a632237e2f8388f2591d54fb31bebdc2a0ade.tar.gz
yuzu-3b6a632237e2f8388f2591d54fb31bebdc2a0ade.tar.bz2
yuzu-3b6a632237e2f8388f2591d54fb31bebdc2a0ade.tar.lz
yuzu-3b6a632237e2f8388f2591d54fb31bebdc2a0ade.tar.xz
yuzu-3b6a632237e2f8388f2591d54fb31bebdc2a0ade.tar.zst
yuzu-3b6a632237e2f8388f2591d54fb31bebdc2a0ade.zip
Diffstat (limited to '')
-rw-r--r--src/shader_recompiler/frontend/maxwell/translate/impl/integer_floating_point_conversion.cpp7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/shader_recompiler/frontend/maxwell/translate/impl/integer_floating_point_conversion.cpp b/src/shader_recompiler/frontend/maxwell/translate/impl/integer_floating_point_conversion.cpp
index 3c233597f..d6224d5cc 100644
--- a/src/shader_recompiler/frontend/maxwell/translate/impl/integer_floating_point_conversion.cpp
+++ b/src/shader_recompiler/frontend/maxwell/translate/impl/integer_floating_point_conversion.cpp
@@ -99,7 +99,12 @@ void I2F(TranslatorVisitor& v, u64 insn, IR::U32U64 src) {
}
const int conversion_src_bitsize{i2f.int_format == IntFormat::U64 ? 64 : 32};
const int dst_bitsize{BitSize(i2f.float_format)};
- IR::F16F32F64 value{v.ir.ConvertIToF(dst_bitsize, conversion_src_bitsize, is_signed, src)};
+ const IR::FpControl fp_control{
+ .no_contraction = false,
+ .rounding = CastFpRounding(i2f.fp_rounding),
+ .fmz_mode = IR::FmzMode::DontCare,
+ };
+ auto value{v.ir.ConvertIToF(dst_bitsize, conversion_src_bitsize, is_signed, src, fp_control)};
if (i2f.neg != 0) {
if (i2f.abs != 0 || !is_signed) {
// We know the value is positive