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