Halide 16.0.0
Halide compiler and libraries
Halide::Internal::IRPrinter Class Reference

An IRVisitor that emits IR to the given output stream in a human readable form. More...

#include <IRPrinter.h>

Inheritance diagram for Halide::Internal::IRPrinter:
Halide::Internal::IRVisitor Halide::Internal::CodeGen_C Halide::Internal::CodeGen_PyTorch Halide::Internal::CodeGen_GPU_C

Public Member Functions

 IRPrinter (std::ostream &)
 Construct an IRPrinter pointed at a given output stream (e.g. More...
 
void print (const Expr &)
 emit an expression on the output stream More...
 
void print_no_parens (const Expr &)
 Emit an expression on the output stream without enclosing parens. More...
 
void print (const Stmt &)
 emit a statement on the output stream More...
 
void print_list (const std::vector< Expr > &exprs)
 emit a comma delimited list of exprs, without any leading or trailing punctuation. More...
 
- Public Member Functions inherited from Halide::Internal::IRVisitor
 IRVisitor ()=default
 
virtual ~IRVisitor ()=default
 

Static Public Member Functions

static void test ()
 

Protected Member Functions

Indentation get_indent () const
 
void open ()
 Either emits "(" or "", depending on the value of implicit_parens. More...
 
void close ()
 Either emits ")" or "", depending on the value of implicit_parens. More...
 
void print_lets (const Let *let)
 A helper for printing a chain of lets with line breaks. More...
 
void visit (const IntImm *) override
 
void visit (const UIntImm *) override
 
void visit (const FloatImm *) override
 
void visit (const StringImm *) override
 
void visit (const Cast *) override
 
void visit (const Reinterpret *) override
 
void visit (const Variable *) override
 
void visit (const Add *) override
 
void visit (const Sub *) override
 
void visit (const Mul *) override
 
void visit (const Div *) override
 
void visit (const Mod *) override
 
void visit (const Min *) override
 
void visit (const Max *) override
 
void visit (const EQ *) override
 
void visit (const NE *) override
 
void visit (const LT *) override
 
void visit (const LE *) override
 
void visit (const GT *) override
 
void visit (const GE *) override
 
void visit (const And *) override
 
void visit (const Or *) override
 
void visit (const Not *) override
 
void visit (const Select *) override
 
void visit (const Load *) override
 
void visit (const Ramp *) override
 
void visit (const Broadcast *) override
 
void visit (const Call *) override
 
void visit (const Let *) override
 
void visit (const LetStmt *) override
 
void visit (const AssertStmt *) override
 
void visit (const ProducerConsumer *) override
 
void visit (const For *) override
 
void visit (const Acquire *) override
 
void visit (const Store *) override
 
void visit (const Provide *) override
 
void visit (const Allocate *) override
 
void visit (const Free *) override
 
void visit (const Realize *) override
 
void visit (const Block *) override
 
void visit (const Fork *) override
 
void visit (const IfThenElse *) override
 
void visit (const Evaluate *) override
 
void visit (const Shuffle *) override
 
void visit (const VectorReduce *) override
 
void visit (const Prefetch *) override
 
void visit (const Atomic *) override
 
virtual void visit (const IntImm *)
 
virtual void visit (const UIntImm *)
 
virtual void visit (const FloatImm *)
 
virtual void visit (const StringImm *)
 
virtual void visit (const Cast *)
 
virtual void visit (const Reinterpret *)
 
virtual void visit (const Variable *)
 
virtual void visit (const Add *)
 
virtual void visit (const Sub *)
 
virtual void visit (const Mul *)
 
virtual void visit (const Div *)
 
virtual void visit (const Mod *)
 
virtual void visit (const Min *)
 
virtual void visit (const Max *)
 
virtual void visit (const EQ *)
 
virtual void visit (const NE *)
 
virtual void visit (const LT *)
 
virtual void visit (const LE *)
 
virtual void visit (const GT *)
 
virtual void visit (const GE *)
 
virtual void visit (const And *)
 
virtual void visit (const Or *)
 
virtual void visit (const Not *)
 
virtual void visit (const Select *)
 
virtual void visit (const Load *)
 
virtual void visit (const Ramp *)
 
virtual void visit (const Broadcast *)
 
virtual void visit (const Call *)
 
virtual void visit (const Let *)
 
virtual void visit (const LetStmt *)
 
virtual void visit (const AssertStmt *)
 
virtual void visit (const ProducerConsumer *)
 
virtual void visit (const For *)
 
virtual void visit (const Store *)
 
virtual void visit (const Provide *)
 
virtual void visit (const Allocate *)
 
virtual void visit (const Free *)
 
virtual void visit (const Realize *)
 
virtual void visit (const Block *)
 
virtual void visit (const IfThenElse *)
 
virtual void visit (const Evaluate *)
 
virtual void visit (const Shuffle *)
 
virtual void visit (const VectorReduce *)
 
virtual void visit (const Prefetch *)
 
virtual void visit (const Fork *)
 
virtual void visit (const Acquire *)
 
virtual void visit (const Atomic *)
 

Protected Attributes

std::ostream & stream
 The stream on which we're outputting. More...
 
int indent = 0
 The current indentation level, useful for pretty-printing statements. More...
 
bool implicit_parens = false
 Certain expressions do not need parens around them, e.g. More...
 
Scope known_type
 The symbols whose types can be inferred from values printed already. More...
 

Detailed Description

An IRVisitor that emits IR to the given output stream in a human readable form.

Can be subclassed if you want to modify the way in which it prints.

Definition at line 102 of file IRPrinter.h.

Constructor & Destructor Documentation

◆ IRPrinter()

Halide::Internal::IRPrinter::IRPrinter ( std::ostream &  )
explicit

Construct an IRPrinter pointed at a given output stream (e.g.

std::cout, or a std::ofstream)

Member Function Documentation

◆ print() [1/2]

void Halide::Internal::IRPrinter::print ( const Expr )

emit an expression on the output stream

◆ print_no_parens()

void Halide::Internal::IRPrinter::print_no_parens ( const Expr )

Emit an expression on the output stream without enclosing parens.

◆ print() [2/2]

void Halide::Internal::IRPrinter::print ( const Stmt )

emit a statement on the output stream

◆ print_list()

void Halide::Internal::IRPrinter::print_list ( const std::vector< Expr > &  exprs)

emit a comma delimited list of exprs, without any leading or trailing punctuation.

◆ test()

static void Halide::Internal::IRPrinter::test ( )
static

◆ get_indent()

Indentation Halide::Internal::IRPrinter::get_indent ( ) const
inlineprotected

Definition at line 124 of file IRPrinter.h.

References indent.

◆ open()

void Halide::Internal::IRPrinter::open ( )
protected

Either emits "(" or "", depending on the value of implicit_parens.

◆ close()

void Halide::Internal::IRPrinter::close ( )
protected

Either emits ")" or "", depending on the value of implicit_parens.

◆ print_lets()

void Halide::Internal::IRPrinter::print_lets ( const Let let)
protected

A helper for printing a chain of lets with line breaks.

◆ visit() [1/47]

void Halide::Internal::IRPrinter::visit ( const IntImm )
overrideprotectedvirtual

◆ visit() [2/47]

void Halide::Internal::IRPrinter::visit ( const UIntImm )
overrideprotectedvirtual

◆ visit() [3/47]

void Halide::Internal::IRPrinter::visit ( const FloatImm )
overrideprotectedvirtual

◆ visit() [4/47]

void Halide::Internal::IRPrinter::visit ( const StringImm )
overrideprotectedvirtual

◆ visit() [5/47]

void Halide::Internal::IRPrinter::visit ( const Cast )
overrideprotectedvirtual

◆ visit() [6/47]

void Halide::Internal::IRPrinter::visit ( const Reinterpret )
overrideprotectedvirtual

◆ visit() [7/47]

void Halide::Internal::IRPrinter::visit ( const Variable )
overrideprotectedvirtual

◆ visit() [8/47]

void Halide::Internal::IRPrinter::visit ( const Add )
overrideprotectedvirtual

◆ visit() [9/47]

void Halide::Internal::IRPrinter::visit ( const Sub )
overrideprotectedvirtual

◆ visit() [10/47]

void Halide::Internal::IRPrinter::visit ( const Mul )
overrideprotectedvirtual

◆ visit() [11/47]

void Halide::Internal::IRPrinter::visit ( const Div )
overrideprotectedvirtual

◆ visit() [12/47]

void Halide::Internal::IRPrinter::visit ( const Mod )
overrideprotectedvirtual

◆ visit() [13/47]

void Halide::Internal::IRPrinter::visit ( const Min )
overrideprotectedvirtual

◆ visit() [14/47]

void Halide::Internal::IRPrinter::visit ( const Max )
overrideprotectedvirtual

◆ visit() [15/47]

void Halide::Internal::IRPrinter::visit ( const EQ )
overrideprotectedvirtual

◆ visit() [16/47]

void Halide::Internal::IRPrinter::visit ( const NE )
overrideprotectedvirtual

◆ visit() [17/47]

void Halide::Internal::IRPrinter::visit ( const LT )
overrideprotectedvirtual

◆ visit() [18/47]

void Halide::Internal::IRPrinter::visit ( const LE )
overrideprotectedvirtual

◆ visit() [19/47]

void Halide::Internal::IRPrinter::visit ( const GT )
overrideprotectedvirtual

◆ visit() [20/47]

void Halide::Internal::IRPrinter::visit ( const GE )
overrideprotectedvirtual

◆ visit() [21/47]

void Halide::Internal::IRPrinter::visit ( const And )
overrideprotectedvirtual

◆ visit() [22/47]

void Halide::Internal::IRPrinter::visit ( const Or )
overrideprotectedvirtual

◆ visit() [23/47]

void Halide::Internal::IRPrinter::visit ( const Not )
overrideprotectedvirtual

◆ visit() [24/47]

void Halide::Internal::IRPrinter::visit ( const Select )
overrideprotectedvirtual

◆ visit() [25/47]

void Halide::Internal::IRPrinter::visit ( const Load )
overrideprotectedvirtual

◆ visit() [26/47]

void Halide::Internal::IRPrinter::visit ( const Ramp )
overrideprotectedvirtual

◆ visit() [27/47]

void Halide::Internal::IRPrinter::visit ( const Broadcast )
overrideprotectedvirtual

◆ visit() [28/47]

void Halide::Internal::IRPrinter::visit ( const Call )
overrideprotectedvirtual

◆ visit() [29/47]

void Halide::Internal::IRPrinter::visit ( const Let )
overrideprotectedvirtual

◆ visit() [30/47]

void Halide::Internal::IRPrinter::visit ( const LetStmt )
overrideprotectedvirtual

◆ visit() [31/47]

void Halide::Internal::IRPrinter::visit ( const AssertStmt )
overrideprotectedvirtual

◆ visit() [32/47]

void Halide::Internal::IRPrinter::visit ( const ProducerConsumer )
overrideprotectedvirtual

◆ visit() [33/47]

void Halide::Internal::IRPrinter::visit ( const For )
overrideprotectedvirtual

◆ visit() [34/47]

void Halide::Internal::IRPrinter::visit ( const Acquire )
overrideprotectedvirtual

◆ visit() [35/47]

void Halide::Internal::IRPrinter::visit ( const Store )
overrideprotectedvirtual

◆ visit() [36/47]

void Halide::Internal::IRPrinter::visit ( const Provide )
overrideprotectedvirtual

◆ visit() [37/47]

void Halide::Internal::IRPrinter::visit ( const Allocate )
overrideprotectedvirtual

◆ visit() [38/47]

void Halide::Internal::IRPrinter::visit ( const Free )
overrideprotectedvirtual

◆ visit() [39/47]

void Halide::Internal::IRPrinter::visit ( const Realize )
overrideprotectedvirtual

◆ visit() [40/47]

void Halide::Internal::IRPrinter::visit ( const Block )
overrideprotectedvirtual

◆ visit() [41/47]

void Halide::Internal::IRPrinter::visit ( const Fork )
overrideprotectedvirtual

◆ visit() [42/47]

void Halide::Internal::IRPrinter::visit ( const IfThenElse )
overrideprotectedvirtual

◆ visit() [43/47]

void Halide::Internal::IRPrinter::visit ( const Evaluate )
overrideprotectedvirtual

◆ visit() [44/47]

void Halide::Internal::IRPrinter::visit ( const Shuffle )
overrideprotectedvirtual

◆ visit() [45/47]

void Halide::Internal::IRPrinter::visit ( const VectorReduce )
overrideprotectedvirtual

◆ visit() [46/47]

void Halide::Internal::IRPrinter::visit ( const Prefetch )
overrideprotectedvirtual

◆ visit() [47/47]

void Halide::Internal::IRPrinter::visit ( const Atomic )
overrideprotectedvirtual

Member Data Documentation

◆ stream

std::ostream& Halide::Internal::IRPrinter::stream
protected

The stream on which we're outputting.

Definition at line 129 of file IRPrinter.h.

◆ indent

int Halide::Internal::IRPrinter::indent = 0
protected

The current indentation level, useful for pretty-printing statements.

Definition at line 133 of file IRPrinter.h.

Referenced by get_indent().

◆ implicit_parens

bool Halide::Internal::IRPrinter::implicit_parens = false
protected

Certain expressions do not need parens around them, e.g.

the args to a call are already separated by commas and a surrounding set of parens.

Definition at line 138 of file IRPrinter.h.

◆ known_type

Scope Halide::Internal::IRPrinter::known_type
protected

The symbols whose types can be inferred from values printed already.

Definition at line 148 of file IRPrinter.h.


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