[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