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	vbit	d18, d17, d16
105	vbit	q8, q10, q9
106	vbif	d18, d17, d16
107	vbif	q8, q10, q9
108
109@ CHECK: vbsl	d18, d17, d16           @ encoding: [0xb0,0x21,0x51,0xf3]
110@ CHECK: vbsl	q8, q10, q9             @ encoding: [0xf2,0x01,0x54,0xf3]
111@ CHECK: vbit	d18, d17, d16           @ encoding: [0xb0,0x21,0x61,0xf3]
112@ CHECK: vbit	q8, q10, q9             @ encoding: [0xf2,0x01,0x64,0xf3]
113@ CHECK: vbif	d18, d17, d16           @ encoding: [0xb0,0x21,0x71,0xf3]
114@ CHECK: vbif	q8, q10, q9             @ encoding: [0xf2,0x01,0x74,0xf3]
115
116@ Size suffices are optional.
117        veor q4, q7, q3
118        veor.8 q4, q7, q3
119        veor.16 q4, q7, q3
120        veor.32 q4, q7, q3
121        veor.64 q4, q7, q3
122
123        veor.i8 q4, q7, q3
124        veor.i16 q4, q7, q3
125        veor.i32 q4, q7, q3
126        veor.i64 q4, q7, q3
127
128        veor.s8 q4, q7, q3
129        veor.s16 q4, q7, q3
130        veor.s32 q4, q7, q3
131        veor.s64 q4, q7, q3
132
133        veor.u8 q4, q7, q3
134        veor.u16 q4, q7, q3
135        veor.u32 q4, q7, q3
136        veor.u64 q4, q7, q3
137
138        veor.p8 q4, q7, q3
139        veor.p16 q4, q7, q3
140        veor.f32 q4, q7, q3
141        veor.f64 q4, q7, q3
142
143        veor.f q4, q7, q3
144        veor.d q4, q7, q3
145
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@ CHECK: veor	q4, q7, q3              @ encoding: [0x56,0x81,0x0e,0xf3]
150@ CHECK: veor	q4, q7, q3              @ encoding: [0x56,0x81,0x0e,0xf3]
151
152@ CHECK: veor	q4, q7, q3              @ encoding: [0x56,0x81,0x0e,0xf3]
153@ CHECK: veor	q4, q7, q3              @ encoding: [0x56,0x81,0x0e,0xf3]
154@ CHECK: veor	q4, q7, q3              @ encoding: [0x56,0x81,0x0e,0xf3]
155@ CHECK: veor	q4, q7, q3              @ encoding: [0x56,0x81,0x0e,0xf3]
156
157@ CHECK: veor	q4, q7, q3              @ encoding: [0x56,0x81,0x0e,0xf3]
158@ CHECK: veor	q4, q7, q3              @ encoding: [0x56,0x81,0x0e,0xf3]
159@ CHECK: veor	q4, q7, q3              @ encoding: [0x56,0x81,0x0e,0xf3]
160@ CHECK: veor	q4, q7, q3              @ encoding: [0x56,0x81,0x0e,0xf3]
161
162@ CHECK: veor	q4, q7, q3              @ encoding: [0x56,0x81,0x0e,0xf3]
163@ CHECK: veor	q4, q7, q3              @ encoding: [0x56,0x81,0x0e,0xf3]
164@ CHECK: veor	q4, q7, q3              @ encoding: [0x56,0x81,0x0e,0xf3]
165@ CHECK: veor	q4, q7, q3              @ encoding: [0x56,0x81,0x0e,0xf3]
166
167@ CHECK: veor	q4, q7, q3              @ encoding: [0x56,0x81,0x0e,0xf3]
168@ CHECK: veor	q4, q7, q3              @ encoding: [0x56,0x81,0x0e,0xf3]
169@ CHECK: veor	q4, q7, q3              @ encoding: [0x56,0x81,0x0e,0xf3]
170@ CHECK: veor	q4, q7, q3              @ encoding: [0x56,0x81,0x0e,0xf3]
171
172@ CHECK: veor	q4, q7, q3              @ encoding: [0x56,0x81,0x0e,0xf3]
173@ CHECK: veor	q4, q7, q3              @ encoding: [0x56,0x81,0x0e,0xf3]
174
175
176        vand d4, d7, d3
177        vand.8 d4, d7, d3
178        vand.16 d4, d7, d3
179        vand.32 d4, d7, d3
180        vand.64 d4, d7, d3
181
182        vand.i8 d4, d7, d3
183        vand.i16 d4, d7, d3
184        vand.i32 d4, d7, d3
185        vand.i64 d4, d7, d3
186
187        vand.s8 d4, d7, d3
188        vand.s16 d4, d7, d3
189        vand.s32 d4, d7, d3
190        vand.s64 d4, d7, d3
191
192        vand.u8 d4, d7, d3
193        vand.u16 d4, d7, d3
194        vand.u32 d4, d7, d3
195        vand.u64 d4, d7, d3
196
197        vand.p8 d4, d7, d3
198        vand.p16 d4, d7, d3
199        vand.f32 d4, d7, d3
200        vand.f64 d4, d7, d3
201
202        vand.f d4, d7, d3
203        vand.d d4, d7, d3
204
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@ CHECK: vand	d4, d7, d3              @ encoding: [0x13,0x41,0x07,0xf2]
209@ CHECK: vand	d4, d7, d3              @ encoding: [0x13,0x41,0x07,0xf2]
210
211@ CHECK: vand	d4, d7, d3              @ encoding: [0x13,0x41,0x07,0xf2]
212@ CHECK: vand	d4, d7, d3              @ encoding: [0x13,0x41,0x07,0xf2]
213@ CHECK: vand	d4, d7, d3              @ encoding: [0x13,0x41,0x07,0xf2]
214@ CHECK: vand	d4, d7, d3              @ encoding: [0x13,0x41,0x07,0xf2]
215
216@ CHECK: vand	d4, d7, d3              @ encoding: [0x13,0x41,0x07,0xf2]
217@ CHECK: vand	d4, d7, d3              @ encoding: [0x13,0x41,0x07,0xf2]
218@ CHECK: vand	d4, d7, d3              @ encoding: [0x13,0x41,0x07,0xf2]
219@ CHECK: vand	d4, d7, d3              @ encoding: [0x13,0x41,0x07,0xf2]
220
221@ CHECK: vand	d4, d7, d3              @ encoding: [0x13,0x41,0x07,0xf2]
222@ CHECK: vand	d4, d7, d3              @ encoding: [0x13,0x41,0x07,0xf2]
223@ CHECK: vand	d4, d7, d3              @ encoding: [0x13,0x41,0x07,0xf2]
224@ CHECK: vand	d4, d7, d3              @ encoding: [0x13,0x41,0x07,0xf2]
225
226@ CHECK: vand	d4, d7, d3              @ encoding: [0x13,0x41,0x07,0xf2]
227@ CHECK: vand	d4, d7, d3              @ encoding: [0x13,0x41,0x07,0xf2]
228@ CHECK: vand	d4, d7, d3              @ encoding: [0x13,0x41,0x07,0xf2]
229@ CHECK: vand	d4, d7, d3              @ encoding: [0x13,0x41,0x07,0xf2]
230
231@ CHECK: vand	d4, d7, d3              @ encoding: [0x13,0x41,0x07,0xf2]
232@ CHECK: vand	d4, d7, d3              @ encoding: [0x13,0x41,0x07,0xf2]
233
234        vorr d4, d7, d3
235        vorr.8 d4, d7, d3
236        vorr.16 d4, d7, d3
237        vorr.32 d4, d7, d3
238        vorr.64 d4, d7, d3
239
240        vorr.i8 d4, d7, d3
241        vorr.i16 d4, d7, d3
242        vorr.i32 d4, d7, d3
243        vorr.i64 d4, d7, d3
244
245        vorr.s8 d4, d7, d3
246        vorr.s16 d4, d7, d3
247        vorr.s32 q4, q7, q3
248        vorr.s64 q4, q7, q3
249
250        vorr.u8 q4, q7, q3
251        vorr.u16 q4, q7, q3
252        vorr.u32 q4, q7, q3
253        vorr.u64 q4, q7, q3
254
255        vorr.p8 q4, q7, q3
256        vorr.p16 q4, q7, q3
257        vorr.f32 q4, q7, q3
258        vorr.f64 q4, q7, q3
259
260        vorr.f q4, q7, q3
261        vorr.d q4, q7, q3
262
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@ CHECK: vorr	d4, d7, d3              @ encoding: [0x13,0x41,0x27,0xf2]
267@ CHECK: vorr	d4, d7, d3              @ encoding: [0x13,0x41,0x27,0xf2]
268
269@ CHECK: vorr	d4, d7, d3              @ encoding: [0x13,0x41,0x27,0xf2]
270@ CHECK: vorr	d4, d7, d3              @ encoding: [0x13,0x41,0x27,0xf2]
271@ CHECK: vorr	d4, d7, d3              @ encoding: [0x13,0x41,0x27,0xf2]
272@ CHECK: vorr	d4, d7, d3              @ encoding: [0x13,0x41,0x27,0xf2]
273
274@ CHECK: vorr	d4, d7, d3              @ encoding: [0x13,0x41,0x27,0xf2]
275@ CHECK: vorr	d4, d7, d3              @ encoding: [0x13,0x41,0x27,0xf2]
276@ CHECK: vorr	q4, q7, q3              @ encoding: [0x56,0x81,0x2e,0xf2]
277@ CHECK: vorr	q4, q7, q3              @ encoding: [0x56,0x81,0x2e,0xf2]
278
279@ CHECK: vorr	q4, q7, q3              @ encoding: [0x56,0x81,0x2e,0xf2]
280@ CHECK: vorr	q4, q7, q3              @ encoding: [0x56,0x81,0x2e,0xf2]
281@ CHECK: vorr	q4, q7, q3              @ encoding: [0x56,0x81,0x2e,0xf2]
282@ CHECK: vorr	q4, q7, q3              @ encoding: [0x56,0x81,0x2e,0xf2]
283
284@ CHECK: vorr	q4, q7, q3              @ encoding: [0x56,0x81,0x2e,0xf2]
285@ CHECK: vorr	q4, q7, q3              @ encoding: [0x56,0x81,0x2e,0xf2]
286@ CHECK: vorr	q4, q7, q3              @ encoding: [0x56,0x81,0x2e,0xf2]
287@ CHECK: vorr	q4, q7, q3              @ encoding: [0x56,0x81,0x2e,0xf2]
288
289@ CHECK: vorr	q4, q7, q3              @ encoding: [0x56,0x81,0x2e,0xf2]
290@ CHECK: vorr	q4, q7, q3              @ encoding: [0x56,0x81,0x2e,0xf2]
291
292@ Two-operand aliases
293	vand  q6, q5
294	vand.s8  q6, q5
295	vand.s16 q7, q1
296	vand.s32 q8, q2
297	vand.f64 q8, q2
298
299	veor   q6, q5
300	veor.8   q6, q5
301	veor.p16 q7, q1
302	veor.u32 q8, q2
303	veor.d   q8, q2
304
305	veor  q6, q5
306	veor.i8  q6, q5
307	veor.16  q7, q1
308	veor.f   q8, q2
309	veor.i64 q8, q2
310
311	vclt.s16 q5, #0
312	vclt.s16 d5, #0
313
314	vceq.s16 q5, q3
315	vceq.s16 d5, d3
316
317	vcgt.s16 q5, q3
318	vcgt.s16 d5, d3
319
320	vcge.s16 q5, q3
321	vcge.s16 d5, d3
322
323	vcgt.s16 q5, #0
324	vcgt.s16 d5, #0
325
326	vcge.s16 q5, #0
327	vcge.s16 d5, #0
328
329	vceq.s16 q5, #0
330	vceq.s16 d5, #0
331
332	vcle.s16 q5, #0
333	vcle.s16 d5, #0
334
335	vacge.f32 d5, d30
336	vacge.f32 q5, q3
337
338	vacgt.f32 d5, d30
339	vacgt.f32 q5, q3
340
341@ FIXME: We don't have an alias that reverses the operands
342@  vacle.f32 d5, d30
343@  vacle.f32 q5, q3
344@  vaclt.f32 d5, d30
345@  vaclt.f32 q5, q3
346
347@ CHECK: vand	q6, q6, q5              @ encoding: [0x5a,0xc1,0x0c,0xf2]
348@ CHECK: vand	q6, q6, q5              @ encoding: [0x5a,0xc1,0x0c,0xf2]
349@ CHECK: vand	q7, q7, q1              @ encoding: [0x52,0xe1,0x0e,0xf2]
350@ CHECK: vand	q8, q8, q2              @ encoding: [0xd4,0x01,0x40,0xf2]
351@ CHECK: vand	q8, q8, q2              @ encoding: [0xd4,0x01,0x40,0xf2]
352
353@ CHECK: veor	q6, q6, q5              @ encoding: [0x5a,0xc1,0x0c,0xf3]
354@ CHECK: veor	q6, q6, q5              @ encoding: [0x5a,0xc1,0x0c,0xf3]
355@ CHECK: veor	q7, q7, q1              @ encoding: [0x52,0xe1,0x0e,0xf3]
356@ CHECK: veor	q8, q8, q2              @ encoding: [0xd4,0x01,0x40,0xf3]
357@ CHECK: veor	q8, q8, q2              @ encoding: [0xd4,0x01,0x40,0xf3]
358
359@ CHECK: veor	q6, q6, q5              @ encoding: [0x5a,0xc1,0x0c,0xf3]
360@ CHECK: veor	q6, q6, q5              @ encoding: [0x5a,0xc1,0x0c,0xf3]
361@ CHECK: veor	q7, q7, q1              @ encoding: [0x52,0xe1,0x0e,0xf3]
362@ CHECK: veor	q8, q8, q2              @ encoding: [0xd4,0x01,0x40,0xf3]
363@ CHECK: veor	q8, q8, q2              @ encoding: [0xd4,0x01,0x40,0xf3]
364@ CHECK: vclt.s16        q5, q5, #0      @ encoding: [0x4a,0xa2,0xb5,0xf3]
365@ CHECK: vclt.s16        d5, d5, #0      @ encoding: [0x05,0x52,0xb5,0xf3]
366
367@ CHECK: vceq.i16        q5, q5, q3      @ encoding: [0x56,0xa8,0x1a,0xf3]
368@ CHECK: vceq.i16        d5, d5, d3      @ encoding: [0x13,0x58,0x15,0xf3]
369
370@ CHECK: vcgt.s16        q5, q5, q3      @ encoding: [0x46,0xa3,0x1a,0xf2]
371@ CHECK: vcgt.s16        d5, d5, d3      @ encoding: [0x03,0x53,0x15,0xf2]
372
373@ CHECK: vcge.s16        q5, q5, q3      @ encoding: [0x56,0xa3,0x1a,0xf2]
374@ CHECK: vcge.s16        d5, d5, d3      @ encoding: [0x13,0x53,0x15,0xf2]
375
376@ CHECK: vcgt.s16        q5, q5, #0      @ encoding: [0x4a,0xa0,0xb5,0xf3]
377@ CHECK: vcgt.s16        d5, d5, #0      @ encoding: [0x05,0x50,0xb5,0xf3]
378
379@ CHECK: vcge.s16        q5, q5, #0      @ encoding: [0xca,0xa0,0xb5,0xf3]
380@ CHECK: vcge.s16        d5, d5, #0      @ encoding: [0x85,0x50,0xb5,0xf3]
381
382@ CHECK: vceq.i16        q5, q5, #0      @ encoding: [0x4a,0xa1,0xb5,0xf3]
383@ CHECK: vceq.i16        d5, d5, #0      @ encoding: [0x05,0x51,0xb5,0xf3]
384
385@ CHECK: vcle.s16        q5, q5, #0      @ encoding: [0xca,0xa1,0xb5,0xf3]
386@ CHECK: vcle.s16        d5, d5, #0      @ encoding: [0x85,0x51,0xb5,0xf3]
387
388@ CHECK: vacge.f32       d5, d5, d30     @ encoding: [0x3e,0x5e,0x05,0xf3]
389@ CHECK: vacge.f32       q5, q5, q3      @ encoding: [0x56,0xae,0x0a,0xf3]
390
391@ CHECK: vacgt.f32       d5, d5, d30     @ encoding: [0x3e,0x5e,0x25,0xf3]
392@ CHECK: vacgt.f32       q5, q5, q3      @ encoding: [0x56,0xae,0x2a,0xf3]
393