Skip to content

Commit da077a5

Browse files
committed
InstSimplify: Handle log10(exp10(x))
Copied from the exp/exp2 cases https://reviews.llvm.org/D157894
1 parent 097971b commit da077a5

File tree

2 files changed

+6
-9
lines changed

2 files changed

+6
-9
lines changed

llvm/lib/Analysis/InstructionSimplify.cpp

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6170,8 +6170,11 @@ static Value *simplifyUnaryIntrinsic(Function *F, Value *Op0,
61706170
break;
61716171
case Intrinsic::log10:
61726172
// log10(pow(10.0, x)) -> x
6173+
// log10(exp10(x)) -> x
61736174
if (Q.CxtI->hasAllowReassoc() &&
6174-
match(Op0, m_Intrinsic<Intrinsic::pow>(m_SpecificFP(10.0), m_Value(X))))
6175+
(match(Op0, m_Intrinsic<Intrinsic::exp10>(m_Value(X))) ||
6176+
match(Op0,
6177+
m_Intrinsic<Intrinsic::pow>(m_SpecificFP(10.0), m_Value(X)))))
61756178
return X;
61766179
break;
61776180
case Intrinsic::experimental_vector_reverse:

llvm/test/Transforms/InstSimplify/log-exp-intrinsic.ll

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -194,9 +194,7 @@ define double @exp2_log2_exp2_log2_reassoc(double %a) {
194194

195195
define double @log10_reassoc_exp10_strict(double %a) {
196196
; CHECK-LABEL: @log10_reassoc_exp10_strict(
197-
; CHECK-NEXT: [[TMP1:%.*]] = call double @llvm.exp10.f64(double [[A:%.*]])
198-
; CHECK-NEXT: [[TMP2:%.*]] = call reassoc double @llvm.log10.f64(double [[TMP1]])
199-
; CHECK-NEXT: ret double [[TMP2]]
197+
; CHECK-NEXT: ret double [[A:%.*]]
200198
;
201199
%1 = call double @llvm.exp10.f64(double %a)
202200
%2 = call reassoc double @llvm.log10.f64(double %1)
@@ -231,11 +229,7 @@ define double @log10_exp10_log10_exp10(double %a) {
231229

232230
define double @log10_exp10_log10_exp10_reassoc(double %a) {
233231
; CHECK-LABEL: @log10_exp10_log10_exp10_reassoc(
234-
; CHECK-NEXT: [[TMP1:%.*]] = call double @llvm.exp10.f64(double [[A:%.*]])
235-
; CHECK-NEXT: [[TMP2:%.*]] = call reassoc double @llvm.log10.f64(double [[TMP1]])
236-
; CHECK-NEXT: [[TMP3:%.*]] = call double @llvm.exp10.f64(double [[TMP2]])
237-
; CHECK-NEXT: [[TMP4:%.*]] = call reassoc double @llvm.log10.f64(double [[TMP3]])
238-
; CHECK-NEXT: ret double [[TMP4]]
232+
; CHECK-NEXT: ret double [[A:%.*]]
239233
;
240234
%1 = call double @llvm.exp10.f64(double %a)
241235
%2 = call reassoc double @llvm.log10.f64(double %1)

0 commit comments

Comments
 (0)