Khronos SPIR-V Registry

SPIR-V, Extended Instruction Set, and Extension Specifications

SPIR-V is a binary intermediate language for representing graphical-shader stages and compute kernels for multiple Khronos APIs, including OpenCL, OpenGL, and Vulkan. SPIR-V defines a new language and is a successor to the original Khronos SPIR, which supported only OpenCL device programs.

This registry contains or points to:

SPIR-V 1.5 Unified Specification, Headers, and Grammar

SPIR-V 1.5 was released Sep 13, 2019, and includes all previous versions. SPIR-V 1.4 was released May 7, 2019.

Extended Instruction Sets and Headers

There are separate specifications describing extended instruction sets:

SPIR-V Extension Specifications

These are located in the Khronos GitHub project SPIRV-Registry. New extensions can be proposed as a PR to that repository.

  1. SPV_AMD_shader_explicit_vertex_parameter
  2. SPV_AMD_shader_trinary_minmax
  3. SPV_AMD_gcn_shader
  4. SPV_KHR_shader_ballot
  5. SPV_AMD_shader_ballot
  6. SPV_AMD_gpu_shader_half_float
  7. SPV_KHR_shader_draw_parameters
  8. SPV_KHR_subgroup_vote
  9. SPV_KHR_16bit_storage
  10. SPV_KHR_device_group
  11. SPV_KHR_multiview
  12. SPV_NVX_multiview_per_view_attributes
  13. SPV_NV_viewport_array2
  14. SPV_NV_stereo_view_rendering
  15. SPV_NV_sample_mask_override_coverage
  16. SPV_NV_geometry_shader_passthrough
  17. SPV_AMD_texture_gather_bias_lod
  18. SPV_KHR_storage_buffer_storage_class
  19. SPV_KHR_variable_pointers
  20. SPV_AMD_gpu_shader_int16
  21. SPV_KHR_post_depth_coverage
  22. SPV_KHR_shader_atomic_counter_ops
  23. SPV_EXT_shader_stencil_export
  24. SPV_EXT_shader_viewport_index_layer
  25. SPV_AMD_shader_image_load_store_lod
  26. SPV_AMD_shader_fragment_mask
  27. SPV_EXT_fragment_fully_covered
  28. SPV_AMD_gpu_shader_half_float_fetch
  29. SPV_GOOGLE_decorate_string
  30. SPV_GOOGLE_hlsl_functionality1
  31. SPV_NV_shader_subgroup_partitioned
  32. SPV_EXT_descriptor_indexing
  33. SPV_KHR_8bit_storage
  34. SPV_KHR_vulkan_memory_model
  35. SPV_NV_ray_tracing
  36. SPV_NV_compute_shader_derivatives
  37. SPV_NV_fragment_shader_barycentric
  38. SPV_NV_mesh_shader
  39. SPV_NV_shader_image_footprint
  40. SPV_NV_shading_rate
  41. SPV_INTEL_subgroups
  42. SPV_INTEL_media_block_io
  43. SPV_INTEL_device_side_avc_motion_estimation
  44. SPV_EXT_fragment_invocation_density
  45. SPV_KHR_no_integer_wrap_decoration
  46. SPV_KHR_float_controls
  47. SPV_EXT_physical_storage_buffer
  48. SPV_INTEL_fpga_memory_attributes
  49. SPV_NV_cooperative_matrix
  50. SPV_INTEL_shader_integer_functions2
  51. SPV_INTEL_fpga_loop_controls
  52. SPV_EXT_fragment_shader_interlock
  53. SPV_NV_shader_sm_builtins
  54. SPV_KHR_shader_clock
  55. SPV_INTEL_unstructured_loop_controls
  56. SPV_EXT_demote_to_helper_invocation
  57. SPV_INTEL_fpga_reg
  58. SPV_INTEL_blocking_pipes
  59. SPV_KHR_physical_storage_buffer

Vendor and Token Registry

The SPIR-V Vendor and Token Registry is an XML file serving as the canonical document defining reserved vendor IDs and binary token ranges. It is available in the Khronos GitHub project at spir-v.xml.

If you need a vendor ID, or a reserved range of opcode or operand token values for your implementation, please file an issue or pull request in the SPIRV-Headers project.

Older Specification Versions

Older specifications are superceded by the Unified Specification.

Providing Feedback on the Registry

Khronos welcomes feedback on SPIR-V. To provide feedback, please file an issue in the SPIRV-Headers project.