AArch64/ARM64: move ARM64 into AArch64's place
[oota-llvm.git] / test / MC / AArch64 / arm64-aliases.s
1 ; RUN: llvm-mc -triple arm64-apple-darwin -mattr=neon -output-asm-variant=1 -show-encoding < %s | FileCheck %s
2
3 foo:
4 ;-----------------------------------------------------------------------------
5 ; ADD #0 to/from SP/WSP is a MOV
6 ;-----------------------------------------------------------------------------
7   add x1, sp, #0
8 ; CHECK: mov x1, sp
9   add sp, x2, #0
10 ; CHECK: mov sp, x2
11   add w3, wsp, #0
12 ; CHECK: mov w3, wsp
13   add wsp, w4, #0
14 ; CHECK: mov wsp, w4
15   mov x5, sp
16 ; CHECK: mov x5, sp
17   mov sp, x6
18 ; CHECK: mov sp, x6
19   mov w7, wsp
20 ; CHECK: mov w7, wsp
21   mov wsp, w8
22 ; CHECK: mov wsp, w8
23
24 ;-----------------------------------------------------------------------------
25 ; ORR Rd, Rn, Rn is a MOV
26 ;-----------------------------------------------------------------------------
27   orr x2, xzr, x9
28 ; CHECK: mov x2, x9
29   orr w2, wzr, w9
30 ; CHECK: mov w2, w9
31   mov x3, x4
32 ; CHECK: mov x3, x4
33   mov w5, w6
34 ; CHECK: mov w5, w6
35
36 ;-----------------------------------------------------------------------------
37 ; TST Xn, #<imm>
38 ;-----------------------------------------------------------------------------
39         tst w1, #3
40         tst x1, #3
41         tst w1, w2
42         tst x1, x2
43         ands wzr, w1, w2, lsl #2
44         ands xzr, x1, x2, lsl #3
45         tst w3, w7, lsl #31
46         tst x2, x20, asr #0
47
48 ; CHECK: tst    w1, #0x3                ; encoding: [0x3f,0x04,0x00,0x72]
49 ; CHECK: tst    x1, #0x3                ; encoding: [0x3f,0x04,0x40,0xf2]
50 ; CHECK: tst    w1, w2                  ; encoding: [0x3f,0x00,0x02,0x6a]
51 ; CHECK: tst    x1, x2                  ; encoding: [0x3f,0x00,0x02,0xea]
52 ; CHECK: tst    w1, w2, lsl #2          ; encoding: [0x3f,0x08,0x02,0x6a]
53 ; CHECK: tst    x1, x2, lsl #3          ; encoding: [0x3f,0x0c,0x02,0xea]
54 ; CHECK: tst    w3, w7, lsl #31         ; encoding: [0x7f,0x7c,0x07,0x6a]
55 ; CHECK: tst    x2, x20, asr #0         ; encoding: [0x5f,0x00,0x94,0xea]
56
57 ;-----------------------------------------------------------------------------
58 ; ADDS to WZR/XZR is a CMN
59 ;-----------------------------------------------------------------------------
60   cmn w1, #3, lsl #0
61   cmn x2, #4194304
62   cmn w4, w5
63   cmn x6, x7
64   cmn w8, w9, asr #3
65   cmn x2, x3, lsr #4
66   cmn x2, w3, uxtb #1
67   cmn x4, x5, uxtx #1
68
69 ; CHECK: cmn    w1, #3                  ; encoding: [0x3f,0x0c,0x00,0x31]
70 ; CHECK: cmn    x2, #1024, lsl #12      ; encoding: [0x5f,0x00,0x50,0xb1]
71 ; CHECK: cmn    w4, w5                  ; encoding: [0x9f,0x00,0x05,0x2b]
72 ; CHECK: cmn    x6, x7                  ; encoding: [0xdf,0x00,0x07,0xab]
73 ; CHECK: cmn    w8, w9, asr #3          ; encoding: [0x1f,0x0d,0x89,0x2b]
74 ; CHECK: cmn    x2, x3, lsr #4          ; encoding: [0x5f,0x10,0x43,0xab]
75 ; CHECK: cmn    x2, w3, uxtb #1         ; encoding: [0x5f,0x04,0x23,0xab]
76 ; CHECK: cmn    x4, x5, uxtx #1         ; encoding: [0x9f,0x64,0x25,0xab]
77
78
79 ;-----------------------------------------------------------------------------
80 ; SUBS to WZR/XZR is a CMP
81 ;-----------------------------------------------------------------------------
82   cmp w1, #1024, lsl #12
83   cmp x2, #1024
84   cmp w4, w5
85   cmp x6, x7
86   cmp w8, w9, asr #3
87   cmp x2, x3, lsr #4
88   cmp x2, w3, uxth #2
89   cmp x4, x5, uxtx
90   cmp wzr, w1
91   cmp x8, w8, uxtw
92   cmp w9, w8, uxtw
93   cmp wsp, w9, lsl #0
94
95 ; CHECK: cmp    w1, #1024, lsl #12      ; encoding: [0x3f,0x00,0x50,0x71]
96 ; CHECK: cmp    x2, #1024               ; encoding: [0x5f,0x00,0x10,0xf1]
97 ; CHECK: cmp    w4, w5                  ; encoding: [0x9f,0x00,0x05,0x6b]
98 ; CHECK: cmp    x6, x7                  ; encoding: [0xdf,0x00,0x07,0xeb]
99 ; CHECK: cmp    w8, w9, asr #3          ; encoding: [0x1f,0x0d,0x89,0x6b]
100 ; CHECK: cmp    x2, x3, lsr #4          ; encoding: [0x5f,0x10,0x43,0xeb]
101 ; CHECK: cmp    x2, w3, uxth #2         ; encoding: [0x5f,0x28,0x23,0xeb]
102 ; CHECK: cmp    x4, x5, uxtx            ; encoding: [0x9f,0x60,0x25,0xeb]
103 ; CHECK: cmp    wzr, w1                 ; encoding: [0xff,0x03,0x01,0x6b]
104 ; CHECK: cmp    x8, w8, uxtw            ; encoding: [0x1f,0x41,0x28,0xeb]
105 ; CHECK: cmp    w9, w8, uxtw            ; encoding: [0x3f,0x41,0x28,0x6b]
106 ; CHECK: cmp    wsp, w9                 ; encoding: [0xff,0x43,0x29,0x6b]
107
108
109 ;-----------------------------------------------------------------------------
110 ; SUB/SUBS from WZR/XZR is a NEG
111 ;-----------------------------------------------------------------------------
112
113   neg w0, w1
114 ; CHECK: neg w0, w1
115   neg w0, w1, lsl #1
116 ; CHECK: neg w0, w1, lsl #1
117   neg x0, x1
118 ; CHECK: neg x0, x1
119   neg x0, x1, asr #1
120 ; CHECK: neg x0, x1, asr #1
121   negs w0, w1
122 ; CHECK: negs w0, w1
123   negs w0, w1, lsl #1
124 ; CHECK: negs w0, w1, lsl #1
125   negs x0, x1
126 ; CHECK: negs x0, x1
127   negs x0, x1, asr #1
128 ; CHECK: negs x0, x1, asr #1
129
130 ;-----------------------------------------------------------------------------
131 ; MOV aliases
132 ;-----------------------------------------------------------------------------
133
134   mov x0, #281470681743360
135   mov x0, #18446744073709486080
136
137 ; CHECK: movz   x0, #0xffff, lsl #32
138 ; CHECK: movn   x0, #0xffff
139
140   mov w0, #0xffffffff
141   mov w0, #0xffffff00
142   mov wzr, #0xffffffff
143   mov wzr, #0xffffff00
144
145 ; CHECK: movn   w0, #0
146 ; CHECK: movn   w0, #0xff
147 ; CHECK: movn   wzr, #0
148 ; CHECK: movn   wzr, #0xff
149
150 ;-----------------------------------------------------------------------------
151 ; MVN aliases
152 ;-----------------------------------------------------------------------------
153
154         mvn w4, w9
155         mvn x2, x3
156         orn w4, wzr, w9
157
158 ; CHECK: mvn    w4, w9             ; encoding: [0xe4,0x03,0x29,0x2a]
159 ; CHECK: mvn    x2, x3             ; encoding: [0xe2,0x03,0x23,0xaa]
160 ; CHECK: mvn    w4, w9             ; encoding: [0xe4,0x03,0x29,0x2a]
161
162         mvn w4, w9, lsl #1
163         mvn x2, x3, lsl #1
164         orn w4, wzr, w9, lsl #1
165
166 ; CHECK: mvn    w4, w9, lsl #1     ; encoding: [0xe4,0x07,0x29,0x2a]
167 ; CHECK: mvn    x2, x3, lsl #1     ; encoding: [0xe2,0x07,0x23,0xaa]
168 ; CHECK: mvn    w4, w9, lsl #1     ; encoding: [0xe4,0x07,0x29,0x2a]
169
170 ;-----------------------------------------------------------------------------
171 ; Bitfield aliases
172 ;-----------------------------------------------------------------------------
173
174   bfi   w0, w0, #1, #4
175   bfi   x0, x0, #1, #4
176   bfi   w0, w0, #0, #2
177   bfi   x0, x0, #0, #2
178   bfxil w0, w0, #2, #3
179   bfxil x0, x0, #2, #3
180   sbfiz w0, w0, #1, #4
181   sbfiz x0, x0, #1, #4
182   sbfx  w0, w0, #2, #3
183   sbfx  x0, x0, #2, #3
184   ubfiz w0, w0, #1, #4
185   ubfiz x0, x0, #1, #4
186   ubfx  w0, w0, #2, #3
187   ubfx  x0, x0, #2, #3
188
189 ; CHECK: bfi   w0, w0, #1, #4
190 ; CHECK: bfi   x0, x0, #1, #4
191 ; CHECK: bfxil w0, w0, #0, #2
192 ; CHECK: bfxil x0, x0, #0, #2
193 ; CHECK: bfxil w0, w0, #2, #3
194 ; CHECK: bfxil x0, x0, #2, #3
195 ; CHECK: sbfiz w0, w0, #1, #4
196 ; CHECK: sbfiz x0, x0, #1, #4
197 ; CHECK: sbfx  w0, w0, #2, #3
198 ; CHECK: sbfx  x0, x0, #2, #3
199 ; CHECK: ubfiz w0, w0, #1, #4
200 ; CHECK: ubfiz x0, x0, #1, #4
201 ; CHECK: ubfx  w0, w0, #2, #3
202 ; CHECK: ubfx  x0, x0, #2, #3
203
204 ;-----------------------------------------------------------------------------
205 ; Shift (immediate) aliases
206 ;-----------------------------------------------------------------------------
207
208 ; CHECK: asr w1, w3, #13
209 ; CHECK: asr x1, x3, #13
210 ; CHECK: lsl w0, w0, #1
211 ; CHECK: lsl x0, x0, #1
212 ; CHECK: lsr w0, w0, #4
213 ; CHECK: lsr x0, x0, #4
214
215    sbfm w1, w3, #13, #31
216    sbfm x1, x3, #13, #63
217    ubfm w0, w0, #31, #30
218    ubfm x0, x0, #63, #62
219    ubfm w0, w0, #4, #31
220    ubfm x0, x0, #4, #63
221 ; CHECK: ror w1, w3, #5
222 ; CHECK: ror x1, x3, #5
223    ror w1, w3, #5
224    ror x1, x3, #5
225 ; CHECK: lsl w1, wzr, #3
226    lsl w1, wzr, #3
227
228 ;-----------------------------------------------------------------------------
229 ; Sign/Zero extend aliases
230 ;-----------------------------------------------------------------------------
231
232   sxtb  w1, w2
233   sxth  w1, w2
234   uxtb  w1, w2
235   uxth  w1, w2
236
237 ; CHECK: sxtb w1, w2
238 ; CHECK: sxth w1, w2
239 ; CHECK: uxtb w1, w2
240 ; CHECK: uxth w1, w2
241
242   sxtb  x1, w2
243   sxth  x1, w2
244   sxtw  x1, w2
245   uxtb  x1, w2
246   uxth  x1, w2
247   uxtw  x1, w2
248
249 ; CHECK: sxtb x1, w2
250 ; CHECK: sxth x1, w2
251 ; CHECK: sxtw x1, w2
252 ; CHECK: uxtb w1, w2
253 ; CHECK: uxth w1, w2
254 ; CHECK: ubfx x1, x2, #0, #32
255
256 ;-----------------------------------------------------------------------------
257 ; Negate with carry
258 ;-----------------------------------------------------------------------------
259
260   ngc   w1, w2
261   ngc   x1, x2
262   ngcs  w1, w2
263   ngcs  x1, x2
264
265 ; CHECK: ngc  w1, w2
266 ; CHECK: ngc  x1, x2
267 ; CHECK: ngcs w1, w2
268 ; CHECK: ngcs x1, x2
269
270 ;-----------------------------------------------------------------------------
271 ; 6.6.1 Multiply aliases
272 ;-----------------------------------------------------------------------------
273
274   mneg   w1, w2, w3
275   mneg   x1, x2, x3
276   mul    w1, w2, w3
277   mul    x1, x2, x3
278   smnegl x1, w2, w3
279   umnegl x1, w2, w3
280   smull   x1, w2, w3
281   umull   x1, w2, w3
282
283 ; CHECK: mneg w1, w2, w3
284 ; CHECK: mneg x1, x2, x3
285 ; CHECK: mul w1, w2, w3
286 ; CHECK: mul x1, x2, x3
287 ; CHECK: smnegl x1, w2, w3
288 ; CHECK: umnegl x1, w2, w3
289 ; CHECK: smull x1, w2, w3
290 ; CHECK: umull x1, w2, w3
291
292 ;-----------------------------------------------------------------------------
293 ; Conditional select aliases
294 ;-----------------------------------------------------------------------------
295
296   cset   w1, eq
297   cset   x1, eq
298   csetm  w1, ne
299   csetm  x1, ne
300   cinc   w1, w2, lt
301   cinc   x1, x2, lt
302   cinv   w1, w2, mi
303   cinv   x1, x2, mi
304
305 ; CHECK: cset  w1, eq
306 ; CHECK: cset  x1, eq
307 ; CHECK: csetm  w1, ne
308 ; CHECK: csetm  x1, ne
309 ; CHECK: cinc  w1, w2, lt
310 ; CHECK: cinc  x1, x2, lt
311 ; CHECK: cinv  w1, w2, mi
312 ; CHECK: cinv  x1, x2, mi
313
314 ;-----------------------------------------------------------------------------
315 ; SYS aliases
316 ;-----------------------------------------------------------------------------
317
318   sys #0, c7, c1, #0
319 ; CHECK: ic ialluis
320   sys #0, c7, c5, #0
321 ; CHECK: ic iallu
322   sys #3, c7, c5, #1
323 ; CHECK: ic ivau
324
325   sys #3, c7, c4, #1
326 ; CHECK: dc zva
327   sys #0, c7, c6, #1
328 ; CHECK: dc ivac
329   sys #0, c7, c6, #2
330 ; CHECK: dc isw
331   sys #3, c7, c10, #1
332 ; CHECK: dc cvac
333   sys #0, c7, c10, #2
334 ; CHECK: dc csw
335   sys #3, c7, c11, #1
336 ; CHECK: dc cvau
337   sys #3, c7, c14, #1
338 ; CHECK: dc civac
339   sys #0, c7, c14, #2
340 ; CHECK: dc cisw
341
342   sys #0, c7, c8, #0
343 ; CHECK: at s1e1r
344   sys #4, c7, c8, #0
345 ; CHECK: at s1e2r
346   sys #6, c7, c8, #0
347 ; CHECK: at s1e3r
348   sys #0, c7, c8, #1
349 ; CHECK: at s1e1w
350   sys #4, c7, c8, #1
351 ; CHECK: at s1e2w
352   sys #6, c7, c8, #1
353 ; CHECK: at s1e3w
354   sys #0, c7, c8, #2
355 ; CHECK: at s1e0r
356   sys #0, c7, c8, #3
357 ; CHECK: at s1e0w
358   sys #4, c7, c8, #4
359 ; CHECK: at s12e1r
360   sys #4, c7, c8, #5
361 ; CHECK: at s12e1w
362   sys #4, c7, c8, #6
363 ; CHECK: at s12e0r
364   sys #4, c7, c8, #7
365 ; CHECK: at s12e0w
366
367   sys #0, c8, c3, #0
368 ; CHECK: tlbi vmalle1is
369   sys #4, c8, c3, #0
370 ; CHECK: tlbi alle2is
371   sys #6, c8, c3, #0
372 ; CHECK: tlbi alle3is
373   sys #0, c8, c3, #1
374 ; CHECK: tlbi vae1is
375   sys #4, c8, c3, #1
376 ; CHECK: tlbi vae2is
377   sys #6, c8, c3, #1
378 ; CHECK: tlbi vae3is
379   sys #0, c8, c3, #2
380 ; CHECK: tlbi aside1is
381   sys #0, c8, c3, #3
382 ; CHECK: tlbi vaae1is
383   sys #4, c8, c3, #4
384 ; CHECK: tlbi alle1is
385   sys #0, c8, c3, #5
386 ; CHECK: tlbi vale1is
387   sys #0, c8, c3, #7
388 ; CHECK: tlbi vaale1is
389   sys #0, c8, c7, #0
390 ; CHECK: tlbi vmalle1
391   sys #4, c8, c7, #0
392 ; CHECK: tlbi alle2
393   sys #4, c8, c3, #5
394 ; CHECK: tlbi vale2is
395   sys #6, c8, c3, #5
396 ; CHECK: tlbi vale3is
397   sys #6, c8, c7, #0
398 ; CHECK: tlbi alle3
399   sys #0, c8, c7, #1
400 ; CHECK: tlbi vae1
401   sys #4, c8, c7, #1
402 ; CHECK: tlbi vae2
403   sys #6, c8, c7, #1
404 ; CHECK: tlbi vae3
405   sys #0, c8, c7, #2
406 ; CHECK: tlbi aside1
407   sys #0, c8, c7, #3
408 ; CHECK: tlbi vaae1
409   sys #4, c8, c7, #4
410 ; CHECK: tlbi alle1
411   sys #0, c8, c7, #5
412 ; CHECK: tlbi vale1
413   sys #4, c8, c7, #5
414 ; CHECK: tlbi vale2
415   sys #6, c8, c7, #5
416 ; CHECK: tlbi vale3
417   sys #0, c8, c7, #7
418 ; CHECK: tlbi vaale1
419   sys #4, c8, c4, #1
420 ; CHECK: tlbi ipas2e1
421   sys #4, c8, c4, #5
422 ; CHECK: tlbi ipas2le1
423   sys #4, c8, c0, #1
424 ; CHECK: tlbi ipas2e1is
425   sys #4, c8, c0, #5
426 ; CHECK: tlbi ipas2le1is
427   sys #4, c8, c7, #6
428 ; CHECK: tlbi vmalls12e1
429   sys #4, c8, c3, #6
430 ; CHECK: tlbi vmalls12e1is
431
432   ic ialluis
433 ; CHECK: ic ialluis                 ; encoding: [0x1f,0x71,0x08,0xd5]
434   ic iallu
435 ; CHECK: ic iallu                   ; encoding: [0x1f,0x75,0x08,0xd5]
436   ic ivau, x0
437 ; CHECK: ic ivau, x0                ; encoding: [0x20,0x75,0x0b,0xd5]
438
439   dc zva, x0
440 ; CHECK: dc zva, x0                 ; encoding: [0x20,0x74,0x0b,0xd5]
441   dc ivac, x0
442 ; CHECK: dc ivac, x0                ; encoding: [0x20,0x76,0x08,0xd5]
443   dc isw, x0
444 ; CHECK: dc isw, x0                 ; encoding: [0x40,0x76,0x08,0xd5]
445   dc cvac, x0
446 ; CHECK: dc cvac, x0                ; encoding: [0x20,0x7a,0x0b,0xd5]
447   dc csw, x0
448 ; CHECK: dc csw, x0                 ; encoding: [0x40,0x7a,0x08,0xd5]
449   dc cvau, x0
450 ; CHECK: dc cvau, x0                ; encoding: [0x20,0x7b,0x0b,0xd5]
451   dc civac, x0
452 ; CHECK: dc civac, x0               ; encoding: [0x20,0x7e,0x0b,0xd5]
453   dc cisw, x0
454 ; CHECK: dc cisw, x0                ; encoding: [0x40,0x7e,0x08,0xd5]
455
456   at s1e1r, x0
457 ; CHECK: at s1e1r, x0               ; encoding: [0x00,0x78,0x08,0xd5]
458   at s1e2r, x0
459 ; CHECK: at s1e2r, x0               ; encoding: [0x00,0x78,0x0c,0xd5]
460   at s1e3r, x0
461 ; CHECK: at s1e3r, x0               ; encoding: [0x00,0x78,0x0e,0xd5]
462   at s1e1w, x0
463 ; CHECK: at s1e1w, x0               ; encoding: [0x20,0x78,0x08,0xd5]
464   at s1e2w, x0
465 ; CHECK: at s1e2w, x0               ; encoding: [0x20,0x78,0x0c,0xd5]
466   at s1e3w, x0
467 ; CHECK: at s1e3w, x0               ; encoding: [0x20,0x78,0x0e,0xd5]
468   at s1e0r, x0
469 ; CHECK: at s1e0r, x0               ; encoding: [0x40,0x78,0x08,0xd5]
470   at s1e0w, x0
471 ; CHECK: at s1e0w, x0               ; encoding: [0x60,0x78,0x08,0xd5]
472   at s12e1r, x0
473 ; CHECK: at s12e1r, x0              ; encoding: [0x80,0x78,0x0c,0xd5]
474   at s12e1w, x0
475 ; CHECK: at s12e1w, x0              ; encoding: [0xa0,0x78,0x0c,0xd5]
476   at s12e0r, x0
477 ; CHECK: at s12e0r, x0              ; encoding: [0xc0,0x78,0x0c,0xd5]
478   at s12e0w, x0
479 ; CHECK: at s12e0w, x0              ; encoding: [0xe0,0x78,0x0c,0xd5]
480
481   tlbi vmalle1is
482 ; CHECK: tlbi vmalle1is             ; encoding: [0x1f,0x83,0x08,0xd5]
483   tlbi alle2is
484 ; CHECK: tlbi alle2is               ; encoding: [0x1f,0x83,0x0c,0xd5]
485   tlbi alle3is
486 ; CHECK: tlbi alle3is               ; encoding: [0x1f,0x83,0x0e,0xd5]
487   tlbi vae1is, x0
488 ; CHECK: tlbi vae1is, x0            ; encoding: [0x20,0x83,0x08,0xd5]
489   tlbi vae2is, x0
490 ; CHECK: tlbi vae2is, x0            ; encoding: [0x20,0x83,0x0c,0xd5]
491   tlbi vae3is, x0
492 ; CHECK: tlbi vae3is, x0            ; encoding: [0x20,0x83,0x0e,0xd5]
493   tlbi aside1is, x0
494 ; CHECK: tlbi aside1is, x0          ; encoding: [0x40,0x83,0x08,0xd5]
495   tlbi vaae1is, x0
496 ; CHECK: tlbi vaae1is, x0           ; encoding: [0x60,0x83,0x08,0xd5]
497   tlbi alle1is
498 ; CHECK: tlbi alle1is               ; encoding: [0x9f,0x83,0x0c,0xd5]
499   tlbi vale1is, x0
500 ; CHECK: tlbi vale1is, x0           ; encoding: [0xa0,0x83,0x08,0xd5]
501   tlbi vaale1is, x0
502 ; CHECK: tlbi vaale1is, x0          ; encoding: [0xe0,0x83,0x08,0xd5]
503   tlbi vmalle1
504 ; CHECK: tlbi vmalle1               ; encoding: [0x1f,0x87,0x08,0xd5]
505   tlbi alle2
506 ; CHECK: tlbi alle2                 ; encoding: [0x1f,0x87,0x0c,0xd5]
507   tlbi vale2is, x0
508 ; CHECK: tlbi vale2is, x0           ; encoding: [0xa0,0x83,0x0c,0xd5]
509   tlbi vale3is, x0
510 ; CHECK: tlbi vale3is, x0           ; encoding: [0xa0,0x83,0x0e,0xd5]
511   tlbi alle3
512 ; CHECK: tlbi alle3                 ; encoding: [0x1f,0x87,0x0e,0xd5]
513   tlbi vae1, x0
514 ; CHECK: tlbi vae1, x0              ; encoding: [0x20,0x87,0x08,0xd5]
515   tlbi vae2, x0
516 ; CHECK: tlbi vae2, x0              ; encoding: [0x20,0x87,0x0c,0xd5]
517   tlbi vae3, x0
518 ; CHECK: tlbi vae3, x0              ; encoding: [0x20,0x87,0x0e,0xd5]
519   tlbi aside1, x0
520 ; CHECK: tlbi aside1, x0            ; encoding: [0x40,0x87,0x08,0xd5]
521   tlbi vaae1, x0
522 ; CHECK: tlbi vaae1, x0             ; encoding: [0x60,0x87,0x08,0xd5]
523   tlbi alle1
524 ; CHECK: tlbi alle1                 ; encoding: [0x9f,0x87,0x0c,0xd5
525   tlbi vale1, x0
526 ; CHECK: tlbi vale1, x0             ; encoding: [0xa0,0x87,0x08,0xd5]
527   tlbi vale2, x0
528 ; CHECK: tlbi vale2, x0             ; encoding: [0xa0,0x87,0x0c,0xd5]
529   tlbi vale3, x0
530 ; CHECK: tlbi vale3, x0             ; encoding: [0xa0,0x87,0x0e,0xd5]
531   tlbi vaale1, x0
532 ; CHECK: tlbi vaale1, x0            ; encoding: [0xe0,0x87,0x08,0xd5]
533   tlbi ipas2e1, x0
534 ; CHECK: tlbi ipas2e1, x0           ; encoding: [0x20,0x84,0x0c,0xd5]
535   tlbi ipas2le1, x0
536 ; CHECK: tlbi ipas2le1, x0          ; encoding: [0xa0,0x84,0x0c,0xd5]
537   tlbi ipas2e1is, x0
538 ; CHECK: tlbi ipas2e1is, x0         ; encoding: [0x20,0x80,0x0c,0xd5]
539   tlbi ipas2le1is, x0
540 ; CHECK: tlbi ipas2le1is, x0        ; encoding: [0xa0,0x80,0x0c,0xd5]
541   tlbi vmalls12e1
542 ; CHECK: tlbi vmalls12e1            ; encoding: [0xdf,0x87,0x0c,0xd5]
543   tlbi vmalls12e1is
544 ; CHECK: tlbi vmalls12e1is          ; encoding: [0xdf,0x83,0x0c,0xd5]
545
546 ;-----------------------------------------------------------------------------
547 ; 5.8.5 Vector Arithmetic aliases
548 ;-----------------------------------------------------------------------------
549
550   cmls.8b v0, v2, v1
551   cmls.16b v0, v2, v1
552   cmls.4h v0, v2, v1
553   cmls.8h v0, v2, v1
554   cmls.2s v0, v2, v1
555   cmls.4s v0, v2, v1
556   cmls.2d v0, v2, v1
557 ; CHECK: cmhs.8b v0, v1, v2
558 ; CHECK: cmhs.16b v0, v1, v2
559 ; CHECK: cmhs.4h v0, v1, v2
560 ; CHECK: cmhs.8h v0, v1, v2
561 ; CHECK: cmhs.2s v0, v1, v2
562 ; CHECK: cmhs.4s v0, v1, v2
563 ; CHECK: cmhs.2d v0, v1, v2
564
565   cmlo.8b v0, v2, v1
566   cmlo.16b v0, v2, v1
567   cmlo.4h v0, v2, v1
568   cmlo.8h v0, v2, v1
569   cmlo.2s v0, v2, v1
570   cmlo.4s v0, v2, v1
571   cmlo.2d v0, v2, v1
572 ; CHECK: cmhi.8b v0, v1, v2
573 ; CHECK: cmhi.16b v0, v1, v2
574 ; CHECK: cmhi.4h v0, v1, v2
575 ; CHECK: cmhi.8h v0, v1, v2
576 ; CHECK: cmhi.2s v0, v1, v2
577 ; CHECK: cmhi.4s v0, v1, v2
578 ; CHECK: cmhi.2d v0, v1, v2
579
580   cmle.8b v0, v2, v1
581   cmle.16b v0, v2, v1
582   cmle.4h v0, v2, v1
583   cmle.8h  v0, v2, v1
584   cmle.2s v0, v2, v1
585   cmle.4s v0, v2, v1
586   cmle.2d v0, v2, v1
587 ; CHECK: cmge.8b v0, v1, v2
588 ; CHECK: cmge.16b v0, v1, v2
589 ; CHECK: cmge.4h v0, v1, v2
590 ; CHECK: cmge.8h v0, v1, v2
591 ; CHECK: cmge.2s v0, v1, v2
592 ; CHECK: cmge.4s v0, v1, v2
593 ; CHECK: cmge.2d v0, v1, v2
594
595   cmlt.8b v0, v2, v1
596   cmlt.16b v0, v2, v1
597   cmlt.4h v0, v2, v1
598   cmlt.8h  v0, v2, v1
599   cmlt.2s v0, v2, v1
600   cmlt.4s v0, v2, v1
601   cmlt.2d v0, v2, v1
602 ; CHECK: cmgt.8b v0, v1, v2
603 ; CHECK: cmgt.16b v0, v1, v2
604 ; CHECK: cmgt.4h v0, v1, v2
605 ; CHECK: cmgt.8h v0, v1, v2
606 ; CHECK: cmgt.2s v0, v1, v2
607 ; CHECK: cmgt.4s v0, v1, v2
608 ; CHECK: cmgt.2d v0, v1, v2
609
610   fcmle.2s v0, v2, v1
611   fcmle.4s v0, v2, v1
612   fcmle.2d v0, v2, v1
613 ; CHECK: fcmge.2s v0, v1, v2
614 ; CHECK: fcmge.4s v0, v1, v2
615 ; CHECK: fcmge.2d v0, v1, v2
616
617   fcmlt.2s v0, v2, v1
618   fcmlt.4s v0, v2, v1
619   fcmlt.2d v0, v2, v1
620 ; CHECK: fcmgt.2s v0, v1, v2
621 ; CHECK: fcmgt.4s v0, v1, v2
622 ; CHECK: fcmgt.2d v0, v1, v2
623
624   facle.2s v0, v2, v1
625   facle.4s v0, v2, v1
626   facle.2d v0, v2, v1
627 ; CHECK: facge.2s v0, v1, v2
628 ; CHECK: facge.4s v0, v1, v2
629 ; CHECK: facge.2d v0, v1, v2
630
631   faclt.2s v0, v2, v1
632   faclt.4s v0, v2, v1
633   faclt.2d v0, v2, v1
634 ; CHECK: facgt.2s v0, v1, v2
635 ; CHECK: facgt.4s v0, v1, v2
636 ; CHECK: facgt.2d v0, v1, v2
637
638 ;-----------------------------------------------------------------------------
639 ; 5.8.6 Scalar Arithmetic aliases
640 ;-----------------------------------------------------------------------------
641
642   cmls d0, d2, d1
643 ; CHECK: cmhs d0, d1, d2
644
645   cmle d0, d2, d1
646 ; CHECK: cmge d0, d1, d2
647
648   cmlo d0, d2, d1
649 ; CHECK: cmhi d0, d1, d2
650
651   cmlt d0, d2, d1
652 ; CHECK: cmgt d0, d1, d2
653
654   fcmle s0, s2, s1
655   fcmle d0, d2, d1
656 ; CHECK: fcmge s0, s1, s2
657 ; CHECK: fcmge d0, d1, d2
658
659   fcmlt s0, s2, s1
660   fcmlt d0, d2, d1
661 ; CHECK: fcmgt s0, s1, s2
662 ; CHECK: fcmgt d0, d1, d2
663
664   facle s0, s2, s1
665   facle d0, d2, d1
666 ; CHECK: facge s0, s1, s2
667 ; CHECK: facge d0, d1, d2
668
669   faclt s0, s2, s1
670   faclt d0, d2, d1
671 ; CHECK: facgt s0, s1, s2
672 ; CHECK: facgt d0, d1, d2
673
674 ;-----------------------------------------------------------------------------
675 ; 5.8.14 Vector Shift (immediate)
676 ;-----------------------------------------------------------------------------
677   sxtl v1.8h, v2.8b
678 ; CHECK: sshll.8h v1, v2, #0
679   sxtl.8h v1, v2
680 ; CHECK: sshll.8h v1, v2, #0
681
682   sxtl v1.4s, v2.4h
683 ; CHECK: sshll.4s v1, v2, #0
684   sxtl.4s v1, v2
685 ; CHECK: sshll.4s v1, v2, #0
686
687   sxtl v1.2d, v2.2s
688 ; CHECK: sshll.2d v1, v2, #0
689   sxtl.2d v1, v2
690 ; CHECK: sshll.2d v1, v2, #0
691
692   sxtl2 v1.8h, v2.16b
693 ; CHECK: sshll2.8h v1, v2, #0
694   sxtl2.8h v1, v2
695 ; CHECK: sshll2.8h v1, v2, #0
696
697   sxtl2 v1.4s, v2.8h
698 ; CHECK: sshll2.4s v1, v2, #0
699   sxtl2.4s v1, v2
700 ; CHECK: sshll2.4s v1, v2, #0
701
702   sxtl2 v1.2d, v2.4s
703 ; CHECK: sshll2.2d v1, v2, #0
704   sxtl2.2d v1, v2
705 ; CHECK: sshll2.2d v1, v2, #0
706
707   uxtl v1.8h, v2.8b
708 ; CHECK: ushll.8h v1, v2, #0
709   uxtl.8h v1, v2
710 ; CHECK: ushll.8h v1, v2, #0
711
712   uxtl v1.4s, v2.4h
713 ; CHECK: ushll.4s v1, v2, #0
714   uxtl.4s v1, v2
715 ; CHECK: ushll.4s v1, v2, #0
716
717   uxtl v1.2d, v2.2s
718 ; CHECK: ushll.2d v1, v2, #0
719   uxtl.2d v1, v2
720 ; CHECK: ushll.2d v1, v2, #0
721
722   uxtl2 v1.8h, v2.16b
723 ; CHECK: ushll2.8h v1, v2, #0
724   uxtl2.8h v1, v2
725 ; CHECK: ushll2.8h v1, v2, #0
726
727   uxtl2 v1.4s, v2.8h
728 ; CHECK: ushll2.4s v1, v2, #0
729   uxtl2.4s v1, v2
730 ; CHECK: ushll2.4s v1, v2, #0
731
732   uxtl2 v1.2d, v2.4s
733 ; CHECK: ushll2.2d v1, v2, #0
734   uxtl2.2d v1, v2
735 ; CHECK: ushll2.2d v1, v2, #0
736
737
738 ;-----------------------------------------------------------------------------
739 ; MOVI verbose syntax with shift operand omitted.
740 ;-----------------------------------------------------------------------------
741   movi v4.16b, #0x00
742   movi v4.16B, #0x01
743   movi v4.8b, #0x02
744   movi v4.8B, #0x03
745   movi v1.2d, #0x000000000000ff
746   movi v2.2D, #0x000000000000ff
747
748 ; CHECK: movi.16b       v4, #0              ; encoding: [0x04,0xe4,0x00,0x4f]
749 ; CHECK: movi.16b       v4, #0x1              ; encoding: [0x24,0xe4,0x00,0x4f]
750 ; CHECK: movi.8b        v4, #0x2               ; encoding: [0x44,0xe4,0x00,0x0f]
751 ; CHECK: movi.8b        v4, #0x3               ; encoding: [0x64,0xe4,0x00,0x0f]
752 ; CHECK: movi.2d        v1, #0x000000000000ff ; encoding: [0x21,0xe4,0x00,0x6f]
753 ; CHECK: movi.2d        v2, #0x000000000000ff ; encoding: [0x22,0xe4,0x00,0x6f]