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!
- ARM:// SPIRV-Cross, working with SPIR-V in your app
- SPIR-V Tools Project including an assembler, binary module parser, disassembler, and validator for SPIR-V
- Glslang - GLSL reference compiler. It can generate SPIR-V.
- LLVM framework with LLVM Support including an LLVM <-> SPIR-V bi-directional converter
- Shaderc -
glslccommand line wrapper around Glslang.
glslcconventions mimic GCC and Clang, for ease of integration into build systems.
- 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
- 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