Add a missing error handling to llvm-lto.
[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 q10, q11
33         vbic d9, d1
34         vbic.i16        d16, #0xFF00
35         vbic.i16        q8,  #0xFF00
36         vbic.i16        d16, #0x00FF
37         vbic.i16        q8,  #0x00FF
38         vbic.i32        d16, #0xFF000000
39         vbic.i32        q8,  #0xFF000000
40         vbic.i32        d16, #0x00FF0000
41         vbic.i32        q8,  #0x00FF0000
42         vbic.i32        d16, #0x0000FF00
43         vbic.i32        q8,  #0x0000FF00
44         vbic.i32        d16, #0x000000FF
45         vbic.i32        q8,  #0x000000FF
46
47 @ CHECK: vbic   d16, d17, d16           @ encoding: [0xb0,0x01,0x51,0xf2]
48 @ CHECK: vbic   q8, q8, q9              @ encoding: [0xf2,0x01,0x50,0xf2]
49 @ CHECK: vbic   q10, q10, q11           @ encoding: [0xf6,0x41,0x54,0xf2]
50 @ CHECK: vbic   d9, d9, d1              @ encoding: [0x11,0x91,0x19,0xf2]
51 @ CHECK: vbic.i16       d16, #0xff00    @ encoding: [0x3f,0x0b,0xc7,0xf3]
52 @ CHECK: vbic.i16       q8, #0xff00     @ encoding: [0x7f,0x0b,0xc7,0xf3]
53 @ CHECK: vbic.i16       d16, #0xff      @ encoding: [0x3f,0x09,0xc7,0xf3]
54 @ CHECK: vbic.i16       q8, #0xff       @ encoding: [0x7f,0x09,0xc7,0xf3]
55 @ CHECK: vbic.i32       d16, #0xff000000 @ encoding: [0x3f,0x07,0xc7,0xf3]
56 @ CHECK: vbic.i32       q8, #0xff000000 @ encoding: [0x7f,0x07,0xc7,0xf3]
57 @ CHECK: vbic.i32       d16, #0xff0000  @ encoding: [0x3f,0x05,0xc7,0xf3]
58 @ CHECK: vbic.i32       q8, #0xff0000   @ encoding: [0x7f,0x05,0xc7,0xf3]
59 @ CHECK: vbic.i32       d16, #0xff00    @ encoding: [0x3f,0x03,0xc7,0xf3]
60 @ CHECK: vbic.i32       q8, #0xff00     @ encoding: [0x7f,0x03,0xc7,0xf3]
61 @ CHECK: vbic.i32       d16, #0xff      @ encoding: [0x3f,0x01,0xc7,0xf3]
62 @ CHECK: vbic.i32       q8, #0xff       @ encoding: [0x7f,0x01,0xc7,0xf3]
63
64         vand.i16 d10, #0xff03
65         vand.i16 q10, #0xff03
66         vand.i16 d10, #0x03ff
67         vand.i16 q10, #0x03ff
68         vand.i32 d10, #0x03ffffff
69         vand.i32 q10, #0x03ffffff
70         vand.i32 d10, #0xff03ffff
71         vand.i32 q10, #0xff03ffff
72         vand.i32 d10, #0xffff03ff
73         vand.i32 q10, #0xffff03ff
74         vand.i32 d10, #0xffffff03
75         vand.i32 q10, #0xffffff03
76
77 @ CHECK: vbic.i16       d10, #0xfc      @ encoding: [0x3c,0xa9,0x87,0xf3]
78 @ CHECK: vbic.i16       q10, #0xfc      @ encoding: [0x7c,0x49,0xc7,0xf3]
79 @ CHECK: vbic.i16       d10, #0xfc00    @ encoding: [0x3c,0xab,0x87,0xf3]
80 @ CHECK: vbic.i16       q10, #0xfc00    @ encoding: [0x7c,0x4b,0xc7,0xf3]
81 @ CHECK: vbic.i32       d10, #0xfc000000 @ encoding: [0x3c,0xa7,0x87,0xf3]
82 @ CHECK: vbic.i32       q10, #0xfc000000 @ encoding: [0x7c,0x47,0xc7,0xf3]
83 @ CHECK: vbic.i32       d10, #0xfc0000  @ encoding: [0x3c,0xa5,0x87,0xf3]
84 @ CHECK: vbic.i32       q10, #0xfc0000  @ encoding: [0x7c,0x45,0xc7,0xf3]
85 @ CHECK: vbic.i32       d10, #0xfc00    @ encoding: [0x3c,0xa3,0x87,0xf3]
86 @ CHECK: vbic.i32       q10, #0xfc00    @ encoding: [0x7c,0x43,0xc7,0xf3]
87 @ CHECK: vbic.i32       d10, #0xfc      @ encoding: [0x3c,0xa1,0x87,0xf3]
88 @ CHECK: vbic.i32       q10, #0xfc      @ encoding: [0x7c,0x41,0xc7,0xf3]
89
90         vorn    d16, d17, d16
91         vorn    q8, q8, q9
92
93 @ CHECK: vorn   d16, d17, d16           @ encoding: [0xb0,0x01,0x71,0xf2]
94 @ CHECK: vorn   q8, q8, q9              @ encoding: [0xf2,0x01,0x70,0xf2]
95
96         vmvn    d16, d16
97         vmvn    q8, q8
98
99 @ CHECK: vmvn   d16, d16                @ encoding: [0xa0,0x05,0xf0,0xf3]
100 @ CHECK: vmvn   q8, q8                  @ encoding: [0xe0,0x05,0xf0,0xf3]
101
102         vbsl    d18, d17, d16
103         vbsl    q8, q10, q9
104
105 @ CHECK: vbsl   d18, d17, d16           @ encoding: [0xb0,0x21,0x51,0xf3]
106 @ CHECK: vbsl   q8, q10, q9             @ encoding: [0xf2,0x01,0x54,0xf3]
107
108
109 @ Size suffices are optional.
110         veor q4, q7, q3
111         veor.8 q4, q7, q3
112         veor.16 q4, q7, q3
113         veor.32 q4, q7, q3
114         veor.64 q4, q7, q3
115
116         veor.i8 q4, q7, q3
117         veor.i16 q4, q7, q3
118         veor.i32 q4, q7, q3
119         veor.i64 q4, q7, q3
120
121         veor.s8 q4, q7, q3
122         veor.s16 q4, q7, q3
123         veor.s32 q4, q7, q3
124         veor.s64 q4, q7, q3
125
126         veor.u8 q4, q7, q3
127         veor.u16 q4, q7, q3
128         veor.u32 q4, q7, q3
129         veor.u64 q4, q7, q3
130
131         veor.p8 q4, q7, q3
132         veor.p16 q4, q7, q3
133         veor.f32 q4, q7, q3
134         veor.f64 q4, q7, q3
135
136         veor.f q4, q7, q3
137         veor.d q4, q7, q3
138
139 @ CHECK: veor   q4, q7, q3              @ encoding: [0x56,0x81,0x0e,0xf3]
140 @ CHECK: veor   q4, q7, q3              @ encoding: [0x56,0x81,0x0e,0xf3]
141 @ CHECK: veor   q4, q7, q3              @ encoding: [0x56,0x81,0x0e,0xf3]
142 @ CHECK: veor   q4, q7, q3              @ encoding: [0x56,0x81,0x0e,0xf3]
143 @ CHECK: veor   q4, q7, q3              @ encoding: [0x56,0x81,0x0e,0xf3]
144
145 @ CHECK: veor   q4, q7, q3              @ encoding: [0x56,0x81,0x0e,0xf3]
146 @ CHECK: veor   q4, q7, q3              @ encoding: [0x56,0x81,0x0e,0xf3]
147 @ CHECK: veor   q4, q7, q3              @ encoding: [0x56,0x81,0x0e,0xf3]
148 @ CHECK: veor   q4, q7, q3              @ encoding: [0x56,0x81,0x0e,0xf3]
149
150 @ CHECK: veor   q4, q7, q3              @ encoding: [0x56,0x81,0x0e,0xf3]
151 @ CHECK: veor   q4, q7, q3              @ encoding: [0x56,0x81,0x0e,0xf3]
152 @ CHECK: veor   q4, q7, q3              @ encoding: [0x56,0x81,0x0e,0xf3]
153 @ CHECK: veor   q4, q7, q3              @ encoding: [0x56,0x81,0x0e,0xf3]
154
155 @ CHECK: veor   q4, q7, q3              @ encoding: [0x56,0x81,0x0e,0xf3]
156 @ CHECK: veor   q4, q7, q3              @ encoding: [0x56,0x81,0x0e,0xf3]
157 @ CHECK: veor   q4, q7, q3              @ encoding: [0x56,0x81,0x0e,0xf3]
158 @ CHECK: veor   q4, q7, q3              @ encoding: [0x56,0x81,0x0e,0xf3]
159
160 @ CHECK: veor   q4, q7, q3              @ encoding: [0x56,0x81,0x0e,0xf3]
161 @ CHECK: veor   q4, q7, q3              @ encoding: [0x56,0x81,0x0e,0xf3]
162 @ CHECK: veor   q4, q7, q3              @ encoding: [0x56,0x81,0x0e,0xf3]
163 @ CHECK: veor   q4, q7, q3              @ encoding: [0x56,0x81,0x0e,0xf3]
164
165 @ CHECK: veor   q4, q7, q3              @ encoding: [0x56,0x81,0x0e,0xf3]
166 @ CHECK: veor   q4, q7, q3              @ encoding: [0x56,0x81,0x0e,0xf3]
167
168
169         vand d4, d7, d3
170         vand.8 d4, d7, d3
171         vand.16 d4, d7, d3
172         vand.32 d4, d7, d3
173         vand.64 d4, d7, d3
174
175         vand.i8 d4, d7, d3
176         vand.i16 d4, d7, d3
177         vand.i32 d4, d7, d3
178         vand.i64 d4, d7, d3
179
180         vand.s8 d4, d7, d3
181         vand.s16 d4, d7, d3
182         vand.s32 d4, d7, d3
183         vand.s64 d4, d7, d3
184
185         vand.u8 d4, d7, d3
186         vand.u16 d4, d7, d3
187         vand.u32 d4, d7, d3
188         vand.u64 d4, d7, d3
189
190         vand.p8 d4, d7, d3
191         vand.p16 d4, d7, d3
192         vand.f32 d4, d7, d3
193         vand.f64 d4, d7, d3
194
195         vand.f d4, d7, d3
196         vand.d d4, d7, d3
197
198 @ CHECK: vand   d4, d7, d3              @ encoding: [0x13,0x41,0x07,0xf2]
199 @ CHECK: vand   d4, d7, d3              @ encoding: [0x13,0x41,0x07,0xf2]
200 @ CHECK: vand   d4, d7, d3              @ encoding: [0x13,0x41,0x07,0xf2]
201 @ CHECK: vand   d4, d7, d3              @ encoding: [0x13,0x41,0x07,0xf2]
202 @ CHECK: vand   d4, d7, d3              @ encoding: [0x13,0x41,0x07,0xf2]
203
204 @ CHECK: vand   d4, d7, d3              @ encoding: [0x13,0x41,0x07,0xf2]
205 @ CHECK: vand   d4, d7, d3              @ encoding: [0x13,0x41,0x07,0xf2]
206 @ CHECK: vand   d4, d7, d3              @ encoding: [0x13,0x41,0x07,0xf2]
207 @ CHECK: vand   d4, d7, d3              @ encoding: [0x13,0x41,0x07,0xf2]
208
209 @ CHECK: vand   d4, d7, d3              @ encoding: [0x13,0x41,0x07,0xf2]
210 @ CHECK: vand   d4, d7, d3              @ encoding: [0x13,0x41,0x07,0xf2]
211 @ CHECK: vand   d4, d7, d3              @ encoding: [0x13,0x41,0x07,0xf2]
212 @ CHECK: vand   d4, d7, d3              @ encoding: [0x13,0x41,0x07,0xf2]
213
214 @ CHECK: vand   d4, d7, d3              @ encoding: [0x13,0x41,0x07,0xf2]
215 @ CHECK: vand   d4, d7, d3              @ encoding: [0x13,0x41,0x07,0xf2]
216 @ CHECK: vand   d4, d7, d3              @ encoding: [0x13,0x41,0x07,0xf2]
217 @ CHECK: vand   d4, d7, d3              @ encoding: [0x13,0x41,0x07,0xf2]
218
219 @ CHECK: vand   d4, d7, d3              @ encoding: [0x13,0x41,0x07,0xf2]
220 @ CHECK: vand   d4, d7, d3              @ encoding: [0x13,0x41,0x07,0xf2]
221 @ CHECK: vand   d4, d7, d3              @ encoding: [0x13,0x41,0x07,0xf2]
222 @ CHECK: vand   d4, d7, d3              @ encoding: [0x13,0x41,0x07,0xf2]
223
224 @ CHECK: vand   d4, d7, d3              @ encoding: [0x13,0x41,0x07,0xf2]
225 @ CHECK: vand   d4, d7, d3              @ encoding: [0x13,0x41,0x07,0xf2]
226
227         vorr d4, d7, d3
228         vorr.8 d4, d7, d3
229         vorr.16 d4, d7, d3
230         vorr.32 d4, d7, d3
231         vorr.64 d4, d7, d3
232
233         vorr.i8 d4, d7, d3
234         vorr.i16 d4, d7, d3
235         vorr.i32 d4, d7, d3
236         vorr.i64 d4, d7, d3
237
238         vorr.s8 d4, d7, d3
239         vorr.s16 d4, d7, d3
240         vorr.s32 q4, q7, q3
241         vorr.s64 q4, q7, q3
242
243         vorr.u8 q4, q7, q3
244         vorr.u16 q4, q7, q3
245         vorr.u32 q4, q7, q3
246         vorr.u64 q4, q7, q3
247
248         vorr.p8 q4, q7, q3
249         vorr.p16 q4, q7, q3
250         vorr.f32 q4, q7, q3
251         vorr.f64 q4, q7, q3
252
253         vorr.f q4, q7, q3
254         vorr.d q4, q7, q3
255
256 @ CHECK: vorr   d4, d7, d3              @ encoding: [0x13,0x41,0x27,0xf2]
257 @ CHECK: vorr   d4, d7, d3              @ encoding: [0x13,0x41,0x27,0xf2]
258 @ CHECK: vorr   d4, d7, d3              @ encoding: [0x13,0x41,0x27,0xf2]
259 @ CHECK: vorr   d4, d7, d3              @ encoding: [0x13,0x41,0x27,0xf2]
260 @ CHECK: vorr   d4, d7, d3              @ encoding: [0x13,0x41,0x27,0xf2]
261
262 @ CHECK: vorr   d4, d7, d3              @ encoding: [0x13,0x41,0x27,0xf2]
263 @ CHECK: vorr   d4, d7, d3              @ encoding: [0x13,0x41,0x27,0xf2]
264 @ CHECK: vorr   d4, d7, d3              @ encoding: [0x13,0x41,0x27,0xf2]
265 @ CHECK: vorr   d4, d7, d3              @ encoding: [0x13,0x41,0x27,0xf2]
266
267 @ CHECK: vorr   d4, d7, d3              @ encoding: [0x13,0x41,0x27,0xf2]
268 @ CHECK: vorr   d4, d7, d3              @ encoding: [0x13,0x41,0x27,0xf2]
269 @ CHECK: vorr   q4, q7, q3              @ encoding: [0x56,0x81,0x2e,0xf2]
270 @ CHECK: vorr   q4, q7, q3              @ encoding: [0x56,0x81,0x2e,0xf2]
271
272 @ CHECK: vorr   q4, q7, q3              @ encoding: [0x56,0x81,0x2e,0xf2]
273 @ CHECK: vorr   q4, q7, q3              @ encoding: [0x56,0x81,0x2e,0xf2]
274 @ CHECK: vorr   q4, q7, q3              @ encoding: [0x56,0x81,0x2e,0xf2]
275 @ CHECK: vorr   q4, q7, q3              @ encoding: [0x56,0x81,0x2e,0xf2]
276
277 @ CHECK: vorr   q4, q7, q3              @ encoding: [0x56,0x81,0x2e,0xf2]
278 @ CHECK: vorr   q4, q7, q3              @ encoding: [0x56,0x81,0x2e,0xf2]
279 @ CHECK: vorr   q4, q7, q3              @ encoding: [0x56,0x81,0x2e,0xf2]
280 @ CHECK: vorr   q4, q7, q3              @ encoding: [0x56,0x81,0x2e,0xf2]
281
282 @ CHECK: vorr   q4, q7, q3              @ encoding: [0x56,0x81,0x2e,0xf2]
283 @ CHECK: vorr   q4, q7, q3              @ encoding: [0x56,0x81,0x2e,0xf2]
284
285 @ Two-operand aliases
286         vand  q6, q5
287         vand.s8  q6, q5
288         vand.s16 q7, q1
289         vand.s32 q8, q2
290         vand.f64 q8, q2
291
292         veor   q6, q5
293         veor.8   q6, q5
294         veor.p16 q7, q1
295         veor.u32 q8, q2
296         veor.d   q8, q2
297
298         veor  q6, q5
299         veor.i8  q6, q5
300         veor.16  q7, q1
301         veor.f   q8, q2
302         veor.i64 q8, q2
303
304         vclt.s16 q5, #0
305         vclt.s16 d5, #0
306
307         vceq.s16 q5, q3
308         vceq.s16 d5, d3
309
310         vcgt.s16 q5, q3
311         vcgt.s16 d5, d3
312
313         vcge.s16 q5, q3
314         vcge.s16 d5, d3
315
316         vcgt.s16 q5, #0
317         vcgt.s16 d5, #0
318
319         vcge.s16 q5, #0
320         vcge.s16 d5, #0
321
322         vceq.s16 q5, #0
323         vceq.s16 d5, #0
324
325         vcle.s16 q5, #0
326         vcle.s16 d5, #0
327
328         vacge.f32 d5, d30
329         vacge.f32 q5, q3
330
331         vacgt.f32 d5, d30
332         vacgt.f32 q5, q3
333
334 @ FIXME: We don't have an alias that reverses the operands
335 @  vacle.f32 d5, d30 
336 @  vacle.f32 q5, q3 
337 @  vaclt.f32 d5, d30
338 @  vaclt.f32 q5, q3
339
340 @ CHECK: vand   q6, q6, q5              @ encoding: [0x5a,0xc1,0x0c,0xf2]
341 @ CHECK: vand   q6, q6, q5              @ encoding: [0x5a,0xc1,0x0c,0xf2]
342 @ CHECK: vand   q7, q7, q1              @ encoding: [0x52,0xe1,0x0e,0xf2]
343 @ CHECK: vand   q8, q8, q2              @ encoding: [0xd4,0x01,0x40,0xf2]
344 @ CHECK: vand   q8, q8, q2              @ encoding: [0xd4,0x01,0x40,0xf2]
345
346 @ CHECK: veor   q6, q6, q5              @ encoding: [0x5a,0xc1,0x0c,0xf3]
347 @ CHECK: veor   q6, q6, q5              @ encoding: [0x5a,0xc1,0x0c,0xf3]
348 @ CHECK: veor   q7, q7, q1              @ encoding: [0x52,0xe1,0x0e,0xf3]
349 @ CHECK: veor   q8, q8, q2              @ encoding: [0xd4,0x01,0x40,0xf3]
350 @ CHECK: veor   q8, q8, q2              @ encoding: [0xd4,0x01,0x40,0xf3]
351
352 @ CHECK: veor   q6, q6, q5              @ encoding: [0x5a,0xc1,0x0c,0xf3]
353 @ CHECK: veor   q6, q6, q5              @ encoding: [0x5a,0xc1,0x0c,0xf3]
354 @ CHECK: veor   q7, q7, q1              @ encoding: [0x52,0xe1,0x0e,0xf3]
355 @ CHECK: veor   q8, q8, q2              @ encoding: [0xd4,0x01,0x40,0xf3]
356 @ CHECK: veor   q8, q8, q2              @ encoding: [0xd4,0x01,0x40,0xf3]
357 @ CHECK: vclt.s16        q5, q5, #0      @ encoding: [0x4a,0xa2,0xb5,0xf3]
358 @ CHECK: vclt.s16        d5, d5, #0      @ encoding: [0x05,0x52,0xb5,0xf3]
359
360 @ CHECK: vceq.i16        q5, q5, q3      @ encoding: [0x56,0xa8,0x1a,0xf3]
361 @ CHECK: vceq.i16        d5, d5, d3      @ encoding: [0x13,0x58,0x15,0xf3]
362
363 @ CHECK: vcgt.s16        q5, q5, q3      @ encoding: [0x46,0xa3,0x1a,0xf2]
364 @ CHECK: vcgt.s16        d5, d5, d3      @ encoding: [0x03,0x53,0x15,0xf2]
365
366 @ CHECK: vcge.s16        q5, q5, q3      @ encoding: [0x56,0xa3,0x1a,0xf2]
367 @ CHECK: vcge.s16        d5, d5, d3      @ encoding: [0x13,0x53,0x15,0xf2]
368
369 @ CHECK: vcgt.s16        q5, q5, #0      @ encoding: [0x4a,0xa0,0xb5,0xf3]
370 @ CHECK: vcgt.s16        d5, d5, #0      @ encoding: [0x05,0x50,0xb5,0xf3]
371
372 @ CHECK: vcge.s16        q5, q5, #0      @ encoding: [0xca,0xa0,0xb5,0xf3]
373 @ CHECK: vcge.s16        d5, d5, #0      @ encoding: [0x85,0x50,0xb5,0xf3]
374
375 @ CHECK: vceq.i16        q5, q5, #0      @ encoding: [0x4a,0xa1,0xb5,0xf3]
376 @ CHECK: vceq.i16        d5, d5, #0      @ encoding: [0x05,0x51,0xb5,0xf3]
377
378 @ CHECK: vcle.s16        q5, q5, #0      @ encoding: [0xca,0xa1,0xb5,0xf3]
379 @ CHECK: vcle.s16        d5, d5, #0      @ encoding: [0x85,0x51,0xb5,0xf3]
380
381 @ CHECK: vacge.f32       d5, d5, d30     @ encoding: [0x3e,0x5e,0x05,0xf3]
382 @ CHECK: vacge.f32       q5, q5, q3      @ encoding: [0x56,0xae,0x0a,0xf3]
383
384 @ CHECK: vacgt.f32       d5, d5, d30     @ encoding: [0x3e,0x5e,0x25,0xf3]
385 @ CHECK: vacgt.f32       q5, q5, q3      @ encoding: [0x56,0xae,0x2a,0xf3]