[InstCombine] Make MatchBSwap also match bit reversals
[oota-llvm.git] / test / MC / AArch64 / arm64-advsimd.s
1 ; RUN: llvm-mc -triple arm64-apple-darwin -mattr=crypto,fullfp16 -output-asm-variant=1 -show-encoding < %s | FileCheck %s
2
3 foo:
4
5   abs.8b  v0, v0
6   abs.16b v0, v0
7   abs.4h  v0, v0
8   abs.8h  v0, v0
9   abs.2s  v0, v0
10   abs.4s  v0, v0
11
12 ; CHECK: abs.8b  v0, v0              ; encoding: [0x00,0xb8,0x20,0x0e]
13 ; CHECK: abs.16b v0, v0              ; encoding: [0x00,0xb8,0x20,0x4e]
14 ; CHECK: abs.4h  v0, v0              ; encoding: [0x00,0xb8,0x60,0x0e]
15 ; CHECK: abs.8h  v0, v0              ; encoding: [0x00,0xb8,0x60,0x4e]
16 ; CHECK: abs.2s  v0, v0              ; encoding: [0x00,0xb8,0xa0,0x0e]
17 ; CHECK: abs.4s  v0, v0              ; encoding: [0x00,0xb8,0xa0,0x4e]
18
19   add.8b  v0, v0, v0
20   add.16b v0, v0, v0
21   add.4h  v0, v0, v0
22   add.8h  v0, v0, v0
23   add.2s  v0, v0, v0
24   add.4s  v0, v0, v0
25   add.2d  v0, v0, v0
26
27 ; CHECK: add.8b  v0, v0, v0          ; encoding: [0x00,0x84,0x20,0x0e]
28 ; CHECK: add.16b v0, v0, v0          ; encoding: [0x00,0x84,0x20,0x4e]
29 ; CHECK: add.4h  v0, v0, v0          ; encoding: [0x00,0x84,0x60,0x0e]
30 ; CHECK: add.8h  v0, v0, v0          ; encoding: [0x00,0x84,0x60,0x4e]
31 ; CHECK: add.2s  v0, v0, v0          ; encoding: [0x00,0x84,0xa0,0x0e]
32 ; CHECK: add.4s  v0, v0, v0          ; encoding: [0x00,0x84,0xa0,0x4e]
33 ; CHECK: add.2d  v0, v0, v0          ; encoding: [0x00,0x84,0xe0,0x4e]
34
35   add d1, d2, d3
36
37 ; CHECK: add d1, d2, d3              ; encoding: [0x41,0x84,0xe3,0x5e]
38
39   addhn.8b   v0, v0, v0
40   addhn2.16b v0, v0, v0
41   addhn.4h   v0, v0, v0
42   addhn2.8h  v0, v0, v0
43   addhn.2s   v0, v0, v0
44   addhn2.4s  v0, v0, v0
45
46 ; CHECK: addhn.8b   v0, v0, v0       ; encoding: [0x00,0x40,0x20,0x0e]
47 ; CHECK: addhn2.16b v0, v0, v0       ; encoding: [0x00,0x40,0x20,0x4e]
48 ; CHECK: addhn.4h   v0, v0, v0       ; encoding: [0x00,0x40,0x60,0x0e]
49 ; CHECK: addhn2.8h  v0, v0, v0       ; encoding: [0x00,0x40,0x60,0x4e]
50 ; CHECK: addhn.2s   v0, v0, v0       ; encoding: [0x00,0x40,0xa0,0x0e]
51 ; CHECK: addhn2.4s  v0, v0, v0       ; encoding: [0x00,0x40,0xa0,0x4e]
52
53   addp.8b  v0, v0, v0
54   addp.16b v0, v0, v0
55   addp.4h  v0, v0, v0
56   addp.8h  v0, v0, v0
57   addp.2s  v0, v0, v0
58   addp.4s  v0, v0, v0
59   addp.2d  v0, v0, v0
60
61 ; CHECK: addp.8b   v0, v0, v0        ; encoding: [0x00,0xbc,0x20,0x0e]
62 ; CHECK: addp.16b  v0, v0, v0        ; encoding: [0x00,0xbc,0x20,0x4e]
63 ; CHECK: addp.4h   v0, v0, v0        ; encoding: [0x00,0xbc,0x60,0x0e]
64 ; CHECK: addp.8h   v0, v0, v0        ; encoding: [0x00,0xbc,0x60,0x4e]
65 ; CHECK: addp.2s   v0, v0, v0        ; encoding: [0x00,0xbc,0xa0,0x0e]
66 ; CHECK: addp.4s   v0, v0, v0        ; encoding: [0x00,0xbc,0xa0,0x4e]
67 ; CHECK: addp.2d   v0, v0, v0        ; encoding: [0x00,0xbc,0xe0,0x4e]
68
69   addp.2d  d0, v0
70
71 ; CHECK: addp.2d d0, v0              ; encoding: [0x00,0xb8,0xf1,0x5e]
72
73   addv.8b  b0, v0
74   addv.16b b0, v0
75   addv.4h  h0, v0
76   addv.8h  h0, v0
77   addv.4s  s0, v0
78
79 ; CHECK: addv.8b  b0, v0             ; encoding: [0x00,0xb8,0x31,0x0e]
80 ; CHECK: addv.16b b0, v0             ; encoding: [0x00,0xb8,0x31,0x4e]
81 ; CHECK: addv.4h  h0, v0             ; encoding: [0x00,0xb8,0x71,0x0e]
82 ; CHECK: addv.8h  h0, v0             ; encoding: [0x00,0xb8,0x71,0x4e]
83 ; CHECK: addv.4s  s0, v0             ; encoding: [0x00,0xb8,0xb1,0x4e]
84
85
86 ; INS/DUP
87   dup.2d  v0, x3
88   dup.4s  v0, w3
89   dup.2s  v0, w3
90   dup.8h  v0, w3
91   dup.4h  v0, w3
92   dup.16b v0, w3
93   dup.8b  v0, w3
94
95   dup v1.2d, x3
96   dup v2.4s, w4
97   dup v3.2s, w5
98   dup v4.8h, w6
99   dup v5.4h, w7
100   dup v6.16b, w8
101   dup v7.8b, w9
102
103 ; CHECK: dup.2d  v0, x3              ; encoding: [0x60,0x0c,0x08,0x4e]
104 ; CHECK: dup.4s  v0, w3              ; encoding: [0x60,0x0c,0x04,0x4e]
105 ; CHECK: dup.2s  v0, w3              ; encoding: [0x60,0x0c,0x04,0x0e]
106 ; CHECK: dup.8h  v0, w3              ; encoding: [0x60,0x0c,0x02,0x4e]
107 ; CHECK: dup.4h  v0, w3              ; encoding: [0x60,0x0c,0x02,0x0e]
108 ; CHECK: dup.16b v0, w3              ; encoding: [0x60,0x0c,0x01,0x4e]
109 ; CHECK: dup.8b  v0, w3              ; encoding: [0x60,0x0c,0x01,0x0e]
110
111 ; CHECK: dup.2d v1, x3               ; encoding: [0x61,0x0c,0x08,0x4e]
112 ; CHECK: dup.4s v2, w4               ; encoding: [0x82,0x0c,0x04,0x4e]
113 ; CHECK: dup.2s v3, w5               ; encoding: [0xa3,0x0c,0x04,0x0e]
114 ; CHECK: dup.8h v4, w6               ; encoding: [0xc4,0x0c,0x02,0x4e]
115 ; CHECK: dup.4h v5, w7               ; encoding: [0xe5,0x0c,0x02,0x0e]
116 ; CHECK: dup.16b v6, w8              ; encoding: [0x06,0x0d,0x01,0x4e]
117 ; CHECK: dup.8b v7, w9               ; encoding: [0x27,0x0d,0x01,0x0e]
118
119   dup.2d  v0, v3[1]
120   dup.2s  v0, v3[1]
121   dup.4s  v0, v3[1]
122   dup.4h  v0, v3[1]
123   dup.8h  v0, v3[1]
124   dup.8b  v0, v3[1]
125   dup.16b v0, v3[1]
126
127   dup v7.2d, v9.d[1]
128   dup v6.2s, v8.s[1]
129   dup v5.4s, v7.s[2]
130   dup v4.4h, v6.h[3]
131   dup v3.8h, v5.h[4]
132   dup v2.8b, v4.b[5]
133   dup v1.16b, v3.b[6]
134
135 ; CHECK: dup.2d  v0, v3[1]           ; encoding: [0x60,0x04,0x18,0x4e]
136 ; CHECK: dup.2s  v0, v3[1]           ; encoding: [0x60,0x04,0x0c,0x0e]
137 ; CHECK: dup.4s  v0, v3[1]           ; encoding: [0x60,0x04,0x0c,0x4e]
138 ; CHECK: dup.4h  v0, v3[1]           ; encoding: [0x60,0x04,0x06,0x0e]
139 ; CHECK: dup.8h  v0, v3[1]           ; encoding: [0x60,0x04,0x06,0x4e]
140 ; CHECK: dup.8b  v0, v3[1]           ; encoding: [0x60,0x04,0x03,0x0e]
141 ; CHECK: dup.16b v0, v3[1]           ; encoding: [0x60,0x04,0x03,0x4e]
142
143 ; CHECK: dup.2d  v7, v9[1]            ; encoding: [0x27,0x05,0x18,0x4e]
144 ; CHECK: dup.2s  v6, v8[1]            ; encoding: [0x06,0x05,0x0c,0x0e]
145 ; CHECK: dup.4s  v5, v7[2]            ; encoding: [0xe5,0x04,0x14,0x4e]
146 ; CHECK: dup.4h  v4, v6[3]            ; encoding: [0xc4,0x04,0x0e,0x0e]
147 ; CHECK: dup.8h  v3, v5[4]            ; encoding: [0xa3,0x04,0x12,0x4e]
148 ; CHECK: dup.8b  v2, v4[5]            ; encoding: [0x82,0x04,0x0b,0x0e]
149 ; CHECK: dup.16b v1, v3[6]            ; encoding: [0x61,0x04,0x0d,0x4e]
150
151   dup b3, v4[1]
152   dup h3, v4[1]
153   dup s3, v4[1]
154   dup d3, v4[1]
155   dup b3, v4.b[1]
156   dup h3, v4.h[1]
157   dup s3, v4.s[1]
158   dup d3, v4.d[1]
159
160   mov b3, v4[1]
161   mov h3, v4[1]
162   mov s3, v4[1]
163   mov d3, v4[1]
164   mov b3, v4.b[1]
165   mov h3, v4.h[1]
166   mov s3, v4.s[1]
167   mov d3, v4.d[1]
168
169 ; CHECK: mov b3, v4[1]               ; encoding: [0x83,0x04,0x03,0x5e]
170 ; CHECK: mov h3, v4[1]               ; encoding: [0x83,0x04,0x06,0x5e]
171 ; CHECK: mov s3, v4[1]               ; encoding: [0x83,0x04,0x0c,0x5e]
172 ; CHECK: mov d3, v4[1]               ; encoding: [0x83,0x04,0x18,0x5e]
173 ; CHECK: mov b3, v4[1]               ; encoding: [0x83,0x04,0x03,0x5e]
174 ; CHECK: mov h3, v4[1]               ; encoding: [0x83,0x04,0x06,0x5e]
175 ; CHECK: mov s3, v4[1]               ; encoding: [0x83,0x04,0x0c,0x5e]
176 ; CHECK: mov d3, v4[1]               ; encoding: [0x83,0x04,0x18,0x5e]
177
178 ; CHECK: mov b3, v4[1]               ; encoding: [0x83,0x04,0x03,0x5e]
179 ; CHECK: mov h3, v4[1]               ; encoding: [0x83,0x04,0x06,0x5e]
180 ; CHECK: mov s3, v4[1]               ; encoding: [0x83,0x04,0x0c,0x5e]
181 ; CHECK: mov d3, v4[1]               ; encoding: [0x83,0x04,0x18,0x5e]
182 ; CHECK: mov b3, v4[1]               ; encoding: [0x83,0x04,0x03,0x5e]
183 ; CHECK: mov h3, v4[1]               ; encoding: [0x83,0x04,0x06,0x5e]
184 ; CHECK: mov s3, v4[1]               ; encoding: [0x83,0x04,0x0c,0x5e]
185 ; CHECK: mov d3, v4[1]               ; encoding: [0x83,0x04,0x18,0x5e]
186
187   smov.s x3, v2[2]
188   smov   x3, v2.s[2]
189   umov.s w3, v2[2]
190   umov   w3, v2.s[2]
191   umov.d x3, v2[1]
192   umov   x3, v2.d[1]
193
194 ; CHECK: smov.s  x3, v2[2]           ; encoding: [0x43,0x2c,0x14,0x4e]
195 ; CHECK: smov.s  x3, v2[2]           ; encoding: [0x43,0x2c,0x14,0x4e]
196 ; CHECK: mov.s  w3, v2[2]           ; encoding: [0x43,0x3c,0x14,0x0e]
197 ; CHECK: mov.s  w3, v2[2]           ; encoding: [0x43,0x3c,0x14,0x0e]
198 ; CHECK: mov.d  x3, v2[1]           ; encoding: [0x43,0x3c,0x18,0x4e]
199 ; CHECK: mov.d  x3, v2[1]           ; encoding: [0x43,0x3c,0x18,0x4e]
200
201   ; MOV aliases for UMOV instructions above
202
203   mov.s w2, v3[3]
204   mov   w5, v7.s[2]
205   mov.d x11, v13[1]
206   mov   x17, v19.d[0]
207
208 ; CHECK: mov.s  w2, v3[3]               ; encoding: [0x62,0x3c,0x1c,0x0e]
209 ; CHECK: mov.s  w5, v7[2]               ; encoding: [0xe5,0x3c,0x14,0x0e]
210 ; CHECK: mov.d  x11, v13[1]             ; encoding: [0xab,0x3d,0x18,0x4e]
211 ; CHECK: mov.d  x17, v19[0]             ; encoding: [0x71,0x3e,0x08,0x4e]
212
213   ins.d v2[1], x5
214   ins.s v2[1], w5
215   ins.h v2[1], w5
216   ins.b v2[1], w5
217
218   ins   v2.d[1], x5
219   ins   v2.s[1], w5
220   ins   v2.h[1], w5
221   ins   v2.b[1], w5
222
223 ; CHECK: ins.d v2[1], x5             ; encoding: [0xa2,0x1c,0x18,0x4e]
224 ; CHECK: ins.s v2[1], w5             ; encoding: [0xa2,0x1c,0x0c,0x4e]
225 ; CHECK: ins.h v2[1], w5             ; encoding: [0xa2,0x1c,0x06,0x4e]
226 ; CHECK: ins.b v2[1], w5             ; encoding: [0xa2,0x1c,0x03,0x4e]
227
228 ; CHECK: ins.d v2[1], x5             ; encoding: [0xa2,0x1c,0x18,0x4e]
229 ; CHECK: ins.s v2[1], w5             ; encoding: [0xa2,0x1c,0x0c,0x4e]
230 ; CHECK: ins.h v2[1], w5             ; encoding: [0xa2,0x1c,0x06,0x4e]
231 ; CHECK: ins.b v2[1], w5             ; encoding: [0xa2,0x1c,0x03,0x4e]
232
233   ins.d v2[1], v15[1]
234   ins.s v2[1], v15[1]
235   ins.h v2[1], v15[1]
236   ins.b v2[1], v15[1]
237
238   ins   v2.d[1], v15.d[0]
239   ins   v2.s[3], v15.s[2]
240   ins   v2.h[7], v15.h[3]
241   ins   v2.b[10], v15.b[5]
242
243 ; CHECK: ins.d v2[1], v15[1]         ; encoding: [0xe2,0x45,0x18,0x6e]
244 ; CHECK: ins.s v2[1], v15[1]         ; encoding: [0xe2,0x25,0x0c,0x6e]
245 ; CHECK: ins.h v2[1], v15[1]         ; encoding: [0xe2,0x15,0x06,0x6e]
246 ; CHECK: ins.b v2[1], v15[1]         ; encoding: [0xe2,0x0d,0x03,0x6e]
247
248 ; CHECK: ins.d v2[1], v15[0]         ; encoding: [0xe2,0x05,0x18,0x6e]
249 ; CHECK: ins.s v2[3], v15[2]         ; encoding: [0xe2,0x45,0x1c,0x6e]
250 ; CHECK: ins.h v2[7], v15[3]         ; encoding: [0xe2,0x35,0x1e,0x6e]
251 ; CHECK: ins.b v2[10], v15[5]        ; encoding: [0xe2,0x2d,0x15,0x6e]
252
253 ; MOV aliases for the above INS instructions.
254   mov.d v2[1], x5
255   mov.s v3[1], w6
256   mov.h v4[1], w7
257   mov.b v5[1], w8
258
259   mov   v9.d[1], x2
260   mov   v8.s[1], w3
261   mov   v7.h[1], w4
262   mov   v6.b[1], w5
263
264   mov.d v1[1], v10[1]
265   mov.s v2[1], v11[1]
266   mov.h v7[1], v12[1]
267   mov.b v8[1], v15[1]
268
269   mov   v2.d[1], v15.d[0]
270   mov   v7.s[3], v16.s[2]
271   mov   v8.h[7], v17.h[3]
272   mov   v9.b[10], v18.b[5]
273
274 ; CHECK: ins.d  v2[1], x5               ; encoding: [0xa2,0x1c,0x18,0x4e]
275 ; CHECK: ins.s  v3[1], w6               ; encoding: [0xc3,0x1c,0x0c,0x4e]
276 ; CHECK: ins.h  v4[1], w7               ; encoding: [0xe4,0x1c,0x06,0x4e]
277 ; CHECK: ins.b  v5[1], w8               ; encoding: [0x05,0x1d,0x03,0x4e]
278 ; CHECK: ins.d  v9[1], x2               ; encoding: [0x49,0x1c,0x18,0x4e]
279 ; CHECK: ins.s  v8[1], w3               ; encoding: [0x68,0x1c,0x0c,0x4e]
280 ; CHECK: ins.h  v7[1], w4               ; encoding: [0x87,0x1c,0x06,0x4e]
281 ; CHECK: ins.b  v6[1], w5               ; encoding: [0xa6,0x1c,0x03,0x4e]
282 ; CHECK: ins.d  v1[1], v10[1]           ; encoding: [0x41,0x45,0x18,0x6e]
283 ; CHECK: ins.s  v2[1], v11[1]           ; encoding: [0x62,0x25,0x0c,0x6e]
284 ; CHECK: ins.h  v7[1], v12[1]           ; encoding: [0x87,0x15,0x06,0x6e]
285 ; CHECK: ins.b  v8[1], v15[1]           ; encoding: [0xe8,0x0d,0x03,0x6e]
286 ; CHECK: ins.d  v2[1], v15[0]           ; encoding: [0xe2,0x05,0x18,0x6e]
287 ; CHECK: ins.s  v7[3], v16[2]           ; encoding: [0x07,0x46,0x1c,0x6e]
288 ; CHECK: ins.h  v8[7], v17[3]           ; encoding: [0x28,0x36,0x1e,0x6e]
289 ; CHECK: ins.b  v9[10], v18[5]          ; encoding: [0x49,0x2e,0x15,0x6e]
290
291
292   and.8b  v0, v0, v0
293   and.16b v0, v0, v0
294
295 ; CHECK: and.8b  v0, v0, v0          ; encoding: [0x00,0x1c,0x20,0x0e]
296 ; CHECK: and.16b v0, v0, v0          ; encoding: [0x00,0x1c,0x20,0x4e]
297
298   bic.8b  v0, v0, v0
299
300 ; CHECK: bic.8b  v0, v0, v0          ; encoding: [0x00,0x1c,0x60,0x0e]
301
302   cmeq.8b v0, v0, v0
303   cmge.8b v0, v0, v0
304   cmgt.8b v0, v0, v0
305   cmhi.8b v0, v0, v0
306   cmhs.8b v0, v0, v0
307   cmtst.8b v0, v0, v0
308   fabd.2s v0, v0, v0
309   facge.2s  v0, v0, v0
310   facgt.2s  v0, v0, v0
311   faddp.2s v0, v0, v0
312   fadd.2s v0, v0, v0
313   fcmeq.2s  v0, v0, v0
314   fcmge.2s  v0, v0, v0
315   fcmgt.2s  v0, v0, v0
316   fdiv.2s v0, v0, v0
317   fmaxnmp.2s v0, v0, v0
318   fmaxnm.2s v0, v0, v0
319   fmaxp.2s v0, v0, v0
320   fmax.2s v0, v0, v0
321   fminnmp.2s v0, v0, v0
322   fminnm.2s v0, v0, v0
323   fminp.2s v0, v0, v0
324   fmin.2s v0, v0, v0
325   fmla.2s v0, v0, v0
326   fmls.2s v0, v0, v0
327   fmulx.2s v0, v0, v0
328   fmul.2s v0, v0, v0
329   fmulx d2, d3, d1
330   fmulx s2, s3, s1
331   frecps.2s v0, v0, v0
332   frsqrts.2s v0, v0, v0
333   fsub.2s v0, v0, v0
334   mla.8b v0, v0, v0
335   mls.8b v0, v0, v0
336   mul.8b v0, v0, v0
337   pmul.8b v0, v0, v0
338   saba.8b v0, v0, v0
339   sabd.8b v0, v0, v0
340   shadd.8b v0, v0, v0
341   shsub.8b v0, v0, v0
342   smaxp.8b v0, v0, v0
343   smax.8b v0, v0, v0
344   sminp.8b v0, v0, v0
345   smin.8b v0, v0, v0
346   sqadd.8b v0, v0, v0
347   sqdmulh.4h v0, v0, v0
348   sqrdmulh.4h v0, v0, v0
349   sqrshl.8b v0, v0, v0
350   sqshl.8b v0, v0, v0
351   sqsub.8b v0, v0, v0
352   srhadd.8b v0, v0, v0
353   srshl.8b v0, v0, v0
354   sshl.8b v0, v0, v0
355   sub.8b v0, v0, v0
356   uaba.8b v0, v0, v0
357   uabd.8b v0, v0, v0
358   uhadd.8b v0, v0, v0
359   uhsub.8b v0, v0, v0
360   umaxp.8b v0, v0, v0
361   umax.8b v0, v0, v0
362   uminp.8b v0, v0, v0
363   umin.8b v0, v0, v0
364   uqadd.8b v0, v0, v0
365   uqrshl.8b v0, v0, v0
366   uqshl.8b v0, v0, v0
367   uqsub.8b v0, v0, v0
368   urhadd.8b v0, v0, v0
369   urshl.8b v0, v0, v0
370   ushl.8b v0, v0, v0
371
372 ; CHECK: cmeq.8b        v0, v0, v0              ; encoding: [0x00,0x8c,0x20,0x2e]
373 ; CHECK: cmge.8b        v0, v0, v0              ; encoding: [0x00,0x3c,0x20,0x0e]
374 ; CHECK: cmgt.8b        v0, v0, v0              ; encoding: [0x00,0x34,0x20,0x0e]
375 ; CHECK: cmhi.8b        v0, v0, v0              ; encoding: [0x00,0x34,0x20,0x2e]
376 ; CHECK: cmhs.8b        v0, v0, v0              ; encoding: [0x00,0x3c,0x20,0x2e]
377 ; CHECK: cmtst.8b       v0, v0, v0      ; encoding: [0x00,0x8c,0x20,0x0e]
378 ; CHECK: fabd.2s        v0, v0, v0              ; encoding: [0x00,0xd4,0xa0,0x2e]
379 ; CHECK: facge.2s       v0, v0, v0      ; encoding: [0x00,0xec,0x20,0x2e]
380 ; CHECK: facgt.2s       v0, v0, v0      ; encoding: [0x00,0xec,0xa0,0x2e]
381 ; CHECK: faddp.2s       v0, v0, v0      ; encoding: [0x00,0xd4,0x20,0x2e]
382 ; CHECK: fadd.2s        v0, v0, v0              ; encoding: [0x00,0xd4,0x20,0x0e]
383 ; CHECK: fcmeq.2s       v0, v0, v0      ; encoding: [0x00,0xe4,0x20,0x0e]
384 ; CHECK: fcmge.2s       v0, v0, v0      ; encoding: [0x00,0xe4,0x20,0x2e]
385 ; CHECK: fcmgt.2s       v0, v0, v0      ; encoding: [0x00,0xe4,0xa0,0x2e]
386 ; CHECK: fdiv.2s        v0, v0, v0              ; encoding: [0x00,0xfc,0x20,0x2e]
387 ; CHECK: fmaxnmp.2s     v0, v0, v0      ; encoding: [0x00,0xc4,0x20,0x2e]
388 ; CHECK: fmaxnm.2s      v0, v0, v0      ; encoding: [0x00,0xc4,0x20,0x0e]
389 ; CHECK: fmaxp.2s       v0, v0, v0      ; encoding: [0x00,0xf4,0x20,0x2e]
390 ; CHECK: fmax.2s        v0, v0, v0              ; encoding: [0x00,0xf4,0x20,0x0e]
391 ; CHECK: fminnmp.2s     v0, v0, v0      ; encoding: [0x00,0xc4,0xa0,0x2e]
392 ; CHECK: fminnm.2s      v0, v0, v0      ; encoding: [0x00,0xc4,0xa0,0x0e]
393 ; CHECK: fminp.2s       v0, v0, v0      ; encoding: [0x00,0xf4,0xa0,0x2e]
394 ; CHECK: fmin.2s        v0, v0, v0              ; encoding: [0x00,0xf4,0xa0,0x0e]
395 ; CHECK: fmla.2s        v0, v0, v0              ; encoding: [0x00,0xcc,0x20,0x0e]
396 ; CHECK: fmls.2s        v0, v0, v0              ; encoding: [0x00,0xcc,0xa0,0x0e]
397 ; CHECK: fmulx.2s       v0, v0, v0      ; encoding: [0x00,0xdc,0x20,0x0e]
398
399 ; CHECK: fmul.2s        v0, v0, v0              ; encoding: [0x00,0xdc,0x20,0x2e]
400 ; CHECK: fmulx  d2, d3, d1              ; encoding: [0x62,0xdc,0x61,0x5e]
401 ; CHECK: fmulx  s2, s3, s1              ; encoding: [0x62,0xdc,0x21,0x5e]
402 ; CHECK: frecps.2s      v0, v0, v0      ; encoding: [0x00,0xfc,0x20,0x0e]
403 ; CHECK: frsqrts.2s     v0, v0, v0      ; encoding: [0x00,0xfc,0xa0,0x0e]
404 ; CHECK: fsub.2s        v0, v0, v0              ; encoding: [0x00,0xd4,0xa0,0x0e]
405 ; CHECK: mla.8b v0, v0, v0              ; encoding: [0x00,0x94,0x20,0x0e]
406 ; CHECK: mls.8b v0, v0, v0              ; encoding: [0x00,0x94,0x20,0x2e]
407 ; CHECK: mul.8b v0, v0, v0              ; encoding: [0x00,0x9c,0x20,0x0e]
408 ; CHECK: pmul.8b        v0, v0, v0              ; encoding: [0x00,0x9c,0x20,0x2e]
409 ; CHECK: saba.8b        v0, v0, v0              ; encoding: [0x00,0x7c,0x20,0x0e]
410 ; CHECK: sabd.8b        v0, v0, v0              ; encoding: [0x00,0x74,0x20,0x0e]
411 ; CHECK: shadd.8b       v0, v0, v0      ; encoding: [0x00,0x04,0x20,0x0e]
412 ; CHECK: shsub.8b       v0, v0, v0      ; encoding: [0x00,0x24,0x20,0x0e]
413 ; CHECK: smaxp.8b       v0, v0, v0      ; encoding: [0x00,0xa4,0x20,0x0e]
414 ; CHECK: smax.8b        v0, v0, v0              ; encoding: [0x00,0x64,0x20,0x0e]
415 ; CHECK: sminp.8b       v0, v0, v0      ; encoding: [0x00,0xac,0x20,0x0e]
416 ; CHECK: smin.8b        v0, v0, v0              ; encoding: [0x00,0x6c,0x20,0x0e]
417 ; CHECK: sqadd.8b       v0, v0, v0      ; encoding: [0x00,0x0c,0x20,0x0e]
418 ; CHECK: sqdmulh.4h v0, v0, v0 ; encoding: [0x00,0xb4,0x60,0x0e]
419 ; CHECK: sqrdmulh.4h v0, v0, v0 ; encoding: [0x00,0xb4,0x60,0x2e]
420 ; CHECK: sqrshl.8b      v0, v0, v0      ; encoding: [0x00,0x5c,0x20,0x0e]
421 ; CHECK: sqshl.8b       v0, v0, v0      ; encoding: [0x00,0x4c,0x20,0x0e]
422 ; CHECK: sqsub.8b       v0, v0, v0      ; encoding: [0x00,0x2c,0x20,0x0e]
423 ; CHECK: srhadd.8b      v0, v0, v0      ; encoding: [0x00,0x14,0x20,0x0e]
424 ; CHECK: srshl.8b       v0, v0, v0      ; encoding: [0x00,0x54,0x20,0x0e]
425 ; CHECK: sshl.8b        v0, v0, v0              ; encoding: [0x00,0x44,0x20,0x0e]
426 ; CHECK: sub.8b v0, v0, v0              ; encoding: [0x00,0x84,0x20,0x2e]
427 ; CHECK: uaba.8b        v0, v0, v0              ; encoding: [0x00,0x7c,0x20,0x2e]
428 ; CHECK: uabd.8b        v0, v0, v0              ; encoding: [0x00,0x74,0x20,0x2e]
429 ; CHECK: uhadd.8b       v0, v0, v0      ; encoding: [0x00,0x04,0x20,0x2e]
430 ; CHECK: uhsub.8b       v0, v0, v0      ; encoding: [0x00,0x24,0x20,0x2e]
431 ; CHECK: umaxp.8b       v0, v0, v0      ; encoding: [0x00,0xa4,0x20,0x2e]
432 ; CHECK: umax.8b        v0, v0, v0              ; encoding: [0x00,0x64,0x20,0x2e]
433 ; CHECK: uminp.8b       v0, v0, v0      ; encoding: [0x00,0xac,0x20,0x2e]
434 ; CHECK: umin.8b        v0, v0, v0              ; encoding: [0x00,0x6c,0x20,0x2e]
435 ; CHECK: uqadd.8b       v0, v0, v0      ; encoding: [0x00,0x0c,0x20,0x2e]
436 ; CHECK: uqrshl.8b      v0, v0, v0      ; encoding: [0x00,0x5c,0x20,0x2e]
437 ; CHECK: uqshl.8b       v0, v0, v0      ; encoding: [0x00,0x4c,0x20,0x2e]
438 ; CHECK: uqsub.8b       v0, v0, v0      ; encoding: [0x00,0x2c,0x20,0x2e]
439 ; CHECK: urhadd.8b      v0, v0, v0      ; encoding: [0x00,0x14,0x20,0x2e]
440 ; CHECK: urshl.8b       v0, v0, v0      ; encoding: [0x00,0x54,0x20,0x2e]
441 ; CHECK: ushl.8b        v0, v0, v0              ; encoding: [0x00,0x44,0x20,0x2e]
442
443   fabd.4h v0, v0, v0
444   facge.4h  v0, v0, v0
445   facgt.4h  v0, v0, v0
446   faddp.4h v0, v0, v0
447   fadd.4h v0, v0, v0
448   fcmeq.4h  v0, v0, v0
449   fcmge.4h  v0, v0, v0
450   fcmgt.4h  v0, v0, v0
451   fdiv.4h v0, v0, v0
452   fmaxnmp.4h v0, v0, v0
453   fmaxnm.4h v0, v0, v0
454   fmaxp.4h v0, v0, v0
455   fmax.4h v0, v0, v0
456   fminnmp.4h v0, v0, v0
457   fminnm.4h v0, v0, v0
458   fminp.4h v0, v0, v0
459   fmin.4h v0, v0, v0
460   fmla.4h v0, v0, v0
461   fmls.4h v0, v0, v0
462   fmulx.4h v0, v0, v0
463   fmul.4h v0, v0, v0
464   frecps.4h v0, v0, v0
465   frsqrts.4h v0, v0, v0
466   fsub.4h v0, v0, v0
467
468 ; CHECK: fabd.4h    v0, v0, v0     ; encoding: [0x00,0x14,0xc0,0x2e]
469 ; CHECK: facge.4h   v0, v0, v0     ; encoding: [0x00,0x2c,0x40,0x2e]
470 ; CHECK: facgt.4h   v0, v0, v0     ; encoding: [0x00,0x2c,0xc0,0x2e]
471 ; CHECK: faddp.4h   v0, v0, v0     ; encoding: [0x00,0x14,0x40,0x2e]
472 ; CHECK: fadd.4h    v0, v0, v0     ; encoding: [0x00,0x14,0x40,0x0e]
473 ; CHECK: fcmeq.4h   v0, v0, v0     ; encoding: [0x00,0x24,0x40,0x0e]
474 ; CHECK: fcmge.4h   v0, v0, v0     ; encoding: [0x00,0x24,0x40,0x2e]
475 ; CHECK: fcmgt.4h   v0, v0, v0     ; encoding: [0x00,0x24,0xc0,0x2e]
476 ; CHECK: fdiv.4h    v0, v0, v0     ; encoding: [0x00,0x3c,0x40,0x2e]
477 ; CHECK: fmaxnmp.4h v0, v0, v0     ; encoding: [0x00,0x04,0x40,0x2e]
478 ; CHECK: fmaxnm.4h  v0, v0, v0     ; encoding: [0x00,0x04,0x40,0x0e]
479 ; CHECK: fmaxp.4h   v0, v0, v0     ; encoding: [0x00,0x34,0x40,0x2e]
480 ; CHECK: fmax.4h    v0, v0, v0     ; encoding: [0x00,0x34,0x40,0x0e]
481 ; CHECK: fminnmp.4h v0, v0, v0     ; encoding: [0x00,0x04,0xc0,0x2e]
482 ; CHECK: fminnm.4h  v0, v0, v0     ; encoding: [0x00,0x04,0xc0,0x0e]
483 ; CHECK: fminp.4h   v0, v0, v0     ; encoding: [0x00,0x34,0xc0,0x2e]
484 ; CHECK: fmin.4h    v0, v0, v0     ; encoding: [0x00,0x34,0xc0,0x0e]
485 ; CHECK: fmla.4h    v0, v0, v0     ; encoding: [0x00,0x0c,0x40,0x0e]
486 ; CHECK: fmls.4h    v0, v0, v0     ; encoding: [0x00,0x0c,0xc0,0x0e]
487 ; CHECK: fmulx.4h   v0, v0, v0     ; encoding: [0x00,0x1c,0x40,0x0e]
488 ; CHECK: fmul.4h    v0, v0, v0     ; encoding: [0x00,0x1c,0x40,0x2e]
489 ; CHECK: frecps.4h  v0, v0, v0     ; encoding: [0x00,0x3c,0x40,0x0e]
490 ; CHECK: frsqrts.4h v0, v0, v0     ; encoding: [0x00,0x3c,0xc0,0x0e]
491 ; CHECK: fsub.4h    v0, v0, v0     ; encoding: [0x00,0x14,0xc0,0x0e]
492
493   fabd.8h v0, v0, v0
494   facge.8h  v0, v0, v0
495   facgt.8h  v0, v0, v0
496   faddp.8h v0, v0, v0
497   fadd.8h v0, v0, v0
498   fcmeq.8h  v0, v0, v0
499   fcmge.8h  v0, v0, v0
500   fcmgt.8h  v0, v0, v0
501   fdiv.8h v0, v0, v0
502   fmaxnmp.8h v0, v0, v0
503   fmaxnm.8h v0, v0, v0
504   fmaxp.8h v0, v0, v0
505   fmax.8h v0, v0, v0
506   fminnmp.8h v0, v0, v0
507   fminnm.8h v0, v0, v0
508   fminp.8h v0, v0, v0
509   fmin.8h v0, v0, v0
510   fmla.8h v0, v0, v0
511   fmls.8h v0, v0, v0
512   fmulx.8h v0, v0, v0
513   fmul.8h v0, v0, v0
514   frecps.8h v0, v0, v0
515   frsqrts.8h v0, v0, v0
516   fsub.8h v0, v0, v0
517
518 ; CHECK: fabd.8h v0, v0, v0              ; encoding: [0x00,0x14,0xc0,0x6e]
519 ; CHECK: facge.8h        v0, v0, v0      ; encoding: [0x00,0x2c,0x40,0x6e]
520 ; CHECK: facgt.8h        v0, v0, v0      ; encoding: [0x00,0x2c,0xc0,0x6e]
521 ; CHECK: faddp.8h        v0, v0, v0      ; encoding: [0x00,0x14,0x40,0x6e]
522 ; CHECK: fadd.8h v0, v0, v0              ; encoding: [0x00,0x14,0x40,0x4e]
523 ; CHECK: fcmeq.8h        v0, v0, v0      ; encoding: [0x00,0x24,0x40,0x4e]
524 ; CHECK: fcmge.8h        v0, v0, v0      ; encoding: [0x00,0x24,0x40,0x6e]
525 ; CHECK: fcmgt.8h        v0, v0, v0      ; encoding: [0x00,0x24,0xc0,0x6e]
526 ; CHECK: fdiv.8h v0, v0, v0              ; encoding: [0x00,0x3c,0x40,0x6e]
527 ; CHECK: fmaxnmp.8h      v0, v0, v0      ; encoding: [0x00,0x04,0x40,0x6e]
528 ; CHECK: fmaxnm.8h       v0, v0, v0      ; encoding: [0x00,0x04,0x40,0x4e]
529 ; CHECK: fmaxp.8h        v0, v0, v0      ; encoding: [0x00,0x34,0x40,0x6e]
530 ; CHECK: fmax.8h v0, v0, v0              ; encoding: [0x00,0x34,0x40,0x4e]
531 ; CHECK: fminnmp.8h      v0, v0, v0      ; encoding: [0x00,0x04,0xc0,0x6e]
532 ; CHECK: fminnm.8h       v0, v0, v0      ; encoding: [0x00,0x04,0xc0,0x4e]
533 ; CHECK: fminp.8h        v0, v0, v0      ; encoding: [0x00,0x34,0xc0,0x6e]
534 ; CHECK: fmin.8h v0, v0, v0              ; encoding: [0x00,0x34,0xc0,0x4e]
535 ; CHECK: fmla.8h v0, v0, v0              ; encoding: [0x00,0x0c,0x40,0x4e]
536 ; CHECK: fmls.8h v0, v0, v0              ; encoding: [0x00,0x0c,0xc0,0x4e]
537 ; CHECK: fmulx.8h        v0, v0, v0      ; encoding: [0x00,0x1c,0x40,0x4e]
538 ; CHECK: fmul.8h v0, v0, v0              ; encoding: [0x00,0x1c,0x40,0x6e]
539 ; CHECK: frecps.8h       v0, v0, v0      ; encoding: [0x00,0x3c,0x40,0x4e]
540 ; CHECK: frsqrts.8h      v0, v0, v0      ; encoding: [0x00,0x3c,0xc0,0x4e]
541 ; CHECK: fsub.8h v0, v0, v0              ; encoding: [0x00,0x14,0xc0,0x4e]
542
543   bif.8b v0, v0, v0
544   bit.8b v0, v0, v0
545   bsl.8b v0, v0, v0
546   eor.8b v0, v0, v0
547   orn.8b v0, v0, v0
548   orr.8b v0, v0, v1
549
550 ; CHECK: bif.8b v0, v0, v0              ; encoding: [0x00,0x1c,0xe0,0x2e]
551 ; CHECK: bit.8b v0, v0, v0              ; encoding: [0x00,0x1c,0xa0,0x2e]
552 ; CHECK: bsl.8b v0, v0, v0              ; encoding: [0x00,0x1c,0x60,0x2e]
553 ; CHECK: eor.8b v0, v0, v0              ; encoding: [0x00,0x1c,0x20,0x2e]
554 ; CHECK: orn.8b v0, v0, v0              ; encoding: [0x00,0x1c,0xe0,0x0e]
555 ; CHECK: orr.8b v0, v0, v1              ; encoding: [0x00,0x1c,0xa1,0x0e]
556
557   sadalp.4h   v0, v0
558   sadalp.8h  v0, v0
559   sadalp.2s   v0, v0
560   sadalp.4s   v0, v0
561   sadalp.1d   v0, v0
562   sadalp.2d   v0, v0
563
564 ; CHECK: sadalp.4h      v0, v0          ; encoding: [0x00,0x68,0x20,0x0e]
565 ; CHECK: sadalp.8h      v0, v0          ; encoding: [0x00,0x68,0x20,0x4e]
566 ; CHECK: sadalp.2s      v0, v0          ; encoding: [0x00,0x68,0x60,0x0e]
567 ; CHECK: sadalp.4s      v0, v0          ; encoding: [0x00,0x68,0x60,0x4e]
568 ; CHECK: sadalp.1d      v0, v0          ; encoding: [0x00,0x68,0xa0,0x0e]
569 ; CHECK: sadalp.2d      v0, v0          ; encoding: [0x00,0x68,0xa0,0x4e]
570
571   cls.8b      v0, v0
572   clz.8b      v0, v0
573   cnt.8b      v0, v0
574   fabs.2s     v0, v0
575   fneg.2s     v0, v0
576   frecpe.2s   v0, v0
577   frinta.2s   v0, v0
578   frintx.2s   v0, v0
579   frinti.2s   v0, v0
580   frintm.2s   v0, v0
581   frintn.2s   v0, v0
582   frintp.2s   v0, v0
583   frintz.2s   v0, v0
584   frsqrte.2s  v0, v0
585   fsqrt.2s    v0, v0
586   neg.8b      v0, v0
587   not.8b      v0, v0
588   rbit.8b     v0, v0
589   rev16.8b    v0, v0
590   rev32.8b    v0, v0
591   rev64.8b    v0, v0
592   sadalp.4h   v0, v0
593   saddlp.4h       v0, v0
594   scvtf.2s    v0, v0
595   sqabs.8b    v0, v0
596   sqneg.8b    v0, v0
597   sqxtn.8b    v0, v0
598   sqxtun.8b   v0, v0
599   suqadd.8b   v0, v0
600   uadalp.4h   v0, v0
601   uaddlp.4h   v0, v0
602   ucvtf.2s    v0, v0
603   uqxtn.8b    v0, v0
604   urecpe.2s   v0, v0
605   ursqrte.2s  v0, v0
606   usqadd.8b   v0, v0
607   xtn.8b      v0, v0
608   shll.8h v1, v2, #8
609   shll.4s v3, v4, #16
610   shll.2d v5, v6, #32
611   shll2.8h v7, v8, #8
612   shll2.4s v9, v10, #16
613   shll2.2d v11, v12, #32
614   shll v1.8h, v2.8b, #8
615   shll v1.4s, v2.4h, #16
616   shll v1.2d, v2.2s, #32
617   shll2 v1.8h, v2.16b, #8
618   shll2 v1.4s, v2.8h, #16
619   shll2 v1.2d, v2.4s, #32
620
621 ; CHECK: cls.8b v0, v0                  ; encoding: [0x00,0x48,0x20,0x0e]
622 ; CHECK: clz.8b v0, v0                  ; encoding: [0x00,0x48,0x20,0x2e]
623 ; CHECK: cnt.8b v0, v0                  ; encoding: [0x00,0x58,0x20,0x0e]
624 ; CHECK: fabs.2s        v0, v0                  ; encoding: [0x00,0xf8,0xa0,0x0e]
625 ; CHECK: fneg.2s        v0, v0                  ; encoding: [0x00,0xf8,0xa0,0x2e]
626 ; CHECK: frecpe.2s      v0, v0          ; encoding: [0x00,0xd8,0xa1,0x0e]
627 ; CHECK: frinta.2s      v0, v0          ; encoding: [0x00,0x88,0x21,0x2e]
628 ; CHECK: frintx.2s      v0, v0          ; encoding: [0x00,0x98,0x21,0x2e]
629 ; CHECK: frinti.2s      v0, v0          ; encoding: [0x00,0x98,0xa1,0x2e]
630 ; CHECK: frintm.2s      v0, v0          ; encoding: [0x00,0x98,0x21,0x0e]
631 ; CHECK: frintn.2s      v0, v0          ; encoding: [0x00,0x88,0x21,0x0e]
632 ; CHECK: frintp.2s      v0, v0          ; encoding: [0x00,0x88,0xa1,0x0e]
633 ; CHECK: frintz.2s      v0, v0          ; encoding: [0x00,0x98,0xa1,0x0e]
634 ; CHECK: frsqrte.2s     v0, v0          ; encoding: [0x00,0xd8,0xa1,0x2e]
635 ; CHECK: fsqrt.2s       v0, v0          ; encoding: [0x00,0xf8,0xa1,0x2e]
636 ; CHECK: neg.8b v0, v0                  ; encoding: [0x00,0xb8,0x20,0x2e]
637 ; CHECK: mvn.8b v0, v0                  ; encoding: [0x00,0x58,0x20,0x2e]
638 ; CHECK: rbit.8b        v0, v0                  ; encoding: [0x00,0x58,0x60,0x2e]
639 ; CHECK: rev16.8b       v0, v0          ; encoding: [0x00,0x18,0x20,0x0e]
640 ; CHECK: rev32.8b       v0, v0          ; encoding: [0x00,0x08,0x20,0x2e]
641 ; CHECK: rev64.8b       v0, v0          ; encoding: [0x00,0x08,0x20,0x0e]
642 ; CHECK: sadalp.4h      v0, v0          ; encoding: [0x00,0x68,0x20,0x0e]
643 ; CHECK: saddlp.4h      v0, v0          ; encoding: [0x00,0x28,0x20,0x0e]
644 ; CHECK: scvtf.2s       v0, v0          ; encoding: [0x00,0xd8,0x21,0x0e]
645 ; CHECK: sqabs.8b       v0, v0          ; encoding: [0x00,0x78,0x20,0x0e]
646 ; CHECK: sqneg.8b       v0, v0          ; encoding: [0x00,0x78,0x20,0x2e]
647 ; CHECK: sqxtn.8b       v0, v0          ; encoding: [0x00,0x48,0x21,0x0e]
648 ; CHECK: sqxtun.8b      v0, v0          ; encoding: [0x00,0x28,0x21,0x2e]
649 ; CHECK: suqadd.8b      v0, v0          ; encoding: [0x00,0x38,0x20,0x0e]
650 ; CHECK: uadalp.4h      v0, v0          ; encoding: [0x00,0x68,0x20,0x2e]
651 ; CHECK: uaddlp.4h      v0, v0          ; encoding: [0x00,0x28,0x20,0x2e]
652 ; CHECK: ucvtf.2s       v0, v0          ; encoding: [0x00,0xd8,0x21,0x2e]
653 ; CHECK: uqxtn.8b       v0, v0          ; encoding: [0x00,0x48,0x21,0x2e]
654 ; CHECK: urecpe.2s      v0, v0          ; encoding: [0x00,0xc8,0xa1,0x0e]
655 ; CHECK: ursqrte.2s     v0, v0          ; encoding: [0x00,0xc8,0xa1,0x2e]
656 ; CHECK: usqadd.8b      v0, v0          ; encoding: [0x00,0x38,0x20,0x2e]
657 ; CHECK: xtn.8b v0, v0                  ; encoding: [0x00,0x28,0x21,0x0e]
658 ; CHECK: shll.8h        v1, v2, #8      ; encoding: [0x41,0x38,0x21,0x2e]
659 ; CHECK: shll.4s        v3, v4, #16     ; encoding: [0x83,0x38,0x61,0x2e]
660 ; CHECK: shll.2d        v5, v6, #32     ; encoding: [0xc5,0x38,0xa1,0x2e]
661 ; CHECK: shll2.8h       v7, v8, #8      ; encoding: [0x07,0x39,0x21,0x6e]
662 ; CHECK: shll2.4s       v9, v10, #16    ; encoding: [0x49,0x39,0x61,0x6e]
663 ; CHECK: shll2.2d       v11, v12, #32   ; encoding: [0x8b,0x39,0xa1,0x6e]
664 ; CHECK: shll.8h        v1, v2, #8      ; encoding: [0x41,0x38,0x21,0x2e]
665 ; CHECK: shll.4s        v1, v2, #16     ; encoding: [0x41,0x38,0x61,0x2e]
666 ; CHECK: shll.2d        v1, v2, #32     ; encoding: [0x41,0x38,0xa1,0x2e]
667 ; CHECK: shll2.8h       v1, v2, #8      ; encoding: [0x41,0x38,0x21,0x6e]
668 ; CHECK: shll2.4s       v1, v2, #16     ; encoding: [0x41,0x38,0x61,0x6e]
669 ; CHECK: shll2.2d       v1, v2, #32     ; encoding: [0x41,0x38,0xa1,0x6e]
670
671   fabs.4h     v0, v0
672   fneg.4h     v0, v0
673   frecpe.4h   v0, v0
674   frinta.4h   v0, v0
675   frintx.4h   v0, v0
676   frinti.4h   v0, v0
677   frintm.4h   v0, v0
678   frintn.4h   v0, v0
679   frintp.4h   v0, v0
680   frintz.4h   v0, v0
681   frsqrte.4h  v0, v0
682   fsqrt.4h    v0, v0
683
684 ; CHECK: fabs.4h v0, v0                  ; encoding: [0x00,0xf8,0xf8,0x0e]
685 ; CHECK: fneg.4h v0, v0                  ; encoding: [0x00,0xf8,0xf8,0x2e]
686 ; CHECK: frecpe.4h       v0, v0          ; encoding: [0x00,0xd8,0xf9,0x0e]
687 ; CHECK: frinta.4h       v0, v0          ; encoding: [0x00,0x88,0x79,0x2e]
688 ; CHECK: frintx.4h       v0, v0          ; encoding: [0x00,0x98,0x79,0x2e]
689 ; CHECK: frinti.4h       v0, v0          ; encoding: [0x00,0x98,0xf9,0x2e]
690 ; CHECK: frintm.4h       v0, v0          ; encoding: [0x00,0x98,0x79,0x0e]
691 ; CHECK: frintn.4h       v0, v0          ; encoding: [0x00,0x88,0x79,0x0e]
692 ; CHECK: frintp.4h       v0, v0          ; encoding: [0x00,0x88,0xf9,0x0e]
693 ; CHECK: frintz.4h       v0, v0          ; encoding: [0x00,0x98,0xf9,0x0e]
694 ; CHECK: frsqrte.4h      v0, v0          ; encoding: [0x00,0xd8,0xf9,0x2e]
695 ; CHECK: fsqrt.4h        v0, v0          ; encoding: [0x00,0xf8,0xf9,0x2e]
696
697   fabs.8h     v0, v0
698   fneg.8h     v0, v0
699   frecpe.8h   v0, v0
700   frinta.8h   v0, v0
701   frintx.8h   v0, v0
702   frinti.8h   v0, v0
703   frintm.8h   v0, v0
704   frintn.8h   v0, v0
705   frintp.8h   v0, v0
706   frintz.8h   v0, v0
707   frsqrte.8h  v0, v0
708   fsqrt.8h    v0, v0
709
710 ; CHECK: fabs.8h v0, v0                  ; encoding: [0x00,0xf8,0xf8,0x4e]
711 ; CHECK: fneg.8h v0, v0                  ; encoding: [0x00,0xf8,0xf8,0x6e]
712 ; CHECK: frecpe.8h       v0, v0          ; encoding: [0x00,0xd8,0xf9,0x4e]
713 ; CHECK: frinta.8h       v0, v0          ; encoding: [0x00,0x88,0x79,0x6e]
714 ; CHECK: frintx.8h       v0, v0          ; encoding: [0x00,0x98,0x79,0x6e]
715 ; CHECK: frinti.8h       v0, v0          ; encoding: [0x00,0x98,0xf9,0x6e]
716 ; CHECK: frintm.8h       v0, v0          ; encoding: [0x00,0x98,0x79,0x4e]
717 ; CHECK: frintn.8h       v0, v0          ; encoding: [0x00,0x88,0x79,0x4e]
718 ; CHECK: frintp.8h       v0, v0          ; encoding: [0x00,0x88,0xf9,0x4e]
719 ; CHECK: frintz.8h       v0, v0          ; encoding: [0x00,0x98,0xf9,0x4e]
720 ; CHECK: frsqrte.8h      v0, v0          ; encoding: [0x00,0xd8,0xf9,0x6e]
721 ; CHECK: fsqrt.8h        v0, v0          ; encoding: [0x00,0xf8,0xf9,0x6e]
722
723   cmeq.8b   v0, v0, #0
724   cmeq.16b  v0, v0, #0
725   cmeq.4h   v0, v0, #0
726   cmeq.8h   v0, v0, #0
727   cmeq.2s   v0, v0, #0
728   cmeq.4s   v0, v0, #0
729   cmeq.2d   v0, v0, #0
730
731 ; CHECK: cmeq.8b        v0, v0, #0              ; encoding: [0x00,0x98,0x20,0x0e]
732 ; CHECK: cmeq.16b       v0, v0, #0      ; encoding: [0x00,0x98,0x20,0x4e]
733 ; CHECK: cmeq.4h        v0, v0, #0              ; encoding: [0x00,0x98,0x60,0x0e]
734 ; CHECK: cmeq.8h        v0, v0, #0              ; encoding: [0x00,0x98,0x60,0x4e]
735 ; CHECK: cmeq.2s        v0, v0, #0              ; encoding: [0x00,0x98,0xa0,0x0e]
736 ; CHECK: cmeq.4s        v0, v0, #0              ; encoding: [0x00,0x98,0xa0,0x4e]
737 ; CHECK: cmeq.2d        v0, v0, #0              ; encoding: [0x00,0x98,0xe0,0x4e]
738
739   cmge.8b   v0, v0, #0
740   cmgt.8b   v0, v0, #0
741   cmle.8b   v0, v0, #0
742   cmlt.8b   v0, v0, #0
743   fcmeq.2s  v0, v0, #0
744   fcmge.2s  v0, v0, #0
745   fcmgt.2s  v0, v0, #0
746   fcmle.2s  v0, v0, #0
747   fcmlt.2s  v0, v0, #0
748
749 ; ARM verbose mode aliases
750   cmlt v8.8b, v14.8b, #0
751   cmlt v8.16b, v14.16b, #0
752   cmlt v8.4h, v14.4h, #0
753   cmlt v8.8h, v14.8h, #0
754   cmlt v8.2s, v14.2s, #0
755   cmlt v8.4s, v14.4s, #0
756   cmlt v8.2d, v14.2d, #0
757
758 ; CHECK: cmge.8b        v0, v0, #0              ; encoding: [0x00,0x88,0x20,0x2e]
759 ; CHECK: cmgt.8b        v0, v0, #0              ; encoding: [0x00,0x88,0x20,0x0e]
760 ; CHECK: cmle.8b        v0, v0, #0              ; encoding: [0x00,0x98,0x20,0x2e]
761 ; CHECK: cmlt.8b        v0, v0, #0              ; encoding: [0x00,0xa8,0x20,0x0e]
762 ; CHECK: fcmeq.2s       v0, v0, #0.0      ; encoding: [0x00,0xd8,0xa0,0x0e]
763 ; CHECK: fcmge.2s       v0, v0, #0.0      ; encoding: [0x00,0xc8,0xa0,0x2e]
764 ; CHECK: fcmgt.2s       v0, v0, #0.0      ; encoding: [0x00,0xc8,0xa0,0x0e]
765 ; CHECK: fcmle.2s       v0, v0, #0.0      ; encoding: [0x00,0xd8,0xa0,0x2e]
766 ; CHECK: fcmlt.2s       v0, v0, #0.0      ; encoding: [0x00,0xe8,0xa0,0x0e]
767 ; CHECK: cmlt.8b        v8, v14, #0             ; encoding: [0xc8,0xa9,0x20,0x0e]
768 ; CHECK: cmlt.16b       v8, v14, #0     ; encoding: [0xc8,0xa9,0x20,0x4e]
769 ; CHECK: cmlt.4h        v8, v14, #0             ; encoding: [0xc8,0xa9,0x60,0x0e]
770 ; CHECK: cmlt.8h        v8, v14, #0             ; encoding: [0xc8,0xa9,0x60,0x4e]
771 ; CHECK: cmlt.2s        v8, v14, #0             ; encoding: [0xc8,0xa9,0xa0,0x0e]
772 ; CHECK: cmlt.4s        v8, v14, #0             ; encoding: [0xc8,0xa9,0xa0,0x4e]
773 ; CHECK: cmlt.2d        v8, v14, #0             ; encoding: [0xc8,0xa9,0xe0,0x4e]
774
775
776 ;===-------------------------------------------------------------------------===
777 ; AdvSIMD Floating-point <-> Integer Conversions
778 ;===-------------------------------------------------------------------------===
779
780   fcvtas.2s   v0, v0
781   fcvtas.4s   v0, v0
782   fcvtas.2d   v0, v0
783   fcvtas      s0, s0
784   fcvtas      d0, d0
785
786 ; CHECK: fcvtas.2s  v0, v0           ; encoding: [0x00,0xc8,0x21,0x0e]
787 ; CHECK: fcvtas.4s  v0, v0           ; encoding: [0x00,0xc8,0x21,0x4e]
788 ; CHECK: fcvtas.2d  v0, v0           ; encoding: [0x00,0xc8,0x61,0x4e]
789 ; CHECK: fcvtas     s0, s0           ; encoding: [0x00,0xc8,0x21,0x5e]
790 ; CHECK: fcvtas     d0, d0           ; encoding: [0x00,0xc8,0x61,0x5e]
791
792   fcvtau.2s   v0, v0
793   fcvtau.4s   v0, v0
794   fcvtau.2d   v0, v0
795   fcvtau      s0, s0
796   fcvtau      d0, d0
797
798 ; CHECK: fcvtau.2s  v0, v0           ; encoding: [0x00,0xc8,0x21,0x2e]
799 ; CHECK: fcvtau.4s  v0, v0           ; encoding: [0x00,0xc8,0x21,0x6e]
800 ; CHECK: fcvtau.2d  v0, v0           ; encoding: [0x00,0xc8,0x61,0x6e]
801 ; CHECK: fcvtau     s0, s0           ; encoding: [0x00,0xc8,0x21,0x7e]
802 ; CHECK: fcvtau     d0, d0           ; encoding: [0x00,0xc8,0x61,0x7e]
803
804   fcvtl   v1.4s, v5.4h
805   fcvtl   v2.2d, v6.2s
806   fcvtl2  v3.4s, v7.8h
807   fcvtl2  v4.2d, v8.4s
808
809 ; CHECK: fcvtl  v1.4s, v5.4h            ; encoding: [0xa1,0x78,0x21,0x0e]
810 ; CHECK: fcvtl  v2.2d, v6.2s            ; encoding: [0xc2,0x78,0x61,0x0e]
811 ; CHECK: fcvtl2 v3.4s, v7.8h            ; encoding: [0xe3,0x78,0x21,0x4e]
812 ; CHECK: fcvtl2 v4.2d, v8.4s            ; encoding: [0x04,0x79,0x61,0x4e]
813
814   fcvtms.2s  v0, v0
815   fcvtms.4s  v0, v0
816   fcvtms.2d  v0, v0
817   fcvtms     s0, s0
818   fcvtms     d0, d0
819
820 ; CHECK: fcvtms.2s v0, v0            ; encoding: [0x00,0xb8,0x21,0x0e]
821 ; CHECK: fcvtms.4s v0, v0            ; encoding: [0x00,0xb8,0x21,0x4e]
822 ; CHECK: fcvtms.2d v0, v0            ; encoding: [0x00,0xb8,0x61,0x4e]
823 ; CHECK: fcvtms    s0, s0            ; encoding: [0x00,0xb8,0x21,0x5e]
824 ; CHECK: fcvtms    d0, d0            ; encoding: [0x00,0xb8,0x61,0x5e]
825
826   fcvtmu.2s   v0, v0
827   fcvtmu.4s   v0, v0
828   fcvtmu.2d   v0, v0
829   fcvtmu      s0, s0
830   fcvtmu      d0, d0
831
832 ; CHECK: fcvtmu.2s v0, v0            ; encoding: [0x00,0xb8,0x21,0x2e]
833 ; CHECK: fcvtmu.4s v0, v0            ; encoding: [0x00,0xb8,0x21,0x6e]
834 ; CHECK: fcvtmu.2d v0, v0            ; encoding: [0x00,0xb8,0x61,0x6e]
835 ; CHECK: fcvtmu    s0, s0            ; encoding: [0x00,0xb8,0x21,0x7e]
836 ; CHECK: fcvtmu    d0, d0            ; encoding: [0x00,0xb8,0x61,0x7e]
837
838   fcvtns.2s   v0, v0
839   fcvtns.4s   v0, v0
840   fcvtns.2d   v0, v0
841   fcvtns      s0, s0
842   fcvtns      d0, d0
843
844 ; CHECK: fcvtns.2s v0, v0            ; encoding: [0x00,0xa8,0x21,0x0e]
845 ; CHECK: fcvtns.4s v0, v0            ; encoding: [0x00,0xa8,0x21,0x4e]
846 ; CHECK: fcvtns.2d v0, v0            ; encoding: [0x00,0xa8,0x61,0x4e]
847 ; CHECK: fcvtns    s0, s0            ; encoding: [0x00,0xa8,0x21,0x5e]
848 ; CHECK: fcvtns    d0, d0            ; encoding: [0x00,0xa8,0x61,0x5e]
849
850   fcvtnu.2s   v0, v0
851   fcvtnu.4s   v0, v0
852   fcvtnu.2d   v0, v0
853   fcvtnu      s0, s0
854   fcvtnu      d0, d0
855
856 ; CHECK: fcvtnu.2s v0, v0            ; encoding: [0x00,0xa8,0x21,0x2e]
857 ; CHECK: fcvtnu.4s v0, v0            ; encoding: [0x00,0xa8,0x21,0x6e]
858 ; CHECK: fcvtnu.2d v0, v0            ; encoding: [0x00,0xa8,0x61,0x6e]
859 ; CHECK: fcvtnu    s0, s0            ; encoding: [0x00,0xa8,0x21,0x7e]
860 ; CHECK: fcvtnu    d0, d0            ; encoding: [0x00,0xa8,0x61,0x7e]
861
862   fcvtn   v2.4h, v4.4s
863   fcvtn   v3.2s, v5.2d
864   fcvtn2  v4.8h, v6.4s
865   fcvtn2  v5.4s, v7.2d
866   fcvtxn  v6.2s, v9.2d
867   fcvtxn2 v7.4s, v8.2d
868
869 ; CHECK: fcvtn  v2.4h, v4.4s            ; encoding: [0x82,0x68,0x21,0x0e]
870 ; CHECK: fcvtn  v3.2s, v5.2d            ; encoding: [0xa3,0x68,0x61,0x0e]
871 ; CHECK: fcvtn2 v4.8h, v6.4s            ; encoding: [0xc4,0x68,0x21,0x4e]
872 ; CHECK: fcvtn2 v5.4s, v7.2d            ; encoding: [0xe5,0x68,0x61,0x4e]
873 ; CHECK: fcvtxn v6.2s, v9.2d            ; encoding: [0x26,0x69,0x61,0x2e]
874 ; CHECK: fcvtxn2 v7.4s, v8.2d           ; encoding: [0x07,0x69,0x61,0x6e]
875
876   fcvtps.2s  v0, v0
877   fcvtps.4s  v0, v0
878   fcvtps.2d  v0, v0
879   fcvtps     s0, s0
880   fcvtps     d0, d0
881
882 ; CHECK: fcvtps.2s v0, v0            ; encoding: [0x00,0xa8,0xa1,0x0e]
883 ; CHECK: fcvtps.4s v0, v0            ; encoding: [0x00,0xa8,0xa1,0x4e]
884 ; CHECK: fcvtps.2d v0, v0            ; encoding: [0x00,0xa8,0xe1,0x4e]
885 ; CHECK: fcvtps    s0, s0            ; encoding: [0x00,0xa8,0xa1,0x5e]
886 ; CHECK: fcvtps    d0, d0            ; encoding: [0x00,0xa8,0xe1,0x5e]
887
888   fcvtpu.2s  v0, v0
889   fcvtpu.4s  v0, v0
890   fcvtpu.2d  v0, v0
891   fcvtpu     s0, s0
892   fcvtpu     d0, d0
893
894 ; CHECK: fcvtpu.2s v0, v0            ; encoding: [0x00,0xa8,0xa1,0x2e]
895 ; CHECK: fcvtpu.4s v0, v0            ; encoding: [0x00,0xa8,0xa1,0x6e]
896 ; CHECK: fcvtpu.2d v0, v0            ; encoding: [0x00,0xa8,0xe1,0x6e]
897 ; CHECK: fcvtpu    s0, s0            ; encoding: [0x00,0xa8,0xa1,0x7e]
898 ; CHECK: fcvtpu    d0, d0            ; encoding: [0x00,0xa8,0xe1,0x7e]
899
900   fcvtzs.2s  v0, v0
901   fcvtzs.4s  v0, v0
902   fcvtzs.2d  v0, v0
903   fcvtzs     s0, s0
904   fcvtzs     d0, d0
905
906 ; CHECK: fcvtzs.2s v0, v0            ; encoding: [0x00,0xb8,0xa1,0x0e]
907 ; CHECK: fcvtzs.4s v0, v0            ; encoding: [0x00,0xb8,0xa1,0x4e]
908 ; CHECK: fcvtzs.2d v0, v0            ; encoding: [0x00,0xb8,0xe1,0x4e]
909 ; CHECK: fcvtzs    s0, s0            ; encoding: [0x00,0xb8,0xa1,0x5e]
910 ; CHECK: fcvtzs    d0, d0            ; encoding: [0x00,0xb8,0xe1,0x5e]
911
912   fcvtzu.2s  v0, v0
913   fcvtzu.4s  v0, v0
914   fcvtzu.2d  v0, v0
915   fcvtzu     s0, s0
916   fcvtzu     d0, d0
917
918 ; CHECK: fcvtzu.2s v0, v0            ; encoding: [0x00,0xb8,0xa1,0x2e]
919 ; CHECK: fcvtzu.4s v0, v0            ; encoding: [0x00,0xb8,0xa1,0x6e]
920 ; CHECK: fcvtzu.2d v0, v0            ; encoding: [0x00,0xb8,0xe1,0x6e]
921 ; CHECK: fcvtzu    s0, s0            ; encoding: [0x00,0xb8,0xa1,0x7e]
922 ; CHECK: fcvtzu    d0, d0            ; encoding: [0x00,0xb8,0xe1,0x7e]
923
924 ;===-------------------------------------------------------------------------===
925 ; AdvSIMD modified immediate instructions
926 ;===-------------------------------------------------------------------------===
927
928   bic.2s  v0, #1
929   bic.2s  v0, #1, lsl #0
930   bic.2s  v0, #1, lsl #8
931   bic.2s  v0, #1, lsl #16
932   bic.2s  v0, #1, lsl #24
933
934 ; CHECK: bic.2s v0, #0x1               ; encoding: [0x20,0x14,0x00,0x2f]
935 ; CHECK: bic.2s v0, #0x1               ; encoding: [0x20,0x14,0x00,0x2f]
936 ; CHECK: bic.2s v0, #0x1, lsl #8       ; encoding: [0x20,0x34,0x00,0x2f]
937 ; CHECK: bic.2s v0, #0x1, lsl #16      ; encoding: [0x20,0x54,0x00,0x2f]
938 ; CHECK: bic.2s v0, #0x1, lsl #24      ; encoding: [0x20,0x74,0x00,0x2f]
939
940   bic.4h  v0, #1
941   bic.4h  v0, #1, lsl #0
942   bic.4h  v0, #1, lsl #8
943
944 ; CHECK: bic.4h v0, #0x1               ; encoding: [0x20,0x94,0x00,0x2f]
945 ; CHECK: bic.4h v0, #0x1               ; encoding: [0x20,0x94,0x00,0x2f]
946 ; CHECK: bic.4h v0, #0x1, lsl #8       ; encoding: [0x20,0xb4,0x00,0x2f]
947
948   bic.4s  v0, #1
949   bic.4s  v0, #1, lsl #0
950   bic.4s  v0, #1, lsl #8
951   bic.4s  v0, #1, lsl #16
952   bic.4s  v0, #1, lsl #24
953
954 ; CHECK: bic.4s v0, #0x1               ; encoding: [0x20,0x14,0x00,0x6f]
955 ; CHECK: bic.4s v0, #0x1               ; encoding: [0x20,0x14,0x00,0x6f]
956 ; CHECK: bic.4s v0, #0x1, lsl #8       ; encoding: [0x20,0x34,0x00,0x6f]
957 ; CHECK: bic.4s v0, #0x1, lsl #16      ; encoding: [0x20,0x54,0x00,0x6f]
958 ; CHECK: bic.4s v0, #0x1, lsl #24      ; encoding: [0x20,0x74,0x00,0x6f]
959
960   bic.8h  v0, #1
961   bic.8h  v0, #1, lsl #0
962   bic.8h  v0, #1, lsl #8
963
964 ; CHECK: bic.8h v0, #0x1               ; encoding: [0x20,0x94,0x00,0x6f]
965 ; CHECK: bic.8h v0, #0x1               ; encoding: [0x20,0x94,0x00,0x6f]
966 ; CHECK: bic.8h v0, #0x1, lsl #8       ; encoding: [0x20,0xb4,0x00,0x6f]
967
968   fmov.2d v0, #1.250000e-01
969
970 ; CHECK: fmov.2d v0, #0.12500000             ; encoding: [0x00,0xf4,0x02,0x6f]
971
972   fmov.2s v0, #1.250000e-01
973   fmov.4s v0, #1.250000e-01
974
975 ; CHECK: fmov.2s v0, #0.12500000             ; encoding: [0x00,0xf4,0x02,0x0f]
976 ; CHECK: fmov.4s v0, #0.12500000             ; encoding: [0x00,0xf4,0x02,0x4f]
977
978   orr.2s  v0, #1
979   orr.2s  v0, #1, lsl #0
980   orr.2s  v0, #1, lsl #8
981   orr.2s  v0, #1, lsl #16
982   orr.2s  v0, #1, lsl #24
983
984 ; CHECK: orr.2s v0, #0x1               ; encoding: [0x20,0x14,0x00,0x0f]
985 ; CHECK: orr.2s v0, #0x1               ; encoding: [0x20,0x14,0x00,0x0f]
986 ; CHECK: orr.2s v0, #0x1, lsl #8       ; encoding: [0x20,0x34,0x00,0x0f]
987 ; CHECK: orr.2s v0, #0x1, lsl #16      ; encoding: [0x20,0x54,0x00,0x0f]
988 ; CHECK: orr.2s v0, #0x1, lsl #24      ; encoding: [0x20,0x74,0x00,0x0f]
989
990   orr.4h  v0, #1
991   orr.4h  v0, #1, lsl #0
992   orr.4h  v0, #1, lsl #8
993
994 ; CHECK: orr.4h v0, #0x1               ; encoding: [0x20,0x94,0x00,0x0f]
995 ; CHECK: orr.4h v0, #0x1               ; encoding: [0x20,0x94,0x00,0x0f]
996 ; CHECK: orr.4h v0, #0x1, lsl #8       ; encoding: [0x20,0xb4,0x00,0x0f]
997
998   orr.4s  v0, #1
999   orr.4s  v0, #1, lsl #0
1000   orr.4s  v0, #1, lsl #8
1001   orr.4s  v0, #1, lsl #16
1002   orr.4s  v0, #1, lsl #24
1003
1004 ; CHECK: orr.4s v0, #0x1               ; encoding: [0x20,0x14,0x00,0x4f]
1005 ; CHECK: orr.4s v0, #0x1               ; encoding: [0x20,0x14,0x00,0x4f]
1006 ; CHECK: orr.4s v0, #0x1, lsl #8       ; encoding: [0x20,0x34,0x00,0x4f]
1007 ; CHECK: orr.4s v0, #0x1, lsl #16      ; encoding: [0x20,0x54,0x00,0x4f]
1008 ; CHECK: orr.4s v0, #0x1, lsl #24      ; encoding: [0x20,0x74,0x00,0x4f]
1009
1010   orr.8h  v0, #1
1011   orr.8h  v0, #1, lsl #0
1012   orr.8h  v0, #1, lsl #8
1013
1014 ; CHECK: orr.8h v0, #0x1               ; encoding: [0x20,0x94,0x00,0x4f]
1015 ; CHECK: orr.8h v0, #0x1               ; encoding: [0x20,0x94,0x00,0x4f]
1016 ; CHECK: orr.8h v0, #0x1, lsl #8       ; encoding: [0x20,0xb4,0x00,0x4f]
1017
1018   movi     d0, #0x000000000000ff
1019   movi.2d  v0, #0x000000000000ff
1020
1021 ; CHECK: movi     d0, #0x000000000000ff ; encoding: [0x20,0xe4,0x00,0x2f]
1022 ; CHECK: movi.2d  v0, #0x000000000000ff ; encoding: [0x20,0xe4,0x00,0x6f]
1023
1024   movi.2s v0, #1
1025   movi.2s v0, #1, lsl #0
1026   movi.2s v0, #1, lsl #8
1027   movi.2s v0, #1, lsl #16
1028   movi.2s v0, #1, lsl #24
1029
1030 ; CHECK: movi.2s v0, #0x1              ; encoding: [0x20,0x04,0x00,0x0f]
1031 ; CHECK: movi.2s v0, #0x1              ; encoding: [0x20,0x04,0x00,0x0f]
1032 ; CHECK: movi.2s v0, #0x1, lsl #8      ; encoding: [0x20,0x24,0x00,0x0f]
1033 ; CHECK: movi.2s v0, #0x1, lsl #16     ; encoding: [0x20,0x44,0x00,0x0f]
1034 ; CHECK: movi.2s v0, #0x1, lsl #24     ; encoding: [0x20,0x64,0x00,0x0f]
1035
1036   movi.4s v0, #1
1037   movi.4s v0, #1, lsl #0
1038   movi.4s v0, #1, lsl #8
1039   movi.4s v0, #1, lsl #16
1040   movi.4s v0, #1, lsl #24
1041
1042 ; CHECK: movi.4s v0, #0x1              ; encoding: [0x20,0x04,0x00,0x4f]
1043 ; CHECK: movi.4s v0, #0x1              ; encoding: [0x20,0x04,0x00,0x4f]
1044 ; CHECK: movi.4s v0, #0x1, lsl #8      ; encoding: [0x20,0x24,0x00,0x4f]
1045 ; CHECK: movi.4s v0, #0x1, lsl #16     ; encoding: [0x20,0x44,0x00,0x4f]
1046 ; CHECK: movi.4s v0, #0x1, lsl #24     ; encoding: [0x20,0x64,0x00,0x4f]
1047
1048   movi.4h v0, #1
1049   movi.4h v0, #1, lsl #0
1050   movi.4h v0, #1, lsl #8
1051
1052 ; CHECK: movi.4h v0, #0x1              ; encoding: [0x20,0x84,0x00,0x0f]
1053 ; CHECK: movi.4h v0, #0x1              ; encoding: [0x20,0x84,0x00,0x0f]
1054 ; CHECK: movi.4h v0, #0x1, lsl #8      ; encoding: [0x20,0xa4,0x00,0x0f]
1055
1056   movi.8h v0, #1
1057   movi.8h v0, #1, lsl #0
1058   movi.8h v0, #1, lsl #8
1059
1060 ; CHECK: movi.8h v0, #0x1              ; encoding: [0x20,0x84,0x00,0x4f]
1061 ; CHECK: movi.8h v0, #0x1              ; encoding: [0x20,0x84,0x00,0x4f]
1062 ; CHECK: movi.8h v0, #0x1, lsl #8      ; encoding: [0x20,0xa4,0x00,0x4f]
1063
1064   movi.2s v0, #1, msl #8
1065   movi.2s v0, #1, msl #16
1066   movi.4s v0, #1, msl #8
1067   movi.4s v0, #1, msl #16
1068
1069 ; CHECK: movi.2s v0, #0x1, msl #8      ; encoding: [0x20,0xc4,0x00,0x0f]
1070 ; CHECK: movi.2s v0, #0x1, msl #16     ; encoding: [0x20,0xd4,0x00,0x0f]
1071 ; CHECK: movi.4s v0, #0x1, msl #8      ; encoding: [0x20,0xc4,0x00,0x4f]
1072 ; CHECK: movi.4s v0, #0x1, msl #16     ; encoding: [0x20,0xd4,0x00,0x4f]
1073
1074   movi.8b  v0, #1
1075   movi.16b v0, #1
1076
1077 ; CHECK: movi.8b  v0, #0x1             ; encoding: [0x20,0xe4,0x00,0x0f]
1078 ; CHECK: movi.16b v0, #0x1             ; encoding: [0x20,0xe4,0x00,0x4f]
1079
1080   mvni.2s v0, #1
1081   mvni.2s v0, #1, lsl #0
1082   mvni.2s v0, #1, lsl #8
1083   mvni.2s v0, #1, lsl #16
1084   mvni.2s v0, #1, lsl #24
1085
1086 ; CHECK: mvni.2s v0, #0x1              ; encoding: [0x20,0x04,0x00,0x2f]
1087 ; CHECK: mvni.2s v0, #0x1              ; encoding: [0x20,0x04,0x00,0x2f]
1088 ; CHECK: mvni.2s v0, #0x1, lsl #8      ; encoding: [0x20,0x24,0x00,0x2f]
1089 ; CHECK: mvni.2s v0, #0x1, lsl #16     ; encoding: [0x20,0x44,0x00,0x2f]
1090 ; CHECK: mvni.2s v0, #0x1, lsl #24     ; encoding: [0x20,0x64,0x00,0x2f]
1091
1092   mvni.4s v0, #1
1093   mvni.4s v0, #1, lsl #0
1094   mvni.4s v0, #1, lsl #8
1095   mvni.4s v0, #1, lsl #16
1096   mvni.4s v0, #1, lsl #24
1097
1098 ; CHECK: mvni.4s v0, #0x1              ; encoding: [0x20,0x04,0x00,0x6f]
1099 ; CHECK: mvni.4s v0, #0x1              ; encoding: [0x20,0x04,0x00,0x6f]
1100 ; CHECK: mvni.4s v0, #0x1, lsl #8      ; encoding: [0x20,0x24,0x00,0x6f]
1101 ; CHECK: mvni.4s v0, #0x1, lsl #16     ; encoding: [0x20,0x44,0x00,0x6f]
1102 ; CHECK: mvni.4s v0, #0x1, lsl #24     ; encoding: [0x20,0x64,0x00,0x6f]
1103
1104   mvni.4h v0, #1
1105   mvni.4h v0, #1, lsl #0
1106   mvni.4h v0, #1, lsl #8
1107
1108 ; CHECK: mvni.4h v0, #0x1              ; encoding: [0x20,0x84,0x00,0x2f]
1109 ; CHECK: mvni.4h v0, #0x1              ; encoding: [0x20,0x84,0x00,0x2f]
1110 ; CHECK: mvni.4h v0, #0x1, lsl #8      ; encoding: [0x20,0xa4,0x00,0x2f]
1111
1112   mvni.8h v0, #1
1113   mvni.8h v0, #1, lsl #0
1114   mvni.8h v0, #1, lsl #8
1115
1116 ; CHECK: mvni.8h v0, #0x1              ; encoding: [0x20,0x84,0x00,0x6f]
1117 ; CHECK: mvni.8h v0, #0x1              ; encoding: [0x20,0x84,0x00,0x6f]
1118 ; CHECK: mvni.8h v0, #0x1, lsl #8      ; encoding: [0x20,0xa4,0x00,0x6f]
1119
1120   mvni.2s v0, #1, msl #8
1121   mvni.2s v0, #1, msl #16
1122   mvni.4s v0, #1, msl #8
1123   mvni.4s v0, #1, msl #16
1124
1125 ; CHECK: mvni.2s v0, #0x1, msl #8      ; encoding: [0x20,0xc4,0x00,0x2f]
1126 ; CHECK: mvni.2s v0, #0x1, msl #16     ; encoding: [0x20,0xd4,0x00,0x2f]
1127 ; CHECK: mvni.4s v0, #0x1, msl #8      ; encoding: [0x20,0xc4,0x00,0x6f]
1128 ; CHECK: mvni.4s v0, #0x1, msl #16     ; encoding: [0x20,0xd4,0x00,0x6f]
1129
1130 ;===-------------------------------------------------------------------------===
1131 ; AdvSIMD scalar x index
1132 ;===-------------------------------------------------------------------------===
1133
1134   fmla.s  s0, s0, v0[3]
1135   fmla.d  d0, d0, v0[1]
1136   fmls.s  s0, s0, v0[3]
1137   fmls.d  d0, d0, v0[1]
1138   fmulx.s s0, s0, v0[3]
1139   fmulx.d d0, d0, v0[1]
1140   fmul.s  s0, s0, v0[3]
1141   fmul.d  d0, d0, v0[1]
1142   sqdmlal.h s0, h0, v0[7]
1143   sqdmlal.s d0, s0, v0[3]
1144   sqdmlsl.h s0, h0, v0[7]
1145   sqdmulh.h h0, h0, v0[7]
1146   sqdmulh.s s0, s0, v0[3]
1147   sqdmull.h s0, h0, v0[7]
1148   sqdmull.s d0, s0, v0[3]
1149   sqrdmulh.h  h0, h0, v0[7]
1150   sqrdmulh.s  s0, s0, v0[3]
1151
1152 ; CHECK: fmla.s s0, s0, v0[3]           ; encoding: [0x00,0x18,0xa0,0x5f]
1153 ; CHECK: fmla.d d0, d0, v0[1]           ; encoding: [0x00,0x18,0xc0,0x5f]
1154 ; CHECK: fmls.s s0, s0, v0[3]           ; encoding: [0x00,0x58,0xa0,0x5f]
1155 ; CHECK: fmls.d d0, d0, v0[1]           ; encoding: [0x00,0x58,0xc0,0x5f]
1156 ; CHECK: fmulx.s        s0, s0, v0[3]           ; encoding: [0x00,0x98,0xa0,0x7f]
1157 ; CHECK: fmulx.d        d0, d0, v0[1]           ; encoding: [0x00,0x98,0xc0,0x7f]
1158 ; CHECK: fmul.s s0, s0, v0[3]           ; encoding: [0x00,0x98,0xa0,0x5f]
1159 ; CHECK: fmul.d d0, d0, v0[1]           ; encoding: [0x00,0x98,0xc0,0x5f]
1160 ; CHECK: sqdmlal.h      s0, h0, v0[7]   ; encoding: [0x00,0x38,0x70,0x5f]
1161 ; CHECK: sqdmlal.s      d0, s0, v0[3]   ; encoding: [0x00,0x38,0xa0,0x5f]
1162 ; CHECK: sqdmlsl.h      s0, h0, v0[7]   ; encoding: [0x00,0x78,0x70,0x5f]
1163 ; CHECK: sqdmulh.h      h0, h0, v0[7]   ; encoding: [0x00,0xc8,0x70,0x5f]
1164 ; CHECK: sqdmulh.s      s0, s0, v0[3]   ; encoding: [0x00,0xc8,0xa0,0x5f]
1165 ; CHECK: sqdmull.h      s0, h0, v0[7]   ; encoding: [0x00,0xb8,0x70,0x5f]
1166 ; CHECK: sqdmull.s      d0, s0, v0[3]   ; encoding: [0x00,0xb8,0xa0,0x5f]
1167 ; CHECK: sqrdmulh.h     h0, h0, v0[7]   ; encoding: [0x00,0xd8,0x70,0x5f]
1168 ; CHECK: sqrdmulh.s     s0, s0, v0[3]   ; encoding: [0x00,0xd8,0xa0,0x5f]
1169
1170 ;===-------------------------------------------------------------------------===
1171 ; AdvSIMD SMLAL
1172 ;===-------------------------------------------------------------------------===
1173         smlal.8h v1, v2, v3
1174         smlal.4s v1, v2, v3
1175         smlal.2d v1, v2, v3
1176         smlal2.8h v1, v2, v3
1177         smlal2.4s v1, v2, v3
1178         smlal2.2d v1, v2, v3
1179
1180         smlal v13.8h, v8.8b, v0.8b
1181         smlal v13.4s, v8.4h, v0.4h
1182         smlal v13.2d, v8.2s, v0.2s
1183         smlal2 v13.8h, v8.16b, v0.16b
1184         smlal2 v13.4s, v8.8h, v0.8h
1185         smlal2 v13.2d, v8.4s, v0.4s
1186
1187 ; CHECK: smlal.8h       v1, v2, v3      ; encoding: [0x41,0x80,0x23,0x0e]
1188 ; CHECK: smlal.4s       v1, v2, v3      ; encoding: [0x41,0x80,0x63,0x0e]
1189 ; CHECK: smlal.2d       v1, v2, v3      ; encoding: [0x41,0x80,0xa3,0x0e]
1190 ; CHECK: smlal2.8h      v1, v2, v3      ; encoding: [0x41,0x80,0x23,0x4e]
1191 ; CHECK: smlal2.4s      v1, v2, v3      ; encoding: [0x41,0x80,0x63,0x4e]
1192 ; CHECK: smlal2.2d      v1, v2, v3      ; encoding: [0x41,0x80,0xa3,0x4e]
1193 ; CHECK: smlal.8h       v13, v8, v0     ; encoding: [0x0d,0x81,0x20,0x0e]
1194 ; CHECK: smlal.4s       v13, v8, v0     ; encoding: [0x0d,0x81,0x60,0x0e]
1195 ; CHECK: smlal.2d       v13, v8, v0     ; encoding: [0x0d,0x81,0xa0,0x0e]
1196 ; CHECK: smlal2.8h      v13, v8, v0     ; encoding: [0x0d,0x81,0x20,0x4e]
1197 ; CHECK: smlal2.4s      v13, v8, v0     ; encoding: [0x0d,0x81,0x60,0x4e]
1198 ; CHECK: smlal2.2d      v13, v8, v0     ; encoding: [0x0d,0x81,0xa0,0x4e]
1199
1200
1201 ;===-------------------------------------------------------------------------===
1202 ; AdvSIMD scalar x index
1203 ;===-------------------------------------------------------------------------===
1204
1205   fmla.2s v0, v0, v0[0]
1206   fmla.4s v0, v0, v0[1]
1207   fmla.2d v0, v0, v0[1]
1208   fmls.2s v0, v0, v0[0]
1209   fmls.4s v0, v0, v0[1]
1210   fmls.2d v0, v0, v0[1]
1211   fmulx.2s  v0, v0, v0[0]
1212   fmulx.4s  v0, v0, v0[1]
1213   fmulx.2d  v0, v0, v0[1]
1214   fmul.2s v0, v0, v0[0]
1215   fmul.4s v0, v0, v0[1]
1216   fmul.2d v0, v0, v0[1]
1217   mla.4h  v0, v0, v0[0]
1218   mla.8h  v0, v0, v0[1]
1219   mla.2s  v0, v0, v0[2]
1220   mla.4s  v0, v0, v0[3]
1221   mls.4h  v0, v0, v0[0]
1222   mls.8h  v0, v0, v0[1]
1223   mls.2s  v0, v0, v0[2]
1224   mls.4s  v0, v0, v0[3]
1225   mul.4h  v0, v0, v0[0]
1226   mul.8h  v0, v0, v0[1]
1227   mul.2s  v0, v0, v0[2]
1228   mul.4s  v0, v0, v0[3]
1229   smlal.4s  v0, v0, v0[0]
1230   smlal2.4s v0, v0, v0[1]
1231   smlal.2d  v0, v0, v0[2]
1232   smlal2.2d v0, v0, v0[3]
1233   smlsl.4s  v0, v0, v0[0]
1234   smlsl2.4s v0, v0, v0[1]
1235   smlsl.2d  v0, v0, v0[2]
1236   smlsl2.2d v0, v0, v0[3]
1237   smull.4s  v0, v0, v0[0]
1238   smull2.4s v0, v0, v0[1]
1239   smull.2d  v0, v0, v0[2]
1240   smull2.2d v0, v0, v0[3]
1241   sqdmlal.4s  v0, v0, v0[0]
1242   sqdmlal2.4s v0, v0, v0[1]
1243   sqdmlal.2d  v0, v0, v0[2]
1244   sqdmlal2.2d v0, v0, v0[3]
1245   sqdmlsl.4s  v0, v0, v0[0]
1246   sqdmlsl2.4s v0, v0, v0[1]
1247   sqdmlsl.2d  v0, v0, v0[2]
1248   sqdmlsl2.2d v0, v0, v0[3]
1249   sqdmulh.4h  v0, v0, v0[0]
1250   sqdmulh.8h  v0, v0, v0[1]
1251   sqdmulh.2s  v0, v0, v0[2]
1252   sqdmulh.4s  v0, v0, v0[3]
1253   sqdmull.4s  v0, v0, v0[0]
1254   sqdmull2.4s v0, v0, v0[1]
1255   sqdmull.2d  v0, v0, v0[2]
1256   sqdmull2.2d v0, v0, v0[3]
1257   sqrdmulh.4h v0, v0, v0[0]
1258   sqrdmulh.8h v0, v0, v0[1]
1259   sqrdmulh.2s v0, v0, v0[2]
1260   sqrdmulh.4s v0, v0, v0[3]
1261   umlal.4s  v0, v0, v0[0]
1262   umlal2.4s v0, v0, v0[1]
1263   umlal.2d  v0, v0, v0[2]
1264   umlal2.2d v0, v0, v0[3]
1265   umlsl.4s  v0, v0, v0[0]
1266   umlsl2.4s v0, v0, v0[1]
1267   umlsl.2d  v0, v0, v0[2]
1268   umlsl2.2d v0, v0, v0[3]
1269   umull.4s  v0, v0, v0[0]
1270   umull2.4s v0, v0, v0[1]
1271   umull.2d  v0, v0, v0[2]
1272   umull2.2d v0, v0, v0[3]
1273
1274 ; CHECK: fmla.2s        v0, v0, v0[0]           ; encoding: [0x00,0x10,0x80,0x0f]
1275 ; CHECK: fmla.4s        v0, v0, v0[1]           ; encoding: [0x00,0x10,0xa0,0x4f]
1276 ; CHECK: fmla.2d        v0, v0, v0[1]           ; encoding: [0x00,0x18,0xc0,0x4f]
1277 ; CHECK: fmls.2s        v0, v0, v0[0]           ; encoding: [0x00,0x50,0x80,0x0f]
1278 ; CHECK: fmls.4s        v0, v0, v0[1]           ; encoding: [0x00,0x50,0xa0,0x4f]
1279 ; CHECK: fmls.2d        v0, v0, v0[1]           ; encoding: [0x00,0x58,0xc0,0x4f]
1280 ; CHECK: fmulx.2s       v0, v0, v0[0]   ; encoding: [0x00,0x90,0x80,0x2f]
1281 ; CHECK: fmulx.4s       v0, v0, v0[1]   ; encoding: [0x00,0x90,0xa0,0x6f]
1282 ; CHECK: fmulx.2d       v0, v0, v0[1]   ; encoding: [0x00,0x98,0xc0,0x6f]
1283 ; CHECK: fmul.2s        v0, v0, v0[0]           ; encoding: [0x00,0x90,0x80,0x0f]
1284 ; CHECK: fmul.4s        v0, v0, v0[1]           ; encoding: [0x00,0x90,0xa0,0x4f]
1285 ; CHECK: fmul.2d        v0, v0, v0[1]           ; encoding: [0x00,0x98,0xc0,0x4f]
1286 ; CHECK: mla.4h v0, v0, v0[0]           ; encoding: [0x00,0x00,0x40,0x2f]
1287 ; CHECK: mla.8h v0, v0, v0[1]           ; encoding: [0x00,0x00,0x50,0x6f]
1288 ; CHECK: mla.2s v0, v0, v0[2]           ; encoding: [0x00,0x08,0x80,0x2f]
1289 ; CHECK: mla.4s v0, v0, v0[3]           ; encoding: [0x00,0x08,0xa0,0x6f]
1290 ; CHECK: mls.4h v0, v0, v0[0]           ; encoding: [0x00,0x40,0x40,0x2f]
1291 ; CHECK: mls.8h v0, v0, v0[1]           ; encoding: [0x00,0x40,0x50,0x6f]
1292 ; CHECK: mls.2s v0, v0, v0[2]           ; encoding: [0x00,0x48,0x80,0x2f]
1293 ; CHECK: mls.4s v0, v0, v0[3]           ; encoding: [0x00,0x48,0xa0,0x6f]
1294 ; CHECK: mul.4h v0, v0, v0[0]           ; encoding: [0x00,0x80,0x40,0x0f]
1295 ; CHECK: mul.8h v0, v0, v0[1]           ; encoding: [0x00,0x80,0x50,0x4f]
1296 ; CHECK: mul.2s v0, v0, v0[2]           ; encoding: [0x00,0x88,0x80,0x0f]
1297 ; CHECK: mul.4s v0, v0, v0[3]           ; encoding: [0x00,0x88,0xa0,0x4f]
1298 ; CHECK: smlal.4s       v0, v0, v0[0]   ; encoding: [0x00,0x20,0x40,0x0f]
1299 ; CHECK: smlal2.4s      v0, v0, v0[1]   ; encoding: [0x00,0x20,0x50,0x4f]
1300 ; CHECK: smlal.2d       v0, v0, v0[2]   ; encoding: [0x00,0x28,0x80,0x0f]
1301 ; CHECK: smlal2.2d      v0, v0, v0[3]   ; encoding: [0x00,0x28,0xa0,0x4f]
1302 ; CHECK: smlsl.4s       v0, v0, v0[0]   ; encoding: [0x00,0x60,0x40,0x0f]
1303 ; CHECK: smlsl2.4s      v0, v0, v0[1]   ; encoding: [0x00,0x60,0x50,0x4f]
1304 ; CHECK: smlsl.2d       v0, v0, v0[2]   ; encoding: [0x00,0x68,0x80,0x0f]
1305 ; CHECK: smlsl2.2d      v0, v0, v0[3]   ; encoding: [0x00,0x68,0xa0,0x4f]
1306 ; CHECK: smull.4s       v0, v0, v0[0]   ; encoding: [0x00,0xa0,0x40,0x0f]
1307 ; CHECK: smull2.4s      v0, v0, v0[1]   ; encoding: [0x00,0xa0,0x50,0x4f]
1308 ; CHECK: smull.2d       v0, v0, v0[2]   ; encoding: [0x00,0xa8,0x80,0x0f]
1309 ; CHECK: smull2.2d      v0, v0, v0[3]   ; encoding: [0x00,0xa8,0xa0,0x4f]
1310 ; CHECK: sqdmlal.4s     v0, v0, v0[0]   ; encoding: [0x00,0x30,0x40,0x0f]
1311 ; CHECK: sqdmlal2.4s    v0, v0, v0[1]   ; encoding: [0x00,0x30,0x50,0x4f]
1312 ; CHECK: sqdmlal.2d     v0, v0, v0[2]   ; encoding: [0x00,0x38,0x80,0x0f]
1313 ; CHECK: sqdmlal2.2d    v0, v0, v0[3]   ; encoding: [0x00,0x38,0xa0,0x4f]
1314 ; CHECK: sqdmlsl.4s     v0, v0, v0[0]   ; encoding: [0x00,0x70,0x40,0x0f]
1315 ; CHECK: sqdmlsl2.4s    v0, v0, v0[1]   ; encoding: [0x00,0x70,0x50,0x4f]
1316 ; CHECK: sqdmlsl.2d     v0, v0, v0[2]   ; encoding: [0x00,0x78,0x80,0x0f]
1317 ; CHECK: sqdmlsl2.2d    v0, v0, v0[3]   ; encoding: [0x00,0x78,0xa0,0x4f]
1318 ; CHECK: sqdmulh.4h     v0, v0, v0[0]   ; encoding: [0x00,0xc0,0x40,0x0f]
1319 ; CHECK: sqdmulh.8h     v0, v0, v0[1]   ; encoding: [0x00,0xc0,0x50,0x4f]
1320 ; CHECK: sqdmulh.2s     v0, v0, v0[2]   ; encoding: [0x00,0xc8,0x80,0x0f]
1321 ; CHECK: sqdmulh.4s     v0, v0, v0[3]   ; encoding: [0x00,0xc8,0xa0,0x4f]
1322 ; CHECK: sqdmull.4s     v0, v0, v0[0]   ; encoding: [0x00,0xb0,0x40,0x0f]
1323 ; CHECK: sqdmull2.4s    v0, v0, v0[1]   ; encoding: [0x00,0xb0,0x50,0x4f]
1324 ; CHECK: sqdmull.2d     v0, v0, v0[2]   ; encoding: [0x00,0xb8,0x80,0x0f]
1325 ; CHECK: sqdmull2.2d    v0, v0, v0[3]   ; encoding: [0x00,0xb8,0xa0,0x4f]
1326 ; CHECK: sqrdmulh.4h    v0, v0, v0[0]   ; encoding: [0x00,0xd0,0x40,0x0f]
1327 ; CHECK: sqrdmulh.8h    v0, v0, v0[1]   ; encoding: [0x00,0xd0,0x50,0x4f]
1328 ; CHECK: sqrdmulh.2s    v0, v0, v0[2]   ; encoding: [0x00,0xd8,0x80,0x0f]
1329 ; CHECK: sqrdmulh.4s    v0, v0, v0[3]   ; encoding: [0x00,0xd8,0xa0,0x4f]
1330 ; CHECK: umlal.4s       v0, v0, v0[0]   ; encoding: [0x00,0x20,0x40,0x2f]
1331 ; CHECK: umlal2.4s      v0, v0, v0[1]   ; encoding: [0x00,0x20,0x50,0x6f]
1332 ; CHECK: umlal.2d       v0, v0, v0[2]   ; encoding: [0x00,0x28,0x80,0x2f]
1333 ; CHECK: umlal2.2d      v0, v0, v0[3]   ; encoding: [0x00,0x28,0xa0,0x6f]
1334 ; CHECK: umlsl.4s       v0, v0, v0[0]   ; encoding: [0x00,0x60,0x40,0x2f]
1335 ; CHECK: umlsl2.4s      v0, v0, v0[1]   ; encoding: [0x00,0x60,0x50,0x6f]
1336 ; CHECK: umlsl.2d       v0, v0, v0[2]   ; encoding: [0x00,0x68,0x80,0x2f]
1337 ; CHECK: umlsl2.2d      v0, v0, v0[3]   ; encoding: [0x00,0x68,0xa0,0x6f]
1338 ; CHECK: umull.4s       v0, v0, v0[0]   ; encoding: [0x00,0xa0,0x40,0x2f]
1339 ; CHECK: umull2.4s      v0, v0, v0[1]   ; encoding: [0x00,0xa0,0x50,0x6f]
1340 ; CHECK: umull.2d       v0, v0, v0[2]   ; encoding: [0x00,0xa8,0x80,0x2f]
1341 ; CHECK: umull2.2d      v0, v0, v0[3]   ; encoding: [0x00,0xa8,0xa0,0x6f]
1342
1343
1344 ;===-------------------------------------------------------------------------===
1345 ; AdvSIMD scalar with shift
1346 ;===-------------------------------------------------------------------------===
1347
1348   fcvtzs s0, s0, #1
1349   fcvtzs d0, d0, #2
1350   fcvtzu s0, s0, #1
1351   fcvtzu d0, d0, #2
1352   shl    d0, d0, #1
1353   sli    d0, d0, #1
1354   sqrshrn b0, h0, #1
1355   sqrshrn h0, s0, #2
1356   sqrshrn s0, d0, #3
1357   sqrshrun b0, h0, #1
1358   sqrshrun h0, s0, #2
1359   sqrshrun s0, d0, #3
1360   sqshlu  b0, b0, #1
1361   sqshlu  h0, h0, #2
1362   sqshlu  s0, s0, #3
1363   sqshlu  d0, d0, #4
1364   sqshl   b0, b0, #1
1365   sqshl   h0, h0, #2
1366   sqshl   s0, s0, #3
1367   sqshl   d0, d0, #4
1368   sqshrn  b0, h0, #1
1369   sqshrn  h0, s0, #2
1370   sqshrn  s0, d0, #3
1371   sqshrun b0, h0, #1
1372   sqshrun h0, s0, #2
1373   sqshrun s0, d0, #3
1374   sri     d0, d0, #1
1375   srshr   d0, d0, #1
1376   srsra   d0, d0, #1
1377   sshr    d0, d0, #1
1378   ucvtf   s0, s0, #1
1379   ucvtf   d0, d0, #2
1380   scvtf   s0, s0, #1
1381   scvtf   d0, d0, #2
1382   uqrshrn b0, h0, #1
1383   uqrshrn h0, s0, #2
1384   uqrshrn s0, d0, #3
1385   uqshl   b0, b0, #1
1386   uqshl   h0, h0, #2
1387   uqshl   s0, s0, #3
1388   uqshl   d0, d0, #4
1389   uqshrn  b0, h0, #1
1390   uqshrn  h0, s0, #2
1391   uqshrn  s0, d0, #3
1392   urshr   d0, d0, #1
1393   ursra   d0, d0, #1
1394   ushr    d0, d0, #1
1395   usra    d0, d0, #1
1396
1397 ; CHECK: fcvtzs s0, s0, #1              ; encoding: [0x00,0xfc,0x3f,0x5f]
1398 ; CHECK: fcvtzs d0, d0, #2              ; encoding: [0x00,0xfc,0x7e,0x5f]
1399 ; CHECK: fcvtzu s0, s0, #1              ; encoding: [0x00,0xfc,0x3f,0x7f]
1400 ; CHECK: fcvtzu d0, d0, #2              ; encoding: [0x00,0xfc,0x7e,0x7f]
1401 ; CHECK: shl    d0, d0, #1              ; encoding: [0x00,0x54,0x41,0x5f]
1402 ; CHECK: sli    d0, d0, #1              ; encoding: [0x00,0x54,0x41,0x7f]
1403 ; CHECK: sqrshrn        b0, h0, #1              ; encoding: [0x00,0x9c,0x0f,0x5f]
1404 ; CHECK: sqrshrn        h0, s0, #2              ; encoding: [0x00,0x9c,0x1e,0x5f]
1405 ; CHECK: sqrshrn        s0, d0, #3              ; encoding: [0x00,0x9c,0x3d,0x5f]
1406 ; CHECK: sqrshrun       b0, h0, #1      ; encoding: [0x00,0x8c,0x0f,0x7f]
1407 ; CHECK: sqrshrun       h0, s0, #2      ; encoding: [0x00,0x8c,0x1e,0x7f]
1408 ; CHECK: sqrshrun       s0, d0, #3      ; encoding: [0x00,0x8c,0x3d,0x7f]
1409 ; CHECK: sqshlu b0, b0, #1              ; encoding: [0x00,0x64,0x09,0x7f]
1410 ; CHECK: sqshlu h0, h0, #2              ; encoding: [0x00,0x64,0x12,0x7f]
1411 ; CHECK: sqshlu s0, s0, #3              ; encoding: [0x00,0x64,0x23,0x7f]
1412 ; CHECK: sqshlu d0, d0, #4              ; encoding: [0x00,0x64,0x44,0x7f]
1413 ; CHECK: sqshl  b0, b0, #1              ; encoding: [0x00,0x74,0x09,0x5f]
1414 ; CHECK: sqshl  h0, h0, #2              ; encoding: [0x00,0x74,0x12,0x5f]
1415 ; CHECK: sqshl  s0, s0, #3              ; encoding: [0x00,0x74,0x23,0x5f]
1416 ; CHECK: sqshl  d0, d0, #4              ; encoding: [0x00,0x74,0x44,0x5f]
1417 ; CHECK: sqshrn b0, h0, #1              ; encoding: [0x00,0x94,0x0f,0x5f]
1418 ; CHECK: sqshrn h0, s0, #2              ; encoding: [0x00,0x94,0x1e,0x5f]
1419 ; CHECK: sqshrn s0, d0, #3              ; encoding: [0x00,0x94,0x3d,0x5f]
1420 ; CHECK: sqshrun        b0, h0, #1              ; encoding: [0x00,0x84,0x0f,0x7f]
1421 ; CHECK: sqshrun        h0, s0, #2              ; encoding: [0x00,0x84,0x1e,0x7f]
1422 ; CHECK: sqshrun        s0, d0, #3              ; encoding: [0x00,0x84,0x3d,0x7f]
1423 ; CHECK: sri    d0, d0, #1              ; encoding: [0x00,0x44,0x7f,0x7f]
1424 ; CHECK: srshr  d0, d0, #1              ; encoding: [0x00,0x24,0x7f,0x5f]
1425 ; CHECK: srsra  d0, d0, #1              ; encoding: [0x00,0x34,0x7f,0x5f]
1426 ; CHECK: sshr   d0, d0, #1              ; encoding: [0x00,0x04,0x7f,0x5f]
1427 ; CHECK: ucvtf  s0, s0, #1              ; encoding: [0x00,0xe4,0x3f,0x7f]
1428 ; CHECK: ucvtf  d0, d0, #2              ; encoding: [0x00,0xe4,0x7e,0x7f]
1429 ; check: scvtf  s0, s0, #1              ; encoding: [0x00,0xe4,0x3f,0x5f]
1430 ; check: scvtf  d0, d0, #2              ; encoding: [0x00,0xe4,0x7e,0x5f]
1431 ; CHECK: uqrshrn        b0, h0, #1              ; encoding: [0x00,0x9c,0x0f,0x7f]
1432 ; CHECK: uqrshrn        h0, s0, #2              ; encoding: [0x00,0x9c,0x1e,0x7f]
1433 ; CHECK: uqrshrn        s0, d0, #3              ; encoding: [0x00,0x9c,0x3d,0x7f]
1434 ; CHECK: uqshl  b0, b0, #1              ; encoding: [0x00,0x74,0x09,0x7f]
1435 ; CHECK: uqshl  h0, h0, #2              ; encoding: [0x00,0x74,0x12,0x7f]
1436 ; CHECK: uqshl  s0, s0, #3              ; encoding: [0x00,0x74,0x23,0x7f]
1437 ; CHECK: uqshl  d0, d0, #4              ; encoding: [0x00,0x74,0x44,0x7f]
1438 ; CHECK: uqshrn b0, h0, #1              ; encoding: [0x00,0x94,0x0f,0x7f]
1439 ; CHECK: uqshrn h0, s0, #2              ; encoding: [0x00,0x94,0x1e,0x7f]
1440 ; CHECK: uqshrn s0, d0, #3              ; encoding: [0x00,0x94,0x3d,0x7f]
1441 ; CHECK: urshr  d0, d0, #1              ; encoding: [0x00,0x24,0x7f,0x7f]
1442 ; CHECK: ursra  d0, d0, #1              ; encoding: [0x00,0x34,0x7f,0x7f]
1443 ; CHECK: ushr   d0, d0, #1              ; encoding: [0x00,0x04,0x7f,0x7f]
1444 ; CHECK: usra   d0, d0, #1              ; encoding: [0x00,0x14,0x7f,0x7f]
1445
1446
1447 ;===-------------------------------------------------------------------------===
1448 ; AdvSIMD vector with shift
1449 ;===-------------------------------------------------------------------------===
1450
1451    fcvtzs.2s v0, v0, #1
1452    fcvtzs.4s v0, v0, #2
1453    fcvtzs.2d v0, v0, #3
1454    fcvtzu.2s v0, v0, #1
1455    fcvtzu.4s v0, v0, #2
1456    fcvtzu.2d v0, v0, #3
1457    rshrn.8b v0, v0, #1
1458    rshrn2.16b v0, v0, #2
1459    rshrn.4h v0, v0, #3
1460    rshrn2.8h v0, v0, #4
1461    rshrn.2s v0, v0, #5
1462    rshrn2.4s v0, v0, #6
1463    scvtf.2s v0, v0, #1
1464    scvtf.4s v0, v0, #2
1465    scvtf.2d v0, v0, #3
1466    shl.8b v0, v0, #1
1467    shl.16b v0, v0, #2
1468    shl.4h v0, v0, #3
1469    shl.8h v0, v0, #4
1470    shl.2s v0, v0, #5
1471    shl.4s v0, v0, #6
1472    shl.2d v0, v0, #7
1473    shrn.8b v0, v0, #1
1474    shrn2.16b v0, v0, #2
1475    shrn.4h v0, v0, #3
1476    shrn2.8h v0, v0, #4
1477    shrn.2s v0, v0, #5
1478    shrn2.4s v0, v0, #6
1479    sli.8b v0, v0, #1
1480    sli.16b v0, v0, #2
1481    sli.4h v0, v0, #3
1482    sli.8h v0, v0, #4
1483    sli.2s v0, v0, #5
1484    sli.4s v0, v0, #6
1485    sli.2d v0, v0, #7
1486    sqrshrn.8b v0, v0, #1
1487    sqrshrn2.16b v0, v0, #2
1488    sqrshrn.4h v0, v0, #3
1489    sqrshrn2.8h v0, v0, #4
1490    sqrshrn.2s v0, v0, #5
1491    sqrshrn2.4s v0, v0, #6
1492    sqrshrun.8b v0, v0, #1
1493    sqrshrun2.16b v0, v0, #2
1494    sqrshrun.4h v0, v0, #3
1495    sqrshrun2.8h v0, v0, #4
1496    sqrshrun.2s v0, v0, #5
1497    sqrshrun2.4s v0, v0, #6
1498    sqshlu.8b v0, v0, #1
1499    sqshlu.16b v0, v0, #2
1500    sqshlu.4h v0, v0, #3
1501    sqshlu.8h v0, v0, #4
1502    sqshlu.2s v0, v0, #5
1503    sqshlu.4s v0, v0, #6
1504    sqshlu.2d v0, v0, #7
1505    sqshl.8b v0, v0, #1
1506    sqshl.16b v0, v0, #2
1507    sqshl.4h v0, v0, #3
1508    sqshl.8h v0, v0, #4
1509    sqshl.2s v0, v0, #5
1510    sqshl.4s v0, v0, #6
1511    sqshl.2d v0, v0, #7
1512    sqshrn.8b v0, v0, #1
1513    sqshrn2.16b v0, v0, #2
1514    sqshrn.4h v0, v0, #3
1515    sqshrn2.8h v0, v0, #4
1516    sqshrn.2s v0, v0, #5
1517    sqshrn2.4s v0, v0, #6
1518    sqshrun.8b v0, v0, #1
1519    sqshrun2.16b v0, v0, #2
1520    sqshrun.4h v0, v0, #3
1521    sqshrun2.8h v0, v0, #4
1522    sqshrun.2s v0, v0, #5
1523    sqshrun2.4s v0, v0, #6
1524    sri.8b v0, v0, #1
1525    sri.16b v0, v0, #2
1526    sri.4h v0, v0, #3
1527    sri.8h v0, v0, #4
1528    sri.2s v0, v0, #5
1529    sri.4s v0, v0, #6
1530    sri.2d v0, v0, #7
1531    srshr.8b v0, v0, #1
1532    srshr.16b v0, v0, #2
1533    srshr.4h v0, v0, #3
1534    srshr.8h v0, v0, #4
1535    srshr.2s v0, v0, #5
1536    srshr.4s v0, v0, #6
1537    srshr.2d v0, v0, #7
1538    srsra.8b v0, v0, #1
1539    srsra.16b v0, v0, #2
1540    srsra.4h v0, v0, #3
1541    srsra.8h v0, v0, #4
1542    srsra.2s v0, v0, #5
1543    srsra.4s v0, v0, #6
1544    srsra.2d v0, v0, #7
1545    sshll.8h v0, v0, #1
1546    sshll2.8h v0, v0, #2
1547    sshll.4s v0, v0, #3
1548    sshll2.4s v0, v0, #4
1549    sshll.2d v0, v0, #5
1550    sshll2.2d v0, v0, #6
1551    sshr.8b v0, v0, #1
1552    sshr.16b v0, v0, #2
1553    sshr.4h v0, v0, #3
1554    sshr.8h v0, v0, #4
1555    sshr.2s v0, v0, #5
1556    sshr.4s v0, v0, #6
1557    sshr.2d v0, v0, #7
1558    sshr.8b v0, v0, #1
1559    ssra.16b v0, v0, #2
1560    ssra.4h v0, v0, #3
1561    ssra.8h v0, v0, #4
1562    ssra.2s v0, v0, #5
1563    ssra.4s v0, v0, #6
1564    ssra.2d v0, v0, #7
1565    ssra d0, d0, #64
1566    ucvtf.2s v0, v0, #1
1567    ucvtf.4s v0, v0, #2
1568    ucvtf.2d v0, v0, #3
1569    uqrshrn.8b v0, v0, #1
1570    uqrshrn2.16b v0, v0, #2
1571    uqrshrn.4h v0, v0, #3
1572    uqrshrn2.8h v0, v0, #4
1573    uqrshrn.2s v0, v0, #5
1574    uqrshrn2.4s v0, v0, #6
1575    uqshl.8b v0, v0, #1
1576    uqshl.16b v0, v0, #2
1577    uqshl.4h v0, v0, #3
1578    uqshl.8h v0, v0, #4
1579    uqshl.2s v0, v0, #5
1580    uqshl.4s v0, v0, #6
1581    uqshl.2d v0, v0, #7
1582    uqshrn.8b v0, v0, #1
1583    uqshrn2.16b v0, v0, #2
1584    uqshrn.4h v0, v0, #3
1585    uqshrn2.8h v0, v0, #4
1586    uqshrn.2s v0, v0, #5
1587    uqshrn2.4s v0, v0, #6
1588    urshr.8b v0, v0, #1
1589    urshr.16b v0, v0, #2
1590    urshr.4h v0, v0, #3
1591    urshr.8h v0, v0, #4
1592    urshr.2s v0, v0, #5
1593    urshr.4s v0, v0, #6
1594    urshr.2d v0, v0, #7
1595    ursra.8b v0, v0, #1
1596    ursra.16b v0, v0, #2
1597    ursra.4h v0, v0, #3
1598    ursra.8h v0, v0, #4
1599    ursra.2s v0, v0, #5
1600    ursra.4s v0, v0, #6
1601    ursra.2d v0, v0, #7
1602    ushll.8h v0, v0, #1
1603    ushll2.8h v0, v0, #2
1604    ushll.4s v0, v0, #3
1605    ushll2.4s v0, v0, #4
1606    ushll.2d v0, v0, #5
1607    ushll2.2d v0, v0, #6
1608    ushr.8b v0, v0, #1
1609    ushr.16b v0, v0, #2
1610    ushr.4h v0, v0, #3
1611    ushr.8h v0, v0, #4
1612    ushr.2s v0, v0, #5
1613    ushr.4s v0, v0, #6
1614    ushr.2d v0, v0, #7
1615    usra.8b v0, v0, #1
1616    usra.16b v0, v0, #2
1617    usra.4h v0, v0, #3
1618    usra.8h v0, v0, #4
1619    usra.2s v0, v0, #5
1620    usra.4s v0, v0, #6
1621    usra.2d v0, v0, #7
1622
1623 ; CHECK: fcvtzs.2s      v0, v0, #1      ; encoding: [0x00,0xfc,0x3f,0x0f]
1624 ; CHECK: fcvtzs.4s      v0, v0, #2      ; encoding: [0x00,0xfc,0x3e,0x4f]
1625 ; CHECK: fcvtzs.2d      v0, v0, #3      ; encoding: [0x00,0xfc,0x7d,0x4f]
1626 ; CHECK: fcvtzu.2s      v0, v0, #1      ; encoding: [0x00,0xfc,0x3f,0x2f]
1627 ; CHECK: fcvtzu.4s      v0, v0, #2      ; encoding: [0x00,0xfc,0x3e,0x6f]
1628 ; CHECK: fcvtzu.2d      v0, v0, #3      ; encoding: [0x00,0xfc,0x7d,0x6f]
1629 ; CHECK: rshrn.8b       v0, v0, #1      ; encoding: [0x00,0x8c,0x0f,0x0f]
1630 ; CHECK: rshrn2.16b     v0, v0, #2      ; encoding: [0x00,0x8c,0x0e,0x4f]
1631 ; CHECK: rshrn.4h       v0, v0, #3      ; encoding: [0x00,0x8c,0x1d,0x0f]
1632 ; CHECK: rshrn2.8h      v0, v0, #4      ; encoding: [0x00,0x8c,0x1c,0x4f]
1633 ; CHECK: rshrn.2s       v0, v0, #5      ; encoding: [0x00,0x8c,0x3b,0x0f]
1634 ; CHECK: rshrn2.4s      v0, v0, #6      ; encoding: [0x00,0x8c,0x3a,0x4f]
1635 ; CHECK: scvtf.2s       v0, v0, #1      ; encoding: [0x00,0xe4,0x3f,0x0f]
1636 ; CHECK: scvtf.4s       v0, v0, #2      ; encoding: [0x00,0xe4,0x3e,0x4f]
1637 ; CHECK: scvtf.2d       v0, v0, #3      ; encoding: [0x00,0xe4,0x7d,0x4f]
1638 ; CHECK: shl.8b v0, v0, #1              ; encoding: [0x00,0x54,0x09,0x0f]
1639 ; CHECK: shl.16b        v0, v0, #2              ; encoding: [0x00,0x54,0x0a,0x4f]
1640 ; CHECK: shl.4h v0, v0, #3              ; encoding: [0x00,0x54,0x13,0x0f]
1641 ; CHECK: shl.8h v0, v0, #4              ; encoding: [0x00,0x54,0x14,0x4f]
1642 ; CHECK: shl.2s v0, v0, #5              ; encoding: [0x00,0x54,0x25,0x0f]
1643 ; CHECK: shl.4s v0, v0, #6              ; encoding: [0x00,0x54,0x26,0x4f]
1644 ; CHECK: shl.2d v0, v0, #7              ; encoding: [0x00,0x54,0x47,0x4f]
1645 ; CHECK: shrn.8b        v0, v0, #1              ; encoding: [0x00,0x84,0x0f,0x0f]
1646 ; CHECK: shrn2.16b      v0, v0, #2      ; encoding: [0x00,0x84,0x0e,0x4f]
1647 ; CHECK: shrn.4h        v0, v0, #3              ; encoding: [0x00,0x84,0x1d,0x0f]
1648 ; CHECK: shrn2.8h       v0, v0, #4      ; encoding: [0x00,0x84,0x1c,0x4f]
1649 ; CHECK: shrn.2s        v0, v0, #5              ; encoding: [0x00,0x84,0x3b,0x0f]
1650 ; CHECK: shrn2.4s       v0, v0, #6      ; encoding: [0x00,0x84,0x3a,0x4f]
1651 ; CHECK: sli.8b v0, v0, #1              ; encoding: [0x00,0x54,0x09,0x2f]
1652 ; CHECK: sli.16b        v0, v0, #2              ; encoding: [0x00,0x54,0x0a,0x6f]
1653 ; CHECK: sli.4h v0, v0, #3              ; encoding: [0x00,0x54,0x13,0x2f]
1654 ; CHECK: sli.8h v0, v0, #4              ; encoding: [0x00,0x54,0x14,0x6f]
1655 ; CHECK: sli.2s v0, v0, #5              ; encoding: [0x00,0x54,0x25,0x2f]
1656 ; CHECK: sli.4s v0, v0, #6              ; encoding: [0x00,0x54,0x26,0x6f]
1657 ; CHECK: sli.2d v0, v0, #7              ; encoding: [0x00,0x54,0x47,0x6f]
1658 ; CHECK: sqrshrn.8b     v0, v0, #1      ; encoding: [0x00,0x9c,0x0f,0x0f]
1659 ; CHECK: sqrshrn2.16b   v0, v0, #2      ; encoding: [0x00,0x9c,0x0e,0x4f]
1660 ; CHECK: sqrshrn.4h     v0, v0, #3      ; encoding: [0x00,0x9c,0x1d,0x0f]
1661 ; CHECK: sqrshrn2.8h    v0, v0, #4      ; encoding: [0x00,0x9c,0x1c,0x4f]
1662 ; CHECK: sqrshrn.2s     v0, v0, #5      ; encoding: [0x00,0x9c,0x3b,0x0f]
1663 ; CHECK: sqrshrn2.4s    v0, v0, #6      ; encoding: [0x00,0x9c,0x3a,0x4f]
1664 ; CHECK: sqrshrun.8b    v0, v0, #1      ; encoding: [0x00,0x8c,0x0f,0x2f]
1665 ; CHECK: sqrshrun2.16b  v0, v0, #2      ; encoding: [0x00,0x8c,0x0e,0x6f]
1666 ; CHECK: sqrshrun.4h    v0, v0, #3      ; encoding: [0x00,0x8c,0x1d,0x2f]
1667 ; CHECK: sqrshrun2.8h   v0, v0, #4      ; encoding: [0x00,0x8c,0x1c,0x6f]
1668 ; CHECK: sqrshrun.2s    v0, v0, #5      ; encoding: [0x00,0x8c,0x3b,0x2f]
1669 ; CHECK: sqrshrun2.4s   v0, v0, #6      ; encoding: [0x00,0x8c,0x3a,0x6f]
1670 ; CHECK: sqshlu.8b      v0, v0, #1      ; encoding: [0x00,0x64,0x09,0x2f]
1671 ; CHECK: sqshlu.16b     v0, v0, #2      ; encoding: [0x00,0x64,0x0a,0x6f]
1672 ; CHECK: sqshlu.4h      v0, v0, #3      ; encoding: [0x00,0x64,0x13,0x2f]
1673 ; CHECK: sqshlu.8h      v0, v0, #4      ; encoding: [0x00,0x64,0x14,0x6f]
1674 ; CHECK: sqshlu.2s      v0, v0, #5      ; encoding: [0x00,0x64,0x25,0x2f]
1675 ; CHECK: sqshlu.4s      v0, v0, #6      ; encoding: [0x00,0x64,0x26,0x6f]
1676 ; CHECK: sqshlu.2d      v0, v0, #7      ; encoding: [0x00,0x64,0x47,0x6f]
1677 ; CHECK: sqshl.8b       v0, v0, #1      ; encoding: [0x00,0x74,0x09,0x0f]
1678 ; CHECK: sqshl.16b      v0, v0, #2      ; encoding: [0x00,0x74,0x0a,0x4f]
1679 ; CHECK: sqshl.4h       v0, v0, #3      ; encoding: [0x00,0x74,0x13,0x0f]
1680 ; CHECK: sqshl.8h       v0, v0, #4      ; encoding: [0x00,0x74,0x14,0x4f]
1681 ; CHECK: sqshl.2s       v0, v0, #5      ; encoding: [0x00,0x74,0x25,0x0f]
1682 ; CHECK: sqshl.4s       v0, v0, #6      ; encoding: [0x00,0x74,0x26,0x4f]
1683 ; CHECK: sqshl.2d       v0, v0, #7      ; encoding: [0x00,0x74,0x47,0x4f]
1684 ; CHECK: sqshrn.8b      v0, v0, #1      ; encoding: [0x00,0x94,0x0f,0x0f]
1685 ; CHECK: sqshrn2.16b    v0, v0, #2      ; encoding: [0x00,0x94,0x0e,0x4f]
1686 ; CHECK: sqshrn.4h      v0, v0, #3      ; encoding: [0x00,0x94,0x1d,0x0f]
1687 ; CHECK: sqshrn2.8h     v0, v0, #4      ; encoding: [0x00,0x94,0x1c,0x4f]
1688 ; CHECK: sqshrn.2s      v0, v0, #5      ; encoding: [0x00,0x94,0x3b,0x0f]
1689 ; CHECK: sqshrn2.4s     v0, v0, #6      ; encoding: [0x00,0x94,0x3a,0x4f]
1690 ; CHECK: sqshrun.8b     v0, v0, #1      ; encoding: [0x00,0x84,0x0f,0x2f]
1691 ; CHECK: sqshrun2.16b   v0, v0, #2      ; encoding: [0x00,0x84,0x0e,0x6f]
1692 ; CHECK: sqshrun.4h     v0, v0, #3      ; encoding: [0x00,0x84,0x1d,0x2f]
1693 ; CHECK: sqshrun2.8h    v0, v0, #4      ; encoding: [0x00,0x84,0x1c,0x6f]
1694 ; CHECK: sqshrun.2s     v0, v0, #5      ; encoding: [0x00,0x84,0x3b,0x2f]
1695 ; CHECK: sqshrun2.4s    v0, v0, #6      ; encoding: [0x00,0x84,0x3a,0x6f]
1696 ; CHECK: sri.8b v0, v0, #1              ; encoding: [0x00,0x44,0x0f,0x2f]
1697 ; CHECK: sri.16b        v0, v0, #2              ; encoding: [0x00,0x44,0x0e,0x6f]
1698 ; CHECK: sri.4h v0, v0, #3              ; encoding: [0x00,0x44,0x1d,0x2f]
1699 ; CHECK: sri.8h v0, v0, #4              ; encoding: [0x00,0x44,0x1c,0x6f]
1700 ; CHECK: sri.2s v0, v0, #5              ; encoding: [0x00,0x44,0x3b,0x2f]
1701 ; CHECK: sri.4s v0, v0, #6              ; encoding: [0x00,0x44,0x3a,0x6f]
1702 ; CHECK: sri.2d v0, v0, #7              ; encoding: [0x00,0x44,0x79,0x6f]
1703 ; CHECK: srshr.8b       v0, v0, #1      ; encoding: [0x00,0x24,0x0f,0x0f]
1704 ; CHECK: srshr.16b      v0, v0, #2      ; encoding: [0x00,0x24,0x0e,0x4f]
1705 ; CHECK: srshr.4h       v0, v0, #3      ; encoding: [0x00,0x24,0x1d,0x0f]
1706 ; CHECK: srshr.8h       v0, v0, #4      ; encoding: [0x00,0x24,0x1c,0x4f]
1707 ; CHECK: srshr.2s       v0, v0, #5      ; encoding: [0x00,0x24,0x3b,0x0f]
1708 ; CHECK: srshr.4s       v0, v0, #6      ; encoding: [0x00,0x24,0x3a,0x4f]
1709 ; CHECK: srshr.2d       v0, v0, #7      ; encoding: [0x00,0x24,0x79,0x4f]
1710 ; CHECK: srsra.8b       v0, v0, #1      ; encoding: [0x00,0x34,0x0f,0x0f]
1711 ; CHECK: srsra.16b      v0, v0, #2      ; encoding: [0x00,0x34,0x0e,0x4f]
1712 ; CHECK: srsra.4h       v0, v0, #3      ; encoding: [0x00,0x34,0x1d,0x0f]
1713 ; CHECK: srsra.8h       v0, v0, #4      ; encoding: [0x00,0x34,0x1c,0x4f]
1714 ; CHECK: srsra.2s       v0, v0, #5      ; encoding: [0x00,0x34,0x3b,0x0f]
1715 ; CHECK: srsra.4s       v0, v0, #6      ; encoding: [0x00,0x34,0x3a,0x4f]
1716 ; CHECK: srsra.2d       v0, v0, #7      ; encoding: [0x00,0x34,0x79,0x4f]
1717 ; CHECK: sshll.8h       v0, v0, #1      ; encoding: [0x00,0xa4,0x09,0x0f]
1718 ; CHECK: sshll2.8h      v0, v0, #2      ; encoding: [0x00,0xa4,0x0a,0x4f]
1719 ; CHECK: sshll.4s       v0, v0, #3      ; encoding: [0x00,0xa4,0x13,0x0f]
1720 ; CHECK: sshll2.4s      v0, v0, #4      ; encoding: [0x00,0xa4,0x14,0x4f]
1721 ; CHECK: sshll.2d       v0, v0, #5      ; encoding: [0x00,0xa4,0x25,0x0f]
1722 ; CHECK: sshll2.2d      v0, v0, #6      ; encoding: [0x00,0xa4,0x26,0x4f]
1723 ; CHECK: sshr.8b        v0, v0, #1              ; encoding: [0x00,0x04,0x0f,0x0f]
1724 ; CHECK: sshr.16b       v0, v0, #2      ; encoding: [0x00,0x04,0x0e,0x4f]
1725 ; CHECK: sshr.4h        v0, v0, #3              ; encoding: [0x00,0x04,0x1d,0x0f]
1726 ; CHECK: sshr.8h        v0, v0, #4              ; encoding: [0x00,0x04,0x1c,0x4f]
1727 ; CHECK: sshr.2s        v0, v0, #5              ; encoding: [0x00,0x04,0x3b,0x0f]
1728 ; CHECK: sshr.4s        v0, v0, #6              ; encoding: [0x00,0x04,0x3a,0x4f]
1729 ; CHECK: sshr.2d        v0, v0, #7              ; encoding: [0x00,0x04,0x79,0x4f]
1730 ; CHECK: sshr.8b        v0, v0, #1              ; encoding: [0x00,0x04,0x0f,0x0f]
1731 ; CHECK: ssra.16b       v0, v0, #2      ; encoding: [0x00,0x14,0x0e,0x4f]
1732 ; CHECK: ssra.4h        v0, v0, #3              ; encoding: [0x00,0x14,0x1d,0x0f]
1733 ; CHECK: ssra.8h        v0, v0, #4              ; encoding: [0x00,0x14,0x1c,0x4f]
1734 ; CHECK: ssra.2s        v0, v0, #5              ; encoding: [0x00,0x14,0x3b,0x0f]
1735 ; CHECK: ssra.4s        v0, v0, #6              ; encoding: [0x00,0x14,0x3a,0x4f]
1736 ; CHECK: ssra.2d        v0, v0, #7              ; encoding: [0x00,0x14,0x79,0x4f]
1737 ; CHECK: ssra           d0, d0, #64             ; encoding: [0x00,0x14,0x40,0x5f]
1738 ; CHECK: ucvtf.2s       v0, v0, #1      ; encoding: [0x00,0xe4,0x3f,0x2f]
1739 ; CHECK: ucvtf.4s       v0, v0, #2      ; encoding: [0x00,0xe4,0x3e,0x6f]
1740 ; CHECK: ucvtf.2d       v0, v0, #3      ; encoding: [0x00,0xe4,0x7d,0x6f]
1741 ; CHECK: uqrshrn.8b     v0, v0, #1      ; encoding: [0x00,0x9c,0x0f,0x2f]
1742 ; CHECK: uqrshrn2.16b   v0, v0, #2      ; encoding: [0x00,0x9c,0x0e,0x6f]
1743 ; CHECK: uqrshrn.4h     v0, v0, #3      ; encoding: [0x00,0x9c,0x1d,0x2f]
1744 ; CHECK: uqrshrn2.8h    v0, v0, #4      ; encoding: [0x00,0x9c,0x1c,0x6f]
1745 ; CHECK: uqrshrn.2s     v0, v0, #5      ; encoding: [0x00,0x9c,0x3b,0x2f]
1746 ; CHECK: uqrshrn2.4s    v0, v0, #6      ; encoding: [0x00,0x9c,0x3a,0x6f]
1747 ; CHECK: uqshl.8b       v0, v0, #1      ; encoding: [0x00,0x74,0x09,0x2f]
1748 ; CHECK: uqshl.16b      v0, v0, #2      ; encoding: [0x00,0x74,0x0a,0x6f]
1749 ; CHECK: uqshl.4h       v0, v0, #3      ; encoding: [0x00,0x74,0x13,0x2f]
1750 ; CHECK: uqshl.8h       v0, v0, #4      ; encoding: [0x00,0x74,0x14,0x6f]
1751 ; CHECK: uqshl.2s       v0, v0, #5      ; encoding: [0x00,0x74,0x25,0x2f]
1752 ; CHECK: uqshl.4s       v0, v0, #6      ; encoding: [0x00,0x74,0x26,0x6f]
1753 ; CHECK: uqshl.2d       v0, v0, #7      ; encoding: [0x00,0x74,0x47,0x6f]
1754 ; CHECK: uqshrn.8b      v0, v0, #1      ; encoding: [0x00,0x94,0x0f,0x2f]
1755 ; CHECK: uqshrn2.16b    v0, v0, #2      ; encoding: [0x00,0x94,0x0e,0x6f]
1756 ; CHECK: uqshrn.4h      v0, v0, #3      ; encoding: [0x00,0x94,0x1d,0x2f]
1757 ; CHECK: uqshrn2.8h     v0, v0, #4      ; encoding: [0x00,0x94,0x1c,0x6f]
1758 ; CHECK: uqshrn.2s      v0, v0, #5      ; encoding: [0x00,0x94,0x3b,0x2f]
1759 ; CHECK: uqshrn2.4s     v0, v0, #6      ; encoding: [0x00,0x94,0x3a,0x6f]
1760 ; CHECK: urshr.8b       v0, v0, #1      ; encoding: [0x00,0x24,0x0f,0x2f]
1761 ; CHECK: urshr.16b      v0, v0, #2      ; encoding: [0x00,0x24,0x0e,0x6f]
1762 ; CHECK: urshr.4h       v0, v0, #3      ; encoding: [0x00,0x24,0x1d,0x2f]
1763 ; CHECK: urshr.8h       v0, v0, #4      ; encoding: [0x00,0x24,0x1c,0x6f]
1764 ; CHECK: urshr.2s       v0, v0, #5      ; encoding: [0x00,0x24,0x3b,0x2f]
1765 ; CHECK: urshr.4s       v0, v0, #6      ; encoding: [0x00,0x24,0x3a,0x6f]
1766 ; CHECK: urshr.2d       v0, v0, #7      ; encoding: [0x00,0x24,0x79,0x6f]
1767 ; CHECK: ursra.8b       v0, v0, #1      ; encoding: [0x00,0x34,0x0f,0x2f]
1768 ; CHECK: ursra.16b      v0, v0, #2      ; encoding: [0x00,0x34,0x0e,0x6f]
1769 ; CHECK: ursra.4h       v0, v0, #3      ; encoding: [0x00,0x34,0x1d,0x2f]
1770 ; CHECK: ursra.8h       v0, v0, #4      ; encoding: [0x00,0x34,0x1c,0x6f]
1771 ; CHECK: ursra.2s       v0, v0, #5      ; encoding: [0x00,0x34,0x3b,0x2f]
1772 ; CHECK: ursra.4s       v0, v0, #6      ; encoding: [0x00,0x34,0x3a,0x6f]
1773 ; CHECK: ursra.2d       v0, v0, #7      ; encoding: [0x00,0x34,0x79,0x6f]
1774 ; CHECK: ushll.8h       v0, v0, #1      ; encoding: [0x00,0xa4,0x09,0x2f]
1775 ; CHECK: ushll2.8h      v0, v0, #2      ; encoding: [0x00,0xa4,0x0a,0x6f]
1776 ; CHECK: ushll.4s       v0, v0, #3      ; encoding: [0x00,0xa4,0x13,0x2f]
1777 ; CHECK: ushll2.4s      v0, v0, #4      ; encoding: [0x00,0xa4,0x14,0x6f]
1778 ; CHECK: ushll.2d       v0, v0, #5      ; encoding: [0x00,0xa4,0x25,0x2f]
1779 ; CHECK: ushll2.2d      v0, v0, #6      ; encoding: [0x00,0xa4,0x26,0x6f]
1780 ; CHECK: ushr.8b        v0, v0, #1              ; encoding: [0x00,0x04,0x0f,0x2f]
1781 ; CHECK: ushr.16b       v0, v0, #2      ; encoding: [0x00,0x04,0x0e,0x6f]
1782 ; CHECK: ushr.4h        v0, v0, #3              ; encoding: [0x00,0x04,0x1d,0x2f]
1783 ; CHECK: ushr.8h        v0, v0, #4              ; encoding: [0x00,0x04,0x1c,0x6f]
1784 ; CHECK: ushr.2s        v0, v0, #5              ; encoding: [0x00,0x04,0x3b,0x2f]
1785 ; CHECK: ushr.4s        v0, v0, #6              ; encoding: [0x00,0x04,0x3a,0x6f]
1786 ; CHECK: ushr.2d        v0, v0, #7              ; encoding: [0x00,0x04,0x79,0x6f]
1787 ; CHECK: usra.8b        v0, v0, #1              ; encoding: [0x00,0x14,0x0f,0x2f]
1788 ; CHECK: usra.16b       v0, v0, #2      ; encoding: [0x00,0x14,0x0e,0x6f]
1789 ; CHECK: usra.4h        v0, v0, #3              ; encoding: [0x00,0x14,0x1d,0x2f]
1790 ; CHECK: usra.8h        v0, v0, #4              ; encoding: [0x00,0x14,0x1c,0x6f]
1791 ; CHECK: usra.2s        v0, v0, #5              ; encoding: [0x00,0x14,0x3b,0x2f]
1792 ; CHECK: usra.4s        v0, v0, #6              ; encoding: [0x00,0x14,0x3a,0x6f]
1793 ; CHECK: usra.2d        v0, v0, #7              ; encoding: [0x00,0x14,0x79,0x6f]
1794
1795
1796 ; ARM Verbose syntax variants.
1797
1798    rshrn v9.8b, v11.8h, #1
1799    rshrn2 v8.16b, v9.8h, #2
1800    rshrn v7.4h, v8.4s, #3
1801    rshrn2 v6.8h, v7.4s, #4
1802    rshrn v5.2s, v6.2d, #5
1803    rshrn2 v4.4s, v5.2d, #6
1804
1805    shrn v9.8b, v11.8h, #1
1806    shrn2 v8.16b, v9.8h, #2
1807    shrn v7.4h, v8.4s, #3
1808    shrn2 v6.8h, v7.4s, #4
1809    shrn v5.2s, v6.2d, #5
1810    shrn2 v4.4s, v5.2d, #6
1811
1812    sqrshrn v9.8b, v11.8h, #1
1813    sqrshrn2 v8.16b, v9.8h, #2
1814    sqrshrn v7.4h, v8.4s, #3
1815    sqrshrn2 v6.8h, v7.4s, #4
1816    sqrshrn v5.2s, v6.2d, #5
1817    sqrshrn2 v4.4s, v5.2d, #6
1818
1819    sqshrn v9.8b, v11.8h, #1
1820    sqshrn2 v8.16b, v9.8h, #2
1821    sqshrn v7.4h, v8.4s, #3
1822    sqshrn2 v6.8h, v7.4s, #4
1823    sqshrn v5.2s, v6.2d, #5
1824    sqshrn2 v4.4s, v5.2d, #6
1825
1826    sqrshrun v9.8b, v11.8h, #1
1827    sqrshrun2 v8.16b, v9.8h, #2
1828    sqrshrun v7.4h, v8.4s, #3
1829    sqrshrun2 v6.8h, v7.4s, #4
1830    sqrshrun v5.2s, v6.2d, #5
1831    sqrshrun2 v4.4s, v5.2d, #6
1832
1833    sqshrun v9.8b, v11.8h, #1
1834    sqshrun2 v8.16b, v9.8h, #2
1835    sqshrun v7.4h, v8.4s, #3
1836    sqshrun2 v6.8h, v7.4s, #4
1837    sqshrun v5.2s, v6.2d, #5
1838    sqshrun2 v4.4s, v5.2d, #6
1839
1840    uqrshrn v9.8b, v11.8h, #1
1841    uqrshrn2 v8.16b, v9.8h, #2
1842    uqrshrn v7.4h, v8.4s, #3
1843    uqrshrn2 v6.8h, v7.4s, #4
1844    uqrshrn v5.2s, v6.2d, #5
1845    uqrshrn2 v4.4s, v5.2d, #6
1846
1847    uqshrn v9.8b, v11.8h, #1
1848    uqshrn2 v8.16b, v9.8h, #2
1849    uqshrn v7.4h, v8.4s, #3
1850    uqshrn2 v6.8h, v7.4s, #4
1851    uqshrn v5.2s, v6.2d, #5
1852    uqshrn2 v4.4s, v5.2d, #6
1853
1854    sshll2 v10.8h, v3.16b, #6
1855    sshll2 v11.4s, v4.8h, #5
1856    sshll2 v12.2d, v5.4s, #4
1857    sshll v13.8h, v6.8b, #3
1858    sshll v14.4s, v7.4h, #2
1859    sshll v15.2d, v8.2s, #7
1860
1861    ushll2 v10.8h, v3.16b, #6
1862    ushll2 v11.4s, v4.8h, #5
1863    ushll2 v12.2d, v5.4s, #4
1864    ushll v13.8h, v6.8b, #3
1865    ushll v14.4s, v7.4h, #2
1866    ushll v15.2d, v8.2s, #7
1867
1868
1869 ; CHECK: rshrn.8b       v9, v11, #1     ; encoding: [0x69,0x8d,0x0f,0x0f]
1870 ; CHECK: rshrn2.16b     v8, v9, #2      ; encoding: [0x28,0x8d,0x0e,0x4f]
1871 ; CHECK: rshrn.4h       v7, v8, #3      ; encoding: [0x07,0x8d,0x1d,0x0f]
1872 ; CHECK: rshrn2.8h      v6, v7, #4      ; encoding: [0xe6,0x8c,0x1c,0x4f]
1873 ; CHECK: rshrn.2s       v5, v6, #5      ; encoding: [0xc5,0x8c,0x3b,0x0f]
1874 ; CHECK: rshrn2.4s      v4, v5, #6      ; encoding: [0xa4,0x8c,0x3a,0x4f]
1875 ; CHECK: shrn.8b        v9, v11, #1             ; encoding: [0x69,0x85,0x0f,0x0f]
1876 ; CHECK: shrn2.16b      v8, v9, #2      ; encoding: [0x28,0x85,0x0e,0x4f]
1877 ; CHECK: shrn.4h        v7, v8, #3              ; encoding: [0x07,0x85,0x1d,0x0f]
1878 ; CHECK: shrn2.8h       v6, v7, #4      ; encoding: [0xe6,0x84,0x1c,0x4f]
1879 ; CHECK: shrn.2s        v5, v6, #5              ; encoding: [0xc5,0x84,0x3b,0x0f]
1880 ; CHECK: shrn2.4s       v4, v5, #6      ; encoding: [0xa4,0x84,0x3a,0x4f]
1881 ; CHECK: sqrshrn.8b     v9, v11, #1     ; encoding: [0x69,0x9d,0x0f,0x0f]
1882 ; CHECK: sqrshrn2.16b   v8, v9, #2      ; encoding: [0x28,0x9d,0x0e,0x4f]
1883 ; CHECK: sqrshrn.4h     v7, v8, #3      ; encoding: [0x07,0x9d,0x1d,0x0f]
1884 ; CHECK: sqrshrn2.8h    v6, v7, #4      ; encoding: [0xe6,0x9c,0x1c,0x4f]
1885 ; CHECK: sqrshrn.2s     v5, v6, #5      ; encoding: [0xc5,0x9c,0x3b,0x0f]
1886 ; CHECK: sqrshrn2.4s    v4, v5, #6      ; encoding: [0xa4,0x9c,0x3a,0x4f]
1887 ; CHECK: sqshrn.8b      v9, v11, #1     ; encoding: [0x69,0x95,0x0f,0x0f]
1888 ; CHECK: sqshrn2.16b    v8, v9, #2      ; encoding: [0x28,0x95,0x0e,0x4f]
1889 ; CHECK: sqshrn.4h      v7, v8, #3      ; encoding: [0x07,0x95,0x1d,0x0f]
1890 ; CHECK: sqshrn2.8h     v6, v7, #4      ; encoding: [0xe6,0x94,0x1c,0x4f]
1891 ; CHECK: sqshrn.2s      v5, v6, #5      ; encoding: [0xc5,0x94,0x3b,0x0f]
1892 ; CHECK: sqshrn2.4s     v4, v5, #6      ; encoding: [0xa4,0x94,0x3a,0x4f]
1893 ; CHECK: sqrshrun.8b    v9, v11, #1     ; encoding: [0x69,0x8d,0x0f,0x2f]
1894 ; CHECK: sqrshrun2.16b  v8, v9, #2      ; encoding: [0x28,0x8d,0x0e,0x6f]
1895 ; CHECK: sqrshrun.4h    v7, v8, #3      ; encoding: [0x07,0x8d,0x1d,0x2f]
1896 ; CHECK: sqrshrun2.8h   v6, v7, #4      ; encoding: [0xe6,0x8c,0x1c,0x6f]
1897 ; CHECK: sqrshrun.2s    v5, v6, #5      ; encoding: [0xc5,0x8c,0x3b,0x2f]
1898 ; CHECK: sqrshrun2.4s   v4, v5, #6      ; encoding: [0xa4,0x8c,0x3a,0x6f]
1899 ; CHECK: sqshrun.8b     v9, v11, #1     ; encoding: [0x69,0x85,0x0f,0x2f]
1900 ; CHECK: sqshrun2.16b   v8, v9, #2      ; encoding: [0x28,0x85,0x0e,0x6f]
1901 ; CHECK: sqshrun.4h     v7, v8, #3      ; encoding: [0x07,0x85,0x1d,0x2f]
1902 ; CHECK: sqshrun2.8h    v6, v7, #4      ; encoding: [0xe6,0x84,0x1c,0x6f]
1903 ; CHECK: sqshrun.2s     v5, v6, #5      ; encoding: [0xc5,0x84,0x3b,0x2f]
1904 ; CHECK: sqshrun2.4s    v4, v5, #6      ; encoding: [0xa4,0x84,0x3a,0x6f]
1905 ; CHECK: uqrshrn.8b     v9, v11, #1     ; encoding: [0x69,0x9d,0x0f,0x2f]
1906 ; CHECK: uqrshrn2.16b   v8, v9, #2      ; encoding: [0x28,0x9d,0x0e,0x6f]
1907 ; CHECK: uqrshrn.4h     v7, v8, #3      ; encoding: [0x07,0x9d,0x1d,0x2f]
1908 ; CHECK: uqrshrn2.8h    v6, v7, #4      ; encoding: [0xe6,0x9c,0x1c,0x6f]
1909 ; CHECK: uqrshrn.2s     v5, v6, #5      ; encoding: [0xc5,0x9c,0x3b,0x2f]
1910 ; CHECK: uqrshrn2.4s    v4, v5, #6      ; encoding: [0xa4,0x9c,0x3a,0x6f]
1911 ; CHECK: uqshrn.8b      v9, v11, #1     ; encoding: [0x69,0x95,0x0f,0x2f]
1912 ; CHECK: uqshrn2.16b    v8, v9, #2      ; encoding: [0x28,0x95,0x0e,0x6f]
1913 ; CHECK: uqshrn.4h      v7, v8, #3      ; encoding: [0x07,0x95,0x1d,0x2f]
1914 ; CHECK: uqshrn2.8h     v6, v7, #4      ; encoding: [0xe6,0x94,0x1c,0x6f]
1915 ; CHECK: uqshrn.2s      v5, v6, #5      ; encoding: [0xc5,0x94,0x3b,0x2f]
1916 ; CHECK: uqshrn2.4s     v4, v5, #6      ; encoding: [0xa4,0x94,0x3a,0x6f]
1917 ; CHECK: sshll2.8h      v10, v3, #6     ; encoding: [0x6a,0xa4,0x0e,0x4f]
1918 ; CHECK: sshll2.4s      v11, v4, #5     ; encoding: [0x8b,0xa4,0x15,0x4f]
1919 ; CHECK: sshll2.2d      v12, v5, #4     ; encoding: [0xac,0xa4,0x24,0x4f]
1920 ; CHECK: sshll.8h       v13, v6, #3     ; encoding: [0xcd,0xa4,0x0b,0x0f]
1921 ; CHECK: sshll.4s       v14, v7, #2     ; encoding: [0xee,0xa4,0x12,0x0f]
1922 ; CHECK: sshll.2d       v15, v8, #7     ; encoding: [0x0f,0xa5,0x27,0x0f]
1923 ; CHECK: ushll2.8h      v10, v3, #6     ; encoding: [0x6a,0xa4,0x0e,0x6f]
1924 ; CHECK: ushll2.4s      v11, v4, #5     ; encoding: [0x8b,0xa4,0x15,0x6f]
1925 ; CHECK: ushll2.2d      v12, v5, #4     ; encoding: [0xac,0xa4,0x24,0x6f]
1926 ; CHECK: ushll.8h       v13, v6, #3     ; encoding: [0xcd,0xa4,0x0b,0x2f]
1927 ; CHECK: ushll.4s       v14, v7, #2     ; encoding: [0xee,0xa4,0x12,0x2f]
1928 ; CHECK: ushll.2d       v15, v8, #7     ; encoding: [0x0f,0xa5,0x27,0x2f]
1929
1930
1931   pmull.8h v0, v0, v0
1932   pmull2.8h v0, v0, v0
1933   pmull.1q v2, v3, v4
1934   pmull2.1q v2, v3, v4
1935   pmull v2.1q, v3.1d, v4.1d
1936   pmull2 v2.1q, v3.2d, v4.2d
1937
1938 ; CHECK: pmull.8h       v0, v0, v0      ; encoding: [0x00,0xe0,0x20,0x0e]
1939 ; CHECK: pmull2.8h      v0, v0, v0      ; encoding: [0x00,0xe0,0x20,0x4e]
1940 ; CHECK: pmull.1q       v2, v3, v4      ; encoding: [0x62,0xe0,0xe4,0x0e]
1941 ; CHECK: pmull2.1q      v2, v3, v4      ; encoding: [0x62,0xe0,0xe4,0x4e]
1942 ; CHECK: pmull.1q       v2, v3, v4      ; encoding: [0x62,0xe0,0xe4,0x0e]
1943 ; CHECK: pmull2.1q      v2, v3, v4      ; encoding: [0x62,0xe0,0xe4,0x4e]
1944
1945
1946   faddp.2d d1, v2
1947   faddp.2s s3, v4
1948 ; CHECK: faddp.2d       d1, v2          ; encoding: [0x41,0xd8,0x70,0x7e]
1949 ; CHECK: faddp.2s       s3, v4          ; encoding: [0x83,0xd8,0x30,0x7e]
1950
1951   tbl.16b v2, {v4,v5,v6,v7}, v1
1952   tbl.8b v0, {v4,v5,v6,v7}, v1
1953   tbl.16b v2, {v5}, v1
1954   tbl.8b v0, {v5}, v1
1955   tbl.16b v2, {v5,v6,v7}, v1
1956   tbl.8b v0, {v5,v6,v7}, v1
1957   tbl.16b v2, {v6,v7}, v1
1958   tbl.8b v0, {v6,v7}, v1
1959 ; CHECK: tbl.16b        v2, { v4, v5, v6, v7 }, v1 ; encoding: [0x82,0x60,0x01,0x4e]
1960 ; CHECK: tbl.8b v0, { v4, v5, v6, v7 }, v1 ; encoding: [0x80,0x60,0x01,0x0e]
1961 ; CHECK: tbl.16b        v2, { v5 }, v1          ; encoding: [0xa2,0x00,0x01,0x4e]
1962 ; CHECK: tbl.8b v0, { v5 }, v1          ; encoding: [0xa0,0x00,0x01,0x0e]
1963 ; CHECK: tbl.16b        v2, { v5, v6, v7 }, v1  ; encoding: [0xa2,0x40,0x01,0x4e]
1964 ; CHECK: tbl.8b v0, { v5, v6, v7 }, v1  ; encoding: [0xa0,0x40,0x01,0x0e]
1965 ; CHECK: tbl.16b        v2, { v6, v7 }, v1      ; encoding: [0xc2,0x20,0x01,0x4e]
1966 ; CHECK: tbl.8b v0, { v6, v7 }, v1      ; encoding: [0xc0,0x20,0x01,0x0e]
1967
1968   tbl v2.16b, {v4.16b,v5.16b,v6.16b,v7.16b}, v1.16b
1969   tbl v0.8b, {v4.16b,v5.16b,v6.16b,v7.16b}, v1.8b
1970   tbl v2.16b, {v5.16b}, v1.16b
1971   tbl v0.8b, {v5.16b}, v1.8b
1972   tbl v2.16b, {v5.16b,v6.16b,v7.16b}, v1.16b
1973   tbl v0.8b, {v5.16b,v6.16b,v7.16b}, v1.8b
1974   tbl v2.16b, {v6.16b,v7.16b}, v1.16b
1975   tbl v0.8b, {v6.16b,v7.16b}, v1.8b
1976 ; CHECK: tbl.16b v2, { v4, v5, v6, v7 }, v1 ; encoding: [0x82,0x60,0x01,0x4e]
1977 ; CHECK: tbl.8b v0, { v4, v5, v6, v7 }, v1 ; encoding: [0x80,0x60,0x01,0x0e]
1978 ; CHECK: tbl.16b v2, { v5 }, v1          ; encoding: [0xa2,0x00,0x01,0x4e]
1979 ; CHECK: tbl.8b v0, { v5 }, v1          ; encoding: [0xa0,0x00,0x01,0x0e]
1980 ; CHECK: tbl.16b v2, { v5, v6, v7 }, v1  ; encoding: [0xa2,0x40,0x01,0x4e]
1981 ; CHECK: tbl.8b v0, { v5, v6, v7 }, v1  ; encoding: [0xa0,0x40,0x01,0x0e]
1982 ; CHECK: tbl.16b v2, { v6, v7 }, v1      ; encoding: [0xc2,0x20,0x01,0x4e]
1983 ; CHECK: tbl.8b v0, { v6, v7 }, v1      ; encoding: [0xc0,0x20,0x01,0x0e]
1984
1985   sqdmull       s0, h0, h0
1986   sqdmull       d0, s0, s0
1987 ; CHECK: sqdmull        s0, h0, h0              ; encoding: [0x00,0xd0,0x60,0x5e]
1988 ; CHECK: sqdmull        d0, s0, s0              ; encoding: [0x00,0xd0,0xa0,0x5e]
1989
1990   frsqrte s0, s0
1991   frsqrte d0, d0
1992 ; CHECK: frsqrte s0, s0                  ; encoding: [0x00,0xd8,0xa1,0x7e]
1993 ; CHECK: frsqrte d0, d0                  ; encoding: [0x00,0xd8,0xe1,0x7e]
1994
1995   mov.16b v0, v0
1996   mov.2s v0, v0
1997 ; CHECK: mov.16b v0, v0              ; encoding: [0x00,0x1c,0xa0,0x4e]
1998 ; CHECK: mov.8b v0, v0              ; encoding: [0x00,0x1c,0xa0,0x0e]
1999
2000
2001 ; uadalp/sadalp verbose mode aliases.
2002   uadalp v14.4h, v25.8b
2003   uadalp v15.8h, v24.16b
2004   uadalp v16.2s, v23.4h
2005   uadalp v17.4s, v22.8h
2006   uadalp v18.1d, v21.2s
2007   uadalp v19.2d, v20.4s
2008
2009   sadalp v1.4h, v11.8b
2010   sadalp v2.8h, v12.16b
2011   sadalp v3.2s, v13.4h
2012   sadalp v4.4s, v14.8h
2013   sadalp v5.1d, v15.2s
2014   sadalp v6.2d, v16.4s
2015
2016 ; CHECK: uadalp.4h      v14, v25        ; encoding: [0x2e,0x6b,0x20,0x2e]
2017 ; CHECK: uadalp.8h      v15, v24        ; encoding: [0x0f,0x6b,0x20,0x6e]
2018 ; CHECK: uadalp.2s      v16, v23        ; encoding: [0xf0,0x6a,0x60,0x2e]
2019 ; CHECK: uadalp.4s      v17, v22        ; encoding: [0xd1,0x6a,0x60,0x6e]
2020 ; CHECK: uadalp.1d      v18, v21        ; encoding: [0xb2,0x6a,0xa0,0x2e]
2021 ; CHECK: uadalp.2d      v19, v20        ; encoding: [0x93,0x6a,0xa0,0x6e]
2022 ; CHECK: sadalp.4h      v1, v11         ; encoding: [0x61,0x69,0x20,0x0e]
2023 ; CHECK: sadalp.8h      v2, v12         ; encoding: [0x82,0x69,0x20,0x4e]
2024 ; CHECK: sadalp.2s      v3, v13         ; encoding: [0xa3,0x69,0x60,0x0e]
2025 ; CHECK: sadalp.4s      v4, v14         ; encoding: [0xc4,0x69,0x60,0x4e]
2026 ; CHECK: sadalp.1d      v5, v15         ; encoding: [0xe5,0x69,0xa0,0x0e]
2027 ; CHECK: sadalp.2d      v6, v16         ; encoding: [0x06,0x6a,0xa0,0x4e]
2028
2029 ; MVN is an alias for 'not'.
2030   mvn v1.8b, v4.8b
2031   mvn v19.16b, v17.16b
2032   mvn.8b v10, v6
2033   mvn.16b v11, v7
2034
2035 ; CHECK: mvn.8b v1, v4                  ; encoding: [0x81,0x58,0x20,0x2e]
2036 ; CHECK: mvn.16b        v19, v17                ; encoding: [0x33,0x5a,0x20,0x6e]
2037 ; CHECK: mvn.8b v10, v6                 ; encoding: [0xca,0x58,0x20,0x2e]
2038 ; CHECK: mvn.16b        v11, v7                 ; encoding: [0xeb,0x58,0x20,0x6e]
2039
2040 ; sqdmull verbose mode aliases
2041  sqdmull v10.4s, v12.4h, v12.4h
2042  sqdmull2 v10.4s, v13.8h, v13.8h
2043  sqdmull v10.2d, v13.2s, v13.2s
2044  sqdmull2 v10.2d, v13.4s, v13.4s
2045 ; CHECK: sqdmull.4s     v10, v12, v12   ; encoding: [0x8a,0xd1,0x6c,0x0e]
2046 ; CHECK: sqdmull2.4s    v10, v13, v13   ; encoding: [0xaa,0xd1,0x6d,0x4e]
2047 ; CHECK: sqdmull.2d     v10, v13, v13   ; encoding: [0xaa,0xd1,0xad,0x0e]
2048 ; CHECK: sqdmull2.2d    v10, v13, v13   ; encoding: [0xaa,0xd1,0xad,0x4e]
2049
2050 ; xtn verbose mode aliases
2051  xtn v14.8b, v14.8h
2052  xtn2 v14.16b, v14.8h
2053  xtn v14.4h, v14.4s
2054  xtn2 v14.8h, v14.4s
2055  xtn v14.2s, v14.2d
2056  xtn2 v14.4s, v14.2d
2057 ; CHECK: xtn.8b v14, v14                ; encoding: [0xce,0x29,0x21,0x0e]
2058 ; CHECK: xtn2.16b v14, v14              ; encoding: [0xce,0x29,0x21,0x4e]
2059 ; CHECK: xtn.4h v14, v14                ; encoding: [0xce,0x29,0x61,0x0e]
2060 ; CHECK: xtn2.8h v14, v14               ; encoding: [0xce,0x29,0x61,0x4e]
2061 ; CHECK: xtn.2s v14, v14                ; encoding: [0xce,0x29,0xa1,0x0e]
2062 ; CHECK: xtn2.4s v14, v14               ; encoding: [0xce,0x29,0xa1,0x4e]
2063
2064 ; uaddl verbose mode aliases
2065  uaddl v9.8h, v13.8b, v14.8b
2066  uaddl2 v9.8h, v13.16b, v14.16b
2067  uaddl v9.4s, v13.4h, v14.4h
2068  uaddl2 v9.4s, v13.8h, v14.8h
2069  uaddl v9.2d, v13.2s, v14.2s
2070  uaddl2 v9.2d, v13.4s, v14.4s
2071 ; CHECK: uaddl.8h       v9, v13, v14    ; encoding: [0xa9,0x01,0x2e,0x2e]
2072 ; CHECK: uaddl2.8h      v9, v13, v14    ; encoding: [0xa9,0x01,0x2e,0x6e]
2073 ; CHECK: uaddl.4s       v9, v13, v14    ; encoding: [0xa9,0x01,0x6e,0x2e]
2074 ; CHECK: uaddl2.4s      v9, v13, v14    ; encoding: [0xa9,0x01,0x6e,0x6e]
2075 ; CHECK: uaddl.2d       v9, v13, v14    ; encoding: [0xa9,0x01,0xae,0x2e]
2076 ; CHECK: uaddl2.2d      v9, v13, v14    ; encoding: [0xa9,0x01,0xae,0x6e]
2077
2078 ; bit verbose mode aliases
2079  bit v9.16b, v10.16b, v10.16b
2080  bit v9.8b, v10.8b, v10.8b
2081 ; CHECK: bit.16b v9, v10, v10           ; encoding: [0x49,0x1d,0xaa,0x6e]
2082 ; CHECK: bit.8b v9, v10, v10            ; encoding: [0x49,0x1d,0xaa,0x2e]
2083
2084 ; pmull verbose mode aliases
2085  pmull v8.8h, v8.8b, v8.8b
2086  pmull2 v8.8h, v8.16b, v8.16b
2087  pmull v8.1q, v8.1d, v8.1d
2088  pmull2 v8.1q, v8.2d, v8.2d
2089 ; CHECK: pmull.8h       v8, v8, v8      ; encoding: [0x08,0xe1,0x28,0x0e]
2090 ; CHECK: pmull2.8h      v8, v8, v8      ; encoding: [0x08,0xe1,0x28,0x4e]
2091 ; CHECK: pmull.1q       v8, v8, v8      ; encoding: [0x08,0xe1,0xe8,0x0e]
2092 ; CHECK: pmull2.1q      v8, v8, v8      ; encoding: [0x08,0xe1,0xe8,0x4e]
2093
2094 ; usubl verbose mode aliases
2095  usubl v9.8h, v13.8b, v14.8b
2096  usubl2 v9.8h, v13.16b, v14.16b
2097  usubl v9.4s, v13.4h, v14.4h
2098  usubl2 v9.4s, v13.8h, v14.8h
2099  usubl v9.2d, v13.2s, v14.2s
2100  usubl2 v9.2d, v13.4s, v14.4s
2101 ; CHECK: usubl.8h       v9, v13, v14    ; encoding: [0xa9,0x21,0x2e,0x2e]
2102 ; CHECK: usubl2.8h      v9, v13, v14    ; encoding: [0xa9,0x21,0x2e,0x6e]
2103 ; CHECK: usubl.4s       v9, v13, v14    ; encoding: [0xa9,0x21,0x6e,0x2e]
2104 ; CHECK: usubl2.4s      v9, v13, v14    ; encoding: [0xa9,0x21,0x6e,0x6e]
2105 ; CHECK: usubl.2d       v9, v13, v14    ; encoding: [0xa9,0x21,0xae,0x2e]
2106 ; CHECK: usubl2.2d      v9, v13, v14    ; encoding: [0xa9,0x21,0xae,0x6e]
2107
2108 ; uabdl verbose mode aliases
2109  uabdl v9.8h, v13.8b, v14.8b
2110  uabdl2 v9.8h, v13.16b, v14.16b
2111  uabdl v9.4s, v13.4h, v14.4h
2112  uabdl2 v9.4s, v13.8h, v14.8h
2113  uabdl v9.2d, v13.2s, v14.2s
2114  uabdl2 v9.2d, v13.4s, v14.4s
2115 ; CHECK: uabdl.8h       v9, v13, v14    ; encoding: [0xa9,0x71,0x2e,0x2e]
2116 ; CHECK: uabdl2.8h      v9, v13, v14    ; encoding: [0xa9,0x71,0x2e,0x6e]
2117 ; CHECK: uabdl.4s       v9, v13, v14    ; encoding: [0xa9,0x71,0x6e,0x2e]
2118 ; CHECK: uabdl2.4s      v9, v13, v14    ; encoding: [0xa9,0x71,0x6e,0x6e]
2119 ; CHECK: uabdl.2d       v9, v13, v14    ; encoding: [0xa9,0x71,0xae,0x2e]
2120 ; CHECK: uabdl2.2d      v9, v13, v14    ; encoding: [0xa9,0x71,0xae,0x6e]
2121
2122 ; umull verbose mode aliases
2123  umull v9.8h, v13.8b, v14.8b
2124  umull2 v9.8h, v13.16b, v14.16b
2125  umull v9.4s, v13.4h, v14.4h
2126  umull2 v9.4s, v13.8h, v14.8h
2127  umull v9.2d, v13.2s, v14.2s
2128  umull2 v9.2d, v13.4s, v14.4s
2129 ; CHECK: umull.8h       v9, v13, v14    ; encoding: [0xa9,0xc1,0x2e,0x2e]
2130 ; CHECK: umull2.8h      v9, v13, v14    ; encoding: [0xa9,0xc1,0x2e,0x6e]
2131 ; CHECK: umull.4s       v9, v13, v14    ; encoding: [0xa9,0xc1,0x6e,0x2e]
2132 ; CHECK: umull2.4s      v9, v13, v14    ; encoding: [0xa9,0xc1,0x6e,0x6e]
2133 ; CHECK: umull.2d       v9, v13, v14    ; encoding: [0xa9,0xc1,0xae,0x2e]
2134 ; CHECK: umull2.2d      v9, v13, v14    ; encoding: [0xa9,0xc1,0xae,0x6e]
2135
2136 ; smull verbose mode aliases
2137  smull v9.8h, v13.8b, v14.8b
2138  smull2 v9.8h, v13.16b, v14.16b
2139  smull v9.4s, v13.4h, v14.4h
2140  smull2 v9.4s, v13.8h, v14.8h
2141  smull v9.2d, v13.2s, v14.2s
2142  smull2 v9.2d, v13.4s, v14.4s
2143 ; CHECK: smull.8h       v9, v13, v14    ; encoding: [0xa9,0xc1,0x2e,0x0e]
2144 ; CHECK: smull2.8h      v9, v13, v14    ; encoding: [0xa9,0xc1,0x2e,0x4e]
2145 ; CHECK: smull.4s       v9, v13, v14    ; encoding: [0xa9,0xc1,0x6e,0x0e]
2146 ; CHECK: smull2.4s      v9, v13, v14    ; encoding: [0xa9,0xc1,0x6e,0x4e]
2147 ; CHECK: smull.2d       v9, v13, v14    ; encoding: [0xa9,0xc1,0xae,0x0e]
2148 ; CHECK: smull2.2d      v9, v13, v14    ; encoding: [0xa9,0xc1,0xae,0x4e]