xref: /aosp_15_r20/external/llvm/test/CodeGen/X86/sse41-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=i386-apple-darwin -mattr=+sse4.1 | FileCheck %s
3*9880d681SAndroid Build Coastguard Worker
4*9880d681SAndroid Build Coastguard Worker; This test works just like the non-upgrade one except that it only checks
5*9880d681SAndroid Build Coastguard Worker; forms which require auto-upgrading.
6*9880d681SAndroid Build Coastguard Worker
7*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_x86_sse41_blendpd(<2 x double> %a0, <2 x double> %a1) {
8*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_sse41_blendpd:
9*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
10*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    blendpd {{.*#+}} xmm0 = xmm0[0],xmm1[1]
11*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retl
12*9880d681SAndroid Build Coastguard Worker  %res = call <2 x double> @llvm.x86.sse41.blendpd(<2 x double> %a0, <2 x double> %a1, i32 6) ; <<2 x double>> [#uses=1]
13*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %res
14*9880d681SAndroid Build Coastguard Worker}
15*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.sse41.blendpd(<2 x double>, <2 x double>, i32) nounwind readnone
16*9880d681SAndroid Build Coastguard Worker
17*9880d681SAndroid Build Coastguard Worker
18*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_x86_sse41_blendps(<4 x float> %a0, <4 x float> %a1) {
19*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_sse41_blendps:
20*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
21*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    blendps {{.*#+}} xmm0 = xmm1[0,1,2],xmm0[3]
22*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retl
23*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.sse41.blendps(<4 x float> %a0, <4 x float> %a1, i32 7) ; <<4 x float>> [#uses=1]
24*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res
25*9880d681SAndroid Build Coastguard Worker}
26*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.sse41.blendps(<4 x float>, <4 x float>, i32) nounwind readnone
27*9880d681SAndroid Build Coastguard Worker
28*9880d681SAndroid Build Coastguard Worker
29*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_x86_sse41_dppd(<2 x double> %a0, <2 x double> %a1) {
30*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_sse41_dppd:
31*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
32*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    dppd $7, %xmm1, %xmm0
33*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retl
34*9880d681SAndroid Build Coastguard Worker  %res = call <2 x double> @llvm.x86.sse41.dppd(<2 x double> %a0, <2 x double> %a1, i32 7) ; <<2 x double>> [#uses=1]
35*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %res
36*9880d681SAndroid Build Coastguard Worker}
37*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.sse41.dppd(<2 x double>, <2 x double>, i32) nounwind readnone
38*9880d681SAndroid Build Coastguard Worker
39*9880d681SAndroid Build Coastguard Worker
40*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_x86_sse41_dpps(<4 x float> %a0, <4 x float> %a1) {
41*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_sse41_dpps:
42*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
43*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    dpps $7, %xmm1, %xmm0
44*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retl
45*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.sse41.dpps(<4 x float> %a0, <4 x float> %a1, i32 7) ; <<4 x float>> [#uses=1]
46*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res
47*9880d681SAndroid Build Coastguard Worker}
48*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.sse41.dpps(<4 x float>, <4 x float>, i32) nounwind readnone
49*9880d681SAndroid Build Coastguard Worker
50*9880d681SAndroid Build Coastguard Worker
51*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_x86_sse41_insertps(<4 x float> %a0, <4 x float> %a1) {
52*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_sse41_insertps:
53*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
54*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    insertps {{.*#+}} xmm0 = zero,xmm1[0],xmm0[2,3]
55*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retl
56*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.sse41.insertps(<4 x float> %a0, <4 x float> %a1, i32 17) ; <<4 x float>> [#uses=1]
57*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res
58*9880d681SAndroid Build Coastguard Worker}
59*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.sse41.insertps(<4 x float>, <4 x float>, i32) nounwind readnone
60*9880d681SAndroid Build Coastguard Worker
61*9880d681SAndroid Build Coastguard Worker
62*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_x86_sse41_mpsadbw(<16 x i8> %a0, <16 x i8> %a1) {
63*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_sse41_mpsadbw:
64*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
65*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    mpsadbw $7, %xmm1, %xmm0
66*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retl
67*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i16> @llvm.x86.sse41.mpsadbw(<16 x i8> %a0, <16 x i8> %a1, i32 7) ; <<8 x i16>> [#uses=1]
68*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %res
69*9880d681SAndroid Build Coastguard Worker}
70*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.sse41.mpsadbw(<16 x i8>, <16 x i8>, i32) nounwind readnone
71*9880d681SAndroid Build Coastguard Worker
72*9880d681SAndroid Build Coastguard Worker
73*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_x86_sse41_pblendw(<8 x i16> %a0, <8 x i16> %a1) {
74*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_sse41_pblendw:
75*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
76*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    pblendw {{.*#+}} xmm0 = xmm1[0,1,2],xmm0[3,4,5,6,7]
77*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retl
78*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i16> @llvm.x86.sse41.pblendw(<8 x i16> %a0, <8 x i16> %a1, i32 7) ; <<8 x i16>> [#uses=1]
79*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %res
80*9880d681SAndroid Build Coastguard Worker}
81*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.sse41.pblendw(<8 x i16>, <8 x i16>, i32) nounwind readnone
82*9880d681SAndroid Build Coastguard Worker
83*9880d681SAndroid Build Coastguard Worker
84*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test_x86_sse41_pmovsxbd(<16 x i8> %a0) {
85*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_sse41_pmovsxbd:
86*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
87*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    pmovsxbd %xmm0, %xmm0
88*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retl
89*9880d681SAndroid Build Coastguard Worker  %res = call <4 x i32> @llvm.x86.sse41.pmovsxbd(<16 x i8> %a0) ; <<4 x i32>> [#uses=1]
90*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %res
91*9880d681SAndroid Build Coastguard Worker}
92*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.sse41.pmovsxbd(<16 x i8>) nounwind readnone
93*9880d681SAndroid Build Coastguard Worker
94*9880d681SAndroid Build Coastguard Worker
95*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_x86_sse41_pmovsxbq(<16 x i8> %a0) {
96*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_sse41_pmovsxbq:
97*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
98*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    pmovsxbq %xmm0, %xmm0
99*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retl
100*9880d681SAndroid Build Coastguard Worker  %res = call <2 x i64> @llvm.x86.sse41.pmovsxbq(<16 x i8> %a0) ; <<2 x i64>> [#uses=1]
101*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %res
102*9880d681SAndroid Build Coastguard Worker}
103*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.x86.sse41.pmovsxbq(<16 x i8>) nounwind readnone
104*9880d681SAndroid Build Coastguard Worker
105*9880d681SAndroid Build Coastguard Worker
106*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_x86_sse41_pmovsxbw(<16 x i8> %a0) {
107*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_sse41_pmovsxbw:
108*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
109*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    pmovsxbw %xmm0, %xmm0
110*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retl
111*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i16> @llvm.x86.sse41.pmovsxbw(<16 x i8> %a0) ; <<8 x i16>> [#uses=1]
112*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %res
113*9880d681SAndroid Build Coastguard Worker}
114*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.sse41.pmovsxbw(<16 x i8>) nounwind readnone
115*9880d681SAndroid Build Coastguard Worker
116*9880d681SAndroid Build Coastguard Worker
117*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_x86_sse41_pmovsxdq(<4 x i32> %a0) {
118*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_sse41_pmovsxdq:
119*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
120*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    pmovsxdq %xmm0, %xmm0
121*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retl
122*9880d681SAndroid Build Coastguard Worker  %res = call <2 x i64> @llvm.x86.sse41.pmovsxdq(<4 x i32> %a0) ; <<2 x i64>> [#uses=1]
123*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %res
124*9880d681SAndroid Build Coastguard Worker}
125*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.x86.sse41.pmovsxdq(<4 x i32>) nounwind readnone
126*9880d681SAndroid Build Coastguard Worker
127*9880d681SAndroid Build Coastguard Worker
128*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test_x86_sse41_pmovsxwd(<8 x i16> %a0) {
129*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_sse41_pmovsxwd:
130*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
131*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    pmovsxwd %xmm0, %xmm0
132*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retl
133*9880d681SAndroid Build Coastguard Worker  %res = call <4 x i32> @llvm.x86.sse41.pmovsxwd(<8 x i16> %a0) ; <<4 x i32>> [#uses=1]
134*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %res
135*9880d681SAndroid Build Coastguard Worker}
136*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.sse41.pmovsxwd(<8 x i16>) nounwind readnone
137*9880d681SAndroid Build Coastguard Worker
138*9880d681SAndroid Build Coastguard Worker
139*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_x86_sse41_pmovsxwq(<8 x i16> %a0) {
140*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_sse41_pmovsxwq:
141*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
142*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    pmovsxwq %xmm0, %xmm0
143*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retl
144*9880d681SAndroid Build Coastguard Worker  %res = call <2 x i64> @llvm.x86.sse41.pmovsxwq(<8 x i16> %a0) ; <<2 x i64>> [#uses=1]
145*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %res
146*9880d681SAndroid Build Coastguard Worker}
147*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.x86.sse41.pmovsxwq(<8 x i16>) nounwind readnone
148*9880d681SAndroid Build Coastguard Worker
149*9880d681SAndroid Build Coastguard Worker
150*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test_x86_sse41_pmovzxbd(<16 x i8> %a0) {
151*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_sse41_pmovzxbd:
152*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
153*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    pmovzxbd {{.*#+}} xmm0 = xmm0[0],zero,zero,zero,xmm0[1],zero,zero,zero,xmm0[2],zero,zero,zero,xmm0[3],zero,zero,zero
154*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retl
155*9880d681SAndroid Build Coastguard Worker  %res = call <4 x i32> @llvm.x86.sse41.pmovzxbd(<16 x i8> %a0) ; <<4 x i32>> [#uses=1]
156*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %res
157*9880d681SAndroid Build Coastguard Worker}
158*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.sse41.pmovzxbd(<16 x i8>) nounwind readnone
159*9880d681SAndroid Build Coastguard Worker
160*9880d681SAndroid Build Coastguard Worker
161*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_x86_sse41_pmovzxbq(<16 x i8> %a0) {
162*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_sse41_pmovzxbq:
163*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
164*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    pmovzxbq {{.*#+}} xmm0 = xmm0[0],zero,zero,zero,zero,zero,zero,zero,xmm0[1],zero,zero,zero,zero,zero,zero,zero
165*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retl
166*9880d681SAndroid Build Coastguard Worker  %res = call <2 x i64> @llvm.x86.sse41.pmovzxbq(<16 x i8> %a0) ; <<2 x i64>> [#uses=1]
167*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %res
168*9880d681SAndroid Build Coastguard Worker}
169*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.x86.sse41.pmovzxbq(<16 x i8>) nounwind readnone
170*9880d681SAndroid Build Coastguard Worker
171*9880d681SAndroid Build Coastguard Worker
172*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_x86_sse41_pmovzxbw(<16 x i8> %a0) {
173*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_sse41_pmovzxbw:
174*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
175*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    pmovzxbw {{.*#+}} xmm0 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero,xmm0[4],zero,xmm0[5],zero,xmm0[6],zero,xmm0[7],zero
176*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retl
177*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i16> @llvm.x86.sse41.pmovzxbw(<16 x i8> %a0) ; <<8 x i16>> [#uses=1]
178*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %res
179*9880d681SAndroid Build Coastguard Worker}
180*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.sse41.pmovzxbw(<16 x i8>) nounwind readnone
181*9880d681SAndroid Build Coastguard Worker
182*9880d681SAndroid Build Coastguard Worker
183*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_x86_sse41_pmovzxdq(<4 x i32> %a0) {
184*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_sse41_pmovzxdq:
185*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
186*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    pmovzxdq {{.*#+}} xmm0 = xmm0[0],zero,xmm0[1],zero
187*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retl
188*9880d681SAndroid Build Coastguard Worker  %res = call <2 x i64> @llvm.x86.sse41.pmovzxdq(<4 x i32> %a0) ; <<2 x i64>> [#uses=1]
189*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %res
190*9880d681SAndroid Build Coastguard Worker}
191*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.x86.sse41.pmovzxdq(<4 x i32>) nounwind readnone
192*9880d681SAndroid Build Coastguard Worker
193*9880d681SAndroid Build Coastguard Worker
194*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test_x86_sse41_pmovzxwd(<8 x i16> %a0) {
195*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_sse41_pmovzxwd:
196*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
197*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    pmovzxwd {{.*#+}} xmm0 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero
198*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retl
199*9880d681SAndroid Build Coastguard Worker  %res = call <4 x i32> @llvm.x86.sse41.pmovzxwd(<8 x i16> %a0) ; <<4 x i32>> [#uses=1]
200*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %res
201*9880d681SAndroid Build Coastguard Worker}
202*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.sse41.pmovzxwd(<8 x i16>) nounwind readnone
203*9880d681SAndroid Build Coastguard Worker
204*9880d681SAndroid Build Coastguard Worker
205*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_x86_sse41_pmovzxwq(<8 x i16> %a0) {
206*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_sse41_pmovzxwq:
207*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
208*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    pmovzxwq {{.*#+}} xmm0 = xmm0[0],zero,zero,zero,xmm0[1],zero,zero,zero
209*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retl
210*9880d681SAndroid Build Coastguard Worker  %res = call <2 x i64> @llvm.x86.sse41.pmovzxwq(<8 x i16> %a0) ; <<2 x i64>> [#uses=1]
211*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %res
212*9880d681SAndroid Build Coastguard Worker}
213*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.x86.sse41.pmovzxwq(<8 x i16>) nounwind readnone
214*9880d681SAndroid Build Coastguard Worker
215*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @max_epi8(<16 x i8> %a0, <16 x i8> %a1) {
216*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: max_epi8:
217*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
218*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    pmaxsb %xmm1, %xmm0
219*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retl
220*9880d681SAndroid Build Coastguard Worker;
221*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i8> @llvm.x86.sse41.pmaxsb(<16 x i8> %a0, <16 x i8> %a1)
222*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %res
223*9880d681SAndroid Build Coastguard Worker}
224*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.x86.sse41.pmaxsb(<16 x i8>, <16 x i8>) nounwind readnone
225*9880d681SAndroid Build Coastguard Worker
226*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @min_epi8(<16 x i8> %a0, <16 x i8> %a1) {
227*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: min_epi8:
228*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
229*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    pminsb %xmm1, %xmm0
230*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retl
231*9880d681SAndroid Build Coastguard Worker;
232*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i8> @llvm.x86.sse41.pminsb(<16 x i8> %a0, <16 x i8> %a1)
233*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %res
234*9880d681SAndroid Build Coastguard Worker}
235*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.x86.sse41.pminsb(<16 x i8>, <16 x i8>) nounwind readnone
236*9880d681SAndroid Build Coastguard Worker
237*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @max_epu16(<8 x i16> %a0, <8 x i16> %a1) {
238*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: max_epu16:
239*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
240*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    pmaxuw %xmm1, %xmm0
241*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retl
242*9880d681SAndroid Build Coastguard Worker;
243*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i16> @llvm.x86.sse41.pmaxuw(<8 x i16> %a0, <8 x i16> %a1)
244*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %res
245*9880d681SAndroid Build Coastguard Worker}
246*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.sse41.pmaxuw(<8 x i16>, <8 x i16>) nounwind readnone
247*9880d681SAndroid Build Coastguard Worker
248*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @min_epu16(<8 x i16> %a0, <8 x i16> %a1) {
249*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: min_epu16:
250*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
251*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    pminuw %xmm1, %xmm0
252*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retl
253*9880d681SAndroid Build Coastguard Worker;
254*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i16> @llvm.x86.sse41.pminuw(<8 x i16> %a0, <8 x i16> %a1)
255*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %res
256*9880d681SAndroid Build Coastguard Worker}
257*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.sse41.pminuw(<8 x i16>, <8 x i16>) nounwind readnone
258*9880d681SAndroid Build Coastguard Worker
259*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @max_epi32(<4 x i32> %a0, <4 x i32> %a1) {
260*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: max_epi32:
261*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
262*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    pmaxsd %xmm1, %xmm0
263*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retl
264*9880d681SAndroid Build Coastguard Worker;
265*9880d681SAndroid Build Coastguard Worker  %res = call <4 x i32> @llvm.x86.sse41.pmaxsd(<4 x i32> %a0, <4 x i32> %a1)
266*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %res
267*9880d681SAndroid Build Coastguard Worker}
268*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.sse41.pmaxsd(<4 x i32>, <4 x i32>) nounwind readnone
269*9880d681SAndroid Build Coastguard Worker
270*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @min_epi32(<4 x i32> %a0, <4 x i32> %a1) {
271*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: min_epi32:
272*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
273*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    pminsd %xmm1, %xmm0
274*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retl
275*9880d681SAndroid Build Coastguard Worker;
276*9880d681SAndroid Build Coastguard Worker  %res = call <4 x i32> @llvm.x86.sse41.pminsd(<4 x i32> %a0, <4 x i32> %a1)
277*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %res
278*9880d681SAndroid Build Coastguard Worker}
279*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.sse41.pminsd(<4 x i32>, <4 x i32>) nounwind readnone
280*9880d681SAndroid Build Coastguard Worker
281*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @max_epu32(<4 x i32> %a0, <4 x i32> %a1) {
282*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: max_epu32:
283*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
284*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    pmaxud %xmm1, %xmm0
285*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retl
286*9880d681SAndroid Build Coastguard Worker;
287*9880d681SAndroid Build Coastguard Worker  %res = call <4 x i32> @llvm.x86.sse41.pmaxud(<4 x i32> %a0, <4 x i32> %a1)
288*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %res
289*9880d681SAndroid Build Coastguard Worker}
290*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.sse41.pmaxud(<4 x i32>, <4 x i32>) nounwind readnone
291*9880d681SAndroid Build Coastguard Worker
292*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @min_epu32(<4 x i32> %a0, <4 x i32> %a1) {
293*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: min_epu32:
294*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
295*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    pminud %xmm1, %xmm0
296*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retl
297*9880d681SAndroid Build Coastguard Worker;
298*9880d681SAndroid Build Coastguard Worker  %res = call <4 x i32> @llvm.x86.sse41.pminud(<4 x i32> %a0, <4 x i32> %a1)
299*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %res
300*9880d681SAndroid Build Coastguard Worker}
301*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.sse41.pminud(<4 x i32>, <4 x i32>) nounwind readnone
302*9880d681SAndroid Build Coastguard Worker
303