[llvm] d3c46db - ValueTracking: exp10 does not introduce poison

Matt Arsenault via llvm-commits llvm-commits at lists.llvm.org
Fri Sep 1 17:27:21 PDT 2023


Author: Matt Arsenault
Date: 2023-09-01T20:23:45-04:00
New Revision: d3c46db494de331fb49ea7aaeb1ab16c0259d539

URL: https://github.com/llvm/llvm-project/commit/d3c46db494de331fb49ea7aaeb1ab16c0259d539
DIFF: https://github.com/llvm/llvm-project/commit/d3c46db494de331fb49ea7aaeb1ab16c0259d539.diff

LOG: ValueTracking: exp10 does not introduce poison

Added: 
    

Modified: 
    llvm/lib/Analysis/ValueTracking.cpp
    llvm/test/Transforms/InstCombine/freeze-fp-ops.ll

Removed: 
    


################################################################################
diff  --git a/llvm/lib/Analysis/ValueTracking.cpp b/llvm/lib/Analysis/ValueTracking.cpp
index bf5adbbc217ed7f..79198b09d310b80 100644
--- a/llvm/lib/Analysis/ValueTracking.cpp
+++ b/llvm/lib/Analysis/ValueTracking.cpp
@@ -6606,6 +6606,7 @@ static bool canCreateUndefOrPoison(const Operator *Op, bool PoisonOnly,
       case Intrinsic::log2:
       case Intrinsic::exp:
       case Intrinsic::exp2:
+      case Intrinsic::exp10:
       case Intrinsic::fabs:
       case Intrinsic::copysign:
       case Intrinsic::floor:

diff  --git a/llvm/test/Transforms/InstCombine/freeze-fp-ops.ll b/llvm/test/Transforms/InstCombine/freeze-fp-ops.ll
index d3525b716ec71fc..9fb69015a8f7dca 100644
--- a/llvm/test/Transforms/InstCombine/freeze-fp-ops.ll
+++ b/llvm/test/Transforms/InstCombine/freeze-fp-ops.ll
@@ -246,6 +246,17 @@ define float @freeze_exp2(float %arg) {
   ret float %freeze
 }
 
+define float @freeze_exp10(float %arg) {
+; CHECK-LABEL: @freeze_exp10(
+; CHECK-NEXT:    [[ARG_FR:%.*]] = freeze float [[ARG:%.*]]
+; CHECK-NEXT:    [[OP:%.*]] = call float @llvm.exp10.f32(float [[ARG_FR]])
+; CHECK-NEXT:    ret float [[OP]]
+;
+  %op = call float @llvm.exp10.f32(float %arg)
+  %freeze = freeze float %op
+  ret float %freeze
+}
+
 define float @freeze_fabs(float %arg) {
 ; CHECK-LABEL: @freeze_fabs(
 ; CHECK-NEXT:    [[ARG_FR:%.*]] = freeze float [[ARG:%.*]]
@@ -577,6 +588,7 @@ declare float @llvm.log10.f32(float)
 declare float @llvm.log2.f32(float)
 declare float @llvm.exp.f32(float)
 declare float @llvm.exp2.f32(float)
+declare float @llvm.exp10.f32(float)
 declare float @llvm.fabs.f32(float)
 declare float @llvm.copysign.f32(float, float)
 declare float @llvm.floor.f32(float)


        


More information about the llvm-commits mailing list