[llvm-readobj] - Simplify stack-sizes.test test case.
[llvm-complete.git] / test / MC / AArch64 / neon-simd-shift.s
blob4638c535a6a7cc1753ea11da8f6240c1f825c5a6
1 // RUN: llvm-mc -triple=aarch64-none-linux-gnu -mattr=+neon,+fullfp16 -show-encoding < %s | FileCheck %s
3 // Check that the assembler can handle the documented syntax for AArch64
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]
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
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]
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
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]
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
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]
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
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]
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
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]
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
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]
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
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]
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
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]
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
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]
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
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]
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
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]
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
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]
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
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]
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
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]
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
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]
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
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]
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
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]
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
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]
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
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]
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
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]
400 //------------------------------------------------------------------------------
401 // Fixed-point convert to floating-point
402 //------------------------------------------------------------------------------
403 scvtf v0.4h, v1.4h, #3
404 scvtf v0.8h, v1.8h, #3
405 scvtf v0.2s, v1.2s, #3
406 scvtf v0.4s, v1.4s, #3
407 scvtf v0.2d, v1.2d, #3
408 ucvtf v0.4h, v1.4h, #3
409 ucvtf v0.8h, v1.8h, #3
410 ucvtf v0.2s, v1.2s, #3
411 ucvtf v0.4s, v1.4s, #3
412 ucvtf v0.2d, v1.2d, #3
414 // CHECK: scvtf v0.4h, v1.4h, #3 // encoding: [0x20,0xe4,0x1d,0x0f]
415 // CHECK: scvtf v0.8h, v1.8h, #3 // encoding: [0x20,0xe4,0x1d,0x4f]
416 // CHECK: scvtf v0.2s, v1.2s, #3 // encoding: [0x20,0xe4,0x3d,0x0f]
417 // CHECK: scvtf v0.4s, v1.4s, #3 // encoding: [0x20,0xe4,0x3d,0x4f]
418 // CHECK: scvtf v0.2d, v1.2d, #3 // encoding: [0x20,0xe4,0x7d,0x4f]
419 // CHECK: ucvtf v0.4h, v1.4h, #3 // encoding: [0x20,0xe4,0x1d,0x2f]
420 // CHECK: ucvtf v0.8h, v1.8h, #3 // encoding: [0x20,0xe4,0x1d,0x6f]
421 // CHECK: ucvtf v0.2s, v1.2s, #3 // encoding: [0x20,0xe4,0x3d,0x2f]
422 // CHECK: ucvtf v0.4s, v1.4s, #3 // encoding: [0x20,0xe4,0x3d,0x6f]
423 // CHECK: ucvtf v0.2d, v1.2d, #3 // encoding: [0x20,0xe4,0x7d,0x6f]
425 //------------------------------------------------------------------------------
426 // Floating-point convert to fixed-point
427 //------------------------------------------------------------------------------
428 fcvtzs v0.4h, v1.4h, #3
429 fcvtzs v0.8h, v1.8h, #3
430 fcvtzs v0.2s, v1.2s, #3
431 fcvtzs v0.4s, v1.4s, #3
432 fcvtzs v0.2d, v1.2d, #3
433 fcvtzu v0.4h, v1.4h, #3
434 fcvtzu v0.8h, v1.8h, #3
435 fcvtzu v0.2s, v1.2s, #3
436 fcvtzu v0.4s, v1.4s, #3
437 fcvtzu v0.2d, v1.2d, #3
440 // CHECK: fcvtzs v0.4h, v1.4h, #3 // encoding: [0x20,0xfc,0x1d,0x0f]
441 // CHECK: fcvtzs v0.8h, v1.8h, #3 // encoding: [0x20,0xfc,0x1d,0x4f]
442 // CHECK: fcvtzs v0.2s, v1.2s, #3 // encoding: [0x20,0xfc,0x3d,0x0f]
443 // CHECK: fcvtzs v0.4s, v1.4s, #3 // encoding: [0x20,0xfc,0x3d,0x4f]
444 // CHECK: fcvtzs v0.2d, v1.2d, #3 // encoding: [0x20,0xfc,0x7d,0x4f]
445 // CHECK: fcvtzu v0.4h, v1.4h, #3 // encoding: [0x20,0xfc,0x1d,0x2f]
446 // CHECK: fcvtzu v0.8h, v1.8h, #3 // encoding: [0x20,0xfc,0x1d,0x6f]
447 // CHECK: fcvtzu v0.2s, v1.2s, #3 // encoding: [0x20,0xfc,0x3d,0x2f]
448 // CHECK: fcvtzu v0.4s, v1.4s, #3 // encoding: [0x20,0xfc,0x3d,0x6f]
449 // CHECK: fcvtzu v0.2d, v1.2d, #3 // encoding: [0x20,0xfc,0x7d,0x6f]