aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Analysis/ValueTracking.cpp
diff options
context:
space:
mode:
authorSanjay Patel <spatel@rotateright.com>2021-03-08 17:19:04 -0500
committerSanjay Patel <spatel@rotateright.com>2021-03-08 17:38:22 -0500
commit34d0d644ffa4a3282a03f6e47b5f420a09ff9848 (patch)
tree6808f8ce67118db180b39a1b3cc859cef830b795 /llvm/lib/Analysis/ValueTracking.cpp
parentf7d73a6b9e8d6aad2039be1f6f42c9b3e012677f (diff)
downloadllvm-34d0d644ffa4a3282a03f6e47b5f420a09ff9848.zip
llvm-34d0d644ffa4a3282a03f6e47b5f420a09ff9848.tar.gz
llvm-34d0d644ffa4a3282a03f6e47b5f420a09ff9848.tar.bz2
[ValueTracking] move/add helper to get inverse min/max; NFC
We will need to this functionality to improve min/max folds in instcombine when we canonicalize to intrinsics.
Diffstat (limited to 'llvm/lib/Analysis/ValueTracking.cpp')
-rw-r--r--llvm/lib/Analysis/ValueTracking.cpp10
1 files changed, 10 insertions, 0 deletions
diff --git a/llvm/lib/Analysis/ValueTracking.cpp b/llvm/lib/Analysis/ValueTracking.cpp
index 80f03d3..0a50718 100644
--- a/llvm/lib/Analysis/ValueTracking.cpp
+++ b/llvm/lib/Analysis/ValueTracking.cpp
@@ -5992,6 +5992,16 @@ SelectPatternFlavor llvm::getInverseMinMaxFlavor(SelectPatternFlavor SPF) {
llvm_unreachable("unhandled!");
}
+Intrinsic::ID llvm::getInverseMinMaxIntrinsic(Intrinsic::ID MinMaxID) {
+ switch (MinMaxID) {
+ case Intrinsic::smax: return Intrinsic::smin;
+ case Intrinsic::smin: return Intrinsic::smax;
+ case Intrinsic::umax: return Intrinsic::umin;
+ case Intrinsic::umin: return Intrinsic::umax;
+ default: llvm_unreachable("Unexpected intrinsic");
+ }
+}
+
CmpInst::Predicate llvm::getInverseMinMaxPred(SelectPatternFlavor SPF) {
return getMinMaxPred(getInverseMinMaxFlavor(SPF));
}