// 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: ^