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
7 define i1 @false_s(float %x, float %y) {
8 ; CHECK-LABEL: false_s:
9 ; CHECK: # %bb.0: # %entry
10 ; CHECK-NEXT: ori $2, $zero, 0
14 %cmp = fcmp false float %x, %y
17 define i1 @true_s(float %x, float %y) {
18 ; CHECK-LABEL: true_s:
19 ; CHECK: # %bb.0: # %entry
20 ; CHECK-NEXT: ori $2, $zero, 1
24 %cmp = fcmp true float %x, %y
29 define i1 @uno_s(float %x, float %y) {
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
38 %cmp = fcmp uno float %x, %y
41 define i1 @ord_s(float %x, float %y) {
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
50 %cmp = fcmp ord float %x, %y
55 define i1 @oeq_s(float %x, float %y) {
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
64 %cmp = fcmp oeq float %x, %y
67 define i1 @une_s(float %x, float %y) {
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
76 %cmp = fcmp une float %x, %y
81 define i1 @ueq_s(float %x, float %y) {
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
90 %cmp = fcmp ueq float %x, %y
93 define i1 @one_s(float %x, float %y) {
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
102 %cmp = fcmp one float %x, %y
107 define 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
116 %cmp = fcmp olt float %x, %y
119 define 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
128 %cmp = fcmp uge float %x, %y
133 define 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
142 %cmp = fcmp ult float %x, %y
145 define 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
154 %cmp = fcmp oge float %x, %y
159 define 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
168 %cmp = fcmp ole float %x, %y
171 define 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
180 %cmp = fcmp ugt float %x, %y
185 define 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
194 %cmp = fcmp ule float %x, %y
197 define 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
206 %cmp = fcmp ogt float %x, %y
211 define i1 @false_d(double %x, double %y) {
212 ; CHECK-LABEL: false_d:
213 ; CHECK: # %bb.0: # %entry
214 ; CHECK-NEXT: ori $2, $zero, 0
218 %cmp = fcmp false double %x, %y
221 define i1 @true_d(double %x, double %y) {
222 ; CHECK-LABEL: true_d:
223 ; CHECK: # %bb.0: # %entry
224 ; CHECK-NEXT: ori $2, $zero, 1
228 %cmp = fcmp true double %x, %y
233 define 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
242 %cmp = fcmp uno double %x, %y
245 define 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
254 %cmp = fcmp ord double %x, %y
259 define 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
268 %cmp = fcmp oeq double %x, %y
271 define 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
280 %cmp = fcmp une double %x, %y
285 define 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
294 %cmp = fcmp ueq double %x, %y
297 define 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
306 %cmp = fcmp one double %x, %y
311 define 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
320 %cmp = fcmp olt double %x, %y
323 define 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
332 %cmp = fcmp uge double %x, %y
337 define 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
346 %cmp = fcmp ult double %x, %y
349 define 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
358 %cmp = fcmp oge double %x, %y
363 define 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
372 %cmp = fcmp ole double %x, %y
375 define 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
384 %cmp = fcmp ugt double %x, %y
389 define 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
398 %cmp = fcmp ule double %x, %y
401 define 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
410 %cmp = fcmp ogt double %x, %y