FreeTensor
Loading...
Searching...
No Matches
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
freetensor::CodeGen< Stream > Class Template Reference

#include <code_gen.h>

Inheritance diagram for freetensor::CodeGen< Stream >:
Inheritance graph
[legend]
Collaboration diagram for freetensor::CodeGen< Stream >:
Collaboration graph
[legend]

Public Member Functions

void beginBlock ()
 
void endBlock ()
 
std::string toString (const std::function< std::string(const Stream &)> &action)
 
- Public Member Functions inherited from freetensor::SymbolTable< Visitor >
 SymbolTable (T &&...args)
 
const std::unordered_set< std::string > & names () const override
 
const std::unordered_map< std::string, VarDef > & defs () const override
 
const std::unordered_map< std::string, For > & loops () const override
 
bool hasDef (const std::string &name) const override
 
const VarDefdef (const std::string &name) const override
 
Ref< Bufferbuffer (const std::string &name) const override
 
bool hasLoop (const std::string &name) const override
 
const Forloop (const std::string &name) const override
 
void pushDef (const VarDef &op) override
 
void popDef (const VarDef &op) override
 
void pushFor (const For &op) override
 
void popFor (const For &op) override
 
const SymbolTableDatasymbolTableSnapshot () const
 
- Public Member Functions inherited from freetensor::Visitor
virtual ~Visitor ()
 
virtual void operator() (const AST &op) final
 
virtual const std::unordered_set< std::string > & names () const =0
 
virtual const std::unordered_map< std::string, VarDef > & defs () const =0
 
virtual const std::unordered_map< std::string, For > & loops () const =0
 
virtual bool hasDef (const std::string &name) const =0
 
virtual const VarDefdef (const std::string &name) const =0
 
virtual Ref< Bufferbuffer (const std::string &name) const =0
 
virtual bool hasLoop (const std::string &name) const =0
 
virtual const Forloop (const std::string &name) const =0
 
virtual void pushDef (const VarDef &op)=0
 
virtual void popDef (const VarDef &op)=0
 
virtual void pushFor (const For &op)=0
 
virtual void popFor (const For &op)=0
 

Protected Member Functions

void makeIndent ()
 
template<class T >
void printList (T &&list)
 
 CodeGen (bool compact=false, int indentSize=2)
 
void markDef (const VarDef &op)
 
void markUse (const std::string &name)
 
void markUndef (const VarDef &op)
 
void markDefIter (const For &op)
 
void markUseIter (const std::string &name)
 
void markUndefIter (const For &op)
 
void pushStream (const std::string &name)
 
void popStream ()
 
std::ostream & os ()
 
int & nIndent ()
 
- Protected Member Functions inherited from freetensor::SymbolTable< Visitor >
BaseClass::StmtRetType visit (const VarDef &op) override
 
BaseClass::StmtRetType visit (const For &op) override
 
- Protected Member Functions inherited from freetensor::Visitor
virtual void visitExpr (const Expr &op)
 
virtual void visitStmt (const Stmt &op)
 
virtual void visit (const Any &op)
 
virtual void visit (const AnyExpr &op)
 
virtual void visit (const Func &op)
 
virtual void visit (const StmtSeq &op)
 
virtual void visit (const VarDef &op)
 
virtual void visit (const Var &op)
 
virtual void visit (const Store &op)
 
virtual void visit (const Alloc &op)
 
virtual void visit (const Free &op)
 
virtual void visit (const Load &op)
 
virtual void visit (const ReduceTo &op)
 
virtual void visit (const IntConst &op)
 
virtual void visit (const FloatConst &op)
 
virtual void visit (const BoolConst &op)
 
virtual void visit (const Add &op)
 
virtual void visit (const Sub &op)
 
virtual void visit (const Mul &op)
 
virtual void visit (const RealDiv &op)
 
virtual void visit (const FloorDiv &op)
 
virtual void visit (const CeilDiv &op)
 
virtual void visit (const RoundTowards0Div &op)
 
virtual void visit (const Mod &op)
 
virtual void visit (const Remainder &op)
 
virtual void visit (const Min &op)
 
virtual void visit (const Max &op)
 
virtual void visit (const LT &op)
 
virtual void visit (const LE &op)
 
virtual void visit (const GT &op)
 
virtual void visit (const GE &op)
 
virtual void visit (const EQ &op)
 
virtual void visit (const NE &op)
 
