MimIR 0.1
MimIR is my Intermediate Representation
|
Classes | |
class | AddMem |
This phase adds mems to all lambdas and continuations. More... | |
class | Alloc2Malloc |
class | CopyProp |
This FPPass is similar to sparse conditional constant propagation (SCCP). More... | |
class | RememElim |
class | Reshape |
The general idea of this pass/phase is to change the shape of signatures of functions. More... | |
class | SSAConstr |
SSA construction algorithm that promotes slots, loads, and stores to SSA values. More... | |
Typedefs | |
using | DefQueue = std::deque<const Def*> |
Enumerations | |
%mem.Ptr | |
enum class | AddrSpace : nat_t { Generic = 0 , Global = 1 , Texture = 2 , Shared = 3 , Constant = 4 } |
enum class | Ptr : flags_t |
%mem.Ptr0 | |
enum class | Ptr0 : flags_t |
%mem.free | |
enum class | free : flags_t |
%mem.ignore | |
enum class | ignore : flags_t |
%mem.rm | |
enum class | rm : flags_t |
%mem.reshape_mode | |
enum class | reshape_mode : flags_t |
%mem.reshape_flat | |
enum class | reshape_flat : flags_t |
%mem.reshape_arg | |
enum class | reshape_arg : flags_t |
%mem.ssa_pass | |
enum class | ssa_pass : flags_t |
%mem.copy_prop_pass | |
enum class | copy_prop_pass : flags_t |
%mem.remem_elim_pass | |
enum class | remem_elim_pass : flags_t |
%mem.alloc2malloc_pass | |
enum class | alloc2malloc_pass : flags_t |
%mem.reshape_pass | |
enum class | reshape_pass : flags_t |
%mem.add_mem_phase | |
enum class | add_mem_phase : flags_t |
Functions | |
void | register_normalizers (Normalizers &normalizers) |
Variables | |
static constexpr plugin_t | Plugin_Id = 0x3863800000000000 |
%mem.M | |
enum class | M : flags_t |
enum class | m : flags_t |
Lam * | mut_con (World &w) |
Yields con[mem.M] . | |
Lam * | mut_con (Ref dom) |
Yields con[mem.M, dom] . | |
Ref | mem_def (Ref def) |
Returns the (first) element of type mem::M from the given tuple. | |
Ref | mem_var (Lam *lam) |
Returns the memory argument of a function if it has one. | |
Ref | replace_mem (Ref mem, Ref arg) |
Swaps the memory occurrences in the given def with the given memory. | |
Ref | strip_mem_ty (Ref def) |
Removes recusively all occurences of mem from a type (sigma). | |
Ref | strip_mem (Ref def) |
Recursively removes all occurrences of mem from a tuple. | |
%mem.load | |
enum class | load : flags_t |
Ref | normalize_load (Ref type, Ref callee, Ref arg) |
%mem.store | |
enum class | store : flags_t |
Ref | normalize_store (Ref type, Ref callee, Ref arg) |
%mem.remem | |
enum class | remem : flags_t |
Ref | op_remem (Ref mem) |
Ref | normalize_remem (Ref type, Ref callee, Ref mem) |
%mem.alloc | |
enum class | alloc : flags_t |
Ref | op_alloc (Ref type, Ref mem) |
%mem.slot | |
enum class | slot : flags_t |
Ref | op_slot (Ref type, Ref mem) |
%mem.malloc | |
enum class | malloc : flags_t |
Ref | op_malloc (Ref type, Ref mem) |
%mem.mslot | |
enum class | mslot : flags_t |
Ref | op_mslot (Ref type, Ref mem, Ref id) |
%mem.lea | |
enum class | lea : flags_t |
Ref | op_lea (Ref ptr, Ref index) |
Ref | op_lea_unsafe (Ref ptr, Ref i) |
Ref | op_lea_unsafe (Ref ptr, u64 i) |
Ref | normalize_lea (Ref type, Ref callee, Ref arg) |
using mim::plug::mem::DefQueue = std::deque<const Def*> |
|
strong |
|
strong |
|
strong |
|
strong |
|
strong |
|
strong |
|
strong |
|
strong |
|
strong |
|
strong |
|
strong |
|
strong |
|
strong |
|
strong |
|
strong |
|
strong |
|
strong |
|
strong |
|
strong |
|
strong |
|
strong |
|
strong |
|
strong |
|
strong |
|
strong |
Returns the (first) element of type mem::M from the given tuple.
Definition at line 25 of file mem.h.
References mim::match(), mem_def(), mim::Def::num_projs(), mim::Def::projs(), and mim::Def::type().
Referenced by mem_def(), mem_var(), and mim::plug::affine::LowerFor::rewrite().
Returns the memory argument of a function if it has one.
Definition at line 38 of file mem.h.
References mem_def(), and mim::Def::var().
Referenced by mim::plug::clos::Clos2SJLJ::enter(), mim::plug::affine::LowerFor::rewrite(), and mim::plug::mem::CopyProp::rewrite().
Yields con[mem.M]
.
Definition at line 16 of file mem.h.
Referenced by dfa2matcher(), mim::plug::clos::Clos2SJLJ::enter(), and mim::plug::matrix::LowerMatrixMediumLevel::rewrite_().
Definition at line 7 of file normalizers.cpp.
References mim::force(), mim::Lit::isa(), mim::Def::projs(), and mim::Def::world().
Definition at line 18 of file normalizers.cpp.
References mim::force(), mim::Def::num_ops(), mim::Def::op(), mim::Def::projs(), and mim::Def::world().
Definition at line 32 of file normalizers.cpp.
References mim::World::raw_app(), and mim::Def::world().
Definition at line 39 of file normalizers.cpp.
References mim::Pack::body(), mim::Def::projs(), and mim::Def::world().
Definition at line 136 of file mem.h.
References mim::Def::world().
Referenced by mim::plug::matrix::LowerMatrixLowLevel::rewrite_imm().
Definition at line 111 of file mem.h.
References mim::force(), mim::tuple_of_types(), mim::Def::type(), and mim::Def::world().
Referenced by op_lea_unsafe().
Definition at line 118 of file mem.h.
References mim::force(), op_lea(), mim::Def::type(), mim::plug::core::u, and mim::Def::world().
Referenced by op_lea_unsafe().
Definition at line 123 of file mem.h.
References mim::World::lit_i64(), op_lea_unsafe(), and mim::Def::world().
Definition at line 152 of file mem.h.
References mim::plug::core::size, and mim::Def::world().
Referenced by mim::plug::mem::Alloc2Malloc::rewrite().
Definition at line 161 of file mem.h.
References mim::plug::core::size, and mim::Def::world().
Referenced by mim::plug::mem::Alloc2Malloc::rewrite().
Definition at line 128 of file mem.h.
Referenced by mim::plug::mem::SSAConstr::rewrite().
Definition at line 144 of file mem.h.
References mim::Def::world().
Referenced by mim::plug::clos::Clos2SJLJ::enter().
void mim::plug::mem::register_normalizers | ( | Normalizers & | normalizers | ) |
Referenced by mim_get_plugin().
Swaps the memory occurrences in the given def with the given memory.
Definition at line 41 of file mem.h.
References mim::match(), mim::Def::num_projs(), and mim::Def::type().
Recursively removes all occurrences of mem from a tuple.
Returns an empty tuple if applied with mem alone.
Definition at line 72 of file mem.h.
References mim::match(), mim::Def::ops(), mim::Def::projs(), strip_mem(), mim::Def::type(), and mim::Def::world().
Referenced by strip_mem().
Removes recusively all occurences of mem from a type (sigma).
Definition at line 54 of file mem.h.
References mim::match(), mim::Def::ops(), strip_mem_ty(), and mim::Def::world().
Referenced by strip_mem_ty().