SPIR Resources and Projects

We believe the true usefulness of SPIR goes beyond the spec itself; it is an ecosystem of tools, documentation, and resources contributed by the community. You are encouraged to get involved!

SPIR-V Resources

  • SPIR-V Tools Project including an assembler, binary module parser, disassembler, and validator for SPIR-V
  • LLVM framework with LLVM Support including an LLVM <-> SPIR-V bi-directional converter
  • spirthon - Python Python bytecode to SPIR-V conversion; Write shaders or kernels in Python; Python assembler/disassembler; SPIR-V specification in json format
  • SpirvNet - C# Write shaders or kernels in C#; .NET IL to SPIR-V conversion; SPIR-V interpreter; Debug shaders & kernels in C# (CPU)
  • otherside - C++ SPIR-V virtual machine; Produces C like code from SPIR-V binaries; Set through generated C code in debugger; Basis for academic software rasterizer
  • Shade - Xojo SPIR-V virtual machine; Test and debug SPIR-V binaries; Defines human readable format; SPIR-V binary correctness
  • SPARV - Rust Process SPIR-V from Rust; (Dis)Assemble SPIR-V binaries
  • Go SPIR-V Library SPIR-V library for Go; (Dis)Assemble SPIR-V binaries; In memory representation
  • Python SPIR-V Tools Encode and decode SPIR-V in Python; High level human readable assembler syntax - similar to LLVM IR
  • HSPIRV - Haskell EDSL SPIR-V like language embedded in Haskell; Low level abstraction; Significantly relaxed layout constraints
  • Lisp Specification Lisp readable SPIR-V specification; Basis for data driven Lisp tools
  • SPIR-V json specification Conversion of HTML SPIR-V specification to json format; Basis for future data driven tools

SPIR Resources

  • CLANG SPIR 1.2 Generator CLANG SPIR 1.2 Generator
  • PGI OpenACC 2.0 Compiler PGI Accelerator™ compilers, programmers can accelerate applications on x64+accelerator platforms by adding OpenACC compiler directives to existing high-level standard-compliant Fortran, C and C++ programs
  • C++ AMP CLANG/LLVM based C++AMP 1.2 standard and transforms it into either SPIR binary devices
  • Halide Halide Programming language for high-performance image processing