diff --git a/Core/MIPS/IR/IRPassSimplify.cpp b/Core/MIPS/IR/IRPassSimplify.cpp index a6a939cd46..3285ff194d 100644 --- a/Core/MIPS/IR/IRPassSimplify.cpp +++ b/Core/MIPS/IR/IRPassSimplify.cpp @@ -126,6 +126,9 @@ bool PropagateConstants(const IRWriter &in, IRWriter &out) { case IROp::SetConst: gpr.SetImm(inst.dest, constants[inst.src1]); break; + case IROp::SetConstF: + case IROp::SetConstV: + goto doDefault; case IROp::Sub: case IROp::Slt: @@ -381,6 +384,22 @@ bool PropagateConstants(const IRWriter &in, IRWriter &out) { } break; + case IROp::ZeroFpCond: + case IROp::FCmpUnordered: + case IROp::FCmpEqual: + case IROp::FCmpEqualUnordered: + case IROp::FCmpLessOrdered: + case IROp::FCmpLessUnordered: + case IROp::FCmpLessEqualOrdered: + case IROp::FCmpLessEqualUnordered: + gpr.MapDirty(IRREG_FPCOND); + goto doDefault; + + case IROp::RestoreRoundingMode: + case IROp::ApplyRoundingMode: + case IROp::UpdateRoundingMode: + goto doDefault; + case IROp::VfpuCtrlToReg: gpr.MapDirtyIn(inst.dest, IRREG_VPFU_CTRL_BASE + inst.src1); goto doDefault;