[Disasm][AVX512] Implement decoding of top bit for non-destructive reg fields
[oota-llvm.git] / test / MC / ARM / neon-bitwise-encoding.s
1 @ RUN: llvm-mc -mcpu=cortex-a8 -triple arm-unknown-unknown -show-encoding < %s \
2 @ RUN: | FileCheck %s
3
4         vand    d16, d17, d16
5         vand    q8, q8, q9
6
7 @ CHECK: vand   d16, d17, d16           @ encoding: [0xb0,0x01,0x41,0xf2]
8 @ CHECK: vand   q8, q8, q9              @ encoding: [0xf2,0x01,0x40,0xf2]
9
10         veor    d16, d17, d16
11         veor    q8, q8, q9
12
13 @ CHECK: veor   d16, d17, d16           @ encoding: [0xb0,0x01,0x41,0xf3]
14 @ CHECK: veor   q8, q8, q9              @ encoding: [0xf2,0x01,0x40,0xf3]
15
16         vorr    d16, d17, d16
17         vorr    q8, q8, q9
18
19 @ CHECK: vorr   d16, d17, d16           @ encoding: [0xb0,0x01,0x61,0xf2]
20 @ CHECK: vorr   q8, q8, q9              @ encoding: [0xf2,0x01,0x60,0xf2]
21
22         vorr.i32        d16, #0x1000000
23         vorr.i32        q8, #0x1000000
24         vorr.i32        q8, #0x0
25
26 @ CHECK: vorr.i32       d16, #0x1000000 @ encoding: [0x11,0x07,0xc0,0xf2]
27 @ CHECK: vorr.i32       q8, #0x1000000  @ encoding: [0x51,0x07,0xc0,0xf2]
28 @ CHECK: vorr.i32       q8, #0x0        @ encoding: [0x50,0x01,0xc0,0xf2]
29
30         vbic    d16, d17, d16
31         vbic    q8, q8, q9
32         vbic.i32        d16, #0xFF000000
33         vbic.i32        q8, #0xFF000000
34         vbic q10, q11
35         vbic d9, d1
36
37 @ CHECK: vbic   d16, d17, d16           @ encoding: [0xb0,0x01,0x51,0xf2]
38 @ CHECK: vbic   q8, q8, q9              @ encoding: [0xf2,0x01,0x50,0xf2]
39 @ CHECK: vbic.i32       d16, #0xff000000 @ encoding: [0x3f,0x07,0xc7,0xf3]
40 @ CHECK: vbic.i32       q8, #0xff000000 @ encoding: [0x7f,0x07,0xc7,0xf3]
41 @ CHECK: vbic   q10, q10, q11           @ encoding: [0xf6,0x41,0x54,0xf2]
42 @ CHECK: vbic   d9, d9, d1              @ encoding: [0x11,0x91,0x19,0xf2]
43
44
45         vorn    d16, d17, d16
46         vorn    q8, q8, q9
47
48 @ CHECK: vorn   d16, d17, d16           @ encoding: [0xb0,0x01,0x71,0xf2]
49 @ CHECK: vorn   q8, q8, q9              @ encoding: [0xf2,0x01,0x70,0xf2]
50
51         vmvn    d16, d16
52         vmvn    q8, q8
53
54 @ CHECK: vmvn   d16, d16                @ encoding: [0xa0,0x05,0xf0,0xf3]
55 @ CHECK: vmvn   q8, q8                  @ encoding: [0xe0,0x05,0xf0,0xf3]
56
57         vbsl    d18, d17, d16
58         vbsl    q8, q10, q9
59
60 @ CHECK: vbsl   d18, d17, d16           @ encoding: [0xb0,0x21,0x51,0xf3]
61 @ CHECK: vbsl   q8, q10, q9             @ encoding: [0xf2,0x01,0x54,0xf3]
62
63
64 @ Size suffices are optional.
65         veor q4, q7, q3
66         veor.8 q4, q7, q3
67         veor.16 q4, q7, q3
68         veor.32 q4, q7, q3
69         veor.64 q4, q7, q3
70
71         veor.i8 q4, q7, q3
72         veor.i16 q4, q7, q3
73         veor.i32 q4, q7, q3
74         veor.i64 q4, q7, q3
75
76         veor.s8 q4, q7, q3
77         veor.s16 q4, q7, q3
78         veor.s32 q4, q7, q3
79         veor.s64 q4, q7, q3
80
81         veor.u8 q4, q7, q3
82         veor.u16 q4, q7, q3
83         veor.u32 q4, q7, q3
84         veor.u64 q4, q7, q3
85
86         veor.p8 q4, q7, q3
87         veor.p16 q4, q7, q3
88         veor.f32 q4, q7, q3
89         veor.f64 q4, q7, q3
90
91         veor.f q4, q7, q3
92         veor.d q4, q7, q3
93
94 @ CHECK: veor   q4, q7, q3              @ encoding: [0x56,0x81,0x0e,0xf3]
95 @ CHECK: veor   q4, q7, q3              @ encoding: [0x56,0x81,0x0e,0xf3]
96 @ CHECK: veor   q4, q7, q3              @ encoding: [0x56,0x81,0x0e,0xf3]
97 @ CHECK: veor   q4, q7, q3              @ encoding: [0x56,0x81,0x0e,0xf3]
98 @ CHECK: veor   q4, q7, q3              @ encoding: [0x56,0x81,0x0e,0xf3]
99
100 @ CHECK: veor   q4, q7, q3              @ encoding: [0x56,0x81,0x0e,0xf3]
101 @ CHECK: veor   q4, q7, q3              @ encoding: [0x56,0x81,0x0e,0xf3]
102 @ CHECK: veor   q4, q7, q3              @ encoding: [0x56,0x81,0x0e,0xf3]
103 @ CHECK: veor   q4, q7, q3              @ encoding: [0x56,0x81,0x0e,0xf3]
104
105 @ CHECK: veor   q4, q7, q3              @ encoding: [0x56,0x81,0x0e,0xf3]
106 @ CHECK: veor   q4, q7, q3              @ encoding: [0x56,0x81,0x0e,0xf3]
107 @ CHECK: veor   q4, q7, q3              @ encoding: [0x56,0x81,0x0e,0xf3]
108 @ CHECK: veor   q4, q7, q3              @ encoding: [0x56,0x81,0x0e,0xf3]
109
110 @ CHECK: veor   q4, q7, q3              @ encoding: [0x56,0x81,0x0e,0xf3]
111 @ CHECK: veor   q4, q7, q3              @ encoding: [0x56,0x81,0x0e,0xf3]
112 @ CHECK: veor   q4, q7, q3              @ encoding: [0x56,0x81,0x0e,0xf3]
113 @ CHECK: veor   q4, q7, q3              @ encoding: [0x56,0x81,0x0e,0xf3]
114
115 @ CHECK: veor   q4, q7, q3              @ encoding: [0x56,0x81,0x0e,0xf3]
116 @ CHECK: veor   q4, q7, q3              @ encoding: [0x56,0x81,0x0e,0xf3]
117 @ CHECK: veor   q4, q7, q3              @ encoding: [0x56,0x81,0x0e,0xf3]
118 @ CHECK: veor   q4, q7, q3              @ encoding: [0x56,0x81,0x0e,0xf3]
119
120 @ CHECK: veor   q4, q7, q3              @ encoding: [0x56,0x81,0x0e,0xf3]
121 @ CHECK: veor   q4, q7, q3              @ encoding: [0x56,0x81,0x0e,0xf3]
122
123
124         vand d4, d7, d3
125         vand.8 d4, d7, d3
126         vand.16 d4, d7, d3
127         vand.32 d4, d7, d3
128         vand.64 d4, d7, d3
129
130         vand.i8 d4, d7, d3
131         vand.i16 d4, d7, d3
132         vand.i32 d4, d7, d3
133         vand.i64 d4, d7, d3
134
135         vand.s8 d4, d7, d3
136         vand.s16 d4, d7, d3
137         vand.s32 d4, d7, d3
138         vand.s64 d4, d7, d3
139
140         vand.u8 d4, d7, d3
141         vand.u16 d4, d7, d3
142         vand.u32 d4, d7, d3
143         vand.u64 d4, d7, d3
144
145         vand.p8 d4, d7, d3
146         vand.p16 d4, d7, d3
147         vand.f32 d4, d7, d3
148         vand.f64 d4, d7, d3
149
150         vand.f d4, d7, d3
151         vand.d d4, d7, d3
152
153 @ CHECK: vand   d4, d7, d3              @ encoding: [0x13,0x41,0x07,0xf2]
154 @ CHECK: vand   d4, d7, d3              @ encoding: [0x13,0x41,0x07,0xf2]
155 @ CHECK: vand   d4, d7, d3              @ encoding: [0x13,0x41,0x07,0xf2]
156 @ CHECK: vand   d4, d7, d3              @ encoding: [0x13,0x41,0x07,0xf2]
157 @ CHECK: vand   d4, d7, d3              @ encoding: [0x13,0x41,0x07,0xf2]
158
159 @ CHECK: vand   d4, d7, d3              @ encoding: [0x13,0x41,0x07,0xf2]
160 @ CHECK: vand   d4, d7, d3              @ encoding: [0x13,0x41,0x07,0xf2]
161 @ CHECK: vand   d4, d7, d3              @ encoding: [0x13,0x41,0x07,0xf2]
162 @ CHECK: vand   d4, d7, d3              @ encoding: [0x13,0x41,0x07,0xf2]
163
164 @ CHECK: vand   d4, d7, d3              @ encoding: [0x13,0x41,0x07,0xf2]
165 @ CHECK: vand   d4, d7, d3              @ encoding: [0x13,0x41,0x07,0xf2]
166 @ CHECK: vand   d4, d7, d3              @ encoding: [0x13,0x41,0x07,0xf2]
167 @ CHECK: vand   d4, d7, d3              @ encoding: [0x13,0x41,0x07,0xf2]
168
169 @ CHECK: vand   d4, d7, d3              @ encoding: [0x13,0x41,0x07,0xf2]
170 @ CHECK: vand   d4, d7, d3              @ encoding: [0x13,0x41,0x07,0xf2]
171 @ CHECK: vand   d4, d7, d3              @ encoding: [0x13,0x41,0x07,0xf2]
172 @ CHECK: vand   d4, d7, d3              @ encoding: [0x13,0x41,0x07,0xf2]
173
174 @ CHECK: vand   d4, d7, d3              @ encoding: [0x13,0x41,0x07,0xf2]
175 @ CHECK: vand   d4, d7, d3              @ encoding: [0x13,0x41,0x07,0xf2]
176 @ CHECK: vand   d4, d7, d3              @ encoding: [0x13,0x41,0x07,0xf2]
177 @ CHECK: vand   d4, d7, d3              @ encoding: [0x13,0x41,0x07,0xf2]
178
179 @ CHECK: vand   d4, d7, d3              @ encoding: [0x13,0x41,0x07,0xf2]
180 @ CHECK: vand   d4, d7, d3              @ encoding: [0x13,0x41,0x07,0xf2]
181
182         vorr d4, d7, d3
183         vorr.8 d4, d7, d3
184         vorr.16 d4, d7, d3
185         vorr.32 d4, d7, d3
186         vorr.64 d4, d7, d3
187
188         vorr.i8 d4, d7, d3
189         vorr.i16 d4, d7, d3
190         vorr.i32 d4, d7, d3
191         vorr.i64 d4, d7, d3
192
193         vorr.s8 d4, d7, d3
194         vorr.s16 d4, d7, d3
195         vorr.s32 q4, q7, q3
196         vorr.s64 q4, q7, q3
197
198         vorr.u8 q4, q7, q3
199         vorr.u16 q4, q7, q3
200         vorr.u32 q4, q7, q3
201         vorr.u64 q4, q7, q3
202
203         vorr.p8 q4, q7, q3
204         vorr.p16 q4, q7, q3
205         vorr.f32 q4, q7, q3
206         vorr.f64 q4, q7, q3
207
208         vorr.f q4, q7, q3
209         vorr.d q4, q7, q3
210
211 @ CHECK: vorr   d4, d7, d3              @ encoding: [0x13,0x41,0x27,0xf2]
212 @ CHECK: vorr   d4, d7, d3              @ encoding: [0x13,0x41,0x27,0xf2]
213 @ CHECK: vorr   d4, d7, d3              @ encoding: [0x13,0x41,0x27,0xf2]
214 @ CHECK: vorr   d4, d7, d3              @ encoding: [0x13,0x41,0x27,0xf2]
215 @ CHECK: vorr   d4, d7, d3              @ encoding: [0x13,0x41,0x27,0xf2]
216
217 @ CHECK: vorr   d4, d7, d3              @ encoding: [0x13,0x41,0x27,0xf2]
218 @ CHECK: vorr   d4, d7, d3              @ encoding: [0x13,0x41,0x27,0xf2]
219 @ CHECK: vorr   d4, d7, d3              @ encoding: [0x13,0x41,0x27,0xf2]
220 @ CHECK: vorr   d4, d7, d3              @ encoding: [0x13,0x41,0x27,0xf2]
221
222 @ CHECK: vorr   d4, d7, d3              @ encoding: [0x13,0x41,0x27,0xf2]
223 @ CHECK: vorr   d4, d7, d3              @ encoding: [0x13,0x41,0x27,0xf2]
224 @ CHECK: vorr   q4, q7, q3              @ encoding: [0x56,0x81,0x2e,0xf2]
225 @ CHECK: vorr   q4, q7, q3              @ encoding: [0x56,0x81,0x2e,0xf2]
226
227 @ CHECK: vorr   q4, q7, q3              @ encoding: [0x56,0x81,0x2e,0xf2]
228 @ CHECK: vorr   q4, q7, q3              @ encoding: [0x56,0x81,0x2e,0xf2]
229 @ CHECK: vorr   q4, q7, q3              @ encoding: [0x56,0x81,0x2e,0xf2]
230 @ CHECK: vorr   q4, q7, q3              @ encoding: [0x56,0x81,0x2e,0xf2]
231
232 @ CHECK: vorr   q4, q7, q3              @ encoding: [0x56,0x81,0x2e,0xf2]
233 @ CHECK: vorr   q4, q7, q3              @ encoding: [0x56,0x81,0x2e,0xf2]
234 @ CHECK: vorr   q4, q7, q3              @ encoding: [0x56,0x81,0x2e,0xf2]
235 @ CHECK: vorr   q4, q7, q3              @ encoding: [0x56,0x81,0x2e,0xf2]
236
237 @ CHECK: vorr   q4, q7, q3              @ encoding: [0x56,0x81,0x2e,0xf2]
238 @ CHECK: vorr   q4, q7, q3              @ encoding: [0x56,0x81,0x2e,0xf2]
239
240 @ Two-operand aliases
241         vand  q6, q5
242         vand.s8  q6, q5
243         vand.s16 q7, q1
244         vand.s32 q8, q2
245         vand.f64 q8, q2
246
247         veor   q6, q5
248         veor.8   q6, q5
249         veor.p16 q7, q1
250         veor.u32 q8, q2
251         veor.d   q8, q2
252
253         veor  q6, q5
254         veor.i8  q6, q5
255         veor.16  q7, q1
256         veor.f   q8, q2
257         veor.i64 q8, q2
258
259         vclt.s16 q5, #0
260         vclt.s16 d5, #0
261
262         vceq.s16 q5, q3
263         vceq.s16 d5, d3
264
265         vcgt.s16 q5, q3
266         vcgt.s16 d5, d3
267
268         vcge.s16 q5, q3
269         vcge.s16 d5, d3
270
271         vcgt.s16 q5, #0
272         vcgt.s16 d5, #0
273
274         vcge.s16 q5, #0
275         vcge.s16 d5, #0
276
277         vceq.s16 q5, #0
278         vceq.s16 d5, #0
279
280         vcle.s16 q5, #0
281         vcle.s16 d5, #0
282
283         vacge.f32 d5, d30
284         vacge.f32 q5, q3
285
286         vacgt.f32 d5, d30
287         vacgt.f32 q5, q3
288
289 @ FIXME: We don't have an alias that reverses the operands
290 @  vacle.f32 d5, d30 
291 @  vacle.f32 q5, q3 
292 @  vaclt.f32 d5, d30
293 @  vaclt.f32 q5, q3
294
295 @ CHECK: vand   q6, q6, q5              @ encoding: [0x5a,0xc1,0x0c,0xf2]
296 @ CHECK: vand   q6, q6, q5              @ encoding: [0x5a,0xc1,0x0c,0xf2]
297 @ CHECK: vand   q7, q7, q1              @ encoding: [0x52,0xe1,0x0e,0xf2]
298 @ CHECK: vand   q8, q8, q2              @ encoding: [0xd4,0x01,0x40,0xf2]
299 @ CHECK: vand   q8, q8, q2              @ encoding: [0xd4,0x01,0x40,0xf2]
300
301 @ CHECK: veor   q6, q6, q5              @ encoding: [0x5a,0xc1,0x0c,0xf3]
302 @ CHECK: veor   q6, q6, q5              @ encoding: [0x5a,0xc1,0x0c,0xf3]
303 @ CHECK: veor   q7, q7, q1              @ encoding: [0x52,0xe1,0x0e,0xf3]
304 @ CHECK: veor   q8, q8, q2              @ encoding: [0xd4,0x01,0x40,0xf3]
305 @ CHECK: veor   q8, q8, q2              @ encoding: [0xd4,0x01,0x40,0xf3]
306
307 @ CHECK: veor   q6, q6, q5              @ encoding: [0x5a,0xc1,0x0c,0xf3]
308 @ CHECK: veor   q6, q6, q5              @ encoding: [0x5a,0xc1,0x0c,0xf3]
309 @ CHECK: veor   q7, q7, q1              @ encoding: [0x52,0xe1,0x0e,0xf3]
310 @ CHECK: veor   q8, q8, q2              @ encoding: [0xd4,0x01,0x40,0xf3]
311 @ CHECK: veor   q8, q8, q2              @ encoding: [0xd4,0x01,0x40,0xf3]
312 @ CHECK: vclt.s16        q5, q5, #0      @ encoding: [0x4a,0xa2,0xb5,0xf3]
313 @ CHECK: vclt.s16        d5, d5, #0      @ encoding: [0x05,0x52,0xb5,0xf3]
314
315 @ CHECK: vceq.i16        q5, q5, q3      @ encoding: [0x56,0xa8,0x1a,0xf3]
316 @ CHECK: vceq.i16        d5, d5, d3      @ encoding: [0x13,0x58,0x15,0xf3]
317
318 @ CHECK: vcgt.s16        q5, q5, q3      @ encoding: [0x46,0xa3,0x1a,0xf2]
319 @ CHECK: vcgt.s16        d5, d5, d3      @ encoding: [0x03,0x53,0x15,0xf2]
320
321 @ CHECK: vcge.s16        q5, q5, q3      @ encoding: [0x56,0xa3,0x1a,0xf2]
322 @ CHECK: vcge.s16        d5, d5, d3      @ encoding: [0x13,0x53,0x15,0xf2]
323
324 @ CHECK: vcgt.s16        q5, q5, #0      @ encoding: [0x4a,0xa0,0xb5,0xf3]
325 @ CHECK: vcgt.s16        d5, d5, #0      @ encoding: [0x05,0x50,0xb5,0xf3]
326
327 @ CHECK: vcge.s16        q5, q5, #0      @ encoding: [0xca,0xa0,0xb5,0xf3]
328 @ CHECK: vcge.s16        d5, d5, #0      @ encoding: [0x85,0x50,0xb5,0xf3]
329
330 @ CHECK: vceq.i16        q5, q5, #0      @ encoding: [0x4a,0xa1,0xb5,0xf3]
331 @ CHECK: vceq.i16        d5, d5, #0      @ encoding: [0x05,0x51,0xb5,0xf3]
332
333 @ CHECK: vcle.s16        q5, q5, #0      @ encoding: [0xca,0xa1,0xb5,0xf3]
334 @ CHECK: vcle.s16        d5, d5, #0      @ encoding: [0x85,0x51,0xb5,0xf3]
335
336 @ CHECK: vacge.f32       d5, d5, d30     @ encoding: [0x3e,0x5e,0x05,0xf3]
337 @ CHECK: vacge.f32       q5, q5, q3      @ encoding: [0x56,0xae,0x0a,0xf3]
338
339 @ CHECK: vacgt.f32       d5, d5, d30     @ encoding: [0x3e,0x5e,0x25,0xf3]
340 @ CHECK: vacgt.f32       q5, q5, q3      @ encoding: [0x56,0xae,0x2a,0xf3]