|
MimIR 0.1
MimIR is my Intermediate Representation
|
| ▼Nautomaton | |
| CAutomatonBase | |
| CDFA | |
| ▼CDFANode | |
| CLt | |
| CNFA | |
| CNFANode | |
| CRangeCompare | |
| ▼Nmim | |
| ▼Nast | |
| CAliasPtrn | ptrn as id |
| CAnnexInfo | |
| CAnnexInfo.id | |
| CAnnexInfo.sym | |
| CAppExpr | callee arg |
| CArrowExpr | dom -> codom |
| CAST | |
| ▼CAxmDecl | 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 | If you have x1 x2 x3 x4: T it consists of 3 GrpPtrns and 1 IdPtrn while each GrpPtrn references the last IdPtrn |
| CHoleExpr | |
| CIdExpr | sym |
| CIdPtrn | dbg: type |
| CImport | |
| CInjExpr | value inj t1 ∪ t2 |
| CInsertExpr | ins(tuple, index, value) |
| ▼CLamDecl | One of: |
| CDom | |
| CLamExpr | Wraps a LamDecl as Expr |
| CLetDecl | let ptrn: type = value; |
| CLexer | |
| CLitExpr | tok:type |
| ▼CMatchExpr | |
| CArm | |
| 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 |
| CRuleDecl | Rewrite rules rule (x:T, y:T) : x+y => y+x (when ); all meta variables have to be introduced |
| CS | |
| CScopes | |
| CSeqExpr | «dbg: arity; body» or ‹dbg: arity; body› |
| CSigmaExpr | Just wraps TuplePtrn as Expr |
| CTok | |
| CTupleExpr | (elem_0, ..., elem_n-1) |
| CTuplePtrn | (ptrn_0, ..., ptrn_n-1), [ptrn_0, ..., ptrn_n-1], or {ptrn_0, ..., ptrn_n-1} |
| CTypeExpr | Type level |
| CUnionExpr | t1 ∪ t2 |
| CUniqExpr | ⦃ expr ⦄ |
| CValDecl | |
| ▼Nlct | |
| CNode | This is an intrusive Link-Cut-Tree |
| ▼Nll | |
| CBB | |
| CEmitter | |
| ▼Nplug | |
| ▼Naffine | The affine Plugin |
| ▼Nphase | |
| CLowerFor | Lowers the for axm to actual control flow in CPS |
| ▼Nautodiff | The automatic differentiation Plugin |
| CEval | This pass is the heart of AD |
| ▼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 | |
| ▼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 |
| ▼Npass | |
| CCopyProp | This FPPass is similar to sparse conditional constant propagation (SCCP) |
| CReshape | The general idea of this Pass is to change the shape of signatures of functions |
| ▼CSSA | SSA construction algorithm that promotes slots, loads, and stores to SSA values |
| CInfo | |
| ▼Nphase | |
| CAddMem | This phase adds mems to all lambdas and continuations |
| ▼Nregex | The regex Plugin |
| Capp_range | |
| CLowerRegex | |
| CAnalysis | This Phase will recursively Rewriter::rewrite |
| CAnnex | Holds info about an entity defined within a Plugin (called Annex) |
| CApp | |
| CArr | A (possibly paramterized) Array |
| ▼CAxm | |
| CIsA | |
| CIsANode | |
| CBetaRed | Optimistically performs β-reduction (aka inlining) |
| CBetaRedPhase | Inlines in post-order all Lams that occur exactly once in the program |
| ▼CBitSet | |
| Creference | |
| CBound | Common base for TBound |
| CBranch | Matches (ff, tt)#cond arg where cond is not a Literal |
| CBranchNormalizePhase | Inlines in post-order all Lams that occur exactly once in the program |
| CChecker | |
| CCleanup | Removes unreachable and dead code by rebuilding the whole World into a new one and swapping them afterwards |
| CClosedMutPhase | Transitively visits all reachable, closed mutables in the World |
| CDbg | |
| CDef | Base class for all Defs |
| CDispatch | Matches a dispatch through a jump table of the form: (target_0, target_1, ...)#index arg where index is not a Literal |
| ▼CDriver | Some "global" variables needed all over the place |
| CImports | |
| CElem | Use with print to output complicated std::ranges::ranges |
| 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 |
| CEtaExpPhase | This phase takes care that Lamdas appear either only in callee position (Known) or not (Unknown) |
| CEtaRed | Performs η-reduction |
| CEtaRedPhase | Inlines in post-order all Lams that occur exactly once in the program |
| 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 | |
| CFNV1< 4 > | |
| CFNV1< 8 > | |
| CFPPass | Inherit from this class using CRTP, if you do need a Pass with a state and a fixed-point |
| CGIDHash | |
| CGIDLt | |
| CGlobal | |
| CHole | This node is a hole in the IR that is inferred by its context later on |
| CIdx | A built-in constant of type Nat -> * |
| CInj | Constructs a Join value |
| 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 |
| CMatch | Scrutinize Match::scrutinee() and dispatch to Match::arms |
| CMerge | Constructs a Meet value |
| CNat | |
| ▼CNest | Builds a nesting tree of all immutables/binders |
| ▼CNode | |
| CChildren | |
| CSiblDeps | |
| CNestPhase | Like ClosedMutPhase but computes a Nest for each NestPhase::visit |
| 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 |
| CPhase | As opposed to a Pass, a Phase does one thing at a time and does not mix with other Phases |
| CPhaseMan | Organizes several Phases in a a pipeline |
| CPi | A dependent function type |
| CPlugin | Basic info and registration function pointer to be returned from a specific plugin |
| CPrefixCleanup | |
| CProd | Base class for Sigma and Tuple |
| CProxy | |
| CReform | Type formation of a rewrite Rule |
| CRepl | Simple Stage that searches for a pattern and replaces it |
| CReplMan | |
| CReplManPhase | |
| CRes | Utility class when folding constants in normalizers |
| CRetWrap | |
| CRewriter | Recurseivly rebuilds part of a program into the provided World w.r.t. Rewriter::map |
| CRule | A rewrite rule |
| CRWPass | Inherit from this class using CRTP, if your Pass does not need state and a fixed-point iteration |
| CRWPhase | Rewrites the RWPhase::old_world into the RWPhase::new_world and swaps them afterwards |
| CScalarize | Perform Scalarization (= Argument simplification) |
| CSCCP | Sparse Conditional Constant Propagation |
| CScheduler | |
| CSelect | Matches (ff, tt)#cond - where cond is not a Literal |
| CSeq | Base class for Arr and Pack |
| ▼CSets | |
| ▼CSet | |
| Citerator | |
| CSetters | CRTP-based mixin to declare setters for Def::loc & Def::name using a covariant return type |
| CSigma | A dependent tuple type |
| CSpan | This is a thin wrapper for std::span<T, N> with the following additional features: |
| CSplit | Picks the aspect of a Meet [value](Pick::value) by its [type](Def::type) |
| CStage | Common base for Phase and Pass |
| CTab | Keeps track of indentation level |
| CTailRecElim | |
| CTBound | Specific Bound depending on Up |
| CTExt | Extremum. Either Top (Up) or Bottom |
| CTuple | Data constructor for a Sigma |
| CType | |
| CUInc | |
| CUMax | |
| CUniq | A singleton wraps a type into a higher order type |
| Cunique_queue | |
| Cunique_stack | |
| CUniv | |
| CUse | Const Def*erences a user |
| CUseEq | |
| CUseHash | |
| CVar | A variable introduced by a binder (mutable) |
| CVarRewriter | |
| CVector | This is a thin wrapper for absl::InlinedVector<T, N, A> which is a drop-in replacement for std::vector<T, A> |
| ▼CWorld | The World represents the whole program and manages creation of MimIR nodes (Defs) |
| CExternals | |
| CFreezer | Use to World::freeze and automatically unfreeze at the end of scope |
| CMove.arena | |
| CScopedLoc | |
| ▼CState | |
| CPOD | Plain Old Data |
| CZonker | |
| ▼Nstd | |
| Ctuple_element< I, mim::Span< T, N > > | |
| Ctuple_size< mim::Span< T, N > > |