xref: /aosp_15_r20/external/llvm/test/CodeGen/Mips/fcmp.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -march=mips -mcpu=mips32 | \
2*9880d681SAndroid Build Coastguard Worker; RUN:    FileCheck %s -check-prefixes=ALL,32-C
3*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -march=mips -mcpu=mips32r2 | \
4*9880d681SAndroid Build Coastguard Worker; RUN:    FileCheck %s -check-prefixes=ALL,32-C
5*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -march=mips -mcpu=mips32r6 | \
6*9880d681SAndroid Build Coastguard Worker; RUN:    FileCheck %s -check-prefixes=ALL,32-CMP
7*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -march=mips64 -mcpu=mips4 | \
8*9880d681SAndroid Build Coastguard Worker; RUN:    FileCheck %s -check-prefixes=ALL,64-C
9*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -march=mips64 -mcpu=mips64 | \
10*9880d681SAndroid Build Coastguard Worker; RUN:    FileCheck %s -check-prefixes=ALL,64-C
11*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -march=mips64 -mcpu=mips64r2 | \
12*9880d681SAndroid Build Coastguard Worker; RUN:    FileCheck %s -check-prefixes=ALL,64-C
13*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -march=mips64 -mcpu=mips64r6 | \
14*9880d681SAndroid Build Coastguard Worker; RUN:    FileCheck %s -check-prefixes=ALL,64-CMP
15*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -march=mips -mcpu=mips32r3 -mattr=+micromips | FileCheck %s \
16*9880d681SAndroid Build Coastguard Worker; RUN:    -check-prefixes=ALL,MM,MM32R3
17*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -march=mips -mcpu=mips32r6 -mattr=+micromips | FileCheck %s \
18*9880d681SAndroid Build Coastguard Worker; RUN:    -check-prefixes=ALL,MM,MMR6,MM32R6
19*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -march=mips64 -mcpu=mips64r6 -mattr=+micromips | FileCheck %s \
20*9880d681SAndroid Build Coastguard Worker; RUN:    -check-prefixes=ALL,MM,MMR6,MM64R6
21*9880d681SAndroid Build Coastguard Worker
22*9880d681SAndroid Build Coastguard Workerdefine i32 @false_f32(float %a, float %b) nounwind {
23*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: false_f32:
24*9880d681SAndroid Build Coastguard Worker; 32-C:          addiu $2, $zero, 0
25*9880d681SAndroid Build Coastguard Worker
26*9880d681SAndroid Build Coastguard Worker; 32-CMP:        addiu $2, $zero, 0
27*9880d681SAndroid Build Coastguard Worker
28*9880d681SAndroid Build Coastguard Worker; 64-C:          addiu $2, $zero, 0
29*9880d681SAndroid Build Coastguard Worker
30*9880d681SAndroid Build Coastguard Worker; 64-CMP:        addiu $2, $zero, 0
31*9880d681SAndroid Build Coastguard Worker
32*9880d681SAndroid Build Coastguard Worker; MM-DAG:        lui $2, 0
33*9880d681SAndroid Build Coastguard Worker
34*9880d681SAndroid Build Coastguard Worker  %1 = fcmp false float %a, %b
35*9880d681SAndroid Build Coastguard Worker  %2 = zext i1 %1 to i32
36*9880d681SAndroid Build Coastguard Worker  ret i32 %2
37*9880d681SAndroid Build Coastguard Worker}
38*9880d681SAndroid Build Coastguard Worker
39*9880d681SAndroid Build Coastguard Workerdefine i32 @oeq_f32(float %a, float %b) nounwind {
40*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: oeq_f32:
41*9880d681SAndroid Build Coastguard Worker
42*9880d681SAndroid Build Coastguard Worker; 32-C-DAG:      addiu $2, $zero, 1
43*9880d681SAndroid Build Coastguard Worker; 32-C-DAG:      c.eq.s $f12, $f14
44*9880d681SAndroid Build Coastguard Worker; 32-C:          movf $2, $zero, $fcc0
45*9880d681SAndroid Build Coastguard Worker
46*9880d681SAndroid Build Coastguard Worker; 64-C-DAG:      addiu $2, $zero, 1
47*9880d681SAndroid Build Coastguard Worker; 64-C-DAG:      c.eq.s $f12, $f13
48*9880d681SAndroid Build Coastguard Worker; 64-C:          movf $2, $zero, $fcc0
49*9880d681SAndroid Build Coastguard Worker
50*9880d681SAndroid Build Coastguard Worker; 32-CMP-DAG:    cmp.eq.s $[[T0:f[0-9]+]], $f12, $f14
51*9880d681SAndroid Build Coastguard Worker; 32-CMP-DAG:    mfc1 $[[T1:[0-9]+]], $[[T0]]
52*9880d681SAndroid Build Coastguard Worker; 32-CMP-DAG:    andi $2, $[[T1]], 1
53*9880d681SAndroid Build Coastguard Worker
54*9880d681SAndroid Build Coastguard Worker; 64-CMP-DAG:    cmp.eq.s $[[T0:f[0-9]+]], $f12, $f13
55*9880d681SAndroid Build Coastguard Worker; 64-CMP-DAG:    mfc1 $[[T1:[0-9]+]], $[[T0]]
56*9880d681SAndroid Build Coastguard Worker; 64-CMP-DAG:    andi $2, $[[T1]], 1
57*9880d681SAndroid Build Coastguard Worker
58*9880d681SAndroid Build Coastguard Worker; MM32R3-DAG:    lui $[[T0:[0-9]+]], 0
59*9880d681SAndroid Build Coastguard Worker; MM32R3-DAG:    li16 $[[T1:[0-9]+]], 1
60*9880d681SAndroid Build Coastguard Worker; MM32R3-DAG:    c.eq.s $f12, $f14
61*9880d681SAndroid Build Coastguard Worker; MM32R3-DAG:    movf $[[T1]], $[[T0]], $fcc0
62*9880d681SAndroid Build Coastguard Worker
63*9880d681SAndroid Build Coastguard Worker; MM32R6-DAG:    cmp.eq.s $[[T0:f[0-9]+]], $f12, $f14
64*9880d681SAndroid Build Coastguard Worker; MM64R6-DAG:    cmp.eq.s $[[T0:f[0-9]+]], $f12, $f13
65*9880d681SAndroid Build Coastguard Worker; MMR6-DAG:      mfc1 $[[T1:[0-9]+]], $[[T0]]
66*9880d681SAndroid Build Coastguard Worker; MMR6-DAG:      andi16 $2, $[[T1]], 1
67*9880d681SAndroid Build Coastguard Worker
68*9880d681SAndroid Build Coastguard Worker  %1 = fcmp oeq float %a, %b
69*9880d681SAndroid Build Coastguard Worker  %2 = zext i1 %1 to i32
70*9880d681SAndroid Build Coastguard Worker  ret i32 %2
71*9880d681SAndroid Build Coastguard Worker}
72*9880d681SAndroid Build Coastguard Worker
73*9880d681SAndroid Build Coastguard Workerdefine i32 @ogt_f32(float %a, float %b) nounwind {
74*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: ogt_f32:
75*9880d681SAndroid Build Coastguard Worker
76*9880d681SAndroid Build Coastguard Worker; 32-C-DAG:      addiu $2, $zero, 1
77*9880d681SAndroid Build Coastguard Worker; 32-C-DAG:      c.ule.s $f12, $f14
78*9880d681SAndroid Build Coastguard Worker; 32-C:          movt $2, $zero, $fcc0
79*9880d681SAndroid Build Coastguard Worker
80*9880d681SAndroid Build Coastguard Worker; 64-C-DAG:      addiu $2, $zero, 1
81*9880d681SAndroid Build Coastguard Worker; 64-C-DAG:      c.ule.s $f12, $f13
82*9880d681SAndroid Build Coastguard Worker; 64-C:          movt $2, $zero, $fcc0
83*9880d681SAndroid Build Coastguard Worker
84*9880d681SAndroid Build Coastguard Worker; 32-CMP-DAG:    cmp.lt.s $[[T0:f[0-9]+]], $f14, $f12
85*9880d681SAndroid Build Coastguard Worker; 32-CMP-DAG:    mfc1 $[[T1:[0-9]+]], $[[T0]]
86*9880d681SAndroid Build Coastguard Worker; 32-CMP-DAG:    andi $2, $[[T1]], 1
87*9880d681SAndroid Build Coastguard Worker
88*9880d681SAndroid Build Coastguard Worker; 64-CMP-DAG:    cmp.lt.s $[[T0:f[0-9]+]], $f13, $f12
89*9880d681SAndroid Build Coastguard Worker; 64-CMP-DAG:    mfc1 $[[T1:[0-9]+]], $[[T0]]
90*9880d681SAndroid Build Coastguard Worker; 64-CMP-DAG:    andi $2, $[[T1]], 1
91*9880d681SAndroid Build Coastguard Worker
92*9880d681SAndroid Build Coastguard Worker; MM32R3-DAG:    lui $[[T0:[0-9]+]], 0
93*9880d681SAndroid Build Coastguard Worker; MM32R3-DAG:    li16 $[[T1:[0-9]+]], 1
94*9880d681SAndroid Build Coastguard Worker; MM32R3-DAG:    c.ule.s $f12, $f14
95*9880d681SAndroid Build Coastguard Worker; MM32R3-DAG:    movt $[[T1]], $[[T0]], $fcc0
96*9880d681SAndroid Build Coastguard Worker
97*9880d681SAndroid Build Coastguard Worker; MM32R6-DAG:    cmp.lt.s $[[T0:f[0-9]+]], $f14, $f12
98*9880d681SAndroid Build Coastguard Worker; MM64R6-DAG:    cmp.lt.s $[[T0:f[0-9]+]], $f13, $f12
99*9880d681SAndroid Build Coastguard Worker; MMR6-DAG:      mfc1 $[[T1:[0-9]+]], $[[T0]]
100*9880d681SAndroid Build Coastguard Worker; MMR6-DAG:      andi16 $2, $[[T1]], 1
101*9880d681SAndroid Build Coastguard Worker
102*9880d681SAndroid Build Coastguard Worker  %1 = fcmp ogt float %a, %b
103*9880d681SAndroid Build Coastguard Worker  %2 = zext i1 %1 to i32
104*9880d681SAndroid Build Coastguard Worker  ret i32 %2
105*9880d681SAndroid Build Coastguard Worker}
106*9880d681SAndroid Build Coastguard Worker
107*9880d681SAndroid Build Coastguard Workerdefine i32 @oge_f32(float %a, float %b) nounwind {
108*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: oge_f32:
109*9880d681SAndroid Build Coastguard Worker
110*9880d681SAndroid Build Coastguard Worker; 32-C-DAG:      addiu $2, $zero, 1
111*9880d681SAndroid Build Coastguard Worker; 32-C-DAG:      c.ult.s $f12, $f14
112*9880d681SAndroid Build Coastguard Worker; 32-C:          movt $2, $zero, $fcc0
113*9880d681SAndroid Build Coastguard Worker
114*9880d681SAndroid Build Coastguard Worker; 64-C-DAG:      addiu $2, $zero, 1
115*9880d681SAndroid Build Coastguard Worker; 64-C-DAG:      c.ult.s $f12, $f13
116*9880d681SAndroid Build Coastguard Worker; 64-C:          movt $2, $zero, $fcc0
117*9880d681SAndroid Build Coastguard Worker
118*9880d681SAndroid Build Coastguard Worker; 32-CMP-DAG:    cmp.le.s $[[T0:f[0-9]+]], $f14, $f12
119*9880d681SAndroid Build Coastguard Worker; 32-CMP-DAG:    mfc1 $[[T1:[0-9]+]], $[[T0]]
120*9880d681SAndroid Build Coastguard Worker; 32-CMP-DAG:    andi $2, $[[T1]], 1
121*9880d681SAndroid Build Coastguard Worker
122*9880d681SAndroid Build Coastguard Worker; 64-CMP-DAG:    cmp.le.s $[[T0:f[0-9]+]], $f13, $f12
123*9880d681SAndroid Build Coastguard Worker; 64-CMP-DAG:    mfc1 $[[T1:[0-9]+]], $[[T0]]
124*9880d681SAndroid Build Coastguard Worker; 64-CMP-DAG:    andi $2, $[[T1]], 1
125*9880d681SAndroid Build Coastguard Worker
126*9880d681SAndroid Build Coastguard Worker; MM32R3-DAG:    lui $[[T0:[0-9]+]], 0
127*9880d681SAndroid Build Coastguard Worker; MM32R3-DAG:    li16 $[[T1:[0-9]+]], 1
128*9880d681SAndroid Build Coastguard Worker; MM32R3-DAG:    c.ult.s $f12, $f14
129*9880d681SAndroid Build Coastguard Worker; MM32R3-DAG:    movt $[[T1]], $[[T0]], $fcc0
130*9880d681SAndroid Build Coastguard Worker
131*9880d681SAndroid Build Coastguard Worker; MM32R6-DAG:    cmp.le.s $[[T0:f[0-9]+]], $f14, $f12
132*9880d681SAndroid Build Coastguard Worker; MM64R6-DAG:    cmp.le.s $[[T0:f[0-9]+]], $f13, $f12
133*9880d681SAndroid Build Coastguard Worker; MMR6-DAG:      mfc1 $[[T1:[0-9]+]], $[[T0]]
134*9880d681SAndroid Build Coastguard Worker; MMR6-DAG:      andi16 $2, $[[T1]], 1
135*9880d681SAndroid Build Coastguard Worker
136*9880d681SAndroid Build Coastguard Worker  %1 = fcmp oge float %a, %b
137*9880d681SAndroid Build Coastguard Worker  %2 = zext i1 %1 to i32
138*9880d681SAndroid Build Coastguard Worker  ret i32 %2
139*9880d681SAndroid Build Coastguard Worker}
140*9880d681SAndroid Build Coastguard Worker
141*9880d681SAndroid Build Coastguard Workerdefine i32 @olt_f32(float %a, float %b) nounwind {
142*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: olt_f32:
143*9880d681SAndroid Build Coastguard Worker
144*9880d681SAndroid Build Coastguard Worker; 32-C-DAG:      addiu $2, $zero, 1
145*9880d681SAndroid Build Coastguard Worker; 32-C-DAG:      c.olt.s $f12, $f14
146*9880d681SAndroid Build Coastguard Worker; 32-C:          movf $2, $zero, $fcc0
147*9880d681SAndroid Build Coastguard Worker
148*9880d681SAndroid Build Coastguard Worker; 64-C-DAG:      addiu $2, $zero, 1
149*9880d681SAndroid Build Coastguard Worker; 64-C-DAG:      c.olt.s $f12, $f13
150*9880d681SAndroid Build Coastguard Worker; 64-C:          movf $2, $zero, $fcc0
151*9880d681SAndroid Build Coastguard Worker
152*9880d681SAndroid Build Coastguard Worker; 32-CMP-DAG:    cmp.lt.s $[[T0:f[0-9]+]], $f12, $f14
153*9880d681SAndroid Build Coastguard Worker; 32-CMP-DAG:    mfc1 $[[T1:[0-9]+]], $[[T0]]
154*9880d681SAndroid Build Coastguard Worker; 32-CMP-DAG:    andi $2, $[[T1]], 1
155*9880d681SAndroid Build Coastguard Worker
156*9880d681SAndroid Build Coastguard Worker; 64-CMP-DAG:    cmp.lt.s $[[T0:f[0-9]+]], $f12, $f13
157*9880d681SAndroid Build Coastguard Worker; 64-CMP-DAG:    mfc1 $[[T1:[0-9]+]], $[[T0]]
158*9880d681SAndroid Build Coastguard Worker; 64-CMP-DAG:    andi $2, $[[T1]], 1
159*9880d681SAndroid Build Coastguard Worker
160*9880d681SAndroid Build Coastguard Worker; MM32R3-DAG:    lui $[[T0:[0-9]+]], 0
161*9880d681SAndroid Build Coastguard Worker; MM32R3-DAG:    li16 $[[T1:[0-9]+]], 1
162*9880d681SAndroid Build Coastguard Worker; MM32R3-DAG:    c.olt.s $f12, $f14
163*9880d681SAndroid Build Coastguard Worker; MM32R3-DAG:    movf $[[T1]], $[[T0]], $fcc0
164*9880d681SAndroid Build Coastguard Worker
165*9880d681SAndroid Build Coastguard Worker; MM32R6-DAG:    cmp.lt.s $[[T0:f[0-9]+]], $f12, $f14
166*9880d681SAndroid Build Coastguard Worker; MM64R6-DAG:    cmp.lt.s $[[T0:f[0-9]+]], $f12, $f13
167*9880d681SAndroid Build Coastguard Worker; MMR6-DAG:      mfc1 $[[T1:[0-9]+]], $[[T0]]
168*9880d681SAndroid Build Coastguard Worker; MMR6-DAG:      andi16 $2, $[[T1]], 1
169*9880d681SAndroid Build Coastguard Worker
170*9880d681SAndroid Build Coastguard Worker  %1 = fcmp olt float %a, %b
171*9880d681SAndroid Build Coastguard Worker  %2 = zext i1 %1 to i32
172*9880d681SAndroid Build Coastguard Worker  ret i32 %2
173*9880d681SAndroid Build Coastguard Worker}
174*9880d681SAndroid Build Coastguard Worker
175*9880d681SAndroid Build Coastguard Workerdefine i32 @ole_f32(float %a, float %b) nounwind {
176*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: ole_f32:
177*9880d681SAndroid Build Coastguard Worker
178*9880d681SAndroid Build Coastguard Worker; 32-C-DAG:      addiu $2, $zero, 1
179*9880d681SAndroid Build Coastguard Worker; 32-C-DAG:      c.ole.s $f12, $f14
180*9880d681SAndroid Build Coastguard Worker; 32-C:          movf $2, $zero, $fcc0
181*9880d681SAndroid Build Coastguard Worker
182*9880d681SAndroid Build Coastguard Worker; 64-C-DAG:      addiu $2, $zero, 1
183*9880d681SAndroid Build Coastguard Worker; 64-C-DAG:      c.ole.s $f12, $f13
184*9880d681SAndroid Build Coastguard Worker; 64-C:          movf $2, $zero, $fcc0
185*9880d681SAndroid Build Coastguard Worker
186*9880d681SAndroid Build Coastguard Worker; 32-CMP-DAG:    cmp.le.s $[[T0:f[0-9]+]], $f12, $f14
187*9880d681SAndroid Build Coastguard Worker; 32-CMP-DAG:    mfc1 $[[T1:[0-9]+]], $[[T0]]
188*9880d681SAndroid Build Coastguard Worker; 32-CMP-DAG:    andi $2, $[[T1]], 1
189*9880d681SAndroid Build Coastguard Worker
190*9880d681SAndroid Build Coastguard Worker; 64-CMP-DAG:    cmp.le.s $[[T0:f[0-9]+]], $f12, $f13
191*9880d681SAndroid Build Coastguard Worker; 64-CMP-DAG:    mfc1 $[[T1:[0-9]+]], $[[T0]]
192*9880d681SAndroid Build Coastguard Worker; 64-CMP-DAG:    andi $2, $[[T1]], 1
193*9880d681SAndroid Build Coastguard Worker
194*9880d681SAndroid Build Coastguard Worker; MM32R3-DAG:    lui $[[T0:[0-9]+]], 0
195*9880d681SAndroid Build Coastguard Worker; MM32R3-DAG:    li16 $[[T1:[0-9]+]], 1
196*9880d681SAndroid Build Coastguard Worker; MM32R3-DAG:    c.ole.s $f12, $f14
197*9880d681SAndroid Build Coastguard Worker; MM32R3-DAG:    movf $[[T1]], $[[T0]], $fcc0
198*9880d681SAndroid Build Coastguard Worker
199*9880d681SAndroid Build Coastguard Worker; MM32R6-DAG:    cmp.le.s $[[T0:f[0-9]+]], $f12, $f14
200*9880d681SAndroid Build Coastguard Worker; MM64R6-DAG:    cmp.le.s $[[T0:f[0-9]+]], $f12, $f13
201*9880d681SAndroid Build Coastguard Worker; MMR6-DAG:      mfc1 $[[T1:[0-9]+]], $[[T0]]
202*9880d681SAndroid Build Coastguard Worker; MMR6-DAG:      andi16 $2, $[[T1]], 1
203*9880d681SAndroid Build Coastguard Worker
204*9880d681SAndroid Build Coastguard Worker  %1 = fcmp ole float %a, %b
205*9880d681SAndroid Build Coastguard Worker  %2 = zext i1 %1 to i32
206*9880d681SAndroid Build Coastguard Worker  ret i32 %2
207*9880d681SAndroid Build Coastguard Worker}
208*9880d681SAndroid Build Coastguard Worker
209*9880d681SAndroid Build Coastguard Workerdefine i32 @one_f32(float %a, float %b) nounwind {
210*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: one_f32:
211*9880d681SAndroid Build Coastguard Worker
212*9880d681SAndroid Build Coastguard Worker; 32-C-DAG:      addiu $2, $zero, 1
213*9880d681SAndroid Build Coastguard Worker; 32-C-DAG:      c.ueq.s $f12, $f14
214*9880d681SAndroid Build Coastguard Worker; 32-C:          movt $2, $zero, $fcc0
215*9880d681SAndroid Build Coastguard Worker
216*9880d681SAndroid Build Coastguard Worker; 64-C-DAG:      addiu $2, $zero, 1
217*9880d681SAndroid Build Coastguard Worker; 64-C-DAG:      c.ueq.s $f12, $f13
218*9880d681SAndroid Build Coastguard Worker; 64-C:          movt $2, $zero, $fcc0
219*9880d681SAndroid Build Coastguard Worker
220*9880d681SAndroid Build Coastguard Worker; 32-CMP-DAG:    cmp.ueq.s $[[T0:f[0-9]+]], $f12, $f14
221*9880d681SAndroid Build Coastguard Worker; 32-CMP-DAG:    mfc1 $[[T1:[0-9]+]], $[[T0]]
222*9880d681SAndroid Build Coastguard Worker; 32-CMP-DAG:    not $[[T2:[0-9]+]], $[[T1]]
223*9880d681SAndroid Build Coastguard Worker; 32-CMP-DAG:    andi $2, $[[T2]], 1
224*9880d681SAndroid Build Coastguard Worker
225*9880d681SAndroid Build Coastguard Worker; 64-CMP-DAG:    cmp.ueq.s $[[T0:f[0-9]+]], $f12, $f13
226*9880d681SAndroid Build Coastguard Worker; 64-CMP-DAG:    mfc1 $[[T1:[0-9]+]], $[[T0]]
227*9880d681SAndroid Build Coastguard Worker; 64-CMP-DAG:    not $[[T2:[0-9]+]], $[[T1]]
228*9880d681SAndroid Build Coastguard Worker; 64-CMP-DAG:    andi $2, $[[T2]], 1
229*9880d681SAndroid Build Coastguard Worker
230*9880d681SAndroid Build Coastguard Worker; MM32R3-DAG:    lui $[[T0:[0-9]+]], 0
231*9880d681SAndroid Build Coastguard Worker; MM32R3-DAG:    li16 $[[T1:[0-9]+]], 1
232*9880d681SAndroid Build Coastguard Worker; MM32R3-DAG:    c.ueq.s $f12, $f14
233*9880d681SAndroid Build Coastguard Worker; MM32R3-DAG:    movt $[[T1]], $[[T0]], $fcc0
234*9880d681SAndroid Build Coastguard Worker
235*9880d681SAndroid Build Coastguard Worker; MM32R6-DAG:    cmp.ueq.s $[[T0:f[0-9]+]], $f12, $f14
236*9880d681SAndroid Build Coastguard Worker; MM64R6-DAG:    cmp.ueq.s $[[T0:f[0-9]+]], $f12, $f13
237*9880d681SAndroid Build Coastguard Worker; MMR6-DAG:      mfc1 $[[T1:[0-9]+]], $[[T0]]
238*9880d681SAndroid Build Coastguard Worker; MMR6-DAG:      not $[[T2:[0-9]+]], $[[T1]]
239*9880d681SAndroid Build Coastguard Worker; MMR6-DAG:      andi16 $2, $[[T2]], 1
240*9880d681SAndroid Build Coastguard Worker
241*9880d681SAndroid Build Coastguard Worker  %1 = fcmp one float %a, %b
242*9880d681SAndroid Build Coastguard Worker  %2 = zext i1 %1 to i32
243*9880d681SAndroid Build Coastguard Worker  ret i32 %2
244*9880d681SAndroid Build Coastguard Worker}
245*9880d681SAndroid Build Coastguard Worker
246*9880d681SAndroid Build Coastguard Workerdefine i32 @ord_f32(float %a, float %b) nounwind {
247*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: ord_f32:
248*9880d681SAndroid Build Coastguard Worker
249*9880d681SAndroid Build Coastguard Worker; 32-C-DAG:      addiu $2, $zero, 1
250*9880d681SAndroid Build Coastguard Worker; 32-C-DAG:      c.un.s $f12, $f14
251*9880d681SAndroid Build Coastguard Worker; 32-C:          movt $2, $zero, $fcc0
252*9880d681SAndroid Build Coastguard Worker
253*9880d681SAndroid Build Coastguard Worker; 64-C-DAG:      addiu $2, $zero, 1
254*9880d681SAndroid Build Coastguard Worker; 64-C-DAG:      c.un.s $f12, $f13
255*9880d681SAndroid Build Coastguard Worker; 64-C:          movt $2, $zero, $fcc0
256*9880d681SAndroid Build Coastguard Worker
257*9880d681SAndroid Build Coastguard Worker; 32-CMP-DAG:    cmp.un.s $[[T0:f[0-9]+]], $f12, $f14
258*9880d681SAndroid Build Coastguard Worker; 32-CMP-DAG:    mfc1 $[[T1:[0-9]+]], $[[T0]]
259*9880d681SAndroid Build Coastguard Worker; 32-CMP-DAG:    not $[[T2:[0-9]+]], $[[T1]]
260*9880d681SAndroid Build Coastguard Worker; 32-CMP-DAG:    andi $2, $[[T2]], 1
261*9880d681SAndroid Build Coastguard Worker
262*9880d681SAndroid Build Coastguard Worker; 64-CMP-DAG:    cmp.un.s $[[T0:f[0-9]+]], $f12, $f13
263*9880d681SAndroid Build Coastguard Worker; 64-CMP-DAG:    mfc1 $[[T1:[0-9]+]], $[[T0]]
264*9880d681SAndroid Build Coastguard Worker; 64-CMP-DAG:    not $[[T2:[0-9]+]], $[[T1]]
265*9880d681SAndroid Build Coastguard Worker; 64-CMP-DAG:    andi $2, $[[T2]], 1
266*9880d681SAndroid Build Coastguard Worker
267*9880d681SAndroid Build Coastguard Worker; MM32R3-DAG:    lui $[[T0:[0-9]+]], 0
268*9880d681SAndroid Build Coastguard Worker; MM32R3-DAG:    li16 $[[T1:[0-9]+]], 1
269*9880d681SAndroid Build Coastguard Worker; MM32R3-DAG:    c.un.s  $f12, $f14
270*9880d681SAndroid Build Coastguard Worker; MM32R3-DAG:    movt $[[T1]], $[[T0]], $fcc0
271*9880d681SAndroid Build Coastguard Worker
272*9880d681SAndroid Build Coastguard Worker; MM32R6-DAG:    cmp.un.s $[[T0:f[0-9]+]], $f12, $f14
273*9880d681SAndroid Build Coastguard Worker; MM64R6-DAG:    cmp.un.s $[[T0:f[0-9]+]], $f12, $f13
274*9880d681SAndroid Build Coastguard Worker; MMR6-DAG:      mfc1 $[[T1:[0-9]+]], $[[T0]]
275*9880d681SAndroid Build Coastguard Worker; MMR6-DAG:      not $[[T2:[0-9]+]], $[[T1]]
276*9880d681SAndroid Build Coastguard Worker; MMR6-DAG:      andi16 $2, $[[T2]], 1
277*9880d681SAndroid Build Coastguard Worker
278*9880d681SAndroid Build Coastguard Worker  %1 = fcmp ord float %a, %b
279*9880d681SAndroid Build Coastguard Worker  %2 = zext i1 %1 to i32
280*9880d681SAndroid Build Coastguard Worker  ret i32 %2
281*9880d681SAndroid Build Coastguard Worker}
282*9880d681SAndroid Build Coastguard Worker
283*9880d681SAndroid Build Coastguard Workerdefine i32 @ueq_f32(float %a, float %b) nounwind {
284*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: ueq_f32:
285*9880d681SAndroid Build Coastguard Worker
286*9880d681SAndroid Build Coastguard Worker; 32-C-DAG:      addiu $2, $zero, 1
287*9880d681SAndroid Build Coastguard Worker; 32-C-DAG:      c.ueq.s $f12, $f14
288*9880d681SAndroid Build Coastguard Worker; 32-C:          movf $2, $zero, $fcc0
289*9880d681SAndroid Build Coastguard Worker
290*9880d681SAndroid Build Coastguard Worker; 64-C-DAG:      addiu $2, $zero, 1
291*9880d681SAndroid Build Coastguard Worker; 64-C-DAG:      c.ueq.s $f12, $f13
292*9880d681SAndroid Build Coastguard Worker; 64-C:          movf $2, $zero, $fcc0
293*9880d681SAndroid Build Coastguard Worker
294*9880d681SAndroid Build Coastguard Worker; 32-CMP-DAG:    cmp.ueq.s $[[T0:f[0-9]+]], $f12, $f14
295*9880d681SAndroid Build Coastguard Worker; 32-CMP-DAG:    mfc1 $[[T1:[0-9]+]], $[[T0]]
296*9880d681SAndroid Build Coastguard Worker; 32-CMP-DAG:    andi $2, $[[T1]], 1
297*9880d681SAndroid Build Coastguard Worker
298*9880d681SAndroid Build Coastguard Worker; 64-CMP-DAG:    cmp.ueq.s $[[T0:f[0-9]+]], $f12, $f13
299*9880d681SAndroid Build Coastguard Worker; 64-CMP-DAG:    mfc1 $[[T1:[0-9]+]], $[[T0]]
300*9880d681SAndroid Build Coastguard Worker; 64-CMP-DAG:    andi $2, $[[T1]], 1
301*9880d681SAndroid Build Coastguard Worker
302*9880d681SAndroid Build Coastguard Worker; MM32R3-DAG:    lui $[[T0:[0-9]+]], 0
303*9880d681SAndroid Build Coastguard Worker; MM32R3-DAG:    li16 $[[T1:[0-9]+]], 1
304*9880d681SAndroid Build Coastguard Worker; MM32R3-DAG:    c.ueq.s $f12, $f14
305*9880d681SAndroid Build Coastguard Worker; MM32R3-DAG:    movf $[[T1]], $[[T0]], $fcc0
306*9880d681SAndroid Build Coastguard Worker
307*9880d681SAndroid Build Coastguard Worker; MM32R6-DAG:    cmp.ueq.s $[[T0:f[0-9]+]], $f12, $f14
308*9880d681SAndroid Build Coastguard Worker; MM64R6-DAG:    cmp.ueq.s $[[T0:f[0-9]+]], $f12, $f13
309*9880d681SAndroid Build Coastguard Worker; MMR6-DAG:      mfc1 $[[T1:[0-9]+]], $[[T0]]
310*9880d681SAndroid Build Coastguard Worker; MMR6-DAG:      andi16 $2, $[[T1]], 1
311*9880d681SAndroid Build Coastguard Worker
312*9880d681SAndroid Build Coastguard Worker  %1 = fcmp ueq float %a, %b
313*9880d681SAndroid Build Coastguard Worker  %2 = zext i1 %1 to i32
314*9880d681SAndroid Build Coastguard Worker  ret i32 %2
315*9880d681SAndroid Build Coastguard Worker}
316*9880d681SAndroid Build Coastguard Worker
317*9880d681SAndroid Build Coastguard Workerdefine i32 @ugt_f32(float %a, float %b) nounwind {
318*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: ugt_f32:
319*9880d681SAndroid Build Coastguard Worker
320*9880d681SAndroid Build Coastguard Worker; 32-C-DAG:      addiu $2, $zero, 1
321*9880d681SAndroid Build Coastguard Worker; 32-C-DAG:      c.ole.s $f12, $f14
322*9880d681SAndroid Build Coastguard Worker; 32-C:          movt $2, $zero, $fcc0
323*9880d681SAndroid Build Coastguard Worker
324*9880d681SAndroid Build Coastguard Worker; 64-C-DAG:      addiu $2, $zero, 1
325*9880d681SAndroid Build Coastguard Worker; 64-C-DAG:      c.ole.s $f12, $f13
326*9880d681SAndroid Build Coastguard Worker; 64-C:          movt $2, $zero, $fcc0
327*9880d681SAndroid Build Coastguard Worker
328*9880d681SAndroid Build Coastguard Worker; 32-CMP-DAG:    cmp.ult.s $[[T0:f[0-9]+]], $f14, $f12
329*9880d681SAndroid Build Coastguard Worker; 32-CMP-DAG:    mfc1 $[[T1:[0-9]+]], $[[T0]]
330*9880d681SAndroid Build Coastguard Worker; 32-CMP-DAG:    andi $2, $[[T1]], 1
331*9880d681SAndroid Build Coastguard Worker
332*9880d681SAndroid Build Coastguard Worker; 64-CMP-DAG:    cmp.ult.s $[[T0:f[0-9]+]], $f13, $f12
333*9880d681SAndroid Build Coastguard Worker; 64-CMP-DAG:    mfc1 $[[T1:[0-9]+]], $[[T0]]
334*9880d681SAndroid Build Coastguard Worker; 64-CMP-DAG:    andi $2, $[[T1]], 1
335*9880d681SAndroid Build Coastguard Worker
336*9880d681SAndroid Build Coastguard Worker; MM32R3-DAG:    lui $[[T0:[0-9]+]], 0
337*9880d681SAndroid Build Coastguard Worker; MM32R3-DAG:    li16 $[[T1:[0-9]+]], 1
338*9880d681SAndroid Build Coastguard Worker; MM32R3-DAG:    c.ole.s $f12, $f14
339*9880d681SAndroid Build Coastguard Worker; MM32R3-DAG:    movt $[[T1]], $[[T0]], $fcc0
340*9880d681SAndroid Build Coastguard Worker
341*9880d681SAndroid Build Coastguard Worker; MM32R6-DAG:    cmp.ult.s $[[T0:f[0-9]+]], $f14, $f12
342*9880d681SAndroid Build Coastguard Worker; MM64R6-DAG:    cmp.ult.s $[[T0:f[0-9]+]], $f13, $f12
343*9880d681SAndroid Build Coastguard Worker; MMR6-DAG:      mfc1 $[[T1:[0-9]+]], $[[T0]]
344*9880d681SAndroid Build Coastguard Worker; MMR6-DAG:      andi16 $2, $[[T1]], 1
345*9880d681SAndroid Build Coastguard Worker
346*9880d681SAndroid Build Coastguard Worker  %1 = fcmp ugt float %a, %b
347*9880d681SAndroid Build Coastguard Worker  %2 = zext i1 %1 to i32
348*9880d681SAndroid Build Coastguard Worker  ret i32 %2
349*9880d681SAndroid Build Coastguard Worker}
350*9880d681SAndroid Build Coastguard Worker
351*9880d681SAndroid Build Coastguard Workerdefine i32 @uge_f32(float %a, float %b) nounwind {
352*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: uge_f32:
353*9880d681SAndroid Build Coastguard Worker
354*9880d681SAndroid Build Coastguard Worker; 32-C-DAG:      addiu $2, $zero, 1
355*9880d681SAndroid Build Coastguard Worker; 32-C-DAG:      c.olt.s $f12, $f14
356*9880d681SAndroid Build Coastguard Worker; 32-C:          movt $2, $zero, $fcc0
357*9880d681SAndroid Build Coastguard Worker
358*9880d681SAndroid Build Coastguard Worker; 64-C-DAG:      addiu $2, $zero, 1
359*9880d681SAndroid Build Coastguard Worker; 64-C-DAG:      c.olt.s $f12, $f13
360*9880d681SAndroid Build Coastguard Worker; 64-C:          movt $2, $zero, $fcc0
361*9880d681SAndroid Build Coastguard Worker
362*9880d681SAndroid Build Coastguard Worker; 32-CMP-DAG:    cmp.ule.s $[[T0:f[0-9]+]], $f14, $f12
363*9880d681SAndroid Build Coastguard Worker; 32-CMP-DAG:    mfc1 $[[T1:[0-9]+]], $[[T0]]
364*9880d681SAndroid Build Coastguard Worker; 32-CMP-DAG:    andi $2, $[[T1]], 1
365*9880d681SAndroid Build Coastguard Worker
366*9880d681SAndroid Build Coastguard Worker; 64-CMP-DAG:    cmp.ule.s $[[T0:f[0-9]+]], $f13, $f12
367*9880d681SAndroid Build Coastguard Worker; 64-CMP-DAG:    mfc1 $[[T1:[0-9]+]], $[[T0]]
368*9880d681SAndroid Build Coastguard Worker; 64-CMP-DAG:    andi $2, $[[T1]], 1
369*9880d681SAndroid Build Coastguard Worker
370*9880d681SAndroid Build Coastguard Worker; MM32R3-DAG:    lui $[[T0:[0-9]+]], 0
371*9880d681SAndroid Build Coastguard Worker; MM32R3-DAG:    li16 $[[T1:[0-9]+]], 1
372*9880d681SAndroid Build Coastguard Worker; MM32R3-DAG:    c.olt.s $f12, $f14
373*9880d681SAndroid Build Coastguard Worker; MM32R3-DAG:    movt $[[T1]], $[[T0]], $fcc0
374*9880d681SAndroid Build Coastguard Worker
375*9880d681SAndroid Build Coastguard Worker; MM32R6-DAG:    cmp.ule.s $[[T0:f[0-9]+]], $f14, $f12
376*9880d681SAndroid Build Coastguard Worker; MM64R6-DAG:    cmp.ule.s $[[T0:f[0-9]+]], $f13, $f12
377*9880d681SAndroid Build Coastguard Worker; MMR6-DAG:      mfc1 $[[T1:[0-9]+]], $[[T0]]
378*9880d681SAndroid Build Coastguard Worker; MMR6-DAG:      andi16 $2, $[[T1]], 1
379*9880d681SAndroid Build Coastguard Worker
380*9880d681SAndroid Build Coastguard Worker  %1 = fcmp uge float %a, %b
381*9880d681SAndroid Build Coastguard Worker  %2 = zext i1 %1 to i32
382*9880d681SAndroid Build Coastguard Worker  ret i32 %2
383*9880d681SAndroid Build Coastguard Worker}
384*9880d681SAndroid Build Coastguard Worker
385*9880d681SAndroid Build Coastguard Workerdefine i32 @ult_f32(float %a, float %b) nounwind {
386*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: ult_f32:
387*9880d681SAndroid Build Coastguard Worker
388*9880d681SAndroid Build Coastguard Worker; 32-C-DAG:      addiu $2, $zero, 1
389*9880d681SAndroid Build Coastguard Worker; 32-C-DAG:      c.ult.s $f12, $f14
390*9880d681SAndroid Build Coastguard Worker; 32-C:          movf $2, $zero, $fcc0
391*9880d681SAndroid Build Coastguard Worker
392*9880d681SAndroid Build Coastguard Worker; 64-C-DAG:      addiu $2, $zero, 1
393*9880d681SAndroid Build Coastguard Worker; 64-C-DAG:      c.ult.s $f12, $f13
394*9880d681SAndroid Build Coastguard Worker; 64-C:          movf $2, $zero, $fcc0
395*9880d681SAndroid Build Coastguard Worker
396*9880d681SAndroid Build Coastguard Worker; 32-CMP-DAG:    cmp.ult.s $[[T0:f[0-9]+]], $f12, $f14
397*9880d681SAndroid Build Coastguard Worker; 32-CMP-DAG:    mfc1 $[[T1:[0-9]+]], $[[T0]]
398*9880d681SAndroid Build Coastguard Worker; 32-CMP-DAG:    andi $2, $[[T1]], 1
399*9880d681SAndroid Build Coastguard Worker
400*9880d681SAndroid Build Coastguard Worker; 64-CMP-DAG:    cmp.ult.s $[[T0:f[0-9]+]], $f12, $f13
401*9880d681SAndroid Build Coastguard Worker; 64-CMP-DAG:    mfc1 $[[T1:[0-9]+]], $[[T0]]
402*9880d681SAndroid Build Coastguard Worker; 64-CMP-DAG:    andi $2, $[[T1]], 1
403*9880d681SAndroid Build Coastguard Worker
404*9880d681SAndroid Build Coastguard Worker; MM32R3-DAG:    lui $[[T0:[0-9]+]], 0
405*9880d681SAndroid Build Coastguard Worker; MM32R3-DAG:    li16 $[[T1:[0-9]+]], 1
406*9880d681SAndroid Build Coastguard Worker; MM32R3-DAG:    c.ult.s $f12, $f14
407*9880d681SAndroid Build Coastguard Worker; MM32R3-DAG:    movf $[[T1]], $[[T0]], $fcc0
408*9880d681SAndroid Build Coastguard Worker
409*9880d681SAndroid Build Coastguard Worker; MM32R6-DAG:    cmp.ult.s $[[T0:f[0-9]+]], $f12, $f14
410*9880d681SAndroid Build Coastguard Worker; MM64R6-DAG:    cmp.ult.s $[[T0:f[0-9]+]], $f12, $f13
411*9880d681SAndroid Build Coastguard Worker; MMR6-DAG:      mfc1 $[[T1:[0-9]+]], $[[T0]]
412*9880d681SAndroid Build Coastguard Worker; MMR6-DAG:      andi16 $2, $[[T1]], 1
413*9880d681SAndroid Build Coastguard Worker
414*9880d681SAndroid Build Coastguard Worker  %1 = fcmp ult float %a, %b
415*9880d681SAndroid Build Coastguard Worker  %2 = zext i1 %1 to i32
416*9880d681SAndroid Build Coastguard Worker  ret i32 %2
417*9880d681SAndroid Build Coastguard Worker}
418*9880d681SAndroid Build Coastguard Worker
419*9880d681SAndroid Build Coastguard Workerdefine i32 @ule_f32(float %a, float %b) nounwind {
420*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: ule_f32:
421*9880d681SAndroid Build Coastguard Worker
422*9880d681SAndroid Build Coastguard Worker; 32-C-DAG:      addiu $2, $zero, 1
423*9880d681SAndroid Build Coastguard Worker; 32-C-DAG:      c.ule.s $f12, $f14
424*9880d681SAndroid Build Coastguard Worker; 32-C:          movf $2, $zero, $fcc0
425*9880d681SAndroid Build Coastguard Worker
426*9880d681SAndroid Build Coastguard Worker; 64-C-DAG:      addiu $2, $zero, 1
427*9880d681SAndroid Build Coastguard Worker; 64-C-DAG:      c.ule.s $f12, $f13
428*9880d681SAndroid Build Coastguard Worker; 64-C:          movf $2, $zero, $fcc0
429*9880d681SAndroid Build Coastguard Worker
430*9880d681SAndroid Build Coastguard Worker; 32-CMP-DAG:    cmp.ule.s $[[T0:f[0-9]+]], $f12, $f14
431*9880d681SAndroid Build Coastguard Worker; 32-CMP-DAG:    mfc1 $[[T1:[0-9]+]], $[[T0]]
432*9880d681SAndroid Build Coastguard Worker; 32-CMP-DAG:    andi $2, $[[T1]], 1
433*9880d681SAndroid Build Coastguard Worker
434*9880d681SAndroid Build Coastguard Worker; 64-CMP-DAG:    cmp.ule.s $[[T0:f[0-9]+]], $f12, $f13
435*9880d681SAndroid Build Coastguard Worker; 64-CMP-DAG:    mfc1 $[[T1:[0-9]+]], $[[T0]]
436*9880d681SAndroid Build Coastguard Worker; 64-CMP-DAG:    andi $2, $[[T1]], 1
437*9880d681SAndroid Build Coastguard Worker
438*9880d681SAndroid Build Coastguard Worker; MM32R3-DAG:    lui $[[T0:[0-9]+]], 0
439*9880d681SAndroid Build Coastguard Worker; MM32R3-DAG:    li16 $[[T1:[0-9]+]], 1
440*9880d681SAndroid Build Coastguard Worker; MM32R3-DAG:    c.ule.s $f12, $f14
441*9880d681SAndroid Build Coastguard Worker; MM32R3-DAG:    movf $[[T1]], $[[T0]], $fcc0
442*9880d681SAndroid Build Coastguard Worker
443*9880d681SAndroid Build Coastguard Worker; MM32R6-DAG:    cmp.ule.s $[[T0:f[0-9]+]], $f12, $f14
444*9880d681SAndroid Build Coastguard Worker; MM64R6-DAG:    cmp.ule.s $[[T0:f[0-9]+]], $f12, $f13
445*9880d681SAndroid Build Coastguard Worker; MMR6-DAG:      mfc1 $[[T1:[0-9]+]], $[[T0]]
446*9880d681SAndroid Build Coastguard Worker; MMR6-DAG:      andi16 $2, $[[T1]], 1
447*9880d681SAndroid Build Coastguard Worker
448*9880d681SAndroid Build Coastguard Worker  %1 = fcmp ule float %a, %b
449*9880d681SAndroid Build Coastguard Worker  %2 = zext i1 %1 to i32
450*9880d681SAndroid Build Coastguard Worker  ret i32 %2
451*9880d681SAndroid Build Coastguard Worker}
452*9880d681SAndroid Build Coastguard Worker
453*9880d681SAndroid Build Coastguard Workerdefine i32 @une_f32(float %a, float %b) nounwind {
454*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: une_f32:
455*9880d681SAndroid Build Coastguard Worker
456*9880d681SAndroid Build Coastguard Worker; 32-C-DAG:      addiu $2, $zero, 1
457*9880d681SAndroid Build Coastguard Worker; 32-C-DAG:      c.eq.s $f12, $f14
458*9880d681SAndroid Build Coastguard Worker; 32-C:          movt $2, $zero, $fcc0
459*9880d681SAndroid Build Coastguard Worker
460*9880d681SAndroid Build Coastguard Worker; 64-C-DAG:      addiu $2, $zero, 1
461*9880d681SAndroid Build Coastguard Worker; 64-C-DAG:      c.eq.s $f12, $f13
462*9880d681SAndroid Build Coastguard Worker; 64-C:          movt $2, $zero, $fcc0
463*9880d681SAndroid Build Coastguard Worker
464*9880d681SAndroid Build Coastguard Worker; 32-CMP-DAG:    cmp.eq.s $[[T0:f[0-9]+]], $f12, $f14
465*9880d681SAndroid Build Coastguard Worker; 32-CMP-DAG:    mfc1 $[[T1:[0-9]+]], $[[T0]]
466*9880d681SAndroid Build Coastguard Worker; 32-CMP-DAG:    not $[[T2:[0-9]+]], $[[T1]]
467*9880d681SAndroid Build Coastguard Worker; 32-CMP-DAG:    andi $2, $[[T2]], 1
468*9880d681SAndroid Build Coastguard Worker
469*9880d681SAndroid Build Coastguard Worker; 64-CMP-DAG:    cmp.eq.s $[[T0:f[0-9]+]], $f12, $f13
470*9880d681SAndroid Build Coastguard Worker; 64-CMP-DAG:    mfc1 $[[T1:[0-9]+]], $[[T0]]
471*9880d681SAndroid Build Coastguard Worker; 64-CMP-DAG:    not $[[T2:[0-9]+]], $[[T1]]
472*9880d681SAndroid Build Coastguard Worker; 64-CMP-DAG:    andi $2, $[[T2]], 1
473*9880d681SAndroid Build Coastguard Worker
474*9880d681SAndroid Build Coastguard Worker; MM32R3-DAG:    lui $[[T0:[0-9]+]], 0
475*9880d681SAndroid Build Coastguard Worker; MM32R3-DAG:    li16 $[[T1:[0-9]+]], 1
476*9880d681SAndroid Build Coastguard Worker; MM32R3-DAG:    c.eq.s $f12, $f14
477*9880d681SAndroid Build Coastguard Worker; MM32R3-DAG:    movt $[[T1]], $[[T0]], $fcc0
478*9880d681SAndroid Build Coastguard Worker
479*9880d681SAndroid Build Coastguard Worker; MM32R6-DAG:    cmp.eq.s $[[T0:f[0-9]+]], $f12, $f14
480*9880d681SAndroid Build Coastguard Worker; MM64R6-DAG:    cmp.eq.s $[[T0:f[0-9]+]], $f12, $f13
481*9880d681SAndroid Build Coastguard Worker; MMR6-DAG:      mfc1 $[[T1:[0-9]+]], $[[T0]]
482*9880d681SAndroid Build Coastguard Worker; MMR6-DAG:      not $[[T2:[0-9]+]], $[[T1]]
483*9880d681SAndroid Build Coastguard Worker; MMR6-DAG:      andi16 $2, $[[T2]], 1
484*9880d681SAndroid Build Coastguard Worker
485*9880d681SAndroid Build Coastguard Worker  %1 = fcmp une float %a, %b
486*9880d681SAndroid Build Coastguard Worker  %2 = zext i1 %1 to i32
487*9880d681SAndroid Build Coastguard Worker  ret i32 %2
488*9880d681SAndroid Build Coastguard Worker}
489*9880d681SAndroid Build Coastguard Worker
490*9880d681SAndroid Build Coastguard Workerdefine i32 @uno_f32(float %a, float %b) nounwind {
491*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: uno_f32:
492*9880d681SAndroid Build Coastguard Worker
493*9880d681SAndroid Build Coastguard Worker; 32-C-DAG:      addiu $2, $zero, 1
494*9880d681SAndroid Build Coastguard Worker; 32-C-DAG:      c.un.s $f12, $f14
495*9880d681SAndroid Build Coastguard Worker; 32-C:          movf $2, $zero, $fcc0
496*9880d681SAndroid Build Coastguard Worker
497*9880d681SAndroid Build Coastguard Worker; 64-C-DAG:      addiu $2, $zero, 1
498*9880d681SAndroid Build Coastguard Worker; 64-C-DAG:      c.un.s $f12, $f13
499*9880d681SAndroid Build Coastguard Worker; 64-C:          movf $2, $zero, $fcc0
500*9880d681SAndroid Build Coastguard Worker
501*9880d681SAndroid Build Coastguard Worker; 32-CMP-DAG:    cmp.un.s $[[T0:f[0-9]+]], $f12, $f14
502*9880d681SAndroid Build Coastguard Worker; 32-CMP-DAG:    mfc1 $[[T1:[0-9]+]], $[[T0]]
503*9880d681SAndroid Build Coastguard Worker; 32-CMP-DAG:    andi $2, $[[T1]], 1
504*9880d681SAndroid Build Coastguard Worker
505*9880d681SAndroid Build Coastguard Worker; 64-CMP-DAG:    cmp.un.s $[[T0:f[0-9]+]], $f12, $f13
506*9880d681SAndroid Build Coastguard Worker; 64-CMP-DAG:    mfc1 $[[T1:[0-9]+]], $[[T0]]
507*9880d681SAndroid Build Coastguard Worker; 64-CMP-DAG:    andi $2, $[[T1]], 1
508*9880d681SAndroid Build Coastguard Worker
509*9880d681SAndroid Build Coastguard Worker; MM32R3-DAG:    lui $[[T0:[0-9]+]], 0
510*9880d681SAndroid Build Coastguard Worker; MM32R3-DAG:    li16 $[[T1:[0-9]+]], 1
511*9880d681SAndroid Build Coastguard Worker; MM32R3-DAG:    c.un.s $f12, $f14
512*9880d681SAndroid Build Coastguard Worker; MM32R3-DAG:    movf $[[T1]], $[[T0]], $fcc0
513*9880d681SAndroid Build Coastguard Worker
514*9880d681SAndroid Build Coastguard Worker; MM32R6-DAG:    cmp.un.s $[[T0:f[0-9]+]], $f12, $f14
515*9880d681SAndroid Build Coastguard Worker; MM64R6-DAG:    cmp.un.s $[[T0:f[0-9]+]], $f12, $f13
516*9880d681SAndroid Build Coastguard Worker; MMR6-DAG:      mfc1 $[[T1:[0-9]+]], $[[T0]]
517*9880d681SAndroid Build Coastguard Worker; MMR6-DAG:      andi16 $2, $[[T1]], 1
518*9880d681SAndroid Build Coastguard Worker
519*9880d681SAndroid Build Coastguard Worker  %1 = fcmp uno float %a, %b
520*9880d681SAndroid Build Coastguard Worker  %2 = zext i1 %1 to i32
521*9880d681SAndroid Build Coastguard Worker  ret i32 %2
522*9880d681SAndroid Build Coastguard Worker}
523*9880d681SAndroid Build Coastguard Worker
524*9880d681SAndroid Build Coastguard Workerdefine i32 @true_f32(float %a, float %b) nounwind {
525*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: true_f32:
526*9880d681SAndroid Build Coastguard Worker; 32-C:          addiu $2, $zero, 1
527*9880d681SAndroid Build Coastguard Worker
528*9880d681SAndroid Build Coastguard Worker; 32-CMP:        addiu $2, $zero, 1
529*9880d681SAndroid Build Coastguard Worker
530*9880d681SAndroid Build Coastguard Worker; 64-C:          addiu $2, $zero, 1
531*9880d681SAndroid Build Coastguard Worker
532*9880d681SAndroid Build Coastguard Worker; 64-CMP:        addiu $2, $zero, 1
533*9880d681SAndroid Build Coastguard Worker
534*9880d681SAndroid Build Coastguard Worker; MM-DAG:        li16 $2, 1
535*9880d681SAndroid Build Coastguard Worker
536*9880d681SAndroid Build Coastguard Worker  %1 = fcmp true float %a, %b
537*9880d681SAndroid Build Coastguard Worker  %2 = zext i1 %1 to i32
538*9880d681SAndroid Build Coastguard Worker  ret i32 %2
539*9880d681SAndroid Build Coastguard Worker}
540*9880d681SAndroid Build Coastguard Worker
541*9880d681SAndroid Build Coastguard Workerdefine i32 @false_f64(double %a, double %b) nounwind {
542*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: false_f64:
543*9880d681SAndroid Build Coastguard Worker; 32-C:          addiu $2, $zero, 0
544*9880d681SAndroid Build Coastguard Worker
545*9880d681SAndroid Build Coastguard Worker; 32-CMP:        addiu $2, $zero, 0
546*9880d681SAndroid Build Coastguard Worker
547*9880d681SAndroid Build Coastguard Worker; 64-C:          addiu $2, $zero, 0
548*9880d681SAndroid Build Coastguard Worker
549*9880d681SAndroid Build Coastguard Worker; 64-CMP:        addiu $2, $zero, 0
550*9880d681SAndroid Build Coastguard Worker
551*9880d681SAndroid Build Coastguard Worker; MM-DAG:        lui $2, 0
552*9880d681SAndroid Build Coastguard Worker
553*9880d681SAndroid Build Coastguard Worker  %1 = fcmp false double %a, %b
554*9880d681SAndroid Build Coastguard Worker  %2 = zext i1 %1 to i32
555*9880d681SAndroid Build Coastguard Worker  ret i32 %2
556*9880d681SAndroid Build Coastguard Worker}
557*9880d681SAndroid Build Coastguard Worker
558*9880d681SAndroid Build Coastguard Workerdefine i32 @oeq_f64(double %a, double %b) nounwind {
559*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: oeq_f64:
560*9880d681SAndroid Build Coastguard Worker
561*9880d681SAndroid Build Coastguard Worker; 32-C-DAG:      addiu $2, $zero, 1
562*9880d681SAndroid Build Coastguard Worker; 32-C-DAG:      c.eq.d $f12, $f14
563*9880d681SAndroid Build Coastguard Worker; 32-C:          movf $2, $zero, $fcc0
564*9880d681SAndroid Build Coastguard Worker
565*9880d681SAndroid Build Coastguard Worker; 64-C-DAG:      addiu $2, $zero, 1
566*9880d681SAndroid Build Coastguard Worker; 64-C-DAG:      c.eq.d $f12, $f13
567*9880d681SAndroid Build Coastguard Worker; 64-C:          movf $2, $zero, $fcc0
568*9880d681SAndroid Build Coastguard Worker
569*9880d681SAndroid Build Coastguard Worker; 32-CMP-DAG:    cmp.eq.d $[[T0:f[0-9]+]], $f12, $f14
570*9880d681SAndroid Build Coastguard Worker; 32-CMP-DAG:    mfc1 $[[T1:[0-9]+]], $[[T0]]
571*9880d681SAndroid Build Coastguard Worker; 32-CMP-DAG:    andi $2, $[[T1]], 1
572*9880d681SAndroid Build Coastguard Worker
573*9880d681SAndroid Build Coastguard Worker; 64-CMP-DAG:    cmp.eq.d $[[T0:f[0-9]+]], $f12, $f13
574*9880d681SAndroid Build Coastguard Worker; 64-CMP-DAG:    mfc1 $[[T1:[0-9]+]], $[[T0]]
575*9880d681SAndroid Build Coastguard Worker; 64-CMP-DAG:    andi $2, $[[T1]], 1
576*9880d681SAndroid Build Coastguard Worker
577*9880d681SAndroid Build Coastguard Worker; MM32R3-DAG:    lui $[[T0:[0-9]+]], 0
578*9880d681SAndroid Build Coastguard Worker; MM32R3-DAG:    li16 $[[T1:[0-9]+]], 1
579*9880d681SAndroid Build Coastguard Worker; MM32R3-DAG:    c.eq.d $f12, $f14
580*9880d681SAndroid Build Coastguard Worker; MM32R3-DAG:    movf $[[T1]], $[[T0]], $fcc0
581*9880d681SAndroid Build Coastguard Worker
582*9880d681SAndroid Build Coastguard Worker; MM32R6-DAG:    cmp.eq.d $[[T0:f[0-9]+]], $f12, $f14
583*9880d681SAndroid Build Coastguard Worker; MM64R6-DAG:    cmp.eq.d $[[T0:f[0-9]+]], $f12, $f13
584*9880d681SAndroid Build Coastguard Worker; MMR6-DAG:      mfc1 $[[T1:[0-9]+]], $[[T0]]
585*9880d681SAndroid Build Coastguard Worker; MMR6-DAG:      andi16 $2, $[[T1]], 1
586*9880d681SAndroid Build Coastguard Worker
587*9880d681SAndroid Build Coastguard Worker  %1 = fcmp oeq double %a, %b
588*9880d681SAndroid Build Coastguard Worker  %2 = zext i1 %1 to i32
589*9880d681SAndroid Build Coastguard Worker  ret i32 %2
590*9880d681SAndroid Build Coastguard Worker}
591*9880d681SAndroid Build Coastguard Worker
592*9880d681SAndroid Build Coastguard Workerdefine i32 @ogt_f64(double %a, double %b) nounwind {
593*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: ogt_f64:
594*9880d681SAndroid Build Coastguard Worker
595*9880d681SAndroid Build Coastguard Worker; 32-C-DAG:      addiu $2, $zero, 1
596*9880d681SAndroid Build Coastguard Worker; 32-C-DAG:      c.ule.d $f12, $f14
597*9880d681SAndroid Build Coastguard Worker; 32-C:          movt $2, $zero, $fcc0
598*9880d681SAndroid Build Coastguard Worker
599*9880d681SAndroid Build Coastguard Worker; 64-C-DAG:      addiu $2, $zero, 1
600*9880d681SAndroid Build Coastguard Worker; 64-C-DAG:      c.ule.d $f12, $f13
601*9880d681SAndroid Build Coastguard Worker; 64-C:          movt $2, $zero, $fcc0
602*9880d681SAndroid Build Coastguard Worker
603*9880d681SAndroid Build Coastguard Worker; 32-CMP-DAG:    cmp.lt.d $[[T0:f[0-9]+]], $f14, $f12
604*9880d681SAndroid Build Coastguard Worker; 32-CMP-DAG:    mfc1 $[[T1:[0-9]+]], $[[T0]]
605*9880d681SAndroid Build Coastguard Worker; 32-CMP-DAG:    andi $2, $[[T1]], 1
606*9880d681SAndroid Build Coastguard Worker
607*9880d681SAndroid Build Coastguard Worker; 64-CMP-DAG:    cmp.lt.d $[[T0:f[0-9]+]], $f13, $f12
608*9880d681SAndroid Build Coastguard Worker; 64-CMP-DAG:    mfc1 $[[T1:[0-9]+]], $[[T0]]
609*9880d681SAndroid Build Coastguard Worker; 64-CMP-DAG:    andi $2, $[[T1]], 1
610*9880d681SAndroid Build Coastguard Worker
611*9880d681SAndroid Build Coastguard Worker; MM32R3-DAG:    lui $[[T0:[0-9]+]], 0
612*9880d681SAndroid Build Coastguard Worker; MM32R3-DAG:    li16 $[[T1:[0-9]+]], 1
613*9880d681SAndroid Build Coastguard Worker; MM32R3-DAG:    c.ule.d $f12, $f14
614*9880d681SAndroid Build Coastguard Worker; MM32R3-DAG:    movt $[[T1]], $[[T0]], $fcc0
615*9880d681SAndroid Build Coastguard Worker
616*9880d681SAndroid Build Coastguard Worker; MM32R6-DAG:    cmp.lt.d $[[T0:f[0-9]+]], $f14, $f12
617*9880d681SAndroid Build Coastguard Worker; MM64R6-DAG:    cmp.lt.d $[[T0:f[0-9]+]], $f13, $f12
618*9880d681SAndroid Build Coastguard Worker; MMR6-DAG:      mfc1 $[[T1:[0-9]+]], $[[T0]]
619*9880d681SAndroid Build Coastguard Worker; MMR6-DAG:      andi16 $2, $[[T1]], 1
620*9880d681SAndroid Build Coastguard Worker
621*9880d681SAndroid Build Coastguard Worker  %1 = fcmp ogt double %a, %b
622*9880d681SAndroid Build Coastguard Worker  %2 = zext i1 %1 to i32
623*9880d681SAndroid Build Coastguard Worker  ret i32 %2
624*9880d681SAndroid Build Coastguard Worker}
625*9880d681SAndroid Build Coastguard Worker
626*9880d681SAndroid Build Coastguard Workerdefine i32 @oge_f64(double %a, double %b) nounwind {
627*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: oge_f64:
628*9880d681SAndroid Build Coastguard Worker
629*9880d681SAndroid Build Coastguard Worker; 32-C-DAG:      addiu $2, $zero, 1
630*9880d681SAndroid Build Coastguard Worker; 32-C-DAG:      c.ult.d $f12, $f14
631*9880d681SAndroid Build Coastguard Worker; 32-C:          movt $2, $zero, $fcc0
632*9880d681SAndroid Build Coastguard Worker
633*9880d681SAndroid Build Coastguard Worker; 64-C-DAG:      addiu $2, $zero, 1
634*9880d681SAndroid Build Coastguard Worker; 64-C-DAG:      c.ult.d $f12, $f13
635*9880d681SAndroid Build Coastguard Worker; 64-C:          movt $2, $zero, $fcc0
636*9880d681SAndroid Build Coastguard Worker
637*9880d681SAndroid Build Coastguard Worker; 32-CMP-DAG:    cmp.le.d $[[T0:f[0-9]+]], $f14, $f12
638*9880d681SAndroid Build Coastguard Worker; 32-CMP-DAG:    mfc1 $[[T1:[0-9]+]], $[[T0]]
639*9880d681SAndroid Build Coastguard Worker; 32-CMP-DAG:    andi $2, $[[T1]], 1
640*9880d681SAndroid Build Coastguard Worker
641*9880d681SAndroid Build Coastguard Worker; 64-CMP-DAG:    cmp.le.d $[[T0:f[0-9]+]], $f13, $f12
642*9880d681SAndroid Build Coastguard Worker; 64-CMP-DAG:    mfc1 $[[T1:[0-9]+]], $[[T0]]
643*9880d681SAndroid Build Coastguard Worker; 64-CMP-DAG:    andi $2, $[[T1]], 1
644*9880d681SAndroid Build Coastguard Worker
645*9880d681SAndroid Build Coastguard Worker; MM32R3-DAG:    lui $[[T0:[0-9]+]], 0
646*9880d681SAndroid Build Coastguard Worker; MM32R3-DAG:    li16 $[[T1:[0-9]+]], 1
647*9880d681SAndroid Build Coastguard Worker; MM32R3-DAG:    c.ult.d $f12, $f14
648*9880d681SAndroid Build Coastguard Worker; MM32R3-DAG:    movt $[[T1]], $[[T0]], $fcc0
649*9880d681SAndroid Build Coastguard Worker
650*9880d681SAndroid Build Coastguard Worker; MM32R6-DAG:    cmp.le.d $[[T0:f[0-9]+]], $f14, $f12
651*9880d681SAndroid Build Coastguard Worker; MM64R6-DAG:    cmp.le.d $[[T0:f[0-9]+]], $f13, $f12
652*9880d681SAndroid Build Coastguard Worker; MMR6-DAG:      mfc1 $[[T1:[0-9]+]], $[[T0]]
653*9880d681SAndroid Build Coastguard Worker; MMR6-DAG:      andi16 $2, $[[T1]], 1
654*9880d681SAndroid Build Coastguard Worker
655*9880d681SAndroid Build Coastguard Worker  %1 = fcmp oge double %a, %b
656*9880d681SAndroid Build Coastguard Worker  %2 = zext i1 %1 to i32
657*9880d681SAndroid Build Coastguard Worker  ret i32 %2
658*9880d681SAndroid Build Coastguard Worker}
659*9880d681SAndroid Build Coastguard Worker
660*9880d681SAndroid Build Coastguard Workerdefine i32 @olt_f64(double %a, double %b) nounwind {
661*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: olt_f64:
662*9880d681SAndroid Build Coastguard Worker
663*9880d681SAndroid Build Coastguard Worker; 32-C-DAG:      addiu $2, $zero, 1
664*9880d681SAndroid Build Coastguard Worker; 32-C-DAG:      c.olt.d $f12, $f14
665*9880d681SAndroid Build Coastguard Worker; 32-C:          movf $2, $zero, $fcc0
666*9880d681SAndroid Build Coastguard Worker
667*9880d681SAndroid Build Coastguard Worker; 64-C-DAG:      addiu $2, $zero, 1
668*9880d681SAndroid Build Coastguard Worker; 64-C-DAG:      c.olt.d $f12, $f13
669*9880d681SAndroid Build Coastguard Worker; 64-C:          movf $2, $zero, $fcc0
670*9880d681SAndroid Build Coastguard Worker
671*9880d681SAndroid Build Coastguard Worker; 32-CMP-DAG:    cmp.lt.d $[[T0:f[0-9]+]], $f12, $f14
672*9880d681SAndroid Build Coastguard Worker; 32-CMP-DAG:    mfc1 $[[T1:[0-9]+]], $[[T0]]
673*9880d681SAndroid Build Coastguard Worker; 32-CMP-DAG:    andi $2, $[[T1]], 1
674*9880d681SAndroid Build Coastguard Worker
675*9880d681SAndroid Build Coastguard Worker; 64-CMP-DAG:    cmp.lt.d $[[T0:f[0-9]+]], $f12, $f13
676*9880d681SAndroid Build Coastguard Worker; 64-CMP-DAG:    mfc1 $[[T1:[0-9]+]], $[[T0]]
677*9880d681SAndroid Build Coastguard Worker; 64-CMP-DAG:    andi $2, $[[T1]], 1
678*9880d681SAndroid Build Coastguard Worker
679*9880d681SAndroid Build Coastguard Worker; MM32R3-DAG:    lui $[[T0:[0-9]+]], 0
680*9880d681SAndroid Build Coastguard Worker; MM32R3-DAG:    li16 $[[T1:[0-9]+]], 1
681*9880d681SAndroid Build Coastguard Worker; MM32R3-DAG:    c.olt.d $f12, $f14
682*9880d681SAndroid Build Coastguard Worker; MM32R3-DAG:    movf $[[T1]], $[[T0]], $fcc0
683*9880d681SAndroid Build Coastguard Worker
684*9880d681SAndroid Build Coastguard Worker; MM32R6-DAG:    cmp.lt.d $[[T0:f[0-9]+]], $f12, $f14
685*9880d681SAndroid Build Coastguard Worker; MM64R6-DAG:    cmp.lt.d $[[T0:f[0-9]+]], $f12, $f13
686*9880d681SAndroid Build Coastguard Worker; MMR6-DAG:      mfc1 $[[T1:[0-9]+]], $[[T0]]
687*9880d681SAndroid Build Coastguard Worker; MMR6-DAG:      andi16 $2, $[[T1]], 1
688*9880d681SAndroid Build Coastguard Worker
689*9880d681SAndroid Build Coastguard Worker  %1 = fcmp olt double %a, %b
690*9880d681SAndroid Build Coastguard Worker  %2 = zext i1 %1 to i32
691*9880d681SAndroid Build Coastguard Worker  ret i32 %2
692*9880d681SAndroid Build Coastguard Worker}
693*9880d681SAndroid Build Coastguard Worker
694*9880d681SAndroid Build Coastguard Workerdefine i32 @ole_f64(double %a, double %b) nounwind {
695*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: ole_f64:
696*9880d681SAndroid Build Coastguard Worker
697*9880d681SAndroid Build Coastguard Worker; 32-C-DAG:      addiu $2, $zero, 1
698*9880d681SAndroid Build Coastguard Worker; 32-C-DAG:      c.ole.d $f12, $f14
699*9880d681SAndroid Build Coastguard Worker; 32-C:          movf $2, $zero, $fcc0
700*9880d681SAndroid Build Coastguard Worker
701*9880d681SAndroid Build Coastguard Worker; 64-C-DAG:      addiu $2, $zero, 1
702*9880d681SAndroid Build Coastguard Worker; 64-C-DAG:      c.ole.d $f12, $f13
703*9880d681SAndroid Build Coastguard Worker; 64-C:          movf $2, $zero, $fcc0
704*9880d681SAndroid Build Coastguard Worker
705*9880d681SAndroid Build Coastguard Worker; 32-CMP-DAG:    cmp.le.d $[[T0:f[0-9]+]], $f12, $f14
706*9880d681SAndroid Build Coastguard Worker; 32-CMP-DAG:    mfc1 $[[T1:[0-9]+]], $[[T0]]
707*9880d681SAndroid Build Coastguard Worker; 32-CMP-DAG:    andi $2, $[[T1]], 1
708*9880d681SAndroid Build Coastguard Worker
709*9880d681SAndroid Build Coastguard Worker; 64-CMP-DAG:    cmp.le.d $[[T0:f[0-9]+]], $f12, $f13
710*9880d681SAndroid Build Coastguard Worker; 64-CMP-DAG:    mfc1 $[[T1:[0-9]+]], $[[T0]]
711*9880d681SAndroid Build Coastguard Worker; 64-CMP-DAG:    andi $2, $[[T1]], 1
712*9880d681SAndroid Build Coastguard Worker
713*9880d681SAndroid Build Coastguard Worker; MM32R3-DAG:    lui $[[T0:[0-9]+]], 0
714*9880d681SAndroid Build Coastguard Worker; MM32R3-DAG:    li16 $[[T1:[0-9]+]], 1
715*9880d681SAndroid Build Coastguard Worker; MM32R3-DAG:    c.ole.d $f12, $f14
716*9880d681SAndroid Build Coastguard Worker; MM32R3-DAG:    movf $[[T1]], $[[T0]], $fcc0
717*9880d681SAndroid Build Coastguard Worker
718*9880d681SAndroid Build Coastguard Worker; MM32R6-DAG:    cmp.le.d $[[T0:f[0-9]+]], $f12, $f14
719*9880d681SAndroid Build Coastguard Worker; MM64R6-DAG:    cmp.le.d $[[T0:f[0-9]+]], $f12, $f13
720*9880d681SAndroid Build Coastguard Worker; MMR6-DAG:      mfc1 $[[T1:[0-9]+]], $[[T0]]
721*9880d681SAndroid Build Coastguard Worker; MMR6-DAG:      andi16 $2, $[[T1]], 1
722*9880d681SAndroid Build Coastguard Worker
723*9880d681SAndroid Build Coastguard Worker  %1 = fcmp ole double %a, %b
724*9880d681SAndroid Build Coastguard Worker  %2 = zext i1 %1 to i32
725*9880d681SAndroid Build Coastguard Worker  ret i32 %2
726*9880d681SAndroid Build Coastguard Worker}
727*9880d681SAndroid Build Coastguard Worker
728*9880d681SAndroid Build Coastguard Workerdefine i32 @one_f64(double %a, double %b) nounwind {
729*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: one_f64:
730*9880d681SAndroid Build Coastguard Worker
731*9880d681SAndroid Build Coastguard Worker; 32-C-DAG:      addiu $2, $zero, 1
732*9880d681SAndroid Build Coastguard Worker; 32-C-DAG:      c.ueq.d $f12, $f14
733*9880d681SAndroid Build Coastguard Worker; 32-C:          movt $2, $zero, $fcc0
734*9880d681SAndroid Build Coastguard Worker
735*9880d681SAndroid Build Coastguard Worker; 64-C-DAG:      addiu $2, $zero, 1
736*9880d681SAndroid Build Coastguard Worker; 64-C-DAG:      c.ueq.d $f12, $f13
737*9880d681SAndroid Build Coastguard Worker; 64-C:          movt $2, $zero, $fcc0
738*9880d681SAndroid Build Coastguard Worker
739*9880d681SAndroid Build Coastguard Worker; 32-CMP-DAG:    cmp.ueq.d $[[T0:f[0-9]+]], $f12, $f14
740*9880d681SAndroid Build Coastguard Worker; 32-CMP-DAG:    mfc1 $[[T1:[0-9]+]], $[[T0]]
741*9880d681SAndroid Build Coastguard Worker; 32-CMP-DAG:    not $[[T2:[0-9]+]], $[[T1]]
742*9880d681SAndroid Build Coastguard Worker; 32-CMP-DAG:    andi $2, $[[T2]], 1
743*9880d681SAndroid Build Coastguard Worker
744*9880d681SAndroid Build Coastguard Worker; 64-CMP-DAG:    cmp.ueq.d $[[T0:f[0-9]+]], $f12, $f13
745*9880d681SAndroid Build Coastguard Worker; 64-CMP-DAG:    mfc1 $[[T1:[0-9]+]], $[[T0]]
746*9880d681SAndroid Build Coastguard Worker; 64-CMP-DAG:    not $[[T2:[0-9]+]], $[[T1]]
747*9880d681SAndroid Build Coastguard Worker; 64-CMP-DAG:    andi $2, $[[T2]], 1
748*9880d681SAndroid Build Coastguard Worker
749*9880d681SAndroid Build Coastguard Worker; MM32R3-DAG:    lui $[[T0:[0-9]+]], 0
750*9880d681SAndroid Build Coastguard Worker; MM32R3-DAG:    li16 $[[T1:[0-9]+]], 1
751*9880d681SAndroid Build Coastguard Worker; MM32R3-DAG:    c.ueq.d $f12, $f14
752*9880d681SAndroid Build Coastguard Worker; MM32R3-DAG:    movt $[[T1]], $[[T0]], $fcc0
753*9880d681SAndroid Build Coastguard Worker
754*9880d681SAndroid Build Coastguard Worker; MM32R6-DAG:    cmp.ueq.d $[[T0:f[0-9]+]], $f12, $f14
755*9880d681SAndroid Build Coastguard Worker; MM64R6-DAG:    cmp.ueq.d $[[T0:f[0-9]+]], $f12, $f13
756*9880d681SAndroid Build Coastguard Worker; MMR6-DAG:      mfc1 $[[T1:[0-9]+]], $[[T0]]
757*9880d681SAndroid Build Coastguard Worker; MMR6-DAG:      not $[[T2:[0-9]+]], $[[T1]]
758*9880d681SAndroid Build Coastguard Worker; MMR6-DAG:      andi16 $2, $[[T2]], 1
759*9880d681SAndroid Build Coastguard Worker
760*9880d681SAndroid Build Coastguard Worker  %1 = fcmp one double %a, %b
761*9880d681SAndroid Build Coastguard Worker  %2 = zext i1 %1 to i32
762*9880d681SAndroid Build Coastguard Worker  ret i32 %2
763*9880d681SAndroid Build Coastguard Worker}
764*9880d681SAndroid Build Coastguard Worker
765*9880d681SAndroid Build Coastguard Workerdefine i32 @ord_f64(double %a, double %b) nounwind {
766*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: ord_f64:
767*9880d681SAndroid Build Coastguard Worker
768*9880d681SAndroid Build Coastguard Worker; 32-C-DAG:      addiu $2, $zero, 1
769*9880d681SAndroid Build Coastguard Worker; 32-C-DAG:      c.un.d $f12, $f14
770*9880d681SAndroid Build Coastguard Worker; 32-C:          movt $2, $zero, $fcc0
771*9880d681SAndroid Build Coastguard Worker
772*9880d681SAndroid Build Coastguard Worker; 64-C-DAG:      addiu $2, $zero, 1
773*9880d681SAndroid Build Coastguard Worker; 64-C-DAG:      c.un.d $f12, $f13
774*9880d681SAndroid Build Coastguard Worker; 64-C:          movt $2, $zero, $fcc0
775*9880d681SAndroid Build Coastguard Worker
776*9880d681SAndroid Build Coastguard Worker; 32-CMP-DAG:    cmp.un.d $[[T0:f[0-9]+]], $f12, $f14
777*9880d681SAndroid Build Coastguard Worker; 32-CMP-DAG:    mfc1 $[[T1:[0-9]+]], $[[T0]]
778*9880d681SAndroid Build Coastguard Worker; 32-CMP-DAG:    not $[[T2:[0-9]+]], $[[T1]]
779*9880d681SAndroid Build Coastguard Worker; 32-CMP-DAG:    andi $2, $[[T2]], 1
780*9880d681SAndroid Build Coastguard Worker
781*9880d681SAndroid Build Coastguard Worker; 64-CMP-DAG:    cmp.un.d $[[T0:f[0-9]+]], $f12, $f13
782*9880d681SAndroid Build Coastguard Worker; 64-CMP-DAG:    mfc1 $[[T1:[0-9]+]], $[[T0]]
783*9880d681SAndroid Build Coastguard Worker; 64-CMP-DAG:    not $[[T2:[0-9]+]], $[[T1]]
784*9880d681SAndroid Build Coastguard Worker; 64-CMP-DAG:    andi $2, $[[T2]], 1
785*9880d681SAndroid Build Coastguard Worker
786*9880d681SAndroid Build Coastguard Worker; MM32R3-DAG:    lui $[[T0:[0-9]+]], 0
787*9880d681SAndroid Build Coastguard Worker; MM32R3-DAG:    li16 $[[T1:[0-9]+]], 1
788*9880d681SAndroid Build Coastguard Worker; MM32R3-DAG:    c.un.d $f12, $f14
789*9880d681SAndroid Build Coastguard Worker; MM32R3-DAG:    movt $[[T1]], $[[T0]], $fcc0
790*9880d681SAndroid Build Coastguard Worker
791*9880d681SAndroid Build Coastguard Worker; MM32R6-DAG:    cmp.un.d $[[T0:f[0-9]+]], $f12, $f14
792*9880d681SAndroid Build Coastguard Worker; MM64R6-DAG:    cmp.un.d $[[T0:f[0-9]+]], $f12, $f13
793*9880d681SAndroid Build Coastguard Worker; MMR6-DAG:      mfc1 $[[T1:[0-9]+]], $[[T0]]
794*9880d681SAndroid Build Coastguard Worker; MMR6-DAG:      not $[[T2:[0-9]+]], $[[T1]]
795*9880d681SAndroid Build Coastguard Worker; MMR6-DAG:      andi16 $2, $[[T2]], 1
796*9880d681SAndroid Build Coastguard Worker
797*9880d681SAndroid Build Coastguard Worker  %1 = fcmp ord double %a, %b
798*9880d681SAndroid Build Coastguard Worker  %2 = zext i1 %1 to i32
799*9880d681SAndroid Build Coastguard Worker  ret i32 %2
800*9880d681SAndroid Build Coastguard Worker}
801*9880d681SAndroid Build Coastguard Worker
802*9880d681SAndroid Build Coastguard Workerdefine i32 @ueq_f64(double %a, double %b) nounwind {
803*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: ueq_f64:
804*9880d681SAndroid Build Coastguard Worker
805*9880d681SAndroid Build Coastguard Worker; 32-C-DAG:      addiu $2, $zero, 1
806*9880d681SAndroid Build Coastguard Worker; 32-C-DAG:      c.ueq.d $f12, $f14
807*9880d681SAndroid Build Coastguard Worker; 32-C:          movf $2, $zero, $fcc0
808*9880d681SAndroid Build Coastguard Worker
809*9880d681SAndroid Build Coastguard Worker; 64-C-DAG:      addiu $2, $zero, 1
810*9880d681SAndroid Build Coastguard Worker; 64-C-DAG:      c.ueq.d $f12, $f13
811*9880d681SAndroid Build Coastguard Worker; 64-C:          movf $2, $zero, $fcc0
812*9880d681SAndroid Build Coastguard Worker
813*9880d681SAndroid Build Coastguard Worker; 32-CMP-DAG:    cmp.ueq.d $[[T0:f[0-9]+]], $f12, $f14
814*9880d681SAndroid Build Coastguard Worker; 32-CMP-DAG:    mfc1 $[[T1:[0-9]+]], $[[T0]]
815*9880d681SAndroid Build Coastguard Worker; 32-CMP-DAG:    andi $2, $[[T1]], 1
816*9880d681SAndroid Build Coastguard Worker
817*9880d681SAndroid Build Coastguard Worker; 64-CMP-DAG:    cmp.ueq.d $[[T0:f[0-9]+]], $f12, $f13
818*9880d681SAndroid Build Coastguard Worker; 64-CMP-DAG:    mfc1 $[[T1:[0-9]+]], $[[T0]]
819*9880d681SAndroid Build Coastguard Worker; 64-CMP-DAG:    andi $2, $[[T1]], 1
820*9880d681SAndroid Build Coastguard Worker
821*9880d681SAndroid Build Coastguard Worker; MM32R3-DAG:    lui $[[T0:[0-9]+]], 0
822*9880d681SAndroid Build Coastguard Worker; MM32R3-DAG:    li16 $[[T1:[0-9]+]], 1
823*9880d681SAndroid Build Coastguard Worker; MM32R3-DAG:    c.ueq.d $f12, $f14
824*9880d681SAndroid Build Coastguard Worker; MM32R3-DAG:    movf $[[T1]], $[[T0]], $fcc0
825*9880d681SAndroid Build Coastguard Worker
826*9880d681SAndroid Build Coastguard Worker; MM32R6-DAG:    cmp.ueq.d $[[T0:f[0-9]+]], $f12, $f14
827*9880d681SAndroid Build Coastguard Worker; MM64R6-DAG:    cmp.ueq.d $[[T0:f[0-9]+]], $f12, $f13
828*9880d681SAndroid Build Coastguard Worker; MMR6-DAG:      mfc1 $[[T1:[0-9]+]], $[[T0]]
829*9880d681SAndroid Build Coastguard Worker; MMR6-DAG:      andi16 $2, $[[T1]], 1
830*9880d681SAndroid Build Coastguard Worker
831*9880d681SAndroid Build Coastguard Worker  %1 = fcmp ueq double %a, %b
832*9880d681SAndroid Build Coastguard Worker  %2 = zext i1 %1 to i32
833*9880d681SAndroid Build Coastguard Worker  ret i32 %2
834*9880d681SAndroid Build Coastguard Worker}
835*9880d681SAndroid Build Coastguard Worker
836*9880d681SAndroid Build Coastguard Workerdefine i32 @ugt_f64(double %a, double %b) nounwind {
837*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: ugt_f64:
838*9880d681SAndroid Build Coastguard Worker
839*9880d681SAndroid Build Coastguard Worker; 32-C-DAG:      addiu $2, $zero, 1
840*9880d681SAndroid Build Coastguard Worker; 32-C-DAG:      c.ole.d $f12, $f14
841*9880d681SAndroid Build Coastguard Worker; 32-C:          movt $2, $zero, $fcc0
842*9880d681SAndroid Build Coastguard Worker
843*9880d681SAndroid Build Coastguard Worker; 64-C-DAG:      addiu $2, $zero, 1
844*9880d681SAndroid Build Coastguard Worker; 64-C-DAG:      c.ole.d $f12, $f13
845*9880d681SAndroid Build Coastguard Worker; 64-C:          movt $2, $zero, $fcc0
846*9880d681SAndroid Build Coastguard Worker
847*9880d681SAndroid Build Coastguard Worker; 32-CMP-DAG:    cmp.ult.d $[[T0:f[0-9]+]], $f14, $f12
848*9880d681SAndroid Build Coastguard Worker; 32-CMP-DAG:    mfc1 $[[T1:[0-9]+]], $[[T0]]
849*9880d681SAndroid Build Coastguard Worker; 32-CMP-DAG:    andi $2, $[[T1]], 1
850*9880d681SAndroid Build Coastguard Worker
851*9880d681SAndroid Build Coastguard Worker; 64-CMP-DAG:    cmp.ult.d $[[T0:f[0-9]+]], $f13, $f12
852*9880d681SAndroid Build Coastguard Worker; 64-CMP-DAG:    mfc1 $[[T1:[0-9]+]], $[[T0]]
853*9880d681SAndroid Build Coastguard Worker; 64-CMP-DAG:    andi $2, $[[T1]], 1
854*9880d681SAndroid Build Coastguard Worker
855*9880d681SAndroid Build Coastguard Worker; MM32R3-DAG:    lui $[[T0:[0-9]+]], 0
856*9880d681SAndroid Build Coastguard Worker; MM32R3-DAG:    li16 $[[T1:[0-9]+]], 1
857*9880d681SAndroid Build Coastguard Worker; MM32R3-DAG:    c.ole.d $f12, $f14
858*9880d681SAndroid Build Coastguard Worker; MM32R3-DAG:    movt $[[T1]], $[[T0]], $fcc0
859*9880d681SAndroid Build Coastguard Worker
860*9880d681SAndroid Build Coastguard Worker; MM32R6-DAG:    cmp.ult.d $[[T0:f[0-9]+]], $f14, $f12
861*9880d681SAndroid Build Coastguard Worker; MM64R6-DAG:    cmp.ult.d $[[T0:f[0-9]+]], $f13, $f12
862*9880d681SAndroid Build Coastguard Worker; MMR6-DAG:      mfc1 $[[T1:[0-9]+]], $[[T0]]
863*9880d681SAndroid Build Coastguard Worker; MMR6-DAG:      andi16 $2, $[[T1]], 1
864*9880d681SAndroid Build Coastguard Worker
865*9880d681SAndroid Build Coastguard Worker  %1 = fcmp ugt double %a, %b
866*9880d681SAndroid Build Coastguard Worker  %2 = zext i1 %1 to i32
867*9880d681SAndroid Build Coastguard Worker  ret i32 %2
868*9880d681SAndroid Build Coastguard Worker}
869*9880d681SAndroid Build Coastguard Worker
870*9880d681SAndroid Build Coastguard Workerdefine i32 @uge_f64(double %a, double %b) nounwind {
871*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: uge_f64:
872*9880d681SAndroid Build Coastguard Worker
873*9880d681SAndroid Build Coastguard Worker; 32-C-DAG:      addiu $2, $zero, 1
874*9880d681SAndroid Build Coastguard Worker; 32-C-DAG:      c.olt.d $f12, $f14
875*9880d681SAndroid Build Coastguard Worker; 32-C:          movt $2, $zero, $fcc0
876*9880d681SAndroid Build Coastguard Worker
877*9880d681SAndroid Build Coastguard Worker; 64-C-DAG:      addiu $2, $zero, 1
878*9880d681SAndroid Build Coastguard Worker; 64-C-DAG:      c.olt.d $f12, $f13
879*9880d681SAndroid Build Coastguard Worker; 64-C:          movt $2, $zero, $fcc0
880*9880d681SAndroid Build Coastguard Worker
881*9880d681SAndroid Build Coastguard Worker; 32-CMP-DAG:    cmp.ule.d $[[T0:f[0-9]+]], $f14, $f12
882*9880d681SAndroid Build Coastguard Worker; 32-CMP-DAG:    mfc1 $[[T1:[0-9]+]], $[[T0]]
883*9880d681SAndroid Build Coastguard Worker; 32-CMP-DAG:    andi $2, $[[T1]], 1
884*9880d681SAndroid Build Coastguard Worker
885*9880d681SAndroid Build Coastguard Worker; 64-CMP-DAG:    cmp.ule.d $[[T0:f[0-9]+]], $f13, $f12
886*9880d681SAndroid Build Coastguard Worker; 64-CMP-DAG:    mfc1 $[[T1:[0-9]+]], $[[T0]]
887*9880d681SAndroid Build Coastguard Worker; 64-CMP-DAG:    andi $2, $[[T1]], 1
888*9880d681SAndroid Build Coastguard Worker
889*9880d681SAndroid Build Coastguard Worker; MM32R3-DAG:    lui $[[T0:[0-9]+]], 0
890*9880d681SAndroid Build Coastguard Worker; MM32R3-DAG:    li16 $[[T1:[0-9]+]], 1
891*9880d681SAndroid Build Coastguard Worker; MM32R3-DAG:    c.olt.d $f12, $f14
892*9880d681SAndroid Build Coastguard Worker; MM32R3-DAG:    movt $[[T1]], $[[T0]], $fcc0
893*9880d681SAndroid Build Coastguard Worker
894*9880d681SAndroid Build Coastguard Worker; MM32R6-DAG:    cmp.ule.d $[[T0:f[0-9]+]], $f14, $f12
895*9880d681SAndroid Build Coastguard Worker; MM64R6-DAG:    cmp.ule.d $[[T0:f[0-9]+]], $f13, $f12
896*9880d681SAndroid Build Coastguard Worker; MMR6-DAG:      mfc1 $[[T1:[0-9]+]], $[[T0]]
897*9880d681SAndroid Build Coastguard Worker; MMR6-DAG:      andi16 $2, $[[T1]], 1
898*9880d681SAndroid Build Coastguard Worker
899*9880d681SAndroid Build Coastguard Worker  %1 = fcmp uge double %a, %b
900*9880d681SAndroid Build Coastguard Worker  %2 = zext i1 %1 to i32
901*9880d681SAndroid Build Coastguard Worker  ret i32 %2
902*9880d681SAndroid Build Coastguard Worker}
903*9880d681SAndroid Build Coastguard Worker
904*9880d681SAndroid Build Coastguard Workerdefine i32 @ult_f64(double %a, double %b) nounwind {
905*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: ult_f64:
906*9880d681SAndroid Build Coastguard Worker
907*9880d681SAndroid Build Coastguard Worker; 32-C-DAG:      addiu $2, $zero, 1
908*9880d681SAndroid Build Coastguard Worker; 32-C-DAG:      c.ult.d $f12, $f14
909*9880d681SAndroid Build Coastguard Worker; 32-C:          movf $2, $zero, $fcc0
910*9880d681SAndroid Build Coastguard Worker
911*9880d681SAndroid Build Coastguard Worker; 64-C-DAG:      addiu $2, $zero, 1
912*9880d681SAndroid Build Coastguard Worker; 64-C-DAG:      c.ult.d $f12, $f13
913*9880d681SAndroid Build Coastguard Worker; 64-C:          movf $2, $zero, $fcc0
914*9880d681SAndroid Build Coastguard Worker
915*9880d681SAndroid Build Coastguard Worker; 32-CMP-DAG:    cmp.ult.d $[[T0:f[0-9]+]], $f12, $f14
916*9880d681SAndroid Build Coastguard Worker; 32-CMP-DAG:    mfc1 $[[T1:[0-9]+]], $[[T0]]
917*9880d681SAndroid Build Coastguard Worker; 32-CMP-DAG:    andi $2, $[[T1]], 1
918*9880d681SAndroid Build Coastguard Worker
919*9880d681SAndroid Build Coastguard Worker; 64-CMP-DAG:    cmp.ult.d $[[T0:f[0-9]+]], $f12, $f13
920*9880d681SAndroid Build Coastguard Worker; 64-CMP-DAG:    mfc1 $[[T1:[0-9]+]], $[[T0]]
921*9880d681SAndroid Build Coastguard Worker; 64-CMP-DAG:    andi $2, $[[T1]], 1
922*9880d681SAndroid Build Coastguard Worker
923*9880d681SAndroid Build Coastguard Worker; MM32R3-DAG:    lui $[[T0:[0-9]+]], 0
924*9880d681SAndroid Build Coastguard Worker; MM32R3-DAG:    li16 $[[T1:[0-9]+]], 1
925*9880d681SAndroid Build Coastguard Worker; MM32R3-DAG:    c.ult.d $f12, $f14
926*9880d681SAndroid Build Coastguard Worker; MM32R3-DAG:    movf $[[T1]], $[[T0]], $fcc0
927*9880d681SAndroid Build Coastguard Worker
928*9880d681SAndroid Build Coastguard Worker; MM32R6-DAG:    cmp.ult.d $[[T0:f[0-9]+]], $f12, $f14
929*9880d681SAndroid Build Coastguard Worker; MM64R6-DAG:    cmp.ult.d $[[T0:f[0-9]+]], $f12, $f13
930*9880d681SAndroid Build Coastguard Worker; MMR6-DAG:      mfc1 $[[T1:[0-9]+]], $[[T0]]
931*9880d681SAndroid Build Coastguard Worker; MMR6-DAG:      andi16 $2, $[[T1]], 1
932*9880d681SAndroid Build Coastguard Worker
933*9880d681SAndroid Build Coastguard Worker  %1 = fcmp ult double %a, %b
934*9880d681SAndroid Build Coastguard Worker  %2 = zext i1 %1 to i32
935*9880d681SAndroid Build Coastguard Worker  ret i32 %2
936*9880d681SAndroid Build Coastguard Worker}
937*9880d681SAndroid Build Coastguard Worker
938*9880d681SAndroid Build Coastguard Workerdefine i32 @ule_f64(double %a, double %b) nounwind {
939*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: ule_f64:
940*9880d681SAndroid Build Coastguard Worker
941*9880d681SAndroid Build Coastguard Worker; 32-C-DAG:      addiu $2, $zero, 1
942*9880d681SAndroid Build Coastguard Worker; 32-C-DAG:      c.ule.d $f12, $f14
943*9880d681SAndroid Build Coastguard Worker; 32-C:          movf $2, $zero, $fcc0
944*9880d681SAndroid Build Coastguard Worker
945*9880d681SAndroid Build Coastguard Worker; 64-C-DAG:      addiu $2, $zero, 1
946*9880d681SAndroid Build Coastguard Worker; 64-C-DAG:      c.ule.d $f12, $f13
947*9880d681SAndroid Build Coastguard Worker; 64-C:          movf $2, $zero, $fcc0
948*9880d681SAndroid Build Coastguard Worker
949*9880d681SAndroid Build Coastguard Worker; 32-CMP-DAG:    cmp.ule.d $[[T0:f[0-9]+]], $f12, $f14
950*9880d681SAndroid Build Coastguard Worker; 32-CMP-DAG:    mfc1 $[[T1:[0-9]+]], $[[T0]]
951*9880d681SAndroid Build Coastguard Worker; 32-CMP-DAG:    andi $2, $[[T1]], 1
952*9880d681SAndroid Build Coastguard Worker
953*9880d681SAndroid Build Coastguard Worker; 64-CMP-DAG:    cmp.ule.d $[[T0:f[0-9]+]], $f12, $f13
954*9880d681SAndroid Build Coastguard Worker; 64-CMP-DAG:    mfc1 $[[T1:[0-9]+]], $[[T0]]
955*9880d681SAndroid Build Coastguard Worker; 64-CMP-DAG:    andi $2, $[[T1]], 1
956*9880d681SAndroid Build Coastguard Worker
957*9880d681SAndroid Build Coastguard Worker; MM32R3-DAG:    lui $[[T0:[0-9]+]], 0
958*9880d681SAndroid Build Coastguard Worker; MM32R3-DAG:    li16 $[[T1:[0-9]+]], 1
959*9880d681SAndroid Build Coastguard Worker; MM32R3-DAG:    c.ule.d $f12, $f14
960*9880d681SAndroid Build Coastguard Worker; MM32R3-DAG:    movf $[[T1]], $[[T0]], $fcc0
961*9880d681SAndroid Build Coastguard Worker
962*9880d681SAndroid Build Coastguard Worker; MM32R6-DAG:    cmp.ule.d $[[T0:f[0-9]+]], $f12, $f14
963*9880d681SAndroid Build Coastguard Worker; MM64R6-DAG:    cmp.ule.d $[[T0:f[0-9]+]], $f12, $f13
964*9880d681SAndroid Build Coastguard Worker; MMR6-DAG:      mfc1 $[[T1:[0-9]+]], $[[T0]]
965*9880d681SAndroid Build Coastguard Worker; MMR6-DAG:      andi16 $2, $[[T1]], 1
966*9880d681SAndroid Build Coastguard Worker
967*9880d681SAndroid Build Coastguard Worker  %1 = fcmp ule double %a, %b
968*9880d681SAndroid Build Coastguard Worker  %2 = zext i1 %1 to i32
969*9880d681SAndroid Build Coastguard Worker  ret i32 %2
970*9880d681SAndroid Build Coastguard Worker}
971*9880d681SAndroid Build Coastguard Worker
972*9880d681SAndroid Build Coastguard Workerdefine i32 @une_f64(double %a, double %b) nounwind {
973*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: une_f64:
974*9880d681SAndroid Build Coastguard Worker
975*9880d681SAndroid Build Coastguard Worker; 32-C-DAG:      addiu $2, $zero, 1
976*9880d681SAndroid Build Coastguard Worker; 32-C-DAG:      c.eq.d $f12, $f14
977*9880d681SAndroid Build Coastguard Worker; 32-C:          movt $2, $zero, $fcc0
978*9880d681SAndroid Build Coastguard Worker
979*9880d681SAndroid Build Coastguard Worker; 64-C-DAG:      addiu $2, $zero, 1
980*9880d681SAndroid Build Coastguard Worker; 64-C-DAG:      c.eq.d $f12, $f13
981*9880d681SAndroid Build Coastguard Worker; 64-C:          movt $2, $zero, $fcc0
982*9880d681SAndroid Build Coastguard Worker
983*9880d681SAndroid Build Coastguard Worker; 32-CMP-DAG:    cmp.eq.d $[[T0:f[0-9]+]], $f12, $f14
984*9880d681SAndroid Build Coastguard Worker; 32-CMP-DAG:    mfc1 $[[T1:[0-9]+]], $[[T0]]
985*9880d681SAndroid Build Coastguard Worker; 32-CMP-DAG:    not $[[T2:[0-9]+]], $[[T1]]
986*9880d681SAndroid Build Coastguard Worker; 32-CMP-DAG:    andi $2, $[[T2]], 1
987*9880d681SAndroid Build Coastguard Worker
988*9880d681SAndroid Build Coastguard Worker; 64-CMP-DAG:    cmp.eq.d $[[T0:f[0-9]+]], $f12, $f13
989*9880d681SAndroid Build Coastguard Worker; 64-CMP-DAG:    mfc1 $[[T1:[0-9]+]], $[[T0]]
990*9880d681SAndroid Build Coastguard Worker; 64-CMP-DAG:    not $[[T2:[0-9]+]], $[[T1]]
991*9880d681SAndroid Build Coastguard Worker; 64-CMP-DAG:    andi $2, $[[T2]], 1
992*9880d681SAndroid Build Coastguard Worker
993*9880d681SAndroid Build Coastguard Worker; MM32R3-DAG:    lui $[[T0:[0-9]+]], 0
994*9880d681SAndroid Build Coastguard Worker; MM32R3-DAG:    li16 $[[T1:[0-9]+]], 1
995*9880d681SAndroid Build Coastguard Worker; MM32R3-DAG:    c.eq.d  $f12, $f14
996*9880d681SAndroid Build Coastguard Worker; MM32R3-DAG:    movt $[[T1]], $[[T0]], $fcc0
997*9880d681SAndroid Build Coastguard Worker
998*9880d681SAndroid Build Coastguard Worker; MM32R6-DAG:    cmp.eq.d $[[T0:f[0-9]+]], $f12, $f14
999*9880d681SAndroid Build Coastguard Worker; MM64R6-DAG:    cmp.eq.d $[[T0:f[0-9]+]], $f12, $f13
1000*9880d681SAndroid Build Coastguard Worker; MMR6-DAG:      mfc1 $[[T1:[0-9]+]], $[[T0]]
1001*9880d681SAndroid Build Coastguard Worker; MMR6-DAG:      not $[[T2:[0-9]+]], $[[T1]]
1002*9880d681SAndroid Build Coastguard Worker; MMR6-DAG:      andi16 $2, $[[T2]], 1
1003*9880d681SAndroid Build Coastguard Worker
1004*9880d681SAndroid Build Coastguard Worker  %1 = fcmp une double %a, %b
1005*9880d681SAndroid Build Coastguard Worker  %2 = zext i1 %1 to i32
1006*9880d681SAndroid Build Coastguard Worker  ret i32 %2
1007*9880d681SAndroid Build Coastguard Worker}
1008*9880d681SAndroid Build Coastguard Worker
1009*9880d681SAndroid Build Coastguard Workerdefine i32 @uno_f64(double %a, double %b) nounwind {
1010*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: uno_f64:
1011*9880d681SAndroid Build Coastguard Worker
1012*9880d681SAndroid Build Coastguard Worker; 32-C-DAG:      addiu $2, $zero, 1
1013*9880d681SAndroid Build Coastguard Worker; 32-C-DAG:      c.un.d $f12, $f14
1014*9880d681SAndroid Build Coastguard Worker; 32-C:          movf $2, $zero, $fcc0
1015*9880d681SAndroid Build Coastguard Worker
1016*9880d681SAndroid Build Coastguard Worker; 64-C-DAG:      addiu $2, $zero, 1
1017*9880d681SAndroid Build Coastguard Worker; 64-C-DAG:      c.un.d $f12, $f13
1018*9880d681SAndroid Build Coastguard Worker; 64-C:          movf $2, $zero, $fcc0
1019*9880d681SAndroid Build Coastguard Worker
1020*9880d681SAndroid Build Coastguard Worker; 32-CMP-DAG:    cmp.un.d $[[T0:f[0-9]+]], $f12, $f14
1021*9880d681SAndroid Build Coastguard Worker; 32-CMP-DAG:    mfc1 $[[T1:[0-9]+]], $[[T0]]
1022*9880d681SAndroid Build Coastguard Worker; 32-CMP-DAG:    andi $2, $[[T1]], 1
1023*9880d681SAndroid Build Coastguard Worker
1024*9880d681SAndroid Build Coastguard Worker; 64-CMP-DAG:    cmp.un.d $[[T0:f[0-9]+]], $f12, $f13
1025*9880d681SAndroid Build Coastguard Worker; 64-CMP-DAG:    mfc1 $[[T1:[0-9]+]], $[[T0]]
1026*9880d681SAndroid Build Coastguard Worker; 64-CMP-DAG:    andi $2, $[[T1]], 1
1027*9880d681SAndroid Build Coastguard Worker
1028*9880d681SAndroid Build Coastguard Worker; MM32R3-DAG:    lui $[[T0:[0-9]+]], 0
1029*9880d681SAndroid Build Coastguard Worker; MM32R3-DAG:    li16 $[[T1:[0-9]+]], 1
1030*9880d681SAndroid Build Coastguard Worker; MM32R3-DAG:    c.un.d $f12, $f14
1031*9880d681SAndroid Build Coastguard Worker; MM32R3-DAG:    movf $[[T1]], $[[T0]], $fcc0
1032*9880d681SAndroid Build Coastguard Worker
1033*9880d681SAndroid Build Coastguard Worker; MM32R6-DAG:    cmp.un.d $[[T0:f[0-9]+]], $f12, $f14
1034*9880d681SAndroid Build Coastguard Worker; MM64R6-DAG:    cmp.un.d $[[T0:f[0-9]+]], $f12, $f13
1035*9880d681SAndroid Build Coastguard Worker; MMR6-DAG:      mfc1 $[[T1:[0-9]+]], $[[T0]]
1036*9880d681SAndroid Build Coastguard Worker; MMR6-DAG:      andi16 $2, $[[T1]], 1
1037*9880d681SAndroid Build Coastguard Worker
1038*9880d681SAndroid Build Coastguard Worker  %1 = fcmp uno double %a, %b
1039*9880d681SAndroid Build Coastguard Worker  %2 = zext i1 %1 to i32
1040*9880d681SAndroid Build Coastguard Worker  ret i32 %2
1041*9880d681SAndroid Build Coastguard Worker}
1042*9880d681SAndroid Build Coastguard Worker
1043*9880d681SAndroid Build Coastguard Workerdefine i32 @true_f64(double %a, double %b) nounwind {
1044*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: true_f64:
1045*9880d681SAndroid Build Coastguard Worker; 32-C:          addiu $2, $zero, 1
1046*9880d681SAndroid Build Coastguard Worker
1047*9880d681SAndroid Build Coastguard Worker; 32-CMP:        addiu $2, $zero, 1
1048*9880d681SAndroid Build Coastguard Worker
1049*9880d681SAndroid Build Coastguard Worker; 64-C:          addiu $2, $zero, 1
1050*9880d681SAndroid Build Coastguard Worker
1051*9880d681SAndroid Build Coastguard Worker; 64-CMP:        addiu $2, $zero, 1
1052*9880d681SAndroid Build Coastguard Worker
1053*9880d681SAndroid Build Coastguard Worker; MM-DAG:        li16 $2, 1
1054*9880d681SAndroid Build Coastguard Worker
1055*9880d681SAndroid Build Coastguard Worker  %1 = fcmp true double %a, %b
1056*9880d681SAndroid Build Coastguard Worker  %2 = zext i1 %1 to i32
1057*9880d681SAndroid Build Coastguard Worker  ret i32 %2
1058*9880d681SAndroid Build Coastguard Worker}
1059*9880d681SAndroid Build Coastguard Worker
1060*9880d681SAndroid Build Coastguard Worker; The optimizers sometimes produce setlt instead of setolt/setult.
1061*9880d681SAndroid Build Coastguard Workerdefine float @bug1_f32(float %angle, float %at) #0 {
1062*9880d681SAndroid Build Coastguard Workerentry:
1063*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: bug1_f32:
1064*9880d681SAndroid Build Coastguard Worker
1065*9880d681SAndroid Build Coastguard Worker; 32-C-DAG:      add.s    $[[T0:f[0-9]+]], $f14, $f12
1066*9880d681SAndroid Build Coastguard Worker; 32-C-DAG:      lwc1     $[[T1:f[0-9]+]], %lo($CPI32_0)(
1067*9880d681SAndroid Build Coastguard Worker; 32-C-DAG:      c.ole.s  $[[T0]], $[[T1]]
1068*9880d681SAndroid Build Coastguard Worker; 32-C-DAG:      bc1t
1069*9880d681SAndroid Build Coastguard Worker
1070*9880d681SAndroid Build Coastguard Worker; 32-CMP-DAG:    add.s    $[[T0:f[0-9]+]], $f14, $f12
1071*9880d681SAndroid Build Coastguard Worker; 32-CMP-DAG:    lwc1     $[[T1:f[0-9]+]], %lo($CPI32_0)(
1072*9880d681SAndroid Build Coastguard Worker; 32-CMP-DAG:    cmp.le.s $[[T2:f[0-9]+]], $[[T0]], $[[T1]]
1073*9880d681SAndroid Build Coastguard Worker; 32-CMP-DAG:    mfc1     $[[T3:[0-9]+]], $[[T2]]
1074*9880d681SAndroid Build Coastguard Worker; FIXME: This instruction is redundant.
1075*9880d681SAndroid Build Coastguard Worker; 32-CMP-DAG:    andi     $[[T4:[0-9]+]], $[[T3]], 1
1076*9880d681SAndroid Build Coastguard Worker; 32-CMP-DAG:    bnezc    $[[T4]],
1077*9880d681SAndroid Build Coastguard Worker
1078*9880d681SAndroid Build Coastguard Worker; 64-C-DAG:      add.s    $[[T0:f[0-9]+]], $f13, $f12
1079*9880d681SAndroid Build Coastguard Worker; 64-C-DAG:      lwc1     $[[T1:f[0-9]+]], %got_ofst($CPI32_0)(
1080*9880d681SAndroid Build Coastguard Worker; 64-C-DAG:      c.ole.s  $[[T0]], $[[T1]]
1081*9880d681SAndroid Build Coastguard Worker; 64-C-DAG:      bc1t
1082*9880d681SAndroid Build Coastguard Worker
1083*9880d681SAndroid Build Coastguard Worker; 64-CMP-DAG:    add.s    $[[T0:f[0-9]+]], $f13, $f12
1084*9880d681SAndroid Build Coastguard Worker; 64-CMP-DAG:    lwc1     $[[T1:f[0-9]+]], %got_ofst($CPI32_0)(
1085*9880d681SAndroid Build Coastguard Worker; 64-CMP-DAG:    cmp.le.s $[[T2:f[0-9]+]], $[[T0]], $[[T1]]
1086*9880d681SAndroid Build Coastguard Worker; 64-CMP-DAG:    mfc1     $[[T3:[0-9]+]], $[[T2]]
1087*9880d681SAndroid Build Coastguard Worker; FIXME: This instruction is redundant.
1088*9880d681SAndroid Build Coastguard Worker; 64-CMP-DAG:    andi     $[[T4:[0-9]+]], $[[T3]], 1
1089*9880d681SAndroid Build Coastguard Worker; 64-CMP-DAG:    bnezc    $[[T4]],
1090*9880d681SAndroid Build Coastguard Worker
1091*9880d681SAndroid Build Coastguard Worker; MM32R3-DAG:    add.s    $[[T0:f[0-9]+]], $f14, $f12
1092*9880d681SAndroid Build Coastguard Worker; MM32R3-DAG:    lui      $[[T1:[0-9]+]], %hi($CPI32_0)
1093*9880d681SAndroid Build Coastguard Worker; MM32R3-DAG:    lwc1     $[[T2:f[0-9]+]], %lo($CPI32_0)($[[T1]])
1094*9880d681SAndroid Build Coastguard Worker; MM32R3-DAG:    c.ole.s  $[[T0]], $[[T2]]
1095*9880d681SAndroid Build Coastguard Worker; MM32R3-DAG:    bc1t
1096*9880d681SAndroid Build Coastguard Worker
1097*9880d681SAndroid Build Coastguard Worker; MM32R6-DAG:    add.s    $[[T0:f[0-9]+]], $f14, $f12
1098*9880d681SAndroid Build Coastguard Worker; MM32R6-DAG:    lui      $[[T1:[0-9]+]], %hi($CPI32_0)
1099*9880d681SAndroid Build Coastguard Worker; MM32R6-DAG:    lwc1     $[[T2:f[0-9]+]], %lo($CPI32_0)($[[T1]])
1100*9880d681SAndroid Build Coastguard Worker; MM32R6-DAG:    cmp.le.s $[[T3:f[0-9]+]], $[[T0]], $[[T2]]
1101*9880d681SAndroid Build Coastguard Worker; MM32R6-DAG:    mfc1     $[[T4:[0-9]+]], $[[T3:f[0-9]+]]
1102*9880d681SAndroid Build Coastguard Worker; MM32R6-DAG:    andi16   $[[T5:[0-9]+]], $[[T4]], 1
1103*9880d681SAndroid Build Coastguard Worker; MM32R6-DAG:    bnez     $[[T5]],
1104*9880d681SAndroid Build Coastguard Worker
1105*9880d681SAndroid Build Coastguard Worker; MM64R6-DAG:    lui      $[[T0:[0-9]+]], %hi(%neg(%gp_rel(bug1_f32)))
1106*9880d681SAndroid Build Coastguard Worker; MM64R6-DAG:    daddu    $[[T1:[0-9]+]], $[[T0]], $25
1107*9880d681SAndroid Build Coastguard Worker; MM64R6-DAG:    daddiu   $[[T2:[0-9]+]], $[[T1]], %lo(%neg(%gp_rel(bug1_f32)))
1108*9880d681SAndroid Build Coastguard Worker; MM64R6-DAG:    add.s    $[[T3:f[0-9]+]], $f13, $f12
1109*9880d681SAndroid Build Coastguard Worker; MM64R6-DAG:    ld       $[[T4:[0-9]+]], %got_page($CPI32_0)($[[T2]])
1110*9880d681SAndroid Build Coastguard Worker; MM64R6-DAG:    lwc1     $[[T5:f[0-9]+]], %got_ofst($CPI32_0)($[[T4]])
1111*9880d681SAndroid Build Coastguard Worker; MM64R6-DAG:    cmp.le.s $[[T6:f[0-9]+]], $[[T3]], $[[T5]]
1112*9880d681SAndroid Build Coastguard Worker; MM64R6-DAG:    mfc1     $[[T7:[0-9]+]], $[[T6]]
1113*9880d681SAndroid Build Coastguard Worker; MM64R6-DAG:    andi16   $[[T8:[0-9]+]], $[[T7]], 1
1114*9880d681SAndroid Build Coastguard Worker; MM64R6-DAG:    bnez     $[[T8]],
1115*9880d681SAndroid Build Coastguard Worker
1116*9880d681SAndroid Build Coastguard Worker  %add = fadd fast float %at, %angle
1117*9880d681SAndroid Build Coastguard Worker  %cmp = fcmp ogt float %add, 1.000000e+00
1118*9880d681SAndroid Build Coastguard Worker  br i1 %cmp, label %if.then, label %if.end
1119*9880d681SAndroid Build Coastguard Worker
1120*9880d681SAndroid Build Coastguard Workerif.then:
1121*9880d681SAndroid Build Coastguard Worker  %sub = fadd fast float %add, -1.000000e+00
1122*9880d681SAndroid Build Coastguard Worker  br label %if.end
1123*9880d681SAndroid Build Coastguard Worker
1124*9880d681SAndroid Build Coastguard Workerif.end:
1125*9880d681SAndroid Build Coastguard Worker  %theta.0 = phi float [ %sub, %if.then ], [ %add, %entry ]
1126*9880d681SAndroid Build Coastguard Worker  ret float %theta.0
1127*9880d681SAndroid Build Coastguard Worker}
1128*9880d681SAndroid Build Coastguard Worker
1129*9880d681SAndroid Build Coastguard Worker; The optimizers sometimes produce setlt instead of setolt/setult.
1130*9880d681SAndroid Build Coastguard Workerdefine double @bug1_f64(double %angle, double %at) #0 {
1131*9880d681SAndroid Build Coastguard Workerentry:
1132*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: bug1_f64:
1133*9880d681SAndroid Build Coastguard Worker
1134*9880d681SAndroid Build Coastguard Worker; 32-C-DAG:      add.d    $[[T0:f[0-9]+]], $f14, $f12
1135*9880d681SAndroid Build Coastguard Worker; 32-C-DAG:      ldc1     $[[T1:f[0-9]+]], %lo($CPI33_0)(
1136*9880d681SAndroid Build Coastguard Worker; 32-C-DAG:      c.ole.d  $[[T0]], $[[T1]]
1137*9880d681SAndroid Build Coastguard Worker; 32-C-DAG:      bc1t
1138*9880d681SAndroid Build Coastguard Worker
1139*9880d681SAndroid Build Coastguard Worker; 32-CMP-DAG:    add.d    $[[T0:f[0-9]+]], $f14, $f12
1140*9880d681SAndroid Build Coastguard Worker; 32-CMP-DAG:    ldc1     $[[T1:f[0-9]+]], %lo($CPI33_0)(
1141*9880d681SAndroid Build Coastguard Worker; 32-CMP-DAG:    cmp.le.d $[[T2:f[0-9]+]], $[[T0]], $[[T1]]
1142*9880d681SAndroid Build Coastguard Worker; 32-CMP-DAG:    mfc1     $[[T3:[0-9]+]], $[[T2]]
1143*9880d681SAndroid Build Coastguard Worker; FIXME: This instruction is redundant.
1144*9880d681SAndroid Build Coastguard Worker; 32-CMP-DAG:    andi     $[[T4:[0-9]+]], $[[T3]], 1
1145*9880d681SAndroid Build Coastguard Worker; 32-CMP-DAG:    bnezc    $[[T4]],
1146*9880d681SAndroid Build Coastguard Worker
1147*9880d681SAndroid Build Coastguard Worker; 64-C-DAG:      add.d    $[[T0:f[0-9]+]], $f13, $f12
1148*9880d681SAndroid Build Coastguard Worker; 64-C-DAG:      ldc1     $[[T1:f[0-9]+]], %got_ofst($CPI33_0)(
1149*9880d681SAndroid Build Coastguard Worker; 64-C-DAG:      c.ole.d  $[[T0]], $[[T1]]
1150*9880d681SAndroid Build Coastguard Worker; 64-C-DAG:      bc1t
1151*9880d681SAndroid Build Coastguard Worker
1152*9880d681SAndroid Build Coastguard Worker; 64-CMP-DAG:    add.d    $[[T0:f[0-9]+]], $f13, $f12
1153*9880d681SAndroid Build Coastguard Worker; 64-CMP-DAG:    ldc1     $[[T1:f[0-9]+]], %got_ofst($CPI33_0)(
1154*9880d681SAndroid Build Coastguard Worker; 64-CMP-DAG:    cmp.le.d $[[T2:f[0-9]+]], $[[T0]], $[[T1]]
1155*9880d681SAndroid Build Coastguard Worker; 64-CMP-DAG:    mfc1     $[[T3:[0-9]+]], $[[T2]]
1156*9880d681SAndroid Build Coastguard Worker; FIXME: This instruction is redundant.
1157*9880d681SAndroid Build Coastguard Worker; 64-CMP-DAG:    andi     $[[T4:[0-9]+]], $[[T3]], 1
1158*9880d681SAndroid Build Coastguard Worker; 64-CMP-DAG:    bnezc    $[[T4]],
1159*9880d681SAndroid Build Coastguard Worker
1160*9880d681SAndroid Build Coastguard Worker; MM32R3-DAG:    add.d    $[[T0:f[0-9]+]], $f14, $f12
1161*9880d681SAndroid Build Coastguard Worker; MM32R3-DAG:    lui      $[[T1:[0-9]+]], %hi($CPI33_0)
1162*9880d681SAndroid Build Coastguard Worker; MM32R3-DAG:    ldc1     $[[T2:f[0-9]+]], %lo($CPI33_0)($[[T1]])
1163*9880d681SAndroid Build Coastguard Worker; MM32R3-DAG:    c.ole.d  $[[T0]], $[[T2]]
1164*9880d681SAndroid Build Coastguard Worker; MM32R3-DAG:    bc1t
1165*9880d681SAndroid Build Coastguard Worker
1166*9880d681SAndroid Build Coastguard Worker; MM32R6-DAG:    add.d    $[[T0:f[0-9]+]], $f14, $f12
1167*9880d681SAndroid Build Coastguard Worker; MM32R6-DAG:    lui      $[[T1:[0-9]+]], %hi($CPI33_0)
1168*9880d681SAndroid Build Coastguard Worker; MM32R6-DAG:    ldc1     $[[T2:f[0-9]+]], %lo($CPI33_0)($[[T1]])
1169*9880d681SAndroid Build Coastguard Worker; MM32R6-DAG:    cmp.le.d $[[T3:f[0-9]+]], $[[T0]], $[[T2]]
1170*9880d681SAndroid Build Coastguard Worker; MM32R6-DAG:    mfc1     $[[T4:[0-9]+]], $[[T3]]
1171*9880d681SAndroid Build Coastguard Worker; MM32R6-DAG:    andi16   $[[T5:[0-9]+]], $[[T4]], 1
1172*9880d681SAndroid Build Coastguard Worker; MM32R6-DAG:    bnez     $[[T5]],
1173*9880d681SAndroid Build Coastguard Worker
1174*9880d681SAndroid Build Coastguard Worker; MM64R6-DAG:    lui      $[[T0:[0-9]+]], %hi(%neg(%gp_rel(bug1_f64)))
1175*9880d681SAndroid Build Coastguard Worker; MM64R6-DAG:    daddu    $[[T1:[0-9]+]], $[[T0]], $25
1176*9880d681SAndroid Build Coastguard Worker; MM64R6-DAG:    daddiu   $[[T2:[0-9]+]], $[[T1]], %lo(%neg(%gp_rel(bug1_f64)))
1177*9880d681SAndroid Build Coastguard Worker; MM64R6-DAG:    add.d    $[[T3:f[0-9]+]], $f13, $f12
1178*9880d681SAndroid Build Coastguard Worker; MM64R6-DAG:    ld       $[[T4:[0-9]+]], %got_page($CPI33_0)($[[T2]])
1179*9880d681SAndroid Build Coastguard Worker; MM64R6-DAG:    ldc1     $[[T5:f[0-9]+]], %got_ofst($CPI33_0)($[[T4]])
1180*9880d681SAndroid Build Coastguard Worker; MM64R6-DAG:    cmp.le.d $[[T6:f[0-9]+]], $[[T3]], $[[T5]]
1181*9880d681SAndroid Build Coastguard Worker; MM64R6-DAG:    mfc1     $[[T7:[0-9]+]], $[[T6]]
1182*9880d681SAndroid Build Coastguard Worker; MM64R6-DAG:    andi16   $[[T8:[0-9]+]], $[[T7]], 1
1183*9880d681SAndroid Build Coastguard Worker; MM64R6-DAG:    bnez     $[[T8]],
1184*9880d681SAndroid Build Coastguard Worker
1185*9880d681SAndroid Build Coastguard Worker  %add = fadd fast double %at, %angle
1186*9880d681SAndroid Build Coastguard Worker  %cmp = fcmp ogt double %add, 1.000000e+00
1187*9880d681SAndroid Build Coastguard Worker  br i1 %cmp, label %if.then, label %if.end
1188*9880d681SAndroid Build Coastguard Worker
1189*9880d681SAndroid Build Coastguard Workerif.then:
1190*9880d681SAndroid Build Coastguard Worker  %sub = fadd fast double %add, -1.000000e+00
1191*9880d681SAndroid Build Coastguard Worker  br label %if.end
1192*9880d681SAndroid Build Coastguard Worker
1193*9880d681SAndroid Build Coastguard Workerif.end:
1194*9880d681SAndroid Build Coastguard Worker  %theta.0 = phi double [ %sub, %if.then ], [ %add, %entry ]
1195*9880d681SAndroid Build Coastguard Worker  ret double %theta.0
1196*9880d681SAndroid Build Coastguard Worker}
1197*9880d681SAndroid Build Coastguard Worker
1198*9880d681SAndroid Build Coastguard Workerattributes #0 = { nounwind readnone "no-nans-fp-math"="true" }
1199