spir-v.xml 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <registry>
  3. <!--
  4. SPDX-FileCopyrightText: 2015-2024 The Khronos Group Inc.
  5. SPDX-License-Identifier: MIT
  6. -->
  7. <!--
  8. This file, spir-v.xml, is the SPIR-V Tool ID, opcode and enumerant registry.
  9. The canonical version of the registry, together with related schema and
  10. documentation, can be found in the Khronos Registry at
  11. include/spirv/spir-v.xml in the master branch at
  12. https://github.com/KhronosGroup/SPIRV-Headers
  13. -->
  14. <!-- SECTION: SPIR-V Tool ID Definitions -->
  15. <!-- A SPIR-V Generator Magic Number is a 32 bit word: The high order 16
  16. bits are a tool ID, which should be unique across all SPIR-V
  17. generators. The low order 16 bits are reserved for use as a tool
  18. version number, or any other purpose the tool supplier chooses.
  19. Only the tool IDs are reserved with Khronos.
  20. Add new tool ID reservations contiguously with the first available
  21. number (the "start" attribute of the <unused> tag below), and
  22. modify that <unused> tag accordingly. Please add a vendor/tool
  23. supplier name in a 'vendor="name"' attribute; a tool name in a
  24. 'tool="name"' attribute; and a contact person/address in a
  25. 'comment' attribute. Remember that this value is the high 16 bits
  26. of a 32-bit word.
  27. Note: a single vendor/tool supplier may have multiple tool IDs
  28. reserved for different SPIR-V generators -->
  29. <ids type="vendor" start="0" end="0xFFFF" comment="SPIR-V Tool IDs">
  30. <id value="0" vendor="Khronos" comment="Reserved by Khronos"/>
  31. <id value="1" vendor="LunarG" comment="Contact TBD"/>
  32. <id value="2" vendor="Valve" comment="Contact TBD"/>
  33. <id value="3" vendor="Codeplay" comment="Contact Victor Lomuller, [email protected]"/>
  34. <id value="4" vendor="NVIDIA" comment="Contact Kerch Holt, [email protected]"/>
  35. <id value="5" vendor="ARM" comment="Contact Kevin Petit, [email protected]"/>
  36. <id value="6" vendor="Khronos" tool="LLVM/SPIR-V Translator" comment="Contact Yaxun (Sam) Liu, [email protected]"/>
  37. <id value="7" vendor="Khronos" tool="SPIR-V Tools Assembler" comment="Contact David Neto, [email protected]"/>
  38. <id value="8" vendor="Khronos" tool="Glslang Reference Front End" comment="Contact John Kessenich, [email protected]"/>
  39. <id value="9" vendor="Qualcomm" comment="Contact [email protected]"/>
  40. <id value="10" vendor="AMD" comment="Contact Daniel Rakos, [email protected]"/>
  41. <id value="11" vendor="Intel" comment="Contact Alexey, [email protected]"/>
  42. <id value="12" vendor="Imagination" comment="Contact Stephen Clarke, [email protected]"/>
  43. <id value="13" vendor="Google" tool="Shaderc over Glslang" comment="Contact David Neto, [email protected]"/>
  44. <id value="14" vendor="Google" tool="spiregg" comment="Contact Steven Perron, [email protected]"/>
  45. <id value="15" vendor="Google" tool="rspirv" comment="Contact Lei Zhang, [email protected]"/>
  46. <id value="16" vendor="X-LEGEND" tool="Mesa-IR/SPIR-V Translator" comment="Contact Metora Wang, github:metora/MesaGLSLCompiler"/>
  47. <id value="17" vendor="Khronos" tool="SPIR-V Tools Linker" comment="Contact David Neto, [email protected]"/>
  48. <id value="18" vendor="Wine" tool="VKD3D Shader Compiler" comment="Contact [email protected]"/>
  49. <id value="19" vendor="Tellusim" tool="Clay Shader Compiler" comment="Contact [email protected]"/>
  50. <id value="20" vendor="W3C WebGPU Group" tool="WHLSL Shader Translator" comment="https://github.com/gpuweb/WHLSL"/>
  51. <id value="21" vendor="Google" tool="Clspv" comment="Contact David Neto, [email protected]"/>
  52. <id value="22" vendor="LLVM" tool="MLIR SPIR-V Serializer" comment="Contact Jakub Kuderski, [email protected], https://mlir.llvm.org/docs/Dialects/SPIR-V/"/>
  53. <id value="23" vendor="Google" tool="Tint Compiler" comment="Contact David Neto, [email protected]"/>
  54. <id value="24" vendor="Google" tool="ANGLE Shader Compiler" comment="Contact Shahbaz Youssefi, [email protected]"/>
  55. <id value="25" vendor="Netease Games" tool="Messiah Shader Compiler" comment="Contact Yuwen Wu, [email protected]"/>
  56. <id value="26" vendor="Xenia" tool="Xenia Emulator Microcode Translator" comment="Contact Vitaliy Kuzmin, [email protected], https://github.com/xenia-project/xenia"/>
  57. <id value="27" vendor="Embark Studios" tool="Rust GPU Compiler Backend" comment="https://github.com/embarkstudios/rust-gpu"/>
  58. <id value="28" vendor="gfx-rs community" tool="Naga" comment="https://github.com/gfx-rs/naga"/>
  59. <id value="29" vendor="Mikkosoft Productions" tool="MSP Shader Compiler" comment="Contact Mikko Rasa, [email protected]"/>
  60. <id value="30" vendor="SpvGenTwo community" tool="SpvGenTwo SPIR-V IR Tools" comment="https://github.com/rAzoR8/SpvGenTwo"/>
  61. <id value="31" vendor="Google" tool="Skia SkSL" comment="Contact Ethan Nicholas, [email protected]"/>
  62. <id value="32" vendor="TornadoVM" tool="Beehive SPIRV Toolkit" comment="https://github.com/beehive-lab/beehive-spirv-toolkit"/>
  63. <id value="33" vendor="DragonJoker" tool="ShaderWriter" comment="Contact Sylvain Doremus, https://github.com/DragonJoker/ShaderWriter"/>
  64. <id value="34" vendor="Rayan Hatout" tool="SPIRVSmith" comment="Contact Rayan Hatout [email protected], Repo https://github.com/rayanht/SPIRVSmith"/>
  65. <id value="35" vendor="Saarland University" tool="Shady" comment="Contact Hugo Devillers [email protected], Repo https://github.com/Hugobros3/shady"/>
  66. <id value="36" vendor="Taichi Graphics" tool="Taichi" comment="Contact Rendong Liang [email protected], Repo https://github.com/taichi-dev/taichi"/>
  67. <id value="37" vendor="heroseh" tool="Hero C Compiler" comment="https://github.com/heroseh/hcc"/>
  68. <id value="38" vendor="Meta" tool="SparkSL" comment="Contact Dunfan Lu, [email protected], https://sparkar.facebook.com/ar-studio/learn/sparksl/sparksl-overview"/>
  69. <id value="39" vendor="SirLynix" tool="Nazara ShaderLang Compiler" comment="Contact Jérôme Leclercq, https://github.com/NazaraEngine/ShaderLang"/>
  70. <id value="40" vendor="Khronos" tool="Slang Compiler" comment="https://shader-slang.org"/>
  71. <id value="41" vendor="Zig Software Foundation" tool="Zig Compiler" comment="Contact Robin Voetter, https://github.com/Snektron"/>
  72. <id value="42" vendor="Rendong Liang" tool="spq" comment="Contact Rendong Liang, [email protected], https://github.com/PENGUINLIONG/spq-rs"/>
  73. <id value="43" vendor="LLVM" tool="LLVM SPIR-V Backend" comment="Contact Michal Paszkowski, [email protected], https://github.com/llvm/llvm-project/tree/main/llvm/lib/Target/SPIRV"/>
  74. <id value="44" vendor="Robert Konrad" tool="Kongruent" comment="Contact Robert Konrad, https://github.com/Kode/Kongruent"/>
  75. <id value="45" vendor="Kitsunebi Games" tool="Nuvk SPIR-V Emitter and DLSL compiler" comment="Contact Luna Nielsen, [email protected], https://github.com/Inochi2D/nuvk"/>
  76. <id value="46" vendor="Nintendo" comment="Contact Steve Urquhart, [email protected]"/>
  77. <id value="47" vendor="ARM" comment="Contact Christopher Gautier, [email protected]"/>
  78. <id value="48" vendor="Goopax" comment="Contact Ingo Josopait, [email protected]"/>
  79. <id value="49" vendor="Icyllis Milica" tool="Arc3D Shader Compiler" comment="Contact Icyllis Milica, https://github.com/BloCamLimb/Arc3D"/>
  80. <unused start="50" end="0xFFFF" comment="Tool ID range reservable for future use by vendors"/>
  81. </ids>
  82. <!-- SECTION: SPIR-V Opcodes and Enumerants -->
  83. <!-- Vendors reserve new ranges of:
  84. - opcode enumerants in the "opcode" list below, and
  85. - non-opcode enumerants in the non-opcodes "enumerant" list below.
  86. Both are reserved by contiguous blocks of 64, preceding the given
  87. "Future use" blocks.
  88. SPIR-V background:
  89. - SPIR-V currently has well over 30 enums, including the opcode enum
  90. - each enum has its own name space, allowing reuse of enumerants
  91. - SPIR-V restricts opcode enumerants to 16 bits
  92. - all other enums use 32-bit enumerants
  93. Reservation rules:
  94. - opcode reservations ("opcode") are only valid for opcodes
  95. - non-opcode reservations ("enumerant") are not valid for opcodes
  96. - reservations in the enumerant list are valid for all non-opcode enums
  97. - it is simpler to use each non-opcode enumerant for only one purpose
  98. but this is left to the discretion of the vendor
  99. - all enumerants in a range should be used before allocating a new range
  100. (several extensions can use enumerants from the same range)
  101. Each vendor determines the use of enumerants in the ranges they
  102. reserve. Vendors are not required to disclose those uses. If the use
  103. of an enumerant is included in an extension that is adopted by a Khronos
  104. extension or specification, then that enumerant's use may be permanently
  105. fixed as if originally reserved in a Khronos range.
  106. -->
  107. <!-- Begin reservations of opcode enumerants -->
  108. <ids type="opcode" start="0" end="4095" vendor="Khronos" comment="Reserved opcodes, not available to vendors - see the SPIR-V Specification"/>
  109. <ids type="opcode" start="4096" end="4159" vendor="Mesa" comment="Contact TBD"/>
  110. <ids type="opcode" start="4160" end="4415" vendor="ARM" comment="Contact [email protected]"/>
  111. <ids type="opcode" start="4416" end="4479" vendor="Khronos" comment="SPV_ARB_shader_ballot - contact Neil Henning, [email protected]"/>
  112. <ids type="opcode" start="4480" end="4991" vendor="Qualcomm" comment="Contact [email protected]"/>
  113. <ids type="opcode" start="4992" end="5247" vendor="AMD"/>
  114. <ids type="opcode" start="5248" end="5503" vendor="NVIDIA"/>
  115. <ids type="opcode" start="5504" end="5567" vendor="Imagination"/>
  116. <ids type="opcode" start="5568" end="5631" vendor="Intel" comment="Contact [email protected]"/>
  117. <ids type="opcode" start="5632" end="5695" vendor="Google" comment="Contact [email protected]"/>
  118. <ids type="opcode" start="5696" end="5823" vendor="Intel" comment="Contact [email protected]"/>
  119. <ids type="opcode" start="5824" end="5951" vendor="Intel" comment="Contact [email protected]"/>
  120. <ids type="opcode" start="5952" end="6015" vendor="Codeplay" comment="Contact [email protected]"/>
  121. <ids type="opcode" start="6016" end="6079" vendor="Khronos" comment="Contact @tobski"/>
  122. <ids type="opcode" start="6080" end="6143" vendor="Intel" comment="Contact [email protected]"/>
  123. <ids type="opcode" start="6144" end="6271" vendor="Intel" comment="Contact [email protected]"/>
  124. <ids type="opcode" start="6272" end="6399" vendor="Huawei" comment="Contact [email protected]"/>
  125. <ids type="opcode" start="6400" end="6463" vendor="Intel" comment="Contact [email protected]"/>
  126. <ids type="opcode" start="6464" end="6527" vendor="N/A" comment="Blank range to keep alignment with non-opcodes"/>
  127. <ids type="opcode" start="6528" end="6591" vendor="Codeplay" comment="Contact [email protected]"/>
  128. <ids type="opcode" start="6592" end="6655" vendor="Saarland University" comment="Contact [email protected]"/>
  129. <ids type="opcode" start="6656" end="6719" vendor="Meta" comment="Contact [email protected]"/>
  130. <ids type="opcode" start="6720" end="6783" vendor="MediaTek" comment="Contact [email protected]"/>
  131. <ids type="opcode" start="6784" end="6911" vendor="Intel" comment="Contact [email protected]"/>
  132. <!-- Opcode enumerants to reserve for future use. To get a block, allocate
  133. multiples of 64 starting at the lowest available point in this
  134. block and add a corresponding <ids> tag immediately above. Make
  135. sure to fill in the vendor attribute, and preferably add a contact
  136. person/address in a comment attribute. -->
  137. <!-- Example new block: <ids type="opcode" start="XXXX" end="XXXX+64n-1" vendor="Add vendor" comment="Contact TBD"/> -->
  138. <ids type="opcode" start="6912" end="65535" comment="Opcode range reservable for future use by vendors"/>
  139. <!-- End reservations of opcodes -->
  140. <!-- Begin reservations of non-opcode enumerants -->
  141. <ids type="enumerant" start="0" end="4095" vendor="Khronos" comment="Reserved enumerants, not available to vendors - see the SPIR-V Specification"/>
  142. <ids type="enumerant" start="4096" end="4159" vendor="Mesa" comment="Contact TBD"/>
  143. <ids type="enumerant" start="4160" end="4415" vendor="ARM" comment="Contact [email protected]"/>
  144. <ids type="enumerant" start="4416" end="4479" vendor="Khronos" comment="SPV_ARB_shader_ballot - contact Neil Henning, [email protected]"/>
  145. <ids type="enumerant" start="4480" end="4991" vendor="Qualcomm" comment="Contact [email protected]"/>
  146. <ids type="enumerant" start="4992" end="5247" vendor="AMD"/>
  147. <ids type="enumerant" start="5248" end="5503" vendor="NVIDIA"/>
  148. <ids type="enumerant" start="5504" end="5567" vendor="Imagination"/>
  149. <ids type="enumerant" start="5568" end="5631" vendor="Intel" comment="Contact [email protected]"/>
  150. <ids type="enumerant" start="5632" end="5695" vendor="Google" comment="Contact [email protected]"/>
  151. <ids type="enumerant" start="5696" end="5823" vendor="Intel" comment="Contact [email protected]"/>
  152. <ids type="enumerant" start="5824" end="5951" vendor="Intel" comment="Contact [email protected]"/>
  153. <ids type="enumerant" start="5952" end="6015" vendor="Codeplay" comment="Contact [email protected]"/>
  154. <ids type="enumerant" start="6016" end="6079" vendor="Khronos" comment="Contact @tobski"/>
  155. <ids type="enumerant" start="6080" end="6143" vendor="Intel" comment="Contact [email protected]"/>
  156. <ids type="enumerant" start="6144" end="6271" vendor="Intel" comment="Contact [email protected]"/>
  157. <ids type="enumerant" start="6272" end="6399" vendor="Huawei" comment="Contact [email protected]"/>
  158. <ids type="enumerant" start="6400" end="6463" vendor="Intel" comment="Contact [email protected]"/>
  159. <ids type="enumerant" start="6464" end="6527" vendor="Mikkosoft Productions" comment="Contact Mikko Rasa, [email protected]"/>
  160. <ids type="enumerant" start="6528" end="6591" vendor="Codeplay" comment="Contact [email protected]"/>
  161. <ids type="enumerant" start="6592" end="6655" vendor="Saarland University" comment="Contact [email protected]"/>
  162. <ids type="enumerant" start="6656" end="6719" vendor="Meta" comment="Contact [email protected]"/>
  163. <ids type="enumerant" start="6720" end="6783" vendor="MediaTek" comment="Contact [email protected]"/>
  164. <ids type="enumerant" start="6784" end="6911" vendor="Intel" comment="Contact [email protected]"/>
  165. <!-- Enumerants to reserve for future use. To get a block, allocate
  166. multiples of 64 starting at the lowest available point in this
  167. block and add a corresponding <ids> tag immediately above. Make
  168. sure to fill in the vendor attribute, and preferably add a contact
  169. person/address in a comment attribute. -->
  170. <!-- Example new block: <ids type="enumerant" start="XXXX" end="XXXX+64n-1" vendor="Add vendor" comment="Contact TBD"/> -->
  171. <ids type="enumerant" start="6912" end="4294967295" comment="Enumerant range reservable for future use by vendors"/>
  172. <!-- End reservations of enumerants -->
  173. <!-- SECTION: SPIR-V Loop Control Bit Reservations -->
  174. <!-- Reserve ranges of bits in the loop control bitfield.
  175. Each vendor determines the use of values in their own ranges.
  176. Vendors are not required to disclose those uses. If the use of a
  177. value is included in an extension that is adopted by a Khronos
  178. extension or specification, then that value's use may be permanently
  179. fixed as if originally reserved in a Khronos range.
  180. The SPIR Working Group strongly recommends:
  181. - Each value is used for only one purpose.
  182. - All values in a range should be used before allocating a new range.
  183. -->
  184. <!-- Reserved loop control bits -->
  185. <ids type="LoopControl" start="0" end="15" vendor="Khronos" comment="Reserved LoopControl bits, not available to vendors - see the SPIR-V Specification"/>
  186. <ids type="LoopControl" start="16" end="27" vendor="Intel" comment="Contact [email protected]"/>
  187. <ids type="LoopControl" start="28" end="30" comment="Unreserved bits reservable for use by vendors"/>
  188. <ids type="LoopControl" start="31" end="31" vendor="Khronos" comment="Reserved LoopControl bit, not available to vendors"/>
  189. <!-- SECTION: SPIR-V Function Control Bit Reservations -->
  190. <!-- Reserve ranges of bits in the function control bitfield.
  191. Each vendor determines the use of values in their own ranges.
  192. Vendors are not required to disclose those uses. If the use of a
  193. value is included in an extension that is adopted by a Khronos
  194. extension or specification, then that value's use may be permanently
  195. fixed as if originally reserved in a Khronos range.
  196. The SPIR Working Group strongly recommends:
  197. - Each value is used for only one purpose.
  198. - All values in a range should be used before allocating a new range.
  199. -->
  200. <!-- Reserved function control bits -->
  201. <ids type="FunctionControl" start="0" end="15" vendor="Khronos" comment="Reserved FunctionControl bits, not available to vendors - see the SPIR-V Specification"/>
  202. <ids type="FunctionControl" start="16" end="16" vendor="Intel" comment="Contact [email protected]"/>
  203. <ids type="FunctionControl" start="17" end="30" comment="Unreserved bits reservable for use by vendors"/>
  204. <ids type="FunctionControl" start="31" end="31" vendor="Khronos" comment="Reserved FunctionControl bit, not available to vendors"/>
  205. <!-- SECTION: SPIR-V FP Fast Math Mode Bit Reservations -->
  206. <!-- Reserve ranges of bits in the "FP Fast Math Mode" bitfield.
  207. Each vendor determines the use of values in their own ranges.
  208. Vendors are not required to disclose those uses. If the use of a
  209. value is included in an extension that is adopted by a Khronos
  210. extension or specification, then that value's use may be permanently
  211. fixed as if originally reserved in a Khronos range.
  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. <!-- Reserved FP fast math mode bits -->
  217. <ids type="FPFastMathMode" start="0" end="15" vendor="Khronos" comment="Reserved FPFastMathMode bits, not available to vendors - see the SPIR-V Specification"/>
  218. <ids type="FPFastMathMode" start="16" end="17" vendor="Intel" comment="Contact [email protected]"/>
  219. <ids type="FPFastMathMode" start="18" end="18" vendor="khronos" comment="Reserved FPFastMathMode bit, not available to vendors - see SPV_KHR_float_controls2"/>
  220. <ids type="FPFastMathMode" start="19" end="31" comment="Unreserved bits reservable for use by vendors"/>
  221. <!-- SECTION: SPIR-V Memory Operand Bit Reservations -->
  222. <!-- Reserve ranges of bits in the memory operands bitfield.
  223. Each vendor determines the use of values in their own ranges.
  224. Vendors are not required to disclose those uses. If the use of a
  225. value is included in an extension that is adopted by a Khronos
  226. extension or specification, then that value's use may be permanently
  227. fixed as if originally reserved in a Khronos range.
  228. The SPIR Working Group strongly recommends:
  229. - Each value is used for only one purpose.
  230. - All values in a range should be used before allocating a new range.
  231. -->
  232. <!-- Reserved memory operand bits -->
  233. <ids type="MemoryOperand" start="0" end="15" vendor="Khronos" comment="Reserved MemoryOperand bits, not available to vendors - see the SPIR-V Specification"/>
  234. <ids type="MemoryOperand" start="16" end="18" vendor="Intel" comment="Contact [email protected]"/>
  235. <ids type="MemoryOperand" start="19" end="22" vendor="Arm" comment="Contact [email protected]"/>
  236. <ids type="MemoryOperand" start="23" end="30" comment="Unreserved bits reservable for use by vendors"/>
  237. <ids type="MemoryOperand" start="31" end="31" vendor="Khronos" comment="Reserved MemoryOperand bit, not available to vendors"/>
  238. <!-- SECTION: SPIR-V Image Operand Bit Reservations -->
  239. <!-- Reserve ranges of bits in the image operands bitfield.
  240. Each vendor determines the use of values in their own ranges.
  241. Vendors are not required to disclose those uses. If the use of a
  242. value is included in an extension that is adopted by a Khronos
  243. extension or specification, then that value's use may be permanently
  244. fixed as if originally reserved in a Khronos range.
  245. The SPIR Working Group strongly recommends:
  246. - Each value is used for only one purpose.
  247. - All values in a range should be used before allocating a new range.
  248. -->
  249. <!-- Reserved image operand bits -->
  250. <ids type="ImageOperand" start="0" end="15" vendor="Khronos" comment="Reserved ImageOperand bits, not available to vendors - see the SPIR-V Specification"/>
  251. <ids type="ImageOperand" start="16" end="16" vendor="Nvidia" comment="Contact [email protected]"/>
  252. <ids type="ImageOperand" start="17" end="30" comment="Unreserved bits reservable for use by vendors"/>
  253. <ids type="ImageOperand" start="31" end="31" vendor="Khronos" comment="Reserved ImageOperand bit, not available to vendors"/>
  254. </registry>