Symbian buildfix, fix for fpu test

This commit is contained in:
Henrik Rydgard 2016-05-14 15:26:43 +02:00
parent b612806ee4
commit 0541fe36df
3 changed files with 4 additions and 4 deletions

View File

@ -376,8 +376,6 @@ void IRFrontend::Comp_JumpReg(MIPSOpcode op) {
} }
void IRFrontend::Comp_Syscall(MIPSOpcode op) { void IRFrontend::Comp_Syscall(MIPSOpcode op) {
RestoreRoundingMode();
// Note: If we're in a delay slot, this is off by one compared to the interpreter. // Note: If we're in a delay slot, this is off by one compared to the interpreter.
int dcAmount = js.downcountAmount; int dcAmount = js.downcountAmount;
ir.Write(IROp::Downcount, 0, dcAmount & 0xFF, dcAmount >> 8); ir.Write(IROp::Downcount, 0, dcAmount & 0xFF, dcAmount >> 8);
@ -385,6 +383,7 @@ void IRFrontend::Comp_Syscall(MIPSOpcode op) {
FlushAll(); FlushAll();
RestoreRoundingMode();
ir.Write(IROp::Syscall, 0, ir.AddConstant(op.encoding)); ir.Write(IROp::Syscall, 0, ir.AddConstant(op.encoding));
ApplyRoundingMode(); ApplyRoundingMode();
ir.Write(IROp::ExitToPC); ir.Write(IROp::ExitToPC);

View File

@ -92,6 +92,7 @@ static const IRMeta irMeta[] = {
{ IROp::FSatMinus1_1, "FSat(-1 - 1)", "FF" }, { IROp::FSatMinus1_1, "FSat(-1 - 1)", "FF" },
{ IROp::FMovFromGPR, "FMovFromGPR", "FG" }, { IROp::FMovFromGPR, "FMovFromGPR", "FG" },
{ IROp::FMovToGPR, "FMovToGPR", "GF" }, { IROp::FMovToGPR, "FMovToGPR", "GF" },
{ IROp::ZeroFpCond, "ZeroFpCond", "" },
{ IROp::FpCondToReg, "FpCondToReg", "G" }, { IROp::FpCondToReg, "FpCondToReg", "G" },
{ IROp::VfpuCtrlToReg, "VfpuCtrlToReg", "GI" }, { IROp::VfpuCtrlToReg, "VfpuCtrlToReg", "GI" },
{ IROp::SetCtrlVFPU, "SetCtrlVFPU", "TC" }, { IROp::SetCtrlVFPU, "SetCtrlVFPU", "TC" },

View File

@ -117,7 +117,7 @@ bool IRApplyPasses(const IRPassFunc *passes, size_t c, const IRWriter &in, IRWri
} }
bool OptimizeFPMoves(const IRWriter &in, IRWriter &out) { bool OptimizeFPMoves(const IRWriter &in, IRWriter &out) {
const u32 *constants = in.GetConstants().data(); const u32 *constants = !in.GetConstants().empty() ? &in.GetConstants()[0] : nullptr;
bool logBlocks = false; bool logBlocks = false;
IRInst prev; IRInst prev;
prev.op = IROp::Nop; prev.op = IROp::Nop;
@ -215,7 +215,7 @@ bool ThreeOpToTwoOp(const IRWriter &in, IRWriter &out) {
bool PropagateConstants(const IRWriter &in, IRWriter &out) { bool PropagateConstants(const IRWriter &in, IRWriter &out) {
IRRegCache gpr(&out); IRRegCache gpr(&out);
const u32 *constants = &in.GetConstants()[0]; const u32 *constants = !in.GetConstants().empty() ? &in.GetConstants()[0] : nullptr;
bool logBlocks = false; bool logBlocks = false;
for (int i = 0; i < (int)in.GetInstructions().size(); i++) { for (int i = 0; i < (int)in.GetInstructions().size(); i++) {
IRInst inst = in.GetInstructions()[i]; IRInst inst = in.GetInstructions()[i];