| Cmim::World::Move::[struct].arena | |
| Cmim::ast::AnnexInfo::[struct].id | |
| Cmim::ast::AnnexInfo::[struct].sym | |
| Cmim::Annex | Holds info about an entity defined within a Plugin (called Annex) |
| Cmim::World::Annexes | |
| Cmim::ast::AnnexInfo | Bookkeeping of an annex introduced by an AxmDecl |
| Cmim::plug::regex::app_range | |
| Cmim::ast::AST | Owns the arena all AST nodes live in as well as the AnnexInfos of all plugins |
| Cautomaton::AutomatonBase< NodeType > | |
| Cautomaton::AutomatonBase< DFANode > | |
| Cautomaton::DFA | |
| Cautomaton::AutomatonBase< NFANode > | |
| Cautomaton::NFA | |
| Cmim::plug::ll::BB | |
| Cmim::sexpr::BB | |
| Cmim::ast::Bind | One name in a Scope: the Decl it introduces and the Vis of this binding |
| Cmim::Checker | |
| Cmim::Nest::Node::Children | |
| Cmim::plug::clos::ClosLit | Lightweight, non-owning view onto a closure literal (env_type, fn, env); see isa_clos_lit |
| Cfe::CodeDiag | |
| Cmim::Diag | Renders a diagnostic through PlainNames and - if that turned out ambiguous - once more with Def::unique_name |
| Cmim::World::CurrLoc | World::get_loc together with its interned DbgKey, so pushing/popping a Loc never re-interns it |
| Cmim::DefKey | Grants fe::Patricia access to Def::gid_ |
| Cmim::plug::ll_nvptx::DeviceEmitFlags | |
| Cautomaton::DFANode | |
| Cmim::Dispatch | Matches a dispatch through a jump table of the form: (target_0, target_1, ...)#index arg where index is not a Literal |
| Cmim::DotConfig | Options for Def::dot and World::dot |
| Cfe::Driver | |
| Cmim::Driver | Some "global" variables needed all over the place |
| Cmim::ast::Emitter | |
| Cmim::Driver::Imports::Entry | |
| Cmim::World::Annexes::Entry | |
| Cmim::World::Externals | |
| Cmim::Flags | Compiler switches that must be saved and looked up in later phases of compilation |
| Cmim::plug::clos::phase::FreeDefAna | Computes, on demand and with memoization, the free Defs that a Lam must capture in its closure environment |
| Cmim::GIDHash< T > | |
| Cmim::GIDLt< T > | |
| Cmim::Driver::Imports | |
| Cmim::Axm::IsA< Id, D > | |
| Cmim::Axm::IsANode< T > | |
| Cfe::Lexer | |
| Cmim::ast::Lexer | |
| Cautomaton::DFANode::Lt | |
| Cautomaton::NFANode::Lt | |
| Cmim::ast::Mods | Raw, unvalidated combination of priv/pub/extern/anx modifiers written before a declaration |
| Cmim::Driver::Names | |
| Cmim::Nest | Builds a nesting tree for all mutables/binders |
| Cautomaton::NFANode | |
| Cmim::Nest::Node | |
| Cabsl::node_hash_map | |
| Cmim::ast::AST::Files | |
| Cmim::detail::NullSafeDefGIDLt | Like GIDLt, but the nesting virtual root is represented as a nullptr Def%, which must sort first |
| Cmim::Out | A file name from the command line and the stream to write to; |
| Cfe::Parser | |
| Cmim::ast::Parser | Parses Mim code as AST |
| Cmim::Driver::Paths | An ordered list of directories |
| Cmim::PlainNames | Renders Defs with their plain Def::sym instead of Def::unique_name while alive |
| Cmim::Plugin | Basic info and registration function pointer to be returned from a specific plugin |
| Cmim::PluginArg | One -X <plugin>:<arg> a Plugin understands; see Arguments |
| Cmim::PluginEnv | One environment variable a Plugin reads; see Environment Variables |
| Cmim::World::State::POD | Plain Old Data |
| Cmim::plug::tensor::PureRead | A pure re-indexed read: the source tensor, the access map into it (over the read's output coordinates), and the source's element type/rank/shape |
| Cmim::ast::R< T > | |
| Cautomaton::RangeCompare | |
| Cmim::Rewriter | Recurseivly rebuilds part of a program into the provided World w.r.t. Rewriter::map |
| Cmim::Analysis | Traverses the current World using Rewriter infrastructure while staying in the same world |
| Cmim::plug::gpu::phase::MemChecks | |
| Cmim::RWBase | Common base of the two rewriting Phases: RWPhase rebuilds the World, InplaceRWPhase stays in it |
| Cmim::InplaceRWPhase | Rewrites the current World in place - unlike an RWPhase, which rebuilds a new World |
| Cmim::BetaRed | Inlines in post-order all Lams that occur exactly once in the program |
| Cmim::EtaConv | Combined η-normalization: folds η-reduction and η-expansion into a single, idempotent phase |
| Cmim::RWPhase | Rebuilds old_world() into new_world() and then swaps them |
| Cmim::BranchNormalize | Normalizes 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 |
| Cmim::Cleanup | Removes unreachable and dead code by rebuilding the whole World into a new one and swapping them afterwards |
| Cmim::LamSpec | Specializes a Lam at its call site by inlining all Pi-typed (i.e. higher-order) arguments |
| Cmim::Repl | An RWPhase that searches for a pattern and replaces it |
| Cmim::RetWrap | |
| Cmim::Scalarize | Perform Scalarization (= Argument simplification) |
| Cmim::StaticArgOpt | Static Argument Transformation |
| Cmim::plug::affine::phase::LowerFor | Lowers the for axm to actual control flow in CPS |
| Cmim::plug::affine::phase::LowerIndex | Lowers the affine index algebra to core arithmetic |
| Cmim::plug::autodiff::phase::Eval | This phase is the heart of AD |
| Cmim::plug::btensor::phase::LowerMapReduce | Lowers the buffer-world operations (btensor.map_reduce_post, btensor.broadcast, btensor.pad, btensor.concat, btensor.gather, btensor.scatter) into affine.For loop nests over buffer.read / buffer.write / buffer.alloc, threading mem.M |
| Cmim::plug::buffer::LowerPtr | Lowers the buffer abstraction to the low-level pointer representation |
| Cmim::plug::clos::phase::BranchClosElim | Flattens branches over closure literals back into a direct branch over Lams |
| Cmim::plug::clos::phase::Clos2SJLJ | Lowers basicblock closures that are passed as arguments (i.e |
| Cmim::plug::clos::phase::ClosConv | Performs typed closure conversion, rebuilding the old world into a new one |
| Cmim::plug::clos::phase::ClosConvPrep | Wraps operands with clos.attr markers (returning, free_bb, fstclass_bb, ...) and eta-expands branches and continuations so that ClosConv sees a canonical program |
| Cmim::plug::clos::phase::LowerTypedClos | This pass lowers typed closures to untyped closures |
| Cmim::plug::clos::phase::LowerTypedClosPrep | Escape analysis for closures: closure literals get their function wrapped in clos.attr.esc or clos.attr.bottom, depending on whether their environment escapes |
| Cmim::plug::cps::Conv | Full CPS conversion in one recursive rewrite |
| Cmim::plug::gpu::phase::LowerMapReduce | |
| Cmim::plug::gpu::phase::RemoveDoubleSyncs | |
| Cmim::plug::gpu::phase::SplitApply | |
| Cmim::plug::gpu::phase::SplitOffKernels | |
| Cmim::plug::mem::phase::AddMem | Threads the mem.M memory monad through the world: mem-extends continuations and rewires every memory operand to the current memory at that program point |
| Cmim::plug::mem::phase::SEO | Symbolic Expression Optimization |
| Cmim::plug::regex::LowerRegex | Lowers a regex axm application to a DFA matcher function |
| Cmim::plug::tensor::phase::Fuse | |
| Cmim::plug::tensor::phase::Lower | Lowers the high-level tensor axioms into the low-level tensor axioms (map_reduce, …) |
| Cmim::plug::tensor::phase::LowerGetSet | Lowers the tensor axioms (get, set) to their underlying primitives (extract, insert) |
| Cmim::plug::tensor::phase::LowerMapReduce | Lowers the low-level tensor axioms (map_reduce, generate, pad, concat, broadcast) directly to their underlying primitives (loops, extract, insert, pack, …) |
| Cmim::plug::tensor::phase::LowerToMem | Bufferizes the low-level tensor axioms onto the shared buffer layer |
| Cmim::plug::tensor::phase::Reassoc | Reassociates chains of tensor.product_2d with the classic matrix-chain-order dynamic program, so that a chain is evaluated with the least number of vector-lane slots |
| Cmim::VarRewriter | Extends Rewriter for variable substitution |
| Cmim::Zonker | |
| Cfe::RuntimeCast | |
| Cmim::Def | Base class for all Defs |
| Cmim::App | |
| Cmim::Axm | |
| Cmim::Bound | Common base for TBound |
| Cmim::TBound< false > | |
| Cmim::TBound< true > | |
| Cmim::TBound< Up > | Specific Bound depending on Up |
| Cmim::Ext | Common base for TExtremum |
| Cmim::TExt< false > | |
| Cmim::TExt< true > | |
| Cmim::TExt< Up > | Extremum. Either Top (Up) or Bottom |
| Cmim::Extract | Extracts from a Sigma or Array-typed Extract::tuple the element at position Extract::index |
| Cmim::Global | |
| Cmim::Hole | This node is a hole in the IR that is inferred by its context later on |
| Cmim::Idx | A built-in constant of type Nat -> * |
| Cmim::Inj | Constructs a Join value |
| Cmim::Insert | Creates a new Tuple / Pack by inserting Insert::value at position Insert::index into Insert::tuple |
| Cmim::Lam | A function |
| Cmim::Lit | |
| Cmim::Match | Scrutinize Match::scrutinee() and dispatch to Match::arms |
| Cmim::Merge | Constructs a Meet value |
| Cmim::Nat | |
| Cmim::Pi | A dependent function type |
| Cmim::Prod | Base class for Sigma and Tuple |
| Cmim::Sigma | A dependent tuple type |
| Cmim::Tuple | Data constructor for a Sigma |
| Cmim::Proxy | Used as intermediate value during optimizatinos such as Analysis |
| Cmim::Reform | Type formation of a rewrite Rule |
| Cmim::Rule | A rewrite rule |
| Cmim::Seq | Base class for Arr and Pack |
| Cmim::Arr | A (possibly paramterized) Array |
| Cmim::Pack | A (possibly paramterized) Tuple |
| Cmim::Split | Picks the aspect of a Meet [value](Pick::value) by its [type](Def::type) |
| Cmim::Type | |
| Cmim::UInc | |
| Cmim::UMax | |
| Cmim::Uniq | A singleton wraps a type into a higher order type |
| Cmim::Univ | |
| Cmim::Var | A variable introduced by a binder (mutable) |
| Cmim::Phase | A Phase performs one self-contained task over the whole World |
| Cmim::ClosedMutPhase< Lam > | |
| Cmim::NestPhase< Lam > | |
| Cmim::Emitter< std::string, std::string, BB, Emitter > | |
| Cmim::plug::ll::Emitter | |
| Cmim::plug::ll_nvptx::DeviceEmitter | |
| Cmim::plug::ll_nvptx::HostEmitter | |
| Cmim::sexpr::Emitter | |
| Cmim::Emitter< Value, Type, BB, Child > | |
| Cmim::ClosedMutPhase< Def > | |
| Cmim::NestPhase< M > | Like ClosedMutPhase but computes a Nest for each NestPhase::visit |
| CNamed | Phase hook for compile.named |
| Cmim::Analysis | Traverses the current World using Rewriter infrastructure while staying in the same world |
| Cmim::ClosedMutPhase< M > | Transitively visits all reachable, closed mutables in the World |
| Cmim::PhaseMan | Organizes several Phases into a pipeline |
| Cmim::RWBase | Common base of the two rewriting Phases: RWPhase rebuilds the World, InplaceRWPhase stays in it |
| Cmim::Unload | |
| Cmim::plug::ll::Emit | Pipeline phase for ll.emit |
| Cmim::plug::ll_nvptx::Emit | |
| Cmim::ast::Node | Base class of all AST nodes |
| Cmim::ast::Decl | Base class of all declarations; caches the emitted Decl::def |
| Cmim::ast::DummyDecl | |
| Cmim::ast::Ptrn | Base class of all patterns |
| Cmim::ast::AliasPtrn | ptrn as dbg |
| Cmim::ast::ErrorPtrn | Erroneous pattern |
| Cmim::ast::GrpPtrn | dbg of a group dbg_0 ... dbg_n-1: type that refers to the trailing IdPtrn::id |
| Cmim::ast::IdPtrn | dbg: type |
| Cmim::ast::TuplePtrn | (ptrn_0, ..., ptrn_n-1), [ptrn_0, ..., ptrn_n-1], or {ptrn_0, ..., ptrn_n-1} |
| Cmim::ast::ValDecl | Base class of all declarations that bind values |
| Cmim::ast::AliasDecl | anx dbg = path; - a compiler-exposed alias sharing its target's annex slot |
| Cmim::ast::AxmDecl | axm dbg: type, normalizer, curry, trip; |
| Cmim::ast::AxmDecl::Sibling | A further tag sharing AxmDecl::type/normalizer/curry/trip with the AxmDecl that owns them |
| Cmim::ast::LetDecl | let ptrn = value; |
| Cmim::ast::ModDecl | mod dbg { decls }; also the base of the anonymous File |
| Cmim::ast::File | The AST of one source file: an anonymous ModDecl that a UseDecl binds under a name of its own |
| Cmim::ast::RecDecl | rec dbg = body; with an optional and RecDecl::next |
| Cmim::ast::LamDecl | tag dbg dom_0 ... dom_n-1: codom = body; with LamDecl::tag lam/con/fun or anonymous λ/cn/fn |
| Cmim::ast::RuleDecl | rule dbg var: lhs when guard => rhs; or norm instead of rule if RuleDecl::is_normalizer |
| Cmim::ast::UseDecl | import "file"|name [as alias|*];, plugin name [as alias|*];, or use path [as alias|*]; as * splices instead of naming; a use without an as is sugar for as * |
| Cmim::ast::Expr | Base class of all expressions |
| Cmim::ast::AppExpr | callee arg |
| Cmim::ast::DeclExpr | decls expr or expr where decls if DeclExpr::is_where |
| Cmim::ast::ErrorExpr | Erroneous expression |
| Cmim::ast::HoleExpr | ? |
| Cmim::ast::InfixExpr | lhs op rhs; InfixExpr::op picks the meaning - see MIM_INFIX |
| Cmim::ast::LamExpr | Wraps a LamDecl as Expr |
| Cmim::ast::LitExpr | tok:type |
| Cmim::ast::MatchExpr | match scrutinee with | arm_0 | ... | arm_n-1 |
| Cmim::ast::PathExpr | path |
| Cmim::ast::PiExpr | dom → codom, Cn dom, or Fn dom → codom depending on PiExpr::tag |
| Cmim::ast::PrimaryExpr | tag |
| Cmim::ast::RetExpr | ret ptrn = callee $ arg; body |
| Cmim::ast::RuleExpr | Rule dom |
| Cmim::ast::SeqExpr | «arity; body» or ‹arity; body› if SeqExpr::is_pack |
| Cmim::ast::SigmaExpr | Wraps a TuplePtrn as Expr |
| Cmim::ast::TupleExpr | (elem_0, ..., elem_n-1) |
| Cmim::ast::TypeExpr | Type level |
| Cmim::ast::UniqExpr | ⦃inhabitant⦄ |
| Cmim::ast::MatchExpr::Arm | ptrn => body of a MatchExpr |
| Cmim::ast::Path | dbg_0.....dbg_n-1 |
| Cmim::ast::PiExpr::Dom | One dom of a PiExpr: ptrn with an optional -> ret type |
| Cmim::ast::LamDecl::Dom | One dom of a LamDecl: ptrn@(filter) with an optional : ret type |
| Cmim::ast::S | |
| Cmim::Scheduler | |
| Cmim::ast::Scopes | |
| Cmim::Select | Matches (ff, tt)#cond - where cond is not a Literal |
| Cmim::Branch | Matches (ff, tt)#cond arg where cond is not a Literal |
| Cmim::Setters< P, D > | CRTP-based mixin to declare setters for Def::loc & Def::name using a covariant return type |
| Cmim::Setters< App > | |
| Cmim::App | |
| Cmim::Setters< Arr > | |
| Cmim::Arr | A (possibly paramterized) Array |
| Cmim::Setters< Axm > | |
| Cmim::Axm | |
| Cmim::Setters< Extract > | |
| Cmim::Extract | Extracts from a Sigma or Array-typed Extract::tuple the element at position Extract::index |
| Cmim::Setters< Global > | |
| Cmim::Global | |
| Cmim::Setters< Hole > | |
| Cmim::Hole | This node is a hole in the IR that is inferred by its context later on |
| Cmim::Setters< Idx > | |
| Cmim::Idx | A built-in constant of type Nat -> * |
| Cmim::Setters< Inj > | |
| Cmim::Inj | Constructs a Join value |
| Cmim::Setters< Insert > | |
| Cmim::Insert | Creates a new Tuple / Pack by inserting Insert::value at position Insert::index into Insert::tuple |
| Cmim::Setters< Lam > | |
| Cmim::Lam | A function |
| Cmim::Setters< Lit > | |
| Cmim::Lit | |
| Cmim::Setters< Match > | |
| Cmim::Match | Scrutinize Match::scrutinee() and dispatch to Match::arms |
| Cmim::Setters< Merge > | |
| Cmim::Merge | Constructs a Meet value |
| Cmim::Setters< Nat > | |
| Cmim::Nat | |
| Cmim::Setters< Pack > | |
| Cmim::Pack | A (possibly paramterized) Tuple |
| Cmim::Setters< Pi > | |
| Cmim::Pi | A dependent function type |
| Cmim::Setters< Prod > | |
| Cmim::Prod | Base class for Sigma and Tuple |
| Cmim::Setters< Proxy > | |
| Cmim::Proxy | Used as intermediate value during optimizatinos such as Analysis |
| Cmim::Setters< Reform > | |
| Cmim::Reform | Type formation of a rewrite Rule |
| Cmim::Setters< Rule > | |
| Cmim::Rule | A rewrite rule |
| Cmim::Setters< Seq > | |
| Cmim::Seq | Base class for Arr and Pack |
| Cmim::Setters< Sigma > | |
| Cmim::Sigma | A dependent tuple type |
| Cmim::Setters< Split > | |
| Cmim::Split | Picks the aspect of a Meet [value](Pick::value) by its [type](Def::type) |
| Cmim::Setters< TBound< Up > > | |
| Cmim::TBound< false > | |
| Cmim::TBound< true > | |
| Cmim::TBound< Up > | Specific Bound depending on Up |
| Cmim::Setters< TExt< Up > > | |
| Cmim::TExt< false > | |
| Cmim::TExt< true > | |
| Cmim::TExt< Up > | Extremum. Either Top (Up) or Bottom |
| Cmim::Setters< Tuple > | |
| Cmim::Tuple | Data constructor for a Sigma |
| Cmim::Setters< Type > | |
| Cmim::Type | |
| Cmim::Setters< UInc > | |
| Cmim::UInc | |
| Cmim::Setters< UMax > | |
| Cmim::UMax | |
| Cmim::Setters< Uniq > | |
| Cmim::Uniq | A singleton wraps a type into a higher order type |
| Cmim::Setters< Univ > | |
| Cmim::Univ | |
| Cmim::Setters< Var > | |
| Cmim::Var | A variable introduced by a binder (mutable) |
| Cmim::Nest::Node::SiblDeps< Forward > | |
| Cmim::plug::tensor::phase::Slots | The five parallel per-slot lists of a map_reduce_post input group: element type, rank, shape, access map, and the tensor itself |
| Cmim::plug::tensor::phase::Split | One node of a bracketing: i … j splits after s |
| Cmim::World::State | |
| Cmim::ast::Tok | |
| Cmim::Use | Const Def*erences a user |
| Cmim::UseEq | |
| Cmim::UseHash | |
| Cmim::Version | |
| Cfe::VLA | |
| Cmim::ast::DeclExpr | decls expr or expr where decls if DeclExpr::is_where |
| Cmim::ast::LamDecl | tag dbg dom_0 ... dom_n-1: codom = body; with LamDecl::tag lam/con/fun or anonymous λ/cn/fn |
| Cmim::ast::MatchExpr | match scrutinee with | arm_0 | ... | arm_n-1 |
| Cmim::ast::Path | dbg_0.....dbg_n-1 |
| Cmim::ast::TupleExpr | (elem_0, ..., elem_n-1) |
| Cmim::ast::TuplePtrn | (ptrn_0, ..., ptrn_n-1), [ptrn_0, ..., ptrn_n-1], or {ptrn_0, ..., ptrn_n-1} |
| Cmim::detail::w2f_< int > | |
| Cmim::detail::w2s_< int > | |
| Cmim::detail::w2s_< 1 > | See above |
| Cmim::detail::w2s_< 16 > | |
| Cmim::detail::w2s_< 32 > | |
| Cmim::detail::w2s_< 64 > | |
| Cmim::detail::w2s_< 8 > | |
| Cmim::detail::w2u_< int > | |
| Cmim::detail::w2u_< 1 > | Map both signed 1 and unsigned 1 to bool |
| Cmim::detail::w2u_< 16 > | |
| Cmim::detail::w2u_< 32 > | |
| Cmim::detail::w2u_< 64 > | |
| Cmim::detail::w2u_< 8 > | |
| Cmim::World | The World represents the whole program and manages creation of MimIR nodes (Defs) |
| Cconst bool | |
| Cint | |
| Clist< DFANode > | |
| Clist< NFANode > | |
| Cstatic constexpr bool | |