xref: /aosp_15_r20/external/llvm/test/CodeGen/AArch64/neon-perm.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -verify-machineinstrs -mtriple=aarch64-none-linux-gnu -mattr=+neon | FileCheck %s
2*9880d681SAndroid Build Coastguard Worker
3*9880d681SAndroid Build Coastguard Worker%struct.int8x8x2_t = type { [2 x <8 x i8>] }
4*9880d681SAndroid Build Coastguard Worker%struct.int16x4x2_t = type { [2 x <4 x i16>] }
5*9880d681SAndroid Build Coastguard Worker%struct.int32x2x2_t = type { [2 x <2 x i32>] }
6*9880d681SAndroid Build Coastguard Worker%struct.uint8x8x2_t = type { [2 x <8 x i8>] }
7*9880d681SAndroid Build Coastguard Worker%struct.uint16x4x2_t = type { [2 x <4 x i16>] }
8*9880d681SAndroid Build Coastguard Worker%struct.uint32x2x2_t = type { [2 x <2 x i32>] }
9*9880d681SAndroid Build Coastguard Worker%struct.float32x2x2_t = type { [2 x <2 x float>] }
10*9880d681SAndroid Build Coastguard Worker%struct.poly8x8x2_t = type { [2 x <8 x i8>] }
11*9880d681SAndroid Build Coastguard Worker%struct.poly16x4x2_t = type { [2 x <4 x i16>] }
12*9880d681SAndroid Build Coastguard Worker%struct.int8x16x2_t = type { [2 x <16 x i8>] }
13*9880d681SAndroid Build Coastguard Worker%struct.int16x8x2_t = type { [2 x <8 x i16>] }
14*9880d681SAndroid Build Coastguard Worker%struct.int32x4x2_t = type { [2 x <4 x i32>] }
15*9880d681SAndroid Build Coastguard Worker%struct.uint8x16x2_t = type { [2 x <16 x i8>] }
16*9880d681SAndroid Build Coastguard Worker%struct.uint16x8x2_t = type { [2 x <8 x i16>] }
17*9880d681SAndroid Build Coastguard Worker%struct.uint32x4x2_t = type { [2 x <4 x i32>] }
18*9880d681SAndroid Build Coastguard Worker%struct.float32x4x2_t = type { [2 x <4 x float>] }
19*9880d681SAndroid Build Coastguard Worker%struct.poly8x16x2_t = type { [2 x <16 x i8>] }
20*9880d681SAndroid Build Coastguard Worker%struct.poly16x8x2_t = type { [2 x <8 x i16>] }
21*9880d681SAndroid Build Coastguard Worker
22*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @test_vuzp1_s8(<8 x i8> %a, <8 x i8> %b) {
23*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vuzp1_s8:
24*9880d681SAndroid Build Coastguard Worker; CHECK: uzp1 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
25*9880d681SAndroid Build Coastguard Workerentry:
26*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <8 x i8> %a, <8 x i8> %b, <8 x i32> <i32 0, i32 2, i32 4, i32 6, i32 8, i32 10, i32 12, i32 14>
27*9880d681SAndroid Build Coastguard Worker  ret <8 x i8> %shuffle.i
28*9880d681SAndroid Build Coastguard Worker}
29*9880d681SAndroid Build Coastguard Worker
30*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_vuzp1q_s8(<16 x i8> %a, <16 x i8> %b) {
31*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vuzp1q_s8:
32*9880d681SAndroid Build Coastguard Worker; CHECK: uzp1 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
33*9880d681SAndroid Build Coastguard Workerentry:
34*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <16 x i8> %a, <16 x i8> %b, <16 x i32> <i32 0, i32 2, i32 4, i32 6, i32 8, i32 10, i32 12, i32 14, i32 16, i32 18, i32 20, i32 22, i32 24, i32 26, i32 28, i32 30>
35*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %shuffle.i
36*9880d681SAndroid Build Coastguard Worker}
37*9880d681SAndroid Build Coastguard Worker
38*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @test_vuzp1_s16(<4 x i16> %a, <4 x i16> %b) {
39*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vuzp1_s16:
40*9880d681SAndroid Build Coastguard Worker; CHECK: uzp1 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
41*9880d681SAndroid Build Coastguard Workerentry:
42*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <4 x i16> %a, <4 x i16> %b, <4 x i32> <i32 0, i32 2, i32 4, i32 6>
43*9880d681SAndroid Build Coastguard Worker  ret <4 x i16> %shuffle.i
44*9880d681SAndroid Build Coastguard Worker}
45*9880d681SAndroid Build Coastguard Worker
46*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_vuzp1q_s16(<8 x i16> %a, <8 x i16> %b) {
47*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vuzp1q_s16:
48*9880d681SAndroid Build Coastguard Worker; CHECK: uzp1 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
49*9880d681SAndroid Build Coastguard Workerentry:
50*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <8 x i16> %a, <8 x i16> %b, <8 x i32> <i32 0, i32 2, i32 4, i32 6, i32 8, i32 10, i32 12, i32 14>
51*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %shuffle.i
52*9880d681SAndroid Build Coastguard Worker}
53*9880d681SAndroid Build Coastguard Worker
54*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @test_vuzp1_s32(<2 x i32> %a, <2 x i32> %b) {
55*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vuzp1_s32:
56*9880d681SAndroid Build Coastguard Worker; CHECK: zip1 {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
57*9880d681SAndroid Build Coastguard Workerentry:
58*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <2 x i32> %a, <2 x i32> %b, <2 x i32> <i32 0, i32 2>
59*9880d681SAndroid Build Coastguard Worker  ret <2 x i32> %shuffle.i
60*9880d681SAndroid Build Coastguard Worker}
61*9880d681SAndroid Build Coastguard Worker
62*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test_vuzp1q_s32(<4 x i32> %a, <4 x i32> %b) {
63*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vuzp1q_s32:
64*9880d681SAndroid Build Coastguard Worker; CHECK: uzp1 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
65*9880d681SAndroid Build Coastguard Workerentry:
66*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <4 x i32> %a, <4 x i32> %b, <4 x i32> <i32 0, i32 2, i32 4, i32 6>
67*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %shuffle.i
68*9880d681SAndroid Build Coastguard Worker}
69*9880d681SAndroid Build Coastguard Worker
70*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_vuzp1q_s64(<2 x i64> %a, <2 x i64> %b) {
71*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vuzp1q_s64:
72*9880d681SAndroid Build Coastguard Worker; CHECK: zip1 {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
73*9880d681SAndroid Build Coastguard Workerentry:
74*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <2 x i64> %a, <2 x i64> %b, <2 x i32> <i32 0, i32 2>
75*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %shuffle.i
76*9880d681SAndroid Build Coastguard Worker}
77*9880d681SAndroid Build Coastguard Worker
78*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @test_vuzp1_u8(<8 x i8> %a, <8 x i8> %b) {
79*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vuzp1_u8:
80*9880d681SAndroid Build Coastguard Worker; CHECK: uzp1 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
81*9880d681SAndroid Build Coastguard Workerentry:
82*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <8 x i8> %a, <8 x i8> %b, <8 x i32> <i32 0, i32 2, i32 4, i32 6, i32 8, i32 10, i32 12, i32 14>
83*9880d681SAndroid Build Coastguard Worker  ret <8 x i8> %shuffle.i
84*9880d681SAndroid Build Coastguard Worker}
85*9880d681SAndroid Build Coastguard Worker
86*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_vuzp1q_u8(<16 x i8> %a, <16 x i8> %b) {
87*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vuzp1q_u8:
88*9880d681SAndroid Build Coastguard Worker; CHECK: uzp1 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
89*9880d681SAndroid Build Coastguard Workerentry:
90*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <16 x i8> %a, <16 x i8> %b, <16 x i32> <i32 0, i32 2, i32 4, i32 6, i32 8, i32 10, i32 12, i32 14, i32 16, i32 18, i32 20, i32 22, i32 24, i32 26, i32 28, i32 30>
91*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %shuffle.i
92*9880d681SAndroid Build Coastguard Worker}
93*9880d681SAndroid Build Coastguard Worker
94*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @test_vuzp1_u16(<4 x i16> %a, <4 x i16> %b) {
95*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vuzp1_u16:
96*9880d681SAndroid Build Coastguard Worker; CHECK: uzp1 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
97*9880d681SAndroid Build Coastguard Workerentry:
98*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <4 x i16> %a, <4 x i16> %b, <4 x i32> <i32 0, i32 2, i32 4, i32 6>
99*9880d681SAndroid Build Coastguard Worker  ret <4 x i16> %shuffle.i
100*9880d681SAndroid Build Coastguard Worker}
101*9880d681SAndroid Build Coastguard Worker
102*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_vuzp1q_u16(<8 x i16> %a, <8 x i16> %b) {
103*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vuzp1q_u16:
104*9880d681SAndroid Build Coastguard Worker; CHECK: uzp1 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
105*9880d681SAndroid Build Coastguard Workerentry:
106*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <8 x i16> %a, <8 x i16> %b, <8 x i32> <i32 0, i32 2, i32 4, i32 6, i32 8, i32 10, i32 12, i32 14>
107*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %shuffle.i
108*9880d681SAndroid Build Coastguard Worker}
109*9880d681SAndroid Build Coastguard Worker
110*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @test_vuzp1_u32(<2 x i32> %a, <2 x i32> %b) {
111*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vuzp1_u32:
112*9880d681SAndroid Build Coastguard Worker; CHECK: zip1 {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
113*9880d681SAndroid Build Coastguard Workerentry:
114*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <2 x i32> %a, <2 x i32> %b, <2 x i32> <i32 0, i32 2>
115*9880d681SAndroid Build Coastguard Worker  ret <2 x i32> %shuffle.i
116*9880d681SAndroid Build Coastguard Worker}
117*9880d681SAndroid Build Coastguard Worker
118*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test_vuzp1q_u32(<4 x i32> %a, <4 x i32> %b) {
119*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vuzp1q_u32:
120*9880d681SAndroid Build Coastguard Worker; CHECK: uzp1 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
121*9880d681SAndroid Build Coastguard Workerentry:
122*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <4 x i32> %a, <4 x i32> %b, <4 x i32> <i32 0, i32 2, i32 4, i32 6>
123*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %shuffle.i
124*9880d681SAndroid Build Coastguard Worker}
125*9880d681SAndroid Build Coastguard Worker
126*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_vuzp1q_u64(<2 x i64> %a, <2 x i64> %b) {
127*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vuzp1q_u64:
128*9880d681SAndroid Build Coastguard Worker; CHECK: zip1 {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
129*9880d681SAndroid Build Coastguard Workerentry:
130*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <2 x i64> %a, <2 x i64> %b, <2 x i32> <i32 0, i32 2>
131*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %shuffle.i
132*9880d681SAndroid Build Coastguard Worker}
133*9880d681SAndroid Build Coastguard Worker
134*9880d681SAndroid Build Coastguard Workerdefine <2 x float> @test_vuzp1_f32(<2 x float> %a, <2 x float> %b) {
135*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vuzp1_f32:
136*9880d681SAndroid Build Coastguard Worker; CHECK: zip1 {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
137*9880d681SAndroid Build Coastguard Workerentry:
138*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <2 x float> %a, <2 x float> %b, <2 x i32> <i32 0, i32 2>
139*9880d681SAndroid Build Coastguard Worker  ret <2 x float> %shuffle.i
140*9880d681SAndroid Build Coastguard Worker}
141*9880d681SAndroid Build Coastguard Worker
142*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_vuzp1q_f32(<4 x float> %a, <4 x float> %b) {
143*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vuzp1q_f32:
144*9880d681SAndroid Build Coastguard Worker; CHECK: uzp1 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
145*9880d681SAndroid Build Coastguard Workerentry:
146*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <4 x float> %a, <4 x float> %b, <4 x i32> <i32 0, i32 2, i32 4, i32 6>
147*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %shuffle.i
148*9880d681SAndroid Build Coastguard Worker}
149*9880d681SAndroid Build Coastguard Worker
150*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_vuzp1q_f64(<2 x double> %a, <2 x double> %b) {
151*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vuzp1q_f64:
152*9880d681SAndroid Build Coastguard Worker; CHECK: zip1 {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
153*9880d681SAndroid Build Coastguard Workerentry:
154*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <2 x double> %a, <2 x double> %b, <2 x i32> <i32 0, i32 2>
155*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %shuffle.i
156*9880d681SAndroid Build Coastguard Worker}
157*9880d681SAndroid Build Coastguard Worker
158*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @test_vuzp1_p8(<8 x i8> %a, <8 x i8> %b) {
159*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vuzp1_p8:
160*9880d681SAndroid Build Coastguard Worker; CHECK: uzp1 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
161*9880d681SAndroid Build Coastguard Workerentry:
162*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <8 x i8> %a, <8 x i8> %b, <8 x i32> <i32 0, i32 2, i32 4, i32 6, i32 8, i32 10, i32 12, i32 14>
163*9880d681SAndroid Build Coastguard Worker  ret <8 x i8> %shuffle.i
164*9880d681SAndroid Build Coastguard Worker}
165*9880d681SAndroid Build Coastguard Worker
166*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_vuzp1q_p8(<16 x i8> %a, <16 x i8> %b) {
167*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vuzp1q_p8:
168*9880d681SAndroid Build Coastguard Worker; CHECK: uzp1 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
169*9880d681SAndroid Build Coastguard Workerentry:
170*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <16 x i8> %a, <16 x i8> %b, <16 x i32> <i32 0, i32 2, i32 4, i32 6, i32 8, i32 10, i32 12, i32 14, i32 16, i32 18, i32 20, i32 22, i32 24, i32 26, i32 28, i32 30>
171*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %shuffle.i
172*9880d681SAndroid Build Coastguard Worker}
173*9880d681SAndroid Build Coastguard Worker
174*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @test_vuzp1_p16(<4 x i16> %a, <4 x i16> %b) {
175*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vuzp1_p16:
176*9880d681SAndroid Build Coastguard Worker; CHECK: uzp1 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
177*9880d681SAndroid Build Coastguard Workerentry:
178*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <4 x i16> %a, <4 x i16> %b, <4 x i32> <i32 0, i32 2, i32 4, i32 6>
179*9880d681SAndroid Build Coastguard Worker  ret <4 x i16> %shuffle.i
180*9880d681SAndroid Build Coastguard Worker}
181*9880d681SAndroid Build Coastguard Worker
182*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_vuzp1q_p16(<8 x i16> %a, <8 x i16> %b) {
183*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vuzp1q_p16:
184*9880d681SAndroid Build Coastguard Worker; CHECK: uzp1 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
185*9880d681SAndroid Build Coastguard Workerentry:
186*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <8 x i16> %a, <8 x i16> %b, <8 x i32> <i32 0, i32 2, i32 4, i32 6, i32 8, i32 10, i32 12, i32 14>
187*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %shuffle.i
188*9880d681SAndroid Build Coastguard Worker}
189*9880d681SAndroid Build Coastguard Worker
190*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @test_vuzp2_s8(<8 x i8> %a, <8 x i8> %b) {
191*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vuzp2_s8:
192*9880d681SAndroid Build Coastguard Worker; CHECK: uzp2 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
193*9880d681SAndroid Build Coastguard Workerentry:
194*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <8 x i8> %a, <8 x i8> %b, <8 x i32> <i32 1, i32 3, i32 5, i32 7, i32 9, i32 11, i32 13, i32 15>
195*9880d681SAndroid Build Coastguard Worker  ret <8 x i8> %shuffle.i
196*9880d681SAndroid Build Coastguard Worker}
197*9880d681SAndroid Build Coastguard Worker
198*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_vuzp2q_s8(<16 x i8> %a, <16 x i8> %b) {
199*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vuzp2q_s8:
200*9880d681SAndroid Build Coastguard Worker; CHECK: uzp2 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
201*9880d681SAndroid Build Coastguard Workerentry:
202*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <16 x i8> %a, <16 x i8> %b, <16 x i32> <i32 1, i32 3, i32 5, i32 7, i32 9, i32 11, i32 13, i32 15, i32 17, i32 19, i32 21, i32 23, i32 25, i32 27, i32 29, i32 31>
203*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %shuffle.i
204*9880d681SAndroid Build Coastguard Worker}
205*9880d681SAndroid Build Coastguard Worker
206*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @test_vuzp2_s16(<4 x i16> %a, <4 x i16> %b) {
207*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vuzp2_s16:
208*9880d681SAndroid Build Coastguard Worker; CHECK: uzp2 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
209*9880d681SAndroid Build Coastguard Workerentry:
210*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <4 x i16> %a, <4 x i16> %b, <4 x i32> <i32 1, i32 3, i32 5, i32 7>
211*9880d681SAndroid Build Coastguard Worker  ret <4 x i16> %shuffle.i
212*9880d681SAndroid Build Coastguard Worker}
213*9880d681SAndroid Build Coastguard Worker
214*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_vuzp2q_s16(<8 x i16> %a, <8 x i16> %b) {
215*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vuzp2q_s16:
216*9880d681SAndroid Build Coastguard Worker; CHECK: uzp2 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
217*9880d681SAndroid Build Coastguard Workerentry:
218*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <8 x i16> %a, <8 x i16> %b, <8 x i32> <i32 1, i32 3, i32 5, i32 7, i32 9, i32 11, i32 13, i32 15>
219*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %shuffle.i
220*9880d681SAndroid Build Coastguard Worker}
221*9880d681SAndroid Build Coastguard Worker
222*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @test_vuzp2_s32(<2 x i32> %a, <2 x i32> %b) {
223*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vuzp2_s32:
224*9880d681SAndroid Build Coastguard Worker; CHECK: zip2 {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
225*9880d681SAndroid Build Coastguard Workerentry:
226*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <2 x i32> %a, <2 x i32> %b, <2 x i32> <i32 1, i32 3>
227*9880d681SAndroid Build Coastguard Worker  ret <2 x i32> %shuffle.i
228*9880d681SAndroid Build Coastguard Worker}
229*9880d681SAndroid Build Coastguard Worker
230*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test_vuzp2q_s32(<4 x i32> %a, <4 x i32> %b) {
231*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vuzp2q_s32:
232*9880d681SAndroid Build Coastguard Worker; CHECK: uzp2 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
233*9880d681SAndroid Build Coastguard Workerentry:
234*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <4 x i32> %a, <4 x i32> %b, <4 x i32> <i32 1, i32 3, i32 5, i32 7>
235*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %shuffle.i
236*9880d681SAndroid Build Coastguard Worker}
237*9880d681SAndroid Build Coastguard Worker
238*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_vuzp2q_s64(<2 x i64> %a, <2 x i64> %b) {
239*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vuzp2q_s64:
240*9880d681SAndroid Build Coastguard Worker; CHECK: zip2 {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
241*9880d681SAndroid Build Coastguard Workerentry:
242*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <2 x i64> %a, <2 x i64> %b, <2 x i32> <i32 1, i32 3>
243*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %shuffle.i
244*9880d681SAndroid Build Coastguard Worker}
245*9880d681SAndroid Build Coastguard Worker
246*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @test_vuzp2_u8(<8 x i8> %a, <8 x i8> %b) {
247*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vuzp2_u8:
248*9880d681SAndroid Build Coastguard Worker; CHECK: uzp2 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
249*9880d681SAndroid Build Coastguard Workerentry:
250*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <8 x i8> %a, <8 x i8> %b, <8 x i32> <i32 1, i32 3, i32 5, i32 7, i32 9, i32 11, i32 13, i32 15>
251*9880d681SAndroid Build Coastguard Worker  ret <8 x i8> %shuffle.i
252*9880d681SAndroid Build Coastguard Worker}
253*9880d681SAndroid Build Coastguard Worker
254*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_vuzp2q_u8(<16 x i8> %a, <16 x i8> %b) {
255*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vuzp2q_u8:
256*9880d681SAndroid Build Coastguard Worker; CHECK: uzp2 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
257*9880d681SAndroid Build Coastguard Workerentry:
258*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <16 x i8> %a, <16 x i8> %b, <16 x i32> <i32 1, i32 3, i32 5, i32 7, i32 9, i32 11, i32 13, i32 15, i32 17, i32 19, i32 21, i32 23, i32 25, i32 27, i32 29, i32 31>
259*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %shuffle.i
260*9880d681SAndroid Build Coastguard Worker}
261*9880d681SAndroid Build Coastguard Worker
262*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @test_vuzp2_u16(<4 x i16> %a, <4 x i16> %b) {
263*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vuzp2_u16:
264*9880d681SAndroid Build Coastguard Worker; CHECK: uzp2 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
265*9880d681SAndroid Build Coastguard Workerentry:
266*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <4 x i16> %a, <4 x i16> %b, <4 x i32> <i32 1, i32 3, i32 5, i32 7>
267*9880d681SAndroid Build Coastguard Worker  ret <4 x i16> %shuffle.i
268*9880d681SAndroid Build Coastguard Worker}
269*9880d681SAndroid Build Coastguard Worker
270*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_vuzp2q_u16(<8 x i16> %a, <8 x i16> %b) {
271*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vuzp2q_u16:
272*9880d681SAndroid Build Coastguard Worker; CHECK: uzp2 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
273*9880d681SAndroid Build Coastguard Workerentry:
274*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <8 x i16> %a, <8 x i16> %b, <8 x i32> <i32 1, i32 3, i32 5, i32 7, i32 9, i32 11, i32 13, i32 15>
275*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %shuffle.i
276*9880d681SAndroid Build Coastguard Worker}
277*9880d681SAndroid Build Coastguard Worker
278*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @test_vuzp2_u32(<2 x i32> %a, <2 x i32> %b) {
279*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vuzp2_u32:
280*9880d681SAndroid Build Coastguard Worker; CHECK: zip2 {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
281*9880d681SAndroid Build Coastguard Workerentry:
282*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <2 x i32> %a, <2 x i32> %b, <2 x i32> <i32 1, i32 3>
283*9880d681SAndroid Build Coastguard Worker  ret <2 x i32> %shuffle.i
284*9880d681SAndroid Build Coastguard Worker}
285*9880d681SAndroid Build Coastguard Worker
286*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test_vuzp2q_u32(<4 x i32> %a, <4 x i32> %b) {
287*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vuzp2q_u32:
288*9880d681SAndroid Build Coastguard Worker; CHECK: uzp2 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
289*9880d681SAndroid Build Coastguard Workerentry:
290*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <4 x i32> %a, <4 x i32> %b, <4 x i32> <i32 1, i32 3, i32 5, i32 7>
291*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %shuffle.i
292*9880d681SAndroid Build Coastguard Worker}
293*9880d681SAndroid Build Coastguard Worker
294*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_vuzp2q_u64(<2 x i64> %a, <2 x i64> %b) {
295*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vuzp2q_u64:
296*9880d681SAndroid Build Coastguard Worker; CHECK: zip2 {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
297*9880d681SAndroid Build Coastguard Workerentry:
298*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <2 x i64> %a, <2 x i64> %b, <2 x i32> <i32 1, i32 3>
299*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %shuffle.i
300*9880d681SAndroid Build Coastguard Worker}
301*9880d681SAndroid Build Coastguard Worker
302*9880d681SAndroid Build Coastguard Workerdefine <2 x float> @test_vuzp2_f32(<2 x float> %a, <2 x float> %b) {
303*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vuzp2_f32:
304*9880d681SAndroid Build Coastguard Worker; CHECK: zip2 {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
305*9880d681SAndroid Build Coastguard Workerentry:
306*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <2 x float> %a, <2 x float> %b, <2 x i32> <i32 1, i32 3>
307*9880d681SAndroid Build Coastguard Worker  ret <2 x float> %shuffle.i
308*9880d681SAndroid Build Coastguard Worker}
309*9880d681SAndroid Build Coastguard Worker
310*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_vuzp2q_f32(<4 x float> %a, <4 x float> %b) {
311*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vuzp2q_f32:
312*9880d681SAndroid Build Coastguard Worker; CHECK: uzp2 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
313*9880d681SAndroid Build Coastguard Workerentry:
314*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <4 x float> %a, <4 x float> %b, <4 x i32> <i32 1, i32 3, i32 5, i32 7>
315*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %shuffle.i
316*9880d681SAndroid Build Coastguard Worker}
317*9880d681SAndroid Build Coastguard Worker
318*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_vuzp2q_f64(<2 x double> %a, <2 x double> %b) {
319*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vuzp2q_f64:
320*9880d681SAndroid Build Coastguard Worker; CHECK: zip2 {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
321*9880d681SAndroid Build Coastguard Workerentry:
322*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <2 x double> %a, <2 x double> %b, <2 x i32> <i32 1, i32 3>
323*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %shuffle.i
324*9880d681SAndroid Build Coastguard Worker}
325*9880d681SAndroid Build Coastguard Worker
326*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @test_vuzp2_p8(<8 x i8> %a, <8 x i8> %b) {
327*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vuzp2_p8:
328*9880d681SAndroid Build Coastguard Worker; CHECK: uzp2 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
329*9880d681SAndroid Build Coastguard Workerentry:
330*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <8 x i8> %a, <8 x i8> %b, <8 x i32> <i32 1, i32 3, i32 5, i32 7, i32 9, i32 11, i32 13, i32 15>
331*9880d681SAndroid Build Coastguard Worker  ret <8 x i8> %shuffle.i
332*9880d681SAndroid Build Coastguard Worker}
333*9880d681SAndroid Build Coastguard Worker
334*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_vuzp2q_p8(<16 x i8> %a, <16 x i8> %b) {
335*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vuzp2q_p8:
336*9880d681SAndroid Build Coastguard Worker; CHECK: uzp2 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
337*9880d681SAndroid Build Coastguard Workerentry:
338*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <16 x i8> %a, <16 x i8> %b, <16 x i32> <i32 1, i32 3, i32 5, i32 7, i32 9, i32 11, i32 13, i32 15, i32 17, i32 19, i32 21, i32 23, i32 25, i32 27, i32 29, i32 31>
339*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %shuffle.i
340*9880d681SAndroid Build Coastguard Worker}
341*9880d681SAndroid Build Coastguard Worker
342*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @test_vuzp2_p16(<4 x i16> %a, <4 x i16> %b) {
343*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vuzp2_p16:
344*9880d681SAndroid Build Coastguard Worker; CHECK: uzp2 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
345*9880d681SAndroid Build Coastguard Workerentry:
346*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <4 x i16> %a, <4 x i16> %b, <4 x i32> <i32 1, i32 3, i32 5, i32 7>
347*9880d681SAndroid Build Coastguard Worker  ret <4 x i16> %shuffle.i
348*9880d681SAndroid Build Coastguard Worker}
349*9880d681SAndroid Build Coastguard Worker
350*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_vuzp2q_p16(<8 x i16> %a, <8 x i16> %b) {
351*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vuzp2q_p16:
352*9880d681SAndroid Build Coastguard Worker; CHECK: uzp2 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
353*9880d681SAndroid Build Coastguard Workerentry:
354*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <8 x i16> %a, <8 x i16> %b, <8 x i32> <i32 1, i32 3, i32 5, i32 7, i32 9, i32 11, i32 13, i32 15>
355*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %shuffle.i
356*9880d681SAndroid Build Coastguard Worker}
357*9880d681SAndroid Build Coastguard Worker
358*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @test_vzip1_s8(<8 x i8> %a, <8 x i8> %b) {
359*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vzip1_s8:
360*9880d681SAndroid Build Coastguard Worker; CHECK: zip1 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
361*9880d681SAndroid Build Coastguard Workerentry:
362*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <8 x i8> %a, <8 x i8> %b, <8 x i32> <i32 0, i32 8, i32 1, i32 9, i32 2, i32 10, i32 3, i32 11>
363*9880d681SAndroid Build Coastguard Worker  ret <8 x i8> %shuffle.i
364*9880d681SAndroid Build Coastguard Worker}
365*9880d681SAndroid Build Coastguard Worker
366*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_vzip1q_s8(<16 x i8> %a, <16 x i8> %b) {
367*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vzip1q_s8:
368*9880d681SAndroid Build Coastguard Worker; CHECK: zip1 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
369*9880d681SAndroid Build Coastguard Workerentry:
370*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <16 x i8> %a, <16 x i8> %b, <16 x i32> <i32 0, i32 16, i32 1, i32 17, i32 2, i32 18, i32 3, i32 19, i32 4, i32 20, i32 5, i32 21, i32 6, i32 22, i32 7, i32 23>
371*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %shuffle.i
372*9880d681SAndroid Build Coastguard Worker}
373*9880d681SAndroid Build Coastguard Worker
374*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @test_vzip1_s16(<4 x i16> %a, <4 x i16> %b) {
375*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vzip1_s16:
376*9880d681SAndroid Build Coastguard Worker; CHECK: zip1 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
377*9880d681SAndroid Build Coastguard Workerentry:
378*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <4 x i16> %a, <4 x i16> %b, <4 x i32> <i32 0, i32 4, i32 1, i32 5>
379*9880d681SAndroid Build Coastguard Worker  ret <4 x i16> %shuffle.i
380*9880d681SAndroid Build Coastguard Worker}
381*9880d681SAndroid Build Coastguard Worker
382*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_vzip1q_s16(<8 x i16> %a, <8 x i16> %b) {
383*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vzip1q_s16:
384*9880d681SAndroid Build Coastguard Worker; CHECK: zip1 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
385*9880d681SAndroid Build Coastguard Workerentry:
386*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <8 x i16> %a, <8 x i16> %b, <8 x i32> <i32 0, i32 8, i32 1, i32 9, i32 2, i32 10, i32 3, i32 11>
387*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %shuffle.i
388*9880d681SAndroid Build Coastguard Worker}
389*9880d681SAndroid Build Coastguard Worker
390*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @test_vzip1_s32(<2 x i32> %a, <2 x i32> %b) {
391*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vzip1_s32:
392*9880d681SAndroid Build Coastguard Worker; CHECK: zip1 {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
393*9880d681SAndroid Build Coastguard Workerentry:
394*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <2 x i32> %a, <2 x i32> %b, <2 x i32> <i32 0, i32 2>
395*9880d681SAndroid Build Coastguard Worker  ret <2 x i32> %shuffle.i
396*9880d681SAndroid Build Coastguard Worker}
397*9880d681SAndroid Build Coastguard Worker
398*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test_vzip1q_s32(<4 x i32> %a, <4 x i32> %b) {
399*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vzip1q_s32:
400*9880d681SAndroid Build Coastguard Worker; CHECK: zip1 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
401*9880d681SAndroid Build Coastguard Workerentry:
402*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <4 x i32> %a, <4 x i32> %b, <4 x i32> <i32 0, i32 4, i32 1, i32 5>
403*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %shuffle.i
404*9880d681SAndroid Build Coastguard Worker}
405*9880d681SAndroid Build Coastguard Worker
406*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_vzip1q_s64(<2 x i64> %a, <2 x i64> %b) {
407*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vzip1q_s64:
408*9880d681SAndroid Build Coastguard Worker; CHECK: zip1 {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
409*9880d681SAndroid Build Coastguard Workerentry:
410*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <2 x i64> %a, <2 x i64> %b, <2 x i32> <i32 0, i32 2>
411*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %shuffle.i
412*9880d681SAndroid Build Coastguard Worker}
413*9880d681SAndroid Build Coastguard Worker
414*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @test_vzip1_u8(<8 x i8> %a, <8 x i8> %b) {
415*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vzip1_u8:
416*9880d681SAndroid Build Coastguard Worker; CHECK: zip1 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
417*9880d681SAndroid Build Coastguard Workerentry:
418*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <8 x i8> %a, <8 x i8> %b, <8 x i32> <i32 0, i32 8, i32 1, i32 9, i32 2, i32 10, i32 3, i32 11>
419*9880d681SAndroid Build Coastguard Worker  ret <8 x i8> %shuffle.i
420*9880d681SAndroid Build Coastguard Worker}
421*9880d681SAndroid Build Coastguard Worker
422*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_vzip1q_u8(<16 x i8> %a, <16 x i8> %b) {
423*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vzip1q_u8:
424*9880d681SAndroid Build Coastguard Worker; CHECK: zip1 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
425*9880d681SAndroid Build Coastguard Workerentry:
426*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <16 x i8> %a, <16 x i8> %b, <16 x i32> <i32 0, i32 16, i32 1, i32 17, i32 2, i32 18, i32 3, i32 19, i32 4, i32 20, i32 5, i32 21, i32 6, i32 22, i32 7, i32 23>
427*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %shuffle.i
428*9880d681SAndroid Build Coastguard Worker}
429*9880d681SAndroid Build Coastguard Worker
430*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @test_vzip1_u16(<4 x i16> %a, <4 x i16> %b) {
431*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vzip1_u16:
432*9880d681SAndroid Build Coastguard Worker; CHECK: zip1 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
433*9880d681SAndroid Build Coastguard Workerentry:
434*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <4 x i16> %a, <4 x i16> %b, <4 x i32> <i32 0, i32 4, i32 1, i32 5>
435*9880d681SAndroid Build Coastguard Worker  ret <4 x i16> %shuffle.i
436*9880d681SAndroid Build Coastguard Worker}
437*9880d681SAndroid Build Coastguard Worker
438*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_vzip1q_u16(<8 x i16> %a, <8 x i16> %b) {
439*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vzip1q_u16:
440*9880d681SAndroid Build Coastguard Worker; CHECK: zip1 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
441*9880d681SAndroid Build Coastguard Workerentry:
442*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <8 x i16> %a, <8 x i16> %b, <8 x i32> <i32 0, i32 8, i32 1, i32 9, i32 2, i32 10, i32 3, i32 11>
443*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %shuffle.i
444*9880d681SAndroid Build Coastguard Worker}
445*9880d681SAndroid Build Coastguard Worker
446*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @test_vzip1_u32(<2 x i32> %a, <2 x i32> %b) {
447*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vzip1_u32:
448*9880d681SAndroid Build Coastguard Worker; CHECK: zip1 {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
449*9880d681SAndroid Build Coastguard Workerentry:
450*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <2 x i32> %a, <2 x i32> %b, <2 x i32> <i32 0, i32 2>
451*9880d681SAndroid Build Coastguard Worker  ret <2 x i32> %shuffle.i
452*9880d681SAndroid Build Coastguard Worker}
453*9880d681SAndroid Build Coastguard Worker
454*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test_vzip1q_u32(<4 x i32> %a, <4 x i32> %b) {
455*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vzip1q_u32:
456*9880d681SAndroid Build Coastguard Worker; CHECK: zip1 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
457*9880d681SAndroid Build Coastguard Workerentry:
458*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <4 x i32> %a, <4 x i32> %b, <4 x i32> <i32 0, i32 4, i32 1, i32 5>
459*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %shuffle.i
460*9880d681SAndroid Build Coastguard Worker}
461*9880d681SAndroid Build Coastguard Worker
462*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_vzip1q_u64(<2 x i64> %a, <2 x i64> %b) {
463*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vzip1q_u64:
464*9880d681SAndroid Build Coastguard Worker; CHECK: zip1 {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
465*9880d681SAndroid Build Coastguard Workerentry:
466*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <2 x i64> %a, <2 x i64> %b, <2 x i32> <i32 0, i32 2>
467*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %shuffle.i
468*9880d681SAndroid Build Coastguard Worker}
469*9880d681SAndroid Build Coastguard Worker
470*9880d681SAndroid Build Coastguard Workerdefine <2 x float> @test_vzip1_f32(<2 x float> %a, <2 x float> %b) {
471*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vzip1_f32:
472*9880d681SAndroid Build Coastguard Worker; CHECK: zip1 {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
473*9880d681SAndroid Build Coastguard Workerentry:
474*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <2 x float> %a, <2 x float> %b, <2 x i32> <i32 0, i32 2>
475*9880d681SAndroid Build Coastguard Worker  ret <2 x float> %shuffle.i
476*9880d681SAndroid Build Coastguard Worker}
477*9880d681SAndroid Build Coastguard Worker
478*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_vzip1q_f32(<4 x float> %a, <4 x float> %b) {
479*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vzip1q_f32:
480*9880d681SAndroid Build Coastguard Worker; CHECK: zip1 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
481*9880d681SAndroid Build Coastguard Workerentry:
482*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <4 x float> %a, <4 x float> %b, <4 x i32> <i32 0, i32 4, i32 1, i32 5>
483*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %shuffle.i
484*9880d681SAndroid Build Coastguard Worker}
485*9880d681SAndroid Build Coastguard Worker
486*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_vzip1q_f64(<2 x double> %a, <2 x double> %b) {
487*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vzip1q_f64:
488*9880d681SAndroid Build Coastguard Worker; CHECK: zip1 {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
489*9880d681SAndroid Build Coastguard Workerentry:
490*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <2 x double> %a, <2 x double> %b, <2 x i32> <i32 0, i32 2>
491*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %shuffle.i
492*9880d681SAndroid Build Coastguard Worker}
493*9880d681SAndroid Build Coastguard Worker
494*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @test_vzip1_p8(<8 x i8> %a, <8 x i8> %b) {
495*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vzip1_p8:
496*9880d681SAndroid Build Coastguard Worker; CHECK: zip1 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
497*9880d681SAndroid Build Coastguard Workerentry:
498*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <8 x i8> %a, <8 x i8> %b, <8 x i32> <i32 0, i32 8, i32 1, i32 9, i32 2, i32 10, i32 3, i32 11>
499*9880d681SAndroid Build Coastguard Worker  ret <8 x i8> %shuffle.i
500*9880d681SAndroid Build Coastguard Worker}
501*9880d681SAndroid Build Coastguard Worker
502*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_vzip1q_p8(<16 x i8> %a, <16 x i8> %b) {
503*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vzip1q_p8:
504*9880d681SAndroid Build Coastguard Worker; CHECK: zip1 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
505*9880d681SAndroid Build Coastguard Workerentry:
506*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <16 x i8> %a, <16 x i8> %b, <16 x i32> <i32 0, i32 16, i32 1, i32 17, i32 2, i32 18, i32 3, i32 19, i32 4, i32 20, i32 5, i32 21, i32 6, i32 22, i32 7, i32 23>
507*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %shuffle.i
508*9880d681SAndroid Build Coastguard Worker}
509*9880d681SAndroid Build Coastguard Worker
510*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @test_vzip1_p16(<4 x i16> %a, <4 x i16> %b) {
511*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vzip1_p16:
512*9880d681SAndroid Build Coastguard Worker; CHECK: zip1 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
513*9880d681SAndroid Build Coastguard Workerentry:
514*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <4 x i16> %a, <4 x i16> %b, <4 x i32> <i32 0, i32 4, i32 1, i32 5>
515*9880d681SAndroid Build Coastguard Worker  ret <4 x i16> %shuffle.i
516*9880d681SAndroid Build Coastguard Worker}
517*9880d681SAndroid Build Coastguard Worker
518*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_vzip1q_p16(<8 x i16> %a, <8 x i16> %b) {
519*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vzip1q_p16:
520*9880d681SAndroid Build Coastguard Worker; CHECK: zip1 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
521*9880d681SAndroid Build Coastguard Workerentry:
522*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <8 x i16> %a, <8 x i16> %b, <8 x i32> <i32 0, i32 8, i32 1, i32 9, i32 2, i32 10, i32 3, i32 11>
523*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %shuffle.i
524*9880d681SAndroid Build Coastguard Worker}
525*9880d681SAndroid Build Coastguard Worker
526*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @test_vzip2_s8(<8 x i8> %a, <8 x i8> %b) {
527*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vzip2_s8:
528*9880d681SAndroid Build Coastguard Worker; CHECK: zip2 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
529*9880d681SAndroid Build Coastguard Workerentry:
530*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <8 x i8> %a, <8 x i8> %b, <8 x i32> <i32 4, i32 12, i32 5, i32 13, i32 6, i32 14, i32 7, i32 15>
531*9880d681SAndroid Build Coastguard Worker  ret <8 x i8> %shuffle.i
532*9880d681SAndroid Build Coastguard Worker}
533*9880d681SAndroid Build Coastguard Worker
534*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_vzip2q_s8(<16 x i8> %a, <16 x i8> %b) {
535*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vzip2q_s8:
536*9880d681SAndroid Build Coastguard Worker; CHECK: zip2 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
537*9880d681SAndroid Build Coastguard Workerentry:
538*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <16 x i8> %a, <16 x i8> %b, <16 x i32> <i32 8, i32 24, i32 9, i32 25, i32 10, i32 26, i32 11, i32 27, i32 12, i32 28, i32 13, i32 29, i32 14, i32 30, i32 15, i32 31>
539*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %shuffle.i
540*9880d681SAndroid Build Coastguard Worker}
541*9880d681SAndroid Build Coastguard Worker
542*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @test_vzip2_s16(<4 x i16> %a, <4 x i16> %b) {
543*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vzip2_s16:
544*9880d681SAndroid Build Coastguard Worker; CHECK: zip2 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
545*9880d681SAndroid Build Coastguard Workerentry:
546*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <4 x i16> %a, <4 x i16> %b, <4 x i32> <i32 2, i32 6, i32 3, i32 7>
547*9880d681SAndroid Build Coastguard Worker  ret <4 x i16> %shuffle.i
548*9880d681SAndroid Build Coastguard Worker}
549*9880d681SAndroid Build Coastguard Worker
550*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_vzip2q_s16(<8 x i16> %a, <8 x i16> %b) {
551*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vzip2q_s16:
552*9880d681SAndroid Build Coastguard Worker; CHECK: zip2 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
553*9880d681SAndroid Build Coastguard Workerentry:
554*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <8 x i16> %a, <8 x i16> %b, <8 x i32> <i32 4, i32 12, i32 5, i32 13, i32 6, i32 14, i32 7, i32 15>
555*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %shuffle.i
556*9880d681SAndroid Build Coastguard Worker}
557*9880d681SAndroid Build Coastguard Worker
558*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @test_vzip2_s32(<2 x i32> %a, <2 x i32> %b) {
559*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vzip2_s32:
560*9880d681SAndroid Build Coastguard Worker; CHECK: zip2 {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
561*9880d681SAndroid Build Coastguard Workerentry:
562*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <2 x i32> %a, <2 x i32> %b, <2 x i32> <i32 1, i32 3>
563*9880d681SAndroid Build Coastguard Worker  ret <2 x i32> %shuffle.i
564*9880d681SAndroid Build Coastguard Worker}
565*9880d681SAndroid Build Coastguard Worker
566*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test_vzip2q_s32(<4 x i32> %a, <4 x i32> %b) {
567*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vzip2q_s32:
568*9880d681SAndroid Build Coastguard Worker; CHECK: zip2 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
569*9880d681SAndroid Build Coastguard Workerentry:
570*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <4 x i32> %a, <4 x i32> %b, <4 x i32> <i32 2, i32 6, i32 3, i32 7>
571*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %shuffle.i
572*9880d681SAndroid Build Coastguard Worker}
573*9880d681SAndroid Build Coastguard Worker
574*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_vzip2q_s64(<2 x i64> %a, <2 x i64> %b) {
575*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vzip2q_s64:
576*9880d681SAndroid Build Coastguard Worker; CHECK: zip2 {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
577*9880d681SAndroid Build Coastguard Workerentry:
578*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <2 x i64> %a, <2 x i64> %b, <2 x i32> <i32 1, i32 3>
579*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %shuffle.i
580*9880d681SAndroid Build Coastguard Worker}
581*9880d681SAndroid Build Coastguard Worker
582*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @test_vzip2_u8(<8 x i8> %a, <8 x i8> %b) {
583*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vzip2_u8:
584*9880d681SAndroid Build Coastguard Worker; CHECK: zip2 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
585*9880d681SAndroid Build Coastguard Workerentry:
586*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <8 x i8> %a, <8 x i8> %b, <8 x i32> <i32 4, i32 12, i32 5, i32 13, i32 6, i32 14, i32 7, i32 15>
587*9880d681SAndroid Build Coastguard Worker  ret <8 x i8> %shuffle.i
588*9880d681SAndroid Build Coastguard Worker}
589*9880d681SAndroid Build Coastguard Worker
590*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_vzip2q_u8(<16 x i8> %a, <16 x i8> %b) {
591*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vzip2q_u8:
592*9880d681SAndroid Build Coastguard Worker; CHECK: zip2 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
593*9880d681SAndroid Build Coastguard Workerentry:
594*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <16 x i8> %a, <16 x i8> %b, <16 x i32> <i32 8, i32 24, i32 9, i32 25, i32 10, i32 26, i32 11, i32 27, i32 12, i32 28, i32 13, i32 29, i32 14, i32 30, i32 15, i32 31>
595*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %shuffle.i
596*9880d681SAndroid Build Coastguard Worker}
597*9880d681SAndroid Build Coastguard Worker
598*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @test_vzip2_u16(<4 x i16> %a, <4 x i16> %b) {
599*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vzip2_u16:
600*9880d681SAndroid Build Coastguard Worker; CHECK: zip2 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
601*9880d681SAndroid Build Coastguard Workerentry:
602*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <4 x i16> %a, <4 x i16> %b, <4 x i32> <i32 2, i32 6, i32 3, i32 7>
603*9880d681SAndroid Build Coastguard Worker  ret <4 x i16> %shuffle.i
604*9880d681SAndroid Build Coastguard Worker}
605*9880d681SAndroid Build Coastguard Worker
606*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_vzip2q_u16(<8 x i16> %a, <8 x i16> %b) {
607*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vzip2q_u16:
608*9880d681SAndroid Build Coastguard Worker; CHECK: zip2 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
609*9880d681SAndroid Build Coastguard Workerentry:
610*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <8 x i16> %a, <8 x i16> %b, <8 x i32> <i32 4, i32 12, i32 5, i32 13, i32 6, i32 14, i32 7, i32 15>
611*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %shuffle.i
612*9880d681SAndroid Build Coastguard Worker}
613*9880d681SAndroid Build Coastguard Worker
614*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @test_vzip2_u32(<2 x i32> %a, <2 x i32> %b) {
615*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vzip2_u32:
616*9880d681SAndroid Build Coastguard Worker; CHECK: zip2 {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
617*9880d681SAndroid Build Coastguard Workerentry:
618*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <2 x i32> %a, <2 x i32> %b, <2 x i32> <i32 1, i32 3>
619*9880d681SAndroid Build Coastguard Worker  ret <2 x i32> %shuffle.i
620*9880d681SAndroid Build Coastguard Worker}
621*9880d681SAndroid Build Coastguard Worker
622*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test_vzip2q_u32(<4 x i32> %a, <4 x i32> %b) {
623*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vzip2q_u32:
624*9880d681SAndroid Build Coastguard Worker; CHECK: zip2 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
625*9880d681SAndroid Build Coastguard Workerentry:
626*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <4 x i32> %a, <4 x i32> %b, <4 x i32> <i32 2, i32 6, i32 3, i32 7>
627*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %shuffle.i
628*9880d681SAndroid Build Coastguard Worker}
629*9880d681SAndroid Build Coastguard Worker
630*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_vzip2q_u64(<2 x i64> %a, <2 x i64> %b) {
631*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vzip2q_u64:
632*9880d681SAndroid Build Coastguard Worker; CHECK: zip2 {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
633*9880d681SAndroid Build Coastguard Workerentry:
634*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <2 x i64> %a, <2 x i64> %b, <2 x i32> <i32 1, i32 3>
635*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %shuffle.i
636*9880d681SAndroid Build Coastguard Worker}
637*9880d681SAndroid Build Coastguard Worker
638*9880d681SAndroid Build Coastguard Workerdefine <2 x float> @test_vzip2_f32(<2 x float> %a, <2 x float> %b) {
639*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vzip2_f32:
640*9880d681SAndroid Build Coastguard Worker; CHECK: zip2 {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
641*9880d681SAndroid Build Coastguard Workerentry:
642*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <2 x float> %a, <2 x float> %b, <2 x i32> <i32 1, i32 3>
643*9880d681SAndroid Build Coastguard Worker  ret <2 x float> %shuffle.i
644*9880d681SAndroid Build Coastguard Worker}
645*9880d681SAndroid Build Coastguard Worker
646*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_vzip2q_f32(<4 x float> %a, <4 x float> %b) {
647*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vzip2q_f32:
648*9880d681SAndroid Build Coastguard Worker; CHECK: zip2 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
649*9880d681SAndroid Build Coastguard Workerentry:
650*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <4 x float> %a, <4 x float> %b, <4 x i32> <i32 2, i32 6, i32 3, i32 7>
651*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %shuffle.i
652*9880d681SAndroid Build Coastguard Worker}
653*9880d681SAndroid Build Coastguard Worker
654*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_vzip2q_f64(<2 x double> %a, <2 x double> %b) {
655*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vzip2q_f64:
656*9880d681SAndroid Build Coastguard Worker; CHECK: zip2 {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
657*9880d681SAndroid Build Coastguard Workerentry:
658*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <2 x double> %a, <2 x double> %b, <2 x i32> <i32 1, i32 3>
659*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %shuffle.i
660*9880d681SAndroid Build Coastguard Worker}
661*9880d681SAndroid Build Coastguard Worker
662*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @test_vzip2_p8(<8 x i8> %a, <8 x i8> %b) {
663*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vzip2_p8:
664*9880d681SAndroid Build Coastguard Worker; CHECK: zip2 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
665*9880d681SAndroid Build Coastguard Workerentry:
666*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <8 x i8> %a, <8 x i8> %b, <8 x i32> <i32 4, i32 12, i32 5, i32 13, i32 6, i32 14, i32 7, i32 15>
667*9880d681SAndroid Build Coastguard Worker  ret <8 x i8> %shuffle.i
668*9880d681SAndroid Build Coastguard Worker}
669*9880d681SAndroid Build Coastguard Worker
670*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_vzip2q_p8(<16 x i8> %a, <16 x i8> %b) {
671*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vzip2q_p8:
672*9880d681SAndroid Build Coastguard Worker; CHECK: zip2 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
673*9880d681SAndroid Build Coastguard Workerentry:
674*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <16 x i8> %a, <16 x i8> %b, <16 x i32> <i32 8, i32 24, i32 9, i32 25, i32 10, i32 26, i32 11, i32 27, i32 12, i32 28, i32 13, i32 29, i32 14, i32 30, i32 15, i32 31>
675*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %shuffle.i
676*9880d681SAndroid Build Coastguard Worker}
677*9880d681SAndroid Build Coastguard Worker
678*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @test_vzip2_p16(<4 x i16> %a, <4 x i16> %b) {
679*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vzip2_p16:
680*9880d681SAndroid Build Coastguard Worker; CHECK: zip2 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
681*9880d681SAndroid Build Coastguard Workerentry:
682*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <4 x i16> %a, <4 x i16> %b, <4 x i32> <i32 2, i32 6, i32 3, i32 7>
683*9880d681SAndroid Build Coastguard Worker  ret <4 x i16> %shuffle.i
684*9880d681SAndroid Build Coastguard Worker}
685*9880d681SAndroid Build Coastguard Worker
686*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_vzip2q_p16(<8 x i16> %a, <8 x i16> %b) {
687*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vzip2q_p16:
688*9880d681SAndroid Build Coastguard Worker; CHECK: zip2 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
689*9880d681SAndroid Build Coastguard Workerentry:
690*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <8 x i16> %a, <8 x i16> %b, <8 x i32> <i32 4, i32 12, i32 5, i32 13, i32 6, i32 14, i32 7, i32 15>
691*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %shuffle.i
692*9880d681SAndroid Build Coastguard Worker}
693*9880d681SAndroid Build Coastguard Worker
694*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @test_vtrn1_s8(<8 x i8> %a, <8 x i8> %b) {
695*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vtrn1_s8:
696*9880d681SAndroid Build Coastguard Worker; CHECK: trn1 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
697*9880d681SAndroid Build Coastguard Workerentry:
698*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <8 x i8> %a, <8 x i8> %b, <8 x i32> <i32 0, i32 8, i32 2, i32 10, i32 4, i32 12, i32 6, i32 14>
699*9880d681SAndroid Build Coastguard Worker  ret <8 x i8> %shuffle.i
700*9880d681SAndroid Build Coastguard Worker}
701*9880d681SAndroid Build Coastguard Worker
702*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_vtrn1q_s8(<16 x i8> %a, <16 x i8> %b) {
703*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vtrn1q_s8:
704*9880d681SAndroid Build Coastguard Worker; CHECK: trn1 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
705*9880d681SAndroid Build Coastguard Workerentry:
706*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <16 x i8> %a, <16 x i8> %b, <16 x i32> <i32 0, i32 16, i32 2, i32 18, i32 4, i32 20, i32 6, i32 22, i32 8, i32 24, i32 10, i32 26, i32 12, i32 28, i32 14, i32 30>
707*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %shuffle.i
708*9880d681SAndroid Build Coastguard Worker}
709*9880d681SAndroid Build Coastguard Worker
710*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @test_vtrn1_s16(<4 x i16> %a, <4 x i16> %b) {
711*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vtrn1_s16:
712*9880d681SAndroid Build Coastguard Worker; CHECK: trn1 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
713*9880d681SAndroid Build Coastguard Workerentry:
714*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <4 x i16> %a, <4 x i16> %b, <4 x i32> <i32 0, i32 4, i32 2, i32 6>
715*9880d681SAndroid Build Coastguard Worker  ret <4 x i16> %shuffle.i
716*9880d681SAndroid Build Coastguard Worker}
717*9880d681SAndroid Build Coastguard Worker
718*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_vtrn1q_s16(<8 x i16> %a, <8 x i16> %b) {
719*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vtrn1q_s16:
720*9880d681SAndroid Build Coastguard Worker; CHECK: trn1 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
721*9880d681SAndroid Build Coastguard Workerentry:
722*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <8 x i16> %a, <8 x i16> %b, <8 x i32> <i32 0, i32 8, i32 2, i32 10, i32 4, i32 12, i32 6, i32 14>
723*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %shuffle.i
724*9880d681SAndroid Build Coastguard Worker}
725*9880d681SAndroid Build Coastguard Worker
726*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @test_vtrn1_s32(<2 x i32> %a, <2 x i32> %b) {
727*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vtrn1_s32:
728*9880d681SAndroid Build Coastguard Worker; CHECK: zip1 {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
729*9880d681SAndroid Build Coastguard Workerentry:
730*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <2 x i32> %a, <2 x i32> %b, <2 x i32> <i32 0, i32 2>
731*9880d681SAndroid Build Coastguard Worker  ret <2 x i32> %shuffle.i
732*9880d681SAndroid Build Coastguard Worker}
733*9880d681SAndroid Build Coastguard Worker
734*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test_vtrn1q_s32(<4 x i32> %a, <4 x i32> %b) {
735*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vtrn1q_s32:
736*9880d681SAndroid Build Coastguard Worker; CHECK: trn1 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
737*9880d681SAndroid Build Coastguard Workerentry:
738*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <4 x i32> %a, <4 x i32> %b, <4 x i32> <i32 0, i32 4, i32 2, i32 6>
739*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %shuffle.i
740*9880d681SAndroid Build Coastguard Worker}
741*9880d681SAndroid Build Coastguard Worker
742*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_vtrn1q_s64(<2 x i64> %a, <2 x i64> %b) {
743*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vtrn1q_s64:
744*9880d681SAndroid Build Coastguard Worker; CHECK: zip1 {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
745*9880d681SAndroid Build Coastguard Workerentry:
746*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <2 x i64> %a, <2 x i64> %b, <2 x i32> <i32 0, i32 2>
747*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %shuffle.i
748*9880d681SAndroid Build Coastguard Worker}
749*9880d681SAndroid Build Coastguard Worker
750*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @test_vtrn1_u8(<8 x i8> %a, <8 x i8> %b) {
751*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vtrn1_u8:
752*9880d681SAndroid Build Coastguard Worker; CHECK: trn1 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
753*9880d681SAndroid Build Coastguard Workerentry:
754*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <8 x i8> %a, <8 x i8> %b, <8 x i32> <i32 0, i32 8, i32 2, i32 10, i32 4, i32 12, i32 6, i32 14>
755*9880d681SAndroid Build Coastguard Worker  ret <8 x i8> %shuffle.i
756*9880d681SAndroid Build Coastguard Worker}
757*9880d681SAndroid Build Coastguard Worker
758*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_vtrn1q_u8(<16 x i8> %a, <16 x i8> %b) {
759*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vtrn1q_u8:
760*9880d681SAndroid Build Coastguard Worker; CHECK: trn1 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
761*9880d681SAndroid Build Coastguard Workerentry:
762*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <16 x i8> %a, <16 x i8> %b, <16 x i32> <i32 0, i32 16, i32 2, i32 18, i32 4, i32 20, i32 6, i32 22, i32 8, i32 24, i32 10, i32 26, i32 12, i32 28, i32 14, i32 30>
763*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %shuffle.i
764*9880d681SAndroid Build Coastguard Worker}
765*9880d681SAndroid Build Coastguard Worker
766*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @test_vtrn1_u16(<4 x i16> %a, <4 x i16> %b) {
767*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vtrn1_u16:
768*9880d681SAndroid Build Coastguard Worker; CHECK: trn1 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
769*9880d681SAndroid Build Coastguard Workerentry:
770*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <4 x i16> %a, <4 x i16> %b, <4 x i32> <i32 0, i32 4, i32 2, i32 6>
771*9880d681SAndroid Build Coastguard Worker  ret <4 x i16> %shuffle.i
772*9880d681SAndroid Build Coastguard Worker}
773*9880d681SAndroid Build Coastguard Worker
774*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_vtrn1q_u16(<8 x i16> %a, <8 x i16> %b) {
775*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vtrn1q_u16:
776*9880d681SAndroid Build Coastguard Worker; CHECK: trn1 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
777*9880d681SAndroid Build Coastguard Workerentry:
778*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <8 x i16> %a, <8 x i16> %b, <8 x i32> <i32 0, i32 8, i32 2, i32 10, i32 4, i32 12, i32 6, i32 14>
779*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %shuffle.i
780*9880d681SAndroid Build Coastguard Worker}
781*9880d681SAndroid Build Coastguard Worker
782*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @test_vtrn1_u32(<2 x i32> %a, <2 x i32> %b) {
783*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vtrn1_u32:
784*9880d681SAndroid Build Coastguard Worker; CHECK: zip1 {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
785*9880d681SAndroid Build Coastguard Workerentry:
786*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <2 x i32> %a, <2 x i32> %b, <2 x i32> <i32 0, i32 2>
787*9880d681SAndroid Build Coastguard Worker  ret <2 x i32> %shuffle.i
788*9880d681SAndroid Build Coastguard Worker}
789*9880d681SAndroid Build Coastguard Worker
790*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test_vtrn1q_u32(<4 x i32> %a, <4 x i32> %b) {
791*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vtrn1q_u32:
792*9880d681SAndroid Build Coastguard Worker; CHECK: trn1 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
793*9880d681SAndroid Build Coastguard Workerentry:
794*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <4 x i32> %a, <4 x i32> %b, <4 x i32> <i32 0, i32 4, i32 2, i32 6>
795*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %shuffle.i
796*9880d681SAndroid Build Coastguard Worker}
797*9880d681SAndroid Build Coastguard Worker
798*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_vtrn1q_u64(<2 x i64> %a, <2 x i64> %b) {
799*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vtrn1q_u64:
800*9880d681SAndroid Build Coastguard Worker; CHECK: zip1 {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
801*9880d681SAndroid Build Coastguard Workerentry:
802*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <2 x i64> %a, <2 x i64> %b, <2 x i32> <i32 0, i32 2>
803*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %shuffle.i
804*9880d681SAndroid Build Coastguard Worker}
805*9880d681SAndroid Build Coastguard Worker
806*9880d681SAndroid Build Coastguard Workerdefine <2 x float> @test_vtrn1_f32(<2 x float> %a, <2 x float> %b) {
807*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vtrn1_f32:
808*9880d681SAndroid Build Coastguard Worker; CHECK: zip1 {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
809*9880d681SAndroid Build Coastguard Workerentry:
810*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <2 x float> %a, <2 x float> %b, <2 x i32> <i32 0, i32 2>
811*9880d681SAndroid Build Coastguard Worker  ret <2 x float> %shuffle.i
812*9880d681SAndroid Build Coastguard Worker}
813*9880d681SAndroid Build Coastguard Worker
814*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_vtrn1q_f32(<4 x float> %a, <4 x float> %b) {
815*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vtrn1q_f32:
816*9880d681SAndroid Build Coastguard Worker; CHECK: trn1 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
817*9880d681SAndroid Build Coastguard Workerentry:
818*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <4 x float> %a, <4 x float> %b, <4 x i32> <i32 0, i32 4, i32 2, i32 6>
819*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %shuffle.i
820*9880d681SAndroid Build Coastguard Worker}
821*9880d681SAndroid Build Coastguard Worker
822*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_vtrn1q_f64(<2 x double> %a, <2 x double> %b) {
823*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vtrn1q_f64:
824*9880d681SAndroid Build Coastguard Worker; CHECK: zip1 {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
825*9880d681SAndroid Build Coastguard Workerentry:
826*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <2 x double> %a, <2 x double> %b, <2 x i32> <i32 0, i32 2>
827*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %shuffle.i
828*9880d681SAndroid Build Coastguard Worker}
829*9880d681SAndroid Build Coastguard Worker
830*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @test_vtrn1_p8(<8 x i8> %a, <8 x i8> %b) {
831*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vtrn1_p8:
832*9880d681SAndroid Build Coastguard Worker; CHECK: trn1 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
833*9880d681SAndroid Build Coastguard Workerentry:
834*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <8 x i8> %a, <8 x i8> %b, <8 x i32> <i32 0, i32 8, i32 2, i32 10, i32 4, i32 12, i32 6, i32 14>
835*9880d681SAndroid Build Coastguard Worker  ret <8 x i8> %shuffle.i
836*9880d681SAndroid Build Coastguard Worker}
837*9880d681SAndroid Build Coastguard Worker
838*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_vtrn1q_p8(<16 x i8> %a, <16 x i8> %b) {
839*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vtrn1q_p8:
840*9880d681SAndroid Build Coastguard Worker; CHECK: trn1 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
841*9880d681SAndroid Build Coastguard Workerentry:
842*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <16 x i8> %a, <16 x i8> %b, <16 x i32> <i32 0, i32 16, i32 2, i32 18, i32 4, i32 20, i32 6, i32 22, i32 8, i32 24, i32 10, i32 26, i32 12, i32 28, i32 14, i32 30>
843*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %shuffle.i
844*9880d681SAndroid Build Coastguard Worker}
845*9880d681SAndroid Build Coastguard Worker
846*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @test_vtrn1_p16(<4 x i16> %a, <4 x i16> %b) {
847*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vtrn1_p16:
848*9880d681SAndroid Build Coastguard Worker; CHECK: trn1 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
849*9880d681SAndroid Build Coastguard Workerentry:
850*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <4 x i16> %a, <4 x i16> %b, <4 x i32> <i32 0, i32 4, i32 2, i32 6>
851*9880d681SAndroid Build Coastguard Worker  ret <4 x i16> %shuffle.i
852*9880d681SAndroid Build Coastguard Worker}
853*9880d681SAndroid Build Coastguard Worker
854*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_vtrn1q_p16(<8 x i16> %a, <8 x i16> %b) {
855*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vtrn1q_p16:
856*9880d681SAndroid Build Coastguard Worker; CHECK: trn1 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
857*9880d681SAndroid Build Coastguard Workerentry:
858*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <8 x i16> %a, <8 x i16> %b, <8 x i32> <i32 0, i32 8, i32 2, i32 10, i32 4, i32 12, i32 6, i32 14>
859*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %shuffle.i
860*9880d681SAndroid Build Coastguard Worker}
861*9880d681SAndroid Build Coastguard Worker
862*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @test_vtrn2_s8(<8 x i8> %a, <8 x i8> %b) {
863*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vtrn2_s8:
864*9880d681SAndroid Build Coastguard Worker; CHECK: trn2 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
865*9880d681SAndroid Build Coastguard Workerentry:
866*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <8 x i8> %a, <8 x i8> %b, <8 x i32> <i32 1, i32 9, i32 3, i32 11, i32 5, i32 13, i32 7, i32 15>
867*9880d681SAndroid Build Coastguard Worker  ret <8 x i8> %shuffle.i
868*9880d681SAndroid Build Coastguard Worker}
869*9880d681SAndroid Build Coastguard Worker
870*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_vtrn2q_s8(<16 x i8> %a, <16 x i8> %b) {
871*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vtrn2q_s8:
872*9880d681SAndroid Build Coastguard Worker; CHECK: trn2 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
873*9880d681SAndroid Build Coastguard Workerentry:
874*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <16 x i8> %a, <16 x i8> %b, <16 x i32> <i32 1, i32 17, i32 3, i32 19, i32 5, i32 21, i32 7, i32 23, i32 9, i32 25, i32 11, i32 27, i32 13, i32 29, i32 15, i32 31>
875*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %shuffle.i
876*9880d681SAndroid Build Coastguard Worker}
877*9880d681SAndroid Build Coastguard Worker
878*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @test_vtrn2_s16(<4 x i16> %a, <4 x i16> %b) {
879*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vtrn2_s16:
880*9880d681SAndroid Build Coastguard Worker; CHECK: trn2 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
881*9880d681SAndroid Build Coastguard Workerentry:
882*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <4 x i16> %a, <4 x i16> %b, <4 x i32> <i32 1, i32 5, i32 3, i32 7>
883*9880d681SAndroid Build Coastguard Worker  ret <4 x i16> %shuffle.i
884*9880d681SAndroid Build Coastguard Worker}
885*9880d681SAndroid Build Coastguard Worker
886*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_vtrn2q_s16(<8 x i16> %a, <8 x i16> %b) {
887*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vtrn2q_s16:
888*9880d681SAndroid Build Coastguard Worker; CHECK: trn2 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
889*9880d681SAndroid Build Coastguard Workerentry:
890*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <8 x i16> %a, <8 x i16> %b, <8 x i32> <i32 1, i32 9, i32 3, i32 11, i32 5, i32 13, i32 7, i32 15>
891*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %shuffle.i
892*9880d681SAndroid Build Coastguard Worker}
893*9880d681SAndroid Build Coastguard Worker
894*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @test_vtrn2_s32(<2 x i32> %a, <2 x i32> %b) {
895*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vtrn2_s32:
896*9880d681SAndroid Build Coastguard Worker; CHECK: zip2 {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
897*9880d681SAndroid Build Coastguard Workerentry:
898*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <2 x i32> %a, <2 x i32> %b, <2 x i32> <i32 1, i32 3>
899*9880d681SAndroid Build Coastguard Worker  ret <2 x i32> %shuffle.i
900*9880d681SAndroid Build Coastguard Worker}
901*9880d681SAndroid Build Coastguard Worker
902*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test_vtrn2q_s32(<4 x i32> %a, <4 x i32> %b) {
903*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vtrn2q_s32:
904*9880d681SAndroid Build Coastguard Worker; CHECK: trn2 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
905*9880d681SAndroid Build Coastguard Workerentry:
906*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <4 x i32> %a, <4 x i32> %b, <4 x i32> <i32 1, i32 5, i32 3, i32 7>
907*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %shuffle.i
908*9880d681SAndroid Build Coastguard Worker}
909*9880d681SAndroid Build Coastguard Worker
910*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_vtrn2q_s64(<2 x i64> %a, <2 x i64> %b) {
911*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vtrn2q_s64:
912*9880d681SAndroid Build Coastguard Worker; CHECK: zip2 {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
913*9880d681SAndroid Build Coastguard Workerentry:
914*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <2 x i64> %a, <2 x i64> %b, <2 x i32> <i32 1, i32 3>
915*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %shuffle.i
916*9880d681SAndroid Build Coastguard Worker}
917*9880d681SAndroid Build Coastguard Worker
918*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @test_vtrn2_u8(<8 x i8> %a, <8 x i8> %b) {
919*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vtrn2_u8:
920*9880d681SAndroid Build Coastguard Worker; CHECK: trn2 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
921*9880d681SAndroid Build Coastguard Workerentry:
922*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <8 x i8> %a, <8 x i8> %b, <8 x i32> <i32 1, i32 9, i32 3, i32 11, i32 5, i32 13, i32 7, i32 15>
923*9880d681SAndroid Build Coastguard Worker  ret <8 x i8> %shuffle.i
924*9880d681SAndroid Build Coastguard Worker}
925*9880d681SAndroid Build Coastguard Worker
926*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_vtrn2q_u8(<16 x i8> %a, <16 x i8> %b) {
927*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vtrn2q_u8:
928*9880d681SAndroid Build Coastguard Worker; CHECK: trn2 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
929*9880d681SAndroid Build Coastguard Workerentry:
930*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <16 x i8> %a, <16 x i8> %b, <16 x i32> <i32 1, i32 17, i32 3, i32 19, i32 5, i32 21, i32 7, i32 23, i32 9, i32 25, i32 11, i32 27, i32 13, i32 29, i32 15, i32 31>
931*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %shuffle.i
932*9880d681SAndroid Build Coastguard Worker}
933*9880d681SAndroid Build Coastguard Worker
934*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @test_vtrn2_u16(<4 x i16> %a, <4 x i16> %b) {
935*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vtrn2_u16:
936*9880d681SAndroid Build Coastguard Worker; CHECK: trn2 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
937*9880d681SAndroid Build Coastguard Workerentry:
938*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <4 x i16> %a, <4 x i16> %b, <4 x i32> <i32 1, i32 5, i32 3, i32 7>
939*9880d681SAndroid Build Coastguard Worker  ret <4 x i16> %shuffle.i
940*9880d681SAndroid Build Coastguard Worker}
941*9880d681SAndroid Build Coastguard Worker
942*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_vtrn2q_u16(<8 x i16> %a, <8 x i16> %b) {
943*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vtrn2q_u16:
944*9880d681SAndroid Build Coastguard Worker; CHECK: trn2 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
945*9880d681SAndroid Build Coastguard Workerentry:
946*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <8 x i16> %a, <8 x i16> %b, <8 x i32> <i32 1, i32 9, i32 3, i32 11, i32 5, i32 13, i32 7, i32 15>
947*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %shuffle.i
948*9880d681SAndroid Build Coastguard Worker}
949*9880d681SAndroid Build Coastguard Worker
950*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @test_vtrn2_u32(<2 x i32> %a, <2 x i32> %b) {
951*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vtrn2_u32:
952*9880d681SAndroid Build Coastguard Worker; CHECK: zip2 {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
953*9880d681SAndroid Build Coastguard Workerentry:
954*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <2 x i32> %a, <2 x i32> %b, <2 x i32> <i32 1, i32 3>
955*9880d681SAndroid Build Coastguard Worker  ret <2 x i32> %shuffle.i
956*9880d681SAndroid Build Coastguard Worker}
957*9880d681SAndroid Build Coastguard Worker
958*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test_vtrn2q_u32(<4 x i32> %a, <4 x i32> %b) {
959*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vtrn2q_u32:
960*9880d681SAndroid Build Coastguard Worker; CHECK: trn2 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
961*9880d681SAndroid Build Coastguard Workerentry:
962*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <4 x i32> %a, <4 x i32> %b, <4 x i32> <i32 1, i32 5, i32 3, i32 7>
963*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %shuffle.i
964*9880d681SAndroid Build Coastguard Worker}
965*9880d681SAndroid Build Coastguard Worker
966*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_vtrn2q_u64(<2 x i64> %a, <2 x i64> %b) {
967*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vtrn2q_u64:
968*9880d681SAndroid Build Coastguard Worker; CHECK: zip2 {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
969*9880d681SAndroid Build Coastguard Workerentry:
970*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <2 x i64> %a, <2 x i64> %b, <2 x i32> <i32 1, i32 3>
971*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %shuffle.i
972*9880d681SAndroid Build Coastguard Worker}
973*9880d681SAndroid Build Coastguard Worker
974*9880d681SAndroid Build Coastguard Workerdefine <2 x float> @test_vtrn2_f32(<2 x float> %a, <2 x float> %b) {
975*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vtrn2_f32:
976*9880d681SAndroid Build Coastguard Worker; CHECK: zip2 {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
977*9880d681SAndroid Build Coastguard Workerentry:
978*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <2 x float> %a, <2 x float> %b, <2 x i32> <i32 1, i32 3>
979*9880d681SAndroid Build Coastguard Worker  ret <2 x float> %shuffle.i
980*9880d681SAndroid Build Coastguard Worker}
981*9880d681SAndroid Build Coastguard Worker
982*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_vtrn2q_f32(<4 x float> %a, <4 x float> %b) {
983*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vtrn2q_f32:
984*9880d681SAndroid Build Coastguard Worker; CHECK: trn2 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
985*9880d681SAndroid Build Coastguard Workerentry:
986*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <4 x float> %a, <4 x float> %b, <4 x i32> <i32 1, i32 5, i32 3, i32 7>
987*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %shuffle.i
988*9880d681SAndroid Build Coastguard Worker}
989*9880d681SAndroid Build Coastguard Worker
990*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_vtrn2q_f64(<2 x double> %a, <2 x double> %b) {
991*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vtrn2q_f64:
992*9880d681SAndroid Build Coastguard Worker; CHECK: zip2 {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
993*9880d681SAndroid Build Coastguard Workerentry:
994*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <2 x double> %a, <2 x double> %b, <2 x i32> <i32 1, i32 3>
995*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %shuffle.i
996*9880d681SAndroid Build Coastguard Worker}
997*9880d681SAndroid Build Coastguard Worker
998*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @test_vtrn2_p8(<8 x i8> %a, <8 x i8> %b) {
999*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vtrn2_p8:
1000*9880d681SAndroid Build Coastguard Worker; CHECK: trn2 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
1001*9880d681SAndroid Build Coastguard Workerentry:
1002*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <8 x i8> %a, <8 x i8> %b, <8 x i32> <i32 1, i32 9, i32 3, i32 11, i32 5, i32 13, i32 7, i32 15>
1003*9880d681SAndroid Build Coastguard Worker  ret <8 x i8> %shuffle.i
1004*9880d681SAndroid Build Coastguard Worker}
1005*9880d681SAndroid Build Coastguard Worker
1006*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_vtrn2q_p8(<16 x i8> %a, <16 x i8> %b) {
1007*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vtrn2q_p8:
1008*9880d681SAndroid Build Coastguard Worker; CHECK: trn2 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
1009*9880d681SAndroid Build Coastguard Workerentry:
1010*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <16 x i8> %a, <16 x i8> %b, <16 x i32> <i32 1, i32 17, i32 3, i32 19, i32 5, i32 21, i32 7, i32 23, i32 9, i32 25, i32 11, i32 27, i32 13, i32 29, i32 15, i32 31>
1011*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %shuffle.i
1012*9880d681SAndroid Build Coastguard Worker}
1013*9880d681SAndroid Build Coastguard Worker
1014*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @test_vtrn2_p16(<4 x i16> %a, <4 x i16> %b) {
1015*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vtrn2_p16:
1016*9880d681SAndroid Build Coastguard Worker; CHECK: trn2 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
1017*9880d681SAndroid Build Coastguard Workerentry:
1018*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <4 x i16> %a, <4 x i16> %b, <4 x i32> <i32 1, i32 5, i32 3, i32 7>
1019*9880d681SAndroid Build Coastguard Worker  ret <4 x i16> %shuffle.i
1020*9880d681SAndroid Build Coastguard Worker}
1021*9880d681SAndroid Build Coastguard Worker
1022*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_vtrn2q_p16(<8 x i16> %a, <8 x i16> %b) {
1023*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vtrn2q_p16:
1024*9880d681SAndroid Build Coastguard Worker; CHECK: trn2 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
1025*9880d681SAndroid Build Coastguard Workerentry:
1026*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <8 x i16> %a, <8 x i16> %b, <8 x i32> <i32 1, i32 9, i32 3, i32 11, i32 5, i32 13, i32 7, i32 15>
1027*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %shuffle.i
1028*9880d681SAndroid Build Coastguard Worker}
1029*9880d681SAndroid Build Coastguard Worker
1030*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @test_same_vuzp1_s8(<8 x i8> %a) {
1031*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_same_vuzp1_s8:
1032*9880d681SAndroid Build Coastguard Worker; CHECK: uzp1 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
1033*9880d681SAndroid Build Coastguard Workerentry:
1034*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <8 x i8> %a, <8 x i8> %a, <8 x i32> <i32 0, i32 2, i32 4, i32 6, i32 8, i32 10, i32 12, i32 14>
1035*9880d681SAndroid Build Coastguard Worker  ret <8 x i8> %shuffle.i
1036*9880d681SAndroid Build Coastguard Worker}
1037*9880d681SAndroid Build Coastguard Worker
1038*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_same_vuzp1q_s8(<16 x i8> %a) {
1039*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_same_vuzp1q_s8:
1040*9880d681SAndroid Build Coastguard Worker; CHECK: uzp1 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
1041*9880d681SAndroid Build Coastguard Workerentry:
1042*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <16 x i8> %a, <16 x i8> %a, <16 x i32> <i32 0, i32 2, i32 4, i32 6, i32 8, i32 10, i32 12, i32 14, i32 16, i32 18, i32 20, i32 22, i32 24, i32 26, i32 28, i32 30>
1043*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %shuffle.i
1044*9880d681SAndroid Build Coastguard Worker}
1045*9880d681SAndroid Build Coastguard Worker
1046*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @test_same_vuzp1_s16(<4 x i16> %a) {
1047*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_same_vuzp1_s16:
1048*9880d681SAndroid Build Coastguard Worker; CHECK: uzp1 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
1049*9880d681SAndroid Build Coastguard Workerentry:
1050*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <4 x i16> %a, <4 x i16> %a, <4 x i32> <i32 0, i32 2, i32 4, i32 6>
1051*9880d681SAndroid Build Coastguard Worker  ret <4 x i16> %shuffle.i
1052*9880d681SAndroid Build Coastguard Worker}
1053*9880d681SAndroid Build Coastguard Worker
1054*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_same_vuzp1q_s16(<8 x i16> %a) {
1055*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_same_vuzp1q_s16:
1056*9880d681SAndroid Build Coastguard Worker; CHECK: uzp1 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
1057*9880d681SAndroid Build Coastguard Workerentry:
1058*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <8 x i16> %a, <8 x i16> %a, <8 x i32> <i32 0, i32 2, i32 4, i32 6, i32 8, i32 10, i32 12, i32 14>
1059*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %shuffle.i
1060*9880d681SAndroid Build Coastguard Worker}
1061*9880d681SAndroid Build Coastguard Worker
1062*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test_same_vuzp1q_s32(<4 x i32> %a) {
1063*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_same_vuzp1q_s32:
1064*9880d681SAndroid Build Coastguard Worker; CHECK: uzp1 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
1065*9880d681SAndroid Build Coastguard Workerentry:
1066*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <4 x i32> %a, <4 x i32> %a, <4 x i32> <i32 0, i32 2, i32 4, i32 6>
1067*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %shuffle.i
1068*9880d681SAndroid Build Coastguard Worker}
1069*9880d681SAndroid Build Coastguard Worker
1070*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @test_same_vuzp1_u8(<8 x i8> %a) {
1071*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_same_vuzp1_u8:
1072*9880d681SAndroid Build Coastguard Worker; CHECK: uzp1 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
1073*9880d681SAndroid Build Coastguard Workerentry:
1074*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <8 x i8> %a, <8 x i8> %a, <8 x i32> <i32 0, i32 2, i32 4, i32 6, i32 8, i32 10, i32 12, i32 14>
1075*9880d681SAndroid Build Coastguard Worker  ret <8 x i8> %shuffle.i
1076*9880d681SAndroid Build Coastguard Worker}
1077*9880d681SAndroid Build Coastguard Worker
1078*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_same_vuzp1q_u8(<16 x i8> %a) {
1079*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_same_vuzp1q_u8:
1080*9880d681SAndroid Build Coastguard Worker; CHECK: uzp1 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
1081*9880d681SAndroid Build Coastguard Workerentry:
1082*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <16 x i8> %a, <16 x i8> %a, <16 x i32> <i32 0, i32 2, i32 4, i32 6, i32 8, i32 10, i32 12, i32 14, i32 16, i32 18, i32 20, i32 22, i32 24, i32 26, i32 28, i32 30>
1083*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %shuffle.i
1084*9880d681SAndroid Build Coastguard Worker}
1085*9880d681SAndroid Build Coastguard Worker
1086*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @test_same_vuzp1_u16(<4 x i16> %a) {
1087*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_same_vuzp1_u16:
1088*9880d681SAndroid Build Coastguard Worker; CHECK: uzp1 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
1089*9880d681SAndroid Build Coastguard Workerentry:
1090*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <4 x i16> %a, <4 x i16> %a, <4 x i32> <i32 0, i32 2, i32 4, i32 6>
1091*9880d681SAndroid Build Coastguard Worker  ret <4 x i16> %shuffle.i
1092*9880d681SAndroid Build Coastguard Worker}
1093*9880d681SAndroid Build Coastguard Worker
1094*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_same_vuzp1q_u16(<8 x i16> %a) {
1095*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_same_vuzp1q_u16:
1096*9880d681SAndroid Build Coastguard Worker; CHECK: uzp1 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
1097*9880d681SAndroid Build Coastguard Workerentry:
1098*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <8 x i16> %a, <8 x i16> %a, <8 x i32> <i32 0, i32 2, i32 4, i32 6, i32 8, i32 10, i32 12, i32 14>
1099*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %shuffle.i
1100*9880d681SAndroid Build Coastguard Worker}
1101*9880d681SAndroid Build Coastguard Worker
1102*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test_same_vuzp1q_u32(<4 x i32> %a) {
1103*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_same_vuzp1q_u32:
1104*9880d681SAndroid Build Coastguard Worker; CHECK: uzp1 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
1105*9880d681SAndroid Build Coastguard Workerentry:
1106*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <4 x i32> %a, <4 x i32> %a, <4 x i32> <i32 0, i32 2, i32 4, i32 6>
1107*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %shuffle.i
1108*9880d681SAndroid Build Coastguard Worker}
1109*9880d681SAndroid Build Coastguard Worker
1110*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_same_vuzp1q_f32(<4 x float> %a) {
1111*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_same_vuzp1q_f32:
1112*9880d681SAndroid Build Coastguard Worker; CHECK: uzp1 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
1113*9880d681SAndroid Build Coastguard Workerentry:
1114*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <4 x float> %a, <4 x float> %a, <4 x i32> <i32 0, i32 2, i32 4, i32 6>
1115*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %shuffle.i
1116*9880d681SAndroid Build Coastguard Worker}
1117*9880d681SAndroid Build Coastguard Worker
1118*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @test_same_vuzp1_p8(<8 x i8> %a) {
1119*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_same_vuzp1_p8:
1120*9880d681SAndroid Build Coastguard Worker; CHECK: uzp1 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
1121*9880d681SAndroid Build Coastguard Workerentry:
1122*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <8 x i8> %a, <8 x i8> %a, <8 x i32> <i32 0, i32 2, i32 4, i32 6, i32 8, i32 10, i32 12, i32 14>
1123*9880d681SAndroid Build Coastguard Worker  ret <8 x i8> %shuffle.i
1124*9880d681SAndroid Build Coastguard Worker}
1125*9880d681SAndroid Build Coastguard Worker
1126*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_same_vuzp1q_p8(<16 x i8> %a) {
1127*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_same_vuzp1q_p8:
1128*9880d681SAndroid Build Coastguard Worker; CHECK: uzp1 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
1129*9880d681SAndroid Build Coastguard Workerentry:
1130*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <16 x i8> %a, <16 x i8> %a, <16 x i32> <i32 0, i32 2, i32 4, i32 6, i32 8, i32 10, i32 12, i32 14, i32 16, i32 18, i32 20, i32 22, i32 24, i32 26, i32 28, i32 30>
1131*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %shuffle.i
1132*9880d681SAndroid Build Coastguard Worker}
1133*9880d681SAndroid Build Coastguard Worker
1134*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @test_same_vuzp1_p16(<4 x i16> %a) {
1135*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_same_vuzp1_p16:
1136*9880d681SAndroid Build Coastguard Worker; CHECK: uzp1 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
1137*9880d681SAndroid Build Coastguard Workerentry:
1138*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <4 x i16> %a, <4 x i16> %a, <4 x i32> <i32 0, i32 2, i32 4, i32 6>
1139*9880d681SAndroid Build Coastguard Worker  ret <4 x i16> %shuffle.i
1140*9880d681SAndroid Build Coastguard Worker}
1141*9880d681SAndroid Build Coastguard Worker
1142*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_same_vuzp1q_p16(<8 x i16> %a) {
1143*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_same_vuzp1q_p16:
1144*9880d681SAndroid Build Coastguard Worker; CHECK: uzp1 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
1145*9880d681SAndroid Build Coastguard Workerentry:
1146*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <8 x i16> %a, <8 x i16> %a, <8 x i32> <i32 0, i32 2, i32 4, i32 6, i32 8, i32 10, i32 12, i32 14>
1147*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %shuffle.i
1148*9880d681SAndroid Build Coastguard Worker}
1149*9880d681SAndroid Build Coastguard Worker
1150*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @test_same_vuzp2_s8(<8 x i8> %a) {
1151*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_same_vuzp2_s8:
1152*9880d681SAndroid Build Coastguard Worker; CHECK: uzp2 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
1153*9880d681SAndroid Build Coastguard Workerentry:
1154*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <8 x i8> %a, <8 x i8> %a, <8 x i32> <i32 1, i32 3, i32 5, i32 7, i32 9, i32 11, i32 13, i32 15>
1155*9880d681SAndroid Build Coastguard Worker  ret <8 x i8> %shuffle.i
1156*9880d681SAndroid Build Coastguard Worker}
1157*9880d681SAndroid Build Coastguard Worker
1158*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_same_vuzp2q_s8(<16 x i8> %a) {
1159*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_same_vuzp2q_s8:
1160*9880d681SAndroid Build Coastguard Worker; CHECK: uzp2 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
1161*9880d681SAndroid Build Coastguard Workerentry:
1162*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <16 x i8> %a, <16 x i8> %a, <16 x i32> <i32 1, i32 3, i32 5, i32 7, i32 9, i32 11, i32 13, i32 15, i32 17, i32 19, i32 21, i32 23, i32 25, i32 27, i32 29, i32 31>
1163*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %shuffle.i
1164*9880d681SAndroid Build Coastguard Worker}
1165*9880d681SAndroid Build Coastguard Worker
1166*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @test_same_vuzp2_s16(<4 x i16> %a) {
1167*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_same_vuzp2_s16:
1168*9880d681SAndroid Build Coastguard Worker; CHECK: uzp2 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
1169*9880d681SAndroid Build Coastguard Workerentry:
1170*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <4 x i16> %a, <4 x i16> %a, <4 x i32> <i32 1, i32 3, i32 5, i32 7>
1171*9880d681SAndroid Build Coastguard Worker  ret <4 x i16> %shuffle.i
1172*9880d681SAndroid Build Coastguard Worker}
1173*9880d681SAndroid Build Coastguard Worker
1174*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_same_vuzp2q_s16(<8 x i16> %a) {
1175*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_same_vuzp2q_s16:
1176*9880d681SAndroid Build Coastguard Worker; CHECK: uzp2 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
1177*9880d681SAndroid Build Coastguard Workerentry:
1178*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <8 x i16> %a, <8 x i16> %a, <8 x i32> <i32 1, i32 3, i32 5, i32 7, i32 9, i32 11, i32 13, i32 15>
1179*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %shuffle.i
1180*9880d681SAndroid Build Coastguard Worker}
1181*9880d681SAndroid Build Coastguard Worker
1182*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test_same_vuzp2q_s32(<4 x i32> %a) {
1183*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_same_vuzp2q_s32:
1184*9880d681SAndroid Build Coastguard Worker; CHECK: uzp2 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
1185*9880d681SAndroid Build Coastguard Workerentry:
1186*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <4 x i32> %a, <4 x i32> %a, <4 x i32> <i32 1, i32 3, i32 5, i32 7>
1187*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %shuffle.i
1188*9880d681SAndroid Build Coastguard Worker}
1189*9880d681SAndroid Build Coastguard Worker
1190*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @test_same_vuzp2_u8(<8 x i8> %a) {
1191*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_same_vuzp2_u8:
1192*9880d681SAndroid Build Coastguard Worker; CHECK: uzp2 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
1193*9880d681SAndroid Build Coastguard Workerentry:
1194*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <8 x i8> %a, <8 x i8> %a, <8 x i32> <i32 1, i32 3, i32 5, i32 7, i32 9, i32 11, i32 13, i32 15>
1195*9880d681SAndroid Build Coastguard Worker  ret <8 x i8> %shuffle.i
1196*9880d681SAndroid Build Coastguard Worker}
1197*9880d681SAndroid Build Coastguard Worker
1198*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_same_vuzp2q_u8(<16 x i8> %a) {
1199*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_same_vuzp2q_u8:
1200*9880d681SAndroid Build Coastguard Worker; CHECK: uzp2 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
1201*9880d681SAndroid Build Coastguard Workerentry:
1202*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <16 x i8> %a, <16 x i8> %a, <16 x i32> <i32 1, i32 3, i32 5, i32 7, i32 9, i32 11, i32 13, i32 15, i32 17, i32 19, i32 21, i32 23, i32 25, i32 27, i32 29, i32 31>
1203*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %shuffle.i
1204*9880d681SAndroid Build Coastguard Worker}
1205*9880d681SAndroid Build Coastguard Worker
1206*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @test_same_vuzp2_u16(<4 x i16> %a) {
1207*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_same_vuzp2_u16:
1208*9880d681SAndroid Build Coastguard Worker; CHECK: uzp2 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
1209*9880d681SAndroid Build Coastguard Workerentry:
1210*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <4 x i16> %a, <4 x i16> %a, <4 x i32> <i32 1, i32 3, i32 5, i32 7>
1211*9880d681SAndroid Build Coastguard Worker  ret <4 x i16> %shuffle.i
1212*9880d681SAndroid Build Coastguard Worker}
1213*9880d681SAndroid Build Coastguard Worker
1214*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_same_vuzp2q_u16(<8 x i16> %a) {
1215*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_same_vuzp2q_u16:
1216*9880d681SAndroid Build Coastguard Worker; CHECK: uzp2 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
1217*9880d681SAndroid Build Coastguard Workerentry:
1218*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <8 x i16> %a, <8 x i16> %a, <8 x i32> <i32 1, i32 3, i32 5, i32 7, i32 9, i32 11, i32 13, i32 15>
1219*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %shuffle.i
1220*9880d681SAndroid Build Coastguard Worker}
1221*9880d681SAndroid Build Coastguard Worker
1222*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test_same_vuzp2q_u32(<4 x i32> %a) {
1223*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_same_vuzp2q_u32:
1224*9880d681SAndroid Build Coastguard Worker; CHECK: uzp2 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
1225*9880d681SAndroid Build Coastguard Workerentry:
1226*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <4 x i32> %a, <4 x i32> %a, <4 x i32> <i32 1, i32 3, i32 5, i32 7>
1227*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %shuffle.i
1228*9880d681SAndroid Build Coastguard Worker}
1229*9880d681SAndroid Build Coastguard Worker
1230*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_same_vuzp2q_f32(<4 x float> %a) {
1231*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_same_vuzp2q_f32:
1232*9880d681SAndroid Build Coastguard Worker; CHECK: uzp2 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
1233*9880d681SAndroid Build Coastguard Workerentry:
1234*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <4 x float> %a, <4 x float> %a, <4 x i32> <i32 1, i32 3, i32 5, i32 7>
1235*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %shuffle.i
1236*9880d681SAndroid Build Coastguard Worker}
1237*9880d681SAndroid Build Coastguard Worker
1238*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @test_same_vuzp2_p8(<8 x i8> %a) {
1239*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_same_vuzp2_p8:
1240*9880d681SAndroid Build Coastguard Worker; CHECK: uzp2 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
1241*9880d681SAndroid Build Coastguard Workerentry:
1242*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <8 x i8> %a, <8 x i8> %a, <8 x i32> <i32 1, i32 3, i32 5, i32 7, i32 9, i32 11, i32 13, i32 15>
1243*9880d681SAndroid Build Coastguard Worker  ret <8 x i8> %shuffle.i
1244*9880d681SAndroid Build Coastguard Worker}
1245*9880d681SAndroid Build Coastguard Worker
1246*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_same_vuzp2q_p8(<16 x i8> %a) {
1247*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_same_vuzp2q_p8:
1248*9880d681SAndroid Build Coastguard Worker; CHECK: uzp2 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
1249*9880d681SAndroid Build Coastguard Workerentry:
1250*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <16 x i8> %a, <16 x i8> %a, <16 x i32> <i32 1, i32 3, i32 5, i32 7, i32 9, i32 11, i32 13, i32 15, i32 17, i32 19, i32 21, i32 23, i32 25, i32 27, i32 29, i32 31>
1251*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %shuffle.i
1252*9880d681SAndroid Build Coastguard Worker}
1253*9880d681SAndroid Build Coastguard Worker
1254*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @test_same_vuzp2_p16(<4 x i16> %a) {
1255*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_same_vuzp2_p16:
1256*9880d681SAndroid Build Coastguard Worker; CHECK: uzp2 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
1257*9880d681SAndroid Build Coastguard Workerentry:
1258*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <4 x i16> %a, <4 x i16> %a, <4 x i32> <i32 1, i32 3, i32 5, i32 7>
1259*9880d681SAndroid Build Coastguard Worker  ret <4 x i16> %shuffle.i
1260*9880d681SAndroid Build Coastguard Worker}
1261*9880d681SAndroid Build Coastguard Worker
1262*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_same_vuzp2q_p16(<8 x i16> %a) {
1263*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_same_vuzp2q_p16:
1264*9880d681SAndroid Build Coastguard Worker; CHECK: uzp2 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
1265*9880d681SAndroid Build Coastguard Workerentry:
1266*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <8 x i16> %a, <8 x i16> %a, <8 x i32> <i32 1, i32 3, i32 5, i32 7, i32 9, i32 11, i32 13, i32 15>
1267*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %shuffle.i
1268*9880d681SAndroid Build Coastguard Worker}
1269*9880d681SAndroid Build Coastguard Worker
1270*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @test_same_vzip1_s8(<8 x i8> %a) {
1271*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_same_vzip1_s8:
1272*9880d681SAndroid Build Coastguard Worker; CHECK: zip1 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
1273*9880d681SAndroid Build Coastguard Workerentry:
1274*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <8 x i8> %a, <8 x i8> %a, <8 x i32> <i32 0, i32 8, i32 1, i32 9, i32 2, i32 10, i32 3, i32 11>
1275*9880d681SAndroid Build Coastguard Worker  ret <8 x i8> %shuffle.i
1276*9880d681SAndroid Build Coastguard Worker}
1277*9880d681SAndroid Build Coastguard Worker
1278*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_same_vzip1q_s8(<16 x i8> %a) {
1279*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_same_vzip1q_s8:
1280*9880d681SAndroid Build Coastguard Worker; CHECK: zip1 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
1281*9880d681SAndroid Build Coastguard Workerentry:
1282*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <16 x i8> %a, <16 x i8> %a, <16 x i32> <i32 0, i32 16, i32 1, i32 17, i32 2, i32 18, i32 3, i32 19, i32 4, i32 20, i32 5, i32 21, i32 6, i32 22, i32 7, i32 23>
1283*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %shuffle.i
1284*9880d681SAndroid Build Coastguard Worker}
1285*9880d681SAndroid Build Coastguard Worker
1286*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @test_same_vzip1_s16(<4 x i16> %a) {
1287*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_same_vzip1_s16:
1288*9880d681SAndroid Build Coastguard Worker; CHECK: zip1 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
1289*9880d681SAndroid Build Coastguard Workerentry:
1290*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <4 x i16> %a, <4 x i16> %a, <4 x i32> <i32 0, i32 4, i32 1, i32 5>
1291*9880d681SAndroid Build Coastguard Worker  ret <4 x i16> %shuffle.i
1292*9880d681SAndroid Build Coastguard Worker}
1293*9880d681SAndroid Build Coastguard Worker
1294*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_same_vzip1q_s16(<8 x i16> %a) {
1295*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_same_vzip1q_s16:
1296*9880d681SAndroid Build Coastguard Worker; CHECK: zip1 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
1297*9880d681SAndroid Build Coastguard Workerentry:
1298*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <8 x i16> %a, <8 x i16> %a, <8 x i32> <i32 0, i32 8, i32 1, i32 9, i32 2, i32 10, i32 3, i32 11>
1299*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %shuffle.i
1300*9880d681SAndroid Build Coastguard Worker}
1301*9880d681SAndroid Build Coastguard Worker
1302*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test_same_vzip1q_s32(<4 x i32> %a) {
1303*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_same_vzip1q_s32:
1304*9880d681SAndroid Build Coastguard Worker; CHECK: zip1 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
1305*9880d681SAndroid Build Coastguard Workerentry:
1306*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <4 x i32> %a, <4 x i32> %a, <4 x i32> <i32 0, i32 4, i32 1, i32 5>
1307*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %shuffle.i
1308*9880d681SAndroid Build Coastguard Worker}
1309*9880d681SAndroid Build Coastguard Worker
1310*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @test_same_vzip1_u8(<8 x i8> %a) {
1311*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_same_vzip1_u8:
1312*9880d681SAndroid Build Coastguard Worker; CHECK: zip1 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
1313*9880d681SAndroid Build Coastguard Workerentry:
1314*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <8 x i8> %a, <8 x i8> %a, <8 x i32> <i32 0, i32 8, i32 1, i32 9, i32 2, i32 10, i32 3, i32 11>
1315*9880d681SAndroid Build Coastguard Worker  ret <8 x i8> %shuffle.i
1316*9880d681SAndroid Build Coastguard Worker}
1317*9880d681SAndroid Build Coastguard Worker
1318*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_same_vzip1q_u8(<16 x i8> %a) {
1319*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_same_vzip1q_u8:
1320*9880d681SAndroid Build Coastguard Worker; CHECK: zip1 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
1321*9880d681SAndroid Build Coastguard Workerentry:
1322*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <16 x i8> %a, <16 x i8> %a, <16 x i32> <i32 0, i32 16, i32 1, i32 17, i32 2, i32 18, i32 3, i32 19, i32 4, i32 20, i32 5, i32 21, i32 6, i32 22, i32 7, i32 23>
1323*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %shuffle.i
1324*9880d681SAndroid Build Coastguard Worker}
1325*9880d681SAndroid Build Coastguard Worker
1326*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @test_same_vzip1_u16(<4 x i16> %a) {
1327*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_same_vzip1_u16:
1328*9880d681SAndroid Build Coastguard Worker; CHECK: zip1 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
1329*9880d681SAndroid Build Coastguard Workerentry:
1330*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <4 x i16> %a, <4 x i16> %a, <4 x i32> <i32 0, i32 4, i32 1, i32 5>
1331*9880d681SAndroid Build Coastguard Worker  ret <4 x i16> %shuffle.i
1332*9880d681SAndroid Build Coastguard Worker}
1333*9880d681SAndroid Build Coastguard Worker
1334*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_same_vzip1q_u16(<8 x i16> %a) {
1335*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_same_vzip1q_u16:
1336*9880d681SAndroid Build Coastguard Worker; CHECK: zip1 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
1337*9880d681SAndroid Build Coastguard Workerentry:
1338*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <8 x i16> %a, <8 x i16> %a, <8 x i32> <i32 0, i32 8, i32 1, i32 9, i32 2, i32 10, i32 3, i32 11>
1339*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %shuffle.i
1340*9880d681SAndroid Build Coastguard Worker}
1341*9880d681SAndroid Build Coastguard Worker
1342*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test_same_vzip1q_u32(<4 x i32> %a) {
1343*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_same_vzip1q_u32:
1344*9880d681SAndroid Build Coastguard Worker; CHECK: zip1 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
1345*9880d681SAndroid Build Coastguard Workerentry:
1346*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <4 x i32> %a, <4 x i32> %a, <4 x i32> <i32 0, i32 4, i32 1, i32 5>
1347*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %shuffle.i
1348*9880d681SAndroid Build Coastguard Worker}
1349*9880d681SAndroid Build Coastguard Worker
1350*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_same_vzip1q_f32(<4 x float> %a) {
1351*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_same_vzip1q_f32:
1352*9880d681SAndroid Build Coastguard Worker; CHECK: zip1 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
1353*9880d681SAndroid Build Coastguard Workerentry:
1354*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <4 x float> %a, <4 x float> %a, <4 x i32> <i32 0, i32 4, i32 1, i32 5>
1355*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %shuffle.i
1356*9880d681SAndroid Build Coastguard Worker}
1357*9880d681SAndroid Build Coastguard Worker
1358*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @test_same_vzip1_p8(<8 x i8> %a) {
1359*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_same_vzip1_p8:
1360*9880d681SAndroid Build Coastguard Worker; CHECK: zip1 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
1361*9880d681SAndroid Build Coastguard Workerentry:
1362*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <8 x i8> %a, <8 x i8> %a, <8 x i32> <i32 0, i32 8, i32 1, i32 9, i32 2, i32 10, i32 3, i32 11>
1363*9880d681SAndroid Build Coastguard Worker  ret <8 x i8> %shuffle.i
1364*9880d681SAndroid Build Coastguard Worker}
1365*9880d681SAndroid Build Coastguard Worker
1366*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_same_vzip1q_p8(<16 x i8> %a) {
1367*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_same_vzip1q_p8:
1368*9880d681SAndroid Build Coastguard Worker; CHECK: zip1 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
1369*9880d681SAndroid Build Coastguard Workerentry:
1370*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <16 x i8> %a, <16 x i8> %a, <16 x i32> <i32 0, i32 16, i32 1, i32 17, i32 2, i32 18, i32 3, i32 19, i32 4, i32 20, i32 5, i32 21, i32 6, i32 22, i32 7, i32 23>
1371*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %shuffle.i
1372*9880d681SAndroid Build Coastguard Worker}
1373*9880d681SAndroid Build Coastguard Worker
1374*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @test_same_vzip1_p16(<4 x i16> %a) {
1375*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_same_vzip1_p16:
1376*9880d681SAndroid Build Coastguard Worker; CHECK: zip1 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
1377*9880d681SAndroid Build Coastguard Workerentry:
1378*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <4 x i16> %a, <4 x i16> %a, <4 x i32> <i32 0, i32 4, i32 1, i32 5>
1379*9880d681SAndroid Build Coastguard Worker  ret <4 x i16> %shuffle.i
1380*9880d681SAndroid Build Coastguard Worker}
1381*9880d681SAndroid Build Coastguard Worker
1382*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_same_vzip1q_p16(<8 x i16> %a) {
1383*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_same_vzip1q_p16:
1384*9880d681SAndroid Build Coastguard Worker; CHECK: zip1 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
1385*9880d681SAndroid Build Coastguard Workerentry:
1386*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <8 x i16> %a, <8 x i16> %a, <8 x i32> <i32 0, i32 8, i32 1, i32 9, i32 2, i32 10, i32 3, i32 11>
1387*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %shuffle.i
1388*9880d681SAndroid Build Coastguard Worker}
1389*9880d681SAndroid Build Coastguard Worker
1390*9880d681SAndroid Build Coastguard Workerdefine <4 x i8> @test_vzip1_v4i8(<8 x i8> %p) {
1391*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vzip1_v4i8:
1392*9880d681SAndroid Build Coastguard Worker; CHECK: zip1 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
1393*9880d681SAndroid Build Coastguard Worker %lo = shufflevector <8 x i8> %p, <8 x i8> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
1394*9880d681SAndroid Build Coastguard Worker ret <4 x i8> %lo
1395*9880d681SAndroid Build Coastguard Worker}
1396*9880d681SAndroid Build Coastguard Worker
1397*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @test_same_vzip2_s8(<8 x i8> %a) {
1398*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_same_vzip2_s8:
1399*9880d681SAndroid Build Coastguard Worker; CHECK: zip2 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
1400*9880d681SAndroid Build Coastguard Workerentry:
1401*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <8 x i8> %a, <8 x i8> %a, <8 x i32> <i32 4, i32 12, i32 5, i32 13, i32 6, i32 14, i32 7, i32 15>
1402*9880d681SAndroid Build Coastguard Worker  ret <8 x i8> %shuffle.i
1403*9880d681SAndroid Build Coastguard Worker}
1404*9880d681SAndroid Build Coastguard Worker
1405*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_same_vzip2q_s8(<16 x i8> %a) {
1406*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_same_vzip2q_s8:
1407*9880d681SAndroid Build Coastguard Worker; CHECK: zip2 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
1408*9880d681SAndroid Build Coastguard Workerentry:
1409*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <16 x i8> %a, <16 x i8> %a, <16 x i32> <i32 8, i32 24, i32 9, i32 25, i32 10, i32 26, i32 11, i32 27, i32 12, i32 28, i32 13, i32 29, i32 14, i32 30, i32 15, i32 31>
1410*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %shuffle.i
1411*9880d681SAndroid Build Coastguard Worker}
1412*9880d681SAndroid Build Coastguard Worker
1413*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @test_same_vzip2_s16(<4 x i16> %a) {
1414*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_same_vzip2_s16:
1415*9880d681SAndroid Build Coastguard Worker; CHECK: zip2 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
1416*9880d681SAndroid Build Coastguard Workerentry:
1417*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <4 x i16> %a, <4 x i16> %a, <4 x i32> <i32 2, i32 6, i32 3, i32 7>
1418*9880d681SAndroid Build Coastguard Worker  ret <4 x i16> %shuffle.i
1419*9880d681SAndroid Build Coastguard Worker}
1420*9880d681SAndroid Build Coastguard Worker
1421*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_same_vzip2q_s16(<8 x i16> %a) {
1422*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_same_vzip2q_s16:
1423*9880d681SAndroid Build Coastguard Worker; CHECK: zip2 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
1424*9880d681SAndroid Build Coastguard Workerentry:
1425*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <8 x i16> %a, <8 x i16> %a, <8 x i32> <i32 4, i32 12, i32 5, i32 13, i32 6, i32 14, i32 7, i32 15>
1426*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %shuffle.i
1427*9880d681SAndroid Build Coastguard Worker}
1428*9880d681SAndroid Build Coastguard Worker
1429*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test_same_vzip2q_s32(<4 x i32> %a) {
1430*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_same_vzip2q_s32:
1431*9880d681SAndroid Build Coastguard Worker; CHECK: zip2 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
1432*9880d681SAndroid Build Coastguard Workerentry:
1433*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <4 x i32> %a, <4 x i32> %a, <4 x i32> <i32 2, i32 6, i32 3, i32 7>
1434*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %shuffle.i
1435*9880d681SAndroid Build Coastguard Worker}
1436*9880d681SAndroid Build Coastguard Worker
1437*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @test_same_vzip2_u8(<8 x i8> %a) {
1438*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_same_vzip2_u8:
1439*9880d681SAndroid Build Coastguard Worker; CHECK: zip2 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
1440*9880d681SAndroid Build Coastguard Workerentry:
1441*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <8 x i8> %a, <8 x i8> %a, <8 x i32> <i32 4, i32 12, i32 5, i32 13, i32 6, i32 14, i32 7, i32 15>
1442*9880d681SAndroid Build Coastguard Worker  ret <8 x i8> %shuffle.i
1443*9880d681SAndroid Build Coastguard Worker}
1444*9880d681SAndroid Build Coastguard Worker
1445*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_same_vzip2q_u8(<16 x i8> %a) {
1446*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_same_vzip2q_u8:
1447*9880d681SAndroid Build Coastguard Worker; CHECK: zip2 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
1448*9880d681SAndroid Build Coastguard Workerentry:
1449*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <16 x i8> %a, <16 x i8> %a, <16 x i32> <i32 8, i32 24, i32 9, i32 25, i32 10, i32 26, i32 11, i32 27, i32 12, i32 28, i32 13, i32 29, i32 14, i32 30, i32 15, i32 31>
1450*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %shuffle.i
1451*9880d681SAndroid Build Coastguard Worker}
1452*9880d681SAndroid Build Coastguard Worker
1453*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @test_same_vzip2_u16(<4 x i16> %a) {
1454*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_same_vzip2_u16:
1455*9880d681SAndroid Build Coastguard Worker; CHECK: zip2 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
1456*9880d681SAndroid Build Coastguard Workerentry:
1457*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <4 x i16> %a, <4 x i16> %a, <4 x i32> <i32 2, i32 6, i32 3, i32 7>
1458*9880d681SAndroid Build Coastguard Worker  ret <4 x i16> %shuffle.i
1459*9880d681SAndroid Build Coastguard Worker}
1460*9880d681SAndroid Build Coastguard Worker
1461*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_same_vzip2q_u16(<8 x i16> %a) {
1462*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_same_vzip2q_u16:
1463*9880d681SAndroid Build Coastguard Worker; CHECK: zip2 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
1464*9880d681SAndroid Build Coastguard Workerentry:
1465*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <8 x i16> %a, <8 x i16> %a, <8 x i32> <i32 4, i32 12, i32 5, i32 13, i32 6, i32 14, i32 7, i32 15>
1466*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %shuffle.i
1467*9880d681SAndroid Build Coastguard Worker}
1468*9880d681SAndroid Build Coastguard Worker
1469*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test_same_vzip2q_u32(<4 x i32> %a) {
1470*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_same_vzip2q_u32:
1471*9880d681SAndroid Build Coastguard Worker; CHECK: zip2 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
1472*9880d681SAndroid Build Coastguard Workerentry:
1473*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <4 x i32> %a, <4 x i32> %a, <4 x i32> <i32 2, i32 6, i32 3, i32 7>
1474*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %shuffle.i
1475*9880d681SAndroid Build Coastguard Worker}
1476*9880d681SAndroid Build Coastguard Worker
1477*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_same_vzip2q_f32(<4 x float> %a) {
1478*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_same_vzip2q_f32:
1479*9880d681SAndroid Build Coastguard Worker; CHECK: zip2 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
1480*9880d681SAndroid Build Coastguard Workerentry:
1481*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <4 x float> %a, <4 x float> %a, <4 x i32> <i32 2, i32 6, i32 3, i32 7>
1482*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %shuffle.i
1483*9880d681SAndroid Build Coastguard Worker}
1484*9880d681SAndroid Build Coastguard Worker
1485*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @test_same_vzip2_p8(<8 x i8> %a) {
1486*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_same_vzip2_p8:
1487*9880d681SAndroid Build Coastguard Worker; CHECK: zip2 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
1488*9880d681SAndroid Build Coastguard Workerentry:
1489*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <8 x i8> %a, <8 x i8> %a, <8 x i32> <i32 4, i32 12, i32 5, i32 13, i32 6, i32 14, i32 7, i32 15>
1490*9880d681SAndroid Build Coastguard Worker  ret <8 x i8> %shuffle.i
1491*9880d681SAndroid Build Coastguard Worker}
1492*9880d681SAndroid Build Coastguard Worker
1493*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_same_vzip2q_p8(<16 x i8> %a) {
1494*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_same_vzip2q_p8:
1495*9880d681SAndroid Build Coastguard Worker; CHECK: zip2 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
1496*9880d681SAndroid Build Coastguard Workerentry:
1497*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <16 x i8> %a, <16 x i8> %a, <16 x i32> <i32 8, i32 24, i32 9, i32 25, i32 10, i32 26, i32 11, i32 27, i32 12, i32 28, i32 13, i32 29, i32 14, i32 30, i32 15, i32 31>
1498*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %shuffle.i
1499*9880d681SAndroid Build Coastguard Worker}
1500*9880d681SAndroid Build Coastguard Worker
1501*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @test_same_vzip2_p16(<4 x i16> %a) {
1502*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_same_vzip2_p16:
1503*9880d681SAndroid Build Coastguard Worker; CHECK: zip2 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
1504*9880d681SAndroid Build Coastguard Workerentry:
1505*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <4 x i16> %a, <4 x i16> %a, <4 x i32> <i32 2, i32 6, i32 3, i32 7>
1506*9880d681SAndroid Build Coastguard Worker  ret <4 x i16> %shuffle.i
1507*9880d681SAndroid Build Coastguard Worker}
1508*9880d681SAndroid Build Coastguard Worker
1509*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_same_vzip2q_p16(<8 x i16> %a) {
1510*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_same_vzip2q_p16:
1511*9880d681SAndroid Build Coastguard Worker; CHECK: zip2 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
1512*9880d681SAndroid Build Coastguard Workerentry:
1513*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <8 x i16> %a, <8 x i16> %a, <8 x i32> <i32 4, i32 12, i32 5, i32 13, i32 6, i32 14, i32 7, i32 15>
1514*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %shuffle.i
1515*9880d681SAndroid Build Coastguard Worker}
1516*9880d681SAndroid Build Coastguard Worker
1517*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @test_same_vtrn1_s8(<8 x i8> %a) {
1518*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_same_vtrn1_s8:
1519*9880d681SAndroid Build Coastguard Worker; CHECK: trn1 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
1520*9880d681SAndroid Build Coastguard Workerentry:
1521*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <8 x i8> %a, <8 x i8> %a, <8 x i32> <i32 0, i32 8, i32 2, i32 10, i32 4, i32 12, i32 6, i32 14>
1522*9880d681SAndroid Build Coastguard Worker  ret <8 x i8> %shuffle.i
1523*9880d681SAndroid Build Coastguard Worker}
1524*9880d681SAndroid Build Coastguard Worker
1525*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_same_vtrn1q_s8(<16 x i8> %a) {
1526*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_same_vtrn1q_s8:
1527*9880d681SAndroid Build Coastguard Worker; CHECK: trn1 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
1528*9880d681SAndroid Build Coastguard Workerentry:
1529*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <16 x i8> %a, <16 x i8> %a, <16 x i32> <i32 0, i32 16, i32 2, i32 18, i32 4, i32 20, i32 6, i32 22, i32 8, i32 24, i32 10, i32 26, i32 12, i32 28, i32 14, i32 30>
1530*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %shuffle.i
1531*9880d681SAndroid Build Coastguard Worker}
1532*9880d681SAndroid Build Coastguard Worker
1533*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @test_same_vtrn1_s16(<4 x i16> %a) {
1534*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_same_vtrn1_s16:
1535*9880d681SAndroid Build Coastguard Worker; CHECK: trn1 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
1536*9880d681SAndroid Build Coastguard Workerentry:
1537*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <4 x i16> %a, <4 x i16> %a, <4 x i32> <i32 0, i32 4, i32 2, i32 6>
1538*9880d681SAndroid Build Coastguard Worker  ret <4 x i16> %shuffle.i
1539*9880d681SAndroid Build Coastguard Worker}
1540*9880d681SAndroid Build Coastguard Worker
1541*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_same_vtrn1q_s16(<8 x i16> %a) {
1542*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_same_vtrn1q_s16:
1543*9880d681SAndroid Build Coastguard Worker; CHECK: trn1 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
1544*9880d681SAndroid Build Coastguard Workerentry:
1545*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <8 x i16> %a, <8 x i16> %a, <8 x i32> <i32 0, i32 8, i32 2, i32 10, i32 4, i32 12, i32 6, i32 14>
1546*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %shuffle.i
1547*9880d681SAndroid Build Coastguard Worker}
1548*9880d681SAndroid Build Coastguard Worker
1549*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test_same_vtrn1q_s32(<4 x i32> %a) {
1550*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_same_vtrn1q_s32:
1551*9880d681SAndroid Build Coastguard Worker; CHECK: trn1 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
1552*9880d681SAndroid Build Coastguard Workerentry:
1553*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <4 x i32> %a, <4 x i32> %a, <4 x i32> <i32 0, i32 4, i32 2, i32 6>
1554*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %shuffle.i
1555*9880d681SAndroid Build Coastguard Worker}
1556*9880d681SAndroid Build Coastguard Worker
1557*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @test_same_vtrn1_u8(<8 x i8> %a) {
1558*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_same_vtrn1_u8:
1559*9880d681SAndroid Build Coastguard Worker; CHECK: trn1 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
1560*9880d681SAndroid Build Coastguard Workerentry:
1561*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <8 x i8> %a, <8 x i8> %a, <8 x i32> <i32 0, i32 8, i32 2, i32 10, i32 4, i32 12, i32 6, i32 14>
1562*9880d681SAndroid Build Coastguard Worker  ret <8 x i8> %shuffle.i
1563*9880d681SAndroid Build Coastguard Worker}
1564*9880d681SAndroid Build Coastguard Worker
1565*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_same_vtrn1q_u8(<16 x i8> %a) {
1566*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_same_vtrn1q_u8:
1567*9880d681SAndroid Build Coastguard Worker; CHECK: trn1 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
1568*9880d681SAndroid Build Coastguard Workerentry:
1569*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <16 x i8> %a, <16 x i8> %a, <16 x i32> <i32 0, i32 16, i32 2, i32 18, i32 4, i32 20, i32 6, i32 22, i32 8, i32 24, i32 10, i32 26, i32 12, i32 28, i32 14, i32 30>
1570*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %shuffle.i
1571*9880d681SAndroid Build Coastguard Worker}
1572*9880d681SAndroid Build Coastguard Worker
1573*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @test_same_vtrn1_u16(<4 x i16> %a) {
1574*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_same_vtrn1_u16:
1575*9880d681SAndroid Build Coastguard Worker; CHECK: trn1 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
1576*9880d681SAndroid Build Coastguard Workerentry:
1577*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <4 x i16> %a, <4 x i16> %a, <4 x i32> <i32 0, i32 4, i32 2, i32 6>
1578*9880d681SAndroid Build Coastguard Worker  ret <4 x i16> %shuffle.i
1579*9880d681SAndroid Build Coastguard Worker}
1580*9880d681SAndroid Build Coastguard Worker
1581*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_same_vtrn1q_u16(<8 x i16> %a) {
1582*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_same_vtrn1q_u16:
1583*9880d681SAndroid Build Coastguard Worker; CHECK: trn1 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
1584*9880d681SAndroid Build Coastguard Workerentry:
1585*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <8 x i16> %a, <8 x i16> %a, <8 x i32> <i32 0, i32 8, i32 2, i32 10, i32 4, i32 12, i32 6, i32 14>
1586*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %shuffle.i
1587*9880d681SAndroid Build Coastguard Worker}
1588*9880d681SAndroid Build Coastguard Worker
1589*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test_same_vtrn1q_u32(<4 x i32> %a) {
1590*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_same_vtrn1q_u32:
1591*9880d681SAndroid Build Coastguard Worker; CHECK: trn1 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
1592*9880d681SAndroid Build Coastguard Workerentry:
1593*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <4 x i32> %a, <4 x i32> %a, <4 x i32> <i32 0, i32 4, i32 2, i32 6>
1594*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %shuffle.i
1595*9880d681SAndroid Build Coastguard Worker}
1596*9880d681SAndroid Build Coastguard Worker
1597*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_same_vtrn1q_f32(<4 x float> %a) {
1598*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_same_vtrn1q_f32:
1599*9880d681SAndroid Build Coastguard Worker; CHECK: trn1 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
1600*9880d681SAndroid Build Coastguard Workerentry:
1601*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <4 x float> %a, <4 x float> %a, <4 x i32> <i32 0, i32 4, i32 2, i32 6>
1602*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %shuffle.i
1603*9880d681SAndroid Build Coastguard Worker}
1604*9880d681SAndroid Build Coastguard Worker
1605*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @test_same_vtrn1_p8(<8 x i8> %a) {
1606*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_same_vtrn1_p8:
1607*9880d681SAndroid Build Coastguard Worker; CHECK: trn1 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
1608*9880d681SAndroid Build Coastguard Workerentry:
1609*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <8 x i8> %a, <8 x i8> %a, <8 x i32> <i32 0, i32 8, i32 2, i32 10, i32 4, i32 12, i32 6, i32 14>
1610*9880d681SAndroid Build Coastguard Worker  ret <8 x i8> %shuffle.i
1611*9880d681SAndroid Build Coastguard Worker}
1612*9880d681SAndroid Build Coastguard Worker
1613*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_same_vtrn1q_p8(<16 x i8> %a) {
1614*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_same_vtrn1q_p8:
1615*9880d681SAndroid Build Coastguard Worker; CHECK: trn1 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
1616*9880d681SAndroid Build Coastguard Workerentry:
1617*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <16 x i8> %a, <16 x i8> %a, <16 x i32> <i32 0, i32 16, i32 2, i32 18, i32 4, i32 20, i32 6, i32 22, i32 8, i32 24, i32 10, i32 26, i32 12, i32 28, i32 14, i32 30>
1618*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %shuffle.i
1619*9880d681SAndroid Build Coastguard Worker}
1620*9880d681SAndroid Build Coastguard Worker
1621*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @test_same_vtrn1_p16(<4 x i16> %a) {
1622*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_same_vtrn1_p16:
1623*9880d681SAndroid Build Coastguard Worker; CHECK: trn1 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
1624*9880d681SAndroid Build Coastguard Workerentry:
1625*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <4 x i16> %a, <4 x i16> %a, <4 x i32> <i32 0, i32 4, i32 2, i32 6>
1626*9880d681SAndroid Build Coastguard Worker  ret <4 x i16> %shuffle.i
1627*9880d681SAndroid Build Coastguard Worker}
1628*9880d681SAndroid Build Coastguard Worker
1629*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_same_vtrn1q_p16(<8 x i16> %a) {
1630*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_same_vtrn1q_p16:
1631*9880d681SAndroid Build Coastguard Worker; CHECK: trn1 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
1632*9880d681SAndroid Build Coastguard Workerentry:
1633*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <8 x i16> %a, <8 x i16> %a, <8 x i32> <i32 0, i32 8, i32 2, i32 10, i32 4, i32 12, i32 6, i32 14>
1634*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %shuffle.i
1635*9880d681SAndroid Build Coastguard Worker}
1636*9880d681SAndroid Build Coastguard Worker
1637*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @test_same_vtrn2_s8(<8 x i8> %a) {
1638*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_same_vtrn2_s8:
1639*9880d681SAndroid Build Coastguard Worker; CHECK: trn2 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
1640*9880d681SAndroid Build Coastguard Workerentry:
1641*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <8 x i8> %a, <8 x i8> %a, <8 x i32> <i32 1, i32 9, i32 3, i32 11, i32 5, i32 13, i32 7, i32 15>
1642*9880d681SAndroid Build Coastguard Worker  ret <8 x i8> %shuffle.i
1643*9880d681SAndroid Build Coastguard Worker}
1644*9880d681SAndroid Build Coastguard Worker
1645*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_same_vtrn2q_s8(<16 x i8> %a) {
1646*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_same_vtrn2q_s8:
1647*9880d681SAndroid Build Coastguard Worker; CHECK: trn2 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
1648*9880d681SAndroid Build Coastguard Workerentry:
1649*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <16 x i8> %a, <16 x i8> %a, <16 x i32> <i32 1, i32 17, i32 3, i32 19, i32 5, i32 21, i32 7, i32 23, i32 9, i32 25, i32 11, i32 27, i32 13, i32 29, i32 15, i32 31>
1650*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %shuffle.i
1651*9880d681SAndroid Build Coastguard Worker}
1652*9880d681SAndroid Build Coastguard Worker
1653*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @test_same_vtrn2_s16(<4 x i16> %a) {
1654*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_same_vtrn2_s16:
1655*9880d681SAndroid Build Coastguard Worker; CHECK: trn2 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
1656*9880d681SAndroid Build Coastguard Workerentry:
1657*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <4 x i16> %a, <4 x i16> %a, <4 x i32> <i32 1, i32 5, i32 3, i32 7>
1658*9880d681SAndroid Build Coastguard Worker  ret <4 x i16> %shuffle.i
1659*9880d681SAndroid Build Coastguard Worker}
1660*9880d681SAndroid Build Coastguard Worker
1661*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_same_vtrn2q_s16(<8 x i16> %a) {
1662*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_same_vtrn2q_s16:
1663*9880d681SAndroid Build Coastguard Worker; CHECK: trn2 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
1664*9880d681SAndroid Build Coastguard Workerentry:
1665*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <8 x i16> %a, <8 x i16> %a, <8 x i32> <i32 1, i32 9, i32 3, i32 11, i32 5, i32 13, i32 7, i32 15>
1666*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %shuffle.i
1667*9880d681SAndroid Build Coastguard Worker}
1668*9880d681SAndroid Build Coastguard Worker
1669*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test_same_vtrn2q_s32(<4 x i32> %a) {
1670*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_same_vtrn2q_s32:
1671*9880d681SAndroid Build Coastguard Worker; CHECK: trn2 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
1672*9880d681SAndroid Build Coastguard Workerentry:
1673*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <4 x i32> %a, <4 x i32> %a, <4 x i32> <i32 1, i32 5, i32 3, i32 7>
1674*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %shuffle.i
1675*9880d681SAndroid Build Coastguard Worker}
1676*9880d681SAndroid Build Coastguard Worker
1677*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @test_same_vtrn2_u8(<8 x i8> %a) {
1678*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_same_vtrn2_u8:
1679*9880d681SAndroid Build Coastguard Worker; CHECK: trn2 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
1680*9880d681SAndroid Build Coastguard Workerentry:
1681*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <8 x i8> %a, <8 x i8> %a, <8 x i32> <i32 1, i32 9, i32 3, i32 11, i32 5, i32 13, i32 7, i32 15>
1682*9880d681SAndroid Build Coastguard Worker  ret <8 x i8> %shuffle.i
1683*9880d681SAndroid Build Coastguard Worker}
1684*9880d681SAndroid Build Coastguard Worker
1685*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_same_vtrn2q_u8(<16 x i8> %a) {
1686*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_same_vtrn2q_u8:
1687*9880d681SAndroid Build Coastguard Worker; CHECK: trn2 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
1688*9880d681SAndroid Build Coastguard Workerentry:
1689*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <16 x i8> %a, <16 x i8> %a, <16 x i32> <i32 1, i32 17, i32 3, i32 19, i32 5, i32 21, i32 7, i32 23, i32 9, i32 25, i32 11, i32 27, i32 13, i32 29, i32 15, i32 31>
1690*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %shuffle.i
1691*9880d681SAndroid Build Coastguard Worker}
1692*9880d681SAndroid Build Coastguard Worker
1693*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @test_same_vtrn2_u16(<4 x i16> %a) {
1694*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_same_vtrn2_u16:
1695*9880d681SAndroid Build Coastguard Worker; CHECK: trn2 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
1696*9880d681SAndroid Build Coastguard Workerentry:
1697*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <4 x i16> %a, <4 x i16> %a, <4 x i32> <i32 1, i32 5, i32 3, i32 7>
1698*9880d681SAndroid Build Coastguard Worker  ret <4 x i16> %shuffle.i
1699*9880d681SAndroid Build Coastguard Worker}
1700*9880d681SAndroid Build Coastguard Worker
1701*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_same_vtrn2q_u16(<8 x i16> %a) {
1702*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_same_vtrn2q_u16:
1703*9880d681SAndroid Build Coastguard Worker; CHECK: trn2 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
1704*9880d681SAndroid Build Coastguard Workerentry:
1705*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <8 x i16> %a, <8 x i16> %a, <8 x i32> <i32 1, i32 9, i32 3, i32 11, i32 5, i32 13, i32 7, i32 15>
1706*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %shuffle.i
1707*9880d681SAndroid Build Coastguard Worker}
1708*9880d681SAndroid Build Coastguard Worker
1709*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test_same_vtrn2q_u32(<4 x i32> %a) {
1710*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_same_vtrn2q_u32:
1711*9880d681SAndroid Build Coastguard Worker; CHECK: trn2 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
1712*9880d681SAndroid Build Coastguard Workerentry:
1713*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <4 x i32> %a, <4 x i32> %a, <4 x i32> <i32 1, i32 5, i32 3, i32 7>
1714*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %shuffle.i
1715*9880d681SAndroid Build Coastguard Worker}
1716*9880d681SAndroid Build Coastguard Worker
1717*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_same_vtrn2q_f32(<4 x float> %a) {
1718*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_same_vtrn2q_f32:
1719*9880d681SAndroid Build Coastguard Worker; CHECK: trn2 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
1720*9880d681SAndroid Build Coastguard Workerentry:
1721*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <4 x float> %a, <4 x float> %a, <4 x i32> <i32 1, i32 5, i32 3, i32 7>
1722*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %shuffle.i
1723*9880d681SAndroid Build Coastguard Worker}
1724*9880d681SAndroid Build Coastguard Worker
1725*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @test_same_vtrn2_p8(<8 x i8> %a) {
1726*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_same_vtrn2_p8:
1727*9880d681SAndroid Build Coastguard Worker; CHECK: trn2 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
1728*9880d681SAndroid Build Coastguard Workerentry:
1729*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <8 x i8> %a, <8 x i8> %a, <8 x i32> <i32 1, i32 9, i32 3, i32 11, i32 5, i32 13, i32 7, i32 15>
1730*9880d681SAndroid Build Coastguard Worker  ret <8 x i8> %shuffle.i
1731*9880d681SAndroid Build Coastguard Worker}
1732*9880d681SAndroid Build Coastguard Worker
1733*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_same_vtrn2q_p8(<16 x i8> %a) {
1734*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_same_vtrn2q_p8:
1735*9880d681SAndroid Build Coastguard Worker; CHECK: trn2 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
1736*9880d681SAndroid Build Coastguard Workerentry:
1737*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <16 x i8> %a, <16 x i8> %a, <16 x i32> <i32 1, i32 17, i32 3, i32 19, i32 5, i32 21, i32 7, i32 23, i32 9, i32 25, i32 11, i32 27, i32 13, i32 29, i32 15, i32 31>
1738*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %shuffle.i
1739*9880d681SAndroid Build Coastguard Worker}
1740*9880d681SAndroid Build Coastguard Worker
1741*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @test_same_vtrn2_p16(<4 x i16> %a) {
1742*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_same_vtrn2_p16:
1743*9880d681SAndroid Build Coastguard Worker; CHECK: trn2 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
1744*9880d681SAndroid Build Coastguard Workerentry:
1745*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <4 x i16> %a, <4 x i16> %a, <4 x i32> <i32 1, i32 5, i32 3, i32 7>
1746*9880d681SAndroid Build Coastguard Worker  ret <4 x i16> %shuffle.i
1747*9880d681SAndroid Build Coastguard Worker}
1748*9880d681SAndroid Build Coastguard Worker
1749*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_same_vtrn2q_p16(<8 x i16> %a) {
1750*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_same_vtrn2q_p16:
1751*9880d681SAndroid Build Coastguard Worker; CHECK: trn2 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
1752*9880d681SAndroid Build Coastguard Workerentry:
1753*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <8 x i16> %a, <8 x i16> %a, <8 x i32> <i32 1, i32 9, i32 3, i32 11, i32 5, i32 13, i32 7, i32 15>
1754*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %shuffle.i
1755*9880d681SAndroid Build Coastguard Worker}
1756*9880d681SAndroid Build Coastguard Worker
1757*9880d681SAndroid Build Coastguard Worker
1758*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @test_undef_vuzp1_s8(<8 x i8> %a) {
1759*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_undef_vuzp1_s8:
1760*9880d681SAndroid Build Coastguard Worker; CHECK: uzp1 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
1761*9880d681SAndroid Build Coastguard Workerentry:
1762*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <8 x i8> %a, <8 x i8> undef, <8 x i32> <i32 0, i32 2, i32 4, i32 6, i32 8, i32 10, i32 12, i32 14>
1763*9880d681SAndroid Build Coastguard Worker  ret <8 x i8> %shuffle.i
1764*9880d681SAndroid Build Coastguard Worker}
1765*9880d681SAndroid Build Coastguard Worker
1766*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_undef_vuzp1q_s8(<16 x i8> %a) {
1767*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_undef_vuzp1q_s8:
1768*9880d681SAndroid Build Coastguard Worker; CHECK: uzp1 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
1769*9880d681SAndroid Build Coastguard Workerentry:
1770*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <16 x i8> %a, <16 x i8> undef, <16 x i32> <i32 0, i32 2, i32 4, i32 6, i32 8, i32 10, i32 12, i32 14, i32 16, i32 18, i32 20, i32 22, i32 24, i32 26, i32 28, i32 30>
1771*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %shuffle.i
1772*9880d681SAndroid Build Coastguard Worker}
1773*9880d681SAndroid Build Coastguard Worker
1774*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @test_undef_vuzp1_s16(<4 x i16> %a) {
1775*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_undef_vuzp1_s16:
1776*9880d681SAndroid Build Coastguard Worker; CHECK: uzp1 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
1777*9880d681SAndroid Build Coastguard Workerentry:
1778*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <4 x i16> %a, <4 x i16> undef, <4 x i32> <i32 0, i32 2, i32 4, i32 6>
1779*9880d681SAndroid Build Coastguard Worker  ret <4 x i16> %shuffle.i
1780*9880d681SAndroid Build Coastguard Worker}
1781*9880d681SAndroid Build Coastguard Worker
1782*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_undef_vuzp1q_s16(<8 x i16> %a) {
1783*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_undef_vuzp1q_s16:
1784*9880d681SAndroid Build Coastguard Worker; CHECK: uzp1 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
1785*9880d681SAndroid Build Coastguard Workerentry:
1786*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <8 x i16> %a, <8 x i16> undef, <8 x i32> <i32 0, i32 2, i32 4, i32 6, i32 8, i32 10, i32 12, i32 14>
1787*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %shuffle.i
1788*9880d681SAndroid Build Coastguard Worker}
1789*9880d681SAndroid Build Coastguard Worker
1790*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test_undef_vuzp1q_s32(<4 x i32> %a) {
1791*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_undef_vuzp1q_s32:
1792*9880d681SAndroid Build Coastguard Worker; CHECK: uzp1 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
1793*9880d681SAndroid Build Coastguard Workerentry:
1794*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <4 x i32> %a, <4 x i32> undef, <4 x i32> <i32 0, i32 2, i32 4, i32 6>
1795*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %shuffle.i
1796*9880d681SAndroid Build Coastguard Worker}
1797*9880d681SAndroid Build Coastguard Worker
1798*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @test_undef_vuzp1_u8(<8 x i8> %a) {
1799*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_undef_vuzp1_u8:
1800*9880d681SAndroid Build Coastguard Worker; CHECK: uzp1 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
1801*9880d681SAndroid Build Coastguard Workerentry:
1802*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <8 x i8> %a, <8 x i8> undef, <8 x i32> <i32 0, i32 2, i32 4, i32 6, i32 8, i32 10, i32 12, i32 14>
1803*9880d681SAndroid Build Coastguard Worker  ret <8 x i8> %shuffle.i
1804*9880d681SAndroid Build Coastguard Worker}
1805*9880d681SAndroid Build Coastguard Worker
1806*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_undef_vuzp1q_u8(<16 x i8> %a) {
1807*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_undef_vuzp1q_u8:
1808*9880d681SAndroid Build Coastguard Worker; CHECK: uzp1 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
1809*9880d681SAndroid Build Coastguard Workerentry:
1810*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <16 x i8> %a, <16 x i8> undef, <16 x i32> <i32 0, i32 2, i32 4, i32 6, i32 8, i32 10, i32 12, i32 14, i32 16, i32 18, i32 20, i32 22, i32 24, i32 26, i32 28, i32 30>
1811*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %shuffle.i
1812*9880d681SAndroid Build Coastguard Worker}
1813*9880d681SAndroid Build Coastguard Worker
1814*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @test_undef_vuzp1_u16(<4 x i16> %a) {
1815*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_undef_vuzp1_u16:
1816*9880d681SAndroid Build Coastguard Worker; CHECK: uzp1 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
1817*9880d681SAndroid Build Coastguard Workerentry:
1818*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <4 x i16> %a, <4 x i16> undef, <4 x i32> <i32 0, i32 2, i32 4, i32 6>
1819*9880d681SAndroid Build Coastguard Worker  ret <4 x i16> %shuffle.i
1820*9880d681SAndroid Build Coastguard Worker}
1821*9880d681SAndroid Build Coastguard Worker
1822*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_undef_vuzp1q_u16(<8 x i16> %a) {
1823*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_undef_vuzp1q_u16:
1824*9880d681SAndroid Build Coastguard Worker; CHECK: uzp1 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
1825*9880d681SAndroid Build Coastguard Workerentry:
1826*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <8 x i16> %a, <8 x i16> undef, <8 x i32> <i32 0, i32 2, i32 4, i32 6, i32 8, i32 10, i32 12, i32 14>
1827*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %shuffle.i
1828*9880d681SAndroid Build Coastguard Worker}
1829*9880d681SAndroid Build Coastguard Worker
1830*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test_undef_vuzp1q_u32(<4 x i32> %a) {
1831*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_undef_vuzp1q_u32:
1832*9880d681SAndroid Build Coastguard Worker; CHECK: uzp1 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
1833*9880d681SAndroid Build Coastguard Workerentry:
1834*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <4 x i32> %a, <4 x i32> undef, <4 x i32> <i32 0, i32 2, i32 4, i32 6>
1835*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %shuffle.i
1836*9880d681SAndroid Build Coastguard Worker}
1837*9880d681SAndroid Build Coastguard Worker
1838*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_undef_vuzp1q_f32(<4 x float> %a) {
1839*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_undef_vuzp1q_f32:
1840*9880d681SAndroid Build Coastguard Worker; CHECK: uzp1 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
1841*9880d681SAndroid Build Coastguard Workerentry:
1842*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <4 x float> %a, <4 x float> undef, <4 x i32> <i32 0, i32 2, i32 4, i32 6>
1843*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %shuffle.i
1844*9880d681SAndroid Build Coastguard Worker}
1845*9880d681SAndroid Build Coastguard Worker
1846*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @test_undef_vuzp1_p8(<8 x i8> %a) {
1847*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_undef_vuzp1_p8:
1848*9880d681SAndroid Build Coastguard Worker; CHECK: uzp1 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
1849*9880d681SAndroid Build Coastguard Workerentry:
1850*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <8 x i8> %a, <8 x i8> undef, <8 x i32> <i32 0, i32 2, i32 4, i32 6, i32 8, i32 10, i32 12, i32 14>
1851*9880d681SAndroid Build Coastguard Worker  ret <8 x i8> %shuffle.i
1852*9880d681SAndroid Build Coastguard Worker}
1853*9880d681SAndroid Build Coastguard Worker
1854*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_undef_vuzp1q_p8(<16 x i8> %a) {
1855*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_undef_vuzp1q_p8:
1856*9880d681SAndroid Build Coastguard Worker; CHECK: uzp1 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
1857*9880d681SAndroid Build Coastguard Workerentry:
1858*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <16 x i8> %a, <16 x i8> undef, <16 x i32> <i32 0, i32 2, i32 4, i32 6, i32 8, i32 10, i32 12, i32 14, i32 16, i32 18, i32 20, i32 22, i32 24, i32 26, i32 28, i32 30>
1859*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %shuffle.i
1860*9880d681SAndroid Build Coastguard Worker}
1861*9880d681SAndroid Build Coastguard Worker
1862*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @test_undef_vuzp1_p16(<4 x i16> %a) {
1863*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_undef_vuzp1_p16:
1864*9880d681SAndroid Build Coastguard Worker; CHECK: uzp1 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
1865*9880d681SAndroid Build Coastguard Workerentry:
1866*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <4 x i16> %a, <4 x i16> undef, <4 x i32> <i32 0, i32 2, i32 4, i32 6>
1867*9880d681SAndroid Build Coastguard Worker  ret <4 x i16> %shuffle.i
1868*9880d681SAndroid Build Coastguard Worker}
1869*9880d681SAndroid Build Coastguard Worker
1870*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_undef_vuzp1q_p16(<8 x i16> %a) {
1871*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_undef_vuzp1q_p16:
1872*9880d681SAndroid Build Coastguard Worker; CHECK: uzp1 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
1873*9880d681SAndroid Build Coastguard Workerentry:
1874*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <8 x i16> %a, <8 x i16> undef, <8 x i32> <i32 0, i32 2, i32 4, i32 6, i32 8, i32 10, i32 12, i32 14>
1875*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %shuffle.i
1876*9880d681SAndroid Build Coastguard Worker}
1877*9880d681SAndroid Build Coastguard Worker
1878*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @test_undef_vuzp2_s8(<8 x i8> %a) {
1879*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_undef_vuzp2_s8:
1880*9880d681SAndroid Build Coastguard Worker; CHECK: uzp2 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
1881*9880d681SAndroid Build Coastguard Workerentry:
1882*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <8 x i8> %a, <8 x i8> undef, <8 x i32> <i32 1, i32 3, i32 5, i32 7, i32 9, i32 11, i32 13, i32 15>
1883*9880d681SAndroid Build Coastguard Worker  ret <8 x i8> %shuffle.i
1884*9880d681SAndroid Build Coastguard Worker}
1885*9880d681SAndroid Build Coastguard Worker
1886*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_undef_vuzp2q_s8(<16 x i8> %a) {
1887*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_undef_vuzp2q_s8:
1888*9880d681SAndroid Build Coastguard Worker; CHECK: uzp2 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
1889*9880d681SAndroid Build Coastguard Workerentry:
1890*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <16 x i8> %a, <16 x i8> undef, <16 x i32> <i32 1, i32 3, i32 5, i32 7, i32 9, i32 11, i32 13, i32 15, i32 17, i32 19, i32 21, i32 23, i32 25, i32 27, i32 29, i32 31>
1891*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %shuffle.i
1892*9880d681SAndroid Build Coastguard Worker}
1893*9880d681SAndroid Build Coastguard Worker
1894*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @test_undef_vuzp2_s16(<4 x i16> %a) {
1895*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_undef_vuzp2_s16:
1896*9880d681SAndroid Build Coastguard Worker; CHECK: uzp2 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
1897*9880d681SAndroid Build Coastguard Workerentry:
1898*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <4 x i16> %a, <4 x i16> undef, <4 x i32> <i32 1, i32 3, i32 5, i32 7>
1899*9880d681SAndroid Build Coastguard Worker  ret <4 x i16> %shuffle.i
1900*9880d681SAndroid Build Coastguard Worker}
1901*9880d681SAndroid Build Coastguard Worker
1902*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_undef_vuzp2q_s16(<8 x i16> %a) {
1903*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_undef_vuzp2q_s16:
1904*9880d681SAndroid Build Coastguard Worker; CHECK: uzp2 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
1905*9880d681SAndroid Build Coastguard Workerentry:
1906*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <8 x i16> %a, <8 x i16> undef, <8 x i32> <i32 1, i32 3, i32 5, i32 7, i32 9, i32 11, i32 13, i32 15>
1907*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %shuffle.i
1908*9880d681SAndroid Build Coastguard Worker}
1909*9880d681SAndroid Build Coastguard Worker
1910*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test_undef_vuzp2q_s32(<4 x i32> %a) {
1911*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_undef_vuzp2q_s32:
1912*9880d681SAndroid Build Coastguard Worker; CHECK: uzp2 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
1913*9880d681SAndroid Build Coastguard Workerentry:
1914*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <4 x i32> %a, <4 x i32> undef, <4 x i32> <i32 1, i32 3, i32 5, i32 7>
1915*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %shuffle.i
1916*9880d681SAndroid Build Coastguard Worker}
1917*9880d681SAndroid Build Coastguard Worker
1918*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @test_undef_vuzp2_u8(<8 x i8> %a) {
1919*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_undef_vuzp2_u8:
1920*9880d681SAndroid Build Coastguard Worker; CHECK: uzp2 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
1921*9880d681SAndroid Build Coastguard Workerentry:
1922*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <8 x i8> %a, <8 x i8> undef, <8 x i32> <i32 1, i32 3, i32 5, i32 7, i32 9, i32 11, i32 13, i32 15>
1923*9880d681SAndroid Build Coastguard Worker  ret <8 x i8> %shuffle.i
1924*9880d681SAndroid Build Coastguard Worker}
1925*9880d681SAndroid Build Coastguard Worker
1926*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_undef_vuzp2q_u8(<16 x i8> %a) {
1927*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_undef_vuzp2q_u8:
1928*9880d681SAndroid Build Coastguard Worker; CHECK: uzp2 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
1929*9880d681SAndroid Build Coastguard Workerentry:
1930*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <16 x i8> %a, <16 x i8> undef, <16 x i32> <i32 1, i32 3, i32 5, i32 7, i32 9, i32 11, i32 13, i32 15, i32 17, i32 19, i32 21, i32 23, i32 25, i32 27, i32 29, i32 31>
1931*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %shuffle.i
1932*9880d681SAndroid Build Coastguard Worker}
1933*9880d681SAndroid Build Coastguard Worker
1934*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @test_undef_vuzp2_u16(<4 x i16> %a) {
1935*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_undef_vuzp2_u16:
1936*9880d681SAndroid Build Coastguard Worker; CHECK: uzp2 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
1937*9880d681SAndroid Build Coastguard Workerentry:
1938*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <4 x i16> %a, <4 x i16> undef, <4 x i32> <i32 1, i32 3, i32 5, i32 7>
1939*9880d681SAndroid Build Coastguard Worker  ret <4 x i16> %shuffle.i
1940*9880d681SAndroid Build Coastguard Worker}
1941*9880d681SAndroid Build Coastguard Worker
1942*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_undef_vuzp2q_u16(<8 x i16> %a) {
1943*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_undef_vuzp2q_u16:
1944*9880d681SAndroid Build Coastguard Worker; CHECK: uzp2 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
1945*9880d681SAndroid Build Coastguard Workerentry:
1946*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <8 x i16> %a, <8 x i16> undef, <8 x i32> <i32 1, i32 3, i32 5, i32 7, i32 9, i32 11, i32 13, i32 15>
1947*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %shuffle.i
1948*9880d681SAndroid Build Coastguard Worker}
1949*9880d681SAndroid Build Coastguard Worker
1950*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test_undef_vuzp2q_u32(<4 x i32> %a) {
1951*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_undef_vuzp2q_u32:
1952*9880d681SAndroid Build Coastguard Worker; CHECK: uzp2 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
1953*9880d681SAndroid Build Coastguard Workerentry:
1954*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <4 x i32> %a, <4 x i32> undef, <4 x i32> <i32 1, i32 3, i32 5, i32 7>
1955*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %shuffle.i
1956*9880d681SAndroid Build Coastguard Worker}
1957*9880d681SAndroid Build Coastguard Worker
1958*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_undef_vuzp2q_f32(<4 x float> %a) {
1959*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_undef_vuzp2q_f32:
1960*9880d681SAndroid Build Coastguard Worker; CHECK: uzp2 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
1961*9880d681SAndroid Build Coastguard Workerentry:
1962*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <4 x float> %a, <4 x float> undef, <4 x i32> <i32 1, i32 3, i32 5, i32 7>
1963*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %shuffle.i
1964*9880d681SAndroid Build Coastguard Worker}
1965*9880d681SAndroid Build Coastguard Worker
1966*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @test_undef_vuzp2_p8(<8 x i8> %a) {
1967*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_undef_vuzp2_p8:
1968*9880d681SAndroid Build Coastguard Worker; CHECK: uzp2 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
1969*9880d681SAndroid Build Coastguard Workerentry:
1970*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <8 x i8> %a, <8 x i8> undef, <8 x i32> <i32 1, i32 3, i32 5, i32 7, i32 9, i32 11, i32 13, i32 15>
1971*9880d681SAndroid Build Coastguard Worker  ret <8 x i8> %shuffle.i
1972*9880d681SAndroid Build Coastguard Worker}
1973*9880d681SAndroid Build Coastguard Worker
1974*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_undef_vuzp2q_p8(<16 x i8> %a) {
1975*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_undef_vuzp2q_p8:
1976*9880d681SAndroid Build Coastguard Worker; CHECK: uzp2 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
1977*9880d681SAndroid Build Coastguard Workerentry:
1978*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <16 x i8> %a, <16 x i8> undef, <16 x i32> <i32 1, i32 3, i32 5, i32 7, i32 9, i32 11, i32 13, i32 15, i32 17, i32 19, i32 21, i32 23, i32 25, i32 27, i32 29, i32 31>
1979*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %shuffle.i
1980*9880d681SAndroid Build Coastguard Worker}
1981*9880d681SAndroid Build Coastguard Worker
1982*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @test_undef_vuzp2_p16(<4 x i16> %a) {
1983*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_undef_vuzp2_p16:
1984*9880d681SAndroid Build Coastguard Worker; CHECK: uzp2 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
1985*9880d681SAndroid Build Coastguard Workerentry:
1986*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <4 x i16> %a, <4 x i16> undef, <4 x i32> <i32 1, i32 3, i32 5, i32 7>
1987*9880d681SAndroid Build Coastguard Worker  ret <4 x i16> %shuffle.i
1988*9880d681SAndroid Build Coastguard Worker}
1989*9880d681SAndroid Build Coastguard Worker
1990*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_undef_vuzp2q_p16(<8 x i16> %a) {
1991*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_undef_vuzp2q_p16:
1992*9880d681SAndroid Build Coastguard Worker; CHECK: uzp2 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
1993*9880d681SAndroid Build Coastguard Workerentry:
1994*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <8 x i16> %a, <8 x i16> undef, <8 x i32> <i32 1, i32 3, i32 5, i32 7, i32 9, i32 11, i32 13, i32 15>
1995*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %shuffle.i
1996*9880d681SAndroid Build Coastguard Worker}
1997*9880d681SAndroid Build Coastguard Worker
1998*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @test_undef_vzip1_s8(<8 x i8> %a) {
1999*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_undef_vzip1_s8:
2000*9880d681SAndroid Build Coastguard Worker; CHECK: zip1 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
2001*9880d681SAndroid Build Coastguard Workerentry:
2002*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <8 x i8> %a, <8 x i8> undef, <8 x i32> <i32 0, i32 8, i32 1, i32 9, i32 2, i32 10, i32 3, i32 11>
2003*9880d681SAndroid Build Coastguard Worker  ret <8 x i8> %shuffle.i
2004*9880d681SAndroid Build Coastguard Worker}
2005*9880d681SAndroid Build Coastguard Worker
2006*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_undef_vzip1q_s8(<16 x i8> %a) {
2007*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_undef_vzip1q_s8:
2008*9880d681SAndroid Build Coastguard Worker; CHECK: zip1 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
2009*9880d681SAndroid Build Coastguard Workerentry:
2010*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <16 x i8> %a, <16 x i8> undef, <16 x i32> <i32 0, i32 16, i32 1, i32 17, i32 2, i32 18, i32 3, i32 19, i32 4, i32 20, i32 5, i32 21, i32 6, i32 22, i32 7, i32 23>
2011*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %shuffle.i
2012*9880d681SAndroid Build Coastguard Worker}
2013*9880d681SAndroid Build Coastguard Worker
2014*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @test_undef_vzip1_s16(<4 x i16> %a) {
2015*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_undef_vzip1_s16:
2016*9880d681SAndroid Build Coastguard Worker; CHECK: zip1 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
2017*9880d681SAndroid Build Coastguard Workerentry:
2018*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <4 x i16> %a, <4 x i16> undef, <4 x i32> <i32 0, i32 4, i32 1, i32 5>
2019*9880d681SAndroid Build Coastguard Worker  ret <4 x i16> %shuffle.i
2020*9880d681SAndroid Build Coastguard Worker}
2021*9880d681SAndroid Build Coastguard Worker
2022*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_undef_vzip1q_s16(<8 x i16> %a) {
2023*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_undef_vzip1q_s16:
2024*9880d681SAndroid Build Coastguard Worker; CHECK: zip1 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
2025*9880d681SAndroid Build Coastguard Workerentry:
2026*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <8 x i16> %a, <8 x i16> undef, <8 x i32> <i32 0, i32 8, i32 1, i32 9, i32 2, i32 10, i32 3, i32 11>
2027*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %shuffle.i
2028*9880d681SAndroid Build Coastguard Worker}
2029*9880d681SAndroid Build Coastguard Worker
2030*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test_undef_vzip1q_s32(<4 x i32> %a) {
2031*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_undef_vzip1q_s32:
2032*9880d681SAndroid Build Coastguard Worker; CHECK: zip1 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
2033*9880d681SAndroid Build Coastguard Workerentry:
2034*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <4 x i32> %a, <4 x i32> undef, <4 x i32> <i32 0, i32 4, i32 1, i32 5>
2035*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %shuffle.i
2036*9880d681SAndroid Build Coastguard Worker}
2037*9880d681SAndroid Build Coastguard Worker
2038*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @test_undef_vzip1_u8(<8 x i8> %a) {
2039*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_undef_vzip1_u8:
2040*9880d681SAndroid Build Coastguard Worker; CHECK: zip1 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
2041*9880d681SAndroid Build Coastguard Workerentry:
2042*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <8 x i8> %a, <8 x i8> undef, <8 x i32> <i32 0, i32 8, i32 1, i32 9, i32 2, i32 10, i32 3, i32 11>
2043*9880d681SAndroid Build Coastguard Worker  ret <8 x i8> %shuffle.i
2044*9880d681SAndroid Build Coastguard Worker}
2045*9880d681SAndroid Build Coastguard Worker
2046*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_undef_vzip1q_u8(<16 x i8> %a) {
2047*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_undef_vzip1q_u8:
2048*9880d681SAndroid Build Coastguard Worker; CHECK: zip1 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
2049*9880d681SAndroid Build Coastguard Workerentry:
2050*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <16 x i8> %a, <16 x i8> undef, <16 x i32> <i32 0, i32 16, i32 1, i32 17, i32 2, i32 18, i32 3, i32 19, i32 4, i32 20, i32 5, i32 21, i32 6, i32 22, i32 7, i32 23>
2051*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %shuffle.i
2052*9880d681SAndroid Build Coastguard Worker}
2053*9880d681SAndroid Build Coastguard Worker
2054*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @test_undef_vzip1_u16(<4 x i16> %a) {
2055*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_undef_vzip1_u16:
2056*9880d681SAndroid Build Coastguard Worker; CHECK: zip1 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
2057*9880d681SAndroid Build Coastguard Workerentry:
2058*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <4 x i16> %a, <4 x i16> undef, <4 x i32> <i32 0, i32 4, i32 1, i32 5>
2059*9880d681SAndroid Build Coastguard Worker  ret <4 x i16> %shuffle.i
2060*9880d681SAndroid Build Coastguard Worker}
2061*9880d681SAndroid Build Coastguard Worker
2062*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_undef_vzip1q_u16(<8 x i16> %a) {
2063*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_undef_vzip1q_u16:
2064*9880d681SAndroid Build Coastguard Worker; CHECK: zip1 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
2065*9880d681SAndroid Build Coastguard Workerentry:
2066*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <8 x i16> %a, <8 x i16> undef, <8 x i32> <i32 0, i32 8, i32 1, i32 9, i32 2, i32 10, i32 3, i32 11>
2067*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %shuffle.i
2068*9880d681SAndroid Build Coastguard Worker}
2069*9880d681SAndroid Build Coastguard Worker
2070*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test_undef_vzip1q_u32(<4 x i32> %a) {
2071*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_undef_vzip1q_u32:
2072*9880d681SAndroid Build Coastguard Worker; CHECK: zip1 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
2073*9880d681SAndroid Build Coastguard Workerentry:
2074*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <4 x i32> %a, <4 x i32> undef, <4 x i32> <i32 0, i32 4, i32 1, i32 5>
2075*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %shuffle.i
2076*9880d681SAndroid Build Coastguard Worker}
2077*9880d681SAndroid Build Coastguard Worker
2078*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_undef_vzip1q_f32(<4 x float> %a) {
2079*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_undef_vzip1q_f32:
2080*9880d681SAndroid Build Coastguard Worker; CHECK: zip1 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
2081*9880d681SAndroid Build Coastguard Workerentry:
2082*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <4 x float> %a, <4 x float> undef, <4 x i32> <i32 0, i32 4, i32 1, i32 5>
2083*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %shuffle.i
2084*9880d681SAndroid Build Coastguard Worker}
2085*9880d681SAndroid Build Coastguard Worker
2086*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @test_undef_vzip1_p8(<8 x i8> %a) {
2087*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_undef_vzip1_p8:
2088*9880d681SAndroid Build Coastguard Worker; CHECK: zip1 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
2089*9880d681SAndroid Build Coastguard Workerentry:
2090*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <8 x i8> %a, <8 x i8> undef, <8 x i32> <i32 0, i32 8, i32 1, i32 9, i32 2, i32 10, i32 3, i32 11>
2091*9880d681SAndroid Build Coastguard Worker  ret <8 x i8> %shuffle.i
2092*9880d681SAndroid Build Coastguard Worker}
2093*9880d681SAndroid Build Coastguard Worker
2094*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_undef_vzip1q_p8(<16 x i8> %a) {
2095*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_undef_vzip1q_p8:
2096*9880d681SAndroid Build Coastguard Worker; CHECK: zip1 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
2097*9880d681SAndroid Build Coastguard Workerentry:
2098*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <16 x i8> %a, <16 x i8> undef, <16 x i32> <i32 0, i32 16, i32 1, i32 17, i32 2, i32 18, i32 3, i32 19, i32 4, i32 20, i32 5, i32 21, i32 6, i32 22, i32 7, i32 23>
2099*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %shuffle.i
2100*9880d681SAndroid Build Coastguard Worker}
2101*9880d681SAndroid Build Coastguard Worker
2102*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @test_undef_vzip1_p16(<4 x i16> %a) {
2103*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_undef_vzip1_p16:
2104*9880d681SAndroid Build Coastguard Worker; CHECK: zip1 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
2105*9880d681SAndroid Build Coastguard Workerentry:
2106*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <4 x i16> %a, <4 x i16> undef, <4 x i32> <i32 0, i32 4, i32 1, i32 5>
2107*9880d681SAndroid Build Coastguard Worker  ret <4 x i16> %shuffle.i
2108*9880d681SAndroid Build Coastguard Worker}
2109*9880d681SAndroid Build Coastguard Worker
2110*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_undef_vzip1q_p16(<8 x i16> %a) {
2111*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_undef_vzip1q_p16:
2112*9880d681SAndroid Build Coastguard Worker; CHECK: zip1 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
2113*9880d681SAndroid Build Coastguard Workerentry:
2114*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <8 x i16> %a, <8 x i16> undef, <8 x i32> <i32 0, i32 8, i32 1, i32 9, i32 2, i32 10, i32 3, i32 11>
2115*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %shuffle.i
2116*9880d681SAndroid Build Coastguard Worker}
2117*9880d681SAndroid Build Coastguard Worker
2118*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @test_undef_vzip2_s8(<8 x i8> %a) {
2119*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_undef_vzip2_s8:
2120*9880d681SAndroid Build Coastguard Worker; CHECK: zip2 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
2121*9880d681SAndroid Build Coastguard Workerentry:
2122*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <8 x i8> %a, <8 x i8> undef, <8 x i32> <i32 4, i32 12, i32 5, i32 13, i32 6, i32 14, i32 7, i32 15>
2123*9880d681SAndroid Build Coastguard Worker  ret <8 x i8> %shuffle.i
2124*9880d681SAndroid Build Coastguard Worker}
2125*9880d681SAndroid Build Coastguard Worker
2126*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_undef_vzip2q_s8(<16 x i8> %a) {
2127*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_undef_vzip2q_s8:
2128*9880d681SAndroid Build Coastguard Worker; CHECK: zip2 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
2129*9880d681SAndroid Build Coastguard Workerentry:
2130*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <16 x i8> %a, <16 x i8> undef, <16 x i32> <i32 8, i32 24, i32 9, i32 25, i32 10, i32 26, i32 11, i32 27, i32 12, i32 28, i32 13, i32 29, i32 14, i32 30, i32 15, i32 31>
2131*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %shuffle.i
2132*9880d681SAndroid Build Coastguard Worker}
2133*9880d681SAndroid Build Coastguard Worker
2134*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @test_undef_vzip2_s16(<4 x i16> %a) {
2135*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_undef_vzip2_s16:
2136*9880d681SAndroid Build Coastguard Worker; CHECK: zip2 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
2137*9880d681SAndroid Build Coastguard Workerentry:
2138*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <4 x i16> %a, <4 x i16> undef, <4 x i32> <i32 2, i32 6, i32 3, i32 7>
2139*9880d681SAndroid Build Coastguard Worker  ret <4 x i16> %shuffle.i
2140*9880d681SAndroid Build Coastguard Worker}
2141*9880d681SAndroid Build Coastguard Worker
2142*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_undef_vzip2q_s16(<8 x i16> %a) {
2143*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_undef_vzip2q_s16:
2144*9880d681SAndroid Build Coastguard Worker; CHECK: zip2 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
2145*9880d681SAndroid Build Coastguard Workerentry:
2146*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <8 x i16> %a, <8 x i16> undef, <8 x i32> <i32 4, i32 12, i32 5, i32 13, i32 6, i32 14, i32 7, i32 15>
2147*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %shuffle.i
2148*9880d681SAndroid Build Coastguard Worker}
2149*9880d681SAndroid Build Coastguard Worker
2150*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test_undef_vzip2q_s32(<4 x i32> %a) {
2151*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_undef_vzip2q_s32:
2152*9880d681SAndroid Build Coastguard Worker; CHECK: zip2 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
2153*9880d681SAndroid Build Coastguard Workerentry:
2154*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <4 x i32> %a, <4 x i32> undef, <4 x i32> <i32 2, i32 6, i32 3, i32 7>
2155*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %shuffle.i
2156*9880d681SAndroid Build Coastguard Worker}
2157*9880d681SAndroid Build Coastguard Worker
2158*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @test_undef_vzip2_u8(<8 x i8> %a) {
2159*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_undef_vzip2_u8:
2160*9880d681SAndroid Build Coastguard Worker; CHECK: zip2 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
2161*9880d681SAndroid Build Coastguard Workerentry:
2162*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <8 x i8> %a, <8 x i8> undef, <8 x i32> <i32 4, i32 12, i32 5, i32 13, i32 6, i32 14, i32 7, i32 15>
2163*9880d681SAndroid Build Coastguard Worker  ret <8 x i8> %shuffle.i
2164*9880d681SAndroid Build Coastguard Worker}
2165*9880d681SAndroid Build Coastguard Worker
2166*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_undef_vzip2q_u8(<16 x i8> %a) {
2167*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_undef_vzip2q_u8:
2168*9880d681SAndroid Build Coastguard Worker; CHECK: zip2 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
2169*9880d681SAndroid Build Coastguard Workerentry:
2170*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <16 x i8> %a, <16 x i8> undef, <16 x i32> <i32 8, i32 24, i32 9, i32 25, i32 10, i32 26, i32 11, i32 27, i32 12, i32 28, i32 13, i32 29, i32 14, i32 30, i32 15, i32 31>
2171*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %shuffle.i
2172*9880d681SAndroid Build Coastguard Worker}
2173*9880d681SAndroid Build Coastguard Worker
2174*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @test_undef_vzip2_u16(<4 x i16> %a) {
2175*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_undef_vzip2_u16:
2176*9880d681SAndroid Build Coastguard Worker; CHECK: zip2 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
2177*9880d681SAndroid Build Coastguard Workerentry:
2178*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <4 x i16> %a, <4 x i16> undef, <4 x i32> <i32 2, i32 6, i32 3, i32 7>
2179*9880d681SAndroid Build Coastguard Worker  ret <4 x i16> %shuffle.i
2180*9880d681SAndroid Build Coastguard Worker}
2181*9880d681SAndroid Build Coastguard Worker
2182*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_undef_vzip2q_u16(<8 x i16> %a) {
2183*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_undef_vzip2q_u16:
2184*9880d681SAndroid Build Coastguard Worker; CHECK: zip2 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
2185*9880d681SAndroid Build Coastguard Workerentry:
2186*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <8 x i16> %a, <8 x i16> undef, <8 x i32> <i32 4, i32 12, i32 5, i32 13, i32 6, i32 14, i32 7, i32 15>
2187*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %shuffle.i
2188*9880d681SAndroid Build Coastguard Worker}
2189*9880d681SAndroid Build Coastguard Worker
2190*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test_undef_vzip2q_u32(<4 x i32> %a) {
2191*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_undef_vzip2q_u32:
2192*9880d681SAndroid Build Coastguard Worker; CHECK: zip2 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
2193*9880d681SAndroid Build Coastguard Workerentry:
2194*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <4 x i32> %a, <4 x i32> undef, <4 x i32> <i32 2, i32 6, i32 3, i32 7>
2195*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %shuffle.i
2196*9880d681SAndroid Build Coastguard Worker}
2197*9880d681SAndroid Build Coastguard Worker
2198*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_undef_vzip2q_f32(<4 x float> %a) {
2199*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_undef_vzip2q_f32:
2200*9880d681SAndroid Build Coastguard Worker; CHECK: zip2 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
2201*9880d681SAndroid Build Coastguard Workerentry:
2202*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <4 x float> %a, <4 x float> undef, <4 x i32> <i32 2, i32 6, i32 3, i32 7>
2203*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %shuffle.i
2204*9880d681SAndroid Build Coastguard Worker}
2205*9880d681SAndroid Build Coastguard Worker
2206*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @test_undef_vzip2_p8(<8 x i8> %a) {
2207*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_undef_vzip2_p8:
2208*9880d681SAndroid Build Coastguard Worker; CHECK: zip2 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
2209*9880d681SAndroid Build Coastguard Workerentry:
2210*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <8 x i8> %a, <8 x i8> undef, <8 x i32> <i32 4, i32 12, i32 5, i32 13, i32 6, i32 14, i32 7, i32 15>
2211*9880d681SAndroid Build Coastguard Worker  ret <8 x i8> %shuffle.i
2212*9880d681SAndroid Build Coastguard Worker}
2213*9880d681SAndroid Build Coastguard Worker
2214*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_undef_vzip2q_p8(<16 x i8> %a) {
2215*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_undef_vzip2q_p8:
2216*9880d681SAndroid Build Coastguard Worker; CHECK: zip2 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
2217*9880d681SAndroid Build Coastguard Workerentry:
2218*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <16 x i8> %a, <16 x i8> undef, <16 x i32> <i32 8, i32 24, i32 9, i32 25, i32 10, i32 26, i32 11, i32 27, i32 12, i32 28, i32 13, i32 29, i32 14, i32 30, i32 15, i32 31>
2219*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %shuffle.i
2220*9880d681SAndroid Build Coastguard Worker}
2221*9880d681SAndroid Build Coastguard Worker
2222*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @test_undef_vzip2_p16(<4 x i16> %a) {
2223*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_undef_vzip2_p16:
2224*9880d681SAndroid Build Coastguard Worker; CHECK: zip2 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
2225*9880d681SAndroid Build Coastguard Workerentry:
2226*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <4 x i16> %a, <4 x i16> undef, <4 x i32> <i32 2, i32 6, i32 3, i32 7>
2227*9880d681SAndroid Build Coastguard Worker  ret <4 x i16> %shuffle.i
2228*9880d681SAndroid Build Coastguard Worker}
2229*9880d681SAndroid Build Coastguard Worker
2230*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_undef_vzip2q_p16(<8 x i16> %a) {
2231*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_undef_vzip2q_p16:
2232*9880d681SAndroid Build Coastguard Worker; CHECK: zip2 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
2233*9880d681SAndroid Build Coastguard Workerentry:
2234*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <8 x i16> %a, <8 x i16> undef, <8 x i32> <i32 4, i32 12, i32 5, i32 13, i32 6, i32 14, i32 7, i32 15>
2235*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %shuffle.i
2236*9880d681SAndroid Build Coastguard Worker}
2237*9880d681SAndroid Build Coastguard Worker
2238*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @test_undef_vtrn1_s8(<8 x i8> %a) {
2239*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_undef_vtrn1_s8:
2240*9880d681SAndroid Build Coastguard Worker; CHECK: ret
2241*9880d681SAndroid Build Coastguard Workerentry:
2242*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <8 x i8> %a, <8 x i8> undef, <8 x i32> <i32 0, i32 8, i32 2, i32 10, i32 4, i32 12, i32 6, i32 14>
2243*9880d681SAndroid Build Coastguard Worker  ret <8 x i8> %shuffle.i
2244*9880d681SAndroid Build Coastguard Worker}
2245*9880d681SAndroid Build Coastguard Worker
2246*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_undef_vtrn1q_s8(<16 x i8> %a) {
2247*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_undef_vtrn1q_s8:
2248*9880d681SAndroid Build Coastguard Worker; CHECK: ret
2249*9880d681SAndroid Build Coastguard Workerentry:
2250*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <16 x i8> %a, <16 x i8> undef, <16 x i32> <i32 0, i32 16, i32 2, i32 18, i32 4, i32 20, i32 6, i32 22, i32 8, i32 24, i32 10, i32 26, i32 12, i32 28, i32 14, i32 30>
2251*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %shuffle.i
2252*9880d681SAndroid Build Coastguard Worker}
2253*9880d681SAndroid Build Coastguard Worker
2254*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @test_undef_vtrn1_s16(<4 x i16> %a) {
2255*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_undef_vtrn1_s16:
2256*9880d681SAndroid Build Coastguard Worker; CHECK: ret
2257*9880d681SAndroid Build Coastguard Workerentry:
2258*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <4 x i16> %a, <4 x i16> undef, <4 x i32> <i32 0, i32 4, i32 2, i32 6>
2259*9880d681SAndroid Build Coastguard Worker  ret <4 x i16> %shuffle.i
2260*9880d681SAndroid Build Coastguard Worker}
2261*9880d681SAndroid Build Coastguard Worker
2262*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_undef_vtrn1q_s16(<8 x i16> %a) {
2263*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_undef_vtrn1q_s16:
2264*9880d681SAndroid Build Coastguard Worker; CHECK: ret
2265*9880d681SAndroid Build Coastguard Workerentry:
2266*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <8 x i16> %a, <8 x i16> undef, <8 x i32> <i32 0, i32 8, i32 2, i32 10, i32 4, i32 12, i32 6, i32 14>
2267*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %shuffle.i
2268*9880d681SAndroid Build Coastguard Worker}
2269*9880d681SAndroid Build Coastguard Worker
2270*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test_undef_vtrn1q_s32(<4 x i32> %a) {
2271*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_undef_vtrn1q_s32:
2272*9880d681SAndroid Build Coastguard Worker; CHECK: ret
2273*9880d681SAndroid Build Coastguard Workerentry:
2274*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <4 x i32> %a, <4 x i32> undef, <4 x i32> <i32 0, i32 4, i32 2, i32 6>
2275*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %shuffle.i
2276*9880d681SAndroid Build Coastguard Worker}
2277*9880d681SAndroid Build Coastguard Worker
2278*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @test_undef_vtrn1_u8(<8 x i8> %a) {
2279*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_undef_vtrn1_u8:
2280*9880d681SAndroid Build Coastguard Worker; CHECK: ret
2281*9880d681SAndroid Build Coastguard Workerentry:
2282*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <8 x i8> %a, <8 x i8> undef, <8 x i32> <i32 0, i32 8, i32 2, i32 10, i32 4, i32 12, i32 6, i32 14>
2283*9880d681SAndroid Build Coastguard Worker  ret <8 x i8> %shuffle.i
2284*9880d681SAndroid Build Coastguard Worker}
2285*9880d681SAndroid Build Coastguard Worker
2286*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_undef_vtrn1q_u8(<16 x i8> %a) {
2287*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_undef_vtrn1q_u8:
2288*9880d681SAndroid Build Coastguard Worker; CHECK: ret
2289*9880d681SAndroid Build Coastguard Workerentry:
2290*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <16 x i8> %a, <16 x i8> undef, <16 x i32> <i32 0, i32 16, i32 2, i32 18, i32 4, i32 20, i32 6, i32 22, i32 8, i32 24, i32 10, i32 26, i32 12, i32 28, i32 14, i32 30>
2291*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %shuffle.i
2292*9880d681SAndroid Build Coastguard Worker}
2293*9880d681SAndroid Build Coastguard Worker
2294*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @test_undef_vtrn1_u16(<4 x i16> %a) {
2295*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_undef_vtrn1_u16:
2296*9880d681SAndroid Build Coastguard Worker; CHECK: ret
2297*9880d681SAndroid Build Coastguard Workerentry:
2298*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <4 x i16> %a, <4 x i16> undef, <4 x i32> <i32 0, i32 4, i32 2, i32 6>
2299*9880d681SAndroid Build Coastguard Worker  ret <4 x i16> %shuffle.i
2300*9880d681SAndroid Build Coastguard Worker}
2301*9880d681SAndroid Build Coastguard Worker
2302*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_undef_vtrn1q_u16(<8 x i16> %a) {
2303*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_undef_vtrn1q_u16:
2304*9880d681SAndroid Build Coastguard Worker; CHECK: ret
2305*9880d681SAndroid Build Coastguard Workerentry:
2306*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <8 x i16> %a, <8 x i16> undef, <8 x i32> <i32 0, i32 8, i32 2, i32 10, i32 4, i32 12, i32 6, i32 14>
2307*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %shuffle.i
2308*9880d681SAndroid Build Coastguard Worker}
2309*9880d681SAndroid Build Coastguard Worker
2310*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test_undef_vtrn1q_u32(<4 x i32> %a) {
2311*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_undef_vtrn1q_u32:
2312*9880d681SAndroid Build Coastguard Worker; CHECK: ret
2313*9880d681SAndroid Build Coastguard Workerentry:
2314*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <4 x i32> %a, <4 x i32> undef, <4 x i32> <i32 0, i32 4, i32 2, i32 6>
2315*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %shuffle.i
2316*9880d681SAndroid Build Coastguard Worker}
2317*9880d681SAndroid Build Coastguard Worker
2318*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_undef_vtrn1q_f32(<4 x float> %a) {
2319*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_undef_vtrn1q_f32:
2320*9880d681SAndroid Build Coastguard Worker; CHECK: ret
2321*9880d681SAndroid Build Coastguard Workerentry:
2322*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <4 x float> %a, <4 x float> undef, <4 x i32> <i32 0, i32 4, i32 2, i32 6>
2323*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %shuffle.i
2324*9880d681SAndroid Build Coastguard Worker}
2325*9880d681SAndroid Build Coastguard Worker
2326*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @test_undef_vtrn1_p8(<8 x i8> %a) {
2327*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_undef_vtrn1_p8:
2328*9880d681SAndroid Build Coastguard Worker; CHECK: ret
2329*9880d681SAndroid Build Coastguard Workerentry:
2330*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <8 x i8> %a, <8 x i8> undef, <8 x i32> <i32 0, i32 8, i32 2, i32 10, i32 4, i32 12, i32 6, i32 14>
2331*9880d681SAndroid Build Coastguard Worker  ret <8 x i8> %shuffle.i
2332*9880d681SAndroid Build Coastguard Worker}
2333*9880d681SAndroid Build Coastguard Worker
2334*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_undef_vtrn1q_p8(<16 x i8> %a) {
2335*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_undef_vtrn1q_p8:
2336*9880d681SAndroid Build Coastguard Worker; CHECK: ret
2337*9880d681SAndroid Build Coastguard Workerentry:
2338*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <16 x i8> %a, <16 x i8> undef, <16 x i32> <i32 0, i32 16, i32 2, i32 18, i32 4, i32 20, i32 6, i32 22, i32 8, i32 24, i32 10, i32 26, i32 12, i32 28, i32 14, i32 30>
2339*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %shuffle.i
2340*9880d681SAndroid Build Coastguard Worker}
2341*9880d681SAndroid Build Coastguard Worker
2342*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @test_undef_vtrn1_p16(<4 x i16> %a) {
2343*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_undef_vtrn1_p16:
2344*9880d681SAndroid Build Coastguard Worker; CHECK: ret
2345*9880d681SAndroid Build Coastguard Workerentry:
2346*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <4 x i16> %a, <4 x i16> undef, <4 x i32> <i32 0, i32 4, i32 2, i32 6>
2347*9880d681SAndroid Build Coastguard Worker  ret <4 x i16> %shuffle.i
2348*9880d681SAndroid Build Coastguard Worker}
2349*9880d681SAndroid Build Coastguard Worker
2350*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_undef_vtrn1q_p16(<8 x i16> %a) {
2351*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_undef_vtrn1q_p16:
2352*9880d681SAndroid Build Coastguard Worker; CHECK: ret
2353*9880d681SAndroid Build Coastguard Workerentry:
2354*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <8 x i16> %a, <8 x i16> undef, <8 x i32> <i32 0, i32 8, i32 2, i32 10, i32 4, i32 12, i32 6, i32 14>
2355*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %shuffle.i
2356*9880d681SAndroid Build Coastguard Worker}
2357*9880d681SAndroid Build Coastguard Worker
2358*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @test_undef_vtrn2_s8(<8 x i8> %a) {
2359*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_undef_vtrn2_s8:
2360*9880d681SAndroid Build Coastguard Worker; CHECK: rev16 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
2361*9880d681SAndroid Build Coastguard Workerentry:
2362*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <8 x i8> %a, <8 x i8> undef, <8 x i32> <i32 1, i32 9, i32 3, i32 11, i32 5, i32 13, i32 7, i32 15>
2363*9880d681SAndroid Build Coastguard Worker  ret <8 x i8> %shuffle.i
2364*9880d681SAndroid Build Coastguard Worker}
2365*9880d681SAndroid Build Coastguard Worker
2366*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_undef_vtrn2q_s8(<16 x i8> %a) {
2367*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_undef_vtrn2q_s8:
2368*9880d681SAndroid Build Coastguard Worker; CHECK: rev16 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
2369*9880d681SAndroid Build Coastguard Workerentry:
2370*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <16 x i8> %a, <16 x i8> undef, <16 x i32> <i32 1, i32 17, i32 3, i32 19, i32 5, i32 21, i32 7, i32 23, i32 9, i32 25, i32 11, i32 27, i32 13, i32 29, i32 15, i32 31>
2371*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %shuffle.i
2372*9880d681SAndroid Build Coastguard Worker}
2373*9880d681SAndroid Build Coastguard Worker
2374*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @test_undef_vtrn2_s16(<4 x i16> %a) {
2375*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_undef_vtrn2_s16:
2376*9880d681SAndroid Build Coastguard Worker; CHECK: rev32 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
2377*9880d681SAndroid Build Coastguard Workerentry:
2378*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <4 x i16> %a, <4 x i16> undef, <4 x i32> <i32 1, i32 5, i32 3, i32 7>
2379*9880d681SAndroid Build Coastguard Worker  ret <4 x i16> %shuffle.i
2380*9880d681SAndroid Build Coastguard Worker}
2381*9880d681SAndroid Build Coastguard Worker
2382*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_undef_vtrn2q_s16(<8 x i16> %a) {
2383*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_undef_vtrn2q_s16:
2384*9880d681SAndroid Build Coastguard Worker; CHECK: rev32 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
2385*9880d681SAndroid Build Coastguard Workerentry:
2386*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <8 x i16> %a, <8 x i16> undef, <8 x i32> <i32 1, i32 9, i32 3, i32 11, i32 5, i32 13, i32 7, i32 15>
2387*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %shuffle.i
2388*9880d681SAndroid Build Coastguard Worker}
2389*9880d681SAndroid Build Coastguard Worker
2390*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test_undef_vtrn2q_s32(<4 x i32> %a) {
2391*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_undef_vtrn2q_s32:
2392*9880d681SAndroid Build Coastguard Worker; CHECK: rev64 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
2393*9880d681SAndroid Build Coastguard Workerentry:
2394*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <4 x i32> %a, <4 x i32> undef, <4 x i32> <i32 1, i32 5, i32 3, i32 7>
2395*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %shuffle.i
2396*9880d681SAndroid Build Coastguard Worker}
2397*9880d681SAndroid Build Coastguard Worker
2398*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @test_undef_vtrn2_u8(<8 x i8> %a) {
2399*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_undef_vtrn2_u8:
2400*9880d681SAndroid Build Coastguard Worker; CHECK: rev16 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
2401*9880d681SAndroid Build Coastguard Workerentry:
2402*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <8 x i8> %a, <8 x i8> undef, <8 x i32> <i32 1, i32 9, i32 3, i32 11, i32 5, i32 13, i32 7, i32 15>
2403*9880d681SAndroid Build Coastguard Worker  ret <8 x i8> %shuffle.i
2404*9880d681SAndroid Build Coastguard Worker}
2405*9880d681SAndroid Build Coastguard Worker
2406*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_undef_vtrn2q_u8(<16 x i8> %a) {
2407*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_undef_vtrn2q_u8:
2408*9880d681SAndroid Build Coastguard Worker; CHECK: rev16 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
2409*9880d681SAndroid Build Coastguard Workerentry:
2410*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <16 x i8> %a, <16 x i8> undef, <16 x i32> <i32 1, i32 17, i32 3, i32 19, i32 5, i32 21, i32 7, i32 23, i32 9, i32 25, i32 11, i32 27, i32 13, i32 29, i32 15, i32 31>
2411*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %shuffle.i
2412*9880d681SAndroid Build Coastguard Worker}
2413*9880d681SAndroid Build Coastguard Worker
2414*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @test_undef_vtrn2_u16(<4 x i16> %a) {
2415*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_undef_vtrn2_u16:
2416*9880d681SAndroid Build Coastguard Worker; CHECK: rev32 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
2417*9880d681SAndroid Build Coastguard Workerentry:
2418*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <4 x i16> %a, <4 x i16> undef, <4 x i32> <i32 1, i32 5, i32 3, i32 7>
2419*9880d681SAndroid Build Coastguard Worker  ret <4 x i16> %shuffle.i
2420*9880d681SAndroid Build Coastguard Worker}
2421*9880d681SAndroid Build Coastguard Worker
2422*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_undef_vtrn2q_u16(<8 x i16> %a) {
2423*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_undef_vtrn2q_u16:
2424*9880d681SAndroid Build Coastguard Worker; CHECK: rev32 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
2425*9880d681SAndroid Build Coastguard Workerentry:
2426*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <8 x i16> %a, <8 x i16> undef, <8 x i32> <i32 1, i32 9, i32 3, i32 11, i32 5, i32 13, i32 7, i32 15>
2427*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %shuffle.i
2428*9880d681SAndroid Build Coastguard Worker}
2429*9880d681SAndroid Build Coastguard Worker
2430*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test_undef_vtrn2q_u32(<4 x i32> %a) {
2431*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_undef_vtrn2q_u32:
2432*9880d681SAndroid Build Coastguard Worker; CHECK: rev64 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
2433*9880d681SAndroid Build Coastguard Workerentry:
2434*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <4 x i32> %a, <4 x i32> undef, <4 x i32> <i32 1, i32 5, i32 3, i32 7>
2435*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %shuffle.i
2436*9880d681SAndroid Build Coastguard Worker}
2437*9880d681SAndroid Build Coastguard Worker
2438*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_undef_vtrn2q_f32(<4 x float> %a) {
2439*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_undef_vtrn2q_f32:
2440*9880d681SAndroid Build Coastguard Worker; CHECK: rev64 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
2441*9880d681SAndroid Build Coastguard Workerentry:
2442*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <4 x float> %a, <4 x float> undef, <4 x i32> <i32 1, i32 5, i32 3, i32 7>
2443*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %shuffle.i
2444*9880d681SAndroid Build Coastguard Worker}
2445*9880d681SAndroid Build Coastguard Worker
2446*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @test_undef_vtrn2_p8(<8 x i8> %a) {
2447*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_undef_vtrn2_p8:
2448*9880d681SAndroid Build Coastguard Worker; CHECK: rev16 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
2449*9880d681SAndroid Build Coastguard Workerentry:
2450*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <8 x i8> %a, <8 x i8> undef, <8 x i32> <i32 1, i32 9, i32 3, i32 11, i32 5, i32 13, i32 7, i32 15>
2451*9880d681SAndroid Build Coastguard Worker  ret <8 x i8> %shuffle.i
2452*9880d681SAndroid Build Coastguard Worker}
2453*9880d681SAndroid Build Coastguard Worker
2454*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_undef_vtrn2q_p8(<16 x i8> %a) {
2455*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_undef_vtrn2q_p8:
2456*9880d681SAndroid Build Coastguard Worker; CHECK: rev16 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
2457*9880d681SAndroid Build Coastguard Workerentry:
2458*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <16 x i8> %a, <16 x i8> undef, <16 x i32> <i32 1, i32 17, i32 3, i32 19, i32 5, i32 21, i32 7, i32 23, i32 9, i32 25, i32 11, i32 27, i32 13, i32 29, i32 15, i32 31>
2459*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %shuffle.i
2460*9880d681SAndroid Build Coastguard Worker}
2461*9880d681SAndroid Build Coastguard Worker
2462*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @test_undef_vtrn2_p16(<4 x i16> %a) {
2463*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_undef_vtrn2_p16:
2464*9880d681SAndroid Build Coastguard Worker; CHECK: rev32 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
2465*9880d681SAndroid Build Coastguard Workerentry:
2466*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <4 x i16> %a, <4 x i16> undef, <4 x i32> <i32 1, i32 5, i32 3, i32 7>
2467*9880d681SAndroid Build Coastguard Worker  ret <4 x i16> %shuffle.i
2468*9880d681SAndroid Build Coastguard Worker}
2469*9880d681SAndroid Build Coastguard Worker
2470*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_undef_vtrn2q_p16(<8 x i16> %a) {
2471*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_undef_vtrn2q_p16:
2472*9880d681SAndroid Build Coastguard Worker; CHECK: rev32 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
2473*9880d681SAndroid Build Coastguard Workerentry:
2474*9880d681SAndroid Build Coastguard Worker  %shuffle.i = shufflevector <8 x i16> %a, <8 x i16> undef, <8 x i32> <i32 1, i32 9, i32 3, i32 11, i32 5, i32 13, i32 7, i32 15>
2475*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %shuffle.i
2476*9880d681SAndroid Build Coastguard Worker}
2477*9880d681SAndroid Build Coastguard Worker
2478*9880d681SAndroid Build Coastguard Workerdefine %struct.int8x8x2_t @test_vuzp_s8(<8 x i8> %a, <8 x i8> %b) {
2479*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vuzp_s8:
2480*9880d681SAndroid Build Coastguard Worker; CHECK: uzp1 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
2481*9880d681SAndroid Build Coastguard Worker; CHECK: uzp2 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
2482*9880d681SAndroid Build Coastguard Workerentry:
2483*9880d681SAndroid Build Coastguard Worker  %vuzp.i = shufflevector <8 x i8> %a, <8 x i8> %b, <8 x i32> <i32 0, i32 2, i32 4, i32 6, i32 8, i32 10, i32 12, i32 14>
2484*9880d681SAndroid Build Coastguard Worker  %vuzp1.i = shufflevector <8 x i8> %a, <8 x i8> %b, <8 x i32> <i32 1, i32 3, i32 5, i32 7, i32 9, i32 11, i32 13, i32 15>
2485*9880d681SAndroid Build Coastguard Worker  %.fca.0.0.insert = insertvalue %struct.int8x8x2_t undef, <8 x i8> %vuzp.i, 0, 0
2486*9880d681SAndroid Build Coastguard Worker  %.fca.0.1.insert = insertvalue %struct.int8x8x2_t %.fca.0.0.insert, <8 x i8> %vuzp1.i, 0, 1
2487*9880d681SAndroid Build Coastguard Worker  ret %struct.int8x8x2_t %.fca.0.1.insert
2488*9880d681SAndroid Build Coastguard Worker}
2489*9880d681SAndroid Build Coastguard Worker
2490*9880d681SAndroid Build Coastguard Workerdefine %struct.int16x4x2_t @test_vuzp_s16(<4 x i16> %a, <4 x i16> %b) {
2491*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vuzp_s16:
2492*9880d681SAndroid Build Coastguard Worker; CHECK: uzp1 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
2493*9880d681SAndroid Build Coastguard Worker; CHECK: uzp2 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
2494*9880d681SAndroid Build Coastguard Workerentry:
2495*9880d681SAndroid Build Coastguard Worker  %vuzp.i = shufflevector <4 x i16> %a, <4 x i16> %b, <4 x i32> <i32 0, i32 2, i32 4, i32 6>
2496*9880d681SAndroid Build Coastguard Worker  %vuzp1.i = shufflevector <4 x i16> %a, <4 x i16> %b, <4 x i32> <i32 1, i32 3, i32 5, i32 7>
2497*9880d681SAndroid Build Coastguard Worker  %.fca.0.0.insert = insertvalue %struct.int16x4x2_t undef, <4 x i16> %vuzp.i, 0, 0
2498*9880d681SAndroid Build Coastguard Worker  %.fca.0.1.insert = insertvalue %struct.int16x4x2_t %.fca.0.0.insert, <4 x i16> %vuzp1.i, 0, 1
2499*9880d681SAndroid Build Coastguard Worker  ret %struct.int16x4x2_t %.fca.0.1.insert
2500*9880d681SAndroid Build Coastguard Worker}
2501*9880d681SAndroid Build Coastguard Worker
2502*9880d681SAndroid Build Coastguard Workerdefine %struct.int32x2x2_t @test_vuzp_s32(<2 x i32> %a, <2 x i32> %b) {
2503*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vuzp_s32:
2504*9880d681SAndroid Build Coastguard Worker; CHECK: zip1 {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
2505*9880d681SAndroid Build Coastguard Worker; CHECK: zip2 {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
2506*9880d681SAndroid Build Coastguard Workerentry:
2507*9880d681SAndroid Build Coastguard Worker  %vuzp.i = shufflevector <2 x i32> %a, <2 x i32> %b, <2 x i32> <i32 0, i32 2>
2508*9880d681SAndroid Build Coastguard Worker  %vuzp1.i = shufflevector <2 x i32> %a, <2 x i32> %b, <2 x i32> <i32 1, i32 3>
2509*9880d681SAndroid Build Coastguard Worker  %.fca.0.0.insert = insertvalue %struct.int32x2x2_t undef, <2 x i32> %vuzp.i, 0, 0
2510*9880d681SAndroid Build Coastguard Worker  %.fca.0.1.insert = insertvalue %struct.int32x2x2_t %.fca.0.0.insert, <2 x i32> %vuzp1.i, 0, 1
2511*9880d681SAndroid Build Coastguard Worker  ret %struct.int32x2x2_t %.fca.0.1.insert
2512*9880d681SAndroid Build Coastguard Worker}
2513*9880d681SAndroid Build Coastguard Worker
2514*9880d681SAndroid Build Coastguard Workerdefine %struct.uint8x8x2_t @test_vuzp_u8(<8 x i8> %a, <8 x i8> %b) {
2515*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vuzp_u8:
2516*9880d681SAndroid Build Coastguard Worker; CHECK: uzp1 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
2517*9880d681SAndroid Build Coastguard Worker; CHECK: uzp2 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
2518*9880d681SAndroid Build Coastguard Workerentry:
2519*9880d681SAndroid Build Coastguard Worker  %vuzp.i = shufflevector <8 x i8> %a, <8 x i8> %b, <8 x i32> <i32 0, i32 2, i32 4, i32 6, i32 8, i32 10, i32 12, i32 14>
2520*9880d681SAndroid Build Coastguard Worker  %vuzp1.i = shufflevector <8 x i8> %a, <8 x i8> %b, <8 x i32> <i32 1, i32 3, i32 5, i32 7, i32 9, i32 11, i32 13, i32 15>
2521*9880d681SAndroid Build Coastguard Worker  %.fca.0.0.insert = insertvalue %struct.uint8x8x2_t undef, <8 x i8> %vuzp.i, 0, 0
2522*9880d681SAndroid Build Coastguard Worker  %.fca.0.1.insert = insertvalue %struct.uint8x8x2_t %.fca.0.0.insert, <8 x i8> %vuzp1.i, 0, 1
2523*9880d681SAndroid Build Coastguard Worker  ret %struct.uint8x8x2_t %.fca.0.1.insert
2524*9880d681SAndroid Build Coastguard Worker}
2525*9880d681SAndroid Build Coastguard Worker
2526*9880d681SAndroid Build Coastguard Workerdefine %struct.uint16x4x2_t @test_vuzp_u16(<4 x i16> %a, <4 x i16> %b) {
2527*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vuzp_u16:
2528*9880d681SAndroid Build Coastguard Worker; CHECK: uzp1 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
2529*9880d681SAndroid Build Coastguard Worker; CHECK: uzp2 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
2530*9880d681SAndroid Build Coastguard Workerentry:
2531*9880d681SAndroid Build Coastguard Worker  %vuzp.i = shufflevector <4 x i16> %a, <4 x i16> %b, <4 x i32> <i32 0, i32 2, i32 4, i32 6>
2532*9880d681SAndroid Build Coastguard Worker  %vuzp1.i = shufflevector <4 x i16> %a, <4 x i16> %b, <4 x i32> <i32 1, i32 3, i32 5, i32 7>
2533*9880d681SAndroid Build Coastguard Worker  %.fca.0.0.insert = insertvalue %struct.uint16x4x2_t undef, <4 x i16> %vuzp.i, 0, 0
2534*9880d681SAndroid Build Coastguard Worker  %.fca.0.1.insert = insertvalue %struct.uint16x4x2_t %.fca.0.0.insert, <4 x i16> %vuzp1.i, 0, 1
2535*9880d681SAndroid Build Coastguard Worker  ret %struct.uint16x4x2_t %.fca.0.1.insert
2536*9880d681SAndroid Build Coastguard Worker}
2537*9880d681SAndroid Build Coastguard Worker
2538*9880d681SAndroid Build Coastguard Workerdefine %struct.uint32x2x2_t @test_vuzp_u32(<2 x i32> %a, <2 x i32> %b) {
2539*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vuzp_u32:
2540*9880d681SAndroid Build Coastguard Worker; CHECK: zip1 {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
2541*9880d681SAndroid Build Coastguard Worker; CHECK: zip2 {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
2542*9880d681SAndroid Build Coastguard Workerentry:
2543*9880d681SAndroid Build Coastguard Worker  %vuzp.i = shufflevector <2 x i32> %a, <2 x i32> %b, <2 x i32> <i32 0, i32 2>
2544*9880d681SAndroid Build Coastguard Worker  %vuzp1.i = shufflevector <2 x i32> %a, <2 x i32> %b, <2 x i32> <i32 1, i32 3>
2545*9880d681SAndroid Build Coastguard Worker  %.fca.0.0.insert = insertvalue %struct.uint32x2x2_t undef, <2 x i32> %vuzp.i, 0, 0
2546*9880d681SAndroid Build Coastguard Worker  %.fca.0.1.insert = insertvalue %struct.uint32x2x2_t %.fca.0.0.insert, <2 x i32> %vuzp1.i, 0, 1
2547*9880d681SAndroid Build Coastguard Worker  ret %struct.uint32x2x2_t %.fca.0.1.insert
2548*9880d681SAndroid Build Coastguard Worker}
2549*9880d681SAndroid Build Coastguard Worker
2550*9880d681SAndroid Build Coastguard Workerdefine %struct.float32x2x2_t @test_vuzp_f32(<2 x float> %a, <2 x float> %b) {
2551*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vuzp_f32:
2552*9880d681SAndroid Build Coastguard Worker; CHECK: zip1 {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
2553*9880d681SAndroid Build Coastguard Worker; CHECK: zip2 {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
2554*9880d681SAndroid Build Coastguard Workerentry:
2555*9880d681SAndroid Build Coastguard Worker  %vuzp.i = shufflevector <2 x float> %a, <2 x float> %b, <2 x i32> <i32 0, i32 2>
2556*9880d681SAndroid Build Coastguard Worker  %vuzp1.i = shufflevector <2 x float> %a, <2 x float> %b, <2 x i32> <i32 1, i32 3>
2557*9880d681SAndroid Build Coastguard Worker  %.fca.0.0.insert = insertvalue %struct.float32x2x2_t undef, <2 x float> %vuzp.i, 0, 0
2558*9880d681SAndroid Build Coastguard Worker  %.fca.0.1.insert = insertvalue %struct.float32x2x2_t %.fca.0.0.insert, <2 x float> %vuzp1.i, 0, 1
2559*9880d681SAndroid Build Coastguard Worker  ret %struct.float32x2x2_t %.fca.0.1.insert
2560*9880d681SAndroid Build Coastguard Worker}
2561*9880d681SAndroid Build Coastguard Worker
2562*9880d681SAndroid Build Coastguard Workerdefine %struct.poly8x8x2_t @test_vuzp_p8(<8 x i8> %a, <8 x i8> %b) {
2563*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vuzp_p8:
2564*9880d681SAndroid Build Coastguard Worker; CHECK: uzp1 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
2565*9880d681SAndroid Build Coastguard Worker; CHECK: uzp2 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
2566*9880d681SAndroid Build Coastguard Workerentry:
2567*9880d681SAndroid Build Coastguard Worker  %vuzp.i = shufflevector <8 x i8> %a, <8 x i8> %b, <8 x i32> <i32 0, i32 2, i32 4, i32 6, i32 8, i32 10, i32 12, i32 14>
2568*9880d681SAndroid Build Coastguard Worker  %vuzp1.i = shufflevector <8 x i8> %a, <8 x i8> %b, <8 x i32> <i32 1, i32 3, i32 5, i32 7, i32 9, i32 11, i32 13, i32 15>
2569*9880d681SAndroid Build Coastguard Worker  %.fca.0.0.insert = insertvalue %struct.poly8x8x2_t undef, <8 x i8> %vuzp.i, 0, 0
2570*9880d681SAndroid Build Coastguard Worker  %.fca.0.1.insert = insertvalue %struct.poly8x8x2_t %.fca.0.0.insert, <8 x i8> %vuzp1.i, 0, 1
2571*9880d681SAndroid Build Coastguard Worker  ret %struct.poly8x8x2_t %.fca.0.1.insert
2572*9880d681SAndroid Build Coastguard Worker}
2573*9880d681SAndroid Build Coastguard Worker
2574*9880d681SAndroid Build Coastguard Workerdefine %struct.poly16x4x2_t @test_vuzp_p16(<4 x i16> %a, <4 x i16> %b) {
2575*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vuzp_p16:
2576*9880d681SAndroid Build Coastguard Worker; CHECK: uzp1 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
2577*9880d681SAndroid Build Coastguard Worker; CHECK: uzp2 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
2578*9880d681SAndroid Build Coastguard Workerentry:
2579*9880d681SAndroid Build Coastguard Worker  %vuzp.i = shufflevector <4 x i16> %a, <4 x i16> %b, <4 x i32> <i32 0, i32 2, i32 4, i32 6>
2580*9880d681SAndroid Build Coastguard Worker  %vuzp1.i = shufflevector <4 x i16> %a, <4 x i16> %b, <4 x i32> <i32 1, i32 3, i32 5, i32 7>
2581*9880d681SAndroid Build Coastguard Worker  %.fca.0.0.insert = insertvalue %struct.poly16x4x2_t undef, <4 x i16> %vuzp.i, 0, 0
2582*9880d681SAndroid Build Coastguard Worker  %.fca.0.1.insert = insertvalue %struct.poly16x4x2_t %.fca.0.0.insert, <4 x i16> %vuzp1.i, 0, 1
2583*9880d681SAndroid Build Coastguard Worker  ret %struct.poly16x4x2_t %.fca.0.1.insert
2584*9880d681SAndroid Build Coastguard Worker}
2585*9880d681SAndroid Build Coastguard Worker
2586*9880d681SAndroid Build Coastguard Workerdefine %struct.int8x16x2_t @test_vuzpq_s8(<16 x i8> %a, <16 x i8> %b) {
2587*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vuzpq_s8:
2588*9880d681SAndroid Build Coastguard Worker; CHECK: uzp1 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
2589*9880d681SAndroid Build Coastguard Worker; CHECK: uzp2 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
2590*9880d681SAndroid Build Coastguard Workerentry:
2591*9880d681SAndroid Build Coastguard Worker  %vuzp.i = shufflevector <16 x i8> %a, <16 x i8> %b, <16 x i32> <i32 0, i32 2, i32 4, i32 6, i32 8, i32 10, i32 12, i32 14, i32 16, i32 18, i32 20, i32 22, i32 24, i32 26, i32 28, i32 30>
2592*9880d681SAndroid Build Coastguard Worker  %vuzp1.i = shufflevector <16 x i8> %a, <16 x i8> %b, <16 x i32> <i32 1, i32 3, i32 5, i32 7, i32 9, i32 11, i32 13, i32 15, i32 17, i32 19, i32 21, i32 23, i32 25, i32 27, i32 29, i32 31>
2593*9880d681SAndroid Build Coastguard Worker  %.fca.0.0.insert = insertvalue %struct.int8x16x2_t undef, <16 x i8> %vuzp.i, 0, 0
2594*9880d681SAndroid Build Coastguard Worker  %.fca.0.1.insert = insertvalue %struct.int8x16x2_t %.fca.0.0.insert, <16 x i8> %vuzp1.i, 0, 1
2595*9880d681SAndroid Build Coastguard Worker  ret %struct.int8x16x2_t %.fca.0.1.insert
2596*9880d681SAndroid Build Coastguard Worker}
2597*9880d681SAndroid Build Coastguard Worker
2598*9880d681SAndroid Build Coastguard Workerdefine %struct.int16x8x2_t @test_vuzpq_s16(<8 x i16> %a, <8 x i16> %b) {
2599*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vuzpq_s16:
2600*9880d681SAndroid Build Coastguard Worker; CHECK: uzp1 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
2601*9880d681SAndroid Build Coastguard Worker; CHECK: uzp2 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
2602*9880d681SAndroid Build Coastguard Workerentry:
2603*9880d681SAndroid Build Coastguard Worker  %vuzp.i = shufflevector <8 x i16> %a, <8 x i16> %b, <8 x i32> <i32 0, i32 2, i32 4, i32 6, i32 8, i32 10, i32 12, i32 14>
2604*9880d681SAndroid Build Coastguard Worker  %vuzp1.i = shufflevector <8 x i16> %a, <8 x i16> %b, <8 x i32> <i32 1, i32 3, i32 5, i32 7, i32 9, i32 11, i32 13, i32 15>
2605*9880d681SAndroid Build Coastguard Worker  %.fca.0.0.insert = insertvalue %struct.int16x8x2_t undef, <8 x i16> %vuzp.i, 0, 0
2606*9880d681SAndroid Build Coastguard Worker  %.fca.0.1.insert = insertvalue %struct.int16x8x2_t %.fca.0.0.insert, <8 x i16> %vuzp1.i, 0, 1
2607*9880d681SAndroid Build Coastguard Worker  ret %struct.int16x8x2_t %.fca.0.1.insert
2608*9880d681SAndroid Build Coastguard Worker}
2609*9880d681SAndroid Build Coastguard Worker
2610*9880d681SAndroid Build Coastguard Workerdefine %struct.int32x4x2_t @test_vuzpq_s32(<4 x i32> %a, <4 x i32> %b) {
2611*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vuzpq_s32:
2612*9880d681SAndroid Build Coastguard Worker; CHECK: uzp1 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
2613*9880d681SAndroid Build Coastguard Worker; CHECK: uzp2 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
2614*9880d681SAndroid Build Coastguard Workerentry:
2615*9880d681SAndroid Build Coastguard Worker  %vuzp.i = shufflevector <4 x i32> %a, <4 x i32> %b, <4 x i32> <i32 0, i32 2, i32 4, i32 6>
2616*9880d681SAndroid Build Coastguard Worker  %vuzp1.i = shufflevector <4 x i32> %a, <4 x i32> %b, <4 x i32> <i32 1, i32 3, i32 5, i32 7>
2617*9880d681SAndroid Build Coastguard Worker  %.fca.0.0.insert = insertvalue %struct.int32x4x2_t undef, <4 x i32> %vuzp.i, 0, 0
2618*9880d681SAndroid Build Coastguard Worker  %.fca.0.1.insert = insertvalue %struct.int32x4x2_t %.fca.0.0.insert, <4 x i32> %vuzp1.i, 0, 1
2619*9880d681SAndroid Build Coastguard Worker  ret %struct.int32x4x2_t %.fca.0.1.insert
2620*9880d681SAndroid Build Coastguard Worker}
2621*9880d681SAndroid Build Coastguard Worker
2622*9880d681SAndroid Build Coastguard Workerdefine %struct.uint8x16x2_t @test_vuzpq_u8(<16 x i8> %a, <16 x i8> %b) {
2623*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vuzpq_u8:
2624*9880d681SAndroid Build Coastguard Worker; CHECK: uzp1 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
2625*9880d681SAndroid Build Coastguard Worker; CHECK: uzp2 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
2626*9880d681SAndroid Build Coastguard Workerentry:
2627*9880d681SAndroid Build Coastguard Worker  %vuzp.i = shufflevector <16 x i8> %a, <16 x i8> %b, <16 x i32> <i32 0, i32 2, i32 4, i32 6, i32 8, i32 10, i32 12, i32 14, i32 16, i32 18, i32 20, i32 22, i32 24, i32 26, i32 28, i32 30>
2628*9880d681SAndroid Build Coastguard Worker  %vuzp1.i = shufflevector <16 x i8> %a, <16 x i8> %b, <16 x i32> <i32 1, i32 3, i32 5, i32 7, i32 9, i32 11, i32 13, i32 15, i32 17, i32 19, i32 21, i32 23, i32 25, i32 27, i32 29, i32 31>
2629*9880d681SAndroid Build Coastguard Worker  %.fca.0.0.insert = insertvalue %struct.uint8x16x2_t undef, <16 x i8> %vuzp.i, 0, 0
2630*9880d681SAndroid Build Coastguard Worker  %.fca.0.1.insert = insertvalue %struct.uint8x16x2_t %.fca.0.0.insert, <16 x i8> %vuzp1.i, 0, 1
2631*9880d681SAndroid Build Coastguard Worker  ret %struct.uint8x16x2_t %.fca.0.1.insert
2632*9880d681SAndroid Build Coastguard Worker}
2633*9880d681SAndroid Build Coastguard Worker
2634*9880d681SAndroid Build Coastguard Workerdefine %struct.uint16x8x2_t @test_vuzpq_u16(<8 x i16> %a, <8 x i16> %b) {
2635*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vuzpq_u16:
2636*9880d681SAndroid Build Coastguard Worker; CHECK: uzp1 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
2637*9880d681SAndroid Build Coastguard Worker; CHECK: uzp2 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
2638*9880d681SAndroid Build Coastguard Workerentry:
2639*9880d681SAndroid Build Coastguard Worker  %vuzp.i = shufflevector <8 x i16> %a, <8 x i16> %b, <8 x i32> <i32 0, i32 2, i32 4, i32 6, i32 8, i32 10, i32 12, i32 14>
2640*9880d681SAndroid Build Coastguard Worker  %vuzp1.i = shufflevector <8 x i16> %a, <8 x i16> %b, <8 x i32> <i32 1, i32 3, i32 5, i32 7, i32 9, i32 11, i32 13, i32 15>
2641*9880d681SAndroid Build Coastguard Worker  %.fca.0.0.insert = insertvalue %struct.uint16x8x2_t undef, <8 x i16> %vuzp.i, 0, 0
2642*9880d681SAndroid Build Coastguard Worker  %.fca.0.1.insert = insertvalue %struct.uint16x8x2_t %.fca.0.0.insert, <8 x i16> %vuzp1.i, 0, 1
2643*9880d681SAndroid Build Coastguard Worker  ret %struct.uint16x8x2_t %.fca.0.1.insert
2644*9880d681SAndroid Build Coastguard Worker}
2645*9880d681SAndroid Build Coastguard Worker
2646*9880d681SAndroid Build Coastguard Workerdefine %struct.uint32x4x2_t @test_vuzpq_u32(<4 x i32> %a, <4 x i32> %b) {
2647*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vuzpq_u32:
2648*9880d681SAndroid Build Coastguard Worker; CHECK: uzp1 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
2649*9880d681SAndroid Build Coastguard Worker; CHECK: uzp2 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
2650*9880d681SAndroid Build Coastguard Workerentry:
2651*9880d681SAndroid Build Coastguard Worker  %vuzp.i = shufflevector <4 x i32> %a, <4 x i32> %b, <4 x i32> <i32 0, i32 2, i32 4, i32 6>
2652*9880d681SAndroid Build Coastguard Worker  %vuzp1.i = shufflevector <4 x i32> %a, <4 x i32> %b, <4 x i32> <i32 1, i32 3, i32 5, i32 7>
2653*9880d681SAndroid Build Coastguard Worker  %.fca.0.0.insert = insertvalue %struct.uint32x4x2_t undef, <4 x i32> %vuzp.i, 0, 0
2654*9880d681SAndroid Build Coastguard Worker  %.fca.0.1.insert = insertvalue %struct.uint32x4x2_t %.fca.0.0.insert, <4 x i32> %vuzp1.i, 0, 1
2655*9880d681SAndroid Build Coastguard Worker  ret %struct.uint32x4x2_t %.fca.0.1.insert
2656*9880d681SAndroid Build Coastguard Worker}
2657*9880d681SAndroid Build Coastguard Worker
2658*9880d681SAndroid Build Coastguard Workerdefine %struct.float32x4x2_t @test_vuzpq_f32(<4 x float> %a, <4 x float> %b) {
2659*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vuzpq_f32:
2660*9880d681SAndroid Build Coastguard Worker; CHECK: uzp1 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
2661*9880d681SAndroid Build Coastguard Worker; CHECK: uzp2 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
2662*9880d681SAndroid Build Coastguard Workerentry:
2663*9880d681SAndroid Build Coastguard Worker  %vuzp.i = shufflevector <4 x float> %a, <4 x float> %b, <4 x i32> <i32 0, i32 2, i32 4, i32 6>
2664*9880d681SAndroid Build Coastguard Worker  %vuzp1.i = shufflevector <4 x float> %a, <4 x float> %b, <4 x i32> <i32 1, i32 3, i32 5, i32 7>
2665*9880d681SAndroid Build Coastguard Worker  %.fca.0.0.insert = insertvalue %struct.float32x4x2_t undef, <4 x float> %vuzp.i, 0, 0
2666*9880d681SAndroid Build Coastguard Worker  %.fca.0.1.insert = insertvalue %struct.float32x4x2_t %.fca.0.0.insert, <4 x float> %vuzp1.i, 0, 1
2667*9880d681SAndroid Build Coastguard Worker  ret %struct.float32x4x2_t %.fca.0.1.insert
2668*9880d681SAndroid Build Coastguard Worker}
2669*9880d681SAndroid Build Coastguard Worker
2670*9880d681SAndroid Build Coastguard Workerdefine %struct.poly8x16x2_t @test_vuzpq_p8(<16 x i8> %a, <16 x i8> %b) {
2671*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vuzpq_p8:
2672*9880d681SAndroid Build Coastguard Worker; CHECK: uzp1 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
2673*9880d681SAndroid Build Coastguard Worker; CHECK: uzp2 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
2674*9880d681SAndroid Build Coastguard Workerentry:
2675*9880d681SAndroid Build Coastguard Worker  %vuzp.i = shufflevector <16 x i8> %a, <16 x i8> %b, <16 x i32> <i32 0, i32 2, i32 4, i32 6, i32 8, i32 10, i32 12, i32 14, i32 16, i32 18, i32 20, i32 22, i32 24, i32 26, i32 28, i32 30>
2676*9880d681SAndroid Build Coastguard Worker  %vuzp1.i = shufflevector <16 x i8> %a, <16 x i8> %b, <16 x i32> <i32 1, i32 3, i32 5, i32 7, i32 9, i32 11, i32 13, i32 15, i32 17, i32 19, i32 21, i32 23, i32 25, i32 27, i32 29, i32 31>
2677*9880d681SAndroid Build Coastguard Worker  %.fca.0.0.insert = insertvalue %struct.poly8x16x2_t undef, <16 x i8> %vuzp.i, 0, 0
2678*9880d681SAndroid Build Coastguard Worker  %.fca.0.1.insert = insertvalue %struct.poly8x16x2_t %.fca.0.0.insert, <16 x i8> %vuzp1.i, 0, 1
2679*9880d681SAndroid Build Coastguard Worker  ret %struct.poly8x16x2_t %.fca.0.1.insert
2680*9880d681SAndroid Build Coastguard Worker}
2681*9880d681SAndroid Build Coastguard Worker
2682*9880d681SAndroid Build Coastguard Workerdefine %struct.poly16x8x2_t @test_vuzpq_p16(<8 x i16> %a, <8 x i16> %b) {
2683*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vuzpq_p16:
2684*9880d681SAndroid Build Coastguard Worker; CHECK: uzp1 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
2685*9880d681SAndroid Build Coastguard Worker; CHECK: uzp2 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
2686*9880d681SAndroid Build Coastguard Workerentry:
2687*9880d681SAndroid Build Coastguard Worker  %vuzp.i = shufflevector <8 x i16> %a, <8 x i16> %b, <8 x i32> <i32 0, i32 2, i32 4, i32 6, i32 8, i32 10, i32 12, i32 14>
2688*9880d681SAndroid Build Coastguard Worker  %vuzp1.i = shufflevector <8 x i16> %a, <8 x i16> %b, <8 x i32> <i32 1, i32 3, i32 5, i32 7, i32 9, i32 11, i32 13, i32 15>
2689*9880d681SAndroid Build Coastguard Worker  %.fca.0.0.insert = insertvalue %struct.poly16x8x2_t undef, <8 x i16> %vuzp.i, 0, 0
2690*9880d681SAndroid Build Coastguard Worker  %.fca.0.1.insert = insertvalue %struct.poly16x8x2_t %.fca.0.0.insert, <8 x i16> %vuzp1.i, 0, 1
2691*9880d681SAndroid Build Coastguard Worker  ret %struct.poly16x8x2_t %.fca.0.1.insert
2692*9880d681SAndroid Build Coastguard Worker}
2693*9880d681SAndroid Build Coastguard Worker
2694*9880d681SAndroid Build Coastguard Workerdefine %struct.int8x8x2_t @test_vzip_s8(<8 x i8> %a, <8 x i8> %b) {
2695*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vzip_s8:
2696*9880d681SAndroid Build Coastguard Worker; CHECK: zip1 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
2697*9880d681SAndroid Build Coastguard Worker; CHECK: zip2 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
2698*9880d681SAndroid Build Coastguard Workerentry:
2699*9880d681SAndroid Build Coastguard Worker  %vzip.i = shufflevector <8 x i8> %a, <8 x i8> %b, <8 x i32> <i32 0, i32 8, i32 1, i32 9, i32 2, i32 10, i32 3, i32 11>
2700*9880d681SAndroid Build Coastguard Worker  %vzip1.i = shufflevector <8 x i8> %a, <8 x i8> %b, <8 x i32> <i32 4, i32 12, i32 5, i32 13, i32 6, i32 14, i32 7, i32 15>
2701*9880d681SAndroid Build Coastguard Worker  %.fca.0.0.insert = insertvalue %struct.int8x8x2_t undef, <8 x i8> %vzip.i, 0, 0
2702*9880d681SAndroid Build Coastguard Worker  %.fca.0.1.insert = insertvalue %struct.int8x8x2_t %.fca.0.0.insert, <8 x i8> %vzip1.i, 0, 1
2703*9880d681SAndroid Build Coastguard Worker  ret %struct.int8x8x2_t %.fca.0.1.insert
2704*9880d681SAndroid Build Coastguard Worker}
2705*9880d681SAndroid Build Coastguard Worker
2706*9880d681SAndroid Build Coastguard Workerdefine %struct.int16x4x2_t @test_vzip_s16(<4 x i16> %a, <4 x i16> %b) {
2707*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vzip_s16:
2708*9880d681SAndroid Build Coastguard Worker; CHECK: zip1 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
2709*9880d681SAndroid Build Coastguard Worker; CHECK: zip2 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
2710*9880d681SAndroid Build Coastguard Workerentry:
2711*9880d681SAndroid Build Coastguard Worker  %vzip.i = shufflevector <4 x i16> %a, <4 x i16> %b, <4 x i32> <i32 0, i32 4, i32 1, i32 5>
2712*9880d681SAndroid Build Coastguard Worker  %vzip1.i = shufflevector <4 x i16> %a, <4 x i16> %b, <4 x i32> <i32 2, i32 6, i32 3, i32 7>
2713*9880d681SAndroid Build Coastguard Worker  %.fca.0.0.insert = insertvalue %struct.int16x4x2_t undef, <4 x i16> %vzip.i, 0, 0
2714*9880d681SAndroid Build Coastguard Worker  %.fca.0.1.insert = insertvalue %struct.int16x4x2_t %.fca.0.0.insert, <4 x i16> %vzip1.i, 0, 1
2715*9880d681SAndroid Build Coastguard Worker  ret %struct.int16x4x2_t %.fca.0.1.insert
2716*9880d681SAndroid Build Coastguard Worker}
2717*9880d681SAndroid Build Coastguard Worker
2718*9880d681SAndroid Build Coastguard Workerdefine %struct.int32x2x2_t @test_vzip_s32(<2 x i32> %a, <2 x i32> %b) {
2719*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vzip_s32:
2720*9880d681SAndroid Build Coastguard Worker; CHECK: zip1 {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
2721*9880d681SAndroid Build Coastguard Worker; CHECK: zip2 {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
2722*9880d681SAndroid Build Coastguard Workerentry:
2723*9880d681SAndroid Build Coastguard Worker  %vzip.i = shufflevector <2 x i32> %a, <2 x i32> %b, <2 x i32> <i32 0, i32 2>
2724*9880d681SAndroid Build Coastguard Worker  %vzip1.i = shufflevector <2 x i32> %a, <2 x i32> %b, <2 x i32> <i32 1, i32 3>
2725*9880d681SAndroid Build Coastguard Worker  %.fca.0.0.insert = insertvalue %struct.int32x2x2_t undef, <2 x i32> %vzip.i, 0, 0
2726*9880d681SAndroid Build Coastguard Worker  %.fca.0.1.insert = insertvalue %struct.int32x2x2_t %.fca.0.0.insert, <2 x i32> %vzip1.i, 0, 1
2727*9880d681SAndroid Build Coastguard Worker  ret %struct.int32x2x2_t %.fca.0.1.insert
2728*9880d681SAndroid Build Coastguard Worker}
2729*9880d681SAndroid Build Coastguard Worker
2730*9880d681SAndroid Build Coastguard Workerdefine %struct.uint8x8x2_t @test_vzip_u8(<8 x i8> %a, <8 x i8> %b) {
2731*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vzip_u8:
2732*9880d681SAndroid Build Coastguard Worker; CHECK: zip1 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
2733*9880d681SAndroid Build Coastguard Worker; CHECK: zip2 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
2734*9880d681SAndroid Build Coastguard Workerentry:
2735*9880d681SAndroid Build Coastguard Worker  %vzip.i = shufflevector <8 x i8> %a, <8 x i8> %b, <8 x i32> <i32 0, i32 8, i32 1, i32 9, i32 2, i32 10, i32 3, i32 11>
2736*9880d681SAndroid Build Coastguard Worker  %vzip1.i = shufflevector <8 x i8> %a, <8 x i8> %b, <8 x i32> <i32 4, i32 12, i32 5, i32 13, i32 6, i32 14, i32 7, i32 15>
2737*9880d681SAndroid Build Coastguard Worker  %.fca.0.0.insert = insertvalue %struct.uint8x8x2_t undef, <8 x i8> %vzip.i, 0, 0
2738*9880d681SAndroid Build Coastguard Worker  %.fca.0.1.insert = insertvalue %struct.uint8x8x2_t %.fca.0.0.insert, <8 x i8> %vzip1.i, 0, 1
2739*9880d681SAndroid Build Coastguard Worker  ret %struct.uint8x8x2_t %.fca.0.1.insert
2740*9880d681SAndroid Build Coastguard Worker}
2741*9880d681SAndroid Build Coastguard Worker
2742*9880d681SAndroid Build Coastguard Workerdefine %struct.uint16x4x2_t @test_vzip_u16(<4 x i16> %a, <4 x i16> %b) {
2743*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vzip_u16:
2744*9880d681SAndroid Build Coastguard Worker; CHECK: zip1 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
2745*9880d681SAndroid Build Coastguard Worker; CHECK: zip2 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
2746*9880d681SAndroid Build Coastguard Workerentry:
2747*9880d681SAndroid Build Coastguard Worker  %vzip.i = shufflevector <4 x i16> %a, <4 x i16> %b, <4 x i32> <i32 0, i32 4, i32 1, i32 5>
2748*9880d681SAndroid Build Coastguard Worker  %vzip1.i = shufflevector <4 x i16> %a, <4 x i16> %b, <4 x i32> <i32 2, i32 6, i32 3, i32 7>
2749*9880d681SAndroid Build Coastguard Worker  %.fca.0.0.insert = insertvalue %struct.uint16x4x2_t undef, <4 x i16> %vzip.i, 0, 0
2750*9880d681SAndroid Build Coastguard Worker  %.fca.0.1.insert = insertvalue %struct.uint16x4x2_t %.fca.0.0.insert, <4 x i16> %vzip1.i, 0, 1
2751*9880d681SAndroid Build Coastguard Worker  ret %struct.uint16x4x2_t %.fca.0.1.insert
2752*9880d681SAndroid Build Coastguard Worker}
2753*9880d681SAndroid Build Coastguard Worker
2754*9880d681SAndroid Build Coastguard Workerdefine %struct.uint32x2x2_t @test_vzip_u32(<2 x i32> %a, <2 x i32> %b) {
2755*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vzip_u32:
2756*9880d681SAndroid Build Coastguard Worker; CHECK: zip1 {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
2757*9880d681SAndroid Build Coastguard Worker; CHECK: zip2 {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
2758*9880d681SAndroid Build Coastguard Workerentry:
2759*9880d681SAndroid Build Coastguard Worker  %vzip.i = shufflevector <2 x i32> %a, <2 x i32> %b, <2 x i32> <i32 0, i32 2>
2760*9880d681SAndroid Build Coastguard Worker  %vzip1.i = shufflevector <2 x i32> %a, <2 x i32> %b, <2 x i32> <i32 1, i32 3>
2761*9880d681SAndroid Build Coastguard Worker  %.fca.0.0.insert = insertvalue %struct.uint32x2x2_t undef, <2 x i32> %vzip.i, 0, 0
2762*9880d681SAndroid Build Coastguard Worker  %.fca.0.1.insert = insertvalue %struct.uint32x2x2_t %.fca.0.0.insert, <2 x i32> %vzip1.i, 0, 1
2763*9880d681SAndroid Build Coastguard Worker  ret %struct.uint32x2x2_t %.fca.0.1.insert
2764*9880d681SAndroid Build Coastguard Worker}
2765*9880d681SAndroid Build Coastguard Worker
2766*9880d681SAndroid Build Coastguard Workerdefine %struct.float32x2x2_t @test_vzip_f32(<2 x float> %a, <2 x float> %b) {
2767*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vzip_f32:
2768*9880d681SAndroid Build Coastguard Worker; CHECK: zip1 {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
2769*9880d681SAndroid Build Coastguard Worker; CHECK: zip2 {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
2770*9880d681SAndroid Build Coastguard Workerentry:
2771*9880d681SAndroid Build Coastguard Worker  %vzip.i = shufflevector <2 x float> %a, <2 x float> %b, <2 x i32> <i32 0, i32 2>
2772*9880d681SAndroid Build Coastguard Worker  %vzip1.i = shufflevector <2 x float> %a, <2 x float> %b, <2 x i32> <i32 1, i32 3>
2773*9880d681SAndroid Build Coastguard Worker  %.fca.0.0.insert = insertvalue %struct.float32x2x2_t undef, <2 x float> %vzip.i, 0, 0
2774*9880d681SAndroid Build Coastguard Worker  %.fca.0.1.insert = insertvalue %struct.float32x2x2_t %.fca.0.0.insert, <2 x float> %vzip1.i, 0, 1
2775*9880d681SAndroid Build Coastguard Worker  ret %struct.float32x2x2_t %.fca.0.1.insert
2776*9880d681SAndroid Build Coastguard Worker}
2777*9880d681SAndroid Build Coastguard Worker
2778*9880d681SAndroid Build Coastguard Workerdefine %struct.poly8x8x2_t @test_vzip_p8(<8 x i8> %a, <8 x i8> %b) {
2779*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vzip_p8:
2780*9880d681SAndroid Build Coastguard Worker; CHECK: zip1 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
2781*9880d681SAndroid Build Coastguard Worker; CHECK: zip2 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
2782*9880d681SAndroid Build Coastguard Workerentry:
2783*9880d681SAndroid Build Coastguard Worker  %vzip.i = shufflevector <8 x i8> %a, <8 x i8> %b, <8 x i32> <i32 0, i32 8, i32 1, i32 9, i32 2, i32 10, i32 3, i32 11>
2784*9880d681SAndroid Build Coastguard Worker  %vzip1.i = shufflevector <8 x i8> %a, <8 x i8> %b, <8 x i32> <i32 4, i32 12, i32 5, i32 13, i32 6, i32 14, i32 7, i32 15>
2785*9880d681SAndroid Build Coastguard Worker  %.fca.0.0.insert = insertvalue %struct.poly8x8x2_t undef, <8 x i8> %vzip.i, 0, 0
2786*9880d681SAndroid Build Coastguard Worker  %.fca.0.1.insert = insertvalue %struct.poly8x8x2_t %.fca.0.0.insert, <8 x i8> %vzip1.i, 0, 1
2787*9880d681SAndroid Build Coastguard Worker  ret %struct.poly8x8x2_t %.fca.0.1.insert
2788*9880d681SAndroid Build Coastguard Worker}
2789*9880d681SAndroid Build Coastguard Worker
2790*9880d681SAndroid Build Coastguard Workerdefine %struct.poly16x4x2_t @test_vzip_p16(<4 x i16> %a, <4 x i16> %b) {
2791*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vzip_p16:
2792*9880d681SAndroid Build Coastguard Worker; CHECK: zip1 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
2793*9880d681SAndroid Build Coastguard Worker; CHECK: zip2 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
2794*9880d681SAndroid Build Coastguard Workerentry:
2795*9880d681SAndroid Build Coastguard Worker  %vzip.i = shufflevector <4 x i16> %a, <4 x i16> %b, <4 x i32> <i32 0, i32 4, i32 1, i32 5>
2796*9880d681SAndroid Build Coastguard Worker  %vzip1.i = shufflevector <4 x i16> %a, <4 x i16> %b, <4 x i32> <i32 2, i32 6, i32 3, i32 7>
2797*9880d681SAndroid Build Coastguard Worker  %.fca.0.0.insert = insertvalue %struct.poly16x4x2_t undef, <4 x i16> %vzip.i, 0, 0
2798*9880d681SAndroid Build Coastguard Worker  %.fca.0.1.insert = insertvalue %struct.poly16x4x2_t %.fca.0.0.insert, <4 x i16> %vzip1.i, 0, 1
2799*9880d681SAndroid Build Coastguard Worker  ret %struct.poly16x4x2_t %.fca.0.1.insert
2800*9880d681SAndroid Build Coastguard Worker}
2801*9880d681SAndroid Build Coastguard Worker
2802*9880d681SAndroid Build Coastguard Workerdefine %struct.int8x16x2_t @test_vzipq_s8(<16 x i8> %a, <16 x i8> %b) {
2803*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vzipq_s8:
2804*9880d681SAndroid Build Coastguard Worker; CHECK: zip1 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
2805*9880d681SAndroid Build Coastguard Worker; CHECK: zip2 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
2806*9880d681SAndroid Build Coastguard Workerentry:
2807*9880d681SAndroid Build Coastguard Worker  %vzip.i = shufflevector <16 x i8> %a, <16 x i8> %b, <16 x i32> <i32 0, i32 16, i32 1, i32 17, i32 2, i32 18, i32 3, i32 19, i32 4, i32 20, i32 5, i32 21, i32 6, i32 22, i32 7, i32 23>
2808*9880d681SAndroid Build Coastguard Worker  %vzip1.i = shufflevector <16 x i8> %a, <16 x i8> %b, <16 x i32> <i32 8, i32 24, i32 9, i32 25, i32 10, i32 26, i32 11, i32 27, i32 12, i32 28, i32 13, i32 29, i32 14, i32 30, i32 15, i32 31>
2809*9880d681SAndroid Build Coastguard Worker  %.fca.0.0.insert = insertvalue %struct.int8x16x2_t undef, <16 x i8> %vzip.i, 0, 0
2810*9880d681SAndroid Build Coastguard Worker  %.fca.0.1.insert = insertvalue %struct.int8x16x2_t %.fca.0.0.insert, <16 x i8> %vzip1.i, 0, 1
2811*9880d681SAndroid Build Coastguard Worker  ret %struct.int8x16x2_t %.fca.0.1.insert
2812*9880d681SAndroid Build Coastguard Worker}
2813*9880d681SAndroid Build Coastguard Worker
2814*9880d681SAndroid Build Coastguard Workerdefine %struct.int16x8x2_t @test_vzipq_s16(<8 x i16> %a, <8 x i16> %b) {
2815*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vzipq_s16:
2816*9880d681SAndroid Build Coastguard Worker; CHECK: zip1 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
2817*9880d681SAndroid Build Coastguard Worker; CHECK: zip2 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
2818*9880d681SAndroid Build Coastguard Workerentry:
2819*9880d681SAndroid Build Coastguard Worker  %vzip.i = shufflevector <8 x i16> %a, <8 x i16> %b, <8 x i32> <i32 0, i32 8, i32 1, i32 9, i32 2, i32 10, i32 3, i32 11>
2820*9880d681SAndroid Build Coastguard Worker  %vzip1.i = shufflevector <8 x i16> %a, <8 x i16> %b, <8 x i32> <i32 4, i32 12, i32 5, i32 13, i32 6, i32 14, i32 7, i32 15>
2821*9880d681SAndroid Build Coastguard Worker  %.fca.0.0.insert = insertvalue %struct.int16x8x2_t undef, <8 x i16> %vzip.i, 0, 0
2822*9880d681SAndroid Build Coastguard Worker  %.fca.0.1.insert = insertvalue %struct.int16x8x2_t %.fca.0.0.insert, <8 x i16> %vzip1.i, 0, 1
2823*9880d681SAndroid Build Coastguard Worker  ret %struct.int16x8x2_t %.fca.0.1.insert
2824*9880d681SAndroid Build Coastguard Worker}
2825*9880d681SAndroid Build Coastguard Worker
2826*9880d681SAndroid Build Coastguard Workerdefine %struct.int32x4x2_t @test_vzipq_s32(<4 x i32> %a, <4 x i32> %b) {
2827*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vzipq_s32:
2828*9880d681SAndroid Build Coastguard Worker; CHECK: zip1 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
2829*9880d681SAndroid Build Coastguard Worker; CHECK: zip2 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
2830*9880d681SAndroid Build Coastguard Workerentry:
2831*9880d681SAndroid Build Coastguard Worker  %vzip.i = shufflevector <4 x i32> %a, <4 x i32> %b, <4 x i32> <i32 0, i32 4, i32 1, i32 5>
2832*9880d681SAndroid Build Coastguard Worker  %vzip1.i = shufflevector <4 x i32> %a, <4 x i32> %b, <4 x i32> <i32 2, i32 6, i32 3, i32 7>
2833*9880d681SAndroid Build Coastguard Worker  %.fca.0.0.insert = insertvalue %struct.int32x4x2_t undef, <4 x i32> %vzip.i, 0, 0
2834*9880d681SAndroid Build Coastguard Worker  %.fca.0.1.insert = insertvalue %struct.int32x4x2_t %.fca.0.0.insert, <4 x i32> %vzip1.i, 0, 1
2835*9880d681SAndroid Build Coastguard Worker  ret %struct.int32x4x2_t %.fca.0.1.insert
2836*9880d681SAndroid Build Coastguard Worker}
2837*9880d681SAndroid Build Coastguard Worker
2838*9880d681SAndroid Build Coastguard Workerdefine %struct.uint8x16x2_t @test_vzipq_u8(<16 x i8> %a, <16 x i8> %b) {
2839*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vzipq_u8:
2840*9880d681SAndroid Build Coastguard Worker; CHECK: zip1 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
2841*9880d681SAndroid Build Coastguard Worker; CHECK: zip2 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
2842*9880d681SAndroid Build Coastguard Workerentry:
2843*9880d681SAndroid Build Coastguard Worker  %vzip.i = shufflevector <16 x i8> %a, <16 x i8> %b, <16 x i32> <i32 0, i32 16, i32 1, i32 17, i32 2, i32 18, i32 3, i32 19, i32 4, i32 20, i32 5, i32 21, i32 6, i32 22, i32 7, i32 23>
2844*9880d681SAndroid Build Coastguard Worker  %vzip1.i = shufflevector <16 x i8> %a, <16 x i8> %b, <16 x i32> <i32 8, i32 24, i32 9, i32 25, i32 10, i32 26, i32 11, i32 27, i32 12, i32 28, i32 13, i32 29, i32 14, i32 30, i32 15, i32 31>
2845*9880d681SAndroid Build Coastguard Worker  %.fca.0.0.insert = insertvalue %struct.uint8x16x2_t undef, <16 x i8> %vzip.i, 0, 0
2846*9880d681SAndroid Build Coastguard Worker  %.fca.0.1.insert = insertvalue %struct.uint8x16x2_t %.fca.0.0.insert, <16 x i8> %vzip1.i, 0, 1
2847*9880d681SAndroid Build Coastguard Worker  ret %struct.uint8x16x2_t %.fca.0.1.insert
2848*9880d681SAndroid Build Coastguard Worker}
2849*9880d681SAndroid Build Coastguard Worker
2850*9880d681SAndroid Build Coastguard Workerdefine %struct.uint16x8x2_t @test_vzipq_u16(<8 x i16> %a, <8 x i16> %b) {
2851*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vzipq_u16:
2852*9880d681SAndroid Build Coastguard Worker; CHECK: zip1 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
2853*9880d681SAndroid Build Coastguard Worker; CHECK: zip2 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
2854*9880d681SAndroid Build Coastguard Workerentry:
2855*9880d681SAndroid Build Coastguard Worker  %vzip.i = shufflevector <8 x i16> %a, <8 x i16> %b, <8 x i32> <i32 0, i32 8, i32 1, i32 9, i32 2, i32 10, i32 3, i32 11>
2856*9880d681SAndroid Build Coastguard Worker  %vzip1.i = shufflevector <8 x i16> %a, <8 x i16> %b, <8 x i32> <i32 4, i32 12, i32 5, i32 13, i32 6, i32 14, i32 7, i32 15>
2857*9880d681SAndroid Build Coastguard Worker  %.fca.0.0.insert = insertvalue %struct.uint16x8x2_t undef, <8 x i16> %vzip.i, 0, 0
2858*9880d681SAndroid Build Coastguard Worker  %.fca.0.1.insert = insertvalue %struct.uint16x8x2_t %.fca.0.0.insert, <8 x i16> %vzip1.i, 0, 1
2859*9880d681SAndroid Build Coastguard Worker  ret %struct.uint16x8x2_t %.fca.0.1.insert
2860*9880d681SAndroid Build Coastguard Worker}
2861*9880d681SAndroid Build Coastguard Worker
2862*9880d681SAndroid Build Coastguard Workerdefine %struct.uint32x4x2_t @test_vzipq_u32(<4 x i32> %a, <4 x i32> %b) {
2863*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vzipq_u32:
2864*9880d681SAndroid Build Coastguard Worker; CHECK: zip1 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
2865*9880d681SAndroid Build Coastguard Worker; CHECK: zip2 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
2866*9880d681SAndroid Build Coastguard Workerentry:
2867*9880d681SAndroid Build Coastguard Worker  %vzip.i = shufflevector <4 x i32> %a, <4 x i32> %b, <4 x i32> <i32 0, i32 4, i32 1, i32 5>
2868*9880d681SAndroid Build Coastguard Worker  %vzip1.i = shufflevector <4 x i32> %a, <4 x i32> %b, <4 x i32> <i32 2, i32 6, i32 3, i32 7>
2869*9880d681SAndroid Build Coastguard Worker  %.fca.0.0.insert = insertvalue %struct.uint32x4x2_t undef, <4 x i32> %vzip.i, 0, 0
2870*9880d681SAndroid Build Coastguard Worker  %.fca.0.1.insert = insertvalue %struct.uint32x4x2_t %.fca.0.0.insert, <4 x i32> %vzip1.i, 0, 1
2871*9880d681SAndroid Build Coastguard Worker  ret %struct.uint32x4x2_t %.fca.0.1.insert
2872*9880d681SAndroid Build Coastguard Worker}
2873*9880d681SAndroid Build Coastguard Worker
2874*9880d681SAndroid Build Coastguard Workerdefine %struct.float32x4x2_t @test_vzipq_f32(<4 x float> %a, <4 x float> %b) {
2875*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vzipq_f32:
2876*9880d681SAndroid Build Coastguard Worker; CHECK: zip1 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
2877*9880d681SAndroid Build Coastguard Worker; CHECK: zip2 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
2878*9880d681SAndroid Build Coastguard Workerentry:
2879*9880d681SAndroid Build Coastguard Worker  %vzip.i = shufflevector <4 x float> %a, <4 x float> %b, <4 x i32> <i32 0, i32 4, i32 1, i32 5>
2880*9880d681SAndroid Build Coastguard Worker  %vzip1.i = shufflevector <4 x float> %a, <4 x float> %b, <4 x i32> <i32 2, i32 6, i32 3, i32 7>
2881*9880d681SAndroid Build Coastguard Worker  %.fca.0.0.insert = insertvalue %struct.float32x4x2_t undef, <4 x float> %vzip.i, 0, 0
2882*9880d681SAndroid Build Coastguard Worker  %.fca.0.1.insert = insertvalue %struct.float32x4x2_t %.fca.0.0.insert, <4 x float> %vzip1.i, 0, 1
2883*9880d681SAndroid Build Coastguard Worker  ret %struct.float32x4x2_t %.fca.0.1.insert
2884*9880d681SAndroid Build Coastguard Worker}
2885*9880d681SAndroid Build Coastguard Worker
2886*9880d681SAndroid Build Coastguard Workerdefine %struct.poly8x16x2_t @test_vzipq_p8(<16 x i8> %a, <16 x i8> %b) {
2887*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vzipq_p8:
2888*9880d681SAndroid Build Coastguard Worker; CHECK: zip1 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
2889*9880d681SAndroid Build Coastguard Worker; CHECK: zip2 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
2890*9880d681SAndroid Build Coastguard Workerentry:
2891*9880d681SAndroid Build Coastguard Worker  %vzip.i = shufflevector <16 x i8> %a, <16 x i8> %b, <16 x i32> <i32 0, i32 16, i32 1, i32 17, i32 2, i32 18, i32 3, i32 19, i32 4, i32 20, i32 5, i32 21, i32 6, i32 22, i32 7, i32 23>
2892*9880d681SAndroid Build Coastguard Worker  %vzip1.i = shufflevector <16 x i8> %a, <16 x i8> %b, <16 x i32> <i32 8, i32 24, i32 9, i32 25, i32 10, i32 26, i32 11, i32 27, i32 12, i32 28, i32 13, i32 29, i32 14, i32 30, i32 15, i32 31>
2893*9880d681SAndroid Build Coastguard Worker  %.fca.0.0.insert = insertvalue %struct.poly8x16x2_t undef, <16 x i8> %vzip.i, 0, 0
2894*9880d681SAndroid Build Coastguard Worker  %.fca.0.1.insert = insertvalue %struct.poly8x16x2_t %.fca.0.0.insert, <16 x i8> %vzip1.i, 0, 1
2895*9880d681SAndroid Build Coastguard Worker  ret %struct.poly8x16x2_t %.fca.0.1.insert
2896*9880d681SAndroid Build Coastguard Worker}
2897*9880d681SAndroid Build Coastguard Worker
2898*9880d681SAndroid Build Coastguard Workerdefine %struct.poly16x8x2_t @test_vzipq_p16(<8 x i16> %a, <8 x i16> %b) {
2899*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vzipq_p16:
2900*9880d681SAndroid Build Coastguard Worker; CHECK: zip1 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
2901*9880d681SAndroid Build Coastguard Worker; CHECK: zip2 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
2902*9880d681SAndroid Build Coastguard Workerentry:
2903*9880d681SAndroid Build Coastguard Worker  %vzip.i = shufflevector <8 x i16> %a, <8 x i16> %b, <8 x i32> <i32 0, i32 8, i32 1, i32 9, i32 2, i32 10, i32 3, i32 11>
2904*9880d681SAndroid Build Coastguard Worker  %vzip1.i = shufflevector <8 x i16> %a, <8 x i16> %b, <8 x i32> <i32 4, i32 12, i32 5, i32 13, i32 6, i32 14, i32 7, i32 15>
2905*9880d681SAndroid Build Coastguard Worker  %.fca.0.0.insert = insertvalue %struct.poly16x8x2_t undef, <8 x i16> %vzip.i, 0, 0
2906*9880d681SAndroid Build Coastguard Worker  %.fca.0.1.insert = insertvalue %struct.poly16x8x2_t %.fca.0.0.insert, <8 x i16> %vzip1.i, 0, 1
2907*9880d681SAndroid Build Coastguard Worker  ret %struct.poly16x8x2_t %.fca.0.1.insert
2908*9880d681SAndroid Build Coastguard Worker}
2909*9880d681SAndroid Build Coastguard Worker
2910*9880d681SAndroid Build Coastguard Workerdefine %struct.int8x8x2_t @test_vtrn_s8(<8 x i8> %a, <8 x i8> %b) {
2911*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vtrn_s8:
2912*9880d681SAndroid Build Coastguard Worker; CHECK: trn1 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
2913*9880d681SAndroid Build Coastguard Worker; CHECK: trn2 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
2914*9880d681SAndroid Build Coastguard Workerentry:
2915*9880d681SAndroid Build Coastguard Worker  %vtrn.i = shufflevector <8 x i8> %a, <8 x i8> %b, <8 x i32> <i32 0, i32 8, i32 2, i32 10, i32 4, i32 12, i32 6, i32 14>
2916*9880d681SAndroid Build Coastguard Worker  %vtrn1.i = shufflevector <8 x i8> %a, <8 x i8> %b, <8 x i32> <i32 1, i32 9, i32 3, i32 11, i32 5, i32 13, i32 7, i32 15>
2917*9880d681SAndroid Build Coastguard Worker  %.fca.0.0.insert = insertvalue %struct.int8x8x2_t undef, <8 x i8> %vtrn.i, 0, 0
2918*9880d681SAndroid Build Coastguard Worker  %.fca.0.1.insert = insertvalue %struct.int8x8x2_t %.fca.0.0.insert, <8 x i8> %vtrn1.i, 0, 1
2919*9880d681SAndroid Build Coastguard Worker  ret %struct.int8x8x2_t %.fca.0.1.insert
2920*9880d681SAndroid Build Coastguard Worker}
2921*9880d681SAndroid Build Coastguard Worker
2922*9880d681SAndroid Build Coastguard Workerdefine %struct.int16x4x2_t @test_vtrn_s16(<4 x i16> %a, <4 x i16> %b) {
2923*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vtrn_s16:
2924*9880d681SAndroid Build Coastguard Worker; CHECK: trn1 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
2925*9880d681SAndroid Build Coastguard Worker; CHECK: trn2 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
2926*9880d681SAndroid Build Coastguard Workerentry:
2927*9880d681SAndroid Build Coastguard Worker  %vtrn.i = shufflevector <4 x i16> %a, <4 x i16> %b, <4 x i32> <i32 0, i32 4, i32 2, i32 6>
2928*9880d681SAndroid Build Coastguard Worker  %vtrn1.i = shufflevector <4 x i16> %a, <4 x i16> %b, <4 x i32> <i32 1, i32 5, i32 3, i32 7>
2929*9880d681SAndroid Build Coastguard Worker  %.fca.0.0.insert = insertvalue %struct.int16x4x2_t undef, <4 x i16> %vtrn.i, 0, 0
2930*9880d681SAndroid Build Coastguard Worker  %.fca.0.1.insert = insertvalue %struct.int16x4x2_t %.fca.0.0.insert, <4 x i16> %vtrn1.i, 0, 1
2931*9880d681SAndroid Build Coastguard Worker  ret %struct.int16x4x2_t %.fca.0.1.insert
2932*9880d681SAndroid Build Coastguard Worker}
2933*9880d681SAndroid Build Coastguard Worker
2934*9880d681SAndroid Build Coastguard Workerdefine %struct.int32x2x2_t @test_vtrn_s32(<2 x i32> %a, <2 x i32> %b) {
2935*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vtrn_s32:
2936*9880d681SAndroid Build Coastguard Worker; CHECK: zip1 {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
2937*9880d681SAndroid Build Coastguard Worker; CHECK: zip2 {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
2938*9880d681SAndroid Build Coastguard Workerentry:
2939*9880d681SAndroid Build Coastguard Worker  %vtrn.i = shufflevector <2 x i32> %a, <2 x i32> %b, <2 x i32> <i32 0, i32 2>
2940*9880d681SAndroid Build Coastguard Worker  %vtrn1.i = shufflevector <2 x i32> %a, <2 x i32> %b, <2 x i32> <i32 1, i32 3>
2941*9880d681SAndroid Build Coastguard Worker  %.fca.0.0.insert = insertvalue %struct.int32x2x2_t undef, <2 x i32> %vtrn.i, 0, 0
2942*9880d681SAndroid Build Coastguard Worker  %.fca.0.1.insert = insertvalue %struct.int32x2x2_t %.fca.0.0.insert, <2 x i32> %vtrn1.i, 0, 1
2943*9880d681SAndroid Build Coastguard Worker  ret %struct.int32x2x2_t %.fca.0.1.insert
2944*9880d681SAndroid Build Coastguard Worker}
2945*9880d681SAndroid Build Coastguard Worker
2946*9880d681SAndroid Build Coastguard Workerdefine %struct.uint8x8x2_t @test_vtrn_u8(<8 x i8> %a, <8 x i8> %b) {
2947*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vtrn_u8:
2948*9880d681SAndroid Build Coastguard Worker; CHECK: trn1 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
2949*9880d681SAndroid Build Coastguard Worker; CHECK: trn2 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
2950*9880d681SAndroid Build Coastguard Workerentry:
2951*9880d681SAndroid Build Coastguard Worker  %vtrn.i = shufflevector <8 x i8> %a, <8 x i8> %b, <8 x i32> <i32 0, i32 8, i32 2, i32 10, i32 4, i32 12, i32 6, i32 14>
2952*9880d681SAndroid Build Coastguard Worker  %vtrn1.i = shufflevector <8 x i8> %a, <8 x i8> %b, <8 x i32> <i32 1, i32 9, i32 3, i32 11, i32 5, i32 13, i32 7, i32 15>
2953*9880d681SAndroid Build Coastguard Worker  %.fca.0.0.insert = insertvalue %struct.uint8x8x2_t undef, <8 x i8> %vtrn.i, 0, 0
2954*9880d681SAndroid Build Coastguard Worker  %.fca.0.1.insert = insertvalue %struct.uint8x8x2_t %.fca.0.0.insert, <8 x i8> %vtrn1.i, 0, 1
2955*9880d681SAndroid Build Coastguard Worker  ret %struct.uint8x8x2_t %.fca.0.1.insert
2956*9880d681SAndroid Build Coastguard Worker}
2957*9880d681SAndroid Build Coastguard Worker
2958*9880d681SAndroid Build Coastguard Workerdefine %struct.uint16x4x2_t @test_vtrn_u16(<4 x i16> %a, <4 x i16> %b) {
2959*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vtrn_u16:
2960*9880d681SAndroid Build Coastguard Worker; CHECK: trn1 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
2961*9880d681SAndroid Build Coastguard Worker; CHECK: trn2 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
2962*9880d681SAndroid Build Coastguard Workerentry:
2963*9880d681SAndroid Build Coastguard Worker  %vtrn.i = shufflevector <4 x i16> %a, <4 x i16> %b, <4 x i32> <i32 0, i32 4, i32 2, i32 6>
2964*9880d681SAndroid Build Coastguard Worker  %vtrn1.i = shufflevector <4 x i16> %a, <4 x i16> %b, <4 x i32> <i32 1, i32 5, i32 3, i32 7>
2965*9880d681SAndroid Build Coastguard Worker  %.fca.0.0.insert = insertvalue %struct.uint16x4x2_t undef, <4 x i16> %vtrn.i, 0, 0
2966*9880d681SAndroid Build Coastguard Worker  %.fca.0.1.insert = insertvalue %struct.uint16x4x2_t %.fca.0.0.insert, <4 x i16> %vtrn1.i, 0, 1
2967*9880d681SAndroid Build Coastguard Worker  ret %struct.uint16x4x2_t %.fca.0.1.insert
2968*9880d681SAndroid Build Coastguard Worker}
2969*9880d681SAndroid Build Coastguard Worker
2970*9880d681SAndroid Build Coastguard Workerdefine %struct.uint32x2x2_t @test_vtrn_u32(<2 x i32> %a, <2 x i32> %b) {
2971*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vtrn_u32:
2972*9880d681SAndroid Build Coastguard Worker; CHECK: zip1 {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
2973*9880d681SAndroid Build Coastguard Worker; CHECK: zip2 {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
2974*9880d681SAndroid Build Coastguard Workerentry:
2975*9880d681SAndroid Build Coastguard Worker  %vtrn.i = shufflevector <2 x i32> %a, <2 x i32> %b, <2 x i32> <i32 0, i32 2>
2976*9880d681SAndroid Build Coastguard Worker  %vtrn1.i = shufflevector <2 x i32> %a, <2 x i32> %b, <2 x i32> <i32 1, i32 3>
2977*9880d681SAndroid Build Coastguard Worker  %.fca.0.0.insert = insertvalue %struct.uint32x2x2_t undef, <2 x i32> %vtrn.i, 0, 0
2978*9880d681SAndroid Build Coastguard Worker  %.fca.0.1.insert = insertvalue %struct.uint32x2x2_t %.fca.0.0.insert, <2 x i32> %vtrn1.i, 0, 1
2979*9880d681SAndroid Build Coastguard Worker  ret %struct.uint32x2x2_t %.fca.0.1.insert
2980*9880d681SAndroid Build Coastguard Worker}
2981*9880d681SAndroid Build Coastguard Worker
2982*9880d681SAndroid Build Coastguard Workerdefine %struct.float32x2x2_t @test_vtrn_f32(<2 x float> %a, <2 x float> %b) {
2983*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vtrn_f32:
2984*9880d681SAndroid Build Coastguard Worker; CHECK: zip1 {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
2985*9880d681SAndroid Build Coastguard Worker; CHECK: zip2 {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
2986*9880d681SAndroid Build Coastguard Workerentry:
2987*9880d681SAndroid Build Coastguard Worker  %vtrn.i = shufflevector <2 x float> %a, <2 x float> %b, <2 x i32> <i32 0, i32 2>
2988*9880d681SAndroid Build Coastguard Worker  %vtrn1.i = shufflevector <2 x float> %a, <2 x float> %b, <2 x i32> <i32 1, i32 3>
2989*9880d681SAndroid Build Coastguard Worker  %.fca.0.0.insert = insertvalue %struct.float32x2x2_t undef, <2 x float> %vtrn.i, 0, 0
2990*9880d681SAndroid Build Coastguard Worker  %.fca.0.1.insert = insertvalue %struct.float32x2x2_t %.fca.0.0.insert, <2 x float> %vtrn1.i, 0, 1
2991*9880d681SAndroid Build Coastguard Worker  ret %struct.float32x2x2_t %.fca.0.1.insert
2992*9880d681SAndroid Build Coastguard Worker}
2993*9880d681SAndroid Build Coastguard Worker
2994*9880d681SAndroid Build Coastguard Workerdefine %struct.poly8x8x2_t @test_vtrn_p8(<8 x i8> %a, <8 x i8> %b) {
2995*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vtrn_p8:
2996*9880d681SAndroid Build Coastguard Worker; CHECK: trn1 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
2997*9880d681SAndroid Build Coastguard Worker; CHECK: trn2 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
2998*9880d681SAndroid Build Coastguard Workerentry:
2999*9880d681SAndroid Build Coastguard Worker  %vtrn.i = shufflevector <8 x i8> %a, <8 x i8> %b, <8 x i32> <i32 0, i32 8, i32 2, i32 10, i32 4, i32 12, i32 6, i32 14>
3000*9880d681SAndroid Build Coastguard Worker  %vtrn1.i = shufflevector <8 x i8> %a, <8 x i8> %b, <8 x i32> <i32 1, i32 9, i32 3, i32 11, i32 5, i32 13, i32 7, i32 15>
3001*9880d681SAndroid Build Coastguard Worker  %.fca.0.0.insert = insertvalue %struct.poly8x8x2_t undef, <8 x i8> %vtrn.i, 0, 0
3002*9880d681SAndroid Build Coastguard Worker  %.fca.0.1.insert = insertvalue %struct.poly8x8x2_t %.fca.0.0.insert, <8 x i8> %vtrn1.i, 0, 1
3003*9880d681SAndroid Build Coastguard Worker  ret %struct.poly8x8x2_t %.fca.0.1.insert
3004*9880d681SAndroid Build Coastguard Worker}
3005*9880d681SAndroid Build Coastguard Worker
3006*9880d681SAndroid Build Coastguard Workerdefine %struct.poly16x4x2_t @test_vtrn_p16(<4 x i16> %a, <4 x i16> %b) {
3007*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vtrn_p16:
3008*9880d681SAndroid Build Coastguard Worker; CHECK: trn1 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
3009*9880d681SAndroid Build Coastguard Worker; CHECK: trn2 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
3010*9880d681SAndroid Build Coastguard Workerentry:
3011*9880d681SAndroid Build Coastguard Worker  %vtrn.i = shufflevector <4 x i16> %a, <4 x i16> %b, <4 x i32> <i32 0, i32 4, i32 2, i32 6>
3012*9880d681SAndroid Build Coastguard Worker  %vtrn1.i = shufflevector <4 x i16> %a, <4 x i16> %b, <4 x i32> <i32 1, i32 5, i32 3, i32 7>
3013*9880d681SAndroid Build Coastguard Worker  %.fca.0.0.insert = insertvalue %struct.poly16x4x2_t undef, <4 x i16> %vtrn.i, 0, 0
3014*9880d681SAndroid Build Coastguard Worker  %.fca.0.1.insert = insertvalue %struct.poly16x4x2_t %.fca.0.0.insert, <4 x i16> %vtrn1.i, 0, 1
3015*9880d681SAndroid Build Coastguard Worker  ret %struct.poly16x4x2_t %.fca.0.1.insert
3016*9880d681SAndroid Build Coastguard Worker}
3017*9880d681SAndroid Build Coastguard Worker
3018*9880d681SAndroid Build Coastguard Workerdefine %struct.int8x16x2_t @test_vtrnq_s8(<16 x i8> %a, <16 x i8> %b) {
3019*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vtrnq_s8:
3020*9880d681SAndroid Build Coastguard Worker; CHECK: trn1 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
3021*9880d681SAndroid Build Coastguard Worker; CHECK: trn2 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
3022*9880d681SAndroid Build Coastguard Workerentry:
3023*9880d681SAndroid Build Coastguard Worker  %vtrn.i = shufflevector <16 x i8> %a, <16 x i8> %b, <16 x i32> <i32 0, i32 16, i32 2, i32 18, i32 4, i32 20, i32 6, i32 22, i32 8, i32 24, i32 10, i32 26, i32 12, i32 28, i32 14, i32 30>
3024*9880d681SAndroid Build Coastguard Worker  %vtrn1.i = shufflevector <16 x i8> %a, <16 x i8> %b, <16 x i32> <i32 1, i32 17, i32 3, i32 19, i32 5, i32 21, i32 7, i32 23, i32 9, i32 25, i32 11, i32 27, i32 13, i32 29, i32 15, i32 31>
3025*9880d681SAndroid Build Coastguard Worker  %.fca.0.0.insert = insertvalue %struct.int8x16x2_t undef, <16 x i8> %vtrn.i, 0, 0
3026*9880d681SAndroid Build Coastguard Worker  %.fca.0.1.insert = insertvalue %struct.int8x16x2_t %.fca.0.0.insert, <16 x i8> %vtrn1.i, 0, 1
3027*9880d681SAndroid Build Coastguard Worker  ret %struct.int8x16x2_t %.fca.0.1.insert
3028*9880d681SAndroid Build Coastguard Worker}
3029*9880d681SAndroid Build Coastguard Worker
3030*9880d681SAndroid Build Coastguard Workerdefine %struct.int16x8x2_t @test_vtrnq_s16(<8 x i16> %a, <8 x i16> %b) {
3031*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vtrnq_s16:
3032*9880d681SAndroid Build Coastguard Worker; CHECK: trn1 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
3033*9880d681SAndroid Build Coastguard Worker; CHECK: trn2 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
3034*9880d681SAndroid Build Coastguard Workerentry:
3035*9880d681SAndroid Build Coastguard Worker  %vtrn.i = shufflevector <8 x i16> %a, <8 x i16> %b, <8 x i32> <i32 0, i32 8, i32 2, i32 10, i32 4, i32 12, i32 6, i32 14>
3036*9880d681SAndroid Build Coastguard Worker  %vtrn1.i = shufflevector <8 x i16> %a, <8 x i16> %b, <8 x i32> <i32 1, i32 9, i32 3, i32 11, i32 5, i32 13, i32 7, i32 15>
3037*9880d681SAndroid Build Coastguard Worker  %.fca.0.0.insert = insertvalue %struct.int16x8x2_t undef, <8 x i16> %vtrn.i, 0, 0
3038*9880d681SAndroid Build Coastguard Worker  %.fca.0.1.insert = insertvalue %struct.int16x8x2_t %.fca.0.0.insert, <8 x i16> %vtrn1.i, 0, 1
3039*9880d681SAndroid Build Coastguard Worker  ret %struct.int16x8x2_t %.fca.0.1.insert
3040*9880d681SAndroid Build Coastguard Worker}
3041*9880d681SAndroid Build Coastguard Worker
3042*9880d681SAndroid Build Coastguard Workerdefine %struct.int32x4x2_t @test_vtrnq_s32(<4 x i32> %a, <4 x i32> %b) {
3043*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vtrnq_s32:
3044*9880d681SAndroid Build Coastguard Worker; CHECK: trn1 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
3045*9880d681SAndroid Build Coastguard Worker; CHECK: trn2 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
3046*9880d681SAndroid Build Coastguard Workerentry:
3047*9880d681SAndroid Build Coastguard Worker  %vtrn.i = shufflevector <4 x i32> %a, <4 x i32> %b, <4 x i32> <i32 0, i32 4, i32 2, i32 6>
3048*9880d681SAndroid Build Coastguard Worker  %vtrn1.i = shufflevector <4 x i32> %a, <4 x i32> %b, <4 x i32> <i32 1, i32 5, i32 3, i32 7>
3049*9880d681SAndroid Build Coastguard Worker  %.fca.0.0.insert = insertvalue %struct.int32x4x2_t undef, <4 x i32> %vtrn.i, 0, 0
3050*9880d681SAndroid Build Coastguard Worker  %.fca.0.1.insert = insertvalue %struct.int32x4x2_t %.fca.0.0.insert, <4 x i32> %vtrn1.i, 0, 1
3051*9880d681SAndroid Build Coastguard Worker  ret %struct.int32x4x2_t %.fca.0.1.insert
3052*9880d681SAndroid Build Coastguard Worker}
3053*9880d681SAndroid Build Coastguard Worker
3054*9880d681SAndroid Build Coastguard Workerdefine %struct.uint8x16x2_t @test_vtrnq_u8(<16 x i8> %a, <16 x i8> %b) {
3055*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vtrnq_u8:
3056*9880d681SAndroid Build Coastguard Worker; CHECK: trn1 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
3057*9880d681SAndroid Build Coastguard Worker; CHECK: trn2 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
3058*9880d681SAndroid Build Coastguard Workerentry:
3059*9880d681SAndroid Build Coastguard Worker  %vtrn.i = shufflevector <16 x i8> %a, <16 x i8> %b, <16 x i32> <i32 0, i32 16, i32 2, i32 18, i32 4, i32 20, i32 6, i32 22, i32 8, i32 24, i32 10, i32 26, i32 12, i32 28, i32 14, i32 30>
3060*9880d681SAndroid Build Coastguard Worker  %vtrn1.i = shufflevector <16 x i8> %a, <16 x i8> %b, <16 x i32> <i32 1, i32 17, i32 3, i32 19, i32 5, i32 21, i32 7, i32 23, i32 9, i32 25, i32 11, i32 27, i32 13, i32 29, i32 15, i32 31>
3061*9880d681SAndroid Build Coastguard Worker  %.fca.0.0.insert = insertvalue %struct.uint8x16x2_t undef, <16 x i8> %vtrn.i, 0, 0
3062*9880d681SAndroid Build Coastguard Worker  %.fca.0.1.insert = insertvalue %struct.uint8x16x2_t %.fca.0.0.insert, <16 x i8> %vtrn1.i, 0, 1
3063*9880d681SAndroid Build Coastguard Worker  ret %struct.uint8x16x2_t %.fca.0.1.insert
3064*9880d681SAndroid Build Coastguard Worker}
3065*9880d681SAndroid Build Coastguard Worker
3066*9880d681SAndroid Build Coastguard Workerdefine %struct.uint16x8x2_t @test_vtrnq_u16(<8 x i16> %a, <8 x i16> %b) {
3067*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vtrnq_u16:
3068*9880d681SAndroid Build Coastguard Worker; CHECK: trn1 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
3069*9880d681SAndroid Build Coastguard Worker; CHECK: trn2 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
3070*9880d681SAndroid Build Coastguard Workerentry:
3071*9880d681SAndroid Build Coastguard Worker  %vtrn.i = shufflevector <8 x i16> %a, <8 x i16> %b, <8 x i32> <i32 0, i32 8, i32 2, i32 10, i32 4, i32 12, i32 6, i32 14>
3072*9880d681SAndroid Build Coastguard Worker  %vtrn1.i = shufflevector <8 x i16> %a, <8 x i16> %b, <8 x i32> <i32 1, i32 9, i32 3, i32 11, i32 5, i32 13, i32 7, i32 15>
3073*9880d681SAndroid Build Coastguard Worker  %.fca.0.0.insert = insertvalue %struct.uint16x8x2_t undef, <8 x i16> %vtrn.i, 0, 0
3074*9880d681SAndroid Build Coastguard Worker  %.fca.0.1.insert = insertvalue %struct.uint16x8x2_t %.fca.0.0.insert, <8 x i16> %vtrn1.i, 0, 1
3075*9880d681SAndroid Build Coastguard Worker  ret %struct.uint16x8x2_t %.fca.0.1.insert
3076*9880d681SAndroid Build Coastguard Worker}
3077*9880d681SAndroid Build Coastguard Worker
3078*9880d681SAndroid Build Coastguard Workerdefine %struct.uint32x4x2_t @test_vtrnq_u32(<4 x i32> %a, <4 x i32> %b) {
3079*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vtrnq_u32:
3080*9880d681SAndroid Build Coastguard Worker; CHECK: trn1 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
3081*9880d681SAndroid Build Coastguard Worker; CHECK: trn2 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
3082*9880d681SAndroid Build Coastguard Workerentry:
3083*9880d681SAndroid Build Coastguard Worker  %vtrn.i = shufflevector <4 x i32> %a, <4 x i32> %b, <4 x i32> <i32 0, i32 4, i32 2, i32 6>
3084*9880d681SAndroid Build Coastguard Worker  %vtrn1.i = shufflevector <4 x i32> %a, <4 x i32> %b, <4 x i32> <i32 1, i32 5, i32 3, i32 7>
3085*9880d681SAndroid Build Coastguard Worker  %.fca.0.0.insert = insertvalue %struct.uint32x4x2_t undef, <4 x i32> %vtrn.i, 0, 0
3086*9880d681SAndroid Build Coastguard Worker  %.fca.0.1.insert = insertvalue %struct.uint32x4x2_t %.fca.0.0.insert, <4 x i32> %vtrn1.i, 0, 1
3087*9880d681SAndroid Build Coastguard Worker  ret %struct.uint32x4x2_t %.fca.0.1.insert
3088*9880d681SAndroid Build Coastguard Worker}
3089*9880d681SAndroid Build Coastguard Worker
3090*9880d681SAndroid Build Coastguard Workerdefine %struct.float32x4x2_t @test_vtrnq_f32(<4 x float> %a, <4 x float> %b) {
3091*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vtrnq_f32:
3092*9880d681SAndroid Build Coastguard Worker; CHECK: trn1 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
3093*9880d681SAndroid Build Coastguard Worker; CHECK: trn2 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
3094*9880d681SAndroid Build Coastguard Workerentry:
3095*9880d681SAndroid Build Coastguard Worker  %vtrn.i = shufflevector <4 x float> %a, <4 x float> %b, <4 x i32> <i32 0, i32 4, i32 2, i32 6>
3096*9880d681SAndroid Build Coastguard Worker  %vtrn1.i = shufflevector <4 x float> %a, <4 x float> %b, <4 x i32> <i32 1, i32 5, i32 3, i32 7>
3097*9880d681SAndroid Build Coastguard Worker  %.fca.0.0.insert = insertvalue %struct.float32x4x2_t undef, <4 x float> %vtrn.i, 0, 0
3098*9880d681SAndroid Build Coastguard Worker  %.fca.0.1.insert = insertvalue %struct.float32x4x2_t %.fca.0.0.insert, <4 x float> %vtrn1.i, 0, 1
3099*9880d681SAndroid Build Coastguard Worker  ret %struct.float32x4x2_t %.fca.0.1.insert
3100*9880d681SAndroid Build Coastguard Worker}
3101*9880d681SAndroid Build Coastguard Worker
3102*9880d681SAndroid Build Coastguard Workerdefine %struct.poly8x16x2_t @test_vtrnq_p8(<16 x i8> %a, <16 x i8> %b) {
3103*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vtrnq_p8:
3104*9880d681SAndroid Build Coastguard Worker; CHECK: trn1 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
3105*9880d681SAndroid Build Coastguard Worker; CHECK: trn2 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
3106*9880d681SAndroid Build Coastguard Workerentry:
3107*9880d681SAndroid Build Coastguard Worker  %vtrn.i = shufflevector <16 x i8> %a, <16 x i8> %b, <16 x i32> <i32 0, i32 16, i32 2, i32 18, i32 4, i32 20, i32 6, i32 22, i32 8, i32 24, i32 10, i32 26, i32 12, i32 28, i32 14, i32 30>
3108*9880d681SAndroid Build Coastguard Worker  %vtrn1.i = shufflevector <16 x i8> %a, <16 x i8> %b, <16 x i32> <i32 1, i32 17, i32 3, i32 19, i32 5, i32 21, i32 7, i32 23, i32 9, i32 25, i32 11, i32 27, i32 13, i32 29, i32 15, i32 31>
3109*9880d681SAndroid Build Coastguard Worker  %.fca.0.0.insert = insertvalue %struct.poly8x16x2_t undef, <16 x i8> %vtrn.i, 0, 0
3110*9880d681SAndroid Build Coastguard Worker  %.fca.0.1.insert = insertvalue %struct.poly8x16x2_t %.fca.0.0.insert, <16 x i8> %vtrn1.i, 0, 1
3111*9880d681SAndroid Build Coastguard Worker  ret %struct.poly8x16x2_t %.fca.0.1.insert
3112*9880d681SAndroid Build Coastguard Worker}
3113*9880d681SAndroid Build Coastguard Worker
3114*9880d681SAndroid Build Coastguard Workerdefine %struct.poly16x8x2_t @test_vtrnq_p16(<8 x i16> %a, <8 x i16> %b) {
3115*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vtrnq_p16:
3116*9880d681SAndroid Build Coastguard Worker; CHECK: trn1 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
3117*9880d681SAndroid Build Coastguard Worker; CHECK: trn2 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
3118*9880d681SAndroid Build Coastguard Workerentry:
3119*9880d681SAndroid Build Coastguard Worker  %vtrn.i = shufflevector <8 x i16> %a, <8 x i16> %b, <8 x i32> <i32 0, i32 8, i32 2, i32 10, i32 4, i32 12, i32 6, i32 14>
3120*9880d681SAndroid Build Coastguard Worker  %vtrn1.i = shufflevector <8 x i16> %a, <8 x i16> %b, <8 x i32> <i32 1, i32 9, i32 3, i32 11, i32 5, i32 13, i32 7, i32 15>
3121*9880d681SAndroid Build Coastguard Worker  %.fca.0.0.insert = insertvalue %struct.poly16x8x2_t undef, <8 x i16> %vtrn.i, 0, 0
3122*9880d681SAndroid Build Coastguard Worker  %.fca.0.1.insert = insertvalue %struct.poly16x8x2_t %.fca.0.0.insert, <8 x i16> %vtrn1.i, 0, 1
3123*9880d681SAndroid Build Coastguard Worker  ret %struct.poly16x8x2_t %.fca.0.1.insert
3124*9880d681SAndroid Build Coastguard Worker}
3125*9880d681SAndroid Build Coastguard Worker
3126*9880d681SAndroid Build Coastguard Workerdefine %struct.uint8x8x2_t @test_uzp(<16 x i8> %y) {
3127*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_uzp:
3128*9880d681SAndroid Build Coastguard Worker
3129*9880d681SAndroid Build Coastguard Worker  %vuzp.i = shufflevector <16 x i8> %y, <16 x i8> undef, <8 x i32> <i32 0, i32 2, i32 4, i32 6, i32 8, i32 10, i32 12, i32 14>
3130*9880d681SAndroid Build Coastguard Worker  %vuzp1.i = shufflevector <16 x i8> %y, <16 x i8> undef, <8 x i32> <i32 1, i32 3, i32 5, i32 7, i32 9, i32 11, i32 13, i32 15>
3131*9880d681SAndroid Build Coastguard Worker  %.fca.0.0.insert = insertvalue %struct.uint8x8x2_t undef, <8 x i8> %vuzp.i, 0, 0
3132*9880d681SAndroid Build Coastguard Worker  %.fca.0.1.insert = insertvalue %struct.uint8x8x2_t %.fca.0.0.insert, <8 x i8> %vuzp1.i, 0, 1
3133*9880d681SAndroid Build Coastguard Worker  ret %struct.uint8x8x2_t %.fca.0.1.insert
3134*9880d681SAndroid Build Coastguard Worker
3135*9880d681SAndroid Build Coastguard Worker}
3136