xref: /aosp_15_r20/external/llvm/test/CodeGen/X86/avx2-intrinsics-x86-upgrade.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
2*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -mtriple=x86_64-apple-darwin -march=x86 -mattr=avx2 | FileCheck %s
3*9880d681SAndroid Build Coastguard Worker
4*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @test_x86_avx2_pblendw(<16 x i16> %a0, <16 x i16> %a1) {
5*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx2_pblendw:
6*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
7*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpblendw {{.*#+}} ymm0 = ymm1[0,1,2],ymm0[3,4,5,6,7],ymm1[8,9,10],ymm0[11,12,13,14,15]
8*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retl
9*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i16> @llvm.x86.avx2.pblendw(<16 x i16> %a0, <16 x i16> %a1, i32 7) ; <<16 x i16>> [#uses=1]
10*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %res
11*9880d681SAndroid Build Coastguard Worker}
12*9880d681SAndroid Build Coastguard Workerdeclare <16 x i16> @llvm.x86.avx2.pblendw(<16 x i16>, <16 x i16>, i32) nounwind readnone
13*9880d681SAndroid Build Coastguard Worker
14*9880d681SAndroid Build Coastguard Worker
15*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test_x86_avx2_pblendd_128(<4 x i32> %a0, <4 x i32> %a1) {
16*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx2_pblendd_128:
17*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
18*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpblendd {{.*#+}} xmm0 = xmm1[0,1,2],xmm0[3]
19*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retl
20*9880d681SAndroid Build Coastguard Worker  %res = call <4 x i32> @llvm.x86.avx2.pblendd.128(<4 x i32> %a0, <4 x i32> %a1, i32 7) ; <<4 x i32>> [#uses=1]
21*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %res
22*9880d681SAndroid Build Coastguard Worker}
23*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.avx2.pblendd.128(<4 x i32>, <4 x i32>, i32) nounwind readnone
24*9880d681SAndroid Build Coastguard Worker
25*9880d681SAndroid Build Coastguard Worker
26*9880d681SAndroid Build Coastguard Workerdefine <8 x i32> @test_x86_avx2_pblendd_256(<8 x i32> %a0, <8 x i32> %a1) {
27*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx2_pblendd_256:
28*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
29*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpblendd {{.*#+}} ymm0 = ymm1[0,1,2],ymm0[3,4,5,6,7]
30*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retl
31*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i32> @llvm.x86.avx2.pblendd.256(<8 x i32> %a0, <8 x i32> %a1, i32 7) ; <<8 x i32>> [#uses=1]
32*9880d681SAndroid Build Coastguard Worker  ret <8 x i32> %res
33*9880d681SAndroid Build Coastguard Worker}
34*9880d681SAndroid Build Coastguard Workerdeclare <8 x i32> @llvm.x86.avx2.pblendd.256(<8 x i32>, <8 x i32>, i32) nounwind readnone
35*9880d681SAndroid Build Coastguard Worker
36*9880d681SAndroid Build Coastguard Worker
37*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @test_x86_avx2_mpsadbw(<32 x i8> %a0, <32 x i8> %a1) {
38*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx2_mpsadbw:
39*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
40*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmpsadbw $7, %ymm1, %ymm0, %ymm0
41*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retl
42*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i16> @llvm.x86.avx2.mpsadbw(<32 x i8> %a0, <32 x i8> %a1, i32 7) ; <<16 x i16>> [#uses=1]
43*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %res
44*9880d681SAndroid Build Coastguard Worker}
45*9880d681SAndroid Build Coastguard Workerdeclare <16 x i16> @llvm.x86.avx2.mpsadbw(<32 x i8>, <32 x i8>, i32) nounwind readnone
46*9880d681SAndroid Build Coastguard Worker
47*9880d681SAndroid Build Coastguard Worker
48*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @test_x86_avx2_psll_dq_bs(<4 x i64> %a0) {
49*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx2_psll_dq_bs:
50*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
51*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpslldq {{.*#+}} ymm0 = zero,zero,zero,zero,zero,zero,zero,ymm0[0,1,2,3,4,5,6,7,8],zero,zero,zero,zero,zero,zero,zero,ymm0[16,17,18,19,20,21,22,23,24]
52*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retl
53*9880d681SAndroid Build Coastguard Worker  %res = call <4 x i64> @llvm.x86.avx2.psll.dq.bs(<4 x i64> %a0, i32 7) ; <<4 x i64>> [#uses=1]
54*9880d681SAndroid Build Coastguard Worker  ret <4 x i64> %res
55*9880d681SAndroid Build Coastguard Worker}
56*9880d681SAndroid Build Coastguard Workerdeclare <4 x i64> @llvm.x86.avx2.psll.dq.bs(<4 x i64>, i32) nounwind readnone
57*9880d681SAndroid Build Coastguard Worker
58*9880d681SAndroid Build Coastguard Worker
59*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @test_x86_avx2_psrl_dq_bs(<4 x i64> %a0) {
60*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx2_psrl_dq_bs:
61*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
62*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsrldq {{.*#+}} ymm0 = ymm0[7,8,9,10,11,12,13,14,15],zero,zero,zero,zero,zero,zero,zero,ymm0[23,24,25,26,27,28,29,30,31],zero,zero,zero,zero,zero,zero,zero
63*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retl
64*9880d681SAndroid Build Coastguard Worker  %res = call <4 x i64> @llvm.x86.avx2.psrl.dq.bs(<4 x i64> %a0, i32 7) ; <<4 x i64>> [#uses=1]
65*9880d681SAndroid Build Coastguard Worker  ret <4 x i64> %res
66*9880d681SAndroid Build Coastguard Worker}
67*9880d681SAndroid Build Coastguard Workerdeclare <4 x i64> @llvm.x86.avx2.psrl.dq.bs(<4 x i64>, i32) nounwind readnone
68*9880d681SAndroid Build Coastguard Worker
69*9880d681SAndroid Build Coastguard Worker
70*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @test_x86_avx2_psll_dq(<4 x i64> %a0) {
71*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx2_psll_dq:
72*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
73*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpslldq {{.*#+}} ymm0 = zero,ymm0[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14],zero,ymm0[16,17,18,19,20,21,22,23,24,25,26,27,28,29,30]
74*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retl
75*9880d681SAndroid Build Coastguard Worker  %res = call <4 x i64> @llvm.x86.avx2.psll.dq(<4 x i64> %a0, i32 8) ; <<4 x i64>> [#uses=1]
76*9880d681SAndroid Build Coastguard Worker  ret <4 x i64> %res
77*9880d681SAndroid Build Coastguard Worker}
78*9880d681SAndroid Build Coastguard Workerdeclare <4 x i64> @llvm.x86.avx2.psll.dq(<4 x i64>, i32) nounwind readnone
79*9880d681SAndroid Build Coastguard Worker
80*9880d681SAndroid Build Coastguard Worker
81*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @test_x86_avx2_psrl_dq(<4 x i64> %a0) {
82*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx2_psrl_dq:
83*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
84*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsrldq {{.*#+}} ymm0 = ymm0[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15],zero,ymm0[17,18,19,20,21,22,23,24,25,26,27,28,29,30,31],zero
85*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retl
86*9880d681SAndroid Build Coastguard Worker  %res = call <4 x i64> @llvm.x86.avx2.psrl.dq(<4 x i64> %a0, i32 8) ; <<4 x i64>> [#uses=1]
87*9880d681SAndroid Build Coastguard Worker  ret <4 x i64> %res
88*9880d681SAndroid Build Coastguard Worker}
89*9880d681SAndroid Build Coastguard Workerdeclare <4 x i64> @llvm.x86.avx2.psrl.dq(<4 x i64>, i32) nounwind readnone
90*9880d681SAndroid Build Coastguard Worker
91*9880d681SAndroid Build Coastguard Worker
92*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_x86_avx2_vextracti128(<4 x i64> %a0) {
93*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx2_vextracti128:
94*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
95*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vextractf128 $1, %ymm0, %xmm0
96*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vzeroupper
97*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retl
98*9880d681SAndroid Build Coastguard Worker  %res = call <2 x i64> @llvm.x86.avx2.vextracti128(<4 x i64> %a0, i8 7)
99*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %res
100*9880d681SAndroid Build Coastguard Worker}
101*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.x86.avx2.vextracti128(<4 x i64>, i8) nounwind readnone
102*9880d681SAndroid Build Coastguard Worker
103*9880d681SAndroid Build Coastguard Worker
104*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @test_x86_avx2_vinserti128(<4 x i64> %a0, <2 x i64> %a1) {
105*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx2_vinserti128:
106*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
107*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm0
108*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retl
109*9880d681SAndroid Build Coastguard Worker  %res = call <4 x i64> @llvm.x86.avx2.vinserti128(<4 x i64> %a0, <2 x i64> %a1, i8 7)
110*9880d681SAndroid Build Coastguard Worker  ret <4 x i64> %res
111*9880d681SAndroid Build Coastguard Worker}
112*9880d681SAndroid Build Coastguard Workerdeclare <4 x i64> @llvm.x86.avx2.vinserti128(<4 x i64>, <2 x i64>, i8) nounwind readnone
113*9880d681SAndroid Build Coastguard Worker
114*9880d681SAndroid Build Coastguard Worker
115*9880d681SAndroid Build Coastguard Workerdefine <4 x double> @test_x86_avx2_vbroadcast_sd_pd_256(<2 x double> %a0) {
116*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx2_vbroadcast_sd_pd_256:
117*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
118*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vbroadcastsd %xmm0, %ymm0
119*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retl
120*9880d681SAndroid Build Coastguard Worker  %res = call <4 x double> @llvm.x86.avx2.vbroadcast.sd.pd.256(<2 x double> %a0)
121*9880d681SAndroid Build Coastguard Worker  ret <4 x double> %res
122*9880d681SAndroid Build Coastguard Worker}
123*9880d681SAndroid Build Coastguard Workerdeclare <4 x double> @llvm.x86.avx2.vbroadcast.sd.pd.256(<2 x double>) nounwind readonly
124*9880d681SAndroid Build Coastguard Worker
125*9880d681SAndroid Build Coastguard Worker
126*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_x86_avx2_vbroadcast_ss_ps(<4 x float> %a0) {
127*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx2_vbroadcast_ss_ps:
128*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
129*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vbroadcastss %xmm0, %xmm0
130*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retl
131*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.avx2.vbroadcast.ss.ps(<4 x float> %a0)
132*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res
133*9880d681SAndroid Build Coastguard Worker}
134*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.avx2.vbroadcast.ss.ps(<4 x float>) nounwind readonly
135*9880d681SAndroid Build Coastguard Worker
136*9880d681SAndroid Build Coastguard Worker
137*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @test_x86_avx2_vbroadcast_ss_ps_256(<4 x float> %a0) {
138*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx2_vbroadcast_ss_ps_256:
139*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
140*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vbroadcastss %xmm0, %ymm0
141*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retl
142*9880d681SAndroid Build Coastguard Worker  %res = call <8 x float> @llvm.x86.avx2.vbroadcast.ss.ps.256(<4 x float> %a0)
143*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %res
144*9880d681SAndroid Build Coastguard Worker}
145*9880d681SAndroid Build Coastguard Workerdeclare <8 x float> @llvm.x86.avx2.vbroadcast.ss.ps.256(<4 x float>) nounwind readonly
146*9880d681SAndroid Build Coastguard Worker
147*9880d681SAndroid Build Coastguard Worker
148*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_x86_avx2_pbroadcastb_128(<16 x i8> %a0) {
149*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx2_pbroadcastb_128:
150*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
151*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpbroadcastb %xmm0, %xmm0
152*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retl
153*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i8> @llvm.x86.avx2.pbroadcastb.128(<16 x i8> %a0)
154*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %res
155*9880d681SAndroid Build Coastguard Worker}
156*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.x86.avx2.pbroadcastb.128(<16 x i8>) nounwind readonly
157*9880d681SAndroid Build Coastguard Worker
158*9880d681SAndroid Build Coastguard Worker
159*9880d681SAndroid Build Coastguard Workerdefine <32 x i8> @test_x86_avx2_pbroadcastb_256(<16 x i8> %a0) {
160*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx2_pbroadcastb_256:
161*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
162*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpbroadcastb %xmm0, %ymm0
163*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retl
164*9880d681SAndroid Build Coastguard Worker  %res = call <32 x i8> @llvm.x86.avx2.pbroadcastb.256(<16 x i8> %a0)
165*9880d681SAndroid Build Coastguard Worker  ret <32 x i8> %res
166*9880d681SAndroid Build Coastguard Worker}
167*9880d681SAndroid Build Coastguard Workerdeclare <32 x i8> @llvm.x86.avx2.pbroadcastb.256(<16 x i8>) nounwind readonly
168*9880d681SAndroid Build Coastguard Worker
169*9880d681SAndroid Build Coastguard Worker
170*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_x86_avx2_pbroadcastw_128(<8 x i16> %a0) {
171*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx2_pbroadcastw_128:
172*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
173*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpbroadcastw %xmm0, %xmm0
174*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retl
175*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i16> @llvm.x86.avx2.pbroadcastw.128(<8 x i16> %a0)
176*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %res
177*9880d681SAndroid Build Coastguard Worker}
178*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.avx2.pbroadcastw.128(<8 x i16>) nounwind readonly
179*9880d681SAndroid Build Coastguard Worker
180*9880d681SAndroid Build Coastguard Worker
181*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @test_x86_avx2_pbroadcastw_256(<8 x i16> %a0) {
182*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx2_pbroadcastw_256:
183*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
184*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpbroadcastw %xmm0, %ymm0
185*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retl
186*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i16> @llvm.x86.avx2.pbroadcastw.256(<8 x i16> %a0)
187*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %res
188*9880d681SAndroid Build Coastguard Worker}
189*9880d681SAndroid Build Coastguard Workerdeclare <16 x i16> @llvm.x86.avx2.pbroadcastw.256(<8 x i16>) nounwind readonly
190*9880d681SAndroid Build Coastguard Worker
191*9880d681SAndroid Build Coastguard Worker
192*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test_x86_avx2_pbroadcastd_128(<4 x i32> %a0) {
193*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx2_pbroadcastd_128:
194*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
195*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vbroadcastss %xmm0, %xmm0
196*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retl
197*9880d681SAndroid Build Coastguard Worker  %res = call <4 x i32> @llvm.x86.avx2.pbroadcastd.128(<4 x i32> %a0)
198*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %res
199*9880d681SAndroid Build Coastguard Worker}
200*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.avx2.pbroadcastd.128(<4 x i32>) nounwind readonly
201*9880d681SAndroid Build Coastguard Worker
202*9880d681SAndroid Build Coastguard Worker
203*9880d681SAndroid Build Coastguard Workerdefine <8 x i32> @test_x86_avx2_pbroadcastd_256(<4 x i32> %a0) {
204*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx2_pbroadcastd_256:
205*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
206*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vbroadcastss %xmm0, %ymm0
207*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retl
208*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i32> @llvm.x86.avx2.pbroadcastd.256(<4 x i32> %a0)
209*9880d681SAndroid Build Coastguard Worker  ret <8 x i32> %res
210*9880d681SAndroid Build Coastguard Worker}
211*9880d681SAndroid Build Coastguard Workerdeclare <8 x i32> @llvm.x86.avx2.pbroadcastd.256(<4 x i32>) nounwind readonly
212*9880d681SAndroid Build Coastguard Worker
213*9880d681SAndroid Build Coastguard Worker
214*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_x86_avx2_pbroadcastq_128(<2 x i64> %a0) {
215*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx2_pbroadcastq_128:
216*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
217*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpbroadcastq %xmm0, %xmm0
218*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retl
219*9880d681SAndroid Build Coastguard Worker  %res = call <2 x i64> @llvm.x86.avx2.pbroadcastq.128(<2 x i64> %a0)
220*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %res
221*9880d681SAndroid Build Coastguard Worker}
222*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.x86.avx2.pbroadcastq.128(<2 x i64>) nounwind readonly
223*9880d681SAndroid Build Coastguard Worker
224*9880d681SAndroid Build Coastguard Worker
225*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @test_x86_avx2_pbroadcastq_256(<2 x i64> %a0) {
226*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx2_pbroadcastq_256:
227*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
228*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vbroadcastsd %xmm0, %ymm0
229*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retl
230*9880d681SAndroid Build Coastguard Worker  %res = call <4 x i64> @llvm.x86.avx2.pbroadcastq.256(<2 x i64> %a0)
231*9880d681SAndroid Build Coastguard Worker  ret <4 x i64> %res
232*9880d681SAndroid Build Coastguard Worker}
233*9880d681SAndroid Build Coastguard Workerdeclare <4 x i64> @llvm.x86.avx2.pbroadcastq.256(<2 x i64>) nounwind readonly
234*9880d681SAndroid Build Coastguard Worker
235*9880d681SAndroid Build Coastguard Worker
236*9880d681SAndroid Build Coastguard Workerdefine <8 x i32> @test_x86_avx2_pmovsxbd(<16 x i8> %a0) {
237*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx2_pmovsxbd:
238*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
239*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovsxbd %xmm0, %ymm0
240*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retl
241*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i32> @llvm.x86.avx2.pmovsxbd(<16 x i8> %a0) ; <<8 x i32>> [#uses=1]
242*9880d681SAndroid Build Coastguard Worker  ret <8 x i32> %res
243*9880d681SAndroid Build Coastguard Worker}
244*9880d681SAndroid Build Coastguard Workerdeclare <8 x i32> @llvm.x86.avx2.pmovsxbd(<16 x i8>) nounwind readnone
245*9880d681SAndroid Build Coastguard Worker
246*9880d681SAndroid Build Coastguard Worker
247*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @test_x86_avx2_pmovsxbq(<16 x i8> %a0) {
248*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx2_pmovsxbq:
249*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
250*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovsxbq %xmm0, %ymm0
251*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retl
252*9880d681SAndroid Build Coastguard Worker  %res = call <4 x i64> @llvm.x86.avx2.pmovsxbq(<16 x i8> %a0) ; <<4 x i64>> [#uses=1]
253*9880d681SAndroid Build Coastguard Worker  ret <4 x i64> %res
254*9880d681SAndroid Build Coastguard Worker}
255*9880d681SAndroid Build Coastguard Workerdeclare <4 x i64> @llvm.x86.avx2.pmovsxbq(<16 x i8>) nounwind readnone
256*9880d681SAndroid Build Coastguard Worker
257*9880d681SAndroid Build Coastguard Worker
258*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @test_x86_avx2_pmovsxbw(<16 x i8> %a0) {
259*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx2_pmovsxbw:
260*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
261*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovsxbw %xmm0, %ymm0
262*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retl
263*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i16> @llvm.x86.avx2.pmovsxbw(<16 x i8> %a0) ; <<8 x i16>> [#uses=1]
264*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %res
265*9880d681SAndroid Build Coastguard Worker}
266*9880d681SAndroid Build Coastguard Workerdeclare <16 x i16> @llvm.x86.avx2.pmovsxbw(<16 x i8>) nounwind readnone
267*9880d681SAndroid Build Coastguard Worker
268*9880d681SAndroid Build Coastguard Worker
269*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @test_x86_avx2_pmovsxdq(<4 x i32> %a0) {
270*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx2_pmovsxdq:
271*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
272*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovsxdq %xmm0, %ymm0
273*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retl
274*9880d681SAndroid Build Coastguard Worker  %res = call <4 x i64> @llvm.x86.avx2.pmovsxdq(<4 x i32> %a0) ; <<4 x i64>> [#uses=1]
275*9880d681SAndroid Build Coastguard Worker  ret <4 x i64> %res
276*9880d681SAndroid Build Coastguard Worker}
277*9880d681SAndroid Build Coastguard Workerdeclare <4 x i64> @llvm.x86.avx2.pmovsxdq(<4 x i32>) nounwind readnone
278*9880d681SAndroid Build Coastguard Worker
279*9880d681SAndroid Build Coastguard Worker
280*9880d681SAndroid Build Coastguard Workerdefine <8 x i32> @test_x86_avx2_pmovsxwd(<8 x i16> %a0) {
281*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx2_pmovsxwd:
282*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
283*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovsxwd %xmm0, %ymm0
284*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retl
285*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i32> @llvm.x86.avx2.pmovsxwd(<8 x i16> %a0) ; <<8 x i32>> [#uses=1]
286*9880d681SAndroid Build Coastguard Worker  ret <8 x i32> %res
287*9880d681SAndroid Build Coastguard Worker}
288*9880d681SAndroid Build Coastguard Workerdeclare <8 x i32> @llvm.x86.avx2.pmovsxwd(<8 x i16>) nounwind readnone
289*9880d681SAndroid Build Coastguard Worker
290*9880d681SAndroid Build Coastguard Worker
291*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @test_x86_avx2_pmovsxwq(<8 x i16> %a0) {
292*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx2_pmovsxwq:
293*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
294*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovsxwq %xmm0, %ymm0
295*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retl
296*9880d681SAndroid Build Coastguard Worker  %res = call <4 x i64> @llvm.x86.avx2.pmovsxwq(<8 x i16> %a0) ; <<4 x i64>> [#uses=1]
297*9880d681SAndroid Build Coastguard Worker  ret <4 x i64> %res
298*9880d681SAndroid Build Coastguard Worker}
299*9880d681SAndroid Build Coastguard Workerdeclare <4 x i64> @llvm.x86.avx2.pmovsxwq(<8 x i16>) nounwind readnone
300*9880d681SAndroid Build Coastguard Worker
301*9880d681SAndroid Build Coastguard Worker
302*9880d681SAndroid Build Coastguard Workerdefine <8 x i32> @test_x86_avx2_pmovzxbd(<16 x i8> %a0) {
303*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx2_pmovzxbd:
304*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
305*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovzxbd {{.*#+}} ymm0 = xmm0[0],zero,zero,zero,xmm0[1],zero,zero,zero,xmm0[2],zero,zero,zero,xmm0[3],zero,zero,zero,xmm0[4],zero,zero,zero,xmm0[5],zero,zero,zero,xmm0[6],zero,zero,zero,xmm0[7],zero,zero,zero
306*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retl
307*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i32> @llvm.x86.avx2.pmovzxbd(<16 x i8> %a0) ; <<8 x i32>> [#uses=1]
308*9880d681SAndroid Build Coastguard Worker  ret <8 x i32> %res
309*9880d681SAndroid Build Coastguard Worker}
310*9880d681SAndroid Build Coastguard Workerdeclare <8 x i32> @llvm.x86.avx2.pmovzxbd(<16 x i8>) nounwind readnone
311*9880d681SAndroid Build Coastguard Worker
312*9880d681SAndroid Build Coastguard Worker
313*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @test_x86_avx2_pmovzxbq(<16 x i8> %a0) {
314*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx2_pmovzxbq:
315*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
316*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovzxbq {{.*#+}} ymm0 = xmm0[0],zero,zero,zero,zero,zero,zero,zero,xmm0[1],zero,zero,zero,zero,zero,zero,zero,xmm0[2],zero,zero,zero,zero,zero,zero,zero,xmm0[3],zero,zero,zero,zero,zero,zero,zero
317*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retl
318*9880d681SAndroid Build Coastguard Worker  %res = call <4 x i64> @llvm.x86.avx2.pmovzxbq(<16 x i8> %a0) ; <<4 x i64>> [#uses=1]
319*9880d681SAndroid Build Coastguard Worker  ret <4 x i64> %res
320*9880d681SAndroid Build Coastguard Worker}
321*9880d681SAndroid Build Coastguard Workerdeclare <4 x i64> @llvm.x86.avx2.pmovzxbq(<16 x i8>) nounwind readnone
322*9880d681SAndroid Build Coastguard Worker
323*9880d681SAndroid Build Coastguard Worker
324*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @test_x86_avx2_pmovzxbw(<16 x i8> %a0) {
325*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx2_pmovzxbw:
326*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
327*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovzxbw {{.*#+}} ymm0 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero,xmm0[4],zero,xmm0[5],zero,xmm0[6],zero,xmm0[7],zero,xmm0[8],zero,xmm0[9],zero,xmm0[10],zero,xmm0[11],zero,xmm0[12],zero,xmm0[13],zero,xmm0[14],zero,xmm0[15],zero
328*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retl
329*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i16> @llvm.x86.avx2.pmovzxbw(<16 x i8> %a0) ; <<16 x i16>> [#uses=1]
330*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %res
331*9880d681SAndroid Build Coastguard Worker}
332*9880d681SAndroid Build Coastguard Workerdeclare <16 x i16> @llvm.x86.avx2.pmovzxbw(<16 x i8>) nounwind readnone
333*9880d681SAndroid Build Coastguard Worker
334*9880d681SAndroid Build Coastguard Worker
335*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @test_x86_avx2_pmovzxdq(<4 x i32> %a0) {
336*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx2_pmovzxdq:
337*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
338*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovzxdq {{.*#+}} ymm0 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero
339*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retl
340*9880d681SAndroid Build Coastguard Worker  %res = call <4 x i64> @llvm.x86.avx2.pmovzxdq(<4 x i32> %a0) ; <<4 x i64>> [#uses=1]
341*9880d681SAndroid Build Coastguard Worker  ret <4 x i64> %res
342*9880d681SAndroid Build Coastguard Worker}
343*9880d681SAndroid Build Coastguard Workerdeclare <4 x i64> @llvm.x86.avx2.pmovzxdq(<4 x i32>) nounwind readnone
344*9880d681SAndroid Build Coastguard Worker
345*9880d681SAndroid Build Coastguard Worker
346*9880d681SAndroid Build Coastguard Workerdefine <8 x i32> @test_x86_avx2_pmovzxwd(<8 x i16> %a0) {
347*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx2_pmovzxwd:
348*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
349*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovzxwd {{.*#+}} ymm0 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero,xmm0[4],zero,xmm0[5],zero,xmm0[6],zero,xmm0[7],zero
350*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retl
351*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i32> @llvm.x86.avx2.pmovzxwd(<8 x i16> %a0) ; <<8 x i32>> [#uses=1]
352*9880d681SAndroid Build Coastguard Worker  ret <8 x i32> %res
353*9880d681SAndroid Build Coastguard Worker}
354*9880d681SAndroid Build Coastguard Workerdeclare <8 x i32> @llvm.x86.avx2.pmovzxwd(<8 x i16>) nounwind readnone
355*9880d681SAndroid Build Coastguard Worker
356*9880d681SAndroid Build Coastguard Worker
357*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @test_x86_avx2_pmovzxwq(<8 x i16> %a0) {
358*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx2_pmovzxwq:
359*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
360*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovzxwq {{.*#+}} ymm0 = xmm0[0],zero,zero,zero,xmm0[1],zero,zero,zero,xmm0[2],zero,zero,zero,xmm0[3],zero,zero,zero
361*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retl
362*9880d681SAndroid Build Coastguard Worker  %res = call <4 x i64> @llvm.x86.avx2.pmovzxwq(<8 x i16> %a0) ; <<4 x i64>> [#uses=1]
363*9880d681SAndroid Build Coastguard Worker  ret <4 x i64> %res
364*9880d681SAndroid Build Coastguard Worker}
365*9880d681SAndroid Build Coastguard Workerdeclare <4 x i64> @llvm.x86.avx2.pmovzxwq(<8 x i16>) nounwind readnone
366*9880d681SAndroid Build Coastguard Worker
367*9880d681SAndroid Build Coastguard Worker; This is checked here because the execution dependency fix pass makes it hard to test in AVX mode since we don't have 256-bit integer instructions
368*9880d681SAndroid Build Coastguard Workerdefine void @test_x86_avx_storeu_dq_256(i8* %a0, <32 x i8> %a1) {
369*9880d681SAndroid Build Coastguard Worker  ; add operation forces the execution domain.
370*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx_storeu_dq_256:
371*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
372*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    movl {{[0-9]+}}(%esp), %eax
373*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddb LCPI33_0, %ymm0, %ymm0
374*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovdqu %ymm0, (%eax)
375*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vzeroupper
376*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retl
377*9880d681SAndroid Build Coastguard Worker  %a2 = add <32 x i8> %a1, <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>
378*9880d681SAndroid Build Coastguard Worker  call void @llvm.x86.avx.storeu.dq.256(i8* %a0, <32 x i8> %a2)
379*9880d681SAndroid Build Coastguard Worker  ret void
380*9880d681SAndroid Build Coastguard Worker}
381*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.x86.avx.storeu.dq.256(i8*, <32 x i8>) nounwind
382*9880d681SAndroid Build Coastguard Worker
383*9880d681SAndroid Build Coastguard Workerdefine <32 x i8> @mm256_max_epi8(<32 x i8> %a0, <32 x i8> %a1) {
384*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: mm256_max_epi8:
385*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
386*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmaxsb %ymm1, %ymm0, %ymm0
387*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retl
388*9880d681SAndroid Build Coastguard Worker;
389*9880d681SAndroid Build Coastguard Worker  %res = call <32 x i8> @llvm.x86.avx2.pmaxs.b(<32 x i8> %a0, <32 x i8> %a1)
390*9880d681SAndroid Build Coastguard Worker  ret <32 x i8> %res
391*9880d681SAndroid Build Coastguard Worker}
392*9880d681SAndroid Build Coastguard Workerdeclare <32 x i8> @llvm.x86.avx2.pmaxs.b(<32 x i8>, <32 x i8>) nounwind readnone
393*9880d681SAndroid Build Coastguard Worker
394*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @mm256_max_epi16(<16 x i16> %a0, <16 x i16> %a1) {
395*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: mm256_max_epi16:
396*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
397*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmaxsw %ymm1, %ymm0, %ymm0
398*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retl
399*9880d681SAndroid Build Coastguard Worker;
400*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i16> @llvm.x86.avx2.pmaxs.w(<16 x i16> %a0, <16 x i16> %a1)
401*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %res
402*9880d681SAndroid Build Coastguard Worker}
403*9880d681SAndroid Build Coastguard Workerdeclare <16 x i16> @llvm.x86.avx2.pmaxs.w(<16 x i16>, <16 x i16>) nounwind readnone
404*9880d681SAndroid Build Coastguard Worker
405*9880d681SAndroid Build Coastguard Workerdefine <8 x i32> @mm256_max_epi32(<8 x i32> %a0, <8 x i32> %a1) {
406*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: mm256_max_epi32:
407*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
408*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmaxsd %ymm1, %ymm0, %ymm0
409*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retl
410*9880d681SAndroid Build Coastguard Worker;
411*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i32> @llvm.x86.avx2.pmaxs.d(<8 x i32> %a0, <8 x i32> %a1)
412*9880d681SAndroid Build Coastguard Worker  ret <8 x i32> %res
413*9880d681SAndroid Build Coastguard Worker}
414*9880d681SAndroid Build Coastguard Workerdeclare <8 x i32> @llvm.x86.avx2.pmaxs.d(<8 x i32>, <8 x i32>) nounwind readnone
415*9880d681SAndroid Build Coastguard Worker
416*9880d681SAndroid Build Coastguard Workerdefine <32 x i8> @mm256_max_epu8(<32 x i8> %a0, <32 x i8> %a1) {
417*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: mm256_max_epu8:
418*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
419*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmaxub %ymm1, %ymm0, %ymm0
420*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retl
421*9880d681SAndroid Build Coastguard Worker;
422*9880d681SAndroid Build Coastguard Worker  %res = call <32 x i8> @llvm.x86.avx2.pmaxu.b(<32 x i8> %a0, <32 x i8> %a1)
423*9880d681SAndroid Build Coastguard Worker  ret <32 x i8> %res
424*9880d681SAndroid Build Coastguard Worker}
425*9880d681SAndroid Build Coastguard Workerdeclare <32 x i8> @llvm.x86.avx2.pmaxu.b(<32 x i8>, <32 x i8>) nounwind readnone
426*9880d681SAndroid Build Coastguard Worker
427*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @mm256_max_epu16(<16 x i16> %a0, <16 x i16> %a1) {
428*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: mm256_max_epu16:
429*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
430*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmaxuw %ymm1, %ymm0, %ymm0
431*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retl
432*9880d681SAndroid Build Coastguard Worker;
433*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i16> @llvm.x86.avx2.pmaxu.w(<16 x i16> %a0, <16 x i16> %a1)
434*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %res
435*9880d681SAndroid Build Coastguard Worker}
436*9880d681SAndroid Build Coastguard Workerdeclare <16 x i16> @llvm.x86.avx2.pmaxu.w(<16 x i16>, <16 x i16>) nounwind readnone
437*9880d681SAndroid Build Coastguard Worker
438*9880d681SAndroid Build Coastguard Workerdefine <8 x i32> @mm256_max_epu32(<8 x i32> %a0, <8 x i32> %a1) {
439*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: mm256_max_epu32:
440*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
441*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmaxud %ymm1, %ymm0, %ymm0
442*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retl
443*9880d681SAndroid Build Coastguard Worker;
444*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i32> @llvm.x86.avx2.pmaxu.d(<8 x i32> %a0, <8 x i32> %a1)
445*9880d681SAndroid Build Coastguard Worker  ret <8 x i32> %res
446*9880d681SAndroid Build Coastguard Worker}
447*9880d681SAndroid Build Coastguard Workerdeclare <8 x i32> @llvm.x86.avx2.pmaxu.d(<8 x i32>, <8 x i32>) nounwind readnone
448*9880d681SAndroid Build Coastguard Worker
449*9880d681SAndroid Build Coastguard Workerdefine <32 x i8> @mm256_min_epi8(<32 x i8> %a0, <32 x i8> %a1) {
450*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: mm256_min_epi8:
451*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
452*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpminsb %ymm1, %ymm0, %ymm0
453*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retl
454*9880d681SAndroid Build Coastguard Worker;
455*9880d681SAndroid Build Coastguard Worker  %res = call <32 x i8> @llvm.x86.avx2.pmins.b(<32 x i8> %a0, <32 x i8> %a1)
456*9880d681SAndroid Build Coastguard Worker  ret <32 x i8> %res
457*9880d681SAndroid Build Coastguard Worker}
458*9880d681SAndroid Build Coastguard Workerdeclare <32 x i8> @llvm.x86.avx2.pmins.b(<32 x i8>, <32 x i8>) nounwind readnone
459*9880d681SAndroid Build Coastguard Worker
460*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @mm256_min_epi16(<16 x i16> %a0, <16 x i16> %a1) {
461*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: mm256_min_epi16:
462*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
463*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpminsw %ymm1, %ymm0, %ymm0
464*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retl
465*9880d681SAndroid Build Coastguard Worker;
466*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i16> @llvm.x86.avx2.pmins.w(<16 x i16> %a0, <16 x i16> %a1)
467*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %res
468*9880d681SAndroid Build Coastguard Worker}
469*9880d681SAndroid Build Coastguard Workerdeclare <16 x i16> @llvm.x86.avx2.pmins.w(<16 x i16>, <16 x i16>) nounwind readnone
470*9880d681SAndroid Build Coastguard Worker
471*9880d681SAndroid Build Coastguard Workerdefine <8 x i32> @mm256_min_epi32(<8 x i32> %a0, <8 x i32> %a1) {
472*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: mm256_min_epi32:
473*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
474*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpminsd %ymm1, %ymm0, %ymm0
475*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retl
476*9880d681SAndroid Build Coastguard Worker;
477*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i32> @llvm.x86.avx2.pmins.d(<8 x i32> %a0, <8 x i32> %a1)
478*9880d681SAndroid Build Coastguard Worker  ret <8 x i32> %res
479*9880d681SAndroid Build Coastguard Worker}
480*9880d681SAndroid Build Coastguard Workerdeclare <8 x i32> @llvm.x86.avx2.pmins.d(<8 x i32>, <8 x i32>) nounwind readnone
481*9880d681SAndroid Build Coastguard Worker
482*9880d681SAndroid Build Coastguard Workerdefine <32 x i8> @mm256_min_epu8(<32 x i8> %a0, <32 x i8> %a1) {
483*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: mm256_min_epu8:
484*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
485*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpminub %ymm1, %ymm0, %ymm0
486*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retl
487*9880d681SAndroid Build Coastguard Worker;
488*9880d681SAndroid Build Coastguard Worker  %res = call <32 x i8> @llvm.x86.avx2.pminu.b(<32 x i8> %a0, <32 x i8> %a1)
489*9880d681SAndroid Build Coastguard Worker  ret <32 x i8> %res
490*9880d681SAndroid Build Coastguard Worker}
491*9880d681SAndroid Build Coastguard Workerdeclare <32 x i8> @llvm.x86.avx2.pminu.b(<32 x i8>, <32 x i8>) nounwind readnone
492*9880d681SAndroid Build Coastguard Worker
493*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @mm256_min_epu16(<16 x i16> %a0, <16 x i16> %a1) {
494*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: mm256_min_epu16:
495*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
496*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpminuw %ymm1, %ymm0, %ymm0
497*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retl
498*9880d681SAndroid Build Coastguard Worker;
499*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i16> @llvm.x86.avx2.pminu.w(<16 x i16> %a0, <16 x i16> %a1)
500*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %res
501*9880d681SAndroid Build Coastguard Worker}
502*9880d681SAndroid Build Coastguard Workerdeclare <16 x i16> @llvm.x86.avx2.pminu.w(<16 x i16>, <16 x i16>) nounwind readnone
503*9880d681SAndroid Build Coastguard Worker
504*9880d681SAndroid Build Coastguard Workerdefine <8 x i32> @mm256_min_epu32(<8 x i32> %a0, <8 x i32> %a1) {
505*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: mm256_min_epu32:
506*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
507*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpminud %ymm1, %ymm0, %ymm0
508*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retl
509*9880d681SAndroid Build Coastguard Worker;
510*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i32> @llvm.x86.avx2.pminu.d(<8 x i32> %a0, <8 x i32> %a1)
511*9880d681SAndroid Build Coastguard Worker  ret <8 x i32> %res
512*9880d681SAndroid Build Coastguard Worker}
513*9880d681SAndroid Build Coastguard Workerdeclare <8 x i32> @llvm.x86.avx2.pminu.d(<8 x i32>, <8 x i32>) nounwind readnone
514*9880d681SAndroid Build Coastguard Worker
515