virtual void visit (const LAnd &op)
 
virtual void visit (const LOr &op)
 
virtual void visit (const LNot &op)
 
virtual void visit (const Sqrt &op)
 
virtual void visit (const Exp &op)
 
virtual void visit (const Ln &op)
 
virtual void visit (const Square &op)
 
virtual void visit (const Sigmoid &op)
 
virtual void visit (const Sin &op)
 
virtual void visit (const Cos &op)
 
virtual void visit (const Tan &op)
 
virtual void visit (const Tanh &op)
 
virtual void visit (const Abs &op)
 
virtual void visit (const Floor &op)
 
virtual void visit (const Ceil &op)
 
virtual void visit (const Unbound &op)
 
virtual void visit (const For &op)
 
virtual void visit (const If &op)
 
virtual void visit (const Assert &op)
 
virtual void visit (const Assume &op)
 
virtual void visit (const IfExpr &op)
 
virtual void visit (const Cast &op)
 
virtual void visit (const Intrinsic &op)
 
virtual void visit (const Eval &op)
 
virtual void visit (const MatMul &op)
 
virtual void visit (const MarkVersion &op)
 
virtual void visit (const LoadAtVersion &op)
 

Protected Attributes

bool compact_
 
int indentSize_
 
std::vector< Stream > streamStack_
 
std::vector< Stream > poppedStream_
 
std::unordered_map< std::string, std::string > var2Stream_
 

Additional Inherited Members

- Public Types inherited from freetensor::Visitor
typedef void ExprRetType
 
typedef void StmtRetType
 

Constructor & Destructor Documentation

◆ CodeGen()

template<class Stream >
freetensor::CodeGen< Stream >::CodeGen ( bool  compact = false,
int  indentSize = 2 
)
protected

Member Function Documentation

◆ beginBlock()

template<class Stream >
void freetensor::CodeGen< Stream >::beginBlock

◆ endBlock()

template<class Stream >
void freetensor::CodeGen< Stream >::endBlock

◆ makeIndent()

template<class Stream >
void freetensor::CodeGen< Stream >::makeIndent
protected

◆ markDef()

template<class Stream >
void freetensor::CodeGen< Stream >::markDef ( const VarDef op)
protected

◆ markDefIter()

template<class Stream >
void freetensor::CodeGen< Stream >::markDefIter ( const For op)
protected

◆ markUndef()

template<class Stream >
void freetensor::CodeGen< Stream >::markUndef ( const VarDef op)
protected

◆ markUndefIter()

template<class Stream >
void freetensor::CodeGen< Stream >::markUndefIter ( const For op)
protected

◆ markUse()

template<class Stream >
void freetensor::CodeGen< Stream >::markUse ( const std::string &  name)
protected

◆ markUseIter()

template<class Stream >
void freetensor::CodeGen< Stream >::markUseIter ( const std::string &  name)
protected

◆ nIndent()

template<class Stream >
int & freetensor::CodeGen< Stream >::nIndent
protected

◆ os()

template<class Stream >
std::ostream & freetensor::CodeGen< Stream >::os
protected

◆ popStream()

template<class Stream >
void freetensor::CodeGen< Stream >::popStream
protected

◆ printList()

template<class Stream >
template<class T >
void freetensor::CodeGen< Stream >::printList ( T &&  list)
inlineprotected

◆ pushStream()

template<class Stream >
void freetensor::CodeGen< Stream >::pushStream ( const std::string &  name)
protected

◆ toString()

template<class Stream >
std::string freetensor::CodeGen< Stream >::toString ( const std::function< std::string(const Stream &)> &  action)

Dump all streams to a string

Parameters
action: callback(stream). Do more modification to a stream. Function prelude and finale can be added here

Member Data Documentation

◆ compact_

template<class Stream >
bool freetensor::CodeGen< Stream >::compact_
protected

◆ indentSize_

template<class Stream >
int freetensor::CodeGen< Stream >::indentSize_
protected

◆ poppedStream_

template<class Stream >
std::vector<Stream> freetensor::CodeGen< Stream >::poppedStream_
protected

◆ streamStack_

template<class Stream >
std::vector<Stream> freetensor::CodeGen< Stream >::streamStack_
protected

◆ var2Stream_

template<class Stream >
std::unordered_map<std::string, std::string> freetensor::CodeGen< Stream >::var2Stream_
protected

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