diff --git a/llvm/lib/Target/ARM/ARMInstrThumb2.td b/llvm/lib/Target/ARM/ARMInstrThumb2.td index 6d45f0549d93..00a9c8bf2081 100644 --- a/llvm/lib/Target/ARM/ARMInstrThumb2.td +++ b/llvm/lib/Target/ARM/ARMInstrThumb2.td @@ -3632,7 +3632,7 @@ def t2IT : Thumb2XI<(outs), (ins it_pred:$cc, it_mask:$mask), // 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; diff --git a/llvm/test/MC/ARM/thumb2-bxj.s b/llvm/test/MC/ARM/thumb2-bxj.s new file mode 100644 index 000000000000..e60d1a447cba --- /dev/null +++ b/llvm/test/MC/ARM/thumb2-bxj.s @@ -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