LLVM 22.0.0git
Classes | Typedefs | Functions
llvm::VPlanPatternMatch Namespace Reference

Classes

struct  Argument_match
 Match a call argument at a given argument index. More...
 
struct  bind_ty
 
struct  class_match
 
struct  Cmp_match
 Cmp_match is a variant of BinaryRecipe_match that also binds the comparison predicate. More...
 
struct  deferredval_ty
 Stores a reference to the VPValue *, not the VPValue * itself, thus can be used in commutative matchers. More...
 
struct  int_pred_ty
 Match an integer constant or vector of constants if Pred::isValue returns true for the APInt. More...
 
struct  IntrinsicID_match
 Intrinsic matchers. More...
 
struct  is_all_ones
 
struct  is_specific_int
 Match a specified integer value or vector of all elements of that value. More...
 
struct  is_zero_int
 
struct  m_Intrinsic_Ty
 Intrinsic matches are combinations of ID matchers, and argument matchers. More...
 
struct  m_Intrinsic_Ty< T0 >
 
struct  m_Intrinsic_Ty< T0, T1 >
 
struct  m_Intrinsic_Ty< T0, T1, T2 >
 
struct  match_combine_and
 
struct  match_combine_or
 Matching combinators. More...
 
struct  Recipe_match
 
struct  SpecificCmp_match
 SpecificCmp_match is a variant of Cmp_match that matches the comparison predicate, instead of binding it. More...
 
struct  specificval_ty
 Match a specified VPValue. More...
 

Typedefs

template<unsigned Bitwidth = 0>
using specific_intval = int_pred_ty< is_specific_int, Bitwidth >
 
template<unsigned Opcode, typename... OpTys>
using AllRecipe_match = Recipe_match< std::tuple< OpTys... >, Opcode, false, VPWidenRecipe, VPReplicateRecipe, VPWidenCastRecipe, VPInstruction, VPWidenSelectRecipe >
 
template<unsigned Opcode, typename... OpTys>
using AllRecipe_commutative_match = Recipe_match< std::tuple< OpTys... >, Opcode, true, VPWidenRecipe, VPReplicateRecipe, VPInstruction >
 
template<unsigned Opcode, typename... OpTys>
using VPInstruction_match = Recipe_match< std::tuple< OpTys... >, Opcode, false, VPInstruction >
 
template<typename Op0_t , typename Op1_t >
using GEPLikeRecipe_match = Recipe_match< std::tuple< Op0_t, Op1_t >, Instruction::GetElementPtr, false, VPWidenRecipe, VPReplicateRecipe, VPWidenGEPRecipe, VPInstruction >
 
template<typename Op0_t , typename Op1_t , typename Op2_t >
using VPScalarIVSteps_match = Recipe_match< std::tuple< Op0_t, Op1_t, Op2_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< VPValuem_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_onesm_AllOnes ()
 Match an integer or vector with all bits set.
 
int_pred_ty< is_zero_intm_ZeroInt ()
 Match an integer 0 or a vector with all elements equal to 0.
 
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< VPValuem_VPValue (VPValue *&V)
 Match a VPValue, capturing it if we match.
 
bind_ty< VPInstructionm_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::BuildVectorm_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_tm_Freeze (const Op0_t &Op0)
 
template<typename Op0_t >
VPInstruction_match< VPInstruction::BranchOnCond, Op0_tm_BranchOnCond (const Op0_t &Op0)
 
template<typename Op0_t >
VPInstruction_match< VPInstruction::Broadcast, Op0_tm_Broadcast (const Op0_t &Op0)
 
template<typename Op0_t >
VPInstruction_match< VPInstruction::ExplicitVectorLength, Op0_tm_EVL (const Op0_t &Op0)
 
template<typename Op0_t >
VPInstruction_match< VPInstruction::ExtractLastElement, Op0_tm_ExtractLastElement (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)
 
