Skip to main content

SPIR Overview

SPIR Resources and Projects

We believe the true usefulness of OpenCL goes beyond the spec itself; it is an ecosystem of tools, documentation, and resources contributed by the community.

Get involved, submit your resources either with a pull requests on Github or email the webmaster at Khronos.org.

SPIR-V Resources

  • Khronos Group SPIR-V Headers official headers for SPIR-V, XML registry, and instructions set grammar in JSON form.
  • ARM:// SPIRV-Cross, working with SPIR-V in your app
  • Khronos Group SPIR-V Tools Project including an assembler, binary module parser, disassembler, and validator for SPIR-V
    • Extras include integration with the vim and emacs text editors and the less command line tool
  • Khronos Group Glslang - GLSL reference compiler. It can generate SPIR-V.
  • SPIR-V LLVM Translator contains a LLVM <-> SPIR-V converter intended to serve as a foundation for LLVM-based front-end compilers targeting SPIR-V.
  • Shaderc - libshaderc API and glslc command line wrapper around Glslang. glslc conventions 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
  • 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
  • vim-spirv is a plugin for vim providing automatic (dis)assembly and editing of .spv files, syntax highlighting, current ID highlighting and error highlighting
  • spq SPIR-V reflection and processing infrastructure in pure Rust.

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