Skip to content

Commit 39f2fce

Browse files
committed
ValueTracking: Update another cannotBeOrderedLessThanZero use
1 parent 708fa7d commit 39f2fce

File tree

2 files changed

+10
-8
lines changed

2 files changed

+10
-8
lines changed

llvm/lib/Analysis/InstructionSimplify.cpp

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4204,14 +4204,18 @@ static Value *simplifyFCmpInst(unsigned Predicate, Value *LHS, Value *RHS,
42044204
if (match(RHS, m_AnyZeroFP())) {
42054205
switch (Pred) {
42064206
case FCmpInst::FCMP_OGE:
4207-
case FCmpInst::FCMP_ULT:
4207+
case FCmpInst::FCMP_ULT: {
4208+
FPClassTest Interested = FMF.noNaNs() ? fcNegative : fcNegative | fcNan;
4209+
KnownFPClass Known = computeKnownFPClass(LHS, Q.DL, Interested, 0,
4210+
Q.TLI, Q.AC, Q.CxtI, Q.DT);
4211+
42084212
// Positive or zero X >= 0.0 --> true
42094213
// Positive or zero X < 0.0 --> false
4210-
if ((FMF.noNaNs() ||
4211-
isKnownNeverNaN(LHS, Q.DL, Q.TLI, 0, Q.AC, Q.CxtI, Q.DT)) &&
4212-
CannotBeOrderedLessThanZero(LHS, Q.DL, Q.TLI))
4214+
if ((FMF.noNaNs() || Known.isKnownNeverNaN()) &&
4215+
Known.cannotBeOrderedLessThanZero())
42134216
return Pred == FCmpInst::FCMP_OGE ? getTrue(RetTy) : getFalse(RetTy);
42144217
break;
4218+
}
42154219
case FCmpInst::FCMP_UGE:
42164220
case FCmpInst::FCMP_OLT:
42174221
// Positive or zero or nan X >= 0.0 --> true

llvm/test/Transforms/InstSimplify/floating-point-compare.ll

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1478,8 +1478,7 @@ define i1 @fcmp_oge_0_assumed_oge_zero(float %x) {
14781478
; CHECK-LABEL: @fcmp_oge_0_assumed_oge_zero(
14791479
; CHECK-NEXT: [[ASSUME_CMP:%.*]] = fcmp oge float [[X:%.*]], 0.000000e+00
14801480
; CHECK-NEXT: call void @llvm.assume(i1 [[ASSUME_CMP]])
1481-
; CHECK-NEXT: [[R:%.*]] = fcmp oge float [[X]], 0.000000e+00
1482-
; CHECK-NEXT: ret i1 [[R]]
1481+
; CHECK-NEXT: ret i1 true
14831482
;
14841483
%assume.cmp = fcmp oge float %x, 0.0
14851484
call void @llvm.assume(i1 %assume.cmp)
@@ -1491,8 +1490,7 @@ define i1 @fcmp_ult_0_assumed_oge_zero(float %x) {
14911490
; CHECK-LABEL: @fcmp_ult_0_assumed_oge_zero(
14921491
; CHECK-NEXT: [[ASSUME_CMP:%.*]] = fcmp oge float [[X:%.*]], 0.000000e+00
14931492
; CHECK-NEXT: call void @llvm.assume(i1 [[ASSUME_CMP]])
1494-
; CHECK-NEXT: [[R:%.*]] = fcmp ult float [[X]], 0.000000e+00
1495-
; CHECK-NEXT: ret i1 [[R]]
1493+
; CHECK-NEXT: ret i1 false
14961494
;
14971495
%assume.cmp = fcmp oge float %x, 0.0
14981496
call void @llvm.assume(i1 %assume.cmp)

0 commit comments

Comments
 (0)