LLVM: llvm::VPlanPatternMatch Namespace Reference (original) (raw)
Typedefs
template<unsigned Bitwidth = 0>
using
specific_intval = int_pred_ty<is_specific_int, Bitwidth>
template<unsigned Opcode, typename... OpTys>
using
template<unsigned Opcode, typename... OpTys>
using
template<unsigned Opcode, typename... OpTys>
using
template<typename Op0_t, typename Op1_t>
using
template<typename Op0_t, typename Op1_t, typename Op2_t>
using
template<typename Op0_t, typename Op1_t, typename Op2_t>
using
template<typename Op0_t, typename Op1_t>
using
Functions
template<typename Val, typename Pattern>
match (Val *V, const Pattern &P)
template<typename Pattern>
match (VPUser *U, const Pattern &P)
template<typename Pattern>
match (VPSingleDefRecipe *R, const Pattern &P)
template<typename Val = VPUser, typename Pattern>
VPMatchFunctor< Val, Pattern >
A match functor that can be used as a UnaryPredicate in functional algorithms like all_of.
m_VPValue ()
Match an arbitrary VPValue and ignore it.
m_Specific (const VPValue *VPV)
m_Deferred (VPValue *const &V)
Like m_Specific(), but works if the specific value to match is determined as part of the same match() expression.
specific_intval< 0 >
specific_intval< 1 >
m_False ()
specific_intval< 1 >
m_True ()
m_AllOnes ()
Match an integer or vector with all bits set.
m_ZeroInt ()
Match an integer 0 or a vector with all elements equal to 0.
m_One ()
Match an integer 1 or a vector with all elements equal to 1.
Match a plain integer constant no wider than 64-bits, capturing it if we match.
template<typename LTy, typename RTy>
match_combine_or< LTy, RTy >
m_CombineOr (const LTy &L, const RTy &R)
Combine two pattern matchers matching L || R.
template<typename LTy, typename RTy>
match_combine_and< LTy, RTy >
m_CombineAnd (const LTy &L, const RTy &R)
Combine two pattern matchers matching L && R.
Match a VPValue, capturing it if we match.
m_VPInstruction (VPInstruction *&V)
Match a VPInstruction, capturing if we match.
template<unsigned Opcode, typename... OpTys>
VPInstruction_match< Opcode, OpTys... >
m_VPInstruction (const OpTys &...Ops)
VPInstruction_match< VPInstruction::BuildVector >
BuildVector is matches only its opcode, w/o matching its operands as the number of operands is not fixed.
template<typename Op0_t>
VPInstruction_match< Instruction::Freeze, Op0_t >
VPInstruction_match< VPInstruction::BranchOnCond >
template<typename Op0_t>
VPInstruction_match< VPInstruction::BranchOnCond, Op0_t >
m_BranchOnCond (const Op0_t &Op0)
template<typename Op0_t>
VPInstruction_match< VPInstruction::Broadcast, Op0_t >
m_Broadcast (const Op0_t &Op0)
template<typename Op0_t>
VPInstruction_match< VPInstruction::ExplicitVectorLength, Op0_t >
template<typename Op0_t>
VPInstruction_match< VPInstruction::ExtractLastLane, Op0_t >
m_ExtractLastLane (const Op0_t &Op0)
template<typename Op0_t, typename Op1_t>
VPInstruction_match< Instruction::ExtractElement, Op0_t, Op1_t >
m_ExtractElement (const Op0_t &Op0, const Op1_t &Op1)
template<typename Op0_t, typename Op1_t>
VPInstruction_match< VPInstruction::ExtractLane, Op0_t, Op1_t >
m_ExtractLane (const Op0_t &Op0, const Op1_t &Op1)
template<typename Op0_t>
VPInstruction_match< VPInstruction::ExtractLastPart, Op0_t >
m_ExtractLastPart (const Op0_t &Op0)
template<typename Op0_t>
VPInstruction_match< VPInstruction::ExtractLastLane, VPInstruction_match< VPInstruction::ExtractLastPart, Op0_t > >
m_ExtractLastLaneOfLastPart (const Op0_t &Op0)
template<typename Op0_t>
VPInstruction_match< VPInstruction::ExtractPenultimateElement, Op0_t >
m_ExtractPenultimateElement (const Op0_t &Op0)
template<typename Op0_t, typename Op1_t, typename Op2_t>
VPInstruction_match< VPInstruction::ActiveLaneMask, Op0_t, Op1_t, Op2_t >
m_ActiveLaneMask (const Op0_t &Op0, const Op1_t &Op1, const Op2_t &Op2)
VPInstruction_match< VPInstruction::BranchOnCount >
template<typename Op0_t, typename Op1_t>
VPInstruction_match< VPInstruction::BranchOnCount, Op0_t, Op1_t >
m_BranchOnCount (const Op0_t &Op0, const Op1_t &Op1)
VPInstruction_match< VPInstruction::AnyOf >
m_AnyOf ()
template<typename Op0_t>
VPInstruction_match< VPInstruction::AnyOf, Op0_t >
template<typename Op0_t>
VPInstruction_match< VPInstruction::FirstActiveLane, Op0_t >
m_FirstActiveLane (const Op0_t &Op0)
template<typename Op0_t>
VPInstruction_match< VPInstruction::LastActiveLane, Op0_t >
m_LastActiveLane (const Op0_t &Op0)
VPInstruction_match< VPInstruction::StepVector >
m_StepVector ()
template<unsigned Opcode, typename Op0_t>
AllRecipe_match< Opcode, Op0_t >
template<typename Op0_t>
AllRecipe_match< Instruction::Trunc, Op0_t >
template<typename Op0_t>
match_combine_or< AllRecipe_match< Instruction::Trunc, Op0_t >, Op0_t >
m_TruncOrSelf (const Op0_t &Op0)
template<typename Op0_t>
AllRecipe_match< Instruction::ZExt, Op0_t >
template<typename Op0_t>
AllRecipe_match< Instruction::SExt, Op0_t >
template<typename Op0_t>
match_combine_or< AllRecipe_match< Instruction::ZExt, Op0_t >, AllRecipe_match< Instruction::SExt, Op0_t > >
m_ZExtOrSExt (const Op0_t &Op0)
template<typename Op0_t>
match_combine_or< AllRecipe_match< Instruction::ZExt, Op0_t >, Op0_t >
m_ZExtOrSelf (const Op0_t &Op0)
template<unsigned Opcode, typename Op0_t, typename Op1_t>
AllRecipe_match< Opcode, Op0_t, Op1_t >
m_Binary (const Op0_t &Op0, const Op1_t &Op1)
template<unsigned Opcode, typename Op0_t, typename Op1_t>
AllRecipe_commutative_match< Opcode, Op0_t, Op1_t >
m_c_Binary (const Op0_t &Op0, const Op1_t &Op1)
template<typename Op0_t, typename Op1_t>
AllRecipe_match< Instruction::Add, Op0_t, Op1_t >
m_Add (const Op0_t &Op0, const Op1_t &Op1)
template<typename Op0_t, typename Op1_t>
AllRecipe_commutative_match< Instruction::Add, Op0_t, Op1_t >
m_c_Add (const Op0_t &Op0, const Op1_t &Op1)
template<typename Op0_t, typename Op1_t>
AllRecipe_match< Instruction::Sub, Op0_t, Op1_t >
m_Sub (const Op0_t &Op0, const Op1_t &Op1)
template<typename Op0_t, typename Op1_t>
AllRecipe_match< Instruction::Mul, Op0_t, Op1_t >
m_Mul (const Op0_t &Op0, const Op1_t &Op1)
template<typename Op0_t, typename Op1_t>
AllRecipe_commutative_match< Instruction::Mul, Op0_t, Op1_t >
m_c_Mul (const Op0_t &Op0, const Op1_t &Op1)
template<typename Op0_t, typename Op1_t>
AllRecipe_commutative_match< Instruction::And, Op0_t, Op1_t >
m_c_BinaryAnd (const Op0_t &Op0, const Op1_t &Op1)
Match a binary AND operation.
template<typename Op0_t, typename Op1_t>
AllRecipe_match< Instruction::Or, Op0_t, Op1_t >
m_BinaryOr (const Op0_t &Op0, const Op1_t &Op1)
Match a binary OR operation.
template<typename Op0_t, typename Op1_t>
AllRecipe_commutative_match< Instruction::Or, Op0_t, Op1_t >
m_c_BinaryOr (const Op0_t &Op0, const Op1_t &Op1)
template<typename Op0_t, typename Op1_t>
Cmp_match< Op0_t, Op1_t, Instruction::ICmp >
m_ICmp (const Op0_t &Op0, const Op1_t &Op1)
template<typename Op0_t, typename Op1_t>
Cmp_match< Op0_t, Op1_t, Instruction::ICmp >
m_ICmp (CmpPredicate &Pred, const Op0_t &Op0, const Op1_t &Op1)
template<typename Op0_t, typename Op1_t>
SpecificCmp_match< Op0_t, Op1_t, Instruction::ICmp >
m_SpecificICmp (CmpPredicate MatchPred, const Op0_t &Op0, const Op1_t &Op1)
template<typename Op0_t, typename Op1_t>
Cmp_match< Op0_t, Op1_t, Instruction::ICmp, Instruction::FCmp >
m_Cmp (const Op0_t &Op0, const Op1_t &Op1)
template<typename Op0_t, typename Op1_t>
Cmp_match< Op0_t, Op1_t, Instruction::ICmp, Instruction::FCmp >
m_Cmp (CmpPredicate &Pred, const Op0_t &Op0, const Op1_t &Op1)
template<typename Op0_t, typename Op1_t>
SpecificCmp_match< Op0_t, Op1_t, Instruction::ICmp, Instruction::FCmp >
m_SpecificCmp (CmpPredicate MatchPred, 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>
AllRecipe_match< Instruction::Select, Op0_t, Op1_t, Op2_t >
m_Select (const Op0_t &Op0, const Op1_t &Op1, const Op2_t &Op2)
template<typename Op0_t>
match_combine_or< VPInstruction_match< VPInstruction::Not, Op0_t >, AllRecipe_commutative_match< Instruction::Xor, int_pred_ty< is_all_ones >, Op0_t > >
template<typename Op0_t, typename Op1_t>
match_combine_or< VPInstruction_match< VPInstruction::LogicalAnd, Op0_t, Op1_t >, AllRecipe_match< Instruction::Select, Op0_t, Op1_t, specific_intval< 1 > > >
m_LogicalAnd (const Op0_t &Op0, const Op1_t &Op1)
template<typename Op0_t, typename Op1_t>
AllRecipe_match< Instruction::Select, Op0_t, specific_intval< 1 >, Op1_t >
m_LogicalOr (const Op0_t &Op0, const Op1_t &Op1)
template<typename Op0_t, typename Op1_t, typename Op2_t>
VPScalarIVSteps_match< Op0_t, Op1_t, Op2_t >
m_ScalarIVSteps (const Op0_t &Op0, const Op1_t &Op1, const Op2_t &Op2)
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)
template<typename Addr_t, typename Mask_t>
Load_match< Addr_t, Mask_t >
m_MaskedLoad (const Addr_t &Addr, const Mask_t &Mask)
Match a (possibly reversed) masked load.
template<typename Addr_t, typename Val_t, typename Mask_t>
Store_match< Addr_t, Val_t, Mask_t >
m_MaskedStore (const Addr_t &Addr, const Val_t &Val, const Mask_t &Mask)
Match a (possibly reversed) masked store.
template<typename Op0_t, typename Op1_t>
VectorEndPointerRecipe_match< Op0_t, Op1_t >
m_VecEndPtr (const Op0_t &Op0, const Op1_t &Op1)
template<unsigned OpI, typename Opnd_t>
Argument_match< Opnd_t >
m_Argument (const Opnd_t &Op)
Match a call argument.
template<Intrinsic::ID IntrID>
m_Intrinsic ()
Match intrinsic calls like this: m_IntrinsicIntrinsic::fabs(m_VPValue(X), ...)
m_Intrinsic (Intrinsic::ID IntrID)
Match intrinsic calls with a runtime intrinsic ID.
template<Intrinsic::ID IntrID, typename T0>
m_Intrinsic_Ty< T0 >::Ty
m_Intrinsic (const T0 &Op0)
template<Intrinsic::ID IntrID, typename T0, typename T1>
m_Intrinsic_Ty< T0, T1 >::Ty
m_Intrinsic (const T0 &Op0, const T1 &Op1)
template<Intrinsic::ID IntrID, typename T0, typename T1, typename T2>
m_Intrinsic_Ty< T0, T1, T2 >::Ty
m_Intrinsic (const T0 &Op0, const T1 &Op1, const T2 &Op2)
template<Intrinsic::ID IntrID, typename T0, typename T1, typename T2, typename T3>
m_Intrinsic_Ty< T0, T1, T2, T3 >::Ty
m_Intrinsic (const T0 &Op0, const T1 &Op1, const T2 &Op2, const T3 &Op3)
m_LiveIn ()
template<typename T>
OneUse_match< T >