[Frontend] Remove unused includes (NFC) (#116927)
[llvm-project.git] / llvm / test / MC / AArch64 / armv8.8a-mops.s
blobf8d75e73d47d55add9a94ef2e12c9e9fe71b7eac
1 // RUN: not llvm-mc -triple aarch64-none-linux-gnu -show-encoding -mattr=+mops,+mte < %s 2> %t | FileCheck %s --check-prefix=CHECK --check-prefix=CHECK-MTE
2 // RUN: FileCheck --check-prefix=CHECK-ERROR %s < %t
3 // RUN: not llvm-mc -triple aarch64-none-linux-gnu -show-encoding -mattr=+v8.8a,+mte < %s 2> %t | FileCheck %s --check-prefix=CHECK --check-prefix=CHECK-MTE
4 // RUN: FileCheck --check-prefix=CHECK-ERROR %s < %t
5 // RUN: not llvm-mc -triple aarch64-none-linux-gnu -show-encoding -mattr=+mops < %s 2> %t | FileCheck %s --check-prefix=CHECK
6 // RUN: FileCheck --check-prefix=CHECK-NO-MTE-ERR %s < %t
7 // RUN: not llvm-mc -triple aarch64-none-linux-gnu -show-encoding -mattr=+v8.8a < %s 2> %t | FileCheck %s --check-prefix=CHECK
8 // RUN: FileCheck --check-prefix=CHECK-NO-MTE-ERR %s < %t
9 // RUN: not llvm-mc -triple aarch64-none-linux-gnu < %s 2> %t
10 // RUN: FileCheck --check-prefix=CHECK-NO-MOPS-ERR --check-prefix=CHECK-NO-MOPSMTE-ERR %s < %t
12 // CHECK: [0x40,0x04,0x01,0x19]
13 // CHECK-NEXT: [0x40,0x44,0x01,0x19]
14 // CHECK-NEXT: [0x40,0x84,0x01,0x19]
15 // CHECK-NEXT: [0x40,0xc4,0x01,0x19]
16 // CHECK-NEXT: [0x40,0x14,0x01,0x19]
17 // CHECK-NEXT: [0x40,0x54,0x01,0x19]
18 // CHECK-NEXT: [0x40,0x94,0x01,0x19]
19 // CHECK-NEXT: [0x40,0xd4,0x01,0x19]
20 // CHECK-NEXT: [0x40,0x24,0x01,0x19]
21 // CHECK-NEXT: [0x40,0x64,0x01,0x19]
22 // CHECK-NEXT: [0x40,0xa4,0x01,0x19]
23 // CHECK-NEXT: [0x40,0xe4,0x01,0x19]
24 // CHECK-NEXT: [0x40,0x34,0x01,0x19]
25 // CHECK-NEXT: [0x40,0x74,0x01,0x19]
26 // CHECK-NEXT: [0x40,0xb4,0x01,0x19]
27 // CHECK-NEXT: [0x40,0xf4,0x01,0x19]
28 // CHECK-NO-MOPS-ERR: error: instruction requires: mops
29 // CHECK-NO-MOPS-ERR: error: instruction requires: mops
30 // CHECK-NO-MOPS-ERR: error: instruction requires: mops
31 // CHECK-NO-MOPS-ERR: error: instruction requires: mops
32 // CHECK-NO-MOPS-ERR: error: instruction requires: mops
33 // CHECK-NO-MOPS-ERR: error: instruction requires: mops
34 // CHECK-NO-MOPS-ERR: error: instruction requires: mops
35 // CHECK-NO-MOPS-ERR: error: instruction requires: mops
36 // CHECK-NO-MOPS-ERR: error: instruction requires: mops
37 // CHECK-NO-MOPS-ERR: error: instruction requires: mops
38 // CHECK-NO-MOPS-ERR: error: instruction requires: mops
39 // CHECK-NO-MOPS-ERR: error: instruction requires: mops
40 // CHECK-NO-MOPS-ERR: error: instruction requires: mops
41 // CHECK-NO-MOPS-ERR: error: instruction requires: mops
42 // CHECK-NO-MOPS-ERR: error: instruction requires: mops
43 // CHECK-NO-MOPS-ERR: error: instruction requires: mops
44 cpyfp [x0]!, [x1]!, x2!
45 cpyfpwn [x0]!, [x1]!, x2!
46 cpyfprn [x0]!, [x1]!, x2!
47 cpyfpn [x0]!, [x1]!, x2!
48 cpyfpwt [x0]!, [x1]!, x2!
49 cpyfpwtwn [x0]!, [x1]!, x2!
50 cpyfpwtrn [x0]!, [x1]!, x2!
51 cpyfpwtn [x0]!, [x1]!, x2!
52 cpyfprt [x0]!, [x1]!, x2!
53 cpyfprtwn [x0]!, [x1]!, x2!
54 cpyfprtrn [x0]!, [x1]!, x2!
55 cpyfprtn [x0]!, [x1]!, x2!
56 cpyfpt [x0]!, [x1]!, x2!
57 cpyfptwn [x0]!, [x1]!, x2!
58 cpyfptrn [x0]!, [x1]!, x2!
59 cpyfptn [x0]!, [x1]!, x2!
61 // CHECK: [0x40,0x04,0x41,0x19]
62 // CHECK-NEXT: [0x40,0x44,0x41,0x19]
63 // CHECK-NEXT: [0x40,0x84,0x41,0x19]
64 // CHECK-NEXT: [0x40,0xc4,0x41,0x19]
65 // CHECK-NEXT: [0x40,0x14,0x41,0x19]
66 // CHECK-NEXT: [0x40,0x54,0x41,0x19]
67 // CHECK-NEXT: [0x40,0x94,0x41,0x19]
68 // CHECK-NEXT: [0x40,0xd4,0x41,0x19]
69 // CHECK-NEXT: [0x40,0x24,0x41,0x19]
70 // CHECK-NEXT: [0x40,0x64,0x41,0x19]
71 // CHECK-NEXT: [0x40,0xa4,0x41,0x19]
72 // CHECK-NEXT: [0x40,0xe4,0x41,0x19]
73 // CHECK-NEXT: [0x40,0x34,0x41,0x19]
74 // CHECK-NEXT: [0x40,0x74,0x41,0x19]
75 // CHECK-NEXT: [0x40,0xb4,0x41,0x19]
76 // CHECK-NEXT: [0x40,0xf4,0x41,0x19]
77 // CHECK-NO-MOPS-ERR: error: instruction requires: mops
78 // CHECK-NO-MOPS-ERR: error: instruction requires: mops
79 // CHECK-NO-MOPS-ERR: error: instruction requires: mops
80 // CHECK-NO-MOPS-ERR: error: instruction requires: mops
81 // CHECK-NO-MOPS-ERR: error: instruction requires: mops
82 // CHECK-NO-MOPS-ERR: error: instruction requires: mops
83 // CHECK-NO-MOPS-ERR: error: instruction requires: mops
84 // CHECK-NO-MOPS-ERR: error: instruction requires: mops
85 // CHECK-NO-MOPS-ERR: error: instruction requires: mops
86 // CHECK-NO-MOPS-ERR: error: instruction requires: mops
87 // CHECK-NO-MOPS-ERR: error: instruction requires: mops
88 // CHECK-NO-MOPS-ERR: error: instruction requires: mops
89 // CHECK-NO-MOPS-ERR: error: instruction requires: mops
90 // CHECK-NO-MOPS-ERR: error: instruction requires: mops
91 // CHECK-NO-MOPS-ERR: error: instruction requires: mops
92 // CHECK-NO-MOPS-ERR: error: instruction requires: mops
93 cpyfm [x0]!, [x1]!, x2!
94 cpyfmwn [x0]!, [x1]!, x2!
95 cpyfmrn [x0]!, [x1]!, x2!
96 cpyfmn [x0]!, [x1]!, x2!
97 cpyfmwt [x0]!, [x1]!, x2!
98 cpyfmwtwn [x0]!, [x1]!, x2!
99 cpyfmwtrn [x0]!, [x1]!, x2!
100 cpyfmwtn [x0]!, [x1]!, x2!
101 cpyfmrt [x0]!, [x1]!, x2!
102 cpyfmrtwn [x0]!, [x1]!, x2!
103 cpyfmrtrn [x0]!, [x1]!, x2!
104 cpyfmrtn [x0]!, [x1]!, x2!
105 cpyfmt [x0]!, [x1]!, x2!
106 cpyfmtwn [x0]!, [x1]!, x2!
107 cpyfmtrn [x0]!, [x1]!, x2!
108 cpyfmtn [x0]!, [x1]!, x2!
110 // CHECK: [0x40,0x04,0x81,0x19]
111 // CHECK-NEXT: [0x40,0x44,0x81,0x19]
112 // CHECK-NEXT: [0x40,0x84,0x81,0x19]
113 // CHECK-NEXT: [0x40,0xc4,0x81,0x19]
114 // CHECK-NEXT: [0x40,0x14,0x81,0x19]
115 // CHECK-NEXT: [0x40,0x54,0x81,0x19]
116 // CHECK-NEXT: [0x40,0x94,0x81,0x19]
117 // CHECK-NEXT: [0x40,0xd4,0x81,0x19]
118 // CHECK-NEXT: [0x40,0x24,0x81,0x19]
119 // CHECK-NEXT: [0x40,0x64,0x81,0x19]
120 // CHECK-NEXT: [0x40,0xa4,0x81,0x19]
121 // CHECK-NEXT: [0x40,0xe4,0x81,0x19]
122 // CHECK-NEXT: [0x40,0x34,0x81,0x19]
123 // CHECK-NEXT: [0x40,0x74,0x81,0x19]
124 // CHECK-NEXT: [0x40,0xb4,0x81,0x19]
125 // CHECK-NEXT: [0x40,0xf4,0x81,0x19]
126 // CHECK-NO-MOPS-ERR: error: instruction requires: mops
127 // CHECK-NO-MOPS-ERR: error: instruction requires: mops
128 // CHECK-NO-MOPS-ERR: error: instruction requires: mops
129 // CHECK-NO-MOPS-ERR: error: instruction requires: mops
130 // CHECK-NO-MOPS-ERR: error: instruction requires: mops
131 // CHECK-NO-MOPS-ERR: error: instruction requires: mops
132 // CHECK-NO-MOPS-ERR: error: instruction requires: mops
133 // CHECK-NO-MOPS-ERR: error: instruction requires: mops
134 // CHECK-NO-MOPS-ERR: error: instruction requires: mops
135 // CHECK-NO-MOPS-ERR: error: instruction requires: mops
136 // CHECK-NO-MOPS-ERR: error: instruction requires: mops
137 // CHECK-NO-MOPS-ERR: error: instruction requires: mops
138 // CHECK-NO-MOPS-ERR: error: instruction requires: mops
139 // CHECK-NO-MOPS-ERR: error: instruction requires: mops
140 // CHECK-NO-MOPS-ERR: error: instruction requires: mops
141 // CHECK-NO-MOPS-ERR: error: instruction requires: mops
142 cpyfe [x0]!, [x1]!, x2!
143 cpyfewn [x0]!, [x1]!, x2!
144 cpyfern [x0]!, [x1]!, x2!
145 cpyfen [x0]!, [x1]!, x2!
146 cpyfewt [x0]!, [x1]!, x2!
147 cpyfewtwn [x0]!, [x1]!, x2!
148 cpyfewtrn [x0]!, [x1]!, x2!
149 cpyfewtn [x0]!, [x1]!, x2!
150 cpyfert [x0]!, [x1]!, x2!
151 cpyfertwn [x0]!, [x1]!, x2!
152 cpyfertrn [x0]!, [x1]!, x2!
153 cpyfertn [x0]!, [x1]!, x2!
154 cpyfet [x0]!, [x1]!, x2!
155 cpyfetwn [x0]!, [x1]!, x2!
156 cpyfetrn [x0]!, [x1]!, x2!
157 cpyfetn [x0]!, [x1]!, x2!
159 // CHECK: [0x40,0x04,0x01,0x1d]
160 // CHECK-NEXT: [0x40,0x44,0x01,0x1d]
161 // CHECK-NEXT: [0x40,0x84,0x01,0x1d]
162 // CHECK-NEXT: [0x40,0xc4,0x01,0x1d]
163 // CHECK-NEXT: [0x40,0x14,0x01,0x1d]
164 // CHECK-NEXT: [0x40,0x54,0x01,0x1d]
165 // CHECK-NEXT: [0x40,0x94,0x01,0x1d]
166 // CHECK-NEXT: [0x40,0xd4,0x01,0x1d]
167 // CHECK-NEXT: [0x40,0x24,0x01,0x1d]
168 // CHECK-NEXT: [0x40,0x64,0x01,0x1d]
169 // CHECK-NEXT: [0x40,0xa4,0x01,0x1d]
170 // CHECK-NEXT: [0x40,0xe4,0x01,0x1d]
171 // CHECK-NEXT: [0x40,0x34,0x01,0x1d]
172 // CHECK-NEXT: [0x40,0x74,0x01,0x1d]
173 // CHECK-NEXT: [0x40,0xb4,0x01,0x1d]
174 // CHECK-NEXT: [0x40,0xf4,0x01,0x1d]
175 // CHECK-NO-MOPS-ERR: error: instruction requires: mops
176 // CHECK-NO-MOPS-ERR: error: instruction requires: mops
177 // CHECK-NO-MOPS-ERR: error: instruction requires: mops
178 // CHECK-NO-MOPS-ERR: error: instruction requires: mops
179 // CHECK-NO-MOPS-ERR: error: instruction requires: mops
180 // CHECK-NO-MOPS-ERR: error: instruction requires: mops
181 // CHECK-NO-MOPS-ERR: error: instruction requires: mops
182 // CHECK-NO-MOPS-ERR: error: instruction requires: mops
183 // CHECK-NO-MOPS-ERR: error: instruction requires: mops
184 // CHECK-NO-MOPS-ERR: error: instruction requires: mops
185 // CHECK-NO-MOPS-ERR: error: instruction requires: mops
186 // CHECK-NO-MOPS-ERR: error: instruction requires: mops
187 // CHECK-NO-MOPS-ERR: error: instruction requires: mops
188 // CHECK-NO-MOPS-ERR: error: instruction requires: mops
189 // CHECK-NO-MOPS-ERR: error: instruction requires: mops
190 // CHECK-NO-MOPS-ERR: error: instruction requires: mops
191 cpyp [x0]!, [x1]!, x2!
192 cpypwn [x0]!, [x1]!, x2!
193 cpyprn [x0]!, [x1]!, x2!
194 cpypn [x0]!, [x1]!, x2!
195 cpypwt [x0]!, [x1]!, x2!
196 cpypwtwn [x0]!, [x1]!, x2!
197 cpypwtrn [x0]!, [x1]!, x2!
198 cpypwtn [x0]!, [x1]!, x2!
199 cpyprt [x0]!, [x1]!, x2!
200 cpyprtwn [x0]!, [x1]!, x2!
201 cpyprtrn [x0]!, [x1]!, x2!
202 cpyprtn [x0]!, [x1]!, x2!
203 cpypt [x0]!, [x1]!, x2!
204 cpyptwn [x0]!, [x1]!, x2!
205 cpyptrn [x0]!, [x1]!, x2!
206 cpyptn [x0]!, [x1]!, x2!
208 // CHECK: [0x40,0x04,0x41,0x1d]
209 // CHECK-NEXT: [0x40,0x44,0x41,0x1d]
210 // CHECK-NEXT: [0x40,0x84,0x41,0x1d]
211 // CHECK-NEXT: [0x40,0xc4,0x41,0x1d]
212 // CHECK-NEXT: [0x40,0x14,0x41,0x1d]
213 // CHECK-NEXT: [0x40,0x54,0x41,0x1d]
214 // CHECK-NEXT: [0x40,0x94,0x41,0x1d]
215 // CHECK-NEXT: [0x40,0xd4,0x41,0x1d]
216 // CHECK-NEXT: [0x40,0x24,0x41,0x1d]
217 // CHECK-NEXT: [0x40,0x64,0x41,0x1d]
218 // CHECK-NEXT: [0x40,0xa4,0x41,0x1d]
219 // CHECK-NEXT: [0x40,0xe4,0x41,0x1d]
220 // CHECK-NEXT: [0x40,0x34,0x41,0x1d]
221 // CHECK-NEXT: [0x40,0x74,0x41,0x1d]
222 // CHECK-NEXT: [0x40,0xb4,0x41,0x1d]
223 // CHECK-NEXT: [0x40,0xf4,0x41,0x1d]
224 // CHECK-NO-MOPS-ERR: error: instruction requires: mops
225 // CHECK-NO-MOPS-ERR: error: instruction requires: mops
226 // CHECK-NO-MOPS-ERR: error: instruction requires: mops
227 // CHECK-NO-MOPS-ERR: error: instruction requires: mops
228 // CHECK-NO-MOPS-ERR: error: instruction requires: mops
229 // CHECK-NO-MOPS-ERR: error: instruction requires: mops
230 // CHECK-NO-MOPS-ERR: error: instruction requires: mops
231 // CHECK-NO-MOPS-ERR: error: instruction requires: mops
232 // CHECK-NO-MOPS-ERR: error: instruction requires: mops
233 // CHECK-NO-MOPS-ERR: error: instruction requires: mops
234 // CHECK-NO-MOPS-ERR: error: instruction requires: mops
235 // CHECK-NO-MOPS-ERR: error: instruction requires: mops
236 // CHECK-NO-MOPS-ERR: error: instruction requires: mops
237 // CHECK-NO-MOPS-ERR: error: instruction requires: mops
238 // CHECK-NO-MOPS-ERR: error: instruction requires: mops
239 // CHECK-NO-MOPS-ERR: error: instruction requires: mops
240 cpym [x0]!, [x1]!, x2!
241 cpymwn [x0]!, [x1]!, x2!
242 cpymrn [x0]!, [x1]!, x2!
243 cpymn [x0]!, [x1]!, x2!
244 cpymwt [x0]!, [x1]!, x2!
245 cpymwtwn [x0]!, [x1]!, x2!
246 cpymwtrn [x0]!, [x1]!, x2!
247 cpymwtn [x0]!, [x1]!, x2!
248 cpymrt [x0]!, [x1]!, x2!
249 cpymrtwn [x0]!, [x1]!, x2!
250 cpymrtrn [x0]!, [x1]!, x2!
251 cpymrtn [x0]!, [x1]!, x2!
252 cpymt [x0]!, [x1]!, x2!
253 cpymtwn [x0]!, [x1]!, x2!
254 cpymtrn [x0]!, [x1]!, x2!
255 cpymtn [x0]!, [x1]!, x2!
257 // CHECK: [0x40,0x04,0x81,0x1d]
258 // CHECK-NEXT: [0x40,0x44,0x81,0x1d]
259 // CHECK-NEXT: [0x40,0x84,0x81,0x1d]
260 // CHECK-NEXT: [0x40,0xc4,0x81,0x1d]
261 // CHECK-NEXT: [0x40,0x14,0x81,0x1d]
262 // CHECK-NEXT: [0x40,0x54,0x81,0x1d]
263 // CHECK-NEXT: [0x40,0x94,0x81,0x1d]
264 // CHECK-NEXT: [0x40,0xd4,0x81,0x1d]
265 // CHECK-NEXT: [0x40,0x24,0x81,0x1d]
266 // CHECK-NEXT: [0x40,0x64,0x81,0x1d]
267 // CHECK-NEXT: [0x40,0xa4,0x81,0x1d]
268 // CHECK-NEXT: [0x40,0xe4,0x81,0x1d]
269 // CHECK-NEXT: [0x40,0x34,0x81,0x1d]
270 // CHECK-NEXT: [0x40,0x74,0x81,0x1d]
271 // CHECK-NEXT: [0x40,0xb4,0x81,0x1d]
272 // CHECK-NEXT: [0x40,0xf4,0x81,0x1d]
273 // CHECK-NO-MOPS-ERR: error: instruction requires: mops
274 // CHECK-NO-MOPS-ERR: error: instruction requires: mops
275 // CHECK-NO-MOPS-ERR: error: instruction requires: mops
276 // CHECK-NO-MOPS-ERR: error: instruction requires: mops
277 // CHECK-NO-MOPS-ERR: error: instruction requires: mops
278 // CHECK-NO-MOPS-ERR: error: instruction requires: mops
279 // CHECK-NO-MOPS-ERR: error: instruction requires: mops
280 // CHECK-NO-MOPS-ERR: error: instruction requires: mops
281 // CHECK-NO-MOPS-ERR: error: instruction requires: mops
282 // CHECK-NO-MOPS-ERR: error: instruction requires: mops
283 // CHECK-NO-MOPS-ERR: error: instruction requires: mops
284 // CHECK-NO-MOPS-ERR: error: instruction requires: mops
285 // CHECK-NO-MOPS-ERR: error: instruction requires: mops
286 // CHECK-NO-MOPS-ERR: error: instruction requires: mops
287 // CHECK-NO-MOPS-ERR: error: instruction requires: mops
288 // CHECK-NO-MOPS-ERR: error: instruction requires: mops
289 cpye [x0]!, [x1]!, x2!
290 cpyewn [x0]!, [x1]!, x2!
291 cpyern [x0]!, [x1]!, x2!
292 cpyen [x0]!, [x1]!, x2!
293 cpyewt [x0]!, [x1]!, x2!
294 cpyewtwn [x0]!, [x1]!, x2!
295 cpyewtrn [x0]!, [x1]!, x2!
296 cpyewtn [x0]!, [x1]!, x2!
297 cpyert [x0]!, [x1]!, x2!
298 cpyertwn [x0]!, [x1]!, x2!
299 cpyertrn [x0]!, [x1]!, x2!
300 cpyertn [x0]!, [x1]!, x2!
301 cpyet [x0]!, [x1]!, x2!
302 cpyetwn [x0]!, [x1]!, x2!
303 cpyetrn [x0]!, [x1]!, x2!
304 cpyetn [x0]!, [x1]!, x2!
306 // CHECK: [0x20,0x04,0xc2,0x19]
307 // CHECK-NEXT: [0x20,0x14,0xc2,0x19]
308 // CHECK-NEXT: [0x20,0x24,0xc2,0x19]
309 // CHECK-NEXT: [0x20,0x34,0xc2,0x19]
310 // CHECK-NO-MOPS-ERR: error: instruction requires: mops
311 // CHECK-NO-MOPS-ERR: error: instruction requires: mops
312 // CHECK-NO-MOPS-ERR: error: instruction requires: mops
313 // CHECK-NO-MOPS-ERR: error: instruction requires: mops
314 setp [x0]!, x1!, x2
315 setpt [x0]!, x1!, x2
316 setpn [x0]!, x1!, x2
317 setptn [x0]!, x1!, x2
319 // CHECK: [0x20,0x44,0xc2,0x19]
320 // CHECK: [0x20,0x54,0xc2,0x19]
321 // CHECK: [0x20,0x64,0xc2,0x19]
322 // CHECK: [0x20,0x74,0xc2,0x19]
323 // CHECK-NO-MOPS-ERR: error: instruction requires: mops
324 // CHECK-NO-MOPS-ERR: error: instruction requires: mops
325 // CHECK-NO-MOPS-ERR: error: instruction requires: mops
326 // CHECK-NO-MOPS-ERR: error: instruction requires: mops
327 setm [x0]!, x1!, x2
328 setmt [x0]!, x1!, x2
329 setmn [x0]!, x1!, x2
330 setmtn [x0]!, x1!, x2
332 // CHECK: [0x20,0x84,0xc2,0x19]
333 // CHECK: [0x20,0x94,0xc2,0x19]
334 // CHECK: [0x20,0xa4,0xc2,0x19]
335 // CHECK: [0x20,0xb4,0xc2,0x19]
336 // CHECK-NO-MOPS-ERR: error: instruction requires: mops
337 // CHECK-NO-MOPS-ERR: error: instruction requires: mops
338 // CHECK-NO-MOPS-ERR: error: instruction requires: mops
339 // CHECK-NO-MOPS-ERR: error: instruction requires: mops
340 sete [x0]!, x1!, x2
341 setet [x0]!, x1!, x2
342 seten [x0]!, x1!, x2
343 setetn [x0]!, x1!, x2
345 // CHECK-MTE: [0x20,0x04,0xc2,0x1d]
346 // CHECK-MTE: [0x20,0x14,0xc2,0x1d]
347 // CHECK-MTE: [0x20,0x24,0xc2,0x1d]
348 // CHECK-MTE: [0x20,0x34,0xc2,0x1d]
349 // CHECK-NO-MTE-ERR: error: instruction requires: mte
350 // CHECK-NO-MTE-ERR: error: instruction requires: mte
351 // CHECK-NO-MTE-ERR: error: instruction requires: mte
352 // CHECK-NO-MTE-ERR: error: instruction requires: mte
353 // CHECK-NO-MOPSMTE-ERR: error: instruction requires: mops mte
354 // CHECK-NO-MOPSMTE-ERR: error: instruction requires: mops mte
355 // CHECK-NO-MOPSMTE-ERR: error: instruction requires: mops mte
356 // CHECK-NO-MOPSMTE-ERR: error: instruction requires: mops mte
357 setgp [x0]!, x1!, x2
358 setgpt [x0]!, x1!, x2
359 setgpn [x0]!, x1!, x2
360 setgptn [x0]!, x1!, x2
362 // CHECK-MTE: [0x20,0x44,0xc2,0x1d]
363 // CHECK-MTE: [0x20,0x54,0xc2,0x1d]
364 // CHECK-MTE: [0x20,0x64,0xc2,0x1d]
365 // CHECK-MTE: [0x20,0x74,0xc2,0x1d]
366 // CHECK-NO-MTE-ERR: error: instruction requires: mte
367 // CHECK-NO-MTE-ERR: error: instruction requires: mte
368 // CHECK-NO-MTE-ERR: error: instruction requires: mte
369 // CHECK-NO-MTE-ERR: error: instruction requires: mte
370 // CHECK-NO-MOPSMTE-ERR: error: instruction requires: mops mte
371 // CHECK-NO-MOPSMTE-ERR: error: instruction requires: mops mte
372 // CHECK-NO-MOPSMTE-ERR: error: instruction requires: mops mte
373 // CHECK-NO-MOPSMTE-ERR: error: instruction requires: mops mte
374 setgm [x0]!, x1!, x2
375 setgmt [x0]!, x1!, x2
376 setgmn [x0]!, x1!, x2
377 setgmtn [x0]!, x1!, x2
379 // CHECK-MTE: [0x20,0x84,0xc2,0x1d]
380 // CHECK-MTE: [0x20,0x94,0xc2,0x1d]
381 // CHECK-MTE: [0x20,0xa4,0xc2,0x1d]
382 // CHECK-MTE: [0x20,0xb4,0xc2,0x1d]
383 // CHECK-NO-MTE-ERR: error: instruction requires: mte
384 // CHECK-NO-MTE-ERR: error: instruction requires: mte
385 // CHECK-NO-MTE-ERR: error: instruction requires: mte
386 // CHECK-NO-MTE-ERR: error: instruction requires: mte
387 // CHECK-NO-MOPSMTE-ERR: error: instruction requires: mops mte
388 // CHECK-NO-MOPSMTE-ERR: error: instruction requires: mops mte
389 // CHECK-NO-MOPSMTE-ERR: error: instruction requires: mops mte
390 // CHECK-NO-MOPSMTE-ERR: error: instruction requires: mops mte
391 setge [x0]!, x1!, x2
392 setget [x0]!, x1!, x2
393 setgen [x0]!, x1!, x2
394 setgetn [x0]!, x1!, x2
396 // All operand must be different from each other
398 // CHECK-ERROR: error: invalid CPY instruction, destination and source registers are the same
399 // CHECK-ERROR: error: invalid CPY instruction, destination and size registers are the same
400 // CHECK-ERROR: error: invalid CPY instruction, source and size registers are the same
401 cpyfp [x0]!, [x0]!, x1!
402 cpyfp [x0]!, [x1]!, x0!
403 cpyfp [x1]!, [x0]!, x0!
405 // CHECK-ERROR: error: invalid CPY instruction, destination and source registers are the same
406 // CHECK-ERROR: error: invalid CPY instruction, destination and size registers are the same
407 // CHECK-ERROR: error: invalid CPY instruction, source and size registers are the same
408 cpyfm [x0]!, [x0]!, x1!
409 cpyfm [x0]!, [x1]!, x0!
410 cpyfm [x1]!, [x0]!, x0!
412 // CHECK-ERROR: error: invalid CPY instruction, destination and source registers are the same
413 // CHECK-ERROR: error: invalid CPY instruction, destination and size registers are the same
414 // CHECK-ERROR: error: invalid CPY instruction, source and size registers are the same
415 cpyfe [x0]!, [x0]!, x1!
416 cpyfe [x0]!, [x1]!, x0!
417 cpyfe [x1]!, [x0]!, x0!
419 // CHECK-ERROR: error: invalid CPY instruction, destination and source registers are the same
420 // CHECK-ERROR: error: invalid CPY instruction, destination and size registers are the same
421 // CHECK-ERROR: error: invalid CPY instruction, source and size registers are the same
422 cpyp [x0]!, [x0]!, x1!
423 cpyp [x0]!, [x1]!, x0!
424 cpyp [x1]!, [x0]!, x0!
426 // CHECK-ERROR: error: invalid CPY instruction, destination and source registers are the same
427 // CHECK-ERROR: error: invalid CPY instruction, destination and size registers are the same
428 // CHECK-ERROR: error: invalid CPY instruction, source and size registers are the same
429 cpym [x0]!, [x0]!, x1!
430 cpym [x0]!, [x1]!, x0!
431 cpym [x1]!, [x0]!, x0!
433 // CHECK-ERROR: error: invalid CPY instruction, destination and source registers are the same
434 // CHECK-ERROR: error: invalid CPY instruction, destination and size registers are the same
435 // CHECK-ERROR: error: invalid CPY instruction, source and size registers are the same
436 cpye [x0]!, [x0]!, x1!
437 cpye [x0]!, [x1]!, x0!
438 cpye [x1]!, [x0]!, x0!
440 // CHECK-ERROR: error: invalid SET instruction, destination and size registers are the same
441 // CHECK-ERROR: error: invalid SET instruction, destination and source registers are the same
442 // CHECK-ERROR: error: invalid SET instruction, source and size registers are the same
443 setp [x0]!, x0!, x1
444 setp [x0]!, x1!, x0
445 setp [x1]!, x0!, x0
447 // CHECK-ERROR: error: invalid SET instruction, destination and size registers are the same
448 // CHECK-ERROR: error: invalid SET instruction, destination and source registers are the same
449 // CHECK-ERROR: error: invalid SET instruction, source and size registers are the same
450 setm [x0]!, x0!, x1
451 setm [x0]!, x1!, x0
452 setm [x1]!, x0!, x0
454 // CHECK-ERROR: error: invalid SET instruction, destination and size registers are the same
455 // CHECK-ERROR: error: invalid SET instruction, destination and source registers are the same
456 // CHECK-ERROR: error: invalid SET instruction, source and size registers are the same
457 sete [x0]!, x0!, x1
458 sete [x0]!, x1!, x0
459 sete [x1]!, x0!, x0
461 // CHECK-ERROR: error: invalid SET instruction, destination and size registers are the same
462 // CHECK-ERROR: error: invalid SET instruction, destination and source registers are the same
463 // CHECK-ERROR: error: invalid SET instruction, source and size registers are the same
464 setgp [x0]!, x0!, x1
465 setgp [x0]!, x1!, x0
466 setgp [x1]!, x0!, x0
468 // CHECK-ERROR: error: invalid SET instruction, destination and size registers are the same
469 // CHECK-ERROR: error: invalid SET instruction, destination and source registers are the same
470 // CHECK-ERROR: error: invalid SET instruction, source and size registers are the same
471 setgm [x0]!, x0!, x1
472 setgm [x0]!, x1!, x0
473 setgm [x1]!, x0!, x0
475 // CHECK-ERROR: error: invalid SET instruction, destination and size registers are the same
476 // CHECK-ERROR: error: invalid SET instruction, destination and source registers are the same
477 // CHECK-ERROR: error: invalid SET instruction, source and size registers are the same
478 setge [x0]!, x0!, x1
479 setge [x0]!, x1!, x0
480 setge [x1]!, x0!, x0
482 // SP cannot be used as argument at any position
484 // CHECK-ERROR: error: invalid operand for instruction
485 // CHECK-ERROR: error: invalid operand for instruction
486 // CHECK-ERROR: error: invalid operand for instruction
487 cpyfp [sp]!, [x1]!, x2!
488 cpyfp [x0]!, [sp]!, x2!
489 cpyfp [x0]!, [x1]!, sp!
491 // CHECK-ERROR: error: invalid operand for instruction
492 // CHECK-ERROR: error: invalid operand for instruction
493 // CHECK-ERROR: error: invalid operand for instruction
494 cpyfm [sp]!, [x1]!, x2!
495 cpyfm [x0]!, [sp]!, x2!
496 cpyfm [x0]!, [x1]!, sp!
498 // CHECK-ERROR: error: invalid operand for instruction
499 // CHECK-ERROR: error: invalid operand for instruction
500 // CHECK-ERROR: error: invalid operand for instruction
501 cpyfe [sp]!, [x1]!, x2!
502 cpyfe [x0]!, [sp]!, x2!
503 cpyfe [x0]!, [x1]!, sp!
505 // CHECK-ERROR: error: invalid operand for instruction
506 // CHECK-ERROR: error: invalid operand for instruction
507 // CHECK-ERROR: error: invalid operand for instruction
508 cpyp [sp]!, [x2]!, x2!
509 cpyp [x0]!, [sp]!, x2!
510 cpyp [x0]!, [x1]!, sp!
512 // CHECK-ERROR: error: invalid operand for instruction
513 // CHECK-ERROR: error: invalid operand for instruction
514 // CHECK-ERROR: error: invalid operand for instruction
515 cpym [sp]!, [x2]!, x2!
516 cpym [x0]!, [sp]!, x2!
517 cpym [x0]!, [x1]!, sp!
519 // CHECK-ERROR: error: invalid operand for instruction
520 // CHECK-ERROR: error: invalid operand for instruction
521 // CHECK-ERROR: error: invalid operand for instruction
522 cpye [sp]!, [x2]!, x2!
523 cpye [x0]!, [sp]!, x2!
524 cpye [x0]!, [x1]!, sp!
526 // CHECK-ERROR: error: invalid operand for instruction
527 // CHECK-ERROR: error: invalid operand for instruction
528 // CHECK-ERROR: error: invalid operand for instruction
529 setp [sp]!, x1!, x2
530 setp [x0]!, sp!, x2
531 setp [x0]!, x1!, sp
533 // CHECK-ERROR: error: invalid operand for instruction
534 // CHECK-ERROR: error: invalid operand for instruction
535 // CHECK-ERROR: error: invalid operand for instruction
536 setm [sp]!, x1!, x2
537 setm [x0]!, sp!, x2
538 setm [x0]!, x1!, sp
540 // CHECK-ERROR: error: invalid operand for instruction
541 // CHECK-ERROR: error: invalid operand for instruction
542 // CHECK-ERROR: error: invalid operand for instruction
543 sete [sp]!, x1!, x2
544 sete [x0]!, sp!, x2
545 sete [x0]!, x1!, sp
547 // CHECK-ERROR: error: invalid operand for instruction
548 // CHECK-ERROR: error: invalid operand for instruction
549 // CHECK-ERROR: error: invalid operand for instruction
550 setgp [sp]!, x1!, x2
551 setgp [x0]!, sp!, x2
552 setgp [x0]!, x1!, sp
554 // CHECK-ERROR: error: invalid operand for instruction
555 // CHECK-ERROR: error: invalid operand for instruction
556 // CHECK-ERROR: error: invalid operand for instruction
557 setgm [sp]!, x1!, x2
558 setgm [x0]!, sp!, x2
559 setgm [x0]!, x1!, sp
561 // CHECK-ERROR: error: invalid operand for instruction
562 // CHECK-ERROR: error: invalid operand for instruction
563 // CHECK-ERROR: error: invalid operand for instruction
564 setge [sp]!, x1!, x2
565 setge [x0]!, sp!, x2
566 setge [x0]!, x1!, sp
568 // XZR can only be used at:
569 // - the size operand in CPY.
570 // - the size or source operands in SET.
572 // CHECK-ERROR: error: invalid operand for instruction
573 // CHECK-ERROR: error: invalid operand for instruction
574 // CHECK: cpyfp [x0]!, [x1]!, xzr!
575 cpyfp [xzr]!, [x1]!, x2!
576 cpyfp [x0]!, [xzr]!, x2!
577 cpyfp [x0]!, [x1]!, xzr!
579 // CHECK-ERROR: error: invalid operand for instruction
580 // CHECK-ERROR: error: invalid operand for instruction
581 // CHECK: cpyfm [x0]!, [x1]!, xzr!
582 cpyfm [xzr]!, [x1]!, x2!
583 cpyfm [x0]!, [xzr]!, x2!
584 cpyfm [x0]!, [x1]!, xzr!
586 // CHECK-ERROR: error: invalid operand for instruction
587 // CHECK-ERROR: error: invalid operand for instruction
588 // CHECK: cpyfe [x0]!, [x1]!, xzr!
589 cpyfe [xzr]!, [x1]!, x2!
590 cpyfe [x0]!, [xzr]!, x2!
591 cpyfe [x0]!, [x1]!, xzr!
593 // CHECK-ERROR: error: invalid operand for instruction
594 // CHECK-ERROR: error: invalid operand for instruction
595 // CHECK: cpyp [x0]!, [x1]!, xzr!
596 cpyp [xzr]!, [x2]!, x2!
597 cpyp [x0]!, [xzr]!, x2!
598 cpyp [x0]!, [x1]!, xzr!
600 // CHECK-ERROR: error: invalid operand for instruction
601 // CHECK-ERROR: error: invalid operand for instruction
602 // CHECK: cpym [x0]!, [x1]!, xzr!
603 cpym [xzr]!, [x2]!, x2!
604 cpym [x0]!, [xzr]!, x2!
605 cpym [x0]!, [x1]!, xzr!
607 // CHECK-ERROR: error: invalid operand for instruction
608 // CHECK-ERROR: error: invalid operand for instruction
609 // CHECK: cpye [x0]!, [x1]!, xzr!
610 cpye [xzr]!, [x2]!, x2!
611 cpye [x0]!, [xzr]!, x2!
612 cpye [x0]!, [x1]!, xzr!
614 // CHECK-ERROR: error: invalid operand for instruction
615 // CHECK: setp [x0]!, xzr!, x2
616 // CHECK: setp [x0]!, x1!, xzr
617 setp [xzr]!, x1!, x2
618 setp [x0]!, xzr!, x2
619 setp [x0]!, x1!, xzr
621 // CHECK-ERROR: error: invalid operand for instruction
622 // CHECK: setm [x0]!, xzr!, x2
623 // CHECK: setm [x0]!, x1!, xzr
624 setm [xzr]!, x1!, x2
625 setm [x0]!, xzr!, x2
626 setm [x0]!, x1!, xzr
628 // CHECK-ERROR: error: invalid operand for instruction
629 // CHECK: sete [x0]!, xzr!, x2
630 // CHECK: sete [x0]!, x1!, xzr
631 sete [xzr]!, x1!, x2
632 sete [x0]!, xzr!, x2
633 sete [x0]!, x1!, xzr
635 // CHECK-ERROR: error: invalid operand for instruction
636 // CHECK-MTE: setgp [x0]!, xzr!, x2
637 // CHECK-MTE: setgp [x0]!, x1!, xzr
638 setgp [xzr]!, x1!, x2
639 setgp [x0]!, xzr!, x2
640 setgp [x0]!, x1!, xzr
642 // CHECK-ERROR: error: invalid operand for instruction
643 // CHECK-MTE: setgm [x0]!, xzr!, x2
644 // CHECK-MTE: setgm [x0]!, x1!, xzr
645 setgm [xzr]!, x1!, x2
646 setgm [x0]!, xzr!, x2
647 setgm [x0]!, x1!, xzr
649 // CHECK-ERROR: error: invalid operand for instruction
650 // CHECK-MTE: setge [x0]!, xzr!, x2
651 // CHECK-MTE: setge [x0]!, x1!, xzr
652 setge [xzr]!, x1!, x2
653 setge [x0]!, xzr!, x2
654 setge [x0]!, x1!, xzr