xref: /aosp_15_r20/external/llvm/test/CodeGen/X86/sse2-intrinsics-x86.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker; NOTE: Assertions have been autogenerated by update_llc_test_checks.py
2*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -mtriple=i386-apple-darwin -mattr=-avx,+sse2 | FileCheck %s --check-prefix=SSE
3*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -mtriple=i386-apple-darwin -mcpu=knl | FileCheck %s --check-prefix=KNL
4*9880d681SAndroid Build Coastguard Worker
5*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_x86_sse2_add_sd(<2 x double> %a0, <2 x double> %a1) {
6*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: test_x86_sse2_add_sd:
7*9880d681SAndroid Build Coastguard Worker; SSE:       ## BB#0:
8*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    addsd %xmm1, %xmm0
9*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    retl
10*9880d681SAndroid Build Coastguard Worker;
11*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test_x86_sse2_add_sd:
12*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
13*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vaddsd %xmm1, %xmm0, %xmm0
14*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retl
15*9880d681SAndroid Build Coastguard Worker  %res = call <2 x double> @llvm.x86.sse2.add.sd(<2 x double> %a0, <2 x double> %a1) ; <<2 x double>> [#uses=1]
16*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %res
17*9880d681SAndroid Build Coastguard Worker}
18*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.sse2.add.sd(<2 x double>, <2 x double>) nounwind readnone
19*9880d681SAndroid Build Coastguard Worker
20*9880d681SAndroid Build Coastguard Worker
21*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_x86_sse2_cmp_pd(<2 x double> %a0, <2 x double> %a1) {
22*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: test_x86_sse2_cmp_pd:
23*9880d681SAndroid Build Coastguard Worker; SSE:       ## BB#0:
24*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    cmpordpd %xmm1, %xmm0
25*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    retl
26*9880d681SAndroid Build Coastguard Worker;
27*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test_x86_sse2_cmp_pd:
28*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
29*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vcmpordpd %xmm1, %xmm0, %xmm0
30*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retl
31*9880d681SAndroid Build Coastguard Worker  %res = call <2 x double> @llvm.x86.sse2.cmp.pd(<2 x double> %a0, <2 x double> %a1, i8 7) ; <<2 x double>> [#uses=1]
32*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %res
33*9880d681SAndroid Build Coastguard Worker}
34*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.sse2.cmp.pd(<2 x double>, <2 x double>, i8) nounwind readnone
35*9880d681SAndroid Build Coastguard Worker
36*9880d681SAndroid Build Coastguard Worker
37*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_x86_sse2_cmp_sd(<2 x double> %a0, <2 x double> %a1) {
38*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: test_x86_sse2_cmp_sd:
39*9880d681SAndroid Build Coastguard Worker; SSE:       ## BB#0:
40*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    cmpordsd %xmm1, %xmm0
41*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    retl
42*9880d681SAndroid Build Coastguard Worker;
43*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test_x86_sse2_cmp_sd:
44*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
45*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vcmpordsd %xmm1, %xmm0, %xmm0
46*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retl
47*9880d681SAndroid Build Coastguard Worker  %res = call <2 x double> @llvm.x86.sse2.cmp.sd(<2 x double> %a0, <2 x double> %a1, i8 7) ; <<2 x double>> [#uses=1]
48*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %res
49*9880d681SAndroid Build Coastguard Worker}
50*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.sse2.cmp.sd(<2 x double>, <2 x double>, i8) nounwind readnone
51*9880d681SAndroid Build Coastguard Worker
52*9880d681SAndroid Build Coastguard Worker
53*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_sse2_comieq_sd(<2 x double> %a0, <2 x double> %a1) {
54*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: test_x86_sse2_comieq_sd:
55*9880d681SAndroid Build Coastguard Worker; SSE:       ## BB#0:
56*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    comisd %xmm1, %xmm0
57*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    setnp %al
58*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    sete %cl
59*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    andb %al, %cl
60*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    movzbl %cl, %eax
61*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    retl
62*9880d681SAndroid Build Coastguard Worker;
63*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test_x86_sse2_comieq_sd:
64*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
65*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vcomisd %xmm1, %xmm0
66*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    setnp %al
67*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    sete %cl
68*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    andb %al, %cl
69*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    movzbl %cl, %eax
70*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retl
71*9880d681SAndroid Build Coastguard Worker  %res = call i32 @llvm.x86.sse2.comieq.sd(<2 x double> %a0, <2 x double> %a1) ; <i32> [#uses=1]
72*9880d681SAndroid Build Coastguard Worker  ret i32 %res
73*9880d681SAndroid Build Coastguard Worker}
74*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse2.comieq.sd(<2 x double>, <2 x double>) nounwind readnone
75*9880d681SAndroid Build Coastguard Worker
76*9880d681SAndroid Build Coastguard Worker
77*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_sse2_comige_sd(<2 x double> %a0, <2 x double> %a1) {
78*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: test_x86_sse2_comige_sd:
79*9880d681SAndroid Build Coastguard Worker; SSE:       ## BB#0:
80*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    xorl %eax, %eax
81*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    comisd %xmm1, %xmm0
82*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    setae %al
83*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    retl
84*9880d681SAndroid Build Coastguard Worker;
85*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test_x86_sse2_comige_sd:
86*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
87*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    xorl %eax, %eax
88*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vcomisd %xmm1, %xmm0
89*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    setae %al
90*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retl
91*9880d681SAndroid Build Coastguard Worker  %res = call i32 @llvm.x86.sse2.comige.sd(<2 x double> %a0, <2 x double> %a1) ; <i32> [#uses=1]
92*9880d681SAndroid Build Coastguard Worker  ret i32 %res
93*9880d681SAndroid Build Coastguard Worker}
94*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse2.comige.sd(<2 x double>, <2 x double>) nounwind readnone
95*9880d681SAndroid Build Coastguard Worker
96*9880d681SAndroid Build Coastguard Worker
97*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_sse2_comigt_sd(<2 x double> %a0, <2 x double> %a1) {
98*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: test_x86_sse2_comigt_sd:
99*9880d681SAndroid Build Coastguard Worker; SSE:       ## BB#0:
100*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    xorl %eax, %eax
101*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    comisd %xmm1, %xmm0
102*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    seta %al
103*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    retl
104*9880d681SAndroid Build Coastguard Worker;
105*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test_x86_sse2_comigt_sd:
106*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
107*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    xorl %eax, %eax
108*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vcomisd %xmm1, %xmm0
109*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    seta %al
110*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retl
111*9880d681SAndroid Build Coastguard Worker  %res = call i32 @llvm.x86.sse2.comigt.sd(<2 x double> %a0, <2 x double> %a1) ; <i32> [#uses=1]
112*9880d681SAndroid Build Coastguard Worker  ret i32 %res
113*9880d681SAndroid Build Coastguard Worker}
114*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse2.comigt.sd(<2 x double>, <2 x double>) nounwind readnone
115*9880d681SAndroid Build Coastguard Worker
116*9880d681SAndroid Build Coastguard Worker
117*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_sse2_comile_sd(<2 x double> %a0, <2 x double> %a1) {
118*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: test_x86_sse2_comile_sd:
119*9880d681SAndroid Build Coastguard Worker; SSE:       ## BB#0:
120*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    xorl %eax, %eax
121*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    comisd %xmm0, %xmm1
122*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    setae %al
123*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    retl
124*9880d681SAndroid Build Coastguard Worker;
125*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test_x86_sse2_comile_sd:
126*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
127*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    xorl %eax, %eax
128*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vcomisd %xmm0, %xmm1
129*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    setae %al
130*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retl
131*9880d681SAndroid Build Coastguard Worker  %res = call i32 @llvm.x86.sse2.comile.sd(<2 x double> %a0, <2 x double> %a1) ; <i32> [#uses=1]
132*9880d681SAndroid Build Coastguard Worker  ret i32 %res
133*9880d681SAndroid Build Coastguard Worker}
134*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse2.comile.sd(<2 x double>, <2 x double>) nounwind readnone
135*9880d681SAndroid Build Coastguard Worker
136*9880d681SAndroid Build Coastguard Worker
137*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_sse2_comilt_sd(<2 x double> %a0, <2 x double> %a1) {
138*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: test_x86_sse2_comilt_sd:
139*9880d681SAndroid Build Coastguard Worker; SSE:       ## BB#0:
140*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    xorl %eax, %eax
141*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    comisd %xmm0, %xmm1
142*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    seta %al
143*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    retl
144*9880d681SAndroid Build Coastguard Worker;
145*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test_x86_sse2_comilt_sd:
146*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
147*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    xorl %eax, %eax
148*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vcomisd %xmm0, %xmm1
149*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    seta %al
150*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retl
151*9880d681SAndroid Build Coastguard Worker  %res = call i32 @llvm.x86.sse2.comilt.sd(<2 x double> %a0, <2 x double> %a1) ; <i32> [#uses=1]
152*9880d681SAndroid Build Coastguard Worker  ret i32 %res
153*9880d681SAndroid Build Coastguard Worker}
154*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse2.comilt.sd(<2 x double>, <2 x double>) nounwind readnone
155*9880d681SAndroid Build Coastguard Worker
156*9880d681SAndroid Build Coastguard Worker
157*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_sse2_comineq_sd(<2 x double> %a0, <2 x double> %a1) {
158*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: test_x86_sse2_comineq_sd:
159*9880d681SAndroid Build Coastguard Worker; SSE:       ## BB#0:
160*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    comisd %xmm1, %xmm0
161*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    setp %al
162*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    setne %cl
163*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    orb %al, %cl
164*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    movzbl %cl, %eax
165*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    retl
166*9880d681SAndroid Build Coastguard Worker;
167*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test_x86_sse2_comineq_sd:
168*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
169*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vcomisd %xmm1, %xmm0
170*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    setp %al
171*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    setne %cl
172*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    orb %al, %cl
173*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    movzbl %cl, %eax
174*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retl
175*9880d681SAndroid Build Coastguard Worker  %res = call i32 @llvm.x86.sse2.comineq.sd(<2 x double> %a0, <2 x double> %a1) ; <i32> [#uses=1]
176*9880d681SAndroid Build Coastguard Worker  ret i32 %res
177*9880d681SAndroid Build Coastguard Worker}
178*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse2.comineq.sd(<2 x double>, <2 x double>) nounwind readnone
179*9880d681SAndroid Build Coastguard Worker
180*9880d681SAndroid Build Coastguard Worker
181*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_x86_sse2_cvtdq2ps(<4 x i32> %a0) {
182*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: test_x86_sse2_cvtdq2ps:
183*9880d681SAndroid Build Coastguard Worker; SSE:       ## BB#0:
184*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    cvtdq2ps %xmm0, %xmm0
185*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    retl
186*9880d681SAndroid Build Coastguard Worker;
187*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test_x86_sse2_cvtdq2ps:
188*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
189*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vcvtdq2ps %xmm0, %xmm0
190*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retl
191*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.sse2.cvtdq2ps(<4 x i32> %a0) ; <<4 x float>> [#uses=1]
192*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res
193*9880d681SAndroid Build Coastguard Worker}
194*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.sse2.cvtdq2ps(<4 x i32>) nounwind readnone
195*9880d681SAndroid Build Coastguard Worker
196*9880d681SAndroid Build Coastguard Worker
197*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test_x86_sse2_cvtpd2dq(<2 x double> %a0) {
198*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: test_x86_sse2_cvtpd2dq:
199*9880d681SAndroid Build Coastguard Worker; SSE:       ## BB#0:
200*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    cvtpd2dq %xmm0, %xmm0
201*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    retl
202*9880d681SAndroid Build Coastguard Worker;
203*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test_x86_sse2_cvtpd2dq:
204*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
205*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vcvtpd2dq %xmm0, %xmm0
206*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retl
207*9880d681SAndroid Build Coastguard Worker  %res = call <4 x i32> @llvm.x86.sse2.cvtpd2dq(<2 x double> %a0) ; <<4 x i32>> [#uses=1]
208*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %res
209*9880d681SAndroid Build Coastguard Worker}
210*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.sse2.cvtpd2dq(<2 x double>) nounwind readnone
211*9880d681SAndroid Build Coastguard Worker
212*9880d681SAndroid Build Coastguard Worker
213*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_x86_sse2_cvtpd2ps(<2 x double> %a0) {
214*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: test_x86_sse2_cvtpd2ps:
215*9880d681SAndroid Build Coastguard Worker; SSE:       ## BB#0:
216*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    cvtpd2ps %xmm0, %xmm0
217*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    retl
218*9880d681SAndroid Build Coastguard Worker;
219*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test_x86_sse2_cvtpd2ps:
220*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
221*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vcvtpd2ps %xmm0, %xmm0
222*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retl
223*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.sse2.cvtpd2ps(<2 x double> %a0) ; <<4 x float>> [#uses=1]
224*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res
225*9880d681SAndroid Build Coastguard Worker}
226*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.sse2.cvtpd2ps(<2 x double>) nounwind readnone
227*9880d681SAndroid Build Coastguard Worker
228*9880d681SAndroid Build Coastguard Worker
229*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test_x86_sse2_cvtps2dq(<4 x float> %a0) {
230*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: test_x86_sse2_cvtps2dq:
231*9880d681SAndroid Build Coastguard Worker; SSE:       ## BB#0:
232*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    cvtps2dq %xmm0, %xmm0
233*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    retl
234*9880d681SAndroid Build Coastguard Worker;
235*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test_x86_sse2_cvtps2dq:
236*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
237*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vcvtps2dq %xmm0, %xmm0
238*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retl
239*9880d681SAndroid Build Coastguard Worker  %res = call <4 x i32> @llvm.x86.sse2.cvtps2dq(<4 x float> %a0) ; <<4 x i32>> [#uses=1]
240*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %res
241*9880d681SAndroid Build Coastguard Worker}
242*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.sse2.cvtps2dq(<4 x float>) nounwind readnone
243*9880d681SAndroid Build Coastguard Worker
244*9880d681SAndroid Build Coastguard Worker
245*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_sse2_cvtsd2si(<2 x double> %a0) {
246*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: test_x86_sse2_cvtsd2si:
247*9880d681SAndroid Build Coastguard Worker; SSE:       ## BB#0:
248*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    cvtsd2si %xmm0, %eax
249*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    retl
250*9880d681SAndroid Build Coastguard Worker;
251*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test_x86_sse2_cvtsd2si:
252*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
253*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vcvtsd2si %xmm0, %eax
254*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retl
255*9880d681SAndroid Build Coastguard Worker  %res = call i32 @llvm.x86.sse2.cvtsd2si(<2 x double> %a0) ; <i32> [#uses=1]
256*9880d681SAndroid Build Coastguard Worker  ret i32 %res
257*9880d681SAndroid Build Coastguard Worker}
258*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse2.cvtsd2si(<2 x double>) nounwind readnone
259*9880d681SAndroid Build Coastguard Worker
260*9880d681SAndroid Build Coastguard Worker
261*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_x86_sse2_cvtsd2ss(<4 x float> %a0, <2 x double> %a1) {
262*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: test_x86_sse2_cvtsd2ss:
263*9880d681SAndroid Build Coastguard Worker; SSE:       ## BB#0:
264*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    cvtsd2ss %xmm1, %xmm0
265*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    retl
266*9880d681SAndroid Build Coastguard Worker;
267*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test_x86_sse2_cvtsd2ss:
268*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
269*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vcvtsd2ss %xmm1, %xmm0, %xmm0
270*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retl
271*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.sse2.cvtsd2ss(<4 x float> %a0, <2 x double> %a1) ; <<4 x float>> [#uses=1]
272*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res
273*9880d681SAndroid Build Coastguard Worker}
274*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.sse2.cvtsd2ss(<4 x float>, <2 x double>) nounwind readnone
275*9880d681SAndroid Build Coastguard Worker
276*9880d681SAndroid Build Coastguard Worker
277*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_x86_sse2_cvtsi2sd(<2 x double> %a0, i32 %a1) {
278*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: test_x86_sse2_cvtsi2sd:
279*9880d681SAndroid Build Coastguard Worker; SSE:       ## BB#0:
280*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    cvtsi2sdl {{[0-9]+}}(%esp), %xmm0
281*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    retl
282*9880d681SAndroid Build Coastguard Worker;
283*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test_x86_sse2_cvtsi2sd:
284*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
285*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vcvtsi2sdl {{[0-9]+}}(%esp), %xmm0, %xmm0
286*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retl
287*9880d681SAndroid Build Coastguard Worker  %res = call <2 x double> @llvm.x86.sse2.cvtsi2sd(<2 x double> %a0, i32 %a1) ; <<2 x double>> [#uses=1]
288*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %res
289*9880d681SAndroid Build Coastguard Worker}
290*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.sse2.cvtsi2sd(<2 x double>, i32) nounwind readnone
291*9880d681SAndroid Build Coastguard Worker
292*9880d681SAndroid Build Coastguard Worker
293*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_x86_sse2_cvtss2sd(<2 x double> %a0, <4 x float> %a1) {
294*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: test_x86_sse2_cvtss2sd:
295*9880d681SAndroid Build Coastguard Worker; SSE:       ## BB#0:
296*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    cvtss2sd %xmm1, %xmm0
297*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    retl
298*9880d681SAndroid Build Coastguard Worker;
299*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test_x86_sse2_cvtss2sd:
300*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
301*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vcvtss2sd %xmm1, %xmm0, %xmm0
302*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retl
303*9880d681SAndroid Build Coastguard Worker  %res = call <2 x double> @llvm.x86.sse2.cvtss2sd(<2 x double> %a0, <4 x float> %a1) ; <<2 x double>> [#uses=1]
304*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %res
305*9880d681SAndroid Build Coastguard Worker}
306*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.sse2.cvtss2sd(<2 x double>, <4 x float>) nounwind readnone
307*9880d681SAndroid Build Coastguard Worker
308*9880d681SAndroid Build Coastguard Worker
309*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test_x86_sse2_cvttpd2dq(<2 x double> %a0) {
310*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: test_x86_sse2_cvttpd2dq:
311*9880d681SAndroid Build Coastguard Worker; SSE:       ## BB#0:
312*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    cvttpd2dq %xmm0, %xmm0
313*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    retl
314*9880d681SAndroid Build Coastguard Worker;
315*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test_x86_sse2_cvttpd2dq:
316*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
317*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vcvttpd2dq %xmm0, %xmm0
318*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retl
319*9880d681SAndroid Build Coastguard Worker  %res = call <4 x i32> @llvm.x86.sse2.cvttpd2dq(<2 x double> %a0) ; <<4 x i32>> [#uses=1]
320*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %res
321*9880d681SAndroid Build Coastguard Worker}
322*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.sse2.cvttpd2dq(<2 x double>) nounwind readnone
323*9880d681SAndroid Build Coastguard Worker
324*9880d681SAndroid Build Coastguard Worker
325*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_sse2_cvttsd2si(<2 x double> %a0) {
326*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: test_x86_sse2_cvttsd2si:
327*9880d681SAndroid Build Coastguard Worker; SSE:       ## BB#0:
328*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    cvttsd2si %xmm0, %eax
329*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    retl
330*9880d681SAndroid Build Coastguard Worker;
331*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test_x86_sse2_cvttsd2si:
332*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
333*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vcvttsd2si %xmm0, %eax
334*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retl
335*9880d681SAndroid Build Coastguard Worker  %res = call i32 @llvm.x86.sse2.cvttsd2si(<2 x double> %a0) ; <i32> [#uses=1]
336*9880d681SAndroid Build Coastguard Worker  ret i32 %res
337*9880d681SAndroid Build Coastguard Worker}
338*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse2.cvttsd2si(<2 x double>) nounwind readnone
339*9880d681SAndroid Build Coastguard Worker
340*9880d681SAndroid Build Coastguard Worker
341*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_x86_sse2_div_sd(<2 x double> %a0, <2 x double> %a1) {
342*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: test_x86_sse2_div_sd:
343*9880d681SAndroid Build Coastguard Worker; SSE:       ## BB#0:
344*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    divsd %xmm1, %xmm0
345*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    retl
346*9880d681SAndroid Build Coastguard Worker;
347*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test_x86_sse2_div_sd:
348*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
349*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vdivsd %xmm1, %xmm0, %xmm0
350*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retl
351*9880d681SAndroid Build Coastguard Worker  %res = call <2 x double> @llvm.x86.sse2.div.sd(<2 x double> %a0, <2 x double> %a1) ; <<2 x double>> [#uses=1]
352*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %res
353*9880d681SAndroid Build Coastguard Worker}
354*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.sse2.div.sd(<2 x double>, <2 x double>) nounwind readnone
355*9880d681SAndroid Build Coastguard Worker
356*9880d681SAndroid Build Coastguard Worker
357*9880d681SAndroid Build Coastguard Worker
358*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_x86_sse2_max_pd(<2 x double> %a0, <2 x double> %a1) {
359*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: test_x86_sse2_max_pd:
360*9880d681SAndroid Build Coastguard Worker; SSE:       ## BB#0:
361*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    maxpd %xmm1, %xmm0
362*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    retl
363*9880d681SAndroid Build Coastguard Worker;
364*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test_x86_sse2_max_pd:
365*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
366*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vmaxpd %xmm1, %xmm0, %xmm0
367*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retl
368*9880d681SAndroid Build Coastguard Worker  %res = call <2 x double> @llvm.x86.sse2.max.pd(<2 x double> %a0, <2 x double> %a1) ; <<2 x double>> [#uses=1]
369*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %res
370*9880d681SAndroid Build Coastguard Worker}
371*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.sse2.max.pd(<2 x double>, <2 x double>) nounwind readnone
372*9880d681SAndroid Build Coastguard Worker
373*9880d681SAndroid Build Coastguard Worker
374*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_x86_sse2_max_sd(<2 x double> %a0, <2 x double> %a1) {
375*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: test_x86_sse2_max_sd:
376*9880d681SAndroid Build Coastguard Worker; SSE:       ## BB#0:
377*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    maxsd %xmm1, %xmm0
378*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    retl
379*9880d681SAndroid Build Coastguard Worker;
380*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test_x86_sse2_max_sd:
381*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
382*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vmaxsd %xmm1, %xmm0, %xmm0
383*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retl
384*9880d681SAndroid Build Coastguard Worker  %res = call <2 x double> @llvm.x86.sse2.max.sd(<2 x double> %a0, <2 x double> %a1) ; <<2 x double>> [#uses=1]
385*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %res
386*9880d681SAndroid Build Coastguard Worker}
387*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.sse2.max.sd(<2 x double>, <2 x double>) nounwind readnone
388*9880d681SAndroid Build Coastguard Worker
389*9880d681SAndroid Build Coastguard Worker
390*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_x86_sse2_min_pd(<2 x double> %a0, <2 x double> %a1) {
391*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: test_x86_sse2_min_pd:
392*9880d681SAndroid Build Coastguard Worker; SSE:       ## BB#0:
393*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    minpd %xmm1, %xmm0
394*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    retl
395*9880d681SAndroid Build Coastguard Worker;
396*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test_x86_sse2_min_pd:
397*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
398*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vminpd %xmm1, %xmm0, %xmm0
399*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retl
400*9880d681SAndroid Build Coastguard Worker  %res = call <2 x double> @llvm.x86.sse2.min.pd(<2 x double> %a0, <2 x double> %a1) ; <<2 x double>> [#uses=1]
401*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %res
402*9880d681SAndroid Build Coastguard Worker}
403*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.sse2.min.pd(<2 x double>, <2 x double>) nounwind readnone
404*9880d681SAndroid Build Coastguard Worker
405*9880d681SAndroid Build Coastguard Worker
406*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_x86_sse2_min_sd(<2 x double> %a0, <2 x double> %a1) {
407*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: test_x86_sse2_min_sd:
408*9880d681SAndroid Build Coastguard Worker; SSE:       ## BB#0:
409*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    minsd %xmm1, %xmm0
410*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    retl
411*9880d681SAndroid Build Coastguard Worker;
412*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test_x86_sse2_min_sd:
413*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
414*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vminsd %xmm1, %xmm0, %xmm0
415*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retl
416*9880d681SAndroid Build Coastguard Worker  %res = call <2 x double> @llvm.x86.sse2.min.sd(<2 x double> %a0, <2 x double> %a1) ; <<2 x double>> [#uses=1]
417*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %res
418*9880d681SAndroid Build Coastguard Worker}
419*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.sse2.min.sd(<2 x double>, <2 x double>) nounwind readnone
420*9880d681SAndroid Build Coastguard Worker
421*9880d681SAndroid Build Coastguard Worker
422*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_sse2_movmsk_pd(<2 x double> %a0) {
423*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: test_x86_sse2_movmsk_pd:
424*9880d681SAndroid Build Coastguard Worker; SSE:       ## BB#0:
425*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    movmskpd %xmm0, %eax
426*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    retl
427*9880d681SAndroid Build Coastguard Worker;
428*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test_x86_sse2_movmsk_pd:
429*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
430*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vmovmskpd %xmm0, %eax
431*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retl
432*9880d681SAndroid Build Coastguard Worker  %res = call i32 @llvm.x86.sse2.movmsk.pd(<2 x double> %a0) ; <i32> [#uses=1]
433*9880d681SAndroid Build Coastguard Worker  ret i32 %res
434*9880d681SAndroid Build Coastguard Worker}
435*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse2.movmsk.pd(<2 x double>) nounwind readnone
436*9880d681SAndroid Build Coastguard Worker
437*9880d681SAndroid Build Coastguard Worker
438*9880d681SAndroid Build Coastguard Worker
439*9880d681SAndroid Build Coastguard Worker
440*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_x86_sse2_mul_sd(<2 x double> %a0, <2 x double> %a1) {
441*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: test_x86_sse2_mul_sd:
442*9880d681SAndroid Build Coastguard Worker; SSE:       ## BB#0:
443*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    mulsd %xmm1, %xmm0
444*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    retl
445*9880d681SAndroid Build Coastguard Worker;
446*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test_x86_sse2_mul_sd:
447*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
448*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vmulsd %xmm1, %xmm0, %xmm0
449*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retl
450*9880d681SAndroid Build Coastguard Worker  %res = call <2 x double> @llvm.x86.sse2.mul.sd(<2 x double> %a0, <2 x double> %a1) ; <<2 x double>> [#uses=1]
451*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %res
452*9880d681SAndroid Build Coastguard Worker}
453*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.sse2.mul.sd(<2 x double>, <2 x double>) nounwind readnone
454*9880d681SAndroid Build Coastguard Worker
455*9880d681SAndroid Build Coastguard Worker
456*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_x86_sse2_packssdw_128(<4 x i32> %a0, <4 x i32> %a1) {
457*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: test_x86_sse2_packssdw_128:
458*9880d681SAndroid Build Coastguard Worker; SSE:       ## BB#0:
459*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    packssdw %xmm1, %xmm0
460*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    retl
461*9880d681SAndroid Build Coastguard Worker;
462*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test_x86_sse2_packssdw_128:
463*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
464*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpackssdw %xmm1, %xmm0, %xmm0
465*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retl
466*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i16> @llvm.x86.sse2.packssdw.128(<4 x i32> %a0, <4 x i32> %a1) ; <<8 x i16>> [#uses=1]
467*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %res
468*9880d681SAndroid Build Coastguard Worker}
469*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.sse2.packssdw.128(<4 x i32>, <4 x i32>) nounwind readnone
470*9880d681SAndroid Build Coastguard Worker
471*9880d681SAndroid Build Coastguard Worker
472*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_x86_sse2_packsswb_128(<8 x i16> %a0, <8 x i16> %a1) {
473*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: test_x86_sse2_packsswb_128:
474*9880d681SAndroid Build Coastguard Worker; SSE:       ## BB#0:
475*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    packsswb %xmm1, %xmm0
476*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    retl
477*9880d681SAndroid Build Coastguard Worker;
478*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test_x86_sse2_packsswb_128:
479*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
480*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpacksswb %xmm1, %xmm0, %xmm0
481*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retl
482*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i8> @llvm.x86.sse2.packsswb.128(<8 x i16> %a0, <8 x i16> %a1) ; <<16 x i8>> [#uses=1]
483*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %res
484*9880d681SAndroid Build Coastguard Worker}
485*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.x86.sse2.packsswb.128(<8 x i16>, <8 x i16>) nounwind readnone
486*9880d681SAndroid Build Coastguard Worker
487*9880d681SAndroid Build Coastguard Worker
488*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_x86_sse2_packuswb_128(<8 x i16> %a0, <8 x i16> %a1) {
489*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: test_x86_sse2_packuswb_128:
490*9880d681SAndroid Build Coastguard Worker; SSE:       ## BB#0:
491*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    packuswb %xmm1, %xmm0
492*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    retl
493*9880d681SAndroid Build Coastguard Worker;
494*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test_x86_sse2_packuswb_128:
495*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
496*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpackuswb %xmm1, %xmm0, %xmm0
497*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retl
498*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i8> @llvm.x86.sse2.packuswb.128(<8 x i16> %a0, <8 x i16> %a1) ; <<16 x i8>> [#uses=1]
499*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %res
500*9880d681SAndroid Build Coastguard Worker}
501*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.x86.sse2.packuswb.128(<8 x i16>, <8 x i16>) nounwind readnone
502*9880d681SAndroid Build Coastguard Worker
503*9880d681SAndroid Build Coastguard Worker
504*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_x86_sse2_padds_b(<16 x i8> %a0, <16 x i8> %a1) {
505*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: test_x86_sse2_padds_b:
506*9880d681SAndroid Build Coastguard Worker; SSE:       ## BB#0:
507*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    paddsb %xmm1, %xmm0
508*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    retl
509*9880d681SAndroid Build Coastguard Worker;
510*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test_x86_sse2_padds_b:
511*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
512*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpaddsb %xmm1, %xmm0, %xmm0
513*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retl
514*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i8> @llvm.x86.sse2.padds.b(<16 x i8> %a0, <16 x i8> %a1) ; <<16 x i8>> [#uses=1]
515*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %res
516*9880d681SAndroid Build Coastguard Worker}
517*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.x86.sse2.padds.b(<16 x i8>, <16 x i8>) nounwind readnone
518*9880d681SAndroid Build Coastguard Worker
519*9880d681SAndroid Build Coastguard Worker
520*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_x86_sse2_padds_w(<8 x i16> %a0, <8 x i16> %a1) {
521*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: test_x86_sse2_padds_w:
522*9880d681SAndroid Build Coastguard Worker; SSE:       ## BB#0:
523*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    paddsw %xmm1, %xmm0
524*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    retl
525*9880d681SAndroid Build Coastguard Worker;
526*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test_x86_sse2_padds_w:
527*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
528*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpaddsw %xmm1, %xmm0, %xmm0
529*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retl
530*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i16> @llvm.x86.sse2.padds.w(<8 x i16> %a0, <8 x i16> %a1) ; <<8 x i16>> [#uses=1]
531*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %res
532*9880d681SAndroid Build Coastguard Worker}
533*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.sse2.padds.w(<8 x i16>, <8 x i16>) nounwind readnone
534*9880d681SAndroid Build Coastguard Worker
535*9880d681SAndroid Build Coastguard Worker
536*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_x86_sse2_paddus_b(<16 x i8> %a0, <16 x i8> %a1) {
537*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: test_x86_sse2_paddus_b:
538*9880d681SAndroid Build Coastguard Worker; SSE:       ## BB#0:
539*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    paddusb %xmm1, %xmm0
540*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    retl
541*9880d681SAndroid Build Coastguard Worker;
542*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test_x86_sse2_paddus_b:
543*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
544*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpaddusb %xmm1, %xmm0, %xmm0
545*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retl
546*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i8> @llvm.x86.sse2.paddus.b(<16 x i8> %a0, <16 x i8> %a1) ; <<16 x i8>> [#uses=1]
547*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %res
548*9880d681SAndroid Build Coastguard Worker}
549*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.x86.sse2.paddus.b(<16 x i8>, <16 x i8>) nounwind readnone
550*9880d681SAndroid Build Coastguard Worker
551*9880d681SAndroid Build Coastguard Worker
552*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_x86_sse2_paddus_w(<8 x i16> %a0, <8 x i16> %a1) {
553*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: test_x86_sse2_paddus_w:
554*9880d681SAndroid Build Coastguard Worker; SSE:       ## BB#0:
555*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    paddusw %xmm1, %xmm0
556*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    retl
557*9880d681SAndroid Build Coastguard Worker;
558*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test_x86_sse2_paddus_w:
559*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
560*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpaddusw %xmm1, %xmm0, %xmm0
561*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retl
562*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i16> @llvm.x86.sse2.paddus.w(<8 x i16> %a0, <8 x i16> %a1) ; <<8 x i16>> [#uses=1]
563*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %res
564*9880d681SAndroid Build Coastguard Worker}
565*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.sse2.paddus.w(<8 x i16>, <8 x i16>) nounwind readnone
566*9880d681SAndroid Build Coastguard Worker
567*9880d681SAndroid Build Coastguard Worker
568*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_x86_sse2_pavg_b(<16 x i8> %a0, <16 x i8> %a1) {
569*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: test_x86_sse2_pavg_b:
570*9880d681SAndroid Build Coastguard Worker; SSE:       ## BB#0:
571*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    pavgb %xmm1, %xmm0
572*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    retl
573*9880d681SAndroid Build Coastguard Worker;
574*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test_x86_sse2_pavg_b:
575*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
576*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpavgb %xmm1, %xmm0, %xmm0
577*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retl
578*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i8> @llvm.x86.sse2.pavg.b(<16 x i8> %a0, <16 x i8> %a1) ; <<16 x i8>> [#uses=1]
579*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %res
580*9880d681SAndroid Build Coastguard Worker}
581*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.x86.sse2.pavg.b(<16 x i8>, <16 x i8>) nounwind readnone
582*9880d681SAndroid Build Coastguard Worker
583*9880d681SAndroid Build Coastguard Worker
584*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_x86_sse2_pavg_w(<8 x i16> %a0, <8 x i16> %a1) {
585*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: test_x86_sse2_pavg_w:
586*9880d681SAndroid Build Coastguard Worker; SSE:       ## BB#0:
587*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    pavgw %xmm1, %xmm0
588*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    retl
589*9880d681SAndroid Build Coastguard Worker;
590*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test_x86_sse2_pavg_w:
591*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
592*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpavgw %xmm1, %xmm0, %xmm0
593*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retl
594*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i16> @llvm.x86.sse2.pavg.w(<8 x i16> %a0, <8 x i16> %a1) ; <<8 x i16>> [#uses=1]
595*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %res
596*9880d681SAndroid Build Coastguard Worker}
597*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.sse2.pavg.w(<8 x i16>, <8 x i16>) nounwind readnone
598*9880d681SAndroid Build Coastguard Worker
599*9880d681SAndroid Build Coastguard Worker
600*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test_x86_sse2_pmadd_wd(<8 x i16> %a0, <8 x i16> %a1) {
601*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: test_x86_sse2_pmadd_wd:
602*9880d681SAndroid Build Coastguard Worker; SSE:       ## BB#0:
603*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    pmaddwd %xmm1, %xmm0
604*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    retl
605*9880d681SAndroid Build Coastguard Worker;
606*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test_x86_sse2_pmadd_wd:
607*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
608*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpmaddwd %xmm1, %xmm0, %xmm0
609*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retl
610*9880d681SAndroid Build Coastguard Worker  %res = call <4 x i32> @llvm.x86.sse2.pmadd.wd(<8 x i16> %a0, <8 x i16> %a1) ; <<4 x i32>> [#uses=1]
611*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %res
612*9880d681SAndroid Build Coastguard Worker}
613*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.sse2.pmadd.wd(<8 x i16>, <8 x i16>) nounwind readnone
614*9880d681SAndroid Build Coastguard Worker
615*9880d681SAndroid Build Coastguard Worker
616*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_x86_sse2_pmaxs_w(<8 x i16> %a0, <8 x i16> %a1) {
617*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: test_x86_sse2_pmaxs_w:
618*9880d681SAndroid Build Coastguard Worker; SSE:       ## BB#0:
619*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    pmaxsw %xmm1, %xmm0
620*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    retl
621*9880d681SAndroid Build Coastguard Worker;
622*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test_x86_sse2_pmaxs_w:
623*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
624*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpmaxsw %xmm1, %xmm0, %xmm0
625*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retl
626*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i16> @llvm.x86.sse2.pmaxs.w(<8 x i16> %a0, <8 x i16> %a1) ; <<8 x i16>> [#uses=1]
627*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %res
628*9880d681SAndroid Build Coastguard Worker}
629*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.sse2.pmaxs.w(<8 x i16>, <8 x i16>) nounwind readnone
630*9880d681SAndroid Build Coastguard Worker
631*9880d681SAndroid Build Coastguard Worker
632*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_x86_sse2_pmaxu_b(<16 x i8> %a0, <16 x i8> %a1) {
633*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: test_x86_sse2_pmaxu_b:
634*9880d681SAndroid Build Coastguard Worker; SSE:       ## BB#0:
635*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    pmaxub %xmm1, %xmm0
636*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    retl
637*9880d681SAndroid Build Coastguard Worker;
638*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test_x86_sse2_pmaxu_b:
639*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
640*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpmaxub %xmm1, %xmm0, %xmm0
641*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retl
642*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i8> @llvm.x86.sse2.pmaxu.b(<16 x i8> %a0, <16 x i8> %a1) ; <<16 x i8>> [#uses=1]
643*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %res
644*9880d681SAndroid Build Coastguard Worker}
645*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.x86.sse2.pmaxu.b(<16 x i8>, <16 x i8>) nounwind readnone
646*9880d681SAndroid Build Coastguard Worker
647*9880d681SAndroid Build Coastguard Worker
648*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_x86_sse2_pmins_w(<8 x i16> %a0, <8 x i16> %a1) {
649*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: test_x86_sse2_pmins_w:
650*9880d681SAndroid Build Coastguard Worker; SSE:       ## BB#0:
651*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    pminsw %xmm1, %xmm0
652*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    retl
653*9880d681SAndroid Build Coastguard Worker;
654*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test_x86_sse2_pmins_w:
655*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
656*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpminsw %xmm1, %xmm0, %xmm0
657*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retl
658*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i16> @llvm.x86.sse2.pmins.w(<8 x i16> %a0, <8 x i16> %a1) ; <<8 x i16>> [#uses=1]
659*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %res
660*9880d681SAndroid Build Coastguard Worker}
661*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.sse2.pmins.w(<8 x i16>, <8 x i16>) nounwind readnone
662*9880d681SAndroid Build Coastguard Worker
663*9880d681SAndroid Build Coastguard Worker
664*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_x86_sse2_pminu_b(<16 x i8> %a0, <16 x i8> %a1) {
665*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: test_x86_sse2_pminu_b:
666*9880d681SAndroid Build Coastguard Worker; SSE:       ## BB#0:
667*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    pminub %xmm1, %xmm0
668*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    retl
669*9880d681SAndroid Build Coastguard Worker;
670*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test_x86_sse2_pminu_b:
671*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
672*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpminub %xmm1, %xmm0, %xmm0
673*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retl
674*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i8> @llvm.x86.sse2.pminu.b(<16 x i8> %a0, <16 x i8> %a1) ; <<16 x i8>> [#uses=1]
675*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %res
676*9880d681SAndroid Build Coastguard Worker}
677*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.x86.sse2.pminu.b(<16 x i8>, <16 x i8>) nounwind readnone
678*9880d681SAndroid Build Coastguard Worker
679*9880d681SAndroid Build Coastguard Worker
680*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_sse2_pmovmskb_128(<16 x i8> %a0) {
681*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: test_x86_sse2_pmovmskb_128:
682*9880d681SAndroid Build Coastguard Worker; SSE:       ## BB#0:
683*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    pmovmskb %xmm0, %eax
684*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    retl
685*9880d681SAndroid Build Coastguard Worker;
686*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test_x86_sse2_pmovmskb_128:
687*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
688*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpmovmskb %xmm0, %eax
689*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retl
690*9880d681SAndroid Build Coastguard Worker  %res = call i32 @llvm.x86.sse2.pmovmskb.128(<16 x i8> %a0) ; <i32> [#uses=1]
691*9880d681SAndroid Build Coastguard Worker  ret i32 %res
692*9880d681SAndroid Build Coastguard Worker}
693*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse2.pmovmskb.128(<16 x i8>) nounwind readnone
694*9880d681SAndroid Build Coastguard Worker
695*9880d681SAndroid Build Coastguard Worker
696*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_x86_sse2_pmulh_w(<8 x i16> %a0, <8 x i16> %a1) {
697*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: test_x86_sse2_pmulh_w:
698*9880d681SAndroid Build Coastguard Worker; SSE:       ## BB#0:
699*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    pmulhw %xmm1, %xmm0
700*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    retl
701*9880d681SAndroid Build Coastguard Worker;
702*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test_x86_sse2_pmulh_w:
703*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
704*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpmulhw %xmm1, %xmm0, %xmm0
705*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retl
706*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i16> @llvm.x86.sse2.pmulh.w(<8 x i16> %a0, <8 x i16> %a1) ; <<8 x i16>> [#uses=1]
707*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %res
708*9880d681SAndroid Build Coastguard Worker}
709*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.sse2.pmulh.w(<8 x i16>, <8 x i16>) nounwind readnone
710*9880d681SAndroid Build Coastguard Worker
711*9880d681SAndroid Build Coastguard Worker
712*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_x86_sse2_pmulhu_w(<8 x i16> %a0, <8 x i16> %a1) {
713*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: test_x86_sse2_pmulhu_w:
714*9880d681SAndroid Build Coastguard Worker; SSE:       ## BB#0:
715*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    pmulhuw %xmm1, %xmm0
716*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    retl
717*9880d681SAndroid Build Coastguard Worker;
718*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test_x86_sse2_pmulhu_w:
719*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
720*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpmulhuw %xmm1, %xmm0, %xmm0
721*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retl
722*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i16> @llvm.x86.sse2.pmulhu.w(<8 x i16> %a0, <8 x i16> %a1) ; <<8 x i16>> [#uses=1]
723*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %res
724*9880d681SAndroid Build Coastguard Worker}
725*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.sse2.pmulhu.w(<8 x i16>, <8 x i16>) nounwind readnone
726*9880d681SAndroid Build Coastguard Worker
727*9880d681SAndroid Build Coastguard Worker
728*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_x86_sse2_pmulu_dq(<4 x i32> %a0, <4 x i32> %a1) {
729*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: test_x86_sse2_pmulu_dq:
730*9880d681SAndroid Build Coastguard Worker; SSE:       ## BB#0:
731*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    pmuludq %xmm1, %xmm0
732*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    retl
733*9880d681SAndroid Build Coastguard Worker;
734*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test_x86_sse2_pmulu_dq:
735*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
736*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpmuludq %xmm1, %xmm0, %xmm0
737*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retl
738*9880d681SAndroid Build Coastguard Worker  %res = call <2 x i64> @llvm.x86.sse2.pmulu.dq(<4 x i32> %a0, <4 x i32> %a1) ; <<2 x i64>> [#uses=1]
739*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %res
740*9880d681SAndroid Build Coastguard Worker}
741*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.x86.sse2.pmulu.dq(<4 x i32>, <4 x i32>) nounwind readnone
742*9880d681SAndroid Build Coastguard Worker
743*9880d681SAndroid Build Coastguard Worker
744*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_x86_sse2_psad_bw(<16 x i8> %a0, <16 x i8> %a1) {
745*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: test_x86_sse2_psad_bw:
746*9880d681SAndroid Build Coastguard Worker; SSE:       ## BB#0:
747*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    psadbw %xmm1, %xmm0
748*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    retl
749*9880d681SAndroid Build Coastguard Worker;
750*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test_x86_sse2_psad_bw:
751*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
752*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpsadbw %xmm1, %xmm0, %xmm0
753*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retl
754*9880d681SAndroid Build Coastguard Worker  %res = call <2 x i64> @llvm.x86.sse2.psad.bw(<16 x i8> %a0, <16 x i8> %a1) ; <<2 x i64>> [#uses=1]
755*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %res
756*9880d681SAndroid Build Coastguard Worker}
757*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.x86.sse2.psad.bw(<16 x i8>, <16 x i8>) nounwind readnone
758*9880d681SAndroid Build Coastguard Worker
759*9880d681SAndroid Build Coastguard Worker
760*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test_x86_sse2_psll_d(<4 x i32> %a0, <4 x i32> %a1) {
761*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: test_x86_sse2_psll_d:
762*9880d681SAndroid Build Coastguard Worker; SSE:       ## BB#0:
763*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    pslld %xmm1, %xmm0
764*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    retl
765*9880d681SAndroid Build Coastguard Worker;
766*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test_x86_sse2_psll_d:
767*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
768*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpslld %xmm1, %xmm0, %xmm0
769*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retl
770*9880d681SAndroid Build Coastguard Worker  %res = call <4 x i32> @llvm.x86.sse2.psll.d(<4 x i32> %a0, <4 x i32> %a1) ; <<4 x i32>> [#uses=1]
771*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %res
772*9880d681SAndroid Build Coastguard Worker}
773*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.sse2.psll.d(<4 x i32>, <4 x i32>) nounwind readnone
774*9880d681SAndroid Build Coastguard Worker
775*9880d681SAndroid Build Coastguard Worker
776*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_x86_sse2_psll_q(<2 x i64> %a0, <2 x i64> %a1) {
777*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: test_x86_sse2_psll_q:
778*9880d681SAndroid Build Coastguard Worker; SSE:       ## BB#0:
779*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    psllq %xmm1, %xmm0
780*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    retl
781*9880d681SAndroid Build Coastguard Worker;
782*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test_x86_sse2_psll_q:
783*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
784*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpsllq %xmm1, %xmm0, %xmm0
785*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retl
786*9880d681SAndroid Build Coastguard Worker  %res = call <2 x i64> @llvm.x86.sse2.psll.q(<2 x i64> %a0, <2 x i64> %a1) ; <<2 x i64>> [#uses=1]
787*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %res
788*9880d681SAndroid Build Coastguard Worker}
789*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.x86.sse2.psll.q(<2 x i64>, <2 x i64>) nounwind readnone
790*9880d681SAndroid Build Coastguard Worker
791*9880d681SAndroid Build Coastguard Worker
792*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_x86_sse2_psll_w(<8 x i16> %a0, <8 x i16> %a1) {
793*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: test_x86_sse2_psll_w:
794*9880d681SAndroid Build Coastguard Worker; SSE:       ## BB#0:
795*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    psllw %xmm1, %xmm0
796*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    retl
797*9880d681SAndroid Build Coastguard Worker;
798*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test_x86_sse2_psll_w:
799*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
800*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpsllw %xmm1, %xmm0, %xmm0
801*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retl
802*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i16> @llvm.x86.sse2.psll.w(<8 x i16> %a0, <8 x i16> %a1) ; <<8 x i16>> [#uses=1]
803*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %res
804*9880d681SAndroid Build Coastguard Worker}
805*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.sse2.psll.w(<8 x i16>, <8 x i16>) nounwind readnone
806*9880d681SAndroid Build Coastguard Worker
807*9880d681SAndroid Build Coastguard Worker
808*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test_x86_sse2_pslli_d(<4 x i32> %a0) {
809*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: test_x86_sse2_pslli_d:
810*9880d681SAndroid Build Coastguard Worker; SSE:       ## BB#0:
811*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    pslld $7, %xmm0
812*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    retl
813*9880d681SAndroid Build Coastguard Worker;
814*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test_x86_sse2_pslli_d:
815*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
816*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpslld $7, %xmm0, %xmm0
817*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retl
818*9880d681SAndroid Build Coastguard Worker  %res = call <4 x i32> @llvm.x86.sse2.pslli.d(<4 x i32> %a0, i32 7) ; <<4 x i32>> [#uses=1]
819*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %res
820*9880d681SAndroid Build Coastguard Worker}
821*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.sse2.pslli.d(<4 x i32>, i32) nounwind readnone
822*9880d681SAndroid Build Coastguard Worker
823*9880d681SAndroid Build Coastguard Worker
824*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_x86_sse2_pslli_q(<2 x i64> %a0) {
825*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: test_x86_sse2_pslli_q:
826*9880d681SAndroid Build Coastguard Worker; SSE:       ## BB#0:
827*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    psllq $7, %xmm0
828*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    retl
829*9880d681SAndroid Build Coastguard Worker;
830*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test_x86_sse2_pslli_q:
831*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
832*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpsllq $7, %xmm0, %xmm0
833*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retl
834*9880d681SAndroid Build Coastguard Worker  %res = call <2 x i64> @llvm.x86.sse2.pslli.q(<2 x i64> %a0, i32 7) ; <<2 x i64>> [#uses=1]
835*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %res
836*9880d681SAndroid Build Coastguard Worker}
837*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.x86.sse2.pslli.q(<2 x i64>, i32) nounwind readnone
838*9880d681SAndroid Build Coastguard Worker
839*9880d681SAndroid Build Coastguard Worker
840*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_x86_sse2_pslli_w(<8 x i16> %a0) {
841*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: test_x86_sse2_pslli_w:
842*9880d681SAndroid Build Coastguard Worker; SSE:       ## BB#0:
843*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    psllw $7, %xmm0
844*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    retl
845*9880d681SAndroid Build Coastguard Worker;
846*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test_x86_sse2_pslli_w:
847*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
848*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpsllw $7, %xmm0, %xmm0
849*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retl
850*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i16> @llvm.x86.sse2.pslli.w(<8 x i16> %a0, i32 7) ; <<8 x i16>> [#uses=1]
851*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %res
852*9880d681SAndroid Build Coastguard Worker}
853*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.sse2.pslli.w(<8 x i16>, i32) nounwind readnone
854*9880d681SAndroid Build Coastguard Worker
855*9880d681SAndroid Build Coastguard Worker
856*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test_x86_sse2_psra_d(<4 x i32> %a0, <4 x i32> %a1) {
857*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: test_x86_sse2_psra_d:
858*9880d681SAndroid Build Coastguard Worker; SSE:       ## BB#0:
859*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    psrad %xmm1, %xmm0
860*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    retl
861*9880d681SAndroid Build Coastguard Worker;
862*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test_x86_sse2_psra_d:
863*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
864*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpsrad %xmm1, %xmm0, %xmm0
865*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retl
866*9880d681SAndroid Build Coastguard Worker  %res = call <4 x i32> @llvm.x86.sse2.psra.d(<4 x i32> %a0, <4 x i32> %a1) ; <<4 x i32>> [#uses=1]
867*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %res
868*9880d681SAndroid Build Coastguard Worker}
869*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.sse2.psra.d(<4 x i32>, <4 x i32>) nounwind readnone
870*9880d681SAndroid Build Coastguard Worker
871*9880d681SAndroid Build Coastguard Worker
872*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_x86_sse2_psra_w(<8 x i16> %a0, <8 x i16> %a1) {
873*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: test_x86_sse2_psra_w:
874*9880d681SAndroid Build Coastguard Worker; SSE:       ## BB#0:
875*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    psraw %xmm1, %xmm0
876*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    retl
877*9880d681SAndroid Build Coastguard Worker;
878*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test_x86_sse2_psra_w:
879*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
880*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpsraw %xmm1, %xmm0, %xmm0
881*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retl
882*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i16> @llvm.x86.sse2.psra.w(<8 x i16> %a0, <8 x i16> %a1) ; <<8 x i16>> [#uses=1]
883*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %res
884*9880d681SAndroid Build Coastguard Worker}
885*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.sse2.psra.w(<8 x i16>, <8 x i16>) nounwind readnone
886*9880d681SAndroid Build Coastguard Worker
887*9880d681SAndroid Build Coastguard Worker
888*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test_x86_sse2_psrai_d(<4 x i32> %a0) {
889*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: test_x86_sse2_psrai_d:
890*9880d681SAndroid Build Coastguard Worker; SSE:       ## BB#0:
891*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    psrad $7, %xmm0
892*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    retl
893*9880d681SAndroid Build Coastguard Worker;
894*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test_x86_sse2_psrai_d:
895*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
896*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpsrad $7, %xmm0, %xmm0
897*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retl
898*9880d681SAndroid Build Coastguard Worker  %res = call <4 x i32> @llvm.x86.sse2.psrai.d(<4 x i32> %a0, i32 7) ; <<4 x i32>> [#uses=1]
899*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %res
900*9880d681SAndroid Build Coastguard Worker}
901*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.sse2.psrai.d(<4 x i32>, i32) nounwind readnone
902*9880d681SAndroid Build Coastguard Worker
903*9880d681SAndroid Build Coastguard Worker
904*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_x86_sse2_psrai_w(<8 x i16> %a0) {
905*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: test_x86_sse2_psrai_w:
906*9880d681SAndroid Build Coastguard Worker; SSE:       ## BB#0:
907*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    psraw $7, %xmm0
908*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    retl
909*9880d681SAndroid Build Coastguard Worker;
910*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test_x86_sse2_psrai_w:
911*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
912*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpsraw $7, %xmm0, %xmm0
913*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retl
914*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i16> @llvm.x86.sse2.psrai.w(<8 x i16> %a0, i32 7) ; <<8 x i16>> [#uses=1]
915*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %res
916*9880d681SAndroid Build Coastguard Worker}
917*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.sse2.psrai.w(<8 x i16>, i32) nounwind readnone
918*9880d681SAndroid Build Coastguard Worker
919*9880d681SAndroid Build Coastguard Worker
920*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test_x86_sse2_psrl_d(<4 x i32> %a0, <4 x i32> %a1) {
921*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: test_x86_sse2_psrl_d:
922*9880d681SAndroid Build Coastguard Worker; SSE:       ## BB#0:
923*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    psrld %xmm1, %xmm0
924*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    retl
925*9880d681SAndroid Build Coastguard Worker;
926*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test_x86_sse2_psrl_d:
927*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
928*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpsrld %xmm1, %xmm0, %xmm0
929*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retl
930*9880d681SAndroid Build Coastguard Worker  %res = call <4 x i32> @llvm.x86.sse2.psrl.d(<4 x i32> %a0, <4 x i32> %a1) ; <<4 x i32>> [#uses=1]
931*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %res
932*9880d681SAndroid Build Coastguard Worker}
933*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.sse2.psrl.d(<4 x i32>, <4 x i32>) nounwind readnone
934*9880d681SAndroid Build Coastguard Worker
935*9880d681SAndroid Build Coastguard Worker
936*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_x86_sse2_psrl_q(<2 x i64> %a0, <2 x i64> %a1) {
937*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: test_x86_sse2_psrl_q:
938*9880d681SAndroid Build Coastguard Worker; SSE:       ## BB#0:
939*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    psrlq %xmm1, %xmm0
940*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    retl
941*9880d681SAndroid Build Coastguard Worker;
942*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test_x86_sse2_psrl_q:
943*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
944*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpsrlq %xmm1, %xmm0, %xmm0
945*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retl
946*9880d681SAndroid Build Coastguard Worker  %res = call <2 x i64> @llvm.x86.sse2.psrl.q(<2 x i64> %a0, <2 x i64> %a1) ; <<2 x i64>> [#uses=1]
947*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %res
948*9880d681SAndroid Build Coastguard Worker}
949*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.x86.sse2.psrl.q(<2 x i64>, <2 x i64>) nounwind readnone
950*9880d681SAndroid Build Coastguard Worker
951*9880d681SAndroid Build Coastguard Worker
952*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_x86_sse2_psrl_w(<8 x i16> %a0, <8 x i16> %a1) {
953*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: test_x86_sse2_psrl_w:
954*9880d681SAndroid Build Coastguard Worker; SSE:       ## BB#0:
955*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    psrlw %xmm1, %xmm0
956*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    retl
957*9880d681SAndroid Build Coastguard Worker;
958*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test_x86_sse2_psrl_w:
959*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
960*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpsrlw %xmm1, %xmm0, %xmm0
961*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retl
962*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i16> @llvm.x86.sse2.psrl.w(<8 x i16> %a0, <8 x i16> %a1) ; <<8 x i16>> [#uses=1]
963*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %res
964*9880d681SAndroid Build Coastguard Worker}
965*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.sse2.psrl.w(<8 x i16>, <8 x i16>) nounwind readnone
966*9880d681SAndroid Build Coastguard Worker
967*9880d681SAndroid Build Coastguard Worker
968*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test_x86_sse2_psrli_d(<4 x i32> %a0) {
969*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: test_x86_sse2_psrli_d:
970*9880d681SAndroid Build Coastguard Worker; SSE:       ## BB#0:
971*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    psrld $7, %xmm0
972*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    retl
973*9880d681SAndroid Build Coastguard Worker;
974*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test_x86_sse2_psrli_d:
975*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
976*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpsrld $7, %xmm0, %xmm0
977*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retl
978*9880d681SAndroid Build Coastguard Worker  %res = call <4 x i32> @llvm.x86.sse2.psrli.d(<4 x i32> %a0, i32 7) ; <<4 x i32>> [#uses=1]
979*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %res
980*9880d681SAndroid Build Coastguard Worker}
981*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.sse2.psrli.d(<4 x i32>, i32) nounwind readnone
982*9880d681SAndroid Build Coastguard Worker
983*9880d681SAndroid Build Coastguard Worker
984*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_x86_sse2_psrli_q(<2 x i64> %a0) {
985*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: test_x86_sse2_psrli_q:
986*9880d681SAndroid Build Coastguard Worker; SSE:       ## BB#0:
987*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    psrlq $7, %xmm0
988*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    retl
989*9880d681SAndroid Build Coastguard Worker;
990*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test_x86_sse2_psrli_q:
991*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
992*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpsrlq $7, %xmm0, %xmm0
993*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retl
994*9880d681SAndroid Build Coastguard Worker  %res = call <2 x i64> @llvm.x86.sse2.psrli.q(<2 x i64> %a0, i32 7) ; <<2 x i64>> [#uses=1]
995*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %res
996*9880d681SAndroid Build Coastguard Worker}
997*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.x86.sse2.psrli.q(<2 x i64>, i32) nounwind readnone
998*9880d681SAndroid Build Coastguard Worker
999*9880d681SAndroid Build Coastguard Worker
1000*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_x86_sse2_psrli_w(<8 x i16> %a0) {
1001*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: test_x86_sse2_psrli_w:
1002*9880d681SAndroid Build Coastguard Worker; SSE:       ## BB#0:
1003*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    psrlw $7, %xmm0
1004*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    retl
1005*9880d681SAndroid Build Coastguard Worker;
1006*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test_x86_sse2_psrli_w:
1007*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
1008*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpsrlw $7, %xmm0, %xmm0
1009*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retl
1010*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i16> @llvm.x86.sse2.psrli.w(<8 x i16> %a0, i32 7) ; <<8 x i16>> [#uses=1]
1011*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %res
1012*9880d681SAndroid Build Coastguard Worker}
1013*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.sse2.psrli.w(<8 x i16>, i32) nounwind readnone
1014*9880d681SAndroid Build Coastguard Worker
1015*9880d681SAndroid Build Coastguard Worker
1016*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_x86_sse2_psubs_b(<16 x i8> %a0, <16 x i8> %a1) {
1017*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: test_x86_sse2_psubs_b:
1018*9880d681SAndroid Build Coastguard Worker; SSE:       ## BB#0:
1019*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    psubsb %xmm1, %xmm0
1020*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    retl
1021*9880d681SAndroid Build Coastguard Worker;
1022*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test_x86_sse2_psubs_b:
1023*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
1024*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpsubsb %xmm1, %xmm0, %xmm0
1025*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retl
1026*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i8> @llvm.x86.sse2.psubs.b(<16 x i8> %a0, <16 x i8> %a1) ; <<16 x i8>> [#uses=1]
1027*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %res
1028*9880d681SAndroid Build Coastguard Worker}
1029*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.x86.sse2.psubs.b(<16 x i8>, <16 x i8>) nounwind readnone
1030*9880d681SAndroid Build Coastguard Worker
1031*9880d681SAndroid Build Coastguard Worker
1032*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_x86_sse2_psubs_w(<8 x i16> %a0, <8 x i16> %a1) {
1033*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: test_x86_sse2_psubs_w:
1034*9880d681SAndroid Build Coastguard Worker; SSE:       ## BB#0:
1035*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    psubsw %xmm1, %xmm0
1036*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    retl
1037*9880d681SAndroid Build Coastguard Worker;
1038*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test_x86_sse2_psubs_w:
1039*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
1040*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpsubsw %xmm1, %xmm0, %xmm0
1041*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retl
1042*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i16> @llvm.x86.sse2.psubs.w(<8 x i16> %a0, <8 x i16> %a1) ; <<8 x i16>> [#uses=1]
1043*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %res
1044*9880d681SAndroid Build Coastguard Worker}
1045*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.sse2.psubs.w(<8 x i16>, <8 x i16>) nounwind readnone
1046*9880d681SAndroid Build Coastguard Worker
1047*9880d681SAndroid Build Coastguard Worker
1048*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_x86_sse2_psubus_b(<16 x i8> %a0, <16 x i8> %a1) {
1049*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: test_x86_sse2_psubus_b:
1050*9880d681SAndroid Build Coastguard Worker; SSE:       ## BB#0:
1051*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    psubusb %xmm1, %xmm0
1052*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    retl
1053*9880d681SAndroid Build Coastguard Worker;
1054*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test_x86_sse2_psubus_b:
1055*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
1056*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpsubusb %xmm1, %xmm0, %xmm0
1057*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retl
1058*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i8> @llvm.x86.sse2.psubus.b(<16 x i8> %a0, <16 x i8> %a1) ; <<16 x i8>> [#uses=1]
1059*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %res
1060*9880d681SAndroid Build Coastguard Worker}
1061*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.x86.sse2.psubus.b(<16 x i8>, <16 x i8>) nounwind readnone
1062*9880d681SAndroid Build Coastguard Worker
1063*9880d681SAndroid Build Coastguard Worker
1064*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_x86_sse2_psubus_w(<8 x i16> %a0, <8 x i16> %a1) {
1065*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: test_x86_sse2_psubus_w:
1066*9880d681SAndroid Build Coastguard Worker; SSE:       ## BB#0:
1067*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    psubusw %xmm1, %xmm0
1068*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    retl
1069*9880d681SAndroid Build Coastguard Worker;
1070*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test_x86_sse2_psubus_w:
1071*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
1072*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpsubusw %xmm1, %xmm0, %xmm0
1073*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retl
1074*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i16> @llvm.x86.sse2.psubus.w(<8 x i16> %a0, <8 x i16> %a1) ; <<8 x i16>> [#uses=1]
1075*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %res
1076*9880d681SAndroid Build Coastguard Worker}
1077*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.sse2.psubus.w(<8 x i16>, <8 x i16>) nounwind readnone
1078*9880d681SAndroid Build Coastguard Worker
1079*9880d681SAndroid Build Coastguard Worker
1080*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_x86_sse2_sqrt_pd(<2 x double> %a0) {
1081*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: test_x86_sse2_sqrt_pd:
1082*9880d681SAndroid Build Coastguard Worker; SSE:       ## BB#0:
1083*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    sqrtpd %xmm0, %xmm0
1084*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    retl
1085*9880d681SAndroid Build Coastguard Worker;
1086*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test_x86_sse2_sqrt_pd:
1087*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
1088*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vsqrtpd %xmm0, %xmm0
1089*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retl
1090*9880d681SAndroid Build Coastguard Worker  %res = call <2 x double> @llvm.x86.sse2.sqrt.pd(<2 x double> %a0) ; <<2 x double>> [#uses=1]
1091*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %res
1092*9880d681SAndroid Build Coastguard Worker}
1093*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.sse2.sqrt.pd(<2 x double>) nounwind readnone
1094*9880d681SAndroid Build Coastguard Worker
1095*9880d681SAndroid Build Coastguard Worker
1096*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_x86_sse2_sqrt_sd(<2 x double> %a0) {
1097*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: test_x86_sse2_sqrt_sd:
1098*9880d681SAndroid Build Coastguard Worker; SSE:       ## BB#0:
1099*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    sqrtsd %xmm0, %xmm0
1100*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    retl
1101*9880d681SAndroid Build Coastguard Worker;
1102*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test_x86_sse2_sqrt_sd:
1103*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
1104*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vsqrtsd %xmm0, %xmm0, %xmm0
1105*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retl
1106*9880d681SAndroid Build Coastguard Worker  %res = call <2 x double> @llvm.x86.sse2.sqrt.sd(<2 x double> %a0) ; <<2 x double>> [#uses=1]
1107*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %res
1108*9880d681SAndroid Build Coastguard Worker}
1109*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.sse2.sqrt.sd(<2 x double>) nounwind readnone
1110*9880d681SAndroid Build Coastguard Worker
1111*9880d681SAndroid Build Coastguard Worker
1112*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_x86_sse2_sub_sd(<2 x double> %a0, <2 x double> %a1) {
1113*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: test_x86_sse2_sub_sd:
1114*9880d681SAndroid Build Coastguard Worker; SSE:       ## BB#0:
1115*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    subsd %xmm1, %xmm0
1116*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    retl
1117*9880d681SAndroid Build Coastguard Worker;
1118*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test_x86_sse2_sub_sd:
1119*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
1120*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vsubsd %xmm1, %xmm0, %xmm0
1121*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retl
1122*9880d681SAndroid Build Coastguard Worker  %res = call <2 x double> @llvm.x86.sse2.sub.sd(<2 x double> %a0, <2 x double> %a1) ; <<2 x double>> [#uses=1]
1123*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %res
1124*9880d681SAndroid Build Coastguard Worker}
1125*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.sse2.sub.sd(<2 x double>, <2 x double>) nounwind readnone
1126*9880d681SAndroid Build Coastguard Worker
1127*9880d681SAndroid Build Coastguard Worker
1128*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_sse2_ucomieq_sd(<2 x double> %a0, <2 x double> %a1) {
1129*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: test_x86_sse2_ucomieq_sd:
1130*9880d681SAndroid Build Coastguard Worker; SSE:       ## BB#0:
1131*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    ucomisd %xmm1, %xmm0
1132*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    setnp %al
1133*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    sete %cl
1134*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    andb %al, %cl
1135*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    movzbl %cl, %eax
1136*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    retl
1137*9880d681SAndroid Build Coastguard Worker;
1138*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test_x86_sse2_ucomieq_sd:
1139*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
1140*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vucomisd %xmm1, %xmm0
1141*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    setnp %al
1142*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    sete %cl
1143*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    andb %al, %cl
1144*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    movzbl %cl, %eax
1145*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retl
1146*9880d681SAndroid Build Coastguard Worker  %res = call i32 @llvm.x86.sse2.ucomieq.sd(<2 x double> %a0, <2 x double> %a1) ; <i32> [#uses=1]
1147*9880d681SAndroid Build Coastguard Worker  ret i32 %res
1148*9880d681SAndroid Build Coastguard Worker}
1149*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse2.ucomieq.sd(<2 x double>, <2 x double>) nounwind readnone
1150*9880d681SAndroid Build Coastguard Worker
1151*9880d681SAndroid Build Coastguard Worker
1152*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_sse2_ucomige_sd(<2 x double> %a0, <2 x double> %a1) {
1153*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: test_x86_sse2_ucomige_sd:
1154*9880d681SAndroid Build Coastguard Worker; SSE:       ## BB#0:
1155*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    xorl %eax, %eax
1156*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    ucomisd %xmm1, %xmm0
1157*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    setae %al
1158*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    retl
1159*9880d681SAndroid Build Coastguard Worker;
1160*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test_x86_sse2_ucomige_sd:
1161*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
1162*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    xorl %eax, %eax
1163*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vucomisd %xmm1, %xmm0
1164*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    setae %al
1165*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retl
1166*9880d681SAndroid Build Coastguard Worker  %res = call i32 @llvm.x86.sse2.ucomige.sd(<2 x double> %a0, <2 x double> %a1) ; <i32> [#uses=1]
1167*9880d681SAndroid Build Coastguard Worker  ret i32 %res
1168*9880d681SAndroid Build Coastguard Worker}
1169*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse2.ucomige.sd(<2 x double>, <2 x double>) nounwind readnone
1170*9880d681SAndroid Build Coastguard Worker
1171*9880d681SAndroid Build Coastguard Worker
1172*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_sse2_ucomigt_sd(<2 x double> %a0, <2 x double> %a1) {
1173*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: test_x86_sse2_ucomigt_sd:
1174*9880d681SAndroid Build Coastguard Worker; SSE:       ## BB#0:
1175*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    xorl %eax, %eax
1176*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    ucomisd %xmm1, %xmm0
1177*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    seta %al
1178*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    retl
1179*9880d681SAndroid Build Coastguard Worker;
1180*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test_x86_sse2_ucomigt_sd:
1181*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
1182*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    xorl %eax, %eax
1183*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vucomisd %xmm1, %xmm0
1184*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    seta %al
1185*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retl
1186*9880d681SAndroid Build Coastguard Worker  %res = call i32 @llvm.x86.sse2.ucomigt.sd(<2 x double> %a0, <2 x double> %a1) ; <i32> [#uses=1]
1187*9880d681SAndroid Build Coastguard Worker  ret i32 %res
1188*9880d681SAndroid Build Coastguard Worker}
1189*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse2.ucomigt.sd(<2 x double>, <2 x double>) nounwind readnone
1190*9880d681SAndroid Build Coastguard Worker
1191*9880d681SAndroid Build Coastguard Worker
1192*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_sse2_ucomile_sd(<2 x double> %a0, <2 x double> %a1) {
1193*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: test_x86_sse2_ucomile_sd:
1194*9880d681SAndroid Build Coastguard Worker; SSE:       ## BB#0:
1195*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    xorl %eax, %eax
1196*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    ucomisd %xmm0, %xmm1
1197*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    setae %al
1198*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    retl
1199*9880d681SAndroid Build Coastguard Worker;
1200*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test_x86_sse2_ucomile_sd:
1201*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
1202*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    xorl %eax, %eax
1203*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vucomisd %xmm0, %xmm1
1204*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    setae %al
1205*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retl
1206*9880d681SAndroid Build Coastguard Worker  %res = call i32 @llvm.x86.sse2.ucomile.sd(<2 x double> %a0, <2 x double> %a1) ; <i32> [#uses=1]
1207*9880d681SAndroid Build Coastguard Worker  ret i32 %res
1208*9880d681SAndroid Build Coastguard Worker}
1209*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse2.ucomile.sd(<2 x double>, <2 x double>) nounwind readnone
1210*9880d681SAndroid Build Coastguard Worker
1211*9880d681SAndroid Build Coastguard Worker
1212*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_sse2_ucomilt_sd(<2 x double> %a0, <2 x double> %a1) {
1213*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: test_x86_sse2_ucomilt_sd:
1214*9880d681SAndroid Build Coastguard Worker; SSE:       ## BB#0:
1215*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    xorl %eax, %eax
1216*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    ucomisd %xmm0, %xmm1
1217*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    seta %al
1218*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    retl
1219*9880d681SAndroid Build Coastguard Worker;
1220*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test_x86_sse2_ucomilt_sd:
1221*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
1222*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    xorl %eax, %eax
1223*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vucomisd %xmm0, %xmm1
1224*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    seta %al
1225*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retl
1226*9880d681SAndroid Build Coastguard Worker  %res = call i32 @llvm.x86.sse2.ucomilt.sd(<2 x double> %a0, <2 x double> %a1) ; <i32> [#uses=1]
1227*9880d681SAndroid Build Coastguard Worker  ret i32 %res
1228*9880d681SAndroid Build Coastguard Worker}
1229*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse2.ucomilt.sd(<2 x double>, <2 x double>) nounwind readnone
1230*9880d681SAndroid Build Coastguard Worker
1231*9880d681SAndroid Build Coastguard Worker
1232*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_sse2_ucomineq_sd(<2 x double> %a0, <2 x double> %a1) {
1233*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: test_x86_sse2_ucomineq_sd:
1234*9880d681SAndroid Build Coastguard Worker; SSE:       ## BB#0:
1235*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    ucomisd %xmm1, %xmm0
1236*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    setp %al
1237*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    setne %cl
1238*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    orb %al, %cl
1239*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    movzbl %cl, %eax
1240*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    retl
1241*9880d681SAndroid Build Coastguard Worker;
1242*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test_x86_sse2_ucomineq_sd:
1243*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
1244*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vucomisd %xmm1, %xmm0
1245*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    setp %al
1246*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    setne %cl
1247*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    orb %al, %cl
1248*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    movzbl %cl, %eax
1249*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retl
1250*9880d681SAndroid Build Coastguard Worker  %res = call i32 @llvm.x86.sse2.ucomineq.sd(<2 x double> %a0, <2 x double> %a1) ; <i32> [#uses=1]
1251*9880d681SAndroid Build Coastguard Worker  ret i32 %res
1252*9880d681SAndroid Build Coastguard Worker}
1253*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse2.ucomineq.sd(<2 x double>, <2 x double>) nounwind readnone
1254*9880d681SAndroid Build Coastguard Worker
1255*9880d681SAndroid Build Coastguard Workerdefine void @test_x86_sse2_pause() {
1256*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: test_x86_sse2_pause:
1257*9880d681SAndroid Build Coastguard Worker; SSE:       ## BB#0:
1258*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    pause
1259*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    retl
1260*9880d681SAndroid Build Coastguard Worker;
1261*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test_x86_sse2_pause:
1262*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
1263*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    pause
1264*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retl
1265*9880d681SAndroid Build Coastguard Worker  tail call void @llvm.x86.sse2.pause()
1266*9880d681SAndroid Build Coastguard Worker  ret void
1267*9880d681SAndroid Build Coastguard Worker}
1268*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.x86.sse2.pause() nounwind
1269