AArch64/ARM64: move ARM64 into AArch64's place
[oota-llvm.git] / test / MC / AArch64 / neon-simd-shift.s
1 // RUN: llvm-mc -triple=aarch64-none-linux-gnu -mattr=+neon -show-encoding < %s | FileCheck %s
2
3 // Check that the assembler can handle the documented syntax for AArch64
4
5 //------------------------------------------------------------------------------
6 // Vector shift right by immediate
7 //------------------------------------------------------------------------------
8          sshr v0.8b, v1.8b, #3
9          sshr v0.4h, v1.4h, #3
10          sshr v0.2s, v1.2s, #3
11          sshr v0.16b, v1.16b, #3
12          sshr v0.8h, v1.8h, #3
13          sshr v0.4s, v1.4s, #3
14          sshr v0.2d, v1.2d, #3
15 // CHECK:       sshr    v0.8b, v1.8b, #3        // encoding: [0x20,0x04,0x0d,0x0f]
16 // CHECK:       sshr    v0.4h, v1.4h, #3        // encoding: [0x20,0x04,0x1d,0x0f]
17 // CHECK:       sshr    v0.2s, v1.2s, #3        // encoding: [0x20,0x04,0x3d,0x0f]
18 // CHECK:       sshr    v0.16b, v1.16b, #3      // encoding: [0x20,0x04,0x0d,0x4f]
19 // CHECK:       sshr    v0.8h, v1.8h, #3        // encoding: [0x20,0x04,0x1d,0x4f]
20 // CHECK:       sshr    v0.4s, v1.4s, #3        // encoding: [0x20,0x04,0x3d,0x4f]
21 // CHECK:       sshr    v0.2d, v1.2d, #3        // encoding: [0x20,0x04,0x7d,0x4f]
22
23 //------------------------------------------------------------------------------
24 // Vector  shift right by immediate
25 //------------------------------------------------------------------------------
26          ushr v0.8b, v1.8b, #3
27          ushr v0.4h, v1.4h, #3
28          ushr v0.2s, v1.2s, #3
29          ushr v0.16b, v1.16b, #3
30          ushr v0.8h, v1.8h, #3
31          ushr v0.4s, v1.4s, #3
32          ushr v0.2d, v1.2d, #3
33
34 // CHECK:       ushr    v0.8b, v1.8b, #3        // encoding: [0x20,0x04,0x0d,0x2f]
35 // CHECK:       ushr    v0.4h, v1.4h, #3        // encoding: [0x20,0x04,0x1d,0x2f]
36 // CHECK:       ushr    v0.2s, v1.2s, #3        // encoding: [0x20,0x04,0x3d,0x2f]
37 // CHECK:       ushr    v0.16b, v1.16b, #3      // encoding: [0x20,0x04,0x0d,0x6f]
38 // CHECK:       ushr    v0.8h, v1.8h, #3        // encoding: [0x20,0x04,0x1d,0x6f]
39 // CHECK:       ushr    v0.4s, v1.4s, #3        // encoding: [0x20,0x04,0x3d,0x6f]
40 // CHECK:       ushr    v0.2d, v1.2d, #3        // encoding: [0x20,0x04,0x7d,0x6f]
41
42 //------------------------------------------------------------------------------
43 // Vector shift right and accumulate by immediate
44 //------------------------------------------------------------------------------
45          ssra v0.8b, v1.8b, #3
46          ssra v0.4h, v1.4h, #3
47          ssra v0.2s, v1.2s, #3
48          ssra v0.16b, v1.16b, #3
49          ssra v0.8h, v1.8h, #3
50          ssra v0.4s, v1.4s, #3
51          ssra v0.2d, v1.2d, #3
52
53 // CHECK:       ssra    v0.8b, v1.8b, #3        // encoding: [0x20,0x14,0x0d,0x0f]
54 // CHECK:       ssra    v0.4h, v1.4h, #3        // encoding: [0x20,0x14,0x1d,0x0f]
55 // CHECK:       ssra    v0.2s, v1.2s, #3        // encoding: [0x20,0x14,0x3d,0x0f]
56 // CHECK:       ssra    v0.16b, v1.16b, #3      // encoding: [0x20,0x14,0x0d,0x4f]
57 // CHECK:       ssra    v0.8h, v1.8h, #3        // encoding: [0x20,0x14,0x1d,0x4f]
58 // CHECK:       ssra    v0.4s, v1.4s, #3        // encoding: [0x20,0x14,0x3d,0x4f]
59 // CHECK:       ssra    v0.2d, v1.2d, #3        // encoding: [0x20,0x14,0x7d,0x4f]
60
61 //------------------------------------------------------------------------------
62 // Vector  shift right and accumulate by immediate
63 //------------------------------------------------------------------------------
64          usra v0.8b, v1.8b, #3
65          usra v0.4h, v1.4h, #3
66          usra v0.2s, v1.2s, #3
67          usra v0.16b, v1.16b, #3
68          usra v0.8h, v1.8h, #3
69          usra v0.4s, v1.4s, #3
70          usra v0.2d, v1.2d, #3
71
72 // CHECK:       usra    v0.8b, v1.8b, #3        // encoding: [0x20,0x14,0x0d,0x2f]
73 // CHECK:       usra    v0.4h, v1.4h, #3        // encoding: [0x20,0x14,0x1d,0x2f]
74 // CHECK:       usra    v0.2s, v1.2s, #3        // encoding: [0x20,0x14,0x3d,0x2f]
75 // CHECK:       usra    v0.16b, v1.16b, #3      // encoding: [0x20,0x14,0x0d,0x6f]
76 // CHECK:       usra    v0.8h, v1.8h, #3        // encoding: [0x20,0x14,0x1d,0x6f]
77 // CHECK:       usra    v0.4s, v1.4s, #3        // encoding: [0x20,0x14,0x3d,0x6f]
78 // CHECK:       usra    v0.2d, v1.2d, #3        // encoding: [0x20,0x14,0x7d,0x6f]
79
80 //------------------------------------------------------------------------------
81 // Vector rounding shift right by immediate
82 //------------------------------------------------------------------------------
83          srshr v0.8b, v1.8b, #3
84          srshr v0.4h, v1.4h, #3
85          srshr v0.2s, v1.2s, #3
86          srshr v0.16b, v1.16b, #3
87          srshr v0.8h, v1.8h, #3
88          srshr v0.4s, v1.4s, #3
89          srshr v0.2d, v1.2d, #3
90
91 // CHECK:       srshr   v0.8b, v1.8b, #3        // encoding: [0x20,0x24,0x0d,0x0f]
92 // CHECK:       srshr   v0.4h, v1.4h, #3        // encoding: [0x20,0x24,0x1d,0x0f]
93 // CHECK:       srshr   v0.2s, v1.2s, #3        // encoding: [0x20,0x24,0x3d,0x0f]
94 // CHECK:       srshr   v0.16b, v1.16b, #3      // encoding: [0x20,0x24,0x0d,0x4f]
95 // CHECK:       srshr   v0.8h, v1.8h, #3        // encoding: [0x20,0x24,0x1d,0x4f]
96 // CHECK:       srshr   v0.4s, v1.4s, #3        // encoding: [0x20,0x24,0x3d,0x4f]
97 // CHECK:       srshr   v0.2d, v1.2d, #3        // encoding: [0x20,0x24,0x7d,0x4f]
98
99
100 //------------------------------------------------------------------------------
101 // Vecotr rounding shift right by immediate
102 //------------------------------------------------------------------------------
103          urshr v0.8b, v1.8b, #3
104          urshr v0.4h, v1.4h, #3
105          urshr v0.2s, v1.2s, #3
106          urshr v0.16b, v1.16b, #3
107          urshr v0.8h, v1.8h, #3
108          urshr v0.4s, v1.4s, #3
109          urshr v0.2d, v1.2d, #3
110
111 // CHECK:       urshr   v0.8b, v1.8b, #3        // encoding: [0x20,0x24,0x0d,0x2f]
112 // CHECK:       urshr   v0.4h, v1.4h, #3        // encoding: [0x20,0x24,0x1d,0x2f]
113 // CHECK:       urshr   v0.2s, v1.2s, #3        // encoding: [0x20,0x24,0x3d,0x2f]
114 // CHECK:       urshr   v0.16b, v1.16b, #3      // encoding: [0x20,0x24,0x0d,0x6f]
115 // CHECK:       urshr   v0.8h, v1.8h, #3        // encoding: [0x20,0x24,0x1d,0x6f]
116 // CHECK:       urshr   v0.4s, v1.4s, #3        // encoding: [0x20,0x24,0x3d,0x6f]
117 // CHECK:       urshr   v0.2d, v1.2d, #3        // encoding: [0x20,0x24,0x7d,0x6f]
118
119
120 //------------------------------------------------------------------------------
121 // Vector rounding shift right and accumulate by immediate
122 //------------------------------------------------------------------------------
123          srsra v0.8b, v1.8b, #3
124          srsra v0.4h, v1.4h, #3
125          srsra v0.2s, v1.2s, #3
126          srsra v0.16b, v1.16b, #3
127          srsra v0.8h, v1.8h, #3
128          srsra v0.4s, v1.4s, #3
129          srsra v0.2d, v1.2d, #3
130
131 // CHECK:       srsra   v0.8b, v1.8b, #3        // encoding: [0x20,0x34,0x0d,0x0f]
132 // CHECK:       srsra   v0.4h, v1.4h, #3        // encoding: [0x20,0x34,0x1d,0x0f]
133 // CHECK:       srsra   v0.2s, v1.2s, #3        // encoding: [0x20,0x34,0x3d,0x0f]
134 // CHECK:       srsra   v0.16b, v1.16b, #3      // encoding: [0x20,0x34,0x0d,0x4f]
135 // CHECK:       srsra   v0.8h, v1.8h, #3        // encoding: [0x20,0x34,0x1d,0x4f]
136 // CHECK:       srsra   v0.4s, v1.4s, #3        // encoding: [0x20,0x34,0x3d,0x4f]
137 // CHECK:       srsra   v0.2d, v1.2d, #3        // encoding: [0x20,0x34,0x7d,0x4f]
138
139
140 //------------------------------------------------------------------------------
141 // Vector rounding shift right and accumulate by immediate
142 //------------------------------------------------------------------------------
143          ursra v0.8b, v1.8b, #3
144          ursra v0.4h, v1.4h, #3
145          ursra v0.2s, v1.2s, #3
146          ursra v0.16b, v1.16b, #3
147          ursra v0.8h, v1.8h, #3
148          ursra v0.4s, v1.4s, #3
149          ursra v0.2d, v1.2d, #3
150
151 // CHECK:       ursra   v0.8b, v1.8b, #3        // encoding: [0x20,0x34,0x0d,0x2f]
152 // CHECK:       ursra   v0.4h, v1.4h, #3        // encoding: [0x20,0x34,0x1d,0x2f]
153 // CHECK:       ursra   v0.2s, v1.2s, #3        // encoding: [0x20,0x34,0x3d,0x2f]
154 // CHECK:       ursra   v0.16b, v1.16b, #3      // encoding: [0x20,0x34,0x0d,0x6f]
155 // CHECK:       ursra   v0.8h, v1.8h, #3        // encoding: [0x20,0x34,0x1d,0x6f]
156 // CHECK:       ursra   v0.4s, v1.4s, #3        // encoding: [0x20,0x34,0x3d,0x6f]
157 // CHECK:       ursra   v0.2d, v1.2d, #3        // encoding: [0x20,0x34,0x7d,0x6f]
158
159
160 //------------------------------------------------------------------------------
161 // Vector shift right and insert by immediate
162 //------------------------------------------------------------------------------
163          sri v0.8b, v1.8b, #3
164          sri v0.4h, v1.4h, #3
165          sri v0.2s, v1.2s, #3
166          sri v0.16b, v1.16b, #3
167          sri v0.8h, v1.8h, #3
168          sri v0.4s, v1.4s, #3
169          sri v0.2d, v1.2d, #3
170
171 // CHECK:       sri     v0.8b, v1.8b, #3        // encoding: [0x20,0x44,0x0d,0x2f]
172 // CHECK:       sri     v0.4h, v1.4h, #3        // encoding: [0x20,0x44,0x1d,0x2f]
173 // CHECK:       sri     v0.2s, v1.2s, #3        // encoding: [0x20,0x44,0x3d,0x2f]
174 // CHECK:       sri     v0.16b, v1.16b, #3      // encoding: [0x20,0x44,0x0d,0x6f]
175 // CHECK:       sri     v0.8h, v1.8h, #3        // encoding: [0x20,0x44,0x1d,0x6f]
176 // CHECK:       sri     v0.4s, v1.4s, #3        // encoding: [0x20,0x44,0x3d,0x6f]
177
178
179 //------------------------------------------------------------------------------
180 // Vector shift left and insert by immediate
181 //------------------------------------------------------------------------------
182          sli v0.8b, v1.8b, #3
183          sli v0.4h, v1.4h, #3
184          sli v0.2s, v1.2s, #3
185          sli v0.16b, v1.16b, #3
186          sli v0.8h, v1.8h, #3
187          sli v0.4s, v1.4s, #3
188          sli v0.2d, v1.2d, #3
189
190 // CHECK:       sli     v0.8b, v1.8b, #3        // encoding: [0x20,0x54,0x0b,0x2f]
191 // CHECK:       sli     v0.4h, v1.4h, #3        // encoding: [0x20,0x54,0x13,0x2f]
192 // CHECK:       sli     v0.2s, v1.2s, #3        // encoding: [0x20,0x54,0x23,0x2f]
193 // CHECK:       sli     v0.16b, v1.16b, #3      // encoding: [0x20,0x54,0x0b,0x6f]
194 // CHECK:       sli     v0.8h, v1.8h, #3        // encoding: [0x20,0x54,0x13,0x6f]
195 // CHECK:       sli     v0.4s, v1.4s, #3        // encoding: [0x20,0x54,0x23,0x6f]
196 // CHECK:       sli     v0.2d, v1.2d, #3        // encoding: [0x20,0x54,0x43,0x6f]
197
198 //------------------------------------------------------------------------------
199 // Vector saturating shift left unsigned by immediate
200 //------------------------------------------------------------------------------
201          sqshlu v0.8b, v1.8b, #3
202          sqshlu v0.4h, v1.4h, #3
203          sqshlu v0.2s, v1.2s, #3
204          sqshlu v0.16b, v1.16b, #3
205          sqshlu v0.8h, v1.8h, #3
206          sqshlu v0.4s, v1.4s, #3
207          sqshlu v0.2d, v1.2d, #3
208
209 // CHECK:       sqshlu  v0.8b, v1.8b, #3        // encoding: [0x20,0x64,0x0b,0x2f]
210 // CHECK:       sqshlu  v0.4h, v1.4h, #3        // encoding: [0x20,0x64,0x13,0x2f]
211 // CHECK:       sqshlu  v0.2s, v1.2s, #3        // encoding: [0x20,0x64,0x23,0x2f]
212 // CHECK:       sqshlu  v0.16b, v1.16b, #3      // encoding: [0x20,0x64,0x0b,0x6f]
213 // CHECK:       sqshlu  v0.8h, v1.8h, #3        // encoding: [0x20,0x64,0x13,0x6f]
214 // CHECK:       sqshlu  v0.4s, v1.4s, #3        // encoding: [0x20,0x64,0x23,0x6f]
215 // CHECK:       sqshlu  v0.2d, v1.2d, #3        // encoding: [0x20,0x64,0x43,0x6f]
216
217
218 //------------------------------------------------------------------------------
219 // Vector saturating shift left by immediate
220 //------------------------------------------------------------------------------
221          sqshl v0.8b, v1.8b, #3
222          sqshl v0.4h, v1.4h, #3
223          sqshl v0.2s, v1.2s, #3
224          sqshl v0.16b, v1.16b, #3
225          sqshl v0.8h, v1.8h, #3
226          sqshl v0.4s, v1.4s, #3
227          sqshl v0.2d, v1.2d, #3
228
229 // CHECK:       sqshl   v0.8b, v1.8b, #3        // encoding: [0x20,0x74,0x0b,0x0f]
230 // CHECK:       sqshl   v0.4h, v1.4h, #3        // encoding: [0x20,0x74,0x13,0x0f]
231 // CHECK:       sqshl   v0.2s, v1.2s, #3        // encoding: [0x20,0x74,0x23,0x0f]
232 // CHECK:       sqshl   v0.16b, v1.16b, #3      // encoding: [0x20,0x74,0x0b,0x4f]
233 // CHECK:       sqshl   v0.8h, v1.8h, #3        // encoding: [0x20,0x74,0x13,0x4f]
234 // CHECK:       sqshl   v0.4s, v1.4s, #3        // encoding: [0x20,0x74,0x23,0x4f]
235 // CHECK:       sqshl   v0.2d, v1.2d, #3        // encoding: [0x20,0x74,0x43,0x4f]
236
237
238
239 //------------------------------------------------------------------------------
240 // Vector saturating shift left by immediate
241 //------------------------------------------------------------------------------
242          uqshl v0.8b, v1.8b, #3
243          uqshl v0.4h, v1.4h, #3
244          uqshl v0.2s, v1.2s, #3
245          uqshl v0.16b, v1.16b, #3
246          uqshl v0.8h, v1.8h, #3
247          uqshl v0.4s, v1.4s, #3
248          uqshl v0.2d, v1.2d, #3
249
250 // CHECK:       uqshl   v0.8b, v1.8b, #3        // encoding: [0x20,0x74,0x0b,0x2f]
251 // CHECK:       uqshl   v0.4h, v1.4h, #3        // encoding: [0x20,0x74,0x13,0x2f]
252 // CHECK:       uqshl   v0.2s, v1.2s, #3        // encoding: [0x20,0x74,0x23,0x2f]
253 // CHECK:       uqshl   v0.16b, v1.16b, #3      // encoding: [0x20,0x74,0x0b,0x6f]
254 // CHECK:       uqshl   v0.8h, v1.8h, #3        // encoding: [0x20,0x74,0x13,0x6f]
255 // CHECK:       uqshl   v0.4s, v1.4s, #3        // encoding: [0x20,0x74,0x23,0x6f]
256 // CHECK:       uqshl   v0.2d, v1.2d, #3        // encoding: [0x20,0x74,0x43,0x6f]
257
258
259 //------------------------------------------------------------------------------
260 // Vector shift right narrow by immediate
261 //------------------------------------------------------------------------------
262          shrn v0.8b, v1.8h, #3
263          shrn v0.4h, v1.4s, #3
264          shrn v0.2s, v1.2d, #3
265          shrn2 v0.16b, v1.8h, #3
266          shrn2 v0.8h, v1.4s, #3
267          shrn2 v0.4s, v1.2d, #3
268
269 // CHECK:       shrn    v0.8b, v1.8h, #3        // encoding: [0x20,0x84,0x0d,0x0f]
270 // CHECK:       shrn    v0.4h, v1.4s, #3        // encoding: [0x20,0x84,0x1d,0x0f]
271 // CHECK:       shrn    v0.2s, v1.2d, #3        // encoding: [0x20,0x84,0x3d,0x0f]
272 // CHECK:       shrn2   v0.16b, v1.8h, #3       // encoding: [0x20,0x84,0x0d,0x4f]
273 // CHECK:       shrn2   v0.8h, v1.4s, #3        // encoding: [0x20,0x84,0x1d,0x4f]
274 // CHECK:       shrn2   v0.4s, v1.2d, #3        // encoding: [0x20,0x84,0x3d,0x4f]
275
276 //------------------------------------------------------------------------------
277 // Vector saturating shift right unsigned narrow by immediate
278 //------------------------------------------------------------------------------
279          sqshrun v0.8b, v1.8h, #3
280          sqshrun v0.4h, v1.4s, #3
281          sqshrun v0.2s, v1.2d, #3
282          sqshrun2 v0.16b, v1.8h, #3
283          sqshrun2 v0.8h, v1.4s, #3
284          sqshrun2 v0.4s, v1.2d, #3
285
286 // CHECK:       sqshrun v0.8b, v1.8h, #3        // encoding: [0x20,0x84,0x0d,0x2f]
287 // CHECK:       sqshrun v0.4h, v1.4s, #3        // encoding: [0x20,0x84,0x1d,0x2f]
288 // CHECK:       sqshrun v0.2s, v1.2d, #3        // encoding: [0x20,0x84,0x3d,0x2f]
289 // CHECK:       sqshrun2        v0.16b, v1.8h, #3       // encoding: [0x20,0x84,0x0d,0x6f]
290 // CHECK:       sqshrun2        v0.8h, v1.4s, #3        // encoding: [0x20,0x84,0x1d,0x6f]
291 // CHECK:       sqshrun2        v0.4s, v1.2d, #3        // encoding: [0x20,0x84,0x3d,0x6f]
292
293 //------------------------------------------------------------------------------
294 // Vector rounding shift right narrow by immediate
295 //------------------------------------------------------------------------------
296          rshrn v0.8b, v1.8h, #3
297          rshrn v0.4h, v1.4s, #3
298          rshrn v0.2s, v1.2d, #3
299          rshrn2 v0.16b, v1.8h, #3
300          rshrn2 v0.8h, v1.4s, #3
301          rshrn2 v0.4s, v1.2d, #3
302
303 // CHECK:       rshrn   v0.8b, v1.8h, #3        // encoding: [0x20,0x8c,0x0d,0x0f]
304 // CHECK:       rshrn   v0.4h, v1.4s, #3        // encoding: [0x20,0x8c,0x1d,0x0f]
305 // CHECK:       rshrn   v0.2s, v1.2d, #3        // encoding: [0x20,0x8c,0x3d,0x0f]
306 // CHECK:       rshrn2  v0.16b, v1.8h, #3       // encoding: [0x20,0x8c,0x0d,0x4f]
307 // CHECK:       rshrn2  v0.8h, v1.4s, #3        // encoding: [0x20,0x8c,0x1d,0x4f]
308 // CHECK:       rshrn2  v0.4s, v1.2d, #3        // encoding: [0x20,0x8c,0x3d,0x4f]
309
310
311 //------------------------------------------------------------------------------
312 // Vector saturating shift right rounded unsigned narrow by immediate
313 //------------------------------------------------------------------------------
314          sqrshrun v0.8b, v1.8h, #3
315          sqrshrun v0.4h, v1.4s, #3
316          sqrshrun v0.2s, v1.2d, #3
317          sqrshrun2 v0.16b, v1.8h, #3
318          sqrshrun2 v0.8h, v1.4s, #3
319          sqrshrun2 v0.4s, v1.2d, #3
320
321 // CHECK:       sqrshrun        v0.8b, v1.8h, #3    // encoding: [0x20,0x8c,0x0d,0x2f]
322 // CHECK:       sqrshrun        v0.4h, v1.4s, #3    // encoding: [0x20,0x8c,0x1d,0x2f]
323 // CHECK:       sqrshrun        v0.2s, v1.2d, #3    // encoding: [0x20,0x8c,0x3d,0x2f]
324 // CHECK:       sqrshrun2       v0.16b, v1.8h, #3   // encoding: [0x20,0x8c,0x0d,0x6f]
325 // CHECK:       sqrshrun2       v0.8h, v1.4s, #3    // encoding: [0x20,0x8c,0x1d,0x6f]
326 // CHECK:       sqrshrun2       v0.4s, v1.2d, #3    // encoding: [0x20,0x8c,0x3d,0x6f]
327
328
329 //------------------------------------------------------------------------------
330 // Vector saturating shift right narrow by immediate
331 //------------------------------------------------------------------------------
332          sqshrn v0.8b, v1.8h, #3
333          sqshrn v0.4h, v1.4s, #3
334          sqshrn v0.2s, v1.2d, #3
335          sqshrn2 v0.16b, v1.8h, #3
336          sqshrn2 v0.8h, v1.4s, #3
337          sqshrn2 v0.4s, v1.2d, #3
338
339 // CHECK:       sqshrn  v0.8b, v1.8h, #3        // encoding: [0x20,0x94,0x0d,0x0f]
340 // CHECK:       sqshrn  v0.4h, v1.4s, #3        // encoding: [0x20,0x94,0x1d,0x0f]
341 // CHECK:       sqshrn  v0.2s, v1.2d, #3        // encoding: [0x20,0x94,0x3d,0x0f]
342 // CHECK:       sqshrn2 v0.16b, v1.8h, #3       // encoding: [0x20,0x94,0x0d,0x4f]
343 // CHECK:       sqshrn2 v0.8h, v1.4s, #3        // encoding: [0x20,0x94,0x1d,0x4f]
344 // CHECK:       sqshrn2 v0.4s, v1.2d, #3        // encoding: [0x20,0x94,0x3d,0x4f]
345
346
347 //------------------------------------------------------------------------------
348 // Vector saturating shift right narrow by immediate
349 //------------------------------------------------------------------------------
350          uqshrn v0.8b, v1.8h, #3
351          uqshrn v0.4h, v1.4s, #3
352          uqshrn v0.2s, v1.2d, #3
353          uqshrn2 v0.16b, v1.8h, #3
354          uqshrn2 v0.8h, v1.4s, #3
355          uqshrn2 v0.4s, v1.2d, #3
356
357 // CHECK:       uqshrn  v0.8b, v1.8h, #3        // encoding: [0x20,0x94,0x0d,0x2f]
358 // CHECK:       uqshrn  v0.4h, v1.4s, #3        // encoding: [0x20,0x94,0x1d,0x2f]
359 // CHECK:       uqshrn  v0.2s, v1.2d, #3        // encoding: [0x20,0x94,0x3d,0x2f]
360 // CHECK:       uqshrn2 v0.16b, v1.8h, #3       // encoding: [0x20,0x94,0x0d,0x6f]
361 // CHECK:       uqshrn2 v0.8h, v1.4s, #3        // encoding: [0x20,0x94,0x1d,0x6f]
362 // CHECK:       uqshrn2 v0.4s, v1.2d, #3        // encoding: [0x20,0x94,0x3d,0x6f]
363
364 //------------------------------------------------------------------------------
365 // Vector saturating shift right rounded narrow by immediate
366 //------------------------------------------------------------------------------
367          sqrshrn v0.8b, v1.8h, #3
368          sqrshrn v0.4h, v1.4s, #3
369          sqrshrn v0.2s, v1.2d, #3
370          sqrshrn2 v0.16b, v1.8h, #3
371          sqrshrn2 v0.8h, v1.4s, #3
372          sqrshrn2 v0.4s, v1.2d, #3
373
374 // CHECK:       sqrshrn v0.8b, v1.8h, #3        // encoding: [0x20,0x9c,0x0d,0x0f]
375 // CHECK:       sqrshrn v0.4h, v1.4s, #3        // encoding: [0x20,0x9c,0x1d,0x0f]
376 // CHECK:       sqrshrn v0.2s, v1.2d, #3        // encoding: [0x20,0x9c,0x3d,0x0f]
377 // CHECK:       sqrshrn2        v0.16b, v1.8h, #3   // encoding: [0x20,0x9c,0x0d,0x4f]
378 // CHECK:       sqrshrn2        v0.8h, v1.4s, #3    // encoding: [0x20,0x9c,0x1d,0x4f]
379 // CHECK:       sqrshrn2        v0.4s, v1.2d, #3    // encoding: [0x20,0x9c,0x3d,0x4f]
380
381
382 //------------------------------------------------------------------------------
383 // Vector saturating shift right rounded narrow by immediate
384 //------------------------------------------------------------------------------
385          uqrshrn v0.8b, v1.8h, #3
386          uqrshrn v0.4h, v1.4s, #3
387          uqrshrn v0.2s, v1.2d, #3
388          uqrshrn2 v0.16b, v1.8h, #3
389          uqrshrn2 v0.8h, v1.4s, #3
390          uqrshrn2 v0.4s, v1.2d, #3
391
392 // CHECK:       uqrshrn v0.8b, v1.8h, #3        // encoding: [0x20,0x9c,0x0d,0x2f]
393 // CHECK:       uqrshrn v0.4h, v1.4s, #3        // encoding: [0x20,0x9c,0x1d,0x2f]
394 // CHECK:       uqrshrn v0.2s, v1.2d, #3        // encoding: [0x20,0x9c,0x3d,0x2f]
395 // CHECK:       uqrshrn2        v0.16b, v1.8h, #3   // encoding: [0x20,0x9c,0x0d,0x6f]
396 // CHECK:       uqrshrn2        v0.8h, v1.4s, #3    // encoding: [0x20,0x9c,0x1d,0x6f]
397 // CHECK:       uqrshrn2        v0.4s, v1.2d, #3    // encoding: [0x20,0x9c,0x3d,0x6f]
398
399
400 //------------------------------------------------------------------------------
401 // Fixed-point convert to floating-point
402 //------------------------------------------------------------------------------
403          scvtf v0.2s, v1.2s, #3
404          scvtf v0.4s, v1.4s, #3
405          scvtf v0.2d, v1.2d, #3
406          ucvtf v0.2s, v1.2s, #3
407          ucvtf v0.4s, v1.4s, #3
408          ucvtf v0.2d, v1.2d, #3
409
410 // CHECK:       scvtf   v0.2s, v1.2s, #3        // encoding: [0x20,0xe4,0x3d,0x0f]
411 // CHECK:       scvtf   v0.4s, v1.4s, #3        // encoding: [0x20,0xe4,0x3d,0x4f]
412 // CHECK:       scvtf   v0.2d, v1.2d, #3        // encoding: [0x20,0xe4,0x7d,0x4f]
413 // CHECK:       ucvtf   v0.2s, v1.2s, #3        // encoding: [0x20,0xe4,0x3d,0x2f]
414 // CHECK:       ucvtf   v0.4s, v1.4s, #3        // encoding: [0x20,0xe4,0x3d,0x6f]
415 // CHECK:       ucvtf   v0.2d, v1.2d, #3        // encoding: [0x20,0xe4,0x7d,0x6f]
416
417 //------------------------------------------------------------------------------
418 // Floating-point convert to fixed-point
419 //------------------------------------------------------------------------------
420          fcvtzs v0.2s, v1.2s, #3
421          fcvtzs v0.4s, v1.4s, #3
422          fcvtzs v0.2d, v1.2d, #3
423          fcvtzu v0.2s, v1.2s, #3
424          fcvtzu v0.4s, v1.4s, #3
425          fcvtzu v0.2d, v1.2d, #3
426
427
428 // CHECK:       fcvtzs  v0.2s, v1.2s, #3        // encoding: [0x20,0xfc,0x3d,0x0f]
429 // CHECK:       fcvtzs  v0.4s, v1.4s, #3        // encoding: [0x20,0xfc,0x3d,0x4f]
430 // CHECK:       fcvtzs  v0.2d, v1.2d, #3        // encoding: [0x20,0xfc,0x7d,0x4f]
431 // CHECK:       fcvtzu  v0.2s, v1.2s, #3        // encoding: [0x20,0xfc,0x3d,0x2f]
432 // CHECK:       fcvtzu  v0.4s, v1.4s, #3        // encoding: [0x20,0xfc,0x3d,0x6f]
433 // CHECK:       fcvtzu  v0.2d, v1.2d, #3        // encoding: [0x20,0xfc,0x7d,0x6f]
434