xref: /llvm-project/llvm/test/CodeGen/Mips/GlobalISel/llvm-ir/fcmp.ll (revision 7da0d0a67ffc61a455512103f00a53a27d880bdc)
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2; RUN: llc -O0 -mtriple=mipsel-linux-gnu -global-isel \
3; RUN:     -verify-machineinstrs %s -o -| FileCheck %s
4; RUN: llc -O0 -mtriple=mipsel-linux-gnu -mattr=+fp64,+mips32r2 -global-isel \
5; RUN:     -verify-machineinstrs %s -o -| FileCheck %s
6
7define i1 @false_s(float %x, float %y) {
8; CHECK-LABEL: false_s:
9; CHECK:       # %bb.0: # %entry
10; CHECK-NEXT:    ori $2, $zero, 0
11; CHECK-NEXT:    jr $ra
12; CHECK-NEXT:    nop
13entry:
14  %cmp = fcmp false float %x, %y
15  ret i1 %cmp
16}
17define i1 @true_s(float %x, float %y) {
18; CHECK-LABEL: true_s:
19; CHECK:       # %bb.0: # %entry
20; CHECK-NEXT:    ori $2, $zero, 1
21; CHECK-NEXT:    jr $ra
22; CHECK-NEXT:    nop
23entry:
24  %cmp = fcmp true float %x, %y
25  ret i1 %cmp
26}
27
28
29define i1 @uno_s(float %x, float %y) {
30; CHECK-LABEL: uno_s:
31; CHECK:       # %bb.0: # %entry
32; CHECK-NEXT:    addiu $2, $zero, 1
33; CHECK-NEXT:    c.un.s $f12, $f14
34; CHECK-NEXT:    movf $2, $zero, $fcc0
35; CHECK-NEXT:    jr $ra
36; CHECK-NEXT:    nop
37entry:
38  %cmp = fcmp uno float %x, %y
39  ret i1 %cmp
40}
41define i1 @ord_s(float %x, float %y) {
42; CHECK-LABEL: ord_s:
43; CHECK:       # %bb.0: # %entry
44; CHECK-NEXT:    addiu $2, $zero, 1
45; CHECK-NEXT:    c.un.s $f12, $f14
46; CHECK-NEXT:    movt $2, $zero, $fcc0
47; CHECK-NEXT:    jr $ra
48; CHECK-NEXT:    nop
49entry:
50  %cmp = fcmp ord float %x, %y
51  ret i1 %cmp
52}
53
54
55define i1 @oeq_s(float %x, float %y) {
56; CHECK-LABEL: oeq_s:
57; CHECK:       # %bb.0: # %entry
58; CHECK-NEXT:    addiu $2, $zero, 1
59; CHECK-NEXT:    c.eq.s $f12, $f14
60; CHECK-NEXT:    movf $2, $zero, $fcc0
61; CHECK-NEXT:    jr $ra
62; CHECK-NEXT:    nop
63entry:
64  %cmp = fcmp oeq float %x, %y
65  ret i1 %cmp
66}
67define i1 @une_s(float %x, float %y) {
68; CHECK-LABEL: une_s:
69; CHECK:       # %bb.0: # %entry
70; CHECK-NEXT:    addiu $2, $zero, 1
71; CHECK-NEXT:    c.eq.s $f12, $f14
72; CHECK-NEXT:    movt $2, $zero, $fcc0
73; CHECK-NEXT:    jr $ra
74; CHECK-NEXT:    nop
75entry:
76  %cmp = fcmp une float %x, %y
77  ret i1 %cmp
78}
79
80
81define i1 @ueq_s(float %x, float %y) {
82; CHECK-LABEL: ueq_s:
83; CHECK:       # %bb.0: # %entry
84; CHECK-NEXT:    addiu $2, $zero, 1
85; CHECK-NEXT:    c.ueq.s $f12, $f14
86; CHECK-NEXT:    movf $2, $zero, $fcc0
87; CHECK-NEXT:    jr $ra
88; CHECK-NEXT:    nop
89entry:
90  %cmp = fcmp ueq float %x, %y
91  ret i1 %cmp
92}
93define i1 @one_s(float %x, float %y) {
94; CHECK-LABEL: one_s:
95; CHECK:       # %bb.0: # %entry
96; CHECK-NEXT:    addiu $2, $zero, 1
97; CHECK-NEXT:    c.ueq.s $f12, $f14
98; CHECK-NEXT:    movt $2, $zero, $fcc0
99; CHECK-NEXT:    jr $ra
100; CHECK-NEXT:    nop
101entry:
102  %cmp = fcmp one float %x, %y
103  ret i1 %cmp
104}
105
106
107define i1 @olt_s(float %x, float %y) {
108; CHECK-LABEL: olt_s:
109; CHECK:       # %bb.0: # %entry
110; CHECK-NEXT:    addiu $2, $zero, 1
111; CHECK-NEXT:    c.olt.s $f12, $f14
112; CHECK-NEXT:    movf $2, $zero, $fcc0
113; CHECK-NEXT:    jr $ra
114; CHECK-NEXT:    nop
115entry:
116  %cmp = fcmp olt float %x, %y
117  ret i1 %cmp
118}
119define i1 @uge_s(float %x, float %y) {
120; CHECK-LABEL: uge_s:
121; CHECK:       # %bb.0: # %entry
122; CHECK-NEXT:    addiu $2, $zero, 1
123; CHECK-NEXT:    c.olt.s $f12, $f14
124; CHECK-NEXT:    movt $2, $zero, $fcc0
125; CHECK-NEXT:    jr $ra
126; CHECK-NEXT:    nop
127entry:
128  %cmp = fcmp uge float %x, %y
129  ret i1 %cmp
130}
131
132
133define i1 @ult_s(float %x, float %y) {
134; CHECK-LABEL: ult_s:
135; CHECK:       # %bb.0: # %entry
136; CHECK-NEXT:    addiu $2, $zero, 1
137; CHECK-NEXT:    c.ult.s $f12, $f14
138; CHECK-NEXT:    movf $2, $zero, $fcc0
139; CHECK-NEXT:    jr $ra
140; CHECK-NEXT:    nop
141entry:
142  %cmp = fcmp ult float %x, %y
143  ret i1 %cmp
144}
145define i1 @oge_s(float %x, float %y) {
146; CHECK-LABEL: oge_s:
147; CHECK:       # %bb.0: # %entry
148; CHECK-NEXT:    addiu $2, $zero, 1
149; CHECK-NEXT:    c.ult.s $f12, $f14
150; CHECK-NEXT:    movt $2, $zero, $fcc0
151; CHECK-NEXT:    jr $ra
152; CHECK-NEXT:    nop
153entry:
154  %cmp = fcmp oge float %x, %y
155  ret i1 %cmp
156}
157
158
159define i1 @ole_s(float %x, float %y) {
160; CHECK-LABEL: ole_s:
161; CHECK:       # %bb.0: # %entry
162; CHECK-NEXT:    addiu $2, $zero, 1
163; CHECK-NEXT:    c.ole.s $f12, $f14
164; CHECK-NEXT:    movf $2, $zero, $fcc0
165; CHECK-NEXT:    jr $ra
166; CHECK-NEXT:    nop
167entry:
168  %cmp = fcmp ole float %x, %y
169  ret i1 %cmp
170}
171define i1 @ugt_s(float %x, float %y) {
172; CHECK-LABEL: ugt_s:
173; CHECK:       # %bb.0: # %entry
174; CHECK-NEXT:    addiu $2, $zero, 1
175; CHECK-NEXT:    c.ole.s $f12, $f14
176; CHECK-NEXT:    movt $2, $zero, $fcc0
177; CHECK-NEXT:    jr $ra
178; CHECK-NEXT:    nop
179entry:
180  %cmp = fcmp ugt float %x, %y
181  ret i1 %cmp
182}
183
184
185define i1 @ule_s(float %x, float %y) {
186; CHECK-LABEL: ule_s:
187; CHECK:       # %bb.0: # %entry
188; CHECK-NEXT:    addiu $2, $zero, 1
189; CHECK-NEXT:    c.ule.s $f12, $f14
190; CHECK-NEXT:    movf $2, $zero, $fcc0
191; CHECK-NEXT:    jr $ra
192; CHECK-NEXT:    nop
193entry:
194  %cmp = fcmp ule float %x, %y
195  ret i1 %cmp
196}
197define i1 @ogt_s(float %x, float %y) {
198; CHECK-LABEL: ogt_s:
199; CHECK:       # %bb.0: # %entry
200; CHECK-NEXT:    addiu $2, $zero, 1
201; CHECK-NEXT:    c.ule.s $f12, $f14
202; CHECK-NEXT:    movt $2, $zero, $fcc0
203; CHECK-NEXT:    jr $ra
204; CHECK-NEXT:    nop
205entry:
206  %cmp = fcmp ogt float %x, %y
207  ret i1 %cmp
208}
209
210
211define i1 @false_d(double %x, double %y) {
212; CHECK-LABEL: false_d:
213; CHECK:       # %bb.0: # %entry
214; CHECK-NEXT:    ori $2, $zero, 0
215; CHECK-NEXT:    jr $ra
216; CHECK-NEXT:    nop
217entry:
218  %cmp = fcmp false double %x, %y
219  ret i1 %cmp
220}
221define i1 @true_d(double %x, double %y) {
222; CHECK-LABEL: true_d:
223; CHECK:       # %bb.0: # %entry
224; CHECK-NEXT:    ori $2, $zero, 1
225; CHECK-NEXT:    jr $ra
226; CHECK-NEXT:    nop
227entry:
228  %cmp = fcmp true double %x, %y
229  ret i1 %cmp
230}
231
232
233define i1 @uno_d(double %x, double %y) {
234; CHECK-LABEL: uno_d:
235; CHECK:       # %bb.0: # %entry
236; CHECK-NEXT:    addiu $2, $zero, 1
237; CHECK-NEXT:    c.un.d $f12, $f14
238; CHECK-NEXT:    movf $2, $zero, $fcc0
239; CHECK-NEXT:    jr $ra
240; CHECK-NEXT:    nop
241entry:
242  %cmp = fcmp uno double %x, %y
243  ret i1 %cmp
244}
245define i1 @ord_d(double %x, double %y) {
246; CHECK-LABEL: ord_d:
247; CHECK:       # %bb.0: # %entry
248; CHECK-NEXT:    addiu $2, $zero, 1
249; CHECK-NEXT:    c.un.d $f12, $f14
250; CHECK-NEXT:    movt $2, $zero, $fcc0
251; CHECK-NEXT:    jr $ra
252; CHECK-NEXT:    nop
253entry:
254  %cmp = fcmp ord double %x, %y
255  ret i1 %cmp
256}
257
258
259define i1 @oeq_d(double %x, double %y) {
260; CHECK-LABEL: oeq_d:
261; CHECK:       # %bb.0: # %entry
262; CHECK-NEXT:    addiu $2, $zero, 1
263; CHECK-NEXT:    c.eq.d $f12, $f14
264; CHECK-NEXT:    movf $2, $zero, $fcc0
265; CHECK-NEXT:    jr $ra
266; CHECK-NEXT:    nop
267entry:
268  %cmp = fcmp oeq double %x, %y
269  ret i1 %cmp
270}
271define i1 @une_d(double %x, double %y) {
272; CHECK-LABEL: une_d:
273; CHECK:       # %bb.0: # %entry
274; CHECK-NEXT:    addiu $2, $zero, 1
275; CHECK-NEXT:    c.eq.d $f12, $f14
276; CHECK-NEXT:    movt $2, $zero, $fcc0
277; CHECK-NEXT:    jr $ra
278; CHECK-NEXT:    nop
279entry:
280  %cmp = fcmp une double %x, %y
281  ret i1 %cmp
282}
283
284
285define i1 @ueq_d(double %x, double %y) {
286; CHECK-LABEL: ueq_d:
287; CHECK:       # %bb.0: # %entry
288; CHECK-NEXT:    addiu $2, $zero, 1
289; CHECK-NEXT:    c.ueq.d $f12, $f14
290; CHECK-NEXT:    movf $2, $zero, $fcc0
291; CHECK-NEXT:    jr $ra
292; CHECK-NEXT:    nop
293entry:
294  %cmp = fcmp ueq double %x, %y
295  ret i1 %cmp
296}
297define i1 @one_d(double %x, double %y) {
298; CHECK-LABEL: one_d:
299; CHECK:       # %bb.0: # %entry
300; CHECK-NEXT:    addiu $2, $zero, 1
301; CHECK-NEXT:    c.ueq.d $f12, $f14
302; CHECK-NEXT:    movt $2, $zero, $fcc0
303; CHECK-NEXT:    jr $ra
304; CHECK-NEXT:    nop
305entry:
306  %cmp = fcmp one double %x, %y
307  ret i1 %cmp
308}
309
310
311define i1 @olt_d(double %x, double %y) {
312; CHECK-LABEL: olt_d:
313; CHECK:       # %bb.0: # %entry
314; CHECK-NEXT:    addiu $2, $zero, 1
315; CHECK-NEXT:    c.olt.d $f12, $f14
316; CHECK-NEXT:    movf $2, $zero, $fcc0
317; CHECK-NEXT:    jr $ra
318; CHECK-NEXT:    nop
319entry:
320  %cmp = fcmp olt double %x, %y
321  ret i1 %cmp
322}
323define i1 @uge_d(double %x, double %y) {
324; CHECK-LABEL: uge_d:
325; CHECK:       # %bb.0: # %entry
326; CHECK-NEXT:    addiu $2, $zero, 1
327; CHECK-NEXT:    c.olt.d $f12, $f14
328; CHECK-NEXT:    movt $2, $zero, $fcc0
329; CHECK-NEXT:    jr $ra
330; CHECK-NEXT:    nop
331entry:
332  %cmp = fcmp uge double %x, %y
333  ret i1 %cmp
334}
335
336
337define i1 @ult_d(double %x, double %y) {
338; CHECK-LABEL: ult_d:
339; CHECK:       # %bb.0: # %entry
340; CHECK-NEXT:    addiu $2, $zero, 1
341; CHECK-NEXT:    c.ult.d $f12, $f14
342; CHECK-NEXT:    movf $2, $zero, $fcc0
343; CHECK-NEXT:    jr $ra
344; CHECK-NEXT:    nop
345entry:
346  %cmp = fcmp ult double %x, %y
347  ret i1 %cmp
348}
349define i1 @oge_d(double %x, double %y) {
350; CHECK-LABEL: oge_d:
351; CHECK:       # %bb.0: # %entry
352; CHECK-NEXT:    addiu $2, $zero, 1
353; CHECK-NEXT:    c.ult.d $f12, $f14
354; CHECK-NEXT:    movt $2, $zero, $fcc0
355; CHECK-NEXT:    jr $ra
356; CHECK-NEXT:    nop
357entry:
358  %cmp = fcmp oge double %x, %y
359  ret i1 %cmp
360}
361
362
363define i1 @ole_d(double %x, double %y) {
364; CHECK-LABEL: ole_d:
365; CHECK:       # %bb.0: # %entry
366; CHECK-NEXT:    addiu $2, $zero, 1
367; CHECK-NEXT:    c.ole.d $f12, $f14
368; CHECK-NEXT:    movf $2, $zero, $fcc0
369; CHECK-NEXT:    jr $ra
370; CHECK-NEXT:    nop
371entry:
372  %cmp = fcmp ole double %x, %y
373  ret i1 %cmp
374}
375define i1 @ugt_d(double %x, double %y) {
376; CHECK-LABEL: ugt_d:
377; CHECK:       # %bb.0: # %entry
378; CHECK-NEXT:    addiu $2, $zero, 1
379; CHECK-NEXT:    c.ole.d $f12, $f14
380; CHECK-NEXT:    movt $2, $zero, $fcc0
381; CHECK-NEXT:    jr $ra
382; CHECK-NEXT:    nop
383entry:
384  %cmp = fcmp ugt double %x, %y
385  ret i1 %cmp
386}
387
388
389define i1 @ule_d(double %x, double %y) {
390; CHECK-LABEL: ule_d:
391; CHECK:       # %bb.0: # %entry
392; CHECK-NEXT:    addiu $2, $zero, 1
393; CHECK-NEXT:    c.ule.d $f12, $f14
394; CHECK-NEXT:    movf $2, $zero, $fcc0
395; CHECK-NEXT:    jr $ra
396; CHECK-NEXT:    nop
397entry:
398  %cmp = fcmp ule double %x, %y
399  ret i1 %cmp
400}
401define i1 @ogt_d(double %x, double %y) {
402; CHECK-LABEL: ogt_d:
403; CHECK:       # %bb.0: # %entry
404; CHECK-NEXT:    addiu $2, $zero, 1
405; CHECK-NEXT:    c.ule.d $f12, $f14
406; CHECK-NEXT:    movt $2, $zero, $fcc0
407; CHECK-NEXT:    jr $ra
408; CHECK-NEXT:    nop
409entry:
410  %cmp = fcmp ogt double %x, %y
411  ret i1 %cmp
412}
413