xref: /aosp_15_r20/external/llvm/test/CodeGen/AArch64/arm64-big-endian-vector-caller.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker; RUN: llc -mtriple aarch64_be < %s -aarch64-load-store-opt=false -o - | FileCheck %s
2*9880d681SAndroid Build Coastguard Worker; RUN: llc -mtriple aarch64_be < %s -aarch64-load-store-opt=false -fast-isel=true -O0 -o - | FileCheck %s
3*9880d681SAndroid Build Coastguard Worker
4*9880d681SAndroid Build Coastguard Worker; Note, we split the functions in to multiple BBs below to isolate the call
5*9880d681SAndroid Build Coastguard Worker; instruction we want to test, from fast-isel failing to select instructions
6*9880d681SAndroid Build Coastguard Worker; after it.
7*9880d681SAndroid Build Coastguard Worker
8*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_i64_f64:
9*9880d681SAndroid Build Coastguard Workerdeclare i64 @test_i64_f64_helper(double %p)
10*9880d681SAndroid Build Coastguard Workerdefine void @test_i64_f64(double* %p, i64* %q) {
11*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: rev
12*9880d681SAndroid Build Coastguard Worker    %1 = load double, double* %p
13*9880d681SAndroid Build Coastguard Worker    %2 = fadd double %1, %1
14*9880d681SAndroid Build Coastguard Worker    %3 = call i64 @test_i64_f64_helper(double %2)
15*9880d681SAndroid Build Coastguard Worker    br label %return_bb
16*9880d681SAndroid Build Coastguard Workerreturn_bb:
17*9880d681SAndroid Build Coastguard Worker    %4 = add i64 %3, %3
18*9880d681SAndroid Build Coastguard Worker    store i64 %4, i64* %q
19*9880d681SAndroid Build Coastguard Worker    ret void
20*9880d681SAndroid Build Coastguard Worker}
21*9880d681SAndroid Build Coastguard Worker
22*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_i64_v1i64:
23*9880d681SAndroid Build Coastguard Workerdeclare i64 @test_i64_v1i64_helper(<1 x i64> %p)
24*9880d681SAndroid Build Coastguard Workerdefine void @test_i64_v1i64(<1 x i64>* %p, i64* %q) {
25*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: rev
26*9880d681SAndroid Build Coastguard Worker    %1 = load <1 x i64>, <1 x i64>* %p
27*9880d681SAndroid Build Coastguard Worker    %2 = add <1 x i64> %1, %1
28*9880d681SAndroid Build Coastguard Worker    %3 = call i64 @test_i64_v1i64_helper(<1 x i64> %2)
29*9880d681SAndroid Build Coastguard Worker    br label %return_bb
30*9880d681SAndroid Build Coastguard Workerreturn_bb:
31*9880d681SAndroid Build Coastguard Worker    %4 = add i64 %3, %3
32*9880d681SAndroid Build Coastguard Worker    store i64 %4, i64* %q
33*9880d681SAndroid Build Coastguard Worker    ret void
34*9880d681SAndroid Build Coastguard Worker}
35*9880d681SAndroid Build Coastguard Worker
36*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_i64_v2f32:
37*9880d681SAndroid Build Coastguard Workerdeclare i64 @test_i64_v2f32_helper(<2 x float> %p)
38*9880d681SAndroid Build Coastguard Workerdefine void @test_i64_v2f32(<2 x float>* %p, i64* %q) {
39*9880d681SAndroid Build Coastguard Worker; CHECK: rev64 v{{[0-9]+}}.2s
40*9880d681SAndroid Build Coastguard Worker    %1 = load <2 x float>, <2 x float>* %p
41*9880d681SAndroid Build Coastguard Worker    %2 = fadd <2 x float> %1, %1
42*9880d681SAndroid Build Coastguard Worker    %3 = call i64 @test_i64_v2f32_helper(<2 x float> %2)
43*9880d681SAndroid Build Coastguard Worker    br label %return_bb
44*9880d681SAndroid Build Coastguard Workerreturn_bb:
45*9880d681SAndroid Build Coastguard Worker    %4 = add i64 %3, %3
46*9880d681SAndroid Build Coastguard Worker    store i64 %4, i64* %q
47*9880d681SAndroid Build Coastguard Worker    ret void
48*9880d681SAndroid Build Coastguard Worker}
49*9880d681SAndroid Build Coastguard Worker
50*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_i64_v2i32:
51*9880d681SAndroid Build Coastguard Workerdeclare i64 @test_i64_v2i32_helper(<2 x i32> %p)
52*9880d681SAndroid Build Coastguard Workerdefine void @test_i64_v2i32(<2 x i32>* %p, i64* %q) {
53*9880d681SAndroid Build Coastguard Worker; CHECK: rev64 v{{[0-9]+}}.2s
54*9880d681SAndroid Build Coastguard Worker    %1 = load <2 x i32>, <2 x i32>* %p
55*9880d681SAndroid Build Coastguard Worker    %2 = add <2 x i32> %1, %1
56*9880d681SAndroid Build Coastguard Worker    %3 = call i64 @test_i64_v2i32_helper(<2 x i32> %2)
57*9880d681SAndroid Build Coastguard Worker    br label %return_bb
58*9880d681SAndroid Build Coastguard Workerreturn_bb:
59*9880d681SAndroid Build Coastguard Worker    %4 = add i64 %3, %3
60*9880d681SAndroid Build Coastguard Worker    store i64 %4, i64* %q
61*9880d681SAndroid Build Coastguard Worker    ret void
62*9880d681SAndroid Build Coastguard Worker}
63*9880d681SAndroid Build Coastguard Worker
64*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_i64_v4i16:
65*9880d681SAndroid Build Coastguard Workerdeclare i64 @test_i64_v4i16_helper(<4 x i16> %p)
66*9880d681SAndroid Build Coastguard Workerdefine void @test_i64_v4i16(<4 x i16>* %p, i64* %q) {
67*9880d681SAndroid Build Coastguard Worker; CHECK: rev64 v{{[0-9]+}}.4h
68*9880d681SAndroid Build Coastguard Worker    %1 = load <4 x i16>, <4 x i16>* %p
69*9880d681SAndroid Build Coastguard Worker    %2 = add <4 x i16> %1, %1
70*9880d681SAndroid Build Coastguard Worker    %3 = call i64 @test_i64_v4i16_helper(<4 x i16> %2)
71*9880d681SAndroid Build Coastguard Worker    br label %return_bb
72*9880d681SAndroid Build Coastguard Workerreturn_bb:
73*9880d681SAndroid Build Coastguard Worker    %4 = add i64 %3, %3
74*9880d681SAndroid Build Coastguard Worker    store i64 %4, i64* %q
75*9880d681SAndroid Build Coastguard Worker    ret void
76*9880d681SAndroid Build Coastguard Worker}
77*9880d681SAndroid Build Coastguard Worker
78*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_i64_v8i8:
79*9880d681SAndroid Build Coastguard Workerdeclare i64 @test_i64_v8i8_helper(<8 x i8> %p)
80*9880d681SAndroid Build Coastguard Workerdefine void @test_i64_v8i8(<8 x i8>* %p, i64* %q) {
81*9880d681SAndroid Build Coastguard Worker; CHECK: rev64 v{{[0-9]+}}.8b
82*9880d681SAndroid Build Coastguard Worker    %1 = load <8 x i8>, <8 x i8>* %p
83*9880d681SAndroid Build Coastguard Worker    %2 = add <8 x i8> %1, %1
84*9880d681SAndroid Build Coastguard Worker    %3 = call i64 @test_i64_v8i8_helper(<8 x i8> %2)
85*9880d681SAndroid Build Coastguard Worker    br label %return_bb
86*9880d681SAndroid Build Coastguard Workerreturn_bb:
87*9880d681SAndroid Build Coastguard Worker    %4 = add i64 %3, %3
88*9880d681SAndroid Build Coastguard Worker    store i64 %4, i64* %q
89*9880d681SAndroid Build Coastguard Worker    ret void
90*9880d681SAndroid Build Coastguard Worker}
91*9880d681SAndroid Build Coastguard Worker
92*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_f64_i64:
93*9880d681SAndroid Build Coastguard Workerdeclare double @test_f64_i64_helper(i64 %p)
94*9880d681SAndroid Build Coastguard Workerdefine void @test_f64_i64(i64* %p, double* %q) {
95*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: rev
96*9880d681SAndroid Build Coastguard Worker    %1 = load i64, i64* %p
97*9880d681SAndroid Build Coastguard Worker    %2 = add i64 %1, %1
98*9880d681SAndroid Build Coastguard Worker    %3 = call double @test_f64_i64_helper(i64 %2)
99*9880d681SAndroid Build Coastguard Worker    br label %return_bb
100*9880d681SAndroid Build Coastguard Workerreturn_bb:
101*9880d681SAndroid Build Coastguard Worker    %4 = fadd double %3, %3
102*9880d681SAndroid Build Coastguard Worker    store double %4, double* %q
103*9880d681SAndroid Build Coastguard Worker    ret void
104*9880d681SAndroid Build Coastguard Worker}
105*9880d681SAndroid Build Coastguard Worker
106*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_f64_v1i64:
107*9880d681SAndroid Build Coastguard Workerdeclare double @test_f64_v1i64_helper(<1 x i64> %p)
108*9880d681SAndroid Build Coastguard Workerdefine void @test_f64_v1i64(<1 x i64>* %p, double* %q) {
109*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: rev
110*9880d681SAndroid Build Coastguard Worker    %1 = load <1 x i64>, <1 x i64>* %p
111*9880d681SAndroid Build Coastguard Worker    %2 = add <1 x i64> %1, %1
112*9880d681SAndroid Build Coastguard Worker    %3 = call double @test_f64_v1i64_helper(<1 x i64> %2)
113*9880d681SAndroid Build Coastguard Worker    br label %return_bb
114*9880d681SAndroid Build Coastguard Workerreturn_bb:
115*9880d681SAndroid Build Coastguard Worker    %4 = fadd double %3, %3
116*9880d681SAndroid Build Coastguard Worker    store double %4, double* %q
117*9880d681SAndroid Build Coastguard Worker    ret void
118*9880d681SAndroid Build Coastguard Worker}
119*9880d681SAndroid Build Coastguard Worker
120*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_f64_v2f32:
121*9880d681SAndroid Build Coastguard Workerdeclare double @test_f64_v2f32_helper(<2 x float> %p)
122*9880d681SAndroid Build Coastguard Workerdefine void @test_f64_v2f32(<2 x float>* %p, double* %q) {
123*9880d681SAndroid Build Coastguard Worker; CHECK: rev64 v{{[0-9]+}}.2s
124*9880d681SAndroid Build Coastguard Worker    %1 = load <2 x float>, <2 x float>* %p
125*9880d681SAndroid Build Coastguard Worker    %2 = fadd <2 x float> %1, %1
126*9880d681SAndroid Build Coastguard Worker    %3 = call double @test_f64_v2f32_helper(<2 x float> %2)
127*9880d681SAndroid Build Coastguard Worker    br label %return_bb
128*9880d681SAndroid Build Coastguard Workerreturn_bb:
129*9880d681SAndroid Build Coastguard Worker    %4 = fadd double %3, %3
130*9880d681SAndroid Build Coastguard Worker    store double %4, double* %q
131*9880d681SAndroid Build Coastguard Worker    ret void
132*9880d681SAndroid Build Coastguard Worker}
133*9880d681SAndroid Build Coastguard Worker
134*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_f64_v2i32:
135*9880d681SAndroid Build Coastguard Workerdeclare double @test_f64_v2i32_helper(<2 x i32> %p)
136*9880d681SAndroid Build Coastguard Workerdefine void @test_f64_v2i32(<2 x i32>* %p, double* %q) {
137*9880d681SAndroid Build Coastguard Worker; CHECK: rev64 v{{[0-9]+}}.2s
138*9880d681SAndroid Build Coastguard Worker    %1 = load <2 x i32>, <2 x i32>* %p
139*9880d681SAndroid Build Coastguard Worker    %2 = add <2 x i32> %1, %1
140*9880d681SAndroid Build Coastguard Worker    %3 = call double @test_f64_v2i32_helper(<2 x i32> %2)
141*9880d681SAndroid Build Coastguard Worker    br label %return_bb
142*9880d681SAndroid Build Coastguard Workerreturn_bb:
143*9880d681SAndroid Build Coastguard Worker    %4 = fadd double %3, %3
144*9880d681SAndroid Build Coastguard Worker    store double %4, double* %q
145*9880d681SAndroid Build Coastguard Worker    ret void
146*9880d681SAndroid Build Coastguard Worker}
147*9880d681SAndroid Build Coastguard Worker
148*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_f64_v4i16:
149*9880d681SAndroid Build Coastguard Workerdeclare double @test_f64_v4i16_helper(<4 x i16> %p)
150*9880d681SAndroid Build Coastguard Workerdefine void @test_f64_v4i16(<4 x i16>* %p, double* %q) {
151*9880d681SAndroid Build Coastguard Worker; CHECK: rev64 v{{[0-9]+}}.4h
152*9880d681SAndroid Build Coastguard Worker    %1 = load <4 x i16>, <4 x i16>* %p
153*9880d681SAndroid Build Coastguard Worker    %2 = add <4 x i16> %1, %1
154*9880d681SAndroid Build Coastguard Worker    %3 = call double @test_f64_v4i16_helper(<4 x i16> %2)
155*9880d681SAndroid Build Coastguard Worker    br label %return_bb
156*9880d681SAndroid Build Coastguard Workerreturn_bb:
157*9880d681SAndroid Build Coastguard Worker    %4 = fadd double %3, %3
158*9880d681SAndroid Build Coastguard Worker    store double %4, double* %q
159*9880d681SAndroid Build Coastguard Worker    ret void
160*9880d681SAndroid Build Coastguard Worker}
161*9880d681SAndroid Build Coastguard Worker
162*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_f64_v8i8:
163*9880d681SAndroid Build Coastguard Workerdeclare double @test_f64_v8i8_helper(<8 x i8> %p)
164*9880d681SAndroid Build Coastguard Workerdefine void @test_f64_v8i8(<8 x i8>* %p, double* %q) {
165*9880d681SAndroid Build Coastguard Worker; CHECK: rev64 v{{[0-9]+}}.8b
166*9880d681SAndroid Build Coastguard Worker    %1 = load <8 x i8>, <8 x i8>* %p
167*9880d681SAndroid Build Coastguard Worker    %2 = add <8 x i8> %1, %1
168*9880d681SAndroid Build Coastguard Worker    %3 = call double @test_f64_v8i8_helper(<8 x i8> %2)
169*9880d681SAndroid Build Coastguard Worker    br label %return_bb
170*9880d681SAndroid Build Coastguard Workerreturn_bb:
171*9880d681SAndroid Build Coastguard Worker    %4 = fadd double %3, %3
172*9880d681SAndroid Build Coastguard Worker    store double %4, double* %q
173*9880d681SAndroid Build Coastguard Worker    ret void
174*9880d681SAndroid Build Coastguard Worker}
175*9880d681SAndroid Build Coastguard Worker
176*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v1i64_i64:
177*9880d681SAndroid Build Coastguard Workerdeclare <1 x i64> @test_v1i64_i64_helper(i64 %p)
178*9880d681SAndroid Build Coastguard Workerdefine void @test_v1i64_i64(i64* %p, <1 x i64>* %q) {
179*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: rev
180*9880d681SAndroid Build Coastguard Worker    %1 = load i64, i64* %p
181*9880d681SAndroid Build Coastguard Worker    %2 = add i64 %1, %1
182*9880d681SAndroid Build Coastguard Worker    %3 = call <1 x i64> @test_v1i64_i64_helper(i64 %2)
183*9880d681SAndroid Build Coastguard Worker    br label %return_bb
184*9880d681SAndroid Build Coastguard Workerreturn_bb:
185*9880d681SAndroid Build Coastguard Worker    %4 = add <1 x i64> %3, %3
186*9880d681SAndroid Build Coastguard Worker    store <1 x i64> %4, <1 x i64>* %q
187*9880d681SAndroid Build Coastguard Worker    ret void
188*9880d681SAndroid Build Coastguard Worker}
189*9880d681SAndroid Build Coastguard Worker
190*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v1i64_f64:
191*9880d681SAndroid Build Coastguard Workerdeclare <1 x i64> @test_v1i64_f64_helper(double %p)
192*9880d681SAndroid Build Coastguard Workerdefine void @test_v1i64_f64(double* %p, <1 x i64>* %q) {
193*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: rev
194*9880d681SAndroid Build Coastguard Worker    %1 = load double, double* %p
195*9880d681SAndroid Build Coastguard Worker    %2 = fadd double %1, %1
196*9880d681SAndroid Build Coastguard Worker    %3 = call <1 x i64> @test_v1i64_f64_helper(double %2)
197*9880d681SAndroid Build Coastguard Worker    br label %return_bb
198*9880d681SAndroid Build Coastguard Workerreturn_bb:
199*9880d681SAndroid Build Coastguard Worker    %4 = add <1 x i64> %3, %3
200*9880d681SAndroid Build Coastguard Worker    store <1 x i64> %4, <1 x i64>* %q
201*9880d681SAndroid Build Coastguard Worker    ret void
202*9880d681SAndroid Build Coastguard Worker}
203*9880d681SAndroid Build Coastguard Worker
204*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v1i64_v2f32:
205*9880d681SAndroid Build Coastguard Workerdeclare <1 x i64> @test_v1i64_v2f32_helper(<2 x float> %p)
206*9880d681SAndroid Build Coastguard Workerdefine void @test_v1i64_v2f32(<2 x float>* %p, <1 x i64>* %q) {
207*9880d681SAndroid Build Coastguard Worker; CHECK: rev64 v{{[0-9]+}}.2s
208*9880d681SAndroid Build Coastguard Worker    %1 = load <2 x float>, <2 x float>* %p
209*9880d681SAndroid Build Coastguard Worker    %2 = fadd <2 x float> %1, %1
210*9880d681SAndroid Build Coastguard Worker    %3 = call <1 x i64> @test_v1i64_v2f32_helper(<2 x float> %2)
211*9880d681SAndroid Build Coastguard Worker    br label %return_bb
212*9880d681SAndroid Build Coastguard Workerreturn_bb:
213*9880d681SAndroid Build Coastguard Worker    %4 = add <1 x i64> %3, %3
214*9880d681SAndroid Build Coastguard Worker    store <1 x i64> %4, <1 x i64>* %q
215*9880d681SAndroid Build Coastguard Worker    ret void
216*9880d681SAndroid Build Coastguard Worker}
217*9880d681SAndroid Build Coastguard Worker
218*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v1i64_v2i32:
219*9880d681SAndroid Build Coastguard Workerdeclare <1 x i64> @test_v1i64_v2i32_helper(<2 x i32> %p)
220*9880d681SAndroid Build Coastguard Workerdefine void @test_v1i64_v2i32(<2 x i32>* %p, <1 x i64>* %q) {
221*9880d681SAndroid Build Coastguard Worker; CHECK: rev64 v{{[0-9]+}}.2s
222*9880d681SAndroid Build Coastguard Worker    %1 = load <2 x i32>, <2 x i32>* %p
223*9880d681SAndroid Build Coastguard Worker    %2 = add <2 x i32> %1, %1
224*9880d681SAndroid Build Coastguard Worker    %3 = call <1 x i64> @test_v1i64_v2i32_helper(<2 x i32> %2)
225*9880d681SAndroid Build Coastguard Worker    br label %return_bb
226*9880d681SAndroid Build Coastguard Workerreturn_bb:
227*9880d681SAndroid Build Coastguard Worker    %4 = add <1 x i64> %3, %3
228*9880d681SAndroid Build Coastguard Worker    store <1 x i64> %4, <1 x i64>* %q
229*9880d681SAndroid Build Coastguard Worker    ret void
230*9880d681SAndroid Build Coastguard Worker}
231*9880d681SAndroid Build Coastguard Worker
232*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v1i64_v4i16:
233*9880d681SAndroid Build Coastguard Workerdeclare <1 x i64> @test_v1i64_v4i16_helper(<4 x i16> %p)
234*9880d681SAndroid Build Coastguard Workerdefine void @test_v1i64_v4i16(<4 x i16>* %p, <1 x i64>* %q) {
235*9880d681SAndroid Build Coastguard Worker; CHECK: rev64 v{{[0-9]+}}.4h
236*9880d681SAndroid Build Coastguard Worker    %1 = load <4 x i16>, <4 x i16>* %p
237*9880d681SAndroid Build Coastguard Worker    %2 = add <4 x i16> %1, %1
238*9880d681SAndroid Build Coastguard Worker    %3 = call <1 x i64> @test_v1i64_v4i16_helper(<4 x i16> %2)
239*9880d681SAndroid Build Coastguard Worker    br label %return_bb
240*9880d681SAndroid Build Coastguard Workerreturn_bb:
241*9880d681SAndroid Build Coastguard Worker    %4 = add <1 x i64> %3, %3
242*9880d681SAndroid Build Coastguard Worker    store <1 x i64> %4, <1 x i64>* %q
243*9880d681SAndroid Build Coastguard Worker    ret void
244*9880d681SAndroid Build Coastguard Worker}
245*9880d681SAndroid Build Coastguard Worker
246*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v1i64_v8i8:
247*9880d681SAndroid Build Coastguard Workerdeclare <1 x i64> @test_v1i64_v8i8_helper(<8 x i8> %p)
248*9880d681SAndroid Build Coastguard Workerdefine void @test_v1i64_v8i8(<8 x i8>* %p, <1 x i64>* %q) {
249*9880d681SAndroid Build Coastguard Worker; CHECK: rev64 v{{[0-9]+}}.8b
250*9880d681SAndroid Build Coastguard Worker    %1 = load <8 x i8>, <8 x i8>* %p
251*9880d681SAndroid Build Coastguard Worker    %2 = add <8 x i8> %1, %1
252*9880d681SAndroid Build Coastguard Worker    %3 = call <1 x i64> @test_v1i64_v8i8_helper(<8 x i8> %2)
253*9880d681SAndroid Build Coastguard Worker    br label %return_bb
254*9880d681SAndroid Build Coastguard Workerreturn_bb:
255*9880d681SAndroid Build Coastguard Worker    %4 = add <1 x i64> %3, %3
256*9880d681SAndroid Build Coastguard Worker    store <1 x i64> %4, <1 x i64>* %q
257*9880d681SAndroid Build Coastguard Worker    ret void
258*9880d681SAndroid Build Coastguard Worker}
259*9880d681SAndroid Build Coastguard Worker
260*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v2f32_i64:
261*9880d681SAndroid Build Coastguard Workerdeclare <2 x float> @test_v2f32_i64_helper(i64 %p)
262*9880d681SAndroid Build Coastguard Workerdefine void @test_v2f32_i64(i64* %p, <2 x float>* %q) {
263*9880d681SAndroid Build Coastguard Worker; CHECK: rev64 v{{[0-9]+}}.2s
264*9880d681SAndroid Build Coastguard Worker    %1 = load i64, i64* %p
265*9880d681SAndroid Build Coastguard Worker    %2 = add i64 %1, %1
266*9880d681SAndroid Build Coastguard Worker    %3 = call <2 x float> @test_v2f32_i64_helper(i64 %2)
267*9880d681SAndroid Build Coastguard Worker    br label %return_bb
268*9880d681SAndroid Build Coastguard Workerreturn_bb:
269*9880d681SAndroid Build Coastguard Worker    %4 = fadd <2 x float> %3, %3
270*9880d681SAndroid Build Coastguard Worker    store <2 x float> %4, <2 x float>* %q
271*9880d681SAndroid Build Coastguard Worker    ret void
272*9880d681SAndroid Build Coastguard Worker}
273*9880d681SAndroid Build Coastguard Worker
274*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v2f32_f64:
275*9880d681SAndroid Build Coastguard Workerdeclare <2 x float> @test_v2f32_f64_helper(double %p)
276*9880d681SAndroid Build Coastguard Workerdefine void @test_v2f32_f64(double* %p, <2 x float>* %q) {
277*9880d681SAndroid Build Coastguard Worker; CHECK: rev64 v{{[0-9]+}}.2s
278*9880d681SAndroid Build Coastguard Worker    %1 = load double, double* %p
279*9880d681SAndroid Build Coastguard Worker    %2 = fadd double %1, %1
280*9880d681SAndroid Build Coastguard Worker    %3 = call <2 x float> @test_v2f32_f64_helper(double %2)
281*9880d681SAndroid Build Coastguard Worker    br label %return_bb
282*9880d681SAndroid Build Coastguard Workerreturn_bb:
283*9880d681SAndroid Build Coastguard Worker    %4 = fadd <2 x float> %3, %3
284*9880d681SAndroid Build Coastguard Worker    store <2 x float> %4, <2 x float>* %q
285*9880d681SAndroid Build Coastguard Worker    ret void
286*9880d681SAndroid Build Coastguard Worker}
287*9880d681SAndroid Build Coastguard Worker
288*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v2f32_v1i64:
289*9880d681SAndroid Build Coastguard Workerdeclare <2 x float> @test_v2f32_v1i64_helper(<1 x i64> %p)
290*9880d681SAndroid Build Coastguard Workerdefine void @test_v2f32_v1i64(<1 x i64>* %p, <2 x float>* %q) {
291*9880d681SAndroid Build Coastguard Worker; CHECK: rev64 v{{[0-9]+}}.2s
292*9880d681SAndroid Build Coastguard Worker    %1 = load <1 x i64>, <1 x i64>* %p
293*9880d681SAndroid Build Coastguard Worker    %2 = add <1 x i64> %1, %1
294*9880d681SAndroid Build Coastguard Worker    %3 = call <2 x float> @test_v2f32_v1i64_helper(<1 x i64> %2)
295*9880d681SAndroid Build Coastguard Worker    br label %return_bb
296*9880d681SAndroid Build Coastguard Workerreturn_bb:
297*9880d681SAndroid Build Coastguard Worker    %4 = fadd <2 x float> %3, %3
298*9880d681SAndroid Build Coastguard Worker    store <2 x float> %4, <2 x float>* %q
299*9880d681SAndroid Build Coastguard Worker    ret void
300*9880d681SAndroid Build Coastguard Worker}
301*9880d681SAndroid Build Coastguard Worker
302*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v2f32_v2i32:
303*9880d681SAndroid Build Coastguard Workerdeclare <2 x float> @test_v2f32_v2i32_helper(<2 x i32> %p)
304*9880d681SAndroid Build Coastguard Workerdefine void @test_v2f32_v2i32(<2 x i32>* %p, <2 x float>* %q) {
305*9880d681SAndroid Build Coastguard Worker; CHECK: rev64 v{{[0-9]+}}.2s
306*9880d681SAndroid Build Coastguard Worker; CHECK: rev64 v{{[0-9]+}}.2s
307*9880d681SAndroid Build Coastguard Worker    %1 = load <2 x i32>, <2 x i32>* %p
308*9880d681SAndroid Build Coastguard Worker    %2 = add <2 x i32> %1, %1
309*9880d681SAndroid Build Coastguard Worker    %3 = call <2 x float> @test_v2f32_v2i32_helper(<2 x i32> %2)
310*9880d681SAndroid Build Coastguard Worker    br label %return_bb
311*9880d681SAndroid Build Coastguard Workerreturn_bb:
312*9880d681SAndroid Build Coastguard Worker    %4 = fadd <2 x float> %3, %3
313*9880d681SAndroid Build Coastguard Worker    store <2 x float> %4, <2 x float>* %q
314*9880d681SAndroid Build Coastguard Worker    ret void
315*9880d681SAndroid Build Coastguard Worker}
316*9880d681SAndroid Build Coastguard Worker
317*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v2f32_v4i16:
318*9880d681SAndroid Build Coastguard Workerdeclare <2 x float> @test_v2f32_v4i16_helper(<4 x i16> %p)
319*9880d681SAndroid Build Coastguard Workerdefine void @test_v2f32_v4i16(<4 x i16>* %p, <2 x float>* %q) {
320*9880d681SAndroid Build Coastguard Worker; CHECK: rev64 v{{[0-9]+}}.4h
321*9880d681SAndroid Build Coastguard Worker; CHECK: rev64 v{{[0-9]+}}.2s
322*9880d681SAndroid Build Coastguard Worker    %1 = load <4 x i16>, <4 x i16>* %p
323*9880d681SAndroid Build Coastguard Worker    %2 = add <4 x i16> %1, %1
324*9880d681SAndroid Build Coastguard Worker    %3 = call <2 x float> @test_v2f32_v4i16_helper(<4 x i16> %2)
325*9880d681SAndroid Build Coastguard Worker    br label %return_bb
326*9880d681SAndroid Build Coastguard Workerreturn_bb:
327*9880d681SAndroid Build Coastguard Worker    %4 = fadd <2 x float> %3, %3
328*9880d681SAndroid Build Coastguard Worker    store <2 x float> %4, <2 x float>* %q
329*9880d681SAndroid Build Coastguard Worker    ret void
330*9880d681SAndroid Build Coastguard Worker}
331*9880d681SAndroid Build Coastguard Worker
332*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v2f32_v8i8:
333*9880d681SAndroid Build Coastguard Workerdeclare <2 x float> @test_v2f32_v8i8_helper(<8 x i8> %p)
334*9880d681SAndroid Build Coastguard Workerdefine void @test_v2f32_v8i8(<8 x i8>* %p, <2 x float>* %q) {
335*9880d681SAndroid Build Coastguard Worker; CHECK: rev64 v{{[0-9]+}}.8b
336*9880d681SAndroid Build Coastguard Worker; CHECK: rev64 v{{[0-9]+}}.2s
337*9880d681SAndroid Build Coastguard Worker    %1 = load <8 x i8>, <8 x i8>* %p
338*9880d681SAndroid Build Coastguard Worker    %2 = add <8 x i8> %1, %1
339*9880d681SAndroid Build Coastguard Worker    %3 = call <2 x float> @test_v2f32_v8i8_helper(<8 x i8> %2)
340*9880d681SAndroid Build Coastguard Worker    br label %return_bb
341*9880d681SAndroid Build Coastguard Workerreturn_bb:
342*9880d681SAndroid Build Coastguard Worker    %4 = fadd <2 x float> %3, %3
343*9880d681SAndroid Build Coastguard Worker    store <2 x float> %4, <2 x float>* %q
344*9880d681SAndroid Build Coastguard Worker    ret void
345*9880d681SAndroid Build Coastguard Worker}
346*9880d681SAndroid Build Coastguard Worker
347*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v2i32_i64:
348*9880d681SAndroid Build Coastguard Workerdeclare <2 x i32> @test_v2i32_i64_helper(i64 %p)
349*9880d681SAndroid Build Coastguard Workerdefine void @test_v2i32_i64(i64* %p, <2 x i32>* %q) {
350*9880d681SAndroid Build Coastguard Worker; CHECK: rev64 v{{[0-9]+}}.2s
351*9880d681SAndroid Build Coastguard Worker    %1 = load i64, i64* %p
352*9880d681SAndroid Build Coastguard Worker    %2 = add i64 %1, %1
353*9880d681SAndroid Build Coastguard Worker    %3 = call <2 x i32> @test_v2i32_i64_helper(i64 %2)
354*9880d681SAndroid Build Coastguard Worker    br label %return_bb
355*9880d681SAndroid Build Coastguard Workerreturn_bb:
356*9880d681SAndroid Build Coastguard Worker    %4 = add <2 x i32> %3, %3
357*9880d681SAndroid Build Coastguard Worker    store <2 x i32> %4, <2 x i32>* %q
358*9880d681SAndroid Build Coastguard Worker    ret void
359*9880d681SAndroid Build Coastguard Worker}
360*9880d681SAndroid Build Coastguard Worker
361*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v2i32_f64:
362*9880d681SAndroid Build Coastguard Workerdeclare <2 x i32> @test_v2i32_f64_helper(double %p)
363*9880d681SAndroid Build Coastguard Workerdefine void @test_v2i32_f64(double* %p, <2 x i32>* %q) {
364*9880d681SAndroid Build Coastguard Worker; CHECK: rev64 v{{[0-9]+}}.2s
365*9880d681SAndroid Build Coastguard Worker    %1 = load double, double* %p
366*9880d681SAndroid Build Coastguard Worker    %2 = fadd double %1, %1
367*9880d681SAndroid Build Coastguard Worker    %3 = call <2 x i32> @test_v2i32_f64_helper(double %2)
368*9880d681SAndroid Build Coastguard Worker    br label %return_bb
369*9880d681SAndroid Build Coastguard Workerreturn_bb:
370*9880d681SAndroid Build Coastguard Worker    %4 = add <2 x i32> %3, %3
371*9880d681SAndroid Build Coastguard Worker    store <2 x i32> %4, <2 x i32>* %q
372*9880d681SAndroid Build Coastguard Worker    ret void
373*9880d681SAndroid Build Coastguard Worker}
374*9880d681SAndroid Build Coastguard Worker
375*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v2i32_v1i64:
376*9880d681SAndroid Build Coastguard Workerdeclare <2 x i32> @test_v2i32_v1i64_helper(<1 x i64> %p)
377*9880d681SAndroid Build Coastguard Workerdefine void @test_v2i32_v1i64(<1 x i64>* %p, <2 x i32>* %q) {
378*9880d681SAndroid Build Coastguard Worker; CHECK: rev64 v{{[0-9]+}}.2s
379*9880d681SAndroid Build Coastguard Worker    %1 = load <1 x i64>, <1 x i64>* %p
380*9880d681SAndroid Build Coastguard Worker    %2 = add <1 x i64> %1, %1
381*9880d681SAndroid Build Coastguard Worker    %3 = call <2 x i32> @test_v2i32_v1i64_helper(<1 x i64> %2)
382*9880d681SAndroid Build Coastguard Worker    br label %return_bb
383*9880d681SAndroid Build Coastguard Workerreturn_bb:
384*9880d681SAndroid Build Coastguard Worker    %4 = add <2 x i32> %3, %3
385*9880d681SAndroid Build Coastguard Worker    store <2 x i32> %4, <2 x i32>* %q
386*9880d681SAndroid Build Coastguard Worker    ret void
387*9880d681SAndroid Build Coastguard Worker}
388*9880d681SAndroid Build Coastguard Worker
389*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v2i32_v2f32:
390*9880d681SAndroid Build Coastguard Workerdeclare <2 x i32> @test_v2i32_v2f32_helper(<2 x float> %p)
391*9880d681SAndroid Build Coastguard Workerdefine void @test_v2i32_v2f32(<2 x float>* %p, <2 x i32>* %q) {
392*9880d681SAndroid Build Coastguard Worker; CHECK: rev64 v{{[0-9]+}}.2s
393*9880d681SAndroid Build Coastguard Worker; CHECK: rev64 v{{[0-9]+}}.2s
394*9880d681SAndroid Build Coastguard Worker    %1 = load <2 x float>, <2 x float>* %p
395*9880d681SAndroid Build Coastguard Worker    %2 = fadd <2 x float> %1, %1
396*9880d681SAndroid Build Coastguard Worker    %3 = call <2 x i32> @test_v2i32_v2f32_helper(<2 x float> %2)
397*9880d681SAndroid Build Coastguard Worker    br label %return_bb
398*9880d681SAndroid Build Coastguard Workerreturn_bb:
399*9880d681SAndroid Build Coastguard Worker    %4 = add <2 x i32> %3, %3
400*9880d681SAndroid Build Coastguard Worker    store <2 x i32> %4, <2 x i32>* %q
401*9880d681SAndroid Build Coastguard Worker    ret void
402*9880d681SAndroid Build Coastguard Worker}
403*9880d681SAndroid Build Coastguard Worker
404*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v2i32_v4i16:
405*9880d681SAndroid Build Coastguard Workerdeclare <2 x i32> @test_v2i32_v4i16_helper(<4 x i16> %p)
406*9880d681SAndroid Build Coastguard Workerdefine void @test_v2i32_v4i16(<4 x i16>* %p, <2 x i32>* %q) {
407*9880d681SAndroid Build Coastguard Worker; CHECK: rev64 v{{[0-9]+}}.4h
408*9880d681SAndroid Build Coastguard Worker; CHECK: rev64 v{{[0-9]+}}.2s
409*9880d681SAndroid Build Coastguard Worker    %1 = load <4 x i16>, <4 x i16>* %p
410*9880d681SAndroid Build Coastguard Worker    %2 = add <4 x i16> %1, %1
411*9880d681SAndroid Build Coastguard Worker    %3 = call <2 x i32> @test_v2i32_v4i16_helper(<4 x i16> %2)
412*9880d681SAndroid Build Coastguard Worker    br label %return_bb
413*9880d681SAndroid Build Coastguard Workerreturn_bb:
414*9880d681SAndroid Build Coastguard Worker    %4 = add <2 x i32> %3, %3
415*9880d681SAndroid Build Coastguard Worker    store <2 x i32> %4, <2 x i32>* %q
416*9880d681SAndroid Build Coastguard Worker    ret void
417*9880d681SAndroid Build Coastguard Worker}
418*9880d681SAndroid Build Coastguard Worker
419*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v2i32_v8i8:
420*9880d681SAndroid Build Coastguard Workerdeclare <2 x i32> @test_v2i32_v8i8_helper(<8 x i8> %p)
421*9880d681SAndroid Build Coastguard Workerdefine void @test_v2i32_v8i8(<8 x i8>* %p, <2 x i32>* %q) {
422*9880d681SAndroid Build Coastguard Worker; CHECK: rev64 v{{[0-9]+}}.8b
423*9880d681SAndroid Build Coastguard Worker; CHECK: rev64 v{{[0-9]+}}.2s
424*9880d681SAndroid Build Coastguard Worker    %1 = load <8 x i8>, <8 x i8>* %p
425*9880d681SAndroid Build Coastguard Worker    %2 = add <8 x i8> %1, %1
426*9880d681SAndroid Build Coastguard Worker    %3 = call <2 x i32> @test_v2i32_v8i8_helper(<8 x i8> %2)
427*9880d681SAndroid Build Coastguard Worker    br label %return_bb
428*9880d681SAndroid Build Coastguard Workerreturn_bb:
429*9880d681SAndroid Build Coastguard Worker    %4 = add <2 x i32> %3, %3
430*9880d681SAndroid Build Coastguard Worker    store <2 x i32> %4, <2 x i32>* %q
431*9880d681SAndroid Build Coastguard Worker    ret void
432*9880d681SAndroid Build Coastguard Worker}
433*9880d681SAndroid Build Coastguard Worker
434*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v4i16_i64:
435*9880d681SAndroid Build Coastguard Workerdeclare <4 x i16> @test_v4i16_i64_helper(i64 %p)
436*9880d681SAndroid Build Coastguard Workerdefine void @test_v4i16_i64(i64* %p, <4 x i16>* %q) {
437*9880d681SAndroid Build Coastguard Worker; CHECK: rev64 v{{[0-9]+}}.4h
438*9880d681SAndroid Build Coastguard Worker    %1 = load i64, i64* %p
439*9880d681SAndroid Build Coastguard Worker    %2 = add i64 %1, %1
440*9880d681SAndroid Build Coastguard Worker    %3 = call <4 x i16> @test_v4i16_i64_helper(i64 %2)
441*9880d681SAndroid Build Coastguard Worker    br label %return_bb
442*9880d681SAndroid Build Coastguard Workerreturn_bb:
443*9880d681SAndroid Build Coastguard Worker    %4 = add <4 x i16> %3, %3
444*9880d681SAndroid Build Coastguard Worker    store <4 x i16> %4, <4 x i16>* %q
445*9880d681SAndroid Build Coastguard Worker    ret void
446*9880d681SAndroid Build Coastguard Worker}
447*9880d681SAndroid Build Coastguard Worker
448*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v4i16_f64:
449*9880d681SAndroid Build Coastguard Workerdeclare <4 x i16> @test_v4i16_f64_helper(double %p)
450*9880d681SAndroid Build Coastguard Workerdefine void @test_v4i16_f64(double* %p, <4 x i16>* %q) {
451*9880d681SAndroid Build Coastguard Worker; CHECK: rev64 v{{[0-9]+}}.4h
452*9880d681SAndroid Build Coastguard Worker    %1 = load double, double* %p
453*9880d681SAndroid Build Coastguard Worker    %2 = fadd double %1, %1
454*9880d681SAndroid Build Coastguard Worker    %3 = call <4 x i16> @test_v4i16_f64_helper(double %2)
455*9880d681SAndroid Build Coastguard Worker    br label %return_bb
456*9880d681SAndroid Build Coastguard Workerreturn_bb:
457*9880d681SAndroid Build Coastguard Worker    %4 = add <4 x i16> %3, %3
458*9880d681SAndroid Build Coastguard Worker    store <4 x i16> %4, <4 x i16>* %q
459*9880d681SAndroid Build Coastguard Worker    ret void
460*9880d681SAndroid Build Coastguard Worker}
461*9880d681SAndroid Build Coastguard Worker
462*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v4i16_v1i64:
463*9880d681SAndroid Build Coastguard Workerdeclare <4 x i16> @test_v4i16_v1i64_helper(<1 x i64> %p)
464*9880d681SAndroid Build Coastguard Workerdefine void @test_v4i16_v1i64(<1 x i64>* %p, <4 x i16>* %q) {
465*9880d681SAndroid Build Coastguard Worker; CHECK: rev64 v{{[0-9]+}}.4h
466*9880d681SAndroid Build Coastguard Worker    %1 = load <1 x i64>, <1 x i64>* %p
467*9880d681SAndroid Build Coastguard Worker    %2 = add <1 x i64> %1, %1
468*9880d681SAndroid Build Coastguard Worker    %3 = call <4 x i16> @test_v4i16_v1i64_helper(<1 x i64> %2)
469*9880d681SAndroid Build Coastguard Worker    br label %return_bb
470*9880d681SAndroid Build Coastguard Workerreturn_bb:
471*9880d681SAndroid Build Coastguard Worker    %4 = add <4 x i16> %3, %3
472*9880d681SAndroid Build Coastguard Worker    store <4 x i16> %4, <4 x i16>* %q
473*9880d681SAndroid Build Coastguard Worker    ret void
474*9880d681SAndroid Build Coastguard Worker}
475*9880d681SAndroid Build Coastguard Worker
476*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v4i16_v2f32:
477*9880d681SAndroid Build Coastguard Workerdeclare <4 x i16> @test_v4i16_v2f32_helper(<2 x float> %p)
478*9880d681SAndroid Build Coastguard Workerdefine void @test_v4i16_v2f32(<2 x float>* %p, <4 x i16>* %q) {
479*9880d681SAndroid Build Coastguard Worker; CHECK: rev64 v{{[0-9]+}}.2s
480*9880d681SAndroid Build Coastguard Worker; CHECK: rev64 v{{[0-9]+}}.4h
481*9880d681SAndroid Build Coastguard Worker    %1 = load <2 x float>, <2 x float>* %p
482*9880d681SAndroid Build Coastguard Worker    %2 = fadd <2 x float> %1, %1
483*9880d681SAndroid Build Coastguard Worker    %3 = call <4 x i16> @test_v4i16_v2f32_helper(<2 x float> %2)
484*9880d681SAndroid Build Coastguard Worker    br label %return_bb
485*9880d681SAndroid Build Coastguard Workerreturn_bb:
486*9880d681SAndroid Build Coastguard Worker    %4 = add <4 x i16> %3, %3
487*9880d681SAndroid Build Coastguard Worker    store <4 x i16> %4, <4 x i16>* %q
488*9880d681SAndroid Build Coastguard Worker    ret void
489*9880d681SAndroid Build Coastguard Worker}
490*9880d681SAndroid Build Coastguard Worker
491*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v4i16_v2i32:
492*9880d681SAndroid Build Coastguard Workerdeclare <4 x i16> @test_v4i16_v2i32_helper(<2 x i32> %p)
493*9880d681SAndroid Build Coastguard Workerdefine void @test_v4i16_v2i32(<2 x i32>* %p, <4 x i16>* %q) {
494*9880d681SAndroid Build Coastguard Worker; CHECK: rev64 v{{[0-9]+}}.2s
495*9880d681SAndroid Build Coastguard Worker; CHECK: rev64 v{{[0-9]+}}.4h
496*9880d681SAndroid Build Coastguard Worker    %1 = load <2 x i32>, <2 x i32>* %p
497*9880d681SAndroid Build Coastguard Worker    %2 = add <2 x i32> %1, %1
498*9880d681SAndroid Build Coastguard Worker    %3 = call <4 x i16> @test_v4i16_v2i32_helper(<2 x i32> %2)
499*9880d681SAndroid Build Coastguard Worker    br label %return_bb
500*9880d681SAndroid Build Coastguard Workerreturn_bb:
501*9880d681SAndroid Build Coastguard Worker    %4 = add <4 x i16> %3, %3
502*9880d681SAndroid Build Coastguard Worker    store <4 x i16> %4, <4 x i16>* %q
503*9880d681SAndroid Build Coastguard Worker    ret void
504*9880d681SAndroid Build Coastguard Worker}
505*9880d681SAndroid Build Coastguard Worker
506*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v4i16_v8i8:
507*9880d681SAndroid Build Coastguard Workerdeclare <4 x i16> @test_v4i16_v8i8_helper(<8 x i8> %p)
508*9880d681SAndroid Build Coastguard Workerdefine void @test_v4i16_v8i8(<8 x i8>* %p, <4 x i16>* %q) {
509*9880d681SAndroid Build Coastguard Worker; CHECK: rev64 v{{[0-9]+}}.8b
510*9880d681SAndroid Build Coastguard Worker; CHECK: rev64 v{{[0-9]+}}.4h
511*9880d681SAndroid Build Coastguard Worker    %1 = load <8 x i8>, <8 x i8>* %p
512*9880d681SAndroid Build Coastguard Worker    %2 = add <8 x i8> %1, %1
513*9880d681SAndroid Build Coastguard Worker    %3 = call <4 x i16> @test_v4i16_v8i8_helper(<8 x i8> %2)
514*9880d681SAndroid Build Coastguard Worker    br label %return_bb
515*9880d681SAndroid Build Coastguard Workerreturn_bb:
516*9880d681SAndroid Build Coastguard Worker    %4 = add <4 x i16> %3, %3
517*9880d681SAndroid Build Coastguard Worker    store <4 x i16> %4, <4 x i16>* %q
518*9880d681SAndroid Build Coastguard Worker    ret void
519*9880d681SAndroid Build Coastguard Worker}
520*9880d681SAndroid Build Coastguard Worker
521*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v8i8_i64:
522*9880d681SAndroid Build Coastguard Workerdeclare <8 x i8> @test_v8i8_i64_helper(i64 %p)
523*9880d681SAndroid Build Coastguard Workerdefine void @test_v8i8_i64(i64* %p, <8 x i8>* %q) {
524*9880d681SAndroid Build Coastguard Worker; CHECK: rev64 v{{[0-9]+}}.8b
525*9880d681SAndroid Build Coastguard Worker    %1 = load i64, i64* %p
526*9880d681SAndroid Build Coastguard Worker    %2 = add i64 %1, %1
527*9880d681SAndroid Build Coastguard Worker    %3 = call <8 x i8> @test_v8i8_i64_helper(i64 %2)
528*9880d681SAndroid Build Coastguard Worker    br label %return_bb
529*9880d681SAndroid Build Coastguard Workerreturn_bb:
530*9880d681SAndroid Build Coastguard Worker    %4 = add <8 x i8> %3, %3
531*9880d681SAndroid Build Coastguard Worker    store <8 x i8> %4, <8 x i8>* %q
532*9880d681SAndroid Build Coastguard Worker    ret void
533*9880d681SAndroid Build Coastguard Worker}
534*9880d681SAndroid Build Coastguard Worker
535*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v8i8_f64:
536*9880d681SAndroid Build Coastguard Workerdeclare <8 x i8> @test_v8i8_f64_helper(double %p)
537*9880d681SAndroid Build Coastguard Workerdefine void @test_v8i8_f64(double* %p, <8 x i8>* %q) {
538*9880d681SAndroid Build Coastguard Worker; CHECK: rev64 v{{[0-9]+}}.8b
539*9880d681SAndroid Build Coastguard Worker    %1 = load double, double* %p
540*9880d681SAndroid Build Coastguard Worker    %2 = fadd double %1, %1
541*9880d681SAndroid Build Coastguard Worker    %3 = call <8 x i8> @test_v8i8_f64_helper(double %2)
542*9880d681SAndroid Build Coastguard Worker    br label %return_bb
543*9880d681SAndroid Build Coastguard Workerreturn_bb:
544*9880d681SAndroid Build Coastguard Worker    %4 = add <8 x i8> %3, %3
545*9880d681SAndroid Build Coastguard Worker    store <8 x i8> %4, <8 x i8>* %q
546*9880d681SAndroid Build Coastguard Worker    ret void
547*9880d681SAndroid Build Coastguard Worker}
548*9880d681SAndroid Build Coastguard Worker
549*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v8i8_v1i64:
550*9880d681SAndroid Build Coastguard Workerdeclare <8 x i8> @test_v8i8_v1i64_helper(<1 x i64> %p)
551*9880d681SAndroid Build Coastguard Workerdefine void @test_v8i8_v1i64(<1 x i64>* %p, <8 x i8>* %q) {
552*9880d681SAndroid Build Coastguard Worker; CHECK: rev64 v{{[0-9]+}}.8b
553*9880d681SAndroid Build Coastguard Worker    %1 = load <1 x i64>, <1 x i64>* %p
554*9880d681SAndroid Build Coastguard Worker    %2 = add <1 x i64> %1, %1
555*9880d681SAndroid Build Coastguard Worker    %3 = call <8 x i8> @test_v8i8_v1i64_helper(<1 x i64> %2)
556*9880d681SAndroid Build Coastguard Worker    br label %return_bb
557*9880d681SAndroid Build Coastguard Workerreturn_bb:
558*9880d681SAndroid Build Coastguard Worker    %4 = add <8 x i8> %3, %3
559*9880d681SAndroid Build Coastguard Worker    store <8 x i8> %4, <8 x i8>* %q
560*9880d681SAndroid Build Coastguard Worker    ret void
561*9880d681SAndroid Build Coastguard Worker}
562*9880d681SAndroid Build Coastguard Worker
563*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v8i8_v2f32:
564*9880d681SAndroid Build Coastguard Workerdeclare <8 x i8> @test_v8i8_v2f32_helper(<2 x float> %p)
565*9880d681SAndroid Build Coastguard Workerdefine void @test_v8i8_v2f32(<2 x float>* %p, <8 x i8>* %q) {
566*9880d681SAndroid Build Coastguard Worker; CHECK: rev64 v{{[0-9]+}}.2s
567*9880d681SAndroid Build Coastguard Worker; CHECK: rev64 v{{[0-9]+}}.8b
568*9880d681SAndroid Build Coastguard Worker    %1 = load <2 x float>, <2 x float>* %p
569*9880d681SAndroid Build Coastguard Worker    %2 = fadd <2 x float> %1, %1
570*9880d681SAndroid Build Coastguard Worker    %3 = call <8 x i8> @test_v8i8_v2f32_helper(<2 x float> %2)
571*9880d681SAndroid Build Coastguard Worker    br label %return_bb
572*9880d681SAndroid Build Coastguard Workerreturn_bb:
573*9880d681SAndroid Build Coastguard Worker    %4 = add <8 x i8> %3, %3
574*9880d681SAndroid Build Coastguard Worker    store <8 x i8> %4, <8 x i8>* %q
575*9880d681SAndroid Build Coastguard Worker    ret void
576*9880d681SAndroid Build Coastguard Worker}
577*9880d681SAndroid Build Coastguard Worker
578*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v8i8_v2i32:
579*9880d681SAndroid Build Coastguard Workerdeclare <8 x i8> @test_v8i8_v2i32_helper(<2 x i32> %p)
580*9880d681SAndroid Build Coastguard Workerdefine void @test_v8i8_v2i32(<2 x i32>* %p, <8 x i8>* %q) {
581*9880d681SAndroid Build Coastguard Worker; CHECK: rev64 v{{[0-9]+}}.2s
582*9880d681SAndroid Build Coastguard Worker; CHECK: rev64 v{{[0-9]+}}.8b
583*9880d681SAndroid Build Coastguard Worker    %1 = load <2 x i32>, <2 x i32>* %p
584*9880d681SAndroid Build Coastguard Worker    %2 = add <2 x i32> %1, %1
585*9880d681SAndroid Build Coastguard Worker    %3 = call <8 x i8> @test_v8i8_v2i32_helper(<2 x i32> %2)
586*9880d681SAndroid Build Coastguard Worker    br label %return_bb
587*9880d681SAndroid Build Coastguard Workerreturn_bb:
588*9880d681SAndroid Build Coastguard Worker    %4 = add <8 x i8> %3, %3
589*9880d681SAndroid Build Coastguard Worker    store <8 x i8> %4, <8 x i8>* %q
590*9880d681SAndroid Build Coastguard Worker    ret void
591*9880d681SAndroid Build Coastguard Worker}
592*9880d681SAndroid Build Coastguard Worker
593*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v8i8_v4i16:
594*9880d681SAndroid Build Coastguard Workerdeclare <8 x i8> @test_v8i8_v4i16_helper(<4 x i16> %p)
595*9880d681SAndroid Build Coastguard Workerdefine void @test_v8i8_v4i16(<4 x i16>* %p, <8 x i8>* %q) {
596*9880d681SAndroid Build Coastguard Worker; CHECK: rev64 v{{[0-9]+}}.4h
597*9880d681SAndroid Build Coastguard Worker; CHECK: rev64 v{{[0-9]+}}.8b
598*9880d681SAndroid Build Coastguard Worker    %1 = load <4 x i16>, <4 x i16>* %p
599*9880d681SAndroid Build Coastguard Worker    %2 = add <4 x i16> %1, %1
600*9880d681SAndroid Build Coastguard Worker    %3 = call <8 x i8> @test_v8i8_v4i16_helper(<4 x i16> %2)
601*9880d681SAndroid Build Coastguard Worker    br label %return_bb
602*9880d681SAndroid Build Coastguard Workerreturn_bb:
603*9880d681SAndroid Build Coastguard Worker    %4 = add <8 x i8> %3, %3
604*9880d681SAndroid Build Coastguard Worker    store <8 x i8> %4, <8 x i8>* %q
605*9880d681SAndroid Build Coastguard Worker    ret void
606*9880d681SAndroid Build Coastguard Worker}
607*9880d681SAndroid Build Coastguard Worker
608*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_f128_v2f64:
609*9880d681SAndroid Build Coastguard Workerdeclare fp128 @test_f128_v2f64_helper(<2 x double> %p)
610*9880d681SAndroid Build Coastguard Workerdefine void @test_f128_v2f64(<2 x double>* %p, fp128* %q) {
611*9880d681SAndroid Build Coastguard Worker; CHECK: ext
612*9880d681SAndroid Build Coastguard Worker    %1 = load <2 x double>, <2 x double>* %p
613*9880d681SAndroid Build Coastguard Worker    %2 = fadd <2 x double> %1, %1
614*9880d681SAndroid Build Coastguard Worker    %3 = call fp128 @test_f128_v2f64_helper(<2 x double> %2)
615*9880d681SAndroid Build Coastguard Worker    br label %return_bb
616*9880d681SAndroid Build Coastguard Workerreturn_bb:
617*9880d681SAndroid Build Coastguard Worker    %4 = fadd fp128 %3, %3
618*9880d681SAndroid Build Coastguard Worker    store fp128 %4, fp128* %q
619*9880d681SAndroid Build Coastguard Worker    ret void
620*9880d681SAndroid Build Coastguard Worker}
621*9880d681SAndroid Build Coastguard Worker
622*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_f128_v2i64:
623*9880d681SAndroid Build Coastguard Workerdeclare fp128 @test_f128_v2i64_helper(<2 x i64> %p)
624*9880d681SAndroid Build Coastguard Workerdefine void @test_f128_v2i64(<2 x i64>* %p, fp128* %q) {
625*9880d681SAndroid Build Coastguard Worker; CHECK: ext
626*9880d681SAndroid Build Coastguard Worker    %1 = load <2 x i64>, <2 x i64>* %p
627*9880d681SAndroid Build Coastguard Worker    %2 = add <2 x i64> %1, %1
628*9880d681SAndroid Build Coastguard Worker    %3 = call fp128 @test_f128_v2i64_helper(<2 x i64> %2)
629*9880d681SAndroid Build Coastguard Worker    br label %return_bb
630*9880d681SAndroid Build Coastguard Workerreturn_bb:
631*9880d681SAndroid Build Coastguard Worker    %4 = fadd fp128 %3, %3
632*9880d681SAndroid Build Coastguard Worker    store fp128 %4, fp128* %q
633*9880d681SAndroid Build Coastguard Worker    ret void
634*9880d681SAndroid Build Coastguard Worker}
635*9880d681SAndroid Build Coastguard Worker
636*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_f128_v4f32:
637*9880d681SAndroid Build Coastguard Workerdeclare fp128 @test_f128_v4f32_helper(<4 x float> %p)
638*9880d681SAndroid Build Coastguard Workerdefine void @test_f128_v4f32(<4 x float>* %p, fp128* %q) {
639*9880d681SAndroid Build Coastguard Worker; CHECK: rev64 v{{[0-9]+}}.4s
640*9880d681SAndroid Build Coastguard Worker; CHECK: ext
641*9880d681SAndroid Build Coastguard Worker    %1 = load <4 x float>, <4 x float>* %p
642*9880d681SAndroid Build Coastguard Worker    %2 = fadd <4 x float> %1, %1
643*9880d681SAndroid Build Coastguard Worker    %3 = call fp128 @test_f128_v4f32_helper(<4 x float> %2)
644*9880d681SAndroid Build Coastguard Worker    br label %return_bb
645*9880d681SAndroid Build Coastguard Workerreturn_bb:
646*9880d681SAndroid Build Coastguard Worker    %4 = fadd fp128 %3, %3
647*9880d681SAndroid Build Coastguard Worker    store fp128 %4, fp128* %q
648*9880d681SAndroid Build Coastguard Worker    ret void
649*9880d681SAndroid Build Coastguard Worker}
650*9880d681SAndroid Build Coastguard Worker
651*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_f128_v4i32:
652*9880d681SAndroid Build Coastguard Workerdeclare fp128 @test_f128_v4i32_helper(<4 x i32> %p)
653*9880d681SAndroid Build Coastguard Workerdefine void @test_f128_v4i32(<4 x i32>* %p, fp128* %q) {
654*9880d681SAndroid Build Coastguard Worker; CHECK: rev64 v{{[0-9]+}}.4s
655*9880d681SAndroid Build Coastguard Worker; CHECK: ext
656*9880d681SAndroid Build Coastguard Worker    %1 = load <4 x i32>, <4 x i32>* %p
657*9880d681SAndroid Build Coastguard Worker    %2 = add <4 x i32> %1, %1
658*9880d681SAndroid Build Coastguard Worker    %3 = call fp128 @test_f128_v4i32_helper(<4 x i32> %2)
659*9880d681SAndroid Build Coastguard Worker    br label %return_bb
660*9880d681SAndroid Build Coastguard Workerreturn_bb:
661*9880d681SAndroid Build Coastguard Worker    %4 = fadd fp128 %3, %3
662*9880d681SAndroid Build Coastguard Worker    store fp128 %4, fp128* %q
663*9880d681SAndroid Build Coastguard Worker    ret void
664*9880d681SAndroid Build Coastguard Worker}
665*9880d681SAndroid Build Coastguard Worker
666*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_f128_v8i16:
667*9880d681SAndroid Build Coastguard Workerdeclare fp128 @test_f128_v8i16_helper(<8 x i16> %p)
668*9880d681SAndroid Build Coastguard Workerdefine void @test_f128_v8i16(<8 x i16>* %p, fp128* %q) {
669*9880d681SAndroid Build Coastguard Worker; CHECK: rev64 v{{[0-9]+}}.8h
670*9880d681SAndroid Build Coastguard Worker; CHECK: ext
671*9880d681SAndroid Build Coastguard Worker    %1 = load <8 x i16>, <8 x i16>* %p
672*9880d681SAndroid Build Coastguard Worker    %2 = add <8 x i16> %1, %1
673*9880d681SAndroid Build Coastguard Worker    %3 = call fp128 @test_f128_v8i16_helper(<8 x i16> %2)
674*9880d681SAndroid Build Coastguard Worker    br label %return_bb
675*9880d681SAndroid Build Coastguard Workerreturn_bb:
676*9880d681SAndroid Build Coastguard Worker    %4 = fadd fp128 %3, %3
677*9880d681SAndroid Build Coastguard Worker    store fp128 %4, fp128* %q
678*9880d681SAndroid Build Coastguard Worker    ret void
679*9880d681SAndroid Build Coastguard Worker}
680*9880d681SAndroid Build Coastguard Worker
681*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_f128_v16i8:
682*9880d681SAndroid Build Coastguard Workerdeclare fp128 @test_f128_v16i8_helper(<16 x i8> %p)
683*9880d681SAndroid Build Coastguard Workerdefine void @test_f128_v16i8(<16 x i8>* %p, fp128* %q) {
684*9880d681SAndroid Build Coastguard Worker; CHECK: rev64 v{{[0-9]+}}.16b
685*9880d681SAndroid Build Coastguard Worker; CHECK: ext
686*9880d681SAndroid Build Coastguard Worker    %1 = load <16 x i8>, <16 x i8>* %p
687*9880d681SAndroid Build Coastguard Worker    %2 = add <16 x i8> %1, %1
688*9880d681SAndroid Build Coastguard Worker    %3 = call fp128 @test_f128_v16i8_helper(<16 x i8> %2)
689*9880d681SAndroid Build Coastguard Worker    br label %return_bb
690*9880d681SAndroid Build Coastguard Workerreturn_bb:
691*9880d681SAndroid Build Coastguard Worker    %4 = fadd fp128 %3, %3
692*9880d681SAndroid Build Coastguard Worker    store fp128 %4, fp128* %q
693*9880d681SAndroid Build Coastguard Worker    ret void
694*9880d681SAndroid Build Coastguard Worker}
695*9880d681SAndroid Build Coastguard Worker
696*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v2f64_f128:
697*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @test_v2f64_f128_helper(fp128 %p)
698*9880d681SAndroid Build Coastguard Workerdefine void @test_v2f64_f128(fp128* %p, <2 x double>* %q) {
699*9880d681SAndroid Build Coastguard Worker; CHECK: ext
700*9880d681SAndroid Build Coastguard Worker    %1 = load fp128, fp128* %p
701*9880d681SAndroid Build Coastguard Worker    %2 = fadd fp128 %1, %1
702*9880d681SAndroid Build Coastguard Worker    %3 = call <2 x double> @test_v2f64_f128_helper(fp128 %2)
703*9880d681SAndroid Build Coastguard Worker    br label %return_bb
704*9880d681SAndroid Build Coastguard Workerreturn_bb:
705*9880d681SAndroid Build Coastguard Worker    %4 = fadd <2 x double> %3, %3
706*9880d681SAndroid Build Coastguard Worker    store <2 x double> %4, <2 x double>* %q
707*9880d681SAndroid Build Coastguard Worker    ret void
708*9880d681SAndroid Build Coastguard Worker}
709*9880d681SAndroid Build Coastguard Worker
710*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v2f64_v2i64:
711*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @test_v2f64_v2i64_helper(<2 x i64> %p)
712*9880d681SAndroid Build Coastguard Workerdefine void @test_v2f64_v2i64(<2 x i64>* %p, <2 x double>* %q) {
713*9880d681SAndroid Build Coastguard Worker; CHECK: ext
714*9880d681SAndroid Build Coastguard Worker; CHECK: ext
715*9880d681SAndroid Build Coastguard Worker    %1 = load <2 x i64>, <2 x i64>* %p
716*9880d681SAndroid Build Coastguard Worker    %2 = add <2 x i64> %1, %1
717*9880d681SAndroid Build Coastguard Worker    %3 = call <2 x double> @test_v2f64_v2i64_helper(<2 x i64> %2)
718*9880d681SAndroid Build Coastguard Worker    br label %return_bb
719*9880d681SAndroid Build Coastguard Workerreturn_bb:
720*9880d681SAndroid Build Coastguard Worker    %4 = fadd <2 x double> %3, %3
721*9880d681SAndroid Build Coastguard Worker    store <2 x double> %4, <2 x double>* %q
722*9880d681SAndroid Build Coastguard Worker    ret void
723*9880d681SAndroid Build Coastguard Worker}
724*9880d681SAndroid Build Coastguard Worker
725*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v2f64_v4f32:
726*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @test_v2f64_v4f32_helper(<4 x float> %p)
727*9880d681SAndroid Build Coastguard Workerdefine void @test_v2f64_v4f32(<4 x float>* %p, <2 x double>* %q) {
728*9880d681SAndroid Build Coastguard Worker; CHECK: rev64 v{{[0-9]+}}.4s
729*9880d681SAndroid Build Coastguard Worker; CHECK: ext
730*9880d681SAndroid Build Coastguard Worker; CHECK: ext
731*9880d681SAndroid Build Coastguard Worker    %1 = load <4 x float>, <4 x float>* %p
732*9880d681SAndroid Build Coastguard Worker    %2 = fadd <4 x float> %1, %1
733*9880d681SAndroid Build Coastguard Worker    %3 = call <2 x double> @test_v2f64_v4f32_helper(<4 x float> %2)
734*9880d681SAndroid Build Coastguard Worker    br label %return_bb
735*9880d681SAndroid Build Coastguard Workerreturn_bb:
736*9880d681SAndroid Build Coastguard Worker    %4 = fadd <2 x double> %3, %3
737*9880d681SAndroid Build Coastguard Worker    store <2 x double> %4, <2 x double>* %q
738*9880d681SAndroid Build Coastguard Worker    ret void
739*9880d681SAndroid Build Coastguard Worker}
740*9880d681SAndroid Build Coastguard Worker
741*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v2f64_v4i32:
742*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @test_v2f64_v4i32_helper(<4 x i32> %p)
743*9880d681SAndroid Build Coastguard Workerdefine void @test_v2f64_v4i32(<4 x i32>* %p, <2 x double>* %q) {
744*9880d681SAndroid Build Coastguard Worker; CHECK: rev64 v{{[0-9]+}}.4s
745*9880d681SAndroid Build Coastguard Worker; CHECK: ext
746*9880d681SAndroid Build Coastguard Worker; CHECK: ext
747*9880d681SAndroid Build Coastguard Worker    %1 = load <4 x i32>, <4 x i32>* %p
748*9880d681SAndroid Build Coastguard Worker    %2 = add <4 x i32> %1, %1
749*9880d681SAndroid Build Coastguard Worker    %3 = call <2 x double> @test_v2f64_v4i32_helper(<4 x i32> %2)
750*9880d681SAndroid Build Coastguard Worker    br label %return_bb
751*9880d681SAndroid Build Coastguard Workerreturn_bb:
752*9880d681SAndroid Build Coastguard Worker    %4 = fadd <2 x double> %3, %3
753*9880d681SAndroid Build Coastguard Worker    store <2 x double> %4, <2 x double>* %q
754*9880d681SAndroid Build Coastguard Worker    ret void
755*9880d681SAndroid Build Coastguard Worker}
756*9880d681SAndroid Build Coastguard Worker
757*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v2f64_v8i16:
758*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @test_v2f64_v8i16_helper(<8 x i16> %p)
759*9880d681SAndroid Build Coastguard Workerdefine void @test_v2f64_v8i16(<8 x i16>* %p, <2 x double>* %q) {
760*9880d681SAndroid Build Coastguard Worker; CHECK: rev64 v{{[0-9]+}}.8h
761*9880d681SAndroid Build Coastguard Worker; CHECK: ext
762*9880d681SAndroid Build Coastguard Worker; CHECK: ext
763*9880d681SAndroid Build Coastguard Worker    %1 = load <8 x i16>, <8 x i16>* %p
764*9880d681SAndroid Build Coastguard Worker    %2 = add <8 x i16> %1, %1
765*9880d681SAndroid Build Coastguard Worker    %3 = call <2 x double> @test_v2f64_v8i16_helper(<8 x i16> %2)
766*9880d681SAndroid Build Coastguard Worker    br label %return_bb
767*9880d681SAndroid Build Coastguard Workerreturn_bb:
768*9880d681SAndroid Build Coastguard Worker    %4 = fadd <2 x double> %3, %3
769*9880d681SAndroid Build Coastguard Worker    store <2 x double> %4, <2 x double>* %q
770*9880d681SAndroid Build Coastguard Worker    ret void
771*9880d681SAndroid Build Coastguard Worker}
772*9880d681SAndroid Build Coastguard Worker
773*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v2f64_v16i8:
774*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @test_v2f64_v16i8_helper(<16 x i8> %p)
775*9880d681SAndroid Build Coastguard Workerdefine void @test_v2f64_v16i8(<16 x i8>* %p, <2 x double>* %q) {
776*9880d681SAndroid Build Coastguard Worker; CHECK: rev64 v{{[0-9]+}}.16b
777*9880d681SAndroid Build Coastguard Worker; CHECK: ext
778*9880d681SAndroid Build Coastguard Worker; CHECK: ext
779*9880d681SAndroid Build Coastguard Worker    %1 = load <16 x i8>, <16 x i8>* %p
780*9880d681SAndroid Build Coastguard Worker    %2 = add <16 x i8> %1, %1
781*9880d681SAndroid Build Coastguard Worker    %3 = call <2 x double> @test_v2f64_v16i8_helper(<16 x i8> %2)
782*9880d681SAndroid Build Coastguard Worker    br label %return_bb
783*9880d681SAndroid Build Coastguard Workerreturn_bb:
784*9880d681SAndroid Build Coastguard Worker    %4 = fadd <2 x double> %3, %3
785*9880d681SAndroid Build Coastguard Worker    store <2 x double> %4, <2 x double>* %q
786*9880d681SAndroid Build Coastguard Worker    ret void
787*9880d681SAndroid Build Coastguard Worker}
788*9880d681SAndroid Build Coastguard Worker
789*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v2i64_f128:
790*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @test_v2i64_f128_helper(fp128 %p)
791*9880d681SAndroid Build Coastguard Workerdefine void @test_v2i64_f128(fp128* %p, <2 x i64>* %q) {
792*9880d681SAndroid Build Coastguard Worker; CHECK: ext
793*9880d681SAndroid Build Coastguard Worker    %1 = load fp128, fp128* %p
794*9880d681SAndroid Build Coastguard Worker    %2 = fadd fp128 %1, %1
795*9880d681SAndroid Build Coastguard Worker    %3 = call <2 x i64> @test_v2i64_f128_helper(fp128 %2)
796*9880d681SAndroid Build Coastguard Worker    br label %return_bb
797*9880d681SAndroid Build Coastguard Workerreturn_bb:
798*9880d681SAndroid Build Coastguard Worker    %4 = add <2 x i64> %3, %3
799*9880d681SAndroid Build Coastguard Worker    store <2 x i64> %4, <2 x i64>* %q
800*9880d681SAndroid Build Coastguard Worker    ret void
801*9880d681SAndroid Build Coastguard Worker}
802*9880d681SAndroid Build Coastguard Worker
803*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v2i64_v2f64:
804*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @test_v2i64_v2f64_helper(<2 x double> %p)
805*9880d681SAndroid Build Coastguard Workerdefine void @test_v2i64_v2f64(<2 x double>* %p, <2 x i64>* %q) {
806*9880d681SAndroid Build Coastguard Worker; CHECK: ext
807*9880d681SAndroid Build Coastguard Worker; CHECK: ext
808*9880d681SAndroid Build Coastguard Worker    %1 = load <2 x double>, <2 x double>* %p
809*9880d681SAndroid Build Coastguard Worker    %2 = fadd <2 x double> %1, %1
810*9880d681SAndroid Build Coastguard Worker    %3 = call <2 x i64> @test_v2i64_v2f64_helper(<2 x double> %2)
811*9880d681SAndroid Build Coastguard Worker    br label %return_bb
812*9880d681SAndroid Build Coastguard Workerreturn_bb:
813*9880d681SAndroid Build Coastguard Worker    %4 = add <2 x i64> %3, %3
814*9880d681SAndroid Build Coastguard Worker    store <2 x i64> %4, <2 x i64>* %q
815*9880d681SAndroid Build Coastguard Worker    ret void
816*9880d681SAndroid Build Coastguard Worker}
817*9880d681SAndroid Build Coastguard Worker
818*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v2i64_v4f32:
819*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @test_v2i64_v4f32_helper(<4 x float> %p)
820*9880d681SAndroid Build Coastguard Workerdefine void @test_v2i64_v4f32(<4 x float>* %p, <2 x i64>* %q) {
821*9880d681SAndroid Build Coastguard Worker; CHECK: rev64 v{{[0-9]+}}.4s
822*9880d681SAndroid Build Coastguard Worker; CHECK: ext
823*9880d681SAndroid Build Coastguard Worker; CHECK: ext
824*9880d681SAndroid Build Coastguard Worker    %1 = load <4 x float>, <4 x float>* %p
825*9880d681SAndroid Build Coastguard Worker    %2 = fadd <4 x float> %1, %1
826*9880d681SAndroid Build Coastguard Worker    %3 = call <2 x i64> @test_v2i64_v4f32_helper(<4 x float> %2)
827*9880d681SAndroid Build Coastguard Worker    br label %return_bb
828*9880d681SAndroid Build Coastguard Workerreturn_bb:
829*9880d681SAndroid Build Coastguard Worker    %4 = add <2 x i64> %3, %3
830*9880d681SAndroid Build Coastguard Worker    store <2 x i64> %4, <2 x i64>* %q
831*9880d681SAndroid Build Coastguard Worker    ret void
832*9880d681SAndroid Build Coastguard Worker}
833*9880d681SAndroid Build Coastguard Worker
834*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v2i64_v4i32:
835*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @test_v2i64_v4i32_helper(<4 x i32> %p)
836*9880d681SAndroid Build Coastguard Workerdefine void @test_v2i64_v4i32(<4 x i32>* %p, <2 x i64>* %q) {
837*9880d681SAndroid Build Coastguard Worker; CHECK: rev64 v{{[0-9]+}}.4s
838*9880d681SAndroid Build Coastguard Worker; CHECK: ext
839*9880d681SAndroid Build Coastguard Worker; CHECK: ext
840*9880d681SAndroid Build Coastguard Worker    %1 = load <4 x i32>, <4 x i32>* %p
841*9880d681SAndroid Build Coastguard Worker    %2 = add <4 x i32> %1, %1
842*9880d681SAndroid Build Coastguard Worker    %3 = call <2 x i64> @test_v2i64_v4i32_helper(<4 x i32> %2)
843*9880d681SAndroid Build Coastguard Worker    br label %return_bb
844*9880d681SAndroid Build Coastguard Workerreturn_bb:
845*9880d681SAndroid Build Coastguard Worker    %4 = add <2 x i64> %3, %3
846*9880d681SAndroid Build Coastguard Worker    store <2 x i64> %4, <2 x i64>* %q
847*9880d681SAndroid Build Coastguard Worker    ret void
848*9880d681SAndroid Build Coastguard Worker}
849*9880d681SAndroid Build Coastguard Worker
850*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v2i64_v8i16:
851*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @test_v2i64_v8i16_helper(<8 x i16> %p)
852*9880d681SAndroid Build Coastguard Workerdefine void @test_v2i64_v8i16(<8 x i16>* %p, <2 x i64>* %q) {
853*9880d681SAndroid Build Coastguard Worker; CHECK: rev64 v{{[0-9]+}}.8h
854*9880d681SAndroid Build Coastguard Worker; CHECK: ext
855*9880d681SAndroid Build Coastguard Worker; CHECK: ext
856*9880d681SAndroid Build Coastguard Worker    %1 = load <8 x i16>, <8 x i16>* %p
857*9880d681SAndroid Build Coastguard Worker    %2 = add <8 x i16> %1, %1
858*9880d681SAndroid Build Coastguard Worker    %3 = call <2 x i64> @test_v2i64_v8i16_helper(<8 x i16> %2)
859*9880d681SAndroid Build Coastguard Worker    br label %return_bb
860*9880d681SAndroid Build Coastguard Workerreturn_bb:
861*9880d681SAndroid Build Coastguard Worker    %4 = add <2 x i64> %3, %3
862*9880d681SAndroid Build Coastguard Worker    store <2 x i64> %4, <2 x i64>* %q
863*9880d681SAndroid Build Coastguard Worker    ret void
864*9880d681SAndroid Build Coastguard Worker}
865*9880d681SAndroid Build Coastguard Worker
866*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v2i64_v16i8:
867*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @test_v2i64_v16i8_helper(<16 x i8> %p)
868*9880d681SAndroid Build Coastguard Workerdefine void @test_v2i64_v16i8(<16 x i8>* %p, <2 x i64>* %q) {
869*9880d681SAndroid Build Coastguard Worker; CHECK: rev64 v{{[0-9]+}}.16b
870*9880d681SAndroid Build Coastguard Worker; CHECK: ext
871*9880d681SAndroid Build Coastguard Worker; CHECK: ext
872*9880d681SAndroid Build Coastguard Worker    %1 = load <16 x i8>, <16 x i8>* %p
873*9880d681SAndroid Build Coastguard Worker    %2 = add <16 x i8> %1, %1
874*9880d681SAndroid Build Coastguard Worker    %3 = call <2 x i64> @test_v2i64_v16i8_helper(<16 x i8> %2)
875*9880d681SAndroid Build Coastguard Worker    br label %return_bb
876*9880d681SAndroid Build Coastguard Workerreturn_bb:
877*9880d681SAndroid Build Coastguard Worker    %4 = add <2 x i64> %3, %3
878*9880d681SAndroid Build Coastguard Worker    store <2 x i64> %4, <2 x i64>* %q
879*9880d681SAndroid Build Coastguard Worker    ret void
880*9880d681SAndroid Build Coastguard Worker}
881*9880d681SAndroid Build Coastguard Worker
882*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v4f32_f128:
883*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @test_v4f32_f128_helper(fp128 %p)
884*9880d681SAndroid Build Coastguard Workerdefine void @test_v4f32_f128(fp128* %p, <4 x float>* %q) {
885*9880d681SAndroid Build Coastguard Worker; CHECK: rev64 v{{[0-9]+}}.4s
886*9880d681SAndroid Build Coastguard Worker; CHECK: ext
887*9880d681SAndroid Build Coastguard Worker    %1 = load fp128, fp128* %p
888*9880d681SAndroid Build Coastguard Worker    %2 = fadd fp128 %1, %1
889*9880d681SAndroid Build Coastguard Worker    %3 = call <4 x float> @test_v4f32_f128_helper(fp128 %2)
890*9880d681SAndroid Build Coastguard Worker    br label %return_bb
891*9880d681SAndroid Build Coastguard Workerreturn_bb:
892*9880d681SAndroid Build Coastguard Worker    %4 = fadd <4 x float> %3, %3
893*9880d681SAndroid Build Coastguard Worker    store <4 x float> %4, <4 x float>* %q
894*9880d681SAndroid Build Coastguard Worker    ret void
895*9880d681SAndroid Build Coastguard Worker}
896*9880d681SAndroid Build Coastguard Worker
897*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v4f32_v2f64:
898*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @test_v4f32_v2f64_helper(<2 x double> %p)
899*9880d681SAndroid Build Coastguard Workerdefine void @test_v4f32_v2f64(<2 x double>* %p, <4 x float>* %q) {
900*9880d681SAndroid Build Coastguard Worker; CHECK: ext
901*9880d681SAndroid Build Coastguard Worker; CHECK: rev64 v{{[0-9]+}}.4s
902*9880d681SAndroid Build Coastguard Worker; CHECK: ext
903*9880d681SAndroid Build Coastguard Worker    %1 = load <2 x double>, <2 x double>* %p
904*9880d681SAndroid Build Coastguard Worker    %2 = fadd <2 x double> %1, %1
905*9880d681SAndroid Build Coastguard Worker    %3 = call <4 x float> @test_v4f32_v2f64_helper(<2 x double> %2)
906*9880d681SAndroid Build Coastguard Worker    br label %return_bb
907*9880d681SAndroid Build Coastguard Workerreturn_bb:
908*9880d681SAndroid Build Coastguard Worker    %4 = fadd <4 x float> %3, %3
909*9880d681SAndroid Build Coastguard Worker    store <4 x float> %4, <4 x float>* %q
910*9880d681SAndroid Build Coastguard Worker    ret void
911*9880d681SAndroid Build Coastguard Worker}
912*9880d681SAndroid Build Coastguard Worker
913*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v4f32_v2i64:
914*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @test_v4f32_v2i64_helper(<2 x i64> %p)
915*9880d681SAndroid Build Coastguard Workerdefine void @test_v4f32_v2i64(<2 x i64>* %p, <4 x float>* %q) {
916*9880d681SAndroid Build Coastguard Worker; CHECK: ext
917*9880d681SAndroid Build Coastguard Worker; CHECK: rev64 v{{[0-9]+}}.4s
918*9880d681SAndroid Build Coastguard Worker; CHECK: ext
919*9880d681SAndroid Build Coastguard Worker    %1 = load <2 x i64>, <2 x i64>* %p
920*9880d681SAndroid Build Coastguard Worker    %2 = add <2 x i64> %1, %1
921*9880d681SAndroid Build Coastguard Worker    %3 = call <4 x float> @test_v4f32_v2i64_helper(<2 x i64> %2)
922*9880d681SAndroid Build Coastguard Worker    br label %return_bb
923*9880d681SAndroid Build Coastguard Workerreturn_bb:
924*9880d681SAndroid Build Coastguard Worker    %4 = fadd <4 x float> %3, %3
925*9880d681SAndroid Build Coastguard Worker    store <4 x float> %4, <4 x float>* %q
926*9880d681SAndroid Build Coastguard Worker    ret void
927*9880d681SAndroid Build Coastguard Worker}
928*9880d681SAndroid Build Coastguard Worker
929*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v4f32_v4i32:
930*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @test_v4f32_v4i32_helper(<4 x i32> %p)
931*9880d681SAndroid Build Coastguard Workerdefine void @test_v4f32_v4i32(<4 x i32>* %p, <4 x float>* %q) {
932*9880d681SAndroid Build Coastguard Worker; CHECK: rev64 v{{[0-9]+}}.4s
933*9880d681SAndroid Build Coastguard Worker; CHECK: ext
934*9880d681SAndroid Build Coastguard Worker; CHECK: rev64 v{{[0-9]+}}.4s
935*9880d681SAndroid Build Coastguard Worker; CHECK: ext
936*9880d681SAndroid Build Coastguard Worker    %1 = load <4 x i32>, <4 x i32>* %p
937*9880d681SAndroid Build Coastguard Worker    %2 = add <4 x i32> %1, %1
938*9880d681SAndroid Build Coastguard Worker    %3 = call <4 x float> @test_v4f32_v4i32_helper(<4 x i32> %2)
939*9880d681SAndroid Build Coastguard Worker    br label %return_bb
940*9880d681SAndroid Build Coastguard Workerreturn_bb:
941*9880d681SAndroid Build Coastguard Worker    %4 = fadd <4 x float> %3, %3
942*9880d681SAndroid Build Coastguard Worker    store <4 x float> %4, <4 x float>* %q
943*9880d681SAndroid Build Coastguard Worker    ret void
944*9880d681SAndroid Build Coastguard Worker}
945*9880d681SAndroid Build Coastguard Worker
946*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v4f32_v8i16:
947*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @test_v4f32_v8i16_helper(<8 x i16> %p)
948*9880d681SAndroid Build Coastguard Workerdefine void @test_v4f32_v8i16(<8 x i16>* %p, <4 x float>* %q) {
949*9880d681SAndroid Build Coastguard Worker; CHECK: rev64 v{{[0-9]+}}.8h
950*9880d681SAndroid Build Coastguard Worker; CHECK: ext
951*9880d681SAndroid Build Coastguard Worker; CHECK: rev64 v{{[0-9]+}}.4s
952*9880d681SAndroid Build Coastguard Worker; CHECK: ext
953*9880d681SAndroid Build Coastguard Worker    %1 = load <8 x i16>, <8 x i16>* %p
954*9880d681SAndroid Build Coastguard Worker    %2 = add <8 x i16> %1, %1
955*9880d681SAndroid Build Coastguard Worker    %3 = call <4 x float> @test_v4f32_v8i16_helper(<8 x i16> %2)
956*9880d681SAndroid Build Coastguard Worker    br label %return_bb
957*9880d681SAndroid Build Coastguard Workerreturn_bb:
958*9880d681SAndroid Build Coastguard Worker    %4 = fadd <4 x float> %3, %3
959*9880d681SAndroid Build Coastguard Worker    store <4 x float> %4, <4 x float>* %q
960*9880d681SAndroid Build Coastguard Worker    ret void
961*9880d681SAndroid Build Coastguard Worker}
962*9880d681SAndroid Build Coastguard Worker
963*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v4f32_v16i8:
964*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @test_v4f32_v16i8_helper(<16 x i8> %p)
965*9880d681SAndroid Build Coastguard Workerdefine void @test_v4f32_v16i8(<16 x i8>* %p, <4 x float>* %q) {
966*9880d681SAndroid Build Coastguard Worker; CHECK: rev64 v{{[0-9]+}}.16b
967*9880d681SAndroid Build Coastguard Worker; CHECK: ext
968*9880d681SAndroid Build Coastguard Worker; CHECK: rev64 v{{[0-9]+}}.4s
969*9880d681SAndroid Build Coastguard Worker; CHECK: ext
970*9880d681SAndroid Build Coastguard Worker    %1 = load <16 x i8>, <16 x i8>* %p
971*9880d681SAndroid Build Coastguard Worker    %2 = add <16 x i8> %1, %1
972*9880d681SAndroid Build Coastguard Worker    %3 = call <4 x float> @test_v4f32_v16i8_helper(<16 x i8> %2)
973*9880d681SAndroid Build Coastguard Worker    br label %return_bb
974*9880d681SAndroid Build Coastguard Workerreturn_bb:
975*9880d681SAndroid Build Coastguard Worker    %4 = fadd <4 x float> %3, %3
976*9880d681SAndroid Build Coastguard Worker    store <4 x float> %4, <4 x float>* %q
977*9880d681SAndroid Build Coastguard Worker    ret void
978*9880d681SAndroid Build Coastguard Worker}
979*9880d681SAndroid Build Coastguard Worker
980*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v4i32_f128:
981*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @test_v4i32_f128_helper(fp128 %p)
982*9880d681SAndroid Build Coastguard Workerdefine void @test_v4i32_f128(fp128* %p, <4 x i32>* %q) {
983*9880d681SAndroid Build Coastguard Worker; CHECK: rev64 v{{[0-9]+}}.4s
984*9880d681SAndroid Build Coastguard Worker; CHECK: ext
985*9880d681SAndroid Build Coastguard Worker    %1 = load fp128, fp128* %p
986*9880d681SAndroid Build Coastguard Worker    %2 = fadd fp128 %1, %1
987*9880d681SAndroid Build Coastguard Worker    %3 = call <4 x i32> @test_v4i32_f128_helper(fp128 %2)
988*9880d681SAndroid Build Coastguard Worker    br label %return_bb
989*9880d681SAndroid Build Coastguard Workerreturn_bb:
990*9880d681SAndroid Build Coastguard Worker    %4 = add <4 x i32> %3, %3
991*9880d681SAndroid Build Coastguard Worker    store <4 x i32> %4, <4 x i32>* %q
992*9880d681SAndroid Build Coastguard Worker    ret void
993*9880d681SAndroid Build Coastguard Worker}
994*9880d681SAndroid Build Coastguard Worker
995*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v4i32_v2f64:
996*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @test_v4i32_v2f64_helper(<2 x double> %p)
997*9880d681SAndroid Build Coastguard Workerdefine void @test_v4i32_v2f64(<2 x double>* %p, <4 x i32>* %q) {
998*9880d681SAndroid Build Coastguard Worker; CHECK: ext
999*9880d681SAndroid Build Coastguard Worker; CHECK: rev64 v{{[0-9]+}}.4s
1000*9880d681SAndroid Build Coastguard Worker; CHECK: ext
1001*9880d681SAndroid Build Coastguard Worker    %1 = load <2 x double>, <2 x double>* %p
1002*9880d681SAndroid Build Coastguard Worker    %2 = fadd <2 x double> %1, %1
1003*9880d681SAndroid Build Coastguard Worker    %3 = call <4 x i32> @test_v4i32_v2f64_helper(<2 x double> %2)
1004*9880d681SAndroid Build Coastguard Worker    br label %return_bb
1005*9880d681SAndroid Build Coastguard Workerreturn_bb:
1006*9880d681SAndroid Build Coastguard Worker    %4 = add <4 x i32> %3, %3
1007*9880d681SAndroid Build Coastguard Worker    store <4 x i32> %4, <4 x i32>* %q
1008*9880d681SAndroid Build Coastguard Worker    ret void
1009*9880d681SAndroid Build Coastguard Worker}
1010*9880d681SAndroid Build Coastguard Worker
1011*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v4i32_v2i64:
1012*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @test_v4i32_v2i64_helper(<2 x i64> %p)
1013*9880d681SAndroid Build Coastguard Workerdefine void @test_v4i32_v2i64(<2 x i64>* %p, <4 x i32>* %q) {
1014*9880d681SAndroid Build Coastguard Worker; CHECK: ext
1015*9880d681SAndroid Build Coastguard Worker; CHECK: rev64 v{{[0-9]+}}.4s
1016*9880d681SAndroid Build Coastguard Worker; CHECK: ext
1017*9880d681SAndroid Build Coastguard Worker    %1 = load <2 x i64>, <2 x i64>* %p
1018*9880d681SAndroid Build Coastguard Worker    %2 = add <2 x i64> %1, %1
1019*9880d681SAndroid Build Coastguard Worker    %3 = call <4 x i32> @test_v4i32_v2i64_helper(<2 x i64> %2)
1020*9880d681SAndroid Build Coastguard Worker    br label %return_bb
1021*9880d681SAndroid Build Coastguard Workerreturn_bb:
1022*9880d681SAndroid Build Coastguard Worker    %4 = add <4 x i32> %3, %3
1023*9880d681SAndroid Build Coastguard Worker    store <4 x i32> %4, <4 x i32>* %q
1024*9880d681SAndroid Build Coastguard Worker    ret void
1025*9880d681SAndroid Build Coastguard Worker}
1026*9880d681SAndroid Build Coastguard Worker
1027*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v4i32_v4f32:
1028*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @test_v4i32_v4f32_helper(<4 x float> %p)
1029*9880d681SAndroid Build Coastguard Workerdefine void @test_v4i32_v4f32(<4 x float>* %p, <4 x i32>* %q) {
1030*9880d681SAndroid Build Coastguard Worker; CHECK: rev64 v{{[0-9]+}}.4s
1031*9880d681SAndroid Build Coastguard Worker; CHECK: ext
1032*9880d681SAndroid Build Coastguard Worker; CHECK: rev64 v{{[0-9]+}}.4s
1033*9880d681SAndroid Build Coastguard Worker; CHECK: ext
1034*9880d681SAndroid Build Coastguard Worker    %1 = load <4 x float>, <4 x float>* %p
1035*9880d681SAndroid Build Coastguard Worker    %2 = fadd <4 x float> %1, %1
1036*9880d681SAndroid Build Coastguard Worker    %3 = call <4 x i32> @test_v4i32_v4f32_helper(<4 x float> %2)
1037*9880d681SAndroid Build Coastguard Worker    br label %return_bb
1038*9880d681SAndroid Build Coastguard Workerreturn_bb:
1039*9880d681SAndroid Build Coastguard Worker    %4 = add <4 x i32> %3, %3
1040*9880d681SAndroid Build Coastguard Worker    store <4 x i32> %4, <4 x i32>* %q
1041*9880d681SAndroid Build Coastguard Worker    ret void
1042*9880d681SAndroid Build Coastguard Worker}
1043*9880d681SAndroid Build Coastguard Worker
1044*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v4i32_v8i16:
1045*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @test_v4i32_v8i16_helper(<8 x i16> %p)
1046*9880d681SAndroid Build Coastguard Workerdefine void @test_v4i32_v8i16(<8 x i16>* %p, <4 x i32>* %q) {
1047*9880d681SAndroid Build Coastguard Worker; CHECK: rev64 v{{[0-9]+}}.8h
1048*9880d681SAndroid Build Coastguard Worker; CHECK: ext
1049*9880d681SAndroid Build Coastguard Worker; CHECK: rev64 v{{[0-9]+}}.4s
1050*9880d681SAndroid Build Coastguard Worker; CHECK: ext
1051*9880d681SAndroid Build Coastguard Worker    %1 = load <8 x i16>, <8 x i16>* %p
1052*9880d681SAndroid Build Coastguard Worker    %2 = add <8 x i16> %1, %1
1053*9880d681SAndroid Build Coastguard Worker    %3 = call <4 x i32> @test_v4i32_v8i16_helper(<8 x i16> %2)
1054*9880d681SAndroid Build Coastguard Worker    br label %return_bb
1055*9880d681SAndroid Build Coastguard Workerreturn_bb:
1056*9880d681SAndroid Build Coastguard Worker    %4 = add <4 x i32> %3, %3
1057*9880d681SAndroid Build Coastguard Worker    store <4 x i32> %4, <4 x i32>* %q
1058*9880d681SAndroid Build Coastguard Worker    ret void
1059*9880d681SAndroid Build Coastguard Worker}
1060*9880d681SAndroid Build Coastguard Worker
1061*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v4i32_v16i8:
1062*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @test_v4i32_v16i8_helper(<16 x i8> %p)
1063*9880d681SAndroid Build Coastguard Workerdefine void @test_v4i32_v16i8(<16 x i8>* %p, <4 x i32>* %q) {
1064*9880d681SAndroid Build Coastguard Worker; CHECK: rev64 v{{[0-9]+}}.16b
1065*9880d681SAndroid Build Coastguard Worker; CHECK: ext
1066*9880d681SAndroid Build Coastguard Worker; CHECK: rev64 v{{[0-9]+}}.4s
1067*9880d681SAndroid Build Coastguard Worker; CHECK: ext
1068*9880d681SAndroid Build Coastguard Worker    %1 = load <16 x i8>, <16 x i8>* %p
1069*9880d681SAndroid Build Coastguard Worker    %2 = add <16 x i8> %1, %1
1070*9880d681SAndroid Build Coastguard Worker    %3 = call <4 x i32> @test_v4i32_v16i8_helper(<16 x i8> %2)
1071*9880d681SAndroid Build Coastguard Worker    br label %return_bb
1072*9880d681SAndroid Build Coastguard Workerreturn_bb:
1073*9880d681SAndroid Build Coastguard Worker    %4 = add <4 x i32> %3, %3
1074*9880d681SAndroid Build Coastguard Worker    store <4 x i32> %4, <4 x i32>* %q
1075*9880d681SAndroid Build Coastguard Worker    ret void
1076*9880d681SAndroid Build Coastguard Worker}
1077*9880d681SAndroid Build Coastguard Worker
1078*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v8i16_f128:
1079*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @test_v8i16_f128_helper(fp128 %p)
1080*9880d681SAndroid Build Coastguard Workerdefine void @test_v8i16_f128(fp128* %p, <8 x i16>* %q) {
1081*9880d681SAndroid Build Coastguard Worker; CHECK: rev64 v{{[0-9]+}}.8h
1082*9880d681SAndroid Build Coastguard Worker; CHECK: ext
1083*9880d681SAndroid Build Coastguard Worker    %1 = load fp128, fp128* %p
1084*9880d681SAndroid Build Coastguard Worker    %2 = fadd fp128 %1, %1
1085*9880d681SAndroid Build Coastguard Worker    %3 = call <8 x i16> @test_v8i16_f128_helper(fp128 %2)
1086*9880d681SAndroid Build Coastguard Worker    br label %return_bb
1087*9880d681SAndroid Build Coastguard Workerreturn_bb:
1088*9880d681SAndroid Build Coastguard Worker    %4 = add <8 x i16> %3, %3
1089*9880d681SAndroid Build Coastguard Worker    store <8 x i16> %4, <8 x i16>* %q
1090*9880d681SAndroid Build Coastguard Worker    ret void
1091*9880d681SAndroid Build Coastguard Worker}
1092*9880d681SAndroid Build Coastguard Worker
1093*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v8i16_v2f64:
1094*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @test_v8i16_v2f64_helper(<2 x double> %p)
1095*9880d681SAndroid Build Coastguard Workerdefine void @test_v8i16_v2f64(<2 x double>* %p, <8 x i16>* %q) {
1096*9880d681SAndroid Build Coastguard Worker; CHECK: ext
1097*9880d681SAndroid Build Coastguard Worker; CHECK: rev64 v{{[0-9]+}}.8h
1098*9880d681SAndroid Build Coastguard Worker; CHECK: ext
1099*9880d681SAndroid Build Coastguard Worker    %1 = load <2 x double>, <2 x double>* %p
1100*9880d681SAndroid Build Coastguard Worker    %2 = fadd <2 x double> %1, %1
1101*9880d681SAndroid Build Coastguard Worker    %3 = call <8 x i16> @test_v8i16_v2f64_helper(<2 x double> %2)
1102*9880d681SAndroid Build Coastguard Worker    br label %return_bb
1103*9880d681SAndroid Build Coastguard Workerreturn_bb:
1104*9880d681SAndroid Build Coastguard Worker    %4 = add <8 x i16> %3, %3
1105*9880d681SAndroid Build Coastguard Worker    store <8 x i16> %4, <8 x i16>* %q
1106*9880d681SAndroid Build Coastguard Worker    ret void
1107*9880d681SAndroid Build Coastguard Worker}
1108*9880d681SAndroid Build Coastguard Worker
1109*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v8i16_v2i64:
1110*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @test_v8i16_v2i64_helper(<2 x i64> %p)
1111*9880d681SAndroid Build Coastguard Workerdefine void @test_v8i16_v2i64(<2 x i64>* %p, <8 x i16>* %q) {
1112*9880d681SAndroid Build Coastguard Worker; CHECK: ext
1113*9880d681SAndroid Build Coastguard Worker; CHECK: rev64 v{{[0-9]+}}.8h
1114*9880d681SAndroid Build Coastguard Worker; CHECK: ext
1115*9880d681SAndroid Build Coastguard Worker    %1 = load <2 x i64>, <2 x i64>* %p
1116*9880d681SAndroid Build Coastguard Worker    %2 = add <2 x i64> %1, %1
1117*9880d681SAndroid Build Coastguard Worker    %3 = call <8 x i16> @test_v8i16_v2i64_helper(<2 x i64> %2)
1118*9880d681SAndroid Build Coastguard Worker    br label %return_bb
1119*9880d681SAndroid Build Coastguard Workerreturn_bb:
1120*9880d681SAndroid Build Coastguard Worker    %4 = add <8 x i16> %3, %3
1121*9880d681SAndroid Build Coastguard Worker    store <8 x i16> %4, <8 x i16>* %q
1122*9880d681SAndroid Build Coastguard Worker    ret void
1123*9880d681SAndroid Build Coastguard Worker}
1124*9880d681SAndroid Build Coastguard Worker
1125*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v8i16_v4f32:
1126*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @test_v8i16_v4f32_helper(<4 x float> %p)
1127*9880d681SAndroid Build Coastguard Workerdefine void @test_v8i16_v4f32(<4 x float>* %p, <8 x i16>* %q) {
1128*9880d681SAndroid Build Coastguard Worker; CHECK: rev64 v{{[0-9]+}}.4s
1129*9880d681SAndroid Build Coastguard Worker; CHECK: ext
1130*9880d681SAndroid Build Coastguard Worker; CHECK: rev64 v{{[0-9]+}}.8h
1131*9880d681SAndroid Build Coastguard Worker; CHECK: ext
1132*9880d681SAndroid Build Coastguard Worker    %1 = load <4 x float>, <4 x float>* %p
1133*9880d681SAndroid Build Coastguard Worker    %2 = fadd <4 x float> %1, %1
1134*9880d681SAndroid Build Coastguard Worker    %3 = call <8 x i16> @test_v8i16_v4f32_helper(<4 x float> %2)
1135*9880d681SAndroid Build Coastguard Worker    br label %return_bb
1136*9880d681SAndroid Build Coastguard Workerreturn_bb:
1137*9880d681SAndroid Build Coastguard Worker    %4 = add <8 x i16> %3, %3
1138*9880d681SAndroid Build Coastguard Worker    store <8 x i16> %4, <8 x i16>* %q
1139*9880d681SAndroid Build Coastguard Worker    ret void
1140*9880d681SAndroid Build Coastguard Worker}
1141*9880d681SAndroid Build Coastguard Worker
1142*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v8i16_v4i32:
1143*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @test_v8i16_v4i32_helper(<4 x i32> %p)
1144*9880d681SAndroid Build Coastguard Workerdefine void @test_v8i16_v4i32(<4 x i32>* %p, <8 x i16>* %q) {
1145*9880d681SAndroid Build Coastguard Worker; CHECK: rev64 v{{[0-9]+}}.4s
1146*9880d681SAndroid Build Coastguard Worker; CHECK: ext
1147*9880d681SAndroid Build Coastguard Worker; CHECK: rev64 v{{[0-9]+}}.8h
1148*9880d681SAndroid Build Coastguard Worker; CHECK: ext
1149*9880d681SAndroid Build Coastguard Worker    %1 = load <4 x i32>, <4 x i32>* %p
1150*9880d681SAndroid Build Coastguard Worker    %2 = add <4 x i32> %1, %1
1151*9880d681SAndroid Build Coastguard Worker    %3 = call <8 x i16> @test_v8i16_v4i32_helper(<4 x i32> %2)
1152*9880d681SAndroid Build Coastguard Worker    br label %return_bb
1153*9880d681SAndroid Build Coastguard Workerreturn_bb:
1154*9880d681SAndroid Build Coastguard Worker    %4 = add <8 x i16> %3, %3
1155*9880d681SAndroid Build Coastguard Worker    store <8 x i16> %4, <8 x i16>* %q
1156*9880d681SAndroid Build Coastguard Worker    ret void
1157*9880d681SAndroid Build Coastguard Worker}
1158*9880d681SAndroid Build Coastguard Worker
1159*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v8i16_v16i8:
1160*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @test_v8i16_v16i8_helper(<16 x i8> %p)
1161*9880d681SAndroid Build Coastguard Workerdefine void @test_v8i16_v16i8(<16 x i8>* %p, <8 x i16>* %q) {
1162*9880d681SAndroid Build Coastguard Worker; CHECK: rev64 v{{[0-9]+}}.16b
1163*9880d681SAndroid Build Coastguard Worker; CHECK: ext
1164*9880d681SAndroid Build Coastguard Worker; CHECK: rev64 v{{[0-9]+}}.8h
1165*9880d681SAndroid Build Coastguard Worker; CHECK: ext
1166*9880d681SAndroid Build Coastguard Worker    %1 = load <16 x i8>, <16 x i8>* %p
1167*9880d681SAndroid Build Coastguard Worker    %2 = add <16 x i8> %1, %1
1168*9880d681SAndroid Build Coastguard Worker    %3 = call <8 x i16> @test_v8i16_v16i8_helper(<16 x i8> %2)
1169*9880d681SAndroid Build Coastguard Worker    br label %return_bb
1170*9880d681SAndroid Build Coastguard Workerreturn_bb:
1171*9880d681SAndroid Build Coastguard Worker    %4 = add <8 x i16> %3, %3
1172*9880d681SAndroid Build Coastguard Worker    store <8 x i16> %4, <8 x i16>* %q
1173*9880d681SAndroid Build Coastguard Worker    ret void
1174*9880d681SAndroid Build Coastguard Worker}
1175*9880d681SAndroid Build Coastguard Worker
1176*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v16i8_f128:
1177*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @test_v16i8_f128_helper(fp128 %p)
1178*9880d681SAndroid Build Coastguard Workerdefine void @test_v16i8_f128(fp128* %p, <16 x i8>* %q) {
1179*9880d681SAndroid Build Coastguard Worker; CHECK: rev64 v{{[0-9]+}}.16b
1180*9880d681SAndroid Build Coastguard Worker; CHECK: ext
1181*9880d681SAndroid Build Coastguard Worker    %1 = load fp128, fp128* %p
1182*9880d681SAndroid Build Coastguard Worker    %2 = fadd fp128 %1, %1
1183*9880d681SAndroid Build Coastguard Worker    %3 = call <16 x i8> @test_v16i8_f128_helper(fp128 %2)
1184*9880d681SAndroid Build Coastguard Worker    br label %return_bb
1185*9880d681SAndroid Build Coastguard Workerreturn_bb:
1186*9880d681SAndroid Build Coastguard Worker    %4 = add <16 x i8> %3, %3
1187*9880d681SAndroid Build Coastguard Worker    store <16 x i8> %4, <16 x i8>* %q
1188*9880d681SAndroid Build Coastguard Worker    ret void
1189*9880d681SAndroid Build Coastguard Worker}
1190*9880d681SAndroid Build Coastguard Worker
1191*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v16i8_v2f64:
1192*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @test_v16i8_v2f64_helper(<2 x double> %p)
1193*9880d681SAndroid Build Coastguard Workerdefine void @test_v16i8_v2f64(<2 x double>* %p, <16 x i8>* %q) {
1194*9880d681SAndroid Build Coastguard Worker; CHECK: ext
1195*9880d681SAndroid Build Coastguard Worker; CHECK: rev64 v{{[0-9]+}}.16b
1196*9880d681SAndroid Build Coastguard Worker; CHECK: ext
1197*9880d681SAndroid Build Coastguard Worker    %1 = load <2 x double>, <2 x double>* %p
1198*9880d681SAndroid Build Coastguard Worker    %2 = fadd <2 x double> %1, %1
1199*9880d681SAndroid Build Coastguard Worker    %3 = call <16 x i8> @test_v16i8_v2f64_helper(<2 x double> %2)
1200*9880d681SAndroid Build Coastguard Worker    br label %return_bb
1201*9880d681SAndroid Build Coastguard Workerreturn_bb:
1202*9880d681SAndroid Build Coastguard Worker    %4 = add <16 x i8> %3, %3
1203*9880d681SAndroid Build Coastguard Worker    store <16 x i8> %4, <16 x i8>* %q
1204*9880d681SAndroid Build Coastguard Worker    ret void
1205*9880d681SAndroid Build Coastguard Worker}
1206*9880d681SAndroid Build Coastguard Worker
1207*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v16i8_v2i64:
1208*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @test_v16i8_v2i64_helper(<2 x i64> %p)
1209*9880d681SAndroid Build Coastguard Workerdefine void @test_v16i8_v2i64(<2 x i64>* %p, <16 x i8>* %q) {
1210*9880d681SAndroid Build Coastguard Worker; CHECK: ext
1211*9880d681SAndroid Build Coastguard Worker; CHECK: rev64 v{{[0-9]+}}.16b
1212*9880d681SAndroid Build Coastguard Worker; CHECK: ext
1213*9880d681SAndroid Build Coastguard Worker    %1 = load <2 x i64>, <2 x i64>* %p
1214*9880d681SAndroid Build Coastguard Worker    %2 = add <2 x i64> %1, %1
1215*9880d681SAndroid Build Coastguard Worker    %3 = call <16 x i8> @test_v16i8_v2i64_helper(<2 x i64> %2)
1216*9880d681SAndroid Build Coastguard Worker    br label %return_bb
1217*9880d681SAndroid Build Coastguard Workerreturn_bb:
1218*9880d681SAndroid Build Coastguard Worker    %4 = add <16 x i8> %3, %3
1219*9880d681SAndroid Build Coastguard Worker    store <16 x i8> %4, <16 x i8>* %q
1220*9880d681SAndroid Build Coastguard Worker    ret void
1221*9880d681SAndroid Build Coastguard Worker}
1222*9880d681SAndroid Build Coastguard Worker
1223*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v16i8_v4f32:
1224*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @test_v16i8_v4f32_helper(<4 x float> %p)
1225*9880d681SAndroid Build Coastguard Workerdefine void @test_v16i8_v4f32(<4 x float>* %p, <16 x i8>* %q) {
1226*9880d681SAndroid Build Coastguard Worker; CHECK: rev64 v{{[0-9]+}}.4s
1227*9880d681SAndroid Build Coastguard Worker; CHECK: ext
1228*9880d681SAndroid Build Coastguard Worker; CHECK: rev64 v{{[0-9]+}}.16b
1229*9880d681SAndroid Build Coastguard Worker; CHECK: ext
1230*9880d681SAndroid Build Coastguard Worker    %1 = load <4 x float>, <4 x float>* %p
1231*9880d681SAndroid Build Coastguard Worker    %2 = fadd <4 x float> %1, %1
1232*9880d681SAndroid Build Coastguard Worker    %3 = call <16 x i8> @test_v16i8_v4f32_helper(<4 x float> %2)
1233*9880d681SAndroid Build Coastguard Worker    br label %return_bb
1234*9880d681SAndroid Build Coastguard Workerreturn_bb:
1235*9880d681SAndroid Build Coastguard Worker    %4 = add <16 x i8> %3, %3
1236*9880d681SAndroid Build Coastguard Worker    store <16 x i8> %4, <16 x i8>* %q
1237*9880d681SAndroid Build Coastguard Worker    ret void
1238*9880d681SAndroid Build Coastguard Worker}
1239*9880d681SAndroid Build Coastguard Worker
1240*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v16i8_v4i32:
1241*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @test_v16i8_v4i32_helper(<4 x i32> %p)
1242*9880d681SAndroid Build Coastguard Workerdefine void @test_v16i8_v4i32(<4 x i32>* %p, <16 x i8>* %q) {
1243*9880d681SAndroid Build Coastguard Worker; CHECK: rev64 v{{[0-9]+}}.4s
1244*9880d681SAndroid Build Coastguard Worker; CHECK: ext
1245*9880d681SAndroid Build Coastguard Worker; CHECK: rev64 v{{[0-9]+}}.16b
1246*9880d681SAndroid Build Coastguard Worker; CHECK: ext
1247*9880d681SAndroid Build Coastguard Worker    %1 = load <4 x i32>, <4 x i32>* %p
1248*9880d681SAndroid Build Coastguard Worker    %2 = add <4 x i32> %1, %1
1249*9880d681SAndroid Build Coastguard Worker    %3 = call <16 x i8> @test_v16i8_v4i32_helper(<4 x i32> %2)
1250*9880d681SAndroid Build Coastguard Worker    br label %return_bb
1251*9880d681SAndroid Build Coastguard Workerreturn_bb:
1252*9880d681SAndroid Build Coastguard Worker    %4 = add <16 x i8> %3, %3
1253*9880d681SAndroid Build Coastguard Worker    store <16 x i8> %4, <16 x i8>* %q
1254*9880d681SAndroid Build Coastguard Worker    ret void
1255*9880d681SAndroid Build Coastguard Worker}
1256*9880d681SAndroid Build Coastguard Worker
1257*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v16i8_v8i16:
1258*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @test_v16i8_v8i16_helper(<8 x i16> %p)
1259*9880d681SAndroid Build Coastguard Workerdefine void @test_v16i8_v8i16(<8 x i16>* %p, <16 x i8>* %q) {
1260*9880d681SAndroid Build Coastguard Worker; CHECK: rev64 v{{[0-9]+}}.8h
1261*9880d681SAndroid Build Coastguard Worker; CHECK: ext
1262*9880d681SAndroid Build Coastguard Worker; CHECK: rev64 v{{[0-9]+}}.16b
1263*9880d681SAndroid Build Coastguard Worker; CHECK: ext
1264*9880d681SAndroid Build Coastguard Worker    %1 = load <8 x i16>, <8 x i16>* %p
1265*9880d681SAndroid Build Coastguard Worker    %2 = add <8 x i16> %1, %1
1266*9880d681SAndroid Build Coastguard Worker    %3 = call <16 x i8> @test_v16i8_v8i16_helper(<8 x i16> %2)
1267*9880d681SAndroid Build Coastguard Worker    br label %return_bb
1268*9880d681SAndroid Build Coastguard Workerreturn_bb:
1269*9880d681SAndroid Build Coastguard Worker    %4 = add <16 x i8> %3, %3
1270*9880d681SAndroid Build Coastguard Worker    store <16 x i8> %4, <16 x i8>* %q
1271*9880d681SAndroid Build Coastguard Worker    ret void
1272*9880d681SAndroid Build Coastguard Worker}
1273