1@ RUN: llvm-mc -triple=thumbv7m-apple-darwin -show-encoding < %s | FileCheck %s 2@ RUN: not llvm-mc -triple=thumbv6 -show-encoding 2>&1 < %s | FileCheck %s --check-prefix=CHECK-V6M 3 .syntax unified 4 .globl _func 5 6@ Check that the assembler can handle the documented syntax from the ARM ARM. 7@ These tests test instruction encodings specific to ARMv7m. 8 9@------------------------------------------------------------------------------ 10@ MRS 11@------------------------------------------------------------------------------ 12 13 mrs r0, basepri 14 mrs r0, basepri_max 15 mrs r0, faultmask 16 17@ CHECK: mrs r0, basepri @ encoding: [0xef,0xf3,0x11,0x80] 18@ CHECK: mrs r0, basepri_max @ encoding: [0xef,0xf3,0x12,0x80] 19@ CHECK: mrs r0, faultmask @ encoding: [0xef,0xf3,0x13,0x80] 20 21@------------------------------------------------------------------------------ 22@ MSR 23@------------------------------------------------------------------------------ 24 25 msr basepri, r0 26 msr basepri_max, r0 27 msr faultmask, r0 28 29@ CHECK: msr basepri, r0 @ encoding: [0x80,0xf3,0x11,0x88] 30@ CHECK: msr basepri_max, r0 @ encoding: [0x80,0xf3,0x12,0x88] 31@ CHECK: msr faultmask, r0 @ encoding: [0x80,0xf3,0x13,0x88] 32 33@ CHECK-V6M: error: invalid operand for instruction 34@ CHECK-V6M-NEXT: mrs r0, basepri 35@ CHECK-V6M: error: invalid operand for instruction 36@ CHECK-V6M-NEXT: mrs r0, basepri_max 37@ CHECK-V6M: error: invalid operand for instruction 38@ CHECK-V6M-NEXT: mrs r0, faultmask 39@ CHECK-V6M: error: invalid operand for instruction 40@ CHECK-V6M-NEXT: msr basepri, r0 41@ CHECK-V6M: error: invalid operand for instruction 42@ CHECK-V6M-NEXT: msr basepri_max, r0 43@ CHECK-V6M: error: invalid operand for instruction 44@ CHECK-V6M-NEXT: msr faultmask, r0 45 46