On September 19th 2024, Microsoft has announced plans to adopt SPIR-V as the Direct3D Interchange format in place of DXIL, beginning support from Shader Model 7 on.
[3] The purposes of SPIR-V are to natively represent the primitives needed by compute and graphics; to separate high-level language from the interface to compute and graphics drivers; to be the distribution form, or distribute fully compiled binaries; to be a fully self-contained specification; and to support multiple APIs.
[12] The SPIR family now includes a true cross-API standard that is fully defined by Khronos with native support for shader and kernel features.
[13] Support for ingestion of SPIR-V is incorporated in the core specification of OpenCL 2.1, the Vulkan API, and OpenGL version 4.6.
Functions are represented by a control-flow graph of basic blocks, using static single assignment (SSA) form.
It is not lossy like previous byte-code or virtual machine-like intermediate representations used for graphical shaders.
[17] SPIR-V can be extended by writing extensions to add semantics, or reserving ranges of the token values for the party's use.
This helps in defining divergence and reconvergence of control flow on parallel execution environments.
In testing, conformance testing verifies that drivers behave correctly when consuming valid SPIR-V, while validators verify that front-ends properly generate SPIR-V.[22] SPIR-V can express calls to functions in a different compilation unit.