xref: /llvm-project/llvm/test/MC/AArch64/SME2p1/zero-diagnostics.s (revision 3eacda4547c59c3daa2daf275321c8013eb485cd)
1// RUN: not llvm-mc -triple=aarch64 -show-encoding -mattr=+sme2p1 2>&1 < %s | FileCheck %s
2
3// --------------------------------------------------------------------------//
4// Out of range index offset
5
6zero za.d[w11, 8, vgx2]
7// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [0, 7].
8// CHECK-NEXT: zero za.d[w11, 8, vgx2]
9// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
10
11zero za.d[w11, -1, vgx4]
12// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [0, 7].
13// CHECK-NEXT: zero za.d[w11, -1, vgx4]
14// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
15
16zero za.d[w11, 5:8, vgx4]
17// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: vector select offset must be an immediate range of the form <immf>:<imml>, where the first immediate is a multiple of 4 in the range [0, 4] or [0, 12] depending on the instruction, and the second immediate is immf + 3.
18// CHECK-NEXT: zero za.d[w11, 5:8, vgx4]
19// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
20
21zero za.d[w11, 5:8, vgx2]
22// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: vector select offset must be an immediate range of the form <immf>:<imml>, where the first immediate is a multiple of 4 in the range [0, 4] or [0, 12] depending on the instruction, and the second immediate is immf + 3.
23// CHECK-NEXT: zero za.d[w11, 5:8, vgx2]
24// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
25
26zero za.d[w11, 0:4, vgx4]
27// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [0, 7].
28// CHECK-NEXT: zero za.d[w11, 0:4, vgx4]
29// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
30
31zero za.d[w11, 0:4, vgx2]
32// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [0, 7].
33// CHECK-NEXT: zero za.d[w11, 0:4, vgx2]
34// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
35
36zero za.d[w11, 11:15]
37// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [0, 7].
38// CHECK-NEXT: zero za.d[w11, 11:15]
39// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
40
41// --------------------------------------------------------------------------//
42// Invalid select register
43
44zero za.d[w7, 7, vgx2]
45// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: operand must be a register in range [w8, w11]
46// CHECK-NEXT: zero za.d[w7, 7, vgx2]
47// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
48
49zero za.d[w12, 7, vgx2]
50// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: operand must be a register in range [w8, w11]
51// CHECK-NEXT: zero za.d[w12, 7, vgx2]
52// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
53
54// --------------------------------------------------------------------------//
55// Invalid suffix
56
57zero za.s[w11, 7, vgx2]
58// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid matrix operand, expected suffix .d
59// CHECK-NEXT: zero za.s[w11, 7, vgx2]
60// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
61