Home | History | Annotate | Download | only in spirv
      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 
     27 const char *
     28 spirv_capability_to_string(SpvCapability v)
     29 {
     30    switch (v) {
     31    case SpvCapabilityMatrix: return "SpvCapabilityMatrix";
     32    case SpvCapabilityShader: return "SpvCapabilityShader";
     33    case SpvCapabilityGeometry: return "SpvCapabilityGeometry";
     34    case SpvCapabilityTessellation: return "SpvCapabilityTessellation";
     35    case SpvCapabilityAddresses: return "SpvCapabilityAddresses";
     36    case SpvCapabilityLinkage: return "SpvCapabilityLinkage";
     37    case SpvCapabilityKernel: return "SpvCapabilityKernel";
     38    case SpvCapabilityVector16: return "SpvCapabilityVector16";
     39    case SpvCapabilityFloat16Buffer: return "SpvCapabilityFloat16Buffer";
     40    case SpvCapabilityFloat16: return "SpvCapabilityFloat16";
     41    case SpvCapabilityFloat64: return "SpvCapabilityFloat64";
     42    case SpvCapabilityInt64: return "SpvCapabilityInt64";
     43    case SpvCapabilityInt64Atomics: return "SpvCapabilityInt64Atomics";
     44    case SpvCapabilityImageBasic: return "SpvCapabilityImageBasic";
     45    case SpvCapabilityImageReadWrite: return "SpvCapabilityImageReadWrite";
     46    case SpvCapabilityImageMipmap: return "SpvCapabilityImageMipmap";
     47    case SpvCapabilityPipes: return "SpvCapabilityPipes";
     48    case SpvCapabilityGroups: return "SpvCapabilityGroups";
     49    case SpvCapabilityDeviceEnqueue: return "SpvCapabilityDeviceEnqueue";
     50    case SpvCapabilityLiteralSampler: return "SpvCapabilityLiteralSampler";
     51    case SpvCapabilityAtomicStorage: return "SpvCapabilityAtomicStorage";
     52    case SpvCapabilityInt16: return "SpvCapabilityInt16";
     53    case SpvCapabilityTessellationPointSize: return "SpvCapabilityTessellationPointSize";
     54    case SpvCapabilityGeometryPointSize: return "SpvCapabilityGeometryPointSize";
     55    case SpvCapabilityImageGatherExtended: return "SpvCapabilityImageGatherExtended";
     56    case SpvCapabilityStorageImageMultisample: return "SpvCapabilityStorageImageMultisample";
     57    case SpvCapabilityUniformBufferArrayDynamicIndexing: return "SpvCapabilityUniformBufferArrayDynamicIndexing";
     58    case SpvCapabilitySampledImageArrayDynamicIndexing: return "SpvCapabilitySampledImageArrayDynamicIndexing";
     59    case SpvCapabilityStorageBufferArrayDynamicIndexing: return "SpvCapabilityStorageBufferArrayDynamicIndexing";
     60    case SpvCapabilityStorageImageArrayDynamicIndexing: return "SpvCapabilityStorageImageArrayDynamicIndexing";
     61    case SpvCapabilityClipDistance: return "SpvCapabilityClipDistance";
     62    case SpvCapabilityCullDistance: return "SpvCapabilityCullDistance";
     63    case SpvCapabilityImageCubeArray: return "SpvCapabilityImageCubeArray";
     64    case SpvCapabilitySampleRateShading: return "SpvCapabilitySampleRateShading";
     65    case SpvCapabilityImageRect: return "SpvCapabilityImageRect";
     66    case SpvCapabilitySampledRect: return "SpvCapabilitySampledRect";
     67    case SpvCapabilityGenericPointer: return "SpvCapabilityGenericPointer";
     68    case SpvCapabilityInt8: return "SpvCapabilityInt8";
     69    case SpvCapabilityInputAttachment: return "SpvCapabilityInputAttachment";
     70    case SpvCapabilitySparseResidency: return "SpvCapabilitySparseResidency";
     71    case SpvCapabilityMinLod: return "SpvCapabilityMinLod";
     72    case SpvCapabilitySampled1D: return "SpvCapabilitySampled1D";
     73    case SpvCapabilityImage1D: return "SpvCapabilityImage1D";
     74    case SpvCapabilitySampledCubeArray: return "SpvCapabilitySampledCubeArray";
     75    case SpvCapabilitySampledBuffer: return "SpvCapabilitySampledBuffer";
     76    case SpvCapabilityImageBuffer: return "SpvCapabilityImageBuffer";
     77    case SpvCapabilityImageMSArray: return "SpvCapabilityImageMSArray";
     78    case SpvCapabilityStorageImageExtendedFormats: return "SpvCapabilityStorageImageExtendedFormats";
     79    case SpvCapabilityImageQuery: return "SpvCapabilityImageQuery";
     80    case SpvCapabilityDerivativeControl: return "SpvCapabilityDerivativeControl";
     81    case SpvCapabilityInterpolationFunction: return "SpvCapabilityInterpolationFunction";
     82    case SpvCapabilityTransformFeedback: return "SpvCapabilityTransformFeedback";
     83    case SpvCapabilityGeometryStreams: return "SpvCapabilityGeometryStreams";
     84    case SpvCapabilityStorageImageReadWithoutFormat: return "SpvCapabilityStorageImageReadWithoutFormat";
     85    case SpvCapabilityStorageImageWriteWithoutFormat: return "SpvCapabilityStorageImageWriteWithoutFormat";
     86    case SpvCapabilityMultiViewport: return "SpvCapabilityMultiViewport";
     87    case SpvCapabilitySubgroupDispatch: return "SpvCapabilitySubgroupDispatch";
     88    case SpvCapabilityNamedBarrier: return "SpvCapabilityNamedBarrier";
     89    case SpvCapabilityPipeStorage: return "SpvCapabilityPipeStorage";
     90    case SpvCapabilitySubgroupBallotKHR: return "SpvCapabilitySubgroupBallotKHR";
     91    case SpvCapabilityDrawParameters: return "SpvCapabilityDrawParameters";
     92    case SpvCapabilitySubgroupVoteKHR: return "SpvCapabilitySubgroupVoteKHR";
     93    case SpvCapabilityStorageBuffer16BitAccess: return "SpvCapabilityStorageBuffer16BitAccess";
     94    case SpvCapabilityUniformAndStorageBuffer16BitAccess: return "SpvCapabilityUniformAndStorageBuffer16BitAccess";
     95    case SpvCapabilityStoragePushConstant16: return "SpvCapabilityStoragePushConstant16";
     96    case SpvCapabilityStorageInputOutput16: return "SpvCapabilityStorageInputOutput16";
     97    case SpvCapabilityDeviceGroup: return "SpvCapabilityDeviceGroup";
     98    case SpvCapabilityMultiView: return "SpvCapabilityMultiView";
     99    case SpvCapabilityVariablePointersStorageBuffer: return "SpvCapabilityVariablePointersStorageBuffer";
    100    case SpvCapabilityVariablePointers: return "SpvCapabilityVariablePointers";
    101    case SpvCapabilityAtomicStorageOps: return "SpvCapabilityAtomicStorageOps";
    102    case SpvCapabilitySampleMaskPostDepthCoverage: return "SpvCapabilitySampleMaskPostDepthCoverage";
    103    case SpvCapabilityImageGatherBiasLodAMD: return "SpvCapabilityImageGatherBiasLodAMD";
    104    case SpvCapabilityFragmentMaskAMD: return "SpvCapabilityFragmentMaskAMD";
    105    case SpvCapabilityStencilExportEXT: return "SpvCapabilityStencilExportEXT";
    106    case SpvCapabilityImageReadWriteLodAMD: return "SpvCapabilityImageReadWriteLodAMD";
    107    case SpvCapabilitySampleMaskOverrideCoverageNV: return "SpvCapabilitySampleMaskOverrideCoverageNV";
    108    case SpvCapabilityGeometryShaderPassthroughNV: return "SpvCapabilityGeometryShaderPassthroughNV";
    109    case SpvCapabilityShaderViewportIndexLayerEXT: return "SpvCapabilityShaderViewportIndexLayerEXT";
    110    case SpvCapabilityShaderViewportMaskNV: return "SpvCapabilityShaderViewportMaskNV";
    111    case SpvCapabilityShaderStereoViewNV: return "SpvCapabilityShaderStereoViewNV";
    112    case SpvCapabilityPerViewAttributesNV: return "SpvCapabilityPerViewAttributesNV";
    113    case SpvCapabilityFragmentFullyCoveredEXT: return "SpvCapabilityFragmentFullyCoveredEXT";
    114    case SpvCapabilitySubgroupShuffleINTEL: return "SpvCapabilitySubgroupShuffleINTEL";
    115    case SpvCapabilitySubgroupBufferBlockIOINTEL: return "SpvCapabilitySubgroupBufferBlockIOINTEL";
    116    case SpvCapabilitySubgroupImageBlockIOINTEL: return "SpvCapabilitySubgroupImageBlockIOINTEL";
    117    case SpvCapabilityMax: break; /* silence warnings about unhandled enums. */
    118    }
    119 
    120    return "unknown";
    121 }
    122 
    123 const char *
    124 spirv_decoration_to_string(SpvDecoration v)
    125 {
    126    switch (v) {
    127    case SpvDecorationRelaxedPrecision: return "SpvDecorationRelaxedPrecision";
    128    case SpvDecorationSpecId: return "SpvDecorationSpecId";
    129    case SpvDecorationBlock: return "SpvDecorationBlock";
    130    case SpvDecorationBufferBlock: return "SpvDecorationBufferBlock";
    131    case SpvDecorationRowMajor: return "SpvDecorationRowMajor";
    132    case SpvDecorationColMajor: return "SpvDecorationColMajor";
    133    case SpvDecorationArrayStride: return "SpvDecorationArrayStride";
    134    case SpvDecorationMatrixStride: return "SpvDecorationMatrixStride";
    135    case SpvDecorationGLSLShared: return "SpvDecorationGLSLShared";
    136    case SpvDecorationGLSLPacked: return "SpvDecorationGLSLPacked";
    137    case SpvDecorationCPacked: return "SpvDecorationCPacked";
    138    case SpvDecorationBuiltIn: return "SpvDecorationBuiltIn";
    139    case SpvDecorationNoPerspective: return "SpvDecorationNoPerspective";
    140    case SpvDecorationFlat: return "SpvDecorationFlat";
    141    case SpvDecorationPatch: return "SpvDecorationPatch";
    142    case SpvDecorationCentroid: return "SpvDecorationCentroid";
    143    case SpvDecorationSample: return "SpvDecorationSample";
    144    case SpvDecorationInvariant: return "SpvDecorationInvariant";
    145    case SpvDecorationRestrict: return "SpvDecorationRestrict";
    146    case SpvDecorationAliased: return "SpvDecorationAliased";
    147    case SpvDecorationVolatile: return "SpvDecorationVolatile";
    148    case SpvDecorationConstant: return "SpvDecorationConstant";
    149    case SpvDecorationCoherent: return "SpvDecorationCoherent";
    150    case SpvDecorationNonWritable: return "SpvDecorationNonWritable";
    151    case SpvDecorationNonReadable: return "SpvDecorationNonReadable";
    152    case SpvDecorationUniform: return "SpvDecorationUniform";
    153    case SpvDecorationSaturatedConversion: return "SpvDecorationSaturatedConversion";
    154    case SpvDecorationStream: return "SpvDecorationStream";
    155    case SpvDecorationLocation: return "SpvDecorationLocation";
    156    case SpvDecorationComponent: return "SpvDecorationComponent";
    157    case SpvDecorationIndex: return "SpvDecorationIndex";
    158    case SpvDecorationBinding: return "SpvDecorationBinding";
    159    case SpvDecorationDescriptorSet: return "SpvDecorationDescriptorSet";
    160    case SpvDecorationOffset: return "SpvDecorationOffset";
    161    case SpvDecorationXfbBuffer: return "SpvDecorationXfbBuffer";
    162    case SpvDecorationXfbStride: return "SpvDecorationXfbStride";
    163    case SpvDecorationFuncParamAttr: return "SpvDecorationFuncParamAttr";
    164    case SpvDecorationFPRoundingMode: return "SpvDecorationFPRoundingMode";
    165    case SpvDecorationFPFastMathMode: return "SpvDecorationFPFastMathMode";
    166    case SpvDecorationLinkageAttributes: return "SpvDecorationLinkageAttributes";
    167    case SpvDecorationNoContraction: return "SpvDecorationNoContraction";
    168    case SpvDecorationInputAttachmentIndex: return "SpvDecorationInputAttachmentIndex";
    169    case SpvDecorationAlignment: return "SpvDecorationAlignment";
    170    case SpvDecorationMaxByteOffset: return "SpvDecorationMaxByteOffset";
    171    case SpvDecorationAlignmentId: return "SpvDecorationAlignmentId";
    172    case SpvDecorationMaxByteOffsetId: return "SpvDecorationMaxByteOffsetId";
    173    case SpvDecorationExplicitInterpAMD: return "SpvDecorationExplicitInterpAMD";
    174    case SpvDecorationOverrideCoverageNV: return "SpvDecorationOverrideCoverageNV";
    175    case SpvDecorationPassthroughNV: return "SpvDecorationPassthroughNV";
    176    case SpvDecorationViewportRelativeNV: return "SpvDecorationViewportRelativeNV";
    177    case SpvDecorationSecondaryViewportRelativeNV: return "SpvDecorationSecondaryViewportRelativeNV";
    178    case SpvDecorationMax: break; /* silence warnings about unhandled enums. */
    179    }
    180 
    181    return "unknown";
    182 }
    183 
    184 const char *
    185 spirv_op_to_string(SpvOp v)
    186 {
    187    switch (v) {
    188    case SpvOpNop: return "SpvOpNop";
    189    case SpvOpUndef: return "SpvOpUndef";
    190    case SpvOpSourceContinued: return "SpvOpSourceContinued";
    191    case SpvOpSource: return "SpvOpSource";
    192    case SpvOpSourceExtension: return "SpvOpSourceExtension";
    193    case SpvOpName: return "SpvOpName";
    194    case SpvOpMemberName: return "SpvOpMemberName";
    195    case SpvOpString: return "SpvOpString";
    196    case SpvOpLine: return "SpvOpLine";
    197    case SpvOpExtension: return "SpvOpExtension";
    198    case SpvOpExtInstImport: return "SpvOpExtInstImport";
    199    case SpvOpExtInst: return "SpvOpExtInst";
    200    case SpvOpMemoryModel: return "SpvOpMemoryModel";
    201    case SpvOpEntryPoint: return "SpvOpEntryPoint";
    202    case SpvOpExecutionMode: return "SpvOpExecutionMode";
    203    case SpvOpCapability: return "SpvOpCapability";
    204    case SpvOpTypeVoid: return "SpvOpTypeVoid";
    205    case SpvOpTypeBool: return "SpvOpTypeBool";
    206    case SpvOpTypeInt: return "SpvOpTypeInt";
    207    case SpvOpTypeFloat: return "SpvOpTypeFloat";
    208    case SpvOpTypeVector: return "SpvOpTypeVector";
    209    case SpvOpTypeMatrix: return "SpvOpTypeMatrix";
    210    case SpvOpTypeImage: return "SpvOpTypeImage";
    211    case SpvOpTypeSampler: return "SpvOpTypeSampler";
    212    case SpvOpTypeSampledImage: return "SpvOpTypeSampledImage";
    213    case SpvOpTypeArray: return "SpvOpTypeArray";
    214    case SpvOpTypeRuntimeArray: return "SpvOpTypeRuntimeArray";
    215    case SpvOpTypeStruct: return "SpvOpTypeStruct";
    216    case SpvOpTypeOpaque: return "SpvOpTypeOpaque";
    217    case SpvOpTypePointer: return "SpvOpTypePointer";
    218    case SpvOpTypeFunction: return "SpvOpTypeFunction";
    219    case SpvOpTypeEvent: return "SpvOpTypeEvent";
    220    case SpvOpTypeDeviceEvent: return "SpvOpTypeDeviceEvent";
    221    case SpvOpTypeReserveId: return "SpvOpTypeReserveId";
    222    case SpvOpTypeQueue: return "SpvOpTypeQueue";
    223    case SpvOpTypePipe: return "SpvOpTypePipe";
    224    case SpvOpTypeForwardPointer: return "SpvOpTypeForwardPointer";
    225    case SpvOpConstantTrue: return "SpvOpConstantTrue";
    226    case SpvOpConstantFalse: return "SpvOpConstantFalse";
    227    case SpvOpConstant: return "SpvOpConstant";
    228    case SpvOpConstantComposite: return "SpvOpConstantComposite";
    229    case SpvOpConstantSampler: return "SpvOpConstantSampler";
    230    case SpvOpConstantNull: return "SpvOpConstantNull";
    231    case SpvOpSpecConstantTrue: return "SpvOpSpecConstantTrue";
    232    case SpvOpSpecConstantFalse: return "SpvOpSpecConstantFalse";
    233    case SpvOpSpecConstant: return "SpvOpSpecConstant";
    234    case SpvOpSpecConstantComposite: return "SpvOpSpecConstantComposite";
    235    case SpvOpSpecConstantOp: return "SpvOpSpecConstantOp";
    236    case SpvOpFunction: return "SpvOpFunction";
    237    case SpvOpFunctionParameter: return "SpvOpFunctionParameter";
    238    case SpvOpFunctionEnd: return "SpvOpFunctionEnd";
    239    case SpvOpFunctionCall: return "SpvOpFunctionCall";
    240    case SpvOpVariable: return "SpvOpVariable";
    241    case SpvOpImageTexelPointer: return "SpvOpImageTexelPointer";
    242    case SpvOpLoad: return "SpvOpLoad";
    243    case SpvOpStore: return "SpvOpStore";
    244    case SpvOpCopyMemory: return "SpvOpCopyMemory";
    245    case SpvOpCopyMemorySized: return "SpvOpCopyMemorySized";
    246    case SpvOpAccessChain: return "SpvOpAccessChain";
    247    case SpvOpInBoundsAccessChain: return "SpvOpInBoundsAccessChain";
    248    case SpvOpPtrAccessChain: return "SpvOpPtrAccessChain";
    249    case SpvOpArrayLength: return "SpvOpArrayLength";
    250    case SpvOpGenericPtrMemSemantics: return "SpvOpGenericPtrMemSemantics";
    251    case SpvOpInBoundsPtrAccessChain: return "SpvOpInBoundsPtrAccessChain";
    252    case SpvOpDecorate: return "SpvOpDecorate";
    253    case SpvOpMemberDecorate: return "SpvOpMemberDecorate";
    254    case SpvOpDecorationGroup: return "SpvOpDecorationGroup";
    255    case SpvOpGroupDecorate: return "SpvOpGroupDecorate";
    256    case SpvOpGroupMemberDecorate: return "SpvOpGroupMemberDecorate";
    257    case SpvOpVectorExtractDynamic: return "SpvOpVectorExtractDynamic";
    258    case SpvOpVectorInsertDynamic: return "SpvOpVectorInsertDynamic";
    259    case SpvOpVectorShuffle: return "SpvOpVectorShuffle";
    260    case SpvOpCompositeConstruct: return "SpvOpCompositeConstruct";
    261    case SpvOpCompositeExtract: return "SpvOpCompositeExtract";
    262    case SpvOpCompositeInsert: return "SpvOpCompositeInsert";
    263    case SpvOpCopyObject: return "SpvOpCopyObject";
    264    case SpvOpTranspose: return "SpvOpTranspose";
    265    case SpvOpSampledImage: return "SpvOpSampledImage";
    266    case SpvOpImageSampleImplicitLod: return "SpvOpImageSampleImplicitLod";
    267    case SpvOpImageSampleExplicitLod: return "SpvOpImageSampleExplicitLod";
    268    case SpvOpImageSampleDrefImplicitLod: return "SpvOpImageSampleDrefImplicitLod";
    269    case SpvOpImageSampleDrefExplicitLod: return "SpvOpImageSampleDrefExplicitLod";
    270    case SpvOpImageSampleProjImplicitLod: return "SpvOpImageSampleProjImplicitLod";
    271    case SpvOpImageSampleProjExplicitLod: return "SpvOpImageSampleProjExplicitLod";
    272    case SpvOpImageSampleProjDrefImplicitLod: return "SpvOpImageSampleProjDrefImplicitLod";
    273    case SpvOpImageSampleProjDrefExplicitLod: return "SpvOpImageSampleProjDrefExplicitLod";
    274    case SpvOpImageFetch: return "SpvOpImageFetch";
    275    case SpvOpImageGather: return "SpvOpImageGather";
    276    case SpvOpImageDrefGather: return "SpvOpImageDrefGather";
    277    case SpvOpImageRead: return "SpvOpImageRead";
    278    case SpvOpImageWrite: return "SpvOpImageWrite";
    279    case SpvOpImage: return "SpvOpImage";
    280    case SpvOpImageQueryFormat: return "SpvOpImageQueryFormat";
    281    case SpvOpImageQueryOrder: return "SpvOpImageQueryOrder";
    282    case SpvOpImageQuerySizeLod: return "SpvOpImageQuerySizeLod";
    283    case SpvOpImageQuerySize: return "SpvOpImageQuerySize";
    284    case SpvOpImageQueryLod: return "SpvOpImageQueryLod";
    285    case SpvOpImageQueryLevels: return "SpvOpImageQueryLevels";
    286    case SpvOpImageQuerySamples: return "SpvOpImageQuerySamples";
    287    case SpvOpConvertFToU: return "SpvOpConvertFToU";
    288    case SpvOpConvertFToS: return "SpvOpConvertFToS";
    289    case SpvOpConvertSToF: return "SpvOpConvertSToF";
    290    case SpvOpConvertUToF: return "SpvOpConvertUToF";
    291    case SpvOpUConvert: return "SpvOpUConvert";
    292    case SpvOpSConvert: return "SpvOpSConvert";
    293    case SpvOpFConvert: return "SpvOpFConvert";
    294    case SpvOpQuantizeToF16: return "SpvOpQuantizeToF16";
    295    case SpvOpConvertPtrToU: return "SpvOpConvertPtrToU";
    296    case SpvOpSatConvertSToU: return "SpvOpSatConvertSToU";
    297    case SpvOpSatConvertUToS: return "SpvOpSatConvertUToS";
    298    case SpvOpConvertUToPtr: return "SpvOpConvertUToPtr";
    299    case SpvOpPtrCastToGeneric: return "SpvOpPtrCastToGeneric";
    300    case SpvOpGenericCastToPtr: return "SpvOpGenericCastToPtr";
    301    case SpvOpGenericCastToPtrExplicit: return "SpvOpGenericCastToPtrExplicit";
    302    case SpvOpBitcast: return "SpvOpBitcast";
    303    case SpvOpSNegate: return "SpvOpSNegate";
    304    case SpvOpFNegate: return "SpvOpFNegate";
    305    case SpvOpIAdd: return "SpvOpIAdd";
    306    case SpvOpFAdd: return "SpvOpFAdd";
    307    case SpvOpISub: return "SpvOpISub";
    308    case SpvOpFSub: return "SpvOpFSub";
    309    case SpvOpIMul: return "SpvOpIMul";
    310    case SpvOpFMul: return "SpvOpFMul";
    311    case SpvOpUDiv: return "SpvOpUDiv";
    312    case SpvOpSDiv: return "SpvOpSDiv";
    313    case SpvOpFDiv: return "SpvOpFDiv";
    314    case SpvOpUMod: return "SpvOpUMod";
    315    case SpvOpSRem: return "SpvOpSRem";
    316    case SpvOpSMod: return "SpvOpSMod";
    317    case SpvOpFRem: return "SpvOpFRem";
    318    case SpvOpFMod: return "SpvOpFMod";
    319    case SpvOpVectorTimesScalar: return "SpvOpVectorTimesScalar";
    320    case SpvOpMatrixTimesScalar: return "SpvOpMatrixTimesScalar";
    321    case SpvOpVectorTimesMatrix: return "SpvOpVectorTimesMatrix";
    322    case SpvOpMatrixTimesVector: return "SpvOpMatrixTimesVector";
    323    case SpvOpMatrixTimesMatrix: return "SpvOpMatrixTimesMatrix";
    324    case SpvOpOuterProduct: return "SpvOpOuterProduct";
    325    case SpvOpDot: return "SpvOpDot";
    326    case SpvOpIAddCarry: return "SpvOpIAddCarry";
    327    case SpvOpISubBorrow: return "SpvOpISubBorrow";
    328    case SpvOpUMulExtended: return "SpvOpUMulExtended";
    329    case SpvOpSMulExtended: return "SpvOpSMulExtended";
    330    case SpvOpAny: return "SpvOpAny";
    331    case SpvOpAll: return "SpvOpAll";
    332    case SpvOpIsNan: return "SpvOpIsNan";
    333    case SpvOpIsInf: return "SpvOpIsInf";
    334    case SpvOpIsFinite: return "SpvOpIsFinite";
    335    case SpvOpIsNormal: return "SpvOpIsNormal";
    336    case SpvOpSignBitSet: return "SpvOpSignBitSet";
    337    case SpvOpLessOrGreater: return "SpvOpLessOrGreater";
    338    case SpvOpOrdered: return "SpvOpOrdered";
    339    case SpvOpUnordered: return "SpvOpUnordered";
    340    case SpvOpLogicalEqual: return "SpvOpLogicalEqual";
    341    case SpvOpLogicalNotEqual: return "SpvOpLogicalNotEqual";
    342    case SpvOpLogicalOr: return "SpvOpLogicalOr";
    343    case SpvOpLogicalAnd: return "SpvOpLogicalAnd";
    344    case SpvOpLogicalNot: return "SpvOpLogicalNot";
    345    case SpvOpSelect: return "SpvOpSelect";
    346    case SpvOpIEqual: return "SpvOpIEqual";
    347    case SpvOpINotEqual: return "SpvOpINotEqual";
    348    case SpvOpUGreaterThan: return "SpvOpUGreaterThan";
    349    case SpvOpSGreaterThan: return "SpvOpSGreaterThan";
    350    case SpvOpUGreaterThanEqual: return "SpvOpUGreaterThanEqual";
    351    case SpvOpSGreaterThanEqual: return "SpvOpSGreaterThanEqual";
    352    case SpvOpULessThan: return "SpvOpULessThan";
    353    case SpvOpSLessThan: return "SpvOpSLessThan";
    354    case SpvOpULessThanEqual: return "SpvOpULessThanEqual";
    355    case SpvOpSLessThanEqual: return "SpvOpSLessThanEqual";
    356    case SpvOpFOrdEqual: return "SpvOpFOrdEqual";
    357    case SpvOpFUnordEqual: return "SpvOpFUnordEqual";
    358    case SpvOpFOrdNotEqual: return "SpvOpFOrdNotEqual";
    359    case SpvOpFUnordNotEqual: return "SpvOpFUnordNotEqual";
    360    case SpvOpFOrdLessThan: return "SpvOpFOrdLessThan";
    361    case SpvOpFUnordLessThan: return "SpvOpFUnordLessThan";
    362    case SpvOpFOrdGreaterThan: return "SpvOpFOrdGreaterThan";
    363    case SpvOpFUnordGreaterThan: return "SpvOpFUnordGreaterThan";
    364    case SpvOpFOrdLessThanEqual: return "SpvOpFOrdLessThanEqual";
    365    case SpvOpFUnordLessThanEqual: return "SpvOpFUnordLessThanEqual";
    366    case SpvOpFOrdGreaterThanEqual: return "SpvOpFOrdGreaterThanEqual";
    367    case SpvOpFUnordGreaterThanEqual: return "SpvOpFUnordGreaterThanEqual";
    368    case SpvOpShiftRightLogical: return "SpvOpShiftRightLogical";
    369    case SpvOpShiftRightArithmetic: return "SpvOpShiftRightArithmetic";
    370    case SpvOpShiftLeftLogical: return "SpvOpShiftLeftLogical";
    371    case SpvOpBitwiseOr: return "SpvOpBitwiseOr";
    372    case SpvOpBitwiseXor: return "SpvOpBitwiseXor";
    373    case SpvOpBitwiseAnd: return "SpvOpBitwiseAnd";
    374    case SpvOpNot: return "SpvOpNot";
    375    case SpvOpBitFieldInsert: return "SpvOpBitFieldInsert";
    376    case SpvOpBitFieldSExtract: return "SpvOpBitFieldSExtract";
    377    case SpvOpBitFieldUExtract: return "SpvOpBitFieldUExtract";
    378    case SpvOpBitReverse: return "SpvOpBitReverse";
    379    case SpvOpBitCount: return "SpvOpBitCount";
    380    case SpvOpDPdx: return "SpvOpDPdx";
    381    case SpvOpDPdy: return "SpvOpDPdy";
    382    case SpvOpFwidth: return "SpvOpFwidth";
    383    case SpvOpDPdxFine: return "SpvOpDPdxFine";
    384    case SpvOpDPdyFine: return "SpvOpDPdyFine";
    385    case SpvOpFwidthFine: return "SpvOpFwidthFine";
    386    case SpvOpDPdxCoarse: return "SpvOpDPdxCoarse";
    387    case SpvOpDPdyCoarse: return "SpvOpDPdyCoarse";
    388    case SpvOpFwidthCoarse: return "SpvOpFwidthCoarse";
    389    case SpvOpEmitVertex: return "SpvOpEmitVertex";
    390    case SpvOpEndPrimitive: return "SpvOpEndPrimitive";
    391    case SpvOpEmitStreamVertex: return "SpvOpEmitStreamVertex";
    392    case SpvOpEndStreamPrimitive: return "SpvOpEndStreamPrimitive";
    393    case SpvOpControlBarrier: return "SpvOpControlBarrier";
    394    case SpvOpMemoryBarrier: return "SpvOpMemoryBarrier";
    395    case SpvOpAtomicLoad: return "SpvOpAtomicLoad";
    396    case SpvOpAtomicStore: return "SpvOpAtomicStore";
    397    case SpvOpAtomicExchange: return "SpvOpAtomicExchange";
    398    case SpvOpAtomicCompareExchange: return "SpvOpAtomicCompareExchange";
    399    case SpvOpAtomicCompareExchangeWeak: return "SpvOpAtomicCompareExchangeWeak";
    400    case SpvOpAtomicIIncrement: return "SpvOpAtomicIIncrement";
    401    case SpvOpAtomicIDecrement: return "SpvOpAtomicIDecrement";
    402    case SpvOpAtomicIAdd: return "SpvOpAtomicIAdd";
    403    case SpvOpAtomicISub: return "SpvOpAtomicISub";
    404    case SpvOpAtomicSMin: return "SpvOpAtomicSMin";
    405    case SpvOpAtomicUMin: return "SpvOpAtomicUMin";
    406    case SpvOpAtomicSMax: return "SpvOpAtomicSMax";
    407    case SpvOpAtomicUMax: return "SpvOpAtomicUMax";
    408    case SpvOpAtomicAnd: return "SpvOpAtomicAnd";
    409    case SpvOpAtomicOr: return "SpvOpAtomicOr";
    410    case SpvOpAtomicXor: return "SpvOpAtomicXor";
    411    case SpvOpPhi: return "SpvOpPhi";
    412    case SpvOpLoopMerge: return "SpvOpLoopMerge";
    413    case SpvOpSelectionMerge: return "SpvOpSelectionMerge";
    414    case SpvOpLabel: return "SpvOpLabel";
    415    case SpvOpBranch: return "SpvOpBranch";
    416    case SpvOpBranchConditional: return "SpvOpBranchConditional";
    417    case SpvOpSwitch: return "SpvOpSwitch";
    418    case SpvOpKill: return "SpvOpKill";
    419    case SpvOpReturn: return "SpvOpReturn";
    420    case SpvOpReturnValue: return "SpvOpReturnValue";
    421    case SpvOpUnreachable: return "SpvOpUnreachable";
    422    case SpvOpLifetimeStart: return "SpvOpLifetimeStart";
    423    case SpvOpLifetimeStop: return "SpvOpLifetimeStop";
    424    case SpvOpGroupAsyncCopy: return "SpvOpGroupAsyncCopy";
    425    case SpvOpGroupWaitEvents: return "SpvOpGroupWaitEvents";
    426    case SpvOpGroupAll: return "SpvOpGroupAll";
    427    case SpvOpGroupAny: return "SpvOpGroupAny";
    428    case SpvOpGroupBroadcast: return "SpvOpGroupBroadcast";
    429    case SpvOpGroupIAdd: return "SpvOpGroupIAdd";
    430    case SpvOpGroupFAdd: return "SpvOpGroupFAdd";
    431    case SpvOpGroupFMin: return "SpvOpGroupFMin";
    432    case SpvOpGroupUMin: return "SpvOpGroupUMin";
    433    case SpvOpGroupSMin: return "SpvOpGroupSMin";
    434    case SpvOpGroupFMax: return "SpvOpGroupFMax";
    435    case SpvOpGroupUMax: return "SpvOpGroupUMax";
    436    case SpvOpGroupSMax: return "SpvOpGroupSMax";
    437    case SpvOpReadPipe: return "SpvOpReadPipe";
    438    case SpvOpWritePipe: return "SpvOpWritePipe";
    439    case SpvOpReservedReadPipe: return "SpvOpReservedReadPipe";
    440    case SpvOpReservedWritePipe: return "SpvOpReservedWritePipe";
    441    case SpvOpReserveReadPipePackets: return "SpvOpReserveReadPipePackets";
    442    case SpvOpReserveWritePipePackets: return "SpvOpReserveWritePipePackets";
    443    case SpvOpCommitReadPipe: return "SpvOpCommitReadPipe";
    444    case SpvOpCommitWritePipe: return "SpvOpCommitWritePipe";
    445    case SpvOpIsValidReserveId: return "SpvOpIsValidReserveId";
    446    case SpvOpGetNumPipePackets: return "SpvOpGetNumPipePackets";
    447    case SpvOpGetMaxPipePackets: return "SpvOpGetMaxPipePackets";
    448    case SpvOpGroupReserveReadPipePackets: return "SpvOpGroupReserveReadPipePackets";
    449    case SpvOpGroupReserveWritePipePackets: return "SpvOpGroupReserveWritePipePackets";
    450    case SpvOpGroupCommitReadPipe: return "SpvOpGroupCommitReadPipe";
    451    case SpvOpGroupCommitWritePipe: return "SpvOpGroupCommitWritePipe";
    452    case SpvOpEnqueueMarker: return "SpvOpEnqueueMarker";
    453    case SpvOpEnqueueKernel: return "SpvOpEnqueueKernel";
    454    case SpvOpGetKernelNDrangeSubGroupCount: return "SpvOpGetKernelNDrangeSubGroupCount";
    455    case SpvOpGetKernelNDrangeMaxSubGroupSize: return "SpvOpGetKernelNDrangeMaxSubGroupSize";
    456    case SpvOpGetKernelWorkGroupSize: return "SpvOpGetKernelWorkGroupSize";
    457    case SpvOpGetKernelPreferredWorkGroupSizeMultiple: return "SpvOpGetKernelPreferredWorkGroupSizeMultiple";
    458    case SpvOpRetainEvent: return "SpvOpRetainEvent";
    459    case SpvOpReleaseEvent: return "SpvOpReleaseEvent";
    460    case SpvOpCreateUserEvent: return "SpvOpCreateUserEvent";
    461    case SpvOpIsValidEvent: return "SpvOpIsValidEvent";
    462    case SpvOpSetUserEventStatus: return "SpvOpSetUserEventStatus";
    463    case SpvOpCaptureEventProfilingInfo: return "SpvOpCaptureEventProfilingInfo";
    464    case SpvOpGetDefaultQueue: return "SpvOpGetDefaultQueue";
    465    case SpvOpBuildNDRange: return "SpvOpBuildNDRange";
    466    case SpvOpImageSparseSampleImplicitLod: return "SpvOpImageSparseSampleImplicitLod";
    467    case SpvOpImageSparseSampleExplicitLod: return "SpvOpImageSparseSampleExplicitLod";
    468    case SpvOpImageSparseSampleDrefImplicitLod: return "SpvOpImageSparseSampleDrefImplicitLod";
    469    case SpvOpImageSparseSampleDrefExplicitLod: return "SpvOpImageSparseSampleDrefExplicitLod";
    470    case SpvOpImageSparseSampleProjImplicitLod: return "SpvOpImageSparseSampleProjImplicitLod";
    471    case SpvOpImageSparseSampleProjExplicitLod: return "SpvOpImageSparseSampleProjExplicitLod";
    472    case SpvOpImageSparseSampleProjDrefImplicitLod: return "SpvOpImageSparseSampleProjDrefImplicitLod";
    473    case SpvOpImageSparseSampleProjDrefExplicitLod: return "SpvOpImageSparseSampleProjDrefExplicitLod";
    474    case SpvOpImageSparseFetch: return "SpvOpImageSparseFetch";
    475    case SpvOpImageSparseGather: return "SpvOpImageSparseGather";
    476    case SpvOpImageSparseDrefGather: return "SpvOpImageSparseDrefGather";
    477    case SpvOpImageSparseTexelsResident: return "SpvOpImageSparseTexelsResident";
    478    case SpvOpNoLine: return "SpvOpNoLine";
    479    case SpvOpAtomicFlagTestAndSet: return "SpvOpAtomicFlagTestAndSet";
    480    case SpvOpAtomicFlagClear: return "SpvOpAtomicFlagClear";
    481    case SpvOpImageSparseRead: return "SpvOpImageSparseRead";
    482    case SpvOpSizeOf: return "SpvOpSizeOf";
    483    case SpvOpTypePipeStorage: return "SpvOpTypePipeStorage";
    484    case SpvOpConstantPipeStorage: return "SpvOpConstantPipeStorage";
    485    case SpvOpCreatePipeFromPipeStorage: return "SpvOpCreatePipeFromPipeStorage";
    486    case SpvOpGetKernelLocalSizeForSubgroupCount: return "SpvOpGetKernelLocalSizeForSubgroupCount";
    487    case SpvOpGetKernelMaxNumSubgroups: return "SpvOpGetKernelMaxNumSubgroups";
    488    case SpvOpTypeNamedBarrier: return "SpvOpTypeNamedBarrier";
    489    case SpvOpNamedBarrierInitialize: return "SpvOpNamedBarrierInitialize";
    490    case SpvOpMemoryNamedBarrier: return "SpvOpMemoryNamedBarrier";
    491    case SpvOpModuleProcessed: return "SpvOpModuleProcessed";
    492    case SpvOpExecutionModeId: return "SpvOpExecutionModeId";
    493    case SpvOpDecorateId: return "SpvOpDecorateId";
    494    case SpvOpSubgroupBallotKHR: return "SpvOpSubgroupBallotKHR";
    495    case SpvOpSubgroupFirstInvocationKHR: return "SpvOpSubgroupFirstInvocationKHR";
    496    case SpvOpSubgroupAllKHR: return "SpvOpSubgroupAllKHR";
    497    case SpvOpSubgroupAnyKHR: return "SpvOpSubgroupAnyKHR";
    498    case SpvOpSubgroupAllEqualKHR: return "SpvOpSubgroupAllEqualKHR";
    499    case SpvOpSubgroupReadInvocationKHR: return "SpvOpSubgroupReadInvocationKHR";
    500    case SpvOpGroupIAddNonUniformAMD: return "SpvOpGroupIAddNonUniformAMD";
    501    case SpvOpGroupFAddNonUniformAMD: return "SpvOpGroupFAddNonUniformAMD";
    502    case SpvOpGroupFMinNonUniformAMD: return "SpvOpGroupFMinNonUniformAMD";
    503    case SpvOpGroupUMinNonUniformAMD: return "SpvOpGroupUMinNonUniformAMD";
    504    case SpvOpGroupSMinNonUniformAMD: return "SpvOpGroupSMinNonUniformAMD";
    505    case SpvOpGroupFMaxNonUniformAMD: return "SpvOpGroupFMaxNonUniformAMD";
    506    case SpvOpGroupUMaxNonUniformAMD: return "SpvOpGroupUMaxNonUniformAMD";
    507    case SpvOpGroupSMaxNonUniformAMD: return "SpvOpGroupSMaxNonUniformAMD";
    508    case SpvOpFragmentMaskFetchAMD: return "SpvOpFragmentMaskFetchAMD";
    509    case SpvOpFragmentFetchAMD: return "SpvOpFragmentFetchAMD";
    510    case SpvOpSubgroupShuffleINTEL: return "SpvOpSubgroupShuffleINTEL";
    511    case SpvOpSubgroupShuffleDownINTEL: return "SpvOpSubgroupShuffleDownINTEL";
    512    case SpvOpSubgroupShuffleUpINTEL: return "SpvOpSubgroupShuffleUpINTEL";
    513    case SpvOpSubgroupShuffleXorINTEL: return "SpvOpSubgroupShuffleXorINTEL";
    514    case SpvOpSubgroupBlockReadINTEL: return "SpvOpSubgroupBlockReadINTEL";
    515    case SpvOpSubgroupBlockWriteINTEL: return "SpvOpSubgroupBlockWriteINTEL";
    516    case SpvOpSubgroupImageBlockReadINTEL: return "SpvOpSubgroupImageBlockReadINTEL";
    517    case SpvOpSubgroupImageBlockWriteINTEL: return "SpvOpSubgroupImageBlockWriteINTEL";
    518    case SpvOpMax: break; /* silence warnings about unhandled enums. */
    519    }
    520 
    521    return "unknown";
    522 }
    523