| # RUN: not llvm-mc -disassemble -triple=thumbv8m.main -mattr=+fp-armv8 -mattr=+cdecp0 -mattr=+cdecp1 < %s 2>%t | FileCheck %s | 
 | # RUN: FileCheck <%t --check-prefixes=ERROR,ERROR-FP %s | 
 | # RUN: not llvm-mc -disassemble -triple=thumbv8.1m.main -mattr=+mve -mattr=+cdecp0 -mattr=+cdecp1 < %s 2>%t | FileCheck --check-prefixes=CHECK,CHECK-MVE %s | 
 | # RUN: FileCheck <%t --check-prefixes=ERROR,ERROR-MVE %s | 
 |  | 
 | # GCP instructions | 
 |  | 
 | # CHECK: mrc p3, #1, r3, c15, c15, #5 | 
 | [0x3f,0xee,0xbf,0x33] | 
 | # CHECK-NEXT: mcr2 p3, #2, r2, c7, c11, #7 | 
 | [0x47,0xfe,0xfb,0x23] | 
 |  | 
 | # VCX1 | 
 |  | 
 | # CHECK: vcx1 p0, s11, #1234 | 
 | [0x69,0xec,0x92,0x50] | 
 | # CHECK-NEXT: vcx1a p1, s7, #2047 | 
 | [0x6f,0xfc,0xbf,0x31] | 
 | # CHECK-NEXT: vcx1 p0, d0, #0 | 
 | [0x20,0xed,0x00,0x00] | 
 | # CHECK-NEXT: vcx1a p1, d3, #2047 | 
 | [0x2f,0xfd,0xbf,0x31] | 
 | # CHECK-MVE-NEXT: vcx1 p0, q1, #1234 | 
 | # ERROR-FP: [[@LINE+1]]:{{[0-9]+}}: warning: invalid instruction encoding | 
 | [0x29,0xec,0xd2,0x20] | 
 | # CHECK-MVE-NEXT: vcx1a p1, q5, #4095 | 
 | # ERROR-FP: [[@LINE+1]]:{{[0-9]+}}: warning: invalid instruction encoding | 
 | [0x2f,0xfd,0xff,0xa1] | 
 |  | 
 | # Vector variant, Vd<0> == 1 | 
 | # ERROR: [[@LINE+1]]:{{[0-9]+}}: warning: invalid instruction encoding | 
 | [0x29,0xec,0xd2,0x30] | 
 |  | 
 | # VCX2 | 
 |  | 
 | # CHECK: vcx2 p0, s0, s31, #12 | 
 | [0x33,0xec,0x2f,0x00] | 
 | # CHECK-NEXT: vcx2a p0, s1, s1, #63 | 
 | [0x7f,0xfc,0xb0,0x00] | 
 | # CHECK-NEXT: vcx2 p0, d0, d15, #0 | 
 | [0x30,0xed,0x0f,0x00] | 
 | # CHECK-NEXT: vcx2a p0, d1, d11, #63 | 
 | [0x3f,0xfd,0x9b,0x10] | 
 | # CHECK-MVE-NEXT: vcx2 p1, q0, q6, #123 | 
 | # ERROR-FP: [[@LINE+1]]:{{[0-9]+}}: warning: invalid instruction encoding | 
 | [0x3e,0xed,0xdc,0x01] | 
 | # CHECK-MVE-NEXT: vcx2a p1, q3, q7, #127 | 
 | # ERROR-FP: [[@LINE+1]]:{{[0-9]+}}: warning: invalid instruction encoding | 
 | [0x3f,0xfd,0xde,0x61] | 
 |  | 
 | # VCX2 Vector variant, Vm<0> == 1 | 
 | # ERROR-MVE: [[@LINE+1]]:{{[0-9]+}}: warning: invalid instruction encoding | 
 | [0x3e,0xed,0xff,0x01] | 
 |  | 
 | # vcx2 p1, q0, q15, #123 | 
 | # CHECK-MVE: vcx2 p1, q0, q7, #123 | 
 | # ERROR-MVE: [[@LINE+1]]:{{[0-9]+}}: warning: potentially undefined instruction encoding | 
 | [0x3e,0xed,0xfe,0x01] | 
 |  | 
 | # VCX3 | 
 |  | 
 | # CHECK: vcx3 p0, s0, s31, s0, #1 | 
 | [0x8f,0xec,0x90,0x00] | 
 | # CHECK-NEXT: vcx3a p1, s1, s17, s11, #7 | 
 | [0xf8,0xfc,0xb5,0x01] | 
 | # CHECK-NEXT: vcx3 p0, d0, d15, d7, #0 | 
 | [0x8f,0xed,0x07,0x00] | 
 | # CHECK-NEXT: vcx3a p1, d1, d11, d11, #7 | 
 | [0xbb,0xfd,0x1b,0x11] | 
 | # CHECK-MVE-NEXT: vcx3 p0, q0, q2, q0, #12 | 
 | # ERROR-FP: [[@LINE+1]]:{{[0-9]+}}: warning: invalid instruction encoding | 
 | [0xa4,0xed,0x40,0x00] | 
 | # CHECK-MVE-NEXT: vcx3a p1, q3, q7, q6, #15 | 
 | # ERROR-FP: [[@LINE+1]]:{{[0-9]+}}: warning: invalid instruction encoding | 
 | [0xbe,0xfd,0x5c,0x61] | 
 |  | 
 | # Vector variant, Vn<0> == 1 | 
 | # ERROR: [[@LINE+1]]:{{[0-9]+}}: warning: invalid instruction encoding | 
 | [0xbf,0xfd,0x7e,0x61] |