• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1<?xml version="1.0" encoding="UTF-8"?>
2<registry>
3    <!--
4    Copyright (c) 2015-2024 The Khronos Group Inc.
5
6    Permission is hereby granted, free of charge, to any person obtaining a
7    copy of this software and/or associated documentation files (the
8    "Materials"), to deal in the Materials without restriction, including
9    without limitation the rights to use, copy, modify, merge, publish,
10    distribute, sublicense, and/or sell copies of the Materials, and to
11    permit persons to whom the Materials are furnished to do so, subject to
12    the following conditions:
13
14    The above copyright notice and this permission notice shall be included
15    in all copies or substantial portions of the Materials.
16
17    THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
18    EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
19    MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
20    IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
21    CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
22    TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
23    MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
24    -->
25    <!--
26    This file, spir-v.xml, is the SPIR-V Tool ID, opcode and enumerant registry.
27    The canonical version of the registry, together with related schema and
28    documentation, can be found in the Khronos Registry at
29    include/spirv/spir-v.xml in the master branch at
30    https://github.com/KhronosGroup/SPIRV-Headers
31    -->
32
33    <!-- SECTION: SPIR-V Tool ID Definitions  -->
34
35    <!-- A SPIR-V Generator Magic Number is a 32 bit word: The high order 16
36         bits are a tool ID, which should be unique across all SPIR-V
37         generators. The low order 16 bits are reserved for use as a tool
38         version number, or any other purpose the tool supplier chooses.
39         Only the tool IDs are reserved with Khronos.
40
41         Add new tool ID reservations contiguously with the first available
42         number (the "start" attribute of the <unused> tag below), and
43         modify that <unused> tag accordingly. Please add a vendor/tool
44         supplier name in a 'vendor="name"' attribute; a tool name in a
45         'tool="name"' attribute; and a contact person/address in a
46         'comment' attribute. Remember that this value is the high 16 bits
47         of a 32-bit word.
48
49         Note: a single vendor/tool supplier may have multiple tool IDs
50         reserved for different SPIR-V generators -->
51
52    <ids type="vendor" start="0" end="0xFFFF" comment="SPIR-V Tool IDs">
53        <id value="0"   vendor="Khronos"    comment="Reserved by Khronos"/>
54        <id value="1"   vendor="LunarG"     comment="Contact TBD"/>
55        <id value="2"   vendor="Valve"      comment="Contact TBD"/>
56        <id value="3"   vendor="Codeplay"   comment="Contact Victor Lomuller, victor@codeplay.com"/>
57        <id value="4"   vendor="NVIDIA"     comment="Contact Kerch Holt, kholt@nvidia.com"/>
58        <id value="5"   vendor="ARM"        comment="Contact Kevin Petit, kevin.petit@arm.com"/>
59        <id value="6"   vendor="Khronos" tool="LLVM/SPIR-V Translator" comment="Contact Yaxun (Sam) Liu, yaxun.liu@amd.com"/>
60        <id value="7"   vendor="Khronos" tool="SPIR-V Tools Assembler" comment="Contact David Neto, dneto@google.com"/>
61        <id value="8"   vendor="Khronos" tool="Glslang Reference Front End" comment="Contact John Kessenich, johnkessenich@google.com"/>
62        <id value="9"   vendor="Qualcomm"   comment="Contact weifengz@qti.qualcomm.com"/>
63        <id value="10"  vendor="AMD"        comment="Contact Daniel Rakos, daniel.rakos@amd.com"/>
64        <id value="11"  vendor="Intel"      comment="Contact Alexey, alexey.bader@intel.com"/>
65        <id value="12"  vendor="Imagination" comment="Contact Stephen Clarke, stephen.clarke@imgtec.com"/>
66        <id value="13"  vendor="Google" tool="Shaderc over Glslang" comment="Contact David Neto, dneto@google.com"/>
67        <id value="14"  vendor="Google" tool="spiregg" comment="Contact Steven Perron, stevenperron@google.com"/>
68        <id value="15"  vendor="Google" tool="rspirv" comment="Contact Lei Zhang, antiagainst@gmail.com"/>
69        <id value="16"  vendor="X-LEGEND"   tool="Mesa-IR/SPIR-V Translator" comment="Contact Metora Wang, github:metora/MesaGLSLCompiler"/>
70        <id value="17"  vendor="Khronos" tool="SPIR-V Tools Linker" comment="Contact David Neto, dneto@google.com"/>
71        <id value="18"  vendor="Wine" tool="VKD3D Shader Compiler" comment="Contact wine-devel@winehq.org"/>
72        <id value="19"  vendor="Tellusim" tool="Clay Shader Compiler" comment="Contact info@tellusim.com"/>
73        <id value="20"  vendor="W3C WebGPU Group" tool="WHLSL Shader Translator" comment="https://github.com/gpuweb/WHLSL"/>
74        <id value="21"  vendor="Google" tool="Clspv" comment="Contact David Neto, dneto@google.com"/>
75        <id value="22"  vendor="LLVM" tool="MLIR SPIR-V Serializer" comment="Contact Jakub Kuderski, jakub.kuderski@amd.com, https://mlir.llvm.org/docs/Dialects/SPIR-V/"/>
76        <id value="23"  vendor="Google" tool="Tint Compiler" comment="Contact David Neto, dneto@google.com"/>
77        <id value="24"  vendor="Google" tool="ANGLE Shader Compiler" comment="Contact Shahbaz Youssefi, syoussefi@google.com"/>
78        <id value="25"  vendor="Netease Games" tool="Messiah Shader Compiler" comment="Contact Yuwen Wu, atyuwen@gmail.com"/>
79        <id value="26"  vendor="Xenia" tool="Xenia Emulator Microcode Translator" comment="Contact Vitaliy Kuzmin, triang3l@yandex.ru, https://github.com/xenia-project/xenia"/>
80        <id value="27"  vendor="Embark Studios" tool="Rust GPU Compiler Backend" comment="https://github.com/embarkstudios/rust-gpu"/>
81        <id value="28"  vendor="gfx-rs community" tool="Naga" comment="https://github.com/gfx-rs/naga"/>
82        <id value="29"  vendor="Mikkosoft Productions" tool="MSP Shader Compiler" comment="Contact Mikko Rasa, tdb@tdb.fi"/>
83        <id value="30"  vendor="SpvGenTwo community" tool="SpvGenTwo SPIR-V IR Tools" comment="https://github.com/rAzoR8/SpvGenTwo"/>
84        <id value="31"  vendor="Google" tool="Skia SkSL" comment="Contact Ethan Nicholas, ethannicholas@google.com"/>
85        <id value="32"  vendor="TornadoVM" tool="Beehive SPIRV Toolkit" comment="https://github.com/beehive-lab/beehive-spirv-toolkit"/>
86        <id value="33"  vendor="DragonJoker" tool="ShaderWriter" comment="Contact Sylvain Doremus, https://github.com/DragonJoker/ShaderWriter"/>
87        <id value="34"  vendor="Rayan Hatout" tool="SPIRVSmith" comment="Contact Rayan Hatout rayan.hatout@gmail.com, Repo https://github.com/rayanht/SPIRVSmith"/>
88        <id value="35"  vendor="Saarland University" tool="Shady" comment="Contact Hugo Devillers devillers@uni-saarland.de, Repo https://github.com/Hugobros3/shady"/>
89        <id value="36"  vendor="Taichi Graphics" tool="Taichi" comment="Contact Rendong Liang rendongliang@taichi.graphics, Repo https://github.com/taichi-dev/taichi"/>
90        <id value="37"  vendor="heroseh" tool="Hero C Compiler" comment="https://github.com/heroseh/hcc"/>
91        <id value="38"  vendor="Meta" tool="SparkSL" comment="Contact Dunfan Lu, dunfanlu@meta.com, https://sparkar.facebook.com/ar-studio/learn/sparksl/sparksl-overview"/>
92        <id value="39"  vendor="SirLynix" tool="Nazara ShaderLang Compiler" comment="Contact Jérôme Leclercq, https://github.com/NazaraEngine/ShaderLang"/>
93        <id value="40"  vendor="Khronos" tool="Slang Compiler" comment="https://shader-slang.org"/>
94        <id value="41"  vendor="Zig Software Foundation" tool="Zig Compiler" comment="Contact Robin Voetter, https://github.com/Snektron"/>
95        <id value="42"  vendor="Rendong Liang" tool="spq" comment="Contact Rendong Liang, admin@penguinliong.moe, https://github.com/PENGUINLIONG/spq-rs"/>
96        <id value="43"  vendor="LLVM" tool="LLVM SPIR-V Backend" comment="Contact Michal Paszkowski, michal.paszkowski@intel.com, https://github.com/llvm/llvm-project/tree/main/llvm/lib/Target/SPIRV"/>
97        <id value="44"  vendor="Robert Konrad" tool="Kongruent" comment="Contact Robert Konrad, https://github.com/Kode/Kongruent"/>
98        <id value="45"  vendor="Kitsunebi Games" tool="Nuvk SPIR-V Emitter and DLSL compiler" comment="Contact Luna Nielsen, luna@foxgirls.gay, https://github.com/Inochi2D/nuvk"/>
99        <id value="46"  vendor="Nintendo" comment="Contact Steve Urquhart, steve.urquhart@ntd.nintendo.com"/>
100        <id value="47"  vendor="ARM" comment="Contact Christopher Gautier, christopher.gautier@arm.com"/>
101        <unused start="48" end="0xFFFF" comment="Tool ID range reservable for future use by vendors"/>
102    </ids>
103
104    <!-- SECTION: SPIR-V Opcodes and Enumerants -->
105
106    <!-- Vendors reserve new ranges of:
107           - opcode enumerants in the "opcode" list below, and
108           - non-opcode enumerants in the non-opcodes "enumerant" list below.
109         Both are reserved by contiguous blocks of 64, preceding the given
110         "Future use" blocks.
111
112         SPIR-V background:
113           - SPIR-V currently has well over 30 enums, including the opcode enum
114           - each enum has its own name space, allowing reuse of enumerants
115           - SPIR-V restricts opcode enumerants to 16 bits
116           - all other enums use 32-bit enumerants
117
118         Reservation rules:
119           - opcode reservations ("opcode") are only valid for opcodes
120           - non-opcode reservations ("enumerant") are not valid for opcodes
121           - reservations in the enumerant list are valid for all non-opcode enums
122           - it is simpler to use each non-opcode enumerant for only one purpose
123             but this is left to the discretion of the vendor
124           - all enumerants in a range should be used before allocating a new range
125             (several extensions can use enumerants from the same range)
126
127         Each vendor determines the use of enumerants in the ranges they
128         reserve. Vendors are not required to disclose those uses.  If the use
129         of an enumerant is included in an extension that is adopted by a Khronos
130         extension or specification, then that enumerant's use may be permanently
131         fixed as if originally reserved in a Khronos range.
132
133         -->
134
135    <!-- Begin reservations of opcode enumerants -->
136    <ids type="opcode" start="0" end="4095" vendor="Khronos" comment="Reserved opcodes, not available to vendors - see the SPIR-V Specification"/>
137    <ids type="opcode" start="4096" end="4159" vendor="Mesa" comment="Contact TBD"/>
138    <ids type="opcode" start="4160" end="4415" vendor="ARM" comment="Contact kevin.petit@arm.com"/>
139    <ids type="opcode" start="4416" end="4479" vendor="Khronos" comment="SPV_ARB_shader_ballot - contact Neil Henning, neil.henning@amd.com"/>
140    <ids type="opcode" start="4480" end="4991" vendor="Qualcomm" comment="Contact weifengz@qti.qualcomm.com"/>
141    <ids type="opcode" start="4992" end="5247" vendor="AMD"/>
142    <ids type="opcode" start="5248" end="5503" vendor="NVIDIA"/>
143    <ids type="opcode" start="5504" end="5567" vendor="Imagination"/>
144    <ids type="opcode" start="5568" end="5631" vendor="Intel" comment="Contact ben.ashbaugh@intel.com"/>
145    <ids type="opcode" start="5632" end="5695" vendor="Google" comment="Contact dneto@google.com"/>
146    <ids type="opcode" start="5696" end="5823" vendor="Intel" comment="Contact ben.ashbaugh@intel.com"/>
147    <ids type="opcode" start="5824" end="5951" vendor="Intel" comment="Contact michael.kinsner@intel.com"/>
148    <ids type="opcode" start="5952" end="6015" vendor="Codeplay" comment="Contact victor@codeplay.com"/>
149    <ids type="opcode" start="6016" end="6079" vendor="Khronos" comment="Contact @tobski"/>
150    <ids type="opcode" start="6080" end="6143" vendor="Intel" comment="Contact mariusz.merecki@intel.com"/>
151    <ids type="opcode" start="6144" end="6271" vendor="Intel" comment="Contact michael.kinsner@intel.com"/>
152    <ids type="opcode" start="6272" end="6399" vendor="Huawei" comment="Contact wanghuilong2@xunweitech.com"/>
153    <ids type="opcode" start="6400" end="6463" vendor="Intel" comment="Contact ben.ashbaugh@intel.com"/>
154    <ids type="opcode" start="6464" end="6527" vendor="N/A" comment="Blank range to keep alignment with non-opcodes"/>
155    <ids type="opcode" start="6528" end="6591" vendor="Codeplay" comment="Contact duncan.brawley@codeplay.com"/>
156    <ids type="opcode" start="6592" end="6655" vendor="Saarland University" comment="Contact devillers@cg.uni-saarland.de"/>
157    <ids type="opcode" start="6656" end="6719" vendor="Meta" comment="Contact dunfanlu@meta.com"/>
158    <ids type="opcode" start="6720" end="6783" vendor="MediaTek" comment="Contact samuel.huang@mediatek.com"/>
159    <!-- Opcode enumerants to reserve for future use. To get a block, allocate
160         multiples of 64 starting at the lowest available point in this
161         block and add a corresponding <ids> tag immediately above. Make
162         sure to fill in the vendor attribute, and preferably add a contact
163         person/address in a comment attribute. -->
164    <!-- Example new block: <ids type="opcode" start="XXXX" end="XXXX+64n-1" vendor="Add vendor" comment="Contact TBD"/> -->
165    <ids type="opcode" start="6784" end="65535" comment="Opcode range reservable for future use by vendors"/>
166    <!-- End reservations of opcodes -->
167
168
169    <!-- Begin reservations of non-opcode enumerants -->
170    <ids type="enumerant" start="0" end="4095" vendor="Khronos" comment="Reserved enumerants, not available to vendors - see the SPIR-V Specification"/>
171    <ids type="enumerant" start="4096" end="4159" vendor="Mesa" comment="Contact TBD"/>
172    <ids type="enumerant" start="4160" end="4415" vendor="ARM" comment="Contact kevin.petit@arm.com"/>
173    <ids type="enumerant" start="4416" end="4479" vendor="Khronos" comment="SPV_ARB_shader_ballot - contact Neil Henning, neil.henning@amd.com"/>
174    <ids type="enumerant" start="4480" end="4991" vendor="Qualcomm" comment="Contact weifengz@qti.qualcomm.com"/>
175    <ids type="enumerant" start="4992" end="5247" vendor="AMD"/>
176    <ids type="enumerant" start="5248" end="5503" vendor="NVIDIA"/>
177    <ids type="enumerant" start="5504" end="5567" vendor="Imagination"/>
178    <ids type="enumerant" start="5568" end="5631" vendor="Intel" comment="Contact ben.ashbaugh@intel.com"/>
179    <ids type="enumerant" start="5632" end="5695" vendor="Google" comment="Contact dneto@google.com"/>
180    <ids type="enumerant" start="5696" end="5823" vendor="Intel" comment="Contact ben.ashbaugh@intel.com"/>
181    <ids type="enumerant" start="5824" end="5951" vendor="Intel" comment="Contact michael.kinsner@intel.com"/>
182    <ids type="enumerant" start="5952" end="6015" vendor="Codeplay" comment="Contact victor@codeplay.com"/>
183    <ids type="enumerant" start="6016" end="6079" vendor="Khronos" comment="Contact @tobski"/>
184    <ids type="enumerant" start="6080" end="6143" vendor="Intel" comment="Contact mariusz.merecki@intel.com"/>
185    <ids type="enumerant" start="6144" end="6271" vendor="Intel" comment="Contact michael.kinsner@intel.com"/>
186    <ids type="enumerant" start="6272" end="6399" vendor="Huawei" comment="Contact wanghuilong2@xunweitech.com"/>
187    <ids type="enumerant" start="6400" end="6463" vendor="Intel" comment="Contact ben.ashbaugh@intel.com"/>
188    <ids type="enumerant" start="6464" end="6527" vendor="Mikkosoft Productions" comment="Contact Mikko Rasa, tdb@tdb.fi"/>
189    <ids type="enumerant" start="6528" end="6591" vendor="Codeplay" comment="Contact duncan.brawley@codeplay.com"/>
190    <ids type="enumerant" start="6592" end="6655" vendor="Saarland University" comment="Contact devillers@cg.uni-saarland.de"/>
191    <ids type="enumerant" start="6656" end="6719" vendor="Meta" comment="Contact dunfanlu@meta.com"/>
192    <ids type="enumerant" start="6720" end="6783" vendor="MediaTek" comment="Contact samuel.huang@mediatek.com"/>
193    <!-- Enumerants to reserve for future use. To get a block, allocate
194         multiples of 64 starting at the lowest available point in this
195         block and add a corresponding <ids> tag immediately above. Make
196         sure to fill in the vendor attribute, and preferably add a contact
197         person/address in a comment attribute. -->
198    <!-- Example new block: <ids type="enumerant" start="XXXX" end="XXXX+64n-1" vendor="Add vendor" comment="Contact TBD"/> -->
199    <ids type="enumerant" start="6784" end="4294967295" comment="Enumerant range reservable for future use by vendors"/>
200    <!-- End reservations of enumerants -->
201
202
203    <!-- SECTION: SPIR-V Loop Control Bit Reservations -->
204    <!-- Reserve ranges of bits in the loop control bitfield.
205
206         Each vendor determines the use of values in their own ranges.
207         Vendors are not required to disclose those uses.  If the use of a
208         value is included in an extension that is adopted by a Khronos
209         extension or specification, then that value's use may be permanently
210         fixed as if originally reserved in a Khronos range.
211
212         The SPIR Working Group strongly recommends:
213         - Each value is used for only one purpose.
214         - All values in a range should be used before allocating a new range.
215         -->
216
217    <!-- Reserved loop control bits -->
218    <ids type="LoopControl" start="0" end="15" vendor="Khronos" comment="Reserved LoopControl bits, not available to vendors - see the SPIR-V Specification"/>
219    <ids type="LoopControl" start="16" end="27" vendor="Intel" comment="Contact michael.kinsner@intel.com"/>
220    <ids type="LoopControl" start="28" end="30" comment="Unreserved bits reservable for use by vendors"/>
221    <ids type="LoopControl" start="31" end="31" vendor="Khronos" comment="Reserved LoopControl bit, not available to vendors"/>
222
223
224    <!-- SECTION: SPIR-V Function Control Bit Reservations -->
225    <!-- Reserve ranges of bits in the function control bitfield.
226
227         Each vendor determines the use of values in their own ranges.
228         Vendors are not required to disclose those uses.  If the use of a
229         value is included in an extension that is adopted by a Khronos
230         extension or specification, then that value's use may be permanently
231         fixed as if originally reserved in a Khronos range.
232
233         The SPIR Working Group strongly recommends:
234         - Each value is used for only one purpose.
235         - All values in a range should be used before allocating a new range.
236         -->
237
238    <!-- Reserved function control bits -->
239    <ids type="FunctionControl" start="0" end="15" vendor="Khronos" comment="Reserved FunctionControl bits, not available to vendors - see the SPIR-V Specification"/>
240    <ids type="FunctionControl" start="16" end="16" vendor="Intel" comment="Contact ben.ashbaugh@intel.com"/>
241    <ids type="FunctionControl" start="17" end="30" comment="Unreserved bits reservable for use by vendors"/>
242    <ids type="FunctionControl" start="31" end="31" vendor="Khronos" comment="Reserved FunctionControl bit, not available to vendors"/>
243
244
245    <!-- SECTION: SPIR-V FP Fast Math Mode Bit Reservations -->
246    <!-- Reserve ranges of bits in the "FP Fast Math Mode" bitfield.
247         Each vendor determines the use of values in their own ranges.
248         Vendors are not required to disclose those uses.  If the use of a
249         value is included in an extension that is adopted by a Khronos
250         extension or specification, then that value's use may be permanently
251         fixed as if originally reserved in a Khronos range.
252         The SPIR Working Group strongly recommends:
253         - Each value is used for only one purpose.
254         - All values in a range should be used before allocating a new range.
255         -->
256
257    <!-- Reserved FP fast math mode bits -->
258    <ids type="FPFastMathMode" start="0" end="15" vendor="Khronos" comment="Reserved FPFastMathMode bits, not available to vendors - see the SPIR-V Specification"/>
259    <ids type="FPFastMathMode" start="16" end="17" vendor="Intel" comment="Contact michael.kinsner@intel.com"/>
260    <ids type="FPFastMathMode" start="18" end="18" vendor="khronos" comment="Reserved FPFastMathMode bit, not available to vendors - see SPV_KHR_float_controls2"/>
261    <ids type="FPFastMathMode" start="19" end="31" comment="Unreserved bits reservable for use by vendors"/>
262
263
264    <!-- SECTION: SPIR-V Memory Operand Bit Reservations -->
265    <!-- Reserve ranges of bits in the memory operands bitfield.
266
267         Each vendor determines the use of values in their own ranges.
268         Vendors are not required to disclose those uses.  If the use of a
269         value is included in an extension that is adopted by a Khronos
270         extension or specification, then that value's use may be permanently
271         fixed as if originally reserved in a Khronos range.
272
273         The SPIR Working Group strongly recommends:
274         - Each value is used for only one purpose.
275         - All values in a range should be used before allocating a new range.
276         -->
277
278    <!-- Reserved memory operand bits -->
279    <ids type="MemoryOperand" start="0" end="15" vendor="Khronos" comment="Reserved MemoryOperand bits, not available to vendors - see the SPIR-V Specification"/>
280    <ids type="MemoryOperand" start="16" end="18" vendor="Intel" comment="Contact michael.kinsner@intel.com"/>
281    <ids type="MemoryOperand" start="19" end="22" vendor="Arm" comment="Contact kevin.petit@arm.com"/>
282    <ids type="MemoryOperand" start="23" end="30" comment="Unreserved bits reservable for use by vendors"/>
283    <ids type="MemoryOperand" start="31" end="31" vendor="Khronos" comment="Reserved MemoryOperand bit, not available to vendors"/>
284
285    <!-- SECTION: SPIR-V Image Operand Bit Reservations -->
286    <!-- Reserve ranges of bits in the image operands bitfield.
287
288         Each vendor determines the use of values in their own ranges.
289         Vendors are not required to disclose those uses.  If the use of a
290         value is included in an extension that is adopted by a Khronos
291         extension or specification, then that value's use may be permanently
292         fixed as if originally reserved in a Khronos range.
293
294         The SPIR Working Group strongly recommends:
295         - Each value is used for only one purpose.
296         - All values in a range should be used before allocating a new range.
297         -->
298
299    <!-- Reserved image operand bits -->
300    <ids type="ImageOperand" start="0" end="15" vendor="Khronos" comment="Reserved ImageOperand bits, not available to vendors - see the SPIR-V Specification"/>
301    <ids type="ImageOperand" start="16" end="16" vendor="Nvidia" comment="Contact pmistry@nvidia.com"/>
302    <ids type="ImageOperand" start="17" end="30" comment="Unreserved bits reservable for use by vendors"/>
303    <ids type="ImageOperand" start="31" end="31" vendor="Khronos" comment="Reserved ImageOperand bit, not available to vendors"/>
304
305</registry>
306