32 void start()
override;
36 const Def* lower_get(
const App*);
37 const Def* lower_set(
const App*);
38 const Def* lower_broadcast(
const App*);
40 const Def* lower_pad(
const App*);
41 const Def* lower_concat(
const App*);
45 const Def* lower_call(
const App*,
Lam* old_callee);
49 const Def* materialize(
const Def* old_ty,
const Def* old_arg);
55 const Def* splat_buffer(
const Def* arr_ty,
const Def* scalar);
59 bool reuse_in_place(
const App*)
const {
return false; }
64 void collect_tensor_types();
67 const Def* buf_of(
const Def* arr_ty);
71 const Def* conv_boundary(
const Def* t);
83 bool is_tensor_fn(
Lam*)
const;
87 bool mentions_tensor(
const Def*)
const;
94 bool ops_seen_ =
false;
RWPhase(World &world, std::string name, Analysis *analysis=nullptr)
World & world()=delete
Hides both and forbids direct access.
The World represents the whole program and manages creation of MimIR nodes (Defs).
const Def * rewrite_mut_Lam(Lam *) override
void start() override
Actual entry.
const Def * rewrite_imm_App(const App *) override
LowerToMem(World &world, flags_t annex)
GIDSet< const Def * > DefSet