7 #include <llvm/Support/raw_ostream.h>
9 #include "core/block.h"
29 void WriteDefinition(
const Func &func);
31 void Write(Block::const_iterator it);
33 void Unary(Block::const_iterator it,
const char *op);
35 void Binary(Block::const_iterator it,
const char *op);
37 void Mov(Block::const_iterator it);
39 template<
unsigned Bits>
40 void MovInt(Block::const_iterator it,
const char *op,
const APInt &val);
43 void WriteInversion(
const Func &func);
45 void WriteDefinedAtInversion(
const Func &func);
47 void WriteUsedAtInversion(
const Func &func);
49 void WriteBlocks(
const Func &func);
51 void WriteDominators(
const Func &func);
54 void WriteUsesHaveDefs(
const Func &func);
56 void WriteDefsAreUniqe(
const Func &func);
58 void WriteWellTyped(
const Func &func);
64 std::string Name(
const Func &func);
74 std::unordered_map<const Atom *, AtomID> atoms_;
77 std::unordered_map<const Func *, unsigned> funcs_;
79 std::unordered_map<const Block *, unsigned> blocks_;
81 std::unordered_map<ConstRef<Inst>,
unsigned> insts_;
83 llvm::raw_ostream &os_;