1 // REQUIRES: aarch64-registered-target
2 // RUN: %clang_cc1 -triple arm64-none-linux-gnu -target-feature +neon -S -O3 -o - %s | FileCheck %s
3
4 // Test new aarch64 intrinsics and types
5
6 #include <arm_neon.h>
7
test_vand_s8(int8x8_t a,int8x8_t b)8 int8x8_t test_vand_s8(int8x8_t a, int8x8_t b) {
9 // CHECK-LABEL: test_vand_s8
10 return vand_s8(a, b);
11 // CHECK: and {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
12 }
13
test_vandq_s8(int8x16_t a,int8x16_t b)14 int8x16_t test_vandq_s8(int8x16_t a, int8x16_t b) {
15 // CHECK-LABEL: test_vandq_s8
16 return vandq_s8(a, b);
17 // CHECK: and {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
18 }
19
test_vand_s16(int16x4_t a,int16x4_t b)20 int16x4_t test_vand_s16(int16x4_t a, int16x4_t b) {
21 // CHECK-LABEL: test_vand_s16
22 return vand_s16(a, b);
23 // CHECK: and {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
24 }
25
test_vandq_s16(int16x8_t a,int16x8_t b)26 int16x8_t test_vandq_s16(int16x8_t a, int16x8_t b) {
27 // CHECK-LABEL: test_vandq_s16
28 return vandq_s16(a, b);
29 // CHECK: and {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
30 }
31
test_vand_s32(int32x2_t a,int32x2_t b)32 int32x2_t test_vand_s32(int32x2_t a, int32x2_t b) {
33 // CHECK-LABEL: test_vand_s32
34 return vand_s32(a, b);
35 // CHECK: and {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
36 }
37
test_vandq_s32(int32x4_t a,int32x4_t b)38 int32x4_t test_vandq_s32(int32x4_t a, int32x4_t b) {
39 // CHECK-LABEL: test_vandq_s32
40 return vandq_s32(a, b);
41 // CHECK: and {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
42 }
43
test_vand_s64(int64x1_t a,int64x1_t b)44 int64x1_t test_vand_s64(int64x1_t a, int64x1_t b) {
45 // CHECK-LABEL: test_vand_s64
46 return vand_s64(a, b);
47 // CHECK: and {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
48 }
49
test_vandq_s64(int64x2_t a,int64x2_t b)50 int64x2_t test_vandq_s64(int64x2_t a, int64x2_t b) {
51 // CHECK-LABEL: test_vandq_s64
52 return vandq_s64(a, b);
53 // CHECK: and {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
54 }
55
test_vand_u8(uint8x8_t a,uint8x8_t b)56 uint8x8_t test_vand_u8(uint8x8_t a, uint8x8_t b) {
57 // CHECK-LABEL: test_vand_u8
58 return vand_u8(a, b);
59 // CHECK: and {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
60 }
61
test_vandq_u8(uint8x16_t a,uint8x16_t b)62 uint8x16_t test_vandq_u8(uint8x16_t a, uint8x16_t b) {
63 // CHECK-LABEL: test_vandq_u8
64 return vandq_u8(a, b);
65 // CHECK: and {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
66 }
67
test_vand_u16(uint16x4_t a,uint16x4_t b)68 uint16x4_t test_vand_u16(uint16x4_t a, uint16x4_t b) {
69 // CHECK-LABEL: test_vand_u16
70 return vand_u16(a, b);
71 // CHECK: and {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
72 }
73
test_vandq_u16(uint16x8_t a,uint16x8_t b)74 uint16x8_t test_vandq_u16(uint16x8_t a, uint16x8_t b) {
75 // CHECK-LABEL: test_vandq_u16
76 return vandq_u16(a, b);
77 // CHECK: and {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
78 }
79
test_vand_u32(uint32x2_t a,uint32x2_t b)80 uint32x2_t test_vand_u32(uint32x2_t a, uint32x2_t b) {
81 // CHECK-LABEL: test_vand_u32
82 return vand_u32(a, b);
83 // CHECK: and {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
84 }
85
test_vandq_u32(uint32x4_t a,uint32x4_t b)86 uint32x4_t test_vandq_u32(uint32x4_t a, uint32x4_t b) {
87 // CHECK-LABEL: test_vandq_u32
88 return vandq_u32(a, b);
89 // CHECK: and {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
90 }
91
test_vand_u64(uint64x1_t a,uint64x1_t b)92 uint64x1_t test_vand_u64(uint64x1_t a, uint64x1_t b) {
93 // CHECK-LABEL: test_vand_u64
94 return vand_u64(a, b);
95 // CHECK: and {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
96 }
97
test_vandq_u64(uint64x2_t a,uint64x2_t b)98 uint64x2_t test_vandq_u64(uint64x2_t a, uint64x2_t b) {
99 // CHECK-LABEL: test_vandq_u64
100 return vandq_u64(a, b);
101 // CHECK: and {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
102 }
103
test_vorr_s8(int8x8_t a,int8x8_t b)104 int8x8_t test_vorr_s8(int8x8_t a, int8x8_t b) {
105 // CHECK-LABEL: test_vorr_s8
106 return vorr_s8(a, b);
107 // CHECK: orr {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
108 }
109
test_vorrq_s8(int8x16_t a,int8x16_t b)110 int8x16_t test_vorrq_s8(int8x16_t a, int8x16_t b) {
111 // CHECK-LABEL: test_vorrq_s8
112 return vorrq_s8(a, b);
113 // CHECK: orr {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
114 }
115
test_vorr_s16(int16x4_t a,int16x4_t b)116 int16x4_t test_vorr_s16(int16x4_t a, int16x4_t b) {
117 // CHECK-LABEL: test_vorr_s16
118 return vorr_s16(a, b);
119 // CHECK: orr {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
120 }
121
test_vorrq_s16(int16x8_t a,int16x8_t b)122 int16x8_t test_vorrq_s16(int16x8_t a, int16x8_t b) {
123 // CHECK-LABEL: test_vorrq_s16
124 return vorrq_s16(a, b);
125 // CHECK: orr {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
126 }
127
test_vorr_s32(int32x2_t a,int32x2_t b)128 int32x2_t test_vorr_s32(int32x2_t a, int32x2_t b) {
129 // CHECK-LABEL: test_vorr_s32
130 return vorr_s32(a, b);
131 // CHECK: orr {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
132 }
133
test_vorrq_s32(int32x4_t a,int32x4_t b)134 int32x4_t test_vorrq_s32(int32x4_t a, int32x4_t b) {
135 // CHECK-LABEL: test_vorrq_s32
136 return vorrq_s32(a, b);
137 // CHECK: orr {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
138 }
139
test_vorr_s64(int64x1_t a,int64x1_t b)140 int64x1_t test_vorr_s64(int64x1_t a, int64x1_t b) {
141 // CHECK-LABEL: test_vorr_s64
142 return vorr_s64(a, b);
143 // CHECK: orr {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
144 }
145
test_vorrq_s64(int64x2_t a,int64x2_t b)146 int64x2_t test_vorrq_s64(int64x2_t a, int64x2_t b) {
147 // CHECK-LABEL: test_vorrq_s64
148 return vorrq_s64(a, b);
149 // CHECK: orr {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
150 }
151
test_vorr_u8(uint8x8_t a,uint8x8_t b)152 uint8x8_t test_vorr_u8(uint8x8_t a, uint8x8_t b) {
153 // CHECK-LABEL: test_vorr_u8
154 return vorr_u8(a, b);
155 // CHECK: orr {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
156 }
157
test_vorrq_u8(uint8x16_t a,uint8x16_t b)158 uint8x16_t test_vorrq_u8(uint8x16_t a, uint8x16_t b) {
159 // CHECK-LABEL: test_vorrq_u8
160 return vorrq_u8(a, b);
161 // CHECK: orr {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
162 }
163
test_vorr_u16(uint16x4_t a,uint16x4_t b)164 uint16x4_t test_vorr_u16(uint16x4_t a, uint16x4_t b) {
165 // CHECK-LABEL: test_vorr_u16
166 return vorr_u16(a, b);
167 // CHECK: orr {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
168 }
169
test_vorrq_u16(uint16x8_t a,uint16x8_t b)170 uint16x8_t test_vorrq_u16(uint16x8_t a, uint16x8_t b) {
171 // CHECK-LABEL: test_vorrq_u16
172 return vorrq_u16(a, b);
173 // CHECK: orr {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
174 }
175
test_vorr_u32(uint32x2_t a,uint32x2_t b)176 uint32x2_t test_vorr_u32(uint32x2_t a, uint32x2_t b) {
177 // CHECK-LABEL: test_vorr_u32
178 return vorr_u32(a, b);
179 // CHECK: orr {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
180 }
181
test_vorrq_u32(uint32x4_t a,uint32x4_t b)182 uint32x4_t test_vorrq_u32(uint32x4_t a, uint32x4_t b) {
183 // CHECK-LABEL: test_vorrq_u32
184 return vorrq_u32(a, b);
185 // CHECK: orr {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
186 }
187
test_vorr_u64(uint64x1_t a,uint64x1_t b)188 uint64x1_t test_vorr_u64(uint64x1_t a, uint64x1_t b) {
189 // CHECK-LABEL: test_vorr_u64
190 return vorr_u64(a, b);
191 // CHECK: orr {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
192 }
193
test_vorrq_u64(uint64x2_t a,uint64x2_t b)194 uint64x2_t test_vorrq_u64(uint64x2_t a, uint64x2_t b) {
195 // CHECK-LABEL: test_vorrq_u64
196 return vorrq_u64(a, b);
197 // CHECK: orr {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
198 }
199
test_veor_s8(int8x8_t a,int8x8_t b)200 int8x8_t test_veor_s8(int8x8_t a, int8x8_t b) {
201 // CHECK-LABEL: test_veor_s8
202 return veor_s8(a, b);
203 // CHECK: eor {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
204 }
205
test_veorq_s8(int8x16_t a,int8x16_t b)206 int8x16_t test_veorq_s8(int8x16_t a, int8x16_t b) {
207 // CHECK-LABEL: test_veorq_s8
208 return veorq_s8(a, b);
209 // CHECK: eor {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
210 }
211
test_veor_s16(int16x4_t a,int16x4_t b)212 int16x4_t test_veor_s16(int16x4_t a, int16x4_t b) {
213 // CHECK-LABEL: test_veor_s16
214 return veor_s16(a, b);
215 // CHECK: eor {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
216 }
217
test_veorq_s16(int16x8_t a,int16x8_t b)218 int16x8_t test_veorq_s16(int16x8_t a, int16x8_t b) {
219 // CHECK-LABEL: test_veorq_s16
220 return veorq_s16(a, b);
221 // CHECK: eor {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
222 }
223
test_veor_s32(int32x2_t a,int32x2_t b)224 int32x2_t test_veor_s32(int32x2_t a, int32x2_t b) {
225 // CHECK-LABEL: test_veor_s32
226 return veor_s32(a, b);
227 // CHECK: eor {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
228 }
229
test_veorq_s32(int32x4_t a,int32x4_t b)230 int32x4_t test_veorq_s32(int32x4_t a, int32x4_t b) {
231 // CHECK-LABEL: test_veorq_s32
232 return veorq_s32(a, b);
233 // CHECK: eor {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
234 }
235
test_veor_s64(int64x1_t a,int64x1_t b)236 int64x1_t test_veor_s64(int64x1_t a, int64x1_t b) {
237 // CHECK-LABEL: test_veor_s64
238 return veor_s64(a, b);
239 // CHECK: eor {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
240 }
241
test_veorq_s64(int64x2_t a,int64x2_t b)242 int64x2_t test_veorq_s64(int64x2_t a, int64x2_t b) {
243 // CHECK-LABEL: test_veorq_s64
244 return veorq_s64(a, b);
245 // CHECK: eor {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
246 }
247
test_veor_u8(uint8x8_t a,uint8x8_t b)248 uint8x8_t test_veor_u8(uint8x8_t a, uint8x8_t b) {
249 // CHECK-LABEL: test_veor_u8
250 return veor_u8(a, b);
251 // CHECK: eor {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
252 }
253
test_veorq_u8(uint8x16_t a,uint8x16_t b)254 uint8x16_t test_veorq_u8(uint8x16_t a, uint8x16_t b) {
255 // CHECK-LABEL: test_veorq_u8
256 return veorq_u8(a, b);
257 // CHECK: eor {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
258 }
259
test_veor_u16(uint16x4_t a,uint16x4_t b)260 uint16x4_t test_veor_u16(uint16x4_t a, uint16x4_t b) {
261 // CHECK-LABEL: test_veor_u16
262 return veor_u16(a, b);
263 // CHECK: eor {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
264 }
265
test_veorq_u16(uint16x8_t a,uint16x8_t b)266 uint16x8_t test_veorq_u16(uint16x8_t a, uint16x8_t b) {
267 // CHECK-LABEL: test_veorq_u16
268 return veorq_u16(a, b);
269 // CHECK: eor {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
270 }
271
test_veor_u32(uint32x2_t a,uint32x2_t b)272 uint32x2_t test_veor_u32(uint32x2_t a, uint32x2_t b) {
273 // CHECK-LABEL: test_veor_u32
274 return veor_u32(a, b);
275 // CHECK: eor {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
276 }
277
test_veorq_u32(uint32x4_t a,uint32x4_t b)278 uint32x4_t test_veorq_u32(uint32x4_t a, uint32x4_t b) {
279 // CHECK-LABEL: test_veorq_u32
280 return veorq_u32(a, b);
281 // CHECK: eor {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
282 }
283
test_veor_u64(uint64x1_t a,uint64x1_t b)284 uint64x1_t test_veor_u64(uint64x1_t a, uint64x1_t b) {
285 // CHECK-LABEL: test_veor_u64
286 return veor_u64(a, b);
287 // CHECK: eor {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
288 }
289
test_veorq_u64(uint64x2_t a,uint64x2_t b)290 uint64x2_t test_veorq_u64(uint64x2_t a, uint64x2_t b) {
291 // CHECK-LABEL: test_veorq_u64
292 return veorq_u64(a, b);
293 // CHECK: eor {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
294 }
295
test_vbic_s8(int8x8_t a,int8x8_t b)296 int8x8_t test_vbic_s8(int8x8_t a, int8x8_t b) {
297 // CHECK-LABEL: test_vbic_s8
298 return vbic_s8(a, b);
299 // CHECK: bic {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
300 }
301
test_vbicq_s8(int8x16_t a,int8x16_t b)302 int8x16_t test_vbicq_s8(int8x16_t a, int8x16_t b) {
303 // CHECK-LABEL: test_vbicq_s8
304 return vbicq_s8(a, b);
305 // CHECK: bic {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
306 }
307
test_vbic_s16(int16x4_t a,int16x4_t b)308 int16x4_t test_vbic_s16(int16x4_t a, int16x4_t b) {
309 // CHECK-LABEL: test_vbic_s16
310 return vbic_s16(a, b);
311 // CHECK: bic {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
312 }
313
test_vbicq_s16(int16x8_t a,int16x8_t b)314 int16x8_t test_vbicq_s16(int16x8_t a, int16x8_t b) {
315 // CHECK-LABEL: test_vbicq_s16
316 return vbicq_s16(a, b);
317 // CHECK: bic {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
318 }
319
test_vbic_s32(int32x2_t a,int32x2_t b)320 int32x2_t test_vbic_s32(int32x2_t a, int32x2_t b) {
321 // CHECK-LABEL: test_vbic_s32
322 return vbic_s32(a, b);
323 // CHECK: bic {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
324 }
325
test_vbicq_s32(int32x4_t a,int32x4_t b)326 int32x4_t test_vbicq_s32(int32x4_t a, int32x4_t b) {
327 // CHECK-LABEL: test_vbicq_s32
328 return vbicq_s32(a, b);
329 // CHECK: bic {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
330 }
331
test_vbic_s64(int64x1_t a,int64x1_t b)332 int64x1_t test_vbic_s64(int64x1_t a, int64x1_t b) {
333 // CHECK-LABEL: test_vbic_s64
334 return vbic_s64(a, b);
335 // CHECK: bic {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
336 }
337
test_vbicq_s64(int64x2_t a,int64x2_t b)338 int64x2_t test_vbicq_s64(int64x2_t a, int64x2_t b) {
339 // CHECK-LABEL: test_vbicq_s64
340 return vbicq_s64(a, b);
341 // CHECK: bic {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
342 }
343
test_vbic_u8(uint8x8_t a,uint8x8_t b)344 uint8x8_t test_vbic_u8(uint8x8_t a, uint8x8_t b) {
345 // CHECK-LABEL: test_vbic_u8
346 return vbic_u8(a, b);
347 // CHECK: bic {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
348 }
349
test_vbicq_u8(uint8x16_t a,uint8x16_t b)350 uint8x16_t test_vbicq_u8(uint8x16_t a, uint8x16_t b) {
351 // CHECK-LABEL: test_vbicq_u8
352 return vbicq_u8(a, b);
353 // CHECK: bic {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
354 }
355
test_vbic_u16(uint16x4_t a,uint16x4_t b)356 uint16x4_t test_vbic_u16(uint16x4_t a, uint16x4_t b) {
357 // CHECK-LABEL: test_vbic_u16
358 return vbic_u16(a, b);
359 // CHECK: bic {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
360 }
361
test_vbicq_u16(uint16x8_t a,uint16x8_t b)362 uint16x8_t test_vbicq_u16(uint16x8_t a, uint16x8_t b) {
363 // CHECK-LABEL: test_vbicq_u16
364 return vbicq_u16(a, b);
365 // CHECK: bic {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
366 }
367
test_vbic_u32(uint32x2_t a,uint32x2_t b)368 uint32x2_t test_vbic_u32(uint32x2_t a, uint32x2_t b) {
369 // CHECK-LABEL: test_vbic_u32
370 return vbic_u32(a, b);
371 // CHECK: bic {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
372 }
373
test_vbicq_u32(uint32x4_t a,uint32x4_t b)374 uint32x4_t test_vbicq_u32(uint32x4_t a, uint32x4_t b) {
375 // CHECK-LABEL: test_vbicq_u32
376 return vbicq_u32(a, b);
377 // CHECK: bic {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
378 }
379
test_vbic_u64(uint64x1_t a,uint64x1_t b)380 uint64x1_t test_vbic_u64(uint64x1_t a, uint64x1_t b) {
381 // CHECK-LABEL: test_vbic_u64
382 return vbic_u64(a, b);
383 // CHECK: bic {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
384 }
385
test_vbicq_u64(uint64x2_t a,uint64x2_t b)386 uint64x2_t test_vbicq_u64(uint64x2_t a, uint64x2_t b) {
387 // CHECK-LABEL: test_vbicq_u64
388 return vbicq_u64(a, b);
389 // CHECK: bic {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
390 }
391
test_vorn_s8(int8x8_t a,int8x8_t b)392 int8x8_t test_vorn_s8(int8x8_t a, int8x8_t b) {
393 // CHECK-LABEL: test_vorn_s8
394 return vorn_s8(a, b);
395 // CHECK: orn {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
396 }
397
test_vornq_s8(int8x16_t a,int8x16_t b)398 int8x16_t test_vornq_s8(int8x16_t a, int8x16_t b) {
399 // CHECK-LABEL: test_vornq_s8
400 return vornq_s8(a, b);
401 // CHECK: orn {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
402 }
403
test_vorn_s16(int16x4_t a,int16x4_t b)404 int16x4_t test_vorn_s16(int16x4_t a, int16x4_t b) {
405 // CHECK-LABEL: test_vorn_s16
406 return vorn_s16(a, b);
407 // CHECK: orn {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
408 }
409
test_vornq_s16(int16x8_t a,int16x8_t b)410 int16x8_t test_vornq_s16(int16x8_t a, int16x8_t b) {
411 // CHECK-LABEL: test_vornq_s16
412 return vornq_s16(a, b);
413 // CHECK: orn {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
414 }
415
test_vorn_s32(int32x2_t a,int32x2_t b)416 int32x2_t test_vorn_s32(int32x2_t a, int32x2_t b) {
417 // CHECK-LABEL: test_vorn_s32
418 return vorn_s32(a, b);
419 // CHECK: orn {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
420 }
421
test_vornq_s32(int32x4_t a,int32x4_t b)422 int32x4_t test_vornq_s32(int32x4_t a, int32x4_t b) {
423 // CHECK-LABEL: test_vornq_s32
424 return vornq_s32(a, b);
425 // CHECK: orn {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
426 }
427
test_vorn_s64(int64x1_t a,int64x1_t b)428 int64x1_t test_vorn_s64(int64x1_t a, int64x1_t b) {
429 // CHECK-LABEL: test_vorn_s64
430 return vorn_s64(a, b);
431 // CHECK: orn {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
432 }
433
test_vornq_s64(int64x2_t a,int64x2_t b)434 int64x2_t test_vornq_s64(int64x2_t a, int64x2_t b) {
435 // CHECK-LABEL: test_vornq_s64
436 return vornq_s64(a, b);
437 // CHECK: orn {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
438 }
439
test_vorn_u8(uint8x8_t a,uint8x8_t b)440 uint8x8_t test_vorn_u8(uint8x8_t a, uint8x8_t b) {
441 // CHECK-LABEL: test_vorn_u8
442 return vorn_u8(a, b);
443 // CHECK: orn {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
444 }
445
test_vornq_u8(uint8x16_t a,uint8x16_t b)446 uint8x16_t test_vornq_u8(uint8x16_t a, uint8x16_t b) {
447 // CHECK-LABEL: test_vornq_u8
448 return vornq_u8(a, b);
449 // CHECK: orn {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
450 }
451
test_vorn_u16(uint16x4_t a,uint16x4_t b)452 uint16x4_t test_vorn_u16(uint16x4_t a, uint16x4_t b) {
453 // CHECK-LABEL: test_vorn_u16
454 return vorn_u16(a, b);
455 // CHECK: orn {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
456 }
457
test_vornq_u16(uint16x8_t a,uint16x8_t b)458 uint16x8_t test_vornq_u16(uint16x8_t a, uint16x8_t b) {
459 // CHECK-LABEL: test_vornq_u16
460 return vornq_u16(a, b);
461 // CHECK: orn {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
462 }
463
test_vorn_u32(uint32x2_t a,uint32x2_t b)464 uint32x2_t test_vorn_u32(uint32x2_t a, uint32x2_t b) {
465 // CHECK-LABEL: test_vorn_u32
466 return vorn_u32(a, b);
467 // CHECK: orn {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
468 }
469
test_vornq_u32(uint32x4_t a,uint32x4_t b)470 uint32x4_t test_vornq_u32(uint32x4_t a, uint32x4_t b) {
471 // CHECK-LABEL: test_vornq_u32
472 return vornq_u32(a, b);
473 // CHECK: orn {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
474 }
475
test_vorn_u64(uint64x1_t a,uint64x1_t b)476 uint64x1_t test_vorn_u64(uint64x1_t a, uint64x1_t b) {
477 // CHECK-LABEL: test_vorn_u64
478 return vorn_u64(a, b);
479 // CHECK: orn {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
480 }
481
test_vornq_u64(uint64x2_t a,uint64x2_t b)482 uint64x2_t test_vornq_u64(uint64x2_t a, uint64x2_t b) {
483 // CHECK-LABEL: test_vornq_u64
484 return vornq_u64(a, b);
485 // CHECK: orn {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
486 }
487