Browse Source

shader: Fix FCMP immediate variant

pull/15/merge
ReinUsesLisp 5 years ago
committed by ameerj
parent
commit
5cd3d00167
  1. 10
      src/shader_recompiler/frontend/maxwell/translate/impl/floating_point_compare.cpp

10
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
Loading…
Cancel
Save