MimIR 0.1
MimIR is my Intermediate Representation
Loading...
Searching...
No Matches
Class List
Here are the classes, structs, unions and interfaces with brief descriptions:
[detail level 123456]
 Nautomaton
 CAutomatonBase
 CDFANode
 CLt
 CDFA
 CNFANode
 CNFA
 CRangeCompare
 Nmim
 Nast
 CAnnexInfo
 CAST
 CNode
 CExpr
 CDecl
 CValDecl
 CPtrn
 CErrorPtrn
 CIdPtrndbg: type
 CGrpPtrnIf you have x1 x2 x3 x4: T it consists of 3 GrpPtrns and 1 IdPtrn while each GrpPtrn references the last IdPtrn
 CAliasPtrnptrn as id
 CTuplePtrn(ptrn_0, ..., ptrn_n-1), [ptrn_0, ..., ptrn_n-1], or {ptrn_0, ..., ptrn_n-1}
 CErrorExpr
 CHoleExpr
 CIdExprsym
 CPrimaryExprtag
 CLitExprtok:type
 CDeclExprdecls e or e where decls if where is true
 CTypeExprType level
 CRuleExprReform (type of a rule) Rule type
 CUnionExprt1 ∪ t2
 CInjExprvalue inj t1 ∪ t2
 CMatchExpr
 CArm
 CArrowExprdom -> codom
 CPiExprOne of:
 CDom
 CLamExprWraps a LamDecl as Expr
 CAppExprcallee arg
 CRetExprret ptrn = callee $ arg; body
 CSigmaExprJust wraps TuplePtrn as Expr
 CTupleExpr(elem_0, ..., elem_n-1)
 CSeqExpr«dbg: arity; body» or ‹dbg: arity; body›
 CExtractExprtuple#index
 CInsertExprins(tuple, index, value)
 CUniqExpr⦃ expr ⦄
 CLetDecllet ptrn: type = value;
 CAxmDeclaxm ptrn: type = value;
 CAlias
 CRecDecl.rec dbg: type = body
 CLamDeclOne of:
 CDom
 CCDeclcfun dbg dom -> codom
 CRuleDeclRewrite rules rule (x:T, y:T) : x+y => y+x (when ); all meta variables have to be introduced
 CImport
 CModule
 CLexer
 CParserParses Mim code as AST
 CTok
 CDummyDecl
 CScopes
 CEmitter
 CS
 CR
 CAnnexInfo.sym
 CAnnexInfo.id
 Nplug
 NaffineThe affine Plugin
 Nphase
 CLowerForLowers the for axm to actual control flow in CPS
 NautodiffThe automatic differentiation Plugin
 CEvalThis pass is the heart of AD
 NclosThe clos Plugin
 CClosLitWrapper around a Def that can be used to match closures (see isa_clos_lit)
 CBranchClosElim
 CClos2SJLJ
 CClosConvPrep
 CLowerTypedClosPrep
 CFreeDefAnaTransitively compute free Def's on demand
 CClosConvPerforms typed closure conversion
 CLowerTypedClosThis pass lowers typed closures to untyped closures
 NdirectThe direct style Plugin
 CCPS2DSPhaseRewrite direct.cps2ds to cps
 CDS2CPSConverts direct style function to cps functions
 NmatrixThe matrix Plugin
 CLowerMatrixHighLevelMapRedResolves lowering of high level operations into medium/other high-level operations
 CLowerMatrixLowLevelIn this phase, we lower all matrix operations and types to the low-level representation using pointers
 CLowerMatrixMediumLevelIn this step, we lower map_reduce operations into affine for loops making the iteration scheme explicit
 NmemThe mem Plugin
 Npass
 CCopyPropThis FPPass is similar to sparse conditional constant propagation (SCCP)
 CReshapeThe general idea of this Pass is to change the shape of signatures of functions
 CSSASSA construction algorithm that promotes slots, loads, and stores to SSA values
 CInfo
 Nphase
 CAddMemThis phase adds mems to all lambdas and continuations
 NregexThe regex Plugin
 CLowerRegex
 Capp_range
 Nll
 CBB
 CEmitter
 Nsexpr
 CBB
 CEmitter
 Nlct
 CNodeThis is an intrusive Link-Cut-Tree
 CAxm
 CIsANode
 CIsA
 CEmitter
 CHoleThis node is a hole in the IR that is inferred by its context later on
 CChecker
 CSettersCRTP-based mixin to declare setters for Def::loc & Def::name using a covariant return type
 CDefBase class for all Defs
 CVarA variable introduced by a binder (mutable)
 CUniv
 CUMax
 CUInc
 CType
 CLit
 CNat
 CIdxA built-in constant of type Nat -> *
 CProxy
 CGlobal
 CDriverSome "global" variables needed all over the place
 CImports
 CEntry
 CFlagsCompiler switches that must be saved and looked up in later phases of compilation
 CPiA dependent function type
 CLamA function
 CApp
 CBoundCommon base for TBound
 CTBoundSpecific Bound depending on Up
 CMergeConstructs a Meet value
 CInjConstructs a Join value
 CSplitPicks the aspect of a Meet [value](Pick::value) by its [type](Def::type)
 CMatchScrutinize Match::scrutinee() and dispatch to Match::arms
 CExtCommon base for TExtremum
 CTExtExtremum. Either Top (Up) or Bottom
 CUniqA singleton wraps a type into a higher order type
 CNestBuilds a nesting tree of all mutables‍/binders
 CNode
 CChildren
 CSiblDeps
 CResUtility class when folding constants in normalizers
 CStageCommon base for Phase and Pass
 CPassAll Passes that want to be registered in the PassMan must implement this interface
 CPassManAn optimizer that combines several optimizations in an optimal way
 CRWPassInherit from this class using CRTP, if your Pass does not need state and a fixed-point iteration
 CFPPassInherit from this class using CRTP, if you do need a Pass with a state and a fixed-point
 CBetaRedOptimistically performs β-reduction (aka inlining)
 CEtaExpPerforms η-expansion: f -> λx.f x, if f is a Lam with more than one user and does not appear in callee position
 CEtaRedPerforms η-reduction
 CLamSpec
 CScalarizePerform Scalarization (= Argument simplification)
 CTailRecElim
 CPhaseAs opposed to a Pass, a Phase does one thing at a time and does not mix with other Phases
 CAnalysisThis Phase will recursively Rewriter::rewrite
 CRWPhaseRewrites the RWPhase::old_world into the RWPhase::new_world and swaps them afterwards
 CReplSimple Stage that searches for a pattern and replaces it
 CReplMan
 CReplManPhase
 CCleanupRemoves unreachable and dead code by rebuilding the whole World into a new one and swapping them afterwards
 CPassManPhaseWraps a PassMan pipeline as a Phase
 CPhaseManOrganizes several Phases in a a pipeline
 CClosedMutPhaseTransitively visits all reachable, closed mutables in the World
 CNestPhaseLike ClosedMutPhase but computes a Nest for each NestPhase::visit
 CBetaRedPhaseInlines in post-order all Lams that occur exactly once in the program
 CBranchNormalizePhaseInlines in post-order all Lams that occur exactly once in the program
 CEtaExpPhaseThis phase takes care that Lamdas appear either only in callee position (Known) or not (Unknown)
 CEtaRedPhaseInlines in post-order all Lams that occur exactly once in the program
 CPrefixCleanup
 CRetWrap
 CSymExprOptSymbolic Expression Optimization
 CPluginBasic info and registration function pointer to be returned from a specific plugin
 CAnnexHolds info about an entity defined within a Plugin (called Annex)
 CRewriterRecurseivly rebuilds part of a program into the provided World w.r.t. Rewriter::map
 CVarRewriterExtends Rewriter for variable substitution
 CZonker
 CReformType formation of a rewrite Rule
 CRuleA rewrite rule
 CUseConst Def*erences a user
 CUseHash
 CUseEq
 CScheduler
 CProdBase class for Sigma and Tuple
 CSigmaA dependent tuple type
 CTupleData constructor for a Sigma
 CSeqBase class for Arr and Pack
 CArrA (possibly paramterized) Array
 CPackA (possibly paramterized) Tuple
 CExtractExtracts from a Sigma or Array-typed Extract::tuple the element at position Extract::index
 CInsertCreates a new Tuple / Pack by inserting Insert::value at position Insert::index into Insert::tuple
 CSelectMatches (ff, tt)#cond - where cond is not a Literal
 CBranchMatches (ff, tt)#cond arg where cond is not a Literal
 CDispatchMatches a dispatch through a jump table of the form: (target_0, target_1, ...)#index arg where index is not a Literal
 CError
 CMsg
 CDbg
 CFNV1
 CFNV1< 4 >
 CFNV1< 8 >
 CLogFacility to log what you are doing
 CElemUse with print to output complicated std::ranges::ranges
 CStreamFnCreate function-wrapper objects amenable for opeartor<<
 CTabKeeps track of indentation level
 CSets
 CSet
 Citerator
 CSpanThis is a thin wrapper for std::span<T, N> with the following additional features:
 Cunique_stack
 Cunique_queue
 CGIDHash
 CGIDLt
 CVectorThis is a thin wrapper for absl::InlinedVector<T, N, A> which is a drop-in replacement for std::vector<T, A>
 CWorldThe World represents the whole program and manages creation of MimIR nodes (Defs)
 CState
 CPODPlain Old Data
 CScopedLoc
 CFreezerUse to World::freeze and automatically unfreeze at the end of scope
 CExternals
 CMove.arena
 Nstd
 Ctuple_size< mim::Span< T, N > >
 Ctuple_element< I, mim::Span< T, N > >