|
MimIR 0.1
MimIR is my Intermediate Representation
|
Perform Scalarization (= Argument simplification). More...
#include <mim/pass/scalarize.h>
Public Member Functions | |
| Scalarize (World &world, flags_t annex) | |
| void | init (PassMan *) final |
| const Def * | rewrite (const Def *) override |
Public Member Functions inherited from mim::RWPass< Scalarize, Lam > | |
| RWPass (World &world, std::string name) | |
| RWPass (World &world, flags_t annex) | |
| bool | inspect () const override |
| Should the PassMan even consider this pass? | |
| Lam * | curr_mut () const |
Public Member Functions inherited from mim::Pass | |
| Pass (World &world, std::string name) | |
| Pass (World &world, flags_t annex) | |
| PassMan & | man () |
| const PassMan & | man () const |
| size_t | index () const |
| virtual const Def * | rewrite (const Var *var) |
| virtual const Def * | rewrite (const Proxy *proxy) |
| virtual undo_t | analyze (const Def *) |
| virtual undo_t | analyze (const Var *) |
| virtual undo_t | analyze (const Proxy *) |
| virtual bool | fixed_point () const |
| virtual void | enter () |
| Invoked just before Pass::rewriteing PassMan::curr_mut's body. | |
| virtual void | prepare () |
| Invoked once before entering the main rewrite loop. | |
| const Proxy * | proxy (const Def *type, Defs ops, u32 tag=0) |
| const Proxy * | isa_proxy (const Def *def, u32 tag=0) |
Check whether given def is a Proxy whose Proxy::pass matches this Pass's IPass::index. | |
| const Proxy * | as_proxy (const Def *def, u32 tag=0) |
Public Member Functions inherited from mim::Stage | |
| World & | world () |
| Driver & | driver () |
| Log & | log () const |
| std::string_view | name () const |
| flags_t | annex () const |
| Stage (World &world, std::string name) | |
| Stage (World &world, flags_t annex) | |
| virtual | ~Stage ()=default |
| virtual std::unique_ptr< Stage > | recreate () |
| Creates a new instance; needed by a fixed-point PhaseMan. | |
| virtual void | apply (const App *) |
| Invoked if your Stage has additional args. | |
| virtual void | apply (Stage &) |
| Dito, but invoked by Stage::recreate. | |
Additional Inherited Members | |
| static auto | create (const Flags2Stages &stages, const Def *def) |
| template<class A, class P> | |
| static void | hook (Flags2Stages &stages) |
Protected Attributes inherited from mim::Stage | |
| std::string | name_ |
Perform Scalarization (= Argument simplification).
This means that, i.e.,
will be transformed to
if f appears in callee position only (see EtaExp). It will not flatten mutable Sigmas or Arrays.
Definition at line 20 of file scalarize.h.
Definition at line 22 of file scalarize.h.
References mim::Stage::annex(), mim::RWPass< Scalarize, Lam >::RWPass(), and mim::Stage::world().
|
finalvirtual |
Reimplemented from mim::Pass.
Definition at line 9 of file scalarize.cpp.
References mim::Pass::init(), and mim::Pass::man().
Reimplemented from mim::Pass.
Definition at line 60 of file scalarize.cpp.
References DLOG, mim::flatten(), mim::Def::isa_mut(), rewrite(), and mim::Stage::world().
Referenced by rewrite().