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 12345]
 Nautomaton
 CAutomatonBase
 CDFA
 CDFANode
 CNFA
 CNFANode
 CRangeCompare
 Nmim
 Nast
 CAnnexInfo
 CAnnexInfo.id
 CAnnexInfo.sym
 CAppExprcallee arg
 CArrOrPackExpr«dbg: shape; body» or ‹dbg: shape; body›
 CArrowExprdom -> codom
 CAST
 CAxiomDecl.ax ptrn: type = value;
 CAlias
 CCDecl.cfun dbg dom -> codom
 CDecl
 CDeclExprdecls e or e .where decls if where is true
 CDummyDecl
 CEmitter
 CErrorExpr
 CErrorPtrn
 CExpr
 CExtractExprtuple#index
 CGrpPtrndbg_0 ... dbg_n-2 id where id = dbg_n-1: type
 CIdExprsym
 CIdPtrndbg: type
 CImport
 CInferExpr
 CInsertExpr.ins(tuple, index, value)
 CLamDeclOne of:
 CDom
 CLamExprWraps a LamDecl as Expr
 CLetDecl.let ptrn: type = value;
 CLexer
 CLitExprtok:type
 CModule
 CNode
 CParserParses Mim code as AST
 CPiExprOne of:
 CDom
 CPrimaryExprtag
 CPtrn
 CR
 CRecDecl.rec dbg: type = body
 CRetExpr.ret ptrn = callee $ arg; body
 CS
 CScopes
 CSigmaExprJust wraps TuplePtrn as Expr
 CTok
 CTupleExpr(elem_0, ..., elem_n-1)
 CTuplePtrndbg::(ptrn_0, ..., ptrn_n-1) or dbg::[ptrn_0, ..., ptrn_n-1]
 CTypeExpr.Type level
 CValDecl
 Nll
 CBB
 CEmitter
 Nplug
 NaffineThe affine Plugin
 CLowerForLowers the for axiom to actual control flow in CPS
 NautodiffThe automatic differentiation Plugin
 CAutoDiffEvalThis pass is the heart of AD
 CAutoDiffZeroReplaces calls to the zero axioms with actual zeros
 CAutoDiffZeroCleanupReplaces remaining zeros (not resolvable) with ⊥
 NclosThe clos Plugin
 CBranchClosElim
 CClos2SJLJ
 CClosConvPerforms typed closure conversion
 CClosConvPrep
 CClosLitWrapper around a Def that can be used to match closures (see isa_clos_lit)
 CFreeDefAnaTransitively compute free Def's on demand
 CLowerTypedClosThis pass lowers typed closures to untyped closures
 CLowerTypedClosPrep
 NcompileThe compile Plugin
 CDebugPrint
 CInternalCleanup
 NdirectThe direct style Plugin
 CCPS2DSThis is the second part of ds2cps
 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
 CAddMemThis phase adds mems to all lambdas and continuations
 CAlloc2Malloc
 CCopyPropThis FPPass is similar to sparse conditional constant propagation (SCCP)
 CRememElim
 CReshapeThe general idea of this pass/phase is to change the shape of signatures of functions
 CSSAConstrSSA construction algorithm that promotes slots, loads, and stores to SSA values
 CInfo
 NreflyThe refly Plugin
 CRemoveDbgPermRemoves all refly.debug.perm markers for code gen
 NregexThe regex Plugin
 Capp_range
 CLowerRegex
 CAcConstructs a Meet value
 CAnnexHolds info about an entity defined within a Plugin (called Annex)
 CApp
 CArrA (possibly paramterized) Array
 CAxiom
 CMatchType of Match::def_
 CBetaRedOptimistically performs β-reduction (aka inlining)
 CBitSet
 Creference
 CBoundCommon base for TBound
 CCFAControl Flow Analysis
 CCFGA Control-Flow Graph
 CCFNodeA Control-Flow Node
 CCheck
 CCleanupRemoves unreachable and dead code by rebuilding the whole World into a new one and swapping afterwards
 CClosedMutPhaseTransitively visits all reachable closed mutables (Def::is_closed()) in World
 CDbg
 CDefBase class for all Defs
 CDefDefEq
 CDefDefHash
 CDepNode
 CDepTree
 CDomFrontierBaseA Dominance Frontier Graph
 CDomTreeBaseA Dominance Tree
 CDriverSome "global" variables needed all over the place
 CElem
 CEmitter
 CError
 CMsg
 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
 CExtCommon base for TExtremum
 CExtractExtracts from a Sigma or Array-typed Extract::tuple the element at position Extract::index
 CFlagsCompiler switches that must be saved and looked up in later phases of compilation
 CFNV1
 CFPPassInherit from this class using CRTP, if you do need a Pass with a state and a fixed-point
 CFPPhaseLike a RWPhase but starts with a fixed-point loop of FPPhase::analyze beforehand
 CGIDEq
 CGIDHash
 CGIDLt
 CGlobal
 CIdxA built-in constant of type .Nat -> *
 CIndexMap
 CIndexSet
 Creference
 CInferThis node is a hole in the IR that is inferred by its context later on
 CInsertCreates a new Tuple / Pack by inserting Insert::value at position Insert::index into Insert::tuple
 CLamA function
 CLamSpec
 CLit
 CLogFacility to log what you are doing
 CLoopTreeCalculates a loop nesting forest rooted at LoopTree::root_
 CBaseRepresents a node of a loop nesting forest
 CHeadA Head owns further nodes as children
 CLeafA Leaf only holds a single CFNode and does not have any children
 CLoopTreeBuilder
 CMatch
 CNat
 CPackA (possibly paramterized) Tuple
 CPassAll Passes that want to be registered in the PassMan must implement this interface
 CPassManAn optimizer that combines several optimizations in an optimal way
 CPassManPhaseWraps a PassMan pipeline as a Phase
 CPassPhaseWraps a Pass as a Phase
 CPhaseAs opposed to a Pass, a Phase does one thing at a time and does not mix with other Phases
 CPiA dependent function type
 CPickPicks the aspect of a Meet [value](Pick::value) by its [type](Def::type)
 CPipelineOrganizes several Phases as a pipeline
 CPipelineBuilder
 CPluginBasic info and registration function pointer to be returned from a specific plugin
 CPoolMaintains PooledSets within a fe::Arena and unifies them in a absl::flat_hash_set
 CPooledSetOrdered set maintained in a consecutive buffer and unified in Pool
 CData
 CEqual
 CProxy
 CRefHelper class to retrieve Infer::arg if present
 CResUtility class when folding constants in normalizers
 CRetWrap
 CRewriterRecurseivly rewrites part of a program into the provided World
 CRWPassInherit from this class using CRTP, if your Pass does not need state and a fixed-point iteration
 CRWPhaseVisits the current Phase::world and constructs a new RWPhase::world along the way
 CScalarizePerform Scalarization (= Argument simplification)
 CScheduler
 CScopeA Scope represents a region of Defs that are live from the view of an entry's Var
 CScopePhaseTransitively visits all reachable Scopes in World that do not have free variables
 CSigmaA dependent tuple type
 CSingletonA singleton wraps a type into a higher order type
 CSpanThis is a thin wrapper for std::span<T, N> with the following additional features:
 CTabKeeps track of indentation level
 CTailRecElim
 CTBoundSpecific Bound depending on Up
 CTestTest whether Test::value currently holds type Test::probe:
 CTExtExtremum. Either Top (Up) or Bottom
 CTupleData constructor for a Sigma
 CType
 CUInc
 CUMax
 Cunique_queue
 Cunique_stack
 CUniv
 CUseReferences a user
 CUseEq
 CUseHash
 CVar
 CVarRewriter
 CVectorThis is a thin wrapper for absl::InlinedVector<T, N, / A> which in turn is a drop-in replacement for std::vector<T, A>
 CVelConstructs a Join value
 CWorldThe World represents the whole program and manages creation of MimIR nodes (Defs)
 CFreezerUse to World::freeze and automatically unfreeze at the end of scope
 CScopedLoc
 CState
 CPODPlain Old Data
 Nstd
 Ctuple_element< I, mim::Span< T, N > >
 Ctuple_size< mim::Span< T, N > >
 CDebugDumpA pass that just dumps the world