1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2 # RUN: llc -mtriple=x86_64-linux-gnu -run-pass=legalizer -verify-machineinstrs %s -o - | FileCheck %s
6 define i1 @fcmp_float_oeq(float %x, float %y) {
7 %1 = fcmp oeq float %x, %y
11 define i1 @fcmp_float_ogt(float %x, float %y) {
12 %1 = fcmp ogt float %x, %y
16 define i1 @fcmp_float_oge(float %x, float %y) {
17 %1 = fcmp oge float %x, %y
21 define i1 @fcmp_float_olt(float %x, float %y) {
22 %1 = fcmp olt float %x, %y
26 define i1 @fcmp_float_ole(float %x, float %y) {
27 %1 = fcmp ole float %x, %y
31 define i1 @fcmp_float_one(float %x, float %y) {
32 %1 = fcmp one float %x, %y
36 define i1 @fcmp_float_ord(float %x, float %y) {
37 %1 = fcmp ord float %x, %y
41 define i1 @fcmp_float_uno(float %x, float %y) {
42 %1 = fcmp uno float %x, %y
46 define i1 @fcmp_float_ueq(float %x, float %y) {
47 %1 = fcmp ueq float %x, %y
51 define i1 @fcmp_float_ugt(float %x, float %y) {
52 %1 = fcmp ugt float %x, %y
56 define i1 @fcmp_float_uge(float %x, float %y) {
57 %1 = fcmp uge float %x, %y
61 define i1 @fcmp_float_ult(float %x, float %y) {
62 %1 = fcmp ult float %x, %y
66 define i1 @fcmp_float_ule(float %x, float %y) {
67 %1 = fcmp ule float %x, %y
71 define i1 @fcmp_float_une(float %x, float %y) {
72 %1 = fcmp une float %x, %y
76 define i1 @fcmp_double_oeq(double %x, double %y) {
77 %1 = fcmp oeq double %x, %y
81 define i1 @fcmp_double_ogt(double %x, double %y) {
82 %1 = fcmp ogt double %x, %y
86 define i1 @fcmp_double_oge(double %x, double %y) {
87 %1 = fcmp oge double %x, %y
91 define i1 @fcmp_double_olt(double %x, double %y) {
92 %1 = fcmp olt double %x, %y
96 define i1 @fcmp_double_ole(double %x, double %y) {
97 %1 = fcmp ole double %x, %y
101 define i1 @fcmp_double_one(double %x, double %y) {
102 %1 = fcmp one double %x, %y
106 define i1 @fcmp_double_ord(double %x, double %y) {
107 %1 = fcmp ord double %x, %y
111 define i1 @fcmp_double_uno(double %x, double %y) {
112 %1 = fcmp uno double %x, %y
116 define i1 @fcmp_double_ueq(double %x, double %y) {
117 %1 = fcmp ueq double %x, %y
121 define i1 @fcmp_double_ugt(double %x, double %y) {
122 %1 = fcmp ugt double %x, %y
126 define i1 @fcmp_double_uge(double %x, double %y) {
127 %1 = fcmp uge double %x, %y
131 define i1 @fcmp_double_ult(double %x, double %y) {
132 %1 = fcmp ult double %x, %y
136 define i1 @fcmp_double_ule(double %x, double %y) {
137 %1 = fcmp ule double %x, %y
141 define i1 @fcmp_double_une(double %x, double %y) {
142 %1 = fcmp une double %x, %y
150 tracksRegLiveness: true
152 - { id: 0, class: _ }
153 - { id: 1, class: _ }
154 - { id: 2, class: _ }
155 - { id: 3, class: _ }
156 - { id: 4, class: _ }
157 - { id: 5, class: _ }
160 liveins: $xmm0, $xmm1
162 ; CHECK-LABEL: name: fcmp_float_oeq
163 ; CHECK: liveins: $xmm0, $xmm1
164 ; CHECK: [[COPY:%[0-9]+]]:_(s128) = COPY $xmm0
165 ; CHECK: [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[COPY]](s128)
166 ; CHECK: [[COPY1:%[0-9]+]]:_(s128) = COPY $xmm1
167 ; CHECK: [[TRUNC1:%[0-9]+]]:_(s32) = G_TRUNC [[COPY1]](s128)
168 ; CHECK: [[FCMP:%[0-9]+]]:_(s8) = G_FCMP floatpred(oeq), [[TRUNC]](s32), [[TRUNC1]]
169 ; CHECK: [[COPY2:%[0-9]+]]:_(s8) = COPY [[FCMP]](s8)
170 ; CHECK: $al = COPY [[COPY2]](s8)
171 ; CHECK: RET 0, implicit $al
172 %2:_(s128) = COPY $xmm0
173 %0:_(s32) = G_TRUNC %2(s128)
174 %3:_(s128) = COPY $xmm1
175 %1:_(s32) = G_TRUNC %3(s128)
176 %4:_(s1) = G_FCMP floatpred(oeq), %0(s32), %1
177 %5:_(s8) = G_ANYEXT %4(s1)
185 tracksRegLiveness: true
187 - { id: 0, class: _ }
188 - { id: 1, class: _ }
189 - { id: 2, class: _ }
190 - { id: 3, class: _ }
191 - { id: 4, class: _ }
192 - { id: 5, class: _ }
195 liveins: $xmm0, $xmm1
197 ; CHECK-LABEL: name: fcmp_float_ogt
198 ; CHECK: liveins: $xmm0, $xmm1
199 ; CHECK: [[COPY:%[0-9]+]]:_(s128) = COPY $xmm0
200 ; CHECK: [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[COPY]](s128)
201 ; CHECK: [[COPY1:%[0-9]+]]:_(s128) = COPY $xmm1
202 ; CHECK: [[TRUNC1:%[0-9]+]]:_(s32) = G_TRUNC [[COPY1]](s128)
203 ; CHECK: [[FCMP:%[0-9]+]]:_(s8) = G_FCMP floatpred(ogt), [[TRUNC]](s32), [[TRUNC1]]
204 ; CHECK: [[COPY2:%[0-9]+]]:_(s8) = COPY [[FCMP]](s8)
205 ; CHECK: $al = COPY [[COPY2]](s8)
206 ; CHECK: RET 0, implicit $al
207 %2:_(s128) = COPY $xmm0
208 %0:_(s32) = G_TRUNC %2(s128)
209 %3:_(s128) = COPY $xmm1
210 %1:_(s32) = G_TRUNC %3(s128)
211 %4:_(s1) = G_FCMP floatpred(ogt), %0(s32), %1
212 %5:_(s8) = G_ANYEXT %4(s1)
220 tracksRegLiveness: true
222 - { id: 0, class: _ }
223 - { id: 1, class: _ }
224 - { id: 2, class: _ }
225 - { id: 3, class: _ }
226 - { id: 4, class: _ }
227 - { id: 5, class: _ }
230 liveins: $xmm0, $xmm1
232 ; CHECK-LABEL: name: fcmp_float_oge
233 ; CHECK: liveins: $xmm0, $xmm1
234 ; CHECK: [[COPY:%[0-9]+]]:_(s128) = COPY $xmm0
235 ; CHECK: [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[COPY]](s128)
236 ; CHECK: [[COPY1:%[0-9]+]]:_(s128) = COPY $xmm1
237 ; CHECK: [[TRUNC1:%[0-9]+]]:_(s32) = G_TRUNC [[COPY1]](s128)
238 ; CHECK: [[FCMP:%[0-9]+]]:_(s8) = G_FCMP floatpred(oge), [[TRUNC]](s32), [[TRUNC1]]
239 ; CHECK: [[COPY2:%[0-9]+]]:_(s8) = COPY [[FCMP]](s8)
240 ; CHECK: $al = COPY [[COPY2]](s8)
241 ; CHECK: RET 0, implicit $al
242 %2:_(s128) = COPY $xmm0
243 %0:_(s32) = G_TRUNC %2(s128)
244 %3:_(s128) = COPY $xmm1
245 %1:_(s32) = G_TRUNC %3(s128)
246 %4:_(s1) = G_FCMP floatpred(oge), %0(s32), %1
247 %5:_(s8) = G_ANYEXT %4(s1)
255 tracksRegLiveness: true
257 - { id: 0, class: _ }
258 - { id: 1, class: _ }
259 - { id: 2, class: _ }
260 - { id: 3, class: _ }
261 - { id: 4, class: _ }
262 - { id: 5, class: _ }
265 liveins: $xmm0, $xmm1
267 ; CHECK-LABEL: name: fcmp_float_olt
268 ; CHECK: liveins: $xmm0, $xmm1
269 ; CHECK: [[COPY:%[0-9]+]]:_(s128) = COPY $xmm0
270 ; CHECK: [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[COPY]](s128)
271 ; CHECK: [[COPY1:%[0-9]+]]:_(s128) = COPY $xmm1
272 ; CHECK: [[TRUNC1:%[0-9]+]]:_(s32) = G_TRUNC [[COPY1]](s128)
273 ; CHECK: [[FCMP:%[0-9]+]]:_(s8) = G_FCMP floatpred(olt), [[TRUNC]](s32), [[TRUNC1]]
274 ; CHECK: [[COPY2:%[0-9]+]]:_(s8) = COPY [[FCMP]](s8)
275 ; CHECK: $al = COPY [[COPY2]](s8)
276 ; CHECK: RET 0, implicit $al
277 %2:_(s128) = COPY $xmm0
278 %0:_(s32) = G_TRUNC %2(s128)
279 %3:_(s128) = COPY $xmm1
280 %1:_(s32) = G_TRUNC %3(s128)
281 %4:_(s1) = G_FCMP floatpred(olt), %0(s32), %1
282 %5:_(s8) = G_ANYEXT %4(s1)
290 tracksRegLiveness: true
292 - { id: 0, class: _ }
293 - { id: 1, class: _ }
294 - { id: 2, class: _ }
295 - { id: 3, class: _ }
296 - { id: 4, class: _ }
297 - { id: 5, class: _ }
300 liveins: $xmm0, $xmm1
302 ; CHECK-LABEL: name: fcmp_float_ole
303 ; CHECK: liveins: $xmm0, $xmm1
304 ; CHECK: [[COPY:%[0-9]+]]:_(s128) = COPY $xmm0
305 ; CHECK: [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[COPY]](s128)
306 ; CHECK: [[COPY1:%[0-9]+]]:_(s128) = COPY $xmm1
307 ; CHECK: [[TRUNC1:%[0-9]+]]:_(s32) = G_TRUNC [[COPY1]](s128)
308 ; CHECK: [[FCMP:%[0-9]+]]:_(s8) = G_FCMP floatpred(ole), [[TRUNC]](s32), [[TRUNC1]]
309 ; CHECK: [[COPY2:%[0-9]+]]:_(s8) = COPY [[FCMP]](s8)
310 ; CHECK: $al = COPY [[COPY2]](s8)
311 ; CHECK: RET 0, implicit $al
312 %2:_(s128) = COPY $xmm0
313 %0:_(s32) = G_TRUNC %2(s128)
314 %3:_(s128) = COPY $xmm1
315 %1:_(s32) = G_TRUNC %3(s128)
316 %4:_(s1) = G_FCMP floatpred(ole), %0(s32), %1
317 %5:_(s8) = G_ANYEXT %4(s1)
325 tracksRegLiveness: true
327 - { id: 0, class: _ }
328 - { id: 1, class: _ }
329 - { id: 2, class: _ }
330 - { id: 3, class: _ }
331 - { id: 4, class: _ }
332 - { id: 5, class: _ }
335 liveins: $xmm0, $xmm1
337 ; CHECK-LABEL: name: fcmp_float_one
338 ; CHECK: liveins: $xmm0, $xmm1
339 ; CHECK: [[COPY:%[0-9]+]]:_(s128) = COPY $xmm0
340 ; CHECK: [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[COPY]](s128)
341 ; CHECK: [[COPY1:%[0-9]+]]:_(s128) = COPY $xmm1
342 ; CHECK: [[TRUNC1:%[0-9]+]]:_(s32) = G_TRUNC [[COPY1]](s128)
343 ; CHECK: [[FCMP:%[0-9]+]]:_(s8) = G_FCMP floatpred(one), [[TRUNC]](s32), [[TRUNC1]]
344 ; CHECK: [[COPY2:%[0-9]+]]:_(s8) = COPY [[FCMP]](s8)
345 ; CHECK: $al = COPY [[COPY2]](s8)
346 ; CHECK: RET 0, implicit $al
347 %2:_(s128) = COPY $xmm0
348 %0:_(s32) = G_TRUNC %2(s128)
349 %3:_(s128) = COPY $xmm1
350 %1:_(s32) = G_TRUNC %3(s128)
351 %4:_(s1) = G_FCMP floatpred(one), %0(s32), %1
352 %5:_(s8) = G_ANYEXT %4(s1)
360 tracksRegLiveness: true
362 - { id: 0, class: _ }
363 - { id: 1, class: _ }
364 - { id: 2, class: _ }
365 - { id: 3, class: _ }
366 - { id: 4, class: _ }
367 - { id: 5, class: _ }
370 liveins: $xmm0, $xmm1
372 ; CHECK-LABEL: name: fcmp_float_ord
373 ; CHECK: liveins: $xmm0, $xmm1
374 ; CHECK: [[COPY:%[0-9]+]]:_(s128) = COPY $xmm0
375 ; CHECK: [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[COPY]](s128)
376 ; CHECK: [[COPY1:%[0-9]+]]:_(s128) = COPY $xmm1
377 ; CHECK: [[TRUNC1:%[0-9]+]]:_(s32) = G_TRUNC [[COPY1]](s128)
378 ; CHECK: [[FCMP:%[0-9]+]]:_(s8) = G_FCMP floatpred(ord), [[TRUNC]](s32), [[TRUNC1]]
379 ; CHECK: [[COPY2:%[0-9]+]]:_(s8) = COPY [[FCMP]](s8)
380 ; CHECK: $al = COPY [[COPY2]](s8)
381 ; CHECK: RET 0, implicit $al
382 %2:_(s128) = COPY $xmm0
383 %0:_(s32) = G_TRUNC %2(s128)
384 %3:_(s128) = COPY $xmm1
385 %1:_(s32) = G_TRUNC %3(s128)
386 %4:_(s1) = G_FCMP floatpred(ord), %0(s32), %1
387 %5:_(s8) = G_ANYEXT %4(s1)
395 tracksRegLiveness: true
397 - { id: 0, class: _ }
398 - { id: 1, class: _ }
399 - { id: 2, class: _ }
400 - { id: 3, class: _ }
401 - { id: 4, class: _ }
402 - { id: 5, class: _ }
405 liveins: $xmm0, $xmm1
407 ; CHECK-LABEL: name: fcmp_float_uno
408 ; CHECK: liveins: $xmm0, $xmm1
409 ; CHECK: [[COPY:%[0-9]+]]:_(s128) = COPY $xmm0
410 ; CHECK: [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[COPY]](s128)
411 ; CHECK: [[COPY1:%[0-9]+]]:_(s128) = COPY $xmm1
412 ; CHECK: [[TRUNC1:%[0-9]+]]:_(s32) = G_TRUNC [[COPY1]](s128)
413 ; CHECK: [[FCMP:%[0-9]+]]:_(s8) = G_FCMP floatpred(uno), [[TRUNC]](s32), [[TRUNC1]]
414 ; CHECK: [[COPY2:%[0-9]+]]:_(s8) = COPY [[FCMP]](s8)
415 ; CHECK: $al = COPY [[COPY2]](s8)
416 ; CHECK: RET 0, implicit $al
417 %2:_(s128) = COPY $xmm0
418 %0:_(s32) = G_TRUNC %2(s128)
419 %3:_(s128) = COPY $xmm1
420 %1:_(s32) = G_TRUNC %3(s128)
421 %4:_(s1) = G_FCMP floatpred(uno), %0(s32), %1
422 %5:_(s8) = G_ANYEXT %4(s1)
430 tracksRegLiveness: true
432 - { id: 0, class: _ }
433 - { id: 1, class: _ }
434 - { id: 2, class: _ }
435 - { id: 3, class: _ }
436 - { id: 4, class: _ }
437 - { id: 5, class: _ }
440 liveins: $xmm0, $xmm1
442 ; CHECK-LABEL: name: fcmp_float_ueq
443 ; CHECK: liveins: $xmm0, $xmm1
444 ; CHECK: [[COPY:%[0-9]+]]:_(s128) = COPY $xmm0
445 ; CHECK: [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[COPY]](s128)
446 ; CHECK: [[COPY1:%[0-9]+]]:_(s128) = COPY $xmm1
447 ; CHECK: [[TRUNC1:%[0-9]+]]:_(s32) = G_TRUNC [[COPY1]](s128)
448 ; CHECK: [[FCMP:%[0-9]+]]:_(s8) = G_FCMP floatpred(ueq), [[TRUNC]](s32), [[TRUNC1]]
449 ; CHECK: [[COPY2:%[0-9]+]]:_(s8) = COPY [[FCMP]](s8)
450 ; CHECK: $al = COPY [[COPY2]](s8)
451 ; CHECK: RET 0, implicit $al
452 %2:_(s128) = COPY $xmm0
453 %0:_(s32) = G_TRUNC %2(s128)
454 %3:_(s128) = COPY $xmm1
455 %1:_(s32) = G_TRUNC %3(s128)
456 %4:_(s1) = G_FCMP floatpred(ueq), %0(s32), %1
457 %5:_(s8) = G_ANYEXT %4(s1)
465 tracksRegLiveness: true
467 - { id: 0, class: _ }
468 - { id: 1, class: _ }
469 - { id: 2, class: _ }
470 - { id: 3, class: _ }
471 - { id: 4, class: _ }
472 - { id: 5, class: _ }
475 liveins: $xmm0, $xmm1
477 ; CHECK-LABEL: name: fcmp_float_ugt
478 ; CHECK: liveins: $xmm0, $xmm1
479 ; CHECK: [[COPY:%[0-9]+]]:_(s128) = COPY $xmm0
480 ; CHECK: [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[COPY]](s128)
481 ; CHECK: [[COPY1:%[0-9]+]]:_(s128) = COPY $xmm1
482 ; CHECK: [[TRUNC1:%[0-9]+]]:_(s32) = G_TRUNC [[COPY1]](s128)
483 ; CHECK: [[FCMP:%[0-9]+]]:_(s8) = G_FCMP floatpred(ugt), [[TRUNC]](s32), [[TRUNC1]]
484 ; CHECK: [[COPY2:%[0-9]+]]:_(s8) = COPY [[FCMP]](s8)
485 ; CHECK: $al = COPY [[COPY2]](s8)
486 ; CHECK: RET 0, implicit $al
487 %2:_(s128) = COPY $xmm0
488 %0:_(s32) = G_TRUNC %2(s128)
489 %3:_(s128) = COPY $xmm1
490 %1:_(s32) = G_TRUNC %3(s128)
491 %4:_(s1) = G_FCMP floatpred(ugt), %0(s32), %1
492 %5:_(s8) = G_ANYEXT %4(s1)
500 tracksRegLiveness: true
502 - { id: 0, class: _ }
503 - { id: 1, class: _ }
504 - { id: 2, class: _ }
505 - { id: 3, class: _ }
506 - { id: 4, class: _ }
507 - { id: 5, class: _ }
510 liveins: $xmm0, $xmm1
512 ; CHECK-LABEL: name: fcmp_float_uge
513 ; CHECK: liveins: $xmm0, $xmm1
514 ; CHECK: [[COPY:%[0-9]+]]:_(s128) = COPY $xmm0
515 ; CHECK: [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[COPY]](s128)
516 ; CHECK: [[COPY1:%[0-9]+]]:_(s128) = COPY $xmm1
517 ; CHECK: [[TRUNC1:%[0-9]+]]:_(s32) = G_TRUNC [[COPY1]](s128)
518 ; CHECK: [[FCMP:%[0-9]+]]:_(s8) = G_FCMP floatpred(uge), [[TRUNC]](s32), [[TRUNC1]]
519 ; CHECK: [[COPY2:%[0-9]+]]:_(s8) = COPY [[FCMP]](s8)
520 ; CHECK: $al = COPY [[COPY2]](s8)
521 ; CHECK: RET 0, implicit $al
522 %2:_(s128) = COPY $xmm0
523 %0:_(s32) = G_TRUNC %2(s128)
524 %3:_(s128) = COPY $xmm1
525 %1:_(s32) = G_TRUNC %3(s128)
526 %4:_(s1) = G_FCMP floatpred(uge), %0(s32), %1
527 %5:_(s8) = G_ANYEXT %4(s1)
535 tracksRegLiveness: true
537 - { id: 0, class: _ }
538 - { id: 1, class: _ }
539 - { id: 2, class: _ }
540 - { id: 3, class: _ }
541 - { id: 4, class: _ }
542 - { id: 5, class: _ }
545 liveins: $xmm0, $xmm1
547 ; CHECK-LABEL: name: fcmp_float_ult
548 ; CHECK: liveins: $xmm0, $xmm1
549 ; CHECK: [[COPY:%[0-9]+]]:_(s128) = COPY $xmm0
550 ; CHECK: [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[COPY]](s128)
551 ; CHECK: [[COPY1:%[0-9]+]]:_(s128) = COPY $xmm1
552 ; CHECK: [[TRUNC1:%[0-9]+]]:_(s32) = G_TRUNC [[COPY1]](s128)
553 ; CHECK: [[FCMP:%[0-9]+]]:_(s8) = G_FCMP floatpred(ult), [[TRUNC]](s32), [[TRUNC1]]
554 ; CHECK: [[COPY2:%[0-9]+]]:_(s8) = COPY [[FCMP]](s8)
555 ; CHECK: $al = COPY [[COPY2]](s8)
556 ; CHECK: RET 0, implicit $al
557 %2:_(s128) = COPY $xmm0
558 %0:_(s32) = G_TRUNC %2(s128)
559 %3:_(s128) = COPY $xmm1
560 %1:_(s32) = G_TRUNC %3(s128)
561 %4:_(s1) = G_FCMP floatpred(ult), %0(s32), %1
562 %5:_(s8) = G_ANYEXT %4(s1)
570 tracksRegLiveness: true
572 - { id: 0, class: _ }
573 - { id: 1, class: _ }
574 - { id: 2, class: _ }
575 - { id: 3, class: _ }
576 - { id: 4, class: _ }
577 - { id: 5, class: _ }
580 liveins: $xmm0, $xmm1
582 ; CHECK-LABEL: name: fcmp_float_ule
583 ; CHECK: liveins: $xmm0, $xmm1
584 ; CHECK: [[COPY:%[0-9]+]]:_(s128) = COPY $xmm0
585 ; CHECK: [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[COPY]](s128)
586 ; CHECK: [[COPY1:%[0-9]+]]:_(s128) = COPY $xmm1
587 ; CHECK: [[TRUNC1:%[0-9]+]]:_(s32) = G_TRUNC [[COPY1]](s128)
588 ; CHECK: [[FCMP:%[0-9]+]]:_(s8) = G_FCMP floatpred(ule), [[TRUNC]](s32), [[TRUNC1]]
589 ; CHECK: [[COPY2:%[0-9]+]]:_(s8) = COPY [[FCMP]](s8)
590 ; CHECK: $al = COPY [[COPY2]](s8)
591 ; CHECK: RET 0, implicit $al
592 %2:_(s128) = COPY $xmm0
593 %0:_(s32) = G_TRUNC %2(s128)
594 %3:_(s128) = COPY $xmm1
595 %1:_(s32) = G_TRUNC %3(s128)
596 %4:_(s1) = G_FCMP floatpred(ule), %0(s32), %1
597 %5:_(s8) = G_ANYEXT %4(s1)
605 tracksRegLiveness: true
607 - { id: 0, class: _ }
608 - { id: 1, class: _ }
609 - { id: 2, class: _ }
610 - { id: 3, class: _ }
611 - { id: 4, class: _ }
612 - { id: 5, class: _ }
615 liveins: $xmm0, $xmm1
617 ; CHECK-LABEL: name: fcmp_float_une
618 ; CHECK: liveins: $xmm0, $xmm1
619 ; CHECK: [[COPY:%[0-9]+]]:_(s128) = COPY $xmm0
620 ; CHECK: [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[COPY]](s128)
621 ; CHECK: [[COPY1:%[0-9]+]]:_(s128) = COPY $xmm1
622 ; CHECK: [[TRUNC1:%[0-9]+]]:_(s32) = G_TRUNC [[COPY1]](s128)
623 ; CHECK: [[FCMP:%[0-9]+]]:_(s8) = G_FCMP floatpred(une), [[TRUNC]](s32), [[TRUNC1]]
624 ; CHECK: [[COPY2:%[0-9]+]]:_(s8) = COPY [[FCMP]](s8)
625 ; CHECK: $al = COPY [[COPY2]](s8)
626 ; CHECK: RET 0, implicit $al
627 %2:_(s128) = COPY $xmm0
628 %0:_(s32) = G_TRUNC %2(s128)
629 %3:_(s128) = COPY $xmm1
630 %1:_(s32) = G_TRUNC %3(s128)
631 %4:_(s1) = G_FCMP floatpred(une), %0(s32), %1
632 %5:_(s8) = G_ANYEXT %4(s1)
638 name: fcmp_double_oeq
640 tracksRegLiveness: true
642 - { id: 0, class: _ }
643 - { id: 1, class: _ }
644 - { id: 2, class: _ }
645 - { id: 3, class: _ }
646 - { id: 4, class: _ }
647 - { id: 5, class: _ }
650 liveins: $xmm0, $xmm1
652 ; CHECK-LABEL: name: fcmp_double_oeq
653 ; CHECK: liveins: $xmm0, $xmm1
654 ; CHECK: [[COPY:%[0-9]+]]:_(s128) = COPY $xmm0
655 ; CHECK: [[TRUNC:%[0-9]+]]:_(s64) = G_TRUNC [[COPY]](s128)
656 ; CHECK: [[COPY1:%[0-9]+]]:_(s128) = COPY $xmm1
657 ; CHECK: [[TRUNC1:%[0-9]+]]:_(s64) = G_TRUNC [[COPY1]](s128)
658 ; CHECK: [[FCMP:%[0-9]+]]:_(s8) = G_FCMP floatpred(oeq), [[TRUNC]](s64), [[TRUNC1]]
659 ; CHECK: [[COPY2:%[0-9]+]]:_(s8) = COPY [[FCMP]](s8)
660 ; CHECK: $al = COPY [[COPY2]](s8)
661 ; CHECK: RET 0, implicit $al
662 %2:_(s128) = COPY $xmm0
663 %0:_(s64) = G_TRUNC %2(s128)
664 %3:_(s128) = COPY $xmm1
665 %1:_(s64) = G_TRUNC %3(s128)
666 %4:_(s1) = G_FCMP floatpred(oeq), %0(s64), %1
667 %5:_(s8) = G_ANYEXT %4(s1)
673 name: fcmp_double_ogt
675 tracksRegLiveness: true
677 - { id: 0, class: _ }
678 - { id: 1, class: _ }
679 - { id: 2, class: _ }
680 - { id: 3, class: _ }
681 - { id: 4, class: _ }
682 - { id: 5, class: _ }
685 liveins: $xmm0, $xmm1
687 ; CHECK-LABEL: name: fcmp_double_ogt
688 ; CHECK: liveins: $xmm0, $xmm1
689 ; CHECK: [[COPY:%[0-9]+]]:_(s128) = COPY $xmm0
690 ; CHECK: [[TRUNC:%[0-9]+]]:_(s64) = G_TRUNC [[COPY]](s128)
691 ; CHECK: [[COPY1:%[0-9]+]]:_(s128) = COPY $xmm1
692 ; CHECK: [[TRUNC1:%[0-9]+]]:_(s64) = G_TRUNC [[COPY1]](s128)
693 ; CHECK: [[FCMP:%[0-9]+]]:_(s8) = G_FCMP floatpred(ogt), [[TRUNC]](s64), [[TRUNC1]]
694 ; CHECK: [[COPY2:%[0-9]+]]:_(s8) = COPY [[FCMP]](s8)
695 ; CHECK: $al = COPY [[COPY2]](s8)
696 ; CHECK: RET 0, implicit $al
697 %2:_(s128) = COPY $xmm0
698 %0:_(s64) = G_TRUNC %2(s128)
699 %3:_(s128) = COPY $xmm1
700 %1:_(s64) = G_TRUNC %3(s128)
701 %4:_(s1) = G_FCMP floatpred(ogt), %0(s64), %1
702 %5:_(s8) = G_ANYEXT %4(s1)
708 name: fcmp_double_oge
710 tracksRegLiveness: true
712 - { id: 0, class: _ }
713 - { id: 1, class: _ }
714 - { id: 2, class: _ }
715 - { id: 3, class: _ }
716 - { id: 4, class: _ }
717 - { id: 5, class: _ }
720 liveins: $xmm0, $xmm1
722 ; CHECK-LABEL: name: fcmp_double_oge
723 ; CHECK: liveins: $xmm0, $xmm1
724 ; CHECK: [[COPY:%[0-9]+]]:_(s128) = COPY $xmm0
725 ; CHECK: [[TRUNC:%[0-9]+]]:_(s64) = G_TRUNC [[COPY]](s128)
726 ; CHECK: [[COPY1:%[0-9]+]]:_(s128) = COPY $xmm1
727 ; CHECK: [[TRUNC1:%[0-9]+]]:_(s64) = G_TRUNC [[COPY1]](s128)
728 ; CHECK: [[FCMP:%[0-9]+]]:_(s8) = G_FCMP floatpred(oge), [[TRUNC]](s64), [[TRUNC1]]
729 ; CHECK: [[COPY2:%[0-9]+]]:_(s8) = COPY [[FCMP]](s8)
730 ; CHECK: $al = COPY [[COPY2]](s8)
731 ; CHECK: RET 0, implicit $al
732 %2:_(s128) = COPY $xmm0
733 %0:_(s64) = G_TRUNC %2(s128)
734 %3:_(s128) = COPY $xmm1
735 %1:_(s64) = G_TRUNC %3(s128)
736 %4:_(s1) = G_FCMP floatpred(oge), %0(s64), %1
737 %5:_(s8) = G_ANYEXT %4(s1)
743 name: fcmp_double_olt
745 tracksRegLiveness: true
747 - { id: 0, class: _ }
748 - { id: 1, class: _ }
749 - { id: 2, class: _ }
750 - { id: 3, class: _ }
751 - { id: 4, class: _ }
752 - { id: 5, class: _ }
755 liveins: $xmm0, $xmm1
757 ; CHECK-LABEL: name: fcmp_double_olt
758 ; CHECK: liveins: $xmm0, $xmm1
759 ; CHECK: [[COPY:%[0-9]+]]:_(s128) = COPY $xmm0
760 ; CHECK: [[TRUNC:%[0-9]+]]:_(s64) = G_TRUNC [[COPY]](s128)
761 ; CHECK: [[COPY1:%[0-9]+]]:_(s128) = COPY $xmm1
762 ; CHECK: [[TRUNC1:%[0-9]+]]:_(s64) = G_TRUNC [[COPY1]](s128)
763 ; CHECK: [[FCMP:%[0-9]+]]:_(s8) = G_FCMP floatpred(olt), [[TRUNC]](s64), [[TRUNC1]]
764 ; CHECK: [[COPY2:%[0-9]+]]:_(s8) = COPY [[FCMP]](s8)
765 ; CHECK: $al = COPY [[COPY2]](s8)
766 ; CHECK: RET 0, implicit $al
767 %2:_(s128) = COPY $xmm0
768 %0:_(s64) = G_TRUNC %2(s128)
769 %3:_(s128) = COPY $xmm1
770 %1:_(s64) = G_TRUNC %3(s128)
771 %4:_(s1) = G_FCMP floatpred(olt), %0(s64), %1
772 %5:_(s8) = G_ANYEXT %4(s1)
778 name: fcmp_double_ole
780 tracksRegLiveness: true
782 - { id: 0, class: _ }
783 - { id: 1, class: _ }
784 - { id: 2, class: _ }
785 - { id: 3, class: _ }
786 - { id: 4, class: _ }
787 - { id: 5, class: _ }
790 liveins: $xmm0, $xmm1
792 ; CHECK-LABEL: name: fcmp_double_ole
793 ; CHECK: liveins: $xmm0, $xmm1
794 ; CHECK: [[COPY:%[0-9]+]]:_(s128) = COPY $xmm0
795 ; CHECK: [[TRUNC:%[0-9]+]]:_(s64) = G_TRUNC [[COPY]](s128)
796 ; CHECK: [[COPY1:%[0-9]+]]:_(s128) = COPY $xmm1
797 ; CHECK: [[TRUNC1:%[0-9]+]]:_(s64) = G_TRUNC [[COPY1]](s128)
798 ; CHECK: [[FCMP:%[0-9]+]]:_(s8) = G_FCMP floatpred(ole), [[TRUNC]](s64), [[TRUNC1]]
799 ; CHECK: [[COPY2:%[0-9]+]]:_(s8) = COPY [[FCMP]](s8)
800 ; CHECK: $al = COPY [[COPY2]](s8)
801 ; CHECK: RET 0, implicit $al
802 %2:_(s128) = COPY $xmm0
803 %0:_(s64) = G_TRUNC %2(s128)
804 %3:_(s128) = COPY $xmm1
805 %1:_(s64) = G_TRUNC %3(s128)
806 %4:_(s1) = G_FCMP floatpred(ole), %0(s64), %1
807 %5:_(s8) = G_ANYEXT %4(s1)
813 name: fcmp_double_one
815 tracksRegLiveness: true
817 - { id: 0, class: _ }
818 - { id: 1, class: _ }
819 - { id: 2, class: _ }
820 - { id: 3, class: _ }
821 - { id: 4, class: _ }
822 - { id: 5, class: _ }
825 liveins: $xmm0, $xmm1
827 ; CHECK-LABEL: name: fcmp_double_one
828 ; CHECK: liveins: $xmm0, $xmm1
829 ; CHECK: [[COPY:%[0-9]+]]:_(s128) = COPY $xmm0
830 ; CHECK: [[TRUNC:%[0-9]+]]:_(s64) = G_TRUNC [[COPY]](s128)
831 ; CHECK: [[COPY1:%[0-9]+]]:_(s128) = COPY $xmm1
832 ; CHECK: [[TRUNC1:%[0-9]+]]:_(s64) = G_TRUNC [[COPY1]](s128)
833 ; CHECK: [[FCMP:%[0-9]+]]:_(s8) = G_FCMP floatpred(one), [[TRUNC]](s64), [[TRUNC1]]
834 ; CHECK: [[COPY2:%[0-9]+]]:_(s8) = COPY [[FCMP]](s8)
835 ; CHECK: $al = COPY [[COPY2]](s8)
836 ; CHECK: RET 0, implicit $al
837 %2:_(s128) = COPY $xmm0
838 %0:_(s64) = G_TRUNC %2(s128)
839 %3:_(s128) = COPY $xmm1
840 %1:_(s64) = G_TRUNC %3(s128)
841 %4:_(s1) = G_FCMP floatpred(one), %0(s64), %1
842 %5:_(s8) = G_ANYEXT %4(s1)
848 name: fcmp_double_ord
850 tracksRegLiveness: true
852 - { id: 0, class: _ }
853 - { id: 1, class: _ }
854 - { id: 2, class: _ }
855 - { id: 3, class: _ }
856 - { id: 4, class: _ }
857 - { id: 5, class: _ }
860 liveins: $xmm0, $xmm1
862 ; CHECK-LABEL: name: fcmp_double_ord
863 ; CHECK: liveins: $xmm0, $xmm1
864 ; CHECK: [[COPY:%[0-9]+]]:_(s128) = COPY $xmm0
865 ; CHECK: [[TRUNC:%[0-9]+]]:_(s64) = G_TRUNC [[COPY]](s128)
866 ; CHECK: [[COPY1:%[0-9]+]]:_(s128) = COPY $xmm1
867 ; CHECK: [[TRUNC1:%[0-9]+]]:_(s64) = G_TRUNC [[COPY1]](s128)
868 ; CHECK: [[FCMP:%[0-9]+]]:_(s8) = G_FCMP floatpred(ord), [[TRUNC]](s64), [[TRUNC1]]
869 ; CHECK: [[COPY2:%[0-9]+]]:_(s8) = COPY [[FCMP]](s8)
870 ; CHECK: $al = COPY [[COPY2]](s8)
871 ; CHECK: RET 0, implicit $al
872 %2:_(s128) = COPY $xmm0
873 %0:_(s64) = G_TRUNC %2(s128)
874 %3:_(s128) = COPY $xmm1
875 %1:_(s64) = G_TRUNC %3(s128)
876 %4:_(s1) = G_FCMP floatpred(ord), %0(s64), %1
877 %5:_(s8) = G_ANYEXT %4(s1)
883 name: fcmp_double_uno
885 tracksRegLiveness: true
887 - { id: 0, class: _ }
888 - { id: 1, class: _ }
889 - { id: 2, class: _ }
890 - { id: 3, class: _ }
891 - { id: 4, class: _ }
892 - { id: 5, class: _ }
895 liveins: $xmm0, $xmm1
897 ; CHECK-LABEL: name: fcmp_double_uno
898 ; CHECK: liveins: $xmm0, $xmm1
899 ; CHECK: [[COPY:%[0-9]+]]:_(s128) = COPY $xmm0
900 ; CHECK: [[TRUNC:%[0-9]+]]:_(s64) = G_TRUNC [[COPY]](s128)
901 ; CHECK: [[COPY1:%[0-9]+]]:_(s128) = COPY $xmm1
902 ; CHECK: [[TRUNC1:%[0-9]+]]:_(s64) = G_TRUNC [[COPY1]](s128)
903 ; CHECK: [[FCMP:%[0-9]+]]:_(s8) = G_FCMP floatpred(uno), [[TRUNC]](s64), [[TRUNC1]]
904 ; CHECK: [[COPY2:%[0-9]+]]:_(s8) = COPY [[FCMP]](s8)
905 ; CHECK: $al = COPY [[COPY2]](s8)
906 ; CHECK: RET 0, implicit $al
907 %2:_(s128) = COPY $xmm0
908 %0:_(s64) = G_TRUNC %2(s128)
909 %3:_(s128) = COPY $xmm1
910 %1:_(s64) = G_TRUNC %3(s128)
911 %4:_(s1) = G_FCMP floatpred(uno), %0(s64), %1
912 %5:_(s8) = G_ANYEXT %4(s1)
918 name: fcmp_double_ueq
920 tracksRegLiveness: true
922 - { id: 0, class: _ }
923 - { id: 1, class: _ }
924 - { id: 2, class: _ }
925 - { id: 3, class: _ }
926 - { id: 4, class: _ }
927 - { id: 5, class: _ }
930 liveins: $xmm0, $xmm1
932 ; CHECK-LABEL: name: fcmp_double_ueq
933 ; CHECK: liveins: $xmm0, $xmm1
934 ; CHECK: [[COPY:%[0-9]+]]:_(s128) = COPY $xmm0
935 ; CHECK: [[TRUNC:%[0-9]+]]:_(s64) = G_TRUNC [[COPY]](s128)
936 ; CHECK: [[COPY1:%[0-9]+]]:_(s128) = COPY $xmm1
937 ; CHECK: [[TRUNC1:%[0-9]+]]:_(s64) = G_TRUNC [[COPY1]](s128)
938 ; CHECK: [[FCMP:%[0-9]+]]:_(s8) = G_FCMP floatpred(ueq), [[TRUNC]](s64), [[TRUNC1]]
939 ; CHECK: [[COPY2:%[0-9]+]]:_(s8) = COPY [[FCMP]](s8)
940 ; CHECK: $al = COPY [[COPY2]](s8)
941 ; CHECK: RET 0, implicit $al
942 %2:_(s128) = COPY $xmm0
943 %0:_(s64) = G_TRUNC %2(s128)
944 %3:_(s128) = COPY $xmm1
945 %1:_(s64) = G_TRUNC %3(s128)
946 %4:_(s1) = G_FCMP floatpred(ueq), %0(s64), %1
947 %5:_(s8) = G_ANYEXT %4(s1)
953 name: fcmp_double_ugt
955 tracksRegLiveness: true
957 - { id: 0, class: _ }
958 - { id: 1, class: _ }
959 - { id: 2, class: _ }
960 - { id: 3, class: _ }
961 - { id: 4, class: _ }
962 - { id: 5, class: _ }
965 liveins: $xmm0, $xmm1
967 ; CHECK-LABEL: name: fcmp_double_ugt
968 ; CHECK: liveins: $xmm0, $xmm1
969 ; CHECK: [[COPY:%[0-9]+]]:_(s128) = COPY $xmm0
970 ; CHECK: [[TRUNC:%[0-9]+]]:_(s64) = G_TRUNC [[COPY]](s128)
971 ; CHECK: [[COPY1:%[0-9]+]]:_(s128) = COPY $xmm1
972 ; CHECK: [[TRUNC1:%[0-9]+]]:_(s64) = G_TRUNC [[COPY1]](s128)
973 ; CHECK: [[FCMP:%[0-9]+]]:_(s8) = G_FCMP floatpred(ugt), [[TRUNC]](s64), [[TRUNC1]]
974 ; CHECK: [[COPY2:%[0-9]+]]:_(s8) = COPY [[FCMP]](s8)
975 ; CHECK: $al = COPY [[COPY2]](s8)
976 ; CHECK: RET 0, implicit $al
977 %2:_(s128) = COPY $xmm0
978 %0:_(s64) = G_TRUNC %2(s128)
979 %3:_(s128) = COPY $xmm1
980 %1:_(s64) = G_TRUNC %3(s128)
981 %4:_(s1) = G_FCMP floatpred(ugt), %0(s64), %1
982 %5:_(s8) = G_ANYEXT %4(s1)
988 name: fcmp_double_uge
990 tracksRegLiveness: true
992 - { id: 0, class: _ }
993 - { id: 1, class: _ }
994 - { id: 2, class: _ }
995 - { id: 3, class: _ }
996 - { id: 4, class: _ }
997 - { id: 5, class: _ }
1000 liveins: $xmm0, $xmm1
1002 ; CHECK-LABEL: name: fcmp_double_uge
1003 ; CHECK: liveins: $xmm0, $xmm1
1004 ; CHECK: [[COPY:%[0-9]+]]:_(s128) = COPY $xmm0
1005 ; CHECK: [[TRUNC:%[0-9]+]]:_(s64) = G_TRUNC [[COPY]](s128)
1006 ; CHECK: [[COPY1:%[0-9]+]]:_(s128) = COPY $xmm1
1007 ; CHECK: [[TRUNC1:%[0-9]+]]:_(s64) = G_TRUNC [[COPY1]](s128)
1008 ; CHECK: [[FCMP:%[0-9]+]]:_(s8) = G_FCMP floatpred(uge), [[TRUNC]](s64), [[TRUNC1]]
1009 ; CHECK: [[COPY2:%[0-9]+]]:_(s8) = COPY [[FCMP]](s8)
1010 ; CHECK: $al = COPY [[COPY2]](s8)
1011 ; CHECK: RET 0, implicit $al
1012 %2:_(s128) = COPY $xmm0
1013 %0:_(s64) = G_TRUNC %2(s128)
1014 %3:_(s128) = COPY $xmm1
1015 %1:_(s64) = G_TRUNC %3(s128)
1016 %4:_(s1) = G_FCMP floatpred(uge), %0(s64), %1
1017 %5:_(s8) = G_ANYEXT %4(s1)
1023 name: fcmp_double_ult
1025 tracksRegLiveness: true
1027 - { id: 0, class: _ }
1028 - { id: 1, class: _ }
1029 - { id: 2, class: _ }
1030 - { id: 3, class: _ }
1031 - { id: 4, class: _ }
1032 - { id: 5, class: _ }
1035 liveins: $xmm0, $xmm1
1037 ; CHECK-LABEL: name: fcmp_double_ult
1038 ; CHECK: liveins: $xmm0, $xmm1
1039 ; CHECK: [[COPY:%[0-9]+]]:_(s128) = COPY $xmm0
1040 ; CHECK: [[TRUNC:%[0-9]+]]:_(s64) = G_TRUNC [[COPY]](s128)
1041 ; CHECK: [[COPY1:%[0-9]+]]:_(s128) = COPY $xmm1
1042 ; CHECK: [[TRUNC1:%[0-9]+]]:_(s64) = G_TRUNC [[COPY1]](s128)
1043 ; CHECK: [[FCMP:%[0-9]+]]:_(s8) = G_FCMP floatpred(ult), [[TRUNC]](s64), [[TRUNC1]]
1044 ; CHECK: [[COPY2:%[0-9]+]]:_(s8) = COPY [[FCMP]](s8)
1045 ; CHECK: $al = COPY [[COPY2]](s8)
1046 ; CHECK: RET 0, implicit $al
1047 %2:_(s128) = COPY $xmm0
1048 %0:_(s64) = G_TRUNC %2(s128)
1049 %3:_(s128) = COPY $xmm1
1050 %1:_(s64) = G_TRUNC %3(s128)
1051 %4:_(s1) = G_FCMP floatpred(ult), %0(s64), %1
1052 %5:_(s8) = G_ANYEXT %4(s1)
1058 name: fcmp_double_ule
1060 tracksRegLiveness: true
1062 - { id: 0, class: _ }
1063 - { id: 1, class: _ }
1064 - { id: 2, class: _ }
1065 - { id: 3, class: _ }
1066 - { id: 4, class: _ }
1067 - { id: 5, class: _ }
1070 liveins: $xmm0, $xmm1
1072 ; CHECK-LABEL: name: fcmp_double_ule
1073 ; CHECK: liveins: $xmm0, $xmm1
1074 ; CHECK: [[COPY:%[0-9]+]]:_(s128) = COPY $xmm0
1075 ; CHECK: [[TRUNC:%[0-9]+]]:_(s64) = G_TRUNC [[COPY]](s128)
1076 ; CHECK: [[COPY1:%[0-9]+]]:_(s128) = COPY $xmm1
1077 ; CHECK: [[TRUNC1:%[0-9]+]]:_(s64) = G_TRUNC [[COPY1]](s128)
1078 ; CHECK: [[FCMP:%[0-9]+]]:_(s8) = G_FCMP floatpred(ule), [[TRUNC]](s64), [[TRUNC1]]
1079 ; CHECK: [[COPY2:%[0-9]+]]:_(s8) = COPY [[FCMP]](s8)
1080 ; CHECK: $al = COPY [[COPY2]](s8)
1081 ; CHECK: RET 0, implicit $al
1082 %2:_(s128) = COPY $xmm0
1083 %0:_(s64) = G_TRUNC %2(s128)
1084 %3:_(s128) = COPY $xmm1
1085 %1:_(s64) = G_TRUNC %3(s128)
1086 %4:_(s1) = G_FCMP floatpred(ule), %0(s64), %1
1087 %5:_(s8) = G_ANYEXT %4(s1)
1093 name: fcmp_double_une
1095 tracksRegLiveness: true
1097 - { id: 0, class: _ }
1098 - { id: 1, class: _ }
1099 - { id: 2, class: _ }
1100 - { id: 3, class: _ }
1101 - { id: 4, class: _ }
1102 - { id: 5, class: _ }
1105 liveins: $xmm0, $xmm1
1107 ; CHECK-LABEL: name: fcmp_double_une
1108 ; CHECK: liveins: $xmm0, $xmm1
1109 ; CHECK: [[COPY:%[0-9]+]]:_(s128) = COPY $xmm0
1110 ; CHECK: [[TRUNC:%[0-9]+]]:_(s64) = G_TRUNC [[COPY]](s128)
1111 ; CHECK: [[COPY1:%[0-9]+]]:_(s128) = COPY $xmm1
1112 ; CHECK: [[TRUNC1:%[0-9]+]]:_(s64) = G_TRUNC [[COPY1]](s128)
1113 ; CHECK: [[FCMP:%[0-9]+]]:_(s8) = G_FCMP floatpred(une), [[TRUNC]](s64), [[TRUNC1]]
1114 ; CHECK: [[COPY2:%[0-9]+]]:_(s8) = COPY [[FCMP]](s8)
1115 ; CHECK: $al = COPY [[COPY2]](s8)
1116 ; CHECK: RET 0, implicit $al
1117 %2:_(s128) = COPY $xmm0
1118 %0:_(s64) = G_TRUNC %2(s128)
1119 %3:_(s128) = COPY $xmm1
1120 %1:_(s64) = G_TRUNC %3(s128)
1121 %4:_(s1) = G_FCMP floatpred(une), %0(s64), %1
1122 %5:_(s8) = G_ANYEXT %4(s1)