1 // RUN: not llvm-mc -triple=aarch64 -show-encoding -mattr=+sme2,+fp8 2>&1 < %s| FileCheck %s 2 3 // --------------------------------------------------------------------------// 4 // Incorrect operand 5 6 fscale {z0.h-z1.h}, {z0.h-z1.h}, z0 7 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand 8 // CHECK-NEXT: fscale {z0.h-z1.h}, {z0.h-z1.h}, z0 9 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 10 11 fscale {z0.d-z1.d}, {z0.h-z1.h}, z0.h 12 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand for instruction 13 // CHECK-NEXT: fscale {z0.d-z1.d}, {z0.h-z1.h}, z0.h 14 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 15 16 fscale {z30.s-z31.s}, {z30.s-z31.s}, {z30 - z31} 17 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand for instruction 18 // CHECK-NEXT: fscale {z30.s-z31.s}, {z30.s-z31.s}, {z30 - z31} 19 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 20 21 fscale {z0.s-z3.s}, {z0.d-z3.d}, z0.h 22 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand for instruction 23 // CHECK-NEXT: fscale {z0.s-z3.s}, {z0.d-z3.d}, z0.h 24 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 25 26 fscale {z28.h-z31.h}, {z28-z31}, {z28.h-z31.h} 27 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand for instruction 28 // CHECK-NEXT: fscale {z28.h-z31.h}, {z28-z31}, {z28.h-z31.h} 29 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 30 31 fscale {z28.d-z31.d}, z28.d, {z28.d-z31.d} 32 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand for instruction 33 // CHECK-NEXT: fscale {z28.d-z31.d}, z28.d, {z28.d-z31.d} 34 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 35 36 fscale {z0.h-z1.h}, {z1.h-z4.h}, {z0.h-z1.h} 37 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand for instruction 38 // CHECK-NEXT: fscale {z0.h-z1.h}, {z1.h-z4.h}, {z0.h-z1.h} 39 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 40 41 // --------------------------------------------------------------------------// 42 // Incorrect range of vectors 43 44 fscale {z0.h-z1.h}, {z1.h-z2.h}, z0.h 45 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: Invalid vector list, expected list with 2 consecutive SVE vectors, where the first vector is a multiple of 2 and with matching element types 46 // CHECK-NEXT: fscale {z0.h-z1.h}, {z1.h-z2.h}, z0.h 47 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 48 49 fscale {z0.h-z1.h}, {z31.h-z0.h}, {z0.h-z1.h} 50 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: Invalid vector list, expected list with 2 consecutive SVE vectors, where the first vector is a multiple of 2 and with matching element types 51 // CHECK-NEXT: fscale {z0.h-z1.h}, {z31.h-z0.h}, {z0.h-z1.h} 52 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 53 54 fscale {z2.h-z5.h}, {z0.h-z3.h}, z0.h 55 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: Invalid vector list, expected list with 4 consecutive SVE vectors, where the first vector is a multiple of 4 and with matching element types 56 // CHECK-NEXT: fscale {z2.h-z5.h}, {z0.h-z3.h}, z0.h 57 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 58 59 fscale {z0.h-z3.h}, {z0.h-z3.h}, {z3.h-z6.h} 60 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: Invalid vector list, expected list with 4 consecutive SVE vectors, where the first vector is a multiple of 4 and with matching element types 61 // CHECK-NEXT: fscale {z0.h-z3.h}, {z0.h-z3.h}, {z3.h-z6.h} 62 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 63