[llvm] 5dcd666 - InstSimplify: Handle exp10(log10(x)) -> x

Matt Arsenault via llvm-commits llvm-commits at lists.llvm.org
Sat Sep 2 06:24:59 PDT 2023


Author: Matt Arsenault
Date: 2023-09-02T09:21:47-04:00
New Revision: 5dcd6669ffdd03ca0adae5eda747ef68ed188d24

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

LOG: InstSimplify: Handle exp10(log10(x)) -> x

Copy from exp/exp2 case.

https://reviews.llvm.org/D157894

Added: 
    

Modified: 
    llvm/lib/Analysis/InstructionSimplify.cpp
    llvm/test/Transforms/InstSimplify/log-exp-intrinsic.ll

Removed: 
    


################################################################################
diff  --git a/llvm/lib/Analysis/InstructionSimplify.cpp b/llvm/lib/Analysis/InstructionSimplify.cpp
index 15a802c85c373d..47a4991e4ef1cc 100644
--- a/llvm/lib/Analysis/InstructionSimplify.cpp
+++ b/llvm/lib/Analysis/InstructionSimplify.cpp
@@ -6154,6 +6154,12 @@ static Value *simplifyUnaryIntrinsic(Function *F, Value *Op0,
         match(Op0, m_Intrinsic<Intrinsic::log2>(m_Value(X))))
       return X;
     break;
+  case Intrinsic::exp10:
+    // exp10(log10(x)) -> x
+    if (Q.CxtI->hasAllowReassoc() &&
+        match(Op0, m_Intrinsic<Intrinsic::log10>(m_Value(X))))
+      return X;
+    break;
   case Intrinsic::log:
     // log(exp(x)) -> x
     if (Q.CxtI->hasAllowReassoc() &&

diff  --git a/llvm/test/Transforms/InstSimplify/log-exp-intrinsic.ll b/llvm/test/Transforms/InstSimplify/log-exp-intrinsic.ll
index 9793f2299443c6..d29f01a4ca4219 100644
--- a/llvm/test/Transforms/InstSimplify/log-exp-intrinsic.ll
+++ b/llvm/test/Transforms/InstSimplify/log-exp-intrinsic.ll
@@ -240,9 +240,7 @@ define double @log10_exp10_log10_exp10_reassoc(double %a) {
 
 define double @exp10_reassoc_log10_strict(double %a) {
 ; CHECK-LABEL: @exp10_reassoc_log10_strict(
-; CHECK-NEXT:    [[TMP1:%.*]] = call double @llvm.log10.f64(double [[A:%.*]])
-; CHECK-NEXT:    [[TMP2:%.*]] = call reassoc double @llvm.exp10.f64(double [[TMP1]])
-; CHECK-NEXT:    ret double [[TMP2]]
+; CHECK-NEXT:    ret double [[A:%.*]]
 ;
   %1 = call double @llvm.log10.f64(double %a)
   %2 = call reassoc double @llvm.exp10.f64(double %1)
@@ -277,11 +275,7 @@ define double @exp10_log10_exp10_log10(double %a) {
 
 define double @exp10_log10_exp10_log10_reassoc(double %a) {
 ; CHECK-LABEL: @exp10_log10_exp10_log10_reassoc(
-; CHECK-NEXT:    [[TMP1:%.*]] = call double @llvm.log10.f64(double [[A:%.*]])
-; CHECK-NEXT:    [[TMP2:%.*]] = call reassoc double @llvm.exp10.f64(double [[TMP1]])
-; CHECK-NEXT:    [[TMP3:%.*]] = call double @llvm.log10.f64(double [[TMP2]])
-; CHECK-NEXT:    [[TMP4:%.*]] = call reassoc double @llvm.exp10.f64(double [[TMP3]])
-; CHECK-NEXT:    ret double [[TMP4]]
+; CHECK-NEXT:    ret double [[A:%.*]]
 ;
   %1 = call double @llvm.log10.f64(double %a)
   %2 = call reassoc double @llvm.exp10.f64(double %1)


        


More information about the llvm-commits mailing list