Fix VCVT decoding (between floating-point and fixed-point, Floating-point). Patch...
[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
109         vsra.s8   d16, d6, #7
110         vsra.s16  d26, d18, #15
111         vsra.s32  d11, d10, #31
112         vsra.s64  d12, d19, #63
113         vsra.s8   q1, q8, #7
114         vsra.s16  q2, q7, #15
115         vsra.s32  q3, q6, #31
116         vsra.s64  q4, q5, #63
117
118         vsra.s8   d16, #7
119         vsra.s16  d15, #15
120         vsra.s32  d14, #31
121         vsra.s64  d13, #63
122         vsra.s8   q4, #7
123         vsra.s16  q5, #15
124         vsra.s32  q6, #31
125         vsra.s64  q7, #63
126
127 @ CHECK: vsra.s8        d16, d6, #7     @ encoding: [0x16,0x01,0xc9,0xf2]
128 @ CHECK: vsra.s16       d26, d18, #15   @ encoding: [0x32,0xa1,0xd1,0xf2]
129 @ CHECK: vsra.s32       d11, d10, #31   @ encoding: [0x1a,0xb1,0xa1,0xf2]
130 @ CHECK: vsra.s64       d12, d19, #63   @ encoding: [0xb3,0xc1,0x81,0xf2]
131 @ CHECK: vsra.s8        q1, q8, #7      @ encoding: [0x70,0x21,0x89,0xf2]
132 @ CHECK: vsra.s16       q2, q7, #15     @ encoding: [0x5e,0x41,0x91,0xf2]
133 @ CHECK: vsra.s32       q3, q6, #31     @ encoding: [0x5c,0x61,0xa1,0xf2]
134 @ CHECK: vsra.s64       q4, q5, #63     @ encoding: [0xda,0x81,0x81,0xf2]
135 @ CHECK: vsra.s8        d16, d16, #7    @ encoding: [0x30,0x01,0xc9,0xf2]
136 @ CHECK: vsra.s16       d15, d15, #15   @ encoding: [0x1f,0xf1,0x91,0xf2]
137 @ CHECK: vsra.s32       d14, d14, #31   @ encoding: [0x1e,0xe1,0xa1,0xf2]
138 @ CHECK: vsra.s64       d13, d13, #63   @ encoding: [0x9d,0xd1,0x81,0xf2]
139 @ CHECK: vsra.s8        q4, q4, #7      @ encoding: [0x58,0x81,0x89,0xf2]
140 @ CHECK: vsra.s16       q5, q5, #15     @ encoding: [0x5a,0xa1,0x91,0xf2]
141 @ CHECK: vsra.s32       q6, q6, #31     @ encoding: [0x5c,0xc1,0xa1,0xf2]
142 @ CHECK: vsra.s64       q7, q7, #63     @ encoding: [0xde,0xe1,0x81,0xf2]
143
144
145         vsra.u8   d16, d6, #7
146         vsra.u16  d26, d18, #15
147         vsra.u32  d11, d10, #31
148         vsra.u64  d12, d19, #63
149         vsra.u8   q1, q8, #7
150         vsra.u16  q2, q7, #15
151         vsra.u32  q3, q6, #31
152         vsra.u64  q4, q5, #63
153
154         vsra.u8   d16, #7
155         vsra.u16  d15, #15
156         vsra.u32  d14, #31
157         vsra.u64  d13, #63
158         vsra.u8   q4, #7
159         vsra.u16  q5, #15
160         vsra.u32  q6, #31
161         vsra.u64  q7, #63
162
163 @ CHECK: vsra.u8        d16, d6, #7     @ encoding: [0x16,0x01,0xc9,0xf3]
164 @ CHECK: vsra.u16       d26, d18, #15   @ encoding: [0x32,0xa1,0xd1,0xf3]
165 @ CHECK: vsra.u32       d11, d10, #31   @ encoding: [0x1a,0xb1,0xa1,0xf3]
166 @ CHECK: vsra.u64       d12, d19, #63   @ encoding: [0xb3,0xc1,0x81,0xf3]
167 @ CHECK: vsra.u8        q1, q8, #7      @ encoding: [0x70,0x21,0x89,0xf3]
168 @ CHECK: vsra.u16       q2, q7, #15     @ encoding: [0x5e,0x41,0x91,0xf3]
169 @ CHECK: vsra.u32       q3, q6, #31     @ encoding: [0x5c,0x61,0xa1,0xf3]
170 @ CHECK: vsra.u64       q4, q5, #63     @ encoding: [0xda,0x81,0x81,0xf3]
171 @ CHECK: vsra.u8        d16, d16, #7    @ encoding: [0x30,0x01,0xc9,0xf3]
172 @ CHECK: vsra.u16       d15, d15, #15   @ encoding: [0x1f,0xf1,0x91,0xf3]
173 @ CHECK: vsra.u32       d14, d14, #31   @ encoding: [0x1e,0xe1,0xa1,0xf3]
174 @ CHECK: vsra.u64       d13, d13, #63   @ encoding: [0x9d,0xd1,0x81,0xf3]
175 @ CHECK: vsra.u8        q4, q4, #7      @ encoding: [0x58,0x81,0x89,0xf3]
176 @ CHECK: vsra.u16       q5, q5, #15     @ encoding: [0x5a,0xa1,0x91,0xf3]
177 @ CHECK: vsra.u32       q6, q6, #31     @ encoding: [0x5c,0xc1,0xa1,0xf3]
178 @ CHECK: vsra.u64       q7, q7, #63     @ encoding: [0xde,0xe1,0x81,0xf3]
179
180
181         vsri.8   d16, d6, #7
182         vsri.16  d26, d18, #15
183         vsri.32  d11, d10, #31
184         vsri.64  d12, d19, #63
185         vsri.8   q1, q8, #7
186         vsri.16  q2, q7, #15
187         vsri.32  q3, q6, #31
188         vsri.64  q4, q5, #63
189
190         vsri.8   d16, #7
191         vsri.16  d15, #15
192         vsri.32  d14, #31
193         vsri.64  d13, #63
194         vsri.8   q4, #7
195         vsri.16  q5, #15
196         vsri.32  q6, #31
197         vsri.64  q7, #63
198
199 @ CHECK: vsri.8 d16, d6, #7             @ encoding: [0x16,0x04,0xc9,0xf3]
200 @ CHECK: vsri.16 d26, d18, #15          @ encoding: [0x32,0xa4,0xd1,0xf3]
201 @ CHECK: vsri.32 d11, d10, #31          @ encoding: [0x1a,0xb4,0xa1,0xf3]
202 @ CHECK: vsri.64 d12, d19, #63          @ encoding: [0xb3,0xc4,0x81,0xf3]
203 @ CHECK: vsri.8 q1, q8, #7              @ encoding: [0x70,0x24,0x89,0xf3]
204 @ CHECK: vsri.16 q2, q7, #15            @ encoding: [0x5e,0x44,0x91,0xf3]
205 @ CHECK: vsri.32 q3, q6, #31            @ encoding: [0x5c,0x64,0xa1,0xf3]
206 @ CHECK: vsri.64 q4, q5, #63            @ encoding: [0xda,0x84,0x81,0xf3]
207 @ CHECK: vsri.8 d16, d16, #7            @ encoding: [0x30,0x04,0xc9,0xf3]
208 @ CHECK: vsri.16 d15, d15, #15          @ encoding: [0x1f,0xf4,0x91,0xf3]
209 @ CHECK: vsri.32 d14, d14, #31          @ encoding: [0x1e,0xe4,0xa1,0xf3]
210 @ CHECK: vsri.64 d13, d13, #63          @ encoding: [0x9d,0xd4,0x81,0xf3]
211 @ CHECK: vsri.8 q4, q4, #7              @ encoding: [0x58,0x84,0x89,0xf3]
212 @ CHECK: vsri.16 q5, q5, #15            @ encoding: [0x5a,0xa4,0x91,0xf3]
213 @ CHECK: vsri.32 q6, q6, #31            @ encoding: [0x5c,0xc4,0xa1,0xf3]
214 @ CHECK: vsri.64 q7, q7, #63            @ encoding: [0xde,0xe4,0x81,0xf3]
215
216
217         vsli.8   d16, d6, #7
218         vsli.16  d26, d18, #15
219         vsli.32  d11, d10, #31
220         vsli.64  d12, d19, #63
221         vsli.8   q1, q8, #7
222         vsli.16  q2, q7, #15
223         vsli.32  q3, q6, #31
224         vsli.64  q4, q5, #63
225
226         vsli.8   d16, #7
227         vsli.16  d15, #15
228         vsli.32  d14, #31
229         vsli.64  d13, #63
230         vsli.8   q4, #7
231         vsli.16  q5, #15
232         vsli.32  q6, #31
233         vsli.64  q7, #63
234
235 @ CHECK: vsli.8 d16, d6, #7             @ encoding: [0x16,0x05,0xcf,0xf3]
236 @ CHECK: vsli.16 d26, d18, #15          @ encoding: [0x32,0xa5,0xdf,0xf3]
237 @ CHECK: vsli.32 d11, d10, #31          @ encoding: [0x1a,0xb5,0xbf,0xf3]
238 @ CHECK: vsli.64 d12, d19, #63          @ encoding: [0xb3,0xc5,0xbf,0xf3]
239 @ CHECK: vsli.8 q1, q8, #7              @ encoding: [0x70,0x25,0x8f,0xf3]
240 @ CHECK: vsli.16 q2, q7, #15            @ encoding: [0x5e,0x45,0x9f,0xf3]
241 @ CHECK: vsli.32 q3, q6, #31            @ encoding: [0x5c,0x65,0xbf,0xf3]
242 @ CHECK: vsli.64 q4, q5, #63            @ encoding: [0xda,0x85,0xbf,0xf3]
243 @ CHECK: vsli.8 d16, d16, #7            @ encoding: [0x30,0x05,0xcf,0xf3]
244 @ CHECK: vsli.16 d15, d15, #15          @ encoding: [0x1f,0xf5,0x9f,0xf3]
245 @ CHECK: vsli.32 d14, d14, #31          @ encoding: [0x1e,0xe5,0xbf,0xf3]
246 @ CHECK: vsli.64 d13, d13, #63          @ encoding: [0x9d,0xd5,0xbf,0xf3]
247 @ CHECK: vsli.8 q4, q4, #7              @ encoding: [0x58,0x85,0x8f,0xf3]
248 @ CHECK: vsli.16 q5, q5, #15            @ encoding: [0x5a,0xa5,0x9f,0xf3]
249 @ CHECK: vsli.32 q6, q6, #31            @ encoding: [0x5c,0xc5,0xbf,0xf3]
250 @ CHECK: vsli.64 q7, q7, #63            @ encoding: [0xde,0xe5,0xbf,0xf3]
251
252
253 @ CHECK: vshll.s8       q8, d16, #7  @ encoding: [0x30,0x0a,0xcf,0xf2]
254         vshll.s8        q8, d16, #7
255 @ CHECK: vshll.s16      q8, d16, #15  @ encoding: [0x30,0x0a,0xdf,0xf2]
256         vshll.s16       q8, d16, #15
257 @ CHECK: vshll.s32      q8, d16, #31  @ encoding: [0x30,0x0a,0xff,0xf2]
258         vshll.s32       q8, d16, #31
259 @ CHECK: vshll.u8       q8, d16, #7  @ encoding: [0x30,0x0a,0xcf,0xf3]
260         vshll.u8        q8, d16, #7
261 @ CHECK: vshll.u16      q8, d16, #15  @ encoding: [0x30,0x0a,0xdf,0xf3]
262         vshll.u16       q8, d16, #15
263 @ CHECK: vshll.u32      q8, d16, #31  @ encoding: [0x30,0x0a,0xff,0xf3]
264         vshll.u32       q8, d16, #31
265 @ CHECK: vshll.i8       q8, d16, #8  @ encoding: [0x20,0x03,0xf2,0xf3]
266         vshll.i8        q8, d16, #8
267 @ CHECK: vshll.i16      q8, d16, #16  @ encoding: [0x20,0x03,0xf6,0xf3]
268         vshll.i16       q8, d16, #16
269 @ CHECK: vshll.i32      q8, d16, #32  @ encoding: [0x20,0x03,0xfa,0xf3]
270         vshll.i32       q8, d16, #32
271 @ CHECK: vshrn.i16      d16, q8, #8  @ encoding: [0x30,0x08,0xc8,0xf2]
272         vshrn.i16       d16, q8, #8
273 @ CHECK: vshrn.i32      d16, q8, #16  @ encoding: [0x30,0x08,0xd0,0xf2]
274         vshrn.i32       d16, q8, #16
275 @ CHECK: vshrn.i64      d16, q8, #32  @ encoding: [0x30,0x08,0xe0,0xf2]
276         vshrn.i64       d16, q8, #32
277 @ CHECK: vrshl.s8       d16, d17, d16  @ encoding: [0xa1,0x05,0x40,0xf2]
278         vrshl.s8        d16, d17, d16
279 @ CHECK: vrshl.s16      d16, d17, d16  @ encoding: [0xa1,0x05,0x50,0xf2]
280         vrshl.s16       d16, d17, d16
281 @ CHECK: vrshl.s32      d16, d17, d16  @ encoding: [0xa1,0x05,0x60,0xf2]
282         vrshl.s32       d16, d17, d16
283 @ CHECK: vrshl.s64      d16, d17, d16  @ encoding: [0xa1,0x05,0x70,0xf2]
284         vrshl.s64       d16, d17, d16
285 @ CHECK: vrshl.u8       d16, d17, d16  @ encoding: [0xa1,0x05,0x40,0xf3]
286         vrshl.u8        d16, d17, d16
287 @ CHECK: vrshl.u16      d16, d17, d16  @ encoding: [0xa1,0x05,0x50,0xf3]
288         vrshl.u16       d16, d17, d16
289 @ CHECK: vrshl.u32      d16, d17, d16  @ encoding: [0xa1,0x05,0x60,0xf3]
290         vrshl.u32       d16, d17, d16
291 @ CHECK: vrshl.u64      d16, d17, d16  @ encoding: [0xa1,0x05,0x70,0xf3]
292         vrshl.u64       d16, d17, d16
293 @ CHECK: vrshl.s8       q8, q9, q8  @ encoding: [0xe2,0x05,0x40,0xf2]
294         vrshl.s8        q8, q9, q8
295 @ CHECK: vrshl.s16      q8, q9, q8  @ encoding: [0xe2,0x05,0x50,0xf2]
296         vrshl.s16       q8, q9, q8
297 @ CHECK: vrshl.s32      q8, q9, q8  @ encoding: [0xe2,0x05,0x60,0xf2]
298         vrshl.s32       q8, q9, q8
299 @ CHECK: vrshl.s64      q8, q9, q8  @ encoding: [0xe2,0x05,0x70,0xf2]
300         vrshl.s64       q8, q9, q8
301 @ CHECK: vrshl.u8       q8, q9, q8  @ encoding: [0xe2,0x05,0x40,0xf3]
302         vrshl.u8        q8, q9, q8
303 @ CHECK: vrshl.u16      q8, q9, q8  @ encoding: [0xe2,0x05,0x50,0xf3]
304         vrshl.u16       q8, q9, q8
305 @ CHECK: vrshl.u32      q8, q9, q8  @ encoding: [0xe2,0x05,0x60,0xf3]
306         vrshl.u32       q8, q9, q8
307 @ CHECK: vrshl.u64      q8, q9, q8  @ encoding: [0xe2,0x05,0x70,0xf3]
308         vrshl.u64       q8, q9, q8
309 @ CHECK: vrshr.s8       d16, d16, #8  @ encoding: [0x30,0x02,0xc8,0xf2]
310         vrshr.s8        d16, d16, #8
311 @ CHECK: vrshr.s16      d16, d16, #16  @ encoding: [0x30,0x02,0xd0,0xf2]
312         vrshr.s16       d16, d16, #16
313 @ CHECK: vrshr.s32      d16, d16, #32  @ encoding: [0x30,0x02,0xe0,0xf2]
314         vrshr.s32       d16, d16, #32
315 @ CHECK: vrshr.s64      d16, d16, #64  @ encoding: [0xb0,0x02,0xc0,0xf2]
316         vrshr.s64       d16, d16, #64
317 @ CHECK: vrshr.u8       d16, d16, #8  @ encoding: [0x30,0x02,0xc8,0xf3]
318         vrshr.u8        d16, d16, #8
319 @ CHECK: vrshr.u16      d16, d16, #16  @ encoding: [0x30,0x02,0xd0,0xf3]
320         vrshr.u16       d16, d16, #16
321 @ CHECK: vrshr.u32      d16, d16, #32  @ encoding: [0x30,0x02,0xe0,0xf3]
322         vrshr.u32       d16, d16, #32
323 @ CHECK: vrshr.u64      d16, d16, #64  @ encoding: [0xb0,0x02,0xc0,0xf3]
324         vrshr.u64       d16, d16, #64
325 @ CHECK: vrshr.s8       q8, q8, #8  @ encoding: [0x70,0x02,0xc8,0xf2]
326         vrshr.s8        q8, q8, #8
327 @ CHECK: vrshr.s16      q8, q8, #16  @ encoding: [0x70,0x02,0xd0,0xf2]
328         vrshr.s16       q8, q8, #16
329 @ CHECK: vrshr.s32      q8, q8, #32  @ encoding: [0x70,0x02,0xe0,0xf2]
330         vrshr.s32       q8, q8, #32
331 @ CHECK: vrshr.s64      q8, q8, #64  @ encoding: [0xf0,0x02,0xc0,0xf2]
332         vrshr.s64       q8, q8, #64
333 @ CHECK: vrshr.u8       q8, q8, #8  @ encoding: [0x70,0x02,0xc8,0xf3]
334         vrshr.u8        q8, q8, #8
335 @ CHECK: vrshr.u16      q8, q8, #16  @ encoding: [0x70,0x02,0xd0,0xf3]
336         vrshr.u16       q8, q8, #16
337 @ CHECK: vrshr.u32      q8, q8, #32  @ encoding: [0x70,0x02,0xe0,0xf3]
338         vrshr.u32       q8, q8, #32
339 @ CHECK: vrshr.u64      q8, q8, #64  @ encoding: [0xf0,0x02,0xc0,0xf3]
340         vrshr.u64       q8, q8, #64
341 @ CHECK: vrshrn.i16     d16, q8, #8  @ encoding: [0x70,0x08,0xc8,0xf2]
342         vrshrn.i16      d16, q8, #8
343 @ CHECK: vrshrn.i32     d16, q8, #16  @ encoding: [0x70,0x08,0xd0,0xf2]
344         vrshrn.i32      d16, q8, #16
345 @ CHECK: vrshrn.i64     d16, q8, #32  @ encoding: [0x70,0x08,0xe0,0xf2]
346         vrshrn.i64      d16, q8, #32
347 @ CHECK: vqrshrn.s16    d16, q8, #4  @ encoding: [0x70,0x09,0xcc,0xf2]
348         vqrshrn.s16     d16, q8, #4
349 @ CHECK: vqrshrn.s32    d16, q8, #13  @ encoding: [0x70,0x09,0xd3,0xf2]
350         vqrshrn.s32     d16, q8, #13
351 @ CHECK: vqrshrn.s64    d16, q8, #13  @ encoding: [0x70,0x09,0xf3,0xf2]
352         vqrshrn.s64     d16, q8, #13
353 @ CHECK: vqrshrn.u16    d16, q8, #4  @ encoding: [0x70,0x09,0xcc,0xf3]
354         vqrshrn.u16     d16, q8, #4
355 @ CHECK: vqrshrn.u32    d16, q8, #13  @ encoding: [0x70,0x09,0xd3,0xf3]
356         vqrshrn.u32     d16, q8, #13
357 @ CHECK: vqrshrn.u64    d16, q8, #13  @ encoding: [0x70,0x09,0xf3,0xf3]
358         vqrshrn.u64     d16, q8, #13
359
360 @ Optional destination operand variants.
361         vshl.s8 q4, q5
362         vshl.s16 q4, q5
363         vshl.s32 q4, q5
364         vshl.s64 q4, q5
365
366         vshl.u8 q4, q5
367         vshl.u16 q4, q5
368         vshl.u32 q4, q5
369         vshl.u64 q4, q5
370
371         vshl.s8 d4, d5
372         vshl.s16 d4, d5
373         vshl.s32 d4, d5
374         vshl.s64 d4, d5
375
376         vshl.u8 d4, d5
377         vshl.u16 d4, d5
378         vshl.u32 d4, d5
379         vshl.u64 d4, d5
380
381 @ CHECK: vshl.s8        q4, q4, q5      @ encoding: [0x48,0x84,0x0a,0xf2]
382 @ CHECK: vshl.s16       q4, q4, q5      @ encoding: [0x48,0x84,0x1a,0xf2]
383 @ CHECK: vshl.s32       q4, q4, q5      @ encoding: [0x48,0x84,0x2a,0xf2]
384 @ CHECK: vshl.s64       q4, q4, q5      @ encoding: [0x48,0x84,0x3a,0xf2]
385
386 @ CHECK: vshl.u8        q4, q4, q5      @ encoding: [0x48,0x84,0x0a,0xf3]
387 @ CHECK: vshl.u16       q4, q4, q5      @ encoding: [0x48,0x84,0x1a,0xf3]
388 @ CHECK: vshl.u32       q4, q4, q5      @ encoding: [0x48,0x84,0x2a,0xf3]
389 @ CHECK: vshl.u64       q4, q4, q5      @ encoding: [0x48,0x84,0x3a,0xf3]
390
391 @ CHECK: vshl.s8        d4, d4, d5      @ encoding: [0x04,0x44,0x05,0xf2]
392 @ CHECK: vshl.s16       d4, d4, d5      @ encoding: [0x04,0x44,0x15,0xf2]
393 @ CHECK: vshl.s32       d4, d4, d5      @ encoding: [0x04,0x44,0x25,0xf2]
394 @ CHECK: vshl.s64       d4, d4, d5      @ encoding: [0x04,0x44,0x35,0xf2]
395
396 @ CHECK: vshl.u8        d4, d4, d5      @ encoding: [0x04,0x44,0x05,0xf3]
397 @ CHECK: vshl.u16       d4, d4, d5      @ encoding: [0x04,0x44,0x15,0xf3]
398 @ CHECK: vshl.u32       d4, d4, d5      @ encoding: [0x04,0x44,0x25,0xf3]
399 @ CHECK: vshl.u64       d4, d4, d5      @ encoding: [0x04,0x44,0x35,0xf3]
400
401         vshl.s8 q4, #2
402         vshl.s16 q4, #14
403         vshl.s32 q4, #27
404         vshl.s64 q4, #35
405
406         vshl.s8 d4, #6
407         vshl.u16 d4, #10
408         vshl.s32 d4, #17
409         vshl.u64 d4, #43
410
411 @ CHECK: vshl.i8        q4, q4, #2      @ encoding: [0x58,0x85,0x8a,0xf2]
412 @ CHECK: vshl.i16       q4, q4, #14     @ encoding: [0x58,0x85,0x9e,0xf2]
413 @ CHECK: vshl.i32       q4, q4, #27     @ encoding: [0x58,0x85,0xbb,0xf2]
414 @ CHECK: vshl.i64       q4, q4, #35     @ encoding: [0xd8,0x85,0xa3,0xf2]
415
416 @ CHECK: vshl.i8        d4, d4, #6      @ encoding: [0x14,0x45,0x8e,0xf2]
417 @ CHECK: vshl.i16       d4, d4, #10     @ encoding: [0x14,0x45,0x9a,0xf2]
418 @ CHECK: vshl.i32       d4, d4, #17     @ encoding: [0x14,0x45,0xb1,0xf2]
419 @ CHECK: vshl.i64       d4, d4, #43     @ encoding: [0x94,0x45,0xab,0xf2]