template<typename Op0_t , typename Op1_t >
VPInstruction_match< VPInstruction::BranchOnCount, Op0_t, Op1_tm_BranchOnCount (const Op0_t &Op0, const Op1_t &Op1)
 
template<unsigned Opcode, typename Op0_t >
AllRecipe_match< Opcode, Op0_tm_Unary (const Op0_t &Op0)
 
template<typename Op0_t >
AllRecipe_match< Instruction::Trunc, Op0_tm_Trunc (const Op0_t &Op0)
 
template<typename Op0_t >
AllRecipe_match< Instruction::ZExt, Op0_tm_ZExt (const Op0_t &Op0)
 
template<typename Op0_t >
AllRecipe_match< Instruction::SExt, Op0_tm_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_tm_ZExtOrSelf (const Op0_t &Op0)
 
template<unsigned Opcode, typename Op0_t , typename Op1_t >
AllRecipe_match< Opcode, Op0_t, Op1_tm_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_tm_c_Binary (const Op0_t &Op0, const Op1_t &Op1)
 
template<typename Op0_t , typename Op1_t >
AllRecipe_commutative_match< Instruction::Add, Op0_t, Op1_tm_c_Add (const Op0_t &Op0, const Op1_t &Op1)
 
template<typename Op0_t , typename Op1_t >
AllRecipe_match< Instruction::Sub, Op0_t, Op1_tm_Sub (const Op0_t &Op0, const Op1_t &Op1)
 
template<typename Op0_t , typename Op1_t >
AllRecipe_match< Instruction::Mul, Op0_t, Op1_tm_Mul (const Op0_t &Op0, const Op1_t &Op1)
 
template<typename Op0_t , typename Op1_t >
AllRecipe_commutative_match< Instruction::Mul, Op0_t, Op1_tm_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_tm_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_tm_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_tm_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_tm_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_tm_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<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_Intrinsic<Intrinsic::fabs>(m_VPValue(X), ...)
 
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)
 

Typedef Documentation

◆ AllRecipe_commutative_match

template<unsigned Opcode, typename... OpTys>
using llvm::VPlanPatternMatch::AllRecipe_commutative_match = typedef Recipe_match<std::tuple<OpTys...>, Opcode, true, VPWidenRecipe, VPReplicateRecipe, VPInstruction>

Definition at line 279 of file VPlanPatternMatch.h.

◆ AllRecipe_match

template<unsigned Opcode, typename... OpTys>
using llvm::VPlanPatternMatch::AllRecipe_match = typedef Recipe_match<std::tuple<OpTys...>, Opcode, false, VPWidenRecipe, VPReplicateRecipe, VPWidenCastRecipe, VPInstruction, VPWidenSelectRecipe>

Definition at line 273 of file VPlanPatternMatch.h.

◆ GEPLikeRecipe_match

template<typename Op0_t , typename Op1_t >
using llvm::VPlanPatternMatch::GEPLikeRecipe_match = typedef Recipe_match<std::tuple<Op0_t, Op1_t>, Instruction::GetElementPtr, false, VPWidenRecipe, VPReplicateRecipe, VPWidenGEPRecipe, VPInstruction>

Definition at line 527 of file VPlanPatternMatch.h.

◆ specific_intval

template<unsigned Bitwidth = 0>
using llvm::VPlanPatternMatch::specific_intval = typedef int_pred_ty<is_specific_int, Bitwidth>

Definition at line 124 of file VPlanPatternMatch.h.

◆ VPDerivedIV_match

template<typename Op0_t , typename Op1_t , typename Op2_t >
using llvm::VPlanPatternMatch::VPDerivedIV_match = typedef Recipe_match<std::tuple<Op0_t, Op1_t, Op2_t>, 0, false, VPDerivedIVRecipe>

Definition at line 581 of file VPlanPatternMatch.h.

◆ VPInstruction_match

template<unsigned Opcode, typename... OpTys>
using llvm::VPlanPatternMatch::VPInstruction_match = typedef Recipe_match<std::tuple<OpTys...>, Opcode, false, VPInstruction>

