[Frontend] Remove unused includes (NFC) (#116927)
[llvm-project.git] / llvm / test / MC / AArch64 / FP8_SME2 / dot-diagnostics.s
blob204213d0bb75666bb6f3e768da1ca78632b4a32b
1 // RUN: not llvm-mc -triple=aarch64 -show-encoding -mattr=+sme-f8f16,+sme-f8f32 2>&1 < %s | FileCheck %s
3 // --------------------------------------------------------------------------//
4 // Invalid vector select register
6 fdot za.h[w8, 0, vgx2], {z0.h-z1.h}, z0.b
7 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand for instruction
8 // CHECK-NEXT: fdot za.h[w8, 0, vgx2], {z0.h-z1.h}, z0.b
9 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
11 fdot za.h[w11, 7], {z31.b-z2.b}, z15
12 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand
13 // CHECK-NEXT: fdot za.h[w11, 7], {z31.b-z2.b}, z15
14 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
16 fdot za.h[w11, 7, vgx2], {z28.b-z31.b}, {z0.b-z3.b}
17 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand for instruction
18 // CHECK-NEXT: fdot za.h[w11, 7, vgx2], {z28.b-z31.b}, {z0.b-z3.b}
19 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
21 fdot za.s[w11, 7], {z29.b-z30.b}, {z30.b-z31.b}
22 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand for instruction
23 // CHECK-NEXT: fdot za.s[w11, 7], {z29.b-z30.b}, {z30.b-z31.b}
24 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
26 fdot za.h[w11, 7], {z30.b-z0.b}, z15.b
27 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand for instruction
28 // CHECK-NEXT: fdot za.h[w11, 7], {z30.b-z0.b}, z15.
29 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
32 // --------------------------------------------------------------------------//
33 // Invalid vector select offset
35 fvdott za.s[w11, -1, vgx4], {z30.b-z31.b}, z15.b[3]
36 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [0, 7].
37 // CHECK-NEXT: fvdott za.s[w11, -1, vgx4], {z30.b-z31.b}, z15.b[3]
38 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
40 fvdott za.s[w8, -1, vgx4], {z0.b-z1.b}, z0.b[0]
41 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [0, 7].
42 // CHECK-NEXT: fvdott za.s[w8, -1, vgx4], {z0.b-z1.b}, z0.b[0]
43 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
45 fvdot za.h[w11, -1], {z30.b-z31.b}, z15.b[7]
46 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [0, 7].
47 // CHECK-NEXT: fvdot za.h[w11, -1], {z30.b-z31.b}, z15.b[7]
48 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
50 fdot za.s[w11, -1], {z28.b-z31.b}, z15.b[3]
51 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [0, 7].
52 // CHECK-NEXT: fdot za.s[w11, -1], {z28.b-z31.b}, z15.b[3]
53 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
55 fvdott za.s[w11, 8, vgx4], {z30.b-z31.b}, z15.b[3]
56 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [0, 7].
57 // CHECK-NEXT: fvdott za.s[w11, 8, vgx4], {z30.b-z31.b}, z15.b[3]
58 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
60 fvdott za.s[w8, 8, vgx4], {z0.b-z1.b}, z0.b[0]
61 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [0, 7].
62 // CHECK-NEXT: fvdott za.s[w8, 8, vgx4], {z0.b-z1.b}, z0.b[0]
63 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
65 fvdot za.h[w11, 8], {z30.b-z31.b}, z15.b[7]
66 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [0, 7].
67 // CHECK-NEXT: fvdot za.h[w11, 8], {z30.b-z31.b}, z15.b[7]
68 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
70 fdot za.s[w11, 8], {z28.b-z31.b}, z15.b[3]
71 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [0, 7].
72 // CHECK-NEXT: fdot za.s[w11, 8], {z28.b-z31.b}, z15.b[3]
73 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
75 // --------------------------------------------------------------------------//
76 // Invalid vector list
78 fdot za.s[w11, 7, vgx4], {z29.b-z1.b}, {z29.b-z1.b}
79 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid number of vectors
80 // CHECK-NEXT: fdot za.s[w11, 7, vgx4], {z29.b-z1.b}, {z29.b-z1.b}
81 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
83 fdot za.h[w11, 7], {z30.b-z2.b}, {z0.b-z3.b}
84 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid number of vectors
85 // CHECK-NEXT: fdot za.h[w11, 7], {z30.b-z2.b}, {z0.b-z3.b}
86 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
88 fdot za.s[w8, 0], {z31.b-z3.b}, {z31.b-z3.b}
89 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid number of vectors
90 // CHECK-NEXT: fdot za.s[w8, 0], {z31.b-z3.b}, {z31.b-z3.b}
91 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
93 fdot za.s[w11, 7, vgx2], {z30.b-z31.b}, {z0.b-z4.b}
94 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid number of vectors
95 // CHECK-NEXT: fdot za.s[w11, 7, vgx2], {z30.b-z31.b}, {z0.b-z4.b}
96 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
98 // --------------------------------------------------------------------------//
99 // Invalid Register Suffix
100 fdot za.d[w11, 7, vgx4], {z31.b-z2.b}, z15.b
101 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid matrix operand, expected suffix .s
102 // CHECK-NEXT: fdot za.d[w11, 7, vgx4], {z31.b-z2.b}, z15.b
103 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
105 fdot za[w11, 7], {z28.b-z31.b}, {z28.b-z31.b}
106 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid matrix operand, expected suffix .s
107 // CHECK-NEXT: fdot za[w11, 7], {z28.b-z31.b}, {z28.b-z31.b}
108 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
110 fdot za.b[w11, 7], {z31.b-z0.b}, z15.b
111 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid matrix operand, expected suffix .s
112 // CHECK-NEXT: fdot za.b[w11, 7], {z31.b-z0.b}, z15.b
113 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
115 fdot za.b[w11, 7, vgx2], {z30.h-z31.h}, {z30.h-z31.h}
116 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid matrix operand, expected suffix .s
117 // CHECK-NEXT: fdot za.b[w11, 7, vgx2], {z30.h-z31.h}, {z30.h-z31.h}
118 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
120 fdot za[w11, 7, vgx4], {z31.b-z2.b}, z15.b
121 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid matrix operand, expected suffix .s
122 // CHECK-NEXT: fdot za[w11, 7, vgx4], {z31.b-z2.b}, z15.b
123 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
125 fdot za.d[w11, 7], {z28.b-z31.b}, {z28.b-z31.b}
126 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid matrix operand, expected suffix .s
127 // CHECK-NEXT: fdot za.d[w11, 7], {z28.b-z31.b}, {z28.b-z31.b}
128 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
130 // --------------------------------------------------------------------------//
131 // Invalid vector select register
133 fdot za.h[w7, 7, vgx4], {z31.b-z2.b}, z15.b
134 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: operand must be a register in range [w8, w11]
135 // CHECK-NEXT: fdot za.h[w7, 7, vgx4], {z31.b-z2.b}, z15.b
136 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
138 fdot za.h[w, 0, vgx2], {z0.b-z1.b}, z0.b[0]
139 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: operand must be a register in range [w8, w11]
140 // CHECK-NEXT: fdot za.h[w, 0, vgx2], {z0.b-z1.b}, z0.b[0]
141 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
143 fdot za.s[w12, 0], {z0.b-z3.b}, {z0.b-z3.b}
144 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: operand must be a register in range [w8, w11]
145 // CHECK-NEXT: fdot za.s[w12, 0], {z0.b-z3.b}, {z0.b-z3.b}
146 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
148 // --------------------------------------------------------------------------//
149 // Invalid indexed-vector or single-vector register
151 fdot za.h[w8, 0], {z0.b-z1.b}, z16.b[0]
152 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: Invalid restricted vector register, expected z0.b..z15.b
153 // CHECK-NEXT: fdot za.h[w8, 0], {z0.b-z1.b}, z16.b[0]
154 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
156 fdot za.s[w8, 0], {z0.b-z1.b}, z16.b[0]
157 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: Invalid restricted vector register, expected z0.b..z15.b
158 // CHECK-NEXT: fdot za.s[w8, 0], {z0.b-z1.b}, z16.b[0]
159 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
161 // --------------------------------------------------------------------------//
162 // Invalid vector grouping
164 fdot za.h[w11, 7], {z28.b-z31.b}, {z0.b-z2.b}
165 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand for instruction
166 // CHECK-NEXT: fdot za.h[w11, 7], {z28.b-z31.b}, {z0.b-z2.b}
167 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
169 fdot za.h[w11, 7, vgx4], {z31.b-z0.b}, z15.b
170 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand for instruction
171 // CHECK-NEXT: fdot za.h[w11, 7, vgx4], {z31.b-z0.b}, z15.b
172 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
174 // --------------------------------------------------------------------------//
175 // Invalid lane index
177 fdot za.h[w8, 0, vgx2], {z0.b-z1.b}, z0.b[-1]
178 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: vector lane must be an integer in range [0, 7].
179 // CHECK-NEXT: fdot za.h[w8, 0, vgx2], {z0.b-z1.b}, z0.b[-1]
180 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
182 fdot za.h[w11, 7], {z30.b-z31.b}, z15.b[8]
183 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: vector lane must be an integer in range [0, 7].
184 // CHECK-NEXT: fdot za.h[w11, 7], {z30.b-z31.b}, z15.b[8]
185 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
187 fdot za.s[w8, 0], {z0.b-z1.b}, z0.b[-1]
188 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: vector lane must be an integer in range [0, 3].
189 // CHECK-NEXT: fdot za.s[w8, 0], {z0.b-z1.b}, z0.b[-1]
190 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
192 fdot za.s[w11, 7], {z30.b-z31.b}, z15.b[4]
193 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: vector lane must be an integer in range [0, 3].
194 // CHECK-NEXT: fdot za.s[w11, 7], {z30.b-z31.b}, z15.b[4]
195 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
197 fvdot za.h[w8, 0, vgx2], {z0.b-z1.b}, z0.b[-1]
198 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: vector lane must be an integer in range [0, 7].
199 // CHECK-NEXT: fvdot za.h[w8, 0, vgx2], {z0.b-z1.b}, z0.b[-1]
200 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
202 fvdot za.h[w11, 7], {z30.b-z31.b}, z15.b[8]
203 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: vector lane must be an integer in range [0, 7].
204 // CHECK-NEXT: fvdot za.h[w11, 7], {z30.b-z31.b}, z15.b[8]
205 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
207 fvdotb za.s[w8, 0, vgx4], {z0.b-z1.b}, z0.b[-1]
208 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: vector lane must be an integer in range [0, 3].
209 // CHECK-NEXT: fvdotb za.s[w8, 0, vgx4], {z0.b-z1.b}, z0.b[-1]
210 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
212 fvdott za.s[w11, 7, vgx4], {z30.b-z31.b}, z15.b[4]
213 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: vector lane must be an integer in range [0, 3].
214 // CHECK-NEXT: fvdott za.s[w11, 7, vgx4], {z30.b-z31.b}, z15.b[4]
215 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: