diff options
author | 2014-06-24 16:08:12 +0000 | |
---|---|---|
committer | 2014-06-23 21:45:06 +0000 | |
commit | 1528b02c4d5241e785bb680f13de70c355e67429 (patch) | |
tree | 79eefb2dd1ae2cade357ef5d8367973bd08b0a34 /compiler/utils/arm/assembler_thumb2.cc | |
parent | a76724f4bc4a8d36c6c99243835b8e3ddf1eb2d7 (diff) | |
parent | 20dfc797dc631bf8d655dcf123f46f13332d3074 (diff) |
Merge "Add some more instruction support to optimizing compiler."
Diffstat (limited to 'compiler/utils/arm/assembler_thumb2.cc')
-rw-r--r-- | compiler/utils/arm/assembler_thumb2.cc | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/compiler/utils/arm/assembler_thumb2.cc b/compiler/utils/arm/assembler_thumb2.cc index 703d68e0b3..92a9f533ea 100644 --- a/compiler/utils/arm/assembler_thumb2.cc +++ b/compiler/utils/arm/assembler_thumb2.cc @@ -329,7 +329,7 @@ void Thumb2Assembler::ldm(BlockAddressMode am, ++reg; } CHECK_LT(reg, 16); - CHECK(am == DB_W); // Only writeback is supported. + CHECK(am == IA_W); // Only writeback is supported. ldr(static_cast<Register>(reg), Address(base, kRegisterSize, Address::PostIndex), cond); } else { EmitMultiMemOp(cond, am, true, base, regs); @@ -352,8 +352,8 @@ void Thumb2Assembler::stm(BlockAddressMode am, ++reg; } CHECK_LT(reg, 16); - CHECK(am == IA || am == IA_W); - Address::Mode strmode = am == IA ? Address::PreIndex : Address::Offset; + CHECK(am == DB || am == DB_W); + Address::Mode strmode = am == DB_W ? Address::PreIndex : Address::Offset; str(static_cast<Register>(reg), Address(base, -kRegisterSize, strmode), cond); } else { EmitMultiMemOp(cond, am, false, base, regs); @@ -642,6 +642,7 @@ bool Thumb2Assembler::Is32BitDataProcessing(Condition cond, if (imm > (1 << 9)) { // 9 bit immediate. return true; } + return false; // 16 bit good. } else if (opcode == ADD && rd != SP && rn == SP) { // 10 bit immediate. if (imm > (1 << 10)) { return true; |