Halide 19.0.0
Halide compiler and libraries
Loading...
Searching...
No Matches
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)...)
 
static constexpr IRNodeType min_node_type = IRNodeType::Call
 
static constexpr IRNodeType max_node_type = IRNodeType::Call
 
static constexpr bool canonical = and_reduce((Args::canonical)...)
 
static constexpr bool foldable = true
 

Detailed Description

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

Definition at line 1345 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 1508 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

◆ 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 1370 of file IRMatch.h.

◆ match()

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

◆ 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 1405 of file IRMatch.h.

References Halide::Internal::abs(), Halide::Internal::Call::abs, Halide::absd(), Halide::Internal::Call::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::IRMatcher::Intrin< Args >::make(), 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().

Referenced by Halide::Internal::IRMatcher::Intrin< Args >::make().

◆ make_folded_const()

Member Data Documentation

◆ intrin

◆ args

◆ optional_type_hint

◆ binds

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

Definition at line 1354 of file IRMatch.h.

◆ min_node_type

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

Definition at line 1356 of file IRMatch.h.

◆ max_node_type

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

Definition at line 1357 of file IRMatch.h.

◆ canonical

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

Definition at line 1358 of file IRMatch.h.

◆ foldable

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

Definition at line 1463 of file IRMatch.h.


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