1// RUN: not llvm-mc -triple=aarch64 -show-encoding -mattr=+sme 2>&1 < %s| FileCheck %s
2
3// ------------------------------------------------------------------------- //
4// Invalid predicate
5
6// missing element type suffix
7psel p0, p0, p0[w12]
8// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid predicate register.
9// CHECK-NEXT: psel p0, p0, p0[w12]
10// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
11
12// ------------------------------------------------------------------------- //
13// Invalid index base register register (w12-w15)
14
15psel p0, p0, p0.b[w11]
16// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: operand must be a register in range [w12, w15]
17// CHECK-NEXT: psel p0, p0, p0.b[w11]
18// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
19
20psel p0, p0, p0.b[w16]
21// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: operand must be a register in range [w12, w15]
22// CHECK-NEXT: psel p0, p0, p0.b[w16]
23// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
24
25// --------------------------------------------------------------------------//
26// Invalid immediates
27
28psel p0, p0, p0.b[w12, #16]
29// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [0, 15].
30// CHECK-NEXT: psel p0, p0, p0.b[w12, #16]
31// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
32
33psel p0, p0, p0.h[w12, #8]
34// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [0, 7].
35// CHECK-NEXT: psel p0, p0, p0.h[w12, #8]
36// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
37
38psel p0, p0, p0.s[w12, #4]
39// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [0, 3].
40// CHECK-NEXT: psel p0, p0, p0.s[w12, #4]
41// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
42
43psel p0, p0, p0.d[w12, #2]
44// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [0, 1].
45// CHECK-NEXT: psel  p0, p0, p0.d[w12, #2]
46// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
47