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

AllRecipe_match

template<unsigned Opcode, typename... OpTys>

using

AllRecipe_commutative_match

template<unsigned Opcode, typename... OpTys>

using

VPInstruction_match

template<typename Op0_t, typename Op1_t>

using

GEPLikeRecipe_match

template<typename Op0_t, typename Op1_t, typename Op2_t>

using

VPScalarIVSteps_match

template<typename Op0_t, typename Op1_t, typename Op2_t>

using

VPDerivedIV_match

template<typename Op0_t, typename Op1_t>

using

VectorEndPointerRecipe_match

Functions

template<typename Val, typename Pattern>

bool

match (Val *V, const Pattern &P)

template<typename Pattern>

bool

match (VPUser *U, const Pattern &P)

template<typename Pattern>

bool

match (VPSingleDefRecipe *R, const Pattern &P)

template<typename Val = VPUser, typename Pattern>

VPMatchFunctor< Val, Pattern >

match_fn (const Pattern &P)

A match functor that can be used as a UnaryPredicate in functional algorithms like all_of.

class_match< VPValue >

m_VPValue ()

Match an arbitrary VPValue and ignore it.

specificval_ty

m_Specific (const VPValue *VPV)

deferredval_ty

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 >

m_SpecificInt (uint64_t V)

specific_intval< 1 >

m_False ()

specific_intval< 1 >

m_True ()

int_pred_ty< is_all_ones >

m_AllOnes ()

Match an integer or vector with all bits set.

int_pred_ty< is_zero_int >

m_ZeroInt ()

Match an integer 0 or a vector with all elements equal to 0.

int_pred_ty< is_one >

m_One ()

Match an integer 1 or a vector with all elements equal to 1.

bind_apint

m_APInt (const APInt *&C)

bind_const_int

m_ConstantInt (uint64_t &C)

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.

bind_ty< VPValue >

m_VPValue (VPValue *&V)

Match a VPValue, capturing it if we match.

bind_ty< VPInstruction >

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 >

m_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 >

m_Freeze (const Op0_t &Op0)

VPInstruction_match< VPInstruction::BranchOnCond >

m_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 >

m_EVL (const Op0_t &Op0)

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 >

m_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 >

m_AnyOf (const Op0_t &Op0)

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 >

m_Unary (const Op0_t &Op0)

template<typename Op0_t>

AllRecipe_match< Instruction::Trunc, Op0_t >

m_Trunc (const Op0_t &Op0)

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 >

m_ZExt (const Op0_t &Op0)

template<typename Op0_t>

AllRecipe_match< Instruction::SExt, Op0_t >

m_SExt (const Op0_t &Op0)

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 > >

m_Not (const Op0_t &Op0)

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>

IntrinsicID_match

m_Intrinsic ()

Match intrinsic calls like this: m_IntrinsicIntrinsic::fabs(m_VPValue(X), ...)

IntrinsicID_match

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)

live_in_vpvalue

m_LiveIn ()

template<typename T>

OneUse_match< T >

m_OneUse (const T &SubPattern)