LLVM 20.0.0git
Classes | Namespaces | Typedefs | Functions
VPlanPatternMatch.h File Reference
#include "VPlan.h"

Go to the source code of this file.

Classes

struct  llvm::VPlanPatternMatch::class_match< Class >
 
struct  llvm::VPlanPatternMatch::bind_ty< Class >
 
struct  llvm::VPlanPatternMatch::specific_intval< BitWidth >
 Match a specified integer value or vector of all elements of that value. More...
 
struct  llvm::VPlanPatternMatch::match_combine_or< LTy, RTy >
 Matching combinators. More...
 
struct  llvm::VPlanPatternMatch::detail::MatchRecipeAndOpcode< Opcode,... >
 A helper to match an opcode against multiple recipe types. More...
 
struct  llvm::VPlanPatternMatch::detail::MatchRecipeAndOpcode< Opcode, RecipeTy >
 
struct  llvm::VPlanPatternMatch::detail::MatchRecipeAndOpcode< Opcode, RecipeTy, RecipeTys... >
 
struct  llvm::VPlanPatternMatch::UnaryRecipe_match< Op0_t, Opcode, RecipeTys >
 
struct  llvm::VPlanPatternMatch::BinaryRecipe_match< Op0_t, Op1_t, Opcode, Commutative, RecipeTys >
 
struct  llvm::VPlanPatternMatch::VPCanonicalIVPHI_match
 
struct  llvm::VPlanPatternMatch::VPScalarIVSteps_match< Op0_t, Op1_t >
 

Namespaces

namespace  llvm
 This is an optimization pass for GlobalISel generic memory operations.
 
namespace  llvm::VPlanPatternMatch
 
namespace  llvm::VPlanPatternMatch::detail
 

Typedefs

template<typename Op0_t , unsigned Opcode>
using llvm::VPlanPatternMatch::UnaryVPInstruction_match = UnaryRecipe_match< Op0_t, Opcode, VPInstruction >
 
template<typename Op0_t , unsigned Opcode>
using llvm::VPlanPatternMatch::AllUnaryRecipe_match = UnaryRecipe_match< Op0_t, Opcode, VPWidenRecipe, VPReplicateRecipe, VPWidenCastRecipe, VPInstruction >
 
template<typename Op0_t , typename Op1_t , unsigned Opcode>
using llvm::VPlanPatternMatch::BinaryVPInstruction_match = BinaryRecipe_match< Op0_t, Op1_t, Opcode, false, VPInstruction >
 
template<typename Op0_t , typename Op1_t , unsigned Opcode, bool Commutative = false>
using llvm::VPlanPatternMatch::AllBinaryRecipe_match = BinaryRecipe_match< Op0_t, Op1_t, Opcode, Commutative, VPWidenRecipe, VPReplicateRecipe, VPWidenCastRecipe, VPInstruction >
 

Functions

template<typename Val , typename Pattern >
bool llvm::VPlanPatternMatch::match (Val *V, const Pattern &P)
 
template<typename Pattern >
bool llvm::VPlanPatternMatch::match (VPUser *U, const Pattern &P)
 
class_match< VPValue > llvm::VPlanPatternMatch::m_VPValue ()
 Match an arbitrary VPValue and ignore it.
 
specific_intval< 0 > llvm::VPlanPatternMatch::m_SpecificInt (uint64_t V)
 
specific_intval< 1 > llvm::VPlanPatternMatch::m_False ()
 
template<typename LTy , typename RTy >
match_combine_or< LTy, RTy > llvm::VPlanPatternMatch::m_CombineOr (const LTy &L, const RTy &R)
 
bind_ty< VPValue > llvm::VPlanPatternMatch::m_VPValue (VPValue *&V)
 Match a VPValue, capturing it if we match.
 
template<unsigned Opcode, typename Op0_t >
UnaryVPInstruction_match< Op0_t, Opcode > llvm::VPlanPatternMatch::m_VPInstruction (const Op0_t &Op0)
 
template<unsigned Opcode, typename Op0_t , typename Op1_t >
BinaryVPInstruction_match< Op0_t, Op1_t, Opcode > llvm::VPlanPatternMatch::m_VPInstruction (const Op0_t &Op0, const Op1_t &Op1)
 
template<typename Op0_t >
UnaryVPInstruction_match< Op0_t, VPInstruction::Not > llvm::VPlanPatternMatch::m_Not (const Op0_t &Op0)
 
template<typename Op0_t >
UnaryVPInstruction_match< Op0_t, VPInstruction::BranchOnCond > llvm::VPlanPatternMatch::m_BranchOnCond (const Op0_t &Op0)
 
template<typename Op0_t , typename Op1_t >
BinaryVPInstruction_match< Op0_t, Op1_t, VPInstruction::ActiveLaneMask > llvm::VPlanPatternMatch::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 > llvm::VPlanPatternMatch::m_BranchOnCount (const Op0_t &Op0, const Op1_t &Op1)
 
template<unsigned Opcode, typename Op0_t >
AllUnaryRecipe_match< Op0_t, Opcode > llvm::VPlanPatternMatch::m_Unary (const Op0_t &Op0)
 
template<typename Op0_t >
AllUnaryRecipe_match< Op0_t, Instruction::Trunc > llvm::VPlanPatternMatch::m_Trunc (const Op0_t &Op0)
 
template<typename Op0_t >
AllUnaryRecipe_match< Op0_t, Instruction::ZExt > llvm::VPlanPatternMatch::m_ZExt (const Op0_t &Op0)
 
template<typename Op0_t >
AllUnaryRecipe_match< Op0_t, Instruction::SExt > llvm::VPlanPatternMatch::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 > > llvm::VPlanPatternMatch::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 > llvm::VPlanPatternMatch::m_Binary (const Op0_t &Op0, const Op1_t &Op1)
 
template<typename Op0_t , typename Op1_t >
AllBinaryRecipe_match< Op0_t, Op1_t, Instruction::Mulllvm::VPlanPatternMatch::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, truellvm::VPlanPatternMatch::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 > llvm::VPlanPatternMatch::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, truellvm::VPlanPatternMatch::m_c_BinaryOr (const Op0_t &Op0, const Op1_t &Op1)
 
template<typename Op0_t , typename Op1_t >
BinaryVPInstruction_match< Op0_t, Op1_t, VPInstruction::LogicalAnd > llvm::VPlanPatternMatch::m_LogicalAnd (const Op0_t &Op0, const Op1_t &Op1)
 
VPCanonicalIVPHI_match llvm::VPlanPatternMatch::m_CanonicalIV ()
 
template<typename Op0_t , typename Op1_t >
VPScalarIVSteps_match< Op0_t, Op1_t > llvm::VPlanPatternMatch::m_ScalarIVSteps (const Op0_t &Op0, const Op1_t &Op1)