1; RUN: llvm-mc -triple arm64-apple-darwin -mattr=neon -output-asm-variant=1 -show-encoding < %s | FileCheck %s
2
3foo:
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]
754