[SLP]Reduce number of alternate instruction, where possible
[llvm-project.git] / llvm / test / MC / AArch64 / SVE / mov.s
bloba97ad45c30ab1bde7ed4bfb3a79b26fefeac3215
1 // RUN: llvm-mc -triple=aarch64 -show-encoding -mattr=+sve < %s \
2 // RUN: | FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST
3 // RUN: llvm-mc -triple=aarch64 -show-encoding -mattr=+sme < %s \
4 // RUN: | FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST
5 // RUN: not llvm-mc -triple=aarch64 -show-encoding < %s 2>&1 \
6 // RUN: | FileCheck %s --check-prefix=CHECK-ERROR
7 // RUN: llvm-mc -triple=aarch64 -filetype=obj -mattr=+sve < %s \
8 // RUN: | llvm-objdump --no-print-imm-hex -d --mattr=+sve - | FileCheck %s --check-prefix=CHECK-INST
9 // RUN: llvm-mc -triple=aarch64 -filetype=obj -mattr=+sve < %s \
10 // RUN: | llvm-objdump --no-print-imm-hex -d --mattr=-sve - | FileCheck %s --check-prefix=CHECK-UNKNOWN
12 mov z0.b, w0
13 // CHECK-INST: mov z0.b, w0
14 // CHECK-ENCODING: [0x00,0x38,0x20,0x05]
15 // CHECK-ERROR: instruction requires: sve or sme
16 // CHECK-UNKNOWN: 05203800 <unknown>
18 mov z0.h, w0
19 // CHECK-INST: mov z0.h, w0
20 // CHECK-ENCODING: [0x00,0x38,0x60,0x05]
21 // CHECK-ERROR: instruction requires: sve or sme
22 // CHECK-UNKNOWN: 05603800 <unknown>
24 mov z0.s, w0
25 // CHECK-INST: mov z0.s, w0
26 // CHECK-ENCODING: [0x00,0x38,0xa0,0x05]
27 // CHECK-ERROR: instruction requires: sve or sme
28 // CHECK-UNKNOWN: 05a03800 <unknown>
30 mov z0.d, x0
31 // CHECK-INST: mov z0.d, x0
32 // CHECK-ENCODING: [0x00,0x38,0xe0,0x05]
33 // CHECK-ERROR: instruction requires: sve or sme
34 // CHECK-UNKNOWN: 05e03800 <unknown>
36 mov z31.h, wsp
37 // CHECK-INST: mov z31.h, wsp
38 // CHECK-ENCODING: [0xff,0x3b,0x60,0x05]
39 // CHECK-ERROR: instruction requires: sve or sme
40 // CHECK-UNKNOWN: 05603bff <unknown>
42 mov z31.s, wsp
43 // CHECK-INST: mov z31.s, wsp
44 // CHECK-ENCODING: [0xff,0x3b,0xa0,0x05]
45 // CHECK-ERROR: instruction requires: sve or sme
46 // CHECK-UNKNOWN: 05a03bff <unknown>
48 mov z31.d, sp
49 // CHECK-INST: mov z31.d, sp
50 // CHECK-ENCODING: [0xff,0x3b,0xe0,0x05]
51 // CHECK-ERROR: instruction requires: sve or sme
52 // CHECK-UNKNOWN: 05e03bff <unknown>
54 mov z31.b, wsp
55 // CHECK-INST: mov z31.b, wsp
56 // CHECK-ENCODING: [0xff,0x3b,0x20,0x05]
57 // CHECK-ERROR: instruction requires: sve or sme
58 // CHECK-UNKNOWN: 05203bff <unknown>
60 mov z0.d, z0.d
61 // CHECK-INST: mov z0.d, z0.d
62 // CHECK-ENCODING: [0x00,0x30,0x60,0x04]
63 // CHECK-ERROR: instruction requires: sve or sme
64 // CHECK-UNKNOWN: 04603000 <unknown>
66 mov z31.d, z0.d
67 // CHECK-INST: mov z31.d, z0.d
68 // CHECK-ENCODING: [0x1f,0x30,0x60,0x04]
69 // CHECK-ERROR: instruction requires: sve or sme
70 // CHECK-UNKNOWN: 0460301f <unknown>
72 mov z5.b, #-128
73 // CHECK-INST: mov z5.b, #-128
74 // CHECK-ENCODING: [0x05,0xd0,0x38,0x25]
75 // CHECK-ERROR: instruction requires: sve or sme
76 // CHECK-UNKNOWN: 2538d005 <unknown>
78 mov z5.b, #127
79 // CHECK-INST: mov z5.b, #127
80 // CHECK-ENCODING: [0xe5,0xcf,0x38,0x25]
81 // CHECK-ERROR: instruction requires: sve or sme
82 // CHECK-UNKNOWN: 2538cfe5 <unknown>
84 mov z5.b, #255
85 // CHECK-INST: mov z5.b, #-1
86 // CHECK-ENCODING: [0xe5,0xdf,0x38,0x25]
87 // CHECK-ERROR: instruction requires: sve or sme
88 // CHECK-UNKNOWN: 2538dfe5 <unknown>
90 mov z21.h, #-128
91 // CHECK-INST: mov z21.h, #-128
92 // CHECK-ENCODING: [0x15,0xd0,0x78,0x25]
93 // CHECK-ERROR: instruction requires: sve or sme
94 // CHECK-UNKNOWN: 2578d015 <unknown>
96 mov z21.h, #-128, lsl #8
97 // CHECK-INST: mov z21.h, #-32768
98 // CHECK-ENCODING: [0x15,0xf0,0x78,0x25]
99 // CHECK-ERROR: instruction requires: sve or sme
100 // CHECK-UNKNOWN: 2578f015 <unknown>
102 mov z21.h, #-32768
103 // CHECK-INST: mov z21.h, #-32768
104 // CHECK-ENCODING: [0x15,0xf0,0x78,0x25]
105 // CHECK-ERROR: instruction requires: sve or sme
106 // CHECK-UNKNOWN: 2578f015 <unknown>
108 mov z21.h, #127
109 // CHECK-INST: mov z21.h, #127
110 // CHECK-ENCODING: [0xf5,0xcf,0x78,0x25]
111 // CHECK-ERROR: instruction requires: sve or sme
112 // CHECK-UNKNOWN: 2578cff5 <unknown>
114 mov z21.h, #127, lsl #8
115 // CHECK-INST: mov z21.h, #32512
116 // CHECK-ENCODING: [0xf5,0xef,0x78,0x25]
117 // CHECK-ERROR: instruction requires: sve or sme
118 // CHECK-UNKNOWN: 2578eff5 <unknown>
120 mov z21.h, #32512
121 // CHECK-INST: mov z21.h, #32512
122 // CHECK-ENCODING: [0xf5,0xef,0x78,0x25]
123 // CHECK-ERROR: instruction requires: sve or sme
124 // CHECK-UNKNOWN: 2578eff5 <unknown>
126 mov z21.s, #-128
127 // CHECK-INST: mov z21.s, #-128
128 // CHECK-ENCODING: [0x15,0xd0,0xb8,0x25]
129 // CHECK-ERROR: instruction requires: sve or sme
130 // CHECK-UNKNOWN: 25b8d015 <unknown>
132 mov z21.s, #-128, lsl #8
133 // CHECK-INST: mov z21.s, #-32768
134 // CHECK-ENCODING: [0x15,0xf0,0xb8,0x25]
135 // CHECK-ERROR: instruction requires: sve or sme
136 // CHECK-UNKNOWN: 25b8f015 <unknown>
138 mov z21.s, #-32768
139 // CHECK-INST: mov z21.s, #-32768
140 // CHECK-ENCODING: [0x15,0xf0,0xb8,0x25]
141 // CHECK-ERROR: instruction requires: sve or sme
142 // CHECK-UNKNOWN: 25b8f015 <unknown>
144 mov z21.s, #127
145 // CHECK-INST: mov z21.s, #127
146 // CHECK-ENCODING: [0xf5,0xcf,0xb8,0x25]
147 // CHECK-ERROR: instruction requires: sve or sme
148 // CHECK-UNKNOWN: 25b8cff5 <unknown>
150 mov z21.s, #127, lsl #8
151 // CHECK-INST: mov z21.s, #32512
152 // CHECK-ENCODING: [0xf5,0xef,0xb8,0x25]
153 // CHECK-ERROR: instruction requires: sve or sme
154 // CHECK-UNKNOWN: 25b8eff5 <unknown>
156 mov z21.s, #32512
157 // CHECK-INST: mov z21.s, #32512
158 // CHECK-ENCODING: [0xf5,0xef,0xb8,0x25]
159 // CHECK-ERROR: instruction requires: sve or sme
160 // CHECK-UNKNOWN: 25b8eff5 <unknown>
162 mov z21.d, #-128
163 // CHECK-INST: mov z21.d, #-128
164 // CHECK-ENCODING: [0x15,0xd0,0xf8,0x25]
165 // CHECK-ERROR: instruction requires: sve or sme
166 // CHECK-UNKNOWN: 25f8d015 <unknown>
168 mov z21.d, #-128, lsl #8
169 // CHECK-INST: mov z21.d, #-32768
170 // CHECK-ENCODING: [0x15,0xf0,0xf8,0x25]
171 // CHECK-ERROR: instruction requires: sve or sme
172 // CHECK-UNKNOWN: 25f8f015 <unknown>
174 mov z21.d, #-32768
175 // CHECK-INST: mov z21.d, #-32768
176 // CHECK-ENCODING: [0x15,0xf0,0xf8,0x25]
177 // CHECK-ERROR: instruction requires: sve or sme
178 // CHECK-UNKNOWN: 25f8f015 <unknown>
180 mov z21.d, #127
181 // CHECK-INST: mov z21.d, #127
182 // CHECK-ENCODING: [0xf5,0xcf,0xf8,0x25]
183 // CHECK-ERROR: instruction requires: sve or sme
184 // CHECK-UNKNOWN: 25f8cff5 <unknown>
186 mov z21.d, #127, lsl #8
187 // CHECK-INST: mov z21.d, #32512
188 // CHECK-ENCODING: [0xf5,0xef,0xf8,0x25]
189 // CHECK-ERROR: instruction requires: sve or sme
190 // CHECK-UNKNOWN: 25f8eff5 <unknown>
192 mov z21.d, #32512
193 // CHECK-INST: mov z21.d, #32512
194 // CHECK-ENCODING: [0xf5,0xef,0xf8,0x25]
195 // CHECK-ERROR: instruction requires: sve or sme
196 // CHECK-UNKNOWN: 25f8eff5 <unknown>
198 mov z0.h, #32768
199 // CHECK-INST: mov z0.h, #-32768
200 // CHECK-ENCODING: [0x00,0xf0,0x78,0x25]
201 // CHECK-ERROR: instruction requires: sve or sme
202 // CHECK-UNKNOWN: 2578f000 <unknown>
204 mov z0.h, #65280
205 // CHECK-INST: mov z0.h, #-256
206 // CHECK-ENCODING: [0xe0,0xff,0x78,0x25]
207 // CHECK-ERROR: instruction requires: sve or sme
208 // CHECK-UNKNOWN: 2578ffe0 <unknown>
210 mov z0.h, #-33024
211 // CHECK-INST: mov z0.h, #32512
212 // CHECK-ENCODING: [0xe0,0xef,0x78,0x25]
213 // CHECK-ERROR: instruction requires: sve or sme
214 // CHECK-UNKNOWN: 2578efe0 <unknown>
216 mov z0.h, #-32769
217 // CHECK-INST: mov z0.h, #32767
218 // CHECK-ENCODING: [0xc0,0x05,0xc0,0x05]
219 // CHECK-ERROR: instruction requires: sve or sme
220 // CHECK-UNKNOWN: 05c005c0 <unknown>
222 mov z0.s, #-32769
223 // CHECK-INST: mov z0.s, #0xffff7fff
224 // CHECK-ENCODING: [0xc0,0x83,0xc0,0x05]
225 // CHECK-ERROR: instruction requires: sve or sme
226 // CHECK-UNKNOWN: 05c083c0 <unknown>
228 mov z0.s, #32768
229 // CHECK-INST: mov z0.s, #32768
230 // CHECK-ENCODING: [0x00,0x88,0xc0,0x05]
231 // CHECK-ERROR: instruction requires: sve or sme
232 // CHECK-UNKNOWN: 05c08800 <unknown>
234 mov z0.d, #-32769
235 // CHECK-INST: mov z0.d, #0xffffffffffff7fff
236 // CHECK-ENCODING: [0xc0,0x87,0xc3,0x05]
237 // CHECK-ERROR: instruction requires: sve or sme
238 // CHECK-UNKNOWN: 05c387c0 <unknown>
240 mov z0.d, #32768
241 // CHECK-INST: mov z0.d, #32768
242 // CHECK-ENCODING: [0x00,0x88,0xc3,0x05]
243 // CHECK-ERROR: instruction requires: sve or sme
244 // CHECK-UNKNOWN: 05c38800 <unknown>
246 mov z0.d, #0xe0000000000003ff
247 // CHECK-INST: mov z0.d, #0xe0000000000003ff
248 // CHECK-ENCODING: [0x80,0x19,0xc2,0x05]
249 // CHECK-ERROR: instruction requires: sve or sme
250 // CHECK-UNKNOWN: 05c21980 <unknown>
252 mov z5.b, p0/z, #-128
253 // CHECK-INST: mov z5.b, p0/z, #-128
254 // CHECK-ENCODING: [0x05,0x10,0x10,0x05]
255 // CHECK-ERROR: instruction requires: sve or sme
256 // CHECK-UNKNOWN: 05101005 <unknown>
258 mov z5.b, p0/z, #127
259 // CHECK-INST: mov z5.b, p0/z, #127
260 // CHECK-ENCODING: [0xe5,0x0f,0x10,0x05]
261 // CHECK-ERROR: instruction requires: sve or sme
262 // CHECK-UNKNOWN: 05100fe5 <unknown>
264 mov z5.b, p0/z, #255
265 // CHECK-INST: mov z5.b, p0/z, #-1
266 // CHECK-ENCODING: [0xe5,0x1f,0x10,0x05]
267 // CHECK-ERROR: instruction requires: sve or sme
268 // CHECK-UNKNOWN: 05101fe5 <unknown>
270 mov z21.h, p0/z, #-128
271 // CHECK-INST: mov z21.h, p0/z, #-128
272 // CHECK-ENCODING: [0x15,0x10,0x50,0x05]
273 // CHECK-ERROR: instruction requires: sve or sme
274 // CHECK-UNKNOWN: 05501015 <unknown>
276 mov z21.h, p0/z, #-128, lsl #8
277 // CHECK-INST: mov z21.h, p0/z, #-32768
278 // CHECK-ENCODING: [0x15,0x30,0x50,0x05]
279 // CHECK-ERROR: instruction requires: sve or sme
280 // CHECK-UNKNOWN: 05503015 <unknown>
282 mov z21.h, p0/z, #-32768
283 // CHECK-INST: mov z21.h, p0/z, #-32768
284 // CHECK-ENCODING: [0x15,0x30,0x50,0x05]
285 // CHECK-ERROR: instruction requires: sve or sme
286 // CHECK-UNKNOWN: 05503015 <unknown>
288 mov z21.h, p0/z, #127
289 // CHECK-INST: mov z21.h, p0/z, #127
290 // CHECK-ENCODING: [0xf5,0x0f,0x50,0x05]
291 // CHECK-ERROR: instruction requires: sve or sme
292 // CHECK-UNKNOWN: 05500ff5 <unknown>
294 mov z21.h, p0/z, #127, lsl #8
295 // CHECK-INST: mov z21.h, p0/z, #32512
296 // CHECK-ENCODING: [0xf5,0x2f,0x50,0x05]
297 // CHECK-ERROR: instruction requires: sve or sme
298 // CHECK-UNKNOWN: 05502ff5 <unknown>
300 mov z21.h, p0/z, #32512
301 // CHECK-INST: mov z21.h, p0/z, #32512
302 // CHECK-ENCODING: [0xf5,0x2f,0x50,0x05]
303 // CHECK-ERROR: instruction requires: sve or sme
304 // CHECK-UNKNOWN: 05502ff5 <unknown>
306 mov z21.s, p0/z, #-128
307 // CHECK-INST: mov z21.s, p0/z, #-128
308 // CHECK-ENCODING: [0x15,0x10,0x90,0x05]
309 // CHECK-ERROR: instruction requires: sve or sme
310 // CHECK-UNKNOWN: 05901015 <unknown>
312 mov z21.s, p0/z, #-128, lsl #8
313 // CHECK-INST: mov z21.s, p0/z, #-32768
314 // CHECK-ENCODING: [0x15,0x30,0x90,0x05]
315 // CHECK-ERROR: instruction requires: sve or sme
316 // CHECK-UNKNOWN: 05903015 <unknown>
318 mov z21.s, p0/z, #-32768
319 // CHECK-INST: mov z21.s, p0/z, #-32768
320 // CHECK-ENCODING: [0x15,0x30,0x90,0x05]
321 // CHECK-ERROR: instruction requires: sve or sme
322 // CHECK-UNKNOWN: 05903015 <unknown>
324 mov z21.s, p0/z, #127
325 // CHECK-INST: mov z21.s, p0/z, #127
326 // CHECK-ENCODING: [0xf5,0x0f,0x90,0x05]
327 // CHECK-ERROR: instruction requires: sve or sme
328 // CHECK-UNKNOWN: 05900ff5 <unknown>
330 mov z21.s, p0/z, #127, lsl #8
331 // CHECK-INST: mov z21.s, p0/z, #32512
332 // CHECK-ENCODING: [0xf5,0x2f,0x90,0x05]
333 // CHECK-ERROR: instruction requires: sve or sme
334 // CHECK-UNKNOWN: 05902ff5 <unknown>
336 mov z21.s, p0/z, #32512
337 // CHECK-INST: mov z21.s, p0/z, #32512
338 // CHECK-ENCODING: [0xf5,0x2f,0x90,0x05]
339 // CHECK-ERROR: instruction requires: sve or sme
340 // CHECK-UNKNOWN: 05902ff5 <unknown>
342 mov z21.d, p0/z, #-128
343 // CHECK-INST: mov z21.d, p0/z, #-128
344 // CHECK-ENCODING: [0x15,0x10,0xd0,0x05]
345 // CHECK-ERROR: instruction requires: sve or sme
346 // CHECK-UNKNOWN: 05d01015 <unknown>
348 mov z21.d, p0/z, #-128, lsl #8
349 // CHECK-INST: mov z21.d, p0/z, #-32768
350 // CHECK-ENCODING: [0x15,0x30,0xd0,0x05]
351 // CHECK-ERROR: instruction requires: sve or sme
352 // CHECK-UNKNOWN: 05d03015 <unknown>
354 mov z21.d, p0/z, #-32768
355 // CHECK-INST: mov z21.d, p0/z, #-32768
356 // CHECK-ENCODING: [0x15,0x30,0xd0,0x05]
357 // CHECK-ERROR: instruction requires: sve or sme
358 // CHECK-UNKNOWN: 05d03015 <unknown>
360 mov z21.d, p0/z, #127
361 // CHECK-INST: mov z21.d, p0/z, #127
362 // CHECK-ENCODING: [0xf5,0x0f,0xd0,0x05]
363 // CHECK-ERROR: instruction requires: sve or sme
364 // CHECK-UNKNOWN: 05d00ff5 <unknown>
366 mov z21.d, p0/z, #127, lsl #8
367 // CHECK-INST: mov z21.d, p0/z, #32512
368 // CHECK-ENCODING: [0xf5,0x2f,0xd0,0x05]
369 // CHECK-ERROR: instruction requires: sve or sme
370 // CHECK-UNKNOWN: 05d02ff5 <unknown>
372 mov z21.d, p0/z, #32512
373 // CHECK-INST: mov z21.d, p0/z, #32512
374 // CHECK-ENCODING: [0xf5,0x2f,0xd0,0x05]
375 // CHECK-ERROR: instruction requires: sve or sme
376 // CHECK-UNKNOWN: 05d02ff5 <unknown>
379 // --------------------------------------------------------------------------//
380 // Tests where the negative immediate is in bounds when interpreted
381 // as the element type.
383 mov z0.b, #-129
384 // CHECK-INST: mov z0.b, #127
385 // CHECK-ENCODING: [0xe0,0xcf,0x38,0x25]
386 // CHECK-ERROR: instruction requires: sve or sme
387 // CHECK-UNKNOWN: 2538cfe0 <unknown>
389 mov z0.h, #-129, lsl #8
390 // CHECK-INST: mov z0.h, #32512
391 // CHECK-ENCODING: [0xe0,0xef,0x78,0x25]
392 // CHECK-ERROR: instruction requires: sve or sme
393 // CHECK-UNKNOWN: 2578efe0 <unknown>
395 mov z5.h, #0xfffa
396 // CHECK-INST: mov z5.h, #-6
397 // CHECK-ENCODING: [0x45,0xdf,0x78,0x25]
398 // CHECK-ERROR: instruction requires: sve or sme
399 // CHECK-UNKNOWN: 2578df45 <unknown>
401 mov z5.s, #0xfffffffa
402 // CHECK-INST: mov z5.s, #-6
403 // CHECK-ENCODING: [0x45,0xdf,0xb8,0x25]
404 // CHECK-ERROR: instruction requires: sve or sme
405 // CHECK-UNKNOWN: 25b8df45 <unknown>
407 mov z5.d, #0xfffffffffffffffa
408 // CHECK-INST: mov z5.d, #-6
409 // CHECK-ENCODING: [0x45,0xdf,0xf8,0x25]
410 // CHECK-ERROR: instruction requires: sve or sme
411 // CHECK-UNKNOWN: 25f8df45 <unknown>
413 mov z0.b, p0/z, #-129
414 // CHECK-INST: mov z0.b, p0/z, #127
415 // CHECK-ENCODING: [0xe0,0x0f,0x10,0x05]
416 // CHECK-ERROR: instruction requires: sve or sme
417 // CHECK-UNKNOWN: 05100fe0 <unknown>
419 mov z0.h, p0/z, #-33024
420 // CHECK-INST: mov z0.h, p0/z, #32512
421 // CHECK-ENCODING: [0xe0,0x2f,0x50,0x05]
422 // CHECK-ERROR: instruction requires: sve or sme
423 // CHECK-UNKNOWN: 05502fe0 <unknown>
425 mov z0.h, p0/z, #-129, lsl #8
426 // CHECK-INST: mov z0.h, p0/z, #32512
427 // CHECK-ENCODING: [0xe0,0x2f,0x50,0x05]
428 // CHECK-ERROR: instruction requires: sve or sme
429 // CHECK-UNKNOWN: 05502fe0 <unknown>
431 // --------------------------------------------------------------------------//
432 // Tests for merging variant (/m) and testing the range of predicate (> 7)
433 // is allowed.
435 mov z5.b, p15/m, #-128
436 // CHECK-INST: mov z5.b, p15/m, #-128
437 // CHECK-ENCODING: [0x05,0x50,0x1f,0x05]
438 // CHECK-ERROR: instruction requires: sve or sme
439 // CHECK-UNKNOWN: 051f5005 <unknown>
441 mov z21.h, p15/m, #-128
442 // CHECK-INST: mov z21.h, p15/m, #-128
443 // CHECK-ENCODING: [0x15,0x50,0x5f,0x05]
444 // CHECK-ERROR: instruction requires: sve or sme
445 // CHECK-UNKNOWN: 055f5015 <unknown>
447 mov z21.h, p15/m, #-128, lsl #8
448 // CHECK-INST: mov z21.h, p15/m, #-32768
449 // CHECK-ENCODING: [0x15,0x70,0x5f,0x05]
450 // CHECK-ERROR: instruction requires: sve or sme
451 // CHECK-UNKNOWN: 055f7015 <unknown>
453 mov z21.s, p15/m, #-128
454 // CHECK-INST: mov z21.s, p15/m, #-128
455 // CHECK-ENCODING: [0x15,0x50,0x9f,0x05]
456 // CHECK-ERROR: instruction requires: sve or sme
457 // CHECK-UNKNOWN: 059f5015 <unknown>
459 mov z21.s, p15/m, #-128, lsl #8
460 // CHECK-INST: mov z21.s, p15/m, #-32768
461 // CHECK-ENCODING: [0x15,0x70,0x9f,0x05]
462 // CHECK-ERROR: instruction requires: sve or sme
463 // CHECK-UNKNOWN: 059f7015 <unknown>
465 mov z21.d, p15/m, #-128
466 // CHECK-INST: mov z21.d, p15/m, #-128
467 // CHECK-ENCODING: [0x15,0x50,0xdf,0x05]
468 // CHECK-ERROR: instruction requires: sve or sme
469 // CHECK-UNKNOWN: 05df5015 <unknown>
471 mov z21.d, p15/m, #-128, lsl #8
472 // CHECK-INST: mov z21.d, p15/m, #-32768
473 // CHECK-ENCODING: [0x15,0x70,0xdf,0x05]
474 // CHECK-ERROR: instruction requires: sve or sme
475 // CHECK-UNKNOWN: 05df7015 <unknown>
477 // --------------------------------------------------------------------------//
478 // Tests for indexed variant
480 mov z0.b, z0.b[0]
481 // CHECK-INST: mov z0.b, b0
482 // CHECK-ENCODING: [0x00,0x20,0x21,0x05]
483 // CHECK-ERROR: instruction requires: sve or sme
484 // CHECK-UNKNOWN: 05212000 <unknown>
486 mov z0.h, z0.h[0]
487 // CHECK-INST: mov z0.h, h0
488 // CHECK-ENCODING: [0x00,0x20,0x22,0x05]
489 // CHECK-ERROR: instruction requires: sve or sme
490 // CHECK-UNKNOWN: 05222000 <unknown>
492 mov z0.s, z0.s[0]
493 // CHECK-INST: mov z0.s, s0
494 // CHECK-ENCODING: [0x00,0x20,0x24,0x05]
495 // CHECK-ERROR: instruction requires: sve or sme
496 // CHECK-UNKNOWN: 05242000 <unknown>
498 mov z0.d, z0.d[0]
499 // CHECK-INST: mov z0.d, d0
500 // CHECK-ENCODING: [0x00,0x20,0x28,0x05]
501 // CHECK-ERROR: instruction requires: sve or sme
502 // CHECK-UNKNOWN: 05282000 <unknown>
504 mov z0.q, z0.q[0]
505 // CHECK-INST: mov z0.q, q0
506 // CHECK-ENCODING: [0x00,0x20,0x30,0x05]
507 // CHECK-ERROR: instruction requires: sve or sme
508 // CHECK-UNKNOWN: 05302000 <unknown>
510 mov z0.b, b0
511 // CHECK-INST: mov z0.b, b0
512 // CHECK-ENCODING: [0x00,0x20,0x21,0x05]
513 // CHECK-ERROR: instruction requires: sve or sme
514 // CHECK-UNKNOWN: 05212000 <unknown>
516 mov z0.h, h0
517 // CHECK-INST: mov z0.h, h0
518 // CHECK-ENCODING: [0x00,0x20,0x22,0x05]
519 // CHECK-ERROR: instruction requires: sve or sme
520 // CHECK-UNKNOWN: 05222000 <unknown>
522 mov z0.s, s0
523 // CHECK-INST: mov z0.s, s0
524 // CHECK-ENCODING: [0x00,0x20,0x24,0x05]
525 // CHECK-ERROR: instruction requires: sve or sme
526 // CHECK-UNKNOWN: 05242000 <unknown>
528 mov z0.d, d0
529 // CHECK-INST: mov z0.d, d0
530 // CHECK-ENCODING: [0x00,0x20,0x28,0x05]
531 // CHECK-ERROR: instruction requires: sve or sme
532 // CHECK-UNKNOWN: 05282000 <unknown>
534 mov z0.q, q0
535 // CHECK-INST: mov z0.q, q0
536 // CHECK-ENCODING: [0x00,0x20,0x30,0x05]
537 // CHECK-ERROR: instruction requires: sve or sme
538 // CHECK-UNKNOWN: 05302000 <unknown>
540 mov z31.b, z31.b[63]
541 // CHECK-INST: mov z31.b, z31.b[63]
542 // CHECK-ENCODING: [0xff,0x23,0xff,0x05]
543 // CHECK-ERROR: instruction requires: sve or sme
544 // CHECK-UNKNOWN: 05ff23ff <unknown>
546 mov z31.h, z31.h[31]
547 // CHECK-INST: mov z31.h, z31.h[31]
548 // CHECK-ENCODING: [0xff,0x23,0xfe,0x05]
549 // CHECK-ERROR: instruction requires: sve or sme
550 // CHECK-UNKNOWN: 05fe23ff <unknown>
552 mov z31.s, z31.s[15]
553 // CHECK-INST: mov z31.s, z31.s[15]
554 // CHECK-ENCODING: [0xff,0x23,0xfc,0x05]
555 // CHECK-ERROR: instruction requires: sve or sme
556 // CHECK-UNKNOWN: 05fc23ff <unknown>
558 mov z31.d, z31.d[7]
559 // CHECK-INST: mov z31.d, z31.d[7]
560 // CHECK-ENCODING: [0xff,0x23,0xf8,0x05]
561 // CHECK-ERROR: instruction requires: sve or sme
562 // CHECK-UNKNOWN: 05f823ff <unknown>
564 mov z5.q, z17.q[3]
565 // CHECK-INST: mov z5.q, z17.q[3]
566 // CHECK-ENCODING: [0x25,0x22,0xf0,0x05]
567 // CHECK-ERROR: instruction requires: sve or sme
568 // CHECK-UNKNOWN: 05f02225 <unknown>
571 // --------------------------------------------------------------------------//
572 // Tests for predicated copy of SIMD/FP registers.
574 mov z0.b, p0/m, w0
575 // CHECK-INST: mov z0.b, p0/m, w0
576 // CHECK-ENCODING: [0x00,0xa0,0x28,0x05]
577 // CHECK-ERROR: instruction requires: sve or sme
578 // CHECK-UNKNOWN: 0528a000 <unknown>
580 mov z0.h, p0/m, w0
581 // CHECK-INST: mov z0.h, p0/m, w0
582 // CHECK-ENCODING: [0x00,0xa0,0x68,0x05]
583 // CHECK-ERROR: instruction requires: sve or sme
584 // CHECK-UNKNOWN: 0568a000 <unknown>
586 mov z0.s, p0/m, w0
587 // CHECK-INST: mov z0.s, p0/m, w0
588 // CHECK-ENCODING: [0x00,0xa0,0xa8,0x05]
589 // CHECK-ERROR: instruction requires: sve or sme
590 // CHECK-UNKNOWN: 05a8a000 <unknown>
592 mov z0.d, p0/m, x0
593 // CHECK-INST: mov z0.d, p0/m, x0
594 // CHECK-ENCODING: [0x00,0xa0,0xe8,0x05]
595 // CHECK-ERROR: instruction requires: sve or sme
596 // CHECK-UNKNOWN: 05e8a000 <unknown>
598 mov z31.b, p7/m, wsp
599 // CHECK-INST: mov z31.b, p7/m, wsp
600 // CHECK-ENCODING: [0xff,0xbf,0x28,0x05]
601 // CHECK-ERROR: instruction requires: sve or sme
602 // CHECK-UNKNOWN: 0528bfff <unknown>
604 mov z31.h, p7/m, wsp
605 // CHECK-INST: mov z31.h, p7/m, wsp
606 // CHECK-ENCODING: [0xff,0xbf,0x68,0x05]
607 // CHECK-ERROR: instruction requires: sve or sme
608 // CHECK-UNKNOWN: 0568bfff <unknown>
610 mov z31.s, p7/m, wsp
611 // CHECK-INST: mov z31.s, p7/m, wsp
612 // CHECK-ENCODING: [0xff,0xbf,0xa8,0x05]
613 // CHECK-ERROR: instruction requires: sve or sme
614 // CHECK-UNKNOWN: 05a8bfff <unknown>
616 mov z31.d, p7/m, sp
617 // CHECK-INST: mov z31.d, p7/m, sp
618 // CHECK-ENCODING: [0xff,0xbf,0xe8,0x05]
619 // CHECK-ERROR: instruction requires: sve or sme
620 // CHECK-UNKNOWN: 05e8bfff <unknown>
622 mov z0.b, p0/m, b0
623 // CHECK-INST: mov z0.b, p0/m, b0
624 // CHECK-ENCODING: [0x00,0x80,0x20,0x05]
625 // CHECK-ERROR: instruction requires: sve or sme
626 // CHECK-UNKNOWN: 05208000 <unknown>
628 mov z31.b, p7/m, b31
629 // CHECK-INST: mov z31.b, p7/m, b31
630 // CHECK-ENCODING: [0xff,0x9f,0x20,0x05]
631 // CHECK-ERROR: instruction requires: sve or sme
632 // CHECK-UNKNOWN: 05209fff <unknown>
634 mov z0.h, p0/m, h0
635 // CHECK-INST: mov z0.h, p0/m, h0
636 // CHECK-ENCODING: [0x00,0x80,0x60,0x05]
637 // CHECK-ERROR: instruction requires: sve or sme
638 // CHECK-UNKNOWN: 05608000 <unknown>
640 mov z31.h, p7/m, h31
641 // CHECK-INST: mov z31.h, p7/m, h31
642 // CHECK-ENCODING: [0xff,0x9f,0x60,0x05]
643 // CHECK-ERROR: instruction requires: sve or sme
644 // CHECK-UNKNOWN: 05609fff <unknown>
646 mov z0.s, p0/m, s0
647 // CHECK-INST: mov z0.s, p0/m, s0
648 // CHECK-ENCODING: [0x00,0x80,0xa0,0x05]
649 // CHECK-ERROR: instruction requires: sve or sme
650 // CHECK-UNKNOWN: 05a08000 <unknown>
652 mov z31.s, p7/m, s31
653 // CHECK-INST: mov z31.s, p7/m, s31
654 // CHECK-ENCODING: [0xff,0x9f,0xa0,0x05]
655 // CHECK-ERROR: instruction requires: sve or sme
656 // CHECK-UNKNOWN: 05a09fff <unknown>
658 mov z0.d, p0/m, d0
659 // CHECK-INST: mov z0.d, p0/m, d0
660 // CHECK-ENCODING: [0x00,0x80,0xe0,0x05]
661 // CHECK-ERROR: instruction requires: sve or sme
662 // CHECK-UNKNOWN: 05e08000 <unknown>
664 mov z31.d, p7/m, d31
665 // CHECK-INST: mov z31.d, p7/m, d31
666 // CHECK-ENCODING: [0xff,0x9f,0xe0,0x05]
667 // CHECK-ERROR: instruction requires: sve or sme
668 // CHECK-UNKNOWN: 05e09fff <unknown>
670 mov p0.b, p0/m, p0.b
671 // CHECK-INST: mov p0.b, p0/m, p0.b
672 // CHECK-ENCODING: [0x10,0x42,0x00,0x25]
673 // CHECK-ERROR: instruction requires: sve or sme
674 // CHECK-UNKNOWN: 25004210 <unknown>
676 mov p15.b, p15/m, p15.b
677 // CHECK-INST: mov p15.b, p15/m, p15.b
678 // CHECK-ENCODING: [0xff,0x7f,0x0f,0x25]
679 // CHECK-ERROR: instruction requires: sve or sme
680 // CHECK-UNKNOWN: 250f7fff <unknown>
682 mov z31.b, p15/m, z31.b
683 // CHECK-INST: mov z31.b, p15/m, z31.b
684 // CHECK-ENCODING: [0xff,0xff,0x3f,0x05]
685 // CHECK-ERROR: instruction requires: sve or sme
686 // CHECK-UNKNOWN: 053fffff <unknown>
688 mov z31.h, p15/m, z31.h
689 // CHECK-INST: mov z31.h, p15/m, z31.h
690 // CHECK-ENCODING: [0xff,0xff,0x7f,0x05]
691 // CHECK-ERROR: instruction requires: sve or sme
692 // CHECK-UNKNOWN: 057fffff <unknown>
694 mov z31.s, p15/m, z31.s
695 // CHECK-INST: mov z31.s, p15/m, z31.s
696 // CHECK-ENCODING: [0xff,0xff,0xbf,0x05]
697 // CHECK-ERROR: instruction requires: sve or sme
698 // CHECK-UNKNOWN: 05bfffff <unknown>
700 mov z31.d, p15/m, z31.d
701 // CHECK-INST: mov z31.d, p15/m, z31.d
702 // CHECK-ENCODING: [0xff,0xff,0xff,0x05]
703 // CHECK-ERROR: instruction requires: sve or sme
704 // CHECK-UNKNOWN: 05ffffff <unknown>
706 mov p0.b, p0.b
707 // CHECK-INST: mov p0.b, p0.b
708 // CHECK-ENCODING: [0x00,0x40,0x80,0x25]
709 // CHECK-ERROR: instruction requires: sve or sme
710 // CHECK-UNKNOWN: 25804000 <unknown>
712 mov p15.b, p15.b
713 // CHECK-INST: mov p15.b, p15.b
714 // CHECK-ENCODING: [0xef,0x7d,0x8f,0x25]
715 // CHECK-ERROR: instruction requires: sve or sme
716 // CHECK-UNKNOWN: 258f7def <unknown>
718 mov p0.b, p0/z, p0.b
719 // CHECK-INST: mov p0.b, p0/z, p0.b
720 // CHECK-ENCODING: [0x00,0x40,0x00,0x25]
721 // CHECK-ERROR: instruction requires: sve or sme
722 // CHECK-UNKNOWN: 25004000 <unknown>
724 mov p15.b, p15/z, p15.b
725 // CHECK-INST: mov p15.b, p15/z, p15.b
726 // CHECK-ENCODING: [0xef,0x7d,0x0f,0x25]
727 // CHECK-ERROR: instruction requires: sve or sme
728 // CHECK-UNKNOWN: 250f7def <unknown>
731 // --------------------------------------------------------------------------//
732 // Test compatibility with MOVPRFX instruction.
734 movprfx z31.d, p7/z, z6.d
735 // CHECK-INST: movprfx z31.d, p7/z, z6.d
736 // CHECK-ENCODING: [0xdf,0x3c,0xd0,0x04]
737 // CHECK-ERROR: instruction requires: sve or sme
738 // CHECK-UNKNOWN: 04d03cdf <unknown>
740 mov z31.d, p7/m, sp
741 // CHECK-INST: mov z31.d, p7/m, sp
742 // CHECK-ENCODING: [0xff,0xbf,0xe8,0x05]
743 // CHECK-ERROR: instruction requires: sve or sme
744 // CHECK-UNKNOWN: 05e8bfff <unknown>
746 movprfx z31, z6
747 // CHECK-INST: movprfx z31, z6
748 // CHECK-ENCODING: [0xdf,0xbc,0x20,0x04]
749 // CHECK-ERROR: instruction requires: sve or sme
750 // CHECK-UNKNOWN: 0420bcdf <unknown>
752 mov z31.d, p7/m, sp
753 // CHECK-INST: mov z31.d, p7/m, sp
754 // CHECK-ENCODING: [0xff,0xbf,0xe8,0x05]
755 // CHECK-ERROR: instruction requires: sve or sme
756 // CHECK-UNKNOWN: 05e8bfff <unknown>
758 movprfx z21.d, p7/z, z28.d
759 // CHECK-INST: movprfx z21.d, p7/z, z28.d
760 // CHECK-ENCODING: [0x95,0x3f,0xd0,0x04]
761 // CHECK-ERROR: instruction requires: sve or sme
762 // CHECK-UNKNOWN: 04d03f95 <unknown>
764 mov z21.d, p7/m, #-128, lsl #8
765 // CHECK-INST: mov z21.d, p7/m, #-32768
766 // CHECK-ENCODING: [0x15,0x70,0xd7,0x05]
767 // CHECK-ERROR: instruction requires: sve or sme
768 // CHECK-UNKNOWN: 05d77015 <unknown>
770 movprfx z21, z28
771 // CHECK-INST: movprfx z21, z28
772 // CHECK-ENCODING: [0x95,0xbf,0x20,0x04]
773 // CHECK-ERROR: instruction requires: sve or sme
774 // CHECK-UNKNOWN: 0420bf95 <unknown>
776 mov z21.d, p15/m, #-128, lsl #8
777 // CHECK-INST: mov z21.d, p15/m, #-32768
778 // CHECK-ENCODING: [0x15,0x70,0xdf,0x05]
779 // CHECK-ERROR: instruction requires: sve or sme
780 // CHECK-UNKNOWN: 05df7015 <unknown>
782 movprfx z4.d, p7/z, z6.d
783 // CHECK-INST: movprfx z4.d, p7/z, z6.d
784 // CHECK-ENCODING: [0xc4,0x3c,0xd0,0x04]
785 // CHECK-ERROR: instruction requires: sve or sme
786 // CHECK-UNKNOWN: 04d03cc4 <unknown>
788 mov z4.d, p7/m, d31
789 // CHECK-INST: mov z4.d, p7/m, d31
790 // CHECK-ENCODING: [0xe4,0x9f,0xe0,0x05]
791 // CHECK-ERROR: instruction requires: sve or sme
792 // CHECK-UNKNOWN: 05e09fe4 <unknown>
794 movprfx z4, z6
795 // CHECK-INST: movprfx z4, z6
796 // CHECK-ENCODING: [0xc4,0xbc,0x20,0x04]
797 // CHECK-ERROR: instruction requires: sve or sme
798 // CHECK-UNKNOWN: 0420bcc4 <unknown>
800 mov z4.d, p7/m, d31
801 // CHECK-INST: mov z4.d, p7/m, d31
802 // CHECK-ENCODING: [0xe4,0x9f,0xe0,0x05]
803 // CHECK-ERROR: instruction requires: sve or sme
804 // CHECK-UNKNOWN: 05e09fe4 <unknown>