From 188edb3a3ec36ad5fc42373b1e1bed3a85b4f112 Mon Sep 17 00:00:00 2001 From: Roland Levillain Date: Mon, 24 Oct 2016 16:31:16 +0100 Subject: [PATCH] Fix the Thumb-2 definition of the CLREX instruction. Test: make test-art-host-gtest-assembler_thumb2_test Change-Id: I433fa35451aa944e300d5d582dc16b2b9a8bcfb3 --- compiler/utils/arm/assembler_thumb2.cc | 2 +- compiler/utils/arm/assembler_thumb2_test.cc | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/compiler/utils/arm/assembler_thumb2.cc b/compiler/utils/arm/assembler_thumb2.cc index 61b7f0851..1e71d06b4 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 d0799d611..30e8f4e60 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)); -- 2.11.0