ARM: Define generic HINT instruction.
[oota-llvm.git] / test / MC / ARM / neon-bitwise-encoding.s
1 @ RUN: llvm-mc -mcpu=cortex-a8 -triple arm-unknown-unknown -show-encoding < %s | FileCheck %s
2
3         vand    d16, d17, d16
4         vand    q8, q8, q9
5
6 @ CHECK: vand   d16, d17, d16           @ encoding: [0xb0,0x01,0x41,0xf2]
7 @ CHECK: vand   q8, q8, q9              @ encoding: [0xf2,0x01,0x40,0xf2]
8
9         veor    d16, d17, d16
10         veor    q8, q8, q9
11
12 @ CHECK: veor   d16, d17, d16           @ encoding: [0xb0,0x01,0x41,0xf3]
13 @ CHECK: veor   q8, q8, q9              @ encoding: [0xf2,0x01,0x40,0xf3]
14
15         vorr    d16, d17, d16
16         vorr    q8, q8, q9
17
18 @ CHECK: vorr   d16, d17, d16           @ encoding: [0xb0,0x01,0x61,0xf2]
19 @ CHECK: vorr   q8, q8, q9              @ encoding: [0xf2,0x01,0x60,0xf2]
20
21         vorr.i32        d16, #0x1000000
22         vorr.i32        q8, #0x1000000
23         vorr.i32        q8, #0x0
24
25 @ CHECK: vorr.i32       d16, #0x1000000 @ encoding: [0x11,0x07,0xc0,0xf2]
26 @ CHECK: vorr.i32       q8, #0x1000000  @ encoding: [0x51,0x07,0xc0,0xf2]
27 @ CHECK: vorr.i32       q8, #0x0        @ encoding: [0x50,0x01,0xc0,0xf2]
28
29         vbic    d16, d17, d16
30         vbic    q8, q8, q9
31         vbic.i32        d16, #0xFF000000
32         vbic.i32        q8, #0xFF000000
33         vbic q10, q11
34         vbic d9, d1
35
36 @ CHECK: vbic   d16, d17, d16           @ encoding: [0xb0,0x01,0x51,0xf2]
37 @ CHECK: vbic   q8, q8, q9              @ encoding: [0xf2,0x01,0x50,0xf2]
38 @ CHECK: vbic.i32       d16, #0xff000000 @ encoding: [0x3f,0x07,0xc7,0xf3]
39 @ CHECK: vbic.i32       q8, #0xff000000 @ encoding: [0x7f,0x07,0xc7,0xf3]
40 @ CHECK: vbic   q10, q10, q11           @ encoding: [0xf6,0x41,0x54,0xf2]
41 @ CHECK: vbic   d9, d9, d1              @ encoding: [0x11,0x91,0x19,0xf2]
42
43
44         vorn    d16, d17, d16
45         vorn    q8, q8, q9
46
47 @ CHECK: vorn   d16, d17, d16           @ encoding: [0xb0,0x01,0x71,0xf2]
48 @ CHECK: vorn   q8, q8, q9              @ encoding: [0xf2,0x01,0x70,0xf2]
49
50         vmvn    d16, d16
51         vmvn    q8, q8
52
53 @ CHECK: vmvn   d16, d16                @ encoding: [0xa0,0x05,0xf0,0xf3]
54 @ CHECK: vmvn   q8, q8                  @ encoding: [0xe0,0x05,0xf0,0xf3]
55
56         vbsl    d18, d17, d16
57         vbsl    q8, q10, q9
58
59 @ CHECK: vbsl   d18, d17, d16           @ encoding: [0xb0,0x21,0x51,0xf3]
60 @ CHECK: vbsl   q8, q10, q9             @ encoding: [0xf2,0x01,0x54,0xf3]
61
62
63 @ Size suffices are optional.
64         veor q4, q7, q3
65         veor.8 q4, q7, q3
66         veor.16 q4, q7, q3
67         veor.32 q4, q7, q3
68         veor.64 q4, q7, q3
69
70         veor.i8 q4, q7, q3
71         veor.i16 q4, q7, q3
72         veor.i32 q4, q7, q3
73         veor.i64 q4, q7, q3
74
75         veor.s8 q4, q7, q3
76         veor.s16 q4, q7, q3
77         veor.s32 q4, q7, q3
78         veor.s64 q4, q7, q3
79
80         veor.u8 q4, q7, q3
81         veor.u16 q4, q7, q3
82         veor.u32 q4, q7, q3
83         veor.u64 q4, q7, q3
84
85         veor.p8 q4, q7, q3
86         veor.p16 q4, q7, q3
87         veor.f32 q4, q7, q3
88         veor.f64 q4, q7, q3
89
90         veor.f q4, q7, q3
91         veor.d q4, q7, q3
92
93 @ CHECK: veor   q4, q7, q3              @ encoding: [0x56,0x81,0x0e,0xf3]
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
99 @ CHECK: veor   q4, q7, q3              @ encoding: [0x56,0x81,0x0e,0xf3]
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
104 @ CHECK: veor   q4, q7, q3              @ encoding: [0x56,0x81,0x0e,0xf3]
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
109 @ CHECK: veor   q4, q7, q3              @ encoding: [0x56,0x81,0x0e,0xf3]
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
114 @ CHECK: veor   q4, q7, q3              @ encoding: [0x56,0x81,0x0e,0xf3]
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
119 @ CHECK: veor   q4, q7, q3              @ encoding: [0x56,0x81,0x0e,0xf3]
120 @ CHECK: veor   q4, q7, q3              @ encoding: [0x56,0x81,0x0e,0xf3]
121
122
123         vand d4, d7, d3
124         vand.8 d4, d7, d3
125         vand.16 d4, d7, d3
126         vand.32 d4, d7, d3
127         vand.64 d4, d7, d3
128
129         vand.i8 d4, d7, d3
130         vand.i16 d4, d7, d3
131         vand.i32 d4, d7, d3
132         vand.i64 d4, d7, d3
133
134         vand.s8 d4, d7, d3
135         vand.s16 d4, d7, d3
136         vand.s32 d4, d7, d3
137         vand.s64 d4, d7, d3
138
139         vand.u8 d4, d7, d3
140         vand.u16 d4, d7, d3
141         vand.u32 d4, d7, d3
142         vand.u64 d4, d7, d3
143
144         vand.p8 d4, d7, d3
145         vand.p16 d4, d7, d3
146         vand.f32 d4, d7, d3
147         vand.f64 d4, d7, d3
148
149         vand.f d4, d7, d3
150         vand.d d4, d7, d3
151
152 @ CHECK: vand   d4, d7, d3              @ encoding: [0x13,0x41,0x07,0xf2]
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
158 @ CHECK: vand   d4, d7, d3              @ encoding: [0x13,0x41,0x07,0xf2]
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
163 @ CHECK: vand   d4, d7, d3              @ encoding: [0x13,0x41,0x07,0xf2]
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
168 @ CHECK: vand   d4, d7, d3              @ encoding: [0x13,0x41,0x07,0xf2]
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
173 @ CHECK: vand   d4, d7, d3              @ encoding: [0x13,0x41,0x07,0xf2]
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
178 @ CHECK: vand   d4, d7, d3              @ encoding: [0x13,0x41,0x07,0xf2]
179 @ CHECK: vand   d4, d7, d3              @ encoding: [0x13,0x41,0x07,0xf2]
180
181         vorr d4, d7, d3
182         vorr.8 d4, d7, d3
183         vorr.16 d4, d7, d3
184         vorr.32 d4, d7, d3
185         vorr.64 d4, d7, d3
186
187         vorr.i8 d4, d7, d3
188         vorr.i16 d4, d7, d3
189         vorr.i32 d4, d7, d3
190         vorr.i64 d4, d7, d3
191
192         vorr.s8 d4, d7, d3
193         vorr.s16 d4, d7, d3
194         vorr.s32 q4, q7, q3
195         vorr.s64 q4, q7, q3
196
197         vorr.u8 q4, q7, q3
198         vorr.u16 q4, q7, q3
199         vorr.u32 q4, q7, q3
200         vorr.u64 q4, q7, q3
201
202         vorr.p8 q4, q7, q3
203         vorr.p16 q4, q7, q3
204         vorr.f32 q4, q7, q3
205         vorr.f64 q4, q7, q3
206
207         vorr.f q4, q7, q3
208         vorr.d q4, q7, q3
209
210 @ CHECK: vorr   d4, d7, d3              @ encoding: [0x13,0x41,0x27,0xf2]
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
216 @ CHECK: vorr   d4, d7, d3              @ encoding: [0x13,0x41,0x27,0xf2]
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
221 @ CHECK: vorr   d4, d7, d3              @ encoding: [0x13,0x41,0x27,0xf2]
222 @ CHECK: vorr   d4, d7, d3              @ encoding: [0x13,0x41,0x27,0xf2]
223 @ CHECK: vorr   q4, q7, q3              @ encoding: [0x56,0x81,0x2e,0xf2]
224 @ CHECK: vorr   q4, q7, q3              @ encoding: [0x56,0x81,0x2e,0xf2]
225
226 @ CHECK: vorr   q4, q7, q3              @ encoding: [0x56,0x81,0x2e,0xf2]
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
231 @ CHECK: vorr   q4, q7, q3              @ encoding: [0x56,0x81,0x2e,0xf2]
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
236 @ CHECK: vorr   q4, q7, q3              @ encoding: [0x56,0x81,0x2e,0xf2]
237 @ CHECK: vorr   q4, q7, q3              @ encoding: [0x56,0x81,0x2e,0xf2]
238
239 @ Two-operand aliases
240         vand  q6, q5
241         vand.s8  q6, q5
242         vand.s16 q7, q1
243         vand.s32 q8, q2
244         vand.f64 q8, q2
245
246         veor   q6, q5
247         veor.8   q6, q5
248         veor.p16 q7, q1
249         veor.u32 q8, q2
250         veor.d   q8, q2
251
252         veor  q6, q5
253         veor.i8  q6, q5
254         veor.16  q7, q1
255         veor.f   q8, q2
256         veor.i64 q8, q2
257
258 @ CHECK: vand   q6, q6, q5              @ encoding: [0x5a,0xc1,0x0c,0xf2]
259 @ CHECK: vand   q6, q6, q5              @ encoding: [0x5a,0xc1,0x0c,0xf2]
260 @ CHECK: vand   q7, q7, q1              @ encoding: [0x52,0xe1,0x0e,0xf2]
261 @ CHECK: vand   q8, q8, q2              @ encoding: [0xd4,0x01,0x40,0xf2]
262 @ CHECK: vand   q8, q8, q2              @ encoding: [0xd4,0x01,0x40,0xf2]
263
264 @ CHECK: veor   q6, q6, q5              @ encoding: [0x5a,0xc1,0x0c,0xf3]
265 @ CHECK: veor   q6, q6, q5              @ encoding: [0x5a,0xc1,0x0c,0xf3]
266 @ CHECK: veor   q7, q7, q1              @ encoding: [0x52,0xe1,0x0e,0xf3]
267 @ CHECK: veor   q8, q8, q2              @ encoding: [0xd4,0x01,0x40,0xf3]
268 @ CHECK: veor   q8, q8, q2              @ encoding: [0xd4,0x01,0x40,0xf3]
269
270 @ CHECK: veor   q6, q6, q5              @ encoding: [0x5a,0xc1,0x0c,0xf3]
271 @ CHECK: veor   q6, q6, q5              @ encoding: [0x5a,0xc1,0x0c,0xf3]
272 @ CHECK: veor   q7, q7, q1              @ encoding: [0x52,0xe1,0x0e,0xf3]
273 @ CHECK: veor   q8, q8, q2              @ encoding: [0xd4,0x01,0x40,0xf3]
274 @ CHECK: veor   q8, q8, q2              @ encoding: [0xd4,0x01,0x40,0xf3]