Compiler projects using llvm
// RUN: llvm-mc -triple aarch64 -mattr=+v8a -show-encoding < %s | FileCheck %s
// RUN: not llvm-mc -triple aarch64 -mattr=+v8r -show-encoding < %s 2>&1 |\
// RUN:   FileCheck --check-prefix=CHECK-ERROR %s

// CHECK:       msr	TTBR0_EL2, x3          // encoding: [0x03,0x20,0x1c,0xd5]
// CHECK-NEXT: 	mrs	x3, TTBR0_EL2          // encoding: [0x03,0x20,0x3c,0xd5]
// CHECK-NEXT: 	msr	VTTBR_EL2, x3          // encoding: [0x03,0x21,0x1c,0xd5]
// CHECK-NEXT: 	mrs	x3, VTTBR_EL2          // encoding: [0x03,0x21,0x3c,0xd5]
// CHECK-NEXT: 	msr	VSTTBR_EL2, x3         // encoding: [0x03,0x26,0x1c,0xd5]
// CHECK-NEXT: 	mrs	x3, VSTTBR_EL2         // encoding: [0x03,0x26,0x3c,0xd5]

msr TTBR0_EL2, x3
mrs x3, TTBR0_EL2
msr VTTBR_EL2, x3
mrs x3, VTTBR_EL2
msr VSTTBR_EL2, x3
mrs x3, VSTTBR_EL2

// CHECK-ERROR:      {{.*}}: error: expected writable system register or pstate
// CHECK-ERROR-NEXT:         msr TTBR0_EL2, x3
// CHECK-ERROR-NEXT:             ^
// CHECK-ERROR-NEXT: {{.*}}: error: expected readable system register
// CHECK-ERROR-NEXT:         mrs x3, TTBR0_EL2
// CHECK-ERROR-NEXT:                 ^
// CHECK-ERROR-NEXT: {{.*}}: error: expected writable system register or pstate
// CHECK-ERROR-NEXT:         msr VTTBR_EL2, x3
// CHECK-ERROR-NEXT:             ^
// CHECK-ERROR-NEXT: {{.*}}: error: expected readable system register
// CHECK-ERROR-NEXT:         mrs x3, VTTBR_EL2
// CHECK-ERROR-NEXT:                 ^
// CHECK-ERROR-NEXT: {{.*}}: error: expected writable system register or pstate
// CHECK-ERROR-NEXT:         msr VSTTBR_EL2, x3
// CHECK-ERROR-NEXT:             ^
// CHECK-ERROR-NEXT: {{.*}}: error: expected readable system register
// CHECK-ERROR-NEXT:         mrs x3, VSTTBR_EL2
// CHECK-ERROR-NEXT:                 ^