Skip to content

Commit 51e157f

Browse files
authored
ValueTracking: Handle minimumnum/maximumnum in canCreateUndefOrPoison (#138729)
1 parent deebf47 commit 51e157f

File tree

2 files changed

+8
-6
lines changed

2 files changed

+8
-6
lines changed

llvm/lib/Analysis/ValueTracking.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7723,6 +7723,8 @@ static bool canCreateUndefOrPoison(const Operator *Op, UndefPoisonKind Kind,
77237723
case Intrinsic::maxnum:
77247724
case Intrinsic::minimum:
77257725
case Intrinsic::maximum:
7726+
case Intrinsic::minimumnum:
7727+
case Intrinsic::maximumnum:
77267728
case Intrinsic::is_fpclass:
77277729
case Intrinsic::ldexp:
77287730
case Intrinsic::frexp:

llvm/test/Transforms/InstCombine/freeze-fp-ops.ll

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -508,9 +508,9 @@ define float @freeze_maximum(float %arg0, float noundef %arg1) {
508508

509509
define float @freeze_minimumnum(float %arg0, float noundef %arg1) {
510510
; CHECK-LABEL: @freeze_minimumnum(
511-
; CHECK-NEXT: [[OP:%.*]] = call float @llvm.minimumnum.f32(float [[ARG0:%.*]], float noundef [[ARG1:%.*]])
512-
; CHECK-NEXT: [[FREEZE:%.*]] = freeze float [[OP]]
513-
; CHECK-NEXT: ret float [[FREEZE]]
511+
; CHECK-NEXT: [[FREEZE:%.*]] = freeze float [[OP:%.*]]
512+
; CHECK-NEXT: [[OP1:%.*]] = call float @llvm.minimumnum.f32(float [[FREEZE]], float noundef [[ARG1:%.*]])
513+
; CHECK-NEXT: ret float [[OP1]]
514514
;
515515
%op = call float @llvm.minimumnum.f32(float %arg0, float noundef %arg1)
516516
%freeze = freeze float %op
@@ -519,9 +519,9 @@ define float @freeze_minimumnum(float %arg0, float noundef %arg1) {
519519

520520
define float @freeze_maximumnum(float %arg0, float noundef %arg1) {
521521
; CHECK-LABEL: @freeze_maximumnum(
522-
; CHECK-NEXT: [[OP:%.*]] = call float @llvm.maximumnum.f32(float [[ARG0:%.*]], float noundef [[ARG1:%.*]])
523-
; CHECK-NEXT: [[FREEZE:%.*]] = freeze float [[OP]]
524-
; CHECK-NEXT: ret float [[FREEZE]]
522+
; CHECK-NEXT: [[FREEZE:%.*]] = freeze float [[OP:%.*]]
523+
; CHECK-NEXT: [[OP1:%.*]] = call float @llvm.maximumnum.f32(float [[FREEZE]], float noundef [[ARG1:%.*]])
524+
; CHECK-NEXT: ret float [[OP1]]
525525
;
526526
%op = call float @llvm.maximumnum.f32(float %arg0, float noundef %arg1)
527527
%freeze = freeze float %op

0 commit comments

Comments
 (0)