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 //------------------------------------------------------------------------------
11 sshr v0.16
b, v1.16
b, #3
15 // CHECK
: sshr v0.8
b, v1.8
b, #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.16
b, v1.16
b, #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 //------------------------------------------------------------------------------
29 ushr v0.16
b, v1.16
b, #3
34 // CHECK
: ushr v0.8
b, v1.8
b, #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.16
b, v1.16
b, #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 //------------------------------------------------------------------------------
48 ssra v0.16
b, v1.16
b, #3
53 // CHECK
: ssra v0.8
b, v1.8
b, #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.16
b, v1.16
b, #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 //------------------------------------------------------------------------------
67 usra v0.16
b, v1.16
b, #3
72 // CHECK
: usra v0.8
b, v1.8
b, #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.16
b, v1.16
b, #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.8
b, v1.8
b, #3
84 srshr v0.4h
, v1.4h
, #3
85 srshr v0.2s
, v1.2s
, #3
86 srshr v0.16
b, v1.16
b, #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.8
b, v1.8
b, #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.16
b, v1.16
b, #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.8
b, v1.8
b, #3
104 urshr v0.4h
, v1.4h
, #3
105 urshr v0.2s
, v1.2s
, #3
106 urshr v0.16
b, v1.16
b, #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.8
b, v1.8
b, #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.16
b, v1.16
b, #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.8
b, v1.8
b, #3
124 srsra v0.4h
, v1.4h
, #3
125 srsra v0.2s
, v1.2s
, #3
126 srsra v0.16
b, v1.16
b, #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.8
b, v1.8
b, #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.16
b, v1.16
b, #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.8
b, v1.8
b, #3
144 ursra v0.4h
, v1.4h
, #3
145 ursra v0.2s
, v1.2s
, #3
146 ursra v0.16
b, v1.16
b, #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.8
b, v1.8
b, #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.16
b, v1.16
b, #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 //------------------------------------------------------------------------------
166 sri v0.16
b, v1.16
b, #3
171 // CHECK
: sri v0.8
b, v1.8
b, #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.16
b, v1.16
b, #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 //------------------------------------------------------------------------------
185 sli v0.16
b, v1.16
b, #3
190 // CHECK
: sli v0.8
b, v1.8
b, #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.16
b, v1.16
b, #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.8
b, v1.8
b, #3
202 sqshlu v0.4h
, v1.4h
, #3
203 sqshlu v0.2s
, v1.2s
, #3
204 sqshlu v0.16
b, v1.16
b, #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.8
b, v1.8
b, #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.16
b, v1.16
b, #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.8
b, v1.8
b, #3
222 sqshl v0.4h
, v1.4h
, #3
223 sqshl v0.2s
, v1.2s
, #3
224 sqshl v0.16
b, v1.16
b, #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.8
b, v1.8
b, #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.16
b, v1.16
b, #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.8
b, v1.8
b, #3
243 uqshl v0.4h
, v1.4h
, #3
244 uqshl v0.2s
, v1.2s
, #3
245 uqshl v0.16
b, v1.16
b, #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.8
b, v1.8
b, #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.16
b, v1.16
b, #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.8
b, v1.8h
, #3
263 shrn v0.4h
, v1.4s
, #3
264 shrn v0.2s
, v1.2d
, #3
265 shrn2 v0.16
b, v1.8h
, #3
266 shrn2 v0.8h
, v1.4s
, #3
267 shrn2 v0.4s
, v1.2d
, #3
269 // CHECK
: shrn v0.8
b, 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.16
b, 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.8
b, v1.8h
, #3
280 sqshrun v0.4h
, v1.4s
, #3
281 sqshrun v0.2s
, v1.2d
, #3
282 sqshrun2 v0.16
b, v1.8h
, #3
283 sqshrun2 v0.8h
, v1.4s
, #3
284 sqshrun2 v0.4s
, v1.2d
, #3
286 // CHECK
: sqshrun v0.8
b, 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.16
b, 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.8
b, v1.8h
, #3
297 rshrn v0.4h
, v1.4s
, #3
298 rshrn v0.2s
, v1.2d
, #3
299 rshrn2 v0.16
b, v1.8h
, #3
300 rshrn2 v0.8h
, v1.4s
, #3
301 rshrn2 v0.4s
, v1.2d
, #3
303 // CHECK
: rshrn v0.8
b, 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.16
b, 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.8
b, v1.8h
, #3
315 sqrshrun v0.4h
, v1.4s
, #3
316 sqrshrun v0.2s
, v1.2d
, #3
317 sqrshrun2 v0.16
b, v1.8h
, #3
318 sqrshrun2 v0.8h
, v1.4s
, #3
319 sqrshrun2 v0.4s
, v1.2d
, #3
321 // CHECK
: sqrshrun v0.8
b, 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.16
b, 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.8
b, v1.8h
, #3
333 sqshrn v0.4h
, v1.4s
, #3
334 sqshrn v0.2s
, v1.2d
, #3
335 sqshrn2 v0.16
b, v1.8h
, #3
336 sqshrn2 v0.8h
, v1.4s
, #3
337 sqshrn2 v0.4s
, v1.2d
, #3
339 // CHECK
: sqshrn v0.8
b, 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.16
b, 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.8
b, v1.8h
, #3
351 uqshrn v0.4h
, v1.4s
, #3
352 uqshrn v0.2s
, v1.2d
, #3
353 uqshrn2 v0.16
b, v1.8h
, #3
354 uqshrn2 v0.8h
, v1.4s
, #3
355 uqshrn2 v0.4s
, v1.2d
, #3
357 // CHECK
: uqshrn v0.8
b, 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.16
b, 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.8
b, v1.8h
, #3
368 sqrshrn v0.4h
, v1.4s
, #3
369 sqrshrn v0.2s
, v1.2d
, #3
370 sqrshrn2 v0.16
b, v1.8h
, #3
371 sqrshrn2 v0.8h
, v1.4s
, #3
372 sqrshrn2 v0.4s
, v1.2d
, #3
374 // CHECK
: sqrshrn v0.8
b, 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.16
b, 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.8
b, v1.8h
, #3
386 uqrshrn v0.4h
, v1.4s
, #3
387 uqrshrn v0.2s
, v1.2d
, #3
388 uqrshrn2 v0.16
b, v1.8h
, #3
389 uqrshrn2 v0.8h
, v1.4s
, #3
390 uqrshrn2 v0.4s
, v1.2d
, #3
392 // CHECK
: uqrshrn v0.8
b, 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.16
b, 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]