summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCalin Juravle <calin@google.com>2015-03-17 21:16:24 +0000
committerCalin Juravle <calin@google.com>2015-03-17 21:16:24 +0000
commit2dae78cbd4394a4498a845c6943992b57bd07b6e (patch)
treeea27dd630728cfa994ce2c5da522538744a7a8a9
parent8de00e3f5fcb99bfd7e4dc679ab7333549bec2c1 (diff)
downloadart-2dae78cbd4394a4498a845c6943992b57bd07b6e.zip
art-2dae78cbd4394a4498a845c6943992b57bd07b6e.tar.gz
art-2dae78cbd4394a4498a845c6943992b57bd07b6e.tar.bz2
Revert "Make subs alter flags when rn is an immediate"
This reverts commit 8de00e3f5fcb99bfd7e4dc679ab7333549bec2c1. Change-Id: Ie9da31279f565f165d51d8c0036928377280e3b8
-rw-r--r--compiler/utils/arm/assembler_thumb2.cc33
-rw-r--r--compiler/utils/arm/assembler_thumb2_test.cc10
2 files changed, 15 insertions, 28 deletions
diff --git a/compiler/utils/arm/assembler_thumb2.cc b/compiler/utils/arm/assembler_thumb2.cc
index 31cf727..6d0571e 100644
--- a/compiler/utils/arm/assembler_thumb2.cc
+++ b/compiler/utils/arm/assembler_thumb2.cc
@@ -826,9 +826,7 @@ void Thumb2Assembler::Emit32BitDataProcessing(Condition cond ATTRIBUTE_UNUSED,
// Check special cases.
if ((opcode == SUB || opcode == ADD) && (so.GetImmediate() < (1u << 12))) {
if (opcode == SUB) {
- if (!set_cc) {
- thumb_opcode = 5U /* 0b0101 */;
- }
+ thumb_opcode = 5U /* 0b0101 */;
} else {
thumb_opcode = 0;
}
@@ -838,14 +836,13 @@ void Thumb2Assembler::Emit32BitDataProcessing(Condition cond ATTRIBUTE_UNUSED,
uint32_t imm3 = (imm >> 8) & 7U /* 0b111 */;
uint32_t imm8 = imm & 0xff;
- encoding = B31 | B30 | B29 | B28 |
- (set_cc ? B20 : B25) |
- thumb_opcode << 21 |
- rn << 16 |
- rd << 8 |
- i << 26 |
- imm3 << 12 |
- imm8;
+ encoding = B31 | B30 | B29 | B28 | B25 |
+ thumb_opcode << 21 |
+ rn << 16 |
+ rd << 8 |
+ i << 26 |
+ imm3 << 12 |
+ imm8;
} else {
// Modified immediate.
uint32_t imm = ModifiedImmediate(so.encodingThumb());
@@ -861,13 +858,13 @@ void Thumb2Assembler::Emit32BitDataProcessing(Condition cond ATTRIBUTE_UNUSED,
imm;
}
} else if (so.IsRegister()) {
- // Register (possibly shifted)
- encoding = B31 | B30 | B29 | B27 | B25 |
- thumb_opcode << 21 |
- (set_cc ? 1 : 0) << 20 |
- rn << 16 |
- rd << 8 |
- so.encodingThumb();
+ // Register (possibly shifted)
+ encoding = B31 | B30 | B29 | B27 | B25 |
+ thumb_opcode << 21 |
+ (set_cc ? 1 : 0) << 20 |
+ rn << 16 |
+ rd << 8 |
+ so.encodingThumb();
}
Emit32(encoding);
}
diff --git a/compiler/utils/arm/assembler_thumb2_test.cc b/compiler/utils/arm/assembler_thumb2_test.cc
index d802852..ebea9d4 100644
--- a/compiler/utils/arm/assembler_thumb2_test.cc
+++ b/compiler/utils/arm/assembler_thumb2_test.cc
@@ -227,14 +227,4 @@ TEST_F(AssemblerThumb2Test, eor) {
DriverStr(expected, "abs");
}
-TEST_F(AssemblerThumb2Test, sub) {
- __ subs(arm::R1, arm::R0, arm::ShifterOperand(42));
- __ sub(arm::R1, arm::R0, arm::ShifterOperand(42));
-
- const char* expected =
- "subs r1, r0, #42\n"
- "subw r1, r0, #42\n";
- DriverStr(expected, "sub");
-}
-
} // namespace art