Definition at line 284 of file VPlanPatternMatch.h.

◆ VPScalarIVSteps_match

template<typename Op0_t , typename Op1_t , typename Op2_t >
using llvm::VPlanPatternMatch::VPScalarIVSteps_match = typedef Recipe_match<std::tuple<Op0_t, Op1_t, Op2_t>, 0, false, VPScalarIVStepsRecipe>

Definition at line 571 of file VPlanPatternMatch.h.

Function Documentation

◆ m_ActiveLaneMask()

template<typename Op0_t , typename Op1_t , typename Op2_t >
VPInstruction_match< VPInstruction::ActiveLaneMask, Op0_t, Op1_t, Op2_t > llvm::VPlanPatternMatch::m_ActiveLaneMask ( const Op0_t Op0,
const Op1_t Op1,
const Op2_t &  Op2 
)
inline

◆ m_AllOnes()

int_pred_ty< is_all_ones > llvm::VPlanPatternMatch::m_AllOnes ( )
inline

Match an integer or vector with all bits set.

For vectors, this includes constants with undefined elements.

Definition at line 144 of file VPlanPatternMatch.h.

Referenced by m_Not().

◆ m_Argument()

template<unsigned OpI, typename Opnd_t >
Argument_match< Opnd_t > llvm::VPlanPatternMatch::m_Argument ( const Opnd_t &  Op)
inline

Match a call argument.

Definition at line 612 of file VPlanPatternMatch.h.

◆ m_Binary()

template<unsigned Opcode, typename Op0_t , typename Op1_t >
AllRecipe_match< Opcode, Op0_t, Op1_t > llvm::VPlanPatternMatch::m_Binary ( const Op0_t Op0,
const Op1_t Op1 
)
inline

Definition at line 375 of file VPlanPatternMatch.h.

◆ m_BinaryOr()

template<typename Op0_t , typename Op1_t >
AllRecipe_match< Instruction::Or, Op0_t, Op1_t > llvm::VPlanPatternMatch::m_BinaryOr ( const Op0_t Op0,
const Op1_t Op1 
)
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 423 of file VPlanPatternMatch.h.

Referenced by isConditionTrueViaVFAndUF().

◆ m_BranchOnCond()

template<typename Op0_t >
VPInstruction_match< VPInstruction::BranchOnCond, Op0_t > llvm::VPlanPatternMatch::m_BranchOnCond ( const Op0_t Op0)
inline

◆ m_BranchOnCount()

template<typename Op0_t , typename Op1_t >
VPInstruction_match< VPInstruction::BranchOnCount, Op0_t, Op1_t > llvm::VPlanPatternMatch::m_BranchOnCount ( const Op0_t Op0,
const Op1_t Op1 
)
inline

◆ m_Broadcast()

template<typename Op0_t >
VPInstruction_match< VPInstruction::Broadcast, Op0_t > llvm::VPlanPatternMatch::m_Broadcast ( const Op0_t Op0)
inline

◆ m_BuildVector()

VPInstruction_match< VPInstruction::BuildVector > llvm::VPlanPatternMatch::m_BuildVector ( )
inline

BuildVector is matches only its opcode, w/o matching its operands as the number of operands is not fixed.

Definition at line 295 of file VPlanPatternMatch.h.

Referenced by cloneForLane(), llvm::VPTransformState::get(), and simplifyRecipe().

◆ m_c_Add()

template<typename Op0_t , typename Op1_t >
AllRecipe_commutative_match< Instruction::Add, Op0_t, Op1_t > llvm::VPlanPatternMatch::m_c_Add ( const Op0_t Op0,
const Op1_t Op1 
)
inline

Definition at line 388 of file VPlanPatternMatch.h.

◆ m_c_Binary()

template<unsigned Opcode, typename Op0_t , typename Op1_t >
AllRecipe_commutative_match< Opcode, Op0_t, Op1_t > llvm::VPlanPatternMatch::m_c_Binary ( const Op0_t Op0,
const Op1_t Op1 
)
inline

