[llvm] r218445 - [Thumb2] BXJ should be undefined for v7M, v8A

Oliver Stannard oliver.stannard at arm.com
Thu Sep 25 03:02:05 PDT 2014


Author: olista01
Date: Thu Sep 25 05:02:05 2014
New Revision: 218445

URL: http://llvm.org/viewvc/llvm-project?rev=218445&view=rev
Log:
[Thumb2] BXJ should be undefined for v7M, v8A

The Thumb2 BXJ instruction (Branch and Exchange Jazelle) is not
defined for v7M or v8A. It is defined for all other Thumb2-supporting
architectures (v6T2, v7A and v7R).


Added:
    llvm/trunk/test/MC/ARM/thumb2-bxj.s
Modified:
    llvm/trunk/lib/Target/ARM/ARMInstrThumb2.td

Modified: llvm/trunk/lib/Target/ARM/ARMInstrThumb2.td
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/ARM/ARMInstrThumb2.td?rev=218445&r1=218444&r2=218445&view=diff
==============================================================================
--- llvm/trunk/lib/Target/ARM/ARMInstrThumb2.td (original)
+++ llvm/trunk/lib/Target/ARM/ARMInstrThumb2.td Thu Sep 25 05:02:05 2014
@@ -3632,7 +3632,7 @@ def t2IT : Thumb2XI<(outs), (ins it_pred
 // Branch and Exchange Jazelle -- for disassembly only
 // Rm = Inst{19-16}
 def t2BXJ : T2I<(outs), (ins rGPR:$func), NoItinerary, "bxj", "\t$func", []>,
-    Sched<[WriteBr]> {
+    Sched<[WriteBr]>, Requires<[IsThumb2, IsNotMClass, PreV8]> {
   bits<4> func;
   let Inst{31-27} = 0b11110;
   let Inst{26} = 0;

Added: llvm/trunk/test/MC/ARM/thumb2-bxj.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/ARM/thumb2-bxj.s?rev=218445&view=auto
==============================================================================
--- llvm/trunk/test/MC/ARM/thumb2-bxj.s (added)
+++ llvm/trunk/test/MC/ARM/thumb2-bxj.s Thu Sep 25 05:02:05 2014
@@ -0,0 +1,10 @@
+@ 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: 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
+
+@ CHECK: bxj r2                      @ encoding: [0xc2,0xf3,0x00,0x8f]
+@ UNDEF: error: instruction requires: arm-mode





More information about the llvm-commits mailing list