aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Analysis/ValueTracking.cpp
diff options
context:
space:
mode:
authorYingwei Zheng <dtcxzyw2333@gmail.com>2024-02-23 20:57:56 +0800
committerGitHub <noreply@github.com>2024-02-23 20:57:56 +0800
commit3b70387c5486a057fe0b7d52c79f9decf9c9c95f (patch)
tree25fae4582544d58bdc299f6eae5bbb45ce1c3527 /llvm/lib/Analysis/ValueTracking.cpp
parente09e0d52a03c7141a7d62fb4adf4d9fee32bebb8 (diff)
downloadllvm-3b70387c5486a057fe0b7d52c79f9decf9c9c95f.zip
llvm-3b70387c5486a057fe0b7d52c79f9decf9c9c95f.tar.gz
llvm-3b70387c5486a057fe0b7d52c79f9decf9c9c95f.tar.bz2
[ValueTracking] Handle more integer intrinsics in `propagatesPoison` (#82749)
This patch extends `propagatesPoison` to handle more integer intrinsics. It will turn more logical ands/ors into bitwise ands/ors. See also https://reviews.llvm.org/D99671.
Diffstat (limited to 'llvm/lib/Analysis/ValueTracking.cpp')
-rw-r--r--llvm/lib/Analysis/ValueTracking.cpp15
1 files changed, 15 insertions, 0 deletions
diff --git a/llvm/lib/Analysis/ValueTracking.cpp b/llvm/lib/Analysis/ValueTracking.cpp
index 04f3172..653b3d4 100644
--- a/llvm/lib/Analysis/ValueTracking.cpp
+++ b/llvm/lib/Analysis/ValueTracking.cpp
@@ -7194,6 +7194,21 @@ bool llvm::propagatesPoison(const Use &PoisonOp) {
// corresponding lanes are poison.
return true;
case Intrinsic::ctpop:
+ case Intrinsic::ctlz:
+ case Intrinsic::cttz:
+ case Intrinsic::abs:
+ case Intrinsic::smax:
+ case Intrinsic::smin:
+ case Intrinsic::umax:
+ case Intrinsic::umin:
+ case Intrinsic::bitreverse:
+ case Intrinsic::bswap:
+ case Intrinsic::sadd_sat:
+ case Intrinsic::ssub_sat:
+ case Intrinsic::sshl_sat:
+ case Intrinsic::uadd_sat:
+ case Intrinsic::usub_sat:
+ case Intrinsic::ushl_sat:
return true;
}
}