Shave some more instructions

This commit is contained in:
Henrik Rydgard committed 2013-01-11 18:50:05 +01:00
1 parent 2e6063d084
commit 37be2600be
2 files changed
+21 -12

No files matched your search

+20 -8
View File
@@ -59,17 +59,23 @@ namespace MIPSComp
if (TryMakeOperand2(offset, op2)) {
ADD(R0, gpr.R(rs), op2);
} else {
ARMABI_MOVI2R(R0, (u32)offset);
ADD(R0, gpr.R(rs), R0);
// Try to avoid using MOVT
if (offset < 0) {
ARMABI_MOVI2R(R0, (u32)(-offset));
SUB(R0, gpr.R(rs), R0);
} else {
ARMABI_MOVI2R(R0, (u32)offset);
ADD(R0, gpr.R(rs), R0);
}
}
BIC(R0, R0, Operand2(0xC0, 4)); // &= 0x3FFFFFFF
} else {
BIC(R0, gpr.R(rs), Operand2(0xC0, 4)); // &= 0x3FFFFFFF
}
ADD(R0, R0, R11); // TODO: Merge with next instruction
if (o == 35) {
LDR(gpr.R(rt), R0);
LDR(gpr.R(rt), R11, R0, true, true);
} else if (o == 36) {
ADD(R0, R0, R11); // TODO: Merge with next instruction
LDRB(gpr.R(rt), R0);
}
} else {
@@ -91,17 +97,23 @@ namespace MIPSComp
if (TryMakeOperand2(offset, op2)) {
ADD(R0, gpr.R(rs), op2);
} else {
ARMABI_MOVI2R(R0, (u32)offset);
ADD(R0, gpr.R(rs), R0);
// Try to avoid using MOVT
if (offset < 0) {
ARMABI_MOVI2R(R0, (u32)(-offset));
SUB(R0, gpr.R(rs), R0);
} else {
ARMABI_MOVI2R(R0, (u32)offset);
ADD(R0, gpr.R(rs), R0);
}
}
BIC(R0, R0, Operand2(0xC0, 4)); // &= 0x3FFFFFFF
} else {
BIC(R0, gpr.R(rs), Operand2(0xC0, 4)); // &= 0x3FFFFFFF
}
ADD(R0, R0, R11);
if (o == 43) {
STR(R0, gpr.R(rt));
STR(R0, gpr.R(rt), R11, true, true);
} else if (o == 40) {
ADD(R0, R0, R11);
STRB(R0, gpr.R(rt));
}
} else {