OSDN Git Service

AArch64: Fix OpRegRegImm64 add/sub for large negative imm.
authorVladimir Marko <vmarko@google.com>
Tue, 1 Jul 2014 16:21:18 +0000 (17:21 +0100)
committerVladimir Marko <vmarko@google.com>
Tue, 1 Jul 2014 16:21:18 +0000 (17:21 +0100)
Bug: 15837964
Change-Id: I401edf687352fae3dca03c0a807dac5750e454f6

compiler/dex/quick/arm64/utility_arm64.cc

index e248410..50b4a06 100644 (file)
@@ -732,7 +732,7 @@ LIR* Arm64Mir2Lir::OpRegRegImm64(OpKind op, RegStorage r_dest, RegStorage r_src1
         return NewLIR4(opcode | wide, r_dest.GetReg(), r_src1.GetReg(), abs_value >> 12, 1);
       } else {
         log_imm = -1;
-        alt_opcode = (neg) ? kA64Add4RRre : kA64Sub4RRre;
+        alt_opcode = (op == kOpAdd) ? kA64Add4RRre : kA64Sub4RRre;
         info = EncodeExtend(is_wide ? kA64Uxtx : kA64Uxtw, 0);
       }
       break;