xref: /llvm-project/llvm/test/CodeGen/X86/fast-isel-fcmp.ll (revision cca49663a56d90f6773f140269940d606aa61430)
10a8f54c3SEvgenii Kudriashov; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
20a8f54c3SEvgenii Kudriashov; RUN: llc < %s                               -mtriple=x86_64-apple-darwin10 | FileCheck %s --check-prefix=SDAG
30a8f54c3SEvgenii Kudriashov; RUN: llc < %s -fast-isel -fast-isel-abort=1 -mtriple=x86_64-apple-darwin10 | FileCheck %s --check-prefixes=FAST,FAST_NOAVX
40a8f54c3SEvgenii Kudriashov; RUN: llc < %s -fast-isel -fast-isel-abort=1 -mtriple=x86_64-apple-darwin10 -mattr=avx | FileCheck %s --check-prefixes=FAST,FAST_AVX
50a8f54c3SEvgenii Kudriashov; RUN: llc < %s -fast-isel -fast-isel-abort=1 -mtriple=x86_64-apple-darwin10 -mattr=avx512f | FileCheck %s --check-prefixes=FAST,FAST_AVX
60a8f54c3SEvgenii Kudriashov
70a8f54c3SEvgenii Kudriashovdefine zeroext i1 @fcmp_oeq(float %x, float %y) {
80a8f54c3SEvgenii Kudriashov; SDAG-LABEL: fcmp_oeq:
90a8f54c3SEvgenii Kudriashov; SDAG:       ## %bb.0:
100a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    cmpeqss %xmm1, %xmm0
110a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    movd %xmm0, %eax
120a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    andl $1, %eax
130a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    ## kill: def $al killed $al killed $eax
140a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    retq
150a8f54c3SEvgenii Kudriashov;
160a8f54c3SEvgenii Kudriashov; FAST_NOAVX-LABEL: fcmp_oeq:
170a8f54c3SEvgenii Kudriashov; FAST_NOAVX:       ## %bb.0:
180a8f54c3SEvgenii Kudriashov; FAST_NOAVX-NEXT:    ucomiss %xmm1, %xmm0
19*cca49663SCraig Topper; FAST_NOAVX-NEXT:    sete %cl
20*cca49663SCraig Topper; FAST_NOAVX-NEXT:    setnp %al
21*cca49663SCraig Topper; FAST_NOAVX-NEXT:    andb %cl, %al
22*cca49663SCraig Topper; FAST_NOAVX-NEXT:    andb $1, %al
230a8f54c3SEvgenii Kudriashov; FAST_NOAVX-NEXT:    retq
240a8f54c3SEvgenii Kudriashov;
250a8f54c3SEvgenii Kudriashov; FAST_AVX-LABEL: fcmp_oeq:
260a8f54c3SEvgenii Kudriashov; FAST_AVX:       ## %bb.0:
270a8f54c3SEvgenii Kudriashov; FAST_AVX-NEXT:    vucomiss %xmm1, %xmm0
28*cca49663SCraig Topper; FAST_AVX-NEXT:    sete %cl
29*cca49663SCraig Topper; FAST_AVX-NEXT:    setnp %al
30*cca49663SCraig Topper; FAST_AVX-NEXT:    andb %cl, %al
31*cca49663SCraig Topper; FAST_AVX-NEXT:    andb $1, %al
320a8f54c3SEvgenii Kudriashov; FAST_AVX-NEXT:    retq
330a8f54c3SEvgenii Kudriashov  %1 = fcmp oeq float %x, %y
340a8f54c3SEvgenii Kudriashov  ret i1 %1
350a8f54c3SEvgenii Kudriashov}
360a8f54c3SEvgenii Kudriashov
370a8f54c3SEvgenii Kudriashovdefine zeroext i1 @fcmp_ogt(float %x, float %y) {
380a8f54c3SEvgenii Kudriashov; SDAG-LABEL: fcmp_ogt:
390a8f54c3SEvgenii Kudriashov; SDAG:       ## %bb.0:
400a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    ucomiss %xmm1, %xmm0
410a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    seta %al
420a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    retq
430a8f54c3SEvgenii Kudriashov;
440a8f54c3SEvgenii Kudriashov; FAST_NOAVX-LABEL: fcmp_ogt:
450a8f54c3SEvgenii Kudriashov; FAST_NOAVX:       ## %bb.0:
460a8f54c3SEvgenii Kudriashov; FAST_NOAVX-NEXT:    ucomiss %xmm1, %xmm0
470a8f54c3SEvgenii Kudriashov; FAST_NOAVX-NEXT:    seta %al
480a8f54c3SEvgenii Kudriashov; FAST_NOAVX-NEXT:    andb $1, %al
490a8f54c3SEvgenii Kudriashov; FAST_NOAVX-NEXT:    retq
500a8f54c3SEvgenii Kudriashov;
510a8f54c3SEvgenii Kudriashov; FAST_AVX-LABEL: fcmp_ogt:
520a8f54c3SEvgenii Kudriashov; FAST_AVX:       ## %bb.0:
530a8f54c3SEvgenii Kudriashov; FAST_AVX-NEXT:    vucomiss %xmm1, %xmm0
540a8f54c3SEvgenii Kudriashov; FAST_AVX-NEXT:    seta %al
550a8f54c3SEvgenii Kudriashov; FAST_AVX-NEXT:    andb $1, %al
560a8f54c3SEvgenii Kudriashov; FAST_AVX-NEXT:    retq
570a8f54c3SEvgenii Kudriashov  %1 = fcmp ogt float %x, %y
580a8f54c3SEvgenii Kudriashov  ret i1 %1
590a8f54c3SEvgenii Kudriashov}
600a8f54c3SEvgenii Kudriashov
610a8f54c3SEvgenii Kudriashovdefine zeroext i1 @fcmp_oge(float %x, float %y) {
620a8f54c3SEvgenii Kudriashov; SDAG-LABEL: fcmp_oge:
630a8f54c3SEvgenii Kudriashov; SDAG:       ## %bb.0:
640a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    ucomiss %xmm1, %xmm0
650a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    setae %al
660a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    retq
670a8f54c3SEvgenii Kudriashov;
680a8f54c3SEvgenii Kudriashov; FAST_NOAVX-LABEL: fcmp_oge:
690a8f54c3SEvgenii Kudriashov; FAST_NOAVX:       ## %bb.0:
700a8f54c3SEvgenii Kudriashov; FAST_NOAVX-NEXT:    ucomiss %xmm1, %xmm0
710a8f54c3SEvgenii Kudriashov; FAST_NOAVX-NEXT:    setae %al
720a8f54c3SEvgenii Kudriashov; FAST_NOAVX-NEXT:    andb $1, %al
730a8f54c3SEvgenii Kudriashov; FAST_NOAVX-NEXT:    retq
740a8f54c3SEvgenii Kudriashov;
750a8f54c3SEvgenii Kudriashov; FAST_AVX-LABEL: fcmp_oge:
760a8f54c3SEvgenii Kudriashov; FAST_AVX:       ## %bb.0:
770a8f54c3SEvgenii Kudriashov; FAST_AVX-NEXT:    vucomiss %xmm1, %xmm0
780a8f54c3SEvgenii Kudriashov; FAST_AVX-NEXT:    setae %al
790a8f54c3SEvgenii Kudriashov; FAST_AVX-NEXT:    andb $1, %al
800a8f54c3SEvgenii Kudriashov; FAST_AVX-NEXT:    retq
810a8f54c3SEvgenii Kudriashov  %1 = fcmp oge float %x, %y
820a8f54c3SEvgenii Kudriashov  ret i1 %1
830a8f54c3SEvgenii Kudriashov}
840a8f54c3SEvgenii Kudriashov
850a8f54c3SEvgenii Kudriashovdefine zeroext i1 @fcmp_olt(float %x, float %y) {
860a8f54c3SEvgenii Kudriashov; SDAG-LABEL: fcmp_olt:
870a8f54c3SEvgenii Kudriashov; SDAG:       ## %bb.0:
880a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    ucomiss %xmm0, %xmm1
890a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    seta %al
900a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    retq
910a8f54c3SEvgenii Kudriashov;
920a8f54c3SEvgenii Kudriashov; FAST_NOAVX-LABEL: fcmp_olt:
930a8f54c3SEvgenii Kudriashov; FAST_NOAVX:       ## %bb.0:
940a8f54c3SEvgenii Kudriashov; FAST_NOAVX-NEXT:    ucomiss %xmm0, %xmm1
950a8f54c3SEvgenii Kudriashov; FAST_NOAVX-NEXT:    seta %al
960a8f54c3SEvgenii Kudriashov; FAST_NOAVX-NEXT:    andb $1, %al
970a8f54c3SEvgenii Kudriashov; FAST_NOAVX-NEXT:    retq
980a8f54c3SEvgenii Kudriashov;
990a8f54c3SEvgenii Kudriashov; FAST_AVX-LABEL: fcmp_olt:
1000a8f54c3SEvgenii Kudriashov; FAST_AVX:       ## %bb.0:
1010a8f54c3SEvgenii Kudriashov; FAST_AVX-NEXT:    vucomiss %xmm0, %xmm1
1020a8f54c3SEvgenii Kudriashov; FAST_AVX-NEXT:    seta %al
1030a8f54c3SEvgenii Kudriashov; FAST_AVX-NEXT:    andb $1, %al
1040a8f54c3SEvgenii Kudriashov; FAST_AVX-NEXT:    retq
1050a8f54c3SEvgenii Kudriashov  %1 = fcmp olt float %x, %y
1060a8f54c3SEvgenii Kudriashov  ret i1 %1
1070a8f54c3SEvgenii Kudriashov}
1080a8f54c3SEvgenii Kudriashov
1090a8f54c3SEvgenii Kudriashovdefine zeroext i1 @fcmp_ole(float %x, float %y) {
1100a8f54c3SEvgenii Kudriashov; SDAG-LABEL: fcmp_ole:
1110a8f54c3SEvgenii Kudriashov; SDAG:       ## %bb.0:
1120a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    ucomiss %xmm0, %xmm1
1130a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    setae %al
1140a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    retq
1150a8f54c3SEvgenii Kudriashov;
1160a8f54c3SEvgenii Kudriashov; FAST_NOAVX-LABEL: fcmp_ole:
1170a8f54c3SEvgenii Kudriashov; FAST_NOAVX:       ## %bb.0:
1180a8f54c3SEvgenii Kudriashov; FAST_NOAVX-NEXT:    ucomiss %xmm0, %xmm1
1190a8f54c3SEvgenii Kudriashov; FAST_NOAVX-NEXT:    setae %al
1200a8f54c3SEvgenii Kudriashov; FAST_NOAVX-NEXT:    andb $1, %al
1210a8f54c3SEvgenii Kudriashov; FAST_NOAVX-NEXT:    retq
1220a8f54c3SEvgenii Kudriashov;
1230a8f54c3SEvgenii Kudriashov; FAST_AVX-LABEL: fcmp_ole:
1240a8f54c3SEvgenii Kudriashov; FAST_AVX:       ## %bb.0:
1250a8f54c3SEvgenii Kudriashov; FAST_AVX-NEXT:    vucomiss %xmm0, %xmm1
1260a8f54c3SEvgenii Kudriashov; FAST_AVX-NEXT:    setae %al
1270a8f54c3SEvgenii Kudriashov; FAST_AVX-NEXT:    andb $1, %al
1280a8f54c3SEvgenii Kudriashov; FAST_AVX-NEXT:    retq
1290a8f54c3SEvgenii Kudriashov  %1 = fcmp ole float %x, %y
1300a8f54c3SEvgenii Kudriashov  ret i1 %1
1310a8f54c3SEvgenii Kudriashov}
1320a8f54c3SEvgenii Kudriashov
1330a8f54c3SEvgenii Kudriashovdefine zeroext i1 @fcmp_one(float %x, float %y) {
1340a8f54c3SEvgenii Kudriashov; SDAG-LABEL: fcmp_one:
1350a8f54c3SEvgenii Kudriashov; SDAG:       ## %bb.0:
1360a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    ucomiss %xmm1, %xmm0
1370a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    setne %al
1380a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    retq
1390a8f54c3SEvgenii Kudriashov;
1400a8f54c3SEvgenii Kudriashov; FAST_NOAVX-LABEL: fcmp_one:
1410a8f54c3SEvgenii Kudriashov; FAST_NOAVX:       ## %bb.0:
1420a8f54c3SEvgenii Kudriashov; FAST_NOAVX-NEXT:    ucomiss %xmm1, %xmm0
1430a8f54c3SEvgenii Kudriashov; FAST_NOAVX-NEXT:    setne %al
1440a8f54c3SEvgenii Kudriashov; FAST_NOAVX-NEXT:    andb $1, %al
1450a8f54c3SEvgenii Kudriashov; FAST_NOAVX-NEXT:    retq
1460a8f54c3SEvgenii Kudriashov;
1470a8f54c3SEvgenii Kudriashov; FAST_AVX-LABEL: fcmp_one:
1480a8f54c3SEvgenii Kudriashov; FAST_AVX:       ## %bb.0:
1490a8f54c3SEvgenii Kudriashov; FAST_AVX-NEXT:    vucomiss %xmm1, %xmm0
1500a8f54c3SEvgenii Kudriashov; FAST_AVX-NEXT:    setne %al
1510a8f54c3SEvgenii Kudriashov; FAST_AVX-NEXT:    andb $1, %al
1520a8f54c3SEvgenii Kudriashov; FAST_AVX-NEXT:    retq
1530a8f54c3SEvgenii Kudriashov  %1 = fcmp one float %x, %y
1540a8f54c3SEvgenii Kudriashov  ret i1 %1
1550a8f54c3SEvgenii Kudriashov}
1560a8f54c3SEvgenii Kudriashov
1570a8f54c3SEvgenii Kudriashovdefine zeroext i1 @fcmp_ord(float %x, float %y) {
1580a8f54c3SEvgenii Kudriashov; SDAG-LABEL: fcmp_ord:
1590a8f54c3SEvgenii Kudriashov; SDAG:       ## %bb.0:
1600a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    ucomiss %xmm1, %xmm0
1610a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    setnp %al
1620a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    retq
1630a8f54c3SEvgenii Kudriashov;
1640a8f54c3SEvgenii Kudriashov; FAST_NOAVX-LABEL: fcmp_ord:
1650a8f54c3SEvgenii Kudriashov; FAST_NOAVX:       ## %bb.0:
1660a8f54c3SEvgenii Kudriashov; FAST_NOAVX-NEXT:    ucomiss %xmm1, %xmm0
1670a8f54c3SEvgenii Kudriashov; FAST_NOAVX-NEXT:    setnp %al
1680a8f54c3SEvgenii Kudriashov; FAST_NOAVX-NEXT:    andb $1, %al
1690a8f54c3SEvgenii Kudriashov; FAST_NOAVX-NEXT:    retq
1700a8f54c3SEvgenii Kudriashov;
1710a8f54c3SEvgenii Kudriashov; FAST_AVX-LABEL: fcmp_ord:
1720a8f54c3SEvgenii Kudriashov; FAST_AVX:       ## %bb.0:
1730a8f54c3SEvgenii Kudriashov; FAST_AVX-NEXT:    vucomiss %xmm1, %xmm0
1740a8f54c3SEvgenii Kudriashov; FAST_AVX-NEXT:    setnp %al
1750a8f54c3SEvgenii Kudriashov; FAST_AVX-NEXT:    andb $1, %al
1760a8f54c3SEvgenii Kudriashov; FAST_AVX-NEXT:    retq
1770a8f54c3SEvgenii Kudriashov  %1 = fcmp ord float %x, %y
1780a8f54c3SEvgenii Kudriashov  ret i1 %1
1790a8f54c3SEvgenii Kudriashov}
1800a8f54c3SEvgenii Kudriashov
1810a8f54c3SEvgenii Kudriashovdefine zeroext i1 @fcmp_uno(float %x, float %y) {
1820a8f54c3SEvgenii Kudriashov; SDAG-LABEL: fcmp_uno:
1830a8f54c3SEvgenii Kudriashov; SDAG:       ## %bb.0:
1840a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    ucomiss %xmm1, %xmm0
1850a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    setp %al
1860a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    retq
1870a8f54c3SEvgenii Kudriashov;
1880a8f54c3SEvgenii Kudriashov; FAST_NOAVX-LABEL: fcmp_uno:
1890a8f54c3SEvgenii Kudriashov; FAST_NOAVX:       ## %bb.0:
1900a8f54c3SEvgenii Kudriashov; FAST_NOAVX-NEXT:    ucomiss %xmm1, %xmm0
1910a8f54c3SEvgenii Kudriashov; FAST_NOAVX-NEXT:    setp %al
1920a8f54c3SEvgenii Kudriashov; FAST_NOAVX-NEXT:    andb $1, %al
1930a8f54c3SEvgenii Kudriashov; FAST_NOAVX-NEXT:    retq
1940a8f54c3SEvgenii Kudriashov;
1950a8f54c3SEvgenii Kudriashov; FAST_AVX-LABEL: fcmp_uno:
1960a8f54c3SEvgenii Kudriashov; FAST_AVX:       ## %bb.0:
1970a8f54c3SEvgenii Kudriashov; FAST_AVX-NEXT:    vucomiss %xmm1, %xmm0
1980a8f54c3SEvgenii Kudriashov; FAST_AVX-NEXT:    setp %al
1990a8f54c3SEvgenii Kudriashov; FAST_AVX-NEXT:    andb $1, %al
2000a8f54c3SEvgenii Kudriashov; FAST_AVX-NEXT:    retq
2010a8f54c3SEvgenii Kudriashov  %1 = fcmp uno float %x, %y
2020a8f54c3SEvgenii Kudriashov  ret i1 %1
2030a8f54c3SEvgenii Kudriashov}
2040a8f54c3SEvgenii Kudriashov
2050a8f54c3SEvgenii Kudriashovdefine zeroext i1 @fcmp_ueq(float %x, float %y) {
2060a8f54c3SEvgenii Kudriashov; SDAG-LABEL: fcmp_ueq:
2070a8f54c3SEvgenii Kudriashov; SDAG:       ## %bb.0:
2080a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    ucomiss %xmm1, %xmm0
2090a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    sete %al
2100a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    retq
2110a8f54c3SEvgenii Kudriashov;
2120a8f54c3SEvgenii Kudriashov; FAST_NOAVX-LABEL: fcmp_ueq:
2130a8f54c3SEvgenii Kudriashov; FAST_NOAVX:       ## %bb.0:
2140a8f54c3SEvgenii Kudriashov; FAST_NOAVX-NEXT:    ucomiss %xmm1, %xmm0
2150a8f54c3SEvgenii Kudriashov; FAST_NOAVX-NEXT:    sete %al
2160a8f54c3SEvgenii Kudriashov; FAST_NOAVX-NEXT:    andb $1, %al
2170a8f54c3SEvgenii Kudriashov; FAST_NOAVX-NEXT:    retq
2180a8f54c3SEvgenii Kudriashov;
2190a8f54c3SEvgenii Kudriashov; FAST_AVX-LABEL: fcmp_ueq:
2200a8f54c3SEvgenii Kudriashov; FAST_AVX:       ## %bb.0:
2210a8f54c3SEvgenii Kudriashov; FAST_AVX-NEXT:    vucomiss %xmm1, %xmm0
2220a8f54c3SEvgenii Kudriashov; FAST_AVX-NEXT:    sete %al
2230a8f54c3SEvgenii Kudriashov; FAST_AVX-NEXT:    andb $1, %al
2240a8f54c3SEvgenii Kudriashov; FAST_AVX-NEXT:    retq
2250a8f54c3SEvgenii Kudriashov  %1 = fcmp ueq float %x, %y
2260a8f54c3SEvgenii Kudriashov  ret i1 %1
2270a8f54c3SEvgenii Kudriashov}
2280a8f54c3SEvgenii Kudriashov
2290a8f54c3SEvgenii Kudriashovdefine zeroext i1 @fcmp_ugt(float %x, float %y) {
2300a8f54c3SEvgenii Kudriashov; SDAG-LABEL: fcmp_ugt:
2310a8f54c3SEvgenii Kudriashov; SDAG:       ## %bb.0:
2320a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    ucomiss %xmm0, %xmm1
2330a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    setb %al
2340a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    retq
2350a8f54c3SEvgenii Kudriashov;
2360a8f54c3SEvgenii Kudriashov; FAST_NOAVX-LABEL: fcmp_ugt:
2370a8f54c3SEvgenii Kudriashov; FAST_NOAVX:       ## %bb.0:
2380a8f54c3SEvgenii Kudriashov; FAST_NOAVX-NEXT:    ucomiss %xmm0, %xmm1
2390a8f54c3SEvgenii Kudriashov; FAST_NOAVX-NEXT:    setb %al
2400a8f54c3SEvgenii Kudriashov; FAST_NOAVX-NEXT:    andb $1, %al
2410a8f54c3SEvgenii Kudriashov; FAST_NOAVX-NEXT:    retq
2420a8f54c3SEvgenii Kudriashov;
2430a8f54c3SEvgenii Kudriashov; FAST_AVX-LABEL: fcmp_ugt:
2440a8f54c3SEvgenii Kudriashov; FAST_AVX:       ## %bb.0:
2450a8f54c3SEvgenii Kudriashov; FAST_AVX-NEXT:    vucomiss %xmm0, %xmm1
2460a8f54c3SEvgenii Kudriashov; FAST_AVX-NEXT:    setb %al
2470a8f54c3SEvgenii Kudriashov; FAST_AVX-NEXT:    andb $1, %al
2480a8f54c3SEvgenii Kudriashov; FAST_AVX-NEXT:    retq
2490a8f54c3SEvgenii Kudriashov  %1 = fcmp ugt float %x, %y
2500a8f54c3SEvgenii Kudriashov  ret i1 %1
2510a8f54c3SEvgenii Kudriashov}
2520a8f54c3SEvgenii Kudriashov
2530a8f54c3SEvgenii Kudriashovdefine zeroext i1 @fcmp_uge(float %x, float %y) {
2540a8f54c3SEvgenii Kudriashov; SDAG-LABEL: fcmp_uge:
2550a8f54c3SEvgenii Kudriashov; SDAG:       ## %bb.0:
2560a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    ucomiss %xmm0, %xmm1
2570a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    setbe %al
2580a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    retq
2590a8f54c3SEvgenii Kudriashov;
2600a8f54c3SEvgenii Kudriashov; FAST_NOAVX-LABEL: fcmp_uge:
2610a8f54c3SEvgenii Kudriashov; FAST_NOAVX:       ## %bb.0:
2620a8f54c3SEvgenii Kudriashov; FAST_NOAVX-NEXT:    ucomiss %xmm0, %xmm1
2630a8f54c3SEvgenii Kudriashov; FAST_NOAVX-NEXT:    setbe %al
2640a8f54c3SEvgenii Kudriashov; FAST_NOAVX-NEXT:    andb $1, %al
2650a8f54c3SEvgenii Kudriashov; FAST_NOAVX-NEXT:    retq
2660a8f54c3SEvgenii Kudriashov;
2670a8f54c3SEvgenii Kudriashov; FAST_AVX-LABEL: fcmp_uge:
2680a8f54c3SEvgenii Kudriashov; FAST_AVX:       ## %bb.0:
2690a8f54c3SEvgenii Kudriashov; FAST_AVX-NEXT:    vucomiss %xmm0, %xmm1
2700a8f54c3SEvgenii Kudriashov; FAST_AVX-NEXT:    setbe %al
2710a8f54c3SEvgenii Kudriashov; FAST_AVX-NEXT:    andb $1, %al
2720a8f54c3SEvgenii Kudriashov; FAST_AVX-NEXT:    retq
2730a8f54c3SEvgenii Kudriashov  %1 = fcmp uge float %x, %y
2740a8f54c3SEvgenii Kudriashov  ret i1 %1
2750a8f54c3SEvgenii Kudriashov}
2760a8f54c3SEvgenii Kudriashov
2770a8f54c3SEvgenii Kudriashovdefine zeroext i1 @fcmp_ult(float %x, float %y) {
2780a8f54c3SEvgenii Kudriashov; SDAG-LABEL: fcmp_ult:
2790a8f54c3SEvgenii Kudriashov; SDAG:       ## %bb.0:
2800a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    ucomiss %xmm1, %xmm0
2810a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    setb %al
2820a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    retq
2830a8f54c3SEvgenii Kudriashov;
2840a8f54c3SEvgenii Kudriashov; FAST_NOAVX-LABEL: fcmp_ult:
2850a8f54c3SEvgenii Kudriashov; FAST_NOAVX:       ## %bb.0:
2860a8f54c3SEvgenii Kudriashov; FAST_NOAVX-NEXT:    ucomiss %xmm1, %xmm0
2870a8f54c3SEvgenii Kudriashov; FAST_NOAVX-NEXT:    setb %al
2880a8f54c3SEvgenii Kudriashov; FAST_NOAVX-NEXT:    andb $1, %al
2890a8f54c3SEvgenii Kudriashov; FAST_NOAVX-NEXT:    retq
2900a8f54c3SEvgenii Kudriashov;
2910a8f54c3SEvgenii Kudriashov; FAST_AVX-LABEL: fcmp_ult:
2920a8f54c3SEvgenii Kudriashov; FAST_AVX:       ## %bb.0:
2930a8f54c3SEvgenii Kudriashov; FAST_AVX-NEXT:    vucomiss %xmm1, %xmm0
2940a8f54c3SEvgenii Kudriashov; FAST_AVX-NEXT:    setb %al
2950a8f54c3SEvgenii Kudriashov; FAST_AVX-NEXT:    andb $1, %al
2960a8f54c3SEvgenii Kudriashov; FAST_AVX-NEXT:    retq
2970a8f54c3SEvgenii Kudriashov  %1 = fcmp ult float %x, %y
2980a8f54c3SEvgenii Kudriashov  ret i1 %1
2990a8f54c3SEvgenii Kudriashov}
3000a8f54c3SEvgenii Kudriashov
3010a8f54c3SEvgenii Kudriashovdefine zeroext i1 @fcmp_ule(float %x, float %y) {
3020a8f54c3SEvgenii Kudriashov; SDAG-LABEL: fcmp_ule:
3030a8f54c3SEvgenii Kudriashov; SDAG:       ## %bb.0:
3040a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    ucomiss %xmm1, %xmm0
3050a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    setbe %al
3060a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    retq
3070a8f54c3SEvgenii Kudriashov;
3080a8f54c3SEvgenii Kudriashov; FAST_NOAVX-LABEL: fcmp_ule:
3090a8f54c3SEvgenii Kudriashov; FAST_NOAVX:       ## %bb.0:
3100a8f54c3SEvgenii Kudriashov; FAST_NOAVX-NEXT:    ucomiss %xmm1, %xmm0
3110a8f54c3SEvgenii Kudriashov; FAST_NOAVX-NEXT:    setbe %al
3120a8f54c3SEvgenii Kudriashov; FAST_NOAVX-NEXT:    andb $1, %al
3130a8f54c3SEvgenii Kudriashov; FAST_NOAVX-NEXT:    retq
3140a8f54c3SEvgenii Kudriashov;
3150a8f54c3SEvgenii Kudriashov; FAST_AVX-LABEL: fcmp_ule:
3160a8f54c3SEvgenii Kudriashov; FAST_AVX:       ## %bb.0:
3170a8f54c3SEvgenii Kudriashov; FAST_AVX-NEXT:    vucomiss %xmm1, %xmm0
3180a8f54c3SEvgenii Kudriashov; FAST_AVX-NEXT:    setbe %al
3190a8f54c3SEvgenii Kudriashov; FAST_AVX-NEXT:    andb $1, %al
3200a8f54c3SEvgenii Kudriashov; FAST_AVX-NEXT:    retq
3210a8f54c3SEvgenii Kudriashov  %1 = fcmp ule float %x, %y
3220a8f54c3SEvgenii Kudriashov  ret i1 %1
3230a8f54c3SEvgenii Kudriashov}
3240a8f54c3SEvgenii Kudriashov
3250a8f54c3SEvgenii Kudriashovdefine zeroext i1 @fcmp_une(float %x, float %y) {
3260a8f54c3SEvgenii Kudriashov; SDAG-LABEL: fcmp_une:
3270a8f54c3SEvgenii Kudriashov; SDAG:       ## %bb.0:
3280a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    cmpneqss %xmm1, %xmm0
3290a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    movd %xmm0, %eax
3300a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    andl $1, %eax
3310a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    ## kill: def $al killed $al killed $eax
3320a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    retq
3330a8f54c3SEvgenii Kudriashov;
3340a8f54c3SEvgenii Kudriashov; FAST_NOAVX-LABEL: fcmp_une:
3350a8f54c3SEvgenii Kudriashov; FAST_NOAVX:       ## %bb.0:
3360a8f54c3SEvgenii Kudriashov; FAST_NOAVX-NEXT:    ucomiss %xmm1, %xmm0
337*cca49663SCraig Topper; FAST_NOAVX-NEXT:    setne %cl
338*cca49663SCraig Topper; FAST_NOAVX-NEXT:    setp %al
339*cca49663SCraig Topper; FAST_NOAVX-NEXT:    orb %cl, %al
340*cca49663SCraig Topper; FAST_NOAVX-NEXT:    andb $1, %al
3410a8f54c3SEvgenii Kudriashov; FAST_NOAVX-NEXT:    retq
3420a8f54c3SEvgenii Kudriashov;
3430a8f54c3SEvgenii Kudriashov; FAST_AVX-LABEL: fcmp_une:
3440a8f54c3SEvgenii Kudriashov; FAST_AVX:       ## %bb.0:
3450a8f54c3SEvgenii Kudriashov; FAST_AVX-NEXT:    vucomiss %xmm1, %xmm0
346*cca49663SCraig Topper; FAST_AVX-NEXT:    setne %cl
347*cca49663SCraig Topper; FAST_AVX-NEXT:    setp %al
348*cca49663SCraig Topper; FAST_AVX-NEXT:    orb %cl, %al
349*cca49663SCraig Topper; FAST_AVX-NEXT:    andb $1, %al
3500a8f54c3SEvgenii Kudriashov; FAST_AVX-NEXT:    retq
3510a8f54c3SEvgenii Kudriashov  %1 = fcmp une float %x, %y
3520a8f54c3SEvgenii Kudriashov  ret i1 %1
3530a8f54c3SEvgenii Kudriashov}
3540a8f54c3SEvgenii Kudriashov
3550a8f54c3SEvgenii Kudriashovdefine zeroext i1 @icmp_eq(i32 %x, i32 %y) {
3560a8f54c3SEvgenii Kudriashov; SDAG-LABEL: icmp_eq:
3570a8f54c3SEvgenii Kudriashov; SDAG:       ## %bb.0:
3580a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    cmpl %esi, %edi
3590a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    sete %al
3600a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    retq
3610a8f54c3SEvgenii Kudriashov;
3620a8f54c3SEvgenii Kudriashov; FAST-LABEL: icmp_eq:
3630a8f54c3SEvgenii Kudriashov; FAST:       ## %bb.0:
3640a8f54c3SEvgenii Kudriashov; FAST-NEXT:    cmpl %esi, %edi
3650a8f54c3SEvgenii Kudriashov; FAST-NEXT:    sete %al
3660a8f54c3SEvgenii Kudriashov; FAST-NEXT:    andb $1, %al
3670a8f54c3SEvgenii Kudriashov; FAST-NEXT:    retq
3680a8f54c3SEvgenii Kudriashov  %1 = icmp eq i32 %x, %y
3690a8f54c3SEvgenii Kudriashov  ret i1 %1
3700a8f54c3SEvgenii Kudriashov}
3710a8f54c3SEvgenii Kudriashov
3720a8f54c3SEvgenii Kudriashovdefine zeroext i1 @icmp_ne(i32 %x, i32 %y) {
3730a8f54c3SEvgenii Kudriashov; SDAG-LABEL: icmp_ne:
3740a8f54c3SEvgenii Kudriashov; SDAG:       ## %bb.0:
3750a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    cmpl %esi, %edi
3760a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    setne %al
3770a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    retq
3780a8f54c3SEvgenii Kudriashov;
3790a8f54c3SEvgenii Kudriashov; FAST-LABEL: icmp_ne:
3800a8f54c3SEvgenii Kudriashov; FAST:       ## %bb.0:
3810a8f54c3SEvgenii Kudriashov; FAST-NEXT:    cmpl %esi, %edi
3820a8f54c3SEvgenii Kudriashov; FAST-NEXT:    setne %al
3830a8f54c3SEvgenii Kudriashov; FAST-NEXT:    andb $1, %al
3840a8f54c3SEvgenii Kudriashov; FAST-NEXT:    retq
3850a8f54c3SEvgenii Kudriashov  %1 = icmp ne i32 %x, %y
3860a8f54c3SEvgenii Kudriashov  ret i1 %1
3870a8f54c3SEvgenii Kudriashov}
3880a8f54c3SEvgenii Kudriashov
3890a8f54c3SEvgenii Kudriashovdefine zeroext i1 @icmp_ugt(i32 %x, i32 %y) {
3900a8f54c3SEvgenii Kudriashov; SDAG-LABEL: icmp_ugt:
3910a8f54c3SEvgenii Kudriashov; SDAG:       ## %bb.0:
3920a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    cmpl %esi, %edi
3930a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    seta %al
3940a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    retq
3950a8f54c3SEvgenii Kudriashov;
3960a8f54c3SEvgenii Kudriashov; FAST-LABEL: icmp_ugt:
3970a8f54c3SEvgenii Kudriashov; FAST:       ## %bb.0:
3980a8f54c3SEvgenii Kudriashov; FAST-NEXT:    cmpl %esi, %edi
3990a8f54c3SEvgenii Kudriashov; FAST-NEXT:    seta %al
4000a8f54c3SEvgenii Kudriashov; FAST-NEXT:    andb $1, %al
4010a8f54c3SEvgenii Kudriashov; FAST-NEXT:    retq
4020a8f54c3SEvgenii Kudriashov  %1 = icmp ugt i32 %x, %y
4030a8f54c3SEvgenii Kudriashov  ret i1 %1
4040a8f54c3SEvgenii Kudriashov}
4050a8f54c3SEvgenii Kudriashov
4060a8f54c3SEvgenii Kudriashovdefine zeroext i1 @icmp_uge(i32 %x, i32 %y) {
4070a8f54c3SEvgenii Kudriashov; SDAG-LABEL: icmp_uge:
4080a8f54c3SEvgenii Kudriashov; SDAG:       ## %bb.0:
4090a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    cmpl %esi, %edi
4100a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    setae %al
4110a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    retq
4120a8f54c3SEvgenii Kudriashov;
4130a8f54c3SEvgenii Kudriashov; FAST-LABEL: icmp_uge:
4140a8f54c3SEvgenii Kudriashov; FAST:       ## %bb.0:
4150a8f54c3SEvgenii Kudriashov; FAST-NEXT:    cmpl %esi, %edi
4160a8f54c3SEvgenii Kudriashov; FAST-NEXT:    setae %al
4170a8f54c3SEvgenii Kudriashov; FAST-NEXT:    andb $1, %al
4180a8f54c3SEvgenii Kudriashov; FAST-NEXT:    retq
4190a8f54c3SEvgenii Kudriashov  %1 = icmp uge i32 %x, %y
4200a8f54c3SEvgenii Kudriashov  ret i1 %1
4210a8f54c3SEvgenii Kudriashov}
4220a8f54c3SEvgenii Kudriashov
4230a8f54c3SEvgenii Kudriashovdefine zeroext i1 @icmp_ult(i32 %x, i32 %y) {
4240a8f54c3SEvgenii Kudriashov; SDAG-LABEL: icmp_ult:
4250a8f54c3SEvgenii Kudriashov; SDAG:       ## %bb.0:
4260a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    cmpl %esi, %edi
4270a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    setb %al
4280a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    retq
4290a8f54c3SEvgenii Kudriashov;
4300a8f54c3SEvgenii Kudriashov; FAST-LABEL: icmp_ult:
4310a8f54c3SEvgenii Kudriashov; FAST:       ## %bb.0:
4320a8f54c3SEvgenii Kudriashov; FAST-NEXT:    cmpl %esi, %edi
4330a8f54c3SEvgenii Kudriashov; FAST-NEXT:    setb %al
4340a8f54c3SEvgenii Kudriashov; FAST-NEXT:    andb $1, %al
4350a8f54c3SEvgenii Kudriashov; FAST-NEXT:    retq
4360a8f54c3SEvgenii Kudriashov  %1 = icmp ult i32 %x, %y
4370a8f54c3SEvgenii Kudriashov  ret i1 %1
4380a8f54c3SEvgenii Kudriashov}
4390a8f54c3SEvgenii Kudriashov
4400a8f54c3SEvgenii Kudriashovdefine zeroext i1 @icmp_ule(i32 %x, i32 %y) {
4410a8f54c3SEvgenii Kudriashov; SDAG-LABEL: icmp_ule:
4420a8f54c3SEvgenii Kudriashov; SDAG:       ## %bb.0:
4430a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    cmpl %esi, %edi
4440a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    setbe %al
4450a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    retq
4460a8f54c3SEvgenii Kudriashov;
4470a8f54c3SEvgenii Kudriashov; FAST-LABEL: icmp_ule:
4480a8f54c3SEvgenii Kudriashov; FAST:       ## %bb.0:
4490a8f54c3SEvgenii Kudriashov; FAST-NEXT:    cmpl %esi, %edi
4500a8f54c3SEvgenii Kudriashov; FAST-NEXT:    setbe %al
4510a8f54c3SEvgenii Kudriashov; FAST-NEXT:    andb $1, %al
4520a8f54c3SEvgenii Kudriashov; FAST-NEXT:    retq
4530a8f54c3SEvgenii Kudriashov  %1 = icmp ule i32 %x, %y
4540a8f54c3SEvgenii Kudriashov  ret i1 %1
4550a8f54c3SEvgenii Kudriashov}
4560a8f54c3SEvgenii Kudriashov
4570a8f54c3SEvgenii Kudriashovdefine zeroext i1 @icmp_sgt(i32 %x, i32 %y) {
4580a8f54c3SEvgenii Kudriashov; SDAG-LABEL: icmp_sgt:
4590a8f54c3SEvgenii Kudriashov; SDAG:       ## %bb.0:
4600a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    cmpl %esi, %edi
4610a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    setg %al
4620a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    retq
4630a8f54c3SEvgenii Kudriashov;
4640a8f54c3SEvgenii Kudriashov; FAST-LABEL: icmp_sgt:
4650a8f54c3SEvgenii Kudriashov; FAST:       ## %bb.0:
4660a8f54c3SEvgenii Kudriashov; FAST-NEXT:    cmpl %esi, %edi
4670a8f54c3SEvgenii Kudriashov; FAST-NEXT:    setg %al
4680a8f54c3SEvgenii Kudriashov; FAST-NEXT:    andb $1, %al
4690a8f54c3SEvgenii Kudriashov; FAST-NEXT:    retq
4700a8f54c3SEvgenii Kudriashov  %1 = icmp sgt i32 %x, %y
4710a8f54c3SEvgenii Kudriashov  ret i1 %1
4720a8f54c3SEvgenii Kudriashov}
4730a8f54c3SEvgenii Kudriashov
4740a8f54c3SEvgenii Kudriashovdefine zeroext i1 @icmp_sge(i32 %x, i32 %y) {
4750a8f54c3SEvgenii Kudriashov; SDAG-LABEL: icmp_sge:
4760a8f54c3SEvgenii Kudriashov; SDAG:       ## %bb.0:
4770a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    cmpl %esi, %edi
4780a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    setge %al
4790a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    retq
4800a8f54c3SEvgenii Kudriashov;
4810a8f54c3SEvgenii Kudriashov; FAST-LABEL: icmp_sge:
4820a8f54c3SEvgenii Kudriashov; FAST:       ## %bb.0:
4830a8f54c3SEvgenii Kudriashov; FAST-NEXT:    cmpl %esi, %edi
4840a8f54c3SEvgenii Kudriashov; FAST-NEXT:    setge %al
4850a8f54c3SEvgenii Kudriashov; FAST-NEXT:    andb $1, %al
4860a8f54c3SEvgenii Kudriashov; FAST-NEXT:    retq
4870a8f54c3SEvgenii Kudriashov  %1 = icmp sge i32 %x, %y
4880a8f54c3SEvgenii Kudriashov  ret i1 %1
4890a8f54c3SEvgenii Kudriashov}
4900a8f54c3SEvgenii Kudriashov
4910a8f54c3SEvgenii Kudriashovdefine zeroext i1 @icmp_slt(i32 %x, i32 %y) {
4920a8f54c3SEvgenii Kudriashov; SDAG-LABEL: icmp_slt:
4930a8f54c3SEvgenii Kudriashov; SDAG:       ## %bb.0:
4940a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    cmpl %esi, %edi
4950a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    setl %al
4960a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    retq
4970a8f54c3SEvgenii Kudriashov;
4980a8f54c3SEvgenii Kudriashov; FAST-LABEL: icmp_slt:
4990a8f54c3SEvgenii Kudriashov; FAST:       ## %bb.0:
5000a8f54c3SEvgenii Kudriashov; FAST-NEXT:    cmpl %esi, %edi
5010a8f54c3SEvgenii Kudriashov; FAST-NEXT:    setl %al
5020a8f54c3SEvgenii Kudriashov; FAST-NEXT:    andb $1, %al
5030a8f54c3SEvgenii Kudriashov; FAST-NEXT:    retq
5040a8f54c3SEvgenii Kudriashov  %1 = icmp slt i32 %x, %y
5050a8f54c3SEvgenii Kudriashov  ret i1 %1
5060a8f54c3SEvgenii Kudriashov}
5070a8f54c3SEvgenii Kudriashov
5080a8f54c3SEvgenii Kudriashovdefine zeroext i1 @icmp_sle(i32 %x, i32 %y) {
5090a8f54c3SEvgenii Kudriashov; SDAG-LABEL: icmp_sle:
5100a8f54c3SEvgenii Kudriashov; SDAG:       ## %bb.0:
5110a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    cmpl %esi, %edi
5120a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    setle %al
5130a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    retq
5140a8f54c3SEvgenii Kudriashov;
5150a8f54c3SEvgenii Kudriashov; FAST-LABEL: icmp_sle:
5160a8f54c3SEvgenii Kudriashov; FAST:       ## %bb.0:
5170a8f54c3SEvgenii Kudriashov; FAST-NEXT:    cmpl %esi, %edi
5180a8f54c3SEvgenii Kudriashov; FAST-NEXT:    setle %al
5190a8f54c3SEvgenii Kudriashov; FAST-NEXT:    andb $1, %al
5200a8f54c3SEvgenii Kudriashov; FAST-NEXT:    retq
5210a8f54c3SEvgenii Kudriashov  %1 = icmp sle i32 %x, %y
5220a8f54c3SEvgenii Kudriashov  ret i1 %1
5230a8f54c3SEvgenii Kudriashov}
5240a8f54c3SEvgenii Kudriashov
5250a8f54c3SEvgenii Kudriashov; Test cmp folding and condition optimization.
5260a8f54c3SEvgenii Kudriashovdefine zeroext i1 @fcmp_oeq2(float %x) {
5270a8f54c3SEvgenii Kudriashov; SDAG-LABEL: fcmp_oeq2:
5280a8f54c3SEvgenii Kudriashov; SDAG:       ## %bb.0:
5290a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    ucomiss %xmm0, %xmm0
5300a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    setnp %al
5310a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    retq
5320a8f54c3SEvgenii Kudriashov;
5330a8f54c3SEvgenii Kudriashov; FAST_NOAVX-LABEL: fcmp_oeq2:
5340a8f54c3SEvgenii Kudriashov; FAST_NOAVX:       ## %bb.0:
5350a8f54c3SEvgenii Kudriashov; FAST_NOAVX-NEXT:    ucomiss %xmm0, %xmm0
5360a8f54c3SEvgenii Kudriashov; FAST_NOAVX-NEXT:    setnp %al
5370a8f54c3SEvgenii Kudriashov; FAST_NOAVX-NEXT:    andb $1, %al
5380a8f54c3SEvgenii Kudriashov; FAST_NOAVX-NEXT:    retq
5390a8f54c3SEvgenii Kudriashov;
5400a8f54c3SEvgenii Kudriashov; FAST_AVX-LABEL: fcmp_oeq2:
5410a8f54c3SEvgenii Kudriashov; FAST_AVX:       ## %bb.0:
5420a8f54c3SEvgenii Kudriashov; FAST_AVX-NEXT:    vucomiss %xmm0, %xmm0
5430a8f54c3SEvgenii Kudriashov; FAST_AVX-NEXT:    setnp %al
5440a8f54c3SEvgenii Kudriashov; FAST_AVX-NEXT:    andb $1, %al
5450a8f54c3SEvgenii Kudriashov; FAST_AVX-NEXT:    retq
5460a8f54c3SEvgenii Kudriashov  %1 = fcmp oeq float %x, %x
5470a8f54c3SEvgenii Kudriashov  ret i1 %1
5480a8f54c3SEvgenii Kudriashov}
5490a8f54c3SEvgenii Kudriashov
5500a8f54c3SEvgenii Kudriashovdefine zeroext i1 @fcmp_oeq3(float %x) {
5510a8f54c3SEvgenii Kudriashov; SDAG-LABEL: fcmp_oeq3:
5520a8f54c3SEvgenii Kudriashov; SDAG:       ## %bb.0:
5530a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    xorps %xmm1, %xmm1
5540a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    cmpeqss %xmm0, %xmm1
5550a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    movd %xmm1, %eax
5560a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    andl $1, %eax
5570a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    ## kill: def $al killed $al killed $eax
5580a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    retq
5590a8f54c3SEvgenii Kudriashov;
5600a8f54c3SEvgenii Kudriashov; FAST_NOAVX-LABEL: fcmp_oeq3:
5610a8f54c3SEvgenii Kudriashov; FAST_NOAVX:       ## %bb.0:
5620a8f54c3SEvgenii Kudriashov; FAST_NOAVX-NEXT:    xorps %xmm1, %xmm1
5630a8f54c3SEvgenii Kudriashov; FAST_NOAVX-NEXT:    ucomiss %xmm1, %xmm0
564*cca49663SCraig Topper; FAST_NOAVX-NEXT:    sete %cl
565*cca49663SCraig Topper; FAST_NOAVX-NEXT:    setnp %al
566*cca49663SCraig Topper; FAST_NOAVX-NEXT:    andb %cl, %al
567*cca49663SCraig Topper; FAST_NOAVX-NEXT:    andb $1, %al
5680a8f54c3SEvgenii Kudriashov; FAST_NOAVX-NEXT:    retq
5690a8f54c3SEvgenii Kudriashov;
5700a8f54c3SEvgenii Kudriashov; FAST_AVX-LABEL: fcmp_oeq3:
5710a8f54c3SEvgenii Kudriashov; FAST_AVX:       ## %bb.0:
5720a8f54c3SEvgenii Kudriashov; FAST_AVX-NEXT:    vxorps %xmm1, %xmm1, %xmm1
5730a8f54c3SEvgenii Kudriashov; FAST_AVX-NEXT:    vucomiss %xmm1, %xmm0
574*cca49663SCraig Topper; FAST_AVX-NEXT:    sete %cl
575*cca49663SCraig Topper; FAST_AVX-NEXT:    setnp %al
576*cca49663SCraig Topper; FAST_AVX-NEXT:    andb %cl, %al
577*cca49663SCraig Topper; FAST_AVX-NEXT:    andb $1, %al
5780a8f54c3SEvgenii Kudriashov; FAST_AVX-NEXT:    retq
5790a8f54c3SEvgenii Kudriashov  %1 = fcmp oeq float %x, 0.000000e+00
5800a8f54c3SEvgenii Kudriashov  ret i1 %1
5810a8f54c3SEvgenii Kudriashov}
5820a8f54c3SEvgenii Kudriashov
5830a8f54c3SEvgenii Kudriashovdefine zeroext i1 @fcmp_ogt2(float %x) {
5840a8f54c3SEvgenii Kudriashov; SDAG-LABEL: fcmp_ogt2:
5850a8f54c3SEvgenii Kudriashov; SDAG:       ## %bb.0:
5860a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    xorl %eax, %eax
5870a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    retq
5880a8f54c3SEvgenii Kudriashov;
5890a8f54c3SEvgenii Kudriashov; FAST-LABEL: fcmp_ogt2:
5900a8f54c3SEvgenii Kudriashov; FAST:       ## %bb.0:
5910a8f54c3SEvgenii Kudriashov; FAST-NEXT:    xorl %eax, %eax
5920a8f54c3SEvgenii Kudriashov; FAST-NEXT:    andb $1, %al
593*cca49663SCraig Topper; FAST-NEXT:    ## kill: def $al killed $al killed $eax
5940a8f54c3SEvgenii Kudriashov; FAST-NEXT:    retq
5950a8f54c3SEvgenii Kudriashov  %1 = fcmp ogt float %x, %x
5960a8f54c3SEvgenii Kudriashov  ret i1 %1
5970a8f54c3SEvgenii Kudriashov}
5980a8f54c3SEvgenii Kudriashov
5990a8f54c3SEvgenii Kudriashovdefine zeroext i1 @fcmp_ogt3(float %x) {
6000a8f54c3SEvgenii Kudriashov; SDAG-LABEL: fcmp_ogt3:
6010a8f54c3SEvgenii Kudriashov; SDAG:       ## %bb.0:
6020a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    xorps %xmm1, %xmm1
6030a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    ucomiss %xmm1, %xmm0
6040a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    seta %al
6050a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    retq
6060a8f54c3SEvgenii Kudriashov;
6070a8f54c3SEvgenii Kudriashov; FAST_NOAVX-LABEL: fcmp_ogt3:
6080a8f54c3SEvgenii Kudriashov; FAST_NOAVX:       ## %bb.0:
6090a8f54c3SEvgenii Kudriashov; FAST_NOAVX-NEXT:    xorps %xmm1, %xmm1
6100a8f54c3SEvgenii Kudriashov; FAST_NOAVX-NEXT:    ucomiss %xmm1, %xmm0
6110a8f54c3SEvgenii Kudriashov; FAST_NOAVX-NEXT:    seta %al
6120a8f54c3SEvgenii Kudriashov; FAST_NOAVX-NEXT:    andb $1, %al
6130a8f54c3SEvgenii Kudriashov; FAST_NOAVX-NEXT:    retq
6140a8f54c3SEvgenii Kudriashov;
6150a8f54c3SEvgenii Kudriashov; FAST_AVX-LABEL: fcmp_ogt3:
6160a8f54c3SEvgenii Kudriashov; FAST_AVX:       ## %bb.0:
6170a8f54c3SEvgenii Kudriashov; FAST_AVX-NEXT:    vxorps %xmm1, %xmm1, %xmm1
6180a8f54c3SEvgenii Kudriashov; FAST_AVX-NEXT:    vucomiss %xmm1, %xmm0
6190a8f54c3SEvgenii Kudriashov; FAST_AVX-NEXT:    seta %al
6200a8f54c3SEvgenii Kudriashov; FAST_AVX-NEXT:    andb $1, %al
6210a8f54c3SEvgenii Kudriashov; FAST_AVX-NEXT:    retq
6220a8f54c3SEvgenii Kudriashov  %1 = fcmp ogt float %x, 0.000000e+00
6230a8f54c3SEvgenii Kudriashov  ret i1 %1
6240a8f54c3SEvgenii Kudriashov}
6250a8f54c3SEvgenii Kudriashov
6260a8f54c3SEvgenii Kudriashovdefine zeroext i1 @fcmp_oge2(float %x) {
6270a8f54c3SEvgenii Kudriashov; SDAG-LABEL: fcmp_oge2:
6280a8f54c3SEvgenii Kudriashov; SDAG:       ## %bb.0:
6290a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    ucomiss %xmm0, %xmm0
6300a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    setnp %al
6310a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    retq
6320a8f54c3SEvgenii Kudriashov;
6330a8f54c3SEvgenii Kudriashov; FAST_NOAVX-LABEL: fcmp_oge2:
6340a8f54c3SEvgenii Kudriashov; FAST_NOAVX:       ## %bb.0:
6350a8f54c3SEvgenii Kudriashov; FAST_NOAVX-NEXT:    ucomiss %xmm0, %xmm0
6360a8f54c3SEvgenii Kudriashov; FAST_NOAVX-NEXT:    setnp %al
6370a8f54c3SEvgenii Kudriashov; FAST_NOAVX-NEXT:    andb $1, %al
6380a8f54c3SEvgenii Kudriashov; FAST_NOAVX-NEXT:    retq
6390a8f54c3SEvgenii Kudriashov;
6400a8f54c3SEvgenii Kudriashov; FAST_AVX-LABEL: fcmp_oge2:
6410a8f54c3SEvgenii Kudriashov; FAST_AVX:       ## %bb.0:
6420a8f54c3SEvgenii Kudriashov; FAST_AVX-NEXT:    vucomiss %xmm0, %xmm0
6430a8f54c3SEvgenii Kudriashov; FAST_AVX-NEXT:    setnp %al
6440a8f54c3SEvgenii Kudriashov; FAST_AVX-NEXT:    andb $1, %al
6450a8f54c3SEvgenii Kudriashov; FAST_AVX-NEXT:    retq
6460a8f54c3SEvgenii Kudriashov  %1 = fcmp oge float %x, %x
6470a8f54c3SEvgenii Kudriashov  ret i1 %1
6480a8f54c3SEvgenii Kudriashov}
6490a8f54c3SEvgenii Kudriashov
6500a8f54c3SEvgenii Kudriashovdefine zeroext i1 @fcmp_oge3(float %x) {
6510a8f54c3SEvgenii Kudriashov; SDAG-LABEL: fcmp_oge3:
6520a8f54c3SEvgenii Kudriashov; SDAG:       ## %bb.0:
6530a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    xorps %xmm1, %xmm1
6540a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    ucomiss %xmm1, %xmm0
6550a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    setae %al
6560a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    retq
6570a8f54c3SEvgenii Kudriashov;
6580a8f54c3SEvgenii Kudriashov; FAST_NOAVX-LABEL: fcmp_oge3:
6590a8f54c3SEvgenii Kudriashov; FAST_NOAVX:       ## %bb.0:
6600a8f54c3SEvgenii Kudriashov; FAST_NOAVX-NEXT:    xorps %xmm1, %xmm1
6610a8f54c3SEvgenii Kudriashov; FAST_NOAVX-NEXT:    ucomiss %xmm1, %xmm0
6620a8f54c3SEvgenii Kudriashov; FAST_NOAVX-NEXT:    setae %al
6630a8f54c3SEvgenii Kudriashov; FAST_NOAVX-NEXT:    andb $1, %al
6640a8f54c3SEvgenii Kudriashov; FAST_NOAVX-NEXT:    retq
6650a8f54c3SEvgenii Kudriashov;
6660a8f54c3SEvgenii Kudriashov; FAST_AVX-LABEL: fcmp_oge3:
6670a8f54c3SEvgenii Kudriashov; FAST_AVX:       ## %bb.0:
6680a8f54c3SEvgenii Kudriashov; FAST_AVX-NEXT:    vxorps %xmm1, %xmm1, %xmm1
6690a8f54c3SEvgenii Kudriashov; FAST_AVX-NEXT:    vucomiss %xmm1, %xmm0
6700a8f54c3SEvgenii Kudriashov; FAST_AVX-NEXT:    setae %al
6710a8f54c3SEvgenii Kudriashov; FAST_AVX-NEXT:    andb $1, %al
6720a8f54c3SEvgenii Kudriashov; FAST_AVX-NEXT:    retq
6730a8f54c3SEvgenii Kudriashov  %1 = fcmp oge float %x, 0.000000e+00
6740a8f54c3SEvgenii Kudriashov  ret i1 %1
6750a8f54c3SEvgenii Kudriashov}
6760a8f54c3SEvgenii Kudriashov
6770a8f54c3SEvgenii Kudriashovdefine zeroext i1 @fcmp_olt2(float %x) {
6780a8f54c3SEvgenii Kudriashov; SDAG-LABEL: fcmp_olt2:
6790a8f54c3SEvgenii Kudriashov; SDAG:       ## %bb.0:
6800a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    xorl %eax, %eax
6810a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    retq
6820a8f54c3SEvgenii Kudriashov;
6830a8f54c3SEvgenii Kudriashov; FAST-LABEL: fcmp_olt2:
6840a8f54c3SEvgenii Kudriashov; FAST:       ## %bb.0:
6850a8f54c3SEvgenii Kudriashov; FAST-NEXT:    xorl %eax, %eax
6860a8f54c3SEvgenii Kudriashov; FAST-NEXT:    andb $1, %al
687*cca49663SCraig Topper; FAST-NEXT:    ## kill: def $al killed $al killed $eax
6880a8f54c3SEvgenii Kudriashov; FAST-NEXT:    retq
6890a8f54c3SEvgenii Kudriashov  %1 = fcmp olt float %x, %x
6900a8f54c3SEvgenii Kudriashov  ret i1 %1
6910a8f54c3SEvgenii Kudriashov}
6920a8f54c3SEvgenii Kudriashov
6930a8f54c3SEvgenii Kudriashovdefine zeroext i1 @fcmp_olt3(float %x) {
6940a8f54c3SEvgenii Kudriashov; SDAG-LABEL: fcmp_olt3:
6950a8f54c3SEvgenii Kudriashov; SDAG:       ## %bb.0:
6960a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    xorps %xmm1, %xmm1
6970a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    ucomiss %xmm0, %xmm1
6980a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    seta %al
6990a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    retq
7000a8f54c3SEvgenii Kudriashov;
7010a8f54c3SEvgenii Kudriashov; FAST_NOAVX-LABEL: fcmp_olt3:
7020a8f54c3SEvgenii Kudriashov; FAST_NOAVX:       ## %bb.0:
7030a8f54c3SEvgenii Kudriashov; FAST_NOAVX-NEXT:    xorps %xmm1, %xmm1
7040a8f54c3SEvgenii Kudriashov; FAST_NOAVX-NEXT:    ucomiss %xmm0, %xmm1
7050a8f54c3SEvgenii Kudriashov; FAST_NOAVX-NEXT:    seta %al
7060a8f54c3SEvgenii Kudriashov; FAST_NOAVX-NEXT:    andb $1, %al
7070a8f54c3SEvgenii Kudriashov; FAST_NOAVX-NEXT:    retq
7080a8f54c3SEvgenii Kudriashov;
7090a8f54c3SEvgenii Kudriashov; FAST_AVX-LABEL: fcmp_olt3:
7100a8f54c3SEvgenii Kudriashov; FAST_AVX:       ## %bb.0:
7110a8f54c3SEvgenii Kudriashov; FAST_AVX-NEXT:    vxorps %xmm1, %xmm1, %xmm1
7120a8f54c3SEvgenii Kudriashov; FAST_AVX-NEXT:    vucomiss %xmm0, %xmm1
7130a8f54c3SEvgenii Kudriashov; FAST_AVX-NEXT:    seta %al
7140a8f54c3SEvgenii Kudriashov; FAST_AVX-NEXT:    andb $1, %al
7150a8f54c3SEvgenii Kudriashov; FAST_AVX-NEXT:    retq
7160a8f54c3SEvgenii Kudriashov  %1 = fcmp olt float %x, 0.000000e+00
7170a8f54c3SEvgenii Kudriashov  ret i1 %1
7180a8f54c3SEvgenii Kudriashov}
7190a8f54c3SEvgenii Kudriashov
7200a8f54c3SEvgenii Kudriashovdefine zeroext i1 @fcmp_ole2(float %x) {
7210a8f54c3SEvgenii Kudriashov; SDAG-LABEL: fcmp_ole2:
7220a8f54c3SEvgenii Kudriashov; SDAG:       ## %bb.0:
7230a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    ucomiss %xmm0, %xmm0
7240a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    setnp %al
7250a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    retq
7260a8f54c3SEvgenii Kudriashov;
7270a8f54c3SEvgenii Kudriashov; FAST_NOAVX-LABEL: fcmp_ole2:
7280a8f54c3SEvgenii Kudriashov; FAST_NOAVX:       ## %bb.0:
7290a8f54c3SEvgenii Kudriashov; FAST_NOAVX-NEXT:    ucomiss %xmm0, %xmm0
7300a8f54c3SEvgenii Kudriashov; FAST_NOAVX-NEXT:    setnp %al
7310a8f54c3SEvgenii Kudriashov; FAST_NOAVX-NEXT:    andb $1, %al
7320a8f54c3SEvgenii Kudriashov; FAST_NOAVX-NEXT:    retq
7330a8f54c3SEvgenii Kudriashov;
7340a8f54c3SEvgenii Kudriashov; FAST_AVX-LABEL: fcmp_ole2:
7350a8f54c3SEvgenii Kudriashov; FAST_AVX:       ## %bb.0:
7360a8f54c3SEvgenii Kudriashov; FAST_AVX-NEXT:    vucomiss %xmm0, %xmm0
7370a8f54c3SEvgenii Kudriashov; FAST_AVX-NEXT:    setnp %al
7380a8f54c3SEvgenii Kudriashov; FAST_AVX-NEXT:    andb $1, %al
7390a8f54c3SEvgenii Kudriashov; FAST_AVX-NEXT:    retq
7400a8f54c3SEvgenii Kudriashov  %1 = fcmp ole float %x, %x
7410a8f54c3SEvgenii Kudriashov  ret i1 %1
7420a8f54c3SEvgenii Kudriashov}
7430a8f54c3SEvgenii Kudriashov
7440a8f54c3SEvgenii Kudriashovdefine zeroext i1 @fcmp_ole3(float %x) {
7450a8f54c3SEvgenii Kudriashov; SDAG-LABEL: fcmp_ole3:
7460a8f54c3SEvgenii Kudriashov; SDAG:       ## %bb.0:
7470a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    xorps %xmm1, %xmm1
7480a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    ucomiss %xmm0, %xmm1
7490a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    setae %al
7500a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    retq
7510a8f54c3SEvgenii Kudriashov;
7520a8f54c3SEvgenii Kudriashov; FAST_NOAVX-LABEL: fcmp_ole3:
7530a8f54c3SEvgenii Kudriashov; FAST_NOAVX:       ## %bb.0:
7540a8f54c3SEvgenii Kudriashov; FAST_NOAVX-NEXT:    xorps %xmm1, %xmm1
7550a8f54c3SEvgenii Kudriashov; FAST_NOAVX-NEXT:    ucomiss %xmm0, %xmm1
7560a8f54c3SEvgenii Kudriashov; FAST_NOAVX-NEXT:    setae %al
7570a8f54c3SEvgenii Kudriashov; FAST_NOAVX-NEXT:    andb $1, %al
7580a8f54c3SEvgenii Kudriashov; FAST_NOAVX-NEXT:    retq
7590a8f54c3SEvgenii Kudriashov;
7600a8f54c3SEvgenii Kudriashov; FAST_AVX-LABEL: fcmp_ole3:
7610a8f54c3SEvgenii Kudriashov; FAST_AVX:       ## %bb.0:
7620a8f54c3SEvgenii Kudriashov; FAST_AVX-NEXT:    vxorps %xmm1, %xmm1, %xmm1
7630a8f54c3SEvgenii Kudriashov; FAST_AVX-NEXT:    vucomiss %xmm0, %xmm1
7640a8f54c3SEvgenii Kudriashov; FAST_AVX-NEXT:    setae %al
7650a8f54c3SEvgenii Kudriashov; FAST_AVX-NEXT:    andb $1, %al
7660a8f54c3SEvgenii Kudriashov; FAST_AVX-NEXT:    retq
7670a8f54c3SEvgenii Kudriashov  %1 = fcmp ole float %x, 0.000000e+00
7680a8f54c3SEvgenii Kudriashov  ret i1 %1
7690a8f54c3SEvgenii Kudriashov}
7700a8f54c3SEvgenii Kudriashov
7710a8f54c3SEvgenii Kudriashovdefine zeroext i1 @fcmp_one2(float %x) {
7720a8f54c3SEvgenii Kudriashov; SDAG-LABEL: fcmp_one2:
7730a8f54c3SEvgenii Kudriashov; SDAG:       ## %bb.0:
7740a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    xorl %eax, %eax
7750a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    retq
7760a8f54c3SEvgenii Kudriashov;
7770a8f54c3SEvgenii Kudriashov; FAST-LABEL: fcmp_one2:
7780a8f54c3SEvgenii Kudriashov; FAST:       ## %bb.0:
7790a8f54c3SEvgenii Kudriashov; FAST-NEXT:    xorl %eax, %eax
7800a8f54c3SEvgenii Kudriashov; FAST-NEXT:    andb $1, %al
781*cca49663SCraig Topper; FAST-NEXT:    ## kill: def $al killed $al killed $eax
7820a8f54c3SEvgenii Kudriashov; FAST-NEXT:    retq
7830a8f54c3SEvgenii Kudriashov  %1 = fcmp one float %x, %x
7840a8f54c3SEvgenii Kudriashov  ret i1 %1
7850a8f54c3SEvgenii Kudriashov}
7860a8f54c3SEvgenii Kudriashov
7870a8f54c3SEvgenii Kudriashovdefine zeroext i1 @fcmp_one3(float %x) {
7880a8f54c3SEvgenii Kudriashov; SDAG-LABEL: fcmp_one3:
7890a8f54c3SEvgenii Kudriashov; SDAG:       ## %bb.0:
7900a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    xorps %xmm1, %xmm1
7910a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    ucomiss %xmm1, %xmm0
7920a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    setne %al
7930a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    retq
7940a8f54c3SEvgenii Kudriashov;
7950a8f54c3SEvgenii Kudriashov; FAST_NOAVX-LABEL: fcmp_one3:
7960a8f54c3SEvgenii Kudriashov; FAST_NOAVX:       ## %bb.0:
7970a8f54c3SEvgenii Kudriashov; FAST_NOAVX-NEXT:    xorps %xmm1, %xmm1
7980a8f54c3SEvgenii Kudriashov; FAST_NOAVX-NEXT:    ucomiss %xmm1, %xmm0
7990a8f54c3SEvgenii Kudriashov; FAST_NOAVX-NEXT:    setne %al
8000a8f54c3SEvgenii Kudriashov; FAST_NOAVX-NEXT:    andb $1, %al
8010a8f54c3SEvgenii Kudriashov; FAST_NOAVX-NEXT:    retq
8020a8f54c3SEvgenii Kudriashov;
8030a8f54c3SEvgenii Kudriashov; FAST_AVX-LABEL: fcmp_one3:
8040a8f54c3SEvgenii Kudriashov; FAST_AVX:       ## %bb.0:
8050a8f54c3SEvgenii Kudriashov; FAST_AVX-NEXT:    vxorps %xmm1, %xmm1, %xmm1
8060a8f54c3SEvgenii Kudriashov; FAST_AVX-NEXT:    vucomiss %xmm1, %xmm0
8070a8f54c3SEvgenii Kudriashov; FAST_AVX-NEXT:    setne %al
8080a8f54c3SEvgenii Kudriashov; FAST_AVX-NEXT:    andb $1, %al
8090a8f54c3SEvgenii Kudriashov; FAST_AVX-NEXT:    retq
8100a8f54c3SEvgenii Kudriashov  %1 = fcmp one float %x, 0.000000e+00
8110a8f54c3SEvgenii Kudriashov  ret i1 %1
8120a8f54c3SEvgenii Kudriashov}
8130a8f54c3SEvgenii Kudriashov
8140a8f54c3SEvgenii Kudriashovdefine zeroext i1 @fcmp_ord2(float %x) {
8150a8f54c3SEvgenii Kudriashov; SDAG-LABEL: fcmp_ord2:
8160a8f54c3SEvgenii Kudriashov; SDAG:       ## %bb.0:
8170a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    ucomiss %xmm0, %xmm0
8180a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    setnp %al
8190a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    retq
8200a8f54c3SEvgenii Kudriashov;
8210a8f54c3SEvgenii Kudriashov; FAST_NOAVX-LABEL: fcmp_ord2:
8220a8f54c3SEvgenii Kudriashov; FAST_NOAVX:       ## %bb.0:
8230a8f54c3SEvgenii Kudriashov; FAST_NOAVX-NEXT:    ucomiss %xmm0, %xmm0
8240a8f54c3SEvgenii Kudriashov; FAST_NOAVX-NEXT:    setnp %al
8250a8f54c3SEvgenii Kudriashov; FAST_NOAVX-NEXT:    andb $1, %al
8260a8f54c3SEvgenii Kudriashov; FAST_NOAVX-NEXT:    retq
8270a8f54c3SEvgenii Kudriashov;
8280a8f54c3SEvgenii Kudriashov; FAST_AVX-LABEL: fcmp_ord2:
8290a8f54c3SEvgenii Kudriashov; FAST_AVX:       ## %bb.0:
8300a8f54c3SEvgenii Kudriashov; FAST_AVX-NEXT:    vucomiss %xmm0, %xmm0
8310a8f54c3SEvgenii Kudriashov; FAST_AVX-NEXT:    setnp %al
8320a8f54c3SEvgenii Kudriashov; FAST_AVX-NEXT:    andb $1, %al
8330a8f54c3SEvgenii Kudriashov; FAST_AVX-NEXT:    retq
8340a8f54c3SEvgenii Kudriashov  %1 = fcmp ord float %x, %x
8350a8f54c3SEvgenii Kudriashov  ret i1 %1
8360a8f54c3SEvgenii Kudriashov}
8370a8f54c3SEvgenii Kudriashov
8380a8f54c3SEvgenii Kudriashovdefine zeroext i1 @fcmp_ord3(float %x) {
8390a8f54c3SEvgenii Kudriashov; SDAG-LABEL: fcmp_ord3:
8400a8f54c3SEvgenii Kudriashov; SDAG:       ## %bb.0:
8410a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    ucomiss %xmm0, %xmm0
8420a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    setnp %al
8430a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    retq
8440a8f54c3SEvgenii Kudriashov;
8450a8f54c3SEvgenii Kudriashov; FAST_NOAVX-LABEL: fcmp_ord3:
8460a8f54c3SEvgenii Kudriashov; FAST_NOAVX:       ## %bb.0:
8470a8f54c3SEvgenii Kudriashov; FAST_NOAVX-NEXT:    ucomiss %xmm0, %xmm0
8480a8f54c3SEvgenii Kudriashov; FAST_NOAVX-NEXT:    setnp %al
8490a8f54c3SEvgenii Kudriashov; FAST_NOAVX-NEXT:    andb $1, %al
8500a8f54c3SEvgenii Kudriashov; FAST_NOAVX-NEXT:    retq
8510a8f54c3SEvgenii Kudriashov;
8520a8f54c3SEvgenii Kudriashov; FAST_AVX-LABEL: fcmp_ord3:
8530a8f54c3SEvgenii Kudriashov; FAST_AVX:       ## %bb.0:
8540a8f54c3SEvgenii Kudriashov; FAST_AVX-NEXT:    vucomiss %xmm0, %xmm0
8550a8f54c3SEvgenii Kudriashov; FAST_AVX-NEXT:    setnp %al
8560a8f54c3SEvgenii Kudriashov; FAST_AVX-NEXT:    andb $1, %al
8570a8f54c3SEvgenii Kudriashov; FAST_AVX-NEXT:    retq
8580a8f54c3SEvgenii Kudriashov  %1 = fcmp ord float %x, 0.000000e+00
8590a8f54c3SEvgenii Kudriashov  ret i1 %1
8600a8f54c3SEvgenii Kudriashov}
8610a8f54c3SEvgenii Kudriashov
8620a8f54c3SEvgenii Kudriashovdefine zeroext i1 @fcmp_uno2(float %x) {
8630a8f54c3SEvgenii Kudriashov; SDAG-LABEL: fcmp_uno2:
8640a8f54c3SEvgenii Kudriashov; SDAG:       ## %bb.0:
8650a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    ucomiss %xmm0, %xmm0
8660a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    setp %al
8670a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    retq
8680a8f54c3SEvgenii Kudriashov;
8690a8f54c3SEvgenii Kudriashov; FAST_NOAVX-LABEL: fcmp_uno2:
8700a8f54c3SEvgenii Kudriashov; FAST_NOAVX:       ## %bb.0:
8710a8f54c3SEvgenii Kudriashov; FAST_NOAVX-NEXT:    ucomiss %xmm0, %xmm0
8720a8f54c3SEvgenii Kudriashov; FAST_NOAVX-NEXT:    setp %al
8730a8f54c3SEvgenii Kudriashov; FAST_NOAVX-NEXT:    andb $1, %al
8740a8f54c3SEvgenii Kudriashov; FAST_NOAVX-NEXT:    retq
8750a8f54c3SEvgenii Kudriashov;
8760a8f54c3SEvgenii Kudriashov; FAST_AVX-LABEL: fcmp_uno2:
8770a8f54c3SEvgenii Kudriashov; FAST_AVX:       ## %bb.0:
8780a8f54c3SEvgenii Kudriashov; FAST_AVX-NEXT:    vucomiss %xmm0, %xmm0
8790a8f54c3SEvgenii Kudriashov; FAST_AVX-NEXT:    setp %al
8800a8f54c3SEvgenii Kudriashov; FAST_AVX-NEXT:    andb $1, %al
8810a8f54c3SEvgenii Kudriashov; FAST_AVX-NEXT:    retq
8820a8f54c3SEvgenii Kudriashov  %1 = fcmp uno float %x, %x
8830a8f54c3SEvgenii Kudriashov  ret i1 %1
8840a8f54c3SEvgenii Kudriashov}
8850a8f54c3SEvgenii Kudriashov
8860a8f54c3SEvgenii Kudriashovdefine zeroext i1 @fcmp_uno3(float %x) {
8870a8f54c3SEvgenii Kudriashov; SDAG-LABEL: fcmp_uno3:
8880a8f54c3SEvgenii Kudriashov; SDAG:       ## %bb.0:
8890a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    ucomiss %xmm0, %xmm0
8900a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    setp %al
8910a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    retq
8920a8f54c3SEvgenii Kudriashov;
8930a8f54c3SEvgenii Kudriashov; FAST_NOAVX-LABEL: fcmp_uno3:
8940a8f54c3SEvgenii Kudriashov; FAST_NOAVX:       ## %bb.0:
8950a8f54c3SEvgenii Kudriashov; FAST_NOAVX-NEXT:    ucomiss %xmm0, %xmm0
8960a8f54c3SEvgenii Kudriashov; FAST_NOAVX-NEXT:    setp %al
8970a8f54c3SEvgenii Kudriashov; FAST_NOAVX-NEXT:    andb $1, %al
8980a8f54c3SEvgenii Kudriashov; FAST_NOAVX-NEXT:    retq
8990a8f54c3SEvgenii Kudriashov;
9000a8f54c3SEvgenii Kudriashov; FAST_AVX-LABEL: fcmp_uno3:
9010a8f54c3SEvgenii Kudriashov; FAST_AVX:       ## %bb.0:
9020a8f54c3SEvgenii Kudriashov; FAST_AVX-NEXT:    vucomiss %xmm0, %xmm0
9030a8f54c3SEvgenii Kudriashov; FAST_AVX-NEXT:    setp %al
9040a8f54c3SEvgenii Kudriashov; FAST_AVX-NEXT:    andb $1, %al
9050a8f54c3SEvgenii Kudriashov; FAST_AVX-NEXT:    retq
9060a8f54c3SEvgenii Kudriashov  %1 = fcmp uno float %x, 0.000000e+00
9070a8f54c3SEvgenii Kudriashov  ret i1 %1
9080a8f54c3SEvgenii Kudriashov}
9090a8f54c3SEvgenii Kudriashov
9100a8f54c3SEvgenii Kudriashovdefine zeroext i1 @fcmp_ueq2(float %x) {
9110a8f54c3SEvgenii Kudriashov; SDAG-LABEL: fcmp_ueq2:
9120a8f54c3SEvgenii Kudriashov; SDAG:       ## %bb.0:
9130a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    movb $1, %al
9140a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    retq
9150a8f54c3SEvgenii Kudriashov;
9160a8f54c3SEvgenii Kudriashov; FAST-LABEL: fcmp_ueq2:
9170a8f54c3SEvgenii Kudriashov; FAST:       ## %bb.0:
9180a8f54c3SEvgenii Kudriashov; FAST-NEXT:    movb $1, %al
9190a8f54c3SEvgenii Kudriashov; FAST-NEXT:    andb $1, %al
9200a8f54c3SEvgenii Kudriashov; FAST-NEXT:    retq
9210a8f54c3SEvgenii Kudriashov  %1 = fcmp ueq float %x, %x
9220a8f54c3SEvgenii Kudriashov  ret i1 %1
9230a8f54c3SEvgenii Kudriashov}
9240a8f54c3SEvgenii Kudriashov
9250a8f54c3SEvgenii Kudriashovdefine zeroext i1 @fcmp_ueq3(float %x) {
9260a8f54c3SEvgenii Kudriashov; SDAG-LABEL: fcmp_ueq3:
9270a8f54c3SEvgenii Kudriashov; SDAG:       ## %bb.0:
9280a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    xorps %xmm1, %xmm1
9290a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    ucomiss %xmm1, %xmm0
9300a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    sete %al
9310a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    retq
9320a8f54c3SEvgenii Kudriashov;
9330a8f54c3SEvgenii Kudriashov; FAST_NOAVX-LABEL: fcmp_ueq3:
9340a8f54c3SEvgenii Kudriashov; FAST_NOAVX:       ## %bb.0:
9350a8f54c3SEvgenii Kudriashov; FAST_NOAVX-NEXT:    xorps %xmm1, %xmm1
9360a8f54c3SEvgenii Kudriashov; FAST_NOAVX-NEXT:    ucomiss %xmm1, %xmm0
9370a8f54c3SEvgenii Kudriashov; FAST_NOAVX-NEXT:    sete %al
9380a8f54c3SEvgenii Kudriashov; FAST_NOAVX-NEXT:    andb $1, %al
9390a8f54c3SEvgenii Kudriashov; FAST_NOAVX-NEXT:    retq
9400a8f54c3SEvgenii Kudriashov;
9410a8f54c3SEvgenii Kudriashov; FAST_AVX-LABEL: fcmp_ueq3:
9420a8f54c3SEvgenii Kudriashov; FAST_AVX:       ## %bb.0:
9430a8f54c3SEvgenii Kudriashov; FAST_AVX-NEXT:    vxorps %xmm1, %xmm1, %xmm1
9440a8f54c3SEvgenii Kudriashov; FAST_AVX-NEXT:    vucomiss %xmm1, %xmm0
9450a8f54c3SEvgenii Kudriashov; FAST_AVX-NEXT:    sete %al
9460a8f54c3SEvgenii Kudriashov; FAST_AVX-NEXT:    andb $1, %al
9470a8f54c3SEvgenii Kudriashov; FAST_AVX-NEXT:    retq
9480a8f54c3SEvgenii Kudriashov  %1 = fcmp ueq float %x, 0.000000e+00
9490a8f54c3SEvgenii Kudriashov  ret i1 %1
9500a8f54c3SEvgenii Kudriashov}
9510a8f54c3SEvgenii Kudriashov
9520a8f54c3SEvgenii Kudriashovdefine zeroext i1 @fcmp_ugt2(float %x) {
9530a8f54c3SEvgenii Kudriashov; SDAG-LABEL: fcmp_ugt2:
9540a8f54c3SEvgenii Kudriashov; SDAG:       ## %bb.0:
9550a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    ucomiss %xmm0, %xmm0
9560a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    setp %al
9570a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    retq
9580a8f54c3SEvgenii Kudriashov;
9590a8f54c3SEvgenii Kudriashov; FAST_NOAVX-LABEL: fcmp_ugt2:
9600a8f54c3SEvgenii Kudriashov; FAST_NOAVX:       ## %bb.0:
9610a8f54c3SEvgenii Kudriashov; FAST_NOAVX-NEXT:    ucomiss %xmm0, %xmm0
9620a8f54c3SEvgenii Kudriashov; FAST_NOAVX-NEXT:    setp %al
9630a8f54c3SEvgenii Kudriashov; FAST_NOAVX-NEXT:    andb $1, %al
9640a8f54c3SEvgenii Kudriashov; FAST_NOAVX-NEXT:    retq
9650a8f54c3SEvgenii Kudriashov;
9660a8f54c3SEvgenii Kudriashov; FAST_AVX-LABEL: fcmp_ugt2:
9670a8f54c3SEvgenii Kudriashov; FAST_AVX:       ## %bb.0:
9680a8f54c3SEvgenii Kudriashov; FAST_AVX-NEXT:    vucomiss %xmm0, %xmm0
9690a8f54c3SEvgenii Kudriashov; FAST_AVX-NEXT:    setp %al
9700a8f54c3SEvgenii Kudriashov; FAST_AVX-NEXT:    andb $1, %al
9710a8f54c3SEvgenii Kudriashov; FAST_AVX-NEXT:    retq
9720a8f54c3SEvgenii Kudriashov  %1 = fcmp ugt float %x, %x
9730a8f54c3SEvgenii Kudriashov  ret i1 %1
9740a8f54c3SEvgenii Kudriashov}
9750a8f54c3SEvgenii Kudriashov
9760a8f54c3SEvgenii Kudriashovdefine zeroext i1 @fcmp_ugt3(float %x) {
9770a8f54c3SEvgenii Kudriashov; SDAG-LABEL: fcmp_ugt3:
9780a8f54c3SEvgenii Kudriashov; SDAG:       ## %bb.0:
9790a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    xorps %xmm1, %xmm1
9800a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    ucomiss %xmm0, %xmm1
9810a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    setb %al
9820a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    retq
9830a8f54c3SEvgenii Kudriashov;
9840a8f54c3SEvgenii Kudriashov; FAST_NOAVX-LABEL: fcmp_ugt3:
9850a8f54c3SEvgenii Kudriashov; FAST_NOAVX:       ## %bb.0:
9860a8f54c3SEvgenii Kudriashov; FAST_NOAVX-NEXT:    xorps %xmm1, %xmm1
9870a8f54c3SEvgenii Kudriashov; FAST_NOAVX-NEXT:    ucomiss %xmm0, %xmm1
9880a8f54c3SEvgenii Kudriashov; FAST_NOAVX-NEXT:    setb %al
9890a8f54c3SEvgenii Kudriashov; FAST_NOAVX-NEXT:    andb $1, %al
9900a8f54c3SEvgenii Kudriashov; FAST_NOAVX-NEXT:    retq
9910a8f54c3SEvgenii Kudriashov;
9920a8f54c3SEvgenii Kudriashov; FAST_AVX-LABEL: fcmp_ugt3:
9930a8f54c3SEvgenii Kudriashov; FAST_AVX:       ## %bb.0:
9940a8f54c3SEvgenii Kudriashov; FAST_AVX-NEXT:    vxorps %xmm1, %xmm1, %xmm1
9950a8f54c3SEvgenii Kudriashov; FAST_AVX-NEXT:    vucomiss %xmm0, %xmm1
9960a8f54c3SEvgenii Kudriashov; FAST_AVX-NEXT:    setb %al
9970a8f54c3SEvgenii Kudriashov; FAST_AVX-NEXT:    andb $1, %al
9980a8f54c3SEvgenii Kudriashov; FAST_AVX-NEXT:    retq
9990a8f54c3SEvgenii Kudriashov  %1 = fcmp ugt float %x, 0.000000e+00
10000a8f54c3SEvgenii Kudriashov  ret i1 %1
10010a8f54c3SEvgenii Kudriashov}
10020a8f54c3SEvgenii Kudriashov
10030a8f54c3SEvgenii Kudriashovdefine zeroext i1 @fcmp_uge2(float %x) {
10040a8f54c3SEvgenii Kudriashov; SDAG-LABEL: fcmp_uge2:
10050a8f54c3SEvgenii Kudriashov; SDAG:       ## %bb.0:
10060a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    movb $1, %al
10070a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    retq
10080a8f54c3SEvgenii Kudriashov;
10090a8f54c3SEvgenii Kudriashov; FAST-LABEL: fcmp_uge2:
10100a8f54c3SEvgenii Kudriashov; FAST:       ## %bb.0:
10110a8f54c3SEvgenii Kudriashov; FAST-NEXT:    movb $1, %al
10120a8f54c3SEvgenii Kudriashov; FAST-NEXT:    andb $1, %al
10130a8f54c3SEvgenii Kudriashov; FAST-NEXT:    retq
10140a8f54c3SEvgenii Kudriashov  %1 = fcmp uge float %x, %x
10150a8f54c3SEvgenii Kudriashov  ret i1 %1
10160a8f54c3SEvgenii Kudriashov}
10170a8f54c3SEvgenii Kudriashov
10180a8f54c3SEvgenii Kudriashovdefine zeroext i1 @fcmp_uge3(float %x) {
10190a8f54c3SEvgenii Kudriashov; SDAG-LABEL: fcmp_uge3:
10200a8f54c3SEvgenii Kudriashov; SDAG:       ## %bb.0:
10210a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    xorps %xmm1, %xmm1
10220a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    ucomiss %xmm0, %xmm1
10230a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    setbe %al
10240a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    retq
10250a8f54c3SEvgenii Kudriashov;
10260a8f54c3SEvgenii Kudriashov; FAST_NOAVX-LABEL: fcmp_uge3:
10270a8f54c3SEvgenii Kudriashov; FAST_NOAVX:       ## %bb.0:
10280a8f54c3SEvgenii Kudriashov; FAST_NOAVX-NEXT:    xorps %xmm1, %xmm1
10290a8f54c3SEvgenii Kudriashov; FAST_NOAVX-NEXT:    ucomiss %xmm0, %xmm1
10300a8f54c3SEvgenii Kudriashov; FAST_NOAVX-NEXT:    setbe %al
10310a8f54c3SEvgenii Kudriashov; FAST_NOAVX-NEXT:    andb $1, %al
10320a8f54c3SEvgenii Kudriashov; FAST_NOAVX-NEXT:    retq
10330a8f54c3SEvgenii Kudriashov;
10340a8f54c3SEvgenii Kudriashov; FAST_AVX-LABEL: fcmp_uge3:
10350a8f54c3SEvgenii Kudriashov; FAST_AVX:       ## %bb.0:
10360a8f54c3SEvgenii Kudriashov; FAST_AVX-NEXT:    vxorps %xmm1, %xmm1, %xmm1
10370a8f54c3SEvgenii Kudriashov; FAST_AVX-NEXT:    vucomiss %xmm0, %xmm1
10380a8f54c3SEvgenii Kudriashov; FAST_AVX-NEXT:    setbe %al
10390a8f54c3SEvgenii Kudriashov; FAST_AVX-NEXT:    andb $1, %al
10400a8f54c3SEvgenii Kudriashov; FAST_AVX-NEXT:    retq
10410a8f54c3SEvgenii Kudriashov  %1 = fcmp uge float %x, 0.000000e+00
10420a8f54c3SEvgenii Kudriashov  ret i1 %1
10430a8f54c3SEvgenii Kudriashov}
10440a8f54c3SEvgenii Kudriashov
10450a8f54c3SEvgenii Kudriashovdefine zeroext i1 @fcmp_ult2(float %x) {
10460a8f54c3SEvgenii Kudriashov; SDAG-LABEL: fcmp_ult2:
10470a8f54c3SEvgenii Kudriashov; SDAG:       ## %bb.0:
10480a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    ucomiss %xmm0, %xmm0
10490a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    setp %al
10500a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    retq
10510a8f54c3SEvgenii Kudriashov;
10520a8f54c3SEvgenii Kudriashov; FAST_NOAVX-LABEL: fcmp_ult2:
10530a8f54c3SEvgenii Kudriashov; FAST_NOAVX:       ## %bb.0:
10540a8f54c3SEvgenii Kudriashov; FAST_NOAVX-NEXT:    ucomiss %xmm0, %xmm0
10550a8f54c3SEvgenii Kudriashov; FAST_NOAVX-NEXT:    setp %al
10560a8f54c3SEvgenii Kudriashov; FAST_NOAVX-NEXT:    andb $1, %al
10570a8f54c3SEvgenii Kudriashov; FAST_NOAVX-NEXT:    retq
10580a8f54c3SEvgenii Kudriashov;
10590a8f54c3SEvgenii Kudriashov; FAST_AVX-LABEL: fcmp_ult2:
10600a8f54c3SEvgenii Kudriashov; FAST_AVX:       ## %bb.0:
10610a8f54c3SEvgenii Kudriashov; FAST_AVX-NEXT:    vucomiss %xmm0, %xmm0
10620a8f54c3SEvgenii Kudriashov; FAST_AVX-NEXT:    setp %al
10630a8f54c3SEvgenii Kudriashov; FAST_AVX-NEXT:    andb $1, %al
10640a8f54c3SEvgenii Kudriashov; FAST_AVX-NEXT:    retq
10650a8f54c3SEvgenii Kudriashov  %1 = fcmp ult float %x, %x
10660a8f54c3SEvgenii Kudriashov  ret i1 %1
10670a8f54c3SEvgenii Kudriashov}
10680a8f54c3SEvgenii Kudriashov
10690a8f54c3SEvgenii Kudriashovdefine zeroext i1 @fcmp_ult3(float %x) {
10700a8f54c3SEvgenii Kudriashov; SDAG-LABEL: fcmp_ult3:
10710a8f54c3SEvgenii Kudriashov; SDAG:       ## %bb.0:
10720a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    xorps %xmm1, %xmm1
10730a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    ucomiss %xmm1, %xmm0
10740a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    setb %al
10750a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    retq
10760a8f54c3SEvgenii Kudriashov;
10770a8f54c3SEvgenii Kudriashov; FAST_NOAVX-LABEL: fcmp_ult3:
10780a8f54c3SEvgenii Kudriashov; FAST_NOAVX:       ## %bb.0:
10790a8f54c3SEvgenii Kudriashov; FAST_NOAVX-NEXT:    xorps %xmm1, %xmm1
10800a8f54c3SEvgenii Kudriashov; FAST_NOAVX-NEXT:    ucomiss %xmm1, %xmm0
10810a8f54c3SEvgenii Kudriashov; FAST_NOAVX-NEXT:    setb %al
10820a8f54c3SEvgenii Kudriashov; FAST_NOAVX-NEXT:    andb $1, %al
10830a8f54c3SEvgenii Kudriashov; FAST_NOAVX-NEXT:    retq
10840a8f54c3SEvgenii Kudriashov;
10850a8f54c3SEvgenii Kudriashov; FAST_AVX-LABEL: fcmp_ult3:
10860a8f54c3SEvgenii Kudriashov; FAST_AVX:       ## %bb.0:
10870a8f54c3SEvgenii Kudriashov; FAST_AVX-NEXT:    vxorps %xmm1, %xmm1, %xmm1
10880a8f54c3SEvgenii Kudriashov; FAST_AVX-NEXT:    vucomiss %xmm1, %xmm0
10890a8f54c3SEvgenii Kudriashov; FAST_AVX-NEXT:    setb %al
10900a8f54c3SEvgenii Kudriashov; FAST_AVX-NEXT:    andb $1, %al
10910a8f54c3SEvgenii Kudriashov; FAST_AVX-NEXT:    retq
10920a8f54c3SEvgenii Kudriashov  %1 = fcmp ult float %x, 0.000000e+00
10930a8f54c3SEvgenii Kudriashov  ret i1 %1
10940a8f54c3SEvgenii Kudriashov}
10950a8f54c3SEvgenii Kudriashov
10960a8f54c3SEvgenii Kudriashovdefine zeroext i1 @fcmp_ule2(float %x) {
10970a8f54c3SEvgenii Kudriashov; SDAG-LABEL: fcmp_ule2:
10980a8f54c3SEvgenii Kudriashov; SDAG:       ## %bb.0:
10990a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    movb $1, %al
11000a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    retq
11010a8f54c3SEvgenii Kudriashov;
11020a8f54c3SEvgenii Kudriashov; FAST-LABEL: fcmp_ule2:
11030a8f54c3SEvgenii Kudriashov; FAST:       ## %bb.0:
11040a8f54c3SEvgenii Kudriashov; FAST-NEXT:    movb $1, %al
11050a8f54c3SEvgenii Kudriashov; FAST-NEXT:    andb $1, %al
11060a8f54c3SEvgenii Kudriashov; FAST-NEXT:    retq
11070a8f54c3SEvgenii Kudriashov  %1 = fcmp ule float %x, %x
11080a8f54c3SEvgenii Kudriashov  ret i1 %1
11090a8f54c3SEvgenii Kudriashov}
11100a8f54c3SEvgenii Kudriashov
11110a8f54c3SEvgenii Kudriashovdefine zeroext i1 @fcmp_ule3(float %x) {
11120a8f54c3SEvgenii Kudriashov; SDAG-LABEL: fcmp_ule3:
11130a8f54c3SEvgenii Kudriashov; SDAG:       ## %bb.0:
11140a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    xorps %xmm1, %xmm1
11150a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    ucomiss %xmm1, %xmm0
11160a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    setbe %al
11170a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    retq
11180a8f54c3SEvgenii Kudriashov;
11190a8f54c3SEvgenii Kudriashov; FAST_NOAVX-LABEL: fcmp_ule3:
11200a8f54c3SEvgenii Kudriashov; FAST_NOAVX:       ## %bb.0:
11210a8f54c3SEvgenii Kudriashov; FAST_NOAVX-NEXT:    xorps %xmm1, %xmm1
11220a8f54c3SEvgenii Kudriashov; FAST_NOAVX-NEXT:    ucomiss %xmm1, %xmm0
11230a8f54c3SEvgenii Kudriashov; FAST_NOAVX-NEXT:    setbe %al
11240a8f54c3SEvgenii Kudriashov; FAST_NOAVX-NEXT:    andb $1, %al
11250a8f54c3SEvgenii Kudriashov; FAST_NOAVX-NEXT:    retq
11260a8f54c3SEvgenii Kudriashov;
11270a8f54c3SEvgenii Kudriashov; FAST_AVX-LABEL: fcmp_ule3:
11280a8f54c3SEvgenii Kudriashov; FAST_AVX:       ## %bb.0:
11290a8f54c3SEvgenii Kudriashov; FAST_AVX-NEXT:    vxorps %xmm1, %xmm1, %xmm1
11300a8f54c3SEvgenii Kudriashov; FAST_AVX-NEXT:    vucomiss %xmm1, %xmm0
11310a8f54c3SEvgenii Kudriashov; FAST_AVX-NEXT:    setbe %al
11320a8f54c3SEvgenii Kudriashov; FAST_AVX-NEXT:    andb $1, %al
11330a8f54c3SEvgenii Kudriashov; FAST_AVX-NEXT:    retq
11340a8f54c3SEvgenii Kudriashov  %1 = fcmp ule float %x, 0.000000e+00
11350a8f54c3SEvgenii Kudriashov  ret i1 %1
11360a8f54c3SEvgenii Kudriashov}
11370a8f54c3SEvgenii Kudriashov
11380a8f54c3SEvgenii Kudriashovdefine zeroext i1 @fcmp_une2(float %x) {
11390a8f54c3SEvgenii Kudriashov; SDAG-LABEL: fcmp_une2:
11400a8f54c3SEvgenii Kudriashov; SDAG:       ## %bb.0:
11410a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    ucomiss %xmm0, %xmm0
11420a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    setp %al
11430a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    retq
11440a8f54c3SEvgenii Kudriashov;
11450a8f54c3SEvgenii Kudriashov; FAST_NOAVX-LABEL: fcmp_une2:
11460a8f54c3SEvgenii Kudriashov; FAST_NOAVX:       ## %bb.0:
11470a8f54c3SEvgenii Kudriashov; FAST_NOAVX-NEXT:    ucomiss %xmm0, %xmm0
11480a8f54c3SEvgenii Kudriashov; FAST_NOAVX-NEXT:    setp %al
11490a8f54c3SEvgenii Kudriashov; FAST_NOAVX-NEXT:    andb $1, %al
11500a8f54c3SEvgenii Kudriashov; FAST_NOAVX-NEXT:    retq
11510a8f54c3SEvgenii Kudriashov;
11520a8f54c3SEvgenii Kudriashov; FAST_AVX-LABEL: fcmp_une2:
11530a8f54c3SEvgenii Kudriashov; FAST_AVX:       ## %bb.0:
11540a8f54c3SEvgenii Kudriashov; FAST_AVX-NEXT:    vucomiss %xmm0, %xmm0
11550a8f54c3SEvgenii Kudriashov; FAST_AVX-NEXT:    setp %al
11560a8f54c3SEvgenii Kudriashov; FAST_AVX-NEXT:    andb $1, %al
11570a8f54c3SEvgenii Kudriashov; FAST_AVX-NEXT:    retq
11580a8f54c3SEvgenii Kudriashov  %1 = fcmp une float %x, %x
11590a8f54c3SEvgenii Kudriashov  ret i1 %1
11600a8f54c3SEvgenii Kudriashov}
11610a8f54c3SEvgenii Kudriashov
11620a8f54c3SEvgenii Kudriashovdefine zeroext i1 @fcmp_une3(float %x) {
11630a8f54c3SEvgenii Kudriashov; SDAG-LABEL: fcmp_une3:
11640a8f54c3SEvgenii Kudriashov; SDAG:       ## %bb.0:
11650a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    xorps %xmm1, %xmm1
11660a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    cmpneqss %xmm0, %xmm1
11670a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    movd %xmm1, %eax
11680a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    andl $1, %eax
11690a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    ## kill: def $al killed $al killed $eax
11700a8f54c3SEvgenii Kudriashov; SDAG-NEXT:    retq
11710a8f54c3SEvgenii Kudriashov;
11720a8f54c3SEvgenii Kudriashov; FAST_NOAVX-LABEL: fcmp_une3:
11730a8f54c3SEvgenii Kudriashov; FAST_NOAVX:       ## %bb.0:
11740a8f54c3SEvgenii Kudriashov; FAST_NOAVX-NEXT:    xorps %xmm1, %xmm1
11750a8f54c3SEvgenii Kudriashov; FAST_NOAVX-NEXT:    ucomiss %xmm1, %xmm0
1176*cca49663SCraig Topper; FAST_NOAVX-NEXT:    setne %cl
1177*cca49663SCraig Topper; FAST_NOAVX-NEXT:    setp %al
1178*cca49663SCraig Topper; FAST_NOAVX-NEXT:    orb %cl, %al
1179*cca49663SCraig Topper; FAST_NOAVX-NEXT:    andb $1, %al
11800a8f54c3SEvgenii Kudriashov; FAST_NOAVX-NEXT:    retq
11810a8f54c3SEvgenii Kudriashov;
11820a8f54c3SEvgenii Kudriashov; FAST_AVX-LABEL: fcmp_une3:
11830a8f54c3SEvgenii Kudriashov; FAST_AVX:       ## %bb.0:
11840a8f54c3SEvgenii Kudriashov; FAST_AVX-NEXT:    vxorps %xmm1, %xmm1, %xmm1
11850a8f54c3SEvgenii Kudriashov; FAST_AVX-NEXT:    vucomiss %xmm1, %xmm0
1186*cca49663SCraig Topper; FAST_AVX-NEXT:    setne %cl
1187*cca49663SCraig Topper; FAST_AVX-NEXT:    setp %al
1188*cca49663SCraig Topper; FAST_AVX-NEXT:    orb %cl, %al
1189*cca49663SCraig Topper; FAST_AVX-NEXT:    andb $1, %al
11900a8f54c3SEvgenii Kudriashov; FAST_AVX-NEXT:    retq
11910a8f54c3SEvgenii Kudriashov  %1 = fcmp une float %x, 0.000000e+00
11920a8f54c3SEvgenii Kudriashov  ret i1 %1
11930a8f54c3SEvgenii Kudriashov}
1194