Path: blob/21.2-virgl/src/compiler/spirv/spir-v.xml
4545 views
<?xml version="1.0" encoding="UTF-8"?>1<registry>2<!--3Copyright (c) 2015 The Khronos Group Inc.45Permission is hereby granted, free of charge, to any person obtaining a6copy of this software and/or associated documentation files (the7"Materials"), to deal in the Materials without restriction, including8without limitation the rights to use, copy, modify, merge, publish,9distribute, sublicense, and/or sell copies of the Materials, and to10permit persons to whom the Materials are furnished to do so, subject to11the following conditions:1213The above copyright notice and this permission notice shall be included14in all copies or substantial portions of the Materials.1516THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,17EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF18MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.19IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY20CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,21TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE22MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.23-->24<!--25This file, spir-v.xml, is the SPIR-V Tool ID, opcode and enumerant registry.26The canonical version of the registry, together with related schema and27documentation, can be found in the Khronos Registry at28include/spirv/spir-v.xml in the master branch at29https://github.com/KhronosGroup/SPIRV-Headers30-->3132<!-- SECTION: SPIR-V Tool ID Definitions -->3334<!-- A SPIR-V Generator Magic Number is a 32 bit word: The high order 1635bits are a tool ID, which should be unique across all SPIR-V36generators. The low order 16 bits are reserved for use as a tool37version number, or any other purpose the tool supplier chooses.38Only the tool IDs are reserved with Khronos.3940Add new tool ID reservations contiguously with the first available41number (the "start" attribute of the <unused> tag below), and42modify that <unused> tag accordingly. Please add a vendor/tool43supplier name in a 'vendor="name"' attribute; a tool name in a44'tool="name"' attribute; and a contact person/address in a45'comment' attribute. Remember that this value is the high 16 bits46of a 32-bit word.4748Note: a single vendor/tool supplier may have multiple tool IDs49reserved for different SPIR-V generators -->5051<ids type="vendor" start="0" end="0xFFFF" comment="SPIR-V Tool IDs">52<id value="0" vendor="Khronos" comment="Reserved by Khronos"/>53<id value="1" vendor="LunarG" comment="Contact TBD"/>54<id value="2" vendor="Valve" comment="Contact TBD"/>55<id value="3" vendor="Codeplay" comment="Contact Victor Lomuller, [email protected]"/>56<id value="4" vendor="NVIDIA" comment="Contact Kerch Holt, [email protected]"/>57<id value="5" vendor="ARM" comment="Contact Alexander Galazin, [email protected]"/>58<id value="6" vendor="Khronos" tool="LLVM/SPIR-V Translator" comment="Contact Yaxun (Sam) Liu, [email protected]"/>59<id value="7" vendor="Khronos" tool="SPIR-V Tools Assembler" comment="Contact David Neto, [email protected]"/>60<id value="8" vendor="Khronos" tool="Glslang Reference Front End" comment="Contact John Kessenich, [email protected]"/>61<id value="9" vendor="Qualcomm" comment="Contact [email protected]"/>62<id value="10" vendor="AMD" comment="Contact Daniel Rakos, [email protected]"/>63<id value="11" vendor="Intel" comment="Contact Alexey, [email protected]"/>64<id value="12" vendor="Imagination" comment="Contact James Jones"/>65<id value="13" vendor="Google" tool="Shaderc over Glslang" comment="Contact David Neto, [email protected]"/>66<id value="14" vendor="Google" tool="spiregg" comment="Contact Lei Zhang, [email protected]"/>67<id value="15" vendor="Google" tool="rspirv" comment="Contact Lei Zhang, [email protected]"/>68<id value="16" vendor="X-LEGEND" tool="Mesa-IR/SPIR-V Translator" comment="Contact Metora Wang, github:metora/MesaGLSLCompiler"/>69<id value="17" vendor="Khronos" tool="SPIR-V Tools Linker" comment="Contact David Neto, [email protected]"/>70<id value="18" vendor="Wine" tool="VKD3D Shader Compiler" comment="Contact [email protected]"/>71<id value="19" vendor="Clay" tool="Clay Shader Compiler" comment="Contact [email protected]"/>72<id value="20" vendor="W3C WebGPU Group" tool="WHLSL Shader Translator" comment="https://github.com/gpuweb/WHLSL"/>73<id value="21" vendor="Google" tool="Clspv" comment="Contact David Neto, [email protected]"/>74<id value="22" vendor="Google" tool="MLIR SPIR-V Serializer" comment="Contact Lei Zhang, [email protected]"/>75<id value="23" vendor="Google" tool="Tint Compiler" comment="Contact David Neto, [email protected]"/>76<id value="24" vendor="Google" tool="ANGLE Shader Compiler" comment="Contact Shahbaz Youssefi, [email protected]"/>77<id value="25" vendor="Netease Games" tool="Messiah Shader Compiler" comment="Contact Yuwen Wu, [email protected]"/>78<id value="26" vendor="Xenia" tool="Xenia Emulator Microcode Translator" comment="Contact Vitaliy Kuzmin, [email protected], https://github.com/xenia-project/xenia"/>79<id value="27" vendor="Embark Studios" tool="Rust GPU Compiler Backend" comment="https://github.com/embarkstudios/rust-gpu"/>80<id value="28" vendor="gfx-rs community" tool="Naga" comment="https://github.com/gfx-rs/naga"/>81<id value="29" vendor="Mikkosoft Productions" tool="MSP Shader Compiler" comment="Contact Mikko Rasa, [email protected]"/>82<id value="30" vendor="SpvGenTwo community" tool="SpvGenTwo SPIR-V IR Tools" comment="https://github.com/rAzoR8/SpvGenTwo"/>83<unused start="31" end="0xFFFF" comment="Tool ID range reservable for future use by vendors"/>84</ids>8586<!-- SECTION: SPIR-V Opcodes and Enumerants -->8788<!-- Vendors reserve new ranges of:89- opcode enumerants in the "opcode" list below, and90- non-opcode enumerants in the non-opcodes "enumerant" list below.91Both are reserved by contiguous blocks of 64, preceding the given92"Future use" blocks.9394SPIR-V background:95- SPIR-V currently has well over 30 enums, including the opcode enum96- each enum has its own name space, allowing reuse of enumerants97- SPIR-V restricts opcode enumerants to 16 bits98- all other enums use 32-bit enumerants99100Reservation rules:101- opcode reservations ("opcode") are only valid for opcodes102- non-opcode reservations ("enumerant") are not valid for opcodes103- reservations in the enumerant list are valid for all non-opcode enums104- it is simpler to use each non-opcode enumerant for only one purpose105but this is left to the discretion of the vendor106- all enumerants in a range should be used before allocating a new range107(several extensions can use enumerants from the same range)108109Each vendor determines the use of enumerants in the ranges they110reserve. Vendors are not required to disclose those uses. If the use111of an enumerant is included in an extension that is adopted by a Khronos112extension or specification, then that enumerant's use may be permanently113fixed as if originally reserved in a Khronos range.114115-->116117<!-- Begin reservations of opcode enumerants -->118<ids type="opcode" start="0" end="4095" vendor="Khronos" comment="Reserved opcodes, not available to vendors - see the SPIR-V Specification"/>119<ids type="opcode" start="4096" end="4159" vendor="Mesa" comment="Contact TBD"/>120<ids type="opcode" start="4160" end="4415" vendor="ARM"/>121<ids type="opcode" start="4416" end="4479" vendor="Khronos" comment="SPV_ARB_shader_ballot - contact Neil Henning, [email protected]"/>122<ids type="opcode" start="4480" end="4991" vendor="Qualcomm" comment="Contact [email protected]"/>123<ids type="opcode" start="4992" end="5247" vendor="AMD"/>124<ids type="opcode" start="5248" end="5503" vendor="NVIDIA"/>125<ids type="opcode" start="5504" end="5567" vendor="Imagination"/>126<ids type="opcode" start="5568" end="5631" vendor="Intel" comment="Contact [email protected]"/>127<ids type="opcode" start="5632" end="5695" vendor="Google" comment="Contact [email protected]"/>128<ids type="opcode" start="5696" end="5823" vendor="Intel" comment="Contact [email protected]"/>129<ids type="opcode" start="5824" end="5951" vendor="Intel" comment="Contact [email protected]"/>130<ids type="opcode" start="5952" end="6015" vendor="Codeplay" comment="Contact [email protected]"/>131<ids type="opcode" start="6016" end="6079" vendor="Khronos" comment="Contact @tobski"/>132<ids type="opcode" start="6080" end="6143" vendor="Intel" comment="Contact [email protected]"/>133<ids type="opcode" start="6144" end="6271" vendor="Intel" comment="Contact [email protected]"/>134<!-- Opcode enumerants to reserve for future use. To get a block, allocate135multiples of 64 starting at the lowest available point in this136block and add a corresponding <ids> tag immediately above. Make137sure to fill in the vendor attribute, and preferably add a contact138person/address in a comment attribute. -->139<!-- Example new block: <ids type="opcode" start="XXXX" end="XXXX+64n-1" vendor="Add vendor" comment="Contact TBD"/> -->140<ids type="opcode" start="6272" end="65535" comment="Opcode range reservable for future use by vendors"/>141<!-- End reservations of opcodes -->142143144<!-- Begin reservations of non-opcode enumerants -->145<ids type="enumerant" start="0" end="4095" vendor="Khronos" comment="Reserved enumerants, not available to vendors - see the SPIR-V Specification"/>146<ids type="enumerant" start="4096" end="4159" vendor="Mesa" comment="Contact TBD"/>147<ids type="enumerant" start="4160" end="4415" vendor="ARM"/>148<ids type="enumerant" start="4416" end="4479" vendor="Khronos" comment="SPV_ARB_shader_ballot - contact Neil Henning, [email protected]"/>149<ids type="enumerant" start="4480" end="4991" vendor="Qualcomm" comment="Contact [email protected]"/>150<ids type="enumerant" start="4992" end="5247" vendor="AMD"/>151<ids type="enumerant" start="5248" end="5503" vendor="NVIDIA"/>152<ids type="enumerant" start="5504" end="5567" vendor="Imagination"/>153<ids type="enumerant" start="5568" end="5631" vendor="Intel" comment="Contact [email protected]"/>154<ids type="enumerant" start="5632" end="5695" vendor="Google" comment="Contact [email protected]"/>155<ids type="enumerant" start="5696" end="5823" vendor="Intel" comment="Contact [email protected]"/>156<ids type="enumerant" start="5824" end="5951" vendor="Intel" comment="Contact [email protected]"/>157<ids type="enumerant" start="5952" end="6015" vendor="Codeplay" comment="Contact [email protected]"/>158<ids type="enumerant" start="6016" end="6079" vendor="Khronos" comment="Contact @tobski"/>159<ids type="enumerant" start="6080" end="6143" vendor="Intel" comment="Contact [email protected]"/>160<ids type="enumerant" start="6144" end="6271" vendor="Intel" comment="Contact [email protected]"/>161<!-- Enumerants to reserve for future use. To get a block, allocate162multiples of 64 starting at the lowest available point in this163block and add a corresponding <ids> tag immediately above. Make164sure to fill in the vendor attribute, and preferably add a contact165person/address in a comment attribute. -->166<!-- Example new block: <ids type="enumerant" start="XXXX" end="XXXX+64n-1" vendor="Add vendor" comment="Contact TBD"/> -->167<ids type="enumerant" start="6272" end="4294967295" comment="Enumerant range reservable for future use by vendors"/>168<!-- End reservations of enumerants -->169170171<!-- SECTION: SPIR-V Loop Control Bit Reservations -->172<!-- Reserve ranges of bits in the loop control bitfield.173174Each vendor determines the use of values in their own ranges.175Vendors are not required to disclose those uses. If the use of a176value is included in an extension that is adopted by a Khronos177extension or specification, then that value's use may be permanently178fixed as if originally reserved in a Khronos range.179180The 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-->184185<!-- Reserved loop control bits -->186<ids type="LoopControl" start="0" end="15" vendor="Khronos" comment="Reserved LoopControl bits, not available to vendors - see the SPIR-V Specification"/>187<ids type="LoopControl" start="16" end="24" vendor="Intel" comment="Contact [email protected]"/>188<ids type="LoopControl" start="25" end="30" comment="Unreserved bits reservable for use by vendors"/>189<ids type="LoopControl" start="31" end="31" vendor="Khronos" comment="Reserved LoopControl bit, not available to vendors"/>190191192<!-- SECTION: SPIR-V Function Control Bit Reservations -->193<!-- Reserve ranges of bits in the function control bitfield.194195Each vendor determines the use of values in their own ranges.196Vendors are not required to disclose those uses. If the use of a197value is included in an extension that is adopted by a Khronos198extension or specification, then that value's use may be permanently199fixed as if originally reserved in a Khronos range.200201The SPIR Working Group strongly recommends:202- Each value is used for only one purpose.203- All values in a range should be used before allocating a new range.204-->205206<!-- Reserved function control bits -->207<ids type="FunctionControl" start="0" end="15" vendor="Khronos" comment="Reserved FunctionControl bits, not available to vendors - see the SPIR-V Specification"/>208<ids type="FunctionControl" start="16" end="16" vendor="Intel" comment="Contact [email protected]"/>209<ids type="FunctionControl" start="17" end="30" comment="Unreserved bits reservable for use by vendors"/>210<ids type="FunctionControl" start="31" end="31" vendor="Khronos" comment="Reserved FunctionControl bit, not available to vendors"/>211212213<!-- SECTION: SPIR-V FP Fast Math Mode Bit Reservations -->214<!-- Reserve ranges of bits in the "FP Fast Math Mode" bitfield.215Each vendor determines the use of values in their own ranges.216Vendors are not required to disclose those uses. If the use of a217value is included in an extension that is adopted by a Khronos218extension or specification, then that value's use may be permanently219fixed as if originally reserved in a Khronos range.220The SPIR Working Group strongly recommends:221- Each value is used for only one purpose.222- All values in a range should be used before allocating a new range.223-->224225<!-- Reserved FP fast math mode bits -->226<ids type="FPFastMathMode" start="0" end="15" vendor="Khronos" comment="Reserved FPFastMathMode bits, not available to vendors - see the SPIR-V Specification"/>227<ids type="FPFastMathMode" start="16" end="17" vendor="Intel" comment="Contact [email protected]"/>228<ids type="FPFastMathMode" start="18" end="31" comment="Unreserved bits reservable for use by vendors"/>229230231<!-- SECTION: SPIR-V Memory Operand Bit Reservations -->232<!-- Reserve ranges of bits in the memory operands bitfield.233234Each vendor determines the use of values in their own ranges.235Vendors are not required to disclose those uses. If the use of a236value is included in an extension that is adopted by a Khronos237extension or specification, then that value's use may be permanently238fixed as if originally reserved in a Khronos range.239240The SPIR Working Group strongly recommends:241- Each value is used for only one purpose.242- All values in a range should be used before allocating a new range.243-->244245<!-- Reserved memory operand bits -->246<ids type="MemoryOperand" start="0" end="15" vendor="Khronos" comment="Reserved MemoryOperand bits, not available to vendors - see the SPIR-V Specification"/>247<ids type="MemoryOperand" start="16" end="17" vendor="Intel" comment="Contact [email protected]"/>248<ids type="MemoryOperand" start="18" end="30" comment="Unreserved bits reservable for use by vendors"/>249<ids type="MemoryOperand" start="31" end="31" vendor="Khronos" comment="Reserved MemoryOperand bit, not available to vendors"/>250251</registry>252253254