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
435