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