summaryrefslogtreecommitdiff
path: root/source/slang/slang-lookup-spvcapability.cpp
diff options
context:
space:
mode:
authorYong He <yonghe@outlook.com>2023-08-25 08:49:02 -0700
committerGitHub <noreply@github.com>2023-08-25 23:49:02 +0800
commit036abc85ba1db9c8c06289f0a0492e9a95a228b9 (patch)
treee497168c36e95190a6d8b4dae9f483f27e5aa2cd /source/slang/slang-lookup-spvcapability.cpp
parent0470ea05a42d6c3f35d81a433fefdd440500cdbd (diff)
Support SPIRV Capability declaration on intrinsic functions. (#3150)
* Spirv Capability lookup. * Fix. --------- Co-authored-by: Yong He <yhe@nvidia.com>
Diffstat (limited to 'source/slang/slang-lookup-spvcapability.cpp')
-rw-r--r--source/slang/slang-lookup-spvcapability.cpp303
1 files changed, 303 insertions, 0 deletions
diff --git a/source/slang/slang-lookup-spvcapability.cpp b/source/slang/slang-lookup-spvcapability.cpp
new file mode 100644
index 000000000..5e7e18037
--- /dev/null
+++ b/source/slang/slang-lookup-spvcapability.cpp
@@ -0,0 +1,303 @@
+// Hash function for SpvCapability
+//
+// This file was thoughtfully generated by a machine,
+// don't even think about modifying it yourself!
+//
+
+#include "../core/slang-common.h"
+#include "../core/slang-string.h"
+#include "spirv/unified1/spirv.h"
+
+
+namespace Slang
+{
+
+static const unsigned tableSalt[238] ={
+ 4, 1, 0, 0, 0, 5, 1, 1, 1, 1, 0, 3, 4, 1, 0, 0,
+ 1, 6, 0, 1, 4, 0, 0, 1, 5, 0, 0, 1, 2, 0, 2, 2,
+ 0, 0, 0, 2, 3, 3, 7, 3, 0, 4, 0, 4, 5, 3, 1, 2,
+ 0, 6, 1, 4, 2, 1, 0, 1, 7, 3, 0, 0, 0, 1, 2, 2,
+ 0, 4, 1, 1, 5, 2, 0, 0, 1, 6, 4, 1, 0, 5, 1, 0,
+ 7, 1, 1, 2, 2, 1, 1, 0, 4, 0, 0, 2, 0, 4, 10, 0,
+ 0, 0, 1, 0, 4, 3, 1, 0, 0, 1, 4, 6, 2, 5, 1, 1,
+ 0, 3, 1, 4, 3, 1, 0, 2, 1, 0, 0, 0, 1, 1, 3, 3,
+ 9, 0, 0, 0, 0, 2, 5, 0, 0, 8, 0, 12, 0, 0, 0, 5,
+ 5, 4, 2, 1, 6, 1, 0, 0, 20, 3, 7, 1, 13, 0, 4, 14,
+ 5, 2, 0, 5, 0, 8, 3, 0, 1, 2, 1, 0, 3, 0, 18, 5,
+ 8, 0, 10, 0, 14, 0, 3, 0, 0, 0, 13, 0, 0, 2, 24, 6,
+ 4, 0, 3, 0, 1, 0, 0, 7, 4, 0, 0, 5, 2, 0, 35, 6,
+ 0, 0, 2, 5, 6, 34, 32, 29, 0, 10, 7, 0, 90, 0, 3, 36,
+ 73, 39, 193, 0, 1, 1, 0, 83, 8, 0, 0, 712, 2, 0
+};
+
+struct KV
+{
+ const char* name;
+ SpvCapability value;
+};
+
+static const KV words[238] =
+{
+ {"ShaderViewportIndex", SpvCapabilityShaderViewportIndex},
+ {"FragmentBarycentricNV", SpvCapabilityFragmentBarycentricNV},
+ {"StorageImageWriteWithoutFormat", SpvCapabilityStorageImageWriteWithoutFormat},
+ {"RayTracingMotionBlurNV", SpvCapabilityRayTracingMotionBlurNV},
+ {"StorageImageArrayNonUniformIndexingEXT", SpvCapabilityStorageImageArrayNonUniformIndexingEXT},
+ {"UnstructuredLoopControlsINTEL", SpvCapabilityUnstructuredLoopControlsINTEL},
+ {"BlockingPipesINTEL", SpvCapabilityBlockingPipesINTEL},
+ {"Image1D", SpvCapabilityImage1D},
+ {"LiteralSampler", SpvCapabilityLiteralSampler},
+ {"SubgroupAvcMotionEstimationINTEL", SpvCapabilitySubgroupAvcMotionEstimationINTEL},
+ {"GroupNonUniformQuad", SpvCapabilityGroupNonUniformQuad},
+ {"FunctionPointersINTEL", SpvCapabilityFunctionPointersINTEL},
+ {"UniformTexelBufferArrayNonUniformIndexing", SpvCapabilityUniformTexelBufferArrayNonUniformIndexing},
+ {"RayCullMaskKHR", SpvCapabilityRayCullMaskKHR},
+ {"CoreBuiltinsARM", SpvCapabilityCoreBuiltinsARM},
+ {"USMStorageClassesINTEL", SpvCapabilityUSMStorageClassesINTEL},
+ {"ArbitraryPrecisionIntegersINTEL", SpvCapabilityArbitraryPrecisionIntegersINTEL},
+ {"IOPipesINTEL", SpvCapabilityIOPipesINTEL},
+ {"MultiView", SpvCapabilityMultiView},
+ {"RayTracingNV", SpvCapabilityRayTracingNV},
+ {"OptNoneINTEL", SpvCapabilityOptNoneINTEL},
+ {"SubgroupBufferBlockIOINTEL", SpvCapabilitySubgroupBufferBlockIOINTEL},
+ {"TessellationPointSize", SpvCapabilityTessellationPointSize},
+ {"Vector16", SpvCapabilityVector16},
+ {"RayQueryPositionFetchKHR", SpvCapabilityRayQueryPositionFetchKHR},
+ {"GenericPointer", SpvCapabilityGenericPointer},
+ {"UniformBufferArrayDynamicIndexing", SpvCapabilityUniformBufferArrayDynamicIndexing},
+ {"ImageMSArray", SpvCapabilityImageMSArray},
+ {"AtomicStorageOps", SpvCapabilityAtomicStorageOps},
+ {"DotProductInputAll", SpvCapabilityDotProductInputAll},
+ {"InputAttachmentArrayNonUniformIndexing", SpvCapabilityInputAttachmentArrayNonUniformIndexing},
+ {"AsmINTEL", SpvCapabilityAsmINTEL},
+ {"DotProductInput4x8BitPackedKHR", SpvCapabilityDotProductInput4x8BitPackedKHR},
+ {"StorageTexelBufferArrayNonUniformIndexing", SpvCapabilityStorageTexelBufferArrayNonUniformIndexing},
+ {"FPGADSPControlINTEL", SpvCapabilityFPGADSPControlINTEL},
+ {"DotProduct", SpvCapabilityDotProduct},
+ {"StorageImageMultisample", SpvCapabilityStorageImageMultisample},
+ {"StorageTexelBufferArrayDynamicIndexingEXT", SpvCapabilityStorageTexelBufferArrayDynamicIndexingEXT},
+ {"SampledImageArrayDynamicIndexing", SpvCapabilitySampledImageArrayDynamicIndexing},
+ {"VulkanMemoryModelDeviceScopeKHR", SpvCapabilityVulkanMemoryModelDeviceScopeKHR},
+ {"ShadingRateNV", SpvCapabilityShadingRateNV},
+ {"DotProductInput4x8BitKHR", SpvCapabilityDotProductInput4x8BitKHR},
+ {"ShaderNonUniformEXT", SpvCapabilityShaderNonUniformEXT},
+ {"ShaderStereoViewNV", SpvCapabilityShaderStereoViewNV},
+ {"UniformAndStorageBuffer16BitAccess", SpvCapabilityUniformAndStorageBuffer16BitAccess},
+ {"RoundingModeRTE", SpvCapabilityRoundingModeRTE},
+ {"TileImageColorReadAccessEXT", SpvCapabilityTileImageColorReadAccessEXT},
+ {"TileImageDepthReadAccessEXT", SpvCapabilityTileImageDepthReadAccessEXT},
+ {"PerViewAttributesNV", SpvCapabilityPerViewAttributesNV},
+ {"DemoteToHelperInvocationEXT", SpvCapabilityDemoteToHelperInvocationEXT},
+ {"AtomicFloat16MinMaxEXT", SpvCapabilityAtomicFloat16MinMaxEXT},
+ {"GroupNonUniformArithmetic", SpvCapabilityGroupNonUniformArithmetic},
+ {"ShaderLayer", SpvCapabilityShaderLayer},
+ {"VariableLengthArrayINTEL", SpvCapabilityVariableLengthArrayINTEL},
+ {"ImageReadWriteLodAMD", SpvCapabilityImageReadWriteLodAMD},
+ {"ImageCubeArray", SpvCapabilityImageCubeArray},
+ {"Float16Buffer", SpvCapabilityFloat16Buffer},
+ {"VulkanMemoryModelDeviceScope", SpvCapabilityVulkanMemoryModelDeviceScope},
+ {"ImageRect", SpvCapabilityImageRect},
+ {"UniformDecoration", SpvCapabilityUniformDecoration},
+ {"AtomicFloat64AddEXT", SpvCapabilityAtomicFloat64AddEXT},
+ {"VectorComputeINTEL", SpvCapabilityVectorComputeINTEL},
+ {"Float16", SpvCapabilityFloat16},
+ {"DeviceEnqueue", SpvCapabilityDeviceEnqueue},
+ {"MinLod", SpvCapabilityMinLod},
+ {"Float16ImageAMD", SpvCapabilityFloat16ImageAMD},
+ {"SubgroupImageMediaBlockIOINTEL", SpvCapabilitySubgroupImageMediaBlockIOINTEL},
+ {"SparseResidency", SpvCapabilitySparseResidency},
+ {"UniformTexelBufferArrayDynamicIndexing", SpvCapabilityUniformTexelBufferArrayDynamicIndexing},
+ {"Pipes", SpvCapabilityPipes},
+ {"InputAttachment", SpvCapabilityInputAttachment},
+ {"FPGAMemoryAttributesINTEL", SpvCapabilityFPGAMemoryAttributesINTEL},
+ {"RuntimeDescriptorArrayEXT", SpvCapabilityRuntimeDescriptorArrayEXT},
+ {"GeometryPointSize", SpvCapabilityGeometryPointSize},
+ {"Shader", SpvCapabilityShader},
+ {"IntegerFunctions2INTEL", SpvCapabilityIntegerFunctions2INTEL},
+ {"StorageImageArrayDynamicIndexing", SpvCapabilityStorageImageArrayDynamicIndexing},
+ {"Int64Atomics", SpvCapabilityInt64Atomics},
+ {"ImageFootprintNV", SpvCapabilityImageFootprintNV},
+ {"IndirectReferencesINTEL", SpvCapabilityIndirectReferencesINTEL},
+ {"ShaderSMBuiltinsNV", SpvCapabilityShaderSMBuiltinsNV},
+ {"StoragePushConstant8", SpvCapabilityStoragePushConstant8},
+ {"FPGAKernelAttributesINTEL", SpvCapabilityFPGAKernelAttributesINTEL},
+ {"ImageBuffer", SpvCapabilityImageBuffer},
+ {"ImageReadWrite", SpvCapabilityImageReadWrite},
+ {"AtomicStorage", SpvCapabilityAtomicStorage},
+ {"SignedZeroInfNanPreserve", SpvCapabilitySignedZeroInfNanPreserve},
+ {"Groups", SpvCapabilityGroups},
+ {"DebugInfoModuleINTEL", SpvCapabilityDebugInfoModuleINTEL},
+ {"GroupUniformArithmeticKHR", SpvCapabilityGroupUniformArithmeticKHR},
+ {"Int16", SpvCapabilityInt16},
+ {"DenormFlushToZero", SpvCapabilityDenormFlushToZero},
+ {"TransformFeedback", SpvCapabilityTransformFeedback},
+ {"StencilExportEXT", SpvCapabilityStencilExportEXT},
+ {"InputAttachmentArrayNonUniformIndexingEXT", SpvCapabilityInputAttachmentArrayNonUniformIndexingEXT},
+ {"DotProductKHR", SpvCapabilityDotProductKHR},
+ {"FPGABufferLocationINTEL", SpvCapabilityFPGABufferLocationINTEL},
+ {"DotProductInput4x8Bit", SpvCapabilityDotProductInput4x8Bit},
+ {"ShaderInvocationReorderNV", SpvCapabilityShaderInvocationReorderNV},
+ {"ImageMipmap", SpvCapabilityImageMipmap},
+ {"FunctionFloatControlINTEL", SpvCapabilityFunctionFloatControlINTEL},
+ {"AtomicFloat16AddEXT", SpvCapabilityAtomicFloat16AddEXT},
+ {"RayQueryProvisionalKHR", SpvCapabilityRayQueryProvisionalKHR},
+ {"GroupNonUniformVote", SpvCapabilityGroupNonUniformVote},
+ {"StorageTexelBufferArrayNonUniformIndexingEXT", SpvCapabilityStorageTexelBufferArrayNonUniformIndexingEXT},
+ {"ArbitraryPrecisionFloatingPointINTEL", SpvCapabilityArbitraryPrecisionFloatingPointINTEL},
+ {"StorageInputOutput16", SpvCapabilityStorageInputOutput16},
+ {"SampledImageArrayNonUniformIndexing", SpvCapabilitySampledImageArrayNonUniformIndexing},
+ {"SubgroupVoteKHR", SpvCapabilitySubgroupVoteKHR},
+ {"Tessellation", SpvCapabilityTessellation},
+ {"Geometry", SpvCapabilityGeometry},
+ {"SubgroupAvcMotionEstimationChromaINTEL", SpvCapabilitySubgroupAvcMotionEstimationChromaINTEL},
+ {"StorageImageReadWithoutFormat", SpvCapabilityStorageImageReadWithoutFormat},
+ {"Int64", SpvCapabilityInt64},
+ {"DemoteToHelperInvocation", SpvCapabilityDemoteToHelperInvocation},
+ {"MeshShadingEXT", SpvCapabilityMeshShadingEXT},
+ {"UniformAndStorageBuffer8BitAccess", SpvCapabilityUniformAndStorageBuffer8BitAccess},
+ {"RayTracingProvisionalKHR", SpvCapabilityRayTracingProvisionalKHR},
+ {"UniformBufferArrayNonUniformIndexing", SpvCapabilityUniformBufferArrayNonUniformIndexing},
+ {"VulkanMemoryModelKHR", SpvCapabilityVulkanMemoryModelKHR},
+ {"SubgroupShuffleINTEL", SpvCapabilitySubgroupShuffleINTEL},
+ {"SubgroupDispatch", SpvCapabilitySubgroupDispatch},
+ {"MemoryAccessAliasingINTEL", SpvCapabilityMemoryAccessAliasingINTEL},
+ {"StorageBuffer16BitAccess", SpvCapabilityStorageBuffer16BitAccess},
+ {"RuntimeDescriptorArray", SpvCapabilityRuntimeDescriptorArray},
+ {"StorageImageArrayNonUniformIndexing", SpvCapabilityStorageImageArrayNonUniformIndexing},
+ {"Kernel", SpvCapabilityKernel},
+ {"BitInstructions", SpvCapabilityBitInstructions},
+ {"WorkgroupMemoryExplicitLayout8BitAccessKHR", SpvCapabilityWorkgroupMemoryExplicitLayout8BitAccessKHR},
+ {"Sampled1D", SpvCapabilitySampled1D},
+ {"StorageTexelBufferArrayDynamicIndexing", SpvCapabilityStorageTexelBufferArrayDynamicIndexing},
+ {"ImageQuery", SpvCapabilityImageQuery},
+ {"MultiViewport", SpvCapabilityMultiViewport},
+ {"UniformTexelBufferArrayDynamicIndexingEXT", SpvCapabilityUniformTexelBufferArrayDynamicIndexingEXT},
+ {"StorageUniform16", SpvCapabilityStorageUniform16},
+ {"SubgroupImageBlockIOINTEL", SpvCapabilitySubgroupImageBlockIOINTEL},
+ {"WorkgroupMemoryExplicitLayout16BitAccessKHR", SpvCapabilityWorkgroupMemoryExplicitLayout16BitAccessKHR},
+ {"KernelAttributesINTEL", SpvCapabilityKernelAttributesINTEL},
+ {"PipeStorage", SpvCapabilityPipeStorage},
+ {"ShaderViewportMaskNV", SpvCapabilityShaderViewportMaskNV},
+ {"Matrix", SpvCapabilityMatrix},
+ {"GroupNonUniformShuffleRelative", SpvCapabilityGroupNonUniformShuffleRelative},
+ {"RuntimeAlignedAttributeINTEL", SpvCapabilityRuntimeAlignedAttributeINTEL},
+ {"CullDistance", SpvCapabilityCullDistance},
+ {"Int8", SpvCapabilityInt8},
+ {"RayTraversalPrimitiveCullingKHR", SpvCapabilityRayTraversalPrimitiveCullingKHR},
+ {"SampleMaskPostDepthCoverage", SpvCapabilitySampleMaskPostDepthCoverage},
+ {"GroupNonUniformShuffle", SpvCapabilityGroupNonUniformShuffle},
+ {"ImageBasic", SpvCapabilityImageBasic},
+ {"WorkgroupMemoryExplicitLayoutKHR", SpvCapabilityWorkgroupMemoryExplicitLayoutKHR},
+ {"FPGAClusterAttributesINTEL", SpvCapabilityFPGAClusterAttributesINTEL},
+ {"PhysicalStorageBufferAddresses", SpvCapabilityPhysicalStorageBufferAddresses},
+ {"UniformTexelBufferArrayNonUniformIndexingEXT", SpvCapabilityUniformTexelBufferArrayNonUniformIndexingEXT},
+ {"StorageBufferArrayNonUniformIndexingEXT", SpvCapabilityStorageBufferArrayNonUniformIndexingEXT},
+ {"FragmentShaderSampleInterlockEXT", SpvCapabilityFragmentShaderSampleInterlockEXT},
+ {"SampledImageArrayNonUniformIndexingEXT", SpvCapabilitySampledImageArrayNonUniformIndexingEXT},
+ {"InterpolationFunction", SpvCapabilityInterpolationFunction},
+ {"AtomicFloat32AddEXT", SpvCapabilityAtomicFloat32AddEXT},
+ {"Int64ImageEXT", SpvCapabilityInt64ImageEXT},
+ {"SubgroupBallotKHR", SpvCapabilitySubgroupBallotKHR},
+ {"RoundToInfinityINTEL", SpvCapabilityRoundToInfinityINTEL},
+ {"DrawParameters", SpvCapabilityDrawParameters},
+ {"VariablePointers", SpvCapabilityVariablePointers},
+ {"FragmentShaderShadingRateInterlockEXT", SpvCapabilityFragmentShaderShadingRateInterlockEXT},
+ {"NamedBarrier", SpvCapabilityNamedBarrier},
+ {"ComputeDerivativeGroupQuadsNV", SpvCapabilityComputeDerivativeGroupQuadsNV},
+ {"SampledCubeArray", SpvCapabilitySampledCubeArray},
+ {"Addresses", SpvCapabilityAddresses},
+ {"LongConstantCompositeINTEL", SpvCapabilityLongConstantCompositeINTEL},
+ {"ArbitraryPrecisionFixedPointINTEL", SpvCapabilityArbitraryPrecisionFixedPointINTEL},
+ {"RayTracingKHR", SpvCapabilityRayTracingKHR},
+ {"RayQueryKHR", SpvCapabilityRayQueryKHR},
+ {"FragmentDensityEXT", SpvCapabilityFragmentDensityEXT},
+ {"InputAttachmentArrayDynamicIndexingEXT", SpvCapabilityInputAttachmentArrayDynamicIndexingEXT},
+ {"FPGAInvocationPipeliningAttributesINTEL", SpvCapabilityFPGAInvocationPipeliningAttributesINTEL},
+ {"ShaderViewportIndexLayerEXT", SpvCapabilityShaderViewportIndexLayerEXT},
+ {"PhysicalStorageBufferAddressesEXT", SpvCapabilityPhysicalStorageBufferAddressesEXT},
+ {"SplitBarrierINTEL", SpvCapabilitySplitBarrierINTEL},
+ {"ImageGatherExtended", SpvCapabilityImageGatherExtended},
+ {"CooperativeMatrixNV", SpvCapabilityCooperativeMatrixNV},
+ {"FloatingPointModeINTEL", SpvCapabilityFloatingPointModeINTEL},
+ {"SubgroupAvcMotionEstimationIntraINTEL", SpvCapabilitySubgroupAvcMotionEstimationIntraINTEL},
+ {"DotProductInputAllKHR", SpvCapabilityDotProductInputAllKHR},
+ {"AtomicFloat64MinMaxEXT", SpvCapabilityAtomicFloat64MinMaxEXT},
+ {"DeviceGroup", SpvCapabilityDeviceGroup},
+ {"RayTracingOpacityMicromapEXT", SpvCapabilityRayTracingOpacityMicromapEXT},
+ {"GroupNonUniform", SpvCapabilityGroupNonUniform},
+ {"BindlessTextureNV", SpvCapabilityBindlessTextureNV},
+ {"GeometryShaderPassthroughNV", SpvCapabilityGeometryShaderPassthroughNV},
+ {"FragmentFullyCoveredEXT", SpvCapabilityFragmentFullyCoveredEXT},
+ {"ShaderNonUniform", SpvCapabilityShaderNonUniform},
+ {"DotProductInput4x8BitPacked", SpvCapabilityDotProductInput4x8BitPacked},
+ {"ShaderViewportIndexLayerNV", SpvCapabilityShaderViewportIndexLayerNV},
+ {"RayTracingPositionFetchKHR", SpvCapabilityRayTracingPositionFetchKHR},
+ {"VectorAnyINTEL", SpvCapabilityVectorAnyINTEL},
+ {"FPFastMathModeINTEL", SpvCapabilityFPFastMathModeINTEL},
+ {"AtomicFloat32MinMaxEXT", SpvCapabilityAtomicFloat32MinMaxEXT},
+ {"SampleMaskOverrideCoverageNV", SpvCapabilitySampleMaskOverrideCoverageNV},
+ {"FragmentShadingRateKHR", SpvCapabilityFragmentShadingRateKHR},
+ {"GroupNonUniformPartitionedNV", SpvCapabilityGroupNonUniformPartitionedNV},
+ {"StorageBufferArrayNonUniformIndexing", SpvCapabilityStorageBufferArrayNonUniformIndexing},
+ {"ExpectAssumeKHR", SpvCapabilityExpectAssumeKHR},
+ {"FPGAMemoryAccessesINTEL", SpvCapabilityFPGAMemoryAccessesINTEL},
+ {"StorageImageExtendedFormats", SpvCapabilityStorageImageExtendedFormats},
+ {"FPGAArgumentInterfacesINTEL", SpvCapabilityFPGAArgumentInterfacesINTEL},
+ {"SampleRateShading", SpvCapabilitySampleRateShading},
+ {"VariablePointersStorageBuffer", SpvCapabilityVariablePointersStorageBuffer},
+ {"StoragePushConstant16", SpvCapabilityStoragePushConstant16},
+ {"GeometryStreams", SpvCapabilityGeometryStreams},
+ {"FPGARegINTEL", SpvCapabilityFPGARegINTEL},
+ {"LoopFuseINTEL", SpvCapabilityLoopFuseINTEL},
+ {"Linkage", SpvCapabilityLinkage},
+ {"ComputeDerivativeGroupLinearNV", SpvCapabilityComputeDerivativeGroupLinearNV},
+ {"DerivativeControl", SpvCapabilityDerivativeControl},
+ {"StorageBufferArrayDynamicIndexing", SpvCapabilityStorageBufferArrayDynamicIndexing},
+ {"SampledBuffer", SpvCapabilitySampledBuffer},
+ {"StorageBuffer8BitAccess", SpvCapabilityStorageBuffer8BitAccess},
+ {"FragmentBarycentricKHR", SpvCapabilityFragmentBarycentricKHR},
+ {"GroupNonUniformClustered", SpvCapabilityGroupNonUniformClustered},
+ {"MeshShadingNV", SpvCapabilityMeshShadingNV},
+ {"RoundingModeRTZ", SpvCapabilityRoundingModeRTZ},
+ {"StorageUniformBufferBlock16", SpvCapabilityStorageUniformBufferBlock16},
+ {"DenormPreserve", SpvCapabilityDenormPreserve},
+ {"FragmentShaderPixelInterlockEXT", SpvCapabilityFragmentShaderPixelInterlockEXT},
+ {"Max", SpvCapabilityMax},
+ {"GroupNonUniformBallot", SpvCapabilityGroupNonUniformBallot},
+ {"InputAttachmentArrayDynamicIndexing", SpvCapabilityInputAttachmentArrayDynamicIndexing},
+ {"GroupNonUniformRotateKHR", SpvCapabilityGroupNonUniformRotateKHR},
+ {"ClipDistance", SpvCapabilityClipDistance},
+ {"ShaderClockKHR", SpvCapabilityShaderClockKHR},
+ {"FragmentMaskAMD", SpvCapabilityFragmentMaskAMD},
+ {"FPGALoopControlsINTEL", SpvCapabilityFPGALoopControlsINTEL},
+ {"Float64", SpvCapabilityFloat64},
+ {"TileImageStencilReadAccessEXT", SpvCapabilityTileImageStencilReadAccessEXT},
+ {"UniformBufferArrayNonUniformIndexingEXT", SpvCapabilityUniformBufferArrayNonUniformIndexingEXT},
+ {"ImageGatherBiasLodAMD", SpvCapabilityImageGatherBiasLodAMD},
+ {"SampledRect", SpvCapabilitySampledRect},
+ {"VulkanMemoryModel", SpvCapabilityVulkanMemoryModel},
+};
+
+static UInt32 hash(const UnownedStringSlice& str, UInt32 salt)
+{
+ UInt64 h = salt;
+ for(const char c : str)
+ h = ((h * 0x00000100000001B3) ^ c);
+ return h % (sizeof(tableSalt)/sizeof(tableSalt[0]));
+}
+
+bool lookupSpvCapability(const UnownedStringSlice& str, SpvCapability& value)
+{
+ const auto i = hash(str, tableSalt[hash(str, 0)]);
+ if(str == words[i].name)
+ {
+ value = words[i].value;
+ return true;
+ }
+ else
+ {
+ return false;
+ }
+}
+
+}