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]
386