Update SPIR-V headers and grammar

* Add an extension tracker to list which extensions/capabilities are supported
  by the debugger.
This commit is contained in:
baldurk
2022-08-08 13:45:27 +01:00
parent 039ae9fa35
commit ff00b85ae0
15 changed files with 4365 additions and 1631 deletions
@@ -0,0 +1,276 @@
0 Matrix
1 Shader
2 Geometry
3 Tessellation
4 Addresses
5 Linkage
6 Kernel
7 Vector16
8 Float16Buffer
9 Float16
10 Float64
11 Int64
12 Int64Atomics
13 ImageBasic
14 ImageReadWrite
15 ImageMipmap
17 Pipes
18 Groups
19 DeviceEnqueue
20 LiteralSampler
21 AtomicStorage
22 Int16
23 TessellationPointSize
24 GeometryPointSize
25 ImageGatherExtended
27 StorageImageMultisample
28 UniformBufferArrayDynamicIndexing
29 SampledImageArrayDynamicIndexing
30 StorageBufferArrayDynamicIndexing
31 StorageImageArrayDynamicIndexing
32 ClipDistance
33 CullDistance
34 ImageCubeArray
35 SampleRateShading
36 ImageRect
37 SampledRect
38 GenericPointer
39 Int8
40 InputAttachment
41 SparseResidency
42 MinLod
43 Sampled1D
44 Image1D
45 SampledCubeArray
46 SampledBuffer
47 ImageBuffer
48 ImageMSArray
49 StorageImageExtendedFormats
50 ImageQuery
51 DerivativeControl
52 InterpolationFunction
53 TransformFeedback
54 GeometryStreams
55 StorageImageReadWithoutFormat
56 StorageImageWriteWithoutFormat
57 MultiViewport
58 SubgroupDispatch
59 NamedBarrier
60 PipeStorage
61 GroupNonUniform
62 GroupNonUniformVote
63 GroupNonUniformArithmetic
64 GroupNonUniformBallot
65 GroupNonUniformShuffle
66 GroupNonUniformShuffleRelative
67 GroupNonUniformClustered
68 GroupNonUniformQuad
69 ShaderLayer
70 ShaderViewportIndex
71 UniformDecoration
4165 CoreBuiltinsARM
4166 TileImageColorReadAccessEXT
4167 TileImageDepthReadAccessEXT
4168 TileImageStencilReadAccessEXT
4174 TensorsARM
4175 StorageTensorArrayDynamicIndexingARM
4176 StorageTensorArrayNonUniformIndexingARM
4191 GraphARM
4201 CooperativeMatrixLayoutsARM
4212 Float8EXT
4213 Float8CooperativeMatrixEXT
4422 FragmentShadingRateKHR
4423 SubgroupBallotKHR
4427 DrawParameters
4428 WorkgroupMemoryExplicitLayoutKHR
4429 WorkgroupMemoryExplicitLayout8BitAccessKHR
4430 WorkgroupMemoryExplicitLayout16BitAccessKHR
4431 SubgroupVoteKHR
4433 StorageBuffer16BitAccess
4434 UniformAndStorageBuffer16BitAccess
4435 StoragePushConstant16
4436 StorageInputOutput16
4437 DeviceGroup
4439 MultiView
4441 VariablePointersStorageBuffer
4442 VariablePointers
4445 AtomicStorageOps
4447 SampleMaskPostDepthCoverage
4448 StorageBuffer8BitAccess
4449 UniformAndStorageBuffer8BitAccess
4450 StoragePushConstant8
4464 DenormPreserve
4465 DenormFlushToZero
4466 SignedZeroInfNanPreserve
4467 RoundingModeRTE
4468 RoundingModeRTZ
4471 RayQueryProvisionalKHR
4472 RayQueryKHR
4473 UntypedPointersKHR
4478 RayTraversalPrimitiveCullingKHR
4479 RayTracingKHR
4484 TextureSampleWeightedQCOM
4485 TextureBoxFilterQCOM
4486 TextureBlockMatchQCOM
4495 TileShadingQCOM
4496 CooperativeMatrixConversionQCOM
4498 TextureBlockMatch2QCOM
5008 Float16ImageAMD
5009 ImageGatherBiasLodAMD
5010 FragmentMaskAMD
5013 StencilExportEXT
5015 ImageReadWriteLodAMD
5016 Int64ImageEXT
5055 ShaderClockKHR
5067 ShaderEnqueueAMDX
5087 QuadControlKHR
5112 Int4TypeINTEL
5114 Int4CooperativeMatrixINTEL
5116 BFloat16TypeKHR
5117 BFloat16DotProductKHR
5118 BFloat16CooperativeMatrixKHR
5249 SampleMaskOverrideCoverageNV
5251 GeometryShaderPassthroughNV
5254 ShaderViewportIndexLayerEXT
5255 ShaderViewportMaskNV
5259 ShaderStereoViewNV
5260 PerViewAttributesNV
5265 FragmentFullyCoveredEXT
5266 MeshShadingNV
5282 ImageFootprintNV
5283 MeshShadingEXT
5284 FragmentBarycentricKHR
5288 ComputeDerivativeGroupQuadsKHR
5291 FragmentDensityEXT
5297 GroupNonUniformPartitionedNV
5301 ShaderNonUniform
5302 RuntimeDescriptorArray
5303 InputAttachmentArrayDynamicIndexing
5304 UniformTexelBufferArrayDynamicIndexing
5305 StorageTexelBufferArrayDynamicIndexing
5306 UniformBufferArrayNonUniformIndexing
5307 SampledImageArrayNonUniformIndexing
5308 StorageBufferArrayNonUniformIndexing
5309 StorageImageArrayNonUniformIndexing
5310 InputAttachmentArrayNonUniformIndexing
5311 UniformTexelBufferArrayNonUniformIndexing
5312 StorageTexelBufferArrayNonUniformIndexing
5336 RayTracingPositionFetchKHR
5340 RayTracingNV
5341 RayTracingMotionBlurNV
5345 VulkanMemoryModel
5346 VulkanMemoryModelDeviceScope
5347 PhysicalStorageBufferAddresses
5350 ComputeDerivativeGroupLinearKHR
5353 RayTracingProvisionalKHR
5357 CooperativeMatrixNV
5363 FragmentShaderSampleInterlockEXT
5372 FragmentShaderShadingRateInterlockEXT
5373 ShaderSMBuiltinsNV
5378 FragmentShaderPixelInterlockEXT
5379 DemoteToHelperInvocation
5380 DisplacementMicromapNV
5381 RayTracingOpacityMicromapEXT
5383 ShaderInvocationReorderNV
5390 BindlessTextureNV
5391 RayQueryPositionFetchKHR
5394 CooperativeVectorNV
5404 AtomicFloat16VectorNV
5409 RayTracingDisplacementMicromapNV
5414 RawAccessChainsNV
5418 RayTracingSpheresGeometryNV
5419 RayTracingLinearSweptSpheresGeometryNV
5426 Shader64BitIndexingEXT
5430 CooperativeMatrixReductionsNV
5431 CooperativeMatrixConversionsNV
5432 CooperativeMatrixPerElementOperationsNV
5433 CooperativeMatrixTensorAddressingNV
5434 CooperativeMatrixBlockLoadsNV
5435 CooperativeVectorTrainingNV
5437 RayTracingClusterAccelerationStructureNV
5439 TensorAddressingNV
5568 SubgroupShuffleINTEL
5569 SubgroupBufferBlockIOINTEL
5570 SubgroupImageBlockIOINTEL
5579 SubgroupImageMediaBlockIOINTEL
5582 RoundToInfinityINTEL
5583 FloatingPointModeINTEL
5584 IntegerFunctions2INTEL
5603 FunctionPointersINTEL
5604 IndirectReferencesINTEL
5606 AsmINTEL
5612 AtomicFloat32MinMaxEXT
5613 AtomicFloat64MinMaxEXT
5616 AtomicFloat16MinMaxEXT
5617 VectorComputeINTEL
5619 VectorAnyINTEL
5629 ExpectAssumeKHR
5696 SubgroupAvcMotionEstimationINTEL
5697 SubgroupAvcMotionEstimationIntraINTEL
5698 SubgroupAvcMotionEstimationChromaINTEL
5817 VariableLengthArrayINTEL
5821 FunctionFloatControlINTEL
5824 FPGAMemoryAttributesALTERA
5837 FPFastMathModeINTEL
5844 ArbitraryPrecisionIntegersALTERA
5845 ArbitraryPrecisionFloatingPointALTERA
5886 UnstructuredLoopControlsINTEL
5888 FPGALoopControlsALTERA
5892 KernelAttributesINTEL
5897 FPGAKernelAttributesINTEL
5898 FPGAMemoryAccessesALTERA
5904 FPGAClusterAttributesALTERA
5906 LoopFuseALTERA
5908 FPGADSPControlALTERA
5910 MemoryAccessAliasingINTEL
5916 FPGAInvocationPipeliningAttributesALTERA
5920 FPGABufferLocationALTERA
5922 ArbitraryPrecisionFixedPointALTERA
5935 USMStorageClassesALTERA
5939 RuntimeAlignedAttributeALTERA
5943 IOPipesALTERA
5945 BlockingPipesALTERA
5948 FPGARegALTERA
6016 DotProductInputAll
6017 DotProductInput4x8Bit
6018 DotProductInput4x8BitPacked
6019 DotProduct
6020 RayCullMaskKHR
6022 CooperativeMatrixKHR
6024 ReplicatedCompositesEXT
6025 BitInstructions
6026 GroupNonUniformRotateKHR
6029 FloatControls2
6030 FMAKHR
6033 AtomicFloat32AddEXT
6034 AtomicFloat64AddEXT
6089 LongCompositesINTEL
6094 OptNoneEXT
6095 AtomicFloat16AddEXT
6114 DebugInfoModuleINTEL
6115 BFloat16ConversionINTEL
6141 SplitBarrierINTEL
6144 ArithmeticFenceEXT
6150 FPGAClusterAttributesV2ALTERA
6161 FPGAKernelAttributesv2INTEL
6162 TaskSequenceALTERA
6169 FPMaxErrorINTEL
6171 FPGALatencyControlALTERA
6174 FPGAArgumentInterfacesALTERA
6187 GlobalVariableHostAccessINTEL
6189 GlobalVariableFPGADecorationsALTERA
6220 SubgroupBufferPrefetchINTEL
6228 Subgroup2DBlockIOINTEL
6229 Subgroup2DBlockTransformINTEL
6230 Subgroup2DBlockTransposeINTEL
6236 SubgroupMatrixMultiplyAccumulateINTEL
6241 TernaryBitwiseFunctionINTEL
6243 UntypedVariableLengthArrayINTEL
6245 SpecConditionalINTEL
6246 FunctionVariantsINTEL
6400 GroupUniformArithmeticKHR
6425 TensorFloat32RoundingINTEL
6427 MaskedGatherScatterINTEL
6441 CacheControlsINTEL
6460 RegisterLimitsINTEL
6528 BindlessImagesINTEL
+155
View File
@@ -0,0 +1,155 @@
SPV_KHR_16bit_storage
SPV_KHR_8bit_storage
SPV_KHR_bfloat16
SPV_KHR_bit_instructions
SPV_KHR_compute_shader_derivatives
SPV_KHR_cooperative_matrix
SPV_KHR_device_group
SPV_KHR_expect_assume
SPV_KHR_float_controls
SPV_KHR_float_controls2
SPV_KHR_fma
SPV_KHR_fragment_shader_barycentric
SPV_KHR_fragment_shading_rate
SPV_KHR_integer_dot_product
SPV_KHR_linkonce_odr
SPV_KHR_maximal_reconvergence
SPV_KHR_multiview
SPV_KHR_no_integer_wrap_decoration
SPV_KHR_non_semantic_info
SPV_KHR_physical_storage_buffer
SPV_KHR_post_depth_coverage
SPV_KHR_quad_control
SPV_KHR_ray_cull_mask
SPV_KHR_ray_query
SPV_KHR_ray_tracing
SPV_KHR_ray_tracing_position_fetch
SPV_KHR_relaxed_extended_instruction
SPV_KHR_shader_atomic_counter_ops
SPV_KHR_shader_ballot
SPV_KHR_shader_clock
SPV_KHR_shader_draw_parameters
SPV_KHR_storage_buffer_storage_class
SPV_KHR_subgroup_rotate
SPV_KHR_subgroup_uniform_control_flow
SPV_KHR_subgroup_vote
SPV_KHR_terminate_invocation
SPV_KHR_uniform_group_instructions
SPV_KHR_untyped_pointers
SPV_KHR_variable_pointers
SPV_KHR_vulkan_memory_model
SPV_KHR_workgroup_memory_explicit_layout
SPV_EXT_arithmetic_fence
SPV_EXT_demote_to_helper_invocation
SPV_EXT_descriptor_indexing
SPV_EXT_float8
SPV_EXT_fragment_fully_covered
SPV_EXT_fragment_invocation_density
SPV_EXT_fragment_shader_interlock
SPV_EXT_image_raw10_raw12
SPV_EXT_mesh_shader
SPV_EXT_opacity_micromap
SPV_EXT_optnone
SPV_EXT_physical_storage_buffer
SPV_EXT_relaxed_printf_string_address_space
SPV_EXT_replicated_composites
SPV_EXT_shader_64bit_indexing
SPV_EXT_shader_atomic_float_add
SPV_EXT_shader_atomic_float_min_max
SPV_EXT_shader_atomic_float16_add
SPV_EXT_shader_image_int64
SPV_EXT_shader_stencil_export
SPV_EXT_shader_tile_image
SPV_EXT_shader_viewport_index_layer
SPV_ALTERA_arbitrary_precision_fixed_point
SPV_ALTERA_arbitrary_precision_floating_point
SPV_ALTERA_arbitrary_precision_integers
SPV_ALTERA_blocking_pipes
SPV_ALTERA_fpga_argument_interfaces
SPV_ALTERA_fpga_buffer_location
SPV_ALTERA_fpga_cluster_attributes
SPV_ALTERA_fpga_dsp_control
SPV_ALTERA_fpga_invocation_pipelining_attributes
SPV_ALTERA_fpga_latency_control
SPV_ALTERA_fpga_loop_controls
SPV_ALTERA_fpga_memory_accesses
SPV_ALTERA_fpga_memory_attributes
SPV_ALTERA_fpga_reg
SPV_ALTERA_global_variable_fpga_decorations
SPV_ALTERA_io_pipes
SPV_ALTERA_loop_fuse
SPV_ALTERA_runtime_aligned
SPV_ALTERA_task_sequence
SPV_ALTERA_usm_storage_classes
SPV_AMD_gcn_shader
SPV_AMD_gpu_shader_half_float
SPV_AMD_gpu_shader_half_float_fetch
SPV_AMD_gpu_shader_int16
SPV_AMD_shader_ballot
SPV_AMD_shader_early_and_late_fragment_tests
SPV_AMD_shader_explicit_vertex_parameter
SPV_AMD_shader_fragment_mask
SPV_AMD_shader_image_load_store_lod
SPV_AMD_shader_trinary_minmax
SPV_AMD_texture_gather_bias_lod
SPV_AMDX_shader_enqueue
SPV_ARM_cooperative_matrix_layouts
SPV_ARM_core_builtins
SPV_ARM_graph
SPV_ARM_tensors
SPV_GOOGLE_decorate_string
SPV_GOOGLE_hlsl_functionality1
SPV_GOOGLE_user_type
SPV_HUAWEI_cluster_culling_shader
SPV_HUAWEI_subpass_shading
SPV_INTEL_2d_block_io
SPV_INTEL_bfloat16_conversion
SPV_INTEL_cache_controls
SPV_INTEL_device_side_avc_motion_estimation
SPV_INTEL_fp_fast_math_mode
SPV_INTEL_fp_max_error
SPV_INTEL_global_variable_host_access
SPV_INTEL_int4
SPV_INTEL_kernel_attributes
SPV_INTEL_long_composites
SPV_INTEL_masked_gather_scatter
SPV_INTEL_maximum_registers
SPV_INTEL_media_block_io
SPV_INTEL_shader_integer_functions2
SPV_INTEL_split_barrier
SPV_INTEL_subgroups
SPV_INTEL_subgroup_buffer_prefetch
SPV_INTEL_subgroup_matrix_multiply_accumulate
SPV_INTEL_tensor_float32_conversion
SPV_INTEL_ternary_bitwise_function
SPV_INTEL_unstructured_loop_controls
SPV_INTEL_variable_length_array
SPV_NV_bindless_texture
SPV_NV_cluster_acceleration_structure
SPV_NV_compute_shader_derivatives
SPV_NV_cooperative_matrix
SPV_NV_cooperative_matrix2
SPV_NV_cooperative_vector
SPV_NV_displacement_micromap
SPV_NV_fragment_shader_barycentric
SPV_NV_geometry_shader_passthrough
SPV_NV_linear_swept_spheres
SPV_NV_mesh_shader
SPV_NV_raw_access_chains
SPV_NV_ray_tracing
SPV_NV_ray_tracing_motion_blur
SPV_NV_sample_mask_override_coverage
SPV_NV_shader_atomic_fp16_vector
SPV_NV_shader_image_footprint
SPV_NV_shader_invocation_reorder
SPV_NV_shader_sm_builtins
SPV_NV_shader_subgroup_partitioned
SPV_NV_shading_rate
SPV_NV_stereo_view_rendering
SPV_NV_tensor_addressing
SPV_NV_viewport_array2
SPV_NVX_multiview_per_view_attributes
SPV_QCOM_cooperative_matrix_conversion
SPV_QCOM_image_processing
SPV_QCOM_image_processing2
SPV_QCOM_tile_shading
@@ -0,0 +1,39 @@
#!/bin/bash
# not sorted because the registry lists them in extension number order
grep -o '\[SPV_.*\]' spirv_registry.md | tr -d '[] \t' > all_exts.txt
unix2dos -q all_exts.txt
# sorted by enum value
sed -n '/kind.*"Capability",$/,/"category"/p' spirv.core.grammar.json |
grep 'enumerant\>\|value' | paste -sd ' \n' | awk '{print $6" "$3}' |
tr -d '",' | sort -n > all_capabilities.txt
unix2dos -q all_capabilities.txt
export IFS="
"
for I in $(cat all_exts.txt | dos2unix); do
if ! grep -q '`'"$I"'`' extension_support.md; then
echo "Extension $I isn't in extension_support.md";
fi
done
for I in $(cat all_capabilities.txt | awk '{print $2}'); do
if ! grep -q '`'"$I"'`' extension_support.md; then
echo "Capability $I isn't in extension_support.md";
fi
done
for I in $(rg SPV_ extension_support.md | egrep -o 'SPV_[A-Z0-9a-z_]*'); do
if ! grep -q $I spirv_registry.md; then
echo "Extension $I is in extension_support.md but not the registry";
fi;
done
for I in $(egrep '^ ' extension_support.md | tr -d '* `'); do
if ! egrep -q "\"enumerant\".*\"$I\"" spirv.core.grammar.json; then
if ! egrep -q "\"aliases\".*\"$I\"" spirv.core.grammar.json; then
echo "Capability $I is in extension_support.md but not the grammar";
fi;
fi;
done
@@ -0,0 +1,531 @@
# SPIR-V extension and capability support
This is a list of the currently supported SPIR-V extensions and capabilities in the shader debugger, in a bit more readable format than the code.
Maintainers can update this file by updating `spirv.core.grammar.json` and `spirv_registry.md` (the SPIRV-Registry README.md) in this folder and running `./check_extensions.sh` which will output any new extensions that haven't been filed in a category below. This will also update `all_exts.txt` and `all_capabilities.txt` which needs to be committed too when this file is updated to keep things in sync.
Each extension references the relevant capabilities below it.
# Supported
* `SPIR-V 1.0`
* `AtomicStorage`
* `ClipDistance`
* `CullDistance`
* `DerivativeControl`
* `Float16`
* `Float64`
* `Geometry`
* `GeometryPointSize`
* `GeometryStreams`
* `Image1D`
* `ImageBuffer`
* `ImageCubeArray`
* `ImageGatherExtended`
* `ImageMSArray`
* `ImageQuery`
* `ImageRect`
* `InputAttachment`
* `Int16`
* `Int64`
* `Int64Atomics`
* `Int8`
* `Matrix`
* `MinLod`
* `MultiViewport`
* `Sampled1D`
* `SampledBuffer`
* `SampledCubeArray`
* `SampledImageArrayDynamicIndexing`
* `SampledRect`
* `SampleRateShading`
* `Shader`
* `StorageBufferArrayDynamicIndexing`
* `StorageImageArrayDynamicIndexing`
* `StorageImageExtendedFormats`
* `StorageImageMultisample`
* `StorageImageReadWithoutFormat`
* `StorageImageWriteWithoutFormat`
* `Tessellation`
* `TessellationPointSize`
* `TransformFeedback`
* `UniformBufferArrayDynamicIndexing`
* `SPIR-V 1.1`
* `SPIR-V 1.2`
* `SPIR-V 1.3`
* `DrawParameters`
* `GroupNonUniform`
* `GroupNonUniformArithmetic`
* `GroupNonUniformBallot`
* `GroupNonUniformClustered`
* `GroupNonUniformQuad`
* `GroupNonUniformShuffle`
* `GroupNonUniformShuffleRelative`
* `GroupNonUniformVote`
* `SPIR-V 1.4`
* `SignedZeroInfNanPreserve`
* `SPIR-V 1.5`
* `InputAttachmentArrayDynamicIndexing`
* `InputAttachmentArrayNonUniformIndexing`
* `RuntimeDescriptorArray`
* `SampledImageArrayNonUniformIndexing`
* `ShaderLayer`
* `ShaderNonUniform`
* `ShaderViewportIndex`
* `StorageBufferArrayNonUniformIndexing`
* `StorageImageArrayNonUniformIndexing`
* `StorageTexelBufferArrayDynamicIndexing`
* `StorageTexelBufferArrayNonUniformIndexing`
* `UniformBufferArrayNonUniformIndexing`
* `UniformTexelBufferArrayDynamicIndexing`
* `UniformTexelBufferArrayNonUniformIndexing`
* `VulkanMemoryModel`
* `VulkanMemoryModelDeviceScope`
* `SPIR-V 1.6`
* `DemoteToHelperInvocation`
* `UniformDecoration`
* `SPV_KHR_16bit_storage`
* `StorageBuffer16BitAccess`
* `StorageInputOutput16`
* `StoragePushConstant16`
* `StorageUniform16`
* `StorageUniformBufferBlock16`
* `UniformAndStorageBuffer16BitAccess`
* `SPV_KHR_8bit_storage`
* `StorageBuffer8BitAccess`
* `StoragePushConstant8`
* `UniformAndStorageBuffer8BitAccess`
* `SPV_KHR_bit_instructions`
* `BitInstructions`
* `SPV_KHR_device_group`
* `DeviceGroup`
* `SPV_KHR_expect_assume`
* `ExpectAssumeKHR`
* `SPV_KHR_float_controls`
* `SPV_KHR_maximal_reconvergence`
* `SPV_KHR_multiview`
* `MultiView`
* `SPV_KHR_no_integer_wrap_decoration`
* `SPV_KHR_non_semantic_info`
* `SPV_KHR_physical_storage_buffer`
* `PhysicalStorageBufferAddresses`
* `SPV_KHR_post_depth_coverage`
* `SampleMaskPostDepthCoverage`
* `SPV_KHR_quad_control`
* `QuadControlKHR`
* `SPV_KHR_relaxed_extended_instruction`
* `SPV_KHR_shader_atomic_counter_ops`
* `AtomicStorageOps`
* `SPV_KHR_shader_ballot`
* `SubgroupBallotKHR`
* `SPV_KHR_shader_clock`
* `ShaderClockKHR`
* `SPV_KHR_shader_draw_parameters`
* `SPV_KHR_storage_buffer_storage_class`
* `SPV_KHR_subgroup_rotate`
* `GroupNonUniformRotateKHR`
* `SPV_KHR_subgroup_uniform_control_flow`
* `SPV_KHR_subgroup_vote`
* `SubgroupVoteKHR`
* `SPV_KHR_terminate_invocation`
* `SPV_KHR_vulkan_memory_model`
* `VulkanMemoryModelKHR`
* `VulkanMemoryModelDeviceScopeKHR`
* `SPV_EXT_demote_to_helper_invocation`
* `DemoteToHelperInvocationEXT`
* `SPV_EXT_descriptor_indexing`
* `InputAttachmentArrayDynamicIndexingEXT`
* `InputAttachmentArrayNonUniformIndexingEXT`
* `RuntimeDescriptorArrayEXT`
* `SampledImageArrayNonUniformIndexingEXT`
* `ShaderNonUniformEXT`
* `StorageBufferArrayNonUniformIndexingEXT`
* `StorageImageArrayNonUniformIndexingEXT`
* `StorageTexelBufferArrayDynamicIndexingEXT`
* `StorageTexelBufferArrayNonUniformIndexingEXT`
* `UniformBufferArrayNonUniformIndexingEXT`
* `UniformTexelBufferArrayDynamicIndexingEXT`
* `UniformTexelBufferArrayNonUniformIndexingEXT`
* `SPV_EXT_fragment_fully_covered`
* `FragmentFullyCoveredEXT`
* `SPV_EXT_fragment_invocation_density`
* `FragmentDensityEXT`
* `SPV_EXT_mesh_shader`
* `MeshShadingEXT`
* `SPV_EXT_physical_storage_buffer`
* `PhysicalStorageBufferAddressesEXT`
* `SPV_EXT_shader_atomic_float_add`
* `AtomicFloat32AddEXT`
* `AtomicFloat64AddEXT`
* `SPV_EXT_shader_atomic_float_min_max`
* `AtomicFloat16MinMaxEXT`
* `AtomicFloat32MinMaxEXT`
* `AtomicFloat64MinMaxEXT`
* `SPV_EXT_shader_atomic_float16_add`
* `AtomicFloat16AddEXT`
* `SPV_EXT_shader_image_int64`
* `Int64ImageEXT`
* `SPV_EXT_shader_stencil_export`
* `StencilExportEXT`
* `SPV_EXT_shader_viewport_index_layer`
* `ShaderViewportIndexLayerEXT`
* `SPV_GOOGLE_decorate_string`
* `SPV_GOOGLE_hlsl_functionality1`
* `SPV_GOOGLE_user_type`
# Unsupported
KHR extensions will definitely be implemented at some point, though KHR extensions that entail a large amount of work may be deferred. EXT extensions are likely to be implemented in future but current plans or priorities may vary. Vendor extensions likely won't be supported but could be upon request given how much demand there is and ease of implementation.
## KHR Extensions
* `SPIR-V 1.0`
* `Groups`
* `InterpolationFunction`
* `SparseResidency`
* `SPIR-V 1.4`
* `DenormFlushToZero`
* `DenormPreserve`
* `RoundingModeRTE`
* `RoundingModeRTZ`
* `SPIR-V 1.6`
* `DotProduct`
* `DotProductInput4x8Bit`
* `DotProductInput4x8BitPacked`
* `DotProductInputAll`
* `SPV_KHR_bfloat16`
* `BFloat16TypeKHR`
* `BFloat16DotProductKHR`
* `BFloat16CooperativeMatrixKHR`
* `SPV_KHR_compute_shader_derivatives`
* `ComputeDerivativeGroupQuadsKHR`
* `ComputeDerivativeGroupLinearKHR`
* `SPV_KHR_cooperative_matrix`
* `CooperativeMatrixKHR`
* `SPV_KHR_float_controls2`
* `FloatControls2`
* `SPV_KHR_fma`
* `FMAKHR`
* `SPV_KHR_fragment_shader_barycentric`
* `FragmentBarycentricKHR`
* `SPV_KHR_fragment_shading_rate`
* `FragmentShadingRateKHR`
* `SPV_KHR_integer_dot_product`
* `SPV_KHR_untyped_pointers`
* `UntypedPointersKHR`
* `SPV_KHR_variable_pointers`
* `VariablePointers`
* `VariablePointersStorageBuffer`
* `SPV_KHR_workgroup_memory_explicit_layout`
* `WorkgroupMemoryExplicitLayout16BitAccessKHR`
* `WorkgroupMemoryExplicitLayout8BitAccessKHR`
* `WorkgroupMemoryExplicitLayoutKHR`
## KHR Ray tracing extensions
* `SPV_KHR_ray_cull_mask`
* `RayCullMaskKHR`
* `SPV_KHR_ray_query`
* `RayQueryKHR`
* `SPV_KHR_ray_tracing_position_fetch`
* `RayTracingPositionFetchKHR`
* `RayQueryPositionFetchKHR`
* `SPV_KHR_ray_tracing`
* `RayTracingKHR`
* `RayTraversalPrimitiveCullingKHR`
* `SPV_EXT_opacity_micromap`
* `RayTracingOpacityMicromapEXT`
## EXT
* `SPV_EXT_float8`
* `Float8EXT`
* `Float8CooperativeMatrixEXT`
* `SPV_EXT_fragment_shader_interlock`
* `FragmentShaderSampleInterlockEXT`
* `FragmentShaderShadingRateInterlockEXT`
* `FragmentShaderPixelInterlockEXT`
* `SPV_EXT_replicated_composites`
* `ReplicatedCompositesEXT`
* `SPV_EXT_shader_64bit_indexing`
* `Shader64BitIndexingEXT`
* `SPV_EXT_shader_tile_image`
* `TileImageColorReadAccessEXT`
* `TileImageDepthReadAccessEXT`
* `TileImageStencilReadAccessEXT`
## Platform/IHV Extensions
### Altera
* `SPV_ALTERA_arbitrary_precision_fixed_point`
* `ArbitraryPrecisionFixedPointALTERA`
* `SPV_ALTERA_arbitrary_precision_floating_point`
* `ArbitraryPrecisionFloatingPointALTERA`
* `SPV_ALTERA_arbitrary_precision_integers`
* `ArbitraryPrecisionIntegersALTERA`
* `SPV_ALTERA_blocking_pipes`
* `BlockingPipesALTERA`
* `SPV_ALTERA_fpga_argument_interfaces`
* `FPGAArgumentInterfacesALTERA`
* `SPV_ALTERA_fpga_buffer_location`
* `FPGABufferLocationALTERA`
* `SPV_ALTERA_fpga_cluster_attributes`
* `FPGAClusterAttributesALTERA`
* `FPGAClusterAttributesV2ALTERA`
* `SPV_ALTERA_fpga_dsp_control`
* `FPGADSPControlALTERA`
* `SPV_ALTERA_fpga_invocation_pipelining_attributes`
* `FPGAInvocationPipeliningAttributesALTERA`
* `SPV_ALTERA_fpga_latency_control`
* `FPGALatencyControlALTERA`
* `SPV_ALTERA_fpga_loop_controls`
* `FPGALoopControlsALTERA`
* `SPV_ALTERA_fpga_memory_accesses`
* `FPGAMemoryAccessesALTERA`
* `SPV_ALTERA_fpga_memory_attributes`
* `FPGAMemoryAttributesALTERA`
* `SPV_ALTERA_fpga_reg`
* `FPGARegALTERA`
* `SPV_ALTERA_global_variable_fpga_decorations`
* `GlobalVariableFPGADecorationsALTERA`
* `SPV_ALTERA_io_pipes`
* `IOPipesALTERA`
* `SPV_ALTERA_loop_fuse`
* `LoopFuseALTERA`
* `SPV_ALTERA_runtime_aligned`
* `RuntimeAlignedAttributeALTERA`
* `SPV_ALTERA_task_sequence`
* `TaskSequenceALTERA`
* `SPV_ALTERA_usm_storage_classes`
* `USMStorageClassesALTERA`
### AMD
* `SPV_AMD_gcn_shader`
* `SPV_AMD_gpu_shader_half_float_fetch`
* `Float16ImageAMD`
* `SPV_AMD_gpu_shader_half_float`
* `SPV_AMD_gpu_shader_int16`
* `SPV_AMD_shader_ballot`
* `SPV_AMD_shader_early_and_late_fragment_tests`
* `EarlyAndLateFragmentTestsAMD`
* `StencilRefUnchangedFrontAMD`
* `StencilRefGreaterFrontAMD`
* `StencilRefLessFrontAMD`
* `StencilRefUnchangedBackAMD`
* `StencilRefGreaterBackAMD`
* `StencilRefLessBackAMD`
* `SPV_AMD_shader_explicit_vertex_parameter`
* `SPV_AMD_shader_fragment_mask`
* `FragmentMaskAMD`
* `SPV_AMD_shader_image_load_store_lod`
* `ImageReadWriteLodAMD`
* `SPV_AMD_shader_trinary_minmax`
* `SPV_AMD_texture_gather_bias_lod`
* `ImageGatherBiasLodAMD`
### ARM
* `SPV_ARM_cooperative_matrix_layouts`
* `CooperativeMatrixLayoutsARM`
* `SPV_ARM_core_builtins`
* `CoreBuiltinsARM`
* `SPV_ARM_graph`
* `GraphARM`
* `SPV_ARM_tensors`
* `TensorsARM`
* `StorageTensorArrayDynamicIndexingARM`
* `StorageTensorArrayNonUniformIndexingARM`
### Huawei
* `SPV_HUAWEI_cluster_culling_shader`
* `SPV_HUAWEI_subpass_shading`
### Intel
* `SPV_INTEL_2d_block_io`
* `Subgroup2DBlockIOINTEL`
* `Subgroup2DBlockTransformINTEL`
* `Subgroup2DBlockTransposeINTEL`
* `SPV_INTEL_bfloat16_conversion`
* `BFloat16ConversionINTEL`
* `SPV_INTEL_cache_controls`
* `CacheControlsINTEL`
* `SPV_INTEL_device_side_avc_motion_estimation`
* `SubgroupAvcMotionEstimationChromaINTEL`
* `SubgroupAvcMotionEstimationINTEL`
* `SubgroupAvcMotionEstimationIntraINTEL`
* `SPV_INTEL_fp_fast_math_mode`
* `FPFastMathModeINTEL`
* `SPV_INTEL_fp_max_error`
* `FPMaxErrorINTEL`
* `SPV_INTEL_global_variable_host_access`
* `GlobalVariableHostAccessINTEL`
* `SPV_INTEL_int4`
* `Int4TypeINTEL`
* `Int4CooperativeMatrixINTEL`
* `SPV_INTEL_kernel_attributes`
* `FPGAKernelAttributesINTEL`
* `FPGAKernelAttributesv2INTEL`
* `KernelAttributesINTEL`
* `SPV_INTEL_long_composites`
* `LongCompositesINTEL`
* `SPV_INTEL_masked_gather_scatter`
* `MaskedGatherScatterINTEL`
* `SPV_INTEL_maximum_registers`
* `RegisterLimitsINTEL`
* `SPV_INTEL_media_block_io`
* `SubgroupImageMediaBlockIOINTEL`
* `SPV_INTEL_shader_integer_functions2`
* `IntegerFunctions2INTEL`
* `SPV_INTEL_split_barrier`
* `SplitBarrierINTEL`
* `SPV_INTEL_subgroups`
* `SubgroupBufferBlockIOINTEL`
* `SubgroupImageBlockIOINTEL`
* `SubgroupShuffleINTEL`
* `SPV_INTEL_subgroup_buffer_prefetch`
* `SubgroupBufferPrefetchINTEL`
* `SPV_INTEL_subgroup_matrix_multiply_accumulate`
* `SubgroupMatrixMultiplyAccumulateINTEL`
* `SPV_INTEL_tensor_float32_conversion`
* `TensorFloat32RoundingINTEL`
* `SPV_INTEL_ternary_bitwise_function`
* `TernaryBitwiseFunctionINTEL`
* `SPV_INTEL_unstructured_loop_controls`
* `UnstructuredLoopControlsINTEL`
* `SPV_INTEL_variable_length_array`
* `VariableLengthArrayINTEL`
* `UntypedVariableLengthArrayINTEL`
### NV
* `SPV_NV_bindless_texture`
* `BindlessTextureNV`
* `SPV_NV_cluster_acceleration_structure`
* `RayTracingClusterAccelerationStructureNV`
* `SPV_NV_compute_shader_derivatives`
* `ComputeDerivativeGroupLinearNV`
* `ComputeDerivativeGroupQuadsNV`
* `SPV_NV_cooperative_matrix`
* `CooperativeMatrixNV`
* `SPV_NV_cooperative_matrix2`
* `CooperativeMatrixReductionsNV`
* `CooperativeMatrixConversionsNV`
* `CooperativeMatrixPerElementOperationsNV`
* `CooperativeMatrixTensorAddressingNV`
* `CooperativeMatrixBlockLoadsNV`
* `SPV_NV_cooperative_vector`
* `CooperativeVectorNV`
* `CooperativeVectorTrainingNV`
* `SPV_NV_displacement_micromap`
* `RayTracingDisplacementMicromapNV`
* `DisplacementMicromapNV`
* `SPV_NV_fragment_shader_barycentric`
* `FragmentBarycentricNV`
* `SPV_NV_geometry_shader_passthrough`
* `GeometryShaderPassthroughNV`
* `SPV_NV_linear_swept_spheres`
* `RayTracingSpheresGeometryNV`
* `RayTracingLinearSweptSpheresGeometryNV`
* `SPV_NV_mesh_shader`
* `MeshShadingNV`
* `SPV_NV_raw_access_chains`
* `RawAccessChainsNV`
* `SPV_NV_ray_tracing_motion_blur`
* `RayTracingMotionBlurNV`
* `SPV_NV_ray_tracing`
* `RayTracingNV`
* `SPV_NV_sample_mask_override_coverage`
* `SampleMaskOverrideCoverageNV`
* `SPV_NV_shader_atomic_fp16_vector`
* `AtomicFloat16VectorNV`
* `SPV_NV_shader_image_footprint`
* `ImageFootprintNV`
* `SPV_NV_shader_invocation_reorder`
* `ShaderInvocationReorderNV`
* `SPV_NV_shader_sm_builtins`
* `ShaderSMBuiltinsNV`
* `SPV_NV_shader_subgroup_partitioned`
* `GroupNonUniformPartitionedNV`
* `SPV_NV_shading_rate`
* `ShadingRateNV`
* `SPV_NV_stereo_view_rendering`
* `ShaderStereoViewNV`
* `SPV_NV_tensor_addressing`
* `TensorAddressingNV`
* `SPV_NV_viewport_array2`
* `ShaderViewportIndexLayerNV`
* `ShaderViewportMaskNV`
### Qualcomm
* `SPV_QCOM_cooperative_matrix_conversion`
* `CooperativeMatrixConversionQCOM`
* `SPV_QCOM_image_processing`
* `TextureSampleWeightedQCOM`
* `TextureBoxFilterQCOM`
* `TextureBlockMatchQCOM`
* `SPV_QCOM_image_processing2`
* `TextureBlockMatch2QCOM`
* `SPV_QCOM_tile_shading`
* `TileShadingQCOM`
### Deprecated / experimental / undocumented / kernel only
* `SPIR-V 1.0`
* `Addresses`
* `DeviceEnqueue`
* `Float16Buffer`
* `GenericPointer`
* `ImageBasic`
* `ImageMipmap`
* `ImageReadWrite`
* `Kernel`
* `Linkage`
* `LiteralSampler`
* `Pipes`
* `Vector16`
* `SPIR-V 1.1`
* `NamedBarrier`
* `PipeStorage`
* `SubgroupDispatch`
* Provisional ray tracing
* `RayQueryProvisionalKHR`
* `RayTracingProvisionalKHR`
* `SPV_KHR_linkonce_odr`
* `SPV_KHR_uniform_group_instructions`
* `GroupUniformArithmeticKHR`
* `SPV_EXT_arithmetic_fence`
* `ArithmeticFenceEXT`
* `SPV_EXT_image_raw10_raw12`
* `SPV_EXT_optnone`
* `OptNoneEXT`
* `SPV_EXT_relaxed_printf_string_address_space`
* `SPV_AMDX_shader_enqueue`
* `ShaderEnqueueAMDX`
* `SPV_NVX_multiview_per_view_attributes`
* `PerViewAttributesNV`
#### Dead Capabilities
For some reason Intel has dumped a load of capabilities/extensions that are undocumented into the registry. Listed here to keep the scripts happy.
* `DebugInfoModuleINTEL`
* `FunctionPointersINTEL`
* `IndirectReferencesINTEL`
* `AsmINTEL`
* `SpecConditionalINTEL`
* `FunctionVariantsINTEL`
* `AsmINTEL`
* `VectorAnyINTEL`
* `VectorComputeINTEL`
* `RoundToInfinityINTEL`
* `FloatingPointModeINTEL`
* `VariableLengthArrayINTEL`
* `FunctionFloatControlINTEL`
* `MemoryAccessAliasingINTEL`
* `BindlessImagesINTEL`
@@ -1,28 +1,12 @@
{
"copyright" : [
"Copyright (c) 2014-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.",
"License: MIT",
"",
"MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS KHRONOS",
"STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS SPECIFICATIONS AND",
"HEADER INFORMATION ARE LOCATED AT https://www.khronos.org/registry/ ",
"",
"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."
""
],
"version" : 100,
"revision" : 2,
@@ -1,28 +1,12 @@
{
"copyright" : [
"Copyright (c) 2018-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.",
"Copyright: 2018-2024 The Khronos Group Inc.",
"License: MIT",
"",
"MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS KHRONOS",
"STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS SPECIFICATIONS AND",
"HEADER INFORMATION ARE LOCATED AT https://www.khronos.org/registry/ ",
"",
"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."
""
],
"version" : 100,
"revision" : 6,
@@ -563,35 +547,35 @@
"enumerants" : [
{
"enumerant" : "Unspecified",
"value" : "0"
"value" : 0
},
{
"enumerant" : "Address",
"value" : "1"
"value" : 1
},
{
"enumerant" : "Boolean",
"value" : "2"
"value" : 2
},
{
"enumerant" : "Float",
"value" : "3"
"value" : 3
},
{
"enumerant" : "Signed",
"value" : "4"
"value" : 4
},
{
"enumerant" : "SignedChar",
"value" : "5"
"value" : 5
},
{
"enumerant" : "Unsigned",
"value" : "6"
"value" : 6
},
{
"enumerant" : "UnsignedChar",
"value" : "7"
"value" : 7
}
]
},
@@ -601,15 +585,15 @@
"enumerants" : [
{
"enumerant" : "Class",
"value" : "0"
"value" : 0
},
{
"enumerant" : "Structure",
"value" : "1"
"value" : 1
},
{
"enumerant" : "Union",
"value" : "2"
"value" : 2
}
]
},
@@ -619,19 +603,19 @@
"enumerants" : [
{
"enumerant" : "ConstType",
"value" : "0"
"value" : 0
},
{
"enumerant" : "VolatileType",
"value" : "1"
"value" : 1
},
{
"enumerant" : "RestrictType",
"value" : "2"
"value" : 2
},
{
"enumerant" : "AtomicType",
"value" : "3"
"value" : 3
}
]
},
@@ -641,26 +625,26 @@
"enumerants" : [
{
"enumerant" : "Deref",
"value" : "0"
"value" : 0
},
{
"enumerant" : "Plus",
"value" : "1"
"value" : 1
},
{
"enumerant" : "Minus",
"value" : "2"
"value" : 2
},
{
"enumerant" : "PlusUconst",
"value" : "3",
"value" : 3,
"parameters" : [
{ "kind" : "IdRef" }
]
},
{
"enumerant" : "BitPiece",
"value" : "4",
"value" : 4,
"parameters" : [
{ "kind" : "IdRef" },
{ "kind" : "IdRef" }
@@ -668,26 +652,26 @@
},
{
"enumerant" : "Swap",
"value" : "5"
"value" : 5
},
{
"enumerant" : "Xderef",
"value" : "6"
"value" : 6
},
{
"enumerant" : "StackValue",
"value" : "7"
"value" : 7
},
{
"enumerant" : "Constu",
"value" : "8",
"value" : 8,
"parameters" : [
{ "kind" : "IdRef" }
]
},
{
"enumerant" : "Fragment",
"value" : "9",
"value" : 9,
"parameters" : [
{ "kind" : "IdRef" },
{ "kind" : "IdRef" }
@@ -701,11 +685,11 @@
"enumerants" : [
{
"enumerant" : "ImportedModule",
"value" : "0"
"value" : 0
},
{
"enumerant" : "ImportedDeclaration",
"value" : "1"
"value" : 1
}
]
}
@@ -57,6 +57,8 @@ def operand_name(name, lowercase_first = True):
return 'arguments'
if re.search(r'variable, parent.*\.\.\.', name, re.RegexFlag.I):
return 'parents'
if re.search(r'condition 0, operand.*\.\.\.', name, re.RegexFlag.I):
return 'conditional_arguments'
name = re.sub(r'<<(.*),(.*)>>', r'\2', name)
name = re.sub(r'[ \'~<>./-]', '', name)
@@ -212,6 +214,16 @@ inline uint32_t DecodeParam(const ConstIter &it, uint32_t &word)
return ret;
}}
template<>
inline Capability DecodeParam(const ConstIter &it, uint32_t &word)
{{
if(word >= it.size()) return Capability::Invalid;
Capability ret = Capability(word);
word += 1;
return ret;
}}
template<>
inline Id DecodeParam<Id>(const ConstIter &it, uint32_t &word)
{{
+4 -21
View File
@@ -1,26 +1,8 @@
<?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.
SPDX-FileCopyrightText: 2015-2024 The Khronos Group Inc.
SPDX-License-Identifier: MIT
-->
<!--
This file, spir-v.xml, is the SPIR-V Tool ID, opcode and enumerant registry.
@@ -99,7 +81,8 @@
<id value="46" vendor="Nintendo" comment="Contact Steve Urquhart, steve.urquhart@ntd.nintendo.com"/>
<id value="47" vendor="ARM" comment="Contact Christopher Gautier, christopher.gautier@arm.com"/>
<id value="48" vendor="Goopax" comment="Contact Ingo Josopait, josopait@goopax.com"/>
<unused start="49" end="0xFFFF" comment="Tool ID range reservable for future use by vendors"/>
<id value="49" vendor="Icyllis Milica" tool="Arc3D Shader Compiler" comment="Contact Icyllis Milica, https://github.com/BloCamLimb/Arc3D"/>
<unused start="50" end="0xFFFF" comment="Tool ID range reservable for future use by vendors"/>
</ids>
<!-- SECTION: SPIR-V Opcodes and Enumerants -->
File diff suppressed because it is too large Load Diff
+78 -59
View File
@@ -3022,7 +3022,7 @@ void ThreadState::StepNext(bool useDebugState, const uint32_t steps,
OpGroupNonUniformBroadcast group(it);
RDCASSERT(uintComp(GetSrc(group.execution), 0) == (uint32_t)Scope::Subgroup);
value = group.value;
lane = firstLaneInSub + uintComp(GetSrc(group.id), 0);
lane = firstLaneInSub + uintComp(GetSrc(group.invocationId), 0);
}
else if(opdata.op == Op::GroupNonUniformQuadBroadcast)
{
@@ -3086,7 +3086,7 @@ void ThreadState::StepNext(bool useDebugState, const uint32_t steps,
OpGroupNonUniformShuffle group(it);
RDCASSERT(uintComp(GetSrc(group.execution), 0) == (uint32_t)Scope::Subgroup);
value = group.value;
lane = firstLaneInSub + uintComp(GetSrc(group.id), 0);
lane = firstLaneInSub + uintComp(GetSrc(group.invocationId), 0);
}
else if(opdata.op == Op::GroupNonUniformShuffleXor ||
opdata.op == Op::GroupNonUniformShuffleUp ||
@@ -4995,7 +4995,6 @@ void ThreadState::StepNext(bool useDebugState, const uint32_t steps,
case Op::HitObjectIsMissNV:
case Op::ReorderThreadWithHitObjectNV:
case Op::ReorderThreadWithHintNV:
case Op::TypeHitObjectNV:
case Op::ColorAttachmentReadEXT:
case Op::DepthAttachmentReadEXT:
case Op::StencilAttachmentReadEXT:
@@ -5006,7 +5005,6 @@ void ThreadState::StepNext(bool useDebugState, const uint32_t steps,
case Op::RayQueryGetIntersectionTriangleVertexPositionsKHR:
case Op::ConvertBF16ToFINTEL:
case Op::ConvertFToBF16INTEL:
case Op::TypeCooperativeMatrixKHR:
case Op::CooperativeMatrixLoadKHR:
case Op::CooperativeMatrixStoreKHR:
case Op::CooperativeMatrixMulAddKHR:
@@ -5027,6 +5025,65 @@ void ThreadState::StepNext(bool useDebugState, const uint32_t steps,
case Op::ConstantCompositeReplicateEXT:
case Op::SpecConstantCompositeReplicateEXT:
case Op::RawAccessChainNV:
case Op::CreateTensorLayoutNV:
case Op::CreateTensorViewNV:
case Op::TensorViewSetClipNV:
case Op::TensorViewSetDimensionNV:
case Op::TensorViewSetStrideNV:
case Op::TensorLayoutSetDimensionNV:
case Op::TensorLayoutSetBlockSizeNV:
case Op::TensorLayoutSetClampValueNV:
case Op::TensorLayoutSetStrideNV:
case Op::TensorLayoutSliceNV:
case Op::RayQueryGetIntersectionClusterIdNV:
case Op::RayQueryIsSphereHitNV:
case Op::RayQueryIsLSSHitNV:
case Op::RayQueryGetIntersectionLSSHitValueNV:
case Op::RayQueryGetIntersectionLSSPositionsNV:
case Op::RayQueryGetIntersectionLSSRadiiNV:
case Op::RayQueryGetIntersectionSpherePositionNV:
case Op::RayQueryGetIntersectionSphereRadiusNV:
case Op::HitObjectIsLSSHitNV:
case Op::HitObjectIsSphereHitNV:
case Op::HitObjectGetLSSPositionsNV:
case Op::HitObjectGetLSSRadiiNV:
case Op::HitObjectGetSpherePositionNV:
case Op::HitObjectGetSphereRadiusNV:
case Op::HitObjectGetClusterIdNV:
case Op::CooperativeMatrixConvertNV:
case Op::CooperativeMatrixReduceNV:
case Op::CooperativeMatrixLoadTensorNV:
case Op::CooperativeMatrixStoreTensorNV:
case Op::CooperativeMatrixPerElementOpNV:
case Op::CooperativeMatrixTransposeNV:
case Op::CooperativeVectorLoadNV:
case Op::CooperativeVectorStoreNV:
case Op::CooperativeVectorMatrixMulAddNV:
case Op::CooperativeVectorMatrixMulNV:
case Op::CooperativeVectorOuterProductAccumulateNV:
case Op::CooperativeVectorReduceSumAccumulateNV:
case Op::GraphARM:
case Op::GraphConstantARM:
case Op::GraphEntryPointARM:
case Op::GraphInputARM:
case Op::GraphSetOutputARM:
case Op::GraphEndARM:
case Op::ArithmeticFenceEXT:
case Op::EnqueueNodePayloadsAMDX:
case Op::IsNodePayloadValidAMDX:
case Op::UntypedGroupAsyncCopyKHR:
case Op::UntypedVariableKHR:
case Op::UntypedAccessChainKHR:
case Op::UntypedInBoundsAccessChainKHR:
case Op::UntypedInBoundsPtrAccessChainKHR:
case Op::UntypedPtrAccessChainKHR:
case Op::UntypedArrayLengthKHR:
case Op::UntypedPrefetchKHR:
case Op::BitCastArrayQCOM:
case Op::CompositeConstructCoopMatQCOM:
case Op::CompositeExtractCoopMatQCOM:
case Op::ExtractSubArrayQCOM:
case Op::FmaKHR:
{
RDCERR("Unsupported extension opcode used %s", ToStr(opdata.op).c_str());
@@ -5093,19 +5150,15 @@ void ThreadState::StepNext(bool useDebugState, const uint32_t steps,
case Op::ModuleProcessed:
case Op::ExecutionModeId:
case Op::TypeUntypedPointerKHR:
case Op::UntypedVariableKHR:
case Op::UntypedAccessChainKHR:
case Op::UntypedInBoundsAccessChainKHR:
case Op::UntypedInBoundsPtrAccessChainKHR:
case Op::UntypedPtrAccessChainKHR:
case Op::UntypedArrayLengthKHR:
case Op::UntypedPrefetchKHR:
case Op::TypeNodePayloadArrayAMDX:
case Op::ConstantStringAMDX:
case Op::SpecConstantStringAMDX:
case Op::TypeCooperativeVectorNV:
case Op::TypeTensorLayoutNV:
case Op::TypeTensorViewNV:
case Op::TypeGraphARM:
case Op::TypeHitObjectNV:
case Op::TypeCooperativeMatrixKHR:
{
RDCERR("Encountered unexpected global SPIR-V operation %s", ToStr(opdata.op).c_str());
break;
@@ -5171,69 +5224,35 @@ void ThreadState::StepNext(bool useDebugState, const uint32_t steps,
case Op::TypePipeStorage:
case Op::ConstantPipeStorage:
case Op::CreatePipeFromPipeStorage:
case Op::FPGARegINTEL:
case Op::ReadPipeBlockingINTEL:
case Op::WritePipeBlockingINTEL:
case Op::ControlBarrierArriveINTEL:
case Op::ControlBarrierWaitINTEL:
case Op::ArithmeticFenceEXT:
case Op::SubgroupMatrixMultiplyAccumulateINTEL:
case Op::EnqueueNodePayloadsAMDX:
case Op::IsNodePayloadValidAMDX:
case Op::SubgroupBlockPrefetchINTEL:
case Op::Subgroup2DBlockLoadINTEL:
case Op::Subgroup2DBlockLoadTransformINTEL:
case Op::Subgroup2DBlockLoadTransposeINTEL:
case Op::Subgroup2DBlockPrefetchINTEL:
case Op::Subgroup2DBlockStoreINTEL:
case Op::CreateTensorLayoutNV:
case Op::CreateTensorViewNV:
case Op::TensorViewSetClipNV:
case Op::TensorViewSetDimensionNV:
case Op::TensorViewSetStrideNV:
case Op::TensorLayoutSetDimensionNV:
case Op::TensorLayoutSetBlockSizeNV:
case Op::TensorLayoutSetClampValueNV:
case Op::TensorLayoutSetStrideNV:
case Op::TensorLayoutSliceNV:
case Op::RayQueryGetClusterIdNV:
case Op::RayQueryIsSphereHitNV:
case Op::RayQueryIsLSSHitNV:
case Op::RayQueryGetIntersectionLSSHitValueNV:
case Op::RayQueryGetIntersectionLSSPositionsNV:
case Op::RayQueryGetIntersectionLSSRadiiNV:
case Op::RayQueryGetIntersectionSpherePositionNV:
case Op::RayQueryGetIntersectionSphereRadiusNV:
case Op::HitObjectIsLSSHitNV:
case Op::HitObjectIsSphereHitNV:
case Op::HitObjectGetLSSPositionsNV:
case Op::HitObjectGetLSSRadiiNV:
case Op::HitObjectGetSpherePositionNV:
case Op::HitObjectGetSphereRadiusNV:
case Op::HitObjectGetClusterIdNV:
case Op::CooperativeMatrixConvertNV:
case Op::CooperativeMatrixReduceNV:
case Op::CooperativeMatrixLoadTensorNV:
case Op::CooperativeMatrixStoreTensorNV:
case Op::CooperativeMatrixPerElementOpNV:
case Op::CooperativeMatrixTransposeNV:
case Op::CooperativeVectorLoadNV:
case Op::CooperativeVectorStoreNV:
case Op::CooperativeVectorMatrixMulAddNV:
case Op::CooperativeVectorMatrixMulNV:
case Op::CooperativeVectorOuterProductAccumulateNV:
case Op::CooperativeVectorReduceSumAccumulateNV:
case Op::TypeTensorARM:
case Op::TensorReadARM:
case Op::TensorWriteARM:
case Op::TensorQuerySizeARM:
case Op::TaskSequenceAsyncINTEL:
case Op::TaskSequenceCreateINTEL:
case Op::TaskSequenceGetINTEL:
case Op::TaskSequenceReleaseINTEL:
case Op::TypeTaskSequenceINTEL:
case Op::BitwiseFunctionINTEL:
case Op::RoundFToTF32INTEL:
case Op::SaveMemoryINTEL:
case Op::RestoreMemoryINTEL:
case Op::VariableLengthArrayINTEL:
case Op::UntypedVariableLengthArrayINTEL:
case Op::ConditionalEntryPointINTEL:
case Op::ConditionalCapabilityINTEL:
case Op::ConditionalExtensionINTEL:
case Op::SpecConstantArchitectureINTEL:
case Op::SpecConstantTargetINTEL:
case Op::ConvertHandleToImageINTEL:
case Op::ConvertHandleToSampledImageINTEL:
case Op::ConvertHandleToSamplerINTEL:
case Op::SpecConstantCapabilitiesINTEL:
case Op::ConditionalCopyObjectINTEL:
{
// these are kernel only
RDCERR("Encountered unexpected kernel SPIR-V operation %s", ToStr(opdata.op).c_str());
@@ -446,16 +446,9 @@ void Reflector::CheckDebuggable(bool &debuggable, rdcstr &debugStatus) const
"SPV_KHR_16bit_storage",
"SPV_KHR_8bit_storage",
"SPV_KHR_bit_instructions",
// SPV_KHR_compute_shader_derivatives
// SPV_KHR_cooperative_matrix
"SPV_KHR_device_group",
"SPV_KHR_expect_assume",
"SPV_KHR_float_controls",
// SPV_KHR_float_controls2
// SPV_KHR_fragment_shader_barycentric
// SPV_KHR_fragment_shading_rate
// SPV_KHR_integer_dot_product
// SPV_KHR_linkonce_odr - kernel only
"SPV_KHR_maximal_reconvergence",
"SPV_KHR_multiview",
"SPV_KHR_no_integer_wrap_decoration",
@@ -463,10 +456,6 @@ void Reflector::CheckDebuggable(bool &debuggable, rdcstr &debugStatus) const
"SPV_KHR_physical_storage_buffer",
"SPV_KHR_post_depth_coverage",
"SPV_KHR_quad_control",
// SPV_KHR_ray_cull_mask
// SPV_KHR_ray_query
// SPV_KHR_ray_tracing
// SPV_KHR_ray_tracing_position_fetch
"SPV_KHR_relaxed_extended_instruction",
"SPV_KHR_shader_atomic_counter_ops",
"SPV_KHR_shader_ballot",
@@ -477,34 +466,21 @@ void Reflector::CheckDebuggable(bool &debuggable, rdcstr &debugStatus) const
"SPV_KHR_subgroup_uniform_control_flow",
"SPV_KHR_subgroup_vote",
"SPV_KHR_terminate_invocation",
// SPV_KHR_uniform_group_instructions - kernel?
// SPV_KHR_untyped_pointers - kernel
// SPV_KHR_variable_pointers
"SPV_KHR_vulkan_memory_model",
// SPV_KHR_workgroup_memory_explicit_layout
// EXT extensions
// SPV_EXT_arithmetic_fence - kernel?
"SPV_EXT_demote_to_helper_invocation",
"SPV_EXT_descriptor_indexing",
"SPV_EXT_fragment_fully_covered",
"SPV_EXT_fragment_invocation_density",
// SPV_EXT_fragment_shader_interlock
// SPV_EXT_image_raw10_raw12 - kernel?
"SPV_EXT_mesh_shader",
// SPV_EXT_opacity_micromap
// SPV_EXT_optnone - kernel?
"SPV_EXT_physical_storage_buffer",
// SPV_EXT_relaxed_printf_string_address_space - kernel
// SPV_EXT_replicated_composites
"SPV_EXT_shader_atomic_float_add",
// SPV_EXT_shader_atomic_float_min_max
// SPV_EXT_shader_atomic_float16_add
"SPV_EXT_shader_atomic_float_min_max",
"SPV_EXT_shader_atomic_float16_add",
"SPV_EXT_shader_image_int64",
"SPV_EXT_shader_stencil_export",
// SPV_EXT_shader_tile_image
"SPV_EXT_shader_viewport_index_layer",
// SPV_EXT_ycbcr_attachments
// vendor extensions
"SPV_GOOGLE_decorate_string",
@@ -629,21 +605,17 @@ void Reflector::CheckDebuggable(bool &debuggable, rdcstr &debugStatus) const
case Capability::PhysicalStorageBufferAddresses:
case Capability::MeshShadingEXT:
case Capability::QuadControlKHR:
{
supported = true;
break;
}
case Capability::GroupNonUniform:
case Capability::GroupNonUniformVote:
case Capability::GroupNonUniformArithmetic:
case Capability::GroupNonUniformBallot:
case Capability::GroupNonUniformShuffle:
case Capability::GroupNonUniformShuffleRelative:
case Capability::GroupNonUniformClustered:
case Capability::GroupNonUniformQuad:
case Capability::GroupNonUniformRotateKHR:
case Capability::GroupNonUniformShuffle:
case Capability::GroupNonUniformShuffleRelative:
case Capability::GroupNonUniformVote:
case Capability::SubgroupBallotKHR:
case Capability::SubgroupVoteKHR:
case Capability::GroupNonUniformRotateKHR:
case Capability::GroupNonUniformArithmetic:
{
supported = true;
break;
@@ -651,48 +623,31 @@ void Reflector::CheckDebuggable(bool &debuggable, rdcstr &debugStatus) const
// we plan to support these but needs additional testing/proving
// MSAA custom interpolation
// SPIR-V 1.0 MSAA custom interpolation
case Capability::InterpolationFunction:
{
supported = false;
break;
}
// variable pointers
case Capability::VariablePointersStorageBuffer:
case Capability::VariablePointers:
// SPIR-V 1.0 Sparse Operations
case Capability::SparseResidency:
{
supported = false;
break;
}
// float controls
// SPIR-V 1.4 / SPV_KHR_float_controls
case Capability::DenormPreserve:
case Capability::DenormFlushToZero:
case Capability::RoundingModeRTE:
case Capability::RoundingModeRTZ:
case Capability::FloatControls2:
// group instructions
// workgroup layout:
case Capability::WorkgroupMemoryExplicitLayout16BitAccessKHR:
case Capability::WorkgroupMemoryExplicitLayout8BitAccessKHR:
case Capability::WorkgroupMemoryExplicitLayoutKHR:
// sparse operations
case Capability::SparseResidency:
// fragment interlock
case Capability::FragmentShaderSampleInterlockEXT:
case Capability::FragmentShaderShadingRateInterlockEXT:
case Capability::FragmentShaderPixelInterlockEXT:
{
supported = false;
break;
}
// fragment shading rate
case Capability::FragmentShadingRateKHR:
{
supported = false;
break;
}
// integer dot product
// SPIR-V 1.6 / SPV_KHR_integer_dot_product
case Capability::DotProduct:
case Capability::DotProductInput4x8Bit:
case Capability::DotProductInput4x8BitPacked:
@@ -702,29 +657,15 @@ void Reflector::CheckDebuggable(bool &debuggable, rdcstr &debugStatus) const
break;
}
// raytracing
case Capability::RayQueryKHR:
case Capability::RayTraversalPrimitiveCullingKHR:
case Capability::RayTracingKHR:
case Capability::RayCullMaskKHR:
case Capability::RayTracingOpacityMicromapEXT:
case Capability::RayTracingNV:
case Capability::ShaderInvocationReorderNV:
case Capability::RayQueryPositionFetchKHR:
case Capability::RayTracingPositionFetchKHR:
// SPV_KHR_bfloat16
case Capability::BFloat16TypeKHR:
case Capability::BFloat16DotProductKHR:
{
supported = false;
break;
}
// barycentric
case Capability::FragmentBarycentricKHR:
{
supported = false;
break;
}
// compute shader derivatives
// SPV_KHR_compute_shader_derivatives
case Capability::ComputeDerivativeGroupQuadsKHR:
case Capability::ComputeDerivativeGroupLinearKHR:
{
@@ -732,17 +673,104 @@ void Reflector::CheckDebuggable(bool &debuggable, rdcstr &debugStatus) const
break;
}
// untyped pointers
// SPV_KHR_float_controls2
case Capability::FloatControls2:
{
supported = false;
break;
}
// SPV_KHR_fma
case Capability::FMAKHR:
{
supported = false;
break;
}
// SPV_KHR_fragment_shader_barycentric
case Capability::FragmentBarycentricKHR:
{
supported = false;
break;
}
// SPV_KHR_fragment_shading_rate
case Capability::FragmentShadingRateKHR:
{
supported = false;
break;
}
// SPV_KHR_untyped_pointers
case Capability::UntypedPointersKHR:
{
supported = false;
break;
}
// bfloat16
case Capability::BFloat16TypeKHR:
case Capability::BFloat16DotProductKHR:
case Capability::BFloat16CooperativeMatrixKHR:
// SPV_KHR_variable_pointers
case Capability::VariablePointersStorageBuffer:
case Capability::VariablePointers:
{
supported = false;
break;
}
// SPV_KHR_workgroup_memory_explicit_layout
case Capability::WorkgroupMemoryExplicitLayout16BitAccessKHR:
case Capability::WorkgroupMemoryExplicitLayout8BitAccessKHR:
case Capability::WorkgroupMemoryExplicitLayoutKHR:
{
supported = false;
break;
}
// Ray tracing
case Capability::RayCullMaskKHR:
case Capability::RayQueryKHR:
case Capability::RayQueryPositionFetchKHR:
case Capability::RayTracingKHR:
case Capability::RayTracingPositionFetchKHR:
case Capability::RayTraversalPrimitiveCullingKHR:
case Capability::RayTracingOpacityMicromapEXT:
{
supported = false;
break;
}
// SPV_EXT_float8
case Capability::Float8EXT:
{
supported = false;
break;
}
// SPV_EXT_fragment_shader_interlock
case Capability::FragmentShaderSampleInterlockEXT:
case Capability::FragmentShaderShadingRateInterlockEXT:
case Capability::FragmentShaderPixelInterlockEXT:
{
supported = false;
break;
}
case Capability::ReplicatedCompositesEXT:
{
supported = false;
break;
}
// SPV_EXT_shader_64bit_indexing
case Capability::Shader64BitIndexingEXT:
{
supported = false;
break;
}
// SPV_EXT_shader_tile_image
case Capability::TileImageColorReadAccessEXT:
case Capability::TileImageDepthReadAccessEXT:
case Capability::TileImageStencilReadAccessEXT:
{
supported = false;
break;
@@ -789,12 +817,12 @@ void Reflector::CheckDebuggable(bool &debuggable, rdcstr &debugStatus) const
case Capability::FunctionPointersINTEL:
case Capability::IndirectReferencesINTEL:
case Capability::FPGAKernelAttributesINTEL:
case Capability::FPGALoopControlsINTEL:
case Capability::FPGAMemoryAttributesINTEL:
case Capability::FPGARegINTEL:
case Capability::FPGALoopControlsALTERA:
case Capability::FPGAMemoryAttributesALTERA:
case Capability::FPGARegALTERA:
case Capability::UnstructuredLoopControlsINTEL:
case Capability::KernelAttributesINTEL:
case Capability::BlockingPipesINTEL:
case Capability::BlockingPipesALTERA:
case Capability::RayTracingMotionBlurNV:
case Capability::RoundToInfinityINTEL:
case Capability::FloatingPointModeINTEL:
@@ -804,15 +832,15 @@ void Reflector::CheckDebuggable(bool &debuggable, rdcstr &debugStatus) const
case Capability::VariableLengthArrayINTEL:
case Capability::FunctionFloatControlINTEL:
case Capability::FPFastMathModeINTEL:
case Capability::ArbitraryPrecisionFixedPointINTEL:
case Capability::ArbitraryPrecisionFloatingPointINTEL:
case Capability::ArbitraryPrecisionIntegersINTEL:
case Capability::FPGAMemoryAccessesINTEL:
case Capability::FPGAClusterAttributesINTEL:
case Capability::LoopFuseINTEL:
case Capability::FPGABufferLocationINTEL:
case Capability::USMStorageClassesINTEL:
case Capability::IOPipesINTEL:
case Capability::ArbitraryPrecisionFixedPointALTERA:
case Capability::ArbitraryPrecisionFloatingPointALTERA:
case Capability::ArbitraryPrecisionIntegersALTERA:
case Capability::FPGAMemoryAccessesALTERA:
case Capability::FPGAClusterAttributesALTERA:
case Capability::LoopFuseALTERA:
case Capability::FPGABufferLocationALTERA:
case Capability::USMStorageClassesALTERA:
case Capability::IOPipesALTERA:
case Capability::LongCompositesINTEL:
case Capability::DebugInfoModuleINTEL:
case Capability::BindlessTextureNV:
@@ -820,19 +848,16 @@ void Reflector::CheckDebuggable(bool &debuggable, rdcstr &debugStatus) const
case Capability::SplitBarrierINTEL:
case Capability::GroupUniformArithmeticKHR:
case Capability::CoreBuiltinsARM:
case Capability::FPGADSPControlINTEL:
case Capability::FPGAInvocationPipeliningAttributesINTEL:
case Capability::RuntimeAlignedAttributeINTEL:
case Capability::TileImageColorReadAccessEXT:
case Capability::TileImageDepthReadAccessEXT:
case Capability::TileImageStencilReadAccessEXT:
case Capability::FPGADSPControlALTERA:
case Capability::FPGAInvocationPipeliningAttributesALTERA:
case Capability::RuntimeAlignedAttributeALTERA:
case Capability::TextureSampleWeightedQCOM:
case Capability::TextureBoxFilterQCOM:
case Capability::TextureBlockMatchQCOM:
case Capability::BFloat16ConversionINTEL:
case Capability::FPGAKernelAttributesv2INTEL:
case Capability::FPGALatencyControlINTEL:
case Capability::FPGAArgumentInterfacesINTEL:
case Capability::FPGALatencyControlALTERA:
case Capability::FPGAArgumentInterfacesALTERA:
case Capability::TextureBlockMatch2QCOM:
case Capability::ShaderEnqueueAMDX:
case Capability::DisplacementMicromapNV:
@@ -846,9 +871,9 @@ void Reflector::CheckDebuggable(bool &debuggable, rdcstr &debugStatus) const
case Capability::CooperativeMatrixPerElementOperationsNV:
case Capability::CooperativeMatrixTensorAddressingNV:
case Capability::CooperativeMatrixBlockLoadsNV:
case Capability::FPGAClusterAttributesV2INTEL:
case Capability::FPGAClusterAttributesV2ALTERA:
case Capability::FPMaxErrorINTEL:
case Capability::GlobalVariableFPGADecorationsINTEL:
case Capability::GlobalVariableFPGADecorationsALTERA:
case Capability::MaskedGatherScatterINTEL:
case Capability::CacheControlsINTEL:
case Capability::RegisterLimitsINTEL:
@@ -860,7 +885,6 @@ void Reflector::CheckDebuggable(bool &debuggable, rdcstr &debugStatus) const
case Capability::SubgroupMatrixMultiplyAccumulateINTEL:
case Capability::CooperativeMatrixLayoutsARM:
case Capability::RawAccessChainsNV:
case Capability::ReplicatedCompositesEXT:
case Capability::RayTracingSpheresGeometryNV:
case Capability::RayTracingLinearSweptSpheresGeometryNV:
case Capability::RayTracingClusterAccelerationStructureNV:
@@ -873,9 +897,19 @@ void Reflector::CheckDebuggable(bool &debuggable, rdcstr &debugStatus) const
case Capability::TileShadingQCOM:
case Capability::Int4TypeINTEL:
case Capability::Int4CooperativeMatrixINTEL:
case Capability::TaskSequenceINTEL:
case Capability::TaskSequenceALTERA:
case Capability::TernaryBitwiseFunctionINTEL:
case Capability::TensorFloat32RoundingINTEL:
case Capability::GraphARM:
case Capability::BFloat16CooperativeMatrixKHR:
case Capability::Float8CooperativeMatrixEXT:
case Capability::CooperativeMatrixConversionQCOM:
case Capability::UntypedVariableLengthArrayINTEL:
case Capability::SpecConditionalINTEL:
case Capability::FunctionVariantsINTEL:
case Capability::BindlessImagesINTEL:
case Capability::RayTracingNV:
case Capability::ShaderInvocationReorderNV:
case Capability::Max:
case Capability::Invalid:
{
File diff suppressed because it is too large Load Diff
+185 -165
View File
@@ -25,29 +25,13 @@
/******************************************************************************
* Generated from Khronos SPIR-V machine-readable JSON grammar.
*
* Copyright (c) 2014-2024 The Khronos Group Inc.
* Copyright: 2014-2024 The Khronos Group Inc.
* License: MIT
*
* 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.
*
* MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS KHRONOS
* STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS SPECIFICATIONS AND
* HEADER INFORMATION ARE LOCATED AT https://www.khronos.org/registry/
*
* 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.
* MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS
* KHRONOS STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS
* SPECIFICATIONS AND HEADER INFORMATION ARE LOCATED AT
* https://www.khronos.org/registry/
******************************************************************************/
#pragma once
@@ -134,6 +118,7 @@ enum class Generator : uint32_t
LLVMSPIRVBackend = 43,
Kongruent = 44,
NuvkSPIRVEmitterandDLSLcompiler = 45,
Arc3DShaderCompiler = 49,
};
enum class ImageOperands : uint32_t
@@ -201,16 +186,16 @@ enum class LoopControl : uint32_t
IterationMultiple = 0x0040,
PeelCount = 0x0080,
PartialCount = 0x0100,
InitiationIntervalINTEL = 0x10000,
MaxConcurrencyINTEL = 0x20000,
DependencyArrayINTEL = 0x40000,
PipelineEnableINTEL = 0x80000,
LoopCoalesceINTEL = 0x100000,
MaxInterleavingINTEL = 0x200000,
SpeculatedIterationsINTEL = 0x400000,
NoFusionINTEL = 0x800000,
LoopCountINTEL = 0x1000000,
MaxReinvocationDelayINTEL = 0x2000000,
InitiationIntervalALTERA = 0x10000,
MaxConcurrencyALTERA = 0x20000,
DependencyArrayALTERA = 0x40000,
PipelineEnableALTERA = 0x80000,
LoopCoalesceALTERA = 0x100000,
MaxInterleavingALTERA = 0x200000,
SpeculatedIterationsALTERA = 0x400000,
NoFusionALTERA = 0x800000,
LoopCountALTERA = 0x1000000,
MaxReinvocationDelayALTERA = 0x2000000,
Max,
Invalid = ~0U,
};
@@ -467,6 +452,7 @@ enum class ExecutionMode : uint32_t
SampleInterlockUnorderedEXT = 5369,
ShadingRateInterlockOrderedEXT = 5370,
ShadingRateInterlockUnorderedEXT = 5371,
Shader64BitIndexingEXT = 5427,
SharedLocalMemorySizeINTEL = 5618,
RoundingModeRTPINTEL = 5620,
RoundingModeRTNINTEL = 5621,
@@ -517,8 +503,8 @@ enum class StorageClass : uint32_t
HitObjectAttributeNV = 5385,
TaskPayloadWorkgroupEXT = 5402,
CodeSectionINTEL = 5605,
DeviceOnlyINTEL = 5936,
HostOnlyINTEL = 5937,
DeviceOnlyALTERA = 5936,
HostOnlyALTERA = 5937,
Max,
Invalid = ~0U,
};
@@ -750,7 +736,7 @@ enum class FunctionParameterAttribute : uint32_t
NoCapture = 5,
NoWrite = 6,
NoReadWrite = 7,
RuntimeAlignedINTEL = 5940,
RuntimeAlignedALTERA = 5940,
Max,
Invalid = ~0U,
};
@@ -804,6 +790,7 @@ enum class Decoration : uint32_t
MaxByteOffset = 45,
AlignmentId = 46,
MaxByteOffsetId = 47,
SaturatedToLargestFloat8NormalConversionEXT = 4216,
NoSignedWrap = 4469,
NoUnsignedWrap = 4470,
WeightTextureQCOM = 4487,
@@ -848,55 +835,56 @@ enum class Decoration : uint32_t
UserTypeGOOGLE = 5636,
FunctionRoundingModeINTEL = 5822,
FunctionDenormModeINTEL = 5823,
RegisterINTEL = 5825,
MemoryINTEL = 5826,
NumbanksINTEL = 5827,
BankwidthINTEL = 5828,
MaxPrivateCopiesINTEL = 5829,
SinglepumpINTEL = 5830,
DoublepumpINTEL = 5831,
MaxReplicatesINTEL = 5832,
SimpleDualPortINTEL = 5833,
MergeINTEL = 5834,
BankBitsINTEL = 5835,
ForcePow2DepthINTEL = 5836,
StridesizeINTEL = 5883,
WordsizeINTEL = 5884,
TrueDualPortINTEL = 5885,
BurstCoalesceINTEL = 5899,
CacheSizeINTEL = 5900,
DontStaticallyCoalesceINTEL = 5901,
PrefetchINTEL = 5902,
StallEnableINTEL = 5905,
FuseLoopsInFunctionINTEL = 5907,
MathOpDSPModeINTEL = 5909,
RegisterALTERA = 5825,
MemoryALTERA = 5826,
NumbanksALTERA = 5827,
BankwidthALTERA = 5828,
MaxPrivateCopiesALTERA = 5829,
SinglepumpALTERA = 5830,
DoublepumpALTERA = 5831,
MaxReplicatesALTERA = 5832,
SimpleDualPortALTERA = 5833,
MergeALTERA = 5834,
BankBitsALTERA = 5835,
ForcePow2DepthALTERA = 5836,
StridesizeALTERA = 5883,
WordsizeALTERA = 5884,
TrueDualPortALTERA = 5885,
BurstCoalesceALTERA = 5899,
CacheSizeALTERA = 5900,
DontStaticallyCoalesceALTERA = 5901,
PrefetchALTERA = 5902,
StallEnableALTERA = 5905,
FuseLoopsInFunctionALTERA = 5907,
MathOpDSPModeALTERA = 5909,
AliasScopeINTEL = 5914,
NoAliasINTEL = 5915,
InitiationIntervalINTEL = 5917,
MaxConcurrencyINTEL = 5918,
PipelineEnableINTEL = 5919,
BufferLocationINTEL = 5921,
IOPipeStorageINTEL = 5944,
InitiationIntervalALTERA = 5917,
MaxConcurrencyALTERA = 5918,
PipelineEnableALTERA = 5919,
BufferLocationALTERA = 5921,
IOPipeStorageALTERA = 5944,
FunctionFloatingPointModeINTEL = 6080,
SingleElementVectorINTEL = 6085,
VectorComputeCallableFunctionINTEL = 6087,
MediaBlockIOINTEL = 6140,
StallFreeINTEL = 6151,
StallFreeALTERA = 6151,
FPMaxErrorDecorationINTEL = 6170,
LatencyControlLabelINTEL = 6172,
LatencyControlConstraintINTEL = 6173,
ConduitKernelArgumentINTEL = 6175,
RegisterMapKernelArgumentINTEL = 6176,
MMHostInterfaceAddressWidthINTEL = 6177,
MMHostInterfaceDataWidthINTEL = 6178,
MMHostInterfaceLatencyINTEL = 6179,
MMHostInterfaceReadWriteModeINTEL = 6180,
MMHostInterfaceMaxBurstINTEL = 6181,
MMHostInterfaceWaitRequestINTEL = 6182,
StableKernelArgumentINTEL = 6183,
LatencyControlLabelALTERA = 6172,
LatencyControlConstraintALTERA = 6173,
ConduitKernelArgumentALTERA = 6175,
RegisterMapKernelArgumentALTERA = 6176,
MMHostInterfaceAddressWidthALTERA = 6177,
MMHostInterfaceDataWidthALTERA = 6178,
MMHostInterfaceLatencyALTERA = 6179,
MMHostInterfaceReadWriteModeALTERA = 6180,
MMHostInterfaceMaxBurstALTERA = 6181,
MMHostInterfaceWaitRequestALTERA = 6182,
StableKernelArgumentALTERA = 6183,
HostAccessINTEL = 6188,
InitModeINTEL = 6190,
ImplementInRegisterMapINTEL = 6191,
InitModeALTERA = 6190,
ImplementInRegisterMapALTERA = 6191,
ConditionalINTEL = 6247,
CacheControlLoadINTEL = 6442,
CacheControlStoreINTEL = 6443,
Max,
@@ -1149,7 +1137,10 @@ enum class Capability : uint32_t
TensorsARM = 4174,
StorageTensorArrayDynamicIndexingARM = 4175,
StorageTensorArrayNonUniformIndexingARM = 4176,
GraphARM = 4191,
CooperativeMatrixLayoutsARM = 4201,
Float8EXT = 4212,
Float8CooperativeMatrixEXT = 4213,
FragmentShadingRateKHR = 4422,
SubgroupBallotKHR = 4423,
DrawParameters = 4427,
@@ -1184,6 +1175,7 @@ enum class Capability : uint32_t
TextureBoxFilterQCOM = 4485,
TextureBlockMatchQCOM = 4486,
TileShadingQCOM = 4495,
CooperativeMatrixConversionQCOM = 4496,
TextureBlockMatch2QCOM = 4498,
Float16ImageAMD = 5008,
ImageGatherBiasLodAMD = 5009,
@@ -1250,6 +1242,7 @@ enum class Capability : uint32_t
RawAccessChainsNV = 5414,
RayTracingSpheresGeometryNV = 5418,
RayTracingLinearSweptSpheresGeometryNV = 5419,
Shader64BitIndexingEXT = 5426,
CooperativeMatrixReductionsNV = 5430,
CooperativeMatrixConversionsNV = 5431,
CooperativeMatrixPerElementOperationsNV = 5432,
@@ -1279,27 +1272,27 @@ enum class Capability : uint32_t
SubgroupAvcMotionEstimationChromaINTEL = 5698,
VariableLengthArrayINTEL = 5817,
FunctionFloatControlINTEL = 5821,
FPGAMemoryAttributesINTEL = 5824,
FPGAMemoryAttributesALTERA = 5824,
FPFastMathModeINTEL = 5837,
ArbitraryPrecisionIntegersINTEL = 5844,
ArbitraryPrecisionFloatingPointINTEL = 5845,
ArbitraryPrecisionIntegersALTERA = 5844,
ArbitraryPrecisionFloatingPointALTERA = 5845,
UnstructuredLoopControlsINTEL = 5886,
FPGALoopControlsINTEL = 5888,
FPGALoopControlsALTERA = 5888,
KernelAttributesINTEL = 5892,
FPGAKernelAttributesINTEL = 5897,
FPGAMemoryAccessesINTEL = 5898,
FPGAClusterAttributesINTEL = 5904,
LoopFuseINTEL = 5906,
FPGADSPControlINTEL = 5908,
FPGAMemoryAccessesALTERA = 5898,
FPGAClusterAttributesALTERA = 5904,
LoopFuseALTERA = 5906,
FPGADSPControlALTERA = 5908,
MemoryAccessAliasingINTEL = 5910,
FPGAInvocationPipeliningAttributesINTEL = 5916,
FPGABufferLocationINTEL = 5920,
ArbitraryPrecisionFixedPointINTEL = 5922,
USMStorageClassesINTEL = 5935,
RuntimeAlignedAttributeINTEL = 5939,
IOPipesINTEL = 5943,
BlockingPipesINTEL = 5945,
FPGARegINTEL = 5948,
FPGAInvocationPipeliningAttributesALTERA = 5916,
FPGABufferLocationALTERA = 5920,
ArbitraryPrecisionFixedPointALTERA = 5922,
USMStorageClassesALTERA = 5935,
RuntimeAlignedAttributeALTERA = 5939,
IOPipesALTERA = 5943,
BlockingPipesALTERA = 5945,
FPGARegALTERA = 5948,
DotProductInputAll = 6016,
DotProductInput4x8Bit = 6017,
DotProductInput4x8BitPacked = 6018,
@@ -1310,6 +1303,7 @@ enum class Capability : uint32_t
BitInstructions = 6025,
GroupNonUniformRotateKHR = 6026,
FloatControls2 = 6029,
FMAKHR = 6030,
AtomicFloat32AddEXT = 6033,
AtomicFloat64AddEXT = 6034,
LongCompositesINTEL = 6089,
@@ -1319,25 +1313,29 @@ enum class Capability : uint32_t
BFloat16ConversionINTEL = 6115,
SplitBarrierINTEL = 6141,
ArithmeticFenceEXT = 6144,
FPGAClusterAttributesV2INTEL = 6150,
FPGAClusterAttributesV2ALTERA = 6150,
FPGAKernelAttributesv2INTEL = 6161,
TaskSequenceINTEL = 6162,
TaskSequenceALTERA = 6162,
FPMaxErrorINTEL = 6169,
FPGALatencyControlINTEL = 6171,
FPGAArgumentInterfacesINTEL = 6174,
FPGALatencyControlALTERA = 6171,
FPGAArgumentInterfacesALTERA = 6174,
GlobalVariableHostAccessINTEL = 6187,
GlobalVariableFPGADecorationsINTEL = 6189,
GlobalVariableFPGADecorationsALTERA = 6189,
SubgroupBufferPrefetchINTEL = 6220,
Subgroup2DBlockIOINTEL = 6228,
Subgroup2DBlockTransformINTEL = 6229,
Subgroup2DBlockTransposeINTEL = 6230,
SubgroupMatrixMultiplyAccumulateINTEL = 6236,
TernaryBitwiseFunctionINTEL = 6241,
UntypedVariableLengthArrayINTEL = 6243,
SpecConditionalINTEL = 6245,
FunctionVariantsINTEL = 6246,
GroupUniformArithmeticKHR = 6400,
TensorFloat32RoundingINTEL = 6425,
MaskedGatherScatterINTEL = 6427,
CacheControlsINTEL = 6441,
RegisterLimitsINTEL = 6460,
BindlessImagesINTEL = 6528,
Max,
Invalid = ~0U,
};
@@ -1442,8 +1440,8 @@ BITMASK_OPERATORS(TensorAddressingOperands);
enum class InitializationModeQualifier : uint32_t
{
InitOnDeviceReprogramINTEL = 0,
InitOnDeviceResetINTEL = 1,
InitOnDeviceReprogramALTERA = 0,
InitOnDeviceResetALTERA = 1,
Max,
Invalid = ~0U,
};
@@ -1502,6 +1500,8 @@ BITMASK_OPERATORS(MatrixMultiplyAccumulateOperands);
enum class FPEncoding : uint32_t
{
BFloat16KHR = 0,
Float8E4M3EXT = 4214,
Float8E5M2EXT = 4215,
Max,
Invalid = ~0U,
};
@@ -1629,15 +1629,15 @@ struct LoopControlAndParamDatas
uint32_t iterationMultiple = {};
uint32_t peelCount = {};
uint32_t partialCount = {};
uint32_t initiationIntervalINTEL = {};
uint32_t maxConcurrencyINTEL = {};
uint32_t dependencyArrayINTEL = {};
uint32_t pipelineEnableINTEL = {};
uint32_t loopCoalesceINTEL = {};
uint32_t maxInterleavingINTEL = {};
uint32_t speculatedIterationsINTEL = {};
uint32_t loopCountINTEL = {};
uint32_t maxReinvocationDelayINTEL = {};
uint32_t initiationIntervalALTERA = {};
uint32_t maxConcurrencyALTERA = {};
uint32_t dependencyArrayALTERA = {};
uint32_t pipelineEnableALTERA = {};
uint32_t loopCoalesceALTERA = {};
uint32_t maxInterleavingALTERA = {};
uint32_t speculatedIterationsALTERA = {};
uint32_t loopCountALTERA = {};
uint32_t maxReinvocationDelayALTERA = {};
operator LoopControl() const { return flags; }
bool operator &(const LoopControl v) const { return bool(flags & v); }
@@ -1661,26 +1661,26 @@ struct LoopControlAndParamDatas
void unsetPeelCount() { flags &= ~LoopControl::PeelCount; }
void setPartialCount(uint32_t partialCountParam) { flags |= LoopControl::PartialCount; partialCount = partialCountParam; }
void unsetPartialCount() { flags &= ~LoopControl::PartialCount; }
void setInitiationIntervalINTEL(uint32_t initiationIntervalINTELParam) { flags |= LoopControl::InitiationIntervalINTEL; initiationIntervalINTEL = initiationIntervalINTELParam; }
void unsetInitiationIntervalINTEL() { flags &= ~LoopControl::InitiationIntervalINTEL; }
void setMaxConcurrencyINTEL(uint32_t maxConcurrencyINTELParam) { flags |= LoopControl::MaxConcurrencyINTEL; maxConcurrencyINTEL = maxConcurrencyINTELParam; }
void unsetMaxConcurrencyINTEL() { flags &= ~LoopControl::MaxConcurrencyINTEL; }
void setDependencyArrayINTEL(uint32_t dependencyArrayINTELParam) { flags |= LoopControl::DependencyArrayINTEL; dependencyArrayINTEL = dependencyArrayINTELParam; }
void unsetDependencyArrayINTEL() { flags &= ~LoopControl::DependencyArrayINTEL; }
void setPipelineEnableINTEL(uint32_t pipelineEnableINTELParam) { flags |= LoopControl::PipelineEnableINTEL; pipelineEnableINTEL = pipelineEnableINTELParam; }
void unsetPipelineEnableINTEL() { flags &= ~LoopControl::PipelineEnableINTEL; }
void setLoopCoalesceINTEL(uint32_t loopCoalesceINTELParam) { flags |= LoopControl::LoopCoalesceINTEL; loopCoalesceINTEL = loopCoalesceINTELParam; }
void unsetLoopCoalesceINTEL() { flags &= ~LoopControl::LoopCoalesceINTEL; }
void setMaxInterleavingINTEL(uint32_t maxInterleavingINTELParam) { flags |= LoopControl::MaxInterleavingINTEL; maxInterleavingINTEL = maxInterleavingINTELParam; }
void unsetMaxInterleavingINTEL() { flags &= ~LoopControl::MaxInterleavingINTEL; }
void setSpeculatedIterationsINTEL(uint32_t speculatedIterationsINTELParam) { flags |= LoopControl::SpeculatedIterationsINTEL; speculatedIterationsINTEL = speculatedIterationsINTELParam; }
void unsetSpeculatedIterationsINTEL() { flags &= ~LoopControl::SpeculatedIterationsINTEL; }
void setNoFusionINTEL() { flags |= LoopControl::NoFusionINTEL; }
void unsetNoFusionINTEL() { flags &= ~LoopControl::NoFusionINTEL; }
void setLoopCountINTEL(uint32_t loopCountINTELParam) { flags |= LoopControl::LoopCountINTEL; loopCountINTEL = loopCountINTELParam; }
void unsetLoopCountINTEL() { flags &= ~LoopControl::LoopCountINTEL; }
void setMaxReinvocationDelayINTEL(uint32_t maxReinvocationDelayINTELParam) { flags |= LoopControl::MaxReinvocationDelayINTEL; maxReinvocationDelayINTEL = maxReinvocationDelayINTELParam; }
void unsetMaxReinvocationDelayINTEL() { flags &= ~LoopControl::MaxReinvocationDelayINTEL; }
void setInitiationIntervalALTERA(uint32_t initiationIntervalALTERAParam) { flags |= LoopControl::InitiationIntervalALTERA; initiationIntervalALTERA = initiationIntervalALTERAParam; }
void unsetInitiationIntervalALTERA() { flags &= ~LoopControl::InitiationIntervalALTERA; }
void setMaxConcurrencyALTERA(uint32_t maxConcurrencyALTERAParam) { flags |= LoopControl::MaxConcurrencyALTERA; maxConcurrencyALTERA = maxConcurrencyALTERAParam; }
void unsetMaxConcurrencyALTERA() { flags &= ~LoopControl::MaxConcurrencyALTERA; }
void setDependencyArrayALTERA(uint32_t dependencyArrayALTERAParam) { flags |= LoopControl::DependencyArrayALTERA; dependencyArrayALTERA = dependencyArrayALTERAParam; }
void unsetDependencyArrayALTERA() { flags &= ~LoopControl::DependencyArrayALTERA; }
void setPipelineEnableALTERA(uint32_t pipelineEnableALTERAParam) { flags |= LoopControl::PipelineEnableALTERA; pipelineEnableALTERA = pipelineEnableALTERAParam; }
void unsetPipelineEnableALTERA() { flags &= ~LoopControl::PipelineEnableALTERA; }
void setLoopCoalesceALTERA(uint32_t loopCoalesceALTERAParam) { flags |= LoopControl::LoopCoalesceALTERA; loopCoalesceALTERA = loopCoalesceALTERAParam; }
void unsetLoopCoalesceALTERA() { flags &= ~LoopControl::LoopCoalesceALTERA; }
void setMaxInterleavingALTERA(uint32_t maxInterleavingALTERAParam) { flags |= LoopControl::MaxInterleavingALTERA; maxInterleavingALTERA = maxInterleavingALTERAParam; }
void unsetMaxInterleavingALTERA() { flags &= ~LoopControl::MaxInterleavingALTERA; }
void setSpeculatedIterationsALTERA(uint32_t speculatedIterationsALTERAParam) { flags |= LoopControl::SpeculatedIterationsALTERA; speculatedIterationsALTERA = speculatedIterationsALTERAParam; }
void unsetSpeculatedIterationsALTERA() { flags &= ~LoopControl::SpeculatedIterationsALTERA; }
void setNoFusionALTERA() { flags |= LoopControl::NoFusionALTERA; }
void unsetNoFusionALTERA() { flags &= ~LoopControl::NoFusionALTERA; }
void setLoopCountALTERA(uint32_t loopCountALTERAParam) { flags |= LoopControl::LoopCountALTERA; loopCountALTERA = loopCountALTERAParam; }
void unsetLoopCountALTERA() { flags &= ~LoopControl::LoopCountALTERA; }
void setMaxReinvocationDelayALTERA(uint32_t maxReinvocationDelayALTERAParam) { flags |= LoopControl::MaxReinvocationDelayALTERA; maxReinvocationDelayALTERA = maxReinvocationDelayALTERAParam; }
void unsetMaxReinvocationDelayALTERA() { flags &= ~LoopControl::MaxReinvocationDelayALTERA; }
};
struct MemoryAccessAndParamDatas
@@ -1847,7 +1847,7 @@ struct FunctionDenormModeINTELParams
FPDenormMode fPDenormMode;
};
struct MathOpDSPModeINTELParams
struct MathOpDSPModeALTERAParams
{
uint32_t mode;
uint32_t propagate;
@@ -1859,7 +1859,7 @@ struct FunctionFloatingPointModeINTELParams
FPOperationMode fPOperationMode;
};
struct LatencyControlConstraintINTELParams
struct LatencyControlConstraintALTERAParams
{
uint32_t relativeTo;
uint32_t controlType;
@@ -1919,36 +1919,37 @@ struct DecorationAndParamData
Id counterBuffer;
FunctionRoundingModeINTELParams functionRoundingModeINTEL;
FunctionDenormModeINTELParams functionDenormModeINTEL;
uint32_t numbanksINTEL;
uint32_t bankwidthINTEL;
uint32_t maxPrivateCopiesINTEL;
uint32_t maxReplicatesINTEL;
uint32_t bankBitsINTEL;
uint32_t forcePow2DepthINTEL;
uint32_t stridesizeINTEL;
uint32_t wordsizeINTEL;
uint32_t cacheSizeINTEL;
uint32_t prefetchINTEL;
MathOpDSPModeINTELParams mathOpDSPModeINTEL;
uint32_t numbanksALTERA;
uint32_t bankwidthALTERA;
uint32_t maxPrivateCopiesALTERA;
uint32_t maxReplicatesALTERA;
uint32_t bankBitsALTERA;
uint32_t forcePow2DepthALTERA;
uint32_t stridesizeALTERA;
uint32_t wordsizeALTERA;
uint32_t cacheSizeALTERA;
uint32_t prefetchALTERA;
MathOpDSPModeALTERAParams mathOpDSPModeALTERA;
Id aliasScopeINTEL;
Id noAliasINTEL;
uint32_t initiationIntervalINTEL;
uint32_t maxConcurrencyINTEL;
uint32_t pipelineEnableINTEL;
uint32_t bufferLocationINTEL;
uint32_t iOPipeStorageINTEL;
uint32_t initiationIntervalALTERA;
uint32_t maxConcurrencyALTERA;
uint32_t pipelineEnableALTERA;
uint32_t bufferLocationALTERA;
uint32_t iOPipeStorageALTERA;
FunctionFloatingPointModeINTELParams functionFloatingPointModeINTEL;
float fPMaxErrorDecorationINTEL;
uint32_t latencyControlLabelINTEL;
LatencyControlConstraintINTELParams latencyControlConstraintINTEL;
uint32_t mMHostInterfaceAddressWidthINTEL;
uint32_t mMHostInterfaceDataWidthINTEL;
uint32_t mMHostInterfaceLatencyINTEL;
AccessQualifier mMHostInterfaceReadWriteModeINTEL;
uint32_t mMHostInterfaceMaxBurstINTEL;
uint32_t mMHostInterfaceWaitRequestINTEL;
InitializationModeQualifier initModeINTEL;
uint32_t implementInRegisterMapINTEL;
uint32_t latencyControlLabelALTERA;
LatencyControlConstraintALTERAParams latencyControlConstraintALTERA;
uint32_t mMHostInterfaceAddressWidthALTERA;
uint32_t mMHostInterfaceDataWidthALTERA;
uint32_t mMHostInterfaceLatencyALTERA;
AccessQualifier mMHostInterfaceReadWriteModeALTERA;
uint32_t mMHostInterfaceMaxBurstALTERA;
uint32_t mMHostInterfaceWaitRequestALTERA;
InitializationModeQualifier initModeALTERA;
uint32_t implementInRegisterMapALTERA;
Id conditionalINTEL;
CacheControlLoadINTELParams cacheControlLoadINTEL;
CacheControlStoreINTELParams cacheControlStoreINTEL;
};
@@ -2351,6 +2352,13 @@ enum class Op : uint16_t
TensorReadARM = 4164,
TensorWriteARM = 4165,
TensorQuerySizeARM = 4166,
GraphConstantARM = 4181,
GraphEntryPointARM = 4182,
GraphARM = 4183,
GraphInputARM = 4184,
GraphSetOutputARM = 4185,
GraphEndARM = 4186,
TypeGraphARM = 4190,
TerminateInvocation = 4416,
TypeUntypedPointerKHR = 4417,
UntypedVariableKHR = 4418,
@@ -2362,12 +2370,14 @@ enum class Op : uint16_t
UntypedInBoundsPtrAccessChainKHR = 4424,
UntypedArrayLengthKHR = 4425,
UntypedPrefetchKHR = 4426,
FmaKHR = 4427,
SubgroupAllKHR = 4428,
SubgroupAnyKHR = 4429,
SubgroupAllEqualKHR = 4430,
GroupNonUniformRotateKHR = 4431,
SubgroupReadInvocationKHR = 4432,
ExtInstWithForwardRefsKHR = 4433,
UntypedGroupAsyncCopyKHR = 4434,
TraceRayKHR = 4445,
ExecuteCallableKHR = 4446,
ConvertUToAccelerationStructureKHR = 4447,
@@ -2398,10 +2408,14 @@ enum class Op : uint16_t
ImageBoxFilterQCOM = 4481,
ImageBlockMatchSSDQCOM = 4482,
ImageBlockMatchSADQCOM = 4483,
BitCastArrayQCOM = 4497,
ImageBlockMatchWindowSSDQCOM = 4500,
ImageBlockMatchWindowSADQCOM = 4501,
ImageBlockMatchGatherSSDQCOM = 4502,
ImageBlockMatchGatherSADQCOM = 4503,
CompositeConstructCoopMatQCOM = 4540,
CompositeExtractCoopMatQCOM = 4541,
ExtractSubArrayQCOM = 4542,
GroupIAddNonUniformAMD = 5000,
GroupFAddNonUniformAMD = 5001,
GroupFMinNonUniformAMD = 5002,
@@ -2480,7 +2494,7 @@ enum class Op : uint16_t
RayQueryGetIntersectionTriangleVertexPositionsKHR = 5340,
TypeAccelerationStructureKHR = 5341,
ExecuteCallableNV = 5344,
RayQueryGetClusterIdNV = 5345,
RayQueryGetIntersectionClusterIdNV = 5345,
HitObjectGetClusterIdNV = 5346,
TypeCooperativeMatrixNV = 5358,
CooperativeMatrixLoadNV = 5359,
@@ -2559,10 +2573,10 @@ enum class Op : uint16_t
ExpectKHR = 5631,
DecorateString = 5632,
MemberDecorateString = 5633,
VariableLengthArrayINTEL = 5818,
SaveMemoryINTEL = 5819,
RestoreMemoryINTEL = 5820,
LoopControlINTEL = 5887,
ReadPipeBlockingINTEL = 5946,
WritePipeBlockingINTEL = 5947,
FPGARegINTEL = 5949,
RayQueryGetRayTMinKHR = 6016,
RayQueryGetRayFlagsKHR = 6017,
RayQueryGetIntersectionTKHR = 6018,
@@ -2591,11 +2605,6 @@ enum class Op : uint16_t
ControlBarrierArriveINTEL = 6142,
ControlBarrierWaitINTEL = 6143,
ArithmeticFenceEXT = 6145,
TaskSequenceCreateINTEL = 6163,
TaskSequenceAsyncINTEL = 6164,
TaskSequenceGetINTEL = 6165,
TaskSequenceReleaseINTEL = 6166,
TypeTaskSequenceINTEL = 6199,
SubgroupBlockPrefetchINTEL = 6221,
Subgroup2DBlockLoadINTEL = 6231,
Subgroup2DBlockLoadTransformINTEL = 6232,
@@ -2604,6 +2613,14 @@ enum class Op : uint16_t
Subgroup2DBlockStoreINTEL = 6235,
SubgroupMatrixMultiplyAccumulateINTEL = 6237,
BitwiseFunctionINTEL = 6242,
UntypedVariableLengthArrayINTEL = 6244,
ConditionalExtensionINTEL = 6248,
ConditionalEntryPointINTEL = 6249,
ConditionalCapabilityINTEL = 6250,
SpecConstantTargetINTEL = 6251,
SpecConstantArchitectureINTEL = 6252,
SpecConstantCapabilitiesINTEL = 6253,
ConditionalCopyObjectINTEL = 6254,
GroupIMulKHR = 6401,
GroupFMulKHR = 6402,
GroupBitwiseAndKHR = 6403,
@@ -2615,6 +2632,9 @@ enum class Op : uint16_t
RoundFToTF32INTEL = 6426,
MaskedGatherINTEL = 6428,
MaskedScatterINTEL = 6429,
ConvertHandleToImageINTEL = 6529,
ConvertHandleToSamplerINTEL = 6530,
ConvertHandleToSampledImageINTEL = 6531,
Max,
};
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,209 @@
# SPIRV-Registry
SPIR-V is a binary intermediate language for representing graphical-shader stages and compute kernels for multiple Khronos APIs, including OpenCL, OpenGL, and Vulkan.
[A complete registry of all official SPIR-V specifications is available at the
Khronos SPIR-V Registry](https://www.khronos.org/registry/spir-v/).
## This Project Contains
- A registry of SPIR-V extensions
- Issue tracking for all SPIR-V specifications
- Pull requests to add new SPIR-V extensions
## Publishing new extension
To publish a new extension, please create a pull request which includes:
- The extension document in the asciidoc format named following
the `SPV_<vendor>_<name>.asciidoc` pattern. The document should be placed
in the `extension/<vendor>` folder.
- README.md update with the link to the new extension once published
To publish a non-semantic extended instruction set,
- The instruction set in the asciidoc format named following
the `NonSemantic.<name>.asciidoc` pattern. The document should be placed
in the `nonsemantic` folder.
- README.md update with the link to the new extension once published
Please see [BUILD.md](BUILD.md) for instructions to create an HTML specification for this repo.
Note: we no longer push the HTML along side the extension.
## Extension Specifications
### KHR Extensions (Khronos)
* [SPV_KHR_16bit_storage ]( https://github.khronos.org/SPIRV-Registry/extensions/KHR/SPV_KHR_16bit_storage.html)
* [SPV_KHR_8bit_storage ]( https://github.khronos.org/SPIRV-Registry/extensions/KHR/SPV_KHR_8bit_storage.html)
* [SPV_KHR_bfloat16 ]( https://github.khronos.org/SPIRV-Registry/extensions/KHR/SPV_KHR_bfloat16.html)
* [SPV_KHR_bit_instructions ]( https://github.khronos.org/SPIRV-Registry/extensions/KHR/SPV_KHR_bit_instructions.html)
* [SPV_KHR_compute_shader_derivatives ]( https://github.khronos.org/SPIRV-Registry/extensions/KHR/SPV_KHR_compute_shader_derivatives.html)
* [SPV_KHR_cooperative_matrix ]( https://github.khronos.org/SPIRV-Registry/extensions/KHR/SPV_KHR_cooperative_matrix.html)
* [SPV_KHR_device_group ]( https://github.khronos.org/SPIRV-Registry/extensions/KHR/SPV_KHR_device_group.html)
* [SPV_KHR_expect_assume ]( https://github.khronos.org/SPIRV-Registry/extensions/KHR/SPV_KHR_expect_assume.html)
* [SPV_KHR_float_controls ]( https://github.khronos.org/SPIRV-Registry/extensions/KHR/SPV_KHR_float_controls.html)
* [SPV_KHR_float_controls2 ]( https://github.khronos.org/SPIRV-Registry/extensions/KHR/SPV_KHR_float_controls2.html)
* [SPV_KHR_fma ]( https://github.khronos.org/SPIRV-Registry/extensions/KHR/SPV_KHR_fma.html)
* [SPV_KHR_fragment_shader_barycentric ]( https://github.khronos.org/SPIRV-Registry/extensions/KHR/SPV_KHR_fragment_shader_barycentric.html)
* [SPV_KHR_fragment_shading_rate ]( https://github.khronos.org/SPIRV-Registry/extensions/KHR/SPV_KHR_fragment_shading_rate.html)
* [SPV_KHR_integer_dot_product ]( https://github.khronos.org/SPIRV-Registry/extensions/KHR/SPV_KHR_integer_dot_product.html)
* [SPV_KHR_linkonce_odr ]( https://github.khronos.org/SPIRV-Registry/extensions/KHR/SPV_KHR_linkonce_odr.html)
* [SPV_KHR_maximal_reconvergence ]( https://github.khronos.org/SPIRV-Registry/extensions/KHR/SPV_KHR_maximal_reconvergence.html)
* [SPV_KHR_multiview ]( https://github.khronos.org/SPIRV-Registry/extensions/KHR/SPV_KHR_multiview.html)
* [SPV_KHR_no_integer_wrap_decoration ]( https://github.khronos.org/SPIRV-Registry/extensions/KHR/SPV_KHR_no_integer_wrap_decoration.html)
* [SPV_KHR_non_semantic_info ]( https://github.khronos.org/SPIRV-Registry/extensions/KHR/SPV_KHR_non_semantic_info.html)
* [SPV_KHR_physical_storage_buffer ]( https://github.khronos.org/SPIRV-Registry/extensions/KHR/SPV_KHR_physical_storage_buffer.html)
* [SPV_KHR_post_depth_coverage ]( https://github.khronos.org/SPIRV-Registry/extensions/KHR/SPV_KHR_post_depth_coverage.html)
* [SPV_KHR_quad_control ]( https://github.khronos.org/SPIRV-Registry/extensions/KHR/SPV_KHR_quad_control.html)
* [SPV_KHR_ray_cull_mask ]( https://github.khronos.org/SPIRV-Registry/extensions/KHR/SPV_KHR_ray_cull_mask.html)
* [SPV_KHR_ray_query ]( https://github.khronos.org/SPIRV-Registry/extensions/KHR/SPV_KHR_ray_query.html)
* [SPV_KHR_ray_tracing ]( https://github.khronos.org/SPIRV-Registry/extensions/KHR/SPV_KHR_ray_tracing.html)
* [SPV_KHR_ray_tracing_position_fetch ]( https://github.khronos.org/SPIRV-Registry/extensions/KHR/SPV_KHR_ray_tracing_position_fetch.html)
* [SPV_KHR_relaxed_extended_instruction ]( https://github.khronos.org/SPIRV-Registry/extensions/KHR/SPV_KHR_relaxed_extended_instruction.html)
* [SPV_KHR_shader_atomic_counter_ops ]( https://github.khronos.org/SPIRV-Registry/extensions/KHR/SPV_KHR_shader_atomic_counter_ops.html)
* [SPV_KHR_shader_ballot ]( https://github.khronos.org/SPIRV-Registry/extensions/KHR/SPV_KHR_shader_ballot.html)
* [SPV_KHR_shader_clock ]( https://github.khronos.org/SPIRV-Registry/extensions/KHR/SPV_KHR_shader_clock.html)
* [SPV_KHR_shader_draw_parameters ]( https://github.khronos.org/SPIRV-Registry/extensions/KHR/SPV_KHR_shader_draw_parameters.html)
* [SPV_KHR_storage_buffer_storage_class ]( https://github.khronos.org/SPIRV-Registry/extensions/KHR/SPV_KHR_storage_buffer_storage_class.html)
* [SPV_KHR_subgroup_rotate ]( https://github.khronos.org/SPIRV-Registry/extensions/KHR/SPV_KHR_subgroup_rotate.html)
* [SPV_KHR_subgroup_uniform_control_flow ]( https://github.khronos.org/SPIRV-Registry/extensions/KHR/SPV_KHR_subgroup_uniform_control_flow.html)
* [SPV_KHR_subgroup_vote ]( https://github.khronos.org/SPIRV-Registry/extensions/KHR/SPV_KHR_subgroup_vote.html)
* [SPV_KHR_terminate_invocation ]( https://github.khronos.org/SPIRV-Registry/extensions/KHR/SPV_KHR_terminate_invocation.html)
* [SPV_KHR_uniform_group_instructions ]( https://github.khronos.org/SPIRV-Registry/extensions/KHR/SPV_KHR_uniform_group_instructions.html)
* [SPV_KHR_untyped_pointers ]( https://github.khronos.org/SPIRV-Registry/extensions/KHR/SPV_KHR_untyped_pointers.html)
* [SPV_KHR_variable_pointers ]( https://github.khronos.org/SPIRV-Registry/extensions/KHR/SPV_KHR_variable_pointers.html)
* [SPV_KHR_vulkan_memory_model ]( https://github.khronos.org/SPIRV-Registry/extensions/KHR/SPV_KHR_vulkan_memory_model.html)
* [SPV_KHR_workgroup_memory_explicit_layout]( https://github.khronos.org/SPIRV-Registry/extensions/KHR/SPV_KHR_workgroup_memory_explicit_layout.html)
### EXT Extensions (Multivendor)
* [SPV_EXT_arithmetic_fence ]( https://github.khronos.org/SPIRV-Registry/extensions/EXT/SPV_EXT_arithmetic_fence.html)
* [SPV_EXT_demote_to_helper_invocation ]( https://github.khronos.org/SPIRV-Registry/extensions/EXT/SPV_EXT_demote_to_helper_invocation.html)
* [SPV_EXT_descriptor_indexing ]( https://github.khronos.org/SPIRV-Registry/extensions/EXT/SPV_EXT_descriptor_indexing.html)
* [SPV_EXT_float8 ]( https://github.khronos.org/SPIRV-Registry/extensions/EXT/SPV_EXT_float8.html)
* [SPV_EXT_fragment_fully_covered ]( https://github.khronos.org/SPIRV-Registry/extensions/EXT/SPV_EXT_fragment_fully_covered.html)
* [SPV_EXT_fragment_invocation_density ]( https://github.khronos.org/SPIRV-Registry/extensions/EXT/SPV_EXT_fragment_invocation_density.html)
* [SPV_EXT_fragment_shader_interlock ]( https://github.khronos.org/SPIRV-Registry/extensions/EXT/SPV_EXT_fragment_shader_interlock.html)
* [SPV_EXT_image_raw10_raw12 ]( https://github.khronos.org/SPIRV-Registry/extensions/EXT/SPV_EXT_image_raw10_raw12.html)
* [SPV_EXT_mesh_shader ]( https://github.khronos.org/SPIRV-Registry/extensions/EXT/SPV_EXT_mesh_shader.html)
* [SPV_EXT_opacity_micromap ]( https://github.khronos.org/SPIRV-Registry/extensions/EXT/SPV_EXT_opacity_micromap.html)
* [SPV_EXT_optnone ]( https://github.khronos.org/SPIRV-Registry/extensions/EXT/SPV_EXT_optnone.html)
* [SPV_EXT_physical_storage_buffer ]( https://github.khronos.org/SPIRV-Registry/extensions/EXT/SPV_EXT_physical_storage_buffer.html)
* [SPV_EXT_relaxed_printf_string_address_space]( https://github.khronos.org/SPIRV-Registry/extensions/EXT/SPV_EXT_relaxed_printf_string_address_space.html)
* [SPV_EXT_replicated_composites ]( https://github.khronos.org/SPIRV-Registry/extensions/EXT/SPV_EXT_replicated_composites.html)
* [SPV_EXT_shader_64bit_indexing ]( https://github.khronos.org/SPIRV-Registry/extensions/EXT/SPV_EXT_shader_64bit_indexing.html)
* [SPV_EXT_shader_atomic_float_add ]( https://github.khronos.org/SPIRV-Registry/extensions/EXT/SPV_EXT_shader_atomic_float_add.html)
* [SPV_EXT_shader_atomic_float_min_max ]( https://github.khronos.org/SPIRV-Registry/extensions/EXT/SPV_EXT_shader_atomic_float_min_max.html)
* [SPV_EXT_shader_atomic_float16_add ]( https://github.khronos.org/SPIRV-Registry/extensions/EXT/SPV_EXT_shader_atomic_float16_add.html)
* [SPV_EXT_shader_image_int64 ]( https://github.khronos.org/SPIRV-Registry/extensions/EXT/SPV_EXT_shader_image_int64.html)
* [SPV_EXT_shader_stencil_export ]( https://github.khronos.org/SPIRV-Registry/extensions/EXT/SPV_EXT_shader_stencil_export.html)
* [SPV_EXT_shader_tile_image ]( https://github.khronos.org/SPIRV-Registry/extensions/EXT/SPV_EXT_shader_tile_image.html)
* [SPV_EXT_shader_viewport_index_layer ]( https://github.khronos.org/SPIRV-Registry/extensions/EXT/SPV_EXT_shader_viewport_index_layer.html)
### Vendor Extensions
* [SPV_ALTERA_arbitrary_precision_fixed_point]( https://github.khronos.org/SPIRV-Registry/extensions/ALTERA/SPV_ALTERA_arbitrary_precision_fixed_point.html)
* [SPV_ALTERA_arbitrary_precision_floating_point]( https://github.khronos.org/SPIRV-Registry/extensions/ALTERA/SPV_ALTERA_arbitrary_precision_floating_point.html)
* [SPV_ALTERA_arbitrary_precision_integers ]( https://github.khronos.org/SPIRV-Registry/extensions/ALTERA/SPV_ALTERA_arbitrary_precision_integers.html)
* [SPV_ALTERA_blocking_pipes ]( https://github.khronos.org/SPIRV-Registry/extensions/ALTERA/SPV_ALTERA_blocking_pipes.html)
* [SPV_ALTERA_fpga_argument_interfaces ]( https://github.khronos.org/SPIRV-Registry/extensions/ALTERA/SPV_ALTERA_fpga_argument_interfaces.html)
* [SPV_ALTERA_fpga_buffer_location ]( https://github.khronos.org/SPIRV-Registry/extensions/ALTERA/SPV_ALTERA_fpga_buffer_location.html)
* [SPV_ALTERA_fpga_cluster_attributes ]( https://github.khronos.org/SPIRV-Registry/extensions/ALTERA/SPV_ALTERA_fpga_cluster_attributes.html)
* [SPV_ALTERA_fpga_dsp_control ]( https://github.khronos.org/SPIRV-Registry/extensions/ALTERA/SPV_ALTERA_fpga_dsp_control.html)
* [SPV_ALTERA_fpga_invocation_pipelining_attributes]( https://github.khronos.org/SPIRV-Registry/extensions/ALTERA/SPV_ALTERA_fpga_invocation_pipelining_attributes.html)
* [SPV_ALTERA_fpga_latency_control ]( https://github.khronos.org/SPIRV-Registry/extensions/ALTERA/SPV_ALTERA_fpga_latency_control.html)
* [SPV_ALTERA_fpga_loop_controls ]( https://github.khronos.org/SPIRV-Registry/extensions/ALTERA/SPV_ALTERA_fpga_loop_controls.html)
* [SPV_ALTERA_fpga_memory_accesses ]( https://github.khronos.org/SPIRV-Registry/extensions/ALTERA/SPV_ALTERA_fpga_memory_accesses.html)
* [SPV_ALTERA_fpga_memory_attributes ]( https://github.khronos.org/SPIRV-Registry/extensions/ALTERA/SPV_ALTERA_fpga_memory_attributes.html)
* [SPV_ALTERA_fpga_reg ]( https://github.khronos.org/SPIRV-Registry/extensions/ALTERA/SPV_ALTERA_fpga_reg.html)
* [SPV_ALTERA_global_variable_fpga_decorations]( https://github.khronos.org/SPIRV-Registry/extensions/ALTERA/SPV_ALTERA_global_variable_fpga_decorations.html)
* [SPV_ALTERA_io_pipes ]( https://github.khronos.org/SPIRV-Registry/extensions/ALTERA/SPV_ALTERA_io_pipes.html)
* [SPV_ALTERA_loop_fuse ]( https://github.khronos.org/SPIRV-Registry/extensions/ALTERA/SPV_ALTERA_loop_fuse.html)
* [SPV_ALTERA_runtime_aligned ]( https://github.khronos.org/SPIRV-Registry/extensions/ALTERA/SPV_ALTERA_runtime_aligned.html)
* [SPV_ALTERA_task_sequence ]( https://github.khronos.org/SPIRV-Registry/extensions/ALTERA/SPV_ALTERA_task_sequence.html)
* [SPV_ALTERA_usm_storage_classes ]( https://github.khronos.org/SPIRV-Registry/extensions/ALTERA/SPV_ALTERA_usm_storage_classes.html)
* [SPV_AMD_gcn_shader ]( https://github.khronos.org/SPIRV-Registry/extensions/AMD/SPV_AMD_gcn_shader.html)
* [SPV_AMD_gpu_shader_half_float ]( https://github.khronos.org/SPIRV-Registry/extensions/AMD/SPV_AMD_gpu_shader_half_float.html)
* [SPV_AMD_gpu_shader_half_float_fetch ]( https://github.khronos.org/SPIRV-Registry/extensions/AMD/SPV_AMD_gpu_shader_half_float_fetch.html)
* [SPV_AMD_gpu_shader_int16 ]( https://github.khronos.org/SPIRV-Registry/extensions/AMD/SPV_AMD_gpu_shader_int16.html)
* [SPV_AMD_shader_ballot ]( https://github.khronos.org/SPIRV-Registry/extensions/AMD/SPV_AMD_shader_ballot.html)
* [SPV_AMD_shader_early_and_late_fragment_tests]( https://github.khronos.org/SPIRV-Registry/extensions/AMD/SPV_AMD_shader_early_and_late_fragment_tests.html)
* [SPV_AMD_shader_explicit_vertex_parameter]( https://github.khronos.org/SPIRV-Registry/extensions/AMD/SPV_AMD_shader_explicit_vertex_parameter.html)
* [SPV_AMD_shader_fragment_mask ]( https://github.khronos.org/SPIRV-Registry/extensions/AMD/SPV_AMD_shader_fragment_mask.html)
* [SPV_AMD_shader_image_load_store_lod ]( https://github.khronos.org/SPIRV-Registry/extensions/AMD/SPV_AMD_shader_image_load_store_lod.html)
* [SPV_AMD_shader_trinary_minmax ]( https://github.khronos.org/SPIRV-Registry/extensions/AMD/SPV_AMD_shader_trinary_minmax.html)
* [SPV_AMD_texture_gather_bias_lod ]( https://github.khronos.org/SPIRV-Registry/extensions/AMD/SPV_AMD_texture_gather_bias_lod.html)
* [SPV_AMDX_shader_enqueue ]( https://github.khronos.org/SPIRV-Registry/extensions/AMD/SPV_AMDX_shader_enqueue.html)
* [SPV_ARM_cooperative_matrix_layouts ]( https://github.khronos.org/SPIRV-Registry/extensions/ARM/SPV_ARM_cooperative_matrix_layouts.html)
* [SPV_ARM_core_builtins ]( https://github.khronos.org/SPIRV-Registry/extensions/ARM/SPV_ARM_core_builtins.html)
* [SPV_ARM_graph ]( https://github.khronos.org/SPIRV-Registry/extensions/ARM/SPV_ARM_graph.html)
* [SPV_ARM_tensors ]( https://github.khronos.org/SPIRV-Registry/extensions/ARM/SPV_ARM_tensors.html)
* [SPV_GOOGLE_decorate_string ]( https://github.khronos.org/SPIRV-Registry/extensions/GOOGLE/SPV_GOOGLE_decorate_string.html)
* [SPV_GOOGLE_hlsl_functionality1 ]( https://github.khronos.org/SPIRV-Registry/extensions/GOOGLE/SPV_GOOGLE_hlsl_functionality1.html)
* [SPV_GOOGLE_user_type ]( https://github.khronos.org/SPIRV-Registry/extensions/GOOGLE/SPV_GOOGLE_user_type.html)
* [SPV_HUAWEI_cluster_culling_shader ]( https://github.khronos.org/SPIRV-Registry/extensions/HUAWEI/SPV_HUAWEI_cluster_culling_shader.html)
* [SPV_HUAWEI_subpass_shading ]( https://github.khronos.org/SPIRV-Registry/extensions/HUAWEI/SPV_HUAWEI_subpass_shading.html)
* [SPV_INTEL_2d_block_io ]( https://github.khronos.org/SPIRV-Registry/extensions/INTEL/SPV_INTEL_2d_block_io.html)
* [SPV_INTEL_bfloat16_conversion ]( https://github.khronos.org/SPIRV-Registry/extensions/INTEL/SPV_INTEL_bfloat16_conversion.html)
* [SPV_INTEL_cache_controls ]( https://github.khronos.org/SPIRV-Registry/extensions/INTEL/SPV_INTEL_cache_controls.html)
* [SPV_INTEL_device_side_avc_motion_estimation]( https://github.khronos.org/SPIRV-Registry/extensions/INTEL/SPV_INTEL_device_side_avc_motion_estimation.html)
* [SPV_INTEL_fp_fast_math_mode ]( https://github.khronos.org/SPIRV-Registry/extensions/INTEL/SPV_INTEL_fp_fast_math_mode.html)
* [SPV_INTEL_fp_max_error ]( https://github.khronos.org/SPIRV-Registry/extensions/INTEL/SPV_INTEL_fp_max_error.html)
* [SPV_INTEL_global_variable_host_access ]( https://github.khronos.org/SPIRV-Registry/extensions/INTEL/SPV_INTEL_global_variable_host_access.html)
* [SPV_INTEL_int4 ]( https://github.khronos.org/SPIRV-Registry/extensions/INTEL/SPV_INTEL_int4.html)
* [SPV_INTEL_kernel_attributes ]( https://github.khronos.org/SPIRV-Registry/extensions/INTEL/SPV_INTEL_kernel_attributes.html)
* [SPV_INTEL_long_composites ]( https://github.khronos.org/SPIRV-Registry/extensions/INTEL/SPV_INTEL_long_composites.html)
* [SPV_INTEL_masked_gather_scatter ]( https://github.khronos.org/SPIRV-Registry/extensions/INTEL/SPV_INTEL_masked_gather_scatter.html)
* [SPV_INTEL_maximum_registers ]( https://github.khronos.org/SPIRV-Registry/extensions/INTEL/SPV_INTEL_maximum_registers.html)
* [SPV_INTEL_media_block_io ]( https://github.khronos.org/SPIRV-Registry/extensions/INTEL/SPV_INTEL_media_block_io.html)
* [SPV_INTEL_shader_integer_functions2 ]( https://github.khronos.org/SPIRV-Registry/extensions/INTEL/SPV_INTEL_shader_integer_functions2.html)
* [SPV_INTEL_split_barrier ]( https://github.khronos.org/SPIRV-Registry/extensions/INTEL/SPV_INTEL_split_barrier.html)
* [SPV_INTEL_subgroups ]( https://github.khronos.org/SPIRV-Registry/extensions/INTEL/SPV_INTEL_subgroups.html)
* [SPV_INTEL_subgroup_buffer_prefetch ]( https://github.khronos.org/SPIRV-Registry/extensions/INTEL/SPV_INTEL_subgroup_buffer_prefetch.html)
* [SPV_INTEL_subgroup_matrix_multiply_accumulate]( https://github.khronos.org/SPIRV-Registry/extensions/INTEL/SPV_INTEL_subgroup_matrix_multiply_accumulate.html)
* [SPV_INTEL_tensor_float32_conversion ]( https://github.khronos.org/SPIRV-Registry/extensions/INTEL/SPV_INTEL_tensor_float32_conversion.html)
* [SPV_INTEL_ternary_bitwise_function ]( https://github.khronos.org/SPIRV-Registry/extensions/INTEL/SPV_INTEL_ternary_bitwise_function.html)
* [SPV_INTEL_unstructured_loop_controls ]( https://github.khronos.org/SPIRV-Registry/extensions/INTEL/SPV_INTEL_unstructured_loop_controls.html)
* [SPV_INTEL_variable_length_array ]( https://github.khronos.org/SPIRV-Registry/extensions/INTEL/SPV_INTEL_variable_length_array.html)
* [SPV_NV_bindless_texture ]( https://github.khronos.org/SPIRV-Registry/extensions/NV/SPV_NV_bindless_texture.html)
* [SPV_NV_cluster_acceleration_structure ]( https://github.khronos.org/SPIRV-Registry/extensions/NV/SPV_NV_cluster_acceleration_structure.html)
* [SPV_NV_compute_shader_derivatives ]( https://github.khronos.org/SPIRV-Registry/extensions/NV/SPV_NV_compute_shader_derivatives.html)
* [SPV_NV_cooperative_matrix ]( https://github.khronos.org/SPIRV-Registry/extensions/NV/SPV_NV_cooperative_matrix.html)
* [SPV_NV_cooperative_matrix2 ]( https://github.khronos.org/SPIRV-Registry/extensions/NV/SPV_NV_cooperative_matrix2.html)
* [SPV_NV_cooperative_vector ]( https://github.khronos.org/SPIRV-Registry/extensions/NV/SPV_NV_cooperative_vector.html)
* [SPV_NV_displacement_micromap ]( https://github.khronos.org/SPIRV-Registry/extensions/NV/SPV_NV_displacement_micromap.html)
* [SPV_NV_fragment_shader_barycentric ]( https://github.khronos.org/SPIRV-Registry/extensions/NV/SPV_NV_fragment_shader_barycentric.html)
* [SPV_NV_geometry_shader_passthrough ]( https://github.khronos.org/SPIRV-Registry/extensions/NV/SPV_NV_geometry_shader_passthrough.html)
* [SPV_NV_linear_swept_spheres ]( https://github.khronos.org/SPIRV-Registry/extensions/NV/SPV_NV_linear_swept_spheres.html)
* [SPV_NV_mesh_shader ]( https://github.khronos.org/SPIRV-Registry/extensions/NV/SPV_NV_mesh_shader.html)
* [SPV_NV_raw_access_chains ]( https://github.khronos.org/SPIRV-Registry/extensions/NV/SPV_NV_raw_access_chains.html)
* [SPV_NV_ray_tracing ]( https://github.khronos.org/SPIRV-Registry/extensions/NV/SPV_NV_ray_tracing.html)
* [SPV_NV_ray_tracing_motion_blur ]( https://github.khronos.org/SPIRV-Registry/extensions/NV/SPV_NV_ray_tracing_motion_blur.html)
* [SPV_NV_sample_mask_override_coverage ]( https://github.khronos.org/SPIRV-Registry/extensions/NV/SPV_NV_sample_mask_override_coverage.html)
* [SPV_NV_shader_atomic_fp16_vector ]( https://github.khronos.org/SPIRV-Registry/extensions/NV/SPV_NV_shader_atomic_fp16_vector.html)
* [SPV_NV_shader_image_footprint ]( https://github.khronos.org/SPIRV-Registry/extensions/NV/SPV_NV_shader_image_footprint.html)
* [SPV_NV_shader_invocation_reorder ]( https://github.khronos.org/SPIRV-Registry/extensions/NV/SPV_NV_shader_invocation_reorder.html)
* [SPV_NV_shader_sm_builtins ]( https://github.khronos.org/SPIRV-Registry/extensions/NV/SPV_NV_shader_sm_builtins.html)
* [SPV_NV_shader_subgroup_partitioned ]( https://github.khronos.org/SPIRV-Registry/extensions/NV/SPV_NV_shader_subgroup_partitioned.html)
* [SPV_NV_shading_rate ]( https://github.khronos.org/SPIRV-Registry/extensions/NV/SPV_NV_shading_rate.html)
* [SPV_NV_stereo_view_rendering ]( https://github.khronos.org/SPIRV-Registry/extensions/NV/SPV_NV_stereo_view_rendering.html)
* [SPV_NV_tensor_addressing ]( https://github.khronos.org/SPIRV-Registry/extensions/NV/SPV_NV_tensor_addressing.html)
* [SPV_NV_viewport_array2 ]( https://github.khronos.org/SPIRV-Registry/extensions/NV/SPV_NV_viewport_array2.html)
* [SPV_NVX_multiview_per_view_attributes ]( https://github.khronos.org/SPIRV-Registry/extensions/NV/SPV_NVX_multiview_per_view_attributes.html)
* [SPV_QCOM_cooperative_matrix_conversion ]( https://github.khronos.org/SPIRV-Registry/extensions/QCOM/SPV_QCOM_cooperative_matrix_conversion.html)
* [SPV_QCOM_image_processing ]( https://github.khronos.org/SPIRV-Registry/extensions/QCOM/SPV_QCOM_image_processing.html)
* [SPV_QCOM_image_processing2 ]( https://github.khronos.org/SPIRV-Registry/extensions/QCOM/SPV_QCOM_image_processing2.html)
* [SPV_QCOM_tile_shading ]( https://github.khronos.org/SPIRV-Registry/extensions/QCOM/SPV_QCOM_tile_shading.html)
## Non-Semantic Extended Instruction Set Specifications
* [NonSemantic.ClspvReflection ]( https://github.khronos.org/SPIRV-Registry/nonsemantic/NonSemantic.ClspvReflection.html)
* [NonSemantic.DebugBreak ]( https://github.khronos.org/SPIRV-Registry/nonsemantic/NonSemantic.DebugBreak.html)
* [NonSemantic.DebugPrintf ]( https://github.khronos.org/SPIRV-Registry/nonsemantic/NonSemantic.DebugPrintf.html)
* [NonSemantic.Shader.DebugInfo.100 ]( https://github.khronos.org/SPIRV-Registry/nonsemantic/NonSemantic.Shader.DebugInfo.100.html)
## Extended Instruction Set Specifications
* [TOSA.001000.1 ]( https://github.khronos.org/SPIRV-Registry/extended/TOSA.001000.1.html)