mhtirogla
Home
Systems
API
Pricing
About
Log in
← Back
Home
›
Systems
›
Compilers and language tooling
shader-compiler
shader compiler
DXC, naga
System
Techniques · 10
Primitives · 17
shader-compiler
Dataflow analysis
compilers · medium: Compute a fact per program point (live variables, reaching definitions, available expressions) by iterating transfer functions over the CFG to a fixed point.
›
Function inlining
compilers · medium: Inline call sites by cost model and call-graph order; enables downstream optimizations
Instruction scheduling
compilers · medium: List scheduling over dependence DAGs with latency models; software pipelining of loops
Instruction selection
compilers · medium: Cover the IR with target instruction patterns at least cost; greedy maximal munch is simple, dynamic programming over a tree or DAG is optimal.
›
Register allocation
compilers · medium: Map unlimited virtual registers onto a few machine registers, spilling the rest to the stack; linear scan is fast, graph coloring and splitting allocators give better code.
›
Sparse conditional constant propaga…
compilers · medium: SCCP: constant propagation plus unreachable-code detection on SSA
Structured control flow
compilers · medium: Turn a jump graph into nested block, loop and if constructs with numbered breaks; reducible graphs need no duplication.
›
SSA form
compilers · low: Give every variable exactly one definition, merging at joins with phi functions; def-use becomes explicit and optimizations turn sparse and cheap.
›
Dominator tree
compilers · low: Dominators via Lengauer-Tarjan or Cooper-Harvey-Kennedy; dominance frontiers for SSA
Peephole optimization
compilers · low: Local pattern rewrites on short instruction windows or IR
Recursive-descent parsing
compilers · low: Hand-written top-down parser with one function per grammar rule; simple, fast, with full control over error messages and recovery.
›
Spirv binary format
compilers · low: SPIR-V module structure: SSA instructions, decorations, structured control flow rules
Pipeline state caching
graphics · low: Cache compiled shader pipelines across runs, precompile permutations, avoid hitches
Control-flow graph
compilers · low: Split a linear instruction list into basic blocks and connect them by jumps; the graph every optimizer, SSA builder and dataflow pass walks.
›
Topological sort
graphs · low: Order the vertices of a DAG so every edge points forward; the core of build systems, schedulers and dependency resolution, with cycle detection for free.
›
Strongly connected components
graphs · low: Tarjan/Kosaraju SCCs for cycle detection in dependency graphs
d-ary heap
data-structures · low: Array heap with d children per node (d = 4 typical): half the binary heap's depth, siblings in one cache line, faster priority queues.
›
Instruction pipelining
hardware-os · low: Pipeline stages, hazards, forwarding and stalls in CPU cores
Machine code emission
compilers · low: Encode instructions to bytes for x86-64 and AArch64, branch relaxation, constant pools
Tree pattern matching
compilers · low: Matching AST patterns with metavariables
Interval tree
data-structures · low: Index of ranges that answers "which intervals overlap this point or range?" in O(log n + k); static sorted-array form is the compact, cache-friendly choice.
›
Name resolution
compilers · low: Bind every use of a name to its declaration with a scope stack, handling shadowing, hoisting and closure capture in one AST walk.
›
BFS and DFS
graphs · low: The two basic graph traversals; BFS gives hop distances and levels, DFS gives discovery/finish order for cycles, components and topological order.
›
+ 3 more techniques
+ 1 more primitives
System
Techniques · 10
Primitives · 17
shader-compiler
Dataflow analysis
compilers · medium: Compute a fact per program point (live variables, reaching definitions, available expressions) by iterating transfer functions over the CFG to a fixed point.
›
Function inlining
compilers · medium: Inline call sites by cost model and call-graph order; enables downstream optimizations
Instruction scheduling
compilers · medium: List scheduling over dependence DAGs with latency models; software pipelining of loops
Instruction selection
compilers · medium: Cover the IR with target instruction patterns at least cost; greedy maximal munch is simple, dynamic programming over a tree or DAG is optimal.
›
Register allocation
compilers · medium: Map unlimited virtual registers onto a few machine registers, spilling the rest to the stack; linear scan is fast, graph coloring and splitting allocators give better code.
›
Sparse conditional constant propaga…
compilers · medium: SCCP: constant propagation plus unreachable-code detection on SSA
Structured control flow
compilers · medium: Turn a jump graph into nested block, loop and if constructs with numbered breaks; reducible graphs need no duplication.
›
Uniformity analysis
compilers · medium: Divergence analysis: which values and branches are uniform across GPU threads
Call graph construction
compilers · medium: Building call graphs with dynamic dispatch resolution (CHA, RTA)
Graph coloring
graphs · medium: Greedy/DSatur colouring for conflict-free assignment such as radio channels
SSA form
compilers · low: Give every variable exactly one definition, merging at joins with phi functions; def-use becomes explicit and optimizations turn sparse and cheap.
›
Dominator tree
compilers · low: Dominators via Lengauer-Tarjan or Cooper-Harvey-Kennedy; dominance frontiers for SSA
Peephole optimization
compilers · low: Local pattern rewrites on short instruction windows or IR
Recursive-descent parsing
compilers · low: Hand-written top-down parser with one function per grammar rule; simple, fast, with full control over error messages and recovery.
›
Spirv binary format
compilers · low: SPIR-V module structure: SSA instructions, decorations, structured control flow rules
Pipeline state caching
graphics · low: Cache compiled shader pipelines across runs, precompile permutations, avoid hitches
Control-flow graph
compilers · low: Split a linear instruction list into basic blocks and connect them by jumps; the graph every optimizer, SSA builder and dataflow pass walks.
›
Topological sort
graphs · low: Order the vertices of a DAG so every edge points forward; the core of build systems, schedulers and dependency resolution, with cycle detection for free.
›
Strongly connected components
graphs · low: Tarjan/Kosaraju SCCs for cycle detection in dependency graphs
d-ary heap
data-structures · low: Array heap with d children per node (d = 4 typical): half the binary heap's depth, siblings in one cache line, faster priority queues.
›
Instruction pipelining
hardware-os · low: Pipeline stages, hazards, forwarding and stalls in CPU cores
Machine code emission
compilers · low: Encode instructions to bytes for x86-64 and AArch64, branch relaxation, constant pools
Tree pattern matching
compilers · low: Matching AST patterns with metavariables
Interval tree
data-structures · low: Index of ranges that answers "which intervals overlap this point or range?" in O(log n + k); static sorted-array form is the compact, cache-friendly choice.
›
Name resolution
compilers · low: Bind every use of a name to its declaration with a scope stack, handling shadowing, hoisting and closure capture in one AST walk.
›
BFS and DFS
graphs · low: The two basic graph traversals; BFS gives hop distances and levels, DFS gives discovery/finish order for cycles, components and topological order.
›
Sparse matrices (CSR)
numerics · low: Compressed sparse row stores only nonzeros as row pointers, column indices and values; SpMV streams them once, so it is memory-bandwidth bound.
›
Copy for AI
Similar systems
Share the most building blocks with this one.
compiler
42 %
cuda-platform
28 %
wasm-toolchain
27 %
gpu-driver
20 %
decompiler
20 %