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.3.0’s README
    (click through for the full version)

Check out also the EmbarkStudios/spirt GitHub repository, for any additional developments.

Notable types/modules
IR data types
Utilities and passes

Modules

  • Control-flow graph (CFG) abstractions and utilities.
  • 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).