1 // RUN: not llvm-mc -triple=aarch64 -show-encoding -mattr=+sve 2>&1 < %s| FileCheck %s 2 3 4 // ------------------------------------------------------------------------- // 5 // Invalid destination or source register. 6 7 saddv s0, p7, z31.b 8 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand for instruction 9 // CHECK-NEXT: saddv s0, p7, z31.b 10 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 11 12 saddv s0, p7, z31.h 13 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand for instruction 14 // CHECK-NEXT: saddv s0, p7, z31.h 15 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 16 17 saddv s0, p7, z31.s 18 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand for instruction 19 // CHECK-NEXT: saddv s0, p7, z31.s 20 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 21 22 saddv d0, p7, z31.d 23 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid element width 24 // CHECK-NEXT: saddv d0, p7, z31.d 25 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 26 27 28 // ------------------------------------------------------------------------- // 29 // Invalid predicate 30 31 saddv d0, p8, z31.b 32 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: restricted predicate has range [0, 7]. 33 // CHECK-NEXT: saddv d0, p8, z31.b 34 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 35 36 // --------------------------------------------------------------------------// 37 // Negative tests for instructions that are incompatible with movprfx 38 39 movprfx z31.s, p7/z, z6.s 40 saddv d0, p7, z31.s 41 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: instruction is unpredictable when following a movprfx, suggest replacing movprfx with mov 42 // CHECK-NEXT: saddv d0, p7, z31.s 43 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 44 45 movprfx z31, z6 46 saddv d0, p7, z31.s 47 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: instruction is unpredictable when following a movprfx, suggest replacing movprfx with mov 48 // CHECK-NEXT: saddv d0, p7, z31.s 49 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 50