| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305 |
- <?xml version="1.0" encoding="UTF-8"?>
- <registry>
- <!--
- Copyright (c) 2015-2024 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, [email protected]"/>
- <id value="4" vendor="NVIDIA" comment="Contact Kerch Holt, [email protected]"/>
- <id value="5" vendor="ARM" comment="Contact Kevin Petit, [email protected]"/>
- <id value="6" vendor="Khronos" tool="LLVM/SPIR-V Translator" comment="Contact Yaxun (Sam) Liu, [email protected]"/>
- <id value="7" vendor="Khronos" tool="SPIR-V Tools Assembler" comment="Contact David Neto, [email protected]"/>
- <id value="8" vendor="Khronos" tool="Glslang Reference Front End" comment="Contact John Kessenich, [email protected]"/>
- <id value="9" vendor="Qualcomm" comment="Contact [email protected]"/>
- <id value="10" vendor="AMD" comment="Contact Daniel Rakos, [email protected]"/>
- <id value="11" vendor="Intel" comment="Contact Alexey, [email protected]"/>
- <id value="12" vendor="Imagination" comment="Contact Stephen Clarke, [email protected]"/>
- <id value="13" vendor="Google" tool="Shaderc over Glslang" comment="Contact David Neto, [email protected]"/>
- <id value="14" vendor="Google" tool="spiregg" comment="Contact Steven Perron, [email protected]"/>
- <id value="15" vendor="Google" tool="rspirv" comment="Contact Lei Zhang, [email protected]"/>
- <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, [email protected]"/>
- <id value="18" vendor="Wine" tool="VKD3D Shader Compiler" comment="Contact [email protected]"/>
- <id value="19" vendor="Tellusim" tool="Clay Shader Compiler" comment="Contact [email protected]"/>
- <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, [email protected]"/>
- <id value="22" vendor="LLVM" tool="MLIR SPIR-V Serializer" comment="Contact Jakub Kuderski, [email protected], https://mlir.llvm.org/docs/Dialects/SPIR-V/"/>
- <id value="23" vendor="Google" tool="Tint Compiler" comment="Contact David Neto, [email protected]"/>
- <id value="24" vendor="Google" tool="ANGLE Shader Compiler" comment="Contact Shahbaz Youssefi, [email protected]"/>
- <id value="25" vendor="Netease Games" tool="Messiah Shader Compiler" comment="Contact Yuwen Wu, [email protected]"/>
- <id value="26" vendor="Xenia" tool="Xenia Emulator Microcode Translator" comment="Contact Vitaliy Kuzmin, [email protected], 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, [email protected]"/>
- <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, [email protected]"/>
- <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 [email protected], Repo https://github.com/rayanht/SPIRVSmith"/>
- <id value="35" vendor="Saarland University" tool="Shady" comment="Contact Hugo Devillers [email protected], Repo https://github.com/Hugobros3/shady"/>
- <id value="36" vendor="Taichi Graphics" tool="Taichi" comment="Contact Rendong Liang [email protected], Repo https://github.com/taichi-dev/taichi"/>
- <id value="37" vendor="heroseh" tool="Hero C Compiler" comment="https://github.com/heroseh/hcc"/>
- <id value="38" vendor="Meta" tool="SparkSL" comment="Contact Dunfan Lu, [email protected], https://sparkar.facebook.com/ar-studio/learn/sparksl/sparksl-overview"/>
- <id value="39" vendor="SirLynix" tool="Nazara ShaderLang Compiler" comment="Contact Jérôme Leclercq, https://github.com/NazaraEngine/ShaderLang"/>
- <id value="40" vendor="Khronos" tool="Slang Compiler" comment="https://shader-slang.org"/>
- <id value="41" vendor="Zig Software Foundation" tool="Zig Compiler" comment="Contact Robin Voetter, https://github.com/Snektron"/>
- <id value="42" vendor="Rendong Liang" tool="spq" comment="Contact Rendong Liang, [email protected], https://github.com/PENGUINLIONG/spq-rs"/>
- <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"/>
- <id value="44" vendor="Robert Konrad" tool="Kongruent" comment="Contact Robert Konrad, https://github.com/Kode/Kongruent"/>
- <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"/>
- <id value="46" vendor="Nintendo" comment="Contact Steve Urquhart, [email protected]"/>
- <id value="47" vendor="ARM" comment="Contact Christopher Gautier, [email protected]"/>
- <unused start="48" 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 [email protected]"/>
- <ids type="opcode" start="4416" end="4479" vendor="Khronos" comment="SPV_ARB_shader_ballot - contact Neil Henning, [email protected]"/>
- <ids type="opcode" start="4480" end="4991" vendor="Qualcomm" comment="Contact [email protected]"/>
- <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 [email protected]"/>
- <ids type="opcode" start="5632" end="5695" vendor="Google" comment="Contact [email protected]"/>
- <ids type="opcode" start="5696" end="5823" vendor="Intel" comment="Contact [email protected]"/>
- <ids type="opcode" start="5824" end="5951" vendor="Intel" comment="Contact [email protected]"/>
- <ids type="opcode" start="5952" end="6015" vendor="Codeplay" comment="Contact [email protected]"/>
- <ids type="opcode" start="6016" end="6079" vendor="Khronos" comment="Contact @tobski"/>
- <ids type="opcode" start="6080" end="6143" vendor="Intel" comment="Contact [email protected]"/>
- <ids type="opcode" start="6144" end="6271" vendor="Intel" comment="Contact [email protected]"/>
- <ids type="opcode" start="6272" end="6399" vendor="Huawei" comment="Contact [email protected]"/>
- <ids type="opcode" start="6400" end="6463" vendor="Intel" comment="Contact [email protected]"/>
- <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 [email protected]"/>
- <ids type="opcode" start="6592" end="6655" vendor="Saarland University" comment="Contact [email protected]"/>
- <ids type="opcode" start="6656" end="6719" vendor="Meta" comment="Contact [email protected]"/>
- <ids type="opcode" start="6720" end="6783" vendor="MediaTek" comment="Contact [email protected]"/>
- <!-- 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="6784" 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 [email protected]"/>
- <ids type="enumerant" start="4416" end="4479" vendor="Khronos" comment="SPV_ARB_shader_ballot - contact Neil Henning, [email protected]"/>
- <ids type="enumerant" start="4480" end="4991" vendor="Qualcomm" comment="Contact [email protected]"/>
- <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 [email protected]"/>
- <ids type="enumerant" start="5632" end="5695" vendor="Google" comment="Contact [email protected]"/>
- <ids type="enumerant" start="5696" end="5823" vendor="Intel" comment="Contact [email protected]"/>
- <ids type="enumerant" start="5824" end="5951" vendor="Intel" comment="Contact [email protected]"/>
- <ids type="enumerant" start="5952" end="6015" vendor="Codeplay" comment="Contact [email protected]"/>
- <ids type="enumerant" start="6016" end="6079" vendor="Khronos" comment="Contact @tobski"/>
- <ids type="enumerant" start="6080" end="6143" vendor="Intel" comment="Contact [email protected]"/>
- <ids type="enumerant" start="6144" end="6271" vendor="Intel" comment="Contact [email protected]"/>
- <ids type="enumerant" start="6272" end="6399" vendor="Huawei" comment="Contact [email protected]"/>
- <ids type="enumerant" start="6400" end="6463" vendor="Intel" comment="Contact [email protected]"/>
- <ids type="enumerant" start="6464" end="6527" vendor="Mikkosoft Productions" comment="Contact Mikko Rasa, [email protected]"/>
- <ids type="enumerant" start="6528" end="6591" vendor="Codeplay" comment="Contact [email protected]"/>
- <ids type="enumerant" start="6592" end="6655" vendor="Saarland University" comment="Contact [email protected]"/>
- <ids type="enumerant" start="6656" end="6719" vendor="Meta" comment="Contact [email protected]"/>
- <ids type="enumerant" start="6720" end="6783" vendor="MediaTek" comment="Contact [email protected]"/>
- <!-- 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="6784" 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="27" vendor="Intel" comment="Contact [email protected]"/>
- <ids type="LoopControl" start="28" 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 [email protected]"/>
- <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 [email protected]"/>
- <ids type="FPFastMathMode" start="18" end="18" vendor="khronos" comment="Reserved FPFastMathMode bit, not available to vendors - see SPV_KHR_float_controls2"/>
- <ids type="FPFastMathMode" start="19" 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="18" vendor="Intel" comment="Contact [email protected]"/>
- <ids type="MemoryOperand" start="19" end="22" vendor="Arm" comment="Contact [email protected]"/>
- <ids type="MemoryOperand" start="23" 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 [email protected]"/>
- <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>
|