MimIR 0.1
MimIR is my Intermediate Representation
|
▼Nautomaton | |
CAutomatonBase | |
CDFA | |
CDFANode | |
CNFA | |
CNFANode | |
CRangeCompare | |
▼Nmim | |
▼Nast | |
CAnnexInfo | |
CAnnexInfo.id | |
CAnnexInfo.sym | |
CAppExpr | callee arg |
CArrOrPackExpr | «dbg: shape; body» or ‹dbg: shape; body› |
CArrowExpr | dom -> codom |
CAST | |
▼CAxiomDecl | axm ptrn: type = value; |
CAlias | |
CCDecl | cfun dbg dom -> codom |
CDecl | |
CDeclExpr | decls e or e where decls if where is true |
CDummyDecl | |
CEmitter | |
CErrorExpr | |
CErrorPtrn | |
CExpr | |
CExtractExpr | tuple#index |
CGrpPtrn | dbg_0 ... dbg_n-2 id where id = dbg_n-1: type |
CIdExpr | sym |
CIdPtrn | dbg: type |
CImport | |
CInferExpr | |
CInsertExpr | ins(tuple, index, value) |
▼CLamDecl | One of: |
CDom | |
CLamExpr | Wraps a LamDecl as Expr |
CLetDecl | let ptrn: type = value; |
CLexer | |
CLitExpr | tok:type |
CModule | |
CNode | |
CParser | Parses Mim code as AST |
▼CPiExpr | One of: |
CDom | |
CPrimaryExpr | tag |
CPtrn | |
CR | |
CRecDecl | .rec dbg: type = body |
CRetExpr | ret ptrn = callee $ arg; body |
CS | |
CScopes | |
CSigmaExpr | Just wraps TuplePtrn as Expr |
CTok | |
CTupleExpr | (elem_0, ..., elem_n-1) |
CTuplePtrn | dbg::(ptrn_0, ..., ptrn_n-1) or dbg::[ptrn_0, ..., ptrn_n-1] |
CTypeExpr | Type level |
CValDecl | |
▼Nll | |
CBB | |
CEmitter | |
▼Nplug | |
▼Naffine | The affine Plugin |
CLowerFor | Lowers the for axiom to actual control flow in CPS |
▼Nautodiff | The automatic differentiation Plugin |
CAutoDiffEval | This pass is the heart of AD |
CAutoDiffZero | Replaces calls to the zero axioms with actual zeros |
CAutoDiffZeroCleanup | Replaces remaining zeros (not resolvable) with ⊥ |
▼Nclos | The clos Plugin |
CBranchClosElim | |
CClos2SJLJ | |
CClosConv | Performs typed closure conversion |
CClosConvPrep | |
CClosLit | Wrapper around a Def that can be used to match closures (see isa_clos_lit) |
CFreeDefAna | Transitively compute free Def's on demand |
CLowerTypedClos | This pass lowers typed closures to untyped closures |
CLowerTypedClosPrep | |
▼Ncompile | The compile Plugin |
CDebugPrint | |
CInternalCleanup | |
▼Ndirect | The direct style Plugin |
CCPS2DS | This is the second part of ds2cps |
CDS2CPS | Converts direct style function to cps functions |
▼Nmatrix | The matrix Plugin |
CLowerMatrixHighLevelMapRed | Resolves lowering of high level operations into medium/other high-level operations |
CLowerMatrixLowLevel | In this phase, we lower all matrix operations and types to the low-level representation using pointers |
CLowerMatrixMediumLevel | In this step, we lower map_reduce operations into affine for loops making the iteration scheme explicit |
▼Nmem | The mem Plugin |
CAddMem | This phase adds mems to all lambdas and continuations |
CAlloc2Malloc | |
CCopyProp | This FPPass is similar to sparse conditional constant propagation (SCCP) |
CRememElim | |
CReshape | The general idea of this pass/phase is to change the shape of signatures of functions |
▼CSSAConstr | SSA construction algorithm that promotes slots, loads, and stores to SSA values |
CInfo | |
▼Nrefly | The refly Plugin |
CRemoveDbgPerm | Removes all refly.debug.perm markers for code gen |
▼Nregex | The regex Plugin |
Capp_range | |
CLowerRegex | |
CAc | Constructs a Meet value |
CAnnex | Holds info about an entity defined within a Plugin (called Annex) |
CApp | |
CArr | A (possibly paramterized) Array |
▼CAxiom | |
CMatch | Type of Match::def_ |
CBetaRed | Optimistically performs β-reduction (aka inlining) |
▼CBitSet | |
Creference | |
CBound | Common base for TBound |
CCFA | Control Flow Analysis |
CCFG | A Control-Flow Graph |
CCFNode | A Control-Flow Node |
CCheck | |
CCleanup | Removes unreachable and dead code by rebuilding the whole World into a new one and swap ping afterwards |
CClosedMutPhase | Transitively visits all reachable closed mutables (Def::is_closed()) in World |
CDbg | |
CDef | Base class for all Defs |
CDefDefEq | |
CDefDefHash | |
CDepNode | |
CDepTree | |
CDomFrontierBase | A Dominance Frontier Graph |
CDomTreeBase | A Dominance Tree |
CDriver | Some "global" variables needed all over the place |
CElem | |
CEmitter | |
▼CError | |
CMsg | |
CEtaExp | Performs η-expansion: f -> λx.f x , if f is a Lam with more than one user and does not appear in callee position |
CEtaRed | Performs η-reduction |
CExt | Common base for TExtremum |
CExtract | Extracts from a Sigma or Array-typed Extract::tuple the element at position Extract::index |
CFlags | Compiler switches that must be saved and looked up in later phases of compilation |
CFNV1 | |
CFPPass | Inherit from this class using CRTP, if you do need a Pass with a state and a fixed-point |
CFPPhase | Like a RWPhase but starts with a fixed-point loop of FPPhase::analyze beforehand |
CGIDEq | |
CGIDHash | |
CGIDLt | |
CGlobal | |
CIdx | A built-in constant of type Nat -> * |
CIndexMap | |
▼CIndexSet | |
Creference | |
CInfer | This node is a hole in the IR that is inferred by its context later on |
CInsert | Creates a new Tuple / Pack by inserting Insert::value at position Insert::index into Insert::tuple |
CLam | A function |
CLamSpec | |
CLit | |
CLog | Facility to log what you are doing |
▼CLoopTree | Calculates a loop nesting forest rooted at LoopTree::root_ |
CBase | Represents a node of a loop nesting forest |
CHead | A Head owns further nodes as children |
CLeaf | A Leaf only holds a single CFNode and does not have any children |
CLoopTreeBuilder | |
CMatch | |
CNat | |
CPack | A (possibly paramterized) Tuple |
CPass | All Passes that want to be registered in the PassMan must implement this interface |
CPassMan | An optimizer that combines several optimizations in an optimal way |
CPassManPhase | Wraps a PassMan pipeline as a Phase |
CPassPhase | Wraps a Pass as a Phase |
CPhase | As opposed to a Pass, a Phase does one thing at a time and does not mix with other Phases |
CPi | A dependent function type |
CPick | Picks the aspect of a Meet [value](Pick::value) by its [type](Def::type) |
CPipeline | Organizes several Phases as a pipeline |
CPipelineBuilder | |
CPlugin | Basic info and registration function pointer to be returned from a specific plugin |
CPool | Maintains PooledSets within a fe::Arena and unifies them in a absl::flat_hash_set |
▼CPooledSet | Ordered set maintained in a consecutive buffer and unified in Pool |
▼CData | |
CEqual | |
CProxy | |
CRef | Helper class to retrieve Infer::arg if present |
CRes | Utility class when folding constants in normalizers |
CRetWrap | |
CRewriter | Recurseivly rewrites part of a program into the provided World |
CRWPass | Inherit from this class using CRTP, if your Pass does not need state and a fixed-point iteration |
CRWPhase | Visits the current Phase::world and constructs a new RWPhase::world along the way |
CScalarize | Perform Scalarization (= Argument simplification) |
CScheduler | |
CScope | A Scope represents a region of Defs that are live from the view of an entry's Var |
CScopePhase | Transitively visits all reachable Scopes in World that do not have free variables |
CSetters | CRTP-based Mixin to declare setters for Def::loc & Def::name using a covariant return type |
CSigma | A dependent tuple type |
CSingleton | A singleton wraps a type into a higher order type |
CSpan | This is a thin wrapper for std::span<T, N> with the following additional features: |
CTab | Keeps track of indentation level |
CTailRecElim | |
CTBound | Specific Bound depending on Up |
CTest | Test whether Test::value currently holds type Test::probe: |
CTExt | Extremum. Either Top (Up ) or Bottom |
CTuple | Data constructor for a Sigma |
CType | |
CUInc | |
CUMax | |
Cunique_queue | |
Cunique_stack | |
CUniv | |
CUse | References a user |
CUseEq | |
CUseHash | |
CVar | |
CVarRewriter | |
CVector | This is a thin wrapper for absl::InlinedVector<T, N, / A> which in turn is a drop-in replacement for std::vector<T, A> |
CVel | Constructs a Join value |
▼CWorld | The World represents the whole program and manages creation of MimIR nodes (Defs) |
CFreezer | Use to World::freeze and automatically unfreeze at the end of scope |
CScopedLoc | |
▼CState | |
CPOD | Plain Old Data |
▼Nstd | |
Ctuple_element< I, mim::Span< T, N > > | |
Ctuple_size< mim::Span< T, N > > | |
CDebugDump | A pass that just dumps the world |