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