Re-commit r235560: Switch lowering: extract jump tables and bit tests before building...
[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         vshll.s8        q8, d16, #7
254         vshll.s16       q8, d16, #15
255         vshll.s32       q8, d16, #31
256         vshll.u8        q8, d16, #7
257         vshll.u16       q8, d16, #15
258         vshll.u32       q8, d16, #31
259         vshll.i8        q8, d16, #8
260         vshll.i16       q8, d16, #16
261         vshll.i32       q8, d16, #32
262
263 @ CHECK: vshll.s8       q8, d16, #7  @ encoding: [0x30,0x0a,0xcf,0xf2]
264 @ CHECK: vshll.s16      q8, d16, #15  @ encoding: [0x30,0x0a,0xdf,0xf2]
265 @ CHECK: vshll.s32      q8, d16, #31  @ encoding: [0x30,0x0a,0xff,0xf2]
266 @ CHECK: vshll.u8       q8, d16, #7  @ encoding: [0x30,0x0a,0xcf,0xf3]
267 @ CHECK: vshll.u16      q8, d16, #15  @ encoding: [0x30,0x0a,0xdf,0xf3]
268 @ CHECK: vshll.u32      q8, d16, #31  @ encoding: [0x30,0x0a,0xff,0xf3]
269 @ CHECK: vshll.i8       q8, d16, #8  @ encoding: [0x20,0x03,0xf2,0xf3]
270 @ CHECK: vshll.i16      q8, d16, #16  @ encoding: [0x20,0x03,0xf6,0xf3]
271 @ CHECK: vshll.i32      q8, d16, #32  @ encoding: [0x20,0x03,0xfa,0xf3]
272
273         vshrn.i16       d16, q8, #8
274         vshrn.i32       d16, q8, #16
275         vshrn.i64       d16, q8, #32
276
277 @ CHECK: vshrn.i16      d16, q8, #8  @ encoding: [0x30,0x08,0xc8,0xf2]
278 @ CHECK: vshrn.i32      d16, q8, #16  @ encoding: [0x30,0x08,0xd0,0xf2]
279 @ CHECK: vshrn.i64      d16, q8, #32  @ encoding: [0x30,0x08,0xe0,0xf2]
280
281         vrshl.s8        d16, d17, d16
282         vrshl.s16       d16, d17, d16
283         vrshl.s32       d16, d17, d16
284         vrshl.s64       d16, d17, d16
285         vrshl.u8        d16, d17, d16
286         vrshl.u16       d16, d17, d16
287         vrshl.u32       d16, d17, d16
288         vrshl.u64       d16, d17, d16
289         vrshl.s8        q8, q9, q8
290         vrshl.s16       q8, q9, q8
291         vrshl.s32       q8, q9, q8
292         vrshl.s64       q8, q9, q8
293         vrshl.u8        q8, q9, q8
294         vrshl.u16       q8, q9, q8
295         vrshl.u32       q8, q9, q8
296         vrshl.u64       q8, q9, q8
297
298 @ CHECK: vrshl.s8       d16, d17, d16  @ encoding: [0xa1,0x05,0x40,0xf2]
299 @ CHECK: vrshl.s16      d16, d17, d16  @ encoding: [0xa1,0x05,0x50,0xf2]
300 @ CHECK: vrshl.s32      d16, d17, d16  @ encoding: [0xa1,0x05,0x60,0xf2]
301 @ CHECK: vrshl.s64      d16, d17, d16  @ encoding: [0xa1,0x05,0x70,0xf2]
302 @ CHECK: vrshl.u8       d16, d17, d16  @ encoding: [0xa1,0x05,0x40,0xf3]
303 @ CHECK: vrshl.u16      d16, d17, d16  @ encoding: [0xa1,0x05,0x50,0xf3]
304 @ CHECK: vrshl.u32      d16, d17, d16  @ encoding: [0xa1,0x05,0x60,0xf3]
305 @ CHECK: vrshl.u64      d16, d17, d16  @ encoding: [0xa1,0x05,0x70,0xf3]
306 @ CHECK: vrshl.s8       q8, q9, q8  @ encoding: [0xe2,0x05,0x40,0xf2]
307 @ CHECK: vrshl.s16      q8, q9, q8  @ encoding: [0xe2,0x05,0x50,0xf2]
308 @ CHECK: vrshl.s32      q8, q9, q8  @ encoding: [0xe2,0x05,0x60,0xf2]
309 @ CHECK: vrshl.s64      q8, q9, q8  @ encoding: [0xe2,0x05,0x70,0xf2]
310 @ CHECK: vrshl.u8       q8, q9, q8  @ encoding: [0xe2,0x05,0x40,0xf3]
311 @ CHECK: vrshl.u16      q8, q9, q8  @ encoding: [0xe2,0x05,0x50,0xf3]
312 @ CHECK: vrshl.u32      q8, q9, q8  @ encoding: [0xe2,0x05,0x60,0xf3]
313 @ CHECK: vrshl.u64      q8, q9, q8  @ encoding: [0xe2,0x05,0x70,0xf3]
314
315         vrshr.s8        d16, d16, #8
316         vrshr.s16       d16, d16, #16
317         vrshr.s32       d16, d16, #32
318         vrshr.s64       d16, d16, #64
319         vrshr.u8        d16, d16, #8
320         vrshr.u16       d16, d16, #16
321         vrshr.u32       d16, d16, #32
322         vrshr.u64       d16, d16, #64
323         vrshr.s8        q8, q8, #8
324         vrshr.s16       q8, q8, #16
325         vrshr.s32       q8, q8, #32
326         vrshr.s64       q8, q8, #64
327         vrshr.u8        q8, q8, #8
328         vrshr.u16       q8, q8, #16
329         vrshr.u32       q8, q8, #32
330         vrshr.u64       q8, q8, #64
331
332 @ CHECK: vrshr.s8       d16, d16, #8  @ encoding: [0x30,0x02,0xc8,0xf2]
333 @ CHECK: vrshr.s16      d16, d16, #16  @ encoding: [0x30,0x02,0xd0,0xf2]
334 @ CHECK: vrshr.s32      d16, d16, #32  @ encoding: [0x30,0x02,0xe0,0xf2]
335 @ CHECK: vrshr.s64      d16, d16, #64  @ encoding: [0xb0,0x02,0xc0,0xf2]
336 @ CHECK: vrshr.u8       d16, d16, #8  @ encoding: [0x30,0x02,0xc8,0xf3]
337 @ CHECK: vrshr.u16      d16, d16, #16  @ encoding: [0x30,0x02,0xd0,0xf3]
338 @ CHECK: vrshr.u32      d16, d16, #32  @ encoding: [0x30,0x02,0xe0,0xf3]
339 @ CHECK: vrshr.u64      d16, d16, #64  @ encoding: [0xb0,0x02,0xc0,0xf3]
340 @ CHECK: vrshr.s8       q8, q8, #8  @ encoding: [0x70,0x02,0xc8,0xf2]
341 @ CHECK: vrshr.s16      q8, q8, #16  @ encoding: [0x70,0x02,0xd0,0xf2]
342 @ CHECK: vrshr.s32      q8, q8, #32  @ encoding: [0x70,0x02,0xe0,0xf2]
343 @ CHECK: vrshr.s64      q8, q8, #64  @ encoding: [0xf0,0x02,0xc0,0xf2]
344 @ CHECK: vrshr.u8       q8, q8, #8  @ encoding: [0x70,0x02,0xc8,0xf3]
345 @ CHECK: vrshr.u16      q8, q8, #16  @ encoding: [0x70,0x02,0xd0,0xf3]
346 @ CHECK: vrshr.u32      q8, q8, #32  @ encoding: [0x70,0x02,0xe0,0xf3]
347 @ CHECK: vrshr.u64      q8, q8, #64  @ encoding: [0xf0,0x02,0xc0,0xf3]
348
349
350         vrshrn.i16      d16, q8, #8
351         vrshrn.i32      d16, q8, #16
352         vrshrn.i64      d16, q8, #32
353         vqrshrn.s16     d16, q8, #4
354         vqrshrn.s32     d16, q8, #13
355         vqrshrn.s64     d16, q8, #13
356         vqrshrn.u16     d16, q8, #4
357         vqrshrn.u32     d16, q8, #13
358         vqrshrn.u64     d16, q8, #13
359
360 @ CHECK: vrshrn.i16     d16, q8, #8  @ encoding: [0x70,0x08,0xc8,0xf2]
361 @ CHECK: vrshrn.i32     d16, q8, #16  @ encoding: [0x70,0x08,0xd0,0xf2]
362 @ CHECK: vrshrn.i64     d16, q8, #32  @ encoding: [0x70,0x08,0xe0,0xf2]
363 @ CHECK: vqrshrn.s16    d16, q8, #4  @ encoding: [0x70,0x09,0xcc,0xf2]
364 @ CHECK: vqrshrn.s32    d16, q8, #13  @ encoding: [0x70,0x09,0xd3,0xf2]
365 @ CHECK: vqrshrn.s64    d16, q8, #13  @ encoding: [0x70,0x09,0xf3,0xf2]
366 @ CHECK: vqrshrn.u16    d16, q8, #4  @ encoding: [0x70,0x09,0xcc,0xf3]
367 @ CHECK: vqrshrn.u32    d16, q8, #13  @ encoding: [0x70,0x09,0xd3,0xf3]
368 @ CHECK: vqrshrn.u64    d16, q8, #13  @ encoding: [0x70,0x09,0xf3,0xf3]
369
370
371 @ Optional destination operand variants.
372         vshl.s8 q4, q5
373         vshl.s16 q4, q5
374         vshl.s32 q4, q5
375         vshl.s64 q4, q5
376
377         vshl.u8 q4, q5
378         vshl.u16 q4, q5
379         vshl.u32 q4, q5
380         vshl.u64 q4, q5
381
382         vshl.s8 d4, d5
383         vshl.s16 d4, d5
384         vshl.s32 d4, d5
385         vshl.s64 d4, d5
386
387         vshl.u8 d4, d5
388         vshl.u16 d4, d5
389         vshl.u32 d4, d5
390         vshl.u64 d4, d5
391
392 @ CHECK: vshl.s8        q4, q4, q5      @ encoding: [0x48,0x84,0x0a,0xf2]
393 @ CHECK: vshl.s16       q4, q4, q5      @ encoding: [0x48,0x84,0x1a,0xf2]
394 @ CHECK: vshl.s32       q4, q4, q5      @ encoding: [0x48,0x84,0x2a,0xf2]
395 @ CHECK: vshl.s64       q4, q4, q5      @ encoding: [0x48,0x84,0x3a,0xf2]
396
397 @ CHECK: vshl.u8        q4, q4, q5      @ encoding: [0x48,0x84,0x0a,0xf3]
398 @ CHECK: vshl.u16       q4, q4, q5      @ encoding: [0x48,0x84,0x1a,0xf3]
399 @ CHECK: vshl.u32       q4, q4, q5      @ encoding: [0x48,0x84,0x2a,0xf3]
400 @ CHECK: vshl.u64       q4, q4, q5      @ encoding: [0x48,0x84,0x3a,0xf3]
401
402 @ CHECK: vshl.s8        d4, d4, d5      @ encoding: [0x04,0x44,0x05,0xf2]
403 @ CHECK: vshl.s16       d4, d4, d5      @ encoding: [0x04,0x44,0x15,0xf2]
404 @ CHECK: vshl.s32       d4, d4, d5      @ encoding: [0x04,0x44,0x25,0xf2]
405 @ CHECK: vshl.s64       d4, d4, d5      @ encoding: [0x04,0x44,0x35,0xf2]
406
407 @ CHECK: vshl.u8        d4, d4, d5      @ encoding: [0x04,0x44,0x05,0xf3]
408 @ CHECK: vshl.u16       d4, d4, d5      @ encoding: [0x04,0x44,0x15,0xf3]
409 @ CHECK: vshl.u32       d4, d4, d5      @ encoding: [0x04,0x44,0x25,0xf3]
410 @ CHECK: vshl.u64       d4, d4, d5      @ encoding: [0x04,0x44,0x35,0xf3]
411
412         vshl.s8 q4, #2
413         vshl.s16 q4, #14
414         vshl.s32 q4, #27
415         vshl.s64 q4, #35
416
417         vshl.s8 d4, #6
418         vshl.u16 d4, #10
419         vshl.s32 d4, #17
420         vshl.u64 d4, #43
421
422 @ CHECK: vshl.i8        q4, q4, #2      @ encoding: [0x58,0x85,0x8a,0xf2]
423 @ CHECK: vshl.i16       q4, q4, #14     @ encoding: [0x58,0x85,0x9e,0xf2]
424 @ CHECK: vshl.i32       q4, q4, #27     @ encoding: [0x58,0x85,0xbb,0xf2]
425 @ CHECK: vshl.i64       q4, q4, #35     @ encoding: [0xd8,0x85,0xa3,0xf2]
426
427 @ CHECK: vshl.i8        d4, d4, #6      @ encoding: [0x14,0x45,0x8e,0xf2]
428 @ CHECK: vshl.i16       d4, d4, #10     @ encoding: [0x14,0x45,0x9a,0xf2]
429 @ CHECK: vshl.i32       d4, d4, #17     @ encoding: [0x14,0x45,0xb1,0xf2]
430 @ CHECK: vshl.i64       d4, d4, #43     @ encoding: [0x94,0x45,0xab,0xf2]
431
432         @ Two-operand VRSHL forms.
433         vrshl.s8        d11, d4
434         vrshl.s16       d12, d5
435         vrshl.s32       d13, d6
436         vrshl.s64       d14, d7
437         vrshl.u8        d15, d8
438         vrshl.u16       d16, d9
439         vrshl.u32       d17, d10
440         vrshl.u64       d18, d11
441         vrshl.s8        q1, q8
442         vrshl.s16       q2, q15
443         vrshl.s32       q3, q14
444         vrshl.s64       q4, q13
445         vrshl.u8        q5, q12
446         vrshl.u16       q6, q11
447         vrshl.u32       q7, q10
448         vrshl.u64       q8, q9
449
450 @ CHECK: vrshl.s8       d11, d11, d4    @ encoding: [0x0b,0xb5,0x04,0xf2]
451 @ CHECK: vrshl.s16      d12, d12, d5    @ encoding: [0x0c,0xc5,0x15,0xf2]
452 @ CHECK: vrshl.s32      d13, d13, d6    @ encoding: [0x0d,0xd5,0x26,0xf2]
453 @ CHECK: vrshl.s64      d14, d14, d7    @ encoding: [0x0e,0xe5,0x37,0xf2]
454 @ CHECK: vrshl.u8       d15, d15, d8    @ encoding: [0x0f,0xf5,0x08,0xf3]
455 @ CHECK: vrshl.u16      d16, d16, d9    @ encoding: [0x20,0x05,0x59,0xf3]
456 @ CHECK: vrshl.u32      d17, d17, d10   @ encoding: [0x21,0x15,0x6a,0xf3]
457 @ CHECK: vrshl.u64      d18, d18, d11   @ encoding: [0x22,0x25,0x7b,0xf3]
458 @ CHECK: vrshl.s8       q1, q1, q8      @ encoding: [0xc2,0x25,0x00,0xf2]
459 @ CHECK: vrshl.s16      q2, q2, q15     @ encoding: [0xc4,0x45,0x1e,0xf2]
460 @ CHECK: vrshl.s32      q3, q3, q14     @ encoding: [0xc6,0x65,0x2c,0xf2]
461 @ CHECK: vrshl.s64      q4, q4, q13     @ encoding: [0xc8,0x85,0x3a,0xf2]
462 @ CHECK: vrshl.u8       q5, q5, q12     @ encoding: [0xca,0xa5,0x08,0xf3]
463 @ CHECK: vrshl.u16      q6, q6, q11     @ encoding: [0xcc,0xc5,0x16,0xf3]
464 @ CHECK: vrshl.u32      q7, q7, q10     @ encoding: [0xce,0xe5,0x24,0xf3]
465 @ CHECK: vrshl.u64      q8, q8, q9      @ encoding: [0xe0,0x05,0x72,0xf3]
466
467
468 @ Two-operand forms.
469         vshr.s8 d15, #8
470         vshr.s16        d12, #16
471         vshr.s32        d13, #32
472         vshr.s64        d14, #64
473         vshr.u8 d16, #8
474         vshr.u16        d17, #16
475         vshr.u32        d6, #32
476         vshr.u64        d10, #64
477         vshr.s8 q1, #8
478         vshr.s16        q2, #16
479         vshr.s32        q3, #32
480         vshr.s64        q4, #64
481         vshr.u8 q5, #8
482         vshr.u16        q6, #16
483         vshr.u32        q7, #32
484         vshr.u64        q8, #64
485
486 @ CHECK: vshr.s8        d15, d15, #8    @ encoding: [0x1f,0xf0,0x88,0xf2]
487 @ CHECK: vshr.s16       d12, d12, #16   @ encoding: [0x1c,0xc0,0x90,0xf2]
488 @ CHECK: vshr.s32       d13, d13, #32   @ encoding: [0x1d,0xd0,0xa0,0xf2]
489 @ CHECK: vshr.s64       d14, d14, #64   @ encoding: [0x9e,0xe0,0x80,0xf2]
490 @ CHECK: vshr.u8        d16, d16, #8    @ encoding: [0x30,0x00,0xc8,0xf3]
491 @ CHECK: vshr.u16       d17, d17, #16   @ encoding: [0x31,0x10,0xd0,0xf3]
492 @ CHECK: vshr.u32       d6, d6, #32     @ encoding: [0x16,0x60,0xa0,0xf3]
493 @ CHECK: vshr.u64       d10, d10, #64   @ encoding: [0x9a,0xa0,0x80,0xf3]
494 @ CHECK: vshr.s8        q1, q1, #8      @ encoding: [0x52,0x20,0x88,0xf2]
495 @ CHECK: vshr.s16       q2, q2, #16     @ encoding: [0x54,0x40,0x90,0xf2]
496 @ CHECK: vshr.s32       q3, q3, #32     @ encoding: [0x56,0x60,0xa0,0xf2]
497 @ CHECK: vshr.s64       q4, q4, #64     @ encoding: [0xd8,0x80,0x80,0xf2]
498 @ CHECK: vshr.u8        q5, q5, #8      @ encoding: [0x5a,0xa0,0x88,0xf3]
499 @ CHECK: vshr.u16       q6, q6, #16     @ encoding: [0x5c,0xc0,0x90,0xf3]
500 @ CHECK: vshr.u32       q7, q7, #32     @ encoding: [0x5e,0xe0,0xa0,0xf3]
501 @ CHECK: vshr.u64       q8, q8, #64     @ encoding: [0xf0,0x00,0xc0,0xf3]
502
503         vrshr.s8        d15, #8
504         vrshr.s16       d12, #16
505         vrshr.s32       d13, #32
506         vrshr.s64       d14, #64
507         vrshr.u8        d16, #8
508         vrshr.u16       d17, #16
509         vrshr.u32       d6, #32
510         vrshr.u64       d10, #64
511         vrshr.s8        q1, #8
512         vrshr.s16       q2, #16
513         vrshr.s32       q3, #32
514         vrshr.s64       q4, #64
515         vrshr.u8        q5, #8
516         vrshr.u16       q6, #16
517         vrshr.u32       q7, #32
518         vrshr.u64       q8, #64
519
520 @ CHECK: vrshr.s8       d15, d15, #8    @ encoding: [0x1f,0xf2,0x88,0xf2]
521 @ CHECK: vrshr.s16      d12, d12, #16   @ encoding: [0x1c,0xc2,0x90,0xf2]
522 @ CHECK: vrshr.s32      d13, d13, #32   @ encoding: [0x1d,0xd2,0xa0,0xf2]
523 @ CHECK: vrshr.s64      d14, d14, #64   @ encoding: [0x9e,0xe2,0x80,0xf2]
524 @ CHECK: vrshr.u8       d16, d16, #8    @ encoding: [0x30,0x02,0xc8,0xf3]
525 @ CHECK: vrshr.u16      d17, d17, #16   @ encoding: [0x31,0x12,0xd0,0xf3]
526 @ CHECK: vrshr.u32      d6, d6, #32     @ encoding: [0x16,0x62,0xa0,0xf3]
527 @ CHECK: vrshr.u64      d10, d10, #64   @ encoding: [0x9a,0xa2,0x80,0xf3]
528 @ CHECK: vrshr.s8       q1, q1, #8      @ encoding: [0x52,0x22,0x88,0xf2]
529 @ CHECK: vrshr.s16      q2, q2, #16     @ encoding: [0x54,0x42,0x90,0xf2]
530 @ CHECK: vrshr.s32      q3, q3, #32     @ encoding: [0x56,0x62,0xa0,0xf2]
531 @ CHECK: vrshr.s64      q4, q4, #64     @ encoding: [0xd8,0x82,0x80,0xf2]
532 @ CHECK: vrshr.u8       q5, q5, #8      @ encoding: [0x5a,0xa2,0x88,0xf3]
533 @ CHECK: vrshr.u16      q6, q6, #16     @ encoding: [0x5c,0xc2,0x90,0xf3]
534 @ CHECK: vrshr.u32      q7, q7, #32     @ encoding: [0x5e,0xe2,0xa0,0xf3]
535 @ CHECK: vrshr.u64      q8, q8, #64     @ encoding: [0xf0,0x02,0xc0,0xf3]