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