Definition at line 382 of file VPlanPatternMatch.h.

◆ m_c_BinaryAnd()

template<typename Op0_t , typename Op1_t >
AllRecipe_commutative_match< Instruction::And, Op0_t, Op1_t > llvm::VPlanPatternMatch::m_c_BinaryAnd ( const Op0_t Op0,
const Op1_t Op1 
)
inline

Match a binary AND operation.

Definition at line 413 of file VPlanPatternMatch.h.

Referenced by simplifyRecipe().

◆ m_c_BinaryOr()

template<typename Op0_t , typename Op1_t >
AllRecipe_commutative_match< Instruction::Or, Op0_t, Op1_t > llvm::VPlanPatternMatch::m_c_BinaryOr ( const Op0_t Op0,
const Op1_t Op1 
)
inline

Definition at line 429 of file VPlanPatternMatch.h.

Referenced by simplifyRecipe().

◆ m_c_Mul()

template<typename Op0_t , typename Op1_t >
AllRecipe_commutative_match< Instruction::Mul, Op0_t, Op1_t > llvm::VPlanPatternMatch::m_c_Mul ( const Op0_t Op0,
const Op1_t Op1 
)
inline

Definition at line 406 of file VPlanPatternMatch.h.

◆ m_Cmp() [1/2]

template<typename Op0_t , typename Op1_t >
Cmp_match< Op0_t, Op1_t, Instruction::ICmp, Instruction::FCmp > llvm::VPlanPatternMatch::m_Cmp ( CmpPredicate Pred,
const Op0_t Op0,
const Op1_t Op1 
)
inline

Definition at line 514 of file VPlanPatternMatch.h.

◆ m_Cmp() [2/2]

template<typename Op0_t , typename Op1_t >
Cmp_match< Op0_t, Op1_t, Instruction::ICmp, Instruction::FCmp > llvm::VPlanPatternMatch::m_Cmp ( const Op0_t Op0,
const Op1_t Op1 
)
inline

Definition at line 507 of file VPlanPatternMatch.h.

◆ m_CombineAnd()

template<typename LTy , typename RTy >
match_combine_and< LTy, RTy > llvm::VPlanPatternMatch::m_CombineAnd ( const LTy &  L,
const RTy &  R 
)
inline

Combine two pattern matchers matching L && R.

Definition at line 189 of file VPlanPatternMatch.h.

Referenced by m_Intrinsic().

◆ m_CombineOr()

template<typename LTy , typename RTy >
match_combine_or< LTy, RTy > llvm::VPlanPatternMatch::m_CombineOr ( const LTy &  L,
const RTy &  R 
)
inline

Combine two pattern matchers matching L || R.

Definition at line 183 of file VPlanPatternMatch.h.

Referenced by m_LogicalAnd(), m_Not(), m_ZExtOrSelf(), and m_ZExtOrSExt().

◆ m_Deferred()

deferredval_ty llvm::VPlanPatternMatch::m_Deferred ( VPValue *const V)
inline

Like m_Specific(), but works if the specific value to match is determined as part of the same match() expression.

For example: m_Mul(m_VPValue(X), m_Specific(X)) is incorrect, because m_Specific() will bind X before the pattern match starts. m_Mul(m_VPValue(X), m_Deferred(X)) is correct, and will check against whichever value m_VPValue(X) populated.

Definition at line 80 of file VPlanPatternMatch.h.

◆ m_DerivedIV()

template<typename Op0_t , typename Op1_t , typename Op2_t >
VPDerivedIV_match< Op0_t, Op1_t, Op2_t > llvm::VPlanPatternMatch::m_DerivedIV ( const Op0_t Op0,
const Op1_t Op1,
const Op2_t &  Op2 
)
inline

Definition at line 586 of file VPlanPatternMatch.h.

Referenced by simplifyRecipe().

◆ m_EVL()

