Halide
Halide::Internal::VectorReduce Struct Reference

Horizontally reduce a vector to a scalar or narrower vector using the given commutative and associative binary operator. More...

#include <IR.h>

Inherits Halide::Internal::ExprNode< VectorReduce >.

Public Types

enum  Operator {
  Add, Mul, Min, Max,
  And, Or
}
 

Static Public Member Functions

static Expr make (Operator op, Expr vec, int lanes)
 

Public Attributes

Expr value
 
Operator op
 
- Public Attributes inherited from Halide::Internal::BaseExprNode
Type type
 
- Public Attributes inherited from Halide::Internal::IRNode
RefCount ref_count
 These classes are all managed with intrusive reference counting, so we also track a reference count. More...
 
IRNodeType node_type
 Each IR node subclass has a unique identifier. More...
 

Static Public Attributes

static const IRNodeType _node_type = IRNodeType::VectorReduce
 

Additional Inherited Members

- Public Member Functions inherited from Halide::Internal::ExprNode< VectorReduce >
void accept (IRVisitor *v) const override
 We use the visitor pattern to traverse IR nodes throughout the compiler, so we have a virtual accept method which accepts visitors. More...
 
Expr mutate_expr (IRMutator *v) const override
 
 ExprNode ()
 
 ~ExprNode () override=default
 
- Public Member Functions inherited from Halide::Internal::BaseExprNode
 BaseExprNode (IRNodeType t)
 
- Public Member Functions inherited from Halide::Internal::IRNode
 IRNode (IRNodeType t)
 
virtual ~IRNode ()=default
 

Detailed Description

Horizontally reduce a vector to a scalar or narrower vector using the given commutative and associative binary operator.

The reduction factor is dictated by the number of lanes in the input and output types. Groups of adjacent lanes are combined. The number of lanes in the input type must be a divisor of the number of lanes of the output type.

Definition at line 827 of file IR.h.

Member Enumeration Documentation

◆ Operator

Enumerator
Add 
Mul 
Min 
Max 
And 
Or 

Definition at line 831 of file IR.h.

Member Function Documentation

◆ make()

static Expr Halide::Internal::VectorReduce::make ( Operator  op,
Expr  vec,
int  lanes 
)
static

Member Data Documentation

◆ value

Expr Halide::Internal::VectorReduce::value

◆ op

Operator Halide::Internal::VectorReduce::op

◆ _node_type

const IRNodeType Halide::Internal::VectorReduce::_node_type = IRNodeType::VectorReduce
static

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