aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Analysis/AssumptionCache.cpp
diff options
context:
space:
mode:
authorMatt Arsenault <Matthew.Arsenault@amd.com>2023-03-03 15:54:56 -0400
committerMatt Arsenault <arsenm2@gmail.com>2023-03-17 07:39:40 -0400
commitd2404ea6ced5fce9442260bde08a02d607fdd50d (patch)
tree10112a66aa998d638daca32869ca21e2c1187343 /llvm/lib/Analysis/AssumptionCache.cpp
parenta157898ecad6fb4694fed7c1fac40d45f9990bcf (diff)
downloadllvm-d2404ea6ced5fce9442260bde08a02d607fdd50d.zip
llvm-d2404ea6ced5fce9442260bde08a02d607fdd50d.tar.gz
llvm-d2404ea6ced5fce9442260bde08a02d607fdd50d.tar.bz2
Attributor: Assume handling for nofpclass
Diffstat (limited to 'llvm/lib/Analysis/AssumptionCache.cpp')
-rw-r--r--llvm/lib/Analysis/AssumptionCache.cpp13
1 files changed, 12 insertions, 1 deletions
diff --git a/llvm/lib/Analysis/AssumptionCache.cpp b/llvm/lib/Analysis/AssumptionCache.cpp
index 11796ef..b439dc1 100644
--- a/llvm/lib/Analysis/AssumptionCache.cpp
+++ b/llvm/lib/Analysis/AssumptionCache.cpp
@@ -87,7 +87,7 @@ findAffectedValues(CallBase *CI, TargetTransformInfo *TTI,
AddAffected(Cond);
CmpInst::Predicate Pred;
- if (match(Cond, m_ICmp(Pred, m_Value(A), m_Value(B)))) {
+ if (match(Cond, m_Cmp(Pred, m_Value(A), m_Value(B)))) {
AddAffected(A);
AddAffected(B);
@@ -128,7 +128,18 @@ findAffectedValues(CallBase *CI, TargetTransformInfo *TTI,
if (match(A, m_Add(m_Value(X), m_ConstantInt())) &&
match(B, m_ConstantInt()))
AddAffected(X);
+ } else if (CmpInst::isFPPredicate(Pred)) {
+ // fcmp fneg(x), y
+ // fcmp fabs(x), y
+ // fcmp fneg(fabs(x)), y
+ if (match(A, m_FNeg(m_Value(A))))
+ AddAffected(A);
+ if (match(A, m_FAbs(m_Value(A))))
+ AddAffected(A);
}
+ } else if (match(Cond, m_Intrinsic<Intrinsic::is_fpclass>(m_Value(A),
+ m_Value(B)))) {
+ AddAffected(A);
}
if (TTI) {