summaryrefslogtreecommitdiff
path: root/source/slang/slang-lookup-spvcapability.cpp
diff options
context:
space:
mode:
authorEllie Hermaszewska <ellieh@nvidia.com>2023-08-29 06:05:26 +0800
committerGitHub <noreply@github.com>2023-08-28 15:05:26 -0700
commit508dc3a95de50de4a4d07d0a72a18e40d55b0e2e (patch)
tree7487232f5c0db0dd607e2a91b539f6a592789b06 /source/slang/slang-lookup-spvcapability.cpp
parent06f7ef354cdde4cf8e8797d8853ed2d9c3208b5b (diff)
Allow bitwise or expressions and numeric literals in spirv_asm blocks (#3157)
* Add -spirv-core-grammar option to load alternate spirv defs Also embed a version to use by default * Use perfect hash for spv op lookup * Neaten perfect hash embedding * Refactor spirv grammar lookup in preperation for more kinds of lookups * Load spirv capability list from spec * Add all SPIR-V enums to lookup table * regenerate vs projects * appease msvc * Use string slices for spir-v core grammar lookups * wiggle * comment * Add OpInfo for spv ops * regenerate vs projects * Embed op names * Add min/max operand counts and enum categories to spirv info * neaten * Operand kinds for spirv ops * Store and embed all information relating to spirv enums and qualifiers * Use SPIR-V spec to position instructions in spirv_asm blocks * Neaten spir-v info embedding * Neaten perfect hash embedding * Add assignment syntax to spirv_asm snippets * Better errors for spirv_asm parser * Add warning for too many operands in spirv asm * squash warnings * neaten * test wiggle * Lookup enums for spirv * Put OpCapability and OpExtension in the correct place for spirv_asm blocks * Tests for OpCapability and OpExtension * ci wiggle * Add expected failure * Allow raising immediate values to constant ids where necessary in spirv_asm blocks * Allow bitwise or expressions and numeric literals in spirv_asm blocks * test numeric literals * Fix memory issues. * fix. --------- Co-authored-by: Yong He <yonghe@outlook.com>
Diffstat (limited to 'source/slang/slang-lookup-spvcapability.cpp')
-rw-r--r--source/slang/slang-lookup-spvcapability.cpp303
1 files changed, 0 insertions, 303 deletions
diff --git a/source/slang/slang-lookup-spvcapability.cpp b/source/slang/slang-lookup-spvcapability.cpp
deleted file mode 100644
index 5e7e18037..000000000
--- a/source/slang/slang-lookup-spvcapability.cpp
+++ /dev/null
@@ -1,303 +0,0 @@
-// 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;
- }
-}
-
-}