xref: /llvm-project/llvm/test/CodeGen/LoongArch/ir-instruction/select-fpcc-int.ll (revision ed078c48f0d7b499a4565d4da2dde22a4dbf19d9)
1*ed078c48SWANG Xuerui; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2709e4ad0SWeining Lu; RUN: llc --mtriple=loongarch32 --mattr=+d < %s | FileCheck %s --check-prefix=LA32
3709e4ad0SWeining Lu; RUN: llc --mtriple=loongarch64 --mattr=+d < %s | FileCheck %s --check-prefix=LA64
4709e4ad0SWeining Lu
5709e4ad0SWeining Lu;; Test integers selection after `fcmp`
6709e4ad0SWeining Lu
7709e4ad0SWeining Ludefine i32 @f32_fcmp_false(float %a, float %b, i32 %x, i32 %y) {
8709e4ad0SWeining Lu; LA32-LABEL: f32_fcmp_false:
9709e4ad0SWeining Lu; LA32:       # %bb.0:
10709e4ad0SWeining Lu; LA32-NEXT:    move $a0, $a1
11*ed078c48SWANG Xuerui; LA32-NEXT:    ret
12709e4ad0SWeining Lu;
13709e4ad0SWeining Lu; LA64-LABEL: f32_fcmp_false:
14709e4ad0SWeining Lu; LA64:       # %bb.0:
15709e4ad0SWeining Lu; LA64-NEXT:    move $a0, $a1
16*ed078c48SWANG Xuerui; LA64-NEXT:    ret
17709e4ad0SWeining Lu  %cmp = fcmp false float %a, %b
18709e4ad0SWeining Lu  %res = select i1 %cmp, i32 %x, i32 %y
19709e4ad0SWeining Lu  ret i32 %res
20709e4ad0SWeining Lu}
21709e4ad0SWeining Lu
22709e4ad0SWeining Ludefine i32 @f32_fcmp_oeq(float %a, float %b, i32 %x, i32 %y) {
23709e4ad0SWeining Lu; LA32-LABEL: f32_fcmp_oeq:
24709e4ad0SWeining Lu; LA32:       # %bb.0:
25709e4ad0SWeining Lu; LA32-NEXT:    fcmp.ceq.s $fcc0, $fa0, $fa1
26709e4ad0SWeining Lu; LA32-NEXT:    movcf2gr $a2, $fcc0
27709e4ad0SWeining Lu; LA32-NEXT:    masknez $a1, $a1, $a2
28709e4ad0SWeining Lu; LA32-NEXT:    maskeqz $a0, $a0, $a2
29709e4ad0SWeining Lu; LA32-NEXT:    or $a0, $a0, $a1
30*ed078c48SWANG Xuerui; LA32-NEXT:    ret
31709e4ad0SWeining Lu;
32709e4ad0SWeining Lu; LA64-LABEL: f32_fcmp_oeq:
33709e4ad0SWeining Lu; LA64:       # %bb.0:
34709e4ad0SWeining Lu; LA64-NEXT:    fcmp.ceq.s $fcc0, $fa0, $fa1
35709e4ad0SWeining Lu; LA64-NEXT:    movcf2gr $a2, $fcc0
36709e4ad0SWeining Lu; LA64-NEXT:    masknez $a1, $a1, $a2
37709e4ad0SWeining Lu; LA64-NEXT:    maskeqz $a0, $a0, $a2
38709e4ad0SWeining Lu; LA64-NEXT:    or $a0, $a0, $a1
39*ed078c48SWANG Xuerui; LA64-NEXT:    ret
40709e4ad0SWeining Lu  %cmp = fcmp oeq float %a, %b
41709e4ad0SWeining Lu  %res = select i1 %cmp, i32 %x, i32 %y
42709e4ad0SWeining Lu  ret i32 %res
43709e4ad0SWeining Lu}
44709e4ad0SWeining Lu
45709e4ad0SWeining Ludefine i32 @f32_fcmp_ogt(float %a, float %b, i32 %x, i32 %y) {
46709e4ad0SWeining Lu; LA32-LABEL: f32_fcmp_ogt:
47709e4ad0SWeining Lu; LA32:       # %bb.0:
48709e4ad0SWeining Lu; LA32-NEXT:    fcmp.clt.s $fcc0, $fa1, $fa0
49709e4ad0SWeining Lu; LA32-NEXT:    movcf2gr $a2, $fcc0
50709e4ad0SWeining Lu; LA32-NEXT:    masknez $a1, $a1, $a2
51709e4ad0SWeining Lu; LA32-NEXT:    maskeqz $a0, $a0, $a2
52709e4ad0SWeining Lu; LA32-NEXT:    or $a0, $a0, $a1
53*ed078c48SWANG Xuerui; LA32-NEXT:    ret
54709e4ad0SWeining Lu;
55709e4ad0SWeining Lu; LA64-LABEL: f32_fcmp_ogt:
56709e4ad0SWeining Lu; LA64:       # %bb.0:
57709e4ad0SWeining Lu; LA64-NEXT:    fcmp.clt.s $fcc0, $fa1, $fa0
58709e4ad0SWeining Lu; LA64-NEXT:    movcf2gr $a2, $fcc0
59709e4ad0SWeining Lu; LA64-NEXT:    masknez $a1, $a1, $a2
60709e4ad0SWeining Lu; LA64-NEXT:    maskeqz $a0, $a0, $a2
61709e4ad0SWeining Lu; LA64-NEXT:    or $a0, $a0, $a1
62*ed078c48SWANG Xuerui; LA64-NEXT:    ret
63709e4ad0SWeining Lu  %cmp = fcmp ogt float %a, %b
64709e4ad0SWeining Lu  %res = select i1 %cmp, i32 %x, i32 %y
65709e4ad0SWeining Lu  ret i32 %res
66709e4ad0SWeining Lu}
67709e4ad0SWeining Lu
68709e4ad0SWeining Ludefine i32 @f32_fcmp_oge(float %a, float %b, i32 %x, i32 %y) {
69709e4ad0SWeining Lu; LA32-LABEL: f32_fcmp_oge:
70709e4ad0SWeining Lu; LA32:       # %bb.0:
71709e4ad0SWeining Lu; LA32-NEXT:    fcmp.cle.s $fcc0, $fa1, $fa0
72709e4ad0SWeining Lu; LA32-NEXT:    movcf2gr $a2, $fcc0
73709e4ad0SWeining Lu; LA32-NEXT:    masknez $a1, $a1, $a2
74709e4ad0SWeining Lu; LA32-NEXT:    maskeqz $a0, $a0, $a2
75709e4ad0SWeining Lu; LA32-NEXT:    or $a0, $a0, $a1
76*ed078c48SWANG Xuerui; LA32-NEXT:    ret
77709e4ad0SWeining Lu;
78709e4ad0SWeining Lu; LA64-LABEL: f32_fcmp_oge:
79709e4ad0SWeining Lu; LA64:       # %bb.0:
80709e4ad0SWeining Lu; LA64-NEXT:    fcmp.cle.s $fcc0, $fa1, $fa0
81709e4ad0SWeining Lu; LA64-NEXT:    movcf2gr $a2, $fcc0
82709e4ad0SWeining Lu; LA64-NEXT:    masknez $a1, $a1, $a2
83709e4ad0SWeining Lu; LA64-NEXT:    maskeqz $a0, $a0, $a2
84709e4ad0SWeining Lu; LA64-NEXT:    or $a0, $a0, $a1
85*ed078c48SWANG Xuerui; LA64-NEXT:    ret
86709e4ad0SWeining Lu  %cmp = fcmp oge float %a, %b
87709e4ad0SWeining Lu  %res = select i1 %cmp, i32 %x, i32 %y
88709e4ad0SWeining Lu  ret i32 %res
89709e4ad0SWeining Lu}
90709e4ad0SWeining Lu
91709e4ad0SWeining Ludefine i32 @f32_fcmp_olt(float %a, float %b, i32 %x, i32 %y) {
92709e4ad0SWeining Lu; LA32-LABEL: f32_fcmp_olt:
93709e4ad0SWeining Lu; LA32:       # %bb.0:
94709e4ad0SWeining Lu; LA32-NEXT:    fcmp.clt.s $fcc0, $fa0, $fa1
95709e4ad0SWeining Lu; LA32-NEXT:    movcf2gr $a2, $fcc0
96709e4ad0SWeining Lu; LA32-NEXT:    masknez $a1, $a1, $a2
97709e4ad0SWeining Lu; LA32-NEXT:    maskeqz $a0, $a0, $a2
98709e4ad0SWeining Lu; LA32-NEXT:    or $a0, $a0, $a1
99*ed078c48SWANG Xuerui; LA32-NEXT:    ret
100709e4ad0SWeining Lu;
101709e4ad0SWeining Lu; LA64-LABEL: f32_fcmp_olt:
102709e4ad0SWeining Lu; LA64:       # %bb.0:
103709e4ad0SWeining Lu; LA64-NEXT:    fcmp.clt.s $fcc0, $fa0, $fa1
104709e4ad0SWeining Lu; LA64-NEXT:    movcf2gr $a2, $fcc0
105709e4ad0SWeining Lu; LA64-NEXT:    masknez $a1, $a1, $a2
106709e4ad0SWeining Lu; LA64-NEXT:    maskeqz $a0, $a0, $a2
107709e4ad0SWeining Lu; LA64-NEXT:    or $a0, $a0, $a1
108*ed078c48SWANG Xuerui; LA64-NEXT:    ret
109709e4ad0SWeining Lu  %cmp = fcmp olt float %a, %b
110709e4ad0SWeining Lu  %res = select i1 %cmp, i32 %x, i32 %y
111709e4ad0SWeining Lu  ret i32 %res
112709e4ad0SWeining Lu}
113709e4ad0SWeining Lu
114709e4ad0SWeining Ludefine i32 @f32_fcmp_ole(float %a, float %b, i32 %x, i32 %y) {
115709e4ad0SWeining Lu; LA32-LABEL: f32_fcmp_ole:
116709e4ad0SWeining Lu; LA32:       # %bb.0:
117709e4ad0SWeining Lu; LA32-NEXT:    fcmp.cle.s $fcc0, $fa0, $fa1
118709e4ad0SWeining Lu; LA32-NEXT:    movcf2gr $a2, $fcc0
119709e4ad0SWeining Lu; LA32-NEXT:    masknez $a1, $a1, $a2
120709e4ad0SWeining Lu; LA32-NEXT:    maskeqz $a0, $a0, $a2
121709e4ad0SWeining Lu; LA32-NEXT:    or $a0, $a0, $a1
122*ed078c48SWANG Xuerui; LA32-NEXT:    ret
123709e4ad0SWeining Lu;
124709e4ad0SWeining Lu; LA64-LABEL: f32_fcmp_ole:
125709e4ad0SWeining Lu; LA64:       # %bb.0:
126709e4ad0SWeining Lu; LA64-NEXT:    fcmp.cle.s $fcc0, $fa0, $fa1
127709e4ad0SWeining Lu; LA64-NEXT:    movcf2gr $a2, $fcc0
128709e4ad0SWeining Lu; LA64-NEXT:    masknez $a1, $a1, $a2
129709e4ad0SWeining Lu; LA64-NEXT:    maskeqz $a0, $a0, $a2
130709e4ad0SWeining Lu; LA64-NEXT:    or $a0, $a0, $a1
131*ed078c48SWANG Xuerui; LA64-NEXT:    ret
132709e4ad0SWeining Lu  %cmp = fcmp ole float %a, %b
133709e4ad0SWeining Lu  %res = select i1 %cmp, i32 %x, i32 %y
134709e4ad0SWeining Lu  ret i32 %res
135709e4ad0SWeining Lu}
136709e4ad0SWeining Lu
137709e4ad0SWeining Ludefine i32 @f32_fcmp_one(float %a, float %b, i32 %x, i32 %y) {
138709e4ad0SWeining Lu; LA32-LABEL: f32_fcmp_one:
139709e4ad0SWeining Lu; LA32:       # %bb.0:
140709e4ad0SWeining Lu; LA32-NEXT:    fcmp.cne.s $fcc0, $fa0, $fa1
141709e4ad0SWeining Lu; LA32-NEXT:    movcf2gr $a2, $fcc0
142709e4ad0SWeining Lu; LA32-NEXT:    masknez $a1, $a1, $a2
143709e4ad0SWeining Lu; LA32-NEXT:    maskeqz $a0, $a0, $a2
144709e4ad0SWeining Lu; LA32-NEXT:    or $a0, $a0, $a1
145*ed078c48SWANG Xuerui; LA32-NEXT:    ret
146709e4ad0SWeining Lu;
147709e4ad0SWeining Lu; LA64-LABEL: f32_fcmp_one:
148709e4ad0SWeining Lu; LA64:       # %bb.0:
149709e4ad0SWeining Lu; LA64-NEXT:    fcmp.cne.s $fcc0, $fa0, $fa1
150709e4ad0SWeining Lu; LA64-NEXT:    movcf2gr $a2, $fcc0
151709e4ad0SWeining Lu; LA64-NEXT:    masknez $a1, $a1, $a2
152709e4ad0SWeining Lu; LA64-NEXT:    maskeqz $a0, $a0, $a2
153709e4ad0SWeining Lu; LA64-NEXT:    or $a0, $a0, $a1
154*ed078c48SWANG Xuerui; LA64-NEXT:    ret
155709e4ad0SWeining Lu  %cmp = fcmp one float %a, %b
156709e4ad0SWeining Lu  %res = select i1 %cmp, i32 %x, i32 %y
157709e4ad0SWeining Lu  ret i32 %res
158709e4ad0SWeining Lu}
159709e4ad0SWeining Lu
160709e4ad0SWeining Ludefine i32 @f32_fcmp_ord(float %a, float %b, i32 %x, i32 %y) {
161709e4ad0SWeining Lu; LA32-LABEL: f32_fcmp_ord:
162709e4ad0SWeining Lu; LA32:       # %bb.0:
163709e4ad0SWeining Lu; LA32-NEXT:    fcmp.cor.s $fcc0, $fa0, $fa1
164709e4ad0SWeining Lu; LA32-NEXT:    movcf2gr $a2, $fcc0
165709e4ad0SWeining Lu; LA32-NEXT:    masknez $a1, $a1, $a2
166709e4ad0SWeining Lu; LA32-NEXT:    maskeqz $a0, $a0, $a2
167709e4ad0SWeining Lu; LA32-NEXT:    or $a0, $a0, $a1
168*ed078c48SWANG Xuerui; LA32-NEXT:    ret
169709e4ad0SWeining Lu;
170709e4ad0SWeining Lu; LA64-LABEL: f32_fcmp_ord:
171709e4ad0SWeining Lu; LA64:       # %bb.0:
172709e4ad0SWeining Lu; LA64-NEXT:    fcmp.cor.s $fcc0, $fa0, $fa1
173709e4ad0SWeining Lu; LA64-NEXT:    movcf2gr $a2, $fcc0
174709e4ad0SWeining Lu; LA64-NEXT:    masknez $a1, $a1, $a2
175709e4ad0SWeining Lu; LA64-NEXT:    maskeqz $a0, $a0, $a2
176709e4ad0SWeining Lu; LA64-NEXT:    or $a0, $a0, $a1
177*ed078c48SWANG Xuerui; LA64-NEXT:    ret
178709e4ad0SWeining Lu  %cmp = fcmp ord float %a, %b
179709e4ad0SWeining Lu  %res = select i1 %cmp, i32 %x, i32 %y
180709e4ad0SWeining Lu  ret i32 %res
181709e4ad0SWeining Lu}
182709e4ad0SWeining Lu
183709e4ad0SWeining Ludefine i32 @f32_fcmp_ueq(float %a, float %b, i32 %x, i32 %y) {
184709e4ad0SWeining Lu; LA32-LABEL: f32_fcmp_ueq:
185709e4ad0SWeining Lu; LA32:       # %bb.0:
186709e4ad0SWeining Lu; LA32-NEXT:    fcmp.cueq.s $fcc0, $fa0, $fa1
187709e4ad0SWeining Lu; LA32-NEXT:    movcf2gr $a2, $fcc0
188709e4ad0SWeining Lu; LA32-NEXT:    masknez $a1, $a1, $a2
189709e4ad0SWeining Lu; LA32-NEXT:    maskeqz $a0, $a0, $a2
190709e4ad0SWeining Lu; LA32-NEXT:    or $a0, $a0, $a1
191*ed078c48SWANG Xuerui; LA32-NEXT:    ret
192709e4ad0SWeining Lu;
193709e4ad0SWeining Lu; LA64-LABEL: f32_fcmp_ueq:
194709e4ad0SWeining Lu; LA64:       # %bb.0:
195709e4ad0SWeining Lu; LA64-NEXT:    fcmp.cueq.s $fcc0, $fa0, $fa1
196709e4ad0SWeining Lu; LA64-NEXT:    movcf2gr $a2, $fcc0
197709e4ad0SWeining Lu; LA64-NEXT:    masknez $a1, $a1, $a2
198709e4ad0SWeining Lu; LA64-NEXT:    maskeqz $a0, $a0, $a2
199709e4ad0SWeining Lu; LA64-NEXT:    or $a0, $a0, $a1
200*ed078c48SWANG Xuerui; LA64-NEXT:    ret
201709e4ad0SWeining Lu  %cmp = fcmp ueq float %a, %b
202709e4ad0SWeining Lu  %res = select i1 %cmp, i32 %x, i32 %y
203709e4ad0SWeining Lu  ret i32 %res
204709e4ad0SWeining Lu}
205709e4ad0SWeining Lu
206709e4ad0SWeining Ludefine i32 @f32_fcmp_ugt(float %a, float %b, i32 %x, i32 %y) {
207709e4ad0SWeining Lu; LA32-LABEL: f32_fcmp_ugt:
208709e4ad0SWeining Lu; LA32:       # %bb.0:
209709e4ad0SWeining Lu; LA32-NEXT:    fcmp.cult.s $fcc0, $fa1, $fa0
210709e4ad0SWeining Lu; LA32-NEXT:    movcf2gr $a2, $fcc0
211709e4ad0SWeining Lu; LA32-NEXT:    masknez $a1, $a1, $a2
212709e4ad0SWeining Lu; LA32-NEXT:    maskeqz $a0, $a0, $a2
213709e4ad0SWeining Lu; LA32-NEXT:    or $a0, $a0, $a1
214*ed078c48SWANG Xuerui; LA32-NEXT:    ret
215709e4ad0SWeining Lu;
216709e4ad0SWeining Lu; LA64-LABEL: f32_fcmp_ugt:
217709e4ad0SWeining Lu; LA64:       # %bb.0:
218709e4ad0SWeining Lu; LA64-NEXT:    fcmp.cult.s $fcc0, $fa1, $fa0
219709e4ad0SWeining Lu; LA64-NEXT:    movcf2gr $a2, $fcc0
220709e4ad0SWeining Lu; LA64-NEXT:    masknez $a1, $a1, $a2
221709e4ad0SWeining Lu; LA64-NEXT:    maskeqz $a0, $a0, $a2
222709e4ad0SWeining Lu; LA64-NEXT:    or $a0, $a0, $a1
223*ed078c48SWANG Xuerui; LA64-NEXT:    ret
224709e4ad0SWeining Lu  %cmp = fcmp ugt float %a, %b
225709e4ad0SWeining Lu  %res = select i1 %cmp, i32 %x, i32 %y
226709e4ad0SWeining Lu  ret i32 %res
227709e4ad0SWeining Lu}
228709e4ad0SWeining Lu
229709e4ad0SWeining Ludefine i32 @f32_fcmp_uge(float %a, float %b, i32 %x, i32 %y) {
230709e4ad0SWeining Lu; LA32-LABEL: f32_fcmp_uge:
231709e4ad0SWeining Lu; LA32:       # %bb.0:
232709e4ad0SWeining Lu; LA32-NEXT:    fcmp.cule.s $fcc0, $fa1, $fa0
233709e4ad0SWeining Lu; LA32-NEXT:    movcf2gr $a2, $fcc0
234709e4ad0SWeining Lu; LA32-NEXT:    masknez $a1, $a1, $a2
235709e4ad0SWeining Lu; LA32-NEXT:    maskeqz $a0, $a0, $a2
236709e4ad0SWeining Lu; LA32-NEXT:    or $a0, $a0, $a1
237*ed078c48SWANG Xuerui; LA32-NEXT:    ret
238709e4ad0SWeining Lu;
239709e4ad0SWeining Lu; LA64-LABEL: f32_fcmp_uge:
240709e4ad0SWeining Lu; LA64:       # %bb.0:
241709e4ad0SWeining Lu; LA64-NEXT:    fcmp.cule.s $fcc0, $fa1, $fa0
242709e4ad0SWeining Lu; LA64-NEXT:    movcf2gr $a2, $fcc0
243709e4ad0SWeining Lu; LA64-NEXT:    masknez $a1, $a1, $a2
244709e4ad0SWeining Lu; LA64-NEXT:    maskeqz $a0, $a0, $a2
245709e4ad0SWeining Lu; LA64-NEXT:    or $a0, $a0, $a1
246*ed078c48SWANG Xuerui; LA64-NEXT:    ret
247709e4ad0SWeining Lu  %cmp = fcmp uge float %a, %b
248709e4ad0SWeining Lu  %res = select i1 %cmp, i32 %x, i32 %y
249709e4ad0SWeining Lu  ret i32 %res
250709e4ad0SWeining Lu}
251709e4ad0SWeining Lu
252709e4ad0SWeining Ludefine i32 @f32_fcmp_ult(float %a, float %b, i32 %x, i32 %y) {
253709e4ad0SWeining Lu; LA32-LABEL: f32_fcmp_ult:
254709e4ad0SWeining Lu; LA32:       # %bb.0:
255709e4ad0SWeining Lu; LA32-NEXT:    fcmp.cult.s $fcc0, $fa0, $fa1
256709e4ad0SWeining Lu; LA32-NEXT:    movcf2gr $a2, $fcc0
257709e4ad0SWeining Lu; LA32-NEXT:    masknez $a1, $a1, $a2
258709e4ad0SWeining Lu; LA32-NEXT:    maskeqz $a0, $a0, $a2
259709e4ad0SWeining Lu; LA32-NEXT:    or $a0, $a0, $a1
260*ed078c48SWANG Xuerui; LA32-NEXT:    ret
261709e4ad0SWeining Lu;
262709e4ad0SWeining Lu; LA64-LABEL: f32_fcmp_ult:
263709e4ad0SWeining Lu; LA64:       # %bb.0:
264709e4ad0SWeining Lu; LA64-NEXT:    fcmp.cult.s $fcc0, $fa0, $fa1
265709e4ad0SWeining Lu; LA64-NEXT:    movcf2gr $a2, $fcc0
266709e4ad0SWeining Lu; LA64-NEXT:    masknez $a1, $a1, $a2
267709e4ad0SWeining Lu; LA64-NEXT:    maskeqz $a0, $a0, $a2
268709e4ad0SWeining Lu; LA64-NEXT:    or $a0, $a0, $a1
269*ed078c48SWANG Xuerui; LA64-NEXT:    ret
270709e4ad0SWeining Lu  %cmp = fcmp ult float %a, %b
271709e4ad0SWeining Lu  %res = select i1 %cmp, i32 %x, i32 %y
272709e4ad0SWeining Lu  ret i32 %res
273709e4ad0SWeining Lu}
274709e4ad0SWeining Lu
275709e4ad0SWeining Ludefine i32 @f32_fcmp_ule(float %a, float %b, i32 %x, i32 %y) {
276709e4ad0SWeining Lu; LA32-LABEL: f32_fcmp_ule:
277709e4ad0SWeining Lu; LA32:       # %bb.0:
278709e4ad0SWeining Lu; LA32-NEXT:    fcmp.cule.s $fcc0, $fa0, $fa1
279709e4ad0SWeining Lu; LA32-NEXT:    movcf2gr $a2, $fcc0
280709e4ad0SWeining Lu; LA32-NEXT:    masknez $a1, $a1, $a2
281709e4ad0SWeining Lu; LA32-NEXT:    maskeqz $a0, $a0, $a2
282709e4ad0SWeining Lu; LA32-NEXT:    or $a0, $a0, $a1
283*ed078c48SWANG Xuerui; LA32-NEXT:    ret
284709e4ad0SWeining Lu;
285709e4ad0SWeining Lu; LA64-LABEL: f32_fcmp_ule:
286709e4ad0SWeining Lu; LA64:       # %bb.0:
287709e4ad0SWeining Lu; LA64-NEXT:    fcmp.cule.s $fcc0, $fa0, $fa1
288709e4ad0SWeining Lu; LA64-NEXT:    movcf2gr $a2, $fcc0
289709e4ad0SWeining Lu; LA64-NEXT:    masknez $a1, $a1, $a2
290709e4ad0SWeining Lu; LA64-NEXT:    maskeqz $a0, $a0, $a2
291709e4ad0SWeining Lu; LA64-NEXT:    or $a0, $a0, $a1
292*ed078c48SWANG Xuerui; LA64-NEXT:    ret
293709e4ad0SWeining Lu  %cmp = fcmp ule float %a, %b
294709e4ad0SWeining Lu  %res = select i1 %cmp, i32 %x, i32 %y
295709e4ad0SWeining Lu  ret i32 %res
296709e4ad0SWeining Lu}
297709e4ad0SWeining Lu
298709e4ad0SWeining Ludefine i32 @f32_fcmp_une(float %a, float %b, i32 %x, i32 %y) {
299709e4ad0SWeining Lu; LA32-LABEL: f32_fcmp_une:
300709e4ad0SWeining Lu; LA32:       # %bb.0:
301709e4ad0SWeining Lu; LA32-NEXT:    fcmp.cune.s $fcc0, $fa0, $fa1
302709e4ad0SWeining Lu; LA32-NEXT:    movcf2gr $a2, $fcc0
303709e4ad0SWeining Lu; LA32-NEXT:    masknez $a1, $a1, $a2
304709e4ad0SWeining Lu; LA32-NEXT:    maskeqz $a0, $a0, $a2
305709e4ad0SWeining Lu; LA32-NEXT:    or $a0, $a0, $a1
306*ed078c48SWANG Xuerui; LA32-NEXT:    ret
307709e4ad0SWeining Lu;
308709e4ad0SWeining Lu; LA64-LABEL: f32_fcmp_une:
309709e4ad0SWeining Lu; LA64:       # %bb.0:
310709e4ad0SWeining Lu; LA64-NEXT:    fcmp.cune.s $fcc0, $fa0, $fa1
311709e4ad0SWeining Lu; LA64-NEXT:    movcf2gr $a2, $fcc0
312709e4ad0SWeining Lu; LA64-NEXT:    masknez $a1, $a1, $a2
313709e4ad0SWeining Lu; LA64-NEXT:    maskeqz $a0, $a0, $a2
314709e4ad0SWeining Lu; LA64-NEXT:    or $a0, $a0, $a1
315*ed078c48SWANG Xuerui; LA64-NEXT:    ret
316709e4ad0SWeining Lu  %cmp = fcmp une float %a, %b
317709e4ad0SWeining Lu  %res = select i1 %cmp, i32 %x, i32 %y
318709e4ad0SWeining Lu  ret i32 %res
319709e4ad0SWeining Lu}
320709e4ad0SWeining Lu
321709e4ad0SWeining Ludefine i32 @f32_fcmp_uno(float %a, float %b, i32 %x, i32 %y) {
322709e4ad0SWeining Lu; LA32-LABEL: f32_fcmp_uno:
323709e4ad0SWeining Lu; LA32:       # %bb.0:
324709e4ad0SWeining Lu; LA32-NEXT:    fcmp.cun.s $fcc0, $fa0, $fa1
325709e4ad0SWeining Lu; LA32-NEXT:    movcf2gr $a2, $fcc0
326709e4ad0SWeining Lu; LA32-NEXT:    masknez $a1, $a1, $a2
327709e4ad0SWeining Lu; LA32-NEXT:    maskeqz $a0, $a0, $a2
328709e4ad0SWeining Lu; LA32-NEXT:    or $a0, $a0, $a1
329*ed078c48SWANG Xuerui; LA32-NEXT:    ret
330709e4ad0SWeining Lu;
331709e4ad0SWeining Lu; LA64-LABEL: f32_fcmp_uno:
332709e4ad0SWeining Lu; LA64:       # %bb.0:
333709e4ad0SWeining Lu; LA64-NEXT:    fcmp.cun.s $fcc0, $fa0, $fa1
334709e4ad0SWeining Lu; LA64-NEXT:    movcf2gr $a2, $fcc0
335709e4ad0SWeining Lu; LA64-NEXT:    masknez $a1, $a1, $a2
336709e4ad0SWeining Lu; LA64-NEXT:    maskeqz $a0, $a0, $a2
337709e4ad0SWeining Lu; LA64-NEXT:    or $a0, $a0, $a1
338*ed078c48SWANG Xuerui; LA64-NEXT:    ret
339709e4ad0SWeining Lu  %cmp = fcmp uno float %a, %b
340709e4ad0SWeining Lu  %res = select i1 %cmp, i32 %x, i32 %y
341709e4ad0SWeining Lu  ret i32 %res
342709e4ad0SWeining Lu}
343709e4ad0SWeining Lu
344709e4ad0SWeining Ludefine i32 @f32_fcmp_true(float %a, float %b, i32 %x, i32 %y) {
345709e4ad0SWeining Lu; LA32-LABEL: f32_fcmp_true:
346709e4ad0SWeining Lu; LA32:       # %bb.0:
347*ed078c48SWANG Xuerui; LA32-NEXT:    ret
348709e4ad0SWeining Lu;
349709e4ad0SWeining Lu; LA64-LABEL: f32_fcmp_true:
350709e4ad0SWeining Lu; LA64:       # %bb.0:
351*ed078c48SWANG Xuerui; LA64-NEXT:    ret
352709e4ad0SWeining Lu  %cmp = fcmp true float %a, %b
353709e4ad0SWeining Lu  %res = select i1 %cmp, i32 %x, i32 %y
354709e4ad0SWeining Lu  ret i32 %res
355709e4ad0SWeining Lu}
356709e4ad0SWeining Lu
357709e4ad0SWeining Ludefine i32 @f64_fcmp_false(double %a, double %b, i32 %x, i32 %y) {
358709e4ad0SWeining Lu; LA32-LABEL: f64_fcmp_false:
359709e4ad0SWeining Lu; LA32:       # %bb.0:
360709e4ad0SWeining Lu; LA32-NEXT:    move $a0, $a1
361*ed078c48SWANG Xuerui; LA32-NEXT:    ret
362709e4ad0SWeining Lu;
363709e4ad0SWeining Lu; LA64-LABEL: f64_fcmp_false:
364709e4ad0SWeining Lu; LA64:       # %bb.0:
365709e4ad0SWeining Lu; LA64-NEXT:    move $a0, $a1
366*ed078c48SWANG Xuerui; LA64-NEXT:    ret
367709e4ad0SWeining Lu  %cmp = fcmp false double %a, %b
368709e4ad0SWeining Lu  %res = select i1 %cmp, i32 %x, i32 %y
369709e4ad0SWeining Lu  ret i32 %res
370709e4ad0SWeining Lu}
371709e4ad0SWeining Lu
372709e4ad0SWeining Ludefine i32 @f64_fcmp_oeq(double %a, double %b, i32 %x, i32 %y) {
373709e4ad0SWeining Lu; LA32-LABEL: f64_fcmp_oeq:
374709e4ad0SWeining Lu; LA32:       # %bb.0:
375709e4ad0SWeining Lu; LA32-NEXT:    fcmp.ceq.d $fcc0, $fa0, $fa1
376709e4ad0SWeining Lu; LA32-NEXT:    movcf2gr $a2, $fcc0
377709e4ad0SWeining Lu; LA32-NEXT:    masknez $a1, $a1, $a2
378709e4ad0SWeining Lu; LA32-NEXT:    maskeqz $a0, $a0, $a2
379709e4ad0SWeining Lu; LA32-NEXT:    or $a0, $a0, $a1
380*ed078c48SWANG Xuerui; LA32-NEXT:    ret
381709e4ad0SWeining Lu;
382709e4ad0SWeining Lu; LA64-LABEL: f64_fcmp_oeq:
383709e4ad0SWeining Lu; LA64:       # %bb.0:
384709e4ad0SWeining Lu; LA64-NEXT:    fcmp.ceq.d $fcc0, $fa0, $fa1
385709e4ad0SWeining Lu; LA64-NEXT:    movcf2gr $a2, $fcc0
386709e4ad0SWeining Lu; LA64-NEXT:    masknez $a1, $a1, $a2
387709e4ad0SWeining Lu; LA64-NEXT:    maskeqz $a0, $a0, $a2
388709e4ad0SWeining Lu; LA64-NEXT:    or $a0, $a0, $a1
389*ed078c48SWANG Xuerui; LA64-NEXT:    ret
390709e4ad0SWeining Lu  %cmp = fcmp oeq double %a, %b
391709e4ad0SWeining Lu  %res = select i1 %cmp, i32 %x, i32 %y
392709e4ad0SWeining Lu  ret i32 %res
393709e4ad0SWeining Lu}
394709e4ad0SWeining Lu
395709e4ad0SWeining Ludefine i32 @f64_fcmp_ogt(double %a, double %b, i32 %x, i32 %y) {
396709e4ad0SWeining Lu; LA32-LABEL: f64_fcmp_ogt:
397709e4ad0SWeining Lu; LA32:       # %bb.0:
398709e4ad0SWeining Lu; LA32-NEXT:    fcmp.clt.d $fcc0, $fa1, $fa0
399709e4ad0SWeining Lu; LA32-NEXT:    movcf2gr $a2, $fcc0
400709e4ad0SWeining Lu; LA32-NEXT:    masknez $a1, $a1, $a2
401709e4ad0SWeining Lu; LA32-NEXT:    maskeqz $a0, $a0, $a2
402709e4ad0SWeining Lu; LA32-NEXT:    or $a0, $a0, $a1
403*ed078c48SWANG Xuerui; LA32-NEXT:    ret
404709e4ad0SWeining Lu;
405709e4ad0SWeining Lu; LA64-LABEL: f64_fcmp_ogt:
406709e4ad0SWeining Lu; LA64:       # %bb.0:
407709e4ad0SWeining Lu; LA64-NEXT:    fcmp.clt.d $fcc0, $fa1, $fa0
408709e4ad0SWeining Lu; LA64-NEXT:    movcf2gr $a2, $fcc0
409709e4ad0SWeining Lu; LA64-NEXT:    masknez $a1, $a1, $a2
410709e4ad0SWeining Lu; LA64-NEXT:    maskeqz $a0, $a0, $a2
411709e4ad0SWeining Lu; LA64-NEXT:    or $a0, $a0, $a1
412*ed078c48SWANG Xuerui; LA64-NEXT:    ret
413709e4ad0SWeining Lu  %cmp = fcmp ogt double %a, %b
414709e4ad0SWeining Lu  %res = select i1 %cmp, i32 %x, i32 %y
415709e4ad0SWeining Lu  ret i32 %res
416709e4ad0SWeining Lu}
417709e4ad0SWeining Lu
418709e4ad0SWeining Ludefine i32 @f64_fcmp_oge(double %a, double %b, i32 %x, i32 %y) {
419709e4ad0SWeining Lu; LA32-LABEL: f64_fcmp_oge:
420709e4ad0SWeining Lu; LA32:       # %bb.0:
421709e4ad0SWeining Lu; LA32-NEXT:    fcmp.cle.d $fcc0, $fa1, $fa0
422709e4ad0SWeining Lu; LA32-NEXT:    movcf2gr $a2, $fcc0
423709e4ad0SWeining Lu; LA32-NEXT:    masknez $a1, $a1, $a2
424709e4ad0SWeining Lu; LA32-NEXT:    maskeqz $a0, $a0, $a2
425709e4ad0SWeining Lu; LA32-NEXT:    or $a0, $a0, $a1
426*ed078c48SWANG Xuerui; LA32-NEXT:    ret
427709e4ad0SWeining Lu;
428709e4ad0SWeining Lu; LA64-LABEL: f64_fcmp_oge:
429709e4ad0SWeining Lu; LA64:       # %bb.0:
430709e4ad0SWeining Lu; LA64-NEXT:    fcmp.cle.d $fcc0, $fa1, $fa0
431709e4ad0SWeining Lu; LA64-NEXT:    movcf2gr $a2, $fcc0
432709e4ad0SWeining Lu; LA64-NEXT:    masknez $a1, $a1, $a2
433709e4ad0SWeining Lu; LA64-NEXT:    maskeqz $a0, $a0, $a2
434709e4ad0SWeining Lu; LA64-NEXT:    or $a0, $a0, $a1
435*ed078c48SWANG Xuerui; LA64-NEXT:    ret
436709e4ad0SWeining Lu  %cmp = fcmp oge double %a, %b
437709e4ad0SWeining Lu  %res = select i1 %cmp, i32 %x, i32 %y
438709e4ad0SWeining Lu  ret i32 %res
439709e4ad0SWeining Lu}
440709e4ad0SWeining Lu
441709e4ad0SWeining Ludefine i32 @f64_fcmp_olt(double %a, double %b, i32 %x, i32 %y) {
442709e4ad0SWeining Lu; LA32-LABEL: f64_fcmp_olt:
443709e4ad0SWeining Lu; LA32:       # %bb.0:
444709e4ad0SWeining Lu; LA32-NEXT:    fcmp.clt.d $fcc0, $fa0, $fa1
445709e4ad0SWeining Lu; LA32-NEXT:    movcf2gr $a2, $fcc0
446709e4ad0SWeining Lu; LA32-NEXT:    masknez $a1, $a1, $a2
447709e4ad0SWeining Lu; LA32-NEXT:    maskeqz $a0, $a0, $a2
448709e4ad0SWeining Lu; LA32-NEXT:    or $a0, $a0, $a1
449*ed078c48SWANG Xuerui; LA32-NEXT:    ret
450709e4ad0SWeining Lu;
451709e4ad0SWeining Lu; LA64-LABEL: f64_fcmp_olt:
452709e4ad0SWeining Lu; LA64:       # %bb.0:
453709e4ad0SWeining Lu; LA64-NEXT:    fcmp.clt.d $fcc0, $fa0, $fa1
454709e4ad0SWeining Lu; LA64-NEXT:    movcf2gr $a2, $fcc0
455709e4ad0SWeining Lu; LA64-NEXT:    masknez $a1, $a1, $a2
456709e4ad0SWeining Lu; LA64-NEXT:    maskeqz $a0, $a0, $a2
457709e4ad0SWeining Lu; LA64-NEXT:    or $a0, $a0, $a1
458*ed078c48SWANG Xuerui; LA64-NEXT:    ret
459709e4ad0SWeining Lu  %cmp = fcmp olt double %a, %b
460709e4ad0SWeining Lu  %res = select i1 %cmp, i32 %x, i32 %y
461709e4ad0SWeining Lu  ret i32 %res
462709e4ad0SWeining Lu}
463709e4ad0SWeining Lu
464709e4ad0SWeining Ludefine i32 @f64_fcmp_ole(double %a, double %b, i32 %x, i32 %y) {
465709e4ad0SWeining Lu; LA32-LABEL: f64_fcmp_ole:
466709e4ad0SWeining Lu; LA32:       # %bb.0:
467709e4ad0SWeining Lu; LA32-NEXT:    fcmp.cle.d $fcc0, $fa0, $fa1
468709e4ad0SWeining Lu; LA32-NEXT:    movcf2gr $a2, $fcc0
469709e4ad0SWeining Lu; LA32-NEXT:    masknez $a1, $a1, $a2
470709e4ad0SWeining Lu; LA32-NEXT:    maskeqz $a0, $a0, $a2
471709e4ad0SWeining Lu; LA32-NEXT:    or $a0, $a0, $a1
472*ed078c48SWANG Xuerui; LA32-NEXT:    ret
473709e4ad0SWeining Lu;
474709e4ad0SWeining Lu; LA64-LABEL: f64_fcmp_ole:
475709e4ad0SWeining Lu; LA64:       # %bb.0:
476709e4ad0SWeining Lu; LA64-NEXT:    fcmp.cle.d $fcc0, $fa0, $fa1
477709e4ad0SWeining Lu; LA64-NEXT:    movcf2gr $a2, $fcc0
478709e4ad0SWeining Lu; LA64-NEXT:    masknez $a1, $a1, $a2
479709e4ad0SWeining Lu; LA64-NEXT:    maskeqz $a0, $a0, $a2
480709e4ad0SWeining Lu; LA64-NEXT:    or $a0, $a0, $a1
481*ed078c48SWANG Xuerui; LA64-NEXT:    ret
482709e4ad0SWeining Lu  %cmp = fcmp ole double %a, %b
483709e4ad0SWeining Lu  %res = select i1 %cmp, i32 %x, i32 %y
484709e4ad0SWeining Lu  ret i32 %res
485709e4ad0SWeining Lu}
486709e4ad0SWeining Lu
487709e4ad0SWeining Ludefine i32 @f64_fcmp_one(double %a, double %b, i32 %x, i32 %y) {
488709e4ad0SWeining Lu; LA32-LABEL: f64_fcmp_one:
489709e4ad0SWeining Lu; LA32:       # %bb.0:
490709e4ad0SWeining Lu; LA32-NEXT:    fcmp.cne.d $fcc0, $fa0, $fa1
491709e4ad0SWeining Lu; LA32-NEXT:    movcf2gr $a2, $fcc0
492709e4ad0SWeining Lu; LA32-NEXT:    masknez $a1, $a1, $a2
493709e4ad0SWeining Lu; LA32-NEXT:    maskeqz $a0, $a0, $a2
494709e4ad0SWeining Lu; LA32-NEXT:    or $a0, $a0, $a1
495*ed078c48SWANG Xuerui; LA32-NEXT:    ret
496709e4ad0SWeining Lu;
497709e4ad0SWeining Lu; LA64-LABEL: f64_fcmp_one:
498709e4ad0SWeining Lu; LA64:       # %bb.0:
499709e4ad0SWeining Lu; LA64-NEXT:    fcmp.cne.d $fcc0, $fa0, $fa1
500709e4ad0SWeining Lu; LA64-NEXT:    movcf2gr $a2, $fcc0
501709e4ad0SWeining Lu; LA64-NEXT:    masknez $a1, $a1, $a2
502709e4ad0SWeining Lu; LA64-NEXT:    maskeqz $a0, $a0, $a2
503709e4ad0SWeining Lu; LA64-NEXT:    or $a0, $a0, $a1
504*ed078c48SWANG Xuerui; LA64-NEXT:    ret
505709e4ad0SWeining Lu  %cmp = fcmp one double %a, %b
506709e4ad0SWeining Lu  %res = select i1 %cmp, i32 %x, i32 %y
507709e4ad0SWeining Lu  ret i32 %res
508709e4ad0SWeining Lu}
509709e4ad0SWeining Lu
510709e4ad0SWeining Ludefine i32 @f64_fcmp_ord(double %a, double %b, i32 %x, i32 %y) {
511709e4ad0SWeining Lu; LA32-LABEL: f64_fcmp_ord:
512709e4ad0SWeining Lu; LA32:       # %bb.0:
513709e4ad0SWeining Lu; LA32-NEXT:    fcmp.cor.d $fcc0, $fa0, $fa1
514709e4ad0SWeining Lu; LA32-NEXT:    movcf2gr $a2, $fcc0
515709e4ad0SWeining Lu; LA32-NEXT:    masknez $a1, $a1, $a2
516709e4ad0SWeining Lu; LA32-NEXT:    maskeqz $a0, $a0, $a2
517709e4ad0SWeining Lu; LA32-NEXT:    or $a0, $a0, $a1
518*ed078c48SWANG Xuerui; LA32-NEXT:    ret
519709e4ad0SWeining Lu;
520709e4ad0SWeining Lu; LA64-LABEL: f64_fcmp_ord:
521709e4ad0SWeining Lu; LA64:       # %bb.0:
522709e4ad0SWeining Lu; LA64-NEXT:    fcmp.cor.d $fcc0, $fa0, $fa1
523709e4ad0SWeining Lu; LA64-NEXT:    movcf2gr $a2, $fcc0
524709e4ad0SWeining Lu; LA64-NEXT:    masknez $a1, $a1, $a2
525709e4ad0SWeining Lu; LA64-NEXT:    maskeqz $a0, $a0, $a2
526709e4ad0SWeining Lu; LA64-NEXT:    or $a0, $a0, $a1
527*ed078c48SWANG Xuerui; LA64-NEXT:    ret
528709e4ad0SWeining Lu  %cmp = fcmp ord double %a, %b
529709e4ad0SWeining Lu  %res = select i1 %cmp, i32 %x, i32 %y
530709e4ad0SWeining Lu  ret i32 %res
531709e4ad0SWeining Lu}
532709e4ad0SWeining Lu
533709e4ad0SWeining Ludefine i32 @f64_fcmp_ueq(double %a, double %b, i32 %x, i32 %y) {
534709e4ad0SWeining Lu; LA32-LABEL: f64_fcmp_ueq:
535709e4ad0SWeining Lu; LA32:       # %bb.0:
536709e4ad0SWeining Lu; LA32-NEXT:    fcmp.cueq.d $fcc0, $fa0, $fa1
537709e4ad0SWeining Lu; LA32-NEXT:    movcf2gr $a2, $fcc0
538709e4ad0SWeining Lu; LA32-NEXT:    masknez $a1, $a1, $a2
539709e4ad0SWeining Lu; LA32-NEXT:    maskeqz $a0, $a0, $a2
540709e4ad0SWeining Lu; LA32-NEXT:    or $a0, $a0, $a1
541*ed078c48SWANG Xuerui; LA32-NEXT:    ret
542709e4ad0SWeining Lu;
543709e4ad0SWeining Lu; LA64-LABEL: f64_fcmp_ueq:
544709e4ad0SWeining Lu; LA64:       # %bb.0:
545709e4ad0SWeining Lu; LA64-NEXT:    fcmp.cueq.d $fcc0, $fa0, $fa1
546709e4ad0SWeining Lu; LA64-NEXT:    movcf2gr $a2, $fcc0
547709e4ad0SWeining Lu; LA64-NEXT:    masknez $a1, $a1, $a2
548709e4ad0SWeining Lu; LA64-NEXT:    maskeqz $a0, $a0, $a2
549709e4ad0SWeining Lu; LA64-NEXT:    or $a0, $a0, $a1
550*ed078c48SWANG Xuerui; LA64-NEXT:    ret
551709e4ad0SWeining Lu  %cmp = fcmp ueq double %a, %b
552709e4ad0SWeining Lu  %res = select i1 %cmp, i32 %x, i32 %y
553709e4ad0SWeining Lu  ret i32 %res
554709e4ad0SWeining Lu}
555709e4ad0SWeining Lu
556709e4ad0SWeining Ludefine i32 @f64_fcmp_ugt(double %a, double %b, i32 %x, i32 %y) {
557709e4ad0SWeining Lu; LA32-LABEL: f64_fcmp_ugt:
558709e4ad0SWeining Lu; LA32:       # %bb.0:
559709e4ad0SWeining Lu; LA32-NEXT:    fcmp.cult.d $fcc0, $fa1, $fa0
560709e4ad0SWeining Lu; LA32-NEXT:    movcf2gr $a2, $fcc0
561709e4ad0SWeining Lu; LA32-NEXT:    masknez $a1, $a1, $a2
562709e4ad0SWeining Lu; LA32-NEXT:    maskeqz $a0, $a0, $a2
563709e4ad0SWeining Lu; LA32-NEXT:    or $a0, $a0, $a1
564*ed078c48SWANG Xuerui; LA32-NEXT:    ret
565709e4ad0SWeining Lu;
566709e4ad0SWeining Lu; LA64-LABEL: f64_fcmp_ugt:
567709e4ad0SWeining Lu; LA64:       # %bb.0:
568709e4ad0SWeining Lu; LA64-NEXT:    fcmp.cult.d $fcc0, $fa1, $fa0
569709e4ad0SWeining Lu; LA64-NEXT:    movcf2gr $a2, $fcc0
570709e4ad0SWeining Lu; LA64-NEXT:    masknez $a1, $a1, $a2
571709e4ad0SWeining Lu; LA64-NEXT:    maskeqz $a0, $a0, $a2
572709e4ad0SWeining Lu; LA64-NEXT:    or $a0, $a0, $a1
573*ed078c48SWANG Xuerui; LA64-NEXT:    ret
574709e4ad0SWeining Lu  %cmp = fcmp ugt double %a, %b
575709e4ad0SWeining Lu  %res = select i1 %cmp, i32 %x, i32 %y
576709e4ad0SWeining Lu  ret i32 %res
577709e4ad0SWeining Lu}
578709e4ad0SWeining Lu
579709e4ad0SWeining Ludefine i32 @f64_fcmp_uge(double %a, double %b, i32 %x, i32 %y) {
580709e4ad0SWeining Lu; LA32-LABEL: f64_fcmp_uge:
581709e4ad0SWeining Lu; LA32:       # %bb.0:
582709e4ad0SWeining Lu; LA32-NEXT:    fcmp.cule.d $fcc0, $fa1, $fa0
583709e4ad0SWeining Lu; LA32-NEXT:    movcf2gr $a2, $fcc0
584709e4ad0SWeining Lu; LA32-NEXT:    masknez $a1, $a1, $a2
585709e4ad0SWeining Lu; LA32-NEXT:    maskeqz $a0, $a0, $a2
586709e4ad0SWeining Lu; LA32-NEXT:    or $a0, $a0, $a1
587*ed078c48SWANG Xuerui; LA32-NEXT:    ret
588709e4ad0SWeining Lu;
589709e4ad0SWeining Lu; LA64-LABEL: f64_fcmp_uge:
590709e4ad0SWeining Lu; LA64:       # %bb.0:
591709e4ad0SWeining Lu; LA64-NEXT:    fcmp.cule.d $fcc0, $fa1, $fa0
592709e4ad0SWeining Lu; LA64-NEXT:    movcf2gr $a2, $fcc0
593709e4ad0SWeining Lu; LA64-NEXT:    masknez $a1, $a1, $a2
594709e4ad0SWeining Lu; LA64-NEXT:    maskeqz $a0, $a0, $a2
595709e4ad0SWeining Lu; LA64-NEXT:    or $a0, $a0, $a1
596*ed078c48SWANG Xuerui; LA64-NEXT:    ret
597709e4ad0SWeining Lu  %cmp = fcmp uge double %a, %b
598709e4ad0SWeining Lu  %res = select i1 %cmp, i32 %x, i32 %y
599709e4ad0SWeining Lu  ret i32 %res
600709e4ad0SWeining Lu}
601709e4ad0SWeining Lu
602709e4ad0SWeining Ludefine i32 @f64_fcmp_ult(double %a, double %b, i32 %x, i32 %y) {
603709e4ad0SWeining Lu; LA32-LABEL: f64_fcmp_ult:
604709e4ad0SWeining Lu; LA32:       # %bb.0:
605709e4ad0SWeining Lu; LA32-NEXT:    fcmp.cult.d $fcc0, $fa0, $fa1
606709e4ad0SWeining Lu; LA32-NEXT:    movcf2gr $a2, $fcc0
607709e4ad0SWeining Lu; LA32-NEXT:    masknez $a1, $a1, $a2
608709e4ad0SWeining Lu; LA32-NEXT:    maskeqz $a0, $a0, $a2
609709e4ad0SWeining Lu; LA32-NEXT:    or $a0, $a0, $a1
610*ed078c48SWANG Xuerui; LA32-NEXT:    ret
611709e4ad0SWeining Lu;
612709e4ad0SWeining Lu; LA64-LABEL: f64_fcmp_ult:
613709e4ad0SWeining Lu; LA64:       # %bb.0:
614709e4ad0SWeining Lu; LA64-NEXT:    fcmp.cult.d $fcc0, $fa0, $fa1
615709e4ad0SWeining Lu; LA64-NEXT:    movcf2gr $a2, $fcc0
616709e4ad0SWeining Lu; LA64-NEXT:    masknez $a1, $a1, $a2
617709e4ad0SWeining Lu; LA64-NEXT:    maskeqz $a0, $a0, $a2
618709e4ad0SWeining Lu; LA64-NEXT:    or $a0, $a0, $a1
619*ed078c48SWANG Xuerui; LA64-NEXT:    ret
620709e4ad0SWeining Lu  %cmp = fcmp ult double %a, %b
621709e4ad0SWeining Lu  %res = select i1 %cmp, i32 %x, i32 %y
622709e4ad0SWeining Lu  ret i32 %res
623709e4ad0SWeining Lu}
624709e4ad0SWeining Lu
625709e4ad0SWeining Ludefine i32 @f64_fcmp_ule(double %a, double %b, i32 %x, i32 %y) {
626709e4ad0SWeining Lu; LA32-LABEL: f64_fcmp_ule:
627709e4ad0SWeining Lu; LA32:       # %bb.0:
628709e4ad0SWeining Lu; LA32-NEXT:    fcmp.cule.d $fcc0, $fa0, $fa1
629709e4ad0SWeining Lu; LA32-NEXT:    movcf2gr $a2, $fcc0
630709e4ad0SWeining Lu; LA32-NEXT:    masknez $a1, $a1, $a2
631709e4ad0SWeining Lu; LA32-NEXT:    maskeqz $a0, $a0, $a2
632709e4ad0SWeining Lu; LA32-NEXT:    or $a0, $a0, $a1
633*ed078c48SWANG Xuerui; LA32-NEXT:    ret
634709e4ad0SWeining Lu;
635709e4ad0SWeining Lu; LA64-LABEL: f64_fcmp_ule:
636709e4ad0SWeining Lu; LA64:       # %bb.0:
637709e4ad0SWeining Lu; LA64-NEXT:    fcmp.cule.d $fcc0, $fa0, $fa1
638709e4ad0SWeining Lu; LA64-NEXT:    movcf2gr $a2, $fcc0
639709e4ad0SWeining Lu; LA64-NEXT:    masknez $a1, $a1, $a2
640709e4ad0SWeining Lu; LA64-NEXT:    maskeqz $a0, $a0, $a2
641709e4ad0SWeining Lu; LA64-NEXT:    or $a0, $a0, $a1
642*ed078c48SWANG Xuerui; LA64-NEXT:    ret
643709e4ad0SWeining Lu  %cmp = fcmp ule double %a, %b
644709e4ad0SWeining Lu  %res = select i1 %cmp, i32 %x, i32 %y
645709e4ad0SWeining Lu  ret i32 %res
646709e4ad0SWeining Lu}
647709e4ad0SWeining Lu
648709e4ad0SWeining Ludefine i32 @f64_fcmp_une(double %a, double %b, i32 %x, i32 %y) {
649709e4ad0SWeining Lu; LA32-LABEL: f64_fcmp_une:
650709e4ad0SWeining Lu; LA32:       # %bb.0:
651709e4ad0SWeining Lu; LA32-NEXT:    fcmp.cune.d $fcc0, $fa0, $fa1
652709e4ad0SWeining Lu; LA32-NEXT:    movcf2gr $a2, $fcc0
653709e4ad0SWeining Lu; LA32-NEXT:    masknez $a1, $a1, $a2
654709e4ad0SWeining Lu; LA32-NEXT:    maskeqz $a0, $a0, $a2
655709e4ad0SWeining Lu; LA32-NEXT:    or $a0, $a0, $a1
656*ed078c48SWANG Xuerui; LA32-NEXT:    ret
657709e4ad0SWeining Lu;
658709e4ad0SWeining Lu; LA64-LABEL: f64_fcmp_une:
659709e4ad0SWeining Lu; LA64:       # %bb.0:
660709e4ad0SWeining Lu; LA64-NEXT:    fcmp.cune.d $fcc0, $fa0, $fa1
661709e4ad0SWeining Lu; LA64-NEXT:    movcf2gr $a2, $fcc0
662709e4ad0SWeining Lu; LA64-NEXT:    masknez $a1, $a1, $a2
663709e4ad0SWeining Lu; LA64-NEXT:    maskeqz $a0, $a0, $a2
664709e4ad0SWeining Lu; LA64-NEXT:    or $a0, $a0, $a1
665*ed078c48SWANG Xuerui; LA64-NEXT:    ret
666709e4ad0SWeining Lu  %cmp = fcmp une double %a, %b
667709e4ad0SWeining Lu  %res = select i1 %cmp, i32 %x, i32 %y
668709e4ad0SWeining Lu  ret i32 %res
669709e4ad0SWeining Lu}
670709e4ad0SWeining Lu
671709e4ad0SWeining Ludefine i32 @f64_fcmp_uno(double %a, double %b, i32 %x, i32 %y) {
672709e4ad0SWeining Lu; LA32-LABEL: f64_fcmp_uno:
673709e4ad0SWeining Lu; LA32:       # %bb.0:
674709e4ad0SWeining Lu; LA32-NEXT:    fcmp.cun.d $fcc0, $fa0, $fa1
675709e4ad0SWeining Lu; LA32-NEXT:    movcf2gr $a2, $fcc0
676709e4ad0SWeining Lu; LA32-NEXT:    masknez $a1, $a1, $a2
677709e4ad0SWeining Lu; LA32-NEXT:    maskeqz $a0, $a0, $a2
678709e4ad0SWeining Lu; LA32-NEXT:    or $a0, $a0, $a1
679*ed078c48SWANG Xuerui; LA32-NEXT:    ret
680709e4ad0SWeining Lu;
681709e4ad0SWeining Lu; LA64-LABEL: f64_fcmp_uno:
682709e4ad0SWeining Lu; LA64:       # %bb.0:
683709e4ad0SWeining Lu; LA64-NEXT:    fcmp.cun.d $fcc0, $fa0, $fa1
684709e4ad0SWeining Lu; LA64-NEXT:    movcf2gr $a2, $fcc0
685709e4ad0SWeining Lu; LA64-NEXT:    masknez $a1, $a1, $a2
686709e4ad0SWeining Lu; LA64-NEXT:    maskeqz $a0, $a0, $a2
687709e4ad0SWeining Lu; LA64-NEXT:    or $a0, $a0, $a1
688*ed078c48SWANG Xuerui; LA64-NEXT:    ret
689709e4ad0SWeining Lu  %cmp = fcmp uno double %a, %b
690709e4ad0SWeining Lu  %res = select i1 %cmp, i32 %x, i32 %y
691709e4ad0SWeining Lu  ret i32 %res
692709e4ad0SWeining Lu}
693709e4ad0SWeining Lu
694709e4ad0SWeining Ludefine i32 @f64_fcmp_true(double %a, double %b, i32 %x, i32 %y) {
695709e4ad0SWeining Lu; LA32-LABEL: f64_fcmp_true:
696709e4ad0SWeining Lu; LA32:       # %bb.0:
697*ed078c48SWANG Xuerui; LA32-NEXT:    ret
698709e4ad0SWeining Lu;
699709e4ad0SWeining Lu; LA64-LABEL: f64_fcmp_true:
700709e4ad0SWeining Lu; LA64:       # %bb.0:
701*ed078c48SWANG Xuerui; LA64-NEXT:    ret
702709e4ad0SWeining Lu  %cmp = fcmp true double %a, %b
703709e4ad0SWeining Lu  %res = select i1 %cmp, i32 %x, i32 %y
704709e4ad0SWeining Lu  ret i32 %res
705709e4ad0SWeining Lu}
706