Crate spirt

source
Expand description

§SPIR-🇹

⋯🢒 🇹arget 🠆 🇹ransform 🠆 🇹ranslate ⋯🢒


SPIR-🇹 is a research project aimed at exploring shader-oriented IR designs derived from SPIR-V, and producing a framework around such an IR to facilitate advanced compilation pipelines, beyond what existing SPIR-V tooling allows for.

🚧 This project is in active design and development, many details can and will change 🚧

spirt 0.4.0’s README
    (click through for the full version)

Check out also the rust-gpu/spirt GitHub repository, for any additional developments.

§Notable types/modules
§IR data types
§Utilities and passes

Modules§

  • Control-flow graph (CFG) abstractions and utilities.
  • Tools for working with control-flow graphs that contain SSA dataflow (often abbreviated to CFG<SSA> or similar).
  • context 🔒
    Context and related types/traits.
  • Traversal helpers for intra-function entities.
  • IR transformations (typically whole-Module).
  • Pretty-printing anything in the IR, from whole Modules to their leaves.
  • QPtr-related type definitions and passes.
  • SPIR-V support, mainly conversions to/from SPIR-T (lower/lift).
  • Mutable IR traversal.
  • Immutable IR traversal.

Structs§

Enums§

Traits§

  • EntityOriented*Map<Self, V> support trait, implemented for entity types, but which can also be implemented by users for their own newtypes and other types wrapping entity types (such as finite enums).