template<typename Op0_t >
VPInstruction_match< VPInstruction::ExplicitVectorLength, Op0_t > llvm::VPlanPatternMatch::m_EVL ( const Op0_t Op0)
inline

Definition at line 319 of file VPlanPatternMatch.h.

Referenced by llvm::VPlanTransforms::canonicalizeEVLLoops().

◆ m_ExtractLastElement()

template<typename Op0_t >
VPInstruction_match< VPInstruction::ExtractLastElement, Op0_t > llvm::VPlanPatternMatch::m_ExtractLastElement ( const Op0_t Op0)
inline

Definition at line 325 of file VPlanPatternMatch.h.

Referenced by optimizeLatchExitInductionUser(), and simplifyRecipe().

◆ m_False()

specific_intval< 1 > llvm::VPlanPatternMatch::m_False ( )
inline

◆ m_Freeze()

template<typename Op0_t >
VPInstruction_match< Instruction::Freeze, Op0_t > llvm::VPlanPatternMatch::m_Freeze ( const Op0_t Op0)
inline

Definition at line 301 of file VPlanPatternMatch.h.

◆ m_GetElementPtr()

template<typename Op0_t , typename Op1_t >
GEPLikeRecipe_match< Op0_t, Op1_t > llvm::VPlanPatternMatch::m_GetElementPtr ( const Op0_t Op0,
const Op1_t Op1 
)
inline

Definition at line 533 of file VPlanPatternMatch.h.

Referenced by getOptimizableIVOf().

◆ m_ICmp() [1/2]

template<typename Op0_t , typename Op1_t >
Cmp_match< Op0_t, Op1_t, Instruction::ICmp > llvm::VPlanPatternMatch::m_ICmp ( CmpPredicate Pred,
const Op0_t Op0,
const Op1_t Op1 
)
inline

Definition at line 494 of file VPlanPatternMatch.h.

◆ m_ICmp() [2/2]

template<typename Op0_t , typename Op1_t >
Cmp_match< Op0_t, Op1_t, Instruction::ICmp > llvm::VPlanPatternMatch::m_ICmp ( const Op0_t Op0,
const Op1_t Op1 
)
inline

Definition at line 487 of file VPlanPatternMatch.h.

◆ m_Intrinsic() [1/5]

template<Intrinsic::ID IntrID>
IntrinsicID_match llvm::VPlanPatternMatch::m_Intrinsic ( )
inline

Match intrinsic calls like this: m_Intrinsic<Intrinsic::fabs>(m_VPValue(X), ...)

Definition at line 662 of file VPlanPatternMatch.h.

◆ m_Intrinsic() [2/5]

template<Intrinsic::ID IntrID, typename T0 >
m_Intrinsic_Ty< T0 >::Ty llvm::VPlanPatternMatch::m_Intrinsic ( const T0 &  Op0)
inline

Definition at line 667 of file VPlanPatternMatch.h.

References m_CombineAnd().

◆ m_Intrinsic() [3/5]

template<Intrinsic::ID IntrID, typename T0 , typename T1 >
m_Intrinsic_Ty< T0, T1 >::Ty llvm::VPlanPatternMatch::m_Intrinsic ( const T0 &  Op0,
const T1 Op1 
)
inline

Definition at line 672 of file VPlanPatternMatch.h.

References m_CombineAnd().

◆ m_Intrinsic() [4/5]

template<Intrinsic::ID IntrID, typename T0 , typename T1 , typename T2 >
m_Intrinsic_Ty< T0, T1, T2 >::Ty llvm::VPlanPatternMatch::m_Intrinsic ( const T0 &  Op0,
const T1 Op1,
const T2 &  Op2 
)
inline

Definition at line 679 of file VPlanPatternMatch.h.

References m_CombineAnd().

◆ m_Intrinsic() [5/5]

template<Intrinsic::ID IntrID, typename T0 , typename T1 , typename T2 , typename T3 >
m_Intrinsic_Ty< T0, T1, T2, T3 >::Ty llvm::VPlanPatternMatch::m_Intrinsic ( const T0 &  Op0,
const T1 Op1,
const T2 &  Op2,
const T3 &  Op3 
)
inline

