1#ifndef FREE_TENSOR_CODE_GEN_H
2#define FREE_TENSOR_CODE_GEN_H
7#include <unordered_map>
8#include <unordered_set>
20 std::ostringstream
os_;
22 std::unordered_map<std::string, VarDef>
useDefs_;
34 std::unordered_map<std::string, std::string>
40 for (
auto &&[i, item] : views::enumerate(list)) {
48 CodeGen(
bool compact =
false,
int indentSize = 2);
51 void markUse(
const std::string &name);
75 toString(
const std::function<std::string(
const Stream &)> &action);
85NativeCode
codeGen(
const Func &func,
const Ref<Target> &target);
Definition: code_gen.h:28
std::string toString(const std::function< std::string(const Stream &)> &action)
Definition: code_gen.h:96
void pushStream(const std::string &name)
Definition: code_gen.h:77
void markDefIter(const For &op)
Definition: code_gen.h:55
void printList(T &&list)
Definition: code_gen.h:39
void markUndefIter(const For &op)
Definition: code_gen.h:71
void beginBlock()
Definition: code_gen.h:17
bool compact_
Definition: code_gen.h:30
int indentSize_
Definition: code_gen.h:31
void markUseIter(const std::string &name)
Definition: code_gen.h:61
int & nIndent()
Definition: code_gen.h:91
void makeIndent()
Definition: code_gen.h:28
std::ostream & os()
Definition: code_gen.h:87
void markUndef(const VarDef &op)
Definition: code_gen.h:50
void endBlock()
Definition: code_gen.h:22
std::unordered_map< std::string, std::string > var2Stream_
Definition: code_gen.h:35
std::vector< Stream > streamStack_
Definition: code_gen.h:32
std::vector< Stream > poppedStream_
Definition: code_gen.h:32
void markDef(const VarDef &op)
Definition: code_gen.h:34
void popStream()
Definition: code_gen.h:82
void markUse(const std::string &name)
Definition: code_gen.h:39
Definition: symbol_table.h:122
Definition: allocator.h:9
NativeCode codeGen(const Func &func, const Ref< Target > &target)
Definition: code_gen.cc:7
Ref< FuncNode > Func
Definition: func.h:64
Definition: code_gen.h:18
std::unordered_set< std::string > useIters_
Definition: code_gen.h:23
CodeGenStream()
Definition: code_gen.h:9
int nIndent_
Definition: code_gen.h:21
std::ostringstream os_
Definition: code_gen.h:20
std::string name_
Definition: code_gen.h:19
std::unordered_map< std::string, VarDef > useDefs_
Definition: code_gen.h:22