1/* DO NOT EDIT - This file is generated automatically by spirv_info_c.py script */
2
3/*
4 * Copyright (C) 2017 Intel Corporation
5 *
6 * Permission is hereby granted, free of charge, to any person obtaining a
7 * copy of this software and associated documentation files (the "Software"),
8 * to deal in the Software without restriction, including without limitation
9 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
10 * and/or sell copies of the Software, and to permit persons to whom the
11 * Software is furnished to do so, subject to the following conditions:
12 *
13 * The above copyright notice and this permission notice (including the next
14 * paragraph) shall be included in all copies or substantial portions of the
15 * Software.
16 *
17 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
20 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
22 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
23 * DEALINGS IN THE SOFTWARE.
24 */
25#include "spirv_info.h"
26
27const char *
28spirv_addressingmodel_to_string(SpvAddressingModel v)
29{
30   switch (v) {
31   case SpvAddressingModelLogical: return "SpvAddressingModelLogical";
32   case SpvAddressingModelPhysical32: return "SpvAddressingModelPhysical32";
33   case SpvAddressingModelPhysical64: return "SpvAddressingModelPhysical64";
34   case SpvAddressingModelPhysicalStorageBuffer64EXT: return "SpvAddressingModelPhysicalStorageBuffer64EXT";
35   case SpvAddressingModelMax: break; /* silence warnings about unhandled enums. */
36   }
37
38   return "unknown";
39}
40
41const char *
42spirv_builtin_to_string(SpvBuiltIn v)
43{
44   switch (v) {
45   case SpvBuiltInPosition: return "SpvBuiltInPosition";
46   case SpvBuiltInPointSize: return "SpvBuiltInPointSize";
47   case SpvBuiltInClipDistance: return "SpvBuiltInClipDistance";
48   case SpvBuiltInCullDistance: return "SpvBuiltInCullDistance";
49   case SpvBuiltInVertexId: return "SpvBuiltInVertexId";
50   case SpvBuiltInInstanceId: return "SpvBuiltInInstanceId";
51   case SpvBuiltInPrimitiveId: return "SpvBuiltInPrimitiveId";
52   case SpvBuiltInInvocationId: return "SpvBuiltInInvocationId";
53   case SpvBuiltInLayer: return "SpvBuiltInLayer";
54   case SpvBuiltInViewportIndex: return "SpvBuiltInViewportIndex";
55   case SpvBuiltInTessLevelOuter: return "SpvBuiltInTessLevelOuter";
56   case SpvBuiltInTessLevelInner: return "SpvBuiltInTessLevelInner";
57   case SpvBuiltInTessCoord: return "SpvBuiltInTessCoord";
58   case SpvBuiltInPatchVertices: return "SpvBuiltInPatchVertices";
59   case SpvBuiltInFragCoord: return "SpvBuiltInFragCoord";
60   case SpvBuiltInPointCoord: return "SpvBuiltInPointCoord";
61   case SpvBuiltInFrontFacing: return "SpvBuiltInFrontFacing";
62   case SpvBuiltInSampleId: return "SpvBuiltInSampleId";
63   case SpvBuiltInSamplePosition: return "SpvBuiltInSamplePosition";
64   case SpvBuiltInSampleMask: return "SpvBuiltInSampleMask";
65   case SpvBuiltInFragDepth: return "SpvBuiltInFragDepth";
66   case SpvBuiltInHelperInvocation: return "SpvBuiltInHelperInvocation";
67   case SpvBuiltInNumWorkgroups: return "SpvBuiltInNumWorkgroups";
68   case SpvBuiltInWorkgroupSize: return "SpvBuiltInWorkgroupSize";
69   case SpvBuiltInWorkgroupId: return "SpvBuiltInWorkgroupId";
70   case SpvBuiltInLocalInvocationId: return "SpvBuiltInLocalInvocationId";
71   case SpvBuiltInGlobalInvocationId: return "SpvBuiltInGlobalInvocationId";
72   case SpvBuiltInLocalInvocationIndex: return "SpvBuiltInLocalInvocationIndex";
73   case SpvBuiltInWorkDim: return "SpvBuiltInWorkDim";
74   case SpvBuiltInGlobalSize: return "SpvBuiltInGlobalSize";
75   case SpvBuiltInEnqueuedWorkgroupSize: return "SpvBuiltInEnqueuedWorkgroupSize";
76   case SpvBuiltInGlobalOffset: return "SpvBuiltInGlobalOffset";
77   case SpvBuiltInGlobalLinearId: return "SpvBuiltInGlobalLinearId";
78   case SpvBuiltInSubgroupSize: return "SpvBuiltInSubgroupSize";
79   case SpvBuiltInSubgroupMaxSize: return "SpvBuiltInSubgroupMaxSize";
80   case SpvBuiltInNumSubgroups: return "SpvBuiltInNumSubgroups";
81   case SpvBuiltInNumEnqueuedSubgroups: return "SpvBuiltInNumEnqueuedSubgroups";
82   case SpvBuiltInSubgroupId: return "SpvBuiltInSubgroupId";
83   case SpvBuiltInSubgroupLocalInvocationId: return "SpvBuiltInSubgroupLocalInvocationId";
84   case SpvBuiltInVertexIndex: return "SpvBuiltInVertexIndex";
85   case SpvBuiltInInstanceIndex: return "SpvBuiltInInstanceIndex";
86   case SpvBuiltInSubgroupEqMask: return "SpvBuiltInSubgroupEqMask";
87   case SpvBuiltInSubgroupGeMask: return "SpvBuiltInSubgroupGeMask";
88   case SpvBuiltInSubgroupGtMask: return "SpvBuiltInSubgroupGtMask";
89   case SpvBuiltInSubgroupLeMask: return "SpvBuiltInSubgroupLeMask";
90   case SpvBuiltInSubgroupLtMask: return "SpvBuiltInSubgroupLtMask";
91   case SpvBuiltInBaseVertex: return "SpvBuiltInBaseVertex";
92   case SpvBuiltInBaseInstance: return "SpvBuiltInBaseInstance";
93   case SpvBuiltInDrawIndex: return "SpvBuiltInDrawIndex";
94   case SpvBuiltInDeviceIndex: return "SpvBuiltInDeviceIndex";
95   case SpvBuiltInViewIndex: return "SpvBuiltInViewIndex";
96   case SpvBuiltInBaryCoordNoPerspAMD: return "SpvBuiltInBaryCoordNoPerspAMD";
97   case SpvBuiltInBaryCoordNoPerspCentroidAMD: return "SpvBuiltInBaryCoordNoPerspCentroidAMD";
98   case SpvBuiltInBaryCoordNoPerspSampleAMD: return "SpvBuiltInBaryCoordNoPerspSampleAMD";
99   case SpvBuiltInBaryCoordSmoothAMD: return "SpvBuiltInBaryCoordSmoothAMD";
100   case SpvBuiltInBaryCoordSmoothCentroidAMD: return "SpvBuiltInBaryCoordSmoothCentroidAMD";
101   case SpvBuiltInBaryCoordSmoothSampleAMD: return "SpvBuiltInBaryCoordSmoothSampleAMD";
102   case SpvBuiltInBaryCoordPullModelAMD: return "SpvBuiltInBaryCoordPullModelAMD";
103   case SpvBuiltInFragStencilRefEXT: return "SpvBuiltInFragStencilRefEXT";
104   case SpvBuiltInViewportMaskNV: return "SpvBuiltInViewportMaskNV";
105   case SpvBuiltInSecondaryPositionNV: return "SpvBuiltInSecondaryPositionNV";
106   case SpvBuiltInSecondaryViewportMaskNV: return "SpvBuiltInSecondaryViewportMaskNV";
107   case SpvBuiltInPositionPerViewNV: return "SpvBuiltInPositionPerViewNV";
108   case SpvBuiltInViewportMaskPerViewNV: return "SpvBuiltInViewportMaskPerViewNV";
109   case SpvBuiltInFullyCoveredEXT: return "SpvBuiltInFullyCoveredEXT";
110   case SpvBuiltInTaskCountNV: return "SpvBuiltInTaskCountNV";
111   case SpvBuiltInPrimitiveCountNV: return "SpvBuiltInPrimitiveCountNV";
112   case SpvBuiltInPrimitiveIndicesNV: return "SpvBuiltInPrimitiveIndicesNV";
113   case SpvBuiltInClipDistancePerViewNV: return "SpvBuiltInClipDistancePerViewNV";
114   case SpvBuiltInCullDistancePerViewNV: return "SpvBuiltInCullDistancePerViewNV";
115   case SpvBuiltInLayerPerViewNV: return "SpvBuiltInLayerPerViewNV";
116   case SpvBuiltInMeshViewCountNV: return "SpvBuiltInMeshViewCountNV";
117   case SpvBuiltInMeshViewIndicesNV: return "SpvBuiltInMeshViewIndicesNV";
118   case SpvBuiltInBaryCoordNV: return "SpvBuiltInBaryCoordNV";
119   case SpvBuiltInBaryCoordNoPerspNV: return "SpvBuiltInBaryCoordNoPerspNV";
120   case SpvBuiltInFragSizeEXT: return "SpvBuiltInFragSizeEXT";
121   case SpvBuiltInFragInvocationCountEXT: return "SpvBuiltInFragInvocationCountEXT";
122   case SpvBuiltInLaunchIdNV: return "SpvBuiltInLaunchIdNV";
123   case SpvBuiltInLaunchSizeNV: return "SpvBuiltInLaunchSizeNV";
124   case SpvBuiltInWorldRayOriginNV: return "SpvBuiltInWorldRayOriginNV";
125   case SpvBuiltInWorldRayDirectionNV: return "SpvBuiltInWorldRayDirectionNV";
126   case SpvBuiltInObjectRayOriginNV: return "SpvBuiltInObjectRayOriginNV";
127   case SpvBuiltInObjectRayDirectionNV: return "SpvBuiltInObjectRayDirectionNV";
128   case SpvBuiltInRayTminNV: return "SpvBuiltInRayTminNV";
129   case SpvBuiltInRayTmaxNV: return "SpvBuiltInRayTmaxNV";
130   case SpvBuiltInInstanceCustomIndexNV: return "SpvBuiltInInstanceCustomIndexNV";
131   case SpvBuiltInObjectToWorldNV: return "SpvBuiltInObjectToWorldNV";
132   case SpvBuiltInWorldToObjectNV: return "SpvBuiltInWorldToObjectNV";
133   case SpvBuiltInHitTNV: return "SpvBuiltInHitTNV";
134   case SpvBuiltInHitKindNV: return "SpvBuiltInHitKindNV";
135   case SpvBuiltInIncomingRayFlagsNV: return "SpvBuiltInIncomingRayFlagsNV";
136   case SpvBuiltInMax: break; /* silence warnings about unhandled enums. */
137   }
138
139   return "unknown";
140}
141
142const char *
143spirv_capability_to_string(SpvCapability v)
144{
145   switch (v) {
146   case SpvCapabilityMatrix: return "SpvCapabilityMatrix";
147   case SpvCapabilityShader: return "SpvCapabilityShader";
148   case SpvCapabilityGeometry: return "SpvCapabilityGeometry";
149   case SpvCapabilityTessellation: return "SpvCapabilityTessellation";
150   case SpvCapabilityAddresses: return "SpvCapabilityAddresses";
151   case SpvCapabilityLinkage: return "SpvCapabilityLinkage";
152   case SpvCapabilityKernel: return "SpvCapabilityKernel";
153   case SpvCapabilityVector16: return "SpvCapabilityVector16";
154   case SpvCapabilityFloat16Buffer: return "SpvCapabilityFloat16Buffer";
155   case SpvCapabilityFloat16: return "SpvCapabilityFloat16";
156   case SpvCapabilityFloat64: return "SpvCapabilityFloat64";
157   case SpvCapabilityInt64: return "SpvCapabilityInt64";
158   case SpvCapabilityInt64Atomics: return "SpvCapabilityInt64Atomics";
159   case SpvCapabilityImageBasic: return "SpvCapabilityImageBasic";
160   case SpvCapabilityImageReadWrite: return "SpvCapabilityImageReadWrite";
161   case SpvCapabilityImageMipmap: return "SpvCapabilityImageMipmap";
162   case SpvCapabilityPipes: return "SpvCapabilityPipes";
163   case SpvCapabilityGroups: return "SpvCapabilityGroups";
164   case SpvCapabilityDeviceEnqueue: return "SpvCapabilityDeviceEnqueue";
165   case SpvCapabilityLiteralSampler: return "SpvCapabilityLiteralSampler";
166   case SpvCapabilityAtomicStorage: return "SpvCapabilityAtomicStorage";
167   case SpvCapabilityInt16: return "SpvCapabilityInt16";
168   case SpvCapabilityTessellationPointSize: return "SpvCapabilityTessellationPointSize";
169   case SpvCapabilityGeometryPointSize: return "SpvCapabilityGeometryPointSize";
170   case SpvCapabilityImageGatherExtended: return "SpvCapabilityImageGatherExtended";
171   case SpvCapabilityStorageImageMultisample: return "SpvCapabilityStorageImageMultisample";
172   case SpvCapabilityUniformBufferArrayDynamicIndexing: return "SpvCapabilityUniformBufferArrayDynamicIndexing";
173   case SpvCapabilitySampledImageArrayDynamicIndexing: return "SpvCapabilitySampledImageArrayDynamicIndexing";
174   case SpvCapabilityStorageBufferArrayDynamicIndexing: return "SpvCapabilityStorageBufferArrayDynamicIndexing";
175   case SpvCapabilityStorageImageArrayDynamicIndexing: return "SpvCapabilityStorageImageArrayDynamicIndexing";
176   case SpvCapabilityClipDistance: return "SpvCapabilityClipDistance";
177   case SpvCapabilityCullDistance: return "SpvCapabilityCullDistance";
178   case SpvCapabilityImageCubeArray: return "SpvCapabilityImageCubeArray";
179   case SpvCapabilitySampleRateShading: return "SpvCapabilitySampleRateShading";
180   case SpvCapabilityImageRect: return "SpvCapabilityImageRect";
181   case SpvCapabilitySampledRect: return "SpvCapabilitySampledRect";
182   case SpvCapabilityGenericPointer: return "SpvCapabilityGenericPointer";
183   case SpvCapabilityInt8: return "SpvCapabilityInt8";
184   case SpvCapabilityInputAttachment: return "SpvCapabilityInputAttachment";
185   case SpvCapabilitySparseResidency: return "SpvCapabilitySparseResidency";
186   case SpvCapabilityMinLod: return "SpvCapabilityMinLod";
187   case SpvCapabilitySampled1D: return "SpvCapabilitySampled1D";
188   case SpvCapabilityImage1D: return "SpvCapabilityImage1D";
189   case SpvCapabilitySampledCubeArray: return "SpvCapabilitySampledCubeArray";
190   case SpvCapabilitySampledBuffer: return "SpvCapabilitySampledBuffer";
191   case SpvCapabilityImageBuffer: return "SpvCapabilityImageBuffer";
192   case SpvCapabilityImageMSArray: return "SpvCapabilityImageMSArray";
193   case SpvCapabilityStorageImageExtendedFormats: return "SpvCapabilityStorageImageExtendedFormats";
194   case SpvCapabilityImageQuery: return "SpvCapabilityImageQuery";
195   case SpvCapabilityDerivativeControl: return "SpvCapabilityDerivativeControl";
196   case SpvCapabilityInterpolationFunction: return "SpvCapabilityInterpolationFunction";
197   case SpvCapabilityTransformFeedback: return "SpvCapabilityTransformFeedback";
198   case SpvCapabilityGeometryStreams: return "SpvCapabilityGeometryStreams";
199   case SpvCapabilityStorageImageReadWithoutFormat: return "SpvCapabilityStorageImageReadWithoutFormat";
200   case SpvCapabilityStorageImageWriteWithoutFormat: return "SpvCapabilityStorageImageWriteWithoutFormat";
201   case SpvCapabilityMultiViewport: return "SpvCapabilityMultiViewport";
202   case SpvCapabilitySubgroupDispatch: return "SpvCapabilitySubgroupDispatch";
203   case SpvCapabilityNamedBarrier: return "SpvCapabilityNamedBarrier";
204   case SpvCapabilityPipeStorage: return "SpvCapabilityPipeStorage";
205   case SpvCapabilityGroupNonUniform: return "SpvCapabilityGroupNonUniform";
206   case SpvCapabilityGroupNonUniformVote: return "SpvCapabilityGroupNonUniformVote";
207   case SpvCapabilityGroupNonUniformArithmetic: return "SpvCapabilityGroupNonUniformArithmetic";
208   case SpvCapabilityGroupNonUniformBallot: return "SpvCapabilityGroupNonUniformBallot";
209   case SpvCapabilityGroupNonUniformShuffle: return "SpvCapabilityGroupNonUniformShuffle";
210   case SpvCapabilityGroupNonUniformShuffleRelative: return "SpvCapabilityGroupNonUniformShuffleRelative";
211   case SpvCapabilityGroupNonUniformClustered: return "SpvCapabilityGroupNonUniformClustered";
212   case SpvCapabilityGroupNonUniformQuad: return "SpvCapabilityGroupNonUniformQuad";
213   case SpvCapabilitySubgroupBallotKHR: return "SpvCapabilitySubgroupBallotKHR";
214   case SpvCapabilityDrawParameters: return "SpvCapabilityDrawParameters";
215   case SpvCapabilitySubgroupVoteKHR: return "SpvCapabilitySubgroupVoteKHR";
216   case SpvCapabilityStorageBuffer16BitAccess: return "SpvCapabilityStorageBuffer16BitAccess";
217   case SpvCapabilityUniformAndStorageBuffer16BitAccess: return "SpvCapabilityUniformAndStorageBuffer16BitAccess";
218   case SpvCapabilityStoragePushConstant16: return "SpvCapabilityStoragePushConstant16";
219   case SpvCapabilityStorageInputOutput16: return "SpvCapabilityStorageInputOutput16";
220   case SpvCapabilityDeviceGroup: return "SpvCapabilityDeviceGroup";
221   case SpvCapabilityMultiView: return "SpvCapabilityMultiView";
222   case SpvCapabilityVariablePointersStorageBuffer: return "SpvCapabilityVariablePointersStorageBuffer";
223   case SpvCapabilityVariablePointers: return "SpvCapabilityVariablePointers";
224   case SpvCapabilityAtomicStorageOps: return "SpvCapabilityAtomicStorageOps";
225   case SpvCapabilitySampleMaskPostDepthCoverage: return "SpvCapabilitySampleMaskPostDepthCoverage";
226   case SpvCapabilityStorageBuffer8BitAccess: return "SpvCapabilityStorageBuffer8BitAccess";
227   case SpvCapabilityUniformAndStorageBuffer8BitAccess: return "SpvCapabilityUniformAndStorageBuffer8BitAccess";
228   case SpvCapabilityStoragePushConstant8: return "SpvCapabilityStoragePushConstant8";
229   case SpvCapabilityDenormPreserve: return "SpvCapabilityDenormPreserve";
230   case SpvCapabilityDenormFlushToZero: return "SpvCapabilityDenormFlushToZero";
231   case SpvCapabilitySignedZeroInfNanPreserve: return "SpvCapabilitySignedZeroInfNanPreserve";
232   case SpvCapabilityRoundingModeRTE: return "SpvCapabilityRoundingModeRTE";
233   case SpvCapabilityRoundingModeRTZ: return "SpvCapabilityRoundingModeRTZ";
234   case SpvCapabilityFloat16ImageAMD: return "SpvCapabilityFloat16ImageAMD";
235   case SpvCapabilityImageGatherBiasLodAMD: return "SpvCapabilityImageGatherBiasLodAMD";
236   case SpvCapabilityFragmentMaskAMD: return "SpvCapabilityFragmentMaskAMD";
237   case SpvCapabilityStencilExportEXT: return "SpvCapabilityStencilExportEXT";
238   case SpvCapabilityImageReadWriteLodAMD: return "SpvCapabilityImageReadWriteLodAMD";
239   case SpvCapabilitySampleMaskOverrideCoverageNV: return "SpvCapabilitySampleMaskOverrideCoverageNV";
240   case SpvCapabilityGeometryShaderPassthroughNV: return "SpvCapabilityGeometryShaderPassthroughNV";
241   case SpvCapabilityShaderViewportIndexLayerEXT: return "SpvCapabilityShaderViewportIndexLayerEXT";
242   case SpvCapabilityShaderViewportMaskNV: return "SpvCapabilityShaderViewportMaskNV";
243   case SpvCapabilityShaderStereoViewNV: return "SpvCapabilityShaderStereoViewNV";
244   case SpvCapabilityPerViewAttributesNV: return "SpvCapabilityPerViewAttributesNV";
245   case SpvCapabilityFragmentFullyCoveredEXT: return "SpvCapabilityFragmentFullyCoveredEXT";
246   case SpvCapabilityMeshShadingNV: return "SpvCapabilityMeshShadingNV";
247   case SpvCapabilityShaderNonUniformEXT: return "SpvCapabilityShaderNonUniformEXT";
248   case SpvCapabilityRuntimeDescriptorArrayEXT: return "SpvCapabilityRuntimeDescriptorArrayEXT";
249   case SpvCapabilityInputAttachmentArrayDynamicIndexingEXT: return "SpvCapabilityInputAttachmentArrayDynamicIndexingEXT";
250   case SpvCapabilityUniformTexelBufferArrayDynamicIndexingEXT: return "SpvCapabilityUniformTexelBufferArrayDynamicIndexingEXT";
251   case SpvCapabilityStorageTexelBufferArrayDynamicIndexingEXT: return "SpvCapabilityStorageTexelBufferArrayDynamicIndexingEXT";
252   case SpvCapabilityUniformBufferArrayNonUniformIndexingEXT: return "SpvCapabilityUniformBufferArrayNonUniformIndexingEXT";
253   case SpvCapabilitySampledImageArrayNonUniformIndexingEXT: return "SpvCapabilitySampledImageArrayNonUniformIndexingEXT";
254   case SpvCapabilityStorageBufferArrayNonUniformIndexingEXT: return "SpvCapabilityStorageBufferArrayNonUniformIndexingEXT";
255   case SpvCapabilityStorageImageArrayNonUniformIndexingEXT: return "SpvCapabilityStorageImageArrayNonUniformIndexingEXT";
256   case SpvCapabilityInputAttachmentArrayNonUniformIndexingEXT: return "SpvCapabilityInputAttachmentArrayNonUniformIndexingEXT";
257   case SpvCapabilityUniformTexelBufferArrayNonUniformIndexingEXT: return "SpvCapabilityUniformTexelBufferArrayNonUniformIndexingEXT";
258   case SpvCapabilityStorageTexelBufferArrayNonUniformIndexingEXT: return "SpvCapabilityStorageTexelBufferArrayNonUniformIndexingEXT";
259   case SpvCapabilityRayTracingNV: return "SpvCapabilityRayTracingNV";
260   case SpvCapabilitySubgroupShuffleINTEL: return "SpvCapabilitySubgroupShuffleINTEL";
261   case SpvCapabilitySubgroupBufferBlockIOINTEL: return "SpvCapabilitySubgroupBufferBlockIOINTEL";
262   case SpvCapabilitySubgroupImageBlockIOINTEL: return "SpvCapabilitySubgroupImageBlockIOINTEL";
263   case SpvCapabilityGroupNonUniformPartitionedNV: return "SpvCapabilityGroupNonUniformPartitionedNV";
264   case SpvCapabilityVulkanMemoryModelKHR: return "SpvCapabilityVulkanMemoryModelKHR";
265   case SpvCapabilityVulkanMemoryModelDeviceScopeKHR: return "SpvCapabilityVulkanMemoryModelDeviceScopeKHR";
266   case SpvCapabilityImageFootprintNV: return "SpvCapabilityImageFootprintNV";
267   case SpvCapabilityFragmentBarycentricNV: return "SpvCapabilityFragmentBarycentricNV";
268   case SpvCapabilityComputeDerivativeGroupQuadsNV: return "SpvCapabilityComputeDerivativeGroupQuadsNV";
269   case SpvCapabilityComputeDerivativeGroupLinearNV: return "SpvCapabilityComputeDerivativeGroupLinearNV";
270   case SpvCapabilityFragmentDensityEXT: return "SpvCapabilityFragmentDensityEXT";
271   case SpvCapabilityPhysicalStorageBufferAddressesEXT: return "SpvCapabilityPhysicalStorageBufferAddressesEXT";
272   case SpvCapabilityMax: break; /* silence warnings about unhandled enums. */
273   }
274
275   return "unknown";
276}
277
278const char *
279spirv_decoration_to_string(SpvDecoration v)
280{
281   switch (v) {
282   case SpvDecorationRelaxedPrecision: return "SpvDecorationRelaxedPrecision";
283   case SpvDecorationSpecId: return "SpvDecorationSpecId";
284   case SpvDecorationBlock: return "SpvDecorationBlock";
285   case SpvDecorationBufferBlock: return "SpvDecorationBufferBlock";
286   case SpvDecorationRowMajor: return "SpvDecorationRowMajor";
287   case SpvDecorationColMajor: return "SpvDecorationColMajor";
288   case SpvDecorationArrayStride: return "SpvDecorationArrayStride";
289   case SpvDecorationMatrixStride: return "SpvDecorationMatrixStride";
290   case SpvDecorationGLSLShared: return "SpvDecorationGLSLShared";
291   case SpvDecorationGLSLPacked: return "SpvDecorationGLSLPacked";
292   case SpvDecorationCPacked: return "SpvDecorationCPacked";
293   case SpvDecorationBuiltIn: return "SpvDecorationBuiltIn";
294   case SpvDecorationNoPerspective: return "SpvDecorationNoPerspective";
295   case SpvDecorationFlat: return "SpvDecorationFlat";
296   case SpvDecorationPatch: return "SpvDecorationPatch";
297   case SpvDecorationCentroid: return "SpvDecorationCentroid";
298   case SpvDecorationSample: return "SpvDecorationSample";
299   case SpvDecorationInvariant: return "SpvDecorationInvariant";
300   case SpvDecorationRestrict: return "SpvDecorationRestrict";
301   case SpvDecorationAliased: return "SpvDecorationAliased";
302   case SpvDecorationVolatile: return "SpvDecorationVolatile";
303   case SpvDecorationConstant: return "SpvDecorationConstant";
304   case SpvDecorationCoherent: return "SpvDecorationCoherent";
305   case SpvDecorationNonWritable: return "SpvDecorationNonWritable";
306   case SpvDecorationNonReadable: return "SpvDecorationNonReadable";
307   case SpvDecorationUniform: return "SpvDecorationUniform";
308   case SpvDecorationSaturatedConversion: return "SpvDecorationSaturatedConversion";
309   case SpvDecorationStream: return "SpvDecorationStream";
310   case SpvDecorationLocation: return "SpvDecorationLocation";
311   case SpvDecorationComponent: return "SpvDecorationComponent";
312   case SpvDecorationIndex: return "SpvDecorationIndex";
313   case SpvDecorationBinding: return "SpvDecorationBinding";
314   case SpvDecorationDescriptorSet: return "SpvDecorationDescriptorSet";
315   case SpvDecorationOffset: return "SpvDecorationOffset";
316   case SpvDecorationXfbBuffer: return "SpvDecorationXfbBuffer";
317   case SpvDecorationXfbStride: return "SpvDecorationXfbStride";
318   case SpvDecorationFuncParamAttr: return "SpvDecorationFuncParamAttr";
319   case SpvDecorationFPRoundingMode: return "SpvDecorationFPRoundingMode";
320   case SpvDecorationFPFastMathMode: return "SpvDecorationFPFastMathMode";
321   case SpvDecorationLinkageAttributes: return "SpvDecorationLinkageAttributes";
322   case SpvDecorationNoContraction: return "SpvDecorationNoContraction";
323   case SpvDecorationInputAttachmentIndex: return "SpvDecorationInputAttachmentIndex";
324   case SpvDecorationAlignment: return "SpvDecorationAlignment";
325   case SpvDecorationMaxByteOffset: return "SpvDecorationMaxByteOffset";
326   case SpvDecorationAlignmentId: return "SpvDecorationAlignmentId";
327   case SpvDecorationMaxByteOffsetId: return "SpvDecorationMaxByteOffsetId";
328   case SpvDecorationNoSignedWrap: return "SpvDecorationNoSignedWrap";
329   case SpvDecorationNoUnsignedWrap: return "SpvDecorationNoUnsignedWrap";
330   case SpvDecorationExplicitInterpAMD: return "SpvDecorationExplicitInterpAMD";
331   case SpvDecorationOverrideCoverageNV: return "SpvDecorationOverrideCoverageNV";
332   case SpvDecorationPassthroughNV: return "SpvDecorationPassthroughNV";
333   case SpvDecorationViewportRelativeNV: return "SpvDecorationViewportRelativeNV";
334   case SpvDecorationSecondaryViewportRelativeNV: return "SpvDecorationSecondaryViewportRelativeNV";
335   case SpvDecorationPerPrimitiveNV: return "SpvDecorationPerPrimitiveNV";
336   case SpvDecorationPerViewNV: return "SpvDecorationPerViewNV";
337   case SpvDecorationPerTaskNV: return "SpvDecorationPerTaskNV";
338   case SpvDecorationPerVertexNV: return "SpvDecorationPerVertexNV";
339   case SpvDecorationNonUniformEXT: return "SpvDecorationNonUniformEXT";
340   case SpvDecorationHlslCounterBufferGOOGLE: return "SpvDecorationHlslCounterBufferGOOGLE";
341   case SpvDecorationHlslSemanticGOOGLE: return "SpvDecorationHlslSemanticGOOGLE";
342   case SpvDecorationRestrictPointerEXT: return "SpvDecorationRestrictPointerEXT";
343   case SpvDecorationAliasedPointerEXT: return "SpvDecorationAliasedPointerEXT";
344   case SpvDecorationMax: break; /* silence warnings about unhandled enums. */
345   }
346
347   return "unknown";
348}
349
350const char *
351spirv_dim_to_string(SpvDim v)
352{
353   switch (v) {
354   case SpvDim1D: return "SpvDim1D";
355   case SpvDim2D: return "SpvDim2D";
356   case SpvDim3D: return "SpvDim3D";
357   case SpvDimCube: return "SpvDimCube";
358   case SpvDimRect: return "SpvDimRect";
359   case SpvDimBuffer: return "SpvDimBuffer";
360   case SpvDimSubpassData: return "SpvDimSubpassData";
361   case SpvDimMax: break; /* silence warnings about unhandled enums. */
362   }
363
364   return "unknown";
365}
366
367const char *
368spirv_executionmode_to_string(SpvExecutionMode v)
369{
370   switch (v) {
371   case SpvExecutionModeInvocations: return "SpvExecutionModeInvocations";
372   case SpvExecutionModeSpacingEqual: return "SpvExecutionModeSpacingEqual";
373   case SpvExecutionModeSpacingFractionalEven: return "SpvExecutionModeSpacingFractionalEven";
374   case SpvExecutionModeSpacingFractionalOdd: return "SpvExecutionModeSpacingFractionalOdd";
375   case SpvExecutionModeVertexOrderCw: return "SpvExecutionModeVertexOrderCw";
376   case SpvExecutionModeVertexOrderCcw: return "SpvExecutionModeVertexOrderCcw";
377   case SpvExecutionModePixelCenterInteger: return "SpvExecutionModePixelCenterInteger";
378   case SpvExecutionModeOriginUpperLeft: return "SpvExecutionModeOriginUpperLeft";
379   case SpvExecutionModeOriginLowerLeft: return "SpvExecutionModeOriginLowerLeft";
380   case SpvExecutionModeEarlyFragmentTests: return "SpvExecutionModeEarlyFragmentTests";
381   case SpvExecutionModePointMode: return "SpvExecutionModePointMode";
382   case SpvExecutionModeXfb: return "SpvExecutionModeXfb";
383   case SpvExecutionModeDepthReplacing: return "SpvExecutionModeDepthReplacing";
384   case SpvExecutionModeDepthGreater: return "SpvExecutionModeDepthGreater";
385   case SpvExecutionModeDepthLess: return "SpvExecutionModeDepthLess";
386   case SpvExecutionModeDepthUnchanged: return "SpvExecutionModeDepthUnchanged";
387   case SpvExecutionModeLocalSize: return "SpvExecutionModeLocalSize";
388   case SpvExecutionModeLocalSizeHint: return "SpvExecutionModeLocalSizeHint";
389   case SpvExecutionModeInputPoints: return "SpvExecutionModeInputPoints";
390   case SpvExecutionModeInputLines: return "SpvExecutionModeInputLines";
391   case SpvExecutionModeInputLinesAdjacency: return "SpvExecutionModeInputLinesAdjacency";
392   case SpvExecutionModeTriangles: return "SpvExecutionModeTriangles";
393   case SpvExecutionModeInputTrianglesAdjacency: return "SpvExecutionModeInputTrianglesAdjacency";
394   case SpvExecutionModeQuads: return "SpvExecutionModeQuads";
395   case SpvExecutionModeIsolines: return "SpvExecutionModeIsolines";
396   case SpvExecutionModeOutputVertices: return "SpvExecutionModeOutputVertices";
397   case SpvExecutionModeOutputPoints: return "SpvExecutionModeOutputPoints";
398   case SpvExecutionModeOutputLineStrip: return "SpvExecutionModeOutputLineStrip";
399   case SpvExecutionModeOutputTriangleStrip: return "SpvExecutionModeOutputTriangleStrip";
400   case SpvExecutionModeVecTypeHint: return "SpvExecutionModeVecTypeHint";
401   case SpvExecutionModeContractionOff: return "SpvExecutionModeContractionOff";
402   case SpvExecutionModeInitializer: return "SpvExecutionModeInitializer";
403   case SpvExecutionModeFinalizer: return "SpvExecutionModeFinalizer";
404   case SpvExecutionModeSubgroupSize: return "SpvExecutionModeSubgroupSize";
405   case SpvExecutionModeSubgroupsPerWorkgroup: return "SpvExecutionModeSubgroupsPerWorkgroup";
406   case SpvExecutionModeSubgroupsPerWorkgroupId: return "SpvExecutionModeSubgroupsPerWorkgroupId";
407   case SpvExecutionModeLocalSizeId: return "SpvExecutionModeLocalSizeId";
408   case SpvExecutionModeLocalSizeHintId: return "SpvExecutionModeLocalSizeHintId";
409   case SpvExecutionModePostDepthCoverage: return "SpvExecutionModePostDepthCoverage";
410   case SpvExecutionModeDenormPreserve: return "SpvExecutionModeDenormPreserve";
411   case SpvExecutionModeDenormFlushToZero: return "SpvExecutionModeDenormFlushToZero";
412   case SpvExecutionModeSignedZeroInfNanPreserve: return "SpvExecutionModeSignedZeroInfNanPreserve";
413   case SpvExecutionModeRoundingModeRTE: return "SpvExecutionModeRoundingModeRTE";
414   case SpvExecutionModeRoundingModeRTZ: return "SpvExecutionModeRoundingModeRTZ";
415   case SpvExecutionModeStencilRefReplacingEXT: return "SpvExecutionModeStencilRefReplacingEXT";
416   case SpvExecutionModeOutputLinesNV: return "SpvExecutionModeOutputLinesNV";
417   case SpvExecutionModeOutputPrimitivesNV: return "SpvExecutionModeOutputPrimitivesNV";
418   case SpvExecutionModeDerivativeGroupQuadsNV: return "SpvExecutionModeDerivativeGroupQuadsNV";
419   case SpvExecutionModeDerivativeGroupLinearNV: return "SpvExecutionModeDerivativeGroupLinearNV";
420   case SpvExecutionModeOutputTrianglesNV: return "SpvExecutionModeOutputTrianglesNV";
421   case SpvExecutionModeMax: break; /* silence warnings about unhandled enums. */
422   }
423
424   return "unknown";
425}
426
427const char *
428spirv_executionmodel_to_string(SpvExecutionModel v)
429{
430   switch (v) {
431   case SpvExecutionModelVertex: return "SpvExecutionModelVertex";
432   case SpvExecutionModelTessellationControl: return "SpvExecutionModelTessellationControl";
433   case SpvExecutionModelTessellationEvaluation: return "SpvExecutionModelTessellationEvaluation";
434   case SpvExecutionModelGeometry: return "SpvExecutionModelGeometry";
435   case SpvExecutionModelFragment: return "SpvExecutionModelFragment";
436   case SpvExecutionModelGLCompute: return "SpvExecutionModelGLCompute";
437   case SpvExecutionModelKernel: return "SpvExecutionModelKernel";
438   case SpvExecutionModelTaskNV: return "SpvExecutionModelTaskNV";
439   case SpvExecutionModelMeshNV: return "SpvExecutionModelMeshNV";
440   case SpvExecutionModelRayGenerationNV: return "SpvExecutionModelRayGenerationNV";
441   case SpvExecutionModelIntersectionNV: return "SpvExecutionModelIntersectionNV";
442   case SpvExecutionModelAnyHitNV: return "SpvExecutionModelAnyHitNV";
443   case SpvExecutionModelClosestHitNV: return "SpvExecutionModelClosestHitNV";
444   case SpvExecutionModelMissNV: return "SpvExecutionModelMissNV";
445   case SpvExecutionModelCallableNV: return "SpvExecutionModelCallableNV";
446   case SpvExecutionModelMax: break; /* silence warnings about unhandled enums. */
447   }
448
449   return "unknown";
450}
451
452const char *
453spirv_imageformat_to_string(SpvImageFormat v)
454{
455   switch (v) {
456   case SpvImageFormatUnknown: return "SpvImageFormatUnknown";
457   case SpvImageFormatRgba32f: return "SpvImageFormatRgba32f";
458   case SpvImageFormatRgba16f: return "SpvImageFormatRgba16f";
459   case SpvImageFormatR32f: return "SpvImageFormatR32f";
460   case SpvImageFormatRgba8: return "SpvImageFormatRgba8";
461   case SpvImageFormatRgba8Snorm: return "SpvImageFormatRgba8Snorm";
462   case SpvImageFormatRg32f: return "SpvImageFormatRg32f";
463   case SpvImageFormatRg16f: return "SpvImageFormatRg16f";
464   case SpvImageFormatR11fG11fB10f: return "SpvImageFormatR11fG11fB10f";
465   case SpvImageFormatR16f: return "SpvImageFormatR16f";
466   case SpvImageFormatRgba16: return "SpvImageFormatRgba16";
467   case SpvImageFormatRgb10A2: return "SpvImageFormatRgb10A2";
468   case SpvImageFormatRg16: return "SpvImageFormatRg16";
469   case SpvImageFormatRg8: return "SpvImageFormatRg8";
470   case SpvImageFormatR16: return "SpvImageFormatR16";
471   case SpvImageFormatR8: return "SpvImageFormatR8";
472   case SpvImageFormatRgba16Snorm: return "SpvImageFormatRgba16Snorm";
473   case SpvImageFormatRg16Snorm: return "SpvImageFormatRg16Snorm";
474   case SpvImageFormatRg8Snorm: return "SpvImageFormatRg8Snorm";
475   case SpvImageFormatR16Snorm: return "SpvImageFormatR16Snorm";
476   case SpvImageFormatR8Snorm: return "SpvImageFormatR8Snorm";
477   case SpvImageFormatRgba32i: return "SpvImageFormatRgba32i";
478   case SpvImageFormatRgba16i: return "SpvImageFormatRgba16i";
479   case SpvImageFormatRgba8i: return "SpvImageFormatRgba8i";
480   case SpvImageFormatR32i: return "SpvImageFormatR32i";
481   case SpvImageFormatRg32i: return "SpvImageFormatRg32i";
482   case SpvImageFormatRg16i: return "SpvImageFormatRg16i";
483   case SpvImageFormatRg8i: return "SpvImageFormatRg8i";
484   case SpvImageFormatR16i: return "SpvImageFormatR16i";
485   case SpvImageFormatR8i: return "SpvImageFormatR8i";
486   case SpvImageFormatRgba32ui: return "SpvImageFormatRgba32ui";
487   case SpvImageFormatRgba16ui: return "SpvImageFormatRgba16ui";
488   case SpvImageFormatRgba8ui: return "SpvImageFormatRgba8ui";
489   case SpvImageFormatR32ui: return "SpvImageFormatR32ui";
490   case SpvImageFormatRgb10a2ui: return "SpvImageFormatRgb10a2ui";
491   case SpvImageFormatRg32ui: return "SpvImageFormatRg32ui";
492   case SpvImageFormatRg16ui: return "SpvImageFormatRg16ui";
493   case SpvImageFormatRg8ui: return "SpvImageFormatRg8ui";
494   case SpvImageFormatR16ui: return "SpvImageFormatR16ui";
495   case SpvImageFormatR8ui: return "SpvImageFormatR8ui";
496   case SpvImageFormatMax: break; /* silence warnings about unhandled enums. */
497   }
498
499   return "unknown";
500}
501
502const char *
503spirv_storageclass_to_string(SpvStorageClass v)
504{
505   switch (v) {
506   case SpvStorageClassUniformConstant: return "SpvStorageClassUniformConstant";
507   case SpvStorageClassInput: return "SpvStorageClassInput";
508   case SpvStorageClassUniform: return "SpvStorageClassUniform";
509   case SpvStorageClassOutput: return "SpvStorageClassOutput";
510   case SpvStorageClassWorkgroup: return "SpvStorageClassWorkgroup";
511   case SpvStorageClassCrossWorkgroup: return "SpvStorageClassCrossWorkgroup";
512   case SpvStorageClassPrivate: return "SpvStorageClassPrivate";
513   case SpvStorageClassFunction: return "SpvStorageClassFunction";
514   case SpvStorageClassGeneric: return "SpvStorageClassGeneric";
515   case SpvStorageClassPushConstant: return "SpvStorageClassPushConstant";
516   case SpvStorageClassAtomicCounter: return "SpvStorageClassAtomicCounter";
517   case SpvStorageClassImage: return "SpvStorageClassImage";
518   case SpvStorageClassStorageBuffer: return "SpvStorageClassStorageBuffer";
519   case SpvStorageClassCallableDataNV: return "SpvStorageClassCallableDataNV";
520   case SpvStorageClassIncomingCallableDataNV: return "SpvStorageClassIncomingCallableDataNV";
521   case SpvStorageClassRayPayloadNV: return "SpvStorageClassRayPayloadNV";
522   case SpvStorageClassHitAttributeNV: return "SpvStorageClassHitAttributeNV";
523   case SpvStorageClassIncomingRayPayloadNV: return "SpvStorageClassIncomingRayPayloadNV";
524   case SpvStorageClassShaderRecordBufferNV: return "SpvStorageClassShaderRecordBufferNV";
525   case SpvStorageClassPhysicalStorageBufferEXT: return "SpvStorageClassPhysicalStorageBufferEXT";
526   case SpvStorageClassMax: break; /* silence warnings about unhandled enums. */
527   }
528
529   return "unknown";
530}
531
532const char *
533spirv_op_to_string(SpvOp v)
534{
535   switch (v) {
536   case SpvOpNop: return "SpvOpNop";
537   case SpvOpUndef: return "SpvOpUndef";
538   case SpvOpSourceContinued: return "SpvOpSourceContinued";
539   case SpvOpSource: return "SpvOpSource";
540   case SpvOpSourceExtension: return "SpvOpSourceExtension";
541   case SpvOpName: return "SpvOpName";
542   case SpvOpMemberName: return "SpvOpMemberName";
543   case SpvOpString: return "SpvOpString";
544   case SpvOpLine: return "SpvOpLine";
545   case SpvOpExtension: return "SpvOpExtension";
546   case SpvOpExtInstImport: return "SpvOpExtInstImport";
547   case SpvOpExtInst: return "SpvOpExtInst";
548   case SpvOpMemoryModel: return "SpvOpMemoryModel";
549   case SpvOpEntryPoint: return "SpvOpEntryPoint";
550   case SpvOpExecutionMode: return "SpvOpExecutionMode";
551   case SpvOpCapability: return "SpvOpCapability";
552   case SpvOpTypeVoid: return "SpvOpTypeVoid";
553   case SpvOpTypeBool: return "SpvOpTypeBool";
554   case SpvOpTypeInt: return "SpvOpTypeInt";
555   case SpvOpTypeFloat: return "SpvOpTypeFloat";
556   case SpvOpTypeVector: return "SpvOpTypeVector";
557   case SpvOpTypeMatrix: return "SpvOpTypeMatrix";
558   case SpvOpTypeImage: return "SpvOpTypeImage";
559   case SpvOpTypeSampler: return "SpvOpTypeSampler";
560   case SpvOpTypeSampledImage: return "SpvOpTypeSampledImage";
561   case SpvOpTypeArray: return "SpvOpTypeArray";
562   case SpvOpTypeRuntimeArray: return "SpvOpTypeRuntimeArray";
563   case SpvOpTypeStruct: return "SpvOpTypeStruct";
564   case SpvOpTypeOpaque: return "SpvOpTypeOpaque";
565   case SpvOpTypePointer: return "SpvOpTypePointer";
566   case SpvOpTypeFunction: return "SpvOpTypeFunction";
567   case SpvOpTypeEvent: return "SpvOpTypeEvent";
568   case SpvOpTypeDeviceEvent: return "SpvOpTypeDeviceEvent";
569   case SpvOpTypeReserveId: return "SpvOpTypeReserveId";
570   case SpvOpTypeQueue: return "SpvOpTypeQueue";
571   case SpvOpTypePipe: return "SpvOpTypePipe";
572   case SpvOpTypeForwardPointer: return "SpvOpTypeForwardPointer";
573   case SpvOpConstantTrue: return "SpvOpConstantTrue";
574   case SpvOpConstantFalse: return "SpvOpConstantFalse";
575   case SpvOpConstant: return "SpvOpConstant";
576   case SpvOpConstantComposite: return "SpvOpConstantComposite";
577   case SpvOpConstantSampler: return "SpvOpConstantSampler";
578   case SpvOpConstantNull: return "SpvOpConstantNull";
579   case SpvOpSpecConstantTrue: return "SpvOpSpecConstantTrue";
580   case SpvOpSpecConstantFalse: return "SpvOpSpecConstantFalse";
581   case SpvOpSpecConstant: return "SpvOpSpecConstant";
582   case SpvOpSpecConstantComposite: return "SpvOpSpecConstantComposite";
583   case SpvOpSpecConstantOp: return "SpvOpSpecConstantOp";
584   case SpvOpFunction: return "SpvOpFunction";
585   case SpvOpFunctionParameter: return "SpvOpFunctionParameter";
586   case SpvOpFunctionEnd: return "SpvOpFunctionEnd";
587   case SpvOpFunctionCall: return "SpvOpFunctionCall";
588   case SpvOpVariable: return "SpvOpVariable";
589   case SpvOpImageTexelPointer: return "SpvOpImageTexelPointer";
590   case SpvOpLoad: return "SpvOpLoad";
591   case SpvOpStore: return "SpvOpStore";
592   case SpvOpCopyMemory: return "SpvOpCopyMemory";
593   case SpvOpCopyMemorySized: return "SpvOpCopyMemorySized";
594   case SpvOpAccessChain: return "SpvOpAccessChain";
595   case SpvOpInBoundsAccessChain: return "SpvOpInBoundsAccessChain";
596   case SpvOpPtrAccessChain: return "SpvOpPtrAccessChain";
597   case SpvOpArrayLength: return "SpvOpArrayLength";
598   case SpvOpGenericPtrMemSemantics: return "SpvOpGenericPtrMemSemantics";
599   case SpvOpInBoundsPtrAccessChain: return "SpvOpInBoundsPtrAccessChain";
600   case SpvOpDecorate: return "SpvOpDecorate";
601   case SpvOpMemberDecorate: return "SpvOpMemberDecorate";
602   case SpvOpDecorationGroup: return "SpvOpDecorationGroup";
603   case SpvOpGroupDecorate: return "SpvOpGroupDecorate";
604   case SpvOpGroupMemberDecorate: return "SpvOpGroupMemberDecorate";
605   case SpvOpVectorExtractDynamic: return "SpvOpVectorExtractDynamic";
606   case SpvOpVectorInsertDynamic: return "SpvOpVectorInsertDynamic";
607   case SpvOpVectorShuffle: return "SpvOpVectorShuffle";
608   case SpvOpCompositeConstruct: return "SpvOpCompositeConstruct";
609   case SpvOpCompositeExtract: return "SpvOpCompositeExtract";
610   case SpvOpCompositeInsert: return "SpvOpCompositeInsert";
611   case SpvOpCopyObject: return "SpvOpCopyObject";
612   case SpvOpTranspose: return "SpvOpTranspose";
613   case SpvOpSampledImage: return "SpvOpSampledImage";
614   case SpvOpImageSampleImplicitLod: return "SpvOpImageSampleImplicitLod";
615   case SpvOpImageSampleExplicitLod: return "SpvOpImageSampleExplicitLod";
616   case SpvOpImageSampleDrefImplicitLod: return "SpvOpImageSampleDrefImplicitLod";
617   case SpvOpImageSampleDrefExplicitLod: return "SpvOpImageSampleDrefExplicitLod";
618   case SpvOpImageSampleProjImplicitLod: return "SpvOpImageSampleProjImplicitLod";
619   case SpvOpImageSampleProjExplicitLod: return "SpvOpImageSampleProjExplicitLod";
620   case SpvOpImageSampleProjDrefImplicitLod: return "SpvOpImageSampleProjDrefImplicitLod";
621   case SpvOpImageSampleProjDrefExplicitLod: return "SpvOpImageSampleProjDrefExplicitLod";
622   case SpvOpImageFetch: return "SpvOpImageFetch";
623   case SpvOpImageGather: return "SpvOpImageGather";
624   case SpvOpImageDrefGather: return "SpvOpImageDrefGather";
625   case SpvOpImageRead: return "SpvOpImageRead";
626   case SpvOpImageWrite: return "SpvOpImageWrite";
627   case SpvOpImage: return "SpvOpImage";
628   case SpvOpImageQueryFormat: return "SpvOpImageQueryFormat";
629   case SpvOpImageQueryOrder: return "SpvOpImageQueryOrder";
630   case SpvOpImageQuerySizeLod: return "SpvOpImageQuerySizeLod";
631   case SpvOpImageQuerySize: return "SpvOpImageQuerySize";
632   case SpvOpImageQueryLod: return "SpvOpImageQueryLod";
633   case SpvOpImageQueryLevels: return "SpvOpImageQueryLevels";
634   case SpvOpImageQuerySamples: return "SpvOpImageQuerySamples";
635   case SpvOpConvertFToU: return "SpvOpConvertFToU";
636   case SpvOpConvertFToS: return "SpvOpConvertFToS";
637   case SpvOpConvertSToF: return "SpvOpConvertSToF";
638   case SpvOpConvertUToF: return "SpvOpConvertUToF";
639   case SpvOpUConvert: return "SpvOpUConvert";
640   case SpvOpSConvert: return "SpvOpSConvert";
641   case SpvOpFConvert: return "SpvOpFConvert";
642   case SpvOpQuantizeToF16: return "SpvOpQuantizeToF16";
643   case SpvOpConvertPtrToU: return "SpvOpConvertPtrToU";
644   case SpvOpSatConvertSToU: return "SpvOpSatConvertSToU";
645   case SpvOpSatConvertUToS: return "SpvOpSatConvertUToS";
646   case SpvOpConvertUToPtr: return "SpvOpConvertUToPtr";
647   case SpvOpPtrCastToGeneric: return "SpvOpPtrCastToGeneric";
648   case SpvOpGenericCastToPtr: return "SpvOpGenericCastToPtr";
649   case SpvOpGenericCastToPtrExplicit: return "SpvOpGenericCastToPtrExplicit";
650   case SpvOpBitcast: return "SpvOpBitcast";
651   case SpvOpSNegate: return "SpvOpSNegate";
652   case SpvOpFNegate: return "SpvOpFNegate";
653   case SpvOpIAdd: return "SpvOpIAdd";
654   case SpvOpFAdd: return "SpvOpFAdd";
655   case SpvOpISub: return "SpvOpISub";
656   case SpvOpFSub: return "SpvOpFSub";
657   case SpvOpIMul: return "SpvOpIMul";
658   case SpvOpFMul: return "SpvOpFMul";
659   case SpvOpUDiv: return "SpvOpUDiv";
660   case SpvOpSDiv: return "SpvOpSDiv";
661   case SpvOpFDiv: return "SpvOpFDiv";
662   case SpvOpUMod: return "SpvOpUMod";
663   case SpvOpSRem: return "SpvOpSRem";
664   case SpvOpSMod: return "SpvOpSMod";
665   case SpvOpFRem: return "SpvOpFRem";
666   case SpvOpFMod: return "SpvOpFMod";
667   case SpvOpVectorTimesScalar: return "SpvOpVectorTimesScalar";
668   case SpvOpMatrixTimesScalar: return "SpvOpMatrixTimesScalar";
669   case SpvOpVectorTimesMatrix: return "SpvOpVectorTimesMatrix";
670   case SpvOpMatrixTimesVector: return "SpvOpMatrixTimesVector";
671   case SpvOpMatrixTimesMatrix: return "SpvOpMatrixTimesMatrix";
672   case SpvOpOuterProduct: return "SpvOpOuterProduct";
673   case SpvOpDot: return "SpvOpDot";
674   case SpvOpIAddCarry: return "SpvOpIAddCarry";
675   case SpvOpISubBorrow: return "SpvOpISubBorrow";
676   case SpvOpUMulExtended: return "SpvOpUMulExtended";
677   case SpvOpSMulExtended: return "SpvOpSMulExtended";
678   case SpvOpAny: return "SpvOpAny";
679   case SpvOpAll: return "SpvOpAll";
680   case SpvOpIsNan: return "SpvOpIsNan";
681   case SpvOpIsInf: return "SpvOpIsInf";
682   case SpvOpIsFinite: return "SpvOpIsFinite";
683   case SpvOpIsNormal: return "SpvOpIsNormal";
684   case SpvOpSignBitSet: return "SpvOpSignBitSet";
685   case SpvOpLessOrGreater: return "SpvOpLessOrGreater";
686   case SpvOpOrdered: return "SpvOpOrdered";
687   case SpvOpUnordered: return "SpvOpUnordered";
688   case SpvOpLogicalEqual: return "SpvOpLogicalEqual";
689   case SpvOpLogicalNotEqual: return "SpvOpLogicalNotEqual";
690   case SpvOpLogicalOr: return "SpvOpLogicalOr";
691   case SpvOpLogicalAnd: return "SpvOpLogicalAnd";
692   case SpvOpLogicalNot: return "SpvOpLogicalNot";
693   case SpvOpSelect: return "SpvOpSelect";
694   case SpvOpIEqual: return "SpvOpIEqual";
695   case SpvOpINotEqual: return "SpvOpINotEqual";
696   case SpvOpUGreaterThan: return "SpvOpUGreaterThan";
697   case SpvOpSGreaterThan: return "SpvOpSGreaterThan";
698   case SpvOpUGreaterThanEqual: return "SpvOpUGreaterThanEqual";
699   case SpvOpSGreaterThanEqual: return "SpvOpSGreaterThanEqual";
700   case SpvOpULessThan: return "SpvOpULessThan";
701   case SpvOpSLessThan: return "SpvOpSLessThan";
702   case SpvOpULessThanEqual: return "SpvOpULessThanEqual";
703   case SpvOpSLessThanEqual: return "SpvOpSLessThanEqual";
704   case SpvOpFOrdEqual: return "SpvOpFOrdEqual";
705   case SpvOpFUnordEqual: return "SpvOpFUnordEqual";
706   case SpvOpFOrdNotEqual: return "SpvOpFOrdNotEqual";
707   case SpvOpFUnordNotEqual: return "SpvOpFUnordNotEqual";
708   case SpvOpFOrdLessThan: return "SpvOpFOrdLessThan";
709   case SpvOpFUnordLessThan: return "SpvOpFUnordLessThan";
710   case SpvOpFOrdGreaterThan: return "SpvOpFOrdGreaterThan";
711   case SpvOpFUnordGreaterThan: return "SpvOpFUnordGreaterThan";
712   case SpvOpFOrdLessThanEqual: return "SpvOpFOrdLessThanEqual";
713   case SpvOpFUnordLessThanEqual: return "SpvOpFUnordLessThanEqual";
714   case SpvOpFOrdGreaterThanEqual: return "SpvOpFOrdGreaterThanEqual";
715   case SpvOpFUnordGreaterThanEqual: return "SpvOpFUnordGreaterThanEqual";
716   case SpvOpShiftRightLogical: return "SpvOpShiftRightLogical";
717   case SpvOpShiftRightArithmetic: return "SpvOpShiftRightArithmetic";
718   case SpvOpShiftLeftLogical: return "SpvOpShiftLeftLogical";
719   case SpvOpBitwiseOr: return "SpvOpBitwiseOr";
720   case SpvOpBitwiseXor: return "SpvOpBitwiseXor";
721   case SpvOpBitwiseAnd: return "SpvOpBitwiseAnd";
722   case SpvOpNot: return "SpvOpNot";
723   case SpvOpBitFieldInsert: return "SpvOpBitFieldInsert";
724   case SpvOpBitFieldSExtract: return "SpvOpBitFieldSExtract";
725   case SpvOpBitFieldUExtract: return "SpvOpBitFieldUExtract";
726   case SpvOpBitReverse: return "SpvOpBitReverse";
727   case SpvOpBitCount: return "SpvOpBitCount";
728   case SpvOpDPdx: return "SpvOpDPdx";
729   case SpvOpDPdy: return "SpvOpDPdy";
730   case SpvOpFwidth: return "SpvOpFwidth";
731   case SpvOpDPdxFine: return "SpvOpDPdxFine";
732   case SpvOpDPdyFine: return "SpvOpDPdyFine";
733   case SpvOpFwidthFine: return "SpvOpFwidthFine";
734   case SpvOpDPdxCoarse: return "SpvOpDPdxCoarse";
735   case SpvOpDPdyCoarse: return "SpvOpDPdyCoarse";
736   case SpvOpFwidthCoarse: return "SpvOpFwidthCoarse";
737   case SpvOpEmitVertex: return "SpvOpEmitVertex";
738   case SpvOpEndPrimitive: return "SpvOpEndPrimitive";
739   case SpvOpEmitStreamVertex: return "SpvOpEmitStreamVertex";
740   case SpvOpEndStreamPrimitive: return "SpvOpEndStreamPrimitive";
741   case SpvOpControlBarrier: return "SpvOpControlBarrier";
742   case SpvOpMemoryBarrier: return "SpvOpMemoryBarrier";
743   case SpvOpAtomicLoad: return "SpvOpAtomicLoad";
744   case SpvOpAtomicStore: return "SpvOpAtomicStore";
745   case SpvOpAtomicExchange: return "SpvOpAtomicExchange";
746   case SpvOpAtomicCompareExchange: return "SpvOpAtomicCompareExchange";
747   case SpvOpAtomicCompareExchangeWeak: return "SpvOpAtomicCompareExchangeWeak";
748   case SpvOpAtomicIIncrement: return "SpvOpAtomicIIncrement";
749   case SpvOpAtomicIDecrement: return "SpvOpAtomicIDecrement";
750   case SpvOpAtomicIAdd: return "SpvOpAtomicIAdd";
751   case SpvOpAtomicISub: return "SpvOpAtomicISub";
752   case SpvOpAtomicSMin: return "SpvOpAtomicSMin";
753   case SpvOpAtomicUMin: return "SpvOpAtomicUMin";
754   case SpvOpAtomicSMax: return "SpvOpAtomicSMax";
755   case SpvOpAtomicUMax: return "SpvOpAtomicUMax";
756   case SpvOpAtomicAnd: return "SpvOpAtomicAnd";
757   case SpvOpAtomicOr: return "SpvOpAtomicOr";
758   case SpvOpAtomicXor: return "SpvOpAtomicXor";
759   case SpvOpPhi: return "SpvOpPhi";
760   case SpvOpLoopMerge: return "SpvOpLoopMerge";
761   case SpvOpSelectionMerge: return "SpvOpSelectionMerge";
762   case SpvOpLabel: return "SpvOpLabel";
763   case SpvOpBranch: return "SpvOpBranch";
764   case SpvOpBranchConditional: return "SpvOpBranchConditional";
765   case SpvOpSwitch: return "SpvOpSwitch";
766   case SpvOpKill: return "SpvOpKill";
767   case SpvOpReturn: return "SpvOpReturn";
768   case SpvOpReturnValue: return "SpvOpReturnValue";
769   case SpvOpUnreachable: return "SpvOpUnreachable";
770   case SpvOpLifetimeStart: return "SpvOpLifetimeStart";
771   case SpvOpLifetimeStop: return "SpvOpLifetimeStop";
772   case SpvOpGroupAsyncCopy: return "SpvOpGroupAsyncCopy";
773   case SpvOpGroupWaitEvents: return "SpvOpGroupWaitEvents";
774   case SpvOpGroupAll: return "SpvOpGroupAll";
775   case SpvOpGroupAny: return "SpvOpGroupAny";
776   case SpvOpGroupBroadcast: return "SpvOpGroupBroadcast";
777   case SpvOpGroupIAdd: return "SpvOpGroupIAdd";
778   case SpvOpGroupFAdd: return "SpvOpGroupFAdd";
779   case SpvOpGroupFMin: return "SpvOpGroupFMin";
780   case SpvOpGroupUMin: return "SpvOpGroupUMin";
781   case SpvOpGroupSMin: return "SpvOpGroupSMin";
782   case SpvOpGroupFMax: return "SpvOpGroupFMax";
783   case SpvOpGroupUMax: return "SpvOpGroupUMax";
784   case SpvOpGroupSMax: return "SpvOpGroupSMax";
785   case SpvOpReadPipe: return "SpvOpReadPipe";
786   case SpvOpWritePipe: return "SpvOpWritePipe";
787   case SpvOpReservedReadPipe: return "SpvOpReservedReadPipe";
788   case SpvOpReservedWritePipe: return "SpvOpReservedWritePipe";
789   case SpvOpReserveReadPipePackets: return "SpvOpReserveReadPipePackets";
790   case SpvOpReserveWritePipePackets: return "SpvOpReserveWritePipePackets";
791   case SpvOpCommitReadPipe: return "SpvOpCommitReadPipe";
792   case SpvOpCommitWritePipe: return "SpvOpCommitWritePipe";
793   case SpvOpIsValidReserveId: return "SpvOpIsValidReserveId";
794   case SpvOpGetNumPipePackets: return "SpvOpGetNumPipePackets";
795   case SpvOpGetMaxPipePackets: return "SpvOpGetMaxPipePackets";
796   case SpvOpGroupReserveReadPipePackets: return "SpvOpGroupReserveReadPipePackets";
797   case SpvOpGroupReserveWritePipePackets: return "SpvOpGroupReserveWritePipePackets";
798   case SpvOpGroupCommitReadPipe: return "SpvOpGroupCommitReadPipe";
799   case SpvOpGroupCommitWritePipe: return "SpvOpGroupCommitWritePipe";
800   case SpvOpEnqueueMarker: return "SpvOpEnqueueMarker";
801   case SpvOpEnqueueKernel: return "SpvOpEnqueueKernel";
802   case SpvOpGetKernelNDrangeSubGroupCount: return "SpvOpGetKernelNDrangeSubGroupCount";
803   case SpvOpGetKernelNDrangeMaxSubGroupSize: return "SpvOpGetKernelNDrangeMaxSubGroupSize";
804   case SpvOpGetKernelWorkGroupSize: return "SpvOpGetKernelWorkGroupSize";
805   case SpvOpGetKernelPreferredWorkGroupSizeMultiple: return "SpvOpGetKernelPreferredWorkGroupSizeMultiple";
806   case SpvOpRetainEvent: return "SpvOpRetainEvent";
807   case SpvOpReleaseEvent: return "SpvOpReleaseEvent";
808   case SpvOpCreateUserEvent: return "SpvOpCreateUserEvent";
809   case SpvOpIsValidEvent: return "SpvOpIsValidEvent";
810   case SpvOpSetUserEventStatus: return "SpvOpSetUserEventStatus";
811   case SpvOpCaptureEventProfilingInfo: return "SpvOpCaptureEventProfilingInfo";
812   case SpvOpGetDefaultQueue: return "SpvOpGetDefaultQueue";
813   case SpvOpBuildNDRange: return "SpvOpBuildNDRange";
814   case SpvOpImageSparseSampleImplicitLod: return "SpvOpImageSparseSampleImplicitLod";
815   case SpvOpImageSparseSampleExplicitLod: return "SpvOpImageSparseSampleExplicitLod";
816   case SpvOpImageSparseSampleDrefImplicitLod: return "SpvOpImageSparseSampleDrefImplicitLod";
817   case SpvOpImageSparseSampleDrefExplicitLod: return "SpvOpImageSparseSampleDrefExplicitLod";
818   case SpvOpImageSparseSampleProjImplicitLod: return "SpvOpImageSparseSampleProjImplicitLod";
819   case SpvOpImageSparseSampleProjExplicitLod: return "SpvOpImageSparseSampleProjExplicitLod";
820   case SpvOpImageSparseSampleProjDrefImplicitLod: return "SpvOpImageSparseSampleProjDrefImplicitLod";
821   case SpvOpImageSparseSampleProjDrefExplicitLod: return "SpvOpImageSparseSampleProjDrefExplicitLod";
822   case SpvOpImageSparseFetch: return "SpvOpImageSparseFetch";
823   case SpvOpImageSparseGather: return "SpvOpImageSparseGather";
824   case SpvOpImageSparseDrefGather: return "SpvOpImageSparseDrefGather";
825   case SpvOpImageSparseTexelsResident: return "SpvOpImageSparseTexelsResident";
826   case SpvOpNoLine: return "SpvOpNoLine";
827   case SpvOpAtomicFlagTestAndSet: return "SpvOpAtomicFlagTestAndSet";
828   case SpvOpAtomicFlagClear: return "SpvOpAtomicFlagClear";
829   case SpvOpImageSparseRead: return "SpvOpImageSparseRead";
830   case SpvOpSizeOf: return "SpvOpSizeOf";
831   case SpvOpTypePipeStorage: return "SpvOpTypePipeStorage";
832   case SpvOpConstantPipeStorage: return "SpvOpConstantPipeStorage";
833   case SpvOpCreatePipeFromPipeStorage: return "SpvOpCreatePipeFromPipeStorage";
834   case SpvOpGetKernelLocalSizeForSubgroupCount: return "SpvOpGetKernelLocalSizeForSubgroupCount";
835   case SpvOpGetKernelMaxNumSubgroups: return "SpvOpGetKernelMaxNumSubgroups";
836   case SpvOpTypeNamedBarrier: return "SpvOpTypeNamedBarrier";
837   case SpvOpNamedBarrierInitialize: return "SpvOpNamedBarrierInitialize";
838   case SpvOpMemoryNamedBarrier: return "SpvOpMemoryNamedBarrier";
839   case SpvOpModuleProcessed: return "SpvOpModuleProcessed";
840   case SpvOpExecutionModeId: return "SpvOpExecutionModeId";
841   case SpvOpDecorateId: return "SpvOpDecorateId";
842   case SpvOpGroupNonUniformElect: return "SpvOpGroupNonUniformElect";
843   case SpvOpGroupNonUniformAll: return "SpvOpGroupNonUniformAll";
844   case SpvOpGroupNonUniformAny: return "SpvOpGroupNonUniformAny";
845   case SpvOpGroupNonUniformAllEqual: return "SpvOpGroupNonUniformAllEqual";
846   case SpvOpGroupNonUniformBroadcast: return "SpvOpGroupNonUniformBroadcast";
847   case SpvOpGroupNonUniformBroadcastFirst: return "SpvOpGroupNonUniformBroadcastFirst";
848   case SpvOpGroupNonUniformBallot: return "SpvOpGroupNonUniformBallot";
849   case SpvOpGroupNonUniformInverseBallot: return "SpvOpGroupNonUniformInverseBallot";
850   case SpvOpGroupNonUniformBallotBitExtract: return "SpvOpGroupNonUniformBallotBitExtract";
851   case SpvOpGroupNonUniformBallotBitCount: return "SpvOpGroupNonUniformBallotBitCount";
852   case SpvOpGroupNonUniformBallotFindLSB: return "SpvOpGroupNonUniformBallotFindLSB";
853   case SpvOpGroupNonUniformBallotFindMSB: return "SpvOpGroupNonUniformBallotFindMSB";
854   case SpvOpGroupNonUniformShuffle: return "SpvOpGroupNonUniformShuffle";
855   case SpvOpGroupNonUniformShuffleXor: return "SpvOpGroupNonUniformShuffleXor";
856   case SpvOpGroupNonUniformShuffleUp: return "SpvOpGroupNonUniformShuffleUp";
857   case SpvOpGroupNonUniformShuffleDown: return "SpvOpGroupNonUniformShuffleDown";
858   case SpvOpGroupNonUniformIAdd: return "SpvOpGroupNonUniformIAdd";
859   case SpvOpGroupNonUniformFAdd: return "SpvOpGroupNonUniformFAdd";
860   case SpvOpGroupNonUniformIMul: return "SpvOpGroupNonUniformIMul";
861   case SpvOpGroupNonUniformFMul: return "SpvOpGroupNonUniformFMul";
862   case SpvOpGroupNonUniformSMin: return "SpvOpGroupNonUniformSMin";
863   case SpvOpGroupNonUniformUMin: return "SpvOpGroupNonUniformUMin";
864   case SpvOpGroupNonUniformFMin: return "SpvOpGroupNonUniformFMin";
865   case SpvOpGroupNonUniformSMax: return "SpvOpGroupNonUniformSMax";
866   case SpvOpGroupNonUniformUMax: return "SpvOpGroupNonUniformUMax";
867   case SpvOpGroupNonUniformFMax: return "SpvOpGroupNonUniformFMax";
868   case SpvOpGroupNonUniformBitwiseAnd: return "SpvOpGroupNonUniformBitwiseAnd";
869   case SpvOpGroupNonUniformBitwiseOr: return "SpvOpGroupNonUniformBitwiseOr";
870   case SpvOpGroupNonUniformBitwiseXor: return "SpvOpGroupNonUniformBitwiseXor";
871   case SpvOpGroupNonUniformLogicalAnd: return "SpvOpGroupNonUniformLogicalAnd";
872   case SpvOpGroupNonUniformLogicalOr: return "SpvOpGroupNonUniformLogicalOr";
873   case SpvOpGroupNonUniformLogicalXor: return "SpvOpGroupNonUniformLogicalXor";
874   case SpvOpGroupNonUniformQuadBroadcast: return "SpvOpGroupNonUniformQuadBroadcast";
875   case SpvOpGroupNonUniformQuadSwap: return "SpvOpGroupNonUniformQuadSwap";
876   case SpvOpSubgroupBallotKHR: return "SpvOpSubgroupBallotKHR";
877   case SpvOpSubgroupFirstInvocationKHR: return "SpvOpSubgroupFirstInvocationKHR";
878   case SpvOpSubgroupAllKHR: return "SpvOpSubgroupAllKHR";
879   case SpvOpSubgroupAnyKHR: return "SpvOpSubgroupAnyKHR";
880   case SpvOpSubgroupAllEqualKHR: return "SpvOpSubgroupAllEqualKHR";
881   case SpvOpSubgroupReadInvocationKHR: return "SpvOpSubgroupReadInvocationKHR";
882   case SpvOpGroupIAddNonUniformAMD: return "SpvOpGroupIAddNonUniformAMD";
883   case SpvOpGroupFAddNonUniformAMD: return "SpvOpGroupFAddNonUniformAMD";
884   case SpvOpGroupFMinNonUniformAMD: return "SpvOpGroupFMinNonUniformAMD";
885   case SpvOpGroupUMinNonUniformAMD: return "SpvOpGroupUMinNonUniformAMD";
886   case SpvOpGroupSMinNonUniformAMD: return "SpvOpGroupSMinNonUniformAMD";
887   case SpvOpGroupFMaxNonUniformAMD: return "SpvOpGroupFMaxNonUniformAMD";
888   case SpvOpGroupUMaxNonUniformAMD: return "SpvOpGroupUMaxNonUniformAMD";
889   case SpvOpGroupSMaxNonUniformAMD: return "SpvOpGroupSMaxNonUniformAMD";
890   case SpvOpFragmentMaskFetchAMD: return "SpvOpFragmentMaskFetchAMD";
891   case SpvOpFragmentFetchAMD: return "SpvOpFragmentFetchAMD";
892   case SpvOpWritePackedPrimitiveIndices4x8NV: return "SpvOpWritePackedPrimitiveIndices4x8NV";
893   case SpvOpReportIntersectionNV: return "SpvOpReportIntersectionNV";
894   case SpvOpIgnoreIntersectionNV: return "SpvOpIgnoreIntersectionNV";
895   case SpvOpTerminateRayNV: return "SpvOpTerminateRayNV";
896   case SpvOpTraceNV: return "SpvOpTraceNV";
897   case SpvOpTypeAccelerationStructureNV: return "SpvOpTypeAccelerationStructureNV";
898   case SpvOpExecuteCallableNV: return "SpvOpExecuteCallableNV";
899   case SpvOpSubgroupShuffleINTEL: return "SpvOpSubgroupShuffleINTEL";
900   case SpvOpSubgroupShuffleDownINTEL: return "SpvOpSubgroupShuffleDownINTEL";
901   case SpvOpSubgroupShuffleUpINTEL: return "SpvOpSubgroupShuffleUpINTEL";
902   case SpvOpSubgroupShuffleXorINTEL: return "SpvOpSubgroupShuffleXorINTEL";
903   case SpvOpSubgroupBlockReadINTEL: return "SpvOpSubgroupBlockReadINTEL";
904   case SpvOpSubgroupBlockWriteINTEL: return "SpvOpSubgroupBlockWriteINTEL";
905   case SpvOpSubgroupImageBlockReadINTEL: return "SpvOpSubgroupImageBlockReadINTEL";
906   case SpvOpSubgroupImageBlockWriteINTEL: return "SpvOpSubgroupImageBlockWriteINTEL";
907   case SpvOpDecorateStringGOOGLE: return "SpvOpDecorateStringGOOGLE";
908   case SpvOpMemberDecorateStringGOOGLE: return "SpvOpMemberDecorateStringGOOGLE";
909   case SpvOpGroupNonUniformPartitionNV: return "SpvOpGroupNonUniformPartitionNV";
910   case SpvOpImageSampleFootprintNV: return "SpvOpImageSampleFootprintNV";
911   case SpvOpMax: break; /* silence warnings about unhandled enums. */
912   }
913
914   return "unknown";
915}
916