6d1aafdd7725d10e133915c66b0c490d6d31ddc4
[oota-llvm.git] / test / MC / AArch64 / neon-simd-misc.s
1 // RUN: llvm-mc -triple=arm64 -mattr=+neon -show-encoding < %s | FileCheck %s
2
3 // Check that the assembler can handle the documented syntax for AArch64
4
5
6 //------------------------------------------------------------------------------
7 // Element reverse
8 //------------------------------------------------------------------------------
9          rev64 v0.16b, v31.16b
10          rev64 v2.8h, v4.8h
11          rev64 v6.4s, v8.4s
12          rev64 v1.8b, v9.8b
13          rev64 v13.4h, v21.4h
14          rev64 v4.2s, v0.2s
15
16 // CHECK:       rev64   v0.16b, v31.16b         // encoding: [0xe0,0x0b,0x20,0x4e]
17 // CHECK:       rev64   v2.8h, v4.8h            // encoding: [0x82,0x08,0x60,0x4e]
18 // CHECK:       rev64   v6.4s, v8.4s            // encoding: [0x06,0x09,0xa0,0x4e]
19 // CHECK:       rev64   v1.8b, v9.8b            // encoding: [0x21,0x09,0x20,0x0e]
20 // CHECK:       rev64   v13.4h, v21.4h          // encoding: [0xad,0x0a,0x60,0x0e]
21 // CHECK:       rev64   v4.2s, v0.2s            // encoding: [0x04,0x08,0xa0,0x0e]
22
23          rev32 v30.16b, v31.16b
24          rev32 v4.8h, v7.8h
25          rev32 v21.8b, v1.8b
26          rev32 v0.4h, v9.4h
27
28 // CHECK:       rev32   v30.16b, v31.16b        // encoding: [0xfe,0x0b,0x20,0x6e]
29 // CHECK:       rev32   v4.8h, v7.8h            // encoding: [0xe4,0x08,0x60,0x6e]
30 // CHECK:       rev32   v21.8b, v1.8b           // encoding: [0x35,0x08,0x20,0x2e]
31 // CHECK:       rev32   v0.4h, v9.4h            // encoding: [0x20,0x09,0x60,0x2e]
32
33          rev16 v30.16b, v31.16b
34          rev16 v21.8b, v1.8b
35
36 // CHECK:       rev16   v30.16b, v31.16b        // encoding: [0xfe,0x1b,0x20,0x4e]
37 // CHECK:       rev16   v21.8b, v1.8b           // encoding: [0x35,0x18,0x20,0x0e]
38
39 //------------------------------------------------------------------------------
40 // Signed integer pairwise add long
41 //------------------------------------------------------------------------------
42
43          saddlp v3.8h, v21.16b
44          saddlp v8.4h, v5.8b
45          saddlp v9.4s, v1.8h
46          saddlp v0.2s, v1.4h
47          saddlp v12.2d, v4.4s
48          saddlp v17.1d, v28.2s
49
50 // CHECK:       saddlp  v3.8h, v21.16b          // encoding: [0xa3,0x2a,0x20,0x4e]
51 // CHECK:       saddlp  v8.4h, v5.8b            // encoding: [0xa8,0x28,0x20,0x0e]
52 // CHECK:       saddlp  v9.4s, v1.8h            // encoding: [0x29,0x28,0x60,0x4e]
53 // CHECK:       saddlp  v0.2s, v1.4h            // encoding: [0x20,0x28,0x60,0x0e]
54 // CHECK:       saddlp  v12.2d, v4.4s           // encoding: [0x8c,0x28,0xa0,0x4e]
55 // CHECK:       saddlp  v17.1d, v28.2s          // encoding: [0x91,0x2b,0xa0,0x0e]
56
57 //------------------------------------------------------------------------------
58 // Unsigned integer pairwise add long
59 //------------------------------------------------------------------------------
60
61          uaddlp v3.8h, v21.16b
62          uaddlp v8.4h, v5.8b
63          uaddlp v9.4s, v1.8h
64          uaddlp v0.2s, v1.4h
65          uaddlp v12.2d, v4.4s
66          uaddlp v17.1d, v28.2s
67
68 // CHECK:       uaddlp  v3.8h, v21.16b          // encoding: [0xa3,0x2a,0x20,0x6e]
69 // CHECK:       uaddlp  v8.4h, v5.8b            // encoding: [0xa8,0x28,0x20,0x2e]
70 // CHECK:       uaddlp  v9.4s, v1.8h            // encoding: [0x29,0x28,0x60,0x6e]
71 // CHECK:       uaddlp  v0.2s, v1.4h            // encoding: [0x20,0x28,0x60,0x2e]
72 // CHECK:       uaddlp  v12.2d, v4.4s           // encoding: [0x8c,0x28,0xa0,0x6e]
73 // CHECK:       uaddlp  v17.1d, v28.2s          // encoding: [0x91,0x2b,0xa0,0x2e]
74
75 //------------------------------------------------------------------------------
76 // Signed integer pairwise add and accumulate long
77 //------------------------------------------------------------------------------
78
79          sadalp v3.8h, v21.16b
80          sadalp v8.4h, v5.8b
81          sadalp v9.4s, v1.8h
82          sadalp v0.2s, v1.4h
83          sadalp v12.2d, v4.4s
84          sadalp v17.1d, v28.2s
85
86 // CHECK:       sadalp  v3.8h, v21.16b          // encoding: [0xa3,0x6a,0x20,0x4e]
87 // CHECK:       sadalp  v8.4h, v5.8b            // encoding: [0xa8,0x68,0x20,0x0e]
88 // CHECK:       sadalp  v9.4s, v1.8h            // encoding: [0x29,0x68,0x60,0x4e]
89 // CHECK:       sadalp  v0.2s, v1.4h            // encoding: [0x20,0x68,0x60,0x0e]
90 // CHECK:       sadalp  v12.2d, v4.4s           // encoding: [0x8c,0x68,0xa0,0x4e]
91 // CHECK:       sadalp  v17.1d, v28.2s          // encoding: [0x91,0x6b,0xa0,0x0e]
92
93 //------------------------------------------------------------------------------
94 // Unsigned integer pairwise add and accumulate long
95 //------------------------------------------------------------------------------
96
97          uadalp v3.8h, v21.16b
98          uadalp v8.4h, v5.8b
99          uadalp v9.4s, v1.8h
100          uadalp v0.2s, v1.4h
101          uadalp v12.2d, v4.4s
102          uadalp v17.1d, v28.2s
103
104 // CHECK:       uadalp  v3.8h, v21.16b          // encoding: [0xa3,0x6a,0x20,0x6e]
105 // CHECK:       uadalp  v8.4h, v5.8b            // encoding: [0xa8,0x68,0x20,0x2e]
106 // CHECK:       uadalp  v9.4s, v1.8h            // encoding: [0x29,0x68,0x60,0x6e]
107 // CHECK:       uadalp  v0.2s, v1.4h            // encoding: [0x20,0x68,0x60,0x2e]
108 // CHECK:       uadalp  v12.2d, v4.4s           // encoding: [0x8c,0x68,0xa0,0x6e]
109 // CHECK:       uadalp  v17.1d, v28.2s          // encoding: [0x91,0x6b,0xa0,0x2e]
110
111 //------------------------------------------------------------------------------
112 // Signed integer saturating accumulate of unsigned value
113 //------------------------------------------------------------------------------
114
115          suqadd v0.16b, v31.16b
116          suqadd v2.8h, v4.8h
117          suqadd v6.4s, v8.4s
118          suqadd v6.2d, v8.2d
119          suqadd v1.8b, v9.8b
120          suqadd v13.4h, v21.4h
121          suqadd v4.2s, v0.2s
122
123 // CHECK:       suqadd  v0.16b, v31.16b         // encoding: [0xe0,0x3b,0x20,0x4e]
124 // CHECK:       suqadd  v2.8h, v4.8h            // encoding: [0x82,0x38,0x60,0x4e]
125 // CHECK:       suqadd  v6.4s, v8.4s            // encoding: [0x06,0x39,0xa0,0x4e]
126 // CHECK:       suqadd  v6.2d, v8.2d            // encoding: [0x06,0x39,0xe0,0x4e]
127 // CHECK:       suqadd  v1.8b, v9.8b            // encoding: [0x21,0x39,0x20,0x0e]
128 // CHECK:       suqadd  v13.4h, v21.4h          // encoding: [0xad,0x3a,0x60,0x0e]
129 // CHECK:       suqadd  v4.2s, v0.2s            // encoding: [0x04,0x38,0xa0,0x0e]
130
131 //------------------------------------------------------------------------------
132 // Unsigned integer saturating accumulate of signed value
133 //------------------------------------------------------------------------------
134
135          usqadd v0.16b, v31.16b
136          usqadd v2.8h, v4.8h
137          usqadd v6.4s, v8.4s
138          usqadd v6.2d, v8.2d
139          usqadd v1.8b, v9.8b
140          usqadd v13.4h, v21.4h
141          usqadd v4.2s, v0.2s
142
143 // CHECK:       usqadd  v0.16b, v31.16b         // encoding: [0xe0,0x3b,0x20,0x6e]
144 // CHECK:       usqadd  v2.8h, v4.8h            // encoding: [0x82,0x38,0x60,0x6e]
145 // CHECK:       usqadd  v6.4s, v8.4s            // encoding: [0x06,0x39,0xa0,0x6e]
146 // CHECK:       usqadd  v6.2d, v8.2d            // encoding: [0x06,0x39,0xe0,0x6e]
147 // CHECK:       usqadd  v1.8b, v9.8b            // encoding: [0x21,0x39,0x20,0x2e]
148 // CHECK:       usqadd  v13.4h, v21.4h          // encoding: [0xad,0x3a,0x60,0x2e]
149 // CHECK:       usqadd  v4.2s, v0.2s            // encoding: [0x04,0x38,0xa0,0x2e]
150
151 //------------------------------------------------------------------------------
152 // Integer saturating absolute
153 //------------------------------------------------------------------------------
154
155          sqabs v0.16b, v31.16b
156          sqabs v2.8h, v4.8h
157          sqabs v6.4s, v8.4s
158          sqabs v6.2d, v8.2d
159          sqabs v1.8b, v9.8b
160          sqabs v13.4h, v21.4h
161          sqabs v4.2s, v0.2s
162
163 // CHECK:       sqabs   v0.16b, v31.16b         // encoding: [0xe0,0x7b,0x20,0x4e]
164 // CHECK:       sqabs   v2.8h, v4.8h            // encoding: [0x82,0x78,0x60,0x4e]
165 // CHECK:       sqabs   v6.4s, v8.4s            // encoding: [0x06,0x79,0xa0,0x4e]
166 // CHECK:       sqabs   v6.2d, v8.2d            // encoding: [0x06,0x79,0xe0,0x4e]
167 // CHECK:       sqabs   v1.8b, v9.8b            // encoding: [0x21,0x79,0x20,0x0e]
168 // CHECK:       sqabs   v13.4h, v21.4h          // encoding: [0xad,0x7a,0x60,0x0e]
169 // CHECK:       sqabs   v4.2s, v0.2s            // encoding: [0x04,0x78,0xa0,0x0e]
170
171 //------------------------------------------------------------------------------
172 // Signed integer saturating negate
173 //------------------------------------------------------------------------------
174
175          sqneg v0.16b, v31.16b
176          sqneg v2.8h, v4.8h
177          sqneg v6.4s, v8.4s
178          sqneg v6.2d, v8.2d
179          sqneg v1.8b, v9.8b
180          sqneg v13.4h, v21.4h
181          sqneg v4.2s, v0.2s
182
183 // CHECK:       sqneg   v0.16b, v31.16b         // encoding: [0xe0,0x7b,0x20,0x6e]
184 // CHECK:       sqneg   v2.8h, v4.8h            // encoding: [0x82,0x78,0x60,0x6e]
185 // CHECK:       sqneg   v6.4s, v8.4s            // encoding: [0x06,0x79,0xa0,0x6e]
186 // CHECK:       sqneg   v6.2d, v8.2d            // encoding: [0x06,0x79,0xe0,0x6e]
187 // CHECK:       sqneg   v1.8b, v9.8b            // encoding: [0x21,0x79,0x20,0x2e]
188 // CHECK:       sqneg   v13.4h, v21.4h          // encoding: [0xad,0x7a,0x60,0x2e]
189 // CHECK:       sqneg   v4.2s, v0.2s            // encoding: [0x04,0x78,0xa0,0x2e]
190
191 //------------------------------------------------------------------------------
192 // Integer absolute
193 //------------------------------------------------------------------------------
194
195          abs v0.16b, v31.16b
196          abs v2.8h, v4.8h
197          abs v6.4s, v8.4s
198          abs v6.2d, v8.2d
199          abs v1.8b, v9.8b
200          abs v13.4h, v21.4h
201          abs v4.2s, v0.2s
202
203 // CHECK:       abs     v0.16b, v31.16b         // encoding: [0xe0,0xbb,0x20,0x4e]
204 // CHECK:       abs     v2.8h, v4.8h            // encoding: [0x82,0xb8,0x60,0x4e]
205 // CHECK:       abs     v6.4s, v8.4s            // encoding: [0x06,0xb9,0xa0,0x4e]
206 // CHECK:       abs     v6.2d, v8.2d            // encoding: [0x06,0xb9,0xe0,0x4e]
207 // CHECK:       abs     v1.8b, v9.8b            // encoding: [0x21,0xb9,0x20,0x0e]
208 // CHECK:       abs     v13.4h, v21.4h          // encoding: [0xad,0xba,0x60,0x0e]
209 // CHECK:       abs     v4.2s, v0.2s            // encoding: [0x04,0xb8,0xa0,0x0e]
210
211 //------------------------------------------------------------------------------
212 // Integer negate
213 //------------------------------------------------------------------------------
214
215          neg v0.16b, v31.16b
216          neg v2.8h, v4.8h
217          neg v6.4s, v8.4s
218          neg v6.2d, v8.2d
219          neg v1.8b, v9.8b
220          neg v13.4h, v21.4h
221          neg v4.2s, v0.2s
222
223 // CHECK:       neg     v0.16b, v31.16b         // encoding: [0xe0,0xbb,0x20,0x6e]
224 // CHECK:       neg     v2.8h, v4.8h            // encoding: [0x82,0xb8,0x60,0x6e]
225 // CHECK:       neg     v6.4s, v8.4s            // encoding: [0x06,0xb9,0xa0,0x6e]
226 // CHECK:       neg     v6.2d, v8.2d            // encoding: [0x06,0xb9,0xe0,0x6e]
227 // CHECK:       neg     v1.8b, v9.8b            // encoding: [0x21,0xb9,0x20,0x2e]
228 // CHECK:       neg     v13.4h, v21.4h          // encoding: [0xad,0xba,0x60,0x2e]
229 // CHECK:       neg     v4.2s, v0.2s            // encoding: [0x04,0xb8,0xa0,0x2e]
230
231 //------------------------------------------------------------------------------
232 // Integer count leading sign bits
233 //------------------------------------------------------------------------------
234
235          cls v0.16b, v31.16b
236          cls v2.8h, v4.8h
237          cls v6.4s, v8.4s
238          cls v1.8b, v9.8b
239          cls v13.4h, v21.4h
240          cls v4.2s, v0.2s
241
242 // CHECK:       cls     v0.16b, v31.16b         // encoding: [0xe0,0x4b,0x20,0x4e]
243 // CHECK:       cls     v2.8h, v4.8h            // encoding: [0x82,0x48,0x60,0x4e]
244 // CHECK:       cls     v6.4s, v8.4s            // encoding: [0x06,0x49,0xa0,0x4e]
245 // CHECK:       cls     v1.8b, v9.8b            // encoding: [0x21,0x49,0x20,0x0e]
246 // CHECK:       cls     v13.4h, v21.4h          // encoding: [0xad,0x4a,0x60,0x0e]
247 // CHECK:       cls     v4.2s, v0.2s            // encoding: [0x04,0x48,0xa0,0x0e]
248
249 //------------------------------------------------------------------------------
250 // Integer count leading zeros
251 //------------------------------------------------------------------------------
252
253          clz v0.16b, v31.16b
254          clz v2.8h, v4.8h
255          clz v6.4s, v8.4s
256          clz v1.8b, v9.8b
257          clz v13.4h, v21.4h
258          clz v4.2s, v0.2s
259
260 // CHECK:       clz     v0.16b, v31.16b         // encoding: [0xe0,0x4b,0x20,0x6e]
261 // CHECK:       clz     v2.8h, v4.8h            // encoding: [0x82,0x48,0x60,0x6e]
262 // CHECK:       clz     v6.4s, v8.4s            // encoding: [0x06,0x49,0xa0,0x6e]
263 // CHECK:       clz     v1.8b, v9.8b            // encoding: [0x21,0x49,0x20,0x2e]
264 // CHECK:       clz     v13.4h, v21.4h          // encoding: [0xad,0x4a,0x60,0x2e]
265 // CHECK:       clz     v4.2s, v0.2s            // encoding: [0x04,0x48,0xa0,0x2e]
266
267 //------------------------------------------------------------------------------
268 // Population count
269 //------------------------------------------------------------------------------
270
271          cnt v0.16b, v31.16b
272          cnt v1.8b, v9.8b
273
274 // CHECK:       cnt     v0.16b, v31.16b         // encoding: [0xe0,0x5b,0x20,0x4e]
275 // CHECK:       cnt     v1.8b, v9.8b            // encoding: [0x21,0x59,0x20,0x0e]
276
277 //------------------------------------------------------------------------------
278 // Bitwise NOT
279 //------------------------------------------------------------------------------
280
281          not v0.16b, v31.16b
282          not v1.8b, v9.8b
283
284 // CHECK: {{mvn|not}} v0.16b, v31.16b         // encoding: [0xe0,0x5b,0x20,0x6e]
285 // CHECK: {{mvn|not}} v1.8b, v9.8b            // encoding: [0x21,0x59,0x20,0x2e]
286
287 //------------------------------------------------------------------------------
288 // Bitwise reverse
289 //------------------------------------------------------------------------------
290
291          rbit v0.16b, v31.16b
292          rbit v1.8b, v9.8b
293
294 // CHECK:       rbit    v0.16b, v31.16b         // encoding: [0xe0,0x5b,0x60,0x6e]
295 // CHECK:       rbit    v1.8b, v9.8b            // encoding: [0x21,0x59,0x60,0x2e]
296
297 //------------------------------------------------------------------------------
298 // Floating-point absolute
299 //------------------------------------------------------------------------------
300
301          fabs v6.4s, v8.4s
302          fabs v6.2d, v8.2d
303          fabs v4.2s, v0.2s
304
305 // CHECK:       fabs    v6.4s, v8.4s            // encoding: [0x06,0xf9,0xa0,0x4e]
306 // CHECK:       fabs    v6.2d, v8.2d            // encoding: [0x06,0xf9,0xe0,0x4e]
307 // CHECK:       fabs    v4.2s, v0.2s            // encoding: [0x04,0xf8,0xa0,0x0e]
308
309 //------------------------------------------------------------------------------
310 // Floating-point negate
311 //------------------------------------------------------------------------------
312
313          fneg v6.4s, v8.4s
314          fneg v6.2d, v8.2d
315          fneg v4.2s, v0.2s
316
317 // CHECK:       fneg    v6.4s, v8.4s            // encoding: [0x06,0xf9,0xa0,0x6e]
318 // CHECK:       fneg    v6.2d, v8.2d            // encoding: [0x06,0xf9,0xe0,0x6e]
319 // CHECK:       fneg    v4.2s, v0.2s            // encoding: [0x04,0xf8,0xa0,0x2e]
320
321 //------------------------------------------------------------------------------
322 // Integer extract and narrow
323 //------------------------------------------------------------------------------
324
325          xtn2 v0.16b, v31.8h
326          xtn2 v2.8h, v4.4s
327          xtn2 v6.4s, v8.2d
328          xtn v1.8b, v9.8h
329          xtn v13.4h, v21.4s
330          xtn v4.2s, v0.2d
331
332 // CHECK:       xtn2    v0.16b, v31.8h          // encoding: [0xe0,0x2b,0x21,0x4e]
333 // CHECK:       xtn2    v2.8h, v4.4s            // encoding: [0x82,0x28,0x61,0x4e]
334 // CHECK:       xtn2    v6.4s, v8.2d            // encoding: [0x06,0x29,0xa1,0x4e]
335 // CHECK:       xtn     v1.8b, v9.8h            // encoding: [0x21,0x29,0x21,0x0e]
336 // CHECK:       xtn     v13.4h, v21.4s          // encoding: [0xad,0x2a,0x61,0x0e]
337 // CHECK:       xtn     v4.2s, v0.2d            // encoding: [0x04,0x28,0xa1,0x0e]
338
339 //------------------------------------------------------------------------------
340 // Signed integer saturating extract and unsigned narrow
341 //------------------------------------------------------------------------------
342
343          sqxtun2 v0.16b, v31.8h
344          sqxtun2 v2.8h, v4.4s
345          sqxtun2 v6.4s, v8.2d
346          sqxtun v1.8b, v9.8h
347          sqxtun v13.4h, v21.4s
348          sqxtun v4.2s, v0.2d
349
350 // CHECK:       sqxtun2 v0.16b, v31.8h          // encoding: [0xe0,0x2b,0x21,0x6e]
351 // CHECK:       sqxtun2 v2.8h, v4.4s            // encoding: [0x82,0x28,0x61,0x6e]
352 // CHECK:       sqxtun2 v6.4s, v8.2d            // encoding: [0x06,0x29,0xa1,0x6e]
353 // CHECK:       sqxtun  v1.8b, v9.8h            // encoding: [0x21,0x29,0x21,0x2e]
354 // CHECK:       sqxtun  v13.4h, v21.4s          // encoding: [0xad,0x2a,0x61,0x2e]
355 // CHECK:       sqxtun  v4.2s, v0.2d            // encoding: [0x04,0x28,0xa1,0x2e]
356
357 //------------------------------------------------------------------------------
358 // Signed integer saturating extract and narrow
359 //------------------------------------------------------------------------------
360
361          sqxtn2 v0.16b, v31.8h
362          sqxtn2 v2.8h, v4.4s
363          sqxtn2 v6.4s, v8.2d
364          sqxtn v1.8b, v9.8h
365          sqxtn v13.4h, v21.4s
366          sqxtn v4.2s, v0.2d
367
368 // CHECK:       sqxtn2  v0.16b, v31.8h          // encoding: [0xe0,0x4b,0x21,0x4e]
369 // CHECK:       sqxtn2  v2.8h, v4.4s            // encoding: [0x82,0x48,0x61,0x4e]
370 // CHECK:       sqxtn2  v6.4s, v8.2d            // encoding: [0x06,0x49,0xa1,0x4e]
371 // CHECK:       sqxtn   v1.8b, v9.8h            // encoding: [0x21,0x49,0x21,0x0e]
372 // CHECK:       sqxtn   v13.4h, v21.4s          // encoding: [0xad,0x4a,0x61,0x0e]
373 // CHECK:       sqxtn   v4.2s, v0.2d            // encoding: [0x04,0x48,0xa1,0x0e]
374
375 //------------------------------------------------------------------------------
376 // Unsigned integer saturating extract and narrow
377 //------------------------------------------------------------------------------
378
379          uqxtn2 v0.16b, v31.8h
380          uqxtn2 v2.8h, v4.4s
381          uqxtn2 v6.4s, v8.2d
382          uqxtn v1.8b, v9.8h
383          uqxtn v13.4h, v21.4s
384          uqxtn v4.2s, v0.2d
385
386 // CHECK:       uqxtn2  v0.16b, v31.8h          // encoding: [0xe0,0x4b,0x21,0x6e]
387 // CHECK:       uqxtn2  v2.8h, v4.4s            // encoding: [0x82,0x48,0x61,0x6e]
388 // CHECK:       uqxtn2  v6.4s, v8.2d            // encoding: [0x06,0x49,0xa1,0x6e]
389 // CHECK:       uqxtn   v1.8b, v9.8h            // encoding: [0x21,0x49,0x21,0x2e]
390 // CHECK:       uqxtn   v13.4h, v21.4s          // encoding: [0xad,0x4a,0x61,0x2e]
391 // CHECK:       uqxtn   v4.2s, v0.2d            // encoding: [0x04,0x48,0xa1,0x2e]
392
393 //------------------------------------------------------------------------------
394 // Integer shift left long
395 //------------------------------------------------------------------------------
396
397          shll2 v2.8h, v4.16b, #8
398          shll2 v6.4s, v8.8h, #16
399          shll2 v6.2d, v8.4s, #32
400          shll v2.8h, v4.8b, #8
401          shll v6.4s, v8.4h, #16
402          shll v6.2d, v8.2s, #32
403
404 // CHECK:       shll2   v2.8h, v4.16b, #8      // encoding: [0x82,0x38,0x21,0x6e]
405 // CHECK:       shll2   v6.4s, v8.8h, #16      // encoding: [0x06,0x39,0x61,0x6e]
406 // CHECK:       shll2   v6.2d, v8.4s, #32      // encoding: [0x06,0x39,0xa1,0x6e]
407 // CHECK:       shll    v2.8h, v4.8b, #8       // encoding: [0x82,0x38,0x21,0x2e]
408 // CHECK:       shll    v6.4s, v8.4h, #16      // encoding: [0x06,0x39,0x61,0x2e]
409 // CHECK:       shll    v6.2d, v8.2s, #32      // encoding: [0x06,0x39,0xa1,0x2e]
410
411 //------------------------------------------------------------------------------
412 // Floating-point convert downsize
413 //------------------------------------------------------------------------------
414
415          fcvtn2 v2.8h, v4.4s
416          fcvtn2 v6.4s, v8.2d
417          fcvtn v13.4h, v21.4s
418          fcvtn v4.2s, v0.2d
419
420 // CHECK:       fcvtn2  v2.8h, v4.4s            // encoding: [0x82,0x68,0x21,0x4e]
421 // CHECK:       fcvtn2  v6.4s, v8.2d            // encoding: [0x06,0x69,0x61,0x4e]
422 // CHECK:       fcvtn   v13.4h, v21.4s          // encoding: [0xad,0x6a,0x21,0x0e]
423 // CHECK:       fcvtn   v4.2s, v0.2d            // encoding: [0x04,0x68,0x61,0x0e]
424
425 //------------------------------------------------------------------------------
426 // Floating-point convert downsize with inexact
427 //------------------------------------------------------------------------------
428
429          fcvtxn2 v6.4s, v8.2d
430          fcvtxn v4.2s, v0.2d
431
432 // CHECK:       fcvtxn2 v6.4s, v8.2d            // encoding: [0x06,0x69,0x61,0x6e]
433 // CHECK:       fcvtxn  v4.2s, v0.2d            // encoding: [0x04,0x68,0x61,0x2e]
434
435 //------------------------------------------------------------------------------
436 // Floating-point convert upsize
437 //------------------------------------------------------------------------------
438
439          fcvtl v9.4s, v1.4h
440          fcvtl v0.2d, v1.2s
441          fcvtl2 v12.4s, v4.8h
442          fcvtl2 v17.2d, v28.4s
443
444 // CHECK:       fcvtl   v9.4s, v1.4h            // encoding: [0x29,0x78,0x21,0x0e]
445 // CHECK:       fcvtl   v0.2d, v1.2s            // encoding: [0x20,0x78,0x61,0x0e]
446 // CHECK:       fcvtl2  v12.4s, v4.8h           // encoding: [0x8c,0x78,0x21,0x4e]
447 // CHECK:       fcvtl2  v17.2d, v28.4s          // encoding: [0x91,0x7b,0x61,0x4e]
448
449 //------------------------------------------------------------------------------
450 // Floating-point round to integral
451 //------------------------------------------------------------------------------
452
453          frintn v6.4s, v8.4s
454          frintn v6.2d, v8.2d
455          frintn v4.2s, v0.2s
456
457 // CHECK:       frintn  v6.4s, v8.4s            // encoding: [0x06,0x89,0x21,0x4e]
458 // CHECK:       frintn  v6.2d, v8.2d            // encoding: [0x06,0x89,0x61,0x4e]
459 // CHECK:       frintn  v4.2s, v0.2s            // encoding: [0x04,0x88,0x21,0x0e]
460
461          frinta v6.4s, v8.4s
462          frinta v6.2d, v8.2d
463          frinta v4.2s, v0.2s
464
465 // CHECK:       frinta  v6.4s, v8.4s            // encoding: [0x06,0x89,0x21,0x6e]
466 // CHECK:       frinta  v6.2d, v8.2d            // encoding: [0x06,0x89,0x61,0x6e]
467 // CHECK:       frinta  v4.2s, v0.2s            // encoding: [0x04,0x88,0x21,0x2e]
468
469          frintp v6.4s, v8.4s
470          frintp v6.2d, v8.2d
471          frintp v4.2s, v0.2s
472
473 // CHECK:       frintp  v6.4s, v8.4s            // encoding: [0x06,0x89,0xa1,0x4e]
474 // CHECK:       frintp  v6.2d, v8.2d            // encoding: [0x06,0x89,0xe1,0x4e]
475 // CHECK:       frintp  v4.2s, v0.2s            // encoding: [0x04,0x88,0xa1,0x0e]
476
477          frintm v6.4s, v8.4s
478          frintm v6.2d, v8.2d
479          frintm v4.2s, v0.2s
480
481 // CHECK:       frintm  v6.4s, v8.4s            // encoding: [0x06,0x99,0x21,0x4e]
482 // CHECK:       frintm  v6.2d, v8.2d            // encoding: [0x06,0x99,0x61,0x4e]
483 // CHECK:       frintm  v4.2s, v0.2s            // encoding: [0x04,0x98,0x21,0x0e]
484
485          frintx v6.4s, v8.4s
486          frintx v6.2d, v8.2d
487          frintx v4.2s, v0.2s
488
489 // CHECK:       frintx  v6.4s, v8.4s            // encoding: [0x06,0x99,0x21,0x6e]
490 // CHECK:       frintx  v6.2d, v8.2d            // encoding: [0x06,0x99,0x61,0x6e]
491 // CHECK:       frintx  v4.2s, v0.2s            // encoding: [0x04,0x98,0x21,0x2e]
492
493          frintz v6.4s, v8.4s
494          frintz v6.2d, v8.2d
495          frintz v4.2s, v0.2s
496
497 // CHECK:       frintz  v6.4s, v8.4s            // encoding: [0x06,0x99,0xa1,0x4e]
498 // CHECK:       frintz  v6.2d, v8.2d            // encoding: [0x06,0x99,0xe1,0x4e]
499 // CHECK:       frintz  v4.2s, v0.2s            // encoding: [0x04,0x98,0xa1,0x0e]
500
501          frinti v6.4s, v8.4s
502          frinti v6.2d, v8.2d
503          frinti v4.2s, v0.2s
504
505 // CHECK:       frinti  v6.4s, v8.4s            // encoding: [0x06,0x99,0xa1,0x6e]
506 // CHECK:       frinti  v6.2d, v8.2d            // encoding: [0x06,0x99,0xe1,0x6e]
507 // CHECK:       frinti  v4.2s, v0.2s            // encoding: [0x04,0x98,0xa1,0x2e]
508
509 //------------------------------------------------------------------------------
510 // Floating-point convert to integer
511 //------------------------------------------------------------------------------
512
513          fcvtns v6.4s, v8.4s
514          fcvtns v6.2d, v8.2d
515          fcvtns v4.2s, v0.2s
516
517 // CHECK:       fcvtns  v6.4s, v8.4s            // encoding: [0x06,0xa9,0x21,0x4e]
518 // CHECK:       fcvtns  v6.2d, v8.2d            // encoding: [0x06,0xa9,0x61,0x4e]
519 // CHECK:       fcvtns  v4.2s, v0.2s            // encoding: [0x04,0xa8,0x21,0x0e]
520
521          fcvtnu v6.4s, v8.4s
522          fcvtnu v6.2d, v8.2d
523          fcvtnu v4.2s, v0.2s
524
525 // CHECK:       fcvtnu  v6.4s, v8.4s            // encoding: [0x06,0xa9,0x21,0x6e]
526 // CHECK:       fcvtnu  v6.2d, v8.2d            // encoding: [0x06,0xa9,0x61,0x6e]
527 // CHECK:       fcvtnu  v4.2s, v0.2s            // encoding: [0x04,0xa8,0x21,0x2e]
528
529          fcvtps v6.4s, v8.4s
530          fcvtps v6.2d, v8.2d
531          fcvtps v4.2s, v0.2s
532
533 // CHECK:       fcvtps  v6.4s, v8.4s            // encoding: [0x06,0xa9,0xa1,0x4e]
534 // CHECK:       fcvtps  v6.2d, v8.2d            // encoding: [0x06,0xa9,0xe1,0x4e]
535 // CHECK:       fcvtps  v4.2s, v0.2s            // encoding: [0x04,0xa8,0xa1,0x0e]
536
537          fcvtpu v6.4s, v8.4s
538          fcvtpu v6.2d, v8.2d
539          fcvtpu v4.2s, v0.2s
540
541 // CHECK:       fcvtpu  v6.4s, v8.4s            // encoding: [0x06,0xa9,0xa1,0x6e]
542 // CHECK:       fcvtpu  v6.2d, v8.2d            // encoding: [0x06,0xa9,0xe1,0x6e]
543 // CHECK:       fcvtpu  v4.2s, v0.2s            // encoding: [0x04,0xa8,0xa1,0x2e]
544
545          fcvtms v6.4s, v8.4s
546          fcvtms v6.2d, v8.2d
547          fcvtms v4.2s, v0.2s
548
549 // CHECK:       fcvtms  v6.4s, v8.4s            // encoding: [0x06,0xb9,0x21,0x4e]
550 // CHECK:       fcvtms  v6.2d, v8.2d            // encoding: [0x06,0xb9,0x61,0x4e]
551 // CHECK:       fcvtms  v4.2s, v0.2s            // encoding: [0x04,0xb8,0x21,0x0e]
552
553          fcvtmu v6.4s, v8.4s
554          fcvtmu v6.2d, v8.2d
555          fcvtmu v4.2s, v0.2s
556
557 // CHECK:       fcvtmu  v6.4s, v8.4s            // encoding: [0x06,0xb9,0x21,0x6e]
558 // CHECK:       fcvtmu  v6.2d, v8.2d            // encoding: [0x06,0xb9,0x61,0x6e]
559 // CHECK:       fcvtmu  v4.2s, v0.2s            // encoding: [0x04,0xb8,0x21,0x2e]
560
561          fcvtzs v6.4s, v8.4s
562          fcvtzs v6.2d, v8.2d
563          fcvtzs v4.2s, v0.2s
564
565 // CHECK:       fcvtzs  v6.4s, v8.4s            // encoding: [0x06,0xb9,0xa1,0x4e]
566 // CHECK:       fcvtzs  v6.2d, v8.2d            // encoding: [0x06,0xb9,0xe1,0x4e]
567 // CHECK:       fcvtzs  v4.2s, v0.2s            // encoding: [0x04,0xb8,0xa1,0x0e]
568
569
570          fcvtzu v6.4s, v8.4s
571          fcvtzu v6.2d, v8.2d
572          fcvtzu v4.2s, v0.2s
573
574 // CHECK:       fcvtzu  v6.4s, v8.4s            // encoding: [0x06,0xb9,0xa1,0x6e]
575 // CHECK:       fcvtzu  v6.2d, v8.2d            // encoding: [0x06,0xb9,0xe1,0x6e]
576 // CHECK:       fcvtzu  v4.2s, v0.2s            // encoding: [0x04,0xb8,0xa1,0x2e]
577
578          fcvtas v6.4s, v8.4s
579          fcvtas v6.2d, v8.2d
580          fcvtas v4.2s, v0.2s
581
582 // CHECK:       fcvtas  v6.4s, v8.4s            // encoding: [0x06,0xc9,0x21,0x4e]
583 // CHECK:       fcvtas  v6.2d, v8.2d            // encoding: [0x06,0xc9,0x61,0x4e]
584 // CHECK:       fcvtas  v4.2s, v0.2s            // encoding: [0x04,0xc8,0x21,0x0e]
585
586          fcvtau v6.4s, v8.4s
587          fcvtau v6.2d, v8.2d
588          fcvtau v4.2s, v0.2s
589
590 // CHECK:       fcvtau  v6.4s, v8.4s            // encoding: [0x06,0xc9,0x21,0x6e]
591 // CHECK:       fcvtau  v6.2d, v8.2d            // encoding: [0x06,0xc9,0x61,0x6e]
592 // CHECK:       fcvtau  v4.2s, v0.2s            // encoding: [0x04,0xc8,0x21,0x2e]
593
594          urecpe v6.4s, v8.4s
595          urecpe v4.2s, v0.2s
596
597 // CHECK:       urecpe  v6.4s, v8.4s            // encoding: [0x06,0xc9,0xa1,0x4e]
598 // CHECK:       urecpe  v4.2s, v0.2s            // encoding: [0x04,0xc8,0xa1,0x0e]
599
600          ursqrte v6.4s, v8.4s
601          ursqrte v4.2s, v0.2s
602
603 // CHECK:       ursqrte v6.4s, v8.4s            // encoding: [0x06,0xc9,0xa1,0x6e]
604 // CHECK:       ursqrte v4.2s, v0.2s            // encoding: [0x04,0xc8,0xa1,0x2e]
605
606          scvtf v6.4s, v8.4s
607          scvtf v6.2d, v8.2d
608          scvtf v4.2s, v0.2s
609
610 // CHECK:       scvtf   v6.4s, v8.4s            // encoding: [0x06,0xd9,0x21,0x4e]
611 // CHECK:       scvtf   v6.2d, v8.2d            // encoding: [0x06,0xd9,0x61,0x4e]
612 // CHECK:       scvtf   v4.2s, v0.2s            // encoding: [0x04,0xd8,0x21,0x0e]
613
614          ucvtf v6.4s, v8.4s
615          ucvtf v6.2d, v8.2d
616          ucvtf v4.2s, v0.2s
617
618 // CHECK:       ucvtf   v6.4s, v8.4s            // encoding: [0x06,0xd9,0x21,0x6e]
619 // CHECK:       ucvtf   v6.2d, v8.2d            // encoding: [0x06,0xd9,0x61,0x6e]
620 // CHECK:       ucvtf   v4.2s, v0.2s            // encoding: [0x04,0xd8,0x21,0x2e]
621
622          frecpe v6.4s, v8.4s
623          frecpe v6.2d, v8.2d
624          frecpe v4.2s, v0.2s
625
626 // CHECK:       frecpe  v6.4s, v8.4s            // encoding: [0x06,0xd9,0xa1,0x4e]
627 // CHECK:       frecpe  v6.2d, v8.2d            // encoding: [0x06,0xd9,0xe1,0x4e]
628 // CHECK:       frecpe  v4.2s, v0.2s            // encoding: [0x04,0xd8,0xa1,0x0e]
629
630          frsqrte v6.4s, v8.4s
631          frsqrte v6.2d, v8.2d
632          frsqrte v4.2s, v0.2s
633
634 // CHECK:       frsqrte v6.4s, v8.4s            // encoding: [0x06,0xd9,0xa1,0x6e]
635 // CHECK:       frsqrte v6.2d, v8.2d            // encoding: [0x06,0xd9,0xe1,0x6e]
636 // CHECK:       frsqrte v4.2s, v0.2s            // encoding: [0x04,0xd8,0xa1,0x2e]
637
638          fsqrt v6.4s, v8.4s
639          fsqrt v6.2d, v8.2d
640          fsqrt v4.2s, v0.2s
641
642 // CHECK:       fsqrt   v6.4s, v8.4s            // encoding: [0x06,0xf9,0xa1,0x6e]
643 // CHECK:       fsqrt   v6.2d, v8.2d            // encoding: [0x06,0xf9,0xe1,0x6e]
644 // CHECK:       fsqrt   v4.2s, v0.2s            // encoding: [0x04,0xf8,0xa1,0x2e]
645
646