diff options
| author | Charlie Turner <charlie.turner@arm.com> | 2015-04-15 17:28:23 +0000 |
|---|---|---|
| committer | Charlie Turner <charlie.turner@arm.com> | 2015-04-15 17:28:23 +0000 |
| commit | 6f13d0ca84bd6eafd7d72bbefbba0d711a204f85 (patch) | |
| tree | 7b8e255ec87df3041f9e2be563f8ec36fe6e461e /llvm/test/MC | |
| parent | 890803f5f4c049ab42165a582dedfd8dc53cce33 (diff) | |
| download | bcm5719-llvm-6f13d0ca84bd6eafd7d72bbefbba0d711a204f85.tar.gz bcm5719-llvm-6f13d0ca84bd6eafd7d72bbefbba0d711a204f85.zip | |
Fix BXJ is undefined in AArch32.
BXJ was incorrectly said to be unsupported in ARMv8-A. It is not
supported in the A64 instruction set, but it is supported in the T32
and A32 instruction sets, because it's listed as an instruction in the
ARM ARM section F7.1.28.
Using SP as an operand to BXJ changed from UNPREDICTABLE to
PREDICTABLE in v8-A. This patch reflects that update as well.
This was found by MCHammer.
llvm-svn: 235024
Diffstat (limited to 'llvm/test/MC')
| -rw-r--r-- | llvm/test/MC/ARM/thumb2-bxj-v8.s | 11 | ||||
| -rw-r--r-- | llvm/test/MC/ARM/thumb2-bxj.s | 2 |
2 files changed, 12 insertions, 1 deletions
diff --git a/llvm/test/MC/ARM/thumb2-bxj-v8.s b/llvm/test/MC/ARM/thumb2-bxj-v8.s new file mode 100644 index 00000000000..4420b6f15c1 --- /dev/null +++ b/llvm/test/MC/ARM/thumb2-bxj-v8.s @@ -0,0 +1,11 @@ +@ RUN: not llvm-mc -triple=thumbv6t2--none-eabi -show-encoding < %s 2>&1 | FileCheck %s --check-prefix=UNDEF +@ RUN: not llvm-mc -triple=thumbv7a--none-eabi -show-encoding < %s 2>&1 | FileCheck %s --check-prefix=UNDEF +@ RUN: not llvm-mc -triple=thumbv7r--none-eabi -show-encoding < %s 2>&1 | FileCheck %s --check-prefix=UNDEF +@ RUN: not llvm-mc -triple=thumbv7m--none-eabi -show-encoding < %s 2>&1 | FileCheck %s --check-prefix=ARM_MODE +@ RUN: llvm-mc -triple=thumbv8a--none-eabi -show-encoding < %s 2>&1 | FileCheck %s + +bxj r13 + +@ CHECK: bxj sp @ encoding: [0xcd,0xf3,0x00,0x8f] +@ UNDEF: error: r13 (SP) is an unpredictable operand to BXJ +@ ARM_MODE: error: instruction requires: arm-mode diff --git a/llvm/test/MC/ARM/thumb2-bxj.s b/llvm/test/MC/ARM/thumb2-bxj.s index e60d1a447cb..76879399ed8 100644 --- a/llvm/test/MC/ARM/thumb2-bxj.s +++ b/llvm/test/MC/ARM/thumb2-bxj.s @@ -1,8 +1,8 @@ @ RUN: llvm-mc -triple=thumbv6t2--none-eabi -show-encoding < %s | FileCheck %s @ RUN: llvm-mc -triple=thumbv7a--none-eabi -show-encoding < %s | FileCheck %s @ RUN: llvm-mc -triple=thumbv7r--none-eabi -show-encoding < %s | FileCheck %s +@ RUN: llvm-mc -triple=thumbv8a--none-eabi -show-encoding < %s | FileCheck %s @ RUN: not llvm-mc -triple=thumbv7m--none-eabi -show-encoding < %s 2>&1 | FileCheck %s --check-prefix=UNDEF -@ RUN: not llvm-mc -triple=thumbv8a--none-eabi -show-encoding < %s 2>&1 | FileCheck %s --check-prefix=UNDEF bxj r2 |

