1 // RUN: not llvm-mc -triple=aarch64 -show-encoding -mattr=+sve 2>&1 < %s| FileCheck %s 2 3 // Invalid element kind. 4 uzp1 z10.h, z22.h, z31.x 5 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid vector kind qualifier 6 // CHECK-NEXT: uzp1 z10.h, z22.h, z31.x 7 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 8 9 // Element size specifiers should match. 10 uzp1 z10.h, z3.h, z15.b 11 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid element width 12 // CHECK-NEXT: uzp1 z10.h, z3.h, z15.b 13 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 14 15 // Too few operands 16 uzp1 z1.h, z2.h 17 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: too few operands for instruction 18 // CHECK-NEXT: uzp1 z1.h, z2.h 19 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 20 21 // z32 is not a valid SVE data register 22 uzp1 z1.s, z2.s, z32.s 23 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand for instruction 24 // CHECK-NEXT: uzp1 z1.s, z2.s, z32.s 25 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 26 27 // p16 is not a valid SVE predicate register 28 uzp1 p1.s, p2.s, p16.s 29 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand for instruction 30 // CHECK-NEXT: uzp1 p1.s, p2.s, p16.s 31 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 32 33 // Combining data and predicate registers as operands 34 uzp1 z1.s, z2.s, p3.s 35 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand for instruction 36 // CHECK-NEXT: uzp1 z1.s, z2.s, p3.s 37 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 38 39 // Combining predicate and data registers as operands 40 uzp1 p1.s, p2.s, z3.s 41 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand for instruction 42 // CHECK-NEXT: uzp1 p1.s, p2.s, z3.s 43 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 44 45 46 // --------------------------------------------------------------------------// 47 // Negative tests for instructions that are incompatible with movprfx 48 49 movprfx z31.d, p0/z, z6.d 50 uzp1 z31.d, z31.d, z31.d 51 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: instruction is unpredictable when following a movprfx, suggest replacing movprfx with mov 52 // CHECK-NEXT: uzp1 z31.d, z31.d, z31.d 53 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 54 55 movprfx z31, z6 56 uzp1 z31.d, z31.d, z31.d 57 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: instruction is unpredictable when following a movprfx, suggest replacing movprfx with mov 58 // CHECK-NEXT: uzp1 z31.d, z31.d, z31.d 59 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 60