1 // REQUIRES: aarch64-registered-target
2 // RUN: %clang_cc1 -triple arm64-none-linux-gnu -target-feature +neon \
3 // RUN: -ffp-contract=fast -S -O3 -o - %s | FileCheck %s
4
5 // Test new aarch64 intrinsics and types
6 #include <arm_neon.h>
7
test_vuzp1_s8(int8x8_t a,int8x8_t b)8 int8x8_t test_vuzp1_s8(int8x8_t a, int8x8_t b) {
9 // CHECK-LABEL: test_vuzp1_s8
10 return vuzp1_s8(a, b);
11 // CHECK: uzp1 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
12 }
13
test_vuzp1q_s8(int8x16_t a,int8x16_t b)14 int8x16_t test_vuzp1q_s8(int8x16_t a, int8x16_t b) {
15 // CHECK-LABEL: test_vuzp1q_s8
16 return vuzp1q_s8(a, b);
17 // CHECK: uzp1 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
18 }
19
test_vuzp1_s16(int16x4_t a,int16x4_t b)20 int16x4_t test_vuzp1_s16(int16x4_t a, int16x4_t b) {
21 // CHECK-LABEL: test_vuzp1_s16
22 return vuzp1_s16(a, b);
23 // CHECK: uzp1 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
24 }
25
test_vuzp1q_s16(int16x8_t a,int16x8_t b)26 int16x8_t test_vuzp1q_s16(int16x8_t a, int16x8_t b) {
27 // CHECK-LABEL: test_vuzp1q_s16
28 return vuzp1q_s16(a, b);
29 // CHECK: uzp1 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
30 }
31
test_vuzp1_s32(int32x2_t a,int32x2_t b)32 int32x2_t test_vuzp1_s32(int32x2_t a, int32x2_t b) {
33 // CHECK-LABEL: test_vuzp1_s32
34 return vuzp1_s32(a, b);
35 // CHECK: {{ins v[0-9]+.s\[1\], v[0-9]+.s\[0\]|zip1 v0.2s, v0.2s, v1.2s}}
36 }
37
test_vuzp1q_s32(int32x4_t a,int32x4_t b)38 int32x4_t test_vuzp1q_s32(int32x4_t a, int32x4_t b) {
39 // CHECK-LABEL: test_vuzp1q_s32
40 return vuzp1q_s32(a, b);
41 // CHECK: uzp1 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
42 }
43
test_vuzp1q_s64(int64x2_t a,int64x2_t b)44 int64x2_t test_vuzp1q_s64(int64x2_t a, int64x2_t b) {
45 // CHECK-LABEL: test_vuzp1q_s64
46 return vuzp1q_s64(a, b);
47 // CHECK: {{ins v[0-9]+.d\[1\], v[0-9]+.d\[0\]|zip1 v0.2d, v0.2d, v1.2d}}
48 }
49
test_vuzp1_u8(uint8x8_t a,uint8x8_t b)50 uint8x8_t test_vuzp1_u8(uint8x8_t a, uint8x8_t b) {
51 // CHECK-LABEL: test_vuzp1_u8
52 return vuzp1_u8(a, b);
53 // CHECK: uzp1 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
54 }
55
test_vuzp1q_u8(uint8x16_t a,uint8x16_t b)56 uint8x16_t test_vuzp1q_u8(uint8x16_t a, uint8x16_t b) {
57 // CHECK-LABEL: test_vuzp1q_u8
58 return vuzp1q_u8(a, b);
59 // CHECK: uzp1 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
60 }
61
test_vuzp1_u16(uint16x4_t a,uint16x4_t b)62 uint16x4_t test_vuzp1_u16(uint16x4_t a, uint16x4_t b) {
63 // CHECK-LABEL: test_vuzp1_u16
64 return vuzp1_u16(a, b);
65 // CHECK: uzp1 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
66 }
67
test_vuzp1q_u16(uint16x8_t a,uint16x8_t b)68 uint16x8_t test_vuzp1q_u16(uint16x8_t a, uint16x8_t b) {
69 // CHECK-LABEL: test_vuzp1q_u16
70 return vuzp1q_u16(a, b);
71 // CHECK: uzp1 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
72 }
73
test_vuzp1_u32(uint32x2_t a,uint32x2_t b)74 uint32x2_t test_vuzp1_u32(uint32x2_t a, uint32x2_t b) {
75 // CHECK-LABEL: test_vuzp1_u32
76 return vuzp1_u32(a, b);
77 // CHECK: {{ins v[0-9]+.s\[1\], v[0-9]+.s\[0\]|zip1 v0.2s, v0.2s, v1.2s}}
78 }
79
test_vuzp1q_u32(uint32x4_t a,uint32x4_t b)80 uint32x4_t test_vuzp1q_u32(uint32x4_t a, uint32x4_t b) {
81 // CHECK-LABEL: test_vuzp1q_u32
82 return vuzp1q_u32(a, b);
83 // CHECK: uzp1 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
84 }
85
test_vuzp1q_u64(uint64x2_t a,uint64x2_t b)86 uint64x2_t test_vuzp1q_u64(uint64x2_t a, uint64x2_t b) {
87 // CHECK-LABEL: test_vuzp1q_u64
88 return vuzp1q_u64(a, b);
89 // CHECK: {{ins v[0-9]+.d\[1\], v[0-9]+.d\[0\]|zip1 v0.2d, v0.2d, v1.2d}}
90 }
91
test_vuzp1_f32(float32x2_t a,float32x2_t b)92 float32x2_t test_vuzp1_f32(float32x2_t a, float32x2_t b) {
93 // CHECK-LABEL: test_vuzp1_f32
94 return vuzp1_f32(a, b);
95 // CHECK: {{ins v[0-9]+.s\[1\], v[0-9]+.s\[0\]|zip1 v0.2s, v0.2s, v1.2s}}
96 }
97
test_vuzp1q_f32(float32x4_t a,float32x4_t b)98 float32x4_t test_vuzp1q_f32(float32x4_t a, float32x4_t b) {
99 // CHECK-LABEL: test_vuzp1q_f32
100 return vuzp1q_f32(a, b);
101 // CHECK: uzp1 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
102 }
103
test_vuzp1q_f64(float64x2_t a,float64x2_t b)104 float64x2_t test_vuzp1q_f64(float64x2_t a, float64x2_t b) {
105 // CHECK-LABEL: test_vuzp1q_f64
106 return vuzp1q_f64(a, b);
107 // CHECK: {{ins v[0-9]+.d\[1\], v[0-9]+.d\[0\]|zip1 v0.2d, v0.2d, v1.2d}}
108 }
109
test_vuzp1_p8(poly8x8_t a,poly8x8_t b)110 poly8x8_t test_vuzp1_p8(poly8x8_t a, poly8x8_t b) {
111 // CHECK-LABEL: test_vuzp1_p8
112 return vuzp1_p8(a, b);
113 // CHECK: uzp1 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
114 }
115
test_vuzp1q_p8(poly8x16_t a,poly8x16_t b)116 poly8x16_t test_vuzp1q_p8(poly8x16_t a, poly8x16_t b) {
117 // CHECK-LABEL: test_vuzp1q_p8
118 return vuzp1q_p8(a, b);
119 // CHECK: uzp1 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
120 }
121
test_vuzp1_p16(poly16x4_t a,poly16x4_t b)122 poly16x4_t test_vuzp1_p16(poly16x4_t a, poly16x4_t b) {
123 // CHECK-LABEL: test_vuzp1_p16
124 return vuzp1_p16(a, b);
125 // CHECK: uzp1 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
126 }
127
test_vuzp1q_p16(poly16x8_t a,poly16x8_t b)128 poly16x8_t test_vuzp1q_p16(poly16x8_t a, poly16x8_t b) {
129 // CHECK-LABEL: test_vuzp1q_p16
130 return vuzp1q_p16(a, b);
131 // CHECK: uzp1 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
132 }
133
test_vuzp2_s8(int8x8_t a,int8x8_t b)134 int8x8_t test_vuzp2_s8(int8x8_t a, int8x8_t b) {
135 // CHECK-LABEL: test_vuzp2_s8
136 return vuzp2_s8(a, b);
137 // CHECK: uzp2 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
138 }
139
test_vuzp2q_s8(int8x16_t a,int8x16_t b)140 int8x16_t test_vuzp2q_s8(int8x16_t a, int8x16_t b) {
141 // CHECK-LABEL: test_vuzp2q_s8
142 return vuzp2q_s8(a, b);
143 // CHECK: uzp2 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
144 }
145
test_vuzp2_s16(int16x4_t a,int16x4_t b)146 int16x4_t test_vuzp2_s16(int16x4_t a, int16x4_t b) {
147 // CHECK-LABEL: test_vuzp2_s16
148 return vuzp2_s16(a, b);
149 // CHECK: uzp2 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
150 }
151
test_vuzp2q_s16(int16x8_t a,int16x8_t b)152 int16x8_t test_vuzp2q_s16(int16x8_t a, int16x8_t b) {
153 // CHECK-LABEL: test_vuzp2q_s16
154 return vuzp2q_s16(a, b);
155 // CHECK: uzp2 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
156 }
157
test_vuzp2_s32(int32x2_t a,int32x2_t b)158 int32x2_t test_vuzp2_s32(int32x2_t a, int32x2_t b) {
159 // CHECK-LABEL: test_vuzp2_s32
160 return vuzp2_s32(a, b);
161 // CHECK: {{ins v[0-9]+.s\[0\], v[0-9]+.s\[1\]|zip2 v0.2s, v0.2s, v1.2s}}
162 }
163
test_vuzp2q_s32(int32x4_t a,int32x4_t b)164 int32x4_t test_vuzp2q_s32(int32x4_t a, int32x4_t b) {
165 // CHECK-LABEL: test_vuzp2q_s32
166 return vuzp2q_s32(a, b);
167 // CHECK: uzp2 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
168 }
169
test_vuzp2q_s64(int64x2_t a,int64x2_t b)170 int64x2_t test_vuzp2q_s64(int64x2_t a, int64x2_t b) {
171 // CHECK-LABEL: test_vuzp2q_s64
172 return vuzp2q_s64(a, b);
173 // CHECK: {{ins v[0-9]+.d\[0\], v[0-9]+.d\[1\]|zip2 v0.2d, v0.2d, v1.2d}}
174 }
175
test_vuzp2_u8(uint8x8_t a,uint8x8_t b)176 uint8x8_t test_vuzp2_u8(uint8x8_t a, uint8x8_t b) {
177 // CHECK-LABEL: test_vuzp2_u8
178 return vuzp2_u8(a, b);
179 // CHECK: uzp2 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
180 }
181
test_vuzp2q_u8(uint8x16_t a,uint8x16_t b)182 uint8x16_t test_vuzp2q_u8(uint8x16_t a, uint8x16_t b) {
183 // CHECK-LABEL: test_vuzp2q_u8
184 return vuzp2q_u8(a, b);
185 // CHECK: uzp2 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
186 }
187
test_vuzp2_u16(uint16x4_t a,uint16x4_t b)188 uint16x4_t test_vuzp2_u16(uint16x4_t a, uint16x4_t b) {
189 // CHECK-LABEL: test_vuzp2_u16
190 return vuzp2_u16(a, b);
191 // CHECK: uzp2 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
192 }
193
test_vuzp2q_u16(uint16x8_t a,uint16x8_t b)194 uint16x8_t test_vuzp2q_u16(uint16x8_t a, uint16x8_t b) {
195 // CHECK-LABEL: test_vuzp2q_u16
196 return vuzp2q_u16(a, b);
197 // CHECK: uzp2 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
198 }
199
test_vuzp2_u32(uint32x2_t a,uint32x2_t b)200 uint32x2_t test_vuzp2_u32(uint32x2_t a, uint32x2_t b) {
201 // CHECK-LABEL: test_vuzp2_u32
202 return vuzp2_u32(a, b);
203 // CHECK: {{ins v[0-9]+.s\[0\], v[0-9]+.s\[1\]|zip2 v0.2s, v0.2s, v1.2s}}
204 }
205
test_vuzp2q_u32(uint32x4_t a,uint32x4_t b)206 uint32x4_t test_vuzp2q_u32(uint32x4_t a, uint32x4_t b) {
207 // CHECK-LABEL: test_vuzp2q_u32
208 return vuzp2q_u32(a, b);
209 // CHECK: uzp2 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
210 }
211
test_vuzp2q_u64(uint64x2_t a,uint64x2_t b)212 uint64x2_t test_vuzp2q_u64(uint64x2_t a, uint64x2_t b) {
213 // CHECK-LABEL: test_vuzp2q_u64
214 return vuzp2q_u64(a, b);
215 // CHECK: {{ins v[0-9]+.d\[0\], v[0-9]+.d\[1\]|zip2 v0.2d, v0.2d, v1.2d}}
216 }
217
test_vuzp2_f32(float32x2_t a,float32x2_t b)218 float32x2_t test_vuzp2_f32(float32x2_t a, float32x2_t b) {
219 // CHECK-LABEL: test_vuzp2_f32
220 return vuzp2_f32(a, b);
221 // CHECK: {{ins v[0-9]+.s\[0\], v[0-9]+.s\[1\]|zip2 v0.2s, v0.2s, v1.2s}}
222 }
223
test_vuzp2q_f32(float32x4_t a,float32x4_t b)224 float32x4_t test_vuzp2q_f32(float32x4_t a, float32x4_t b) {
225 // CHECK-LABEL: test_vuzp2q_f32
226 return vuzp2q_f32(a, b);
227 // CHECK: uzp2 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
228 }
229
test_vuzp2q_f64(float64x2_t a,float64x2_t b)230 float64x2_t test_vuzp2q_f64(float64x2_t a, float64x2_t b) {
231 // CHECK-LABEL: test_vuzp2q_f64
232 return vuzp2q_f64(a, b);
233 // CHECK: {{ins v[0-9]+.d\[0\], v[0-9]+.d\[1\]|zip2 v0.2d, v0.2d, v1.2d}}
234 }
235
test_vuzp2_p8(poly8x8_t a,poly8x8_t b)236 poly8x8_t test_vuzp2_p8(poly8x8_t a, poly8x8_t b) {
237 // CHECK-LABEL: test_vuzp2_p8
238 return vuzp2_p8(a, b);
239 // CHECK: uzp2 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
240 }
241
test_vuzp2q_p8(poly8x16_t a,poly8x16_t b)242 poly8x16_t test_vuzp2q_p8(poly8x16_t a, poly8x16_t b) {
243 // CHECK-LABEL: test_vuzp2q_p8
244 return vuzp2q_p8(a, b);
245 // CHECK: uzp2 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
246 }
247
test_vuzp2_p16(poly16x4_t a,poly16x4_t b)248 poly16x4_t test_vuzp2_p16(poly16x4_t a, poly16x4_t b) {
249 // CHECK-LABEL: test_vuzp2_p16
250 return vuzp2_p16(a, b);
251 // CHECK: uzp2 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
252 }
253
test_vuzp2q_p16(poly16x8_t a,poly16x8_t b)254 poly16x8_t test_vuzp2q_p16(poly16x8_t a, poly16x8_t b) {
255 // CHECK-LABEL: test_vuzp2q_p16
256 return vuzp2q_p16(a, b);
257 // CHECK: uzp2 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
258 }
259
test_vzip1_s8(int8x8_t a,int8x8_t b)260 int8x8_t test_vzip1_s8(int8x8_t a, int8x8_t b) {
261 // CHECK-LABEL: test_vzip1_s8
262 return vzip1_s8(a, b);
263 // CHECK: zip1 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
264 }
265
test_vzip1q_s8(int8x16_t a,int8x16_t b)266 int8x16_t test_vzip1q_s8(int8x16_t a, int8x16_t b) {
267 // CHECK-LABEL: test_vzip1q_s8
268 return vzip1q_s8(a, b);
269 // CHECK: zip1 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
270 }
271
test_vzip1_s16(int16x4_t a,int16x4_t b)272 int16x4_t test_vzip1_s16(int16x4_t a, int16x4_t b) {
273 // CHECK-LABEL: test_vzip1_s16
274 return vzip1_s16(a, b);
275 // CHECK: zip1 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
276 }
277
test_vzip1q_s16(int16x8_t a,int16x8_t b)278 int16x8_t test_vzip1q_s16(int16x8_t a, int16x8_t b) {
279 // CHECK-LABEL: test_vzip1q_s16
280 return vzip1q_s16(a, b);
281 // CHECK: zip1 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
282 }
283
test_vzip1_s32(int32x2_t a,int32x2_t b)284 int32x2_t test_vzip1_s32(int32x2_t a, int32x2_t b) {
285 // CHECK-LABEL: test_vzip1_s32
286 return vzip1_s32(a, b);
287 // CHECK: {{ins v[0-9]+.s\[1\], v[0-9]+.s\[0\]|zip1 v0.2s, v0.2s, v1.2s}}
288 }
289
test_vzip1q_s32(int32x4_t a,int32x4_t b)290 int32x4_t test_vzip1q_s32(int32x4_t a, int32x4_t b) {
291 // CHECK-LABEL: test_vzip1q_s32
292 return vzip1q_s32(a, b);
293 // CHECK: zip1 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
294 }
295
test_vzip1q_s64(int64x2_t a,int64x2_t b)296 int64x2_t test_vzip1q_s64(int64x2_t a, int64x2_t b) {
297 // CHECK-LABEL: test_vzip1q_s64
298 return vzip1q_s64(a, b);
299 // CHECK: {{ins v[0-9]+.d\[1\], v[0-9]+.d\[0\]|zip1 v0.2d, v0.2d, v1.2d}}
300 }
301
test_vzip1_u8(uint8x8_t a,uint8x8_t b)302 uint8x8_t test_vzip1_u8(uint8x8_t a, uint8x8_t b) {
303 // CHECK-LABEL: test_vzip1_u8
304 return vzip1_u8(a, b);
305 // CHECK: zip1 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
306 }
307
test_vzip1q_u8(uint8x16_t a,uint8x16_t b)308 uint8x16_t test_vzip1q_u8(uint8x16_t a, uint8x16_t b) {
309 // CHECK-LABEL: test_vzip1q_u8
310 return vzip1q_u8(a, b);
311 // CHECK: zip1 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
312 }
313
test_vzip1_u16(uint16x4_t a,uint16x4_t b)314 uint16x4_t test_vzip1_u16(uint16x4_t a, uint16x4_t b) {
315 // CHECK-LABEL: test_vzip1_u16
316 return vzip1_u16(a, b);
317 // CHECK: zip1 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
318 }
319
test_vzip1q_u16(uint16x8_t a,uint16x8_t b)320 uint16x8_t test_vzip1q_u16(uint16x8_t a, uint16x8_t b) {
321 // CHECK-LABEL: test_vzip1q_u16
322 return vzip1q_u16(a, b);
323 // CHECK: zip1 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
324 }
325
test_vzip1_u32(uint32x2_t a,uint32x2_t b)326 uint32x2_t test_vzip1_u32(uint32x2_t a, uint32x2_t b) {
327 // CHECK-LABEL: test_vzip1_u32
328 return vzip1_u32(a, b);
329 // CHECK: {{ins v[0-9]+.s\[1\], v[0-9]+.s\[0\]|zip1 v0.2s, v0.2s, v1.2s}}
330 }
331
test_vzip1q_u32(uint32x4_t a,uint32x4_t b)332 uint32x4_t test_vzip1q_u32(uint32x4_t a, uint32x4_t b) {
333 // CHECK-LABEL: test_vzip1q_u32
334 return vzip1q_u32(a, b);
335 // CHECK: zip1 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
336 }
337
test_vzip1q_u64(uint64x2_t a,uint64x2_t b)338 uint64x2_t test_vzip1q_u64(uint64x2_t a, uint64x2_t b) {
339 // CHECK-LABEL: test_vzip1q_u64
340 return vzip1q_u64(a, b);
341 // CHECK: {{ins v[0-9]+.d\[1\], v[0-9]+.d\[0\]|zip1 v0.2d, v0.2d, v1.2d}}
342 }
343
test_vzip1_f32(float32x2_t a,float32x2_t b)344 float32x2_t test_vzip1_f32(float32x2_t a, float32x2_t b) {
345 // CHECK-LABEL: test_vzip1_f32
346 return vzip1_f32(a, b);
347 // CHECK: {{ins v[0-9]+.s\[1\], v[0-9]+.s\[0\]|zip1 v0.2s, v0.2s, v1.2s}}
348 }
349
test_vzip1q_f32(float32x4_t a,float32x4_t b)350 float32x4_t test_vzip1q_f32(float32x4_t a, float32x4_t b) {
351 // CHECK-LABEL: test_vzip1q_f32
352 return vzip1q_f32(a, b);
353 // CHECK: zip1 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
354 }
355
test_vzip1q_f64(float64x2_t a,float64x2_t b)356 float64x2_t test_vzip1q_f64(float64x2_t a, float64x2_t b) {
357 // CHECK-LABEL: test_vzip1q_f64
358 return vzip1q_f64(a, b);
359 // CHECK: {{ins v[0-9]+.d\[1\], v[0-9]+.d\[0\]|zip1 v0.2d, v0.2d, v1.2d}}
360 }
361
test_vzip1_p8(poly8x8_t a,poly8x8_t b)362 poly8x8_t test_vzip1_p8(poly8x8_t a, poly8x8_t b) {
363 // CHECK-LABEL: test_vzip1_p8
364 return vzip1_p8(a, b);
365 // CHECK: zip1 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
366 }
367
test_vzip1q_p8(poly8x16_t a,poly8x16_t b)368 poly8x16_t test_vzip1q_p8(poly8x16_t a, poly8x16_t b) {
369 // CHECK-LABEL: test_vzip1q_p8
370 return vzip1q_p8(a, b);
371 // CHECK: zip1 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
372 }
373
test_vzip1_p16(poly16x4_t a,poly16x4_t b)374 poly16x4_t test_vzip1_p16(poly16x4_t a, poly16x4_t b) {
375 // CHECK-LABEL: test_vzip1_p16
376 return vzip1_p16(a, b);
377 // CHECK: zip1 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
378 }
379
test_vzip1q_p16(poly16x8_t a,poly16x8_t b)380 poly16x8_t test_vzip1q_p16(poly16x8_t a, poly16x8_t b) {
381 // CHECK-LABEL: test_vzip1q_p16
382 return vzip1q_p16(a, b);
383 // CHECK: zip1 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
384 }
385
test_vzip2_s8(int8x8_t a,int8x8_t b)386 int8x8_t test_vzip2_s8(int8x8_t a, int8x8_t b) {
387 // CHECK-LABEL: test_vzip2_s8
388 return vzip2_s8(a, b);
389 // CHECK: zip2 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
390 }
391
test_vzip2q_s8(int8x16_t a,int8x16_t b)392 int8x16_t test_vzip2q_s8(int8x16_t a, int8x16_t b) {
393 // CHECK-LABEL: test_vzip2q_s8
394 return vzip2q_s8(a, b);
395 // CHECK: zip2 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
396 }
397
test_vzip2_s16(int16x4_t a,int16x4_t b)398 int16x4_t test_vzip2_s16(int16x4_t a, int16x4_t b) {
399 // CHECK-LABEL: test_vzip2_s16
400 return vzip2_s16(a, b);
401 // CHECK: zip2 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
402 }
403
test_vzip2q_s16(int16x8_t a,int16x8_t b)404 int16x8_t test_vzip2q_s16(int16x8_t a, int16x8_t b) {
405 // CHECK-LABEL: test_vzip2q_s16
406 return vzip2q_s16(a, b);
407 // CHECK: zip2 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
408 }
409
test_vzip2_s32(int32x2_t a,int32x2_t b)410 int32x2_t test_vzip2_s32(int32x2_t a, int32x2_t b) {
411 // CHECK-LABEL: test_vzip2_s32
412 return vzip2_s32(a, b);
413 // CHECK: {{ins v[0-9]+.s\[0\], v[0-9]+.s\[1\]|zip2 v0.2s, v0.2s, v1.2s}}
414 }
415
test_vzip2q_s32(int32x4_t a,int32x4_t b)416 int32x4_t test_vzip2q_s32(int32x4_t a, int32x4_t b) {
417 // CHECK-LABEL: test_vzip2q_s32
418 return vzip2q_s32(a, b);
419 // CHECK: zip2 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
420 }
421
test_vzip2q_s64(int64x2_t a,int64x2_t b)422 int64x2_t test_vzip2q_s64(int64x2_t a, int64x2_t b) {
423 // CHECK-LABEL: test_vzip2q_s64
424 return vzip2q_s64(a, b);
425 // CHECK: {{ins v[0-9]+.d\[0\], v[0-9]+.d\[1\]|zip2 v0.2d, v0.2d, v1.2d}}
426 }
427
test_vzip2_u8(uint8x8_t a,uint8x8_t b)428 uint8x8_t test_vzip2_u8(uint8x8_t a, uint8x8_t b) {
429 // CHECK-LABEL: test_vzip2_u8
430 return vzip2_u8(a, b);
431 // CHECK: zip2 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
432 }
433
test_vzip2q_u8(uint8x16_t a,uint8x16_t b)434 uint8x16_t test_vzip2q_u8(uint8x16_t a, uint8x16_t b) {
435 // CHECK-LABEL: test_vzip2q_u8
436 return vzip2q_u8(a, b);
437 // CHECK: zip2 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
438 }
439
test_vzip2_u16(uint16x4_t a,uint16x4_t b)440 uint16x4_t test_vzip2_u16(uint16x4_t a, uint16x4_t b) {
441 // CHECK-LABEL: test_vzip2_u16
442 return vzip2_u16(a, b);
443 // CHECK: zip2 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
444 }
445
test_vzip2q_u16(uint16x8_t a,uint16x8_t b)446 uint16x8_t test_vzip2q_u16(uint16x8_t a, uint16x8_t b) {
447 // CHECK-LABEL: test_vzip2q_u16
448 return vzip2q_u16(a, b);
449 // CHECK: zip2 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
450 }
451
test_vzip2_u32(uint32x2_t a,uint32x2_t b)452 uint32x2_t test_vzip2_u32(uint32x2_t a, uint32x2_t b) {
453 // CHECK-LABEL: test_vzip2_u32
454 return vzip2_u32(a, b);
455 // CHECK: {{ins v[0-9]+.s\[0\], v[0-9]+.s\[1\]|zip2 v0.2s, v0.2s, v1.2s}}
456 }
457
test_vzip2q_u32(uint32x4_t a,uint32x4_t b)458 uint32x4_t test_vzip2q_u32(uint32x4_t a, uint32x4_t b) {
459 // CHECK-LABEL: test_vzip2q_u32
460 return vzip2q_u32(a, b);
461 // CHECK: zip2 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
462 }
463
test_vzip2q_u64(uint64x2_t a,uint64x2_t b)464 uint64x2_t test_vzip2q_u64(uint64x2_t a, uint64x2_t b) {
465 // CHECK-LABEL: test_vzip2q_u64
466 return vzip2q_u64(a, b);
467 // CHECK: {{ins v[0-9]+.d\[0\], v[0-9]+.d\[1\]|zip2 v0.2d, v0.2d, v1.2d}}
468 }
469
test_vzip2_f32(float32x2_t a,float32x2_t b)470 float32x2_t test_vzip2_f32(float32x2_t a, float32x2_t b) {
471 // CHECK-LABEL: test_vzip2_f32
472 return vzip2_f32(a, b);
473 // CHECK: {{ins v[0-9]+.s\[0\], v[0-9]+.s\[1\]|zip2 v0.2s, v0.2s, v1.2s}}
474 }
475
test_vzip2q_f32(float32x4_t a,float32x4_t b)476 float32x4_t test_vzip2q_f32(float32x4_t a, float32x4_t b) {
477 // CHECK-LABEL: test_vzip2q_f32
478 return vzip2q_f32(a, b);
479 // CHECK: zip2 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
480 }
481
test_vzip2q_f64(float64x2_t a,float64x2_t b)482 float64x2_t test_vzip2q_f64(float64x2_t a, float64x2_t b) {
483 // CHECK-LABEL: test_vzip2q_f64
484 return vzip2q_f64(a, b);
485 // CHECK: {{ins v[0-9]+.d\[0\], v[0-9]+.d\[1\]|zip2 v0.2d, v0.2d, v1.2d}}
486 }
487
test_vzip2_p8(poly8x8_t a,poly8x8_t b)488 poly8x8_t test_vzip2_p8(poly8x8_t a, poly8x8_t b) {
489 // CHECK-LABEL: test_vzip2_p8
490 return vzip2_p8(a, b);
491 // CHECK: zip2 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
492 }
493
test_vzip2q_p8(poly8x16_t a,poly8x16_t b)494 poly8x16_t test_vzip2q_p8(poly8x16_t a, poly8x16_t b) {
495 // CHECK-LABEL: test_vzip2q_p8
496 return vzip2q_p8(a, b);
497 // CHECK: zip2 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
498 }
499
test_vzip2_p16(poly16x4_t a,poly16x4_t b)500 poly16x4_t test_vzip2_p16(poly16x4_t a, poly16x4_t b) {
501 // CHECK-LABEL: test_vzip2_p16
502 return vzip2_p16(a, b);
503 // CHECK: zip2 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
504 }
505
test_vzip2q_p16(poly16x8_t a,poly16x8_t b)506 poly16x8_t test_vzip2q_p16(poly16x8_t a, poly16x8_t b) {
507 // CHECK-LABEL: test_vzip2q_p16
508 return vzip2q_p16(a, b);
509 // CHECK: zip2 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
510 }
511
test_vtrn1_s8(int8x8_t a,int8x8_t b)512 int8x8_t test_vtrn1_s8(int8x8_t a, int8x8_t b) {
513 // CHECK-LABEL: test_vtrn1_s8
514 return vtrn1_s8(a, b);
515 // CHECK: trn1 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
516 }
517
test_vtrn1q_s8(int8x16_t a,int8x16_t b)518 int8x16_t test_vtrn1q_s8(int8x16_t a, int8x16_t b) {
519 // CHECK-LABEL: test_vtrn1q_s8
520 return vtrn1q_s8(a, b);
521 // CHECK: trn1 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
522 }
523
test_vtrn1_s16(int16x4_t a,int16x4_t b)524 int16x4_t test_vtrn1_s16(int16x4_t a, int16x4_t b) {
525 // CHECK-LABEL: test_vtrn1_s16
526 return vtrn1_s16(a, b);
527 // CHECK: trn1 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
528 }
529
test_vtrn1q_s16(int16x8_t a,int16x8_t b)530 int16x8_t test_vtrn1q_s16(int16x8_t a, int16x8_t b) {
531 // CHECK-LABEL: test_vtrn1q_s16
532 return vtrn1q_s16(a, b);
533 // CHECK: trn1 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
534 }
535
test_vtrn1_s32(int32x2_t a,int32x2_t b)536 int32x2_t test_vtrn1_s32(int32x2_t a, int32x2_t b) {
537 // CHECK-LABEL: test_vtrn1_s32
538 return vtrn1_s32(a, b);
539 // CHECK: {{ins v[0-9]+.s\[1\], v[0-9]+.s\[0\]|zip1 v0.2s, v0.2s, v1.2s}}
540 }
541
test_vtrn1q_s32(int32x4_t a,int32x4_t b)542 int32x4_t test_vtrn1q_s32(int32x4_t a, int32x4_t b) {
543 // CHECK-LABEL: test_vtrn1q_s32
544 return vtrn1q_s32(a, b);
545 // CHECK: trn1 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
546 }
547
test_vtrn1q_s64(int64x2_t a,int64x2_t b)548 int64x2_t test_vtrn1q_s64(int64x2_t a, int64x2_t b) {
549 // CHECK-LABEL: test_vtrn1q_s64
550 return vtrn1q_s64(a, b);
551 // CHECK: {{ins v[0-9]+.d\[1\], v[0-9]+.d\[0\]|zip1 v0.2d, v0.2d, v1.2d}}
552 }
553
test_vtrn1_u8(uint8x8_t a,uint8x8_t b)554 uint8x8_t test_vtrn1_u8(uint8x8_t a, uint8x8_t b) {
555 // CHECK-LABEL: test_vtrn1_u8
556 return vtrn1_u8(a, b);
557 // CHECK: trn1 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
558 }
559
test_vtrn1q_u8(uint8x16_t a,uint8x16_t b)560 uint8x16_t test_vtrn1q_u8(uint8x16_t a, uint8x16_t b) {
561 // CHECK-LABEL: test_vtrn1q_u8
562 return vtrn1q_u8(a, b);
563 // CHECK: trn1 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
564 }
565
test_vtrn1_u16(uint16x4_t a,uint16x4_t b)566 uint16x4_t test_vtrn1_u16(uint16x4_t a, uint16x4_t b) {
567 // CHECK-LABEL: test_vtrn1_u16
568 return vtrn1_u16(a, b);
569 // CHECK: trn1 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
570 }
571
test_vtrn1q_u16(uint16x8_t a,uint16x8_t b)572 uint16x8_t test_vtrn1q_u16(uint16x8_t a, uint16x8_t b) {
573 // CHECK-LABEL: test_vtrn1q_u16
574 return vtrn1q_u16(a, b);
575 // CHECK: trn1 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
576 }
577
test_vtrn1_u32(uint32x2_t a,uint32x2_t b)578 uint32x2_t test_vtrn1_u32(uint32x2_t a, uint32x2_t b) {
579 // CHECK-LABEL: test_vtrn1_u32
580 return vtrn1_u32(a, b);
581 // CHECK: {{ins v[0-9]+.s\[1\], v[0-9]+.s\[0\]|zip1 v0.2s, v0.2s, v1.2s}}
582 }
583
test_vtrn1q_u32(uint32x4_t a,uint32x4_t b)584 uint32x4_t test_vtrn1q_u32(uint32x4_t a, uint32x4_t b) {
585 // CHECK-LABEL: test_vtrn1q_u32
586 return vtrn1q_u32(a, b);
587 // CHECK: trn1 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
588 }
589
test_vtrn1q_u64(uint64x2_t a,uint64x2_t b)590 uint64x2_t test_vtrn1q_u64(uint64x2_t a, uint64x2_t b) {
591 // CHECK-LABEL: test_vtrn1q_u64
592 return vtrn1q_u64(a, b);
593 // CHECK: {{ins v[0-9]+.d\[1\], v[0-9]+.d\[0\]|zip1 v0.2d, v0.2d, v1.2d}}
594 }
595
test_vtrn1_f32(float32x2_t a,float32x2_t b)596 float32x2_t test_vtrn1_f32(float32x2_t a, float32x2_t b) {
597 // CHECK-LABEL: test_vtrn1_f32
598 return vtrn1_f32(a, b);
599 // CHECK: {{ins v[0-9]+.s\[1\], v[0-9]+.s\[0\]|zip1 v0.2s, v0.2s, v1.2s}}
600 }
601
test_vtrn1q_f32(float32x4_t a,float32x4_t b)602 float32x4_t test_vtrn1q_f32(float32x4_t a, float32x4_t b) {
603 // CHECK-LABEL: test_vtrn1q_f32
604 return vtrn1q_f32(a, b);
605 // CHECK: trn1 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
606 }
607
test_vtrn1q_f64(float64x2_t a,float64x2_t b)608 float64x2_t test_vtrn1q_f64(float64x2_t a, float64x2_t b) {
609 // CHECK-LABEL: test_vtrn1q_f64
610 return vtrn1q_f64(a, b);
611 // CHECK: {{ins v[0-9]+.d\[1\], v[0-9]+.d\[0\]|zip1 v0.2d, v0.2d, v1.2d}}
612 }
613
test_vtrn1_p8(poly8x8_t a,poly8x8_t b)614 poly8x8_t test_vtrn1_p8(poly8x8_t a, poly8x8_t b) {
615 // CHECK-LABEL: test_vtrn1_p8
616 return vtrn1_p8(a, b);
617 // CHECK: trn1 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
618 }
619
test_vtrn1q_p8(poly8x16_t a,poly8x16_t b)620 poly8x16_t test_vtrn1q_p8(poly8x16_t a, poly8x16_t b) {
621 // CHECK-LABEL: test_vtrn1q_p8
622 return vtrn1q_p8(a, b);
623 // CHECK: trn1 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
624 }
625
test_vtrn1_p16(poly16x4_t a,poly16x4_t b)626 poly16x4_t test_vtrn1_p16(poly16x4_t a, poly16x4_t b) {
627 // CHECK-LABEL: test_vtrn1_p16
628 return vtrn1_p16(a, b);
629 // CHECK: trn1 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
630 }
631
test_vtrn1q_p16(poly16x8_t a,poly16x8_t b)632 poly16x8_t test_vtrn1q_p16(poly16x8_t a, poly16x8_t b) {
633 // CHECK-LABEL: test_vtrn1q_p16
634 return vtrn1q_p16(a, b);
635 // CHECK: trn1 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
636 }
637
test_vtrn2_s8(int8x8_t a,int8x8_t b)638 int8x8_t test_vtrn2_s8(int8x8_t a, int8x8_t b) {
639 // CHECK-LABEL: test_vtrn2_s8
640 return vtrn2_s8(a, b);
641 // CHECK: trn2 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
642 }
643
test_vtrn2q_s8(int8x16_t a,int8x16_t b)644 int8x16_t test_vtrn2q_s8(int8x16_t a, int8x16_t b) {
645 // CHECK-LABEL: test_vtrn2q_s8
646 return vtrn2q_s8(a, b);
647 // CHECK: trn2 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
648 }
649
test_vtrn2_s16(int16x4_t a,int16x4_t b)650 int16x4_t test_vtrn2_s16(int16x4_t a, int16x4_t b) {
651 // CHECK-LABEL: test_vtrn2_s16
652 return vtrn2_s16(a, b);
653 // CHECK: trn2 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
654 }
655
test_vtrn2q_s16(int16x8_t a,int16x8_t b)656 int16x8_t test_vtrn2q_s16(int16x8_t a, int16x8_t b) {
657 // CHECK-LABEL: test_vtrn2q_s16
658 return vtrn2q_s16(a, b);
659 // CHECK: trn2 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
660 }
661
test_vtrn2_s32(int32x2_t a,int32x2_t b)662 int32x2_t test_vtrn2_s32(int32x2_t a, int32x2_t b) {
663 // CHECK-LABEL: test_vtrn2_s32
664 return vtrn2_s32(a, b);
665 // CHECK: {{ins v[0-9]+.s\[0\], v[0-9]+.s\[1\]|zip2 v0.2s, v0.2s, v1.2s}}
666 }
667
test_vtrn2q_s32(int32x4_t a,int32x4_t b)668 int32x4_t test_vtrn2q_s32(int32x4_t a, int32x4_t b) {
669 // CHECK-LABEL: test_vtrn2q_s32
670 return vtrn2q_s32(a, b);
671 // CHECK: trn2 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
672 }
673
test_vtrn2q_s64(int64x2_t a,int64x2_t b)674 int64x2_t test_vtrn2q_s64(int64x2_t a, int64x2_t b) {
675 // CHECK-LABEL: test_vtrn2q_s64
676 return vtrn2q_s64(a, b);
677 // CHECK: {{ins v[0-9]+.d\[0\], v[0-9]+.d\[1\]|zip2 v0.2d, v0.2d, v1.2d}}
678 }
679
test_vtrn2_u8(uint8x8_t a,uint8x8_t b)680 uint8x8_t test_vtrn2_u8(uint8x8_t a, uint8x8_t b) {
681 // CHECK-LABEL: test_vtrn2_u8
682 return vtrn2_u8(a, b);
683 // CHECK: trn2 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
684 }
685
test_vtrn2q_u8(uint8x16_t a,uint8x16_t b)686 uint8x16_t test_vtrn2q_u8(uint8x16_t a, uint8x16_t b) {
687 // CHECK-LABEL: test_vtrn2q_u8
688 return vtrn2q_u8(a, b);
689 // CHECK: trn2 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
690 }
691
test_vtrn2_u16(uint16x4_t a,uint16x4_t b)692 uint16x4_t test_vtrn2_u16(uint16x4_t a, uint16x4_t b) {
693 // CHECK-LABEL: test_vtrn2_u16
694 return vtrn2_u16(a, b);
695 // CHECK: trn2 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
696 }
697
test_vtrn2q_u16(uint16x8_t a,uint16x8_t b)698 uint16x8_t test_vtrn2q_u16(uint16x8_t a, uint16x8_t b) {
699 // CHECK-LABEL: test_vtrn2q_u16
700 return vtrn2q_u16(a, b);
701 // CHECK: trn2 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
702 }
703
test_vtrn2_u32(uint32x2_t a,uint32x2_t b)704 uint32x2_t test_vtrn2_u32(uint32x2_t a, uint32x2_t b) {
705 // CHECK-LABEL: test_vtrn2_u32
706 return vtrn2_u32(a, b);
707 // CHECK: {{ins v[0-9]+.s\[0\], v[0-9]+.s\[1\]|zip2 v0.2s, v0.2s, v1.2s}}
708 }
709
test_vtrn2q_u32(uint32x4_t a,uint32x4_t b)710 uint32x4_t test_vtrn2q_u32(uint32x4_t a, uint32x4_t b) {
711 // CHECK-LABEL: test_vtrn2q_u32
712 return vtrn2q_u32(a, b);
713 // CHECK: trn2 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
714 }
715
test_vtrn2q_u64(uint64x2_t a,uint64x2_t b)716 uint64x2_t test_vtrn2q_u64(uint64x2_t a, uint64x2_t b) {
717 // CHECK-LABEL: test_vtrn2q_u64
718 return vtrn2q_u64(a, b);
719 // CHECK: {{ins v[0-9]+.d\[0\], v[0-9]+.d\[1\]|zip2 v0.2d, v0.2d, v1.2d}}
720 }
721
test_vtrn2_f32(float32x2_t a,float32x2_t b)722 float32x2_t test_vtrn2_f32(float32x2_t a, float32x2_t b) {
723 // CHECK-LABEL: test_vtrn2_f32
724 return vtrn2_f32(a, b);
725 // CHECK: {{ins v[0-9]+.s\[0\], v[0-9]+.s\[1\]|zip2 v0.2s, v0.2s, v1.2s}}
726 }
727
test_vtrn2q_f32(float32x4_t a,float32x4_t b)728 float32x4_t test_vtrn2q_f32(float32x4_t a, float32x4_t b) {
729 // CHECK-LABEL: test_vtrn2q_f32
730 return vtrn2q_f32(a, b);
731 // CHECK: trn2 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
732 }
733
test_vtrn2q_f64(float64x2_t a,float64x2_t b)734 float64x2_t test_vtrn2q_f64(float64x2_t a, float64x2_t b) {
735 // CHECK-LABEL: test_vtrn2q_f64
736 return vtrn2q_f64(a, b);
737 // CHECK: {{ins v[0-9]+.d\[0\], v[0-9]+.d\[1\]|zip2 v0.2d, v0.2d, v1.2d}}
738 }
739
test_vtrn2_p8(poly8x8_t a,poly8x8_t b)740 poly8x8_t test_vtrn2_p8(poly8x8_t a, poly8x8_t b) {
741 // CHECK-LABEL: test_vtrn2_p8
742 return vtrn2_p8(a, b);
743 // CHECK: trn2 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
744 }
745
test_vtrn2q_p8(poly8x16_t a,poly8x16_t b)746 poly8x16_t test_vtrn2q_p8(poly8x16_t a, poly8x16_t b) {
747 // CHECK-LABEL: test_vtrn2q_p8
748 return vtrn2q_p8(a, b);
749 // CHECK: trn2 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
750 }
751
test_vtrn2_p16(poly16x4_t a,poly16x4_t b)752 poly16x4_t test_vtrn2_p16(poly16x4_t a, poly16x4_t b) {
753 // CHECK-LABEL: test_vtrn2_p16
754 return vtrn2_p16(a, b);
755 // CHECK: trn2 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
756 }
757
test_vtrn2q_p16(poly16x8_t a,poly16x8_t b)758 poly16x8_t test_vtrn2q_p16(poly16x8_t a, poly16x8_t b) {
759 // CHECK-LABEL: test_vtrn2q_p16
760 return vtrn2q_p16(a, b);
761 // CHECK: trn2 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
762 }
763
test_vuzp_s8(int8x8_t a,int8x8_t b)764 int8x8x2_t test_vuzp_s8(int8x8_t a, int8x8_t b) {
765 // CHECK-LABEL: test_vuzp_s8
766 return vuzp_s8(a, b);
767 // CHECK: uzp1 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
768 // CHECK: uzp2 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
769 }
770
test_vuzp_s16(int16x4_t a,int16x4_t b)771 int16x4x2_t test_vuzp_s16(int16x4_t a, int16x4_t b) {
772 // CHECK-LABEL: test_vuzp_s16
773 return vuzp_s16(a, b);
774 // CHECK: uzp1 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
775 // CHECK: uzp2 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
776 }
test_vuzp_s32(int32x2_t a,int32x2_t b)777 int32x2x2_t test_vuzp_s32(int32x2_t a, int32x2_t b) {
778 // CHECK-LABEL: test_vuzp_s32
779 return vuzp_s32(a, b);
780 // CHECK: {{ins v[0-9]+.s\[1\], v[0-9]+.s\[0\]|zip1 v2.2s, v0.2s, v1.2s}}
781 // CHECK: {{ins v[0-9]+.s\[0\], v[0-9]+.s\[1\]|zip2 v1.2s, v0.2s, v1.2s}}
782 }
test_vuzp_u8(uint8x8_t a,uint8x8_t b)783 uint8x8x2_t test_vuzp_u8(uint8x8_t a, uint8x8_t b) {
784 // CHECK-LABEL: test_vuzp_u8
785 return vuzp_u8(a, b);
786 // CHECK: uzp1 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
787 // CHECK: uzp2 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
788 }
test_vuzp_u16(uint16x4_t a,uint16x4_t b)789 uint16x4x2_t test_vuzp_u16(uint16x4_t a, uint16x4_t b) {
790 // CHECK-LABEL: test_vuzp_u16
791 return vuzp_u16(a, b);
792 // CHECK: uzp1 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
793 // CHECK: uzp2 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
794 }
test_vuzp_u32(uint32x2_t a,uint32x2_t b)795 uint32x2x2_t test_vuzp_u32(uint32x2_t a, uint32x2_t b) {
796 // CHECK-LABEL: test_vuzp_u32
797 return vuzp_u32(a, b);
798 // CHECK: {{ins v[0-9]+.s\[1\], v[0-9]+.s\[0\]|zip1 v2.2s, v0.2s, v1.2s}}
799 // CHECK: {{ins v[0-9]+.s\[0\], v[0-9]+.s\[1\]|zip2 v1.2s, v0.2s, v1.2s}}
800 }
test_vuzp_f32(float32x2_t a,float32x2_t b)801 float32x2x2_t test_vuzp_f32(float32x2_t a, float32x2_t b) {
802 // CHECK-LABEL: test_vuzp_f32
803 return vuzp_f32(a, b);
804 // CHECK: {{ins v[0-9]+.s\[1\], v[0-9]+.s\[0\]|zip1 v2.2s, v0.2s, v1.2s}}
805 // CHECK: {{ins v[0-9]+.s\[0\], v[0-9]+.s\[1\]|zip2 v1.2s, v0.2s, v1.2s}}
806 }
test_vuzp_p8(poly8x8_t a,poly8x8_t b)807 poly8x8x2_t test_vuzp_p8(poly8x8_t a, poly8x8_t b) {
808 // CHECK-LABEL: test_vuzp_p8
809 return vuzp_p8(a, b);
810 // CHECK: uzp1 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
811 // CHECK: uzp2 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
812 }
test_vuzp_p16(poly16x4_t a,poly16x4_t b)813 poly16x4x2_t test_vuzp_p16(poly16x4_t a, poly16x4_t b) {
814 // CHECK-LABEL: test_vuzp_p16
815 return vuzp_p16(a, b);
816 // CHECK: uzp1 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
817 // CHECK: uzp2 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
818 }
test_vuzpq_s8(int8x16_t a,int8x16_t b)819 int8x16x2_t test_vuzpq_s8(int8x16_t a, int8x16_t b) {
820 // CHECK-LABEL: test_vuzpq_s8
821 return vuzpq_s8(a, b);
822 // CHECK: uzp1 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
823 // CHECK: uzp2 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
824 }
test_vuzpq_s16(int16x8_t a,int16x8_t b)825 int16x8x2_t test_vuzpq_s16(int16x8_t a, int16x8_t b) {
826 // CHECK-LABEL: test_vuzpq_s16
827 return vuzpq_s16(a, b);
828 // CHECK: uzp1 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
829 // CHECK: uzp2 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
830 }
test_vuzpq_s32(int32x4_t a,int32x4_t b)831 int32x4x2_t test_vuzpq_s32(int32x4_t a, int32x4_t b) {
832 // CHECK-LABEL: test_vuzpq_s32
833 return vuzpq_s32(a, b);
834 // CHECK: uzp1 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
835 // CHECK: uzp2 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
836 }
test_vuzpq_u8(uint8x16_t a,uint8x16_t b)837 uint8x16x2_t test_vuzpq_u8(uint8x16_t a, uint8x16_t b) {
838 // CHECK-LABEL: test_vuzpq_u8
839 return vuzpq_u8(a, b);
840 // CHECK: uzp1 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
841 // CHECK: uzp2 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
842 }
test_vuzpq_u16(uint16x8_t a,uint16x8_t b)843 uint16x8x2_t test_vuzpq_u16(uint16x8_t a, uint16x8_t b) {
844 // CHECK-LABEL: test_vuzpq_u16
845 return vuzpq_u16(a, b);
846 // CHECK: uzp1 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
847 // CHECK: uzp2 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
848 }
test_vuzpq_u32(uint32x4_t a,uint32x4_t b)849 uint32x4x2_t test_vuzpq_u32(uint32x4_t a, uint32x4_t b) {
850 // CHECK-LABEL: test_vuzpq_u32
851 return vuzpq_u32(a, b);
852 // CHECK: uzp1 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
853 // CHECK: uzp2 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
854 }
test_vuzpq_f32(float32x4_t a,float32x4_t b)855 float32x4x2_t test_vuzpq_f32(float32x4_t a, float32x4_t b) {
856 // CHECK-LABEL: test_vuzpq_f32
857 return vuzpq_f32(a, b);
858 // CHECK: uzp1 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
859 // CHECK: uzp2 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
860 }
test_vuzpq_p8(poly8x16_t a,poly8x16_t b)861 poly8x16x2_t test_vuzpq_p8(poly8x16_t a, poly8x16_t b) {
862 // CHECK-LABEL: test_vuzpq_p8
863 return vuzpq_p8(a, b);
864 // CHECK: uzp1 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
865 // CHECK: uzp2 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
866 }
test_vuzpq_p16(poly16x8_t a,poly16x8_t b)867 poly16x8x2_t test_vuzpq_p16(poly16x8_t a, poly16x8_t b) {
868 // CHECK-LABEL: test_vuzpq_p16
869 return vuzpq_p16(a, b);
870 // CHECK: uzp1 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
871 // CHECK: uzp2 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
872 }
873
test_vzip_s8(int8x8_t a,int8x8_t b)874 int8x8x2_t test_vzip_s8(int8x8_t a, int8x8_t b) {
875 // CHECK-LABEL: test_vzip_s8
876 return vzip_s8(a, b);
877 // CHECK: zip1 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
878 // CHECK: zip2 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
879 }
880
test_vzip_s16(int16x4_t a,int16x4_t b)881 int16x4x2_t test_vzip_s16(int16x4_t a, int16x4_t b) {
882 // CHECK-LABEL: test_vzip_s16
883 return vzip_s16(a, b);
884 // CHECK: zip1 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
885 // CHECK: zip2 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
886 }
test_vzip_s32(int32x2_t a,int32x2_t b)887 int32x2x2_t test_vzip_s32(int32x2_t a, int32x2_t b) {
888 // CHECK-LABEL: test_vzip_s32
889 return vzip_s32(a, b);
890 // CHECK: {{ins v[0-9]+.s\[1\], v[0-9]+.s\[0\]|zip1 v2.2s, v0.2s, v1.2s}}
891 // CHECK: {{ins v[0-9]+.s\[0\], v[0-9]+.s\[1\]|zip2 v1.2s, v0.2s, v1.2s}}
892 }
test_vzip_u8(uint8x8_t a,uint8x8_t b)893 uint8x8x2_t test_vzip_u8(uint8x8_t a, uint8x8_t b) {
894 // CHECK-LABEL: test_vzip_u8
895 return vzip_u8(a, b);
896 // CHECK: zip1 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
897 // CHECK: zip2 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
898 }
test_vzip_u16(uint16x4_t a,uint16x4_t b)899 uint16x4x2_t test_vzip_u16(uint16x4_t a, uint16x4_t b) {
900 // CHECK-LABEL: test_vzip_u16
901 return vzip_u16(a, b);
902 // CHECK: zip1 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
903 // CHECK: zip2 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
904 }
test_vzip_u32(uint32x2_t a,uint32x2_t b)905 uint32x2x2_t test_vzip_u32(uint32x2_t a, uint32x2_t b) {
906 // CHECK-LABEL: test_vzip_u32
907 return vzip_u32(a, b);
908 // CHECK: {{ins v[0-9]+.s\[1\], v[0-9]+.s\[0\]|zip1 v2.2s, v0.2s, v1.2s}}
909 // CHECK: {{ins v[0-9]+.s\[0\], v[0-9]+.s\[1\]|zip2 v1.2s, v0.2s, v1.2s}}
910 }
test_vzip_f32(float32x2_t a,float32x2_t b)911 float32x2x2_t test_vzip_f32(float32x2_t a, float32x2_t b) {
912 // CHECK-LABEL: test_vzip_f32
913 return vzip_f32(a, b);
914 // CHECK: {{ins v[0-9]+.s\[1\], v[0-9]+.s\[0\]|zip1 v2.2s, v0.2s, v1.2s}}
915 // CHECK: {{ins v[0-9]+.s\[0\], v[0-9]+.s\[1\]|zip2 v1.2s, v0.2s, v1.2s}}
916 }
test_vzip_p8(poly8x8_t a,poly8x8_t b)917 poly8x8x2_t test_vzip_p8(poly8x8_t a, poly8x8_t b) {
918 // CHECK-LABEL: test_vzip_p8
919 return vzip_p8(a, b);
920 // CHECK: zip1 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
921 // CHECK: zip2 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
922 }
test_vzip_p16(poly16x4_t a,poly16x4_t b)923 poly16x4x2_t test_vzip_p16(poly16x4_t a, poly16x4_t b) {
924 // CHECK-LABEL: test_vzip_p16
925 return vzip_p16(a, b);
926 // CHECK: zip1 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
927 // CHECK: zip2 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
928 }
test_vzipq_s8(int8x16_t a,int8x16_t b)929 int8x16x2_t test_vzipq_s8(int8x16_t a, int8x16_t b) {
930 // CHECK-LABEL: test_vzipq_s8
931 return vzipq_s8(a, b);
932 // CHECK: zip1 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
933 // CHECK: zip2 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
934 }
test_vzipq_s16(int16x8_t a,int16x8_t b)935 int16x8x2_t test_vzipq_s16(int16x8_t a, int16x8_t b) {
936 // CHECK-LABEL: test_vzipq_s16
937 return vzipq_s16(a, b);
938 // CHECK: zip1 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
939 // CHECK: zip2 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
940 }
test_vzipq_s32(int32x4_t a,int32x4_t b)941 int32x4x2_t test_vzipq_s32(int32x4_t a, int32x4_t b) {
942 // CHECK-LABEL: test_vzipq_s32
943 return vzipq_s32(a, b);
944 // CHECK: zip1 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
945 // CHECK: zip2 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
946 }
test_vzipq_u8(uint8x16_t a,uint8x16_t b)947 uint8x16x2_t test_vzipq_u8(uint8x16_t a, uint8x16_t b) {
948 // CHECK-LABEL: test_vzipq_u8
949 return vzipq_u8(a, b);
950 // CHECK: zip1 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
951 // CHECK: zip2 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
952 }
test_vzipq_u16(uint16x8_t a,uint16x8_t b)953 uint16x8x2_t test_vzipq_u16(uint16x8_t a, uint16x8_t b) {
954 // CHECK-LABEL: test_vzipq_u16
955 return vzipq_u16(a, b);
956 // CHECK: zip1 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
957 // CHECK: zip2 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
958 }
test_vzipq_u32(uint32x4_t a,uint32x4_t b)959 uint32x4x2_t test_vzipq_u32(uint32x4_t a, uint32x4_t b) {
960 // CHECK-LABEL: test_vzipq_u32
961 return vzipq_u32(a, b);
962 // CHECK: zip1 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
963 // CHECK: zip2 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
964 }
test_vzipq_f32(float32x4_t a,float32x4_t b)965 float32x4x2_t test_vzipq_f32(float32x4_t a, float32x4_t b) {
966 // CHECK-LABEL: test_vzipq_f32
967 return vzipq_f32(a, b);
968 // CHECK: zip1 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
969 // CHECK: zip2 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
970 }
test_vzipq_p8(poly8x16_t a,poly8x16_t b)971 poly8x16x2_t test_vzipq_p8(poly8x16_t a, poly8x16_t b) {
972 // CHECK-LABEL: test_vzipq_p8
973 return vzipq_p8(a, b);
974 // CHECK: zip1 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
975 // CHECK: zip2 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
976 }
test_vzipq_p16(poly16x8_t a,poly16x8_t b)977 poly16x8x2_t test_vzipq_p16(poly16x8_t a, poly16x8_t b) {
978 // CHECK-LABEL: test_vzipq_p16
979 return vzipq_p16(a, b);
980 // CHECK: zip1 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
981 // CHECK: zip2 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
982 }
983
test_vtrn_s8(int8x8_t a,int8x8_t b)984 int8x8x2_t test_vtrn_s8(int8x8_t a, int8x8_t b) {
985 // CHECK-LABEL: test_vtrn_s8
986 return vtrn_s8(a, b);
987 // CHECK: trn1 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
988 // CHECK: trn2 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
989 }
990
test_vtrn_s16(int16x4_t a,int16x4_t b)991 int16x4x2_t test_vtrn_s16(int16x4_t a, int16x4_t b) {
992 // CHECK-LABEL: test_vtrn_s16
993 return vtrn_s16(a, b);
994 // CHECK: trn1 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
995 // CHECK: trn2 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
996 }
test_vtrn_s32(int32x2_t a,int32x2_t b)997 int32x2x2_t test_vtrn_s32(int32x2_t a, int32x2_t b) {
998 // CHECK-LABEL: test_vtrn_s32
999 return vtrn_s32(a, b);
1000 // CHECK: {{ins v[0-9]+.s\[1\], v[0-9]+.s\[0\]|zip1 v2.2s, v0.2s, v1.2s}}
1001 // CHECK: {{ins v[0-9]+.s\[0\], v[0-9]+.s\[1\]|zip2 v1.2s, v0.2s, v1.2s}}
1002 }
test_vtrn_u8(uint8x8_t a,uint8x8_t b)1003 uint8x8x2_t test_vtrn_u8(uint8x8_t a, uint8x8_t b) {
1004 // CHECK-LABEL: test_vtrn_u8
1005 return vtrn_u8(a, b);
1006 // CHECK: trn1 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
1007 // CHECK: trn2 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
1008 }
test_vtrn_u16(uint16x4_t a,uint16x4_t b)1009 uint16x4x2_t test_vtrn_u16(uint16x4_t a, uint16x4_t b) {
1010 // CHECK-LABEL: test_vtrn_u16
1011 return vtrn_u16(a, b);
1012 // CHECK: trn1 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
1013 // CHECK: trn2 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
1014 }
test_vtrn_u32(uint32x2_t a,uint32x2_t b)1015 uint32x2x2_t test_vtrn_u32(uint32x2_t a, uint32x2_t b) {
1016 // CHECK-LABEL: test_vtrn_u32
1017 return vtrn_u32(a, b);
1018 // CHECK: {{ins v[0-9]+.s\[1\], v[0-9]+.s\[0\]|zip1 v2.2s, v0.2s, v1.2s}}
1019 // CHECK: {{ins v[0-9]+.s\[0\], v[0-9]+.s\[1\]|zip2 v1.2s, v0.2s, v1.2s}}
1020 }
test_vtrn_f32(float32x2_t a,float32x2_t b)1021 float32x2x2_t test_vtrn_f32(float32x2_t a, float32x2_t b) {
1022 // CHECK-LABEL: test_vtrn_f32
1023 return vtrn_f32(a, b);
1024 // CHECK: {{ins v[0-9]+.s\[1\], v[0-9]+.s\[0\]|zip1 v2.2s, v0.2s, v1.2s}}
1025 // CHECK: {{ins v[0-9]+.s\[0\], v[0-9]+.s\[1\]|zip2 v1.2s, v0.2s, v1.2s}}
1026 }
test_vtrn_p8(poly8x8_t a,poly8x8_t b)1027 poly8x8x2_t test_vtrn_p8(poly8x8_t a, poly8x8_t b) {
1028 // CHECK-LABEL: test_vtrn_p8
1029 return vtrn_p8(a, b);
1030 // CHECK: trn1 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
1031 // CHECK: trn2 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
1032 }
test_vtrn_p16(poly16x4_t a,poly16x4_t b)1033 poly16x4x2_t test_vtrn_p16(poly16x4_t a, poly16x4_t b) {
1034 // CHECK-LABEL: test_vtrn_p16
1035 return vtrn_p16(a, b);
1036 // CHECK: trn1 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
1037 // CHECK: trn2 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
1038 }
test_vtrnq_s8(int8x16_t a,int8x16_t b)1039 int8x16x2_t test_vtrnq_s8(int8x16_t a, int8x16_t b) {
1040 // CHECK-LABEL: test_vtrnq_s8
1041 return vtrnq_s8(a, b);
1042 // CHECK: trn1 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
1043 // CHECK: trn2 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
1044 }
test_vtrnq_s16(int16x8_t a,int16x8_t b)1045 int16x8x2_t test_vtrnq_s16(int16x8_t a, int16x8_t b) {
1046 // CHECK-LABEL: test_vtrnq_s16
1047 return vtrnq_s16(a, b);
1048 // CHECK: trn1 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
1049 // CHECK: trn2 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
1050 }
test_vtrnq_s32(int32x4_t a,int32x4_t b)1051 int32x4x2_t test_vtrnq_s32(int32x4_t a, int32x4_t b) {
1052 // CHECK-LABEL: test_vtrnq_s32
1053 return vtrnq_s32(a, b);
1054 // CHECK: trn1 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
1055 // CHECK: trn2 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
1056 }
test_vtrnq_u8(uint8x16_t a,uint8x16_t b)1057 uint8x16x2_t test_vtrnq_u8(uint8x16_t a, uint8x16_t b) {
1058 // CHECK-LABEL: test_vtrnq_u8
1059 return vtrnq_u8(a, b);
1060 // CHECK: trn1 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
1061 // CHECK: trn2 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
1062 }
test_vtrnq_u16(uint16x8_t a,uint16x8_t b)1063 uint16x8x2_t test_vtrnq_u16(uint16x8_t a, uint16x8_t b) {
1064 // CHECK-LABEL: test_vtrnq_u16
1065 return vtrnq_u16(a, b);
1066 // CHECK: trn1 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
1067 // CHECK: trn2 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
1068 }
test_vtrnq_u32(uint32x4_t a,uint32x4_t b)1069 uint32x4x2_t test_vtrnq_u32(uint32x4_t a, uint32x4_t b) {
1070 // CHECK-LABEL: test_vtrnq_u32
1071 return vtrnq_u32(a, b);
1072 // CHECK: trn1 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
1073 // CHECK: trn2 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
1074 }
test_vtrnq_f32(float32x4_t a,float32x4_t b)1075 float32x4x2_t test_vtrnq_f32(float32x4_t a, float32x4_t b) {
1076 // CHECK-LABEL: test_vtrnq_f32
1077 return vtrnq_f32(a, b);
1078 // CHECK: trn1 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
1079 // CHECK: trn2 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
1080 }
test_vtrnq_p8(poly8x16_t a,poly8x16_t b)1081 poly8x16x2_t test_vtrnq_p8(poly8x16_t a, poly8x16_t b) {
1082 // CHECK-LABEL: test_vtrnq_p8
1083 return vtrnq_p8(a, b);
1084 // CHECK: trn1 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
1085 // CHECK: trn2 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
1086 }
test_vtrnq_p16(poly16x8_t a,poly16x8_t b)1087 poly16x8x2_t test_vtrnq_p16(poly16x8_t a, poly16x8_t b) {
1088 // CHECK-LABEL: test_vtrnq_p16
1089 return vtrnq_p16(a, b);
1090 // CHECK: trn1 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
1091 // CHECK: trn2 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
1092 }
1093