Definition at line 686 of file VPlanPatternMatch.h.

References m_CombineAnd().

◆ m_LogicalAnd()

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 > > > llvm::VPlanPatternMatch::m_LogicalAnd ( const Op0_t Op0,
const Op1_t Op1 
)
inline

Definition at line 558 of file VPlanPatternMatch.h.

References m_CombineOr(), m_False(), and m_Select().

◆ m_LogicalOr()

template<typename Op0_t , typename Op1_t >
AllRecipe_match< Instruction::Select, Op0_t, specific_intval< 1 >, Op1_t > llvm::VPlanPatternMatch::m_LogicalOr ( const Op0_t Op0,
const Op1_t Op1 
)
inline

Definition at line 566 of file VPlanPatternMatch.h.

References m_Select(), and m_True().

◆ m_Mul()

template<typename Op0_t , typename Op1_t >
AllRecipe_match< Instruction::Mul, Op0_t, Op1_t > llvm::VPlanPatternMatch::m_Mul ( const Op0_t Op0,
const Op1_t Op1 
)
inline

Definition at line 399 of file VPlanPatternMatch.h.

◆ m_Not()

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 > > llvm::VPlanPatternMatch::m_Not ( const Op0_t Op0)
inline

Definition at line 549 of file VPlanPatternMatch.h.

References m_AllOnes(), and m_CombineOr().

◆ m_ScalarIVSteps()

template<typename Op0_t , typename Op1_t , typename Op2_t >
VPScalarIVSteps_match< Op0_t, Op1_t, Op2_t > llvm::VPlanPatternMatch::m_ScalarIVSteps ( const Op0_t Op0,
const Op1_t Op1,
const Op2_t &  Op2 
)
inline

Definition at line 576 of file VPlanPatternMatch.h.

◆ m_Select()

template<typename Op0_t , typename Op1_t , typename Op2_t >
AllRecipe_match< Instruction::Select, Op0_t, Op1_t, Op2_t > llvm::VPlanPatternMatch::m_Select ( const Op0_t Op0,
const Op1_t Op1,
const Op2_t &  Op2 
)
inline

Definition at line 540 of file VPlanPatternMatch.h.

Referenced by m_LogicalAnd(), and m_LogicalOr().

◆ m_SExt()

template<typename Op0_t >
AllRecipe_match< Instruction::SExt, Op0_t > llvm::VPlanPatternMatch::m_SExt ( const Op0_t Op0)
inline

Definition at line 357 of file VPlanPatternMatch.h.

Referenced by m_ZExtOrSExt().

◆ m_Specific()

specificval_ty llvm::VPlanPatternMatch::m_Specific ( const VPValue VPV)
inline

Definition at line 62 of file VPlanPatternMatch.h.

◆ m_SpecificCmp()

template<typename Op0_t , typename Op1_t >
SpecificCmp_match< Op0_t, Op1_t, Instruction::ICmp, Instruction::FCmp > llvm::VPlanPatternMatch::m_SpecificCmp ( CmpPredicate  MatchPred,
const Op0_t Op0,
const Op1_t Op1 
)
inline

Definition at line 521 of file VPlanPatternMatch.h.

◆ m_SpecificICmp()

template<typename Op0_t , typename Op1_t >
SpecificCmp_match< Op0_t, Op1_t, Instruction::ICmp > llvm::VPlanPatternMatch::m_SpecificICmp ( CmpPredicate  MatchPred,
const Op0_t Op0,
const Op1_t Op1 
)
inline

Definition at line 500 of file VPlanPatternMatch.h.

◆ m_SpecificInt()

specific_intval< 0 > llvm::VPlanPatternMatch::m_SpecificInt ( uint64_t  V)
inline

Definition at line 126 of file VPlanPatternMatch.h.

◆ m_Sub()

