diff options
author | Craig Topper <craig.topper@intel.com> | 2017-07-07 19:56:21 +0000 |
---|---|---|
committer | Craig Topper <craig.topper@intel.com> | 2017-07-07 19:56:21 +0000 |
commit | 7383d9c9fdb525d0f4ee600ecf3f3605c5e94227 (patch) | |
tree | 48b887d72ba9eccfcd34264004905f94cfb6a752 | |
parent | caa219e9a883606c37f8e75ef025e5b1e24a3259 (diff) |
[PatternMatch] Implement m_AnyZero using Constant::isZeroValue instead of ORing together isNullValue and isNegativeZeroValue. NFCI
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@307432 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | include/llvm/IR/PatternMatch.h | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/include/llvm/IR/PatternMatch.h b/include/llvm/IR/PatternMatch.h index 3d15f9d0bb0..4b03063a6a9 100644 --- a/include/llvm/IR/PatternMatch.h +++ b/include/llvm/IR/PatternMatch.h @@ -158,12 +158,18 @@ struct match_neg_zero { /// zero inline match_neg_zero m_NegZero() { return match_neg_zero(); } +struct match_any_zero { + template <typename ITy> bool match(ITy *V) { + if (const auto *C = dyn_cast<Constant>(V)) + return C->isZeroValue(); + return false; + } +}; + /// \brief - Match an arbitrary zero/null constant. This includes /// zero_initializer for vectors and ConstantPointerNull for pointers. For /// floating point constants, this will match negative zero and positive zero -inline match_combine_or<match_zero, match_neg_zero> m_AnyZero() { - return m_CombineOr(m_Zero(), m_NegZero()); -} +inline match_any_zero m_AnyZero() { return match_any_zero(); } struct match_nan { template <typename ITy> bool match(ITy *V) { @@ -195,7 +201,7 @@ struct match_all_ones { } }; -/// \brief Match an integer 1 or a vector with all elements equal to 1. +/// \brief Match an integer or vector with all bits set to true. inline match_all_ones m_AllOnes() { return match_all_ones(); } struct apint_match { |