summaryrefslogtreecommitdiff
path: root/include/spirv/spir-v.xml
blob: 48ba7b475155fc7cacb2803d50c8855c593d47a7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
<?xml version="1.0" encoding="UTF-8"?>
<registry>
    <!--
    Copyright (c) 2015 The Khronos Group Inc.

    Permission is hereby granted, free of charge, to any person obtaining a
    copy of this software and/or associated documentation files (the
    "Materials"), to deal in the Materials without restriction, including
    without limitation the rights to use, copy, modify, merge, publish,
    distribute, sublicense, and/or sell copies of the Materials, and to
    permit persons to whom the Materials are furnished to do so, subject to
    the following conditions:

    The above copyright notice and this permission notice shall be included
    in all copies or substantial portions of the Materials.

    THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
    EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
    MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
    IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
    CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
    TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
    MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
    -->
    <!--
    This file, spir-v.xml, is the SPIR-V Tool ID, opcode and enumerant registry.
    The canonical version of the registry, together with related schema and
    documentation, can be found in the Khronos Registry at
    include/spirv/spir-v.xml in the master branch at
    https://github.com/KhronosGroup/SPIRV-Headers
    -->

    <!-- SECTION: SPIR-V Tool ID Definitions  -->

    <!-- A SPIR-V Generator Magic Number is a 32 bit word: The high order 16
         bits are a tool ID, which should be unique across all SPIR-V
         generators. The low order 16 bits are reserved for use as a tool
         version number, or any other purpose the tool supplier chooses.
         Only the tool IDs are reserved with Khronos.

         Add new tool ID reservations contiguously with the first available
         number (the "start" attribute of the <unused> tag below), and
         modify that <unused> tag accordingly. Please add a vendor/tool
         supplier name in a 'vendor="name"' attribute; a tool name in a
         'tool="name"' attribute; and a contact person/address in a
         'comment' attribute. Remember that this value is the high 16 bits
         of a 32-bit word.

         Note: a single vendor/tool supplier may have multiple tool IDs
         reserved for different SPIR-V generators -->

    <ids type="vendor" start="0" end="0xFFFF" comment="SPIR-V Tool IDs">
        <id value="0"   vendor="Khronos"    comment="Reserved by Khronos"/>
        <id value="1"   vendor="LunarG"     comment="Contact TBD"/>
        <id value="2"   vendor="Valve"      comment="Contact TBD"/>
        <id value="3"   vendor="Codeplay"   comment="Contact Victor Lomuller, victor@codeplay.com"/>
        <id value="4"   vendor="NVIDIA"     comment="Contact Kerch Holt, kholt@nvidia.com"/>
        <id value="5"   vendor="ARM"        comment="Contact Kevin Petit, kevin.petit@arm.com"/>
        <id value="6"   vendor="Khronos" tool="LLVM/SPIR-V Translator" comment="Contact Yaxun (Sam) Liu, yaxun.liu@amd.com"/>
        <id value="7"   vendor="Khronos" tool="SPIR-V Tools Assembler" comment="Contact David Neto, dneto@google.com"/>
        <id value="8"   vendor="Khronos" tool="Glslang Reference Front End" comment="Contact John Kessenich, johnkessenich@google.com"/>
        <id value="9"   vendor="Qualcomm"   comment="Contact weifengz@qti.qualcomm.com"/>
        <id value="10"  vendor="AMD"        comment="Contact Daniel Rakos, daniel.rakos@amd.com"/>
        <id value="11"  vendor="Intel"      comment="Contact Alexey, alexey.bader@intel.com"/>
        <id value="12"  vendor="Imagination" comment="Contact Stephen Clarke, stephen.clarke@imgtec.com"/>
        <id value="13"  vendor="Google" tool="Shaderc over Glslang" comment="Contact David Neto, dneto@google.com"/>
        <id value="14"  vendor="Google" tool="spiregg" comment="Contact Lei Zhang, antiagainst@google.com"/>
        <id value="15"  vendor="Google" tool="rspirv" comment="Contact Lei Zhang, antiagainst@gmail.com"/>
        <id value="16"  vendor="X-LEGEND"   tool="Mesa-IR/SPIR-V Translator" comment="Contact Metora Wang, github:metora/MesaGLSLCompiler"/>
        <id value="17"  vendor="Khronos" tool="SPIR-V Tools Linker" comment="Contact David Neto, dneto@google.com"/>
        <id value="18"  vendor="Wine" tool="VKD3D Shader Compiler" comment="Contact wine-devel@winehq.org"/>
        <id value="19"  vendor="Tellusim" tool="Clay Shader Compiler" comment="Contact info@tellusim.com"/>
        <id value="20"  vendor="W3C WebGPU Group" tool="WHLSL Shader Translator" comment="https://github.com/gpuweb/WHLSL"/>
        <id value="21"  vendor="Google" tool="Clspv" comment="Contact David Neto, dneto@google.com"/>
        <id value="22"  vendor="Google" tool="MLIR SPIR-V Serializer" comment="Contact Lei Zhang, antiagainst@google.com"/>
        <id value="23"  vendor="Google" tool="Tint Compiler" comment="Contact David Neto, dneto@google.com"/>
        <id value="24"  vendor="Google" tool="ANGLE Shader Compiler" comment="Contact Shahbaz Youssefi, syoussefi@google.com"/>
        <id value="25"  vendor="Netease Games" tool="Messiah Shader Compiler" comment="Contact Yuwen Wu, atyuwen@gmail.com"/>
        <id value="26"  vendor="Xenia" tool="Xenia Emulator Microcode Translator" comment="Contact Vitaliy Kuzmin, triang3l@yandex.ru, https://github.com/xenia-project/xenia"/>
        <id value="27"  vendor="Embark Studios" tool="Rust GPU Compiler Backend" comment="https://github.com/embarkstudios/rust-gpu"/>
        <id value="28"  vendor="gfx-rs community" tool="Naga" comment="https://github.com/gfx-rs/naga"/>
        <id value="29"  vendor="Mikkosoft Productions" tool="MSP Shader Compiler" comment="Contact Mikko Rasa, tdb@tdb.fi"/>
        <id value="30"  vendor="SpvGenTwo community" tool="SpvGenTwo SPIR-V IR Tools" comment="https://github.com/rAzoR8/SpvGenTwo"/>
        <id value="31"  vendor="Google" tool="Skia SkSL" comment="Contact Ethan Nicholas, ethannicholas@google.com"/>
        <id value="32"  vendor="TornadoVM" tool="Beehive SPIRV Toolkit" comment="https://github.com/beehive-lab/beehive-spirv-toolkit"/>
        <id value="33"  vendor="DragonJoker" tool="ShaderWriter" comment="Contact Sylvain Doremus, https://github.com/DragonJoker/ShaderWriter"/>
        <id value="34"  vendor="Rayan Hatout" tool="SPIRVSmith" comment="Contact Rayan Hatout rayan.hatout@gmail.com, Repo https://github.com/rayanht/SPIRVSmith"/>
        <id value="35"  vendor="Saarland University" tool="Shady" comment="Contact Hugo Devillers devillers@uni-saarland.de, Repo https://github.com/Hugobros3/shady"/>
        <id value="36"  vendor="Taichi Graphics" tool="Taichi" comment="Contact Rendong Liang rendongliang@taichi.graphics, Repo https://github.com/taichi-dev/taichi"/>
        <id value="37"  vendor="heroseh" tool="Hero C Compiler" comment="https://github.com/heroseh/hcc"/>
        <unused start="38" end="0xFFFF" comment="Tool ID range reservable for future use by vendors"/>
    </ids>

    <!-- SECTION: SPIR-V Opcodes and Enumerants -->

    <!-- Vendors reserve new ranges of:
           - opcode enumerants in the "opcode" list below, and
           - non-opcode enumerants in the non-opcodes "enumerant" list below.
         Both are reserved by contiguous blocks of 64, preceding the given
         "Future use" blocks.

         SPIR-V background:
           - SPIR-V currently has well over 30 enums, including the opcode enum
           - each enum has its own name space, allowing reuse of enumerants
           - SPIR-V restricts opcode enumerants to 16 bits
           - all other enums use 32-bit enumerants

         Reservation rules:
           - opcode reservations ("opcode") are only valid for opcodes
           - non-opcode reservations ("enumerant") are not valid for opcodes
           - reservations in the enumerant list are valid for all non-opcode enums
           - it is simpler to use each non-opcode enumerant for only one purpose
             but this is left to the discretion of the vendor
           - all enumerants in a range should be used before allocating a new range
             (several extensions can use enumerants from the same range)

         Each vendor determines the use of enumerants in the ranges they
         reserve. Vendors are not required to disclose those uses.  If the use
         of an enumerant is included in an extension that is adopted by a Khronos
         extension or specification, then that enumerant's use may be permanently
         fixed as if originally reserved in a Khronos range.

         -->

    <!-- Begin reservations of opcode enumerants -->
    <ids type="opcode" start="0" end="4095" vendor="Khronos" comment="Reserved opcodes, not available to vendors - see the SPIR-V Specification"/>
    <ids type="opcode" start="4096" end="4159" vendor="Mesa" comment="Contact TBD"/>
    <ids type="opcode" start="4160" end="4415" vendor="ARM" comment="Contact kevin.petit@arm.com"/>
    <ids type="opcode" start="4416" end="4479" vendor="Khronos" comment="SPV_ARB_shader_ballot - contact Neil Henning, neil.henning@amd.com"/>
    <ids type="opcode" start="4480" end="4991" vendor="Qualcomm" comment="Contact weifengz@qti.qualcomm.com"/>
    <ids type="opcode" start="4992" end="5247" vendor="AMD"/>
    <ids type="opcode" start="5248" end="5503" vendor="NVIDIA"/>
    <ids type="opcode" start="5504" end="5567" vendor="Imagination"/>
    <ids type="opcode" start="5568" end="5631" vendor="Intel" comment="Contact ben.ashbaugh@intel.com"/>
    <ids type="opcode" start="5632" end="5695" vendor="Google" comment="Contact dneto@google.com"/>
    <ids type="opcode" start="5696" end="5823" vendor="Intel" comment="Contact ben.ashbaugh@intel.com"/>
    <ids type="opcode" start="5824" end="5951" vendor="Intel" comment="Contact michael.kinsner@intel.com"/>
    <ids type="opcode" start="5952" end="6015" vendor="Codeplay" comment="Contact victor@codeplay.com"/>
    <ids type="opcode" start="6016" end="6079" vendor="Khronos" comment="Contact @tobski"/>
    <ids type="opcode" start="6080" end="6143" vendor="Intel" comment="Contact mariusz.merecki@intel.com"/>
    <ids type="opcode" start="6144" end="6271" vendor="Intel" comment="Contact michael.kinsner@intel.com"/>
    <ids type="opcode" start="6272" end="6399" vendor="Huawei" comment="Contact wanghuilong2@xunweitech.com"/>
    <ids type="opcode" start="6400" end="6463" vendor="Intel" comment="Contact ben.ashbaugh@intel.com"/>
    <ids type="opcode" start="6464" end="6527" vendor="N/A" comment="Blank range to keep alignment with non-opcodes"/>
    <ids type="opcode" start="6528" end="6591" vendor="Codeplay" comment="Contact duncan.brawley@codeplay.com"/>
    <ids type="opcode" start="6592" end="6655" vendor="Saarland University" comment="Contact devillers@cg.uni-saarland.de"/>
    <!-- Opcode enumerants to reserve for future use. To get a block, allocate
         multiples of 64 starting at the lowest available point in this
         block and add a corresponding <ids> tag immediately above. Make
         sure to fill in the vendor attribute, and preferably add a contact
         person/address in a comment attribute. -->
    <!-- Example new block: <ids type="opcode" start="XXXX" end="XXXX+64n-1" vendor="Add vendor" comment="Contact TBD"/> -->
    <ids type="opcode" start="6656" end="65535" comment="Opcode range reservable for future use by vendors"/>
    <!-- End reservations of opcodes -->


    <!-- Begin reservations of non-opcode enumerants -->
    <ids type="enumerant" start="0" end="4095" vendor="Khronos" comment="Reserved enumerants, not available to vendors - see the SPIR-V Specification"/>
    <ids type="enumerant" start="4096" end="4159" vendor="Mesa" comment="Contact TBD"/>
    <ids type="enumerant" start="4160" end="4415" vendor="ARM" comment="Contact kevin.petit@arm.com"/>
    <ids type="enumerant" start="4416" end="4479" vendor="Khronos" comment="SPV_ARB_shader_ballot - contact Neil Henning, neil.henning@amd.com"/>
    <ids type="enumerant" start="4480" end="4991" vendor="Qualcomm" comment="Contact weifengz@qti.qualcomm.com"/>
    <ids type="enumerant" start="4992" end="5247" vendor="AMD"/>
    <ids type="enumerant" start="5248" end="5503" vendor="NVIDIA"/>
    <ids type="enumerant" start="5504" end="5567" vendor="Imagination"/>
    <ids type="enumerant" start="5568" end="5631" vendor="Intel" comment="Contact ben.ashbaugh@intel.com"/>
    <ids type="enumerant" start="5632" end="5695" vendor="Google" comment="Contact dneto@google.com"/>
    <ids type="enumerant" start="5696" end="5823" vendor="Intel" comment="Contact ben.ashbaugh@intel.com"/>
    <ids type="enumerant" start="5824" end="5951" vendor="Intel" comment="Contact michael.kinsner@intel.com"/>
    <ids type="enumerant" start="5952" end="6015" vendor="Codeplay" comment="Contact victor@codeplay.com"/>
    <ids type="enumerant" start="6016" end="6079" vendor="Khronos" comment="Contact @tobski"/>
    <ids type="enumerant" start="6080" end="6143" vendor="Intel" comment="Contact mariusz.merecki@intel.com"/>
    <ids type="enumerant" start="6144" end="6271" vendor="Intel" comment="Contact michael.kinsner@intel.com"/>
    <ids type="enumerant" start="6272" end="6399" vendor="Huawei" comment="Contact wanghuilong2@xunweitech.com"/>
    <ids type="enumerant" start="6400" end="6463" vendor="Intel" comment="Contact ben.ashbaugh@intel.com"/>
    <ids type="enumerant" start="6464" end="6527" vendor="Mikkosoft Productions" comment="Contact Mikko Rasa, tdb@tdb.fi"/>
    <ids type="enumerant" start="6528" end="6591" vendor="Codeplay" comment="Contact duncan.brawley@codeplay.com"/>
    <ids type="enumerant" start="6592" end="6655" vendor="Saarland University" comment="Contact devillers@cg.uni-saarland.de"/>
    <!-- Enumerants to reserve for future use. To get a block, allocate
         multiples of 64 starting at the lowest available point in this
         block and add a corresponding <ids> tag immediately above. Make
         sure to fill in the vendor attribute, and preferably add a contact
         person/address in a comment attribute. -->
    <!-- Example new block: <ids type="enumerant" start="XXXX" end="XXXX+64n-1" vendor="Add vendor" comment="Contact TBD"/> -->
    <ids type="enumerant" start="6656" end="4294967295" comment="Enumerant range reservable for future use by vendors"/>
    <!-- End reservations of enumerants -->


    <!-- SECTION: SPIR-V Loop Control Bit Reservations -->
    <!-- Reserve ranges of bits in the loop control bitfield.

         Each vendor determines the use of values in their own ranges.
         Vendors are not required to disclose those uses.  If the use of a
         value is included in an extension that is adopted by a Khronos
         extension or specification, then that value's use may be permanently
         fixed as if originally reserved in a Khronos range.

         The SPIR Working Group strongly recommends:
         - Each value is used for only one purpose.
         - All values in a range should be used before allocating a new range.
         -->

    <!-- Reserved loop control bits -->
    <ids type="LoopControl" start="0" end="15" vendor="Khronos" comment="Reserved LoopControl bits, not available to vendors - see the SPIR-V Specification"/>
    <ids type="LoopControl" start="16" end="25" vendor="Intel" comment="Contact michael.kinsner@intel.com"/>
    <ids type="LoopControl" start="26" end="30" comment="Unreserved bits reservable for use by vendors"/>
    <ids type="LoopControl" start="31" end="31" vendor="Khronos" comment="Reserved LoopControl bit, not available to vendors"/>


    <!-- SECTION: SPIR-V Function Control Bit Reservations -->
    <!-- Reserve ranges of bits in the function control bitfield.

         Each vendor determines the use of values in their own ranges.
         Vendors are not required to disclose those uses.  If the use of a
         value is included in an extension that is adopted by a Khronos
         extension or specification, then that value's use may be permanently
         fixed as if originally reserved in a Khronos range.

         The SPIR Working Group strongly recommends:
         - Each value is used for only one purpose.
         - All values in a range should be used before allocating a new range.
         -->

    <!-- Reserved function control bits -->
    <ids type="FunctionControl" start="0" end="15" vendor="Khronos" comment="Reserved FunctionControl bits, not available to vendors - see the SPIR-V Specification"/>
    <ids type="FunctionControl" start="16" end="16" vendor="Intel" comment="Contact ben.ashbaugh@intel.com"/>
    <ids type="FunctionControl" start="17" end="30" comment="Unreserved bits reservable for use by vendors"/>
    <ids type="FunctionControl" start="31" end="31" vendor="Khronos" comment="Reserved FunctionControl bit, not available to vendors"/>


    <!-- SECTION: SPIR-V FP Fast Math Mode Bit Reservations -->
    <!-- Reserve ranges of bits in the "FP Fast Math Mode" bitfield.
         Each vendor determines the use of values in their own ranges.
         Vendors are not required to disclose those uses.  If the use of a
         value is included in an extension that is adopted by a Khronos
         extension or specification, then that value's use may be permanently
         fixed as if originally reserved in a Khronos range.
         The SPIR Working Group strongly recommends:
         - Each value is used for only one purpose.
         - All values in a range should be used before allocating a new range.
         -->

    <!-- Reserved FP fast math mode bits -->
    <ids type="FPFastMathMode" start="0" end="15" vendor="Khronos" comment="Reserved FPFastMathMode bits, not available to vendors - see the SPIR-V Specification"/>
    <ids type="FPFastMathMode" start="16" end="17" vendor="Intel" comment="Contact michael.kinsner@intel.com"/>
    <ids type="FPFastMathMode" start="18" end="31" comment="Unreserved bits reservable for use by vendors"/>


    <!-- SECTION: SPIR-V Memory Operand Bit Reservations -->
    <!-- Reserve ranges of bits in the memory operands bitfield.

         Each vendor determines the use of values in their own ranges.
         Vendors are not required to disclose those uses.  If the use of a
         value is included in an extension that is adopted by a Khronos
         extension or specification, then that value's use may be permanently
         fixed as if originally reserved in a Khronos range.

         The SPIR Working Group strongly recommends:
         - Each value is used for only one purpose.
         - All values in a range should be used before allocating a new range.
         -->

    <!-- Reserved memory operand bits -->
    <ids type="MemoryOperand" start="0" end="15" vendor="Khronos" comment="Reserved MemoryOperand bits, not available to vendors - see the SPIR-V Specification"/>
    <ids type="MemoryOperand" start="16" end="17" vendor="Intel" comment="Contact michael.kinsner@intel.com"/>
    <ids type="MemoryOperand" start="18" end="30" comment="Unreserved bits reservable for use by vendors"/>
    <ids type="MemoryOperand" start="31" end="31" vendor="Khronos" comment="Reserved MemoryOperand bit, not available to vendors"/>

    <!-- SECTION: SPIR-V Image Operand Bit Reservations -->
    <!-- Reserve ranges of bits in the image operands bitfield.

         Each vendor determines the use of values in their own ranges.
         Vendors are not required to disclose those uses.  If the use of a
         value is included in an extension that is adopted by a Khronos
         extension or specification, then that value's use may be permanently
         fixed as if originally reserved in a Khronos range.

         The SPIR Working Group strongly recommends:
         - Each value is used for only one purpose.
         - All values in a range should be used before allocating a new range.
         -->

    <!-- Reserved image operand bits -->
    <ids type="ImageOperand" start="0" end="15" vendor="Khronos" comment="Reserved ImageOperand bits, not available to vendors - see the SPIR-V Specification"/>
    <ids type="ImageOperand" start="16" end="16" vendor="Nvidia" comment="Contact pmistry@nvidia.com"/>
    <ids type="ImageOperand" start="17" end="30" comment="Unreserved bits reservable for use by vendors"/>
    <ids type="ImageOperand" start="31" end="31" vendor="Khronos" comment="Reserved ImageOperand bit, not available to vendors"/>

</registry>