From: Craig Topper Date: Fri, 7 Jul 2017 19:56:21 +0000 (+0000) Subject: [PatternMatch] Implement m_AnyZero using Constant::isZeroValue instead of ORing toget... X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=5a06c2264b2096224dc0786e2e6d33f2378c3b4c;p=platform%2Fupstream%2Fllvm.git [PatternMatch] Implement m_AnyZero using Constant::isZeroValue instead of ORing together isNullValue and isNegativeZeroValue. NFCI llvm-svn: 307432 --- diff --git a/llvm/include/llvm/IR/PatternMatch.h b/llvm/include/llvm/IR/PatternMatch.h index 3d15f9d..4b03063 100644 --- a/llvm/include/llvm/IR/PatternMatch.h +++ b/llvm/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 bool match(ITy *V) { + if (const auto *C = dyn_cast(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 m_AnyZero() { - return m_CombineOr(m_Zero(), m_NegZero()); -} +inline match_any_zero m_AnyZero() { return match_any_zero(); } struct match_nan { template 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 {