Halide
Halide::Internal::IRMatcher::Intrin< Args > Struct Template Reference

#include <IRMatch.h>

Classes

struct  pattern_tag
 

Public Member Functions

template<int i, uint32_t bound, typename = typename std::enable_if<(i < sizeof...(Args))>::type>
HALIDE_ALWAYS_INLINE bool match_args (int, const Call &c, MatcherState &state) const noexcept
 
template<int i, uint32_t binds>
HALIDE_ALWAYS_INLINE bool match_args (double, const Call &c, MatcherState &state) const noexcept
 
template<uint32_t bound>
HALIDE_ALWAYS_INLINE bool match (const BaseExprNode &e, MatcherState &state) const noexcept
 
template<int i, typename = typename std::enable_if<(i < sizeof...(Args))>::type>
HALIDE_ALWAYS_INLINE void print_args (int, std::ostream &s) const
 
template<int i>
HALIDE_ALWAYS_INLINE void print_args (double, std::ostream &s) const
 
HALIDE_ALWAYS_INLINE void print_args (std::ostream &s) const
 
HALIDE_ALWAYS_INLINE Expr make (MatcherState &state, halide_type_t type_hint) const
 
HALIDE_ALWAYS_INLINE void make_folded_const (halide_scalar_value_t &val, halide_type_t &ty, MatcherState &state) const noexcept
 
HALIDE_ALWAYS_INLINE Intrin (Call::IntrinsicOp intrin, Args... args) noexcept
 

Public Attributes

Call::IntrinsicOp intrin
 
std::tuple< Args... > args
 
Type optional_type_hint
 

Static Public Attributes

static constexpr uint32_t binds = bitwise_or_reduce((bindings<Args>::mask)...)
 
constexpr static IRNodeType min_node_type = IRNodeType::Call
 
constexpr static IRNodeType max_node_type = IRNodeType::Call
 
constexpr static bool canonical = and_reduce((Args::canonical)...)
 
constexpr static bool foldable = true
 

Detailed Description

template<typename... Args>
struct Halide::Internal::IRMatcher::Intrin< Args >

Definition at line 1357 of file IRMatch.h.

Constructor & Destructor Documentation

◆ Intrin()

template<typename... Args>
HALIDE_ALWAYS_INLINE Halide::Internal::IRMatcher::Intrin< Args >::Intrin ( Call::IntrinsicOp  intrin,
Args...  args 
)
inlinenoexcept

Definition at line 1520 of file IRMatch.h.

Member Function Documentation

◆ match_args() [1/2]

template<typename... Args>
template<int i, uint32_t bound, typename = typename std::enable_if<(i < sizeof...(Args))>::type>
HALIDE_ALWAYS_INLINE bool Halide::Internal::IRMatcher::Intrin< Args >::match_args ( int  ,
const Call c,
MatcherState state 
) const
inlinenoexcept

Definition at line 1375 of file IRMatch.h.

References Halide::Internal::IRMatcher::Intrin< Args >::args.

◆ match_args() [2/2]

template<typename... Args>
template<int i, uint32_t binds>
HALIDE_ALWAYS_INLINE bool Halide::Internal::IRMatcher::Intrin< Args >::match_args ( double  ,
const Call c,
MatcherState state 
) const
inlinenoexcept

Definition at line 1382 of file IRMatch.h.

◆ match()

template<typename... Args>
template<uint32_t bound>
HALIDE_ALWAYS_INLINE bool Halide::Internal::IRMatcher::Intrin< Args >::match ( const BaseExprNode e,
MatcherState state 
) const
inlinenoexcept

◆ print_args() [1/3]

template<typename... Args>
template<int i, typename = typename std::enable_if<(i < sizeof...(Args))>::type>
HALIDE_ALWAYS_INLINE void Halide::Internal::IRMatcher::Intrin< Args >::print_args ( int  ,
std::ostream &  s 
) const
inline

◆ print_args() [2/3]

template<typename... Args>
template<int i>
HALIDE_ALWAYS_INLINE void Halide::Internal::IRMatcher::Intrin< Args >::print_args ( double  ,
std::ostream &  s 
) const
inline

Definition at line 1408 of file IRMatch.h.

