1// RUN: llvm-mc -triple=thumbv8.1m.main-none-eabi -mattr=+8msecext,+mve -show-encoding < %s \ 2// RUN: | FileCheck --check-prefix=CHECK %s 3// RUN: not llvm-mc -triple=thumbv8.1m.main-none-eabi -mattr=-8msecext,+mve -show-encoding < %s 2>%t \ 4// RUN: | FileCheck --check-prefix=CHECK-NOSEC %s 5// RUN: FileCheck --check-prefix=ERROR-NOSEC < %t %s 6// RUN: not llvm-mc -triple=thumbv8.1m.main-none-eabi -mattr=+8msecext,-mve,+vfp2 -show-encoding < %s 2> %t \ 7// RUN: | FileCheck --check-prefix=CHECK-NOMVE %s 8// RUN: FileCheck --check-prefix=ERROR-NOMVE < %t %s 9// RUN: llvm-mc -triple=thumbv8.1m.main-none-eabi -mattr=+8msecext,+mve,-vfp2 -show-encoding < %s \ 10// RUN: | FileCheck --check-prefix=CHECK-NOVFP %s 11// RUN: not llvm-mc -triple=thumbv8.1m.main-none-eabi -mattr=-8msecext,-mve,-vfp2 -show-encoding < %s 2> %t 12// RUN: FileCheck --check-prefix=ERROR-NONE < %t %s 13// RUN: not llvm-mc -triple=thumbv8m.main-none-eabi -mattr=+8msecext,+vfp2 -show-encoding < %s 2> %t 14// RUN: FileCheck --check-prefix=ERROR-V8M < %t %s 15 16// ERROR-V8M: instruction requires: armv8.1m.main 17// ERROR-NONE: instruction requires: fp registers 18// CHECK-NOVFP: vmsr fpscr_nzcvqc, r0 @ encoding: [0xe2,0xee,0x10,0x0a] 19// CHECK-NOMVE: vmsr fpscr_nzcvqc, r0 @ encoding: [0xe2,0xee,0x10,0x0a] 20// CHECK-NOSEC: vmsr fpscr_nzcvqc, r0 @ encoding: [0xe2,0xee,0x10,0x0a] 21// CHECK: vmsr fpscr_nzcvqc, r0 @ encoding: [0xe2,0xee,0x10,0x0a] 22vmsr fpscr_nzcvqc, r0 23 24// ERROR-V8M: instruction requires: armv8.1m.main 25// ERROR-NONE: instruction requires: fp registers 26// CHECK-NOVFP: vmrs r10, fpscr_nzcvqc @ encoding: [0xf2,0xee,0x10,0xaa] 27// CHECK-NOMVE: vmrs r10, fpscr_nzcvqc @ encoding: [0xf2,0xee,0x10,0xaa] 28// CHECK-NOSEC: vmrs r10, fpscr_nzcvqc @ encoding: [0xf2,0xee,0x10,0xaa] 29// CHECK: vmrs r10, fpscr_nzcvqc @ encoding: [0xf2,0xee,0x10,0xaa] 30vmrs r10, fpscr_nzcvqc 31 32// ERROR-V8M: instruction requires: armv8.1m.main 33// ERROR-NONE: instruction requires: ARMv8-M Security Extensions 34// CHECK-NOVFP: vmrs r0, fpcxtns @ encoding: [0xfe,0xee,0x10,0x0a] 35// CHECK-NOMVE: vmrs r0, fpcxtns @ encoding: [0xfe,0xee,0x10,0x0a] 36// ERROR-NOSEC: instruction requires: ARMv8-M Security Extensions 37// CHECK: vmrs r0, fpcxtns @ encoding: [0xfe,0xee,0x10,0x0a] 38vmrs r0, fpcxtns 39 40// ERROR-V8M: instruction requires: armv8.1m.main 41// ERROR-NONE: instruction requires: ARMv8-M Security Extensions 42// CHECK-NOVFP: vmsr fpcxtns, r10 @ encoding: [0xee,0xee,0x10,0xaa] 43// CHECK-NOMVE: vmsr fpcxtns, r10 @ encoding: [0xee,0xee,0x10,0xaa] 44// ERROR-NOSEC: instruction requires: ARMv8-M Security Extensions 45// CHECK: vmsr fpcxtns, r10 @ encoding: [0xee,0xee,0x10,0xaa] 46vmsr fpcxtns, r10 47 48// ERROR-V8M: instruction requires: armv8.1m.main 49// ERROR-NONE: instruction requires: ARMv8-M Security Extensions 50// CHECK-NOVFP: vmsr fpcxts, r5 @ encoding: [0xef,0xee,0x10,0x5a] 51// CHECK-NOMVE: vmsr fpcxts, r5 @ encoding: [0xef,0xee,0x10,0x5a] 52// ERROR-NOSEC: instruction requires: ARMv8-M Security Extensions 53// CHECK: vmsr fpcxts, r5 @ encoding: [0xef,0xee,0x10,0x5a] 54vmsr fpcxts, r5 55 56// ERROR-V8M: instruction requires: armv8.1m.main 57// ERROR-NONE: instruction requires: ARMv8-M Security Extensions 58// CHECK-NOVFP: vmrs r3, fpcxtns @ encoding: [0xfe,0xee,0x10,0x3a] 59// CHECK-NOMVE: vmrs r3, fpcxtns @ encoding: [0xfe,0xee,0x10,0x3a] 60// ERROR-NOSEC: instruction requires: ARMv8-M Security Extensions 61// CHECK: vmrs r3, fpcxtns @ encoding: [0xfe,0xee,0x10,0x3a] 62vmrs r3, fpcxtns 63 64// ERROR-V8M: instruction requires: armv8.1m.main 65// ERROR-NONE: instruction requires: ARMv8-M Security Extensions 66// CHECK-NOVFP: vmrs r0, fpcxts @ encoding: [0xff,0xee,0x10,0x0a] 67// CHECK-NOMVE: vmrs r0, fpcxts @ encoding: [0xff,0xee,0x10,0x0a] 68// ERROR-NOSEC: instruction requires: ARMv8-M Security Extensions 69// CHECK: vmrs r0, fpcxts @ encoding: [0xff,0xee,0x10,0x0a] 70vmrs r0, fpcxts 71 72// ERROR-V8M: instruction requires: mve armv8.1m.main 73// ERROR-NONE: instruction requires: mve 74// ERROR-NOMVE: instruction requires: mve 75// CHECK-NOSEC: vmrs r0, vpr @ encoding: [0xfc,0xee,0x10,0x0a] 76// CHECK: vmrs r0, vpr @ encoding: [0xfc,0xee,0x10,0x0a] 77vmrs r0, vpr 78 79// ERROR-V8M: instruction requires: mve armv8.1m.main 80// ERROR-NONE: instruction requires: mve 81// ERROR-NOMVE: instruction requires: mve 82// CHECK-NOSEC: vmrs r4, p0 @ encoding: [0xfd,0xee,0x10,0x4a] 83// CHECK: vmrs r4, p0 @ encoding: [0xfd,0xee,0x10,0x4a] 84vmrs r4, p0 85 86// ERROR-V8M: instruction requires: mve armv8.1m.main 87// ERROR-NONE: instruction requires: mve 88// ERROR-NOMVE: instruction requires: mve 89// CHECK-NOSEC: vmsr vpr, r0 @ encoding: [0xec,0xee,0x10,0x0a] 90// CHECK: vmsr vpr, r0 @ encoding: [0xec,0xee,0x10,0x0a] 91vmsr vpr, r0 92 93// ERROR-V8M: instruction requires: mve armv8.1m.main 94// ERROR-NONE: instruction requires: mve 95// ERROR-NOMVE: instruction requires: mve 96// CHECK-NOSEC: vmsr p0, r4 @ encoding: [0xed,0xee,0x10,0x4a] 97// CHECK: vmsr p0, r4 @ encoding: [0xed,0xee,0x10,0x4a] 98vmsr p0, r4 99