xref: /aosp_15_r20/external/llvm/test/CodeGen/X86/avx-intrinsics-fast-isel.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -fast-isel -mtriple=i386-unknown-unknown -mattr=avx,aes,pclmul | FileCheck %s --check-prefix=ALL --check-prefix=X32
3*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -fast-isel -mtriple=x86_64-unknown-unknown -mattr=avx,aes,pclmul | FileCheck %s --check-prefix=ALL --check-prefix=X64
4*9880d681SAndroid Build Coastguard Worker
5*9880d681SAndroid Build Coastguard Worker; NOTE: This should use IR equivalent to what is generated by clang/test/CodeGen/avx-builtins.c
6*9880d681SAndroid Build Coastguard Worker
7*9880d681SAndroid Build Coastguard Workerdefine <4 x double> @test_mm256_add_pd(<4 x double> %a0, <4 x double> %a1) nounwind {
8*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_add_pd:
9*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
10*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vaddpd %ymm1, %ymm0, %ymm0
11*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
12*9880d681SAndroid Build Coastguard Worker;
13*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_add_pd:
14*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
15*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vaddpd %ymm1, %ymm0, %ymm0
16*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
17*9880d681SAndroid Build Coastguard Worker  %res = fadd <4 x double> %a0, %a1
18*9880d681SAndroid Build Coastguard Worker  ret <4 x double> %res
19*9880d681SAndroid Build Coastguard Worker}
20*9880d681SAndroid Build Coastguard Worker
21*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @test_mm256_add_ps(<8 x float> %a0, <8 x float> %a1) nounwind {
22*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_add_ps:
23*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
24*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vaddps %ymm1, %ymm0, %ymm0
25*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
26*9880d681SAndroid Build Coastguard Worker;
27*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_add_ps:
28*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
29*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vaddps %ymm1, %ymm0, %ymm0
30*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
31*9880d681SAndroid Build Coastguard Worker  %res = fadd <8 x float> %a0, %a1
32*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %res
33*9880d681SAndroid Build Coastguard Worker}
34*9880d681SAndroid Build Coastguard Worker
35*9880d681SAndroid Build Coastguard Workerdefine <4 x double> @test_mm256_addsub_pd(<4 x double> %a0, <4 x double> %a1) nounwind {
36*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_addsub_pd:
37*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
38*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vaddsubpd %ymm1, %ymm0, %ymm0
39*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
40*9880d681SAndroid Build Coastguard Worker;
41*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_addsub_pd:
42*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
43*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vaddsubpd %ymm1, %ymm0, %ymm0
44*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
45*9880d681SAndroid Build Coastguard Worker  %res = call <4 x double> @llvm.x86.avx.addsub.pd.256(<4 x double> %a0, <4 x double> %a1)
46*9880d681SAndroid Build Coastguard Worker  ret <4 x double> %res
47*9880d681SAndroid Build Coastguard Worker}
48*9880d681SAndroid Build Coastguard Workerdeclare <4 x double> @llvm.x86.avx.addsub.pd.256(<4 x double>, <4 x double>) nounwind readnone
49*9880d681SAndroid Build Coastguard Worker
50*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @test_mm256_addsub_ps(<8 x float> %a0, <8 x float> %a1) nounwind {
51*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_addsub_ps:
52*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
53*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vaddsubps %ymm1, %ymm0, %ymm0
54*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
55*9880d681SAndroid Build Coastguard Worker;
56*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_addsub_ps:
57*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
58*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vaddsubps %ymm1, %ymm0, %ymm0
59*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
60*9880d681SAndroid Build Coastguard Worker  %res = call <8 x float> @llvm.x86.avx.addsub.ps.256(<8 x float> %a0, <8 x float> %a1)
61*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %res
62*9880d681SAndroid Build Coastguard Worker}
63*9880d681SAndroid Build Coastguard Workerdeclare <8 x float> @llvm.x86.avx.addsub.ps.256(<8 x float>, <8 x float>) nounwind readnone
64*9880d681SAndroid Build Coastguard Worker
65*9880d681SAndroid Build Coastguard Workerdefine <4 x double> @test_mm256_and_pd(<4 x double> %a0, <4 x double> %a1) nounwind {
66*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_and_pd:
67*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
68*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vandps %ymm1, %ymm0, %ymm0
69*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
70*9880d681SAndroid Build Coastguard Worker;
71*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_and_pd:
72*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
73*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vandps %ymm1, %ymm0, %ymm0
74*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
75*9880d681SAndroid Build Coastguard Worker  %1 = bitcast <4 x double> %a0 to <4 x i64>
76*9880d681SAndroid Build Coastguard Worker  %2 = bitcast <4 x double> %a1 to <4 x i64>
77*9880d681SAndroid Build Coastguard Worker  %res = and <4 x i64> %1, %2
78*9880d681SAndroid Build Coastguard Worker  %bc = bitcast <4 x i64> %res to <4 x double>
79*9880d681SAndroid Build Coastguard Worker  ret <4 x double> %bc
80*9880d681SAndroid Build Coastguard Worker}
81*9880d681SAndroid Build Coastguard Worker
82*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @test_mm256_and_ps(<8 x float> %a0, <8 x float> %a1) nounwind {
83*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_and_ps:
84*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
85*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vandps %ymm1, %ymm0, %ymm0
86*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
87*9880d681SAndroid Build Coastguard Worker;
88*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_and_ps:
89*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
90*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vandps %ymm1, %ymm0, %ymm0
91*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
92*9880d681SAndroid Build Coastguard Worker  %1 = bitcast <8 x float> %a0 to <8 x i32>
93*9880d681SAndroid Build Coastguard Worker  %2 = bitcast <8 x float> %a1 to <8 x i32>
94*9880d681SAndroid Build Coastguard Worker  %res = and <8 x i32> %1, %2
95*9880d681SAndroid Build Coastguard Worker  %bc = bitcast <8 x i32> %res to <8 x float>
96*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %bc
97*9880d681SAndroid Build Coastguard Worker}
98*9880d681SAndroid Build Coastguard Worker
99*9880d681SAndroid Build Coastguard Workerdefine <4 x double> @test_mm256_andnot_pd(<4 x double> %a0, <4 x double> %a1) nounwind {
100*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_andnot_pd:
101*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
102*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpcmpeqd %xmm2, %xmm2, %xmm2
103*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vinsertf128 $1, %xmm2, %ymm2, %ymm2
104*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vxorps %ymm2, %ymm0, %ymm0
105*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vandps %ymm1, %ymm0, %ymm0
106*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
107*9880d681SAndroid Build Coastguard Worker;
108*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_andnot_pd:
109*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
110*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vpcmpeqd %xmm2, %xmm2, %xmm2
111*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vinsertf128 $1, %xmm2, %ymm2, %ymm2
112*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vxorps %ymm2, %ymm0, %ymm0
113*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vandps %ymm1, %ymm0, %ymm0
114*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
115*9880d681SAndroid Build Coastguard Worker  %1 = bitcast <4 x double> %a0 to <4 x i64>
116*9880d681SAndroid Build Coastguard Worker  %2 = bitcast <4 x double> %a1 to <4 x i64>
117*9880d681SAndroid Build Coastguard Worker  %3 = xor <4 x i64> %1, <i64 -1, i64 -1, i64 -1, i64 -1>
118*9880d681SAndroid Build Coastguard Worker  %res = and <4 x i64> %3, %2
119*9880d681SAndroid Build Coastguard Worker  %bc = bitcast <4 x i64> %res to <4 x double>
120*9880d681SAndroid Build Coastguard Worker  ret <4 x double> %bc
121*9880d681SAndroid Build Coastguard Worker}
122*9880d681SAndroid Build Coastguard Worker
123*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @test_mm256_andnot_ps(<8 x float> %a0, <8 x float> %a1) nounwind {
124*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_andnot_ps:
125*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
126*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vandnps %ymm1, %ymm0, %ymm0
127*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
128*9880d681SAndroid Build Coastguard Worker;
129*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_andnot_ps:
130*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
131*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vandnps %ymm1, %ymm0, %ymm0
132*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
133*9880d681SAndroid Build Coastguard Worker  %1 = bitcast <8 x float> %a0 to <8 x i32>
134*9880d681SAndroid Build Coastguard Worker  %2 = bitcast <8 x float> %a1 to <8 x i32>
135*9880d681SAndroid Build Coastguard Worker  %3 = xor <8 x i32> %1, <i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1>
136*9880d681SAndroid Build Coastguard Worker  %res = and <8 x i32> %3, %2
137*9880d681SAndroid Build Coastguard Worker  %bc = bitcast <8 x i32> %res to <8 x float>
138*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %bc
139*9880d681SAndroid Build Coastguard Worker}
140*9880d681SAndroid Build Coastguard Worker
141*9880d681SAndroid Build Coastguard Workerdefine <4 x double> @test_mm256_blend_pd(<4 x double> %a0, <4 x double> %a1) nounwind {
142*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_blend_pd:
143*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
144*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vblendpd {{.*#+}} ymm0 = ymm0[0],ymm1[1,2],ymm0[3]
145*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
146*9880d681SAndroid Build Coastguard Worker;
147*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_blend_pd:
148*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
149*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vblendpd {{.*#+}} ymm0 = ymm0[0],ymm1[1,2],ymm0[3]
150*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
151*9880d681SAndroid Build Coastguard Worker  %res = shufflevector <4 x double> %a0, <4 x double> %a1, <4 x i32> <i32 0, i32 5, i32 6, i32 3>
152*9880d681SAndroid Build Coastguard Worker  ret <4 x double> %res
153*9880d681SAndroid Build Coastguard Worker}
154*9880d681SAndroid Build Coastguard Worker
155*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @test_mm256_blend_ps(<8 x float> %a0, <8 x float> %a1) nounwind {
156*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_blend_ps:
157*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
158*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vblendps {{.*#+}} ymm0 = ymm0[0],ymm1[1,2,3],ymm0[4,5,6],ymm1[7]
159*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
160*9880d681SAndroid Build Coastguard Worker;
161*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_blend_ps:
162*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
163*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vblendps {{.*#+}} ymm0 = ymm0[0],ymm1[1,2,3],ymm0[4,5,6],ymm1[7]
164*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
165*9880d681SAndroid Build Coastguard Worker  %res = shufflevector <8 x float> %a0, <8 x float> %a1, <8 x i32> <i32 0, i32 9, i32 10, i32 11, i32 4, i32 5, i32 6, i32 15>
166*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %res
167*9880d681SAndroid Build Coastguard Worker}
168*9880d681SAndroid Build Coastguard Worker
169*9880d681SAndroid Build Coastguard Workerdefine <4 x double> @test_mm256_blendv_pd(<4 x double> %a0, <4 x double> %a1, <4 x double> %a2) nounwind {
170*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_blendv_pd:
171*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
172*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vblendvpd %ymm2, %ymm1, %ymm0, %ymm0
173*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
174*9880d681SAndroid Build Coastguard Worker;
175*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_blendv_pd:
176*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
177*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vblendvpd %ymm2, %ymm1, %ymm0, %ymm0
178*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
179*9880d681SAndroid Build Coastguard Worker  %res = call <4 x double> @llvm.x86.avx.blendv.pd.256(<4 x double> %a0, <4 x double> %a1, <4 x double> %a2)
180*9880d681SAndroid Build Coastguard Worker  ret <4 x double> %res
181*9880d681SAndroid Build Coastguard Worker}
182*9880d681SAndroid Build Coastguard Workerdeclare <4 x double> @llvm.x86.avx.blendv.pd.256(<4 x double>, <4 x double>, <4 x double>) nounwind readnone
183*9880d681SAndroid Build Coastguard Worker
184*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @test_mm256_blendv_ps(<8 x float> %a0, <8 x float> %a1, <8 x float> %a2) nounwind {
185*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_blendv_ps:
186*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
187*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vblendvps %ymm2, %ymm1, %ymm0, %ymm0
188*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
189*9880d681SAndroid Build Coastguard Worker;
190*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_blendv_ps:
191*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
192*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vblendvps %ymm2, %ymm1, %ymm0, %ymm0
193*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
194*9880d681SAndroid Build Coastguard Worker  %res = call <8 x float> @llvm.x86.avx.blendv.ps.256(<8 x float> %a0, <8 x float> %a1, <8 x float> %a2)
195*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %res
196*9880d681SAndroid Build Coastguard Worker}
197*9880d681SAndroid Build Coastguard Workerdeclare <8 x float> @llvm.x86.avx.blendv.ps.256(<8 x float>, <8 x float>, <8 x float>) nounwind readnone
198*9880d681SAndroid Build Coastguard Worker
199*9880d681SAndroid Build Coastguard Workerdefine <4 x double> @test_mm256_broadcast_pd(<2 x double>* %a0) nounwind {
200*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_broadcast_pd:
201*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
202*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movl {{[0-9]+}}(%esp), %eax
203*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vbroadcastf128 {{.*#+}} ymm0 = mem[0,1,0,1]
204*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
205*9880d681SAndroid Build Coastguard Worker;
206*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_broadcast_pd:
207*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
208*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vbroadcastf128 {{.*#+}} ymm0 = mem[0,1,0,1]
209*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
210*9880d681SAndroid Build Coastguard Worker  %arg0 = bitcast <2 x double>* %a0 to i8*
211*9880d681SAndroid Build Coastguard Worker  %res = call <4 x double> @llvm.x86.avx.vbroadcastf128.pd.256(i8* %arg0)
212*9880d681SAndroid Build Coastguard Worker  ret <4 x double> %res
213*9880d681SAndroid Build Coastguard Worker}
214*9880d681SAndroid Build Coastguard Workerdeclare <4 x double> @llvm.x86.avx.vbroadcastf128.pd.256(i8*) nounwind readonly
215*9880d681SAndroid Build Coastguard Worker
216*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @test_mm256_broadcast_ps(<4 x float>* %a0) nounwind {
217*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_broadcast_ps:
218*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
219*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movl {{[0-9]+}}(%esp), %eax
220*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vbroadcastf128 {{.*#+}} ymm0 = mem[0,1,0,1]
221*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
222*9880d681SAndroid Build Coastguard Worker;
223*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_broadcast_ps:
224*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
225*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vbroadcastf128 {{.*#+}} ymm0 = mem[0,1,0,1]
226*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
227*9880d681SAndroid Build Coastguard Worker  %arg0 = bitcast <4 x float>* %a0 to i8*
228*9880d681SAndroid Build Coastguard Worker  %res = call <8 x float> @llvm.x86.avx.vbroadcastf128.ps.256(i8* %arg0)
229*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %res
230*9880d681SAndroid Build Coastguard Worker}
231*9880d681SAndroid Build Coastguard Workerdeclare <8 x float> @llvm.x86.avx.vbroadcastf128.ps.256(i8*) nounwind readonly
232*9880d681SAndroid Build Coastguard Worker
233*9880d681SAndroid Build Coastguard Workerdefine <4 x double> @test_mm256_broadcast_sd(double* %a0) nounwind {
234*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_broadcast_sd:
235*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
236*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movl {{[0-9]+}}(%esp), %eax
237*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vbroadcastsd (%eax), %ymm0
238*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
239*9880d681SAndroid Build Coastguard Worker;
240*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_broadcast_sd:
241*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
242*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vbroadcastsd (%rdi), %ymm0
243*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
244*9880d681SAndroid Build Coastguard Worker  %ld = load double, double* %a0
245*9880d681SAndroid Build Coastguard Worker  %ins0 = insertelement <4 x double> undef, double %ld, i32 0
246*9880d681SAndroid Build Coastguard Worker  %ins1 = insertelement <4 x double> %ins0, double %ld, i32 1
247*9880d681SAndroid Build Coastguard Worker  %ins2 = insertelement <4 x double> %ins1, double %ld, i32 2
248*9880d681SAndroid Build Coastguard Worker  %ins3 = insertelement <4 x double> %ins2, double %ld, i32 3
249*9880d681SAndroid Build Coastguard Worker  ret <4 x double> %ins3
250*9880d681SAndroid Build Coastguard Worker}
251*9880d681SAndroid Build Coastguard Worker
252*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_mm_broadcast_ss(float* %a0) nounwind {
253*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_broadcast_ss:
254*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
255*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movl {{[0-9]+}}(%esp), %eax
256*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vbroadcastss (%eax), %xmm0
257*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
258*9880d681SAndroid Build Coastguard Worker;
259*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_broadcast_ss:
260*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
261*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vbroadcastss (%rdi), %xmm0
262*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
263*9880d681SAndroid Build Coastguard Worker  %ld = load float, float* %a0
264*9880d681SAndroid Build Coastguard Worker  %ins0 = insertelement <4 x float> undef, float %ld, i32 0
265*9880d681SAndroid Build Coastguard Worker  %ins1 = insertelement <4 x float> %ins0, float %ld, i32 1
266*9880d681SAndroid Build Coastguard Worker  %ins2 = insertelement <4 x float> %ins1, float %ld, i32 2
267*9880d681SAndroid Build Coastguard Worker  %ins3 = insertelement <4 x float> %ins2, float %ld, i32 3
268*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %ins3
269*9880d681SAndroid Build Coastguard Worker}
270*9880d681SAndroid Build Coastguard Worker
271*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @test_mm256_broadcast_ss(float* %a0) nounwind {
272*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_broadcast_ss:
273*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
274*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movl {{[0-9]+}}(%esp), %eax
275*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vbroadcastss (%eax), %ymm0
276*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
277*9880d681SAndroid Build Coastguard Worker;
278*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_broadcast_ss:
279*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
280*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vbroadcastss (%rdi), %ymm0
281*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
282*9880d681SAndroid Build Coastguard Worker  %ld = load float, float* %a0
283*9880d681SAndroid Build Coastguard Worker  %ins0 = insertelement <8 x float> undef, float %ld, i32 0
284*9880d681SAndroid Build Coastguard Worker  %ins1 = insertelement <8 x float> %ins0, float %ld, i32 1
285*9880d681SAndroid Build Coastguard Worker  %ins2 = insertelement <8 x float> %ins1, float %ld, i32 2
286*9880d681SAndroid Build Coastguard Worker  %ins3 = insertelement <8 x float> %ins2, float %ld, i32 3
287*9880d681SAndroid Build Coastguard Worker  %ins4 = insertelement <8 x float> %ins3, float %ld, i32 4
288*9880d681SAndroid Build Coastguard Worker  %ins5 = insertelement <8 x float> %ins4, float %ld, i32 5
289*9880d681SAndroid Build Coastguard Worker  %ins6 = insertelement <8 x float> %ins5, float %ld, i32 6
290*9880d681SAndroid Build Coastguard Worker  %ins7 = insertelement <8 x float> %ins6, float %ld, i32 7
291*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %ins7
292*9880d681SAndroid Build Coastguard Worker}
293*9880d681SAndroid Build Coastguard Worker
294*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @test_mm256_castpd_ps(<4 x double> %a0) nounwind {
295*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_castpd_ps:
296*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
297*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
298*9880d681SAndroid Build Coastguard Worker;
299*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_castpd_ps:
300*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
301*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
302*9880d681SAndroid Build Coastguard Worker  %res = bitcast <4 x double> %a0 to <8 x float>
303*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %res
304*9880d681SAndroid Build Coastguard Worker}
305*9880d681SAndroid Build Coastguard Worker
306*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @test_mm256_castpd_si256(<4 x double> %a0) nounwind {
307*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_castpd_si256:
308*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
309*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
310*9880d681SAndroid Build Coastguard Worker;
311*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_castpd_si256:
312*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
313*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
314*9880d681SAndroid Build Coastguard Worker  %res = bitcast <4 x double> %a0 to <4 x i64>
315*9880d681SAndroid Build Coastguard Worker  ret <4 x i64> %res
316*9880d681SAndroid Build Coastguard Worker}
317*9880d681SAndroid Build Coastguard Worker
318*9880d681SAndroid Build Coastguard Workerdefine <4 x double> @test_mm256_castpd128_pd256(<2 x double> %a0) nounwind {
319*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_castpd128_pd256:
320*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
321*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    # kill: %XMM0<def> %XMM0<kill> %YMM0<def>
322*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
323*9880d681SAndroid Build Coastguard Worker;
324*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_castpd128_pd256:
325*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
326*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    # kill: %XMM0<def> %XMM0<kill> %YMM0<def>
327*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
328*9880d681SAndroid Build Coastguard Worker  %res = shufflevector <2 x double> %a0, <2 x double> %a0, <4 x i32> <i32 0, i32 1, i32 undef, i32 undef>
329*9880d681SAndroid Build Coastguard Worker  ret <4 x double> %res
330*9880d681SAndroid Build Coastguard Worker}
331*9880d681SAndroid Build Coastguard Worker
332*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mm256_castpd256_pd128(<4 x double> %a0) nounwind {
333*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_castpd256_pd128:
334*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
335*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    # kill: %XMM0<def> %XMM0<kill> %YMM0<kill>
336*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vzeroupper
337*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
338*9880d681SAndroid Build Coastguard Worker;
339*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_castpd256_pd128:
340*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
341*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    # kill: %XMM0<def> %XMM0<kill> %YMM0<kill>
342*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vzeroupper
343*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
344*9880d681SAndroid Build Coastguard Worker  %res = shufflevector <4 x double> %a0, <4 x double> %a0, <2 x i32> <i32 0, i32 1>
345*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %res
346*9880d681SAndroid Build Coastguard Worker}
347*9880d681SAndroid Build Coastguard Worker
348*9880d681SAndroid Build Coastguard Workerdefine <4 x double> @test_mm256_castps_pd(<8 x float> %a0) nounwind {
349*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_castps_pd:
350*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
351*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
352*9880d681SAndroid Build Coastguard Worker;
353*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_castps_pd:
354*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
355*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
356*9880d681SAndroid Build Coastguard Worker  %res = bitcast <8 x float> %a0 to <4 x double>
357*9880d681SAndroid Build Coastguard Worker  ret <4 x double> %res
358*9880d681SAndroid Build Coastguard Worker}
359*9880d681SAndroid Build Coastguard Worker
360*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @test_mm256_castps_si256(<8 x float> %a0) nounwind {
361*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_castps_si256:
362*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
363*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
364*9880d681SAndroid Build Coastguard Worker;
365*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_castps_si256:
366*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
367*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
368*9880d681SAndroid Build Coastguard Worker  %res = bitcast <8 x float> %a0 to <4 x i64>
369*9880d681SAndroid Build Coastguard Worker  ret <4 x i64> %res
370*9880d681SAndroid Build Coastguard Worker}
371*9880d681SAndroid Build Coastguard Worker
372*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @test_mm256_castps128_ps256(<4 x float> %a0) nounwind {
373*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_castps128_ps256:
374*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
375*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    # kill: %XMM0<def> %XMM0<kill> %YMM0<def>
376*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
377*9880d681SAndroid Build Coastguard Worker;
378*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_castps128_ps256:
379*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
380*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    # kill: %XMM0<def> %XMM0<kill> %YMM0<def>
381*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
382*9880d681SAndroid Build Coastguard Worker  %res = shufflevector <4 x float> %a0, <4 x float> %a0, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 undef, i32 undef, i32 undef, i32 undef>
383*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %res
384*9880d681SAndroid Build Coastguard Worker}
385*9880d681SAndroid Build Coastguard Worker
386*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_mm256_castps256_ps128(<8 x float> %a0) nounwind {
387*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_castps256_ps128:
388*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
389*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    # kill: %XMM0<def> %XMM0<kill> %YMM0<kill>
390*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vzeroupper
391*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
392*9880d681SAndroid Build Coastguard Worker;
393*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_castps256_ps128:
394*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
395*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    # kill: %XMM0<def> %XMM0<kill> %YMM0<kill>
396*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vzeroupper
397*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
398*9880d681SAndroid Build Coastguard Worker  %res = shufflevector <8 x float> %a0, <8 x float> %a0, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
399*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res
400*9880d681SAndroid Build Coastguard Worker}
401*9880d681SAndroid Build Coastguard Worker
402*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @test_mm256_castsi128_si256(<2 x i64> %a0) nounwind {
403*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_castsi128_si256:
404*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
405*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    # kill: %XMM0<def> %XMM0<kill> %YMM0<def>
406*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
407*9880d681SAndroid Build Coastguard Worker;
408*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_castsi128_si256:
409*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
410*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    # kill: %XMM0<def> %XMM0<kill> %YMM0<def>
411*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
412*9880d681SAndroid Build Coastguard Worker  %res = shufflevector <2 x i64> %a0, <2 x i64> %a0, <4 x i32> <i32 0, i32 1, i32 undef, i32 undef>
413*9880d681SAndroid Build Coastguard Worker  ret <4 x i64> %res
414*9880d681SAndroid Build Coastguard Worker}
415*9880d681SAndroid Build Coastguard Worker
416*9880d681SAndroid Build Coastguard Workerdefine <4 x double> @test_mm256_castsi256_pd(<4 x i64> %a0) nounwind {
417*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_castsi256_pd:
418*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
419*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
420*9880d681SAndroid Build Coastguard Worker;
421*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_castsi256_pd:
422*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
423*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
424*9880d681SAndroid Build Coastguard Worker  %res = bitcast <4 x i64> %a0 to <4 x double>
425*9880d681SAndroid Build Coastguard Worker  ret <4 x double> %res
426*9880d681SAndroid Build Coastguard Worker}
427*9880d681SAndroid Build Coastguard Worker
428*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @test_mm256_castsi256_ps(<4 x i64> %a0) nounwind {
429*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_castsi256_ps:
430*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
431*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
432*9880d681SAndroid Build Coastguard Worker;
433*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_castsi256_ps:
434*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
435*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
436*9880d681SAndroid Build Coastguard Worker  %res = bitcast <4 x i64> %a0 to <8 x float>
437*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %res
438*9880d681SAndroid Build Coastguard Worker}
439*9880d681SAndroid Build Coastguard Worker
440*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm256_castsi256_si128(<4 x i64> %a0) nounwind {
441*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_castsi256_si128:
442*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
443*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    # kill: %XMM0<def> %XMM0<kill> %YMM0<kill>
444*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vzeroupper
445*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
446*9880d681SAndroid Build Coastguard Worker;
447*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_castsi256_si128:
448*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
449*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    # kill: %XMM0<def> %XMM0<kill> %YMM0<kill>
450*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vzeroupper
451*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
452*9880d681SAndroid Build Coastguard Worker  %res = shufflevector <4 x i64> %a0, <4 x i64> %a0, <2 x i32> <i32 0, i32 1>
453*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %res
454*9880d681SAndroid Build Coastguard Worker}
455*9880d681SAndroid Build Coastguard Worker
456*9880d681SAndroid Build Coastguard Workerdefine <4 x double> @test_mm256_ceil_pd(<4 x double> %a0) nounwind {
457*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_ceil_pd:
458*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
459*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vroundpd $2, %ymm0, %ymm0
460*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
461*9880d681SAndroid Build Coastguard Worker;
462*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_ceil_pd:
463*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
464*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vroundpd $2, %ymm0, %ymm0
465*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
466*9880d681SAndroid Build Coastguard Worker  %res = call <4 x double> @llvm.x86.avx.round.pd.256(<4 x double> %a0, i32 2)
467*9880d681SAndroid Build Coastguard Worker  ret <4 x double> %res
468*9880d681SAndroid Build Coastguard Worker}
469*9880d681SAndroid Build Coastguard Workerdeclare <4 x double> @llvm.x86.avx.round.pd.256(<4 x double>, i32) nounwind readnone
470*9880d681SAndroid Build Coastguard Worker
471*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @test_mm256_ceil_ps(<8 x float> %a0) nounwind {
472*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_ceil_ps:
473*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
474*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vroundps $2, %ymm0, %ymm0
475*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
476*9880d681SAndroid Build Coastguard Worker;
477*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_ceil_ps:
478*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
479*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vroundps $2, %ymm0, %ymm0
480*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
481*9880d681SAndroid Build Coastguard Worker  %res = call <8 x float> @llvm.x86.avx.round.ps.256(<8 x float> %a0, i32 2)
482*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %res
483*9880d681SAndroid Build Coastguard Worker}
484*9880d681SAndroid Build Coastguard Workerdeclare <8 x float> @llvm.x86.avx.round.ps.256(<8 x float>, i32) nounwind readnone
485*9880d681SAndroid Build Coastguard Worker
486*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mm_cmp_pd(<2 x double> %a0, <2 x double> %a1) nounwind {
487*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_cmp_pd:
488*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
489*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vcmpgepd %xmm1, %xmm0, %xmm0
490*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
491*9880d681SAndroid Build Coastguard Worker;
492*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_cmp_pd:
493*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
494*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vcmpgepd %xmm1, %xmm0, %xmm0
495*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
496*9880d681SAndroid Build Coastguard Worker  %res = call <2 x double> @llvm.x86.sse2.cmp.pd(<2 x double> %a0, <2 x double> %a1, i8 13)
497*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %res
498*9880d681SAndroid Build Coastguard Worker}
499*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.sse2.cmp.pd(<2 x double>, <2 x double>, i8) nounwind readnone
500*9880d681SAndroid Build Coastguard Worker
501*9880d681SAndroid Build Coastguard Workerdefine <4 x double> @test_mm256_cmp_pd(<4 x double> %a0, <4 x double> %a1) nounwind {
502*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_cmp_pd:
503*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
504*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vcmpgepd %ymm1, %ymm0, %ymm0
505*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
506*9880d681SAndroid Build Coastguard Worker;
507*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_cmp_pd:
508*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
509*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vcmpgepd %ymm1, %ymm0, %ymm0
510*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
511*9880d681SAndroid Build Coastguard Worker  %res = call <4 x double> @llvm.x86.avx.cmp.pd.256(<4 x double> %a0, <4 x double> %a1, i8 13)
512*9880d681SAndroid Build Coastguard Worker  ret <4 x double> %res
513*9880d681SAndroid Build Coastguard Worker}
514*9880d681SAndroid Build Coastguard Workerdeclare <4 x double> @llvm.x86.avx.cmp.pd.256(<4 x double>, <4 x double>, i8) nounwind readnone
515*9880d681SAndroid Build Coastguard Worker
516*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_mm_cmp_ps(<4 x float> %a0, <4 x float> %a1) nounwind {
517*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_cmp_ps:
518*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
519*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vcmpgeps %xmm1, %xmm0, %xmm0
520*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
521*9880d681SAndroid Build Coastguard Worker;
522*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_cmp_ps:
523*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
524*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vcmpgeps %xmm1, %xmm0, %xmm0
525*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
526*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.sse.cmp.ps(<4 x float> %a0, <4 x float> %a1, i8 13)
527*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res
528*9880d681SAndroid Build Coastguard Worker}
529*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.sse.cmp.ps(<4 x float>, <4 x float>, i8) nounwind readnone
530*9880d681SAndroid Build Coastguard Worker
531*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @test_mm256_cmp_ps(<8 x float> %a0, <8 x float> %a1) nounwind {
532*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_cmp_ps:
533*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
534*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vcmpgeps %ymm1, %ymm0, %ymm0
535*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
536*9880d681SAndroid Build Coastguard Worker;
537*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_cmp_ps:
538*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
539*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vcmpgeps %ymm1, %ymm0, %ymm0
540*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
541*9880d681SAndroid Build Coastguard Worker  %res = call <8 x float> @llvm.x86.avx.cmp.ps.256(<8 x float> %a0, <8 x float> %a1, i8 13)
542*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %res
543*9880d681SAndroid Build Coastguard Worker}
544*9880d681SAndroid Build Coastguard Workerdeclare <8 x float> @llvm.x86.avx.cmp.ps.256(<8 x float>, <8 x float>, i8) nounwind readnone
545*9880d681SAndroid Build Coastguard Worker
546*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mm_cmp_sd(<2 x double> %a0, <2 x double> %a1) nounwind {
547*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_cmp_sd:
548*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
549*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vcmpgesd %xmm1, %xmm0, %xmm0
550*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
551*9880d681SAndroid Build Coastguard Worker;
552*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_cmp_sd:
553*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
554*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vcmpgesd %xmm1, %xmm0, %xmm0
555*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
556*9880d681SAndroid Build Coastguard Worker  %res = call <2 x double> @llvm.x86.sse2.cmp.sd(<2 x double> %a0, <2 x double> %a1, i8 13)
557*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %res
558*9880d681SAndroid Build Coastguard Worker}
559*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.sse2.cmp.sd(<2 x double>, <2 x double>, i8) nounwind readnone
560*9880d681SAndroid Build Coastguard Worker
561*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_mm_cmp_ss(<4 x float> %a0, <4 x float> %a1) nounwind {
562*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_cmp_ss:
563*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
564*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vcmpgess %xmm1, %xmm0, %xmm0
565*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
566*9880d681SAndroid Build Coastguard Worker;
567*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_cmp_ss:
568*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
569*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vcmpgess %xmm1, %xmm0, %xmm0
570*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
571*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.sse.cmp.ss(<4 x float> %a0, <4 x float> %a1, i8 13)
572*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res
573*9880d681SAndroid Build Coastguard Worker}
574*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.sse.cmp.ss(<4 x float>, <4 x float>, i8) nounwind readnone
575*9880d681SAndroid Build Coastguard Worker
576*9880d681SAndroid Build Coastguard Workerdefine <4 x double> @test_mm256_cvtepi32_pd(<2 x i64> %a0) nounwind {
577*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_cvtepi32_pd:
578*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
579*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vcvtdq2pd %xmm0, %ymm0
580*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
581*9880d681SAndroid Build Coastguard Worker;
582*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_cvtepi32_pd:
583*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
584*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vcvtdq2pd %xmm0, %ymm0
585*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
586*9880d681SAndroid Build Coastguard Worker  %arg0 = bitcast <2 x i64> %a0 to <4 x i32>
587*9880d681SAndroid Build Coastguard Worker  %res = sitofp <4 x i32> %arg0 to <4 x double>
588*9880d681SAndroid Build Coastguard Worker  ret <4 x double> %res
589*9880d681SAndroid Build Coastguard Worker}
590*9880d681SAndroid Build Coastguard Worker
591*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @test_mm256_cvtepi32_ps(<4 x i64> %a0) nounwind {
592*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_cvtepi32_ps:
593*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
594*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vcvtdq2ps %ymm0, %ymm0
595*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
596*9880d681SAndroid Build Coastguard Worker;
597*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_cvtepi32_ps:
598*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
599*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vcvtdq2ps %ymm0, %ymm0
600*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
601*9880d681SAndroid Build Coastguard Worker  %arg0 = bitcast <4 x i64> %a0 to <8 x i32>
602*9880d681SAndroid Build Coastguard Worker  %res = call <8 x float> @llvm.x86.avx.cvtdq2.ps.256(<8 x i32> %arg0)
603*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %res
604*9880d681SAndroid Build Coastguard Worker}
605*9880d681SAndroid Build Coastguard Workerdeclare <8 x float> @llvm.x86.avx.cvtdq2.ps.256(<8 x i32>) nounwind readnone
606*9880d681SAndroid Build Coastguard Worker
607*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm256_cvtpd_epi32(<4 x double> %a0) nounwind {
608*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_cvtpd_epi32:
609*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
610*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vcvtpd2dqy %ymm0, %xmm0
611*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vzeroupper
612*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
613*9880d681SAndroid Build Coastguard Worker;
614*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_cvtpd_epi32:
615*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
616*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vcvtpd2dqy %ymm0, %xmm0
617*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vzeroupper
618*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
619*9880d681SAndroid Build Coastguard Worker  %cvt = call <4 x i32> @llvm.x86.avx.cvt.pd2dq.256(<4 x double> %a0)
620*9880d681SAndroid Build Coastguard Worker  %res = bitcast <4 x i32> %cvt to <2 x i64>
621*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %res
622*9880d681SAndroid Build Coastguard Worker}
623*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.avx.cvt.pd2dq.256(<4 x double>) nounwind readnone
624*9880d681SAndroid Build Coastguard Worker
625*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_mm256_cvtpd_ps(<4 x double> %a0) nounwind {
626*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_cvtpd_ps:
627*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
628*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vcvtpd2psy %ymm0, %xmm0
629*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vzeroupper
630*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
631*9880d681SAndroid Build Coastguard Worker;
632*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_cvtpd_ps:
633*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
634*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vcvtpd2psy %ymm0, %xmm0
635*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vzeroupper
636*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
637*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.avx.cvt.pd2.ps.256(<4 x double> %a0)
638*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res
639*9880d681SAndroid Build Coastguard Worker}
640*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.avx.cvt.pd2.ps.256(<4 x double>) nounwind readnone
641*9880d681SAndroid Build Coastguard Worker
642*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @test_mm256_cvtps_epi32(<8 x float> %a0) nounwind {
643*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_cvtps_epi32:
644*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
645*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vcvtps2dq %ymm0, %ymm0
646*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
647*9880d681SAndroid Build Coastguard Worker;
648*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_cvtps_epi32:
649*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
650*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vcvtps2dq %ymm0, %ymm0
651*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
652*9880d681SAndroid Build Coastguard Worker  %cvt = call <8 x i32> @llvm.x86.avx.cvt.ps2dq.256(<8 x float> %a0)
653*9880d681SAndroid Build Coastguard Worker  %res = bitcast <8 x i32> %cvt to <4 x i64>
654*9880d681SAndroid Build Coastguard Worker  ret <4 x i64> %res
655*9880d681SAndroid Build Coastguard Worker}
656*9880d681SAndroid Build Coastguard Workerdeclare <8 x i32> @llvm.x86.avx.cvt.ps2dq.256(<8 x float>) nounwind readnone
657*9880d681SAndroid Build Coastguard Worker
658*9880d681SAndroid Build Coastguard Workerdefine <4 x double> @test_mm256_cvtps_pd(<4 x float> %a0) nounwind {
659*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_cvtps_pd:
660*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
661*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vcvtps2pd %xmm0, %ymm0
662*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
663*9880d681SAndroid Build Coastguard Worker;
664*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_cvtps_pd:
665*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
666*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vcvtps2pd %xmm0, %ymm0
667*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
668*9880d681SAndroid Build Coastguard Worker  %res = fpext <4 x float> %a0 to <4 x double>
669*9880d681SAndroid Build Coastguard Worker  ret <4 x double> %res
670*9880d681SAndroid Build Coastguard Worker}
671*9880d681SAndroid Build Coastguard Worker
672*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm256_cvttpd_epi32(<4 x double> %a0) nounwind {
673*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_cvttpd_epi32:
674*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
675*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vcvttpd2dqy %ymm0, %xmm0
676*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vzeroupper
677*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
678*9880d681SAndroid Build Coastguard Worker;
679*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_cvttpd_epi32:
680*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
681*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vcvttpd2dqy %ymm0, %xmm0
682*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vzeroupper
683*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
684*9880d681SAndroid Build Coastguard Worker  %cvt = fptosi <4 x double> %a0 to <4 x i32>
685*9880d681SAndroid Build Coastguard Worker  %res = bitcast <4 x i32> %cvt to <2 x i64>
686*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %res
687*9880d681SAndroid Build Coastguard Worker}
688*9880d681SAndroid Build Coastguard Worker
689*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @test_mm256_cvttps_epi32(<8 x float> %a0) nounwind {
690*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_cvttps_epi32:
691*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
692*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vcvttps2dq %ymm0, %ymm0
693*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
694*9880d681SAndroid Build Coastguard Worker;
695*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_cvttps_epi32:
696*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
697*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vcvttps2dq %ymm0, %ymm0
698*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
699*9880d681SAndroid Build Coastguard Worker  %cvt = fptosi <8 x float> %a0 to <8 x i32>
700*9880d681SAndroid Build Coastguard Worker  %res = bitcast <8 x i32> %cvt to <4 x i64>
701*9880d681SAndroid Build Coastguard Worker  ret <4 x i64> %res
702*9880d681SAndroid Build Coastguard Worker}
703*9880d681SAndroid Build Coastguard Worker
704*9880d681SAndroid Build Coastguard Workerdefine <4 x double> @test_mm256_div_pd(<4 x double> %a0, <4 x double> %a1) nounwind {
705*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_div_pd:
706*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
707*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vdivpd %ymm1, %ymm0, %ymm0
708*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
709*9880d681SAndroid Build Coastguard Worker;
710*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_div_pd:
711*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
712*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vdivpd %ymm1, %ymm0, %ymm0
713*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
714*9880d681SAndroid Build Coastguard Worker  %res = fdiv <4 x double> %a0, %a1
715*9880d681SAndroid Build Coastguard Worker  ret <4 x double> %res
716*9880d681SAndroid Build Coastguard Worker}
717*9880d681SAndroid Build Coastguard Worker
718*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @test_mm256_div_ps(<8 x float> %a0, <8 x float> %a1) nounwind {
719*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_div_ps:
720*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
721*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vdivps %ymm1, %ymm0, %ymm0
722*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
723*9880d681SAndroid Build Coastguard Worker;
724*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_div_ps:
725*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
726*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vdivps %ymm1, %ymm0, %ymm0
727*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
728*9880d681SAndroid Build Coastguard Worker  %res = fdiv <8 x float> %a0, %a1
729*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %res
730*9880d681SAndroid Build Coastguard Worker}
731*9880d681SAndroid Build Coastguard Worker
732*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @test_mm256_dp_ps(<8 x float> %a0, <8 x float> %a1) nounwind {
733*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_dp_ps:
734*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
735*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vdpps $7, %ymm1, %ymm0, %ymm0
736*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
737*9880d681SAndroid Build Coastguard Worker;
738*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_dp_ps:
739*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
740*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vdpps $7, %ymm1, %ymm0, %ymm0
741*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
742*9880d681SAndroid Build Coastguard Worker  %res = call <8 x float> @llvm.x86.avx.dp.ps.256(<8 x float> %a0, <8 x float> %a1, i8 7)
743*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %res
744*9880d681SAndroid Build Coastguard Worker}
745*9880d681SAndroid Build Coastguard Workerdeclare <8 x float> @llvm.x86.avx.dp.ps.256(<8 x float>, <8 x float>, i8) nounwind readnone
746*9880d681SAndroid Build Coastguard Worker
747*9880d681SAndroid Build Coastguard Workerdefine i32 @test_mm256_extract_epi8(<4 x i64> %a0) nounwind {
748*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_extract_epi8:
749*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
750*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vextractf128 $1, %ymm0, %xmm0
751*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpextrb $15, %xmm0, %eax
752*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movzbl %al, %eax
753*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vzeroupper
754*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
755*9880d681SAndroid Build Coastguard Worker;
756*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_extract_epi8:
757*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
758*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vextractf128 $1, %ymm0, %xmm0
759*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vpextrb $15, %xmm0, %eax
760*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movzbl %al, %eax
761*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vzeroupper
762*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
763*9880d681SAndroid Build Coastguard Worker  %arg0 = bitcast <4 x i64> %a0 to <32 x i8>
764*9880d681SAndroid Build Coastguard Worker  %ext = extractelement <32 x i8> %arg0, i32 31
765*9880d681SAndroid Build Coastguard Worker  %res = zext i8 %ext to i32
766*9880d681SAndroid Build Coastguard Worker  ret i32 %res
767*9880d681SAndroid Build Coastguard Worker}
768*9880d681SAndroid Build Coastguard Worker
769*9880d681SAndroid Build Coastguard Workerdefine i32 @test_mm256_extract_epi16(<4 x i64> %a0) nounwind {
770*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_extract_epi16:
771*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
772*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vextractf128 $1, %ymm0, %xmm0
773*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpextrw $3, %xmm0, %eax
774*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movzwl %ax, %eax
775*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vzeroupper
776*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
777*9880d681SAndroid Build Coastguard Worker;
778*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_extract_epi16:
779*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
780*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vextractf128 $1, %ymm0, %xmm0
781*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vpextrw $3, %xmm0, %eax
782*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movzwl %ax, %eax
783*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vzeroupper
784*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
785*9880d681SAndroid Build Coastguard Worker  %arg0 = bitcast <4 x i64> %a0 to <16 x i16>
786*9880d681SAndroid Build Coastguard Worker  %ext = extractelement <16 x i16> %arg0, i32 11
787*9880d681SAndroid Build Coastguard Worker  %res = zext i16 %ext to i32
788*9880d681SAndroid Build Coastguard Worker  ret i32 %res
789*9880d681SAndroid Build Coastguard Worker}
790*9880d681SAndroid Build Coastguard Worker
791*9880d681SAndroid Build Coastguard Workerdefine i32 @test_mm256_extract_epi32(<4 x i64> %a0) nounwind {
792*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_extract_epi32:
793*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
794*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vextractf128 $1, %ymm0, %xmm0
795*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpextrd $1, %xmm0, %eax
796*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vzeroupper
797*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
798*9880d681SAndroid Build Coastguard Worker;
799*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_extract_epi32:
800*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
801*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vextractf128 $1, %ymm0, %xmm0
802*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vpextrd $1, %xmm0, %eax
803*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vzeroupper
804*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
805*9880d681SAndroid Build Coastguard Worker  %arg0 = bitcast <4 x i64> %a0 to <8 x i32>
806*9880d681SAndroid Build Coastguard Worker  %res = extractelement <8 x i32> %arg0, i32 5
807*9880d681SAndroid Build Coastguard Worker  ret i32 %res
808*9880d681SAndroid Build Coastguard Worker}
809*9880d681SAndroid Build Coastguard Worker
810*9880d681SAndroid Build Coastguard Workerdefine i64 @test_mm256_extract_epi64(<4 x i64> %a0) nounwind {
811*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_extract_epi64:
812*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
813*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vextractf128 $1, %ymm0, %xmm0
814*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpextrd $2, %xmm0, %eax
815*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpextrd $3, %xmm0, %edx
816*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vzeroupper
817*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
818*9880d681SAndroid Build Coastguard Worker;
819*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_extract_epi64:
820*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
821*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vextractf128 $1, %ymm0, %xmm0
822*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vpextrq $1, %xmm0, %rax
823*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vzeroupper
824*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
825*9880d681SAndroid Build Coastguard Worker  %res = extractelement <4 x i64> %a0, i32 3
826*9880d681SAndroid Build Coastguard Worker  ret i64 %res
827*9880d681SAndroid Build Coastguard Worker}
828*9880d681SAndroid Build Coastguard Worker
829*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mm256_extractf128_pd(<4 x double> %a0) nounwind {
830*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_extractf128_pd:
831*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
832*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vextractf128 $1, %ymm0, %xmm0
833*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vzeroupper
834*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
835*9880d681SAndroid Build Coastguard Worker;
836*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_extractf128_pd:
837*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
838*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vextractf128 $1, %ymm0, %xmm0
839*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vzeroupper
840*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
841*9880d681SAndroid Build Coastguard Worker  %res = shufflevector <4 x double> %a0, <4 x double> %a0, <2 x i32> <i32 2, i32 3>
842*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %res
843*9880d681SAndroid Build Coastguard Worker}
844*9880d681SAndroid Build Coastguard Worker
845*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_mm256_extractf128_ps(<8 x float> %a0) nounwind {
846*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_extractf128_ps:
847*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
848*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vextractf128 $1, %ymm0, %xmm0
849*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vzeroupper
850*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
851*9880d681SAndroid Build Coastguard Worker;
852*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_extractf128_ps:
853*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
854*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vextractf128 $1, %ymm0, %xmm0
855*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vzeroupper
856*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
857*9880d681SAndroid Build Coastguard Worker  %res = shufflevector <8 x float> %a0, <8 x float> %a0, <4 x i32> <i32 4, i32 5, i32 6, i32 7>
858*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res
859*9880d681SAndroid Build Coastguard Worker}
860*9880d681SAndroid Build Coastguard Worker
861*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm256_extractf128_si256(<4 x i64> %a0) nounwind {
862*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_extractf128_si256:
863*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
864*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vextractf128 $1, %ymm0, %xmm0
865*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vzeroupper
866*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
867*9880d681SAndroid Build Coastguard Worker;
868*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_extractf128_si256:
869*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
870*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vextractf128 $1, %ymm0, %xmm0
871*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vzeroupper
872*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
873*9880d681SAndroid Build Coastguard Worker  %res = shufflevector <4 x i64> %a0, <4 x i64> %a0, <2 x i32> <i32 2, i32 3>
874*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %res
875*9880d681SAndroid Build Coastguard Worker}
876*9880d681SAndroid Build Coastguard Worker
877*9880d681SAndroid Build Coastguard Workerdefine <4 x double> @test_mm256_floor_pd(<4 x double> %a0) nounwind {
878*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_floor_pd:
879*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
880*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vroundpd $1, %ymm0, %ymm0
881*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
882*9880d681SAndroid Build Coastguard Worker;
883*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_floor_pd:
884*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
885*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vroundpd $1, %ymm0, %ymm0
886*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
887*9880d681SAndroid Build Coastguard Worker  %res = call <4 x double> @llvm.x86.avx.round.pd.256(<4 x double> %a0, i32 1)
888*9880d681SAndroid Build Coastguard Worker  ret <4 x double> %res
889*9880d681SAndroid Build Coastguard Worker}
890*9880d681SAndroid Build Coastguard Worker
891*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @test_mm256_floor_ps(<8 x float> %a0) nounwind {
892*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_floor_ps:
893*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
894*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vroundps $1, %ymm0, %ymm0
895*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
896*9880d681SAndroid Build Coastguard Worker;
897*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_floor_ps:
898*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
899*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vroundps $1, %ymm0, %ymm0
900*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
901*9880d681SAndroid Build Coastguard Worker  %res = call <8 x float> @llvm.x86.avx.round.ps.256(<8 x float> %a0, i32 1)
902*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %res
903*9880d681SAndroid Build Coastguard Worker}
904*9880d681SAndroid Build Coastguard Worker
905*9880d681SAndroid Build Coastguard Workerdefine <4 x double> @test_mm256_hadd_pd(<4 x double> %a0, <4 x double> %a1) nounwind {
906*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_hadd_pd:
907*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
908*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vhaddpd %ymm1, %ymm0, %ymm0
909*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
910*9880d681SAndroid Build Coastguard Worker;
911*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_hadd_pd:
912*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
913*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vhaddpd %ymm1, %ymm0, %ymm0
914*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
915*9880d681SAndroid Build Coastguard Worker  %res = call <4 x double> @llvm.x86.avx.hadd.pd.256(<4 x double> %a0, <4 x double> %a1)
916*9880d681SAndroid Build Coastguard Worker  ret <4 x double> %res
917*9880d681SAndroid Build Coastguard Worker}
918*9880d681SAndroid Build Coastguard Workerdeclare <4 x double> @llvm.x86.avx.hadd.pd.256(<4 x double>, <4 x double>) nounwind readnone
919*9880d681SAndroid Build Coastguard Worker
920*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @test_mm256_hadd_ps(<8 x float> %a0, <8 x float> %a1) nounwind {
921*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_hadd_ps:
922*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
923*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vhaddps %ymm1, %ymm0, %ymm0
924*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
925*9880d681SAndroid Build Coastguard Worker;
926*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_hadd_ps:
927*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
928*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vhaddps %ymm1, %ymm0, %ymm0
929*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
930*9880d681SAndroid Build Coastguard Worker  %res = call <8 x float> @llvm.x86.avx.hadd.ps.256(<8 x float> %a0, <8 x float> %a1)
931*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %res
932*9880d681SAndroid Build Coastguard Worker}
933*9880d681SAndroid Build Coastguard Workerdeclare <8 x float> @llvm.x86.avx.hadd.ps.256(<8 x float>, <8 x float>) nounwind readnone
934*9880d681SAndroid Build Coastguard Worker
935*9880d681SAndroid Build Coastguard Workerdefine <4 x double> @test_mm256_hsub_pd(<4 x double> %a0, <4 x double> %a1) nounwind {
936*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_hsub_pd:
937*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
938*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vhsubpd %ymm1, %ymm0, %ymm0
939*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
940*9880d681SAndroid Build Coastguard Worker;
941*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_hsub_pd:
942*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
943*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vhsubpd %ymm1, %ymm0, %ymm0
944*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
945*9880d681SAndroid Build Coastguard Worker  %res = call <4 x double> @llvm.x86.avx.hsub.pd.256(<4 x double> %a0, <4 x double> %a1)
946*9880d681SAndroid Build Coastguard Worker  ret <4 x double> %res
947*9880d681SAndroid Build Coastguard Worker}
948*9880d681SAndroid Build Coastguard Workerdeclare <4 x double> @llvm.x86.avx.hsub.pd.256(<4 x double>, <4 x double>) nounwind readnone
949*9880d681SAndroid Build Coastguard Worker
950*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @test_mm256_hsub_ps(<8 x float> %a0, <8 x float> %a1) nounwind {
951*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_hsub_ps:
952*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
953*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vhsubps %ymm1, %ymm0, %ymm0
954*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
955*9880d681SAndroid Build Coastguard Worker;
956*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_hsub_ps:
957*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
958*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vhsubps %ymm1, %ymm0, %ymm0
959*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
960*9880d681SAndroid Build Coastguard Worker  %res = call <8 x float> @llvm.x86.avx.hsub.ps.256(<8 x float> %a0, <8 x float> %a1)
961*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %res
962*9880d681SAndroid Build Coastguard Worker}
963*9880d681SAndroid Build Coastguard Workerdeclare <8 x float> @llvm.x86.avx.hsub.ps.256(<8 x float>, <8 x float>) nounwind readnone
964*9880d681SAndroid Build Coastguard Worker
965*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @test_mm256_insert_epi8(<4 x i64> %a0, i8 %a1) nounwind {
966*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_insert_epi8:
967*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
968*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
969*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpinsrb $4, %eax, %xmm0, %xmm1
970*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vblendps {{.*#+}} ymm0 = ymm1[0,1,2,3],ymm0[4,5,6,7]
971*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
972*9880d681SAndroid Build Coastguard Worker;
973*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_insert_epi8:
974*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
975*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movzbl %dil, %eax
976*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vpinsrb $4, %eax, %xmm0, %xmm1
977*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vblendps {{.*#+}} ymm0 = ymm1[0,1,2,3],ymm0[4,5,6,7]
978*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
979*9880d681SAndroid Build Coastguard Worker  %arg0 = bitcast <4 x i64> %a0 to <32 x i8>
980*9880d681SAndroid Build Coastguard Worker  %res = insertelement <32 x i8> %arg0, i8 %a1, i32 4
981*9880d681SAndroid Build Coastguard Worker  %bc = bitcast <32 x i8> %res to <4 x i64>
982*9880d681SAndroid Build Coastguard Worker  ret <4 x i64> %bc
983*9880d681SAndroid Build Coastguard Worker}
984*9880d681SAndroid Build Coastguard Worker
985*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @test_mm256_insert_epi16(<4 x i64> %a0, i16 %a1) nounwind {
986*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_insert_epi16:
987*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
988*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movw {{[0-9]+}}(%esp), %ax
989*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vextractf128 $1, %ymm0, %xmm1
990*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpinsrw $6, %eax, %xmm1, %xmm1
991*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm0
992*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
993*9880d681SAndroid Build Coastguard Worker;
994*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_insert_epi16:
995*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
996*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vextractf128 $1, %ymm0, %xmm1
997*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vpinsrw $6, %edi, %xmm1, %xmm1
998*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm0
999*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
1000*9880d681SAndroid Build Coastguard Worker  %arg0 = bitcast <4 x i64> %a0 to <16 x i16>
1001*9880d681SAndroid Build Coastguard Worker  %res = insertelement <16 x i16> %arg0, i16 %a1, i32 14
1002*9880d681SAndroid Build Coastguard Worker  %bc = bitcast <16 x i16> %res to <4 x i64>
1003*9880d681SAndroid Build Coastguard Worker  ret <4 x i64> %bc
1004*9880d681SAndroid Build Coastguard Worker}
1005*9880d681SAndroid Build Coastguard Worker
1006*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @test_mm256_insert_epi32(<4 x i64> %a0, i32 %a1) nounwind {
1007*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_insert_epi32:
1008*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
1009*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpinsrd $3, {{[0-9]+}}(%esp), %xmm0, %xmm1
1010*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vblendps {{.*#+}} ymm0 = ymm1[0,1,2,3],ymm0[4,5,6,7]
1011*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
1012*9880d681SAndroid Build Coastguard Worker;
1013*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_insert_epi32:
1014*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
1015*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vpinsrd $3, %edi, %xmm0, %xmm1
1016*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vblendps {{.*#+}} ymm0 = ymm1[0,1,2,3],ymm0[4,5,6,7]
1017*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
1018*9880d681SAndroid Build Coastguard Worker  %arg0 = bitcast <4 x i64> %a0 to <8 x i32>
1019*9880d681SAndroid Build Coastguard Worker  %res = insertelement <8 x i32> %arg0, i32 %a1, i32 3
1020*9880d681SAndroid Build Coastguard Worker  %bc = bitcast <8 x i32> %res to <4 x i64>
1021*9880d681SAndroid Build Coastguard Worker  ret <4 x i64> %bc
1022*9880d681SAndroid Build Coastguard Worker}
1023*9880d681SAndroid Build Coastguard Worker
1024*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @test_mm256_insert_epi64(<4 x i64> %a0, i64 %a1) nounwind {
1025*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_insert_epi64:
1026*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
1027*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vextractf128 $1, %ymm0, %xmm1
1028*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpinsrd $2, {{[0-9]+}}(%esp), %xmm1, %xmm1
1029*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpinsrd $3, {{[0-9]+}}(%esp), %xmm1, %xmm2
1030*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm0
1031*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm0
1032*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
1033*9880d681SAndroid Build Coastguard Worker;
1034*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_insert_epi64:
1035*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
1036*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vextractf128 $1, %ymm0, %xmm1
1037*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vpinsrq $1, %rdi, %xmm1, %xmm1
1038*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm0
1039*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
1040*9880d681SAndroid Build Coastguard Worker  %res = insertelement <4 x i64> %a0, i64 %a1, i32 3
1041*9880d681SAndroid Build Coastguard Worker  ret <4 x i64> %res
1042*9880d681SAndroid Build Coastguard Worker}
1043*9880d681SAndroid Build Coastguard Worker
1044*9880d681SAndroid Build Coastguard Workerdefine <4 x double> @test_mm256_insertf128_pd(<4 x double> %a0, <2 x double> %a1) nounwind {
1045*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_insertf128_pd:
1046*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
1047*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    # kill: %XMM1<def> %XMM1<kill> %YMM1<def>
1048*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vblendpd {{.*#+}} ymm0 = ymm1[0,1],ymm0[2,3]
1049*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
1050*9880d681SAndroid Build Coastguard Worker;
1051*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_insertf128_pd:
1052*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
1053*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    # kill: %XMM1<def> %XMM1<kill> %YMM1<def>
1054*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vblendpd {{.*#+}} ymm0 = ymm1[0,1],ymm0[2,3]
1055*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
1056*9880d681SAndroid Build Coastguard Worker  %ext = shufflevector <2 x double> %a1, <2 x double> %a1, <4 x i32> <i32 0, i32 1, i32 undef, i32 undef>
1057*9880d681SAndroid Build Coastguard Worker  %res = shufflevector <4 x double> %a0, <4 x double> %ext, <4 x i32> <i32 4, i32 5, i32 2, i32 3>
1058*9880d681SAndroid Build Coastguard Worker  ret <4 x double> %res
1059*9880d681SAndroid Build Coastguard Worker}
1060*9880d681SAndroid Build Coastguard Worker
1061*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @test_mm256_insertf128_ps(<8 x float> %a0, <4 x float> %a1) nounwind {
1062*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_insertf128_ps:
1063*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
1064*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm0
1065*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
1066*9880d681SAndroid Build Coastguard Worker;
1067*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_insertf128_ps:
1068*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
1069*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm0
1070*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
1071*9880d681SAndroid Build Coastguard Worker  %ext = shufflevector <4 x float> %a1, <4 x float> %a1, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 undef, i32 undef, i32 undef, i32 undef>
1072*9880d681SAndroid Build Coastguard Worker  %res = shufflevector <8 x float> %a0, <8 x float> %ext, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 8, i32 9, i32 10, i32 11>
1073*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %res
1074*9880d681SAndroid Build Coastguard Worker}
1075*9880d681SAndroid Build Coastguard Worker
1076*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @test_mm256_insertf128_si256(<4 x i64> %a0, <2 x i64> %a1) nounwind {
1077*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_insertf128_si256:
1078*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
1079*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    # kill: %XMM1<def> %XMM1<kill> %YMM1<def>
1080*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vblendpd {{.*#+}} ymm0 = ymm1[0,1],ymm0[2,3]
1081*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
1082*9880d681SAndroid Build Coastguard Worker;
1083*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_insertf128_si256:
1084*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
1085*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    # kill: %XMM1<def> %XMM1<kill> %YMM1<def>
1086*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vblendpd {{.*#+}} ymm0 = ymm1[0,1],ymm0[2,3]
1087*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
1088*9880d681SAndroid Build Coastguard Worker  %ext = shufflevector <2 x i64> %a1, <2 x i64> %a1, <4 x i32> <i32 0, i32 1, i32 undef, i32 undef>
1089*9880d681SAndroid Build Coastguard Worker  %res = shufflevector <4 x i64> %a0, <4 x i64> %ext, <4 x i32> <i32 4, i32 5, i32 2, i32 3>
1090*9880d681SAndroid Build Coastguard Worker  ret <4 x i64> %res
1091*9880d681SAndroid Build Coastguard Worker}
1092*9880d681SAndroid Build Coastguard Worker
1093*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @test_mm256_lddqu_si256(<4 x i64>* %a0) nounwind {
1094*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_lddqu_si256:
1095*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
1096*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movl {{[0-9]+}}(%esp), %eax
1097*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vlddqu (%eax), %ymm0
1098*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
1099*9880d681SAndroid Build Coastguard Worker;
1100*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_lddqu_si256:
1101*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
1102*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vlddqu (%rdi), %ymm0
1103*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
1104*9880d681SAndroid Build Coastguard Worker  %arg0 = bitcast <4 x i64>* %a0 to i8*
1105*9880d681SAndroid Build Coastguard Worker  %res = call <32 x i8> @llvm.x86.avx.ldu.dq.256(i8* %arg0)
1106*9880d681SAndroid Build Coastguard Worker  %bc = bitcast <32 x i8> %res to <4 x i64>
1107*9880d681SAndroid Build Coastguard Worker  ret <4 x i64> %bc
1108*9880d681SAndroid Build Coastguard Worker}
1109*9880d681SAndroid Build Coastguard Workerdeclare <32 x i8> @llvm.x86.avx.ldu.dq.256(i8*) nounwind readnone
1110*9880d681SAndroid Build Coastguard Worker
1111*9880d681SAndroid Build Coastguard Workerdefine <4 x double> @test_mm256_load_pd(double* %a0) nounwind {
1112*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_load_pd:
1113*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
1114*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movl {{[0-9]+}}(%esp), %eax
1115*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vmovaps (%eax), %ymm0
1116*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
1117*9880d681SAndroid Build Coastguard Worker;
1118*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_load_pd:
1119*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
1120*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vmovaps (%rdi), %ymm0
1121*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
1122*9880d681SAndroid Build Coastguard Worker  %arg0 = bitcast double* %a0 to <4 x double>*
1123*9880d681SAndroid Build Coastguard Worker  %res = load <4 x double>, <4 x double>* %arg0, align 32
1124*9880d681SAndroid Build Coastguard Worker  ret <4 x double> %res
1125*9880d681SAndroid Build Coastguard Worker}
1126*9880d681SAndroid Build Coastguard Worker
1127*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @test_mm256_load_ps(float* %a0) nounwind {
1128*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_load_ps:
1129*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
1130*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movl {{[0-9]+}}(%esp), %eax
1131*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vmovaps (%eax), %ymm0
1132*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
1133*9880d681SAndroid Build Coastguard Worker;
1134*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_load_ps:
1135*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
1136*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vmovaps (%rdi), %ymm0
1137*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
1138*9880d681SAndroid Build Coastguard Worker  %arg0 = bitcast float* %a0 to <8 x float>*
1139*9880d681SAndroid Build Coastguard Worker  %res = load <8 x float>, <8 x float>* %arg0, align 32
1140*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %res
1141*9880d681SAndroid Build Coastguard Worker}
1142*9880d681SAndroid Build Coastguard Worker
1143*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @test_mm256_load_si256(<4 x i64>* %a0) nounwind {
1144*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_load_si256:
1145*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
1146*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movl {{[0-9]+}}(%esp), %eax
1147*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vmovaps (%eax), %ymm0
1148*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
1149*9880d681SAndroid Build Coastguard Worker;
1150*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_load_si256:
1151*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
1152*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vmovaps (%rdi), %ymm0
1153*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
1154*9880d681SAndroid Build Coastguard Worker  %res = load <4 x i64>, <4 x i64>* %a0, align 32
1155*9880d681SAndroid Build Coastguard Worker  ret <4 x i64> %res
1156*9880d681SAndroid Build Coastguard Worker}
1157*9880d681SAndroid Build Coastguard Worker
1158*9880d681SAndroid Build Coastguard Workerdefine <4 x double> @test_mm256_loadu_pd(double* %a0) nounwind {
1159*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_loadu_pd:
1160*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
1161*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movl {{[0-9]+}}(%esp), %eax
1162*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vmovups (%eax), %ymm0
1163*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
1164*9880d681SAndroid Build Coastguard Worker;
1165*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_loadu_pd:
1166*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
1167*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vmovups (%rdi), %ymm0
1168*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
1169*9880d681SAndroid Build Coastguard Worker  %arg0 = bitcast double* %a0 to <4 x double>*
1170*9880d681SAndroid Build Coastguard Worker  %res = load <4 x double>, <4 x double>* %arg0, align 1
1171*9880d681SAndroid Build Coastguard Worker  ret <4 x double> %res
1172*9880d681SAndroid Build Coastguard Worker}
1173*9880d681SAndroid Build Coastguard Worker
1174*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @test_mm256_loadu_ps(float* %a0) nounwind {
1175*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_loadu_ps:
1176*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
1177*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movl {{[0-9]+}}(%esp), %eax
1178*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vmovups (%eax), %ymm0
1179*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
1180*9880d681SAndroid Build Coastguard Worker;
1181*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_loadu_ps:
1182*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
1183*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vmovups (%rdi), %ymm0
1184*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
1185*9880d681SAndroid Build Coastguard Worker  %arg0 = bitcast float* %a0 to <8 x float>*
1186*9880d681SAndroid Build Coastguard Worker  %res = load <8 x float>, <8 x float>* %arg0, align 1
1187*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %res
1188*9880d681SAndroid Build Coastguard Worker}
1189*9880d681SAndroid Build Coastguard Worker
1190*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @test_mm256_loadu_si256(<4 x i64>* %a0) nounwind {
1191*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_loadu_si256:
1192*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
1193*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movl {{[0-9]+}}(%esp), %eax
1194*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vmovups (%eax), %ymm0
1195*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
1196*9880d681SAndroid Build Coastguard Worker;
1197*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_loadu_si256:
1198*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
1199*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vmovups (%rdi), %ymm0
1200*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
1201*9880d681SAndroid Build Coastguard Worker  %res = load <4 x i64>, <4 x i64>* %a0, align 1
1202*9880d681SAndroid Build Coastguard Worker  ret <4 x i64> %res
1203*9880d681SAndroid Build Coastguard Worker}
1204*9880d681SAndroid Build Coastguard Worker
1205*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @test_mm256_loadu2_m128(float* %a0, float* %a1) nounwind {
1206*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_loadu2_m128:
1207*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
1208*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movl {{[0-9]+}}(%esp), %eax
1209*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movl {{[0-9]+}}(%esp), %ecx
1210*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vmovups (%eax), %xmm0
1211*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vinsertf128 $1, (%ecx), %ymm0, %ymm0
1212*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
1213*9880d681SAndroid Build Coastguard Worker;
1214*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_loadu2_m128:
1215*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
1216*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vmovups (%rsi), %xmm0
1217*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vinsertf128 $1, (%rdi), %ymm0, %ymm0
1218*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
1219*9880d681SAndroid Build Coastguard Worker  %arg0 = bitcast float* %a0 to <4 x float>*
1220*9880d681SAndroid Build Coastguard Worker  %hi4 = load <4 x float>, <4 x float>* %arg0, align 1
1221*9880d681SAndroid Build Coastguard Worker  %hi8 = shufflevector <4 x float> %hi4, <4 x float> %hi4, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 undef, i32 undef, i32 undef, i32 undef>
1222*9880d681SAndroid Build Coastguard Worker  %arg1 = bitcast float* %a1 to <4 x float>*
1223*9880d681SAndroid Build Coastguard Worker  %lo4 = load <4 x float>, <4 x float>* %arg1, align 1
1224*9880d681SAndroid Build Coastguard Worker  %lo8 = shufflevector <4 x float> %lo4, <4 x float> %lo4, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 undef, i32 undef, i32 undef, i32 undef>
1225*9880d681SAndroid Build Coastguard Worker  %res = shufflevector <8 x float> %lo8, <8 x float> %hi8, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 8, i32 9, i32 10, i32 11>
1226*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %res
1227*9880d681SAndroid Build Coastguard Worker}
1228*9880d681SAndroid Build Coastguard Worker
1229*9880d681SAndroid Build Coastguard Workerdefine <4 x double> @test_mm256_loadu2_m128d(double* %a0, double* %a1) nounwind {
1230*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_loadu2_m128d:
1231*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
1232*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movl {{[0-9]+}}(%esp), %eax
1233*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movl {{[0-9]+}}(%esp), %ecx
1234*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vmovups (%eax), %xmm0
1235*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vinsertf128 $1, (%ecx), %ymm0, %ymm0
1236*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
1237*9880d681SAndroid Build Coastguard Worker;
1238*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_loadu2_m128d:
1239*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
1240*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vmovups (%rsi), %xmm0
1241*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vinsertf128 $1, (%rdi), %ymm0, %ymm0
1242*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
1243*9880d681SAndroid Build Coastguard Worker  %arg0 = bitcast double* %a0 to <2 x double>*
1244*9880d681SAndroid Build Coastguard Worker  %hi2 = load <2 x double>, <2 x double>* %arg0, align 1
1245*9880d681SAndroid Build Coastguard Worker  %hi4 = shufflevector <2 x double> %hi2, <2 x double> %hi2, <4 x i32> <i32 0, i32 1, i32 undef, i32 undef>
1246*9880d681SAndroid Build Coastguard Worker  %arg1 = bitcast double* %a1 to <2 x double>*
1247*9880d681SAndroid Build Coastguard Worker  %lo2 = load <2 x double>, <2 x double>* %arg1, align 1
1248*9880d681SAndroid Build Coastguard Worker  %lo4 = shufflevector <2 x double> %lo2, <2 x double> %lo2, <4 x i32> <i32 0, i32 1, i32 undef, i32 undef>
1249*9880d681SAndroid Build Coastguard Worker  %res = shufflevector <4 x double> %lo4, <4 x double> %hi4, <4 x i32> <i32 0, i32 1, i32 4, i32 5>
1250*9880d681SAndroid Build Coastguard Worker  ret <4 x double> %res
1251*9880d681SAndroid Build Coastguard Worker}
1252*9880d681SAndroid Build Coastguard Worker
1253*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @test_mm256_loadu2_m128i(i64* %a0, i64* %a1) nounwind {
1254*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_loadu2_m128i:
1255*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
1256*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movl {{[0-9]+}}(%esp), %eax
1257*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movl {{[0-9]+}}(%esp), %ecx
1258*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vmovups (%eax), %xmm0
1259*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vinsertf128 $1, (%ecx), %ymm0, %ymm0
1260*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
1261*9880d681SAndroid Build Coastguard Worker;
1262*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_loadu2_m128i:
1263*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
1264*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vmovups (%rsi), %xmm0
1265*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vinsertf128 $1, (%rdi), %ymm0, %ymm0
1266*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
1267*9880d681SAndroid Build Coastguard Worker  %arg0 = bitcast i64* %a0 to <2 x i64>*
1268*9880d681SAndroid Build Coastguard Worker  %hi2 = load <2 x i64>, <2 x i64>* %arg0, align 1
1269*9880d681SAndroid Build Coastguard Worker  %hi4 = shufflevector <2 x i64> %hi2, <2 x i64> %hi2, <4 x i32> <i32 0, i32 1, i32 undef, i32 undef>
1270*9880d681SAndroid Build Coastguard Worker  %arg1 = bitcast i64* %a1 to <2 x i64>*
1271*9880d681SAndroid Build Coastguard Worker  %lo2 = load <2 x i64>, <2 x i64>* %arg1, align 1
1272*9880d681SAndroid Build Coastguard Worker  %lo4 = shufflevector <2 x i64> %lo2, <2 x i64> %lo2, <4 x i32> <i32 0, i32 1, i32 undef, i32 undef>
1273*9880d681SAndroid Build Coastguard Worker  %res = shufflevector <4 x i64> %lo4, <4 x i64> %hi4, <4 x i32> <i32 0, i32 1, i32 4, i32 5>
1274*9880d681SAndroid Build Coastguard Worker  ret <4 x i64> %res
1275*9880d681SAndroid Build Coastguard Worker}
1276*9880d681SAndroid Build Coastguard Worker
1277*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mm_maskload_pd(double* %a0, <2 x i64> %a1) nounwind {
1278*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_maskload_pd:
1279*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
1280*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movl {{[0-9]+}}(%esp), %eax
1281*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vmaskmovpd (%eax), %xmm0, %xmm0
1282*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
1283*9880d681SAndroid Build Coastguard Worker;
1284*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_maskload_pd:
1285*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
1286*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vmaskmovpd (%rdi), %xmm0, %xmm0
1287*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
1288*9880d681SAndroid Build Coastguard Worker  %arg0 = bitcast double* %a0 to i8*
1289*9880d681SAndroid Build Coastguard Worker  %res = call <2 x double> @llvm.x86.avx.maskload.pd(i8* %arg0, <2 x i64> %a1)
1290*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %res
1291*9880d681SAndroid Build Coastguard Worker}
1292*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.avx.maskload.pd(i8*, <2 x i64>) nounwind readnone
1293*9880d681SAndroid Build Coastguard Worker
1294*9880d681SAndroid Build Coastguard Workerdefine <4 x double> @test_mm256_maskload_pd(double* %a0, <4 x i64> %a1) nounwind {
1295*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_maskload_pd:
1296*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
1297*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movl {{[0-9]+}}(%esp), %eax
1298*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vmaskmovpd (%eax), %ymm0, %ymm0
1299*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
1300*9880d681SAndroid Build Coastguard Worker;
1301*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_maskload_pd:
1302*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
1303*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vmaskmovpd (%rdi), %ymm0, %ymm0
1304*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
1305*9880d681SAndroid Build Coastguard Worker  %arg0 = bitcast double* %a0 to i8*
1306*9880d681SAndroid Build Coastguard Worker  %res = call <4 x double> @llvm.x86.avx.maskload.pd.256(i8* %arg0, <4 x i64> %a1)
1307*9880d681SAndroid Build Coastguard Worker  ret <4 x double> %res
1308*9880d681SAndroid Build Coastguard Worker}
1309*9880d681SAndroid Build Coastguard Workerdeclare <4 x double> @llvm.x86.avx.maskload.pd.256(i8*, <4 x i64>) nounwind readnone
1310*9880d681SAndroid Build Coastguard Worker
1311*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_mm_maskload_ps(float* %a0, <2 x i64> %a1) nounwind {
1312*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_maskload_ps:
1313*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
1314*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movl {{[0-9]+}}(%esp), %eax
1315*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vmaskmovps (%eax), %xmm0, %xmm0
1316*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
1317*9880d681SAndroid Build Coastguard Worker;
1318*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_maskload_ps:
1319*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
1320*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vmaskmovps (%rdi), %xmm0, %xmm0
1321*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
1322*9880d681SAndroid Build Coastguard Worker  %arg0 = bitcast float* %a0 to i8*
1323*9880d681SAndroid Build Coastguard Worker  %arg1 = bitcast <2 x i64> %a1 to <4 x i32>
1324*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.avx.maskload.ps(i8* %arg0, <4 x i32> %arg1)
1325*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res
1326*9880d681SAndroid Build Coastguard Worker}
1327*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.avx.maskload.ps(i8*, <4 x i32>) nounwind readnone
1328*9880d681SAndroid Build Coastguard Worker
1329*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @test_mm256_maskload_ps(float* %a0, <4 x i64> %a1) nounwind {
1330*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_maskload_ps:
1331*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
1332*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movl {{[0-9]+}}(%esp), %eax
1333*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vmaskmovps (%eax), %ymm0, %ymm0
1334*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
1335*9880d681SAndroid Build Coastguard Worker;
1336*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_maskload_ps:
1337*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
1338*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vmaskmovps (%rdi), %ymm0, %ymm0
1339*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
1340*9880d681SAndroid Build Coastguard Worker  %arg0 = bitcast float* %a0 to i8*
1341*9880d681SAndroid Build Coastguard Worker  %arg1 = bitcast <4 x i64> %a1 to <8 x i32>
1342*9880d681SAndroid Build Coastguard Worker  %res = call <8 x float> @llvm.x86.avx.maskload.ps.256(i8* %arg0, <8 x i32> %arg1)
1343*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %res
1344*9880d681SAndroid Build Coastguard Worker}
1345*9880d681SAndroid Build Coastguard Workerdeclare <8 x float> @llvm.x86.avx.maskload.ps.256(i8*, <8 x i32>) nounwind readnone
1346*9880d681SAndroid Build Coastguard Worker
1347*9880d681SAndroid Build Coastguard Workerdefine void @test_mm_maskstore_pd(double* %a0, <2 x i64> %a1, <2 x double> %a2) nounwind {
1348*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_maskstore_pd:
1349*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
1350*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movl {{[0-9]+}}(%esp), %eax
1351*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vmaskmovpd %xmm1, %xmm0, (%eax)
1352*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
1353*9880d681SAndroid Build Coastguard Worker;
1354*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_maskstore_pd:
1355*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
1356*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vmaskmovpd %xmm1, %xmm0, (%rdi)
1357*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
1358*9880d681SAndroid Build Coastguard Worker  %arg0 = bitcast double* %a0 to i8*
1359*9880d681SAndroid Build Coastguard Worker  call void @llvm.x86.avx.maskstore.pd(i8* %arg0, <2 x i64> %a1, <2 x double> %a2)
1360*9880d681SAndroid Build Coastguard Worker  ret void
1361*9880d681SAndroid Build Coastguard Worker}
1362*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.x86.avx.maskstore.pd(i8*, <2 x i64>, <2 x double>) nounwind readnone
1363*9880d681SAndroid Build Coastguard Worker
1364*9880d681SAndroid Build Coastguard Workerdefine void @test_mm256_maskstore_pd(double* %a0, <4 x i64> %a1, <4 x double> %a2) nounwind {
1365*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_maskstore_pd:
1366*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
1367*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movl {{[0-9]+}}(%esp), %eax
1368*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vmaskmovpd %ymm1, %ymm0, (%eax)
1369*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vzeroupper
1370*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
1371*9880d681SAndroid Build Coastguard Worker;
1372*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_maskstore_pd:
1373*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
1374*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vmaskmovpd %ymm1, %ymm0, (%rdi)
1375*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vzeroupper
1376*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
1377*9880d681SAndroid Build Coastguard Worker  %arg0 = bitcast double* %a0 to i8*
1378*9880d681SAndroid Build Coastguard Worker  call void @llvm.x86.avx.maskstore.pd.256(i8* %arg0, <4 x i64> %a1, <4 x double> %a2)
1379*9880d681SAndroid Build Coastguard Worker  ret void
1380*9880d681SAndroid Build Coastguard Worker}
1381*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.x86.avx.maskstore.pd.256(i8*, <4 x i64>, <4 x double>) nounwind readnone
1382*9880d681SAndroid Build Coastguard Worker
1383*9880d681SAndroid Build Coastguard Workerdefine void @test_mm_maskstore_ps(float* %a0, <2 x i64> %a1, <4 x float> %a2) nounwind {
1384*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_maskstore_ps:
1385*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
1386*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movl {{[0-9]+}}(%esp), %eax
1387*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vmaskmovps %xmm1, %xmm0, (%eax)
1388*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
1389*9880d681SAndroid Build Coastguard Worker;
1390*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_maskstore_ps:
1391*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
1392*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vmaskmovps %xmm1, %xmm0, (%rdi)
1393*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
1394*9880d681SAndroid Build Coastguard Worker  %arg0 = bitcast float* %a0 to i8*
1395*9880d681SAndroid Build Coastguard Worker  %arg1 = bitcast <2 x i64> %a1 to <4 x i32>
1396*9880d681SAndroid Build Coastguard Worker  call void @llvm.x86.avx.maskstore.ps(i8* %arg0, <4 x i32> %arg1, <4 x float> %a2)
1397*9880d681SAndroid Build Coastguard Worker  ret void
1398*9880d681SAndroid Build Coastguard Worker}
1399*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.x86.avx.maskstore.ps(i8*, <4 x i32>, <4 x float>) nounwind readnone
1400*9880d681SAndroid Build Coastguard Worker
1401*9880d681SAndroid Build Coastguard Workerdefine void @test_mm256_maskstore_ps(float* %a0, <4 x i64> %a1, <8 x float> %a2) nounwind {
1402*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_maskstore_ps:
1403*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
1404*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movl {{[0-9]+}}(%esp), %eax
1405*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vmaskmovps %ymm1, %ymm0, (%eax)
1406*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vzeroupper
1407*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
1408*9880d681SAndroid Build Coastguard Worker;
1409*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_maskstore_ps:
1410*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
1411*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vmaskmovps %ymm1, %ymm0, (%rdi)
1412*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vzeroupper
1413*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
1414*9880d681SAndroid Build Coastguard Worker  %arg0 = bitcast float* %a0 to i8*
1415*9880d681SAndroid Build Coastguard Worker  %arg1 = bitcast <4 x i64> %a1 to <8 x i32>
1416*9880d681SAndroid Build Coastguard Worker  call void @llvm.x86.avx.maskstore.ps.256(i8* %arg0, <8 x i32> %arg1, <8 x float> %a2)
1417*9880d681SAndroid Build Coastguard Worker  ret void
1418*9880d681SAndroid Build Coastguard Worker}
1419*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.x86.avx.maskstore.ps.256(i8*, <8 x i32>, <8 x float>) nounwind readnone
1420*9880d681SAndroid Build Coastguard Worker
1421*9880d681SAndroid Build Coastguard Workerdefine <4 x double> @test_mm256_max_pd(<4 x double> %a0, <4 x double> %a1) nounwind {
1422*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_max_pd:
1423*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
1424*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vmaxpd %ymm1, %ymm0, %ymm0
1425*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
1426*9880d681SAndroid Build Coastguard Worker;
1427*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_max_pd:
1428*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
1429*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vmaxpd %ymm1, %ymm0, %ymm0
1430*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
1431*9880d681SAndroid Build Coastguard Worker  %res = call <4 x double> @llvm.x86.avx.max.pd.256(<4 x double> %a0, <4 x double> %a1)
1432*9880d681SAndroid Build Coastguard Worker  ret <4 x double> %res
1433*9880d681SAndroid Build Coastguard Worker}
1434*9880d681SAndroid Build Coastguard Workerdeclare <4 x double> @llvm.x86.avx.max.pd.256(<4 x double>, <4 x double>) nounwind readnone
1435*9880d681SAndroid Build Coastguard Worker
1436*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @test_mm256_max_ps(<8 x float> %a0, <8 x float> %a1) nounwind {
1437*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_max_ps:
1438*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
1439*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vmaxps %ymm1, %ymm0, %ymm0
1440*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
1441*9880d681SAndroid Build Coastguard Worker;
1442*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_max_ps:
1443*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
1444*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vmaxps %ymm1, %ymm0, %ymm0
1445*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
1446*9880d681SAndroid Build Coastguard Worker  %res = call <8 x float> @llvm.x86.avx.max.ps.256(<8 x float> %a0, <8 x float> %a1)
1447*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %res
1448*9880d681SAndroid Build Coastguard Worker}
1449*9880d681SAndroid Build Coastguard Workerdeclare <8 x float> @llvm.x86.avx.max.ps.256(<8 x float>, <8 x float>) nounwind readnone
1450*9880d681SAndroid Build Coastguard Worker
1451*9880d681SAndroid Build Coastguard Workerdefine <4 x double> @test_mm256_min_pd(<4 x double> %a0, <4 x double> %a1) nounwind {
1452*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_min_pd:
1453*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
1454*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vminpd %ymm1, %ymm0, %ymm0
1455*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
1456*9880d681SAndroid Build Coastguard Worker;
1457*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_min_pd:
1458*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
1459*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vminpd %ymm1, %ymm0, %ymm0
1460*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
1461*9880d681SAndroid Build Coastguard Worker  %res = call <4 x double> @llvm.x86.avx.min.pd.256(<4 x double> %a0, <4 x double> %a1)
1462*9880d681SAndroid Build Coastguard Worker  ret <4 x double> %res
1463*9880d681SAndroid Build Coastguard Worker}
1464*9880d681SAndroid Build Coastguard Workerdeclare <4 x double> @llvm.x86.avx.min.pd.256(<4 x double>, <4 x double>) nounwind readnone
1465*9880d681SAndroid Build Coastguard Worker
1466*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @test_mm256_min_ps(<8 x float> %a0, <8 x float> %a1) nounwind {
1467*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_min_ps:
1468*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
1469*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vminps %ymm1, %ymm0, %ymm0
1470*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
1471*9880d681SAndroid Build Coastguard Worker;
1472*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_min_ps:
1473*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
1474*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vminps %ymm1, %ymm0, %ymm0
1475*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
1476*9880d681SAndroid Build Coastguard Worker  %res = call <8 x float> @llvm.x86.avx.min.ps.256(<8 x float> %a0, <8 x float> %a1)
1477*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %res
1478*9880d681SAndroid Build Coastguard Worker}
1479*9880d681SAndroid Build Coastguard Workerdeclare <8 x float> @llvm.x86.avx.min.ps.256(<8 x float>, <8 x float>) nounwind readnone
1480*9880d681SAndroid Build Coastguard Worker
1481*9880d681SAndroid Build Coastguard Workerdefine <4 x double> @test_mm256_movedup_pd(<4 x double> %a0) nounwind {
1482*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_movedup_pd:
1483*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
1484*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vmovddup {{.*#+}} ymm0 = ymm0[0,0,2,2]
1485*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
1486*9880d681SAndroid Build Coastguard Worker;
1487*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_movedup_pd:
1488*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
1489*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vmovddup {{.*#+}} ymm0 = ymm0[0,0,2,2]
1490*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
1491*9880d681SAndroid Build Coastguard Worker  %res = shufflevector <4 x double> %a0, <4 x double> %a0, <4 x i32> <i32 0, i32 0, i32 2, i32 2>
1492*9880d681SAndroid Build Coastguard Worker  ret <4 x double> %res
1493*9880d681SAndroid Build Coastguard Worker}
1494*9880d681SAndroid Build Coastguard Worker
1495*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @test_mm256_movehdup_ps(<8 x float> %a0) nounwind {
1496*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_movehdup_ps:
1497*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
1498*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vmovshdup {{.*#+}} ymm0 = ymm0[1,1,3,3,5,5,7,7]
1499*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
1500*9880d681SAndroid Build Coastguard Worker;
1501*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_movehdup_ps:
1502*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
1503*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vmovshdup {{.*#+}} ymm0 = ymm0[1,1,3,3,5,5,7,7]
1504*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
1505*9880d681SAndroid Build Coastguard Worker  %res = shufflevector <8 x float> %a0, <8 x float> %a0, <8 x i32> <i32 1, i32 1, i32 3, i32 3, i32 5, i32 5, i32 7, i32 7>
1506*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %res
1507*9880d681SAndroid Build Coastguard Worker}
1508*9880d681SAndroid Build Coastguard Worker
1509*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @test_mm256_moveldup_ps(<8 x float> %a0) nounwind {
1510*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_moveldup_ps:
1511*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
1512*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vmovsldup {{.*#+}} ymm0 = ymm0[0,0,2,2,4,4,6,6]
1513*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
1514*9880d681SAndroid Build Coastguard Worker;
1515*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_moveldup_ps:
1516*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
1517*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vmovsldup {{.*#+}} ymm0 = ymm0[0,0,2,2,4,4,6,6]
1518*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
1519*9880d681SAndroid Build Coastguard Worker  %res = shufflevector <8 x float> %a0, <8 x float> %a0, <8 x i32> <i32 0, i32 0, i32 2, i32 2, i32 4, i32 4, i32 6, i32 6>
1520*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %res
1521*9880d681SAndroid Build Coastguard Worker}
1522*9880d681SAndroid Build Coastguard Worker
1523*9880d681SAndroid Build Coastguard Workerdefine i32 @test_mm256_movemask_pd(<4 x double> %a0) nounwind {
1524*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_movemask_pd:
1525*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
1526*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vmovmskpd %ymm0, %eax
1527*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vzeroupper
1528*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
1529*9880d681SAndroid Build Coastguard Worker;
1530*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_movemask_pd:
1531*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
1532*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vmovmskpd %ymm0, %eax
1533*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vzeroupper
1534*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
1535*9880d681SAndroid Build Coastguard Worker  %res = call i32 @llvm.x86.avx.movmsk.pd.256(<4 x double> %a0)
1536*9880d681SAndroid Build Coastguard Worker  ret i32 %res
1537*9880d681SAndroid Build Coastguard Worker}
1538*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.avx.movmsk.pd.256(<4 x double>) nounwind readnone
1539*9880d681SAndroid Build Coastguard Worker
1540*9880d681SAndroid Build Coastguard Workerdefine i32 @test_mm256_movemask_ps(<8 x float> %a0) nounwind {
1541*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_movemask_ps:
1542*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
1543*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vmovmskps %ymm0, %eax
1544*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vzeroupper
1545*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
1546*9880d681SAndroid Build Coastguard Worker;
1547*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_movemask_ps:
1548*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
1549*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vmovmskps %ymm0, %eax
1550*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vzeroupper
1551*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
1552*9880d681SAndroid Build Coastguard Worker  %res = call i32 @llvm.x86.avx.movmsk.ps.256(<8 x float> %a0)
1553*9880d681SAndroid Build Coastguard Worker  ret i32 %res
1554*9880d681SAndroid Build Coastguard Worker}
1555*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.avx.movmsk.ps.256(<8 x float>) nounwind readnone
1556*9880d681SAndroid Build Coastguard Worker
1557*9880d681SAndroid Build Coastguard Workerdefine <4 x double> @test_mm256_mul_pd(<4 x double> %a0, <4 x double> %a1) nounwind {
1558*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_mul_pd:
1559*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
1560*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vmulpd %ymm1, %ymm0, %ymm0
1561*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
1562*9880d681SAndroid Build Coastguard Worker;
1563*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_mul_pd:
1564*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
1565*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vmulpd %ymm1, %ymm0, %ymm0
1566*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
1567*9880d681SAndroid Build Coastguard Worker  %res = fmul <4 x double> %a0, %a1
1568*9880d681SAndroid Build Coastguard Worker  ret <4 x double> %res
1569*9880d681SAndroid Build Coastguard Worker}
1570*9880d681SAndroid Build Coastguard Worker
1571*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @test_mm256_mul_ps(<8 x float> %a0, <8 x float> %a1) nounwind {
1572*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_mul_ps:
1573*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
1574*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vmulps %ymm1, %ymm0, %ymm0
1575*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
1576*9880d681SAndroid Build Coastguard Worker;
1577*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_mul_ps:
1578*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
1579*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vmulps %ymm1, %ymm0, %ymm0
1580*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
1581*9880d681SAndroid Build Coastguard Worker  %res = fmul <8 x float> %a0, %a1
1582*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %res
1583*9880d681SAndroid Build Coastguard Worker}
1584*9880d681SAndroid Build Coastguard Worker
1585*9880d681SAndroid Build Coastguard Workerdefine <4 x double> @test_mm256_or_pd(<4 x double> %a0, <4 x double> %a1) nounwind {
1586*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_or_pd:
1587*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
1588*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vorps %ymm1, %ymm0, %ymm0
1589*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
1590*9880d681SAndroid Build Coastguard Worker;
1591*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_or_pd:
1592*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
1593*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vorps %ymm1, %ymm0, %ymm0
1594*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
1595*9880d681SAndroid Build Coastguard Worker  %1 = bitcast <4 x double> %a0 to <4 x i64>
1596*9880d681SAndroid Build Coastguard Worker  %2 = bitcast <4 x double> %a1 to <4 x i64>
1597*9880d681SAndroid Build Coastguard Worker  %res = or <4 x i64> %1, %2
1598*9880d681SAndroid Build Coastguard Worker  %bc = bitcast <4 x i64> %res to <4 x double>
1599*9880d681SAndroid Build Coastguard Worker  ret <4 x double> %bc
1600*9880d681SAndroid Build Coastguard Worker}
1601*9880d681SAndroid Build Coastguard Worker
1602*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @test_mm256_or_ps(<8 x float> %a0, <8 x float> %a1) nounwind {
1603*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_or_ps:
1604*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
1605*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vorps %ymm1, %ymm0, %ymm0
1606*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
1607*9880d681SAndroid Build Coastguard Worker;
1608*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_or_ps:
1609*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
1610*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vorps %ymm1, %ymm0, %ymm0
1611*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
1612*9880d681SAndroid Build Coastguard Worker  %1 = bitcast <8 x float> %a0 to <8 x i32>
1613*9880d681SAndroid Build Coastguard Worker  %2 = bitcast <8 x float> %a1 to <8 x i32>
1614*9880d681SAndroid Build Coastguard Worker  %res = or <8 x i32> %1, %2
1615*9880d681SAndroid Build Coastguard Worker  %bc = bitcast <8 x i32> %res to <8 x float>
1616*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %bc
1617*9880d681SAndroid Build Coastguard Worker}
1618*9880d681SAndroid Build Coastguard Worker
1619*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mm_permute_pd(<2 x double> %a0) nounwind {
1620*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_permute_pd:
1621*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
1622*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpermilpd {{.*#+}} xmm0 = xmm0[1,0]
1623*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
1624*9880d681SAndroid Build Coastguard Worker;
1625*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_permute_pd:
1626*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
1627*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vpermilpd {{.*#+}} xmm0 = xmm0[1,0]
1628*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
1629*9880d681SAndroid Build Coastguard Worker  %res = shufflevector <2 x double> %a0, <2 x double> %a0, <2 x i32> <i32 1, i32 0>
1630*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %res
1631*9880d681SAndroid Build Coastguard Worker}
1632*9880d681SAndroid Build Coastguard Worker
1633*9880d681SAndroid Build Coastguard Workerdefine <4 x double> @test_mm256_permute_pd(<4 x double> %a0) nounwind {
1634*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_permute_pd:
1635*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
1636*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpermilpd {{.*#+}} ymm0 = ymm0[1,0,3,2]
1637*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
1638*9880d681SAndroid Build Coastguard Worker;
1639*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_permute_pd:
1640*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
1641*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vpermilpd {{.*#+}} ymm0 = ymm0[1,0,3,2]
1642*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
1643*9880d681SAndroid Build Coastguard Worker  %res = shufflevector <4 x double> %a0, <4 x double> %a0, <4 x i32> <i32 1, i32 0, i32 3, i32 2>
1644*9880d681SAndroid Build Coastguard Worker  ret <4 x double> %res
1645*9880d681SAndroid Build Coastguard Worker}
1646*9880d681SAndroid Build Coastguard Worker
1647*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_mm_permute_ps(<4 x float> %a0) nounwind {
1648*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_permute_ps:
1649*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
1650*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpermilps {{.*#+}} xmm0 = xmm0[3,2,1,0]
1651*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
1652*9880d681SAndroid Build Coastguard Worker;
1653*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_permute_ps:
1654*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
1655*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vpermilps {{.*#+}} xmm0 = xmm0[3,2,1,0]
1656*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
1657*9880d681SAndroid Build Coastguard Worker  %res = shufflevector <4 x float> %a0, <4 x float> %a0, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
1658*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res
1659*9880d681SAndroid Build Coastguard Worker}
1660*9880d681SAndroid Build Coastguard Worker
1661*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test2_mm_permute_ps(<4 x float> %a0) nounwind {
1662*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test2_mm_permute_ps:
1663*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
1664*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpermilps {{.*#+}} xmm0 = xmm0[2,1,2,3]
1665*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
1666*9880d681SAndroid Build Coastguard Worker;
1667*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test2_mm_permute_ps:
1668*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
1669*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vpermilps {{.*#+}} xmm0 = xmm0[2,1,2,3]
1670*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
1671*9880d681SAndroid Build Coastguard Worker  %res = shufflevector <4 x float> %a0, <4 x float> %a0, <4 x i32> <i32 2, i32 1, i32 2, i32 3>
1672*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res
1673*9880d681SAndroid Build Coastguard Worker}
1674*9880d681SAndroid Build Coastguard Worker
1675*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @test_mm256_permute_ps(<8 x float> %a0) nounwind {
1676*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_permute_ps:
1677*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
1678*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpermilps {{.*#+}} ymm0 = ymm0[3,2,1,0,7,6,5,4]
1679*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
1680*9880d681SAndroid Build Coastguard Worker;
1681*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_permute_ps:
1682*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
1683*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vpermilps {{.*#+}} ymm0 = ymm0[3,2,1,0,7,6,5,4]
1684*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
1685*9880d681SAndroid Build Coastguard Worker  %res = shufflevector <8 x float> %a0, <8 x float> %a0, <8 x i32> <i32 3, i32 2, i32 1, i32 0, i32 7, i32 6, i32 5, i32 4>
1686*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %res
1687*9880d681SAndroid Build Coastguard Worker}
1688*9880d681SAndroid Build Coastguard Worker
1689*9880d681SAndroid Build Coastguard Workerdefine <4 x double> @test_mm256_permute2f128_pd(<4 x double> %a0, <4 x double> %a1) nounwind {
1690*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_permute2f128_pd:
1691*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
1692*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vperm2f128 {{.*#+}} ymm0 = zero,zero,ymm1[0,1]
1693*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
1694*9880d681SAndroid Build Coastguard Worker;
1695*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_permute2f128_pd:
1696*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
1697*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vperm2f128 {{.*#+}} ymm0 = zero,zero,ymm1[0,1]
1698*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
1699*9880d681SAndroid Build Coastguard Worker  %res = call <4 x double> @llvm.x86.avx.vperm2f128.pd.256(<4 x double> %a0, <4 x double> %a1, i8 44)
1700*9880d681SAndroid Build Coastguard Worker  ret <4 x double> %res
1701*9880d681SAndroid Build Coastguard Worker}
1702*9880d681SAndroid Build Coastguard Workerdeclare <4 x double> @llvm.x86.avx.vperm2f128.pd.256(<4 x double>, <4 x double>, i8) nounwind readnone
1703*9880d681SAndroid Build Coastguard Worker
1704*9880d681SAndroid Build Coastguard Worker; PR26667
1705*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @test_mm256_permute2f128_ps(<8 x float> %a0, <8 x float> %a1) nounwind {
1706*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_permute2f128_ps:
1707*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
1708*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vmovaps %ymm1, %ymm0
1709*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
1710*9880d681SAndroid Build Coastguard Worker;
1711*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_permute2f128_ps:
1712*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
1713*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vmovaps %ymm1, %ymm0
1714*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
1715*9880d681SAndroid Build Coastguard Worker  %res = call <8 x float> @llvm.x86.avx.vperm2f128.ps.256(<8 x float> %a0, <8 x float> %a1, i8 50)
1716*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %res
1717*9880d681SAndroid Build Coastguard Worker}
1718*9880d681SAndroid Build Coastguard Workerdeclare <8 x float> @llvm.x86.avx.vperm2f128.ps.256(<8 x float>, <8 x float>, i8) nounwind readnone
1719*9880d681SAndroid Build Coastguard Worker
1720*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @test_mm256_permute2f128_si256(<4 x i64> %a0, <4 x i64> %a1) nounwind {
1721*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_permute2f128_si256:
1722*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
1723*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vperm2f128 {{.*#+}} ymm0 = ymm1[2,3,0,1]
1724*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
1725*9880d681SAndroid Build Coastguard Worker;
1726*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_permute2f128_si256:
1727*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
1728*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vperm2f128 {{.*#+}} ymm0 = ymm1[2,3,0,1]
1729*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
1730*9880d681SAndroid Build Coastguard Worker  %1 = bitcast <4 x i64> %a0 to <8 x i32>
1731*9880d681SAndroid Build Coastguard Worker  %2 = bitcast <4 x i64> %a1 to <8 x i32>
1732*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i32> @llvm.x86.avx.vperm2f128.si.256(<8 x i32> %1, <8 x i32> %2, i8 35)
1733*9880d681SAndroid Build Coastguard Worker  %bc = bitcast <8 x i32> %res to <4 x i64>
1734*9880d681SAndroid Build Coastguard Worker  ret <4 x i64> %bc
1735*9880d681SAndroid Build Coastguard Worker}
1736*9880d681SAndroid Build Coastguard Workerdeclare <8 x i32> @llvm.x86.avx.vperm2f128.si.256(<8 x i32>, <8 x i32>, i8) nounwind readnone
1737*9880d681SAndroid Build Coastguard Worker
1738*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mm_permutevar_pd(<2 x double> %a0, <2 x i64> %a1) nounwind {
1739*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_permutevar_pd:
1740*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
1741*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpermilpd %xmm1, %xmm0, %xmm0
1742*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
1743*9880d681SAndroid Build Coastguard Worker;
1744*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_permutevar_pd:
1745*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
1746*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vpermilpd %xmm1, %xmm0, %xmm0
1747*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
1748*9880d681SAndroid Build Coastguard Worker  %res = call <2 x double> @llvm.x86.avx.vpermilvar.pd(<2 x double> %a0, <2 x i64> %a1)
1749*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %res
1750*9880d681SAndroid Build Coastguard Worker}
1751*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.avx.vpermilvar.pd(<2 x double>, <2 x i64>) nounwind readnone
1752*9880d681SAndroid Build Coastguard Worker
1753*9880d681SAndroid Build Coastguard Workerdefine <4 x double> @test_mm256_permutevar_pd(<4 x double> %a0, <4 x i64> %a1) nounwind {
1754*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_permutevar_pd:
1755*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
1756*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpermilpd %ymm1, %ymm0, %ymm0
1757*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
1758*9880d681SAndroid Build Coastguard Worker;
1759*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_permutevar_pd:
1760*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
1761*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vpermilpd %ymm1, %ymm0, %ymm0
1762*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
1763*9880d681SAndroid Build Coastguard Worker  %res = call <4 x double> @llvm.x86.avx.vpermilvar.pd.256(<4 x double> %a0, <4 x i64> %a1)
1764*9880d681SAndroid Build Coastguard Worker  ret <4 x double> %res
1765*9880d681SAndroid Build Coastguard Worker}
1766*9880d681SAndroid Build Coastguard Workerdeclare <4 x double> @llvm.x86.avx.vpermilvar.pd.256(<4 x double>, <4 x i64>) nounwind readnone
1767*9880d681SAndroid Build Coastguard Worker
1768*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_mm_permutevar_ps(<4 x float> %a0, <2 x i64> %a1) nounwind {
1769*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_permutevar_ps:
1770*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
1771*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpermilps %xmm1, %xmm0, %xmm0
1772*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
1773*9880d681SAndroid Build Coastguard Worker;
1774*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_permutevar_ps:
1775*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
1776*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vpermilps %xmm1, %xmm0, %xmm0
1777*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
1778*9880d681SAndroid Build Coastguard Worker  %arg1 = bitcast <2 x i64> %a1 to <4 x i32>
1779*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.avx.vpermilvar.ps(<4 x float> %a0, <4 x i32> %arg1)
1780*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res
1781*9880d681SAndroid Build Coastguard Worker}
1782*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.avx.vpermilvar.ps(<4 x float>, <4 x i32>) nounwind readnone
1783*9880d681SAndroid Build Coastguard Worker
1784*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @test_mm256_permutevar_ps(<8 x float> %a0, <4 x i64> %a1) nounwind {
1785*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_permutevar_ps:
1786*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
1787*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpermilps %ymm1, %ymm0, %ymm0
1788*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
1789*9880d681SAndroid Build Coastguard Worker;
1790*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_permutevar_ps:
1791*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
1792*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vpermilps %ymm1, %ymm0, %ymm0
1793*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
1794*9880d681SAndroid Build Coastguard Worker  %arg1 = bitcast <4 x i64> %a1 to <8 x i32>
1795*9880d681SAndroid Build Coastguard Worker  %res = call <8 x float> @llvm.x86.avx.vpermilvar.ps.256(<8 x float> %a0, <8 x i32> %arg1)
1796*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %res
1797*9880d681SAndroid Build Coastguard Worker}
1798*9880d681SAndroid Build Coastguard Workerdeclare <8 x float> @llvm.x86.avx.vpermilvar.ps.256(<8 x float>, <8 x i32>) nounwind readnone
1799*9880d681SAndroid Build Coastguard Worker
1800*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @test_mm256_rcp_ps(<8 x float> %a0) nounwind {
1801*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_rcp_ps:
1802*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
1803*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vrcpps %ymm0, %ymm0
1804*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
1805*9880d681SAndroid Build Coastguard Worker;
1806*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_rcp_ps:
1807*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
1808*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vrcpps %ymm0, %ymm0
1809*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
1810*9880d681SAndroid Build Coastguard Worker  %res = call <8 x float> @llvm.x86.avx.rcp.ps.256(<8 x float> %a0)
1811*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %res
1812*9880d681SAndroid Build Coastguard Worker}
1813*9880d681SAndroid Build Coastguard Workerdeclare <8 x float> @llvm.x86.avx.rcp.ps.256(<8 x float>) nounwind readnone
1814*9880d681SAndroid Build Coastguard Worker
1815*9880d681SAndroid Build Coastguard Workerdefine <4 x double> @test_mm256_round_pd(<4 x double> %a0) nounwind {
1816*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_round_pd:
1817*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
1818*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vroundpd $4, %ymm0, %ymm0
1819*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
1820*9880d681SAndroid Build Coastguard Worker;
1821*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_round_pd:
1822*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
1823*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vroundpd $4, %ymm0, %ymm0
1824*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
1825*9880d681SAndroid Build Coastguard Worker  %res = call <4 x double> @llvm.x86.avx.round.pd.256(<4 x double> %a0, i32 4)
1826*9880d681SAndroid Build Coastguard Worker  ret <4 x double> %res
1827*9880d681SAndroid Build Coastguard Worker}
1828*9880d681SAndroid Build Coastguard Worker
1829*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @test_mm256_round_ps(<8 x float> %a0) nounwind {
1830*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_round_ps:
1831*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
1832*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vroundps $4, %ymm0, %ymm0
1833*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
1834*9880d681SAndroid Build Coastguard Worker;
1835*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_round_ps:
1836*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
1837*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vroundps $4, %ymm0, %ymm0
1838*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
1839*9880d681SAndroid Build Coastguard Worker  %res = call <8 x float> @llvm.x86.avx.round.ps.256(<8 x float> %a0, i32 4)
1840*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %res
1841*9880d681SAndroid Build Coastguard Worker}
1842*9880d681SAndroid Build Coastguard Worker
1843*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @test_mm256_rsqrt_ps(<8 x float> %a0) nounwind {
1844*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_rsqrt_ps:
1845*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
1846*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vrsqrtps %ymm0, %ymm0
1847*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
1848*9880d681SAndroid Build Coastguard Worker;
1849*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_rsqrt_ps:
1850*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
1851*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vrsqrtps %ymm0, %ymm0
1852*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
1853*9880d681SAndroid Build Coastguard Worker  %res = call <8 x float> @llvm.x86.avx.rsqrt.ps.256(<8 x float> %a0)
1854*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %res
1855*9880d681SAndroid Build Coastguard Worker}
1856*9880d681SAndroid Build Coastguard Workerdeclare <8 x float> @llvm.x86.avx.rsqrt.ps.256(<8 x float>) nounwind readnone
1857*9880d681SAndroid Build Coastguard Worker
1858*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @test_mm256_set_epi8(i8 %a0, i8 %a1, i8 %a2, i8 %a3, i8 %a4, i8 %a5, i8 %a6, i8 %a7, i8 %a8, i8 %a9, i8 %a10, i8 %a11, i8 %a12, i8 %a13, i8 %a14, i8 %a15, i8 %a16, i8 %a17, i8 %a18, i8 %a19, i8 %a20, i8 %a21, i8 %a22, i8 %a23, i8 %a24, i8 %a25, i8 %a26, i8 %a27, i8 %a28, i8 %a29, i8 %a30, i8 %a31) nounwind {
1859*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_set_epi8:
1860*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
1861*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
1862*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movzbl {{[0-9]+}}(%esp), %ecx
1863*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vmovd %ecx, %xmm0
1864*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpinsrb $1, %eax, %xmm0, %xmm0
1865*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
1866*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpinsrb $2, %eax, %xmm0, %xmm0
1867*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
1868*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpinsrb $3, %eax, %xmm0, %xmm0
1869*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
1870*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpinsrb $4, %eax, %xmm0, %xmm0
1871*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
1872*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpinsrb $5, %eax, %xmm0, %xmm0
1873*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
1874*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpinsrb $6, %eax, %xmm0, %xmm0
1875*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
1876*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpinsrb $7, %eax, %xmm0, %xmm0
1877*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
1878*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpinsrb $8, %eax, %xmm0, %xmm0
1879*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
1880*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpinsrb $9, %eax, %xmm0, %xmm0
1881*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
1882*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpinsrb $10, %eax, %xmm0, %xmm0
1883*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
1884*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpinsrb $11, %eax, %xmm0, %xmm0
1885*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
1886*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpinsrb $12, %eax, %xmm0, %xmm0
1887*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
1888*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpinsrb $13, %eax, %xmm0, %xmm0
1889*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
1890*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpinsrb $14, %eax, %xmm0, %xmm0
1891*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
1892*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpinsrb $15, %eax, %xmm0, %xmm0
1893*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
1894*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movzbl {{[0-9]+}}(%esp), %ecx
1895*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vmovd %ecx, %xmm1
1896*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpinsrb $1, %eax, %xmm1, %xmm1
1897*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
1898*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpinsrb $2, %eax, %xmm1, %xmm1
1899*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
1900*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpinsrb $3, %eax, %xmm1, %xmm1
1901*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
1902*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpinsrb $4, %eax, %xmm1, %xmm1
1903*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
1904*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpinsrb $5, %eax, %xmm1, %xmm1
1905*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
1906*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpinsrb $6, %eax, %xmm1, %xmm1
1907*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
1908*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpinsrb $7, %eax, %xmm1, %xmm1
1909*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
1910*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpinsrb $8, %eax, %xmm1, %xmm1
1911*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
1912*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpinsrb $9, %eax, %xmm1, %xmm1
1913*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
1914*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpinsrb $10, %eax, %xmm1, %xmm1
1915*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
1916*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpinsrb $11, %eax, %xmm1, %xmm1
1917*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
1918*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpinsrb $12, %eax, %xmm1, %xmm1
1919*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
1920*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpinsrb $13, %eax, %xmm1, %xmm1
1921*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
1922*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpinsrb $14, %eax, %xmm1, %xmm1
1923*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
1924*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpinsrb $15, %eax, %xmm1, %xmm1
1925*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0
1926*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
1927*9880d681SAndroid Build Coastguard Worker;
1928*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_set_epi8:
1929*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
1930*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movzbl {{[0-9]+}}(%rsp), %r10d
1931*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax
1932*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vmovd %eax, %xmm0
1933*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vpinsrb $1, %r10d, %xmm0, %xmm0
1934*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax
1935*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vpinsrb $2, %eax, %xmm0, %xmm0
1936*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax
1937*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vpinsrb $3, %eax, %xmm0, %xmm0
1938*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax
1939*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vpinsrb $4, %eax, %xmm0, %xmm0
1940*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax
1941*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vpinsrb $5, %eax, %xmm0, %xmm0
1942*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax
1943*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vpinsrb $6, %eax, %xmm0, %xmm0
1944*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax
1945*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vpinsrb $7, %eax, %xmm0, %xmm0
1946*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax
1947*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vpinsrb $8, %eax, %xmm0, %xmm0
1948*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax
1949*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vpinsrb $9, %eax, %xmm0, %xmm0
1950*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movzbl %r9b, %eax
1951*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vpinsrb $10, %eax, %xmm0, %xmm0
1952*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movzbl %r8b, %eax
1953*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vpinsrb $11, %eax, %xmm0, %xmm0
1954*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movzbl %cl, %eax
1955*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vpinsrb $12, %eax, %xmm0, %xmm0
1956*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movzbl %dl, %eax
1957*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vpinsrb $13, %eax, %xmm0, %xmm0
1958*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movzbl %sil, %eax
1959*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vpinsrb $14, %eax, %xmm0, %xmm0
1960*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movzbl %dil, %eax
1961*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vpinsrb $15, %eax, %xmm0, %xmm0
1962*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax
1963*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movzbl {{[0-9]+}}(%rsp), %ecx
1964*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vmovd %ecx, %xmm1
1965*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vpinsrb $1, %eax, %xmm1, %xmm1
1966*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax
1967*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vpinsrb $2, %eax, %xmm1, %xmm1
1968*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax
1969*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vpinsrb $3, %eax, %xmm1, %xmm1
1970*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax
1971*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vpinsrb $4, %eax, %xmm1, %xmm1
1972*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax
1973*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vpinsrb $5, %eax, %xmm1, %xmm1
1974*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax
1975*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vpinsrb $6, %eax, %xmm1, %xmm1
1976*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax
1977*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vpinsrb $7, %eax, %xmm1, %xmm1
1978*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax
1979*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vpinsrb $8, %eax, %xmm1, %xmm1
1980*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax
1981*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vpinsrb $9, %eax, %xmm1, %xmm1
1982*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax
1983*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vpinsrb $10, %eax, %xmm1, %xmm1
1984*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax
1985*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vpinsrb $11, %eax, %xmm1, %xmm1
1986*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax
1987*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vpinsrb $12, %eax, %xmm1, %xmm1
1988*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax
1989*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vpinsrb $13, %eax, %xmm1, %xmm1
1990*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax
1991*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vpinsrb $14, %eax, %xmm1, %xmm1
1992*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax
1993*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vpinsrb $15, %eax, %xmm1, %xmm1
1994*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0
1995*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
1996*9880d681SAndroid Build Coastguard Worker  %res0  = insertelement <32 x i8> undef,  i8 %a31, i32 0
1997*9880d681SAndroid Build Coastguard Worker  %res1  = insertelement <32 x i8> %res0,  i8 %a30, i32 1
1998*9880d681SAndroid Build Coastguard Worker  %res2  = insertelement <32 x i8> %res1,  i8 %a29, i32 2
1999*9880d681SAndroid Build Coastguard Worker  %res3  = insertelement <32 x i8> %res2,  i8 %a28, i32 3
2000*9880d681SAndroid Build Coastguard Worker  %res4  = insertelement <32 x i8> %res3,  i8 %a27, i32 4
2001*9880d681SAndroid Build Coastguard Worker  %res5  = insertelement <32 x i8> %res4,  i8 %a26, i32 5
2002*9880d681SAndroid Build Coastguard Worker  %res6  = insertelement <32 x i8> %res5,  i8 %a25, i32 6
2003*9880d681SAndroid Build Coastguard Worker  %res7  = insertelement <32 x i8> %res6,  i8 %a24, i32 7
2004*9880d681SAndroid Build Coastguard Worker  %res8  = insertelement <32 x i8> %res7,  i8 %a23, i32 8
2005*9880d681SAndroid Build Coastguard Worker  %res9  = insertelement <32 x i8> %res8,  i8 %a22, i32 9
2006*9880d681SAndroid Build Coastguard Worker  %res10 = insertelement <32 x i8> %res9,  i8 %a21, i32 10
2007*9880d681SAndroid Build Coastguard Worker  %res11 = insertelement <32 x i8> %res10, i8 %a20, i32 11
2008*9880d681SAndroid Build Coastguard Worker  %res12 = insertelement <32 x i8> %res11, i8 %a19, i32 12
2009*9880d681SAndroid Build Coastguard Worker  %res13 = insertelement <32 x i8> %res12, i8 %a18, i32 13
2010*9880d681SAndroid Build Coastguard Worker  %res14 = insertelement <32 x i8> %res13, i8 %a17, i32 14
2011*9880d681SAndroid Build Coastguard Worker  %res15 = insertelement <32 x i8> %res14, i8 %a16, i32 15
2012*9880d681SAndroid Build Coastguard Worker  %res16 = insertelement <32 x i8> %res15, i8 %a15, i32 16
2013*9880d681SAndroid Build Coastguard Worker  %res17 = insertelement <32 x i8> %res16, i8 %a14, i32 17
2014*9880d681SAndroid Build Coastguard Worker  %res18 = insertelement <32 x i8> %res17, i8 %a13, i32 18
2015*9880d681SAndroid Build Coastguard Worker  %res19 = insertelement <32 x i8> %res18, i8 %a12, i32 19
2016*9880d681SAndroid Build Coastguard Worker  %res20 = insertelement <32 x i8> %res19, i8 %a11, i32 20
2017*9880d681SAndroid Build Coastguard Worker  %res21 = insertelement <32 x i8> %res20, i8 %a10, i32 21
2018*9880d681SAndroid Build Coastguard Worker  %res22 = insertelement <32 x i8> %res21, i8 %a9 , i32 22
2019*9880d681SAndroid Build Coastguard Worker  %res23 = insertelement <32 x i8> %res22, i8 %a8 , i32 23
2020*9880d681SAndroid Build Coastguard Worker  %res24 = insertelement <32 x i8> %res23, i8 %a7 , i32 24
2021*9880d681SAndroid Build Coastguard Worker  %res25 = insertelement <32 x i8> %res24, i8 %a6 , i32 25
2022*9880d681SAndroid Build Coastguard Worker  %res26 = insertelement <32 x i8> %res25, i8 %a5 , i32 26
2023*9880d681SAndroid Build Coastguard Worker  %res27 = insertelement <32 x i8> %res26, i8 %a4 , i32 27
2024*9880d681SAndroid Build Coastguard Worker  %res28 = insertelement <32 x i8> %res27, i8 %a3 , i32 28
2025*9880d681SAndroid Build Coastguard Worker  %res29 = insertelement <32 x i8> %res28, i8 %a2 , i32 29
2026*9880d681SAndroid Build Coastguard Worker  %res30 = insertelement <32 x i8> %res29, i8 %a1 , i32 30
2027*9880d681SAndroid Build Coastguard Worker  %res31 = insertelement <32 x i8> %res30, i8 %a0 , i32 31
2028*9880d681SAndroid Build Coastguard Worker  %res = bitcast <32 x i8> %res31 to <4 x i64>
2029*9880d681SAndroid Build Coastguard Worker  ret <4 x i64> %res
2030*9880d681SAndroid Build Coastguard Worker}
2031*9880d681SAndroid Build Coastguard Worker
2032*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @test_mm256_set_epi16(i16 %a0, i16 %a1, i16 %a2, i16 %a3, i16 %a4, i16 %a5, i16 %a6, i16 %a7, i16 %a8, i16 %a9, i16 %a10, i16 %a11, i16 %a12, i16 %a13, i16 %a14, i16 %a15) nounwind {
2033*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_set_epi16:
2034*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
2035*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movw {{[0-9]+}}(%esp), %ax
2036*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vmovd %eax, %xmm0
2037*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movw {{[0-9]+}}(%esp), %ax
2038*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpinsrw $1, %eax, %xmm0, %xmm0
2039*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movw {{[0-9]+}}(%esp), %ax
2040*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpinsrw $2, %eax, %xmm0, %xmm0
2041*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movw {{[0-9]+}}(%esp), %ax
2042*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpinsrw $3, %eax, %xmm0, %xmm0
2043*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movw {{[0-9]+}}(%esp), %ax
2044*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpinsrw $4, %eax, %xmm0, %xmm0
2045*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movw {{[0-9]+}}(%esp), %ax
2046*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpinsrw $5, %eax, %xmm0, %xmm0
2047*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movw {{[0-9]+}}(%esp), %ax
2048*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpinsrw $6, %eax, %xmm0, %xmm0
2049*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movw {{[0-9]+}}(%esp), %ax
2050*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpinsrw $7, %eax, %xmm0, %xmm0
2051*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movw {{[0-9]+}}(%esp), %ax
2052*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vmovd %eax, %xmm1
2053*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movw {{[0-9]+}}(%esp), %ax
2054*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpinsrw $1, %eax, %xmm1, %xmm1
2055*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movw {{[0-9]+}}(%esp), %ax
2056*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpinsrw $2, %eax, %xmm1, %xmm1
2057*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movw {{[0-9]+}}(%esp), %ax
2058*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpinsrw $3, %eax, %xmm1, %xmm1
2059*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movw {{[0-9]+}}(%esp), %ax
2060*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpinsrw $4, %eax, %xmm1, %xmm1
2061*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movw {{[0-9]+}}(%esp), %ax
2062*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpinsrw $5, %eax, %xmm1, %xmm1
2063*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movw {{[0-9]+}}(%esp), %ax
2064*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpinsrw $6, %eax, %xmm1, %xmm1
2065*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movw {{[0-9]+}}(%esp), %ax
2066*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpinsrw $7, %eax, %xmm1, %xmm1
2067*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0
2068*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
2069*9880d681SAndroid Build Coastguard Worker;
2070*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_set_epi16:
2071*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
2072*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movw {{[0-9]+}}(%rsp), %ax
2073*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vmovd %eax, %xmm0
2074*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movw {{[0-9]+}}(%rsp), %ax
2075*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vpinsrw $1, %eax, %xmm0, %xmm0
2076*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vpinsrw $2, %r9d, %xmm0, %xmm0
2077*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vpinsrw $3, %r8d, %xmm0, %xmm0
2078*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vpinsrw $4, %ecx, %xmm0, %xmm0
2079*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vpinsrw $5, %edx, %xmm0, %xmm0
2080*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vpinsrw $6, %esi, %xmm0, %xmm0
2081*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vpinsrw $7, %edi, %xmm0, %xmm0
2082*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movw {{[0-9]+}}(%rsp), %ax
2083*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vmovd %eax, %xmm1
2084*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movw {{[0-9]+}}(%rsp), %ax
2085*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vpinsrw $1, %eax, %xmm1, %xmm1
2086*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movw {{[0-9]+}}(%rsp), %ax
2087*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vpinsrw $2, %eax, %xmm1, %xmm1
2088*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movw {{[0-9]+}}(%rsp), %ax
2089*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vpinsrw $3, %eax, %xmm1, %xmm1
2090*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movw {{[0-9]+}}(%rsp), %ax
2091*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vpinsrw $4, %eax, %xmm1, %xmm1
2092*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movw {{[0-9]+}}(%rsp), %ax
2093*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vpinsrw $5, %eax, %xmm1, %xmm1
2094*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movw {{[0-9]+}}(%rsp), %ax
2095*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vpinsrw $6, %eax, %xmm1, %xmm1
2096*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movw {{[0-9]+}}(%rsp), %ax
2097*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vpinsrw $7, %eax, %xmm1, %xmm1
2098*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0
2099*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
2100*9880d681SAndroid Build Coastguard Worker  %res0  = insertelement <16 x i16> undef,  i16 %a15, i32 0
2101*9880d681SAndroid Build Coastguard Worker  %res1  = insertelement <16 x i16> %res0,  i16 %a14, i32 1
2102*9880d681SAndroid Build Coastguard Worker  %res2  = insertelement <16 x i16> %res1,  i16 %a13, i32 2
2103*9880d681SAndroid Build Coastguard Worker  %res3  = insertelement <16 x i16> %res2,  i16 %a12, i32 3
2104*9880d681SAndroid Build Coastguard Worker  %res4  = insertelement <16 x i16> %res3,  i16 %a11, i32 4
2105*9880d681SAndroid Build Coastguard Worker  %res5  = insertelement <16 x i16> %res4,  i16 %a10, i32 5
2106*9880d681SAndroid Build Coastguard Worker  %res6  = insertelement <16 x i16> %res5,  i16 %a9 , i32 6
2107*9880d681SAndroid Build Coastguard Worker  %res7  = insertelement <16 x i16> %res6,  i16 %a8 , i32 7
2108*9880d681SAndroid Build Coastguard Worker  %res8  = insertelement <16 x i16> %res7,  i16 %a7 , i32 8
2109*9880d681SAndroid Build Coastguard Worker  %res9  = insertelement <16 x i16> %res8,  i16 %a6 , i32 9
2110*9880d681SAndroid Build Coastguard Worker  %res10 = insertelement <16 x i16> %res9,  i16 %a5 , i32 10
2111*9880d681SAndroid Build Coastguard Worker  %res11 = insertelement <16 x i16> %res10, i16 %a4 , i32 11
2112*9880d681SAndroid Build Coastguard Worker  %res12 = insertelement <16 x i16> %res11, i16 %a3 , i32 12
2113*9880d681SAndroid Build Coastguard Worker  %res13 = insertelement <16 x i16> %res12, i16 %a2 , i32 13
2114*9880d681SAndroid Build Coastguard Worker  %res14 = insertelement <16 x i16> %res13, i16 %a1 , i32 14
2115*9880d681SAndroid Build Coastguard Worker  %res15 = insertelement <16 x i16> %res14, i16 %a0 , i32 15
2116*9880d681SAndroid Build Coastguard Worker  %res = bitcast <16 x i16> %res15 to <4 x i64>
2117*9880d681SAndroid Build Coastguard Worker  ret <4 x i64> %res
2118*9880d681SAndroid Build Coastguard Worker}
2119*9880d681SAndroid Build Coastguard Worker
2120*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @test_mm256_set_epi32(i32 %a0, i32 %a1, i32 %a2, i32 %a3, i32 %a4, i32 %a5, i32 %a6, i32 %a7) nounwind {
2121*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_set_epi32:
2122*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
2123*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vmovd {{.*#+}} xmm0 = mem[0],zero,zero,zero
2124*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpinsrd $1, {{[0-9]+}}(%esp), %xmm0, %xmm0
2125*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpinsrd $2, {{[0-9]+}}(%esp), %xmm0, %xmm0
2126*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpinsrd $3, {{[0-9]+}}(%esp), %xmm0, %xmm0
2127*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vmovd {{.*#+}} xmm1 = mem[0],zero,zero,zero
2128*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpinsrd $1, {{[0-9]+}}(%esp), %xmm1, %xmm1
2129*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpinsrd $2, {{[0-9]+}}(%esp), %xmm1, %xmm1
2130*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpinsrd $3, {{[0-9]+}}(%esp), %xmm1, %xmm1
2131*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0
2132*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
2133*9880d681SAndroid Build Coastguard Worker;
2134*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_set_epi32:
2135*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
2136*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vmovd %ecx, %xmm0
2137*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vpinsrd $1, %edx, %xmm0, %xmm0
2138*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vpinsrd $2, %esi, %xmm0, %xmm0
2139*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vpinsrd $3, %edi, %xmm0, %xmm0
2140*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vmovd {{.*#+}} xmm1 = mem[0],zero,zero,zero
2141*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vpinsrd $1, {{[0-9]+}}(%rsp), %xmm1, %xmm1
2142*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vpinsrd $2, %r9d, %xmm1, %xmm1
2143*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vpinsrd $3, %r8d, %xmm1, %xmm1
2144*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0
2145*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
2146*9880d681SAndroid Build Coastguard Worker  %res0 = insertelement <8 x i32> undef, i32 %a7, i32 0
2147*9880d681SAndroid Build Coastguard Worker  %res1 = insertelement <8 x i32> %res0, i32 %a6, i32 1
2148*9880d681SAndroid Build Coastguard Worker  %res2 = insertelement <8 x i32> %res1, i32 %a5, i32 2
2149*9880d681SAndroid Build Coastguard Worker  %res3 = insertelement <8 x i32> %res2, i32 %a4, i32 3
2150*9880d681SAndroid Build Coastguard Worker  %res4 = insertelement <8 x i32> %res3, i32 %a3, i32 4
2151*9880d681SAndroid Build Coastguard Worker  %res5 = insertelement <8 x i32> %res4, i32 %a2, i32 5
2152*9880d681SAndroid Build Coastguard Worker  %res6 = insertelement <8 x i32> %res5, i32 %a1, i32 6
2153*9880d681SAndroid Build Coastguard Worker  %res7 = insertelement <8 x i32> %res6, i32 %a0, i32 7
2154*9880d681SAndroid Build Coastguard Worker  %res = bitcast <8 x i32> %res7 to <4 x i64>
2155*9880d681SAndroid Build Coastguard Worker  ret <4 x i64> %res
2156*9880d681SAndroid Build Coastguard Worker}
2157*9880d681SAndroid Build Coastguard Worker
2158*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @test_mm256_set_epi64x(i64 %a0, i64 %a1, i64 %a2, i64 %a3) nounwind {
2159*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_set_epi64x:
2160*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
2161*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vmovd {{.*#+}} xmm0 = mem[0],zero,zero,zero
2162*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpinsrd $1, {{[0-9]+}}(%esp), %xmm0, %xmm0
2163*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpinsrd $2, {{[0-9]+}}(%esp), %xmm0, %xmm0
2164*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpinsrd $3, {{[0-9]+}}(%esp), %xmm0, %xmm0
2165*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vmovd {{.*#+}} xmm1 = mem[0],zero,zero,zero
2166*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpinsrd $1, {{[0-9]+}}(%esp), %xmm1, %xmm1
2167*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpinsrd $2, {{[0-9]+}}(%esp), %xmm1, %xmm1
2168*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpinsrd $3, {{[0-9]+}}(%esp), %xmm1, %xmm1
2169*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0
2170*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
2171*9880d681SAndroid Build Coastguard Worker;
2172*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_set_epi64x:
2173*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
2174*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vmovq %rdi, %xmm0
2175*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vmovq %rsi, %xmm1
2176*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vpunpcklqdq {{.*#+}} xmm0 = xmm1[0],xmm0[0]
2177*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vmovq %rdx, %xmm1
2178*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vmovq %rcx, %xmm2
2179*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vpunpcklqdq {{.*#+}} xmm1 = xmm2[0],xmm1[0]
2180*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0
2181*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
2182*9880d681SAndroid Build Coastguard Worker  %res0 = insertelement <4 x i64> undef, i64 %a3, i32 0
2183*9880d681SAndroid Build Coastguard Worker  %res1 = insertelement <4 x i64> %res0, i64 %a2, i32 1
2184*9880d681SAndroid Build Coastguard Worker  %res2 = insertelement <4 x i64> %res1, i64 %a1, i32 2
2185*9880d681SAndroid Build Coastguard Worker  %res3 = insertelement <4 x i64> %res2, i64 %a0, i32 3
2186*9880d681SAndroid Build Coastguard Worker  ret <4 x i64> %res3
2187*9880d681SAndroid Build Coastguard Worker}
2188*9880d681SAndroid Build Coastguard Worker
2189*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @test_mm256_set_m128(<4 x float> %a0, <4 x float> %a1) nounwind {
2190*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_set_m128:
2191*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
2192*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    # kill: %XMM1<def> %XMM1<kill> %YMM1<def>
2193*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0
2194*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
2195*9880d681SAndroid Build Coastguard Worker;
2196*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_set_m128:
2197*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
2198*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    # kill: %XMM1<def> %XMM1<kill> %YMM1<def>
2199*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0
2200*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
2201*9880d681SAndroid Build Coastguard Worker  %res = shufflevector <4 x float> %a1, <4 x float> %a0, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
2202*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %res
2203*9880d681SAndroid Build Coastguard Worker}
2204*9880d681SAndroid Build Coastguard Worker
2205*9880d681SAndroid Build Coastguard Workerdefine <4 x double> @test_mm256_set_m128d(<2 x double> %a0, <2 x double> %a1) nounwind {
2206*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_set_m128d:
2207*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
2208*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    # kill: %XMM1<def> %XMM1<kill> %YMM1<def>
2209*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0
2210*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
2211*9880d681SAndroid Build Coastguard Worker;
2212*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_set_m128d:
2213*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
2214*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    # kill: %XMM1<def> %XMM1<kill> %YMM1<def>
2215*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0
2216*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
2217*9880d681SAndroid Build Coastguard Worker  %arg0 = bitcast <2 x double> %a0 to <4 x float>
2218*9880d681SAndroid Build Coastguard Worker  %arg1 = bitcast <2 x double> %a1 to <4 x float>
2219*9880d681SAndroid Build Coastguard Worker  %res = shufflevector <4 x float> %arg1, <4 x float> %arg0, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
2220*9880d681SAndroid Build Coastguard Worker  %bc = bitcast <8 x float> %res to <4 x double>
2221*9880d681SAndroid Build Coastguard Worker  ret <4 x double> %bc
2222*9880d681SAndroid Build Coastguard Worker}
2223*9880d681SAndroid Build Coastguard Worker
2224*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @test_mm256_set_m128i(<2 x i64> %a0, <2 x i64> %a1) nounwind {
2225*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_set_m128i:
2226*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
2227*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    # kill: %XMM1<def> %XMM1<kill> %YMM1<def>
2228*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0
2229*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
2230*9880d681SAndroid Build Coastguard Worker;
2231*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_set_m128i:
2232*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
2233*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    # kill: %XMM1<def> %XMM1<kill> %YMM1<def>
2234*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0
2235*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
2236*9880d681SAndroid Build Coastguard Worker  %arg0 = bitcast <2 x i64> %a0 to <4 x float>
2237*9880d681SAndroid Build Coastguard Worker  %arg1 = bitcast <2 x i64> %a1 to <4 x float>
2238*9880d681SAndroid Build Coastguard Worker  %res = shufflevector <4 x float> %arg1, <4 x float> %arg0, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
2239*9880d681SAndroid Build Coastguard Worker  %bc = bitcast <8 x float> %res to <4 x i64>
2240*9880d681SAndroid Build Coastguard Worker  ret <4 x i64> %bc
2241*9880d681SAndroid Build Coastguard Worker}
2242*9880d681SAndroid Build Coastguard Worker
2243*9880d681SAndroid Build Coastguard Workerdefine <4 x double> @test_mm256_set_pd(double %a0, double %a1, double %a2, double %a3) nounwind {
2244*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_set_pd:
2245*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
2246*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vmovsd {{.*#+}} xmm0 = mem[0],zero
2247*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vmovsd {{.*#+}} xmm1 = mem[0],zero
2248*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vmovsd {{.*#+}} xmm2 = mem[0],zero
2249*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vmovsd {{.*#+}} xmm3 = mem[0],zero
2250*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vunpcklpd {{.*#+}} xmm2 = xmm2[0],xmm3[0]
2251*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vunpcklpd {{.*#+}} xmm0 = xmm0[0],xmm1[0]
2252*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm0
2253*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
2254*9880d681SAndroid Build Coastguard Worker;
2255*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_set_pd:
2256*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
2257*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vunpcklpd {{.*#+}} xmm0 = xmm1[0],xmm0[0]
2258*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vunpcklpd {{.*#+}} xmm1 = xmm3[0],xmm2[0]
2259*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0
2260*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
2261*9880d681SAndroid Build Coastguard Worker  %res0 = insertelement <4 x double> undef, double %a3, i32 0
2262*9880d681SAndroid Build Coastguard Worker  %res1 = insertelement <4 x double> %res0, double %a2, i32 1
2263*9880d681SAndroid Build Coastguard Worker  %res2 = insertelement <4 x double> %res1, double %a1, i32 2
2264*9880d681SAndroid Build Coastguard Worker  %res3 = insertelement <4 x double> %res2, double %a0, i32 3
2265*9880d681SAndroid Build Coastguard Worker  ret <4 x double> %res3
2266*9880d681SAndroid Build Coastguard Worker}
2267*9880d681SAndroid Build Coastguard Worker
2268*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @test_mm256_set_ps(float %a0, float %a1, float %a2, float %a3, float %a4, float %a5, float %a6, float %a7) nounwind {
2269*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_set_ps:
2270*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
2271*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vmovss {{.*#+}} xmm0 = mem[0],zero,zero,zero
2272*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vmovss {{.*#+}} xmm1 = mem[0],zero,zero,zero
2273*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vmovss {{.*#+}} xmm2 = mem[0],zero,zero,zero
2274*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vmovss {{.*#+}} xmm3 = mem[0],zero,zero,zero
2275*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vmovss {{.*#+}} xmm4 = mem[0],zero,zero,zero
2276*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vmovss {{.*#+}} xmm5 = mem[0],zero,zero,zero
2277*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vmovss {{.*#+}} xmm6 = mem[0],zero,zero,zero
2278*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vmovss {{.*#+}} xmm7 = mem[0],zero,zero,zero
2279*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vinsertps {{.*#+}} xmm4 = xmm4[0],xmm5[0],xmm4[2,3]
2280*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vinsertps {{.*#+}} xmm4 = xmm4[0,1],xmm6[0],xmm4[3]
2281*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vinsertps {{.*#+}} xmm4 = xmm4[0,1,2],xmm7[0]
2282*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vinsertps {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[2,3]
2283*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vinsertps {{.*#+}} xmm0 = xmm0[0,1],xmm2[0],xmm0[3]
2284*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vinsertps {{.*#+}} xmm0 = xmm0[0,1,2],xmm3[0]
2285*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vinsertf128 $1, %xmm4, %ymm0, %ymm0
2286*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
2287*9880d681SAndroid Build Coastguard Worker;
2288*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_set_ps:
2289*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
2290*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vinsertps {{.*#+}} xmm2 = xmm3[0],xmm2[0],xmm3[2,3]
2291*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vinsertps {{.*#+}} xmm1 = xmm2[0,1],xmm1[0],xmm2[3]
2292*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vinsertps {{.*#+}} xmm0 = xmm1[0,1,2],xmm0[0]
2293*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vinsertps {{.*#+}} xmm1 = xmm7[0],xmm6[0],xmm7[2,3]
2294*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vinsertps {{.*#+}} xmm1 = xmm1[0,1],xmm5[0],xmm1[3]
2295*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vinsertps {{.*#+}} xmm1 = xmm1[0,1,2],xmm4[0]
2296*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0
2297*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
2298*9880d681SAndroid Build Coastguard Worker  %res0 = insertelement <8 x float> undef, float %a7, i32 0
2299*9880d681SAndroid Build Coastguard Worker  %res1 = insertelement <8 x float> %res0, float %a6, i32 1
2300*9880d681SAndroid Build Coastguard Worker  %res2 = insertelement <8 x float> %res1, float %a5, i32 2
2301*9880d681SAndroid Build Coastguard Worker  %res3 = insertelement <8 x float> %res2, float %a4, i32 3
2302*9880d681SAndroid Build Coastguard Worker  %res4 = insertelement <8 x float> %res3, float %a3, i32 4
2303*9880d681SAndroid Build Coastguard Worker  %res5 = insertelement <8 x float> %res4, float %a2, i32 5
2304*9880d681SAndroid Build Coastguard Worker  %res6 = insertelement <8 x float> %res5, float %a1, i32 6
2305*9880d681SAndroid Build Coastguard Worker  %res7 = insertelement <8 x float> %res6, float %a0, i32 7
2306*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %res7
2307*9880d681SAndroid Build Coastguard Worker}
2308*9880d681SAndroid Build Coastguard Worker
2309*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @test_mm256_set1_epi8(i8 %a0) nounwind {
2310*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_set1_epi8:
2311*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
2312*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
2313*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vmovd %eax, %xmm0
2314*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpxor %xmm1, %xmm1, %xmm1
2315*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpshufb %xmm1, %xmm0, %xmm0
2316*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vinsertf128 $1, %xmm0, %ymm0, %ymm0
2317*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
2318*9880d681SAndroid Build Coastguard Worker;
2319*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_set1_epi8:
2320*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
2321*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movzbl %dil, %eax
2322*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vmovd %eax, %xmm0
2323*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vpxor %xmm1, %xmm1, %xmm1
2324*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vpshufb %xmm1, %xmm0, %xmm0
2325*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vinsertf128 $1, %xmm0, %ymm0, %ymm0
2326*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
2327*9880d681SAndroid Build Coastguard Worker  %res0  = insertelement <32 x i8> undef,  i8 %a0, i32 0
2328*9880d681SAndroid Build Coastguard Worker  %res1  = insertelement <32 x i8> %res0,  i8 %a0, i32 1
2329*9880d681SAndroid Build Coastguard Worker  %res2  = insertelement <32 x i8> %res1,  i8 %a0, i32 2
2330*9880d681SAndroid Build Coastguard Worker  %res3  = insertelement <32 x i8> %res2,  i8 %a0, i32 3
2331*9880d681SAndroid Build Coastguard Worker  %res4  = insertelement <32 x i8> %res3,  i8 %a0, i32 4
2332*9880d681SAndroid Build Coastguard Worker  %res5  = insertelement <32 x i8> %res4,  i8 %a0, i32 5
2333*9880d681SAndroid Build Coastguard Worker  %res6  = insertelement <32 x i8> %res5,  i8 %a0, i32 6
2334*9880d681SAndroid Build Coastguard Worker  %res7  = insertelement <32 x i8> %res6,  i8 %a0, i32 7
2335*9880d681SAndroid Build Coastguard Worker  %res8  = insertelement <32 x i8> %res7,  i8 %a0, i32 8
2336*9880d681SAndroid Build Coastguard Worker  %res9  = insertelement <32 x i8> %res8,  i8 %a0, i32 9
2337*9880d681SAndroid Build Coastguard Worker  %res10 = insertelement <32 x i8> %res9,  i8 %a0, i32 10
2338*9880d681SAndroid Build Coastguard Worker  %res11 = insertelement <32 x i8> %res10, i8 %a0, i32 11
2339*9880d681SAndroid Build Coastguard Worker  %res12 = insertelement <32 x i8> %res11, i8 %a0, i32 12
2340*9880d681SAndroid Build Coastguard Worker  %res13 = insertelement <32 x i8> %res12, i8 %a0, i32 13
2341*9880d681SAndroid Build Coastguard Worker  %res14 = insertelement <32 x i8> %res13, i8 %a0, i32 14
2342*9880d681SAndroid Build Coastguard Worker  %res15 = insertelement <32 x i8> %res14, i8 %a0, i32 15
2343*9880d681SAndroid Build Coastguard Worker  %res16 = insertelement <32 x i8> %res15, i8 %a0, i32 16
2344*9880d681SAndroid Build Coastguard Worker  %res17 = insertelement <32 x i8> %res16, i8 %a0, i32 17
2345*9880d681SAndroid Build Coastguard Worker  %res18 = insertelement <32 x i8> %res17, i8 %a0, i32 18
2346*9880d681SAndroid Build Coastguard Worker  %res19 = insertelement <32 x i8> %res18, i8 %a0, i32 19
2347*9880d681SAndroid Build Coastguard Worker  %res20 = insertelement <32 x i8> %res19, i8 %a0, i32 20
2348*9880d681SAndroid Build Coastguard Worker  %res21 = insertelement <32 x i8> %res20, i8 %a0, i32 21
2349*9880d681SAndroid Build Coastguard Worker  %res22 = insertelement <32 x i8> %res21, i8 %a0, i32 22
2350*9880d681SAndroid Build Coastguard Worker  %res23 = insertelement <32 x i8> %res22, i8 %a0, i32 23
2351*9880d681SAndroid Build Coastguard Worker  %res24 = insertelement <32 x i8> %res23, i8 %a0, i32 24
2352*9880d681SAndroid Build Coastguard Worker  %res25 = insertelement <32 x i8> %res24, i8 %a0, i32 25
2353*9880d681SAndroid Build Coastguard Worker  %res26 = insertelement <32 x i8> %res25, i8 %a0, i32 26
2354*9880d681SAndroid Build Coastguard Worker  %res27 = insertelement <32 x i8> %res26, i8 %a0, i32 27
2355*9880d681SAndroid Build Coastguard Worker  %res28 = insertelement <32 x i8> %res27, i8 %a0, i32 28
2356*9880d681SAndroid Build Coastguard Worker  %res29 = insertelement <32 x i8> %res28, i8 %a0, i32 29
2357*9880d681SAndroid Build Coastguard Worker  %res30 = insertelement <32 x i8> %res29, i8 %a0, i32 30
2358*9880d681SAndroid Build Coastguard Worker  %res31 = insertelement <32 x i8> %res30, i8 %a0, i32 31
2359*9880d681SAndroid Build Coastguard Worker  %res = bitcast <32 x i8> %res31 to <4 x i64>
2360*9880d681SAndroid Build Coastguard Worker  ret <4 x i64> %res
2361*9880d681SAndroid Build Coastguard Worker}
2362*9880d681SAndroid Build Coastguard Worker
2363*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @test_mm256_set1_epi16(i16 %a0) nounwind {
2364*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_set1_epi16:
2365*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
2366*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movw {{[0-9]+}}(%esp), %ax
2367*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vmovd %eax, %xmm0
2368*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpshuflw {{.*#+}} xmm0 = xmm0[0,0,0,0,4,5,6,7]
2369*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpshufd {{.*#+}} xmm0 = xmm0[0,0,1,1]
2370*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vinsertf128 $1, %xmm0, %ymm0, %ymm0
2371*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
2372*9880d681SAndroid Build Coastguard Worker;
2373*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_set1_epi16:
2374*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
2375*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vmovd %edi, %xmm0
2376*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vpshuflw {{.*#+}} xmm0 = xmm0[0,0,0,0,4,5,6,7]
2377*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vpshufd {{.*#+}} xmm0 = xmm0[0,0,1,1]
2378*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vinsertf128 $1, %xmm0, %ymm0, %ymm0
2379*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
2380*9880d681SAndroid Build Coastguard Worker  %res0  = insertelement <16 x i16> undef,  i16 %a0, i32 0
2381*9880d681SAndroid Build Coastguard Worker  %res1  = insertelement <16 x i16> %res0,  i16 %a0, i32 1
2382*9880d681SAndroid Build Coastguard Worker  %res2  = insertelement <16 x i16> %res1,  i16 %a0, i32 2
2383*9880d681SAndroid Build Coastguard Worker  %res3  = insertelement <16 x i16> %res2,  i16 %a0, i32 3
2384*9880d681SAndroid Build Coastguard Worker  %res4  = insertelement <16 x i16> %res3,  i16 %a0, i32 4
2385*9880d681SAndroid Build Coastguard Worker  %res5  = insertelement <16 x i16> %res4,  i16 %a0, i32 5
2386*9880d681SAndroid Build Coastguard Worker  %res6  = insertelement <16 x i16> %res5,  i16 %a0, i32 6
2387*9880d681SAndroid Build Coastguard Worker  %res7  = insertelement <16 x i16> %res6,  i16 %a0, i32 7
2388*9880d681SAndroid Build Coastguard Worker  %res8  = insertelement <16 x i16> %res7,  i16 %a0, i32 8
2389*9880d681SAndroid Build Coastguard Worker  %res9  = insertelement <16 x i16> %res8,  i16 %a0, i32 9
2390*9880d681SAndroid Build Coastguard Worker  %res10 = insertelement <16 x i16> %res9,  i16 %a0, i32 10
2391*9880d681SAndroid Build Coastguard Worker  %res11 = insertelement <16 x i16> %res10, i16 %a0, i32 11
2392*9880d681SAndroid Build Coastguard Worker  %res12 = insertelement <16 x i16> %res11, i16 %a0, i32 12
2393*9880d681SAndroid Build Coastguard Worker  %res13 = insertelement <16 x i16> %res12, i16 %a0, i32 13
2394*9880d681SAndroid Build Coastguard Worker  %res14 = insertelement <16 x i16> %res13, i16 %a0, i32 14
2395*9880d681SAndroid Build Coastguard Worker  %res15 = insertelement <16 x i16> %res14, i16 %a0, i32 15
2396*9880d681SAndroid Build Coastguard Worker  %res = bitcast <16 x i16> %res15 to <4 x i64>
2397*9880d681SAndroid Build Coastguard Worker  ret <4 x i64> %res
2398*9880d681SAndroid Build Coastguard Worker}
2399*9880d681SAndroid Build Coastguard Worker
2400*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @test_mm256_set1_epi32(i32 %a0) nounwind {
2401*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_set1_epi32:
2402*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
2403*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vmovd {{.*#+}} xmm0 = mem[0],zero,zero,zero
2404*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpshufd {{.*#+}} xmm0 = xmm0[0,0,0,0]
2405*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vinsertf128 $1, %xmm0, %ymm0, %ymm0
2406*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
2407*9880d681SAndroid Build Coastguard Worker;
2408*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_set1_epi32:
2409*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
2410*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vmovd %edi, %xmm0
2411*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vpshufd {{.*#+}} xmm0 = xmm0[0,0,0,0]
2412*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vinsertf128 $1, %xmm0, %ymm0, %ymm0
2413*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
2414*9880d681SAndroid Build Coastguard Worker  %res0 = insertelement <8 x i32> undef, i32 %a0, i32 0
2415*9880d681SAndroid Build Coastguard Worker  %res1 = insertelement <8 x i32> %res0, i32 %a0, i32 1
2416*9880d681SAndroid Build Coastguard Worker  %res2 = insertelement <8 x i32> %res1, i32 %a0, i32 2
2417*9880d681SAndroid Build Coastguard Worker  %res3 = insertelement <8 x i32> %res2, i32 %a0, i32 3
2418*9880d681SAndroid Build Coastguard Worker  %res4 = insertelement <8 x i32> %res3, i32 %a0, i32 4
2419*9880d681SAndroid Build Coastguard Worker  %res5 = insertelement <8 x i32> %res4, i32 %a0, i32 5
2420*9880d681SAndroid Build Coastguard Worker  %res6 = insertelement <8 x i32> %res5, i32 %a0, i32 6
2421*9880d681SAndroid Build Coastguard Worker  %res7 = insertelement <8 x i32> %res6, i32 %a0, i32 7
2422*9880d681SAndroid Build Coastguard Worker  %res = bitcast <8 x i32> %res7 to <4 x i64>
2423*9880d681SAndroid Build Coastguard Worker  ret <4 x i64> %res
2424*9880d681SAndroid Build Coastguard Worker}
2425*9880d681SAndroid Build Coastguard Worker
2426*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @test_mm256_set1_epi64x(i64 %a0) nounwind {
2427*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_set1_epi64x:
2428*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
2429*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movl {{[0-9]+}}(%esp), %eax
2430*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movl {{[0-9]+}}(%esp), %ecx
2431*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vmovd %ecx, %xmm0
2432*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpinsrd $1, %eax, %xmm0, %xmm0
2433*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpinsrd $2, %ecx, %xmm0, %xmm0
2434*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpinsrd $3, %eax, %xmm0, %xmm0
2435*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vinsertf128 $1, %xmm0, %ymm0, %ymm0
2436*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
2437*9880d681SAndroid Build Coastguard Worker;
2438*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_set1_epi64x:
2439*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
2440*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vmovq %rdi, %xmm0
2441*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vpshufd {{.*#+}} xmm0 = xmm0[0,1,0,1]
2442*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vinsertf128 $1, %xmm0, %ymm0, %ymm0
2443*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
2444*9880d681SAndroid Build Coastguard Worker  %res0 = insertelement <4 x i64> undef, i64 %a0, i32 0
2445*9880d681SAndroid Build Coastguard Worker  %res1 = insertelement <4 x i64> %res0, i64 %a0, i32 1
2446*9880d681SAndroid Build Coastguard Worker  %res2 = insertelement <4 x i64> %res1, i64 %a0, i32 2
2447*9880d681SAndroid Build Coastguard Worker  %res3 = insertelement <4 x i64> %res2, i64 %a0, i32 3
2448*9880d681SAndroid Build Coastguard Worker  ret <4 x i64> %res3
2449*9880d681SAndroid Build Coastguard Worker}
2450*9880d681SAndroid Build Coastguard Worker
2451*9880d681SAndroid Build Coastguard Workerdefine <4 x double> @test_mm256_set1_pd(double %a0) nounwind {
2452*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_set1_pd:
2453*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
2454*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vmovsd {{.*#+}} xmm0 = mem[0],zero
2455*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vmovddup {{.*#+}} xmm0 = xmm0[0,0]
2456*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vinsertf128 $1, %xmm0, %ymm0, %ymm0
2457*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
2458*9880d681SAndroid Build Coastguard Worker;
2459*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_set1_pd:
2460*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
2461*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vmovddup {{.*#+}} xmm0 = xmm0[0,0]
2462*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vinsertf128 $1, %xmm0, %ymm0, %ymm0
2463*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
2464*9880d681SAndroid Build Coastguard Worker  %res0 = insertelement <4 x double> undef, double %a0, i32 0
2465*9880d681SAndroid Build Coastguard Worker  %res1 = insertelement <4 x double> %res0, double %a0, i32 1
2466*9880d681SAndroid Build Coastguard Worker  %res2 = insertelement <4 x double> %res1, double %a0, i32 2
2467*9880d681SAndroid Build Coastguard Worker  %res3 = insertelement <4 x double> %res2, double %a0, i32 3
2468*9880d681SAndroid Build Coastguard Worker  ret <4 x double> %res3
2469*9880d681SAndroid Build Coastguard Worker}
2470*9880d681SAndroid Build Coastguard Worker
2471*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @test_mm256_set1_ps(float %a0) nounwind {
2472*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_set1_ps:
2473*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
2474*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vmovss {{.*#+}} xmm0 = mem[0],zero,zero,zero
2475*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpermilps {{.*#+}} xmm0 = xmm0[0,0,0,0]
2476*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vinsertf128 $1, %xmm0, %ymm0, %ymm0
2477*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
2478*9880d681SAndroid Build Coastguard Worker;
2479*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_set1_ps:
2480*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
2481*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vpermilps {{.*#+}} xmm0 = xmm0[0,0,0,0]
2482*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vinsertf128 $1, %xmm0, %ymm0, %ymm0
2483*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
2484*9880d681SAndroid Build Coastguard Worker  %res0 = insertelement <8 x float> undef, float %a0, i32 0
2485*9880d681SAndroid Build Coastguard Worker  %res1 = insertelement <8 x float> %res0, float %a0, i32 1
2486*9880d681SAndroid Build Coastguard Worker  %res2 = insertelement <8 x float> %res1, float %a0, i32 2
2487*9880d681SAndroid Build Coastguard Worker  %res3 = insertelement <8 x float> %res2, float %a0, i32 3
2488*9880d681SAndroid Build Coastguard Worker  %res4 = insertelement <8 x float> %res3, float %a0, i32 4
2489*9880d681SAndroid Build Coastguard Worker  %res5 = insertelement <8 x float> %res4, float %a0, i32 5
2490*9880d681SAndroid Build Coastguard Worker  %res6 = insertelement <8 x float> %res5, float %a0, i32 6
2491*9880d681SAndroid Build Coastguard Worker  %res7 = insertelement <8 x float> %res6, float %a0, i32 7
2492*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %res7
2493*9880d681SAndroid Build Coastguard Worker}
2494*9880d681SAndroid Build Coastguard Worker
2495*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @test_mm256_setr_epi8(i8 %a0, i8 %a1, i8 %a2, i8 %a3, i8 %a4, i8 %a5, i8 %a6, i8 %a7, i8 %a8, i8 %a9, i8 %a10, i8 %a11, i8 %a12, i8 %a13, i8 %a14, i8 %a15, i8 %a16, i8 %a17, i8 %a18, i8 %a19, i8 %a20, i8 %a21, i8 %a22, i8 %a23, i8 %a24, i8 %a25, i8 %a26, i8 %a27, i8 %a28, i8 %a29, i8 %a30, i8 %a31) nounwind {
2496*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_setr_epi8:
2497*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
2498*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
2499*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movzbl {{[0-9]+}}(%esp), %ecx
2500*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vmovd %ecx, %xmm0
2501*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpinsrb $1, %eax, %xmm0, %xmm0
2502*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
2503*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpinsrb $2, %eax, %xmm0, %xmm0
2504*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
2505*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpinsrb $3, %eax, %xmm0, %xmm0
2506*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
2507*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpinsrb $4, %eax, %xmm0, %xmm0
2508*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
2509*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpinsrb $5, %eax, %xmm0, %xmm0
2510*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
2511*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpinsrb $6, %eax, %xmm0, %xmm0
2512*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
2513*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpinsrb $7, %eax, %xmm0, %xmm0
2514*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
2515*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpinsrb $8, %eax, %xmm0, %xmm0
2516*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
2517*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpinsrb $9, %eax, %xmm0, %xmm0
2518*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
2519*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpinsrb $10, %eax, %xmm0, %xmm0
2520*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
2521*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpinsrb $11, %eax, %xmm0, %xmm0
2522*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
2523*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpinsrb $12, %eax, %xmm0, %xmm0
2524*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
2525*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpinsrb $13, %eax, %xmm0, %xmm0
2526*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
2527*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpinsrb $14, %eax, %xmm0, %xmm0
2528*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
2529*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpinsrb $15, %eax, %xmm0, %xmm0
2530*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
2531*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movzbl {{[0-9]+}}(%esp), %ecx
2532*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vmovd %ecx, %xmm1
2533*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpinsrb $1, %eax, %xmm1, %xmm1
2534*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
2535*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpinsrb $2, %eax, %xmm1, %xmm1
2536*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
2537*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpinsrb $3, %eax, %xmm1, %xmm1
2538*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
2539*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpinsrb $4, %eax, %xmm1, %xmm1
2540*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
2541*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpinsrb $5, %eax, %xmm1, %xmm1
2542*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
2543*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpinsrb $6, %eax, %xmm1, %xmm1
2544*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
2545*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpinsrb $7, %eax, %xmm1, %xmm1
2546*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
2547*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpinsrb $8, %eax, %xmm1, %xmm1
2548*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
2549*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpinsrb $9, %eax, %xmm1, %xmm1
2550*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
2551*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpinsrb $10, %eax, %xmm1, %xmm1
2552*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
2553*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpinsrb $11, %eax, %xmm1, %xmm1
2554*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
2555*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpinsrb $12, %eax, %xmm1, %xmm1
2556*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
2557*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpinsrb $13, %eax, %xmm1, %xmm1
2558*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
2559*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpinsrb $14, %eax, %xmm1, %xmm1
2560*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
2561*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpinsrb $15, %eax, %xmm1, %xmm1
2562*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0
2563*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
2564*9880d681SAndroid Build Coastguard Worker;
2565*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_setr_epi8:
2566*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
2567*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movzbl {{[0-9]+}}(%rsp), %r10d
2568*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax
2569*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vmovd %eax, %xmm0
2570*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vpinsrb $1, %r10d, %xmm0, %xmm0
2571*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax
2572*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vpinsrb $2, %eax, %xmm0, %xmm0
2573*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax
2574*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vpinsrb $3, %eax, %xmm0, %xmm0
2575*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax
2576*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vpinsrb $4, %eax, %xmm0, %xmm0
2577*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax
2578*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vpinsrb $5, %eax, %xmm0, %xmm0
2579*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax
2580*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vpinsrb $6, %eax, %xmm0, %xmm0
2581*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax
2582*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vpinsrb $7, %eax, %xmm0, %xmm0
2583*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax
2584*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vpinsrb $8, %eax, %xmm0, %xmm0
2585*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax
2586*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vpinsrb $9, %eax, %xmm0, %xmm0
2587*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax
2588*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vpinsrb $10, %eax, %xmm0, %xmm0
2589*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax
2590*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vpinsrb $11, %eax, %xmm0, %xmm0
2591*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax
2592*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vpinsrb $12, %eax, %xmm0, %xmm0
2593*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax
2594*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vpinsrb $13, %eax, %xmm0, %xmm0
2595*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax
2596*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vpinsrb $14, %eax, %xmm0, %xmm0
2597*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax
2598*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vpinsrb $15, %eax, %xmm0, %xmm0
2599*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movzbl %sil, %eax
2600*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movzbl %dil, %esi
2601*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vmovd %esi, %xmm1
2602*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vpinsrb $1, %eax, %xmm1, %xmm1
2603*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movzbl %dl, %eax
2604*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vpinsrb $2, %eax, %xmm1, %xmm1
2605*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movzbl %cl, %eax
2606*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vpinsrb $3, %eax, %xmm1, %xmm1
2607*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movzbl %r8b, %eax
2608*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vpinsrb $4, %eax, %xmm1, %xmm1
2609*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movzbl %r9b, %eax
2610*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vpinsrb $5, %eax, %xmm1, %xmm1
2611*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax
2612*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vpinsrb $6, %eax, %xmm1, %xmm1
2613*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax
2614*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vpinsrb $7, %eax, %xmm1, %xmm1
2615*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax
2616*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vpinsrb $8, %eax, %xmm1, %xmm1
2617*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax
2618*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vpinsrb $9, %eax, %xmm1, %xmm1
2619*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax
2620*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vpinsrb $10, %eax, %xmm1, %xmm1
2621*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax
2622*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vpinsrb $11, %eax, %xmm1, %xmm1
2623*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax
2624*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vpinsrb $12, %eax, %xmm1, %xmm1
2625*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax
2626*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vpinsrb $13, %eax, %xmm1, %xmm1
2627*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax
2628*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vpinsrb $14, %eax, %xmm1, %xmm1
2629*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movzbl {{[0-9]+}}(%rsp), %eax
2630*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vpinsrb $15, %eax, %xmm1, %xmm1
2631*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0
2632*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
2633*9880d681SAndroid Build Coastguard Worker  %res0  = insertelement <32 x i8> undef,  i8 %a0 , i32 0
2634*9880d681SAndroid Build Coastguard Worker  %res1  = insertelement <32 x i8> %res0,  i8 %a1 , i32 1
2635*9880d681SAndroid Build Coastguard Worker  %res2  = insertelement <32 x i8> %res1,  i8 %a2 , i32 2
2636*9880d681SAndroid Build Coastguard Worker  %res3  = insertelement <32 x i8> %res2,  i8 %a3 , i32 3
2637*9880d681SAndroid Build Coastguard Worker  %res4  = insertelement <32 x i8> %res3,  i8 %a4 , i32 4
2638*9880d681SAndroid Build Coastguard Worker  %res5  = insertelement <32 x i8> %res4,  i8 %a5 , i32 5
2639*9880d681SAndroid Build Coastguard Worker  %res6  = insertelement <32 x i8> %res5,  i8 %a6 , i32 6
2640*9880d681SAndroid Build Coastguard Worker  %res7  = insertelement <32 x i8> %res6,  i8 %a7 , i32 7
2641*9880d681SAndroid Build Coastguard Worker  %res8  = insertelement <32 x i8> %res7,  i8 %a8 , i32 8
2642*9880d681SAndroid Build Coastguard Worker  %res9  = insertelement <32 x i8> %res8,  i8 %a9 , i32 9
2643*9880d681SAndroid Build Coastguard Worker  %res10 = insertelement <32 x i8> %res9,  i8 %a10, i32 10
2644*9880d681SAndroid Build Coastguard Worker  %res11 = insertelement <32 x i8> %res10, i8 %a11, i32 11
2645*9880d681SAndroid Build Coastguard Worker  %res12 = insertelement <32 x i8> %res11, i8 %a12, i32 12
2646*9880d681SAndroid Build Coastguard Worker  %res13 = insertelement <32 x i8> %res12, i8 %a13, i32 13
2647*9880d681SAndroid Build Coastguard Worker  %res14 = insertelement <32 x i8> %res13, i8 %a14, i32 14
2648*9880d681SAndroid Build Coastguard Worker  %res15 = insertelement <32 x i8> %res14, i8 %a15, i32 15
2649*9880d681SAndroid Build Coastguard Worker  %res16 = insertelement <32 x i8> %res15, i8 %a16, i32 16
2650*9880d681SAndroid Build Coastguard Worker  %res17 = insertelement <32 x i8> %res16, i8 %a17, i32 17
2651*9880d681SAndroid Build Coastguard Worker  %res18 = insertelement <32 x i8> %res17, i8 %a18, i32 18
2652*9880d681SAndroid Build Coastguard Worker  %res19 = insertelement <32 x i8> %res18, i8 %a19, i32 19
2653*9880d681SAndroid Build Coastguard Worker  %res20 = insertelement <32 x i8> %res19, i8 %a20, i32 20
2654*9880d681SAndroid Build Coastguard Worker  %res21 = insertelement <32 x i8> %res20, i8 %a21, i32 21
2655*9880d681SAndroid Build Coastguard Worker  %res22 = insertelement <32 x i8> %res21, i8 %a22, i32 22
2656*9880d681SAndroid Build Coastguard Worker  %res23 = insertelement <32 x i8> %res22, i8 %a23, i32 23
2657*9880d681SAndroid Build Coastguard Worker  %res24 = insertelement <32 x i8> %res23, i8 %a24, i32 24
2658*9880d681SAndroid Build Coastguard Worker  %res25 = insertelement <32 x i8> %res24, i8 %a25, i32 25
2659*9880d681SAndroid Build Coastguard Worker  %res26 = insertelement <32 x i8> %res25, i8 %a26, i32 26
2660*9880d681SAndroid Build Coastguard Worker  %res27 = insertelement <32 x i8> %res26, i8 %a27, i32 27
2661*9880d681SAndroid Build Coastguard Worker  %res28 = insertelement <32 x i8> %res27, i8 %a28, i32 28
2662*9880d681SAndroid Build Coastguard Worker  %res29 = insertelement <32 x i8> %res28, i8 %a29, i32 29
2663*9880d681SAndroid Build Coastguard Worker  %res30 = insertelement <32 x i8> %res29, i8 %a30, i32 30
2664*9880d681SAndroid Build Coastguard Worker  %res31 = insertelement <32 x i8> %res30, i8 %a31, i32 31
2665*9880d681SAndroid Build Coastguard Worker  %res = bitcast <32 x i8> %res31 to <4 x i64>
2666*9880d681SAndroid Build Coastguard Worker  ret <4 x i64> %res
2667*9880d681SAndroid Build Coastguard Worker}
2668*9880d681SAndroid Build Coastguard Worker
2669*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @test_mm256_setr_epi16(i16 %a0, i16 %a1, i16 %a2, i16 %a3, i16 %a4, i16 %a5, i16 %a6, i16 %a7, i16 %a8, i16 %a9, i16 %a10, i16 %a11, i16 %a12, i16 %a13, i16 %a14, i16 %a15) nounwind {
2670*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_setr_epi16:
2671*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
2672*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movw {{[0-9]+}}(%esp), %ax
2673*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vmovd %eax, %xmm0
2674*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movw {{[0-9]+}}(%esp), %ax
2675*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpinsrw $1, %eax, %xmm0, %xmm0
2676*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movw {{[0-9]+}}(%esp), %ax
2677*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpinsrw $2, %eax, %xmm0, %xmm0
2678*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movw {{[0-9]+}}(%esp), %ax
2679*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpinsrw $3, %eax, %xmm0, %xmm0
2680*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movw {{[0-9]+}}(%esp), %ax
2681*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpinsrw $4, %eax, %xmm0, %xmm0
2682*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movw {{[0-9]+}}(%esp), %ax
2683*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpinsrw $5, %eax, %xmm0, %xmm0
2684*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movw {{[0-9]+}}(%esp), %ax
2685*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpinsrw $6, %eax, %xmm0, %xmm0
2686*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movw {{[0-9]+}}(%esp), %ax
2687*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpinsrw $7, %eax, %xmm0, %xmm0
2688*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movw {{[0-9]+}}(%esp), %ax
2689*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vmovd %eax, %xmm1
2690*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movw {{[0-9]+}}(%esp), %ax
2691*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpinsrw $1, %eax, %xmm1, %xmm1
2692*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movw {{[0-9]+}}(%esp), %ax
2693*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpinsrw $2, %eax, %xmm1, %xmm1
2694*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movw {{[0-9]+}}(%esp), %ax
2695*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpinsrw $3, %eax, %xmm1, %xmm1
2696*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movw {{[0-9]+}}(%esp), %ax
2697*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpinsrw $4, %eax, %xmm1, %xmm1
2698*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movw {{[0-9]+}}(%esp), %ax
2699*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpinsrw $5, %eax, %xmm1, %xmm1
2700*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movw {{[0-9]+}}(%esp), %ax
2701*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpinsrw $6, %eax, %xmm1, %xmm1
2702*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movw {{[0-9]+}}(%esp), %ax
2703*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpinsrw $7, %eax, %xmm1, %xmm1
2704*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0
2705*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
2706*9880d681SAndroid Build Coastguard Worker;
2707*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_setr_epi16:
2708*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
2709*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movw {{[0-9]+}}(%rsp), %ax
2710*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vmovd %eax, %xmm0
2711*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movw {{[0-9]+}}(%rsp), %ax
2712*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vpinsrw $1, %eax, %xmm0, %xmm0
2713*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movw {{[0-9]+}}(%rsp), %ax
2714*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vpinsrw $2, %eax, %xmm0, %xmm0
2715*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movw {{[0-9]+}}(%rsp), %ax
2716*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vpinsrw $3, %eax, %xmm0, %xmm0
2717*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movw {{[0-9]+}}(%rsp), %ax
2718*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vpinsrw $4, %eax, %xmm0, %xmm0
2719*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movw {{[0-9]+}}(%rsp), %ax
2720*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vpinsrw $5, %eax, %xmm0, %xmm0
2721*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movw {{[0-9]+}}(%rsp), %ax
2722*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vpinsrw $6, %eax, %xmm0, %xmm0
2723*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movw {{[0-9]+}}(%rsp), %ax
2724*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vpinsrw $7, %eax, %xmm0, %xmm0
2725*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vmovd %edi, %xmm1
2726*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vpinsrw $1, %esi, %xmm1, %xmm1
2727*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vpinsrw $2, %edx, %xmm1, %xmm1
2728*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vpinsrw $3, %ecx, %xmm1, %xmm1
2729*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vpinsrw $4, %r8d, %xmm1, %xmm1
2730*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vpinsrw $5, %r9d, %xmm1, %xmm1
2731*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movw {{[0-9]+}}(%rsp), %ax
2732*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vpinsrw $6, %eax, %xmm1, %xmm1
2733*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    movw {{[0-9]+}}(%rsp), %ax
2734*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vpinsrw $7, %eax, %xmm1, %xmm1
2735*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0
2736*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
2737*9880d681SAndroid Build Coastguard Worker  %res0  = insertelement <16 x i16> undef,  i16 %a0 , i32 0
2738*9880d681SAndroid Build Coastguard Worker  %res1  = insertelement <16 x i16> %res0,  i16 %a1 , i32 1
2739*9880d681SAndroid Build Coastguard Worker  %res2  = insertelement <16 x i16> %res1,  i16 %a2 , i32 2
2740*9880d681SAndroid Build Coastguard Worker  %res3  = insertelement <16 x i16> %res2,  i16 %a3 , i32 3
2741*9880d681SAndroid Build Coastguard Worker  %res4  = insertelement <16 x i16> %res3,  i16 %a4 , i32 4
2742*9880d681SAndroid Build Coastguard Worker  %res5  = insertelement <16 x i16> %res4,  i16 %a5 , i32 5
2743*9880d681SAndroid Build Coastguard Worker  %res6  = insertelement <16 x i16> %res5,  i16 %a6 , i32 6
2744*9880d681SAndroid Build Coastguard Worker  %res7  = insertelement <16 x i16> %res6,  i16 %a7 , i32 7
2745*9880d681SAndroid Build Coastguard Worker  %res8  = insertelement <16 x i16> %res7,  i16 %a8 , i32 8
2746*9880d681SAndroid Build Coastguard Worker  %res9  = insertelement <16 x i16> %res8,  i16 %a9 , i32 9
2747*9880d681SAndroid Build Coastguard Worker  %res10 = insertelement <16 x i16> %res9,  i16 %a10, i32 10
2748*9880d681SAndroid Build Coastguard Worker  %res11 = insertelement <16 x i16> %res10, i16 %a11, i32 11
2749*9880d681SAndroid Build Coastguard Worker  %res12 = insertelement <16 x i16> %res11, i16 %a12, i32 12
2750*9880d681SAndroid Build Coastguard Worker  %res13 = insertelement <16 x i16> %res12, i16 %a13, i32 13
2751*9880d681SAndroid Build Coastguard Worker  %res14 = insertelement <16 x i16> %res13, i16 %a14, i32 14
2752*9880d681SAndroid Build Coastguard Worker  %res15 = insertelement <16 x i16> %res14, i16 %a15, i32 15
2753*9880d681SAndroid Build Coastguard Worker  %res = bitcast <16 x i16> %res15 to <4 x i64>
2754*9880d681SAndroid Build Coastguard Worker  ret <4 x i64> %res
2755*9880d681SAndroid Build Coastguard Worker}
2756*9880d681SAndroid Build Coastguard Worker
2757*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @test_mm256_setr_epi32(i32 %a0, i32 %a1, i32 %a2, i32 %a3, i32 %a4, i32 %a5, i32 %a6, i32 %a7) nounwind {
2758*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_setr_epi32:
2759*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
2760*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vmovd {{.*#+}} xmm0 = mem[0],zero,zero,zero
2761*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpinsrd $1, {{[0-9]+}}(%esp), %xmm0, %xmm0
2762*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpinsrd $2, {{[0-9]+}}(%esp), %xmm0, %xmm0
2763*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpinsrd $3, {{[0-9]+}}(%esp), %xmm0, %xmm0
2764*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vmovd {{.*#+}} xmm1 = mem[0],zero,zero,zero
2765*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpinsrd $1, {{[0-9]+}}(%esp), %xmm1, %xmm1
2766*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpinsrd $2, {{[0-9]+}}(%esp), %xmm1, %xmm1
2767*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpinsrd $3, {{[0-9]+}}(%esp), %xmm1, %xmm1
2768*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0
2769*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
2770*9880d681SAndroid Build Coastguard Worker;
2771*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_setr_epi32:
2772*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
2773*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vmovd %r8d, %xmm0
2774*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vpinsrd $1, %r9d, %xmm0, %xmm0
2775*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vpinsrd $2, {{[0-9]+}}(%rsp), %xmm0, %xmm0
2776*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vpinsrd $3, {{[0-9]+}}(%rsp), %xmm0, %xmm0
2777*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vmovd %edi, %xmm1
2778*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vpinsrd $1, %esi, %xmm1, %xmm1
2779*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vpinsrd $2, %edx, %xmm1, %xmm1
2780*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vpinsrd $3, %ecx, %xmm1, %xmm1
2781*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0
2782*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
2783*9880d681SAndroid Build Coastguard Worker  %res0 = insertelement <8 x i32> undef, i32 %a0, i32 0
2784*9880d681SAndroid Build Coastguard Worker  %res1 = insertelement <8 x i32> %res0, i32 %a1, i32 1
2785*9880d681SAndroid Build Coastguard Worker  %res2 = insertelement <8 x i32> %res1, i32 %a2, i32 2
2786*9880d681SAndroid Build Coastguard Worker  %res3 = insertelement <8 x i32> %res2, i32 %a3, i32 3
2787*9880d681SAndroid Build Coastguard Worker  %res4 = insertelement <8 x i32> %res3, i32 %a4, i32 4
2788*9880d681SAndroid Build Coastguard Worker  %res5 = insertelement <8 x i32> %res4, i32 %a5, i32 5
2789*9880d681SAndroid Build Coastguard Worker  %res6 = insertelement <8 x i32> %res5, i32 %a6, i32 6
2790*9880d681SAndroid Build Coastguard Worker  %res7 = insertelement <8 x i32> %res6, i32 %a7, i32 7
2791*9880d681SAndroid Build Coastguard Worker  %res = bitcast <8 x i32> %res7 to <4 x i64>
2792*9880d681SAndroid Build Coastguard Worker  ret <4 x i64> %res
2793*9880d681SAndroid Build Coastguard Worker}
2794*9880d681SAndroid Build Coastguard Worker
2795*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @test_mm256_setr_epi64x(i64 %a0, i64 %a1, i64 %a2, i64 %a3) nounwind {
2796*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_setr_epi64x:
2797*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
2798*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vmovd {{.*#+}} xmm0 = mem[0],zero,zero,zero
2799*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpinsrd $1, {{[0-9]+}}(%esp), %xmm0, %xmm0
2800*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpinsrd $2, {{[0-9]+}}(%esp), %xmm0, %xmm0
2801*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpinsrd $3, {{[0-9]+}}(%esp), %xmm0, %xmm0
2802*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vmovd {{.*#+}} xmm1 = mem[0],zero,zero,zero
2803*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpinsrd $1, {{[0-9]+}}(%esp), %xmm1, %xmm1
2804*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpinsrd $2, {{[0-9]+}}(%esp), %xmm1, %xmm1
2805*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpinsrd $3, {{[0-9]+}}(%esp), %xmm1, %xmm1
2806*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0
2807*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
2808*9880d681SAndroid Build Coastguard Worker;
2809*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_setr_epi64x:
2810*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
2811*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vmovq %rcx, %xmm0
2812*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vmovq %rdx, %xmm1
2813*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vpunpcklqdq {{.*#+}} xmm0 = xmm1[0],xmm0[0]
2814*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vmovq %rsi, %xmm1
2815*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vmovq %rdi, %xmm2
2816*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vpunpcklqdq {{.*#+}} xmm1 = xmm2[0],xmm1[0]
2817*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0
2818*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
2819*9880d681SAndroid Build Coastguard Worker  %res0 = insertelement <4 x i64> undef, i64 %a0, i32 0
2820*9880d681SAndroid Build Coastguard Worker  %res1 = insertelement <4 x i64> %res0, i64 %a1, i32 1
2821*9880d681SAndroid Build Coastguard Worker  %res2 = insertelement <4 x i64> %res1, i64 %a2, i32 2
2822*9880d681SAndroid Build Coastguard Worker  %res3 = insertelement <4 x i64> %res2, i64 %a3, i32 3
2823*9880d681SAndroid Build Coastguard Worker  ret <4 x i64> %res3
2824*9880d681SAndroid Build Coastguard Worker}
2825*9880d681SAndroid Build Coastguard Worker
2826*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @test_mm256_setr_m128(<4 x float> %a0, <4 x float> %a1) nounwind {
2827*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_setr_m128:
2828*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
2829*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    # kill: %XMM0<def> %XMM0<kill> %YMM0<def>
2830*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm0
2831*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
2832*9880d681SAndroid Build Coastguard Worker;
2833*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_setr_m128:
2834*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
2835*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    # kill: %XMM0<def> %XMM0<kill> %YMM0<def>
2836*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm0
2837*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
2838*9880d681SAndroid Build Coastguard Worker  %res = shufflevector <4 x float> %a0, <4 x float> %a1, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
2839*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %res
2840*9880d681SAndroid Build Coastguard Worker}
2841*9880d681SAndroid Build Coastguard Worker
2842*9880d681SAndroid Build Coastguard Workerdefine <4 x double> @test_mm256_setr_m128d(<2 x double> %a0, <2 x double> %a1) nounwind {
2843*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_setr_m128d:
2844*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
2845*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    # kill: %XMM0<def> %XMM0<kill> %YMM0<def>
2846*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm0
2847*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
2848*9880d681SAndroid Build Coastguard Worker;
2849*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_setr_m128d:
2850*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
2851*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    # kill: %XMM0<def> %XMM0<kill> %YMM0<def>
2852*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm0
2853*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
2854*9880d681SAndroid Build Coastguard Worker  %arg0 = bitcast <2 x double> %a0 to <4 x float>
2855*9880d681SAndroid Build Coastguard Worker  %arg1 = bitcast <2 x double> %a1 to <4 x float>
2856*9880d681SAndroid Build Coastguard Worker  %res = shufflevector <4 x float> %arg0, <4 x float> %arg1, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
2857*9880d681SAndroid Build Coastguard Worker  %bc = bitcast <8 x float> %res to <4 x double>
2858*9880d681SAndroid Build Coastguard Worker  ret <4 x double> %bc
2859*9880d681SAndroid Build Coastguard Worker}
2860*9880d681SAndroid Build Coastguard Worker
2861*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @test_mm256_setr_m128i(<2 x i64> %a0, <2 x i64> %a1) nounwind {
2862*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_setr_m128i:
2863*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
2864*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    # kill: %XMM0<def> %XMM0<kill> %YMM0<def>
2865*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm0
2866*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
2867*9880d681SAndroid Build Coastguard Worker;
2868*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_setr_m128i:
2869*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
2870*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    # kill: %XMM0<def> %XMM0<kill> %YMM0<def>
2871*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm0
2872*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
2873*9880d681SAndroid Build Coastguard Worker  %arg0 = bitcast <2 x i64> %a0 to <4 x float>
2874*9880d681SAndroid Build Coastguard Worker  %arg1 = bitcast <2 x i64> %a1 to <4 x float>
2875*9880d681SAndroid Build Coastguard Worker  %res = shufflevector <4 x float> %arg0, <4 x float> %arg1, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
2876*9880d681SAndroid Build Coastguard Worker  %bc = bitcast <8 x float> %res to <4 x i64>
2877*9880d681SAndroid Build Coastguard Worker  ret <4 x i64> %bc
2878*9880d681SAndroid Build Coastguard Worker}
2879*9880d681SAndroid Build Coastguard Worker
2880*9880d681SAndroid Build Coastguard Workerdefine <4 x double> @test_mm256_setr_pd(double %a0, double %a1, double %a2, double %a3) nounwind {
2881*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_setr_pd:
2882*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
2883*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vmovsd {{.*#+}} xmm0 = mem[0],zero
2884*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vmovsd {{.*#+}} xmm1 = mem[0],zero
2885*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vmovsd {{.*#+}} xmm2 = mem[0],zero
2886*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vmovsd {{.*#+}} xmm3 = mem[0],zero
2887*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vunpcklpd {{.*#+}} xmm0 = xmm1[0],xmm0[0]
2888*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vunpcklpd {{.*#+}} xmm1 = xmm3[0],xmm2[0]
2889*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0
2890*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
2891*9880d681SAndroid Build Coastguard Worker;
2892*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_setr_pd:
2893*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
2894*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vunpcklpd {{.*#+}} xmm2 = xmm2[0],xmm3[0]
2895*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vunpcklpd {{.*#+}} xmm0 = xmm0[0],xmm1[0]
2896*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm0
2897*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
2898*9880d681SAndroid Build Coastguard Worker  %res0 = insertelement <4 x double> undef, double %a0, i32 0
2899*9880d681SAndroid Build Coastguard Worker  %res1 = insertelement <4 x double> %res0, double %a1, i32 1
2900*9880d681SAndroid Build Coastguard Worker  %res2 = insertelement <4 x double> %res1, double %a2, i32 2
2901*9880d681SAndroid Build Coastguard Worker  %res3 = insertelement <4 x double> %res2, double %a3, i32 3
2902*9880d681SAndroid Build Coastguard Worker  ret <4 x double> %res3
2903*9880d681SAndroid Build Coastguard Worker}
2904*9880d681SAndroid Build Coastguard Worker
2905*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @test_mm256_setr_ps(float %a0, float %a1, float %a2, float %a3, float %a4, float %a5, float %a6, float %a7) nounwind {
2906*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_setr_ps:
2907*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
2908*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vmovss {{.*#+}} xmm0 = mem[0],zero,zero,zero
2909*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vmovss {{.*#+}} xmm1 = mem[0],zero,zero,zero
2910*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vmovss {{.*#+}} xmm2 = mem[0],zero,zero,zero
2911*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vmovss {{.*#+}} xmm3 = mem[0],zero,zero,zero
2912*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vmovss {{.*#+}} xmm4 = mem[0],zero,zero,zero
2913*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vmovss {{.*#+}} xmm5 = mem[0],zero,zero,zero
2914*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vmovss {{.*#+}} xmm6 = mem[0],zero,zero,zero
2915*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vmovss {{.*#+}} xmm7 = mem[0],zero,zero,zero
2916*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vinsertps {{.*#+}} xmm2 = xmm3[0],xmm2[0],xmm3[2,3]
2917*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vinsertps {{.*#+}} xmm1 = xmm2[0,1],xmm1[0],xmm2[3]
2918*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vinsertps {{.*#+}} xmm0 = xmm1[0,1,2],xmm0[0]
2919*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vinsertps {{.*#+}} xmm1 = xmm7[0],xmm6[0],xmm7[2,3]
2920*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vinsertps {{.*#+}} xmm1 = xmm1[0,1],xmm5[0],xmm1[3]
2921*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vinsertps {{.*#+}} xmm1 = xmm1[0,1,2],xmm4[0]
2922*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0
2923*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
2924*9880d681SAndroid Build Coastguard Worker;
2925*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_setr_ps:
2926*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
2927*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vinsertps {{.*#+}} xmm4 = xmm4[0],xmm5[0],xmm4[2,3]
2928*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vinsertps {{.*#+}} xmm4 = xmm4[0,1],xmm6[0],xmm4[3]
2929*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vinsertps {{.*#+}} xmm4 = xmm4[0,1,2],xmm7[0]
2930*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vinsertps {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[2,3]
2931*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vinsertps {{.*#+}} xmm0 = xmm0[0,1],xmm2[0],xmm0[3]
2932*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vinsertps {{.*#+}} xmm0 = xmm0[0,1,2],xmm3[0]
2933*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vinsertf128 $1, %xmm4, %ymm0, %ymm0
2934*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
2935*9880d681SAndroid Build Coastguard Worker  %res0 = insertelement <8 x float> undef, float %a0, i32 0
2936*9880d681SAndroid Build Coastguard Worker  %res1 = insertelement <8 x float> %res0, float %a1, i32 1
2937*9880d681SAndroid Build Coastguard Worker  %res2 = insertelement <8 x float> %res1, float %a2, i32 2
2938*9880d681SAndroid Build Coastguard Worker  %res3 = insertelement <8 x float> %res2, float %a3, i32 3
2939*9880d681SAndroid Build Coastguard Worker  %res4 = insertelement <8 x float> %res3, float %a4, i32 4
2940*9880d681SAndroid Build Coastguard Worker  %res5 = insertelement <8 x float> %res4, float %a5, i32 5
2941*9880d681SAndroid Build Coastguard Worker  %res6 = insertelement <8 x float> %res5, float %a6, i32 6
2942*9880d681SAndroid Build Coastguard Worker  %res7 = insertelement <8 x float> %res6, float %a7, i32 7
2943*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %res7
2944*9880d681SAndroid Build Coastguard Worker}
2945*9880d681SAndroid Build Coastguard Worker
2946*9880d681SAndroid Build Coastguard Workerdefine <4 x double> @test_mm256_setzero_pd() nounwind {
2947*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_setzero_pd:
2948*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
2949*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vxorps %ymm0, %ymm0, %ymm0
2950*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
2951*9880d681SAndroid Build Coastguard Worker;
2952*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_setzero_pd:
2953*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
2954*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vxorps %ymm0, %ymm0, %ymm0
2955*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
2956*9880d681SAndroid Build Coastguard Worker  ret <4 x double> zeroinitializer
2957*9880d681SAndroid Build Coastguard Worker}
2958*9880d681SAndroid Build Coastguard Worker
2959*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @test_mm256_setzero_ps() nounwind {
2960*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_setzero_ps:
2961*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
2962*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vxorps %ymm0, %ymm0, %ymm0
2963*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
2964*9880d681SAndroid Build Coastguard Worker;
2965*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_setzero_ps:
2966*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
2967*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vxorps %ymm0, %ymm0, %ymm0
2968*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
2969*9880d681SAndroid Build Coastguard Worker  ret <8 x float> zeroinitializer
2970*9880d681SAndroid Build Coastguard Worker}
2971*9880d681SAndroid Build Coastguard Worker
2972*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @test_mm256_setzero_si256() nounwind {
2973*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_setzero_si256:
2974*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
2975*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vxorps %ymm0, %ymm0, %ymm0
2976*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
2977*9880d681SAndroid Build Coastguard Worker;
2978*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_setzero_si256:
2979*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
2980*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vxorps %ymm0, %ymm0, %ymm0
2981*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
2982*9880d681SAndroid Build Coastguard Worker  ret <4 x i64> zeroinitializer
2983*9880d681SAndroid Build Coastguard Worker}
2984*9880d681SAndroid Build Coastguard Worker
2985*9880d681SAndroid Build Coastguard Workerdefine <4 x double> @test_mm256_shuffle_pd(<4 x double> %a0, <4 x double> %a1) nounwind {
2986*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_shuffle_pd:
2987*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
2988*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vunpcklpd {{.*#+}} ymm0 = ymm0[0],ymm1[0],ymm0[2],ymm1[2]
2989*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
2990*9880d681SAndroid Build Coastguard Worker;
2991*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_shuffle_pd:
2992*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
2993*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vunpcklpd {{.*#+}} ymm0 = ymm0[0],ymm1[0],ymm0[2],ymm1[2]
2994*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
2995*9880d681SAndroid Build Coastguard Worker  %res = shufflevector <4 x double> %a0, <4 x double> %a1, <4 x i32> <i32 0, i32 4, i32 2, i32 6>
2996*9880d681SAndroid Build Coastguard Worker  ret <4 x double> %res
2997*9880d681SAndroid Build Coastguard Worker}
2998*9880d681SAndroid Build Coastguard Worker
2999*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @test_mm256_shuffle_ps(<8 x float> %a0, <8 x float> %a1) nounwind {
3000*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_shuffle_ps:
3001*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
3002*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vshufps {{.*#+}} ymm0 = ymm0[0,0],ymm1[0,0],ymm0[4,4],ymm1[4,4]
3003*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
3004*9880d681SAndroid Build Coastguard Worker;
3005*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_shuffle_ps:
3006*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
3007*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vshufps {{.*#+}} ymm0 = ymm0[0,0],ymm1[0,0],ymm0[4,4],ymm1[4,4]
3008*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
3009*9880d681SAndroid Build Coastguard Worker  %res = shufflevector <8 x float> %a0, <8 x float> %a1, <8 x i32> <i32 0, i32 0, i32 8, i32 8, i32 4, i32 4, i32 12, i32 12>
3010*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %res
3011*9880d681SAndroid Build Coastguard Worker}
3012*9880d681SAndroid Build Coastguard Worker
3013*9880d681SAndroid Build Coastguard Workerdefine <4 x double> @test_mm256_sqrt_pd(<4 x double> %a0) nounwind {
3014*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_sqrt_pd:
3015*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
3016*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vsqrtpd %ymm0, %ymm0
3017*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
3018*9880d681SAndroid Build Coastguard Worker;
3019*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_sqrt_pd:
3020*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
3021*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vsqrtpd %ymm0, %ymm0
3022*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
3023*9880d681SAndroid Build Coastguard Worker  %res = call <4 x double> @llvm.x86.avx.sqrt.pd.256(<4 x double> %a0)
3024*9880d681SAndroid Build Coastguard Worker  ret <4 x double> %res
3025*9880d681SAndroid Build Coastguard Worker}
3026*9880d681SAndroid Build Coastguard Workerdeclare <4 x double> @llvm.x86.avx.sqrt.pd.256(<4 x double>) nounwind readnone
3027*9880d681SAndroid Build Coastguard Worker
3028*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @test_mm256_sqrt_ps(<8 x float> %a0) nounwind {
3029*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_sqrt_ps:
3030*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
3031*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vsqrtps %ymm0, %ymm0
3032*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
3033*9880d681SAndroid Build Coastguard Worker;
3034*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_sqrt_ps:
3035*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
3036*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vsqrtps %ymm0, %ymm0
3037*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
3038*9880d681SAndroid Build Coastguard Worker  %res = call <8 x float> @llvm.x86.avx.sqrt.ps.256(<8 x float> %a0)
3039*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %res
3040*9880d681SAndroid Build Coastguard Worker}
3041*9880d681SAndroid Build Coastguard Workerdeclare <8 x float> @llvm.x86.avx.sqrt.ps.256(<8 x float>) nounwind readnone
3042*9880d681SAndroid Build Coastguard Worker
3043*9880d681SAndroid Build Coastguard Workerdefine void @test_mm256_store_pd(double* %a0, <4 x double> %a1) nounwind {
3044*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_store_pd:
3045*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
3046*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movl {{[0-9]+}}(%esp), %eax
3047*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vmovaps %ymm0, (%eax)
3048*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vzeroupper
3049*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
3050*9880d681SAndroid Build Coastguard Worker;
3051*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_store_pd:
3052*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
3053*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vmovaps %ymm0, (%rdi)
3054*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vzeroupper
3055*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
3056*9880d681SAndroid Build Coastguard Worker  %arg0 = bitcast double* %a0 to <4 x double>*
3057*9880d681SAndroid Build Coastguard Worker  store <4 x double> %a1, <4 x double>* %arg0, align 32
3058*9880d681SAndroid Build Coastguard Worker  ret void
3059*9880d681SAndroid Build Coastguard Worker}
3060*9880d681SAndroid Build Coastguard Worker
3061*9880d681SAndroid Build Coastguard Workerdefine void @test_mm256_store_ps(float* %a0, <8 x float> %a1) nounwind {
3062*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_store_ps:
3063*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
3064*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movl {{[0-9]+}}(%esp), %eax
3065*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vmovaps %ymm0, (%eax)
3066*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vzeroupper
3067*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
3068*9880d681SAndroid Build Coastguard Worker;
3069*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_store_ps:
3070*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
3071*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vmovaps %ymm0, (%rdi)
3072*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vzeroupper
3073*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
3074*9880d681SAndroid Build Coastguard Worker  %arg0 = bitcast float* %a0 to <8 x float>*
3075*9880d681SAndroid Build Coastguard Worker  store <8 x float> %a1, <8 x float>* %arg0, align 32
3076*9880d681SAndroid Build Coastguard Worker  ret void
3077*9880d681SAndroid Build Coastguard Worker}
3078*9880d681SAndroid Build Coastguard Worker
3079*9880d681SAndroid Build Coastguard Workerdefine void @test_mm256_store_si256(<4 x i64>* %a0, <4 x i64> %a1) nounwind {
3080*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_store_si256:
3081*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
3082*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movl {{[0-9]+}}(%esp), %eax
3083*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vmovaps %ymm0, (%eax)
3084*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vzeroupper
3085*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
3086*9880d681SAndroid Build Coastguard Worker;
3087*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_store_si256:
3088*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
3089*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vmovaps %ymm0, (%rdi)
3090*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vzeroupper
3091*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
3092*9880d681SAndroid Build Coastguard Worker  store <4 x i64> %a1, <4 x i64>* %a0, align 32
3093*9880d681SAndroid Build Coastguard Worker  ret void
3094*9880d681SAndroid Build Coastguard Worker}
3095*9880d681SAndroid Build Coastguard Worker
3096*9880d681SAndroid Build Coastguard Workerdefine void @test_mm256_storeu_pd(double* %a0, <4 x double> %a1) nounwind {
3097*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_storeu_pd:
3098*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
3099*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movl {{[0-9]+}}(%esp), %eax
3100*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vmovups %ymm0, (%eax)
3101*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vzeroupper
3102*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
3103*9880d681SAndroid Build Coastguard Worker;
3104*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_storeu_pd:
3105*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
3106*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vmovups %ymm0, (%rdi)
3107*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vzeroupper
3108*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
3109*9880d681SAndroid Build Coastguard Worker  %arg0 = bitcast double* %a0 to <4 x double>*
3110*9880d681SAndroid Build Coastguard Worker  store <4 x double> %a1, <4 x double>* %arg0, align 1
3111*9880d681SAndroid Build Coastguard Worker  ret void
3112*9880d681SAndroid Build Coastguard Worker}
3113*9880d681SAndroid Build Coastguard Worker
3114*9880d681SAndroid Build Coastguard Workerdefine void @test_mm256_storeu_ps(float* %a0, <8 x float> %a1) nounwind {
3115*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_storeu_ps:
3116*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
3117*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movl {{[0-9]+}}(%esp), %eax
3118*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vmovups %ymm0, (%eax)
3119*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vzeroupper
3120*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
3121*9880d681SAndroid Build Coastguard Worker;
3122*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_storeu_ps:
3123*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
3124*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vmovups %ymm0, (%rdi)
3125*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vzeroupper
3126*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
3127*9880d681SAndroid Build Coastguard Worker  %arg0 = bitcast float* %a0 to <8 x float>*
3128*9880d681SAndroid Build Coastguard Worker  store <8 x float> %a1, <8 x float>* %arg0, align 1
3129*9880d681SAndroid Build Coastguard Worker  ret void
3130*9880d681SAndroid Build Coastguard Worker}
3131*9880d681SAndroid Build Coastguard Worker
3132*9880d681SAndroid Build Coastguard Workerdefine void @test_mm256_storeu_si256(<4 x i64>* %a0, <4 x i64> %a1) nounwind {
3133*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_storeu_si256:
3134*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
3135*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movl {{[0-9]+}}(%esp), %eax
3136*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vmovups %ymm0, (%eax)
3137*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vzeroupper
3138*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
3139*9880d681SAndroid Build Coastguard Worker;
3140*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_storeu_si256:
3141*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
3142*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vmovups %ymm0, (%rdi)
3143*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vzeroupper
3144*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
3145*9880d681SAndroid Build Coastguard Worker  store <4 x i64> %a1, <4 x i64>* %a0, align 1
3146*9880d681SAndroid Build Coastguard Worker  ret void
3147*9880d681SAndroid Build Coastguard Worker}
3148*9880d681SAndroid Build Coastguard Worker
3149*9880d681SAndroid Build Coastguard Workerdefine void @test_mm256_storeu2_m128(float* %a0, float* %a1, <8 x float> %a2) nounwind {
3150*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_storeu2_m128:
3151*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
3152*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movl {{[0-9]+}}(%esp), %eax
3153*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movl {{[0-9]+}}(%esp), %ecx
3154*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vmovups %xmm0, (%ecx)
3155*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vextractf128 $1, %ymm0, %xmm0
3156*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vmovups %xmm0, (%eax)
3157*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vzeroupper
3158*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
3159*9880d681SAndroid Build Coastguard Worker;
3160*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_storeu2_m128:
3161*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
3162*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vmovups %xmm0, (%rdi)
3163*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vextractf128 $1, %ymm0, %xmm0
3164*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vmovups %xmm0, (%rsi)
3165*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vzeroupper
3166*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
3167*9880d681SAndroid Build Coastguard Worker  %arg0 = bitcast float* %a0 to <4 x float>*
3168*9880d681SAndroid Build Coastguard Worker  %lo = shufflevector <8 x float> %a2, <8 x float> %a2, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
3169*9880d681SAndroid Build Coastguard Worker  store <4 x float> %lo, <4 x float>* %arg0, align 1
3170*9880d681SAndroid Build Coastguard Worker  %arg1 = bitcast float* %a1 to <4 x float>*
3171*9880d681SAndroid Build Coastguard Worker  %hi = shufflevector <8 x float> %a2, <8 x float> %a2, <4 x i32> <i32 4, i32 5, i32 6, i32 7>
3172*9880d681SAndroid Build Coastguard Worker  store <4 x float> %hi, <4 x float>* %arg1, align 1
3173*9880d681SAndroid Build Coastguard Worker  ret void
3174*9880d681SAndroid Build Coastguard Worker}
3175*9880d681SAndroid Build Coastguard Worker
3176*9880d681SAndroid Build Coastguard Workerdefine void @test_mm256_storeu2_m128d(double* %a0, double* %a1, <4 x double> %a2) nounwind {
3177*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_storeu2_m128d:
3178*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
3179*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movl {{[0-9]+}}(%esp), %eax
3180*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movl {{[0-9]+}}(%esp), %ecx
3181*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vmovups %xmm0, (%ecx)
3182*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vextractf128 $1, %ymm0, %xmm0
3183*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vmovups %xmm0, (%eax)
3184*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vzeroupper
3185*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
3186*9880d681SAndroid Build Coastguard Worker;
3187*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_storeu2_m128d:
3188*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
3189*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vmovups %xmm0, (%rdi)
3190*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vextractf128 $1, %ymm0, %xmm0
3191*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vmovups %xmm0, (%rsi)
3192*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vzeroupper
3193*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
3194*9880d681SAndroid Build Coastguard Worker  %arg0 = bitcast double* %a0 to <2 x double>*
3195*9880d681SAndroid Build Coastguard Worker  %lo = shufflevector <4 x double> %a2, <4 x double> %a2, <2 x i32> <i32 0, i32 1>
3196*9880d681SAndroid Build Coastguard Worker  store <2 x double> %lo, <2 x double>* %arg0, align 1
3197*9880d681SAndroid Build Coastguard Worker  %arg1 = bitcast double* %a1 to <2 x double>*
3198*9880d681SAndroid Build Coastguard Worker  %hi = shufflevector <4 x double> %a2, <4 x double> %a2, <2 x i32> <i32 2, i32 3>
3199*9880d681SAndroid Build Coastguard Worker  store <2 x double> %hi, <2 x double>* %arg1, align 1
3200*9880d681SAndroid Build Coastguard Worker  ret void
3201*9880d681SAndroid Build Coastguard Worker}
3202*9880d681SAndroid Build Coastguard Worker
3203*9880d681SAndroid Build Coastguard Workerdefine void @test_mm256_storeu2_m128i(<2 x i64>* %a0, <2 x i64>* %a1, <4 x i64> %a2) nounwind {
3204*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_storeu2_m128i:
3205*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
3206*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movl {{[0-9]+}}(%esp), %eax
3207*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movl {{[0-9]+}}(%esp), %ecx
3208*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vmovups %xmm0, (%ecx)
3209*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vextractf128 $1, %ymm0, %xmm0
3210*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vmovups %xmm0, (%eax)
3211*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vzeroupper
3212*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
3213*9880d681SAndroid Build Coastguard Worker;
3214*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_storeu2_m128i:
3215*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
3216*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vmovups %xmm0, (%rdi)
3217*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vextractf128 $1, %ymm0, %xmm0
3218*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vmovups %xmm0, (%rsi)
3219*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vzeroupper
3220*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
3221*9880d681SAndroid Build Coastguard Worker  %arg0 = bitcast <2 x i64>* %a0 to <2 x i64>*
3222*9880d681SAndroid Build Coastguard Worker  %lo = shufflevector <4 x i64> %a2, <4 x i64> %a2, <2 x i32> <i32 0, i32 1>
3223*9880d681SAndroid Build Coastguard Worker  store <2 x i64> %lo, <2 x i64>* %arg0, align 1
3224*9880d681SAndroid Build Coastguard Worker  %arg1 = bitcast <2 x i64>* %a1 to <2 x i64>*
3225*9880d681SAndroid Build Coastguard Worker  %hi = shufflevector <4 x i64> %a2, <4 x i64> %a2, <2 x i32> <i32 2, i32 3>
3226*9880d681SAndroid Build Coastguard Worker  store <2 x i64> %hi, <2 x i64>* %arg1, align 1
3227*9880d681SAndroid Build Coastguard Worker  ret void
3228*9880d681SAndroid Build Coastguard Worker}
3229*9880d681SAndroid Build Coastguard Worker
3230*9880d681SAndroid Build Coastguard Workerdefine void @test_mm256_stream_pd(double *%a0, <4 x double> %a1) nounwind {
3231*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_stream_pd:
3232*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
3233*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movl {{[0-9]+}}(%esp), %eax
3234*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vmovntps %ymm0, (%eax)
3235*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vzeroupper
3236*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
3237*9880d681SAndroid Build Coastguard Worker;
3238*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_stream_pd:
3239*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
3240*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vmovntps %ymm0, (%rdi)
3241*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vzeroupper
3242*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
3243*9880d681SAndroid Build Coastguard Worker  %arg0 = bitcast double* %a0 to <4 x double>*
3244*9880d681SAndroid Build Coastguard Worker  store <4 x double> %a1, <4 x double>* %arg0, align 32, !nontemporal !0
3245*9880d681SAndroid Build Coastguard Worker  ret void
3246*9880d681SAndroid Build Coastguard Worker}
3247*9880d681SAndroid Build Coastguard Worker
3248*9880d681SAndroid Build Coastguard Workerdefine void @test_mm256_stream_ps(float *%a0, <8 x float> %a1) nounwind {
3249*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_stream_ps:
3250*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
3251*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movl {{[0-9]+}}(%esp), %eax
3252*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vmovntps %ymm0, (%eax)
3253*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vzeroupper
3254*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
3255*9880d681SAndroid Build Coastguard Worker;
3256*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_stream_ps:
3257*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
3258*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vmovntps %ymm0, (%rdi)
3259*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vzeroupper
3260*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
3261*9880d681SAndroid Build Coastguard Worker  %arg0 = bitcast float* %a0 to <8 x float>*
3262*9880d681SAndroid Build Coastguard Worker  store <8 x float> %a1, <8 x float>* %arg0, align 32, !nontemporal !0
3263*9880d681SAndroid Build Coastguard Worker  ret void
3264*9880d681SAndroid Build Coastguard Worker}
3265*9880d681SAndroid Build Coastguard Worker
3266*9880d681SAndroid Build Coastguard Workerdefine void @test_mm256_stream_si256(<4 x i64> *%a0, <4 x i64> %a1) nounwind {
3267*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_stream_si256:
3268*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
3269*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movl {{[0-9]+}}(%esp), %eax
3270*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vmovntps %ymm0, (%eax)
3271*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vzeroupper
3272*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
3273*9880d681SAndroid Build Coastguard Worker;
3274*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_stream_si256:
3275*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
3276*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vmovntps %ymm0, (%rdi)
3277*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vzeroupper
3278*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
3279*9880d681SAndroid Build Coastguard Worker  store <4 x i64> %a1, <4 x i64>* %a0, align 32, !nontemporal !0
3280*9880d681SAndroid Build Coastguard Worker  ret void
3281*9880d681SAndroid Build Coastguard Worker}
3282*9880d681SAndroid Build Coastguard Worker
3283*9880d681SAndroid Build Coastguard Workerdefine <4 x double> @test_mm256_sub_pd(<4 x double> %a0, <4 x double> %a1) nounwind {
3284*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_sub_pd:
3285*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
3286*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vsubpd %ymm1, %ymm0, %ymm0
3287*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
3288*9880d681SAndroid Build Coastguard Worker;
3289*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_sub_pd:
3290*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
3291*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vsubpd %ymm1, %ymm0, %ymm0
3292*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
3293*9880d681SAndroid Build Coastguard Worker  %res = fsub <4 x double> %a0, %a1
3294*9880d681SAndroid Build Coastguard Worker  ret <4 x double> %res
3295*9880d681SAndroid Build Coastguard Worker}
3296*9880d681SAndroid Build Coastguard Worker
3297*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @test_mm256_sub_ps(<8 x float> %a0, <8 x float> %a1) nounwind {
3298*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_sub_ps:
3299*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
3300*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vsubps %ymm1, %ymm0, %ymm0
3301*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
3302*9880d681SAndroid Build Coastguard Worker;
3303*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_sub_ps:
3304*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
3305*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vsubps %ymm1, %ymm0, %ymm0
3306*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
3307*9880d681SAndroid Build Coastguard Worker  %res = fsub <8 x float> %a0, %a1
3308*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %res
3309*9880d681SAndroid Build Coastguard Worker}
3310*9880d681SAndroid Build Coastguard Worker
3311*9880d681SAndroid Build Coastguard Workerdefine i32 @test_mm_testc_pd(<2 x double> %a0, <2 x double> %a1) nounwind {
3312*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_testc_pd:
3313*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
3314*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vtestpd %xmm1, %xmm0
3315*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    sbbl %eax, %eax
3316*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    andl $1, %eax
3317*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
3318*9880d681SAndroid Build Coastguard Worker;
3319*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_testc_pd:
3320*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
3321*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vtestpd %xmm1, %xmm0
3322*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    sbbl %eax, %eax
3323*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    andl $1, %eax
3324*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
3325*9880d681SAndroid Build Coastguard Worker  %res = call i32 @llvm.x86.avx.vtestc.pd(<2 x double> %a0, <2 x double> %a1)
3326*9880d681SAndroid Build Coastguard Worker  ret i32 %res
3327*9880d681SAndroid Build Coastguard Worker}
3328*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.avx.vtestc.pd(<2 x double>, <2 x double>) nounwind readnone
3329*9880d681SAndroid Build Coastguard Worker
3330*9880d681SAndroid Build Coastguard Workerdefine i32 @test_mm256_testc_pd(<4 x double> %a0, <4 x double> %a1) nounwind {
3331*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_testc_pd:
3332*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
3333*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vtestpd %ymm1, %ymm0
3334*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    sbbl %eax, %eax
3335*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    andl $1, %eax
3336*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vzeroupper
3337*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
3338*9880d681SAndroid Build Coastguard Worker;
3339*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_testc_pd:
3340*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
3341*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vtestpd %ymm1, %ymm0
3342*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    sbbl %eax, %eax
3343*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    andl $1, %eax
3344*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vzeroupper
3345*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
3346*9880d681SAndroid Build Coastguard Worker  %res = call i32 @llvm.x86.avx.vtestc.pd.256(<4 x double> %a0, <4 x double> %a1)
3347*9880d681SAndroid Build Coastguard Worker  ret i32 %res
3348*9880d681SAndroid Build Coastguard Worker}
3349*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.avx.vtestc.pd.256(<4 x double>, <4 x double>) nounwind readnone
3350*9880d681SAndroid Build Coastguard Worker
3351*9880d681SAndroid Build Coastguard Workerdefine i32 @test_mm_testc_ps(<4 x float> %a0, <4 x float> %a1) nounwind {
3352*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_testc_ps:
3353*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
3354*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vtestps %xmm1, %xmm0
3355*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    sbbl %eax, %eax
3356*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    andl $1, %eax
3357*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
3358*9880d681SAndroid Build Coastguard Worker;
3359*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_testc_ps:
3360*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
3361*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vtestps %xmm1, %xmm0
3362*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    sbbl %eax, %eax
3363*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    andl $1, %eax
3364*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
3365*9880d681SAndroid Build Coastguard Worker  %res = call i32 @llvm.x86.avx.vtestc.ps(<4 x float> %a0, <4 x float> %a1)
3366*9880d681SAndroid Build Coastguard Worker  ret i32 %res
3367*9880d681SAndroid Build Coastguard Worker}
3368*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.avx.vtestc.ps(<4 x float>, <4 x float>) nounwind readnone
3369*9880d681SAndroid Build Coastguard Worker
3370*9880d681SAndroid Build Coastguard Workerdefine i32 @test_mm256_testc_ps(<8 x float> %a0, <8 x float> %a1) nounwind {
3371*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_testc_ps:
3372*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
3373*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vtestps %ymm1, %ymm0
3374*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    sbbl %eax, %eax
3375*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    andl $1, %eax
3376*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vzeroupper
3377*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
3378*9880d681SAndroid Build Coastguard Worker;
3379*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_testc_ps:
3380*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
3381*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vtestps %ymm1, %ymm0
3382*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    sbbl %eax, %eax
3383*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    andl $1, %eax
3384*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vzeroupper
3385*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
3386*9880d681SAndroid Build Coastguard Worker  %res = call i32 @llvm.x86.avx.vtestc.ps.256(<8 x float> %a0, <8 x float> %a1)
3387*9880d681SAndroid Build Coastguard Worker  ret i32 %res
3388*9880d681SAndroid Build Coastguard Worker}
3389*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.avx.vtestc.ps.256(<8 x float>, <8 x float>) nounwind readnone
3390*9880d681SAndroid Build Coastguard Worker
3391*9880d681SAndroid Build Coastguard Workerdefine i32 @test_mm256_testc_si256(<4 x i64> %a0, <4 x i64> %a1) nounwind {
3392*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_testc_si256:
3393*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
3394*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vptest %ymm1, %ymm0
3395*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    sbbl %eax, %eax
3396*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    andl $1, %eax
3397*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vzeroupper
3398*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
3399*9880d681SAndroid Build Coastguard Worker;
3400*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_testc_si256:
3401*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
3402*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vptest %ymm1, %ymm0
3403*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    sbbl %eax, %eax
3404*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    andl $1, %eax
3405*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vzeroupper
3406*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
3407*9880d681SAndroid Build Coastguard Worker  %res = call i32 @llvm.x86.avx.ptestc.256(<4 x i64> %a0, <4 x i64> %a1)
3408*9880d681SAndroid Build Coastguard Worker  ret i32 %res
3409*9880d681SAndroid Build Coastguard Worker}
3410*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.avx.ptestc.256(<4 x i64>, <4 x i64>) nounwind readnone
3411*9880d681SAndroid Build Coastguard Worker
3412*9880d681SAndroid Build Coastguard Workerdefine i32 @test_mm_testnzc_pd(<2 x double> %a0, <2 x double> %a1) nounwind {
3413*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_testnzc_pd:
3414*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
3415*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    xorl %eax, %eax
3416*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vtestpd %xmm1, %xmm0
3417*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    seta %al
3418*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
3419*9880d681SAndroid Build Coastguard Worker;
3420*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_testnzc_pd:
3421*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
3422*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    xorl %eax, %eax
3423*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vtestpd %xmm1, %xmm0
3424*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    seta %al
3425*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
3426*9880d681SAndroid Build Coastguard Worker  %res = call i32 @llvm.x86.avx.vtestnzc.pd(<2 x double> %a0, <2 x double> %a1)
3427*9880d681SAndroid Build Coastguard Worker  ret i32 %res
3428*9880d681SAndroid Build Coastguard Worker}
3429*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.avx.vtestnzc.pd(<2 x double>, <2 x double>) nounwind readnone
3430*9880d681SAndroid Build Coastguard Worker
3431*9880d681SAndroid Build Coastguard Workerdefine i32 @test_mm256_testnzc_pd(<4 x double> %a0, <4 x double> %a1) nounwind {
3432*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_testnzc_pd:
3433*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
3434*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    xorl %eax, %eax
3435*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vtestpd %ymm1, %ymm0
3436*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    seta %al
3437*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vzeroupper
3438*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
3439*9880d681SAndroid Build Coastguard Worker;
3440*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_testnzc_pd:
3441*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
3442*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    xorl %eax, %eax
3443*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vtestpd %ymm1, %ymm0
3444*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    seta %al
3445*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vzeroupper
3446*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
3447*9880d681SAndroid Build Coastguard Worker  %res = call i32 @llvm.x86.avx.vtestnzc.pd.256(<4 x double> %a0, <4 x double> %a1)
3448*9880d681SAndroid Build Coastguard Worker  ret i32 %res
3449*9880d681SAndroid Build Coastguard Worker}
3450*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.avx.vtestnzc.pd.256(<4 x double>, <4 x double>) nounwind readnone
3451*9880d681SAndroid Build Coastguard Worker
3452*9880d681SAndroid Build Coastguard Workerdefine i32 @test_mm_testnzc_ps(<4 x float> %a0, <4 x float> %a1) nounwind {
3453*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_testnzc_ps:
3454*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
3455*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    xorl %eax, %eax
3456*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vtestps %xmm1, %xmm0
3457*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    seta %al
3458*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
3459*9880d681SAndroid Build Coastguard Worker;
3460*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_testnzc_ps:
3461*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
3462*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    xorl %eax, %eax
3463*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vtestps %xmm1, %xmm0
3464*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    seta %al
3465*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
3466*9880d681SAndroid Build Coastguard Worker  %res = call i32 @llvm.x86.avx.vtestnzc.ps(<4 x float> %a0, <4 x float> %a1)
3467*9880d681SAndroid Build Coastguard Worker  ret i32 %res
3468*9880d681SAndroid Build Coastguard Worker}
3469*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.avx.vtestnzc.ps(<4 x float>, <4 x float>) nounwind readnone
3470*9880d681SAndroid Build Coastguard Worker
3471*9880d681SAndroid Build Coastguard Workerdefine i32 @test_mm256_testnzc_ps(<8 x float> %a0, <8 x float> %a1) nounwind {
3472*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_testnzc_ps:
3473*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
3474*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    xorl %eax, %eax
3475*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vtestps %ymm1, %ymm0
3476*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    seta %al
3477*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vzeroupper
3478*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
3479*9880d681SAndroid Build Coastguard Worker;
3480*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_testnzc_ps:
3481*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
3482*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    xorl %eax, %eax
3483*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vtestps %ymm1, %ymm0
3484*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    seta %al
3485*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vzeroupper
3486*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
3487*9880d681SAndroid Build Coastguard Worker  %res = call i32 @llvm.x86.avx.vtestnzc.ps.256(<8 x float> %a0, <8 x float> %a1)
3488*9880d681SAndroid Build Coastguard Worker  ret i32 %res
3489*9880d681SAndroid Build Coastguard Worker}
3490*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.avx.vtestnzc.ps.256(<8 x float>, <8 x float>) nounwind readnone
3491*9880d681SAndroid Build Coastguard Worker
3492*9880d681SAndroid Build Coastguard Workerdefine i32 @test_mm256_testnzc_si256(<4 x i64> %a0, <4 x i64> %a1) nounwind {
3493*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_testnzc_si256:
3494*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
3495*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    xorl %eax, %eax
3496*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vptest %ymm1, %ymm0
3497*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    seta %al
3498*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vzeroupper
3499*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
3500*9880d681SAndroid Build Coastguard Worker;
3501*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_testnzc_si256:
3502*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
3503*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    xorl %eax, %eax
3504*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vptest %ymm1, %ymm0
3505*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    seta %al
3506*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vzeroupper
3507*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
3508*9880d681SAndroid Build Coastguard Worker  %res = call i32 @llvm.x86.avx.ptestnzc.256(<4 x i64> %a0, <4 x i64> %a1)
3509*9880d681SAndroid Build Coastguard Worker  ret i32 %res
3510*9880d681SAndroid Build Coastguard Worker}
3511*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.avx.ptestnzc.256(<4 x i64>, <4 x i64>) nounwind readnone
3512*9880d681SAndroid Build Coastguard Worker
3513*9880d681SAndroid Build Coastguard Workerdefine i32 @test_mm_testz_pd(<2 x double> %a0, <2 x double> %a1) nounwind {
3514*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_testz_pd:
3515*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
3516*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    xorl %eax, %eax
3517*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vtestpd %xmm1, %xmm0
3518*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    sete %al
3519*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
3520*9880d681SAndroid Build Coastguard Worker;
3521*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_testz_pd:
3522*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
3523*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    xorl %eax, %eax
3524*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vtestpd %xmm1, %xmm0
3525*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    sete %al
3526*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
3527*9880d681SAndroid Build Coastguard Worker  %res = call i32 @llvm.x86.avx.vtestz.pd(<2 x double> %a0, <2 x double> %a1)
3528*9880d681SAndroid Build Coastguard Worker  ret i32 %res
3529*9880d681SAndroid Build Coastguard Worker}
3530*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.avx.vtestz.pd(<2 x double>, <2 x double>) nounwind readnone
3531*9880d681SAndroid Build Coastguard Worker
3532*9880d681SAndroid Build Coastguard Workerdefine i32 @test_mm256_testz_pd(<4 x double> %a0, <4 x double> %a1) nounwind {
3533*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_testz_pd:
3534*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
3535*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    xorl %eax, %eax
3536*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vtestpd %ymm1, %ymm0
3537*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    sete %al
3538*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vzeroupper
3539*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
3540*9880d681SAndroid Build Coastguard Worker;
3541*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_testz_pd:
3542*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
3543*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    xorl %eax, %eax
3544*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vtestpd %ymm1, %ymm0
3545*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    sete %al
3546*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vzeroupper
3547*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
3548*9880d681SAndroid Build Coastguard Worker  %res = call i32 @llvm.x86.avx.vtestz.pd.256(<4 x double> %a0, <4 x double> %a1)
3549*9880d681SAndroid Build Coastguard Worker  ret i32 %res
3550*9880d681SAndroid Build Coastguard Worker}
3551*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.avx.vtestz.pd.256(<4 x double>, <4 x double>) nounwind readnone
3552*9880d681SAndroid Build Coastguard Worker
3553*9880d681SAndroid Build Coastguard Workerdefine i32 @test_mm_testz_ps(<4 x float> %a0, <4 x float> %a1) nounwind {
3554*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_testz_ps:
3555*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
3556*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    xorl %eax, %eax
3557*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vtestps %xmm1, %xmm0
3558*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    sete %al
3559*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
3560*9880d681SAndroid Build Coastguard Worker;
3561*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_testz_ps:
3562*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
3563*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    xorl %eax, %eax
3564*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vtestps %xmm1, %xmm0
3565*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    sete %al
3566*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
3567*9880d681SAndroid Build Coastguard Worker  %res = call i32 @llvm.x86.avx.vtestz.ps(<4 x float> %a0, <4 x float> %a1)
3568*9880d681SAndroid Build Coastguard Worker  ret i32 %res
3569*9880d681SAndroid Build Coastguard Worker}
3570*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.avx.vtestz.ps(<4 x float>, <4 x float>) nounwind readnone
3571*9880d681SAndroid Build Coastguard Worker
3572*9880d681SAndroid Build Coastguard Workerdefine i32 @test_mm256_testz_ps(<8 x float> %a0, <8 x float> %a1) nounwind {
3573*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_testz_ps:
3574*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
3575*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    xorl %eax, %eax
3576*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vtestps %ymm1, %ymm0
3577*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    sete %al
3578*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vzeroupper
3579*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
3580*9880d681SAndroid Build Coastguard Worker;
3581*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_testz_ps:
3582*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
3583*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    xorl %eax, %eax
3584*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vtestps %ymm1, %ymm0
3585*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    sete %al
3586*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vzeroupper
3587*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
3588*9880d681SAndroid Build Coastguard Worker  %res = call i32 @llvm.x86.avx.vtestz.ps.256(<8 x float> %a0, <8 x float> %a1)
3589*9880d681SAndroid Build Coastguard Worker  ret i32 %res
3590*9880d681SAndroid Build Coastguard Worker}
3591*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.avx.vtestz.ps.256(<8 x float>, <8 x float>) nounwind readnone
3592*9880d681SAndroid Build Coastguard Worker
3593*9880d681SAndroid Build Coastguard Workerdefine i32 @test_mm256_testz_si256(<4 x i64> %a0, <4 x i64> %a1) nounwind {
3594*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_testz_si256:
3595*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
3596*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    xorl %eax, %eax
3597*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vptest %ymm1, %ymm0
3598*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    sete %al
3599*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vzeroupper
3600*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
3601*9880d681SAndroid Build Coastguard Worker;
3602*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_testz_si256:
3603*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
3604*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    xorl %eax, %eax
3605*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vptest %ymm1, %ymm0
3606*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    sete %al
3607*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vzeroupper
3608*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
3609*9880d681SAndroid Build Coastguard Worker  %res = call i32 @llvm.x86.avx.ptestz.256(<4 x i64> %a0, <4 x i64> %a1)
3610*9880d681SAndroid Build Coastguard Worker  ret i32 %res
3611*9880d681SAndroid Build Coastguard Worker}
3612*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.avx.ptestz.256(<4 x i64>, <4 x i64>) nounwind readnone
3613*9880d681SAndroid Build Coastguard Worker
3614*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mm_undefined_pd() nounwind {
3615*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_undefined_pd:
3616*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
3617*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
3618*9880d681SAndroid Build Coastguard Worker;
3619*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_undefined_pd:
3620*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
3621*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
3622*9880d681SAndroid Build Coastguard Worker  ret <2 x double> undef
3623*9880d681SAndroid Build Coastguard Worker}
3624*9880d681SAndroid Build Coastguard Worker
3625*9880d681SAndroid Build Coastguard Workerdefine <4 x double> @test_mm256_undefined_pd() nounwind {
3626*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_undefined_pd:
3627*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
3628*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
3629*9880d681SAndroid Build Coastguard Worker;
3630*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_undefined_pd:
3631*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
3632*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
3633*9880d681SAndroid Build Coastguard Worker  ret <4 x double> undef
3634*9880d681SAndroid Build Coastguard Worker}
3635*9880d681SAndroid Build Coastguard Worker
3636*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @test_mm256_undefined_ps() nounwind {
3637*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_undefined_ps:
3638*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
3639*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
3640*9880d681SAndroid Build Coastguard Worker;
3641*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_undefined_ps:
3642*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
3643*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
3644*9880d681SAndroid Build Coastguard Worker  ret <8 x float> undef
3645*9880d681SAndroid Build Coastguard Worker}
3646*9880d681SAndroid Build Coastguard Worker
3647*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @test_mm256_undefined_si256() nounwind {
3648*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_undefined_si256:
3649*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
3650*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
3651*9880d681SAndroid Build Coastguard Worker;
3652*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_undefined_si256:
3653*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
3654*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
3655*9880d681SAndroid Build Coastguard Worker  ret <4 x i64> undef
3656*9880d681SAndroid Build Coastguard Worker}
3657*9880d681SAndroid Build Coastguard Worker
3658*9880d681SAndroid Build Coastguard Workerdefine <4 x double> @test_mm256_unpackhi_pd(<4 x double> %a0, <4 x double> %a1) nounwind {
3659*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_unpackhi_pd:
3660*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
3661*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vunpckhpd {{.*#+}} ymm0 = ymm0[1],ymm1[1],ymm0[3],ymm1[3]
3662*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
3663*9880d681SAndroid Build Coastguard Worker;
3664*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_unpackhi_pd:
3665*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
3666*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vunpckhpd {{.*#+}} ymm0 = ymm0[1],ymm1[1],ymm0[3],ymm1[3]
3667*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
3668*9880d681SAndroid Build Coastguard Worker  %res = shufflevector <4 x double> %a0, <4 x double> %a1, <4 x i32> <i32 1, i32 5, i32 3, i32 7>
3669*9880d681SAndroid Build Coastguard Worker  ret <4 x double> %res
3670*9880d681SAndroid Build Coastguard Worker}
3671*9880d681SAndroid Build Coastguard Worker
3672*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @test_mm256_unpackhi_ps(<8 x float> %a0, <8 x float> %a1) nounwind {
3673*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_unpackhi_ps:
3674*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
3675*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vunpckhps {{.*#+}} ymm0 = ymm0[2],ymm1[2],ymm0[3],ymm1[3],ymm0[6],ymm1[6],ymm0[7],ymm1[7]
3676*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
3677*9880d681SAndroid Build Coastguard Worker;
3678*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_unpackhi_ps:
3679*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
3680*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vunpckhps {{.*#+}} ymm0 = ymm0[2],ymm1[2],ymm0[3],ymm1[3],ymm0[6],ymm1[6],ymm0[7],ymm1[7]
3681*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
3682*9880d681SAndroid Build Coastguard Worker  %res = shufflevector <8 x float> %a0, <8 x float> %a1, <8 x i32> <i32 2, i32 10, i32 3, i32 11, i32 6, i32 14, i32 7, i32 15>
3683*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %res
3684*9880d681SAndroid Build Coastguard Worker}
3685*9880d681SAndroid Build Coastguard Worker
3686*9880d681SAndroid Build Coastguard Workerdefine <4 x double> @test_mm256_unpacklo_pd(<4 x double> %a0, <4 x double> %a1) nounwind {
3687*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_unpacklo_pd:
3688*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
3689*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vunpcklpd {{.*#+}} ymm0 = ymm0[0],ymm1[0],ymm0[2],ymm1[2]
3690*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
3691*9880d681SAndroid Build Coastguard Worker;
3692*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_unpacklo_pd:
3693*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
3694*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vunpcklpd {{.*#+}} ymm0 = ymm0[0],ymm1[0],ymm0[2],ymm1[2]
3695*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
3696*9880d681SAndroid Build Coastguard Worker  %res = shufflevector <4 x double> %a0, <4 x double> %a1, <4 x i32> <i32 0, i32 4, i32 2, i32 6>
3697*9880d681SAndroid Build Coastguard Worker  ret <4 x double> %res
3698*9880d681SAndroid Build Coastguard Worker}
3699*9880d681SAndroid Build Coastguard Worker
3700*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @test_mm256_unpacklo_ps(<8 x float> %a0, <8 x float> %a1) nounwind {
3701*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_unpacklo_ps:
3702*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
3703*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vunpcklps {{.*#+}} ymm0 = ymm0[0],ymm1[0],ymm0[1],ymm1[1],ymm0[4],ymm1[4],ymm0[5],ymm1[5]
3704*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
3705*9880d681SAndroid Build Coastguard Worker;
3706*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_unpacklo_ps:
3707*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
3708*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vunpcklps {{.*#+}} ymm0 = ymm0[0],ymm1[0],ymm0[1],ymm1[1],ymm0[4],ymm1[4],ymm0[5],ymm1[5]
3709*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
3710*9880d681SAndroid Build Coastguard Worker  %res = shufflevector <8 x float> %a0, <8 x float> %a1, <8 x i32> <i32 0, i32 8, i32 1, i32 9, i32 4, i32 12, i32 5, i32 13>
3711*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %res
3712*9880d681SAndroid Build Coastguard Worker}
3713*9880d681SAndroid Build Coastguard Worker
3714*9880d681SAndroid Build Coastguard Workerdefine <4 x double> @test_mm256_xor_pd(<4 x double> %a0, <4 x double> %a1) nounwind {
3715*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_xor_pd:
3716*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
3717*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vxorps %ymm1, %ymm0, %ymm0
3718*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
3719*9880d681SAndroid Build Coastguard Worker;
3720*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_xor_pd:
3721*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
3722*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vxorps %ymm1, %ymm0, %ymm0
3723*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
3724*9880d681SAndroid Build Coastguard Worker  %1 = bitcast <4 x double> %a0 to <4 x i64>
3725*9880d681SAndroid Build Coastguard Worker  %2 = bitcast <4 x double> %a1 to <4 x i64>
3726*9880d681SAndroid Build Coastguard Worker  %res = xor <4 x i64> %1, %2
3727*9880d681SAndroid Build Coastguard Worker  %bc = bitcast <4 x i64> %res to <4 x double>
3728*9880d681SAndroid Build Coastguard Worker  ret <4 x double> %bc
3729*9880d681SAndroid Build Coastguard Worker}
3730*9880d681SAndroid Build Coastguard Worker
3731*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @test_mm256_xor_ps(<8 x float> %a0, <8 x float> %a1) nounwind {
3732*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_xor_ps:
3733*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
3734*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vxorps %ymm1, %ymm0, %ymm0
3735*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
3736*9880d681SAndroid Build Coastguard Worker;
3737*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_xor_ps:
3738*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
3739*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vxorps %ymm1, %ymm0, %ymm0
3740*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
3741*9880d681SAndroid Build Coastguard Worker  %1 = bitcast <8 x float> %a0 to <8 x i32>
3742*9880d681SAndroid Build Coastguard Worker  %2 = bitcast <8 x float> %a1 to <8 x i32>
3743*9880d681SAndroid Build Coastguard Worker  %res = xor <8 x i32> %1, %2
3744*9880d681SAndroid Build Coastguard Worker  %bc = bitcast <8 x i32> %res to <8 x float>
3745*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %bc
3746*9880d681SAndroid Build Coastguard Worker}
3747*9880d681SAndroid Build Coastguard Worker
3748*9880d681SAndroid Build Coastguard Workerdefine void @test_mm256_zeroall() nounwind {
3749*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_zeroall:
3750*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
3751*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vzeroall
3752*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
3753*9880d681SAndroid Build Coastguard Worker;
3754*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_zeroall:
3755*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
3756*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vzeroall
3757*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
3758*9880d681SAndroid Build Coastguard Worker  call void @llvm.x86.avx.vzeroall()
3759*9880d681SAndroid Build Coastguard Worker  ret void
3760*9880d681SAndroid Build Coastguard Worker}
3761*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.x86.avx.vzeroall() nounwind readnone
3762*9880d681SAndroid Build Coastguard Worker
3763*9880d681SAndroid Build Coastguard Workerdefine void @test_mm256_zeroupper() nounwind {
3764*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_zeroupper:
3765*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
3766*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vzeroupper
3767*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
3768*9880d681SAndroid Build Coastguard Worker;
3769*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_zeroupper:
3770*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
3771*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vzeroupper
3772*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
3773*9880d681SAndroid Build Coastguard Worker  call void @llvm.x86.avx.vzeroupper()
3774*9880d681SAndroid Build Coastguard Worker  ret void
3775*9880d681SAndroid Build Coastguard Worker}
3776*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.x86.avx.vzeroupper() nounwind readnone
3777*9880d681SAndroid Build Coastguard Worker
3778*9880d681SAndroid Build Coastguard Worker!0 = !{i32 1}
3779