summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorReinUsesLisp <reinuseslisp@airmail.cc>2021-04-10 04:41:27 +0200
committerameerj <52414509+ameerj@users.noreply.github.com>2021-07-23 03:51:26 +0200
commit5cd3d00167b17c1fe36f97da978a7024e93c14e7 (patch)
tree6760b6db0913800643095ee8666dbbe985df861a
parentshader: Fix dangling labels (diff)
downloadyuzu-5cd3d00167b17c1fe36f97da978a7024e93c14e7.tar
yuzu-5cd3d00167b17c1fe36f97da978a7024e93c14e7.tar.gz
yuzu-5cd3d00167b17c1fe36f97da978a7024e93c14e7.tar.bz2
yuzu-5cd3d00167b17c1fe36f97da978a7024e93c14e7.tar.lz
yuzu-5cd3d00167b17c1fe36f97da978a7024e93c14e7.tar.xz
yuzu-5cd3d00167b17c1fe36f97da978a7024e93c14e7.tar.zst
yuzu-5cd3d00167b17c1fe36f97da978a7024e93c14e7.zip
-rw-r--r--src/shader_recompiler/frontend/maxwell/translate/impl/floating_point_compare.cpp10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/shader_recompiler/frontend/maxwell/translate/impl/floating_point_compare.cpp b/src/shader_recompiler/frontend/maxwell/translate/impl/floating_point_compare.cpp
index e78e9c4e1..c02a40209 100644
--- a/src/shader_recompiler/frontend/maxwell/translate/impl/floating_point_compare.cpp
+++ b/src/shader_recompiler/frontend/maxwell/translate/impl/floating_point_compare.cpp
@@ -42,7 +42,15 @@ void TranslatorVisitor::FCMP_cr(u64 insn) {
}
void TranslatorVisitor::FCMP_imm(u64 insn) {
- FCMP(*this, insn, GetReg39(insn), GetFloatImm20(insn));
+ union {
+ u64 raw;
+ BitField<20, 19, u64> value;
+ BitField<56, 1, u64> is_negative;
+ } const fcmp{insn};
+ const u32 sign_bit{fcmp.is_negative != 0 ? (1U << 31) : 0};
+ const u32 value{static_cast<u32>(fcmp.value) << 12};
+
+ FCMP(*this, insn, ir.Imm32(value), GetFloatReg39(insn));
}
} // namespace Shader::Maxwell