Clean up kOpCmp on ARM.
kThumb2CmnRI8M is now used.
Change-Id: I300299258ed99d86c300dee45c904c360dd44638
diff --git a/compiler/dex/quick/arm/int_arm.cc b/compiler/dex/quick/arm/int_arm.cc
index 41d9213..9f84b03 100644
--- a/compiler/dex/quick/arm/int_arm.cc
+++ b/compiler/dex/quick/arm/int_arm.cc
@@ -299,7 +299,6 @@
LIR* ArmMir2Lir::OpCmpImmBranch(ConditionCode cond, int reg, int check_value,
LIR* target) {
LIR* branch;
- int mod_imm;
ArmConditionCode arm_cond = ArmConditionEncoding(cond);
/*
* A common use of OpCmpImmBranch is for null checks, and using the Thumb 16-bit
@@ -317,16 +316,7 @@
branch = NewLIR2((arm_cond == kArmCondEq) ? kThumb2Cbz : kThumb2Cbnz,
reg, 0);
} else {
- mod_imm = ModifiedImmediate(check_value);
- if (ARM_LOWREG(reg) && ((check_value & 0xff) == check_value)) {
- NewLIR2(kThumbCmpRI8, reg, check_value);
- } else if (mod_imm >= 0) {
- NewLIR2(kThumb2CmpRI8M, reg, mod_imm);
- } else {
- int t_reg = AllocTemp();
- LoadConstant(t_reg, check_value);
- OpRegReg(kOpCmp, reg, t_reg);
- }
+ OpRegImm(kOpCmp, reg, check_value);
branch = NewLIR2(kThumbBCond, 0, arm_cond);
}
branch->target = target;
diff --git a/compiler/dex/quick/arm/utility_arm.cc b/compiler/dex/quick/arm/utility_arm.cc
index 4819bdf..8a8b168 100644
--- a/compiler/dex/quick/arm/utility_arm.cc
+++ b/compiler/dex/quick/arm/utility_arm.cc
@@ -596,13 +596,10 @@
}
break;
case kOpCmp:
- if (ARM_LOWREG(r_dest_src1) && short_form) {
- opcode = (short_form) ? kThumbCmpRI8 : kThumbCmpRR;
- } else if (ARM_LOWREG(r_dest_src1)) {
- opcode = kThumbCmpRR;
+ if (!neg && short_form) {
+ opcode = kThumbCmpRI8;
} else {
short_form = false;
- opcode = kThumbCmpHL;
}
break;
default: