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