1// RUN: not llvm-mc -triple=aarch64 -show-encoding -mattr=+sve2 2>&1 < %s| FileCheck %s 2 3 4 5// ------------------------------------------------------------------------- // 6// z register out of range for index 7 8mls z0.h, z1.h, z8.h[0] 9// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: Invalid restricted vector register, expected z0.h..z7.h 10// CHECK-NEXT: mls z0.h, z1.h, z8.h[0] 11// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 12 13mls z0.s, z1.s, z8.s[0] 14// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: Invalid restricted vector register, expected z0.s..z7.s 15// CHECK-NEXT: mls z0.s, z1.s, z8.s[0] 16// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 17 18mls z0.d, z1.d, z16.d[0] 19// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: Invalid restricted vector register, expected z0.d..z15.d 20// CHECK-NEXT: mls z0.d, z1.d, z16.d[0] 21// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 22 23 24// ------------------------------------------------------------------------- // 25// Invalid element index 26 27mls z0.h, z1.h, z2.h[-1] 28// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: vector lane must be an integer in range [0, 7]. 29// CHECK-NEXT: mls z0.h, z1.h, z2.h[-1] 30// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 31 32mls z0.h, z1.h, z2.h[8] 33// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: vector lane must be an integer in range [0, 7]. 34// CHECK-NEXT: mls z0.h, z1.h, z2.h[8] 35// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 36 37mls z0.s, z1.s, z2.s[-1] 38// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: vector lane must be an integer in range [0, 3]. 39// CHECK-NEXT: mls z0.s, z1.s, z2.s[-1] 40// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 41 42mls z0.s, z1.s, z2.s[4] 43// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: vector lane must be an integer in range [0, 3]. 44// CHECK-NEXT: mls z0.s, z1.s, z2.s[4] 45// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 46 47mls z0.d, z1.d, z2.d[-1] 48// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: vector lane must be an integer in range [0, 1]. 49// CHECK-NEXT: mls z0.d, z1.d, z2.d[-1] 50// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 51 52mls z0.d, z1.d, z2.d[2] 53// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: vector lane must be an integer in range [0, 1]. 54// CHECK-NEXT: mls z0.d, z1.d, z2.d[2] 55// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 56 57 58// --------------------------------------------------------------------------// 59// Negative tests for instructions that are incompatible with movprfx 60 61movprfx z0.d, p0/z, z7.d 62mls z0.d, z1.d, z7.d[1] 63// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: instruction is unpredictable when following a predicated movprfx, suggest using unpredicated movprfx 64// CHECK-NEXT: mls z0.d, z1.d, z7.d[1] 65// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 66