xref: /aosp_15_r20/external/llvm/test/CodeGen/X86/sse-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,+sse | 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 <4 x float> @test_x86_sse_add_ss(<4 x float> %a0, <4 x float> %a1) {
6*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: test_x86_sse_add_ss:
7*9880d681SAndroid Build Coastguard Worker; SSE:       ## BB#0:
8*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    addss %xmm1, %xmm0
9*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    retl
10*9880d681SAndroid Build Coastguard Worker;
11*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test_x86_sse_add_ss:
12*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
13*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vaddss %xmm1, %xmm0, %xmm0
14*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retl
15*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.sse.add.ss(<4 x float> %a0, <4 x float> %a1) ; <<4 x float>> [#uses=1]
16*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res
17*9880d681SAndroid Build Coastguard Worker}
18*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.sse.add.ss(<4 x float>, <4 x float>) nounwind readnone
19*9880d681SAndroid Build Coastguard Worker
20*9880d681SAndroid Build Coastguard Worker
21*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_x86_sse_cmp_ps(<4 x float> %a0, <4 x float> %a1) {
22*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: test_x86_sse_cmp_ps:
23*9880d681SAndroid Build Coastguard Worker; SSE:       ## BB#0:
24*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    cmpordps %xmm1, %xmm0
25*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    retl
26*9880d681SAndroid Build Coastguard Worker;
27*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test_x86_sse_cmp_ps:
28*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
29*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vcmpordps %xmm1, %xmm0, %xmm0
30*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retl
31*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.sse.cmp.ps(<4 x float> %a0, <4 x float> %a1, i8 7) ; <<4 x float>> [#uses=1]
32*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res
33*9880d681SAndroid Build Coastguard Worker}
34*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.sse.cmp.ps(<4 x float>, <4 x float>, i8) nounwind readnone
35*9880d681SAndroid Build Coastguard Worker
36*9880d681SAndroid Build Coastguard Worker
37*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_x86_sse_cmp_ss(<4 x float> %a0, <4 x float> %a1) {
38*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: test_x86_sse_cmp_ss:
39*9880d681SAndroid Build Coastguard Worker; SSE:       ## BB#0:
40*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    cmpordss %xmm1, %xmm0
41*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    retl
42*9880d681SAndroid Build Coastguard Worker;
43*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test_x86_sse_cmp_ss:
44*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
45*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vcmpordss %xmm1, %xmm0, %xmm0
46*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retl
47*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.sse.cmp.ss(<4 x float> %a0, <4 x float> %a1, i8 7) ; <<4 x float>> [#uses=1]
48*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res
49*9880d681SAndroid Build Coastguard Worker}
50*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.sse.cmp.ss(<4 x float>, <4 x float>, i8) nounwind readnone
51*9880d681SAndroid Build Coastguard Worker
52*9880d681SAndroid Build Coastguard Worker
53*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_sse_comieq_ss(<4 x float> %a0, <4 x float> %a1) {
54*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: test_x86_sse_comieq_ss:
55*9880d681SAndroid Build Coastguard Worker; SSE:       ## BB#0:
56*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    comiss %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_sse_comieq_ss:
64*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
65*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vcomiss %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.sse.comieq.ss(<4 x float> %a0, <4 x float> %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.sse.comieq.ss(<4 x float>, <4 x float>) nounwind readnone
75*9880d681SAndroid Build Coastguard Worker
76*9880d681SAndroid Build Coastguard Worker
77*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_sse_comige_ss(<4 x float> %a0, <4 x float> %a1) {
78*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: test_x86_sse_comige_ss:
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:    comiss %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_sse_comige_ss:
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:    vcomiss %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.sse.comige.ss(<4 x float> %a0, <4 x float> %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.sse.comige.ss(<4 x float>, <4 x float>) nounwind readnone
95*9880d681SAndroid Build Coastguard Worker
96*9880d681SAndroid Build Coastguard Worker
97*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_sse_comigt_ss(<4 x float> %a0, <4 x float> %a1) {
98*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: test_x86_sse_comigt_ss:
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:    comiss %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_sse_comigt_ss:
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:    vcomiss %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.sse.comigt.ss(<4 x float> %a0, <4 x float> %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.sse.comigt.ss(<4 x float>, <4 x float>) nounwind readnone
115*9880d681SAndroid Build Coastguard Worker
116*9880d681SAndroid Build Coastguard Worker
117*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_sse_comile_ss(<4 x float> %a0, <4 x float> %a1) {
118*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: test_x86_sse_comile_ss:
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:    comiss %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_sse_comile_ss:
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:    vcomiss %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.sse.comile.ss(<4 x float> %a0, <4 x float> %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.sse.comile.ss(<4 x float>, <4 x float>) nounwind readnone
135*9880d681SAndroid Build Coastguard Worker
136*9880d681SAndroid Build Coastguard Worker
137*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_sse_comilt_ss(<4 x float> %a0, <4 x float> %a1) {
138*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: test_x86_sse_comilt_ss:
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:    comiss %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_sse_comilt_ss:
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:    vcomiss %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.sse.comilt.ss(<4 x float> %a0, <4 x float> %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.sse.comilt.ss(<4 x float>, <4 x float>) nounwind readnone
155*9880d681SAndroid Build Coastguard Worker
156*9880d681SAndroid Build Coastguard Worker
157*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_sse_comineq_ss(<4 x float> %a0, <4 x float> %a1) {
158*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: test_x86_sse_comineq_ss:
159*9880d681SAndroid Build Coastguard Worker; SSE:       ## BB#0:
160*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    comiss %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_sse_comineq_ss:
168*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
169*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vcomiss %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.sse.comineq.ss(<4 x float> %a0, <4 x float> %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.sse.comineq.ss(<4 x float>, <4 x float>) nounwind readnone
179*9880d681SAndroid Build Coastguard Worker
180*9880d681SAndroid Build Coastguard Worker
181*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_x86_sse_cvtsi2ss(<4 x float> %a0) {
182*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: test_x86_sse_cvtsi2ss:
183*9880d681SAndroid Build Coastguard Worker; SSE:       ## BB#0:
184*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    movl $7, %eax
185*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    cvtsi2ssl %eax, %xmm0
186*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    retl
187*9880d681SAndroid Build Coastguard Worker;
188*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test_x86_sse_cvtsi2ss:
189*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
190*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    movl $7, %eax
191*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vcvtsi2ssl %eax, %xmm0, %xmm0
192*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retl
193*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.sse.cvtsi2ss(<4 x float> %a0, i32 7) ; <<4 x float>> [#uses=1]
194*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res
195*9880d681SAndroid Build Coastguard Worker}
196*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.sse.cvtsi2ss(<4 x float>, i32) nounwind readnone
197*9880d681SAndroid Build Coastguard Worker
198*9880d681SAndroid Build Coastguard Worker
199*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_sse_cvtss2si(<4 x float> %a0) {
200*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: test_x86_sse_cvtss2si:
201*9880d681SAndroid Build Coastguard Worker; SSE:       ## BB#0:
202*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    cvtss2si %xmm0, %eax
203*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    retl
204*9880d681SAndroid Build Coastguard Worker;
205*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test_x86_sse_cvtss2si:
206*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
207*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vcvtss2si %xmm0, %eax
208*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retl
209*9880d681SAndroid Build Coastguard Worker  %res = call i32 @llvm.x86.sse.cvtss2si(<4 x float> %a0) ; <i32> [#uses=1]
210*9880d681SAndroid Build Coastguard Worker  ret i32 %res
211*9880d681SAndroid Build Coastguard Worker}
212*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse.cvtss2si(<4 x float>) nounwind readnone
213*9880d681SAndroid Build Coastguard Worker
214*9880d681SAndroid Build Coastguard Worker
215*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_sse_cvttss2si(<4 x float> %a0) {
216*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: test_x86_sse_cvttss2si:
217*9880d681SAndroid Build Coastguard Worker; SSE:       ## BB#0:
218*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    cvttss2si %xmm0, %eax
219*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    retl
220*9880d681SAndroid Build Coastguard Worker;
221*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test_x86_sse_cvttss2si:
222*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
223*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vcvttss2si %xmm0, %eax
224*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retl
225*9880d681SAndroid Build Coastguard Worker  %res = call i32 @llvm.x86.sse.cvttss2si(<4 x float> %a0) ; <i32> [#uses=1]
226*9880d681SAndroid Build Coastguard Worker  ret i32 %res
227*9880d681SAndroid Build Coastguard Worker}
228*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse.cvttss2si(<4 x float>) nounwind readnone
229*9880d681SAndroid Build Coastguard Worker
230*9880d681SAndroid Build Coastguard Worker
231*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_x86_sse_div_ss(<4 x float> %a0, <4 x float> %a1) {
232*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: test_x86_sse_div_ss:
233*9880d681SAndroid Build Coastguard Worker; SSE:       ## BB#0:
234*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    divss %xmm1, %xmm0
235*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    retl
236*9880d681SAndroid Build Coastguard Worker;
237*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test_x86_sse_div_ss:
238*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
239*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vdivss %xmm1, %xmm0, %xmm0
240*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retl
241*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.sse.div.ss(<4 x float> %a0, <4 x float> %a1) ; <<4 x float>> [#uses=1]
242*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res
243*9880d681SAndroid Build Coastguard Worker}
244*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.sse.div.ss(<4 x float>, <4 x float>) nounwind readnone
245*9880d681SAndroid Build Coastguard Worker
246*9880d681SAndroid Build Coastguard Worker
247*9880d681SAndroid Build Coastguard Workerdefine void @test_x86_sse_ldmxcsr(i8* %a0) {
248*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: test_x86_sse_ldmxcsr:
249*9880d681SAndroid Build Coastguard Worker; SSE:       ## BB#0:
250*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    movl {{[0-9]+}}(%esp), %eax
251*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    ldmxcsr (%eax)
252*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    retl
253*9880d681SAndroid Build Coastguard Worker;
254*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test_x86_sse_ldmxcsr:
255*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
256*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    movl {{[0-9]+}}(%esp), %eax
257*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vldmxcsr (%eax)
258*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retl
259*9880d681SAndroid Build Coastguard Worker  call void @llvm.x86.sse.ldmxcsr(i8* %a0)
260*9880d681SAndroid Build Coastguard Worker  ret void
261*9880d681SAndroid Build Coastguard Worker}
262*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.x86.sse.ldmxcsr(i8*) nounwind
263*9880d681SAndroid Build Coastguard Worker
264*9880d681SAndroid Build Coastguard Worker
265*9880d681SAndroid Build Coastguard Worker
266*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_x86_sse_max_ps(<4 x float> %a0, <4 x float> %a1) {
267*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: test_x86_sse_max_ps:
268*9880d681SAndroid Build Coastguard Worker; SSE:       ## BB#0:
269*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    maxps %xmm1, %xmm0
270*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    retl
271*9880d681SAndroid Build Coastguard Worker;
272*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test_x86_sse_max_ps:
273*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
274*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vmaxps %xmm1, %xmm0, %xmm0
275*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retl
276*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.sse.max.ps(<4 x float> %a0, <4 x float> %a1) ; <<4 x float>> [#uses=1]
277*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res
278*9880d681SAndroid Build Coastguard Worker}
279*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.sse.max.ps(<4 x float>, <4 x float>) nounwind readnone
280*9880d681SAndroid Build Coastguard Worker
281*9880d681SAndroid Build Coastguard Worker
282*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_x86_sse_max_ss(<4 x float> %a0, <4 x float> %a1) {
283*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: test_x86_sse_max_ss:
284*9880d681SAndroid Build Coastguard Worker; SSE:       ## BB#0:
285*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    maxss %xmm1, %xmm0
286*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    retl
287*9880d681SAndroid Build Coastguard Worker;
288*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test_x86_sse_max_ss:
289*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
290*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vmaxss %xmm1, %xmm0, %xmm0
291*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retl
292*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.sse.max.ss(<4 x float> %a0, <4 x float> %a1) ; <<4 x float>> [#uses=1]
293*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res
294*9880d681SAndroid Build Coastguard Worker}
295*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.sse.max.ss(<4 x float>, <4 x float>) nounwind readnone
296*9880d681SAndroid Build Coastguard Worker
297*9880d681SAndroid Build Coastguard Worker
298*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_x86_sse_min_ps(<4 x float> %a0, <4 x float> %a1) {
299*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: test_x86_sse_min_ps:
300*9880d681SAndroid Build Coastguard Worker; SSE:       ## BB#0:
301*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    minps %xmm1, %xmm0
302*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    retl
303*9880d681SAndroid Build Coastguard Worker;
304*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test_x86_sse_min_ps:
305*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
306*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vminps %xmm1, %xmm0, %xmm0
307*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retl
308*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.sse.min.ps(<4 x float> %a0, <4 x float> %a1) ; <<4 x float>> [#uses=1]
309*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res
310*9880d681SAndroid Build Coastguard Worker}
311*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.sse.min.ps(<4 x float>, <4 x float>) nounwind readnone
312*9880d681SAndroid Build Coastguard Worker
313*9880d681SAndroid Build Coastguard Worker
314*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_x86_sse_min_ss(<4 x float> %a0, <4 x float> %a1) {
315*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: test_x86_sse_min_ss:
316*9880d681SAndroid Build Coastguard Worker; SSE:       ## BB#0:
317*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    minss %xmm1, %xmm0
318*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    retl
319*9880d681SAndroid Build Coastguard Worker;
320*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test_x86_sse_min_ss:
321*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
322*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vminss %xmm1, %xmm0, %xmm0
323*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retl
324*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.sse.min.ss(<4 x float> %a0, <4 x float> %a1) ; <<4 x float>> [#uses=1]
325*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res
326*9880d681SAndroid Build Coastguard Worker}
327*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.sse.min.ss(<4 x float>, <4 x float>) nounwind readnone
328*9880d681SAndroid Build Coastguard Worker
329*9880d681SAndroid Build Coastguard Worker
330*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_sse_movmsk_ps(<4 x float> %a0) {
331*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: test_x86_sse_movmsk_ps:
332*9880d681SAndroid Build Coastguard Worker; SSE:       ## BB#0:
333*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    movmskps %xmm0, %eax
334*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    retl
335*9880d681SAndroid Build Coastguard Worker;
336*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test_x86_sse_movmsk_ps:
337*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
338*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vmovmskps %xmm0, %eax
339*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retl
340*9880d681SAndroid Build Coastguard Worker  %res = call i32 @llvm.x86.sse.movmsk.ps(<4 x float> %a0) ; <i32> [#uses=1]
341*9880d681SAndroid Build Coastguard Worker  ret i32 %res
342*9880d681SAndroid Build Coastguard Worker}
343*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse.movmsk.ps(<4 x float>) nounwind readnone
344*9880d681SAndroid Build Coastguard Worker
345*9880d681SAndroid Build Coastguard Worker
346*9880d681SAndroid Build Coastguard Worker
347*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_x86_sse_mul_ss(<4 x float> %a0, <4 x float> %a1) {
348*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: test_x86_sse_mul_ss:
349*9880d681SAndroid Build Coastguard Worker; SSE:       ## BB#0:
350*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    mulss %xmm1, %xmm0
351*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    retl
352*9880d681SAndroid Build Coastguard Worker;
353*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test_x86_sse_mul_ss:
354*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
355*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vmulss %xmm1, %xmm0, %xmm0
356*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retl
357*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.sse.mul.ss(<4 x float> %a0, <4 x float> %a1) ; <<4 x float>> [#uses=1]
358*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res
359*9880d681SAndroid Build Coastguard Worker}
360*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.sse.mul.ss(<4 x float>, <4 x float>) nounwind readnone
361*9880d681SAndroid Build Coastguard Worker
362*9880d681SAndroid Build Coastguard Worker
363*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_x86_sse_rcp_ps(<4 x float> %a0) {
364*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: test_x86_sse_rcp_ps:
365*9880d681SAndroid Build Coastguard Worker; SSE:       ## BB#0:
366*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    rcpps %xmm0, %xmm0
367*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    retl
368*9880d681SAndroid Build Coastguard Worker;
369*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test_x86_sse_rcp_ps:
370*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
371*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vrcpps %xmm0, %xmm0
372*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retl
373*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.sse.rcp.ps(<4 x float> %a0) ; <<4 x float>> [#uses=1]
374*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res
375*9880d681SAndroid Build Coastguard Worker}
376*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.sse.rcp.ps(<4 x float>) nounwind readnone
377*9880d681SAndroid Build Coastguard Worker
378*9880d681SAndroid Build Coastguard Worker
379*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_x86_sse_rcp_ss(<4 x float> %a0) {
380*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: test_x86_sse_rcp_ss:
381*9880d681SAndroid Build Coastguard Worker; SSE:       ## BB#0:
382*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    rcpss %xmm0, %xmm0
383*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    retl
384*9880d681SAndroid Build Coastguard Worker;
385*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test_x86_sse_rcp_ss:
386*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
387*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vrcpss %xmm0, %xmm0, %xmm0
388*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retl
389*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.sse.rcp.ss(<4 x float> %a0) ; <<4 x float>> [#uses=1]
390*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res
391*9880d681SAndroid Build Coastguard Worker}
392*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.sse.rcp.ss(<4 x float>) nounwind readnone
393*9880d681SAndroid Build Coastguard Worker
394*9880d681SAndroid Build Coastguard Worker
395*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_x86_sse_rsqrt_ps(<4 x float> %a0) {
396*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: test_x86_sse_rsqrt_ps:
397*9880d681SAndroid Build Coastguard Worker; SSE:       ## BB#0:
398*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    rsqrtps %xmm0, %xmm0
399*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    retl
400*9880d681SAndroid Build Coastguard Worker;
401*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test_x86_sse_rsqrt_ps:
402*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
403*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vrsqrtps %xmm0, %xmm0
404*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retl
405*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.sse.rsqrt.ps(<4 x float> %a0) ; <<4 x float>> [#uses=1]
406*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res
407*9880d681SAndroid Build Coastguard Worker}
408*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.sse.rsqrt.ps(<4 x float>) nounwind readnone
409*9880d681SAndroid Build Coastguard Worker
410*9880d681SAndroid Build Coastguard Worker
411*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_x86_sse_rsqrt_ss(<4 x float> %a0) {
412*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: test_x86_sse_rsqrt_ss:
413*9880d681SAndroid Build Coastguard Worker; SSE:       ## BB#0:
414*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    rsqrtss %xmm0, %xmm0
415*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    retl
416*9880d681SAndroid Build Coastguard Worker;
417*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test_x86_sse_rsqrt_ss:
418*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
419*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vrsqrtss %xmm0, %xmm0, %xmm0
420*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retl
421*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.sse.rsqrt.ss(<4 x float> %a0) ; <<4 x float>> [#uses=1]
422*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res
423*9880d681SAndroid Build Coastguard Worker}
424*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.sse.rsqrt.ss(<4 x float>) nounwind readnone
425*9880d681SAndroid Build Coastguard Worker
426*9880d681SAndroid Build Coastguard Worker
427*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_x86_sse_sqrt_ps(<4 x float> %a0) {
428*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: test_x86_sse_sqrt_ps:
429*9880d681SAndroid Build Coastguard Worker; SSE:       ## BB#0:
430*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    sqrtps %xmm0, %xmm0
431*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    retl
432*9880d681SAndroid Build Coastguard Worker;
433*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test_x86_sse_sqrt_ps:
434*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
435*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vsqrtps %xmm0, %xmm0
436*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retl
437*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.sse.sqrt.ps(<4 x float> %a0) ; <<4 x float>> [#uses=1]
438*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res
439*9880d681SAndroid Build Coastguard Worker}
440*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.sse.sqrt.ps(<4 x float>) nounwind readnone
441*9880d681SAndroid Build Coastguard Worker
442*9880d681SAndroid Build Coastguard Worker
443*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_x86_sse_sqrt_ss(<4 x float> %a0) {
444*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: test_x86_sse_sqrt_ss:
445*9880d681SAndroid Build Coastguard Worker; SSE:       ## BB#0:
446*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    sqrtss %xmm0, %xmm0
447*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    retl
448*9880d681SAndroid Build Coastguard Worker;
449*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test_x86_sse_sqrt_ss:
450*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
451*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vsqrtss %xmm0, %xmm0, %xmm0
452*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retl
453*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.sse.sqrt.ss(<4 x float> %a0) ; <<4 x float>> [#uses=1]
454*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res
455*9880d681SAndroid Build Coastguard Worker}
456*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.sse.sqrt.ss(<4 x float>) nounwind readnone
457*9880d681SAndroid Build Coastguard Worker
458*9880d681SAndroid Build Coastguard Worker
459*9880d681SAndroid Build Coastguard Workerdefine void @test_x86_sse_stmxcsr(i8* %a0) {
460*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: test_x86_sse_stmxcsr:
461*9880d681SAndroid Build Coastguard Worker; SSE:       ## BB#0:
462*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    movl {{[0-9]+}}(%esp), %eax
463*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    stmxcsr (%eax)
464*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    retl
465*9880d681SAndroid Build Coastguard Worker;
466*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test_x86_sse_stmxcsr:
467*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
468*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    movl {{[0-9]+}}(%esp), %eax
469*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vstmxcsr (%eax)
470*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retl
471*9880d681SAndroid Build Coastguard Worker  call void @llvm.x86.sse.stmxcsr(i8* %a0)
472*9880d681SAndroid Build Coastguard Worker  ret void
473*9880d681SAndroid Build Coastguard Worker}
474*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.x86.sse.stmxcsr(i8*) nounwind
475*9880d681SAndroid Build Coastguard Worker
476*9880d681SAndroid Build Coastguard Worker
477*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_x86_sse_sub_ss(<4 x float> %a0, <4 x float> %a1) {
478*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: test_x86_sse_sub_ss:
479*9880d681SAndroid Build Coastguard Worker; SSE:       ## BB#0:
480*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    subss %xmm1, %xmm0
481*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    retl
482*9880d681SAndroid Build Coastguard Worker;
483*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test_x86_sse_sub_ss:
484*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
485*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vsubss %xmm1, %xmm0, %xmm0
486*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retl
487*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.sse.sub.ss(<4 x float> %a0, <4 x float> %a1) ; <<4 x float>> [#uses=1]
488*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res
489*9880d681SAndroid Build Coastguard Worker}
490*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.sse.sub.ss(<4 x float>, <4 x float>) nounwind readnone
491*9880d681SAndroid Build Coastguard Worker
492*9880d681SAndroid Build Coastguard Worker
493*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_sse_ucomieq_ss(<4 x float> %a0, <4 x float> %a1) {
494*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: test_x86_sse_ucomieq_ss:
495*9880d681SAndroid Build Coastguard Worker; SSE:       ## BB#0:
496*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    ucomiss %xmm1, %xmm0
497*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    setnp %al
498*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    sete %cl
499*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    andb %al, %cl
500*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    movzbl %cl, %eax
501*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    retl
502*9880d681SAndroid Build Coastguard Worker;
503*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test_x86_sse_ucomieq_ss:
504*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
505*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vucomiss %xmm1, %xmm0
506*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    setnp %al
507*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    sete %cl
508*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    andb %al, %cl
509*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    movzbl %cl, %eax
510*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retl
511*9880d681SAndroid Build Coastguard Worker  %res = call i32 @llvm.x86.sse.ucomieq.ss(<4 x float> %a0, <4 x float> %a1) ; <i32> [#uses=1]
512*9880d681SAndroid Build Coastguard Worker  ret i32 %res
513*9880d681SAndroid Build Coastguard Worker}
514*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse.ucomieq.ss(<4 x float>, <4 x float>) nounwind readnone
515*9880d681SAndroid Build Coastguard Worker
516*9880d681SAndroid Build Coastguard Worker
517*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_sse_ucomige_ss(<4 x float> %a0, <4 x float> %a1) {
518*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: test_x86_sse_ucomige_ss:
519*9880d681SAndroid Build Coastguard Worker; SSE:       ## BB#0:
520*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    xorl %eax, %eax
521*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    ucomiss %xmm1, %xmm0
522*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    setae %al
523*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    retl
524*9880d681SAndroid Build Coastguard Worker;
525*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test_x86_sse_ucomige_ss:
526*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
527*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    xorl %eax, %eax
528*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vucomiss %xmm1, %xmm0
529*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    setae %al
530*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retl
531*9880d681SAndroid Build Coastguard Worker  %res = call i32 @llvm.x86.sse.ucomige.ss(<4 x float> %a0, <4 x float> %a1) ; <i32> [#uses=1]
532*9880d681SAndroid Build Coastguard Worker  ret i32 %res
533*9880d681SAndroid Build Coastguard Worker}
534*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse.ucomige.ss(<4 x float>, <4 x float>) nounwind readnone
535*9880d681SAndroid Build Coastguard Worker
536*9880d681SAndroid Build Coastguard Worker
537*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_sse_ucomigt_ss(<4 x float> %a0, <4 x float> %a1) {
538*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: test_x86_sse_ucomigt_ss:
539*9880d681SAndroid Build Coastguard Worker; SSE:       ## BB#0:
540*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    xorl %eax, %eax
541*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    ucomiss %xmm1, %xmm0
542*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    seta %al
543*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    retl
544*9880d681SAndroid Build Coastguard Worker;
545*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test_x86_sse_ucomigt_ss:
546*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
547*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    xorl %eax, %eax
548*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vucomiss %xmm1, %xmm0
549*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    seta %al
550*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retl
551*9880d681SAndroid Build Coastguard Worker  %res = call i32 @llvm.x86.sse.ucomigt.ss(<4 x float> %a0, <4 x float> %a1) ; <i32> [#uses=1]
552*9880d681SAndroid Build Coastguard Worker  ret i32 %res
553*9880d681SAndroid Build Coastguard Worker}
554*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse.ucomigt.ss(<4 x float>, <4 x float>) nounwind readnone
555*9880d681SAndroid Build Coastguard Worker
556*9880d681SAndroid Build Coastguard Worker
557*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_sse_ucomile_ss(<4 x float> %a0, <4 x float> %a1) {
558*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: test_x86_sse_ucomile_ss:
559*9880d681SAndroid Build Coastguard Worker; SSE:       ## BB#0:
560*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    xorl %eax, %eax
561*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    ucomiss %xmm0, %xmm1
562*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    setae %al
563*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    retl
564*9880d681SAndroid Build Coastguard Worker;
565*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test_x86_sse_ucomile_ss:
566*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
567*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    xorl %eax, %eax
568*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vucomiss %xmm0, %xmm1
569*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    setae %al
570*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retl
571*9880d681SAndroid Build Coastguard Worker  %res = call i32 @llvm.x86.sse.ucomile.ss(<4 x float> %a0, <4 x float> %a1) ; <i32> [#uses=1]
572*9880d681SAndroid Build Coastguard Worker  ret i32 %res
573*9880d681SAndroid Build Coastguard Worker}
574*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse.ucomile.ss(<4 x float>, <4 x float>) nounwind readnone
575*9880d681SAndroid Build Coastguard Worker
576*9880d681SAndroid Build Coastguard Worker
577*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_sse_ucomilt_ss(<4 x float> %a0, <4 x float> %a1) {
578*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: test_x86_sse_ucomilt_ss:
579*9880d681SAndroid Build Coastguard Worker; SSE:       ## BB#0:
580*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    xorl %eax, %eax
581*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    ucomiss %xmm0, %xmm1
582*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    seta %al
583*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    retl
584*9880d681SAndroid Build Coastguard Worker;
585*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test_x86_sse_ucomilt_ss:
586*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
587*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    xorl %eax, %eax
588*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vucomiss %xmm0, %xmm1
589*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    seta %al
590*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retl
591*9880d681SAndroid Build Coastguard Worker  %res = call i32 @llvm.x86.sse.ucomilt.ss(<4 x float> %a0, <4 x float> %a1) ; <i32> [#uses=1]
592*9880d681SAndroid Build Coastguard Worker  ret i32 %res
593*9880d681SAndroid Build Coastguard Worker}
594*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse.ucomilt.ss(<4 x float>, <4 x float>) nounwind readnone
595*9880d681SAndroid Build Coastguard Worker
596*9880d681SAndroid Build Coastguard Worker
597*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_sse_ucomineq_ss(<4 x float> %a0, <4 x float> %a1) {
598*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: test_x86_sse_ucomineq_ss:
599*9880d681SAndroid Build Coastguard Worker; SSE:       ## BB#0:
600*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    ucomiss %xmm1, %xmm0
601*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    setp %al
602*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    setne %cl
603*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    orb %al, %cl
604*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    movzbl %cl, %eax
605*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    retl
606*9880d681SAndroid Build Coastguard Worker;
607*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test_x86_sse_ucomineq_ss:
608*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
609*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vucomiss %xmm1, %xmm0
610*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    setp %al
611*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    setne %cl
612*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    orb %al, %cl
613*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    movzbl %cl, %eax
614*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retl
615*9880d681SAndroid Build Coastguard Worker  %res = call i32 @llvm.x86.sse.ucomineq.ss(<4 x float> %a0, <4 x float> %a1) ; <i32> [#uses=1]
616*9880d681SAndroid Build Coastguard Worker  ret i32 %res
617*9880d681SAndroid Build Coastguard Worker}
618*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse.ucomineq.ss(<4 x float>, <4 x float>) nounwind readnone
619