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::specificval_ty
 Match a specified VPValue. More...
 
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::Recipe_match< Ops_t, Opcode, Commutative, RecipeTys >
 

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, typename... RecipeTys>
using llvm::VPlanPatternMatch::UnaryRecipe_match = Recipe_match< std::tuple< Op0_t >, Opcode, false, RecipeTys... >
 
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, bool Commutative, typename... RecipeTys>
using llvm::VPlanPatternMatch::BinaryRecipe_match = Recipe_match< std::tuple< Op0_t, Op1_t >, Opcode, Commutative, RecipeTys... >
 
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 >
 
template<typename Op0_t , typename Op1_t , typename Op2_t , unsigned Opcode>
using llvm::VPlanPatternMatch::AllTernaryRecipe_match = Recipe_match< std::tuple< Op0_t, Op1_t, Op2_t >, Opcode, false, VPReplicateRecipe, VPInstruction, VPWidenSelectRecipe >
 
using llvm::VPlanPatternMatch::VPCanonicalIVPHI_match = Recipe_match< std::tuple<>, 0, false, VPCanonicalIVPHIRecipe >
 
template<typename Op0_t , typename Op1_t >
using llvm::VPlanPatternMatch::VPScalarIVSteps_match = Recipe_match< std::tuple< Op0_t, Op1_t >, 0, false, VPScalarIVStepsRecipe >
 

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.
 
specificval_ty llvm::VPlanPatternMatch::m_Specific (const VPValue *VPV)
 
specific_intval< 0 > llvm::VPlanPatternMatch::m_SpecificInt (uint64_t V)
 
specific_intval< 1 > llvm::VPlanPatternMatch::m_False ()
 
specific_intval< 1 > llvm::VPlanPatternMatch::m_True ()
 
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<typename TupleTy , typename Fn , std::size_t... Is>
bool llvm::VPlanPatternMatch::detail::CheckTupleElements (const TupleTy &Ops, Fn P, std::index_sequence< Is... >)
 
template<typename TupleTy , typename Fn >
bool llvm::VPlanPatternMatch::detail::all_of_tuple_elements (const TupleTy &Ops, Fn P)
 Helper to check if predicate P holds on all tuple elements in Ops.
 
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 , typename Op2_t >
AllTernaryRecipe_match< Op0_t, Op1_t, Op2_t, Instruction::Selectllvm::VPlanPatternMatch::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 > > llvm::VPlanPatternMatch::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::Selectllvm::VPlanPatternMatch::m_LogicalOr (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)