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