MimIR
MimIR is my Intermediate Representation
Loading...
Searching...
No Matches
Class List
Here are the classes, structs, unions and interfaces with brief descriptions:
[detail level 12345]
 Nautomaton
 CAutomatonBase
 CDFANode
 CLt
 CDFA
 CNFANode
 CLt
 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
 CLowerIndexLowers the affine index algebra to core arithmetic
 NautodiffThe automatic differentiation Plugin
 Nphase
 CEvalThis phase is the heart of AD
 NbufferThe buffer Plugin
 CLowerPtrLowers the buffer abstraction to the low-level pointer representation
 NclosThe clos Plugin
 Nphase
 CBranchClosElimFlattens branches over closure literals back into a direct branch over Lams
 CClos2SJLJLowers basicblock closures that are passed as arguments (i.e
 CFreeDefAnaComputes, on demand and with memoization, the free Defs that a Lam must capture in its closure environment
 CClosConvPerforms typed closure conversion, rebuilding the old world into a new one
 CClosConvPrepWraps operands with clos.attr markers (returning, free_bb, fstclass_bb, ...) and eta-expands branches and continuations so that ClosConv sees a canonical program
 CLowerTypedClosThis pass lowers typed closures to untyped closures
 CLowerTypedClosPrepEscape analysis for closures: closure literals get their function wrapped in clos.attr.esc or clos.attr.bottom, depending on whether their environment escapes
 CClosLitLightweight, non-owning view onto a closure literal (env_type, fn, env); see isa_clos_lit
 NcpsThe CPS Plugin
 CConvFull CPS conversion in one recursive rewrite
 NgpuThe gpu Plugin
 Nphase
 CMemChecks
 CRemoveDoubleSyncs
 CSplitApply
 CSplitOffKernels
 NllThe ll Plugin
 CBB
 CEmitter
 CEmitPipeline phase for ll.emit
 Nll_nvptxThe ll_nvptx Plugin
 CDeviceEmitFlags
 CEmit
 CHostEmitter
 CDeviceEmitter
 NmatrixThe matrix Plugin
 Nphase
 CLowerAffLowers the buffer-world operations (matrix.map_reduce_aff, matrix.broadcast, matrix.pad, matrix.concat) into affine.For loop nests over buffer.read / buffer.write / buffer.alloc, threading mem.M
 CLowerMatrixHighLevelMapRedResolves lowering of high level operations into medium/other high-level operations
 CLowerMatrixMediumLevelIn this step, we lower map_reduce operations into affine for loops making the iteration scheme explicit
 NmemThe mem Plugin
 Nphase
 CAddMemThreads the mem.M memory monad through the world: mem-extends continuations and rewires every memory operand to the current memory at that program point
 CSEOSymbolic Expression Optimization
 NregexThe regex Plugin
 CLowerRegexLowers a regex axm application to a DFA matcher function
 Capp_range
 NtensorThe tensor Plugin
 Nphase
 CFuse
 CLowerLowers the high-level tensor axioms into the low-level tensor axioms (map_reduce, …)
 CLowerGetSetLowers the tensor axioms (get, set) to their underlying primitives (extract, insert)
 CLowerMapReduceLowers the low-level tensor axioms (map_reduce, pad, concat, broadcast) directly to their underlying primitives (loops, extract, insert, pack, …)
 CLowerToMemBufferizes the low-level tensor axioms onto the shared buffer layer
 Nsexpr
 CBB
 CEmitter
 Nlct
 CNodeThis is an intrusive Link-Cut-Tree
 Nsys
 CCmdNotFoundThrown by sys::require_cmd when a command cannot be located on the system
 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
 CDotConfigOptions for Def::dot and World::dot
 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 for all mutables/binders
 CNode
 CChildren
 CSiblDeps
 CPhaseA Phase performs one self-contained task over the whole World
 CAnalysisTraverses the current World using Rewriter infrastructure while staying in the same world
 CRWPhaseRebuilds old_world() into new_world() and then swaps them
 CReplAn RWPhase that searches for a pattern and replaces it
 CCleanupRemoves unreachable and dead code by rebuilding the whole World into a new one and swapping them afterwards
 CPhaseManOrganizes several Phases into a pipeline
 CClosedMutPhaseTransitively visits all reachable, closed mutables in the World
 CNestPhaseLike ClosedMutPhase but computes a Nest for each NestPhase::visit
 CBetaRedInlines in post-order all Lams that occur exactly once in the program
 CBranchNormalizeNormalizes branches: η-expands non-Lam branch targets so that both sides of a (f, t)#cond branch are Lams, as later phases and the backends expect
 CEtaConvCombined η-normalization: folds η-reduction and η-expansion into a single, idempotent phase
 CLamSpecSpecializes a Lam at its call site by inlining all Pi-typed (i.e. higher-order) arguments
 CPrefixCleanup
 CRetWrap
 CScalarizePerform Scalarization (= Argument simplification)
 CTailRecElimEliminates tail recursion: A returning Lam f that calls itself with its own ret var as continuation is split into a wrapper rec (same signature) and a loop basic block (signature without the ret var); the recursive call becomes a jump to loop
 CVersion
 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
 CProfilerRecords wall-clock timings for (possibly nested) Phase runs and reports them in various formats
 CSpanA single Phase run
 CSets
 CSet
 Citerator
 CSpanThis is a thin wrapper for std::span<T, N> with the following additional features:
 Cunique_queue
 CGIDHash
 CGIDLt
 CRestoreRAII guard that restores ref to its current value at the end of the scope
 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
 CExternals
 CAnnexes
 CEntry
 CMove.arena
 Nstd
 Ctuple_size< mim::Span< T, N > >
 Ctuple_element< I, mim::Span< T, N > >
 Cformatter< mim::ast::S >
 Cformatter< mim::ast::R< T > >
 Cformatter< mim::Op >
 Cformatter< mim::Dump >
 Cformatter< automaton::DFA >
 Cformatter< automaton::NFA >
 CNamedPhase hook for compile.named