NEON Two-operand assembly aliases for VSLI.
[oota-llvm.git] / test / MC / ARM / neon-shift-encoding.s
1 @ RUN: llvm-mc -mcpu=cortex-a8 -triple arm-unknown-unknown -show-encoding < %s | FileCheck %s
2
3 _foo:
4         vshl.u8 d16, d17, d16
5         vshl.u16        d16, d17, d16
6         vshl.u32        d16, d17, d16
7         vshl.u64        d16, d17, d16
8         vshl.i8 d16, d16, #7
9         vshl.i16        d16, d16, #15
10         vshl.i32        d16, d16, #31
11         vshl.i64        d16, d16, #63
12         vshl.u8 q8, q9, q8
13         vshl.u16        q8, q9, q8
14         vshl.u32        q8, q9, q8
15         vshl.u64        q8, q9, q8
16         vshl.i8 q8, q8, #7
17         vshl.i16        q8, q8, #15
18         vshl.i32        q8, q8, #31
19         vshl.i64        q8, q8, #63
20
21 @ CHECK: vshl.u8        d16, d17, d16  @ encoding: [0xa1,0x04,0x40,0xf3]
22 @ CHECK: vshl.u16       d16, d17, d16  @ encoding: [0xa1,0x04,0x50,0xf3]
23 @ CHECK: vshl.u32       d16, d17, d16  @ encoding: [0xa1,0x04,0x60,0xf3]
24 @ CHECK: vshl.u64       d16, d17, d16  @ encoding: [0xa1,0x04,0x70,0xf3]
25 @ CHECK: vshl.i8        d16, d16, #7  @ encoding: [0x30,0x05,0xcf,0xf2]
26 @ CHECK: vshl.i16       d16, d16, #15  @ encoding: [0x30,0x05,0xdf,0xf2]
27 @ CHECK: vshl.i32       d16, d16, #31  @ encoding: [0x30,0x05,0xff,0xf2]
28 @ CHECK: vshl.i64       d16, d16, #63  @ encoding: [0xb0,0x05,0xff,0xf2]
29 @ CHECK: vshl.u8        q8, q9, q8  @ encoding: [0xe2,0x04,0x40,0xf3]
30 @ CHECK: vshl.u16       q8, q9, q8  @ encoding: [0xe2,0x04,0x50,0xf3]
31 @ CHECK: vshl.u32       q8, q9, q8  @ encoding: [0xe2,0x04,0x60,0xf3]
32 @ CHECK: vshl.u64       q8, q9, q8  @ encoding: [0xe2,0x04,0x70,0xf3]
33 @ CHECK: vshl.i8        q8, q8, #7  @ encoding: [0x70,0x05,0xcf,0xf2]
34 @ CHECK: vshl.i16       q8, q8, #15  @ encoding: [0x70,0x05,0xdf,0xf2]
35 @ CHECK: vshl.i32       q8, q8, #31  @ encoding: [0x70,0x05,0xff,0xf2]
36 @ CHECK: vshl.i64       q8, q8, #63  @ encoding: [0xf0,0x05,0xff,0xf2]
37
38
39         vshr.u8 d16, d16, #7
40         vshr.u16        d16, d16, #15
41         vshr.u32        d16, d16, #31
42         vshr.u64        d16, d16, #63
43         vshr.u8 q8, q8, #7
44         vshr.u16        q8, q8, #15
45         vshr.u32        q8, q8, #31
46         vshr.u64        q8, q8, #63
47         vshr.s8 d16, d16, #7
48         vshr.s16        d16, d16, #15
49         vshr.s32        d16, d16, #31
50         vshr.s64        d16, d16, #63
51         vshr.s8 q8, q8, #7
52         vshr.s16        q8, q8, #15
53         vshr.s32        q8, q8, #31
54         vshr.s64        q8, q8, #63
55
56 @ CHECK: vshr.u8        d16, d16, #7  @ encoding: [0x30,0x00,0xc9,0xf3]
57 @ CHECK: vshr.u16       d16, d16, #15  @ encoding: [0x30,0x00,0xd1,0xf3]
58 @ CHECK: vshr.u32       d16, d16, #31  @ encoding: [0x30,0x00,0xe1,0xf3]
59 @ CHECK: vshr.u64       d16, d16, #63  @ encoding: [0xb0,0x00,0xc1,0xf3]
60 @ CHECK: vshr.u8        q8, q8, #7  @ encoding: [0x70,0x00,0xc9,0xf3]
61 @ CHECK: vshr.u16       q8, q8, #15  @ encoding: [0x70,0x00,0xd1,0xf3]
62 @ CHECK: vshr.u32       q8, q8, #31  @ encoding: [0x70,0x00,0xe1,0xf3]
63 @ CHECK: vshr.u64       q8, q8, #63  @ encoding: [0xf0,0x00,0xc1,0xf3]
64 @ CHECK: vshr.s8        d16, d16, #7  @ encoding: [0x30,0x00,0xc9,0xf2]
65 @ CHECK: vshr.s16       d16, d16, #15  @ encoding: [0x30,0x00,0xd1,0xf2]
66 @ CHECK: vshr.s32       d16, d16, #31  @ encoding: [0x30,0x00,0xe1,0xf2]
67 @ CHECK: vshr.s64       d16, d16, #63  @ encoding: [0xb0,0x00,0xc1,0xf2]
68 @ CHECK: vshr.s8        q8, q8, #7  @ encoding: [0x70,0x00,0xc9,0xf2]
69 @ CHECK: vshr.s16       q8, q8, #15  @ encoding: [0x70,0x00,0xd1,0xf2]
70 @ CHECK: vshr.s32       q8, q8, #31  @ encoding: [0x70,0x00,0xe1,0xf2]
71 @ CHECK: vshr.s64       q8, q8, #63  @ encoding: [0xf0,0x00,0xc1,0xf2]
72
73 @ implied destination operand variants.
74         vshr.u8 d16, #7
75         vshr.u16        d16, #15
76         vshr.u32        d16, #31
77         vshr.u64        d16, #63
78         vshr.u8 q8, #7
79         vshr.u16        q8, #15
80         vshr.u32        q8, #31
81         vshr.u64        q8, #63
82         vshr.s8 d16, #7
83         vshr.s16        d16, #15
84         vshr.s32        d16, #31
85         vshr.s64        d16, #63
86         vshr.s8 q8, #7
87         vshr.s16        q8, #15
88         vshr.s32        q8, #31
89         vshr.s64        q8, #63
90
91 @ CHECK: vshr.u8        d16, d16, #7  @ encoding: [0x30,0x00,0xc9,0xf3]
92 @ CHECK: vshr.u16       d16, d16, #15  @ encoding: [0x30,0x00,0xd1,0xf3]
93 @ CHECK: vshr.u32       d16, d16, #31  @ encoding: [0x30,0x00,0xe1,0xf3]
94 @ CHECK: vshr.u64       d16, d16, #63  @ encoding: [0xb0,0x00,0xc1,0xf3]
95 @ CHECK: vshr.u8        q8, q8, #7  @ encoding: [0x70,0x00,0xc9,0xf3]
96 @ CHECK: vshr.u16       q8, q8, #15  @ encoding: [0x70,0x00,0xd1,0xf3]
97 @ CHECK: vshr.u32       q8, q8, #31  @ encoding: [0x70,0x00,0xe1,0xf3]
98 @ CHECK: vshr.u64       q8, q8, #63  @ encoding: [0xf0,0x00,0xc1,0xf3]
99 @ CHECK: vshr.s8        d16, d16, #7  @ encoding: [0x30,0x00,0xc9,0xf2]
100 @ CHECK: vshr.s16       d16, d16, #15  @ encoding: [0x30,0x00,0xd1,0xf2]
101 @ CHECK: vshr.s32       d16, d16, #31  @ encoding: [0x30,0x00,0xe1,0xf2]
102 @ CHECK: vshr.s64       d16, d16, #63  @ encoding: [0xb0,0x00,0xc1,0xf2]
103 @ CHECK: vshr.s8        q8, q8, #7  @ encoding: [0x70,0x00,0xc9,0xf2]
104 @ CHECK: vshr.s16       q8, q8, #15  @ encoding: [0x70,0x00,0xd1,0xf2]
105 @ CHECK: vshr.s32       q8, q8, #31  @ encoding: [0x70,0x00,0xe1,0xf2]
106 @ CHECK: vshr.s64       q8, q8, #63  @ encoding: [0xf0,0x00,0xc1,0xf2]
107
108         vsra.u8   d16, d16, #7
109         vsra.u16  d16, d16, #15
110         vsra.u32  d16, d16, #31
111         vsra.u64  d16, d16, #63
112         vsra.u8   q8, q8, #7
113         vsra.u16  q8, q8, #15
114         vsra.u32  q8, q8, #31
115         vsra.u64  q8, q8, #63
116         vsra.s8   d16, d16, #7
117         vsra.s16  d16, d16, #15
118         vsra.s32  d16, d16, #31
119         vsra.s64  d16, d16, #63
120         vsra.s8   q8, q8, #7
121         vsra.s16  q8, q8, #15
122         vsra.s32  q8, q8, #31
123         vsra.s64  q8, q8, #63
124
125 @ CHECK: vsra.u8  d16, d16, #7   @ encoding: [0x30,0x01,0xc9,0xf3]
126 @ CHECK: vsra.u16 d16, d16, #15  @ encoding: [0x30,0x01,0xd1,0xf3]
127 @ CHECK: vsra.u32 d16, d16, #31  @ encoding: [0x30,0x01,0xe1,0xf3]
128 @ CHECK: vsra.u64 d16, d16, #63  @ encoding: [0xb0,0x01,0xc1,0xf3]
129 @ CHECK: vsra.u8  q8, q8, #7     @ encoding: [0x70,0x01,0xc9,0xf3]
130 @ CHECK: vsra.u16 q8, q8, #15    @ encoding: [0x70,0x01,0xd1,0xf3]
131 @ CHECK: vsra.u32 q8, q8, #31    @ encoding: [0x70,0x01,0xe1,0xf3]
132 @ CHECK: vsra.u64 q8, q8, #63    @ encoding: [0xf0,0x01,0xc1,0xf3]
133 @ CHECK: vsra.s8  d16, d16, #7   @ encoding: [0x30,0x01,0xc9,0xf2]
134 @ CHECK: vsra.s16 d16, d16, #15  @ encoding: [0x30,0x01,0xd1,0xf2]
135 @ CHECK: vsra.s32 d16, d16, #31  @ encoding: [0x30,0x01,0xe1,0xf2]
136 @ CHECK: vsra.s64 d16, d16, #63  @ encoding: [0xb0,0x01,0xc1,0xf2]
137 @ CHECK: vsra.s8  q8, q8, #7     @ encoding: [0x70,0x01,0xc9,0xf2]
138 @ CHECK: vsra.s16 q8, q8, #15    @ encoding: [0x70,0x01,0xd1,0xf2]
139 @ CHECK: vsra.s32 q8, q8, #31    @ encoding: [0x70,0x01,0xe1,0xf2]
140 @ CHECK: vsra.s64 q8, q8, #63    @ encoding: [0xf0,0x01,0xc1,0xf2]
141
142
143         vsri.8   d16, d6, #7
144         vsri.16  d26, d18, #15
145         vsri.32  d11, d10, #31
146         vsri.64  d12, d19, #63
147         vsri.8   q1, q8, #7
148         vsri.16  q2, q7, #15
149         vsri.32  q3, q6, #31
150         vsri.64  q4, q5, #63
151
152         vsri.8   d16, #7
153         vsri.16  d15, #15
154         vsri.32  d14, #31
155         vsri.64  d13, #63
156         vsri.8   q4, #7
157         vsri.16  q5, #15
158         vsri.32  q6, #31
159         vsri.64  q7, #63
160
161 @ CHECK: vsri.8 d16, d6, #7             @ encoding: [0x16,0x04,0xc9,0xf3]
162 @ CHECK: vsri.16 d26, d18, #15          @ encoding: [0x32,0xa4,0xd1,0xf3]
163 @ CHECK: vsri.32 d11, d10, #31          @ encoding: [0x1a,0xb4,0xa1,0xf3]
164 @ CHECK: vsri.64 d12, d19, #63          @ encoding: [0xb3,0xc4,0x81,0xf3]
165 @ CHECK: vsri.8 q1, q8, #7              @ encoding: [0x70,0x24,0x89,0xf3]
166 @ CHECK: vsri.16 q2, q7, #15            @ encoding: [0x5e,0x44,0x91,0xf3]
167 @ CHECK: vsri.32 q3, q6, #31            @ encoding: [0x5c,0x64,0xa1,0xf3]
168 @ CHECK: vsri.64 q4, q5, #63            @ encoding: [0xda,0x84,0x81,0xf3]
169 @ CHECK: vsri.8 d16, d16, #7            @ encoding: [0x30,0x04,0xc9,0xf3]
170 @ CHECK: vsri.16 d15, d15, #15          @ encoding: [0x1f,0xf4,0x91,0xf3]
171 @ CHECK: vsri.32 d14, d14, #31          @ encoding: [0x1e,0xe4,0xa1,0xf3]
172 @ CHECK: vsri.64 d13, d13, #63          @ encoding: [0x9d,0xd4,0x81,0xf3]
173 @ CHECK: vsri.8 q4, q4, #7              @ encoding: [0x58,0x84,0x89,0xf3]
174 @ CHECK: vsri.16 q5, q5, #15            @ encoding: [0x5a,0xa4,0x91,0xf3]
175 @ CHECK: vsri.32 q6, q6, #31            @ encoding: [0x5c,0xc4,0xa1,0xf3]
176 @ CHECK: vsri.64 q7, q7, #63            @ encoding: [0xde,0xe4,0x81,0xf3]
177
178
179         vsli.8   d16, d6, #7
180         vsli.16  d26, d18, #15
181         vsli.32  d11, d10, #31
182         vsli.64  d12, d19, #63
183         vsli.8   q1, q8, #7
184         vsli.16  q2, q7, #15
185         vsli.32  q3, q6, #31
186         vsli.64  q4, q5, #63
187
188         vsli.8   d16, #7
189         vsli.16  d15, #15
190         vsli.32  d14, #31
191         vsli.64  d13, #63
192         vsli.8   q4, #7
193         vsli.16  q5, #15
194         vsli.32  q6, #31
195         vsli.64  q7, #63
196
197 @ CHECK: vsli.8 d16, d6, #7             @ encoding: [0x16,0x05,0xcf,0xf3]
198 @ CHECK: vsli.16 d26, d18, #15          @ encoding: [0x32,0xa5,0xdf,0xf3]
199 @ CHECK: vsli.32 d11, d10, #31          @ encoding: [0x1a,0xb5,0xbf,0xf3]
200 @ CHECK: vsli.64 d12, d19, #63          @ encoding: [0xb3,0xc5,0xbf,0xf3]
201 @ CHECK: vsli.8 q1, q8, #7              @ encoding: [0x70,0x25,0x8f,0xf3]
202 @ CHECK: vsli.16 q2, q7, #15            @ encoding: [0x5e,0x45,0x9f,0xf3]
203 @ CHECK: vsli.32 q3, q6, #31            @ encoding: [0x5c,0x65,0xbf,0xf3]
204 @ CHECK: vsli.64 q4, q5, #63            @ encoding: [0xda,0x85,0xbf,0xf3]
205 @ CHECK: vsli.8 d16, d16, #7            @ encoding: [0x30,0x05,0xcf,0xf3]
206 @ CHECK: vsli.16 d15, d15, #15          @ encoding: [0x1f,0xf5,0x9f,0xf3]
207 @ CHECK: vsli.32 d14, d14, #31          @ encoding: [0x1e,0xe5,0xbf,0xf3]
208 @ CHECK: vsli.64 d13, d13, #63          @ encoding: [0x9d,0xd5,0xbf,0xf3]
209 @ CHECK: vsli.8 q4, q4, #7              @ encoding: [0x58,0x85,0x8f,0xf3]
210 @ CHECK: vsli.16 q5, q5, #15            @ encoding: [0x5a,0xa5,0x9f,0xf3]
211 @ CHECK: vsli.32 q6, q6, #31            @ encoding: [0x5c,0xc5,0xbf,0xf3]
212 @ CHECK: vsli.64 q7, q7, #63            @ encoding: [0xde,0xe5,0xbf,0xf3]
213
214
215 @ CHECK: vshll.s8       q8, d16, #7  @ encoding: [0x30,0x0a,0xcf,0xf2]
216         vshll.s8        q8, d16, #7
217 @ CHECK: vshll.s16      q8, d16, #15  @ encoding: [0x30,0x0a,0xdf,0xf2]
218         vshll.s16       q8, d16, #15
219 @ CHECK: vshll.s32      q8, d16, #31  @ encoding: [0x30,0x0a,0xff,0xf2]
220         vshll.s32       q8, d16, #31
221 @ CHECK: vshll.u8       q8, d16, #7  @ encoding: [0x30,0x0a,0xcf,0xf3]
222         vshll.u8        q8, d16, #7
223 @ CHECK: vshll.u16      q8, d16, #15  @ encoding: [0x30,0x0a,0xdf,0xf3]
224         vshll.u16       q8, d16, #15
225 @ CHECK: vshll.u32      q8, d16, #31  @ encoding: [0x30,0x0a,0xff,0xf3]
226         vshll.u32       q8, d16, #31
227 @ CHECK: vshll.i8       q8, d16, #8  @ encoding: [0x20,0x03,0xf2,0xf3]
228         vshll.i8        q8, d16, #8
229 @ CHECK: vshll.i16      q8, d16, #16  @ encoding: [0x20,0x03,0xf6,0xf3]
230         vshll.i16       q8, d16, #16
231 @ CHECK: vshll.i32      q8, d16, #32  @ encoding: [0x20,0x03,0xfa,0xf3]
232         vshll.i32       q8, d16, #32
233 @ CHECK: vshrn.i16      d16, q8, #8  @ encoding: [0x30,0x08,0xc8,0xf2]
234         vshrn.i16       d16, q8, #8
235 @ CHECK: vshrn.i32      d16, q8, #16  @ encoding: [0x30,0x08,0xd0,0xf2]
236         vshrn.i32       d16, q8, #16
237 @ CHECK: vshrn.i64      d16, q8, #32  @ encoding: [0x30,0x08,0xe0,0xf2]
238         vshrn.i64       d16, q8, #32
239 @ CHECK: vrshl.s8       d16, d17, d16  @ encoding: [0xa1,0x05,0x40,0xf2]
240         vrshl.s8        d16, d17, d16
241 @ CHECK: vrshl.s16      d16, d17, d16  @ encoding: [0xa1,0x05,0x50,0xf2]
242         vrshl.s16       d16, d17, d16
243 @ CHECK: vrshl.s32      d16, d17, d16  @ encoding: [0xa1,0x05,0x60,0xf2]
244         vrshl.s32       d16, d17, d16
245 @ CHECK: vrshl.s64      d16, d17, d16  @ encoding: [0xa1,0x05,0x70,0xf2]
246         vrshl.s64       d16, d17, d16
247 @ CHECK: vrshl.u8       d16, d17, d16  @ encoding: [0xa1,0x05,0x40,0xf3]
248         vrshl.u8        d16, d17, d16
249 @ CHECK: vrshl.u16      d16, d17, d16  @ encoding: [0xa1,0x05,0x50,0xf3]
250         vrshl.u16       d16, d17, d16
251 @ CHECK: vrshl.u32      d16, d17, d16  @ encoding: [0xa1,0x05,0x60,0xf3]
252         vrshl.u32       d16, d17, d16
253 @ CHECK: vrshl.u64      d16, d17, d16  @ encoding: [0xa1,0x05,0x70,0xf3]
254         vrshl.u64       d16, d17, d16
255 @ CHECK: vrshl.s8       q8, q9, q8  @ encoding: [0xe2,0x05,0x40,0xf2]
256         vrshl.s8        q8, q9, q8
257 @ CHECK: vrshl.s16      q8, q9, q8  @ encoding: [0xe2,0x05,0x50,0xf2]
258         vrshl.s16       q8, q9, q8
259 @ CHECK: vrshl.s32      q8, q9, q8  @ encoding: [0xe2,0x05,0x60,0xf2]
260         vrshl.s32       q8, q9, q8
261 @ CHECK: vrshl.s64      q8, q9, q8  @ encoding: [0xe2,0x05,0x70,0xf2]
262         vrshl.s64       q8, q9, q8
263 @ CHECK: vrshl.u8       q8, q9, q8  @ encoding: [0xe2,0x05,0x40,0xf3]
264         vrshl.u8        q8, q9, q8
265 @ CHECK: vrshl.u16      q8, q9, q8  @ encoding: [0xe2,0x05,0x50,0xf3]
266         vrshl.u16       q8, q9, q8
267 @ CHECK: vrshl.u32      q8, q9, q8  @ encoding: [0xe2,0x05,0x60,0xf3]
268         vrshl.u32       q8, q9, q8
269 @ CHECK: vrshl.u64      q8, q9, q8  @ encoding: [0xe2,0x05,0x70,0xf3]
270         vrshl.u64       q8, q9, q8
271 @ CHECK: vrshr.s8       d16, d16, #8  @ encoding: [0x30,0x02,0xc8,0xf2]
272         vrshr.s8        d16, d16, #8
273 @ CHECK: vrshr.s16      d16, d16, #16  @ encoding: [0x30,0x02,0xd0,0xf2]
274         vrshr.s16       d16, d16, #16
275 @ CHECK: vrshr.s32      d16, d16, #32  @ encoding: [0x30,0x02,0xe0,0xf2]
276         vrshr.s32       d16, d16, #32
277 @ CHECK: vrshr.s64      d16, d16, #64  @ encoding: [0xb0,0x02,0xc0,0xf2]
278         vrshr.s64       d16, d16, #64
279 @ CHECK: vrshr.u8       d16, d16, #8  @ encoding: [0x30,0x02,0xc8,0xf3]
280         vrshr.u8        d16, d16, #8
281 @ CHECK: vrshr.u16      d16, d16, #16  @ encoding: [0x30,0x02,0xd0,0xf3]
282         vrshr.u16       d16, d16, #16
283 @ CHECK: vrshr.u32      d16, d16, #32  @ encoding: [0x30,0x02,0xe0,0xf3]
284         vrshr.u32       d16, d16, #32
285 @ CHECK: vrshr.u64      d16, d16, #64  @ encoding: [0xb0,0x02,0xc0,0xf3]
286         vrshr.u64       d16, d16, #64
287 @ CHECK: vrshr.s8       q8, q8, #8  @ encoding: [0x70,0x02,0xc8,0xf2]
288         vrshr.s8        q8, q8, #8
289 @ CHECK: vrshr.s16      q8, q8, #16  @ encoding: [0x70,0x02,0xd0,0xf2]
290         vrshr.s16       q8, q8, #16
291 @ CHECK: vrshr.s32      q8, q8, #32  @ encoding: [0x70,0x02,0xe0,0xf2]
292         vrshr.s32       q8, q8, #32
293 @ CHECK: vrshr.s64      q8, q8, #64  @ encoding: [0xf0,0x02,0xc0,0xf2]
294         vrshr.s64       q8, q8, #64
295 @ CHECK: vrshr.u8       q8, q8, #8  @ encoding: [0x70,0x02,0xc8,0xf3]
296         vrshr.u8        q8, q8, #8
297 @ CHECK: vrshr.u16      q8, q8, #16  @ encoding: [0x70,0x02,0xd0,0xf3]
298         vrshr.u16       q8, q8, #16
299 @ CHECK: vrshr.u32      q8, q8, #32  @ encoding: [0x70,0x02,0xe0,0xf3]
300         vrshr.u32       q8, q8, #32
301 @ CHECK: vrshr.u64      q8, q8, #64  @ encoding: [0xf0,0x02,0xc0,0xf3]
302         vrshr.u64       q8, q8, #64
303 @ CHECK: vrshrn.i16     d16, q8, #8  @ encoding: [0x70,0x08,0xc8,0xf2]
304         vrshrn.i16      d16, q8, #8
305 @ CHECK: vrshrn.i32     d16, q8, #16  @ encoding: [0x70,0x08,0xd0,0xf2]
306         vrshrn.i32      d16, q8, #16
307 @ CHECK: vrshrn.i64     d16, q8, #32  @ encoding: [0x70,0x08,0xe0,0xf2]
308         vrshrn.i64      d16, q8, #32
309 @ CHECK: vqrshrn.s16    d16, q8, #4  @ encoding: [0x70,0x09,0xcc,0xf2]
310         vqrshrn.s16     d16, q8, #4
311 @ CHECK: vqrshrn.s32    d16, q8, #13  @ encoding: [0x70,0x09,0xd3,0xf2]
312         vqrshrn.s32     d16, q8, #13
313 @ CHECK: vqrshrn.s64    d16, q8, #13  @ encoding: [0x70,0x09,0xf3,0xf2]
314         vqrshrn.s64     d16, q8, #13
315 @ CHECK: vqrshrn.u16    d16, q8, #4  @ encoding: [0x70,0x09,0xcc,0xf3]
316         vqrshrn.u16     d16, q8, #4
317 @ CHECK: vqrshrn.u32    d16, q8, #13  @ encoding: [0x70,0x09,0xd3,0xf3]
318         vqrshrn.u32     d16, q8, #13
319 @ CHECK: vqrshrn.u64    d16, q8, #13  @ encoding: [0x70,0x09,0xf3,0xf3]
320         vqrshrn.u64     d16, q8, #13
321
322 @ Optional destination operand variants.
323         vshl.s8 q4, q5
324         vshl.s16 q4, q5
325         vshl.s32 q4, q5
326         vshl.s64 q4, q5
327
328         vshl.u8 q4, q5
329         vshl.u16 q4, q5
330         vshl.u32 q4, q5
331         vshl.u64 q4, q5
332
333         vshl.s8 d4, d5
334         vshl.s16 d4, d5
335         vshl.s32 d4, d5
336         vshl.s64 d4, d5
337
338         vshl.u8 d4, d5
339         vshl.u16 d4, d5
340         vshl.u32 d4, d5
341         vshl.u64 d4, d5
342
343 @ CHECK: vshl.s8        q4, q4, q5      @ encoding: [0x48,0x84,0x0a,0xf2]
344 @ CHECK: vshl.s16       q4, q4, q5      @ encoding: [0x48,0x84,0x1a,0xf2]
345 @ CHECK: vshl.s32       q4, q4, q5      @ encoding: [0x48,0x84,0x2a,0xf2]
346 @ CHECK: vshl.s64       q4, q4, q5      @ encoding: [0x48,0x84,0x3a,0xf2]
347
348 @ CHECK: vshl.u8        q4, q4, q5      @ encoding: [0x48,0x84,0x0a,0xf3]
349 @ CHECK: vshl.u16       q4, q4, q5      @ encoding: [0x48,0x84,0x1a,0xf3]
350 @ CHECK: vshl.u32       q4, q4, q5      @ encoding: [0x48,0x84,0x2a,0xf3]
351 @ CHECK: vshl.u64       q4, q4, q5      @ encoding: [0x48,0x84,0x3a,0xf3]
352
353 @ CHECK: vshl.s8        d4, d4, d5      @ encoding: [0x04,0x44,0x05,0xf2]
354 @ CHECK: vshl.s16       d4, d4, d5      @ encoding: [0x04,0x44,0x15,0xf2]
355 @ CHECK: vshl.s32       d4, d4, d5      @ encoding: [0x04,0x44,0x25,0xf2]
356 @ CHECK: vshl.s64       d4, d4, d5      @ encoding: [0x04,0x44,0x35,0xf2]
357
358 @ CHECK: vshl.u8        d4, d4, d5      @ encoding: [0x04,0x44,0x05,0xf3]
359 @ CHECK: vshl.u16       d4, d4, d5      @ encoding: [0x04,0x44,0x15,0xf3]
360 @ CHECK: vshl.u32       d4, d4, d5      @ encoding: [0x04,0x44,0x25,0xf3]
361 @ CHECK: vshl.u64       d4, d4, d5      @ encoding: [0x04,0x44,0x35,0xf3]
362
363         vshl.s8 q4, #2
364         vshl.s16 q4, #14
365         vshl.s32 q4, #27
366         vshl.s64 q4, #35
367
368         vshl.s8 d4, #6
369         vshl.u16 d4, #10
370         vshl.s32 d4, #17
371         vshl.u64 d4, #43
372
373 @ CHECK: vshl.i8        q4, q4, #2      @ encoding: [0x58,0x85,0x8a,0xf2]
374 @ CHECK: vshl.i16       q4, q4, #14     @ encoding: [0x58,0x85,0x9e,0xf2]
375 @ CHECK: vshl.i32       q4, q4, #27     @ encoding: [0x58,0x85,0xbb,0xf2]
376 @ CHECK: vshl.i64       q4, q4, #35     @ encoding: [0xd8,0x85,0xa3,0xf2]
377
378 @ CHECK: vshl.i8        d4, d4, #6      @ encoding: [0x14,0x45,0x8e,0xf2]
379 @ CHECK: vshl.i16       d4, d4, #10     @ encoding: [0x14,0x45,0x9a,0xf2]
380 @ CHECK: vshl.i32       d4, d4, #17     @ encoding: [0x14,0x45,0xb1,0xf2]
381 @ CHECK: vshl.i64       d4, d4, #43     @ encoding: [0x94,0x45,0xab,0xf2]