|
FreeTensor
|
#include <code_gen_c.h>


Public Member Functions | |
| CodeGenC (const std::vector< FuncParam > ¶ms, const std::vector< FuncRet > &returns) | |
| virtual std::string | gen (const DataType &dtype) |
Public Member Functions inherited from freetensor::CodeGen< Stream > | |
| 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 VarDef & | def (const std::string &name) const override |
| Ref< Buffer > | buffer (const std::string &name) const override |
| bool | hasLoop (const std::string &name) const override |
| const For & | loop (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 SymbolTableData & | symbolTableSnapshot () 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 VarDef & | def (const std::string &name) const =0 |
| virtual Ref< Buffer > | buffer (const std::string &name) const =0 |
| virtual bool | hasLoop (const std::string &name) const =0 |
| virtual const For & | loop (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 | |
| virtual void | genAlloc (const Ref< Tensor > &tensor, const std::string &rawPtr, const std::string &shapePtr, const std::string &dimPtr)=0 |
| virtual std::function< std::ostream &(std::ostream &)> | genMdPtrType (const VarDef &def, bool isConst=false) |
| virtual void | genMdPtrDef (const VarDef &def, const std::function< void()> &genRawPtr, bool isConst=false) |
| void | genMdPtrDef (const VarDef &def, const std::string &rawPtr, bool isConst=false) |
| virtual void | genScalar (const VarDef &def, const std::vector< Expr > &indices) |
| template<class T > | |
| void | genScalar (const T &op) |
| virtual void | visit (const StmtSeq &op) override |
| virtual void | visit (const VarDef &op) override |
| virtual void | visit (const Var &op) override |
| virtual void | visit (const Store &op) override |
| virtual void | visit (const Alloc &op) override |
| virtual void | visit (const Free &op) override |
| virtual void | visit (const Load &op) override |
| virtual void | visit (const ReduceTo &op) override |
| virtual void | visit (const IntConst &op) override |
| virtual void | visit (const FloatConst &op) override |
| virtual void | visit (const BoolConst &op) override |
| virtual void | visit (const Add &op) override |
| virtual void | visit (const Sub &op) override |
| virtual void | visit (const Mul &op) override |
| virtual void | visit (const RealDiv &op) override |
| virtual void | visit (const FloorDiv &op) override |
| virtual void | visit (const CeilDiv &op) override |
| virtual void | visit (const RoundTowards0Div &op) override |
| virtual void | visit (const Mod &op) override |
| virtual void | visit (const Remainder &op) override |
| virtual void | visit (const Min &op) override |
| virtual void | visit (const Max &op) override |
| virtual void | visit (const LT &op) override |
| virtual void | visit (const LE &op) override |
| virtual void | visit (const GT &op) override |
| virtual void | visit (const GE &op) override |
| virtual void | visit (const EQ &op) override |
| virtual void | visit (const NE &op) override |
| virtual void | visit (const LAnd &op) override |
| virtual void | visit (const LOr &op) override |
| virtual void | visit (const LNot &op) override |
| virtual void | visit (const Sqrt &op) override |
| virtual void | visit (const Exp &op) override |
| virtual void | visit (const Ln &op) override |
| virtual void | visit (const Square &op) override |
| virtual void | visit (const Sigmoid &op) override |
| virtual void | visit (const Sin &op) override |
| virtual void | visit (const Cos &op) override |
| virtual void | visit (const Tan &op) override |
| virtual void | visit (const Tanh &op) override |
| virtual void | visit (const Abs &op) override |
| virtual void | visit (const Floor &op) override |
| virtual void | visit (const Ceil &op) override |
| virtual void | visit (const IfExpr &op) override |
| virtual void | visit (const Cast &op) override |
| virtual void | visit (const For &op) override |
| virtual void | visit (const If &op) override |
| virtual void | visit (const Assert &op) override |
| virtual void | visit (const Intrinsic &op) override |
| virtual void | visit (const Eval &op) override |
Protected Member Functions inherited from freetensor::CodeGen< Stream > | |
| 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) |
Additional Inherited Members | |
Public Types inherited from freetensor::Visitor | |
| typedef void | ExprRetType |
| typedef void | StmtRetType |
Protected Attributes inherited from freetensor::CodeGen< Stream > | |
| bool | compact_ |
| int | indentSize_ |
| std::vector< Stream > | streamStack_ |
| std::vector< Stream > | poppedStream_ |
| std::unordered_map< std::string, std::string > | var2Stream_ |
|
inline |
|
virtual |
|
protectedpure virtual |
Implemented in freetensor::CodeGenCPU.
|
protectedvirtual |
|
inlineprotected |
|
protectedvirtual |
|
inlineprotected |
|
protectedvirtual |
Reimplemented in freetensor::CodeGenCPU.
|
overrideprotectedvirtual |
Reimplemented from freetensor::Visitor.
|
overrideprotectedvirtual |
Reimplemented from freetensor::Visitor.
|
overrideprotectedvirtual |
Reimplemented from freetensor::Visitor.
|
overrideprotectedvirtual |
Reimplemented from freetensor::Visitor.
|
overrideprotectedvirtual |
Reimplemented from freetensor::Visitor.
|
overrideprotectedvirtual |
Reimplemented from freetensor::Visitor.
|
overrideprotectedvirtual |
Reimplemented from freetensor::Visitor.
|
overrideprotectedvirtual |
Reimplemented from freetensor::Visitor.
|
overrideprotectedvirtual |
Reimplemented from freetensor::Visitor.
|
overrideprotectedvirtual |
Reimplemented from freetensor::Visitor.
|
overrideprotectedvirtual |
Reimplemented from freetensor::Visitor.
|
overrideprotectedvirtual |
Reimplemented from freetensor::Visitor.
|
overrideprotectedvirtual |
Reimplemented from freetensor::Visitor.
|
overrideprotectedvirtual |
Reimplemented from freetensor::Visitor.
|
overrideprotectedvirtual |
Reimplemented from freetensor::Visitor.
|
overrideprotectedvirtual |
Reimplemented from freetensor::Visitor.
Reimplemented in freetensor::CodeGenCPU.
|
overrideprotectedvirtual |
Reimplemented from freetensor::Visitor.
|
overrideprotectedvirtual |
Reimplemented from freetensor::Visitor.
|
overrideprotectedvirtual |
Reimplemented from freetensor::Visitor.
|
overrideprotectedvirtual |
Reimplemented from freetensor::Visitor.
|
overrideprotectedvirtual |
Reimplemented from freetensor::Visitor.
|
overrideprotectedvirtual |
Reimplemented from freetensor::Visitor.
|
overrideprotectedvirtual |
Reimplemented from freetensor::Visitor.
|
overrideprotectedvirtual |
Reimplemented from freetensor::Visitor.
|
overrideprotectedvirtual |
Reimplemented from freetensor::Visitor.
|
overrideprotectedvirtual |
Reimplemented from freetensor::Visitor.
|
overrideprotectedvirtual |
Reimplemented from freetensor::Visitor.
|
overrideprotectedvirtual |
Reimplemented from freetensor::Visitor.
|
overrideprotectedvirtual |
Reimplemented from freetensor::Visitor.
|
overrideprotectedvirtual |
Reimplemented from freetensor::Visitor.
|
overrideprotectedvirtual |
Reimplemented from freetensor::Visitor.
|
overrideprotectedvirtual |
Reimplemented from freetensor::Visitor.
|
overrideprotectedvirtual |
Reimplemented from freetensor::Visitor.
|
overrideprotectedvirtual |
Reimplemented from freetensor::Visitor.
|
overrideprotectedvirtual |
Reimplemented from freetensor::Visitor.
|
overrideprotectedvirtual |
Reimplemented from freetensor::Visitor.
|
overrideprotectedvirtual |
Reimplemented from freetensor::Visitor.
Reimplemented in freetensor::CodeGenCPU.
|
overrideprotectedvirtual |
Reimplemented from freetensor::Visitor.
|
overrideprotectedvirtual |
Reimplemented from freetensor::Visitor.
|
overrideprotectedvirtual |
Reimplemented from freetensor::Visitor.
|
overrideprotectedvirtual |
Reimplemented from freetensor::Visitor.
|
overrideprotectedvirtual |
Reimplemented from freetensor::Visitor.
|
overrideprotectedvirtual |
Reimplemented from freetensor::Visitor.
|
overrideprotectedvirtual |
Reimplemented from freetensor::Visitor.
|
overrideprotectedvirtual |
Reimplemented from freetensor::Visitor.
|
overrideprotectedvirtual |
Reimplemented from freetensor::Visitor.
|
overrideprotectedvirtual |
Reimplemented from freetensor::Visitor.
|
overrideprotectedvirtual |
Reimplemented from freetensor::Visitor.
|
overrideprotectedvirtual |
Reimplemented from freetensor::Visitor.
|
overrideprotectedvirtual |
Reimplemented from freetensor::Visitor.
Reimplemented in freetensor::CodeGenCPU.