LLVM 20.0.0git
|
Namespaces | |
namespace | detail |
Classes | |
struct | bind_ty |
struct | class_match |
struct | match_combine_or |
Matching combinators. More... | |
struct | Recipe_match |
struct | specific_intval |
Match a specified integer value or vector of all elements of that value. More... | |
struct | specificval_ty |
Match a specified VPValue. More... | |
Typedefs | |
template<typename Op0_t , unsigned Opcode, typename... RecipeTys> | |
using | UnaryRecipe_match = Recipe_match< std::tuple< Op0_t >, Opcode, false, RecipeTys... > |
template<typename Op0_t , unsigned Opcode> | |
using | UnaryVPInstruction_match = UnaryRecipe_match< Op0_t, Opcode, VPInstruction > |
template<typename Op0_t , unsigned Opcode> | |
using | AllUnaryRecipe_match = UnaryRecipe_match< Op0_t, Opcode, VPWidenRecipe, VPReplicateRecipe, VPWidenCastRecipe, VPInstruction > |
template<typename Op0_t , typename Op1_t , unsigned Opcode, bool Commutative, typename... RecipeTys> | |
using | BinaryRecipe_match = Recipe_match< std::tuple< Op0_t, Op1_t >, Opcode, Commutative, RecipeTys... > |
template<typename Op0_t , typename Op1_t , unsigned Opcode> | |
using | BinaryVPInstruction_match = BinaryRecipe_match< Op0_t, Op1_t, Opcode, false, VPInstruction > |
template<typename Op0_t , typename Op1_t , unsigned Opcode, bool Commutative = false> | |
using | AllBinaryRecipe_match = BinaryRecipe_match< Op0_t, Op1_t, Opcode, Commutative, VPWidenRecipe, VPReplicateRecipe, VPWidenCastRecipe, VPInstruction > |
template<typename Op0_t , typename Op1_t > | |
using | GEPLikeRecipe_match = BinaryRecipe_match< Op0_t, Op1_t, Instruction::GetElementPtr, false, VPWidenRecipe, VPReplicateRecipe, VPWidenGEPRecipe, VPInstruction > |
template<typename Op0_t , typename Op1_t , typename Op2_t , unsigned Opcode> | |
using | AllTernaryRecipe_match = Recipe_match< std::tuple< Op0_t, Op1_t, Op2_t >, Opcode, false, VPReplicateRecipe, VPInstruction, VPWidenSelectRecipe > |
using | VPCanonicalIVPHI_match = Recipe_match< std::tuple<>, 0, false, VPCanonicalIVPHIRecipe > |
template<typename Op0_t , typename Op1_t > | |
using | VPScalarIVSteps_match = Recipe_match< std::tuple< Op0_t, Op1_t >, 0, false, VPScalarIVStepsRecipe > |
template<typename Op0_t , typename Op1_t , typename Op2_t > | |
using | VPDerivedIV_match = Recipe_match< std::tuple< Op0_t, Op1_t, Op2_t >, 0, false, VPDerivedIVRecipe > |
Functions | |
template<typename Val , typename Pattern > | |
bool | match (Val *V, const Pattern &P) |
template<typename Pattern > | |
bool | match (VPUser *U, const Pattern &P) |
class_match< VPValue > | m_VPValue () |
Match an arbitrary VPValue and ignore it. | |
specificval_ty | m_Specific (const VPValue *VPV) |
specific_intval< 0 > | m_SpecificInt (uint64_t V) |
specific_intval< 1 > | m_False () |
specific_intval< 1 > | m_True () |
template<typename LTy , typename RTy > | |
match_combine_or< LTy, RTy > | m_CombineOr (const LTy &L, const RTy &R) |
bind_ty< VPValue > | m_VPValue (VPValue *&V) |
Match a VPValue, capturing it if we match. | |
template<unsigned Opcode, typename Op0_t > | |
UnaryVPInstruction_match< Op0_t, Opcode > | m_VPInstruction (const Op0_t &Op0) |
template<unsigned Opcode, typename Op0_t , typename Op1_t > | |
BinaryVPInstruction_match< Op0_t, Op1_t, Opcode > | m_VPInstruction (const Op0_t &Op0, const Op1_t &Op1) |
template<typename Op0_t > | |
UnaryVPInstruction_match< Op0_t, VPInstruction::Not > | m_Not (const Op0_t &Op0) |
template<typename Op0_t > | |
UnaryVPInstruction_match< Op0_t, VPInstruction::BranchOnCond > | m_BranchOnCond (const Op0_t &Op0) |
template<typename Op0_t , typename Op1_t > | |
BinaryVPInstruction_match< Op0_t, Op1_t, VPInstruction::ActiveLaneMask > | m_ActiveLaneMask (const Op0_t &Op0, const Op1_t &Op1) |
template<typename Op0_t , typename Op1_t > | |
BinaryVPInstruction_match< Op0_t, Op1_t, VPInstruction::BranchOnCount > | m_BranchOnCount (const Op0_t &Op0, const Op1_t &Op1) |
template<unsigned Opcode, typename Op0_t > | |
AllUnaryRecipe_match< Op0_t, Opcode > | m_Unary (const Op0_t &Op0) |
template<typename Op0_t > | |
AllUnaryRecipe_match< Op0_t, Instruction::Trunc > | m_Trunc (const Op0_t &Op0) |
template<typename Op0_t > | |
AllUnaryRecipe_match< Op0_t, Instruction::ZExt > | m_ZExt (const Op0_t &Op0) |
template<typename Op0_t > | |
AllUnaryRecipe_match< Op0_t, Instruction::SExt > | m_SExt (const Op0_t &Op0) |
template<typename Op0_t > | |
match_combine_or< AllUnaryRecipe_match< Op0_t, Instruction::ZExt >, AllUnaryRecipe_match< Op0_t, Instruction::SExt > > | m_ZExtOrSExt (const Op0_t &Op0) |
template<unsigned Opcode, typename Op0_t , typename Op1_t , bool Commutative = false> | |
AllBinaryRecipe_match< Op0_t, Op1_t, Opcode, Commutative > | m_Binary (const Op0_t &Op0, const Op1_t &Op1) |
template<unsigned Opcode, typename Op0_t , typename Op1_t > | |
AllBinaryRecipe_match< Op0_t, Op1_t, Opcode, true > | m_c_Binary (const Op0_t &Op0, const Op1_t &Op1) |
template<typename Op0_t , typename Op1_t > | |
AllBinaryRecipe_match< Op0_t, Op1_t, Instruction::Mul > | m_Mul (const Op0_t &Op0, const Op1_t &Op1) |
template<typename Op0_t , typename Op1_t > | |
AllBinaryRecipe_match< Op0_t, Op1_t, Instruction::Mul, true > | m_c_Mul (const Op0_t &Op0, const Op1_t &Op1) |
template<typename Op0_t , typename Op1_t , bool Commutative = false> | |
AllBinaryRecipe_match< Op0_t, Op1_t, Instruction::Or, Commutative > | m_BinaryOr (const Op0_t &Op0, const Op1_t &Op1) |
Match a binary OR operation. | |
template<typename Op0_t , typename Op1_t > | |
AllBinaryRecipe_match< Op0_t, Op1_t, Instruction::Or, true > | m_c_BinaryOr (const Op0_t &Op0, const Op1_t &Op1) |
template<typename Op0_t , typename Op1_t > | |
GEPLikeRecipe_match< Op0_t, Op1_t > | m_GetElementPtr (const Op0_t &Op0, const Op1_t &Op1) |
template<typename Op0_t , typename Op1_t , typename Op2_t > | |
AllTernaryRecipe_match< Op0_t, Op1_t, Op2_t, Instruction::Select > | m_Select (const Op0_t &Op0, const Op1_t &Op1, const Op2_t &Op2) |
template<typename Op0_t , typename Op1_t > | |
match_combine_or< BinaryVPInstruction_match< Op0_t, Op1_t, VPInstruction::LogicalAnd >, AllTernaryRecipe_match< Op0_t, Op1_t, specific_intval< 1 >, Instruction::Select > > | m_LogicalAnd (const Op0_t &Op0, const Op1_t &Op1) |
template<typename Op0_t , typename Op1_t > | |
AllTernaryRecipe_match< Op0_t, specific_intval< 1 >, Op1_t, Instruction::Select > | m_LogicalOr (const Op0_t &Op0, const Op1_t &Op1) |
VPCanonicalIVPHI_match | m_CanonicalIV () |
template<typename Op0_t , typename Op1_t > | |
VPScalarIVSteps_match< Op0_t, Op1_t > | m_ScalarIVSteps (const Op0_t &Op0, const Op1_t &Op1) |
template<typename Op0_t , typename Op1_t , typename Op2_t > | |
VPDerivedIV_match< Op0_t, Op1_t, Op2_t > | m_DerivedIV (const Op0_t &Op0, const Op1_t &Op1, const Op2_t &Op2) |
using llvm::VPlanPatternMatch::AllBinaryRecipe_match = typedef BinaryRecipe_match<Op0_t, Op1_t, Opcode, Commutative, VPWidenRecipe, VPReplicateRecipe, VPWidenCastRecipe, VPInstruction> |
Definition at line 238 of file VPlanPatternMatch.h.
using llvm::VPlanPatternMatch::AllTernaryRecipe_match = typedef Recipe_match<std::tuple<Op0_t, Op1_t, Op2_t>, Opcode, false, VPReplicateRecipe, VPInstruction, VPWidenSelectRecipe> |
Definition at line 362 of file VPlanPatternMatch.h.
using llvm::VPlanPatternMatch::AllUnaryRecipe_match = typedef UnaryRecipe_match<Op0_t, Opcode, VPWidenRecipe, VPReplicateRecipe, VPWidenCastRecipe, VPInstruction> |
Definition at line 222 of file VPlanPatternMatch.h.
using llvm::VPlanPatternMatch::BinaryRecipe_match = typedef Recipe_match<std::tuple<Op0_t, Op1_t>, Opcode, Commutative, RecipeTys...> |
Definition at line 228 of file VPlanPatternMatch.h.
using llvm::VPlanPatternMatch::BinaryVPInstruction_match = typedef BinaryRecipe_match<Op0_t, Op1_t, Opcode, false, VPInstruction> |
Definition at line 232 of file VPlanPatternMatch.h.
using llvm::VPlanPatternMatch::GEPLikeRecipe_match = typedef BinaryRecipe_match<Op0_t, Op1_t, Instruction::GetElementPtr, false, VPWidenRecipe, VPReplicateRecipe, VPWidenGEPRecipe, VPInstruction> |
Definition at line 350 of file VPlanPatternMatch.h.
using llvm::VPlanPatternMatch::UnaryRecipe_match = typedef Recipe_match<std::tuple<Op0_t>, Opcode, false, RecipeTys...> |
Definition at line 214 of file VPlanPatternMatch.h.
using llvm::VPlanPatternMatch::UnaryVPInstruction_match = typedef UnaryRecipe_match<Op0_t, Opcode, VPInstruction> |
Definition at line 218 of file VPlanPatternMatch.h.
using llvm::VPlanPatternMatch::VPCanonicalIVPHI_match = typedef Recipe_match<std::tuple<>, 0, false, VPCanonicalIVPHIRecipe> |
Definition at line 391 of file VPlanPatternMatch.h.
using llvm::VPlanPatternMatch::VPDerivedIV_match = typedef Recipe_match<std::tuple<Op0_t, Op1_t, Op2_t>, 0, false, VPDerivedIVRecipe> |
Definition at line 409 of file VPlanPatternMatch.h.
using llvm::VPlanPatternMatch::VPScalarIVSteps_match = typedef Recipe_match<std::tuple<Op0_t, Op1_t>, 0, false, VPScalarIVStepsRecipe> |
Definition at line 399 of file VPlanPatternMatch.h.
|
inline |
Definition at line 268 of file VPlanPatternMatch.h.
|
inline |
Definition at line 309 of file VPlanPatternMatch.h.
|
inline |
Match a binary OR operation.
Note that while conceptually the operands can be matched commutatively, Commutative
defaults to false in line with the IR-based pattern matching infrastructure. Use m_c_BinaryOr for a commutative version of the matcher.
Definition at line 338 of file VPlanPatternMatch.h.
Referenced by m_c_BinaryOr().
|
inline |
Definition at line 262 of file VPlanPatternMatch.h.
Referenced by hasConditionalTerminator().
|
inline |
Definition at line 274 of file VPlanPatternMatch.h.
Referenced by hasConditionalTerminator().
|
inline |
Definition at line 315 of file VPlanPatternMatch.h.
|
inline |
Definition at line 345 of file VPlanPatternMatch.h.
References m_BinaryOr().
|
inline |
Definition at line 328 of file VPlanPatternMatch.h.
|
inline |
Definition at line 394 of file VPlanPatternMatch.h.
|
inline |
Definition at line 122 of file VPlanPatternMatch.h.
Referenced by m_LogicalAnd(), and m_ZExtOrSExt().
|
inline |
Definition at line 414 of file VPlanPatternMatch.h.
|
inline |
Definition at line 101 of file VPlanPatternMatch.h.
Referenced by m_LogicalAnd().
|
inline |
Definition at line 356 of file VPlanPatternMatch.h.
|
inline |
Definition at line 378 of file VPlanPatternMatch.h.
References m_CombineOr(), m_False(), and m_Select().
|
inline |
Definition at line 387 of file VPlanPatternMatch.h.
References m_Select(), and m_True().
|
inline |
Definition at line 321 of file VPlanPatternMatch.h.
|
inline |
Definition at line 256 of file VPlanPatternMatch.h.
|
inline |
Definition at line 403 of file VPlanPatternMatch.h.
|
inline |
Definition at line 368 of file VPlanPatternMatch.h.
Referenced by m_LogicalAnd(), and m_LogicalOr().
|
inline |
Definition at line 295 of file VPlanPatternMatch.h.
Referenced by m_ZExtOrSExt().
|
inline |
Definition at line 67 of file VPlanPatternMatch.h.
|
inline |
Definition at line 97 of file VPlanPatternMatch.h.
|
inline |
Definition at line 103 of file VPlanPatternMatch.h.
Referenced by m_LogicalOr().
|
inline |
Definition at line 285 of file VPlanPatternMatch.h.
|
inline |
Definition at line 279 of file VPlanPatternMatch.h.
|
inline |
Definition at line 244 of file VPlanPatternMatch.h.
|
inline |
Definition at line 250 of file VPlanPatternMatch.h.
|
inline |
Match an arbitrary VPValue and ignore it.
Definition at line 42 of file VPlanPatternMatch.h.
Referenced by hasConditionalTerminator().
Match a VPValue, capturing it if we match.
Definition at line 127 of file VPlanPatternMatch.h.
|
inline |
Definition at line 290 of file VPlanPatternMatch.h.
Referenced by m_ZExtOrSExt().
|
inline |
Definition at line 302 of file VPlanPatternMatch.h.
References m_CombineOr(), m_SExt(), and m_ZExt().