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