diff options
author | 2016-10-24 16:31:16 +0100 | |
---|---|---|
committer | 2016-10-25 15:37:28 +0100 | |
commit | 188edb3a3ec36ad5fc42373b1e1bed3a85b4f112 (patch) | |
tree | 8848979c71fd30cdd5edd16aa1c837accb89bb8c | |
parent | 413293ebfbce7787afcc12a07c6d4a4d86f8e794 (diff) |
Fix the Thumb-2 definition of the CLREX instruction.
Test: make test-art-host-gtest-assembler_thumb2_test
Change-Id: I433fa35451aa944e300d5d582dc16b2b9a8bcfb3
-rw-r--r-- | compiler/utils/arm/assembler_thumb2.cc | 2 | ||||
-rw-r--r-- | compiler/utils/arm/assembler_thumb2_test.cc | 7 |
2 files changed, 8 insertions, 1 deletions
diff --git a/compiler/utils/arm/assembler_thumb2.cc b/compiler/utils/arm/assembler_thumb2.cc index 61b7f08518..1e71d06b49 100644 --- a/compiler/utils/arm/assembler_thumb2.cc +++ b/compiler/utils/arm/assembler_thumb2.cc @@ -2830,7 +2830,7 @@ void Thumb2Assembler::strexd(Register rd, Register rt, Register rt2, Register rn void Thumb2Assembler::clrex(Condition cond) { CheckCondition(cond); - int32_t encoding = B31 | B30 | B29 | B27 | B28 | B25 | B24 | B23 | + int32_t encoding = B31 | B30 | B29 | B28 | B25 | B24 | B23 | B21 | B20 | 0xf << 16 | B15 | diff --git a/compiler/utils/arm/assembler_thumb2_test.cc b/compiler/utils/arm/assembler_thumb2_test.cc index d0799d6112..30e8f4e604 100644 --- a/compiler/utils/arm/assembler_thumb2_test.cc +++ b/compiler/utils/arm/assembler_thumb2_test.cc @@ -207,6 +207,13 @@ TEST_F(AssemblerThumb2Test, strexd) { DriverStr(expected, "strexd"); } +TEST_F(AssemblerThumb2Test, clrex) { + __ clrex(); + + const char* expected = "clrex\n"; + DriverStr(expected, "clrex"); +} + TEST_F(AssemblerThumb2Test, LdrdStrd) { __ ldrd(arm::R0, arm::Address(arm::R2, 8)); __ ldrd(arm::R0, arm::Address(arm::R12)); |