template<typename Op0_t , typename Op1_t >
AllRecipe_match< Instruction::Sub, Op0_t, Op1_t > llvm::VPlanPatternMatch::m_Sub ( const Op0_t Op0,
const Op1_t Op1 
)
inline

Definition at line 393 of file VPlanPatternMatch.h.

◆ m_True()

specific_intval< 1 > llvm::VPlanPatternMatch::m_True ( )
inline

◆ m_Trunc()

template<typename Op0_t >
AllRecipe_match< Instruction::Trunc, Op0_t > llvm::VPlanPatternMatch::m_Trunc ( const Op0_t Op0)
inline

Definition at line 347 of file VPlanPatternMatch.h.

◆ m_Unary()

template<unsigned Opcode, typename Op0_t >
AllRecipe_match< Opcode, Op0_t > llvm::VPlanPatternMatch::m_Unary ( const Op0_t Op0)
inline

Definition at line 342 of file VPlanPatternMatch.h.

◆ m_VPInstruction() [1/2]

template<unsigned Opcode, typename... OpTys>
VPInstruction_match< Opcode, OpTys... > llvm::VPlanPatternMatch::m_VPInstruction ( const OpTys &...  Ops)
inline

Definition at line 289 of file VPlanPatternMatch.h.

◆ m_VPInstruction() [2/2]

bind_ty< VPInstruction > llvm::VPlanPatternMatch::m_VPInstruction ( VPInstruction *&  V)
inline

Match a VPInstruction, capturing if we match.

Definition at line 197 of file VPlanPatternMatch.h.

Referenced by simplifyRecipe().

◆ m_VPValue() [1/2]

class_match< VPValue > llvm::VPlanPatternMatch::m_VPValue ( )
inline

◆ m_VPValue() [2/2]

bind_ty< VPValue > llvm::VPlanPatternMatch::m_VPValue ( VPValue *&  V)
inline

Match a VPValue, capturing it if we match.

Definition at line 194 of file VPlanPatternMatch.h.

◆ m_ZeroInt()

int_pred_ty< is_zero_int > llvm::VPlanPatternMatch::m_ZeroInt ( )
inline

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

For vectors, this includes constants with undefined elements.

Definition at line 154 of file VPlanPatternMatch.h.

◆ m_ZExt()

template<typename Op0_t >
AllRecipe_match< Instruction::ZExt, Op0_t > llvm::VPlanPatternMatch::m_ZExt ( const Op0_t Op0)
inline

Definition at line 352 of file VPlanPatternMatch.h.

Referenced by m_ZExtOrSelf(), and m_ZExtOrSExt().

◆ m_ZExtOrSelf()

template<typename Op0_t >
match_combine_or< AllRecipe_match< Instruction::ZExt, Op0_t >, Op0_t > llvm::VPlanPatternMatch::m_ZExtOrSelf ( const Op0_t Op0)
inline

Definition at line 370 of file VPlanPatternMatch.h.

References m_CombineOr(), and m_ZExt().

◆ m_ZExtOrSExt()

template<typename Op0_t >
match_combine_or< AllRecipe_match< Instruction::ZExt, Op0_t >, AllRecipe_match< Instruction::SExt, Op0_t > > llvm::VPlanPatternMatch::m_ZExtOrSExt ( const Op0_t Op0)
inline

Definition at line 364 of file VPlanPatternMatch.h.

References m_CombineOr(), m_SExt(), and m_ZExt().

Referenced by fixReductionScalarResumeWhenVectorizingEpilog().

◆ match() [1/2]

template<typename Val , typename Pattern >
bool llvm::VPlanPatternMatch::match ( Val *  V,
const Pattern P 
)

Definition at line 23 of file VPlanPatternMatch.h.

References P.

Referenced by match().

◆ match() [2/2]

template<typename Pattern >
bool llvm::VPlanPatternMatch::match ( VPUser U,
const Pattern P 
)

Definition at line 27 of file VPlanPatternMatch.h.

References match(), and P.