◆ print_args() [3/3]

template<typename... Args>
HALIDE_ALWAYS_INLINE void Halide::Internal::IRMatcher::Intrin< Args >::print_args ( std::ostream &  s) const
inline

Definition at line 1412 of file IRMatch.h.

◆ make()

template<typename... Args>
HALIDE_ALWAYS_INLINE Expr Halide::Internal::IRMatcher::Intrin< Args >::make ( MatcherState state,
halide_type_t  type_hint 
) const
inline

Definition at line 1417 of file IRMatch.h.

References Halide::Internal::Call::abs, Halide::abs(), Halide::Internal::Call::absd, Halide::absd(), Halide::Internal::IRMatcher::Intrin< Args >::args, Halide::Internal::IRMatcher::const_min(), Halide::Internal::Call::halving_add, Halide::Internal::IRMatcher::halving_add(), Halide::Internal::Call::halving_sub, Halide::Internal::IRMatcher::halving_sub(), internal_error, Halide::Internal::IRMatcher::Intrin< Args >::intrin, Halide::Internal::Call::likely, Halide::likely(), Halide::Internal::Call::likely_if_innermost, Halide::likely_if_innermost(), Halide::Internal::Call::mul_shift_right, Halide::Internal::IRMatcher::mul_shift_right(), Halide::Internal::IRMatcher::Intrin< Args >::optional_type_hint, Halide::Internal::Call::rounding_halving_add, Halide::Internal::IRMatcher::rounding_halving_add(), Halide::Internal::Call::rounding_mul_shift_right, Halide::Internal::IRMatcher::rounding_mul_shift_right(), Halide::Internal::Call::rounding_shift_left, Halide::Internal::IRMatcher::rounding_shift_left(), Halide::Internal::Call::rounding_shift_right, Halide::Internal::IRMatcher::rounding_shift_right(), Halide::Internal::Call::saturating_add, Halide::Internal::IRMatcher::saturating_add(), Halide::Internal::Call::saturating_cast, Halide::Internal::IRMatcher::saturating_cast(), Halide::Internal::Call::saturating_sub, Halide::Internal::IRMatcher::saturating_sub(), Halide::Internal::Call::shift_left, Halide::Internal::Call::shift_right, Halide::Internal::Call::widen_right_add, Halide::Internal::IRMatcher::widen_right_add(), Halide::Internal::Call::widen_right_mul, Halide::Internal::IRMatcher::widen_right_mul(), Halide::Internal::Call::widen_right_sub, Halide::Internal::IRMatcher::widen_right_sub(), Halide::Internal::Call::widening_add, Halide::Internal::IRMatcher::widening_add(), Halide::Internal::Call::widening_mul, Halide::Internal::IRMatcher::widening_mul(), Halide::Internal::Call::widening_sub, and Halide::Internal::IRMatcher::widening_sub().

◆ make_folded_const()

Member Data Documentation

◆ intrin

◆ args

◆ optional_type_hint

◆ binds

template<typename... Args>
constexpr uint32_t Halide::Internal::IRMatcher::Intrin< Args >::binds = bitwise_or_reduce((bindings<Args>::mask)...)
staticconstexpr

Definition at line 1366 of file IRMatch.h.

◆ min_node_type

template<typename... Args>
constexpr static IRNodeType Halide::Internal::IRMatcher::Intrin< Args >::min_node_type = IRNodeType::Call
staticconstexpr

Definition at line 1368 of file IRMatch.h.

◆ max_node_type

template<typename... Args>
constexpr static IRNodeType Halide::Internal::IRMatcher::Intrin< Args >::max_node_type = IRNodeType::Call
staticconstexpr

Definition at line 1369 of file IRMatch.h.

◆ canonical

template<typename... Args>
constexpr static bool Halide::Internal::IRMatcher::Intrin< Args >::canonical = and_reduce((Args::canonical)...)
staticconstexpr

Definition at line 1370 of file IRMatch.h.

◆ foldable

template<typename... Args>
constexpr static bool Halide::Internal::IRMatcher::Intrin< Args >::foldable = true
staticconstexpr

Definition at line 1475 of file IRMatch.h.


The documentation for this struct was generated from the following file: