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