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