chromium/third_party/spirv-headers/src/include/spirv/unified1/spirv.hpp

// Copyright (c) 2014-2024 The Khronos Group Inc.
// 
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and/or associated documentation files (the "Materials"),
// to deal in the Materials without restriction, including without limitation
// the rights to use, copy, modify, merge, publish, distribute, sublicense,
// and/or sell copies of the Materials, and to permit persons to whom the
// Materials are furnished to do so, subject to the following conditions:
// 
// The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Materials.
// 
// MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS KHRONOS
// STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS SPECIFICATIONS AND
// HEADER INFORMATION ARE LOCATED AT https://www.khronos.org/registry/ 
// 
// THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
// FROM,OUT OF OR IN CONNECTION WITH THE MATERIALS OR THE USE OR OTHER DEALINGS
// IN THE MATERIALS.

// This header is automatically generated by the same tool that creates
// the Binary Section of the SPIR-V specification.

// Enumeration tokens for SPIR-V, in various styles:
//   C, C++, C++11, JSON, Lua, Python, C#, D, Beef
// 
// - C will have tokens with a "Spv" prefix, e.g.: SpvSourceLanguageGLSL
// - C++ will have tokens in the "spv" name space, e.g.: spv::SourceLanguageGLSL
// - C++11 will use enum classes in the spv namespace, e.g.: spv::SourceLanguage::GLSL
// - Lua will use tables, e.g.: spv.SourceLanguage.GLSL
// - Python will use dictionaries, e.g.: spv['SourceLanguage']['GLSL']
// - C# will use enum classes in the Specification class located in the "Spv" namespace,
//     e.g.: Spv.Specification.SourceLanguage.GLSL
// - D will have tokens under the "spv" module, e.g: spv.SourceLanguage.GLSL
// - Beef will use enum classes in the Specification class located in the "Spv" namespace,
//     e.g.: Spv.Specification.SourceLanguage.GLSL
// 
// Some tokens act like mask values, which can be OR'd together,
// while others are mutually exclusive.  The mask-like ones have
// "Mask" in their name, and a parallel enum that has the shift
// amount (1 << x) for each corresponding enumerant.

#ifndef spirv_HPP
#define spirv_HPP

namespace spv {

Id;

#define SPV_VERSION
#define SPV_REVISION

static const unsigned int MagicNumber =;
static const unsigned int Version =;
static const unsigned int Revision =;
static const unsigned int OpCodeMask =;
static const unsigned int WordCountShift =;

enum SourceLanguage {};

enum ExecutionModel {};

enum AddressingModel {};

enum MemoryModel {};

enum ExecutionMode {};

enum StorageClass {};

enum Dim {};

enum SamplerAddressingMode {};

enum SamplerFilterMode {};

enum ImageFormat {};

enum ImageChannelOrder {};

enum ImageChannelDataType {};

enum ImageOperandsShift {};

enum ImageOperandsMask {};

enum FPFastMathModeShift {};

enum FPFastMathModeMask {};

enum FPRoundingMode {};

enum LinkageType {};

enum AccessQualifier {};

enum FunctionParameterAttribute {};

enum Decoration {};

enum BuiltIn {};

enum SelectionControlShift {};

enum SelectionControlMask {};

enum LoopControlShift {};

enum LoopControlMask {};

enum FunctionControlShift {};

enum FunctionControlMask {};

enum MemorySemanticsShift {};

enum MemorySemanticsMask {};

enum MemoryAccessShift {};

enum MemoryAccessMask {};

enum Scope {};

enum GroupOperation {};

enum KernelEnqueueFlags {};

enum KernelProfilingInfoShift {};

enum KernelProfilingInfoMask {};

enum Capability {};

enum RayFlagsShift {};

enum RayFlagsMask {};

enum RayQueryIntersection {};

enum RayQueryCommittedIntersectionType {};

enum RayQueryCandidateIntersectionType {};

enum FragmentShadingRateShift {};

enum FragmentShadingRateMask {};

enum FPDenormMode {};

enum FPOperationMode {};

enum QuantizationModes {};

enum OverflowModes {};

enum PackedVectorFormat {};

enum CooperativeMatrixOperandsShift {};

enum CooperativeMatrixOperandsMask {};

enum CooperativeMatrixLayout {};

enum CooperativeMatrixUse {};

enum InitializationModeQualifier {};

enum HostAccessQualifier {};

enum LoadCacheControl {};

enum StoreCacheControl {};

enum NamedMaximumNumberOfRegisters {};

enum RawAccessChainOperandsShift {};

enum RawAccessChainOperandsMask {};

enum FPEncoding {};

enum Op {};

#ifdef SPV_ENABLE_UTILITY_CODE
#ifndef __cplusplus
#include <stdbool.h>
#endif
inline void HasResultAndType(Op opcode, bool *hasResult, bool *hasResultType) {
    *hasResult = *hasResultType = false;
    switch (opcode) {
    default: /* unknown opcode */ break;
    case OpNop: *hasResult = false; *hasResultType = false; break;
    case OpUndef: *hasResult = true; *hasResultType = true; break;
    case OpSourceContinued: *hasResult = false; *hasResultType = false; break;
    case OpSource: *hasResult = false; *hasResultType = false; break;
    case OpSourceExtension: *hasResult = false; *hasResultType = false; break;
    case OpName: *hasResult = false; *hasResultType = false; break;
    case OpMemberName: *hasResult = false; *hasResultType = false; break;
    case OpString: *hasResult = true; *hasResultType = false; break;
    case OpLine: *hasResult = false; *hasResultType = false; break;
    case OpExtension: *hasResult = false; *hasResultType = false; break;
    case OpExtInstImport: *hasResult = true; *hasResultType = false; break;
    case OpExtInst: *hasResult = true; *hasResultType = true; break;
    case OpMemoryModel: *hasResult = false; *hasResultType = false; break;
    case OpEntryPoint: *hasResult = false; *hasResultType = false; break;
    case OpExecutionMode: *hasResult = false; *hasResultType = false; break;
    case OpCapability: *hasResult = false; *hasResultType = false; break;
    case OpTypeVoid: *hasResult = true; *hasResultType = false; break;
    case OpTypeBool: *hasResult = true; *hasResultType = false; break;
    case OpTypeInt: *hasResult = true; *hasResultType = false; break;
    case OpTypeFloat: *hasResult = true; *hasResultType = false; break;
    case OpTypeVector: *hasResult = true; *hasResultType = false; break;
    case OpTypeMatrix: *hasResult = true; *hasResultType = false; break;
    case OpTypeImage: *hasResult = true; *hasResultType = false; break;
    case OpTypeSampler: *hasResult = true; *hasResultType = false; break;
    case OpTypeSampledImage: *hasResult = true; *hasResultType = false; break;
    case OpTypeArray: *hasResult = true; *hasResultType = false; break;
    case OpTypeRuntimeArray: *hasResult = true; *hasResultType = false; break;
    case OpTypeStruct: *hasResult = true; *hasResultType = false; break;
    case OpTypeOpaque: *hasResult = true; *hasResultType = false; break;
    case OpTypePointer: *hasResult = true; *hasResultType = false; break;
    case OpTypeFunction: *hasResult = true; *hasResultType = false; break;
    case OpTypeEvent: *hasResult = true; *hasResultType = false; break;
    case OpTypeDeviceEvent: *hasResult = true; *hasResultType = false; break;
    case OpTypeReserveId: *hasResult = true; *hasResultType = false; break;
    case OpTypeQueue: *hasResult = true; *hasResultType = false; break;
    case OpTypePipe: *hasResult = true; *hasResultType = false; break;
    case OpTypeForwardPointer: *hasResult = false; *hasResultType = false; break;
    case OpConstantTrue: *hasResult = true; *hasResultType = true; break;
    case OpConstantFalse: *hasResult = true; *hasResultType = true; break;
    case OpConstant: *hasResult = true; *hasResultType = true; break;
    case OpConstantComposite: *hasResult = true; *hasResultType = true; break;
    case OpConstantSampler: *hasResult = true; *hasResultType = true; break;
    case OpConstantNull: *hasResult = true; *hasResultType = true; break;
    case OpSpecConstantTrue: *hasResult = true; *hasResultType = true; break;
    case OpSpecConstantFalse: *hasResult = true; *hasResultType = true; break;
    case OpSpecConstant: *hasResult = true; *hasResultType = true; break;
    case OpSpecConstantComposite: *hasResult = true; *hasResultType = true; break;
    case OpSpecConstantOp: *hasResult = true; *hasResultType = true; break;
    case OpFunction: *hasResult = true; *hasResultType = true; break;
    case OpFunctionParameter: *hasResult = true; *hasResultType = true; break;
    case OpFunctionEnd: *hasResult = false; *hasResultType = false; break;
    case OpFunctionCall: *hasResult = true; *hasResultType = true; break;
    case OpVariable: *hasResult = true; *hasResultType = true; break;
    case OpImageTexelPointer: *hasResult = true; *hasResultType = true; break;
    case OpLoad: *hasResult = true; *hasResultType = true; break;
    case OpStore: *hasResult = false; *hasResultType = false; break;
    case OpCopyMemory: *hasResult = false; *hasResultType = false; break;
    case OpCopyMemorySized: *hasResult = false; *hasResultType = false; break;
    case OpAccessChain: *hasResult = true; *hasResultType = true; break;
    case OpInBoundsAccessChain: *hasResult = true; *hasResultType = true; break;
    case OpPtrAccessChain: *hasResult = true; *hasResultType = true; break;
    case OpArrayLength: *hasResult = true; *hasResultType = true; break;
    case OpGenericPtrMemSemantics: *hasResult = true; *hasResultType = true; break;
    case OpInBoundsPtrAccessChain: *hasResult = true; *hasResultType = true; break;
    case OpDecorate: *hasResult = false; *hasResultType = false; break;
    case OpMemberDecorate: *hasResult = false; *hasResultType = false; break;
    case OpDecorationGroup: *hasResult = true; *hasResultType = false; break;
    case OpGroupDecorate: *hasResult = false; *hasResultType = false; break;
    case OpGroupMemberDecorate: *hasResult = false; *hasResultType = false; break;
    case OpVectorExtractDynamic: *hasResult = true; *hasResultType = true; break;
    case OpVectorInsertDynamic: *hasResult = true; *hasResultType = true; break;
    case OpVectorShuffle: *hasResult = true; *hasResultType = true; break;
    case OpCompositeConstruct: *hasResult = true; *hasResultType = true; break;
    case OpCompositeExtract: *hasResult = true; *hasResultType = true; break;
    case OpCompositeInsert: *hasResult = true; *hasResultType = true; break;
    case OpCopyObject: *hasResult = true; *hasResultType = true; break;
    case OpTranspose: *hasResult = true; *hasResultType = true; break;
    case OpSampledImage: *hasResult = true; *hasResultType = true; break;
    case OpImageSampleImplicitLod: *hasResult = true; *hasResultType = true; break;
    case OpImageSampleExplicitLod: *hasResult = true; *hasResultType = true; break;
    case OpImageSampleDrefImplicitLod: *hasResult = true; *hasResultType = true; break;
    case OpImageSampleDrefExplicitLod: *hasResult = true; *hasResultType = true; break;
    case OpImageSampleProjImplicitLod: *hasResult = true; *hasResultType = true; break;
    case OpImageSampleProjExplicitLod: *hasResult = true; *hasResultType = true; break;
    case OpImageSampleProjDrefImplicitLod: *hasResult = true; *hasResultType = true; break;
    case OpImageSampleProjDrefExplicitLod: *hasResult = true; *hasResultType = true; break;
    case OpImageFetch: *hasResult = true; *hasResultType = true; break;
    case OpImageGather: *hasResult = true; *hasResultType = true; break;
    case OpImageDrefGather: *hasResult = true; *hasResultType = true; break;
    case OpImageRead: *hasResult = true; *hasResultType = true; break;
    case OpImageWrite: *hasResult = false; *hasResultType = false; break;
    case OpImage: *hasResult = true; *hasResultType = true; break;
    case OpImageQueryFormat: *hasResult = true; *hasResultType = true; break;
    case OpImageQueryOrder: *hasResult = true; *hasResultType = true; break;
    case OpImageQuerySizeLod: *hasResult = true; *hasResultType = true; break;
    case OpImageQuerySize: *hasResult = true; *hasResultType = true; break;
    case OpImageQueryLod: *hasResult = true; *hasResultType = true; break;
    case OpImageQueryLevels: *hasResult = true; *hasResultType = true; break;
    case OpImageQuerySamples: *hasResult = true; *hasResultType = true; break;
    case OpConvertFToU: *hasResult = true; *hasResultType = true; break;
    case OpConvertFToS: *hasResult = true; *hasResultType = true; break;
    case OpConvertSToF: *hasResult = true; *hasResultType = true; break;
    case OpConvertUToF: *hasResult = true; *hasResultType = true; break;
    case OpUConvert: *hasResult = true; *hasResultType = true; break;
    case OpSConvert: *hasResult = true; *hasResultType = true; break;
    case OpFConvert: *hasResult = true; *hasResultType = true; break;
    case OpQuantizeToF16: *hasResult = true; *hasResultType = true; break;
    case OpConvertPtrToU: *hasResult = true; *hasResultType = true; break;
    case OpSatConvertSToU: *hasResult = true; *hasResultType = true; break;
    case OpSatConvertUToS: *hasResult = true; *hasResultType = true; break;
    case OpConvertUToPtr: *hasResult = true; *hasResultType = true; break;
    case OpPtrCastToGeneric: *hasResult = true; *hasResultType = true; break;
    case OpGenericCastToPtr: *hasResult = true; *hasResultType = true; break;
    case OpGenericCastToPtrExplicit: *hasResult = true; *hasResultType = true; break;
    case OpBitcast: *hasResult = true; *hasResultType = true; break;
    case OpSNegate: *hasResult = true; *hasResultType = true; break;
    case OpFNegate: *hasResult = true; *hasResultType = true; break;
    case OpIAdd: *hasResult = true; *hasResultType = true; break;
    case OpFAdd: *hasResult = true; *hasResultType = true; break;
    case OpISub: *hasResult = true; *hasResultType = true; break;
    case OpFSub: *hasResult = true; *hasResultType = true; break;
    case OpIMul: *hasResult = true; *hasResultType = true; break;
    case OpFMul: *hasResult = true; *hasResultType = true; break;
    case OpUDiv: *hasResult = true; *hasResultType = true; break;
    case OpSDiv: *hasResult = true; *hasResultType = true; break;
    case OpFDiv: *hasResult = true; *hasResultType = true; break;
    case OpUMod: *hasResult = true; *hasResultType = true; break;
    case OpSRem: *hasResult = true; *hasResultType = true; break;
    case OpSMod: *hasResult = true; *hasResultType = true; break;
    case OpFRem: *hasResult = true; *hasResultType = true; break;
    case OpFMod: *hasResult = true; *hasResultType = true; break;
    case OpVectorTimesScalar: *hasResult = true; *hasResultType = true; break;
    case OpMatrixTimesScalar: *hasResult = true; *hasResultType = true; break;
    case OpVectorTimesMatrix: *hasResult = true; *hasResultType = true; break;
    case OpMatrixTimesVector: *hasResult = true; *hasResultType = true; break;
    case OpMatrixTimesMatrix: *hasResult = true; *hasResultType = true; break;
    case OpOuterProduct: *hasResult = true; *hasResultType = true; break;
    case OpDot: *hasResult = true; *hasResultType = true; break;
    case OpIAddCarry: *hasResult = true; *hasResultType = true; break;
    case OpISubBorrow: *hasResult = true; *hasResultType = true; break;
    case OpUMulExtended: *hasResult = true; *hasResultType = true; break;
    case OpSMulExtended: *hasResult = true; *hasResultType = true; break;
    case OpAny: *hasResult = true; *hasResultType = true; break;
    case OpAll: *hasResult = true; *hasResultType = true; break;
    case OpIsNan: *hasResult = true; *hasResultType = true; break;
    case OpIsInf: *hasResult = true; *hasResultType = true; break;
    case OpIsFinite: *hasResult = true; *hasResultType = true; break;
    case OpIsNormal: *hasResult = true; *hasResultType = true; break;
    case OpSignBitSet: *hasResult = true; *hasResultType = true; break;
    case OpLessOrGreater: *hasResult = true; *hasResultType = true; break;
    case OpOrdered: *hasResult = true; *hasResultType = true; break;
    case OpUnordered: *hasResult = true; *hasResultType = true; break;
    case OpLogicalEqual: *hasResult = true; *hasResultType = true; break;
    case OpLogicalNotEqual: *hasResult = true; *hasResultType = true; break;
    case OpLogicalOr: *hasResult = true; *hasResultType = true; break;
    case OpLogicalAnd: *hasResult = true; *hasResultType = true; break;
    case OpLogicalNot: *hasResult = true; *hasResultType = true; break;
    case OpSelect: *hasResult = true; *hasResultType = true; break;
    case OpIEqual: *hasResult = true; *hasResultType = true; break;
    case OpINotEqual: *hasResult = true; *hasResultType = true; break;
    case OpUGreaterThan: *hasResult = true; *hasResultType = true; break;
    case OpSGreaterThan: *hasResult = true; *hasResultType = true; break;
    case OpUGreaterThanEqual: *hasResult = true; *hasResultType = true; break;
    case OpSGreaterThanEqual: *hasResult = true; *hasResultType = true; break;
    case OpULessThan: *hasResult = true; *hasResultType = true; break;
    case OpSLessThan: *hasResult = true; *hasResultType = true; break;
    case OpULessThanEqual: *hasResult = true; *hasResultType = true; break;
    case OpSLessThanEqual: *hasResult = true; *hasResultType = true; break;
    case OpFOrdEqual: *hasResult = true; *hasResultType = true; break;
    case OpFUnordEqual: *hasResult = true; *hasResultType = true; break;
    case OpFOrdNotEqual: *hasResult = true; *hasResultType = true; break;
    case OpFUnordNotEqual: *hasResult = true; *hasResultType = true; break;
    case OpFOrdLessThan: *hasResult = true; *hasResultType = true; break;
    case OpFUnordLessThan: *hasResult = true; *hasResultType = true; break;
    case OpFOrdGreaterThan: *hasResult = true; *hasResultType = true; break;
    case OpFUnordGreaterThan: *hasResult = true; *hasResultType = true; break;
    case OpFOrdLessThanEqual: *hasResult = true; *hasResultType = true; break;
    case OpFUnordLessThanEqual: *hasResult = true; *hasResultType = true; break;
    case OpFOrdGreaterThanEqual: *hasResult = true; *hasResultType = true; break;
    case OpFUnordGreaterThanEqual: *hasResult = true; *hasResultType = true; break;
    case OpShiftRightLogical: *hasResult = true; *hasResultType = true; break;
    case OpShiftRightArithmetic: *hasResult = true; *hasResultType = true; break;
    case OpShiftLeftLogical: *hasResult = true; *hasResultType = true; break;
    case OpBitwiseOr: *hasResult = true; *hasResultType = true; break;
    case OpBitwiseXor: *hasResult = true; *hasResultType = true; break;
    case OpBitwiseAnd: *hasResult = true; *hasResultType = true; break;
    case OpNot: *hasResult = true; *hasResultType = true; break;
    case OpBitFieldInsert: *hasResult = true; *hasResultType = true; break;
    case OpBitFieldSExtract: *hasResult = true; *hasResultType = true; break;
    case OpBitFieldUExtract: *hasResult = true; *hasResultType = true; break;
    case OpBitReverse: *hasResult = true; *hasResultType = true; break;
    case OpBitCount: *hasResult = true; *hasResultType = true; break;
    case OpDPdx: *hasResult = true; *hasResultType = true; break;
    case OpDPdy: *hasResult = true; *hasResultType = true; break;
    case OpFwidth: *hasResult = true; *hasResultType = true; break;
    case OpDPdxFine: *hasResult = true; *hasResultType = true; break;
    case OpDPdyFine: *hasResult = true; *hasResultType = true; break;
    case OpFwidthFine: *hasResult = true; *hasResultType = true; break;
    case OpDPdxCoarse: *hasResult = true; *hasResultType = true; break;
    case OpDPdyCoarse: *hasResult = true; *hasResultType = true; break;
    case OpFwidthCoarse: *hasResult = true; *hasResultType = true; break;
    case OpEmitVertex: *hasResult = false; *hasResultType = false; break;
    case OpEndPrimitive: *hasResult = false; *hasResultType = false; break;
    case OpEmitStreamVertex: *hasResult = false; *hasResultType = false; break;
    case OpEndStreamPrimitive: *hasResult = false; *hasResultType = false; break;
    case OpControlBarrier: *hasResult = false; *hasResultType = false; break;
    case OpMemoryBarrier: *hasResult = false; *hasResultType = false; break;
    case OpAtomicLoad: *hasResult = true; *hasResultType = true; break;
    case OpAtomicStore: *hasResult = false; *hasResultType = false; break;
    case OpAtomicExchange: *hasResult = true; *hasResultType = true; break;
    case OpAtomicCompareExchange: *hasResult = true; *hasResultType = true; break;
    case OpAtomicCompareExchangeWeak: *hasResult = true; *hasResultType = true; break;
    case OpAtomicIIncrement: *hasResult = true; *hasResultType = true; break;
    case OpAtomicIDecrement: *hasResult = true; *hasResultType = true; break;
    case OpAtomicIAdd: *hasResult = true; *hasResultType = true; break;
    case OpAtomicISub: *hasResult = true; *hasResultType = true; break;
    case OpAtomicSMin: *hasResult = true; *hasResultType = true; break;
    case OpAtomicUMin: *hasResult = true; *hasResultType = true; break;
    case OpAtomicSMax: *hasResult = true; *hasResultType = true; break;
    case OpAtomicUMax: *hasResult = true; *hasResultType = true; break;
    case OpAtomicAnd: *hasResult = true; *hasResultType = true; break;
    case OpAtomicOr: *hasResult = true; *hasResultType = true; break;
    case OpAtomicXor: *hasResult = true; *hasResultType = true; break;
    case OpPhi: *hasResult = true; *hasResultType = true; break;
    case OpLoopMerge: *hasResult = false; *hasResultType = false; break;
    case OpSelectionMerge: *hasResult = false; *hasResultType = false; break;
    case OpLabel: *hasResult = true; *hasResultType = false; break;
    case OpBranch: *hasResult = false; *hasResultType = false; break;
    case OpBranchConditional: *hasResult = false; *hasResultType = false; break;
    case OpSwitch: *hasResult = false; *hasResultType = false; break;
    case OpKill: *hasResult = false; *hasResultType = false; break;
    case OpReturn: *hasResult = false; *hasResultType = false; break;
    case OpReturnValue: *hasResult = false; *hasResultType = false; break;
    case OpUnreachable: *hasResult = false; *hasResultType = false; break;
    case OpLifetimeStart: *hasResult = false; *hasResultType = false; break;
    case OpLifetimeStop: *hasResult = false; *hasResultType = false; break;
    case OpGroupAsyncCopy: *hasResult = true; *hasResultType = true; break;
    case OpGroupWaitEvents: *hasResult = false; *hasResultType = false; break;
    case OpGroupAll: *hasResult = true; *hasResultType = true; break;
    case OpGroupAny: *hasResult = true; *hasResultType = true; break;
    case OpGroupBroadcast: *hasResult = true; *hasResultType = true; break;
    case OpGroupIAdd: *hasResult = true; *hasResultType = true; break;
    case OpGroupFAdd: *hasResult = true; *hasResultType = true; break;
    case OpGroupFMin: *hasResult = true; *hasResultType = true; break;
    case OpGroupUMin: *hasResult = true; *hasResultType = true; break;
    case OpGroupSMin: *hasResult = true; *hasResultType = true; break;
    case OpGroupFMax: *hasResult = true; *hasResultType = true; break;
    case OpGroupUMax: *hasResult = true; *hasResultType = true; break;
    case OpGroupSMax: *hasResult = true; *hasResultType = true; break;
    case OpReadPipe: *hasResult = true; *hasResultType = true; break;
    case OpWritePipe: *hasResult = true; *hasResultType = true; break;
    case OpReservedReadPipe: *hasResult = true; *hasResultType = true; break;
    case OpReservedWritePipe: *hasResult = true; *hasResultType = true; break;
    case OpReserveReadPipePackets: *hasResult = true; *hasResultType = true; break;
    case OpReserveWritePipePackets: *hasResult = true; *hasResultType = true; break;
    case OpCommitReadPipe: *hasResult = false; *hasResultType = false; break;
    case OpCommitWritePipe: *hasResult = false; *hasResultType = false; break;
    case OpIsValidReserveId: *hasResult = true; *hasResultType = true; break;
    case OpGetNumPipePackets: *hasResult = true; *hasResultType = true; break;
    case OpGetMaxPipePackets: *hasResult = true; *hasResultType = true; break;
    case OpGroupReserveReadPipePackets: *hasResult = true; *hasResultType = true; break;
    case OpGroupReserveWritePipePackets: *hasResult = true; *hasResultType = true; break;
    case OpGroupCommitReadPipe: *hasResult = false; *hasResultType = false; break;
    case OpGroupCommitWritePipe: *hasResult = false; *hasResultType = false; break;
    case OpEnqueueMarker: *hasResult = true; *hasResultType = true; break;
    case OpEnqueueKernel: *hasResult = true; *hasResultType = true; break;
    case OpGetKernelNDrangeSubGroupCount: *hasResult = true; *hasResultType = true; break;
    case OpGetKernelNDrangeMaxSubGroupSize: *hasResult = true; *hasResultType = true; break;
    case OpGetKernelWorkGroupSize: *hasResult = true; *hasResultType = true; break;
    case OpGetKernelPreferredWorkGroupSizeMultiple: *hasResult = true; *hasResultType = true; break;
    case OpRetainEvent: *hasResult = false; *hasResultType = false; break;
    case OpReleaseEvent: *hasResult = false; *hasResultType = false; break;
    case OpCreateUserEvent: *hasResult = true; *hasResultType = true; break;
    case OpIsValidEvent: *hasResult = true; *hasResultType = true; break;
    case OpSetUserEventStatus: *hasResult = false; *hasResultType = false; break;
    case OpCaptureEventProfilingInfo: *hasResult = false; *hasResultType = false; break;
    case OpGetDefaultQueue: *hasResult = true; *hasResultType = true; break;
    case OpBuildNDRange: *hasResult = true; *hasResultType = true; break;
    case OpImageSparseSampleImplicitLod: *hasResult = true; *hasResultType = true; break;
    case OpImageSparseSampleExplicitLod: *hasResult = true; *hasResultType = true; break;
    case OpImageSparseSampleDrefImplicitLod: *hasResult = true; *hasResultType = true; break;
    case OpImageSparseSampleDrefExplicitLod: *hasResult = true; *hasResultType = true; break;
    case OpImageSparseSampleProjImplicitLod: *hasResult = true; *hasResultType = true; break;
    case OpImageSparseSampleProjExplicitLod: *hasResult = true; *hasResultType = true; break;
    case OpImageSparseSampleProjDrefImplicitLod: *hasResult = true; *hasResultType = true; break;
    case OpImageSparseSampleProjDrefExplicitLod: *hasResult = true; *hasResultType = true; break;
    case OpImageSparseFetch: *hasResult = true; *hasResultType = true; break;
    case OpImageSparseGather: *hasResult = true; *hasResultType = true; break;
    case OpImageSparseDrefGather: *hasResult = true; *hasResultType = true; break;
    case OpImageSparseTexelsResident: *hasResult = true; *hasResultType = true; break;
    case OpNoLine: *hasResult = false; *hasResultType = false; break;
    case OpAtomicFlagTestAndSet: *hasResult = true; *hasResultType = true; break;
    case OpAtomicFlagClear: *hasResult = false; *hasResultType = false; break;
    case OpImageSparseRead: *hasResult = true; *hasResultType = true; break;
    case OpSizeOf: *hasResult = true; *hasResultType = true; break;
    case OpTypePipeStorage: *hasResult = true; *hasResultType = false; break;
    case OpConstantPipeStorage: *hasResult = true; *hasResultType = true; break;
    case OpCreatePipeFromPipeStorage: *hasResult = true; *hasResultType = true; break;
    case OpGetKernelLocalSizeForSubgroupCount: *hasResult = true; *hasResultType = true; break;
    case OpGetKernelMaxNumSubgroups: *hasResult = true; *hasResultType = true; break;
    case OpTypeNamedBarrier: *hasResult = true; *hasResultType = false; break;
    case OpNamedBarrierInitialize: *hasResult = true; *hasResultType = true; break;
    case OpMemoryNamedBarrier: *hasResult = false; *hasResultType = false; break;
    case OpModuleProcessed: *hasResult = false; *hasResultType = false; break;
    case OpExecutionModeId: *hasResult = false; *hasResultType = false; break;
    case OpDecorateId: *hasResult = false; *hasResultType = false; break;
    case OpGroupNonUniformElect: *hasResult = true; *hasResultType = true; break;
    case OpGroupNonUniformAll: *hasResult = true; *hasResultType = true; break;
    case OpGroupNonUniformAny: *hasResult = true; *hasResultType = true; break;
    case OpGroupNonUniformAllEqual: *hasResult = true; *hasResultType = true; break;
    case OpGroupNonUniformBroadcast: *hasResult = true; *hasResultType = true; break;
    case OpGroupNonUniformBroadcastFirst: *hasResult = true; *hasResultType = true; break;
    case OpGroupNonUniformBallot: *hasResult = true; *hasResultType = true; break;
    case OpGroupNonUniformInverseBallot: *hasResult = true; *hasResultType = true; break;
    case OpGroupNonUniformBallotBitExtract: *hasResult = true; *hasResultType = true; break;
    case OpGroupNonUniformBallotBitCount: *hasResult = true; *hasResultType = true; break;
    case OpGroupNonUniformBallotFindLSB: *hasResult = true; *hasResultType = true; break;
    case OpGroupNonUniformBallotFindMSB: *hasResult = true; *hasResultType = true; break;
    case OpGroupNonUniformShuffle: *hasResult = true; *hasResultType = true; break;
    case OpGroupNonUniformShuffleXor: *hasResult = true; *hasResultType = true; break;
    case OpGroupNonUniformShuffleUp: *hasResult = true; *hasResultType = true; break;
    case OpGroupNonUniformShuffleDown: *hasResult = true; *hasResultType = true; break;
    case OpGroupNonUniformIAdd: *hasResult = true; *hasResultType = true; break;
    case OpGroupNonUniformFAdd: *hasResult = true; *hasResultType = true; break;
    case OpGroupNonUniformIMul: *hasResult = true; *hasResultType = true; break;
    case OpGroupNonUniformFMul: *hasResult = true; *hasResultType = true; break;
    case OpGroupNonUniformSMin: *hasResult = true; *hasResultType = true; break;
    case OpGroupNonUniformUMin: *hasResult = true; *hasResultType = true; break;
    case OpGroupNonUniformFMin: *hasResult = true; *hasResultType = true; break;
    case OpGroupNonUniformSMax: *hasResult = true; *hasResultType = true; break;
    case OpGroupNonUniformUMax: *hasResult = true; *hasResultType = true; break;
    case OpGroupNonUniformFMax: *hasResult = true; *hasResultType = true; break;
    case OpGroupNonUniformBitwiseAnd: *hasResult = true; *hasResultType = true; break;
    case OpGroupNonUniformBitwiseOr: *hasResult = true; *hasResultType = true; break;
    case OpGroupNonUniformBitwiseXor: *hasResult = true; *hasResultType = true; break;
    case OpGroupNonUniformLogicalAnd: *hasResult = true; *hasResultType = true; break;
    case OpGroupNonUniformLogicalOr: *hasResult = true; *hasResultType = true; break;
    case OpGroupNonUniformLogicalXor: *hasResult = true; *hasResultType = true; break;
    case OpGroupNonUniformQuadBroadcast: *hasResult = true; *hasResultType = true; break;
    case OpGroupNonUniformQuadSwap: *hasResult = true; *hasResultType = true; break;
    case OpCopyLogical: *hasResult = true; *hasResultType = true; break;
    case OpPtrEqual: *hasResult = true; *hasResultType = true; break;
    case OpPtrNotEqual: *hasResult = true; *hasResultType = true; break;
    case OpPtrDiff: *hasResult = true; *hasResultType = true; break;
    case OpColorAttachmentReadEXT: *hasResult = true; *hasResultType = true; break;
    case OpDepthAttachmentReadEXT: *hasResult = true; *hasResultType = true; break;
    case OpStencilAttachmentReadEXT: *hasResult = true; *hasResultType = true; break;
    case OpTerminateInvocation: *hasResult = false; *hasResultType = false; break;
    case OpTypeUntypedPointerKHR: *hasResult = true; *hasResultType = false; break;
    case OpUntypedVariableKHR: *hasResult = true; *hasResultType = true; break;
    case OpUntypedAccessChainKHR: *hasResult = true; *hasResultType = true; break;
    case OpUntypedInBoundsAccessChainKHR: *hasResult = true; *hasResultType = true; break;
    case OpSubgroupBallotKHR: *hasResult = true; *hasResultType = true; break;
    case OpSubgroupFirstInvocationKHR: *hasResult = true; *hasResultType = true; break;
    case OpUntypedPtrAccessChainKHR: *hasResult = true; *hasResultType = true; break;
    case OpUntypedInBoundsPtrAccessChainKHR: *hasResult = true; *hasResultType = true; break;
    case OpUntypedArrayLengthKHR: *hasResult = true; *hasResultType = true; break;
    case OpUntypedPrefetchKHR: *hasResult = false; *hasResultType = false; break;
    case OpSubgroupAllKHR: *hasResult = true; *hasResultType = true; break;
    case OpSubgroupAnyKHR: *hasResult = true; *hasResultType = true; break;
    case OpSubgroupAllEqualKHR: *hasResult = true; *hasResultType = true; break;
    case OpGroupNonUniformRotateKHR: *hasResult = true; *hasResultType = true; break;
    case OpSubgroupReadInvocationKHR: *hasResult = true; *hasResultType = true; break;
    case OpExtInstWithForwardRefsKHR: *hasResult = true; *hasResultType = true; break;
    case OpTraceRayKHR: *hasResult = false; *hasResultType = false; break;
    case OpExecuteCallableKHR: *hasResult = false; *hasResultType = false; break;
    case OpConvertUToAccelerationStructureKHR: *hasResult = true; *hasResultType = true; break;
    case OpIgnoreIntersectionKHR: *hasResult = false; *hasResultType = false; break;
    case OpTerminateRayKHR: *hasResult = false; *hasResultType = false; break;
    case OpSDot: *hasResult = true; *hasResultType = true; break;
    case OpUDot: *hasResult = true; *hasResultType = true; break;
    case OpSUDot: *hasResult = true; *hasResultType = true; break;
    case OpSDotAccSat: *hasResult = true; *hasResultType = true; break;
    case OpUDotAccSat: *hasResult = true; *hasResultType = true; break;
    case OpSUDotAccSat: *hasResult = true; *hasResultType = true; break;
    case OpTypeCooperativeMatrixKHR: *hasResult = true; *hasResultType = false; break;
    case OpCooperativeMatrixLoadKHR: *hasResult = true; *hasResultType = true; break;
    case OpCooperativeMatrixStoreKHR: *hasResult = false; *hasResultType = false; break;
    case OpCooperativeMatrixMulAddKHR: *hasResult = true; *hasResultType = true; break;
    case OpCooperativeMatrixLengthKHR: *hasResult = true; *hasResultType = true; break;
    case OpConstantCompositeReplicateEXT: *hasResult = true; *hasResultType = true; break;
    case OpSpecConstantCompositeReplicateEXT: *hasResult = true; *hasResultType = true; break;
    case OpCompositeConstructReplicateEXT: *hasResult = true; *hasResultType = true; break;
    case OpTypeRayQueryKHR: *hasResult = true; *hasResultType = false; break;
    case OpRayQueryInitializeKHR: *hasResult = false; *hasResultType = false; break;
    case OpRayQueryTerminateKHR: *hasResult = false; *hasResultType = false; break;
    case OpRayQueryGenerateIntersectionKHR: *hasResult = false; *hasResultType = false; break;
    case OpRayQueryConfirmIntersectionKHR: *hasResult = false; *hasResultType = false; break;
    case OpRayQueryProceedKHR: *hasResult = true; *hasResultType = true; break;
    case OpRayQueryGetIntersectionTypeKHR: *hasResult = true; *hasResultType = true; break;
    case OpImageSampleWeightedQCOM: *hasResult = true; *hasResultType = true; break;
    case OpImageBoxFilterQCOM: *hasResult = true; *hasResultType = true; break;
    case OpImageBlockMatchSSDQCOM: *hasResult = true; *hasResultType = true; break;
    case OpImageBlockMatchSADQCOM: *hasResult = true; *hasResultType = true; break;
    case OpImageBlockMatchWindowSSDQCOM: *hasResult = true; *hasResultType = true; break;
    case OpImageBlockMatchWindowSADQCOM: *hasResult = true; *hasResultType = true; break;
    case OpImageBlockMatchGatherSSDQCOM: *hasResult = true; *hasResultType = true; break;
    case OpImageBlockMatchGatherSADQCOM: *hasResult = true; *hasResultType = true; break;
    case OpGroupIAddNonUniformAMD: *hasResult = true; *hasResultType = true; break;
    case OpGroupFAddNonUniformAMD: *hasResult = true; *hasResultType = true; break;
    case OpGroupFMinNonUniformAMD: *hasResult = true; *hasResultType = true; break;
    case OpGroupUMinNonUniformAMD: *hasResult = true; *hasResultType = true; break;
    case OpGroupSMinNonUniformAMD: *hasResult = true; *hasResultType = true; break;
    case OpGroupFMaxNonUniformAMD: *hasResult = true; *hasResultType = true; break;
    case OpGroupUMaxNonUniformAMD: *hasResult = true; *hasResultType = true; break;
    case OpGroupSMaxNonUniformAMD: *hasResult = true; *hasResultType = true; break;
    case OpFragmentMaskFetchAMD: *hasResult = true; *hasResultType = true; break;
    case OpFragmentFetchAMD: *hasResult = true; *hasResultType = true; break;
    case OpReadClockKHR: *hasResult = true; *hasResultType = true; break;
    case OpFinalizeNodePayloadsAMDX: *hasResult = false; *hasResultType = false; break;
    case OpFinishWritingNodePayloadAMDX: *hasResult = true; *hasResultType = true; break;
    case OpInitializeNodePayloadsAMDX: *hasResult = false; *hasResultType = false; break;
    case OpGroupNonUniformQuadAllKHR: *hasResult = true; *hasResultType = true; break;
    case OpGroupNonUniformQuadAnyKHR: *hasResult = true; *hasResultType = true; break;
    case OpHitObjectRecordHitMotionNV: *hasResult = false; *hasResultType = false; break;
    case OpHitObjectRecordHitWithIndexMotionNV: *hasResult = false; *hasResultType = false; break;
    case OpHitObjectRecordMissMotionNV: *hasResult = false; *hasResultType = false; break;
    case OpHitObjectGetWorldToObjectNV: *hasResult = true; *hasResultType = true; break;
    case OpHitObjectGetObjectToWorldNV: *hasResult = true; *hasResultType = true; break;
    case OpHitObjectGetObjectRayDirectionNV: *hasResult = true; *hasResultType = true; break;
    case OpHitObjectGetObjectRayOriginNV: *hasResult = true; *hasResultType = true; break;
    case OpHitObjectTraceRayMotionNV: *hasResult = false; *hasResultType = false; break;
    case OpHitObjectGetShaderRecordBufferHandleNV: *hasResult = true; *hasResultType = true; break;
    case OpHitObjectGetShaderBindingTableRecordIndexNV: *hasResult = true; *hasResultType = true; break;
    case OpHitObjectRecordEmptyNV: *hasResult = false; *hasResultType = false; break;
    case OpHitObjectTraceRayNV: *hasResult = false; *hasResultType = false; break;
    case OpHitObjectRecordHitNV: *hasResult = false; *hasResultType = false; break;
    case OpHitObjectRecordHitWithIndexNV: *hasResult = false; *hasResultType = false; break;
    case OpHitObjectRecordMissNV: *hasResult = false; *hasResultType = false; break;
    case OpHitObjectExecuteShaderNV: *hasResult = false; *hasResultType = false; break;
    case OpHitObjectGetCurrentTimeNV: *hasResult = true; *hasResultType = true; break;
    case OpHitObjectGetAttributesNV: *hasResult = false; *hasResultType = false; break;
    case OpHitObjectGetHitKindNV: *hasResult = true; *hasResultType = true; break;
    case OpHitObjectGetPrimitiveIndexNV: *hasResult = true; *hasResultType = true; break;
    case OpHitObjectGetGeometryIndexNV: *hasResult = true; *hasResultType = true; break;
    case OpHitObjectGetInstanceIdNV: *hasResult = true; *hasResultType = true; break;
    case OpHitObjectGetInstanceCustomIndexNV: *hasResult = true; *hasResultType = true; break;
    case OpHitObjectGetWorldRayDirectionNV: *hasResult = true; *hasResultType = true; break;
    case OpHitObjectGetWorldRayOriginNV: *hasResult = true; *hasResultType = true; break;
    case OpHitObjectGetRayTMaxNV: *hasResult = true; *hasResultType = true; break;
    case OpHitObjectGetRayTMinNV: *hasResult = true; *hasResultType = true; break;
    case OpHitObjectIsEmptyNV: *hasResult = true; *hasResultType = true; break;
    case OpHitObjectIsHitNV: *hasResult = true; *hasResultType = true; break;
    case OpHitObjectIsMissNV: *hasResult = true; *hasResultType = true; break;
    case OpReorderThreadWithHitObjectNV: *hasResult = false; *hasResultType = false; break;
    case OpReorderThreadWithHintNV: *hasResult = false; *hasResultType = false; break;
    case OpTypeHitObjectNV: *hasResult = true; *hasResultType = false; break;
    case OpImageSampleFootprintNV: *hasResult = true; *hasResultType = true; break;
    case OpEmitMeshTasksEXT: *hasResult = false; *hasResultType = false; break;
    case OpSetMeshOutputsEXT: *hasResult = false; *hasResultType = false; break;
    case OpGroupNonUniformPartitionNV: *hasResult = true; *hasResultType = true; break;
    case OpWritePackedPrimitiveIndices4x8NV: *hasResult = false; *hasResultType = false; break;
    case OpFetchMicroTriangleVertexPositionNV: *hasResult = true; *hasResultType = true; break;
    case OpFetchMicroTriangleVertexBarycentricNV: *hasResult = true; *hasResultType = true; break;
    case OpReportIntersectionKHR: *hasResult = true; *hasResultType = true; break;
    case OpIgnoreIntersectionNV: *hasResult = false; *hasResultType = false; break;
    case OpTerminateRayNV: *hasResult = false; *hasResultType = false; break;
    case OpTraceNV: *hasResult = false; *hasResultType = false; break;
    case OpTraceMotionNV: *hasResult = false; *hasResultType = false; break;
    case OpTraceRayMotionNV: *hasResult = false; *hasResultType = false; break;
    case OpRayQueryGetIntersectionTriangleVertexPositionsKHR: *hasResult = true; *hasResultType = true; break;
    case OpTypeAccelerationStructureKHR: *hasResult = true; *hasResultType = false; break;
    case OpExecuteCallableNV: *hasResult = false; *hasResultType = false; break;
    case OpTypeCooperativeMatrixNV: *hasResult = true; *hasResultType = false; break;
    case OpCooperativeMatrixLoadNV: *hasResult = true; *hasResultType = true; break;
    case OpCooperativeMatrixStoreNV: *hasResult = false; *hasResultType = false; break;
    case OpCooperativeMatrixMulAddNV: *hasResult = true; *hasResultType = true; break;
    case OpCooperativeMatrixLengthNV: *hasResult = true; *hasResultType = true; break;
    case OpBeginInvocationInterlockEXT: *hasResult = false; *hasResultType = false; break;
    case OpEndInvocationInterlockEXT: *hasResult = false; *hasResultType = false; break;
    case OpDemoteToHelperInvocation: *hasResult = false; *hasResultType = false; break;
    case OpIsHelperInvocationEXT: *hasResult = true; *hasResultType = true; break;
    case OpConvertUToImageNV: *hasResult = true; *hasResultType = true; break;
    case OpConvertUToSamplerNV: *hasResult = true; *hasResultType = true; break;
    case OpConvertImageToUNV: *hasResult = true; *hasResultType = true; break;
    case OpConvertSamplerToUNV: *hasResult = true; *hasResultType = true; break;
    case OpConvertUToSampledImageNV: *hasResult = true; *hasResultType = true; break;
    case OpConvertSampledImageToUNV: *hasResult = true; *hasResultType = true; break;
    case OpSamplerImageAddressingModeNV: *hasResult = false; *hasResultType = false; break;
    case OpRawAccessChainNV: *hasResult = true; *hasResultType = true; break;
    case OpSubgroupShuffleINTEL: *hasResult = true; *hasResultType = true; break;
    case OpSubgroupShuffleDownINTEL: *hasResult = true; *hasResultType = true; break;
    case OpSubgroupShuffleUpINTEL: *hasResult = true; *hasResultType = true; break;
    case OpSubgroupShuffleXorINTEL: *hasResult = true; *hasResultType = true; break;
    case OpSubgroupBlockReadINTEL: *hasResult = true; *hasResultType = true; break;
    case OpSubgroupBlockWriteINTEL: *hasResult = false; *hasResultType = false; break;
    case OpSubgroupImageBlockReadINTEL: *hasResult = true; *hasResultType = true; break;
    case OpSubgroupImageBlockWriteINTEL: *hasResult = false; *hasResultType = false; break;
    case OpSubgroupImageMediaBlockReadINTEL: *hasResult = true; *hasResultType = true; break;
    case OpSubgroupImageMediaBlockWriteINTEL: *hasResult = false; *hasResultType = false; break;
    case OpUCountLeadingZerosINTEL: *hasResult = true; *hasResultType = true; break;
    case OpUCountTrailingZerosINTEL: *hasResult = true; *hasResultType = true; break;
    case OpAbsISubINTEL: *hasResult = true; *hasResultType = true; break;
    case OpAbsUSubINTEL: *hasResult = true; *hasResultType = true; break;
    case OpIAddSatINTEL: *hasResult = true; *hasResultType = true; break;
    case OpUAddSatINTEL: *hasResult = true; *hasResultType = true; break;
    case OpIAverageINTEL: *hasResult = true; *hasResultType = true; break;
    case OpUAverageINTEL: *hasResult = true; *hasResultType = true; break;
    case OpIAverageRoundedINTEL: *hasResult = true; *hasResultType = true; break;
    case OpUAverageRoundedINTEL: *hasResult = true; *hasResultType = true; break;
    case OpISubSatINTEL: *hasResult = true; *hasResultType = true; break;
    case OpUSubSatINTEL: *hasResult = true; *hasResultType = true; break;
    case OpIMul32x16INTEL: *hasResult = true; *hasResultType = true; break;
    case OpUMul32x16INTEL: *hasResult = true; *hasResultType = true; break;
    case OpConstantFunctionPointerINTEL: *hasResult = true; *hasResultType = true; break;
    case OpFunctionPointerCallINTEL: *hasResult = true; *hasResultType = true; break;
    case OpAsmTargetINTEL: *hasResult = true; *hasResultType = true; break;
    case OpAsmINTEL: *hasResult = true; *hasResultType = true; break;
    case OpAsmCallINTEL: *hasResult = true; *hasResultType = true; break;
    case OpAtomicFMinEXT: *hasResult = true; *hasResultType = true; break;
    case OpAtomicFMaxEXT: *hasResult = true; *hasResultType = true; break;
    case OpAssumeTrueKHR: *hasResult = false; *hasResultType = false; break;
    case OpExpectKHR: *hasResult = true; *hasResultType = true; break;
    case OpDecorateString: *hasResult = false; *hasResultType = false; break;
    case OpMemberDecorateString: *hasResult = false; *hasResultType = false; break;
    case OpVmeImageINTEL: *hasResult = true; *hasResultType = true; break;
    case OpTypeVmeImageINTEL: *hasResult = true; *hasResultType = false; break;
    case OpTypeAvcImePayloadINTEL: *hasResult = true; *hasResultType = false; break;
    case OpTypeAvcRefPayloadINTEL: *hasResult = true; *hasResultType = false; break;
    case OpTypeAvcSicPayloadINTEL: *hasResult = true; *hasResultType = false; break;
    case OpTypeAvcMcePayloadINTEL: *hasResult = true; *hasResultType = false; break;
    case OpTypeAvcMceResultINTEL: *hasResult = true; *hasResultType = false; break;
    case OpTypeAvcImeResultINTEL: *hasResult = true; *hasResultType = false; break;
    case OpTypeAvcImeResultSingleReferenceStreamoutINTEL: *hasResult = true; *hasResultType = false; break;
    case OpTypeAvcImeResultDualReferenceStreamoutINTEL: *hasResult = true; *hasResultType = false; break;
    case OpTypeAvcImeSingleReferenceStreaminINTEL: *hasResult = true; *hasResultType = false; break;
    case OpTypeAvcImeDualReferenceStreaminINTEL: *hasResult = true; *hasResultType = false; break;
    case OpTypeAvcRefResultINTEL: *hasResult = true; *hasResultType = false; break;
    case OpTypeAvcSicResultINTEL: *hasResult = true; *hasResultType = false; break;
    case OpSubgroupAvcMceGetDefaultInterBaseMultiReferencePenaltyINTEL: *hasResult = true; *hasResultType = true; break;
    case OpSubgroupAvcMceSetInterBaseMultiReferencePenaltyINTEL: *hasResult = true; *hasResultType = true; break;
    case OpSubgroupAvcMceGetDefaultInterShapePenaltyINTEL: *hasResult = true; *hasResultType = true; break;
    case OpSubgroupAvcMceSetInterShapePenaltyINTEL: *hasResult = true; *hasResultType = true; break;
    case OpSubgroupAvcMceGetDefaultInterDirectionPenaltyINTEL: *hasResult = true; *hasResultType = true; break;
    case OpSubgroupAvcMceSetInterDirectionPenaltyINTEL: *hasResult = true; *hasResultType = true; break;
    case OpSubgroupAvcMceGetDefaultIntraLumaShapePenaltyINTEL: *hasResult = true; *hasResultType = true; break;
    case OpSubgroupAvcMceGetDefaultInterMotionVectorCostTableINTEL: *hasResult = true; *hasResultType = true; break;
    case OpSubgroupAvcMceGetDefaultHighPenaltyCostTableINTEL: *hasResult = true; *hasResultType = true; break;
    case OpSubgroupAvcMceGetDefaultMediumPenaltyCostTableINTEL: *hasResult = true; *hasResultType = true; break;
    case OpSubgroupAvcMceGetDefaultLowPenaltyCostTableINTEL: *hasResult = true; *hasResultType = true; break;
    case OpSubgroupAvcMceSetMotionVectorCostFunctionINTEL: *hasResult = true; *hasResultType = true; break;
    case OpSubgroupAvcMceGetDefaultIntraLumaModePenaltyINTEL: *hasResult = true; *hasResultType = true; break;
    case OpSubgroupAvcMceGetDefaultNonDcLumaIntraPenaltyINTEL: *hasResult = true; *hasResultType = true; break;
    case OpSubgroupAvcMceGetDefaultIntraChromaModeBasePenaltyINTEL: *hasResult = true; *hasResultType = true; break;
    case OpSubgroupAvcMceSetAcOnlyHaarINTEL: *hasResult = true; *hasResultType = true; break;
    case OpSubgroupAvcMceSetSourceInterlacedFieldPolarityINTEL: *hasResult = true; *hasResultType = true; break;
    case OpSubgroupAvcMceSetSingleReferenceInterlacedFieldPolarityINTEL: *hasResult = true; *hasResultType = true; break;
    case OpSubgroupAvcMceSetDualReferenceInterlacedFieldPolaritiesINTEL: *hasResult = true; *hasResultType = true; break;
    case OpSubgroupAvcMceConvertToImePayloadINTEL: *hasResult = true; *hasResultType = true; break;
    case OpSubgroupAvcMceConvertToImeResultINTEL: *hasResult = true; *hasResultType = true; break;
    case OpSubgroupAvcMceConvertToRefPayloadINTEL: *hasResult = true; *hasResultType = true; break;
    case OpSubgroupAvcMceConvertToRefResultINTEL: *hasResult = true; *hasResultType = true; break;
    case OpSubgroupAvcMceConvertToSicPayloadINTEL: *hasResult = true; *hasResultType = true; break;
    case OpSubgroupAvcMceConvertToSicResultINTEL: *hasResult = true; *hasResultType = true; break;
    case OpSubgroupAvcMceGetMotionVectorsINTEL: *hasResult = true; *hasResultType = true; break;
    case OpSubgroupAvcMceGetInterDistortionsINTEL: *hasResult = true; *hasResultType = true; break;
    case OpSubgroupAvcMceGetBestInterDistortionsINTEL: *hasResult = true; *hasResultType = true; break;
    case OpSubgroupAvcMceGetInterMajorShapeINTEL: *hasResult = true; *hasResultType = true; break;
    case OpSubgroupAvcMceGetInterMinorShapeINTEL: *hasResult = true; *hasResultType = true; break;
    case OpSubgroupAvcMceGetInterDirectionsINTEL: *hasResult = true; *hasResultType = true; break;
    case OpSubgroupAvcMceGetInterMotionVectorCountINTEL: *hasResult = true; *hasResultType = true; break;
    case OpSubgroupAvcMceGetInterReferenceIdsINTEL: *hasResult = true; *hasResultType = true; break;
    case OpSubgroupAvcMceGetInterReferenceInterlacedFieldPolaritiesINTEL: *hasResult = true; *hasResultType = true; break;
    case OpSubgroupAvcImeInitializeINTEL: *hasResult = true; *hasResultType = true; break;
    case OpSubgroupAvcImeSetSingleReferenceINTEL: *hasResult = true; *hasResultType = true; break;
    case OpSubgroupAvcImeSetDualReferenceINTEL: *hasResult = true; *hasResultType = true; break;
    case OpSubgroupAvcImeRefWindowSizeINTEL: *hasResult = true; *hasResultType = true; break;
    case OpSubgroupAvcImeAdjustRefOffsetINTEL: *hasResult = true; *hasResultType = true; break;
    case OpSubgroupAvcImeConvertToMcePayloadINTEL: *hasResult = true; *hasResultType = true; break;
    case OpSubgroupAvcImeSetMaxMotionVectorCountINTEL: *hasResult = true; *hasResultType = true; break;
    case OpSubgroupAvcImeSetUnidirectionalMixDisableINTEL: *hasResult = true; *hasResultType = true; break;
    case OpSubgroupAvcImeSetEarlySearchTerminationThresholdINTEL: *hasResult = true; *hasResultType = true; break;
    case OpSubgroupAvcImeSetWeightedSadINTEL: *hasResult = true; *hasResultType = true; break;
    case OpSubgroupAvcImeEvaluateWithSingleReferenceINTEL: *hasResult = true; *hasResultType = true; break;
    case OpSubgroupAvcImeEvaluateWithDualReferenceINTEL: *hasResult = true; *hasResultType = true; break;
    case OpSubgroupAvcImeEvaluateWithSingleReferenceStreaminINTEL: *hasResult = true; *hasResultType = true; break;
    case OpSubgroupAvcImeEvaluateWithDualReferenceStreaminINTEL: *hasResult = true; *hasResultType = true; break;
    case OpSubgroupAvcImeEvaluateWithSingleReferenceStreamoutINTEL: *hasResult = true; *hasResultType = true; break;
    case OpSubgroupAvcImeEvaluateWithDualReferenceStreamoutINTEL: *hasResult = true; *hasResultType = true; break;
    case OpSubgroupAvcImeEvaluateWithSingleReferenceStreaminoutINTEL: *hasResult = true; *hasResultType = true; break;
    case OpSubgroupAvcImeEvaluateWithDualReferenceStreaminoutINTEL: *hasResult = true; *hasResultType = true; break;
    case OpSubgroupAvcImeConvertToMceResultINTEL: *hasResult = true; *hasResultType = true; break;
    case OpSubgroupAvcImeGetSingleReferenceStreaminINTEL: *hasResult = true; *hasResultType = true; break;
    case OpSubgroupAvcImeGetDualReferenceStreaminINTEL: *hasResult = true; *hasResultType = true; break;
    case OpSubgroupAvcImeStripSingleReferenceStreamoutINTEL: *hasResult = true; *hasResultType = true; break;
    case OpSubgroupAvcImeStripDualReferenceStreamoutINTEL: *hasResult = true; *hasResultType = true; break;
    case OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeMotionVectorsINTEL: *hasResult = true; *hasResultType = true; break;
    case OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeDistortionsINTEL: *hasResult = true; *hasResultType = true; break;
    case OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeReferenceIdsINTEL: *hasResult = true; *hasResultType = true; break;
    case OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeMotionVectorsINTEL: *hasResult = true; *hasResultType = true; break;
    case OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeDistortionsINTEL: *hasResult = true; *hasResultType = true; break;
    case OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeReferenceIdsINTEL: *hasResult = true; *hasResultType = true; break;
    case OpSubgroupAvcImeGetBorderReachedINTEL: *hasResult = true; *hasResultType = true; break;
    case OpSubgroupAvcImeGetTruncatedSearchIndicationINTEL: *hasResult = true; *hasResultType = true; break;
    case OpSubgroupAvcImeGetUnidirectionalEarlySearchTerminationINTEL: *hasResult = true; *hasResultType = true; break;
    case OpSubgroupAvcImeGetWeightingPatternMinimumMotionVectorINTEL: *hasResult = true; *hasResultType = true; break;
    case OpSubgroupAvcImeGetWeightingPatternMinimumDistortionINTEL: *hasResult = true; *hasResultType = true; break;
    case OpSubgroupAvcFmeInitializeINTEL: *hasResult = true; *hasResultType = true; break;
    case OpSubgroupAvcBmeInitializeINTEL: *hasResult = true; *hasResultType = true; break;
    case OpSubgroupAvcRefConvertToMcePayloadINTEL: *hasResult = true; *hasResultType = true; break;
    case OpSubgroupAvcRefSetBidirectionalMixDisableINTEL: *hasResult = true; *hasResultType = true; break;
    case OpSubgroupAvcRefSetBilinearFilterEnableINTEL: *hasResult = true; *hasResultType = true; break;
    case OpSubgroupAvcRefEvaluateWithSingleReferenceINTEL: *hasResult = true; *hasResultType = true; break;
    case OpSubgroupAvcRefEvaluateWithDualReferenceINTEL: *hasResult = true; *hasResultType = true; break;
    case OpSubgroupAvcRefEvaluateWithMultiReferenceINTEL: *hasResult = true; *hasResultType = true; break;
    case OpSubgroupAvcRefEvaluateWithMultiReferenceInterlacedINTEL: *hasResult = true; *hasResultType = true; break;
    case OpSubgroupAvcRefConvertToMceResultINTEL: *hasResult = true; *hasResultType = true; break;
    case OpSubgroupAvcSicInitializeINTEL: *hasResult = true; *hasResultType = true; break;
    case OpSubgroupAvcSicConfigureSkcINTEL: *hasResult = true; *hasResultType = true; break;
    case OpSubgroupAvcSicConfigureIpeLumaINTEL: *hasResult = true; *hasResultType = true; break;
    case OpSubgroupAvcSicConfigureIpeLumaChromaINTEL: *hasResult = true; *hasResultType = true; break;
    case OpSubgroupAvcSicGetMotionVectorMaskINTEL: *hasResult = true; *hasResultType = true; break;
    case OpSubgroupAvcSicConvertToMcePayloadINTEL: *hasResult = true; *hasResultType = true; break;
    case OpSubgroupAvcSicSetIntraLumaShapePenaltyINTEL: *hasResult = true; *hasResultType = true; break;
    case OpSubgroupAvcSicSetIntraLumaModeCostFunctionINTEL: *hasResult = true; *hasResultType = true; break;
    case OpSubgroupAvcSicSetIntraChromaModeCostFunctionINTEL: *hasResult = true; *hasResultType = true; break;
    case OpSubgroupAvcSicSetBilinearFilterEnableINTEL: *hasResult = true; *hasResultType = true; break;
    case OpSubgroupAvcSicSetSkcForwardTransformEnableINTEL: *hasResult = true; *hasResultType = true; break;
    case OpSubgroupAvcSicSetBlockBasedRawSkipSadINTEL: *hasResult = true; *hasResultType = true; break;
    case OpSubgroupAvcSicEvaluateIpeINTEL: *hasResult = true; *hasResultType = true; break;
    case OpSubgroupAvcSicEvaluateWithSingleReferenceINTEL: *hasResult = true; *hasResultType = true; break;
    case OpSubgroupAvcSicEvaluateWithDualReferenceINTEL: *hasResult = true; *hasResultType = true; break;
    case OpSubgroupAvcSicEvaluateWithMultiReferenceINTEL: *hasResult = true; *hasResultType = true; break;
    case OpSubgroupAvcSicEvaluateWithMultiReferenceInterlacedINTEL: *hasResult = true; *hasResultType = true; break;
    case OpSubgroupAvcSicConvertToMceResultINTEL: *hasResult = true; *hasResultType = true; break;
    case OpSubgroupAvcSicGetIpeLumaShapeINTEL: *hasResult = true; *hasResultType = true; break;
    case OpSubgroupAvcSicGetBestIpeLumaDistortionINTEL: *hasResult = true; *hasResultType = true; break;
    case OpSubgroupAvcSicGetBestIpeChromaDistortionINTEL: *hasResult = true; *hasResultType = true; break;
    case OpSubgroupAvcSicGetPackedIpeLumaModesINTEL: *hasResult = true; *hasResultType = true; break;
    case OpSubgroupAvcSicGetIpeChromaModeINTEL: *hasResult = true; *hasResultType = true; break;
    case OpSubgroupAvcSicGetPackedSkcLumaCountThresholdINTEL: *hasResult = true; *hasResultType = true; break;
    case OpSubgroupAvcSicGetPackedSkcLumaSumThresholdINTEL: *hasResult = true; *hasResultType = true; break;
    case OpSubgroupAvcSicGetInterRawSadsINTEL: *hasResult = true; *hasResultType = true; break;
    case OpVariableLengthArrayINTEL: *hasResult = true; *hasResultType = true; break;
    case OpSaveMemoryINTEL: *hasResult = true; *hasResultType = true; break;
    case OpRestoreMemoryINTEL: *hasResult = false; *hasResultType = false; break;
    case OpArbitraryFloatSinCosPiINTEL: *hasResult = true; *hasResultType = true; break;
    case OpArbitraryFloatCastINTEL: *hasResult = true; *hasResultType = true; break;
    case OpArbitraryFloatCastFromIntINTEL: *hasResult = true; *hasResultType = true; break;
    case OpArbitraryFloatCastToIntINTEL: *hasResult = true; *hasResultType = true; break;
    case OpArbitraryFloatAddINTEL: *hasResult = true; *hasResultType = true; break;
    case OpArbitraryFloatSubINTEL: *hasResult = true; *hasResultType = true; break;
    case OpArbitraryFloatMulINTEL: *hasResult = true; *hasResultType = true; break;
    case OpArbitraryFloatDivINTEL: *hasResult = true; *hasResultType = true; break;
    case OpArbitraryFloatGTINTEL: *hasResult = true; *hasResultType = true; break;
    case OpArbitraryFloatGEINTEL: *hasResult = true; *hasResultType = true; break;
    case OpArbitraryFloatLTINTEL: *hasResult = true; *hasResultType = true; break;
    case OpArbitraryFloatLEINTEL: *hasResult = true; *hasResultType = true; break;
    case OpArbitraryFloatEQINTEL: *hasResult = true; *hasResultType = true; break;
    case OpArbitraryFloatRecipINTEL: *hasResult = true; *hasResultType = true; break;
    case OpArbitraryFloatRSqrtINTEL: *hasResult = true; *hasResultType = true; break;
    case OpArbitraryFloatCbrtINTEL: *hasResult = true; *hasResultType = true; break;
    case OpArbitraryFloatHypotINTEL: *hasResult = true; *hasResultType = true; break;
    case OpArbitraryFloatSqrtINTEL: *hasResult = true; *hasResultType = true; break;
    case OpArbitraryFloatLogINTEL: *hasResult = true; *hasResultType = true; break;
    case OpArbitraryFloatLog2INTEL: *hasResult = true; *hasResultType = true; break;
    case OpArbitraryFloatLog10INTEL: *hasResult = true; *hasResultType = true; break;
    case OpArbitraryFloatLog1pINTEL: *hasResult = true; *hasResultType = true; break;
    case OpArbitraryFloatExpINTEL: *hasResult = true; *hasResultType = true; break;
    case OpArbitraryFloatExp2INTEL: *hasResult = true; *hasResultType = true; break;
    case OpArbitraryFloatExp10INTEL: *hasResult = true; *hasResultType = true; break;
    case OpArbitraryFloatExpm1INTEL: *hasResult = true; *hasResultType = true; break;
    case OpArbitraryFloatSinINTEL: *hasResult = true; *hasResultType = true; break;
    case OpArbitraryFloatCosINTEL: *hasResult = true; *hasResultType = true; break;
    case OpArbitraryFloatSinCosINTEL: *hasResult = true; *hasResultType = true; break;
    case OpArbitraryFloatSinPiINTEL: *hasResult = true; *hasResultType = true; break;
    case OpArbitraryFloatCosPiINTEL: *hasResult = true; *hasResultType = true; break;
    case OpArbitraryFloatASinINTEL: *hasResult = true; *hasResultType = true; break;
    case OpArbitraryFloatASinPiINTEL: *hasResult = true; *hasResultType = true; break;
    case OpArbitraryFloatACosINTEL: *hasResult = true; *hasResultType = true; break;
    case OpArbitraryFloatACosPiINTEL: *hasResult = true; *hasResultType = true; break;
    case OpArbitraryFloatATanINTEL: *hasResult = true; *hasResultType = true; break;
    case OpArbitraryFloatATanPiINTEL: *hasResult = true; *hasResultType = true; break;
    case OpArbitraryFloatATan2INTEL: *hasResult = true; *hasResultType = true; break;
    case OpArbitraryFloatPowINTEL: *hasResult = true; *hasResultType = true; break;
    case OpArbitraryFloatPowRINTEL: *hasResult = true; *hasResultType = true; break;
    case OpArbitraryFloatPowNINTEL: *hasResult = true; *hasResultType = true; break;
    case OpLoopControlINTEL: *hasResult = false; *hasResultType = false; break;
    case OpAliasDomainDeclINTEL: *hasResult = true; *hasResultType = false; break;
    case OpAliasScopeDeclINTEL: *hasResult = true; *hasResultType = false; break;
    case OpAliasScopeListDeclINTEL: *hasResult = true; *hasResultType = false; break;
    case OpFixedSqrtINTEL: *hasResult = true; *hasResultType = true; break;
    case OpFixedRecipINTEL: *hasResult = true; *hasResultType = true; break;
    case OpFixedRsqrtINTEL: *hasResult = true; *hasResultType = true; break;
    case OpFixedSinINTEL: *hasResult = true; *hasResultType = true; break;
    case OpFixedCosINTEL: *hasResult = true; *hasResultType = true; break;
    case OpFixedSinCosINTEL: *hasResult = true; *hasResultType = true; break;
    case OpFixedSinPiINTEL: *hasResult = true; *hasResultType = true; break;
    case OpFixedCosPiINTEL: *hasResult = true; *hasResultType = true; break;
    case OpFixedSinCosPiINTEL: *hasResult = true; *hasResultType = true; break;
    case OpFixedLogINTEL: *hasResult = true; *hasResultType = true; break;
    case OpFixedExpINTEL: *hasResult = true; *hasResultType = true; break;
    case OpPtrCastToCrossWorkgroupINTEL: *hasResult = true; *hasResultType = true; break;
    case OpCrossWorkgroupCastToPtrINTEL: *hasResult = true; *hasResultType = true; break;
    case OpReadPipeBlockingINTEL: *hasResult = true; *hasResultType = true; break;
    case OpWritePipeBlockingINTEL: *hasResult = true; *hasResultType = true; break;
    case OpFPGARegINTEL: *hasResult = true; *hasResultType = true; break;
    case OpRayQueryGetRayTMinKHR: *hasResult = true; *hasResultType = true; break;
    case OpRayQueryGetRayFlagsKHR: *hasResult = true; *hasResultType = true; break;
    case OpRayQueryGetIntersectionTKHR: *hasResult = true; *hasResultType = true; break;
    case OpRayQueryGetIntersectionInstanceCustomIndexKHR: *hasResult = true; *hasResultType = true; break;
    case OpRayQueryGetIntersectionInstanceIdKHR: *hasResult = true; *hasResultType = true; break;
    case OpRayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR: *hasResult = true; *hasResultType = true; break;
    case OpRayQueryGetIntersectionGeometryIndexKHR: *hasResult = true; *hasResultType = true; break;
    case OpRayQueryGetIntersectionPrimitiveIndexKHR: *hasResult = true; *hasResultType = true; break;
    case OpRayQueryGetIntersectionBarycentricsKHR: *hasResult = true; *hasResultType = true; break;
    case OpRayQueryGetIntersectionFrontFaceKHR: *hasResult = true; *hasResultType = true; break;
    case OpRayQueryGetIntersectionCandidateAABBOpaqueKHR: *hasResult = true; *hasResultType = true; break;
    case OpRayQueryGetIntersectionObjectRayDirectionKHR: *hasResult = true; *hasResultType = true; break;
    case OpRayQueryGetIntersectionObjectRayOriginKHR: *hasResult = true; *hasResultType = true; break;
    case OpRayQueryGetWorldRayDirectionKHR: *hasResult = true; *hasResultType = true; break;
    case OpRayQueryGetWorldRayOriginKHR: *hasResult = true; *hasResultType = true; break;
    case OpRayQueryGetIntersectionObjectToWorldKHR: *hasResult = true; *hasResultType = true; break;
    case OpRayQueryGetIntersectionWorldToObjectKHR: *hasResult = true; *hasResultType = true; break;
    case OpAtomicFAddEXT: *hasResult = true; *hasResultType = true; break;
    case OpTypeBufferSurfaceINTEL: *hasResult = true; *hasResultType = false; break;
    case OpTypeStructContinuedINTEL: *hasResult = false; *hasResultType = false; break;
    case OpConstantCompositeContinuedINTEL: *hasResult = false; *hasResultType = false; break;
    case OpSpecConstantCompositeContinuedINTEL: *hasResult = false; *hasResultType = false; break;
    case OpCompositeConstructContinuedINTEL: *hasResult = true; *hasResultType = true; break;
    case OpConvertFToBF16INTEL: *hasResult = true; *hasResultType = true; break;
    case OpConvertBF16ToFINTEL: *hasResult = true; *hasResultType = true; break;
    case OpControlBarrierArriveINTEL: *hasResult = false; *hasResultType = false; break;
    case OpControlBarrierWaitINTEL: *hasResult = false; *hasResultType = false; break;
    case OpSubgroupBlockPrefetchINTEL: *hasResult = false; *hasResultType = false; break;
    case OpGroupIMulKHR: *hasResult = true; *hasResultType = true; break;
    case OpGroupFMulKHR: *hasResult = true; *hasResultType = true; break;
    case OpGroupBitwiseAndKHR: *hasResult = true; *hasResultType = true; break;
    case OpGroupBitwiseOrKHR: *hasResult = true; *hasResultType = true; break;
    case OpGroupBitwiseXorKHR: *hasResult = true; *hasResultType = true; break;
    case OpGroupLogicalAndKHR: *hasResult = true; *hasResultType = true; break;
    case OpGroupLogicalOrKHR: *hasResult = true; *hasResultType = true; break;
    case OpGroupLogicalXorKHR: *hasResult = true; *hasResultType = true; break;
    case OpMaskedGatherINTEL: *hasResult = true; *hasResultType = true; break;
    case OpMaskedScatterINTEL: *hasResult = false; *hasResultType = false; break;
    }
}
inline const char* SourceLanguageToString(SourceLanguage value) {
    switch (value) {
    case SourceLanguageUnknown: return "Unknown";
    case SourceLanguageESSL: return "ESSL";
    case SourceLanguageGLSL: return "GLSL";
    case SourceLanguageOpenCL_C: return "OpenCL_C";
    case SourceLanguageOpenCL_CPP: return "OpenCL_CPP";
    case SourceLanguageHLSL: return "HLSL";
    case SourceLanguageCPP_for_OpenCL: return "CPP_for_OpenCL";
    case SourceLanguageSYCL: return "SYCL";
    case SourceLanguageHERO_C: return "HERO_C";
    case SourceLanguageNZSL: return "NZSL";
    case SourceLanguageWGSL: return "WGSL";
    case SourceLanguageSlang: return "Slang";
    case SourceLanguageZig: return "Zig";
    default: return "Unknown";
    }
}

inline const char* ExecutionModelToString(ExecutionModel value) {
    switch (value) {
    case ExecutionModelVertex: return "Vertex";
    case ExecutionModelTessellationControl: return "TessellationControl";
    case ExecutionModelTessellationEvaluation: return "TessellationEvaluation";
    case ExecutionModelGeometry: return "Geometry";
    case ExecutionModelFragment: return "Fragment";
    case ExecutionModelGLCompute: return "GLCompute";
    case ExecutionModelKernel: return "Kernel";
    case ExecutionModelTaskNV: return "TaskNV";
    case ExecutionModelMeshNV: return "MeshNV";
    case ExecutionModelRayGenerationKHR: return "RayGenerationKHR";
    case ExecutionModelIntersectionKHR: return "IntersectionKHR";
    case ExecutionModelAnyHitKHR: return "AnyHitKHR";
    case ExecutionModelClosestHitKHR: return "ClosestHitKHR";
    case ExecutionModelMissKHR: return "MissKHR";
    case ExecutionModelCallableKHR: return "CallableKHR";
    case ExecutionModelTaskEXT: return "TaskEXT";
    case ExecutionModelMeshEXT: return "MeshEXT";
    default: return "Unknown";
    }
}

inline const char* AddressingModelToString(AddressingModel value) {
    switch (value) {
    case AddressingModelLogical: return "Logical";
    case AddressingModelPhysical32: return "Physical32";
    case AddressingModelPhysical64: return "Physical64";
    case AddressingModelPhysicalStorageBuffer64: return "PhysicalStorageBuffer64";
    default: return "Unknown";
    }
}

inline const char* MemoryModelToString(MemoryModel value) {
    switch (value) {
    case MemoryModelSimple: return "Simple";
    case MemoryModelGLSL450: return "GLSL450";
    case MemoryModelOpenCL: return "OpenCL";
    case MemoryModelVulkan: return "Vulkan";
    default: return "Unknown";
    }
}

inline const char* ExecutionModeToString(ExecutionMode value) {
    switch (value) {
    case ExecutionModeInvocations: return "Invocations";
    case ExecutionModeSpacingEqual: return "SpacingEqual";
    case ExecutionModeSpacingFractionalEven: return "SpacingFractionalEven";
    case ExecutionModeSpacingFractionalOdd: return "SpacingFractionalOdd";
    case ExecutionModeVertexOrderCw: return "VertexOrderCw";
    case ExecutionModeVertexOrderCcw: return "VertexOrderCcw";
    case ExecutionModePixelCenterInteger: return "PixelCenterInteger";
    case ExecutionModeOriginUpperLeft: return "OriginUpperLeft";
    case ExecutionModeOriginLowerLeft: return "OriginLowerLeft";
    case ExecutionModeEarlyFragmentTests: return "EarlyFragmentTests";
    case ExecutionModePointMode: return "PointMode";
    case ExecutionModeXfb: return "Xfb";
    case ExecutionModeDepthReplacing: return "DepthReplacing";
    case ExecutionModeDepthGreater: return "DepthGreater";
    case ExecutionModeDepthLess: return "DepthLess";
    case ExecutionModeDepthUnchanged: return "DepthUnchanged";
    case ExecutionModeLocalSize: return "LocalSize";
    case ExecutionModeLocalSizeHint: return "LocalSizeHint";
    case ExecutionModeInputPoints: return "InputPoints";
    case ExecutionModeInputLines: return "InputLines";
    case ExecutionModeInputLinesAdjacency: return "InputLinesAdjacency";
    case ExecutionModeTriangles: return "Triangles";
    case ExecutionModeInputTrianglesAdjacency: return "InputTrianglesAdjacency";
    case ExecutionModeQuads: return "Quads";
    case ExecutionModeIsolines: return "Isolines";
    case ExecutionModeOutputVertices: return "OutputVertices";
    case ExecutionModeOutputPoints: return "OutputPoints";
    case ExecutionModeOutputLineStrip: return "OutputLineStrip";
    case ExecutionModeOutputTriangleStrip: return "OutputTriangleStrip";
    case ExecutionModeVecTypeHint: return "VecTypeHint";
    case ExecutionModeContractionOff: return "ContractionOff";
    case ExecutionModeInitializer: return "Initializer";
    case ExecutionModeFinalizer: return "Finalizer";
    case ExecutionModeSubgroupSize: return "SubgroupSize";
    case ExecutionModeSubgroupsPerWorkgroup: return "SubgroupsPerWorkgroup";
    case ExecutionModeSubgroupsPerWorkgroupId: return "SubgroupsPerWorkgroupId";
    case ExecutionModeLocalSizeId: return "LocalSizeId";
    case ExecutionModeLocalSizeHintId: return "LocalSizeHintId";
    case ExecutionModeNonCoherentColorAttachmentReadEXT: return "NonCoherentColorAttachmentReadEXT";
    case ExecutionModeNonCoherentDepthAttachmentReadEXT: return "NonCoherentDepthAttachmentReadEXT";
    case ExecutionModeNonCoherentStencilAttachmentReadEXT: return "NonCoherentStencilAttachmentReadEXT";
    case ExecutionModeSubgroupUniformControlFlowKHR: return "SubgroupUniformControlFlowKHR";
    case ExecutionModePostDepthCoverage: return "PostDepthCoverage";
    case ExecutionModeDenormPreserve: return "DenormPreserve";
    case ExecutionModeDenormFlushToZero: return "DenormFlushToZero";
    case ExecutionModeSignedZeroInfNanPreserve: return "SignedZeroInfNanPreserve";
    case ExecutionModeRoundingModeRTE: return "RoundingModeRTE";
    case ExecutionModeRoundingModeRTZ: return "RoundingModeRTZ";
    case ExecutionModeEarlyAndLateFragmentTestsAMD: return "EarlyAndLateFragmentTestsAMD";
    case ExecutionModeStencilRefReplacingEXT: return "StencilRefReplacingEXT";
    case ExecutionModeCoalescingAMDX: return "CoalescingAMDX";
    case ExecutionModeMaxNodeRecursionAMDX: return "MaxNodeRecursionAMDX";
    case ExecutionModeStaticNumWorkgroupsAMDX: return "StaticNumWorkgroupsAMDX";
    case ExecutionModeShaderIndexAMDX: return "ShaderIndexAMDX";
    case ExecutionModeMaxNumWorkgroupsAMDX: return "MaxNumWorkgroupsAMDX";
    case ExecutionModeStencilRefUnchangedFrontAMD: return "StencilRefUnchangedFrontAMD";
    case ExecutionModeStencilRefGreaterFrontAMD: return "StencilRefGreaterFrontAMD";
    case ExecutionModeStencilRefLessFrontAMD: return "StencilRefLessFrontAMD";
    case ExecutionModeStencilRefUnchangedBackAMD: return "StencilRefUnchangedBackAMD";
    case ExecutionModeStencilRefGreaterBackAMD: return "StencilRefGreaterBackAMD";
    case ExecutionModeStencilRefLessBackAMD: return "StencilRefLessBackAMD";
    case ExecutionModeQuadDerivativesKHR: return "QuadDerivativesKHR";
    case ExecutionModeRequireFullQuadsKHR: return "RequireFullQuadsKHR";
    case ExecutionModeOutputLinesEXT: return "OutputLinesEXT";
    case ExecutionModeOutputPrimitivesEXT: return "OutputPrimitivesEXT";
    case ExecutionModeDerivativeGroupQuadsNV: return "DerivativeGroupQuadsNV";
    case ExecutionModeDerivativeGroupLinearNV: return "DerivativeGroupLinearNV";
    case ExecutionModeOutputTrianglesEXT: return "OutputTrianglesEXT";
    case ExecutionModePixelInterlockOrderedEXT: return "PixelInterlockOrderedEXT";
    case ExecutionModePixelInterlockUnorderedEXT: return "PixelInterlockUnorderedEXT";
    case ExecutionModeSampleInterlockOrderedEXT: return "SampleInterlockOrderedEXT";
    case ExecutionModeSampleInterlockUnorderedEXT: return "SampleInterlockUnorderedEXT";
    case ExecutionModeShadingRateInterlockOrderedEXT: return "ShadingRateInterlockOrderedEXT";
    case ExecutionModeShadingRateInterlockUnorderedEXT: return "ShadingRateInterlockUnorderedEXT";
    case ExecutionModeSharedLocalMemorySizeINTEL: return "SharedLocalMemorySizeINTEL";
    case ExecutionModeRoundingModeRTPINTEL: return "RoundingModeRTPINTEL";
    case ExecutionModeRoundingModeRTNINTEL: return "RoundingModeRTNINTEL";
    case ExecutionModeFloatingPointModeALTINTEL: return "FloatingPointModeALTINTEL";
    case ExecutionModeFloatingPointModeIEEEINTEL: return "FloatingPointModeIEEEINTEL";
    case ExecutionModeMaxWorkgroupSizeINTEL: return "MaxWorkgroupSizeINTEL";
    case ExecutionModeMaxWorkDimINTEL: return "MaxWorkDimINTEL";
    case ExecutionModeNoGlobalOffsetINTEL: return "NoGlobalOffsetINTEL";
    case ExecutionModeNumSIMDWorkitemsINTEL: return "NumSIMDWorkitemsINTEL";
    case ExecutionModeSchedulerTargetFmaxMhzINTEL: return "SchedulerTargetFmaxMhzINTEL";
    case ExecutionModeMaximallyReconvergesKHR: return "MaximallyReconvergesKHR";
    case ExecutionModeFPFastMathDefault: return "FPFastMathDefault";
    case ExecutionModeStreamingInterfaceINTEL: return "StreamingInterfaceINTEL";
    case ExecutionModeRegisterMapInterfaceINTEL: return "RegisterMapInterfaceINTEL";
    case ExecutionModeNamedBarrierCountINTEL: return "NamedBarrierCountINTEL";
    case ExecutionModeMaximumRegistersINTEL: return "MaximumRegistersINTEL";
    case ExecutionModeMaximumRegistersIdINTEL: return "MaximumRegistersIdINTEL";
    case ExecutionModeNamedMaximumRegistersINTEL: return "NamedMaximumRegistersINTEL";
    default: return "Unknown";
    }
}

inline const char* StorageClassToString(StorageClass value) {
    switch (value) {
    case StorageClassUniformConstant: return "UniformConstant";
    case StorageClassInput: return "Input";
    case StorageClassUniform: return "Uniform";
    case StorageClassOutput: return "Output";
    case StorageClassWorkgroup: return "Workgroup";
    case StorageClassCrossWorkgroup: return "CrossWorkgroup";
    case StorageClassPrivate: return "Private";
    case StorageClassFunction: return "Function";
    case StorageClassGeneric: return "Generic";
    case StorageClassPushConstant: return "PushConstant";
    case StorageClassAtomicCounter: return "AtomicCounter";
    case StorageClassImage: return "Image";
    case StorageClassStorageBuffer: return "StorageBuffer";
    case StorageClassTileImageEXT: return "TileImageEXT";
    case StorageClassNodePayloadAMDX: return "NodePayloadAMDX";
    case StorageClassNodeOutputPayloadAMDX: return "NodeOutputPayloadAMDX";
    case StorageClassCallableDataKHR: return "CallableDataKHR";
    case StorageClassIncomingCallableDataKHR: return "IncomingCallableDataKHR";
    case StorageClassRayPayloadKHR: return "RayPayloadKHR";
    case StorageClassHitAttributeKHR: return "HitAttributeKHR";
    case StorageClassIncomingRayPayloadKHR: return "IncomingRayPayloadKHR";
    case StorageClassShaderRecordBufferKHR: return "ShaderRecordBufferKHR";
    case StorageClassPhysicalStorageBuffer: return "PhysicalStorageBuffer";
    case StorageClassHitObjectAttributeNV: return "HitObjectAttributeNV";
    case StorageClassTaskPayloadWorkgroupEXT: return "TaskPayloadWorkgroupEXT";
    case StorageClassCodeSectionINTEL: return "CodeSectionINTEL";
    case StorageClassDeviceOnlyINTEL: return "DeviceOnlyINTEL";
    case StorageClassHostOnlyINTEL: return "HostOnlyINTEL";
    default: return "Unknown";
    }
}

inline const char* DimToString(Dim value) {
    switch (value) {
    case Dim1D: return "1D";
    case Dim2D: return "2D";
    case Dim3D: return "3D";
    case DimCube: return "Cube";
    case DimRect: return "Rect";
    case DimBuffer: return "Buffer";
    case DimSubpassData: return "SubpassData";
    case DimTileImageDataEXT: return "TileImageDataEXT";
    default: return "Unknown";
    }
}

inline const char* SamplerAddressingModeToString(SamplerAddressingMode value) {
    switch (value) {
    case SamplerAddressingModeNone: return "None";
    case SamplerAddressingModeClampToEdge: return "ClampToEdge";
    case SamplerAddressingModeClamp: return "Clamp";
    case SamplerAddressingModeRepeat: return "Repeat";
    case SamplerAddressingModeRepeatMirrored: return "RepeatMirrored";
    default: return "Unknown";
    }
}

inline const char* SamplerFilterModeToString(SamplerFilterMode value) {
    switch (value) {
    case SamplerFilterModeNearest: return "Nearest";
    case SamplerFilterModeLinear: return "Linear";
    default: return "Unknown";
    }
}

inline const char* ImageFormatToString(ImageFormat value) {
    switch (value) {
    case ImageFormatUnknown: return "Unknown";
    case ImageFormatRgba32f: return "Rgba32f";
    case ImageFormatRgba16f: return "Rgba16f";
    case ImageFormatR32f: return "R32f";
    case ImageFormatRgba8: return "Rgba8";
    case ImageFormatRgba8Snorm: return "Rgba8Snorm";
    case ImageFormatRg32f: return "Rg32f";
    case ImageFormatRg16f: return "Rg16f";
    case ImageFormatR11fG11fB10f: return "R11fG11fB10f";
    case ImageFormatR16f: return "R16f";
    case ImageFormatRgba16: return "Rgba16";
    case ImageFormatRgb10A2: return "Rgb10A2";
    case ImageFormatRg16: return "Rg16";
    case ImageFormatRg8: return "Rg8";
    case ImageFormatR16: return "R16";
    case ImageFormatR8: return "R8";
    case ImageFormatRgba16Snorm: return "Rgba16Snorm";
    case ImageFormatRg16Snorm: return "Rg16Snorm";
    case ImageFormatRg8Snorm: return "Rg8Snorm";
    case ImageFormatR16Snorm: return "R16Snorm";
    case ImageFormatR8Snorm: return "R8Snorm";
    case ImageFormatRgba32i: return "Rgba32i";
    case ImageFormatRgba16i: return "Rgba16i";
    case ImageFormatRgba8i: return "Rgba8i";
    case ImageFormatR32i: return "R32i";
    case ImageFormatRg32i: return "Rg32i";
    case ImageFormatRg16i: return "Rg16i";
    case ImageFormatRg8i: return "Rg8i";
    case ImageFormatR16i: return "R16i";
    case ImageFormatR8i: return "R8i";
    case ImageFormatRgba32ui: return "Rgba32ui";
    case ImageFormatRgba16ui: return "Rgba16ui";
    case ImageFormatRgba8ui: return "Rgba8ui";
    case ImageFormatR32ui: return "R32ui";
    case ImageFormatRgb10a2ui: return "Rgb10a2ui";
    case ImageFormatRg32ui: return "Rg32ui";
    case ImageFormatRg16ui: return "Rg16ui";
    case ImageFormatRg8ui: return "Rg8ui";
    case ImageFormatR16ui: return "R16ui";
    case ImageFormatR8ui: return "R8ui";
    case ImageFormatR64ui: return "R64ui";
    case ImageFormatR64i: return "R64i";
    default: return "Unknown";
    }
}

inline const char* ImageChannelOrderToString(ImageChannelOrder value) {
    switch (value) {
    case ImageChannelOrderR: return "R";
    case ImageChannelOrderA: return "A";
    case ImageChannelOrderRG: return "RG";
    case ImageChannelOrderRA: return "RA";
    case ImageChannelOrderRGB: return "RGB";
    case ImageChannelOrderRGBA: return "RGBA";
    case ImageChannelOrderBGRA: return "BGRA";
    case ImageChannelOrderARGB: return "ARGB";
    case ImageChannelOrderIntensity: return "Intensity";
    case ImageChannelOrderLuminance: return "Luminance";
    case ImageChannelOrderRx: return "Rx";
    case ImageChannelOrderRGx: return "RGx";
    case ImageChannelOrderRGBx: return "RGBx";
    case ImageChannelOrderDepth: return "Depth";
    case ImageChannelOrderDepthStencil: return "DepthStencil";
    case ImageChannelOrdersRGB: return "sRGB";
    case ImageChannelOrdersRGBx: return "sRGBx";
    case ImageChannelOrdersRGBA: return "sRGBA";
    case ImageChannelOrdersBGRA: return "sBGRA";
    case ImageChannelOrderABGR: return "ABGR";
    default: return "Unknown";
    }
}

inline const char* ImageChannelDataTypeToString(ImageChannelDataType value) {
    switch (value) {
    case ImageChannelDataTypeSnormInt8: return "SnormInt8";
    case ImageChannelDataTypeSnormInt16: return "SnormInt16";
    case ImageChannelDataTypeUnormInt8: return "UnormInt8";
    case ImageChannelDataTypeUnormInt16: return "UnormInt16";
    case ImageChannelDataTypeUnormShort565: return "UnormShort565";
    case ImageChannelDataTypeUnormShort555: return "UnormShort555";
    case ImageChannelDataTypeUnormInt101010: return "UnormInt101010";
    case ImageChannelDataTypeSignedInt8: return "SignedInt8";
    case ImageChannelDataTypeSignedInt16: return "SignedInt16";
    case ImageChannelDataTypeSignedInt32: return "SignedInt32";
    case ImageChannelDataTypeUnsignedInt8: return "UnsignedInt8";
    case ImageChannelDataTypeUnsignedInt16: return "UnsignedInt16";
    case ImageChannelDataTypeUnsignedInt32: return "UnsignedInt32";
    case ImageChannelDataTypeHalfFloat: return "HalfFloat";
    case ImageChannelDataTypeFloat: return "Float";
    case ImageChannelDataTypeUnormInt24: return "UnormInt24";
    case ImageChannelDataTypeUnormInt101010_2: return "UnormInt101010_2";
    case ImageChannelDataTypeUnsignedIntRaw10EXT: return "UnsignedIntRaw10EXT";
    case ImageChannelDataTypeUnsignedIntRaw12EXT: return "UnsignedIntRaw12EXT";
    case ImageChannelDataTypeUnormInt2_101010EXT: return "UnormInt2_101010EXT";
    default: return "Unknown";
    }
}

inline const char* FPRoundingModeToString(FPRoundingMode value) {
    switch (value) {
    case FPRoundingModeRTE: return "RTE";
    case FPRoundingModeRTZ: return "RTZ";
    case FPRoundingModeRTP: return "RTP";
    case FPRoundingModeRTN: return "RTN";
    default: return "Unknown";
    }
}

inline const char* LinkageTypeToString(LinkageType value) {
    switch (value) {
    case LinkageTypeExport: return "Export";
    case LinkageTypeImport: return "Import";
    case LinkageTypeLinkOnceODR: return "LinkOnceODR";
    default: return "Unknown";
    }
}

inline const char* AccessQualifierToString(AccessQualifier value) {
    switch (value) {
    case AccessQualifierReadOnly: return "ReadOnly";
    case AccessQualifierWriteOnly: return "WriteOnly";
    case AccessQualifierReadWrite: return "ReadWrite";
    default: return "Unknown";
    }
}

inline const char* FunctionParameterAttributeToString(FunctionParameterAttribute value) {
    switch (value) {
    case FunctionParameterAttributeZext: return "Zext";
    case FunctionParameterAttributeSext: return "Sext";
    case FunctionParameterAttributeByVal: return "ByVal";
    case FunctionParameterAttributeSret: return "Sret";
    case FunctionParameterAttributeNoAlias: return "NoAlias";
    case FunctionParameterAttributeNoCapture: return "NoCapture";
    case FunctionParameterAttributeNoWrite: return "NoWrite";
    case FunctionParameterAttributeNoReadWrite: return "NoReadWrite";
    case FunctionParameterAttributeRuntimeAlignedINTEL: return "RuntimeAlignedINTEL";
    default: return "Unknown";
    }
}

inline const char* DecorationToString(Decoration value) {
    switch (value) {
    case DecorationRelaxedPrecision: return "RelaxedPrecision";
    case DecorationSpecId: return "SpecId";
    case DecorationBlock: return "Block";
    case DecorationBufferBlock: return "BufferBlock";
    case DecorationRowMajor: return "RowMajor";
    case DecorationColMajor: return "ColMajor";
    case DecorationArrayStride: return "ArrayStride";
    case DecorationMatrixStride: return "MatrixStride";
    case DecorationGLSLShared: return "GLSLShared";
    case DecorationGLSLPacked: return "GLSLPacked";
    case DecorationCPacked: return "CPacked";
    case DecorationBuiltIn: return "BuiltIn";
    case DecorationNoPerspective: return "NoPerspective";
    case DecorationFlat: return "Flat";
    case DecorationPatch: return "Patch";
    case DecorationCentroid: return "Centroid";
    case DecorationSample: return "Sample";
    case DecorationInvariant: return "Invariant";
    case DecorationRestrict: return "Restrict";
    case DecorationAliased: return "Aliased";
    case DecorationVolatile: return "Volatile";
    case DecorationConstant: return "Constant";
    case DecorationCoherent: return "Coherent";
    case DecorationNonWritable: return "NonWritable";
    case DecorationNonReadable: return "NonReadable";
    case DecorationUniform: return "Uniform";
    case DecorationUniformId: return "UniformId";
    case DecorationSaturatedConversion: return "SaturatedConversion";
    case DecorationStream: return "Stream";
    case DecorationLocation: return "Location";
    case DecorationComponent: return "Component";
    case DecorationIndex: return "Index";
    case DecorationBinding: return "Binding";
    case DecorationDescriptorSet: return "DescriptorSet";
    case DecorationOffset: return "Offset";
    case DecorationXfbBuffer: return "XfbBuffer";
    case DecorationXfbStride: return "XfbStride";
    case DecorationFuncParamAttr: return "FuncParamAttr";
    case DecorationFPRoundingMode: return "FPRoundingMode";
    case DecorationFPFastMathMode: return "FPFastMathMode";
    case DecorationLinkageAttributes: return "LinkageAttributes";
    case DecorationNoContraction: return "NoContraction";
    case DecorationInputAttachmentIndex: return "InputAttachmentIndex";
    case DecorationAlignment: return "Alignment";
    case DecorationMaxByteOffset: return "MaxByteOffset";
    case DecorationAlignmentId: return "AlignmentId";
    case DecorationMaxByteOffsetId: return "MaxByteOffsetId";
    case DecorationNoSignedWrap: return "NoSignedWrap";
    case DecorationNoUnsignedWrap: return "NoUnsignedWrap";
    case DecorationWeightTextureQCOM: return "WeightTextureQCOM";
    case DecorationBlockMatchTextureQCOM: return "BlockMatchTextureQCOM";
    case DecorationBlockMatchSamplerQCOM: return "BlockMatchSamplerQCOM";
    case DecorationExplicitInterpAMD: return "ExplicitInterpAMD";
    case DecorationNodeSharesPayloadLimitsWithAMDX: return "NodeSharesPayloadLimitsWithAMDX";
    case DecorationNodeMaxPayloadsAMDX: return "NodeMaxPayloadsAMDX";
    case DecorationTrackFinishWritingAMDX: return "TrackFinishWritingAMDX";
    case DecorationPayloadNodeNameAMDX: return "PayloadNodeNameAMDX";
    case DecorationOverrideCoverageNV: return "OverrideCoverageNV";
    case DecorationPassthroughNV: return "PassthroughNV";
    case DecorationViewportRelativeNV: return "ViewportRelativeNV";
    case DecorationSecondaryViewportRelativeNV: return "SecondaryViewportRelativeNV";
    case DecorationPerPrimitiveEXT: return "PerPrimitiveEXT";
    case DecorationPerViewNV: return "PerViewNV";
    case DecorationPerTaskNV: return "PerTaskNV";
    case DecorationPerVertexKHR: return "PerVertexKHR";
    case DecorationNonUniform: return "NonUniform";
    case DecorationRestrictPointer: return "RestrictPointer";
    case DecorationAliasedPointer: return "AliasedPointer";
    case DecorationHitObjectShaderRecordBufferNV: return "HitObjectShaderRecordBufferNV";
    case DecorationBindlessSamplerNV: return "BindlessSamplerNV";
    case DecorationBindlessImageNV: return "BindlessImageNV";
    case DecorationBoundSamplerNV: return "BoundSamplerNV";
    case DecorationBoundImageNV: return "BoundImageNV";
    case DecorationSIMTCallINTEL: return "SIMTCallINTEL";
    case DecorationReferencedIndirectlyINTEL: return "ReferencedIndirectlyINTEL";
    case DecorationClobberINTEL: return "ClobberINTEL";
    case DecorationSideEffectsINTEL: return "SideEffectsINTEL";
    case DecorationVectorComputeVariableINTEL: return "VectorComputeVariableINTEL";
    case DecorationFuncParamIOKindINTEL: return "FuncParamIOKindINTEL";
    case DecorationVectorComputeFunctionINTEL: return "VectorComputeFunctionINTEL";
    case DecorationStackCallINTEL: return "StackCallINTEL";
    case DecorationGlobalVariableOffsetINTEL: return "GlobalVariableOffsetINTEL";
    case DecorationCounterBuffer: return "CounterBuffer";
    case DecorationHlslSemanticGOOGLE: return "HlslSemanticGOOGLE";
    case DecorationUserTypeGOOGLE: return "UserTypeGOOGLE";
    case DecorationFunctionRoundingModeINTEL: return "FunctionRoundingModeINTEL";
    case DecorationFunctionDenormModeINTEL: return "FunctionDenormModeINTEL";
    case DecorationRegisterINTEL: return "RegisterINTEL";
    case DecorationMemoryINTEL: return "MemoryINTEL";
    case DecorationNumbanksINTEL: return "NumbanksINTEL";
    case DecorationBankwidthINTEL: return "BankwidthINTEL";
    case DecorationMaxPrivateCopiesINTEL: return "MaxPrivateCopiesINTEL";
    case DecorationSinglepumpINTEL: return "SinglepumpINTEL";
    case DecorationDoublepumpINTEL: return "DoublepumpINTEL";
    case DecorationMaxReplicatesINTEL: return "MaxReplicatesINTEL";
    case DecorationSimpleDualPortINTEL: return "SimpleDualPortINTEL";
    case DecorationMergeINTEL: return "MergeINTEL";
    case DecorationBankBitsINTEL: return "BankBitsINTEL";
    case DecorationForcePow2DepthINTEL: return "ForcePow2DepthINTEL";
    case DecorationStridesizeINTEL: return "StridesizeINTEL";
    case DecorationWordsizeINTEL: return "WordsizeINTEL";
    case DecorationTrueDualPortINTEL: return "TrueDualPortINTEL";
    case DecorationBurstCoalesceINTEL: return "BurstCoalesceINTEL";
    case DecorationCacheSizeINTEL: return "CacheSizeINTEL";
    case DecorationDontStaticallyCoalesceINTEL: return "DontStaticallyCoalesceINTEL";
    case DecorationPrefetchINTEL: return "PrefetchINTEL";
    case DecorationStallEnableINTEL: return "StallEnableINTEL";
    case DecorationFuseLoopsInFunctionINTEL: return "FuseLoopsInFunctionINTEL";
    case DecorationMathOpDSPModeINTEL: return "MathOpDSPModeINTEL";
    case DecorationAliasScopeINTEL: return "AliasScopeINTEL";
    case DecorationNoAliasINTEL: return "NoAliasINTEL";
    case DecorationInitiationIntervalINTEL: return "InitiationIntervalINTEL";
    case DecorationMaxConcurrencyINTEL: return "MaxConcurrencyINTEL";
    case DecorationPipelineEnableINTEL: return "PipelineEnableINTEL";
    case DecorationBufferLocationINTEL: return "BufferLocationINTEL";
    case DecorationIOPipeStorageINTEL: return "IOPipeStorageINTEL";
    case DecorationFunctionFloatingPointModeINTEL: return "FunctionFloatingPointModeINTEL";
    case DecorationSingleElementVectorINTEL: return "SingleElementVectorINTEL";
    case DecorationVectorComputeCallableFunctionINTEL: return "VectorComputeCallableFunctionINTEL";
    case DecorationMediaBlockIOINTEL: return "MediaBlockIOINTEL";
    case DecorationStallFreeINTEL: return "StallFreeINTEL";
    case DecorationFPMaxErrorDecorationINTEL: return "FPMaxErrorDecorationINTEL";
    case DecorationLatencyControlLabelINTEL: return "LatencyControlLabelINTEL";
    case DecorationLatencyControlConstraintINTEL: return "LatencyControlConstraintINTEL";
    case DecorationConduitKernelArgumentINTEL: return "ConduitKernelArgumentINTEL";
    case DecorationRegisterMapKernelArgumentINTEL: return "RegisterMapKernelArgumentINTEL";
    case DecorationMMHostInterfaceAddressWidthINTEL: return "MMHostInterfaceAddressWidthINTEL";
    case DecorationMMHostInterfaceDataWidthINTEL: return "MMHostInterfaceDataWidthINTEL";
    case DecorationMMHostInterfaceLatencyINTEL: return "MMHostInterfaceLatencyINTEL";
    case DecorationMMHostInterfaceReadWriteModeINTEL: return "MMHostInterfaceReadWriteModeINTEL";
    case DecorationMMHostInterfaceMaxBurstINTEL: return "MMHostInterfaceMaxBurstINTEL";
    case DecorationMMHostInterfaceWaitRequestINTEL: return "MMHostInterfaceWaitRequestINTEL";
    case DecorationStableKernelArgumentINTEL: return "StableKernelArgumentINTEL";
    case DecorationHostAccessINTEL: return "HostAccessINTEL";
    case DecorationInitModeINTEL: return "InitModeINTEL";
    case DecorationImplementInRegisterMapINTEL: return "ImplementInRegisterMapINTEL";
    case DecorationCacheControlLoadINTEL: return "CacheControlLoadINTEL";
    case DecorationCacheControlStoreINTEL: return "CacheControlStoreINTEL";
    default: return "Unknown";
    }
}

inline const char* BuiltInToString(BuiltIn value) {
    switch (value) {
    case BuiltInPosition: return "Position";
    case BuiltInPointSize: return "PointSize";
    case BuiltInClipDistance: return "ClipDistance";
    case BuiltInCullDistance: return "CullDistance";
    case BuiltInVertexId: return "VertexId";
    case BuiltInInstanceId: return "InstanceId";
    case BuiltInPrimitiveId: return "PrimitiveId";
    case BuiltInInvocationId: return "InvocationId";
    case BuiltInLayer: return "Layer";
    case BuiltInViewportIndex: return "ViewportIndex";
    case BuiltInTessLevelOuter: return "TessLevelOuter";
    case BuiltInTessLevelInner: return "TessLevelInner";
    case BuiltInTessCoord: return "TessCoord";
    case BuiltInPatchVertices: return "PatchVertices";
    case BuiltInFragCoord: return "FragCoord";
    case BuiltInPointCoord: return "PointCoord";
    case BuiltInFrontFacing: return "FrontFacing";
    case BuiltInSampleId: return "SampleId";
    case BuiltInSamplePosition: return "SamplePosition";
    case BuiltInSampleMask: return "SampleMask";
    case BuiltInFragDepth: return "FragDepth";
    case BuiltInHelperInvocation: return "HelperInvocation";
    case BuiltInNumWorkgroups: return "NumWorkgroups";
    case BuiltInWorkgroupSize: return "WorkgroupSize";
    case BuiltInWorkgroupId: return "WorkgroupId";
    case BuiltInLocalInvocationId: return "LocalInvocationId";
    case BuiltInGlobalInvocationId: return "GlobalInvocationId";
    case BuiltInLocalInvocationIndex: return "LocalInvocationIndex";
    case BuiltInWorkDim: return "WorkDim";
    case BuiltInGlobalSize: return "GlobalSize";
    case BuiltInEnqueuedWorkgroupSize: return "EnqueuedWorkgroupSize";
    case BuiltInGlobalOffset: return "GlobalOffset";
    case BuiltInGlobalLinearId: return "GlobalLinearId";
    case BuiltInSubgroupSize: return "SubgroupSize";
    case BuiltInSubgroupMaxSize: return "SubgroupMaxSize";
    case BuiltInNumSubgroups: return "NumSubgroups";
    case BuiltInNumEnqueuedSubgroups: return "NumEnqueuedSubgroups";
    case BuiltInSubgroupId: return "SubgroupId";
    case BuiltInSubgroupLocalInvocationId: return "SubgroupLocalInvocationId";
    case BuiltInVertexIndex: return "VertexIndex";
    case BuiltInInstanceIndex: return "InstanceIndex";
    case BuiltInCoreIDARM: return "CoreIDARM";
    case BuiltInCoreCountARM: return "CoreCountARM";
    case BuiltInCoreMaxIDARM: return "CoreMaxIDARM";
    case BuiltInWarpIDARM: return "WarpIDARM";
    case BuiltInWarpMaxIDARM: return "WarpMaxIDARM";
    case BuiltInSubgroupEqMask: return "SubgroupEqMask";
    case BuiltInSubgroupGeMask: return "SubgroupGeMask";
    case BuiltInSubgroupGtMask: return "SubgroupGtMask";
    case BuiltInSubgroupLeMask: return "SubgroupLeMask";
    case BuiltInSubgroupLtMask: return "SubgroupLtMask";
    case BuiltInBaseVertex: return "BaseVertex";
    case BuiltInBaseInstance: return "BaseInstance";
    case BuiltInDrawIndex: return "DrawIndex";
    case BuiltInPrimitiveShadingRateKHR: return "PrimitiveShadingRateKHR";
    case BuiltInDeviceIndex: return "DeviceIndex";
    case BuiltInViewIndex: return "ViewIndex";
    case BuiltInShadingRateKHR: return "ShadingRateKHR";
    case BuiltInBaryCoordNoPerspAMD: return "BaryCoordNoPerspAMD";
    case BuiltInBaryCoordNoPerspCentroidAMD: return "BaryCoordNoPerspCentroidAMD";
    case BuiltInBaryCoordNoPerspSampleAMD: return "BaryCoordNoPerspSampleAMD";
    case BuiltInBaryCoordSmoothAMD: return "BaryCoordSmoothAMD";
    case BuiltInBaryCoordSmoothCentroidAMD: return "BaryCoordSmoothCentroidAMD";
    case BuiltInBaryCoordSmoothSampleAMD: return "BaryCoordSmoothSampleAMD";
    case BuiltInBaryCoordPullModelAMD: return "BaryCoordPullModelAMD";
    case BuiltInFragStencilRefEXT: return "FragStencilRefEXT";
    case BuiltInCoalescedInputCountAMDX: return "CoalescedInputCountAMDX";
    case BuiltInShaderIndexAMDX: return "ShaderIndexAMDX";
    case BuiltInViewportMaskNV: return "ViewportMaskNV";
    case BuiltInSecondaryPositionNV: return "SecondaryPositionNV";
    case BuiltInSecondaryViewportMaskNV: return "SecondaryViewportMaskNV";
    case BuiltInPositionPerViewNV: return "PositionPerViewNV";
    case BuiltInViewportMaskPerViewNV: return "ViewportMaskPerViewNV";
    case BuiltInFullyCoveredEXT: return "FullyCoveredEXT";
    case BuiltInTaskCountNV: return "TaskCountNV";
    case BuiltInPrimitiveCountNV: return "PrimitiveCountNV";
    case BuiltInPrimitiveIndicesNV: return "PrimitiveIndicesNV";
    case BuiltInClipDistancePerViewNV: return "ClipDistancePerViewNV";
    case BuiltInCullDistancePerViewNV: return "CullDistancePerViewNV";
    case BuiltInLayerPerViewNV: return "LayerPerViewNV";
    case BuiltInMeshViewCountNV: return "MeshViewCountNV";
    case BuiltInMeshViewIndicesNV: return "MeshViewIndicesNV";
    case BuiltInBaryCoordKHR: return "BaryCoordKHR";
    case BuiltInBaryCoordNoPerspKHR: return "BaryCoordNoPerspKHR";
    case BuiltInFragSizeEXT: return "FragSizeEXT";
    case BuiltInFragInvocationCountEXT: return "FragInvocationCountEXT";
    case BuiltInPrimitivePointIndicesEXT: return "PrimitivePointIndicesEXT";
    case BuiltInPrimitiveLineIndicesEXT: return "PrimitiveLineIndicesEXT";
    case BuiltInPrimitiveTriangleIndicesEXT: return "PrimitiveTriangleIndicesEXT";
    case BuiltInCullPrimitiveEXT: return "CullPrimitiveEXT";
    case BuiltInLaunchIdKHR: return "LaunchIdKHR";
    case BuiltInLaunchSizeKHR: return "LaunchSizeKHR";
    case BuiltInWorldRayOriginKHR: return "WorldRayOriginKHR";
    case BuiltInWorldRayDirectionKHR: return "WorldRayDirectionKHR";
    case BuiltInObjectRayOriginKHR: return "ObjectRayOriginKHR";
    case BuiltInObjectRayDirectionKHR: return "ObjectRayDirectionKHR";
    case BuiltInRayTminKHR: return "RayTminKHR";
    case BuiltInRayTmaxKHR: return "RayTmaxKHR";
    case BuiltInInstanceCustomIndexKHR: return "InstanceCustomIndexKHR";
    case BuiltInObjectToWorldKHR: return "ObjectToWorldKHR";
    case BuiltInWorldToObjectKHR: return "WorldToObjectKHR";
    case BuiltInHitTNV: return "HitTNV";
    case BuiltInHitKindKHR: return "HitKindKHR";
    case BuiltInCurrentRayTimeNV: return "CurrentRayTimeNV";
    case BuiltInHitTriangleVertexPositionsKHR: return "HitTriangleVertexPositionsKHR";
    case BuiltInHitMicroTriangleVertexPositionsNV: return "HitMicroTriangleVertexPositionsNV";
    case BuiltInHitMicroTriangleVertexBarycentricsNV: return "HitMicroTriangleVertexBarycentricsNV";
    case BuiltInIncomingRayFlagsKHR: return "IncomingRayFlagsKHR";
    case BuiltInRayGeometryIndexKHR: return "RayGeometryIndexKHR";
    case BuiltInWarpsPerSMNV: return "WarpsPerSMNV";
    case BuiltInSMCountNV: return "SMCountNV";
    case BuiltInWarpIDNV: return "WarpIDNV";
    case BuiltInSMIDNV: return "SMIDNV";
    case BuiltInHitKindFrontFacingMicroTriangleNV: return "HitKindFrontFacingMicroTriangleNV";
    case BuiltInHitKindBackFacingMicroTriangleNV: return "HitKindBackFacingMicroTriangleNV";
    case BuiltInCullMaskKHR: return "CullMaskKHR";
    default: return "Unknown";
    }
}

inline const char* ScopeToString(Scope value) {
    switch (value) {
    case ScopeCrossDevice: return "CrossDevice";
    case ScopeDevice: return "Device";
    case ScopeWorkgroup: return "Workgroup";
    case ScopeSubgroup: return "Subgroup";
    case ScopeInvocation: return "Invocation";
    case ScopeQueueFamily: return "QueueFamily";
    case ScopeShaderCallKHR: return "ShaderCallKHR";
    default: return "Unknown";
    }
}

inline const char* GroupOperationToString(GroupOperation value) {
    switch (value) {
    case GroupOperationReduce: return "Reduce";
    case GroupOperationInclusiveScan: return "InclusiveScan";
    case GroupOperationExclusiveScan: return "ExclusiveScan";
    case GroupOperationClusteredReduce: return "ClusteredReduce";
    case GroupOperationPartitionedReduceNV: return "PartitionedReduceNV";
    case GroupOperationPartitionedInclusiveScanNV: return "PartitionedInclusiveScanNV";
    case GroupOperationPartitionedExclusiveScanNV: return "PartitionedExclusiveScanNV";
    default: return "Unknown";
    }
}

inline const char* KernelEnqueueFlagsToString(KernelEnqueueFlags value) {
    switch (value) {
    case KernelEnqueueFlagsNoWait: return "NoWait";
    case KernelEnqueueFlagsWaitKernel: return "WaitKernel";
    case KernelEnqueueFlagsWaitWorkGroup: return "WaitWorkGroup";
    default: return "Unknown";
    }
}

inline const char* CapabilityToString(Capability value) {
    switch (value) {
    case CapabilityMatrix: return "Matrix";
    case CapabilityShader: return "Shader";
    case CapabilityGeometry: return "Geometry";
    case CapabilityTessellation: return "Tessellation";
    case CapabilityAddresses: return "Addresses";
    case CapabilityLinkage: return "Linkage";
    case CapabilityKernel: return "Kernel";
    case CapabilityVector16: return "Vector16";
    case CapabilityFloat16Buffer: return "Float16Buffer";
    case CapabilityFloat16: return "Float16";
    case CapabilityFloat64: return "Float64";
    case CapabilityInt64: return "Int64";
    case CapabilityInt64Atomics: return "Int64Atomics";
    case CapabilityImageBasic: return "ImageBasic";
    case CapabilityImageReadWrite: return "ImageReadWrite";
    case CapabilityImageMipmap: return "ImageMipmap";
    case CapabilityPipes: return "Pipes";
    case CapabilityGroups: return "Groups";
    case CapabilityDeviceEnqueue: return "DeviceEnqueue";
    case CapabilityLiteralSampler: return "LiteralSampler";
    case CapabilityAtomicStorage: return "AtomicStorage";
    case CapabilityInt16: return "Int16";
    case CapabilityTessellationPointSize: return "TessellationPointSize";
    case CapabilityGeometryPointSize: return "GeometryPointSize";
    case CapabilityImageGatherExtended: return "ImageGatherExtended";
    case CapabilityStorageImageMultisample: return "StorageImageMultisample";
    case CapabilityUniformBufferArrayDynamicIndexing: return "UniformBufferArrayDynamicIndexing";
    case CapabilitySampledImageArrayDynamicIndexing: return "SampledImageArrayDynamicIndexing";
    case CapabilityStorageBufferArrayDynamicIndexing: return "StorageBufferArrayDynamicIndexing";
    case CapabilityStorageImageArrayDynamicIndexing: return "StorageImageArrayDynamicIndexing";
    case CapabilityClipDistance: return "ClipDistance";
    case CapabilityCullDistance: return "CullDistance";
    case CapabilityImageCubeArray: return "ImageCubeArray";
    case CapabilitySampleRateShading: return "SampleRateShading";
    case CapabilityImageRect: return "ImageRect";
    case CapabilitySampledRect: return "SampledRect";
    case CapabilityGenericPointer: return "GenericPointer";
    case CapabilityInt8: return "Int8";
    case CapabilityInputAttachment: return "InputAttachment";
    case CapabilitySparseResidency: return "SparseResidency";
    case CapabilityMinLod: return "MinLod";
    case CapabilitySampled1D: return "Sampled1D";
    case CapabilityImage1D: return "Image1D";
    case CapabilitySampledCubeArray: return "SampledCubeArray";
    case CapabilitySampledBuffer: return "SampledBuffer";
    case CapabilityImageBuffer: return "ImageBuffer";
    case CapabilityImageMSArray: return "ImageMSArray";
    case CapabilityStorageImageExtendedFormats: return "StorageImageExtendedFormats";
    case CapabilityImageQuery: return "ImageQuery";
    case CapabilityDerivativeControl: return "DerivativeControl";
    case CapabilityInterpolationFunction: return "InterpolationFunction";
    case CapabilityTransformFeedback: return "TransformFeedback";
    case CapabilityGeometryStreams: return "GeometryStreams";
    case CapabilityStorageImageReadWithoutFormat: return "StorageImageReadWithoutFormat";
    case CapabilityStorageImageWriteWithoutFormat: return "StorageImageWriteWithoutFormat";
    case CapabilityMultiViewport: return "MultiViewport";
    case CapabilitySubgroupDispatch: return "SubgroupDispatch";
    case CapabilityNamedBarrier: return "NamedBarrier";
    case CapabilityPipeStorage: return "PipeStorage";
    case CapabilityGroupNonUniform: return "GroupNonUniform";
    case CapabilityGroupNonUniformVote: return "GroupNonUniformVote";
    case CapabilityGroupNonUniformArithmetic: return "GroupNonUniformArithmetic";
    case CapabilityGroupNonUniformBallot: return "GroupNonUniformBallot";
    case CapabilityGroupNonUniformShuffle: return "GroupNonUniformShuffle";
    case CapabilityGroupNonUniformShuffleRelative: return "GroupNonUniformShuffleRelative";
    case CapabilityGroupNonUniformClustered: return "GroupNonUniformClustered";
    case CapabilityGroupNonUniformQuad: return "GroupNonUniformQuad";
    case CapabilityShaderLayer: return "ShaderLayer";
    case CapabilityShaderViewportIndex: return "ShaderViewportIndex";
    case CapabilityUniformDecoration: return "UniformDecoration";
    case CapabilityCoreBuiltinsARM: return "CoreBuiltinsARM";
    case CapabilityTileImageColorReadAccessEXT: return "TileImageColorReadAccessEXT";
    case CapabilityTileImageDepthReadAccessEXT: return "TileImageDepthReadAccessEXT";
    case CapabilityTileImageStencilReadAccessEXT: return "TileImageStencilReadAccessEXT";
    case CapabilityCooperativeMatrixLayoutsARM: return "CooperativeMatrixLayoutsARM";
    case CapabilityFragmentShadingRateKHR: return "FragmentShadingRateKHR";
    case CapabilitySubgroupBallotKHR: return "SubgroupBallotKHR";
    case CapabilityDrawParameters: return "DrawParameters";
    case CapabilityWorkgroupMemoryExplicitLayoutKHR: return "WorkgroupMemoryExplicitLayoutKHR";
    case CapabilityWorkgroupMemoryExplicitLayout8BitAccessKHR: return "WorkgroupMemoryExplicitLayout8BitAccessKHR";
    case CapabilityWorkgroupMemoryExplicitLayout16BitAccessKHR: return "WorkgroupMemoryExplicitLayout16BitAccessKHR";
    case CapabilitySubgroupVoteKHR: return "SubgroupVoteKHR";
    case CapabilityStorageBuffer16BitAccess: return "StorageBuffer16BitAccess";
    case CapabilityStorageUniform16: return "StorageUniform16";
    case CapabilityStoragePushConstant16: return "StoragePushConstant16";
    case CapabilityStorageInputOutput16: return "StorageInputOutput16";
    case CapabilityDeviceGroup: return "DeviceGroup";
    case CapabilityMultiView: return "MultiView";
    case CapabilityVariablePointersStorageBuffer: return "VariablePointersStorageBuffer";
    case CapabilityVariablePointers: return "VariablePointers";
    case CapabilityAtomicStorageOps: return "AtomicStorageOps";
    case CapabilitySampleMaskPostDepthCoverage: return "SampleMaskPostDepthCoverage";
    case CapabilityStorageBuffer8BitAccess: return "StorageBuffer8BitAccess";
    case CapabilityUniformAndStorageBuffer8BitAccess: return "UniformAndStorageBuffer8BitAccess";
    case CapabilityStoragePushConstant8: return "StoragePushConstant8";
    case CapabilityDenormPreserve: return "DenormPreserve";
    case CapabilityDenormFlushToZero: return "DenormFlushToZero";
    case CapabilitySignedZeroInfNanPreserve: return "SignedZeroInfNanPreserve";
    case CapabilityRoundingModeRTE: return "RoundingModeRTE";
    case CapabilityRoundingModeRTZ: return "RoundingModeRTZ";
    case CapabilityRayQueryProvisionalKHR: return "RayQueryProvisionalKHR";
    case CapabilityRayQueryKHR: return "RayQueryKHR";
    case CapabilityUntypedPointersKHR: return "UntypedPointersKHR";
    case CapabilityRayTraversalPrimitiveCullingKHR: return "RayTraversalPrimitiveCullingKHR";
    case CapabilityRayTracingKHR: return "RayTracingKHR";
    case CapabilityTextureSampleWeightedQCOM: return "TextureSampleWeightedQCOM";
    case CapabilityTextureBoxFilterQCOM: return "TextureBoxFilterQCOM";
    case CapabilityTextureBlockMatchQCOM: return "TextureBlockMatchQCOM";
    case CapabilityTextureBlockMatch2QCOM: return "TextureBlockMatch2QCOM";
    case CapabilityFloat16ImageAMD: return "Float16ImageAMD";
    case CapabilityImageGatherBiasLodAMD: return "ImageGatherBiasLodAMD";
    case CapabilityFragmentMaskAMD: return "FragmentMaskAMD";
    case CapabilityStencilExportEXT: return "StencilExportEXT";
    case CapabilityImageReadWriteLodAMD: return "ImageReadWriteLodAMD";
    case CapabilityInt64ImageEXT: return "Int64ImageEXT";
    case CapabilityShaderClockKHR: return "ShaderClockKHR";
    case CapabilityShaderEnqueueAMDX: return "ShaderEnqueueAMDX";
    case CapabilityQuadControlKHR: return "QuadControlKHR";
    case CapabilitySampleMaskOverrideCoverageNV: return "SampleMaskOverrideCoverageNV";
    case CapabilityGeometryShaderPassthroughNV: return "GeometryShaderPassthroughNV";
    case CapabilityShaderViewportIndexLayerEXT: return "ShaderViewportIndexLayerEXT";
    case CapabilityShaderViewportMaskNV: return "ShaderViewportMaskNV";
    case CapabilityShaderStereoViewNV: return "ShaderStereoViewNV";
    case CapabilityPerViewAttributesNV: return "PerViewAttributesNV";
    case CapabilityFragmentFullyCoveredEXT: return "FragmentFullyCoveredEXT";
    case CapabilityMeshShadingNV: return "MeshShadingNV";
    case CapabilityImageFootprintNV: return "ImageFootprintNV";
    case CapabilityMeshShadingEXT: return "MeshShadingEXT";
    case CapabilityFragmentBarycentricKHR: return "FragmentBarycentricKHR";
    case CapabilityComputeDerivativeGroupQuadsNV: return "ComputeDerivativeGroupQuadsNV";
    case CapabilityFragmentDensityEXT: return "FragmentDensityEXT";
    case CapabilityGroupNonUniformPartitionedNV: return "GroupNonUniformPartitionedNV";
    case CapabilityShaderNonUniform: return "ShaderNonUniform";
    case CapabilityRuntimeDescriptorArray: return "RuntimeDescriptorArray";
    case CapabilityInputAttachmentArrayDynamicIndexing: return "InputAttachmentArrayDynamicIndexing";
    case CapabilityUniformTexelBufferArrayDynamicIndexing: return "UniformTexelBufferArrayDynamicIndexing";
    case CapabilityStorageTexelBufferArrayDynamicIndexing: return "StorageTexelBufferArrayDynamicIndexing";
    case CapabilityUniformBufferArrayNonUniformIndexing: return "UniformBufferArrayNonUniformIndexing";
    case CapabilitySampledImageArrayNonUniformIndexing: return "SampledImageArrayNonUniformIndexing";
    case CapabilityStorageBufferArrayNonUniformIndexing: return "StorageBufferArrayNonUniformIndexing";
    case CapabilityStorageImageArrayNonUniformIndexing: return "StorageImageArrayNonUniformIndexing";
    case CapabilityInputAttachmentArrayNonUniformIndexing: return "InputAttachmentArrayNonUniformIndexing";
    case CapabilityUniformTexelBufferArrayNonUniformIndexing: return "UniformTexelBufferArrayNonUniformIndexing";
    case CapabilityStorageTexelBufferArrayNonUniformIndexing: return "StorageTexelBufferArrayNonUniformIndexing";
    case CapabilityRayTracingPositionFetchKHR: return "RayTracingPositionFetchKHR";
    case CapabilityRayTracingNV: return "RayTracingNV";
    case CapabilityRayTracingMotionBlurNV: return "RayTracingMotionBlurNV";
    case CapabilityVulkanMemoryModel: return "VulkanMemoryModel";
    case CapabilityVulkanMemoryModelDeviceScope: return "VulkanMemoryModelDeviceScope";
    case CapabilityPhysicalStorageBufferAddresses: return "PhysicalStorageBufferAddresses";
    case CapabilityComputeDerivativeGroupLinearNV: return "ComputeDerivativeGroupLinearNV";
    case CapabilityRayTracingProvisionalKHR: return "RayTracingProvisionalKHR";
    case CapabilityCooperativeMatrixNV: return "CooperativeMatrixNV";
    case CapabilityFragmentShaderSampleInterlockEXT: return "FragmentShaderSampleInterlockEXT";
    case CapabilityFragmentShaderShadingRateInterlockEXT: return "FragmentShaderShadingRateInterlockEXT";
    case CapabilityShaderSMBuiltinsNV: return "ShaderSMBuiltinsNV";
    case CapabilityFragmentShaderPixelInterlockEXT: return "FragmentShaderPixelInterlockEXT";
    case CapabilityDemoteToHelperInvocation: return "DemoteToHelperInvocation";
    case CapabilityDisplacementMicromapNV: return "DisplacementMicromapNV";
    case CapabilityRayTracingOpacityMicromapEXT: return "RayTracingOpacityMicromapEXT";
    case CapabilityShaderInvocationReorderNV: return "ShaderInvocationReorderNV";
    case CapabilityBindlessTextureNV: return "BindlessTextureNV";
    case CapabilityRayQueryPositionFetchKHR: return "RayQueryPositionFetchKHR";
    case CapabilityAtomicFloat16VectorNV: return "AtomicFloat16VectorNV";
    case CapabilityRayTracingDisplacementMicromapNV: return "RayTracingDisplacementMicromapNV";
    case CapabilityRawAccessChainsNV: return "RawAccessChainsNV";
    case CapabilitySubgroupShuffleINTEL: return "SubgroupShuffleINTEL";
    case CapabilitySubgroupBufferBlockIOINTEL: return "SubgroupBufferBlockIOINTEL";
    case CapabilitySubgroupImageBlockIOINTEL: return "SubgroupImageBlockIOINTEL";
    case CapabilitySubgroupImageMediaBlockIOINTEL: return "SubgroupImageMediaBlockIOINTEL";
    case CapabilityRoundToInfinityINTEL: return "RoundToInfinityINTEL";
    case CapabilityFloatingPointModeINTEL: return "FloatingPointModeINTEL";
    case CapabilityIntegerFunctions2INTEL: return "IntegerFunctions2INTEL";
    case CapabilityFunctionPointersINTEL: return "FunctionPointersINTEL";
    case CapabilityIndirectReferencesINTEL: return "IndirectReferencesINTEL";
    case CapabilityAsmINTEL: return "AsmINTEL";
    case CapabilityAtomicFloat32MinMaxEXT: return "AtomicFloat32MinMaxEXT";
    case CapabilityAtomicFloat64MinMaxEXT: return "AtomicFloat64MinMaxEXT";
    case CapabilityAtomicFloat16MinMaxEXT: return "AtomicFloat16MinMaxEXT";
    case CapabilityVectorComputeINTEL: return "VectorComputeINTEL";
    case CapabilityVectorAnyINTEL: return "VectorAnyINTEL";
    case CapabilityExpectAssumeKHR: return "ExpectAssumeKHR";
    case CapabilitySubgroupAvcMotionEstimationINTEL: return "SubgroupAvcMotionEstimationINTEL";
    case CapabilitySubgroupAvcMotionEstimationIntraINTEL: return "SubgroupAvcMotionEstimationIntraINTEL";
    case CapabilitySubgroupAvcMotionEstimationChromaINTEL: return "SubgroupAvcMotionEstimationChromaINTEL";
    case CapabilityVariableLengthArrayINTEL: return "VariableLengthArrayINTEL";
    case CapabilityFunctionFloatControlINTEL: return "FunctionFloatControlINTEL";
    case CapabilityFPGAMemoryAttributesINTEL: return "FPGAMemoryAttributesINTEL";
    case CapabilityFPFastMathModeINTEL: return "FPFastMathModeINTEL";
    case CapabilityArbitraryPrecisionIntegersINTEL: return "ArbitraryPrecisionIntegersINTEL";
    case CapabilityArbitraryPrecisionFloatingPointINTEL: return "ArbitraryPrecisionFloatingPointINTEL";
    case CapabilityUnstructuredLoopControlsINTEL: return "UnstructuredLoopControlsINTEL";
    case CapabilityFPGALoopControlsINTEL: return "FPGALoopControlsINTEL";
    case CapabilityKernelAttributesINTEL: return "KernelAttributesINTEL";
    case CapabilityFPGAKernelAttributesINTEL: return "FPGAKernelAttributesINTEL";
    case CapabilityFPGAMemoryAccessesINTEL: return "FPGAMemoryAccessesINTEL";
    case CapabilityFPGAClusterAttributesINTEL: return "FPGAClusterAttributesINTEL";
    case CapabilityLoopFuseINTEL: return "LoopFuseINTEL";
    case CapabilityFPGADSPControlINTEL: return "FPGADSPControlINTEL";
    case CapabilityMemoryAccessAliasingINTEL: return "MemoryAccessAliasingINTEL";
    case CapabilityFPGAInvocationPipeliningAttributesINTEL: return "FPGAInvocationPipeliningAttributesINTEL";
    case CapabilityFPGABufferLocationINTEL: return "FPGABufferLocationINTEL";
    case CapabilityArbitraryPrecisionFixedPointINTEL: return "ArbitraryPrecisionFixedPointINTEL";
    case CapabilityUSMStorageClassesINTEL: return "USMStorageClassesINTEL";
    case CapabilityRuntimeAlignedAttributeINTEL: return "RuntimeAlignedAttributeINTEL";
    case CapabilityIOPipesINTEL: return "IOPipesINTEL";
    case CapabilityBlockingPipesINTEL: return "BlockingPipesINTEL";
    case CapabilityFPGARegINTEL: return "FPGARegINTEL";
    case CapabilityDotProductInputAll: return "DotProductInputAll";
    case CapabilityDotProductInput4x8Bit: return "DotProductInput4x8Bit";
    case CapabilityDotProductInput4x8BitPacked: return "DotProductInput4x8BitPacked";
    case CapabilityDotProduct: return "DotProduct";
    case CapabilityRayCullMaskKHR: return "RayCullMaskKHR";
    case CapabilityCooperativeMatrixKHR: return "CooperativeMatrixKHR";
    case CapabilityReplicatedCompositesEXT: return "ReplicatedCompositesEXT";
    case CapabilityBitInstructions: return "BitInstructions";
    case CapabilityGroupNonUniformRotateKHR: return "GroupNonUniformRotateKHR";
    case CapabilityFloatControls2: return "FloatControls2";
    case CapabilityAtomicFloat32AddEXT: return "AtomicFloat32AddEXT";
    case CapabilityAtomicFloat64AddEXT: return "AtomicFloat64AddEXT";
    case CapabilityLongCompositesINTEL: return "LongCompositesINTEL";
    case CapabilityOptNoneINTEL: return "OptNoneINTEL";
    case CapabilityAtomicFloat16AddEXT: return "AtomicFloat16AddEXT";
    case CapabilityDebugInfoModuleINTEL: return "DebugInfoModuleINTEL";
    case CapabilityBFloat16ConversionINTEL: return "BFloat16ConversionINTEL";
    case CapabilitySplitBarrierINTEL: return "SplitBarrierINTEL";
    case CapabilityFPGAClusterAttributesV2INTEL: return "FPGAClusterAttributesV2INTEL";
    case CapabilityFPGAKernelAttributesv2INTEL: return "FPGAKernelAttributesv2INTEL";
    case CapabilityFPMaxErrorINTEL: return "FPMaxErrorINTEL";
    case CapabilityFPGALatencyControlINTEL: return "FPGALatencyControlINTEL";
    case CapabilityFPGAArgumentInterfacesINTEL: return "FPGAArgumentInterfacesINTEL";
    case CapabilityGlobalVariableHostAccessINTEL: return "GlobalVariableHostAccessINTEL";
    case CapabilityGlobalVariableFPGADecorationsINTEL: return "GlobalVariableFPGADecorationsINTEL";
    case CapabilitySubgroupBufferPrefetchINTEL: return "SubgroupBufferPrefetchINTEL";
    case CapabilityGroupUniformArithmeticKHR: return "GroupUniformArithmeticKHR";
    case CapabilityMaskedGatherScatterINTEL: return "MaskedGatherScatterINTEL";
    case CapabilityCacheControlsINTEL: return "CacheControlsINTEL";
    case CapabilityRegisterLimitsINTEL: return "RegisterLimitsINTEL";
    default: return "Unknown";
    }
}

inline const char* RayQueryIntersectionToString(RayQueryIntersection value) {
    switch (value) {
    case RayQueryIntersectionRayQueryCandidateIntersectionKHR: return "RayQueryCandidateIntersectionKHR";
    case RayQueryIntersectionRayQueryCommittedIntersectionKHR: return "RayQueryCommittedIntersectionKHR";
    default: return "Unknown";
    }
}

inline const char* RayQueryCommittedIntersectionTypeToString(RayQueryCommittedIntersectionType value) {
    switch (value) {
    case RayQueryCommittedIntersectionTypeRayQueryCommittedIntersectionNoneKHR: return "RayQueryCommittedIntersectionNoneKHR";
    case RayQueryCommittedIntersectionTypeRayQueryCommittedIntersectionTriangleKHR: return "RayQueryCommittedIntersectionTriangleKHR";
    case RayQueryCommittedIntersectionTypeRayQueryCommittedIntersectionGeneratedKHR: return "RayQueryCommittedIntersectionGeneratedKHR";
    default: return "Unknown";
    }
}

inline const char* RayQueryCandidateIntersectionTypeToString(RayQueryCandidateIntersectionType value) {
    switch (value) {
    case RayQueryCandidateIntersectionTypeRayQueryCandidateIntersectionTriangleKHR: return "RayQueryCandidateIntersectionTriangleKHR";
    case RayQueryCandidateIntersectionTypeRayQueryCandidateIntersectionAABBKHR: return "RayQueryCandidateIntersectionAABBKHR";
    default: return "Unknown";
    }
}

inline const char* FPDenormModeToString(FPDenormMode value) {
    switch (value) {
    case FPDenormModePreserve: return "Preserve";
    case FPDenormModeFlushToZero: return "FlushToZero";
    default: return "Unknown";
    }
}

inline const char* FPOperationModeToString(FPOperationMode value) {
    switch (value) {
    case FPOperationModeIEEE: return "IEEE";
    case FPOperationModeALT: return "ALT";
    default: return "Unknown";
    }
}

inline const char* QuantizationModesToString(QuantizationModes value) {
    switch (value) {
    case QuantizationModesTRN: return "TRN";
    case QuantizationModesTRN_ZERO: return "TRN_ZERO";
    case QuantizationModesRND: return "RND";
    case QuantizationModesRND_ZERO: return "RND_ZERO";
    case QuantizationModesRND_INF: return "RND_INF";
    case QuantizationModesRND_MIN_INF: return "RND_MIN_INF";
    case QuantizationModesRND_CONV: return "RND_CONV";
    case QuantizationModesRND_CONV_ODD: return "RND_CONV_ODD";
    default: return "Unknown";
    }
}

inline const char* OverflowModesToString(OverflowModes value) {
    switch (value) {
    case OverflowModesWRAP: return "WRAP";
    case OverflowModesSAT: return "SAT";
    case OverflowModesSAT_ZERO: return "SAT_ZERO";
    case OverflowModesSAT_SYM: return "SAT_SYM";
    default: return "Unknown";
    }
}

inline const char* PackedVectorFormatToString(PackedVectorFormat value) {
    switch (value) {
    case PackedVectorFormatPackedVectorFormat4x8Bit: return "PackedVectorFormat4x8Bit";
    default: return "Unknown";
    }
}

inline const char* CooperativeMatrixLayoutToString(CooperativeMatrixLayout value) {
    switch (value) {
    case CooperativeMatrixLayoutRowMajorKHR: return "RowMajorKHR";
    case CooperativeMatrixLayoutColumnMajorKHR: return "ColumnMajorKHR";
    case CooperativeMatrixLayoutRowBlockedInterleavedARM: return "RowBlockedInterleavedARM";
    case CooperativeMatrixLayoutColumnBlockedInterleavedARM: return "ColumnBlockedInterleavedARM";
    default: return "Unknown";
    }
}

inline const char* CooperativeMatrixUseToString(CooperativeMatrixUse value) {
    switch (value) {
    case CooperativeMatrixUseMatrixAKHR: return "MatrixAKHR";
    case CooperativeMatrixUseMatrixBKHR: return "MatrixBKHR";
    case CooperativeMatrixUseMatrixAccumulatorKHR: return "MatrixAccumulatorKHR";
    default: return "Unknown";
    }
}

inline const char* InitializationModeQualifierToString(InitializationModeQualifier value) {
    switch (value) {
    case InitializationModeQualifierInitOnDeviceReprogramINTEL: return "InitOnDeviceReprogramINTEL";
    case InitializationModeQualifierInitOnDeviceResetINTEL: return "InitOnDeviceResetINTEL";
    default: return "Unknown";
    }
}

inline const char* HostAccessQualifierToString(HostAccessQualifier value) {
    switch (value) {
    case HostAccessQualifierNoneINTEL: return "NoneINTEL";
    case HostAccessQualifierReadINTEL: return "ReadINTEL";
    case HostAccessQualifierWriteINTEL: return "WriteINTEL";
    case HostAccessQualifierReadWriteINTEL: return "ReadWriteINTEL";
    default: return "Unknown";
    }
}

inline const char* LoadCacheControlToString(LoadCacheControl value) {
    switch (value) {
    case LoadCacheControlUncachedINTEL: return "UncachedINTEL";
    case LoadCacheControlCachedINTEL: return "CachedINTEL";
    case LoadCacheControlStreamingINTEL: return "StreamingINTEL";
    case LoadCacheControlInvalidateAfterReadINTEL: return "InvalidateAfterReadINTEL";
    case LoadCacheControlConstCachedINTEL: return "ConstCachedINTEL";
    default: return "Unknown";
    }
}

inline const char* StoreCacheControlToString(StoreCacheControl value) {
    switch (value) {
    case StoreCacheControlUncachedINTEL: return "UncachedINTEL";
    case StoreCacheControlWriteThroughINTEL: return "WriteThroughINTEL";
    case StoreCacheControlWriteBackINTEL: return "WriteBackINTEL";
    case StoreCacheControlStreamingINTEL: return "StreamingINTEL";
    default: return "Unknown";
    }
}

inline const char* NamedMaximumNumberOfRegistersToString(NamedMaximumNumberOfRegisters value) {
    switch (value) {
    case NamedMaximumNumberOfRegistersAutoINTEL: return "AutoINTEL";
    default: return "Unknown";
    }
}

inline const char* FPEncodingToString(FPEncoding value) {
    switch (value) {
    default: return "Unknown";
    }
}

inline const char* OpToString(Op value) {
    switch (value) {
    case OpNop: return "OpNop";
    case OpUndef: return "OpUndef";
    case OpSourceContinued: return "OpSourceContinued";
    case OpSource: return "OpSource";
    case OpSourceExtension: return "OpSourceExtension";
    case OpName: return "OpName";
    case OpMemberName: return "OpMemberName";
    case OpString: return "OpString";
    case OpLine: return "OpLine";
    case OpExtension: return "OpExtension";
    case OpExtInstImport: return "OpExtInstImport";
    case OpExtInst: return "OpExtInst";
    case OpMemoryModel: return "OpMemoryModel";
    case OpEntryPoint: return "OpEntryPoint";
    case OpExecutionMode: return "OpExecutionMode";
    case OpCapability: return "OpCapability";
    case OpTypeVoid: return "OpTypeVoid";
    case OpTypeBool: return "OpTypeBool";
    case OpTypeInt: return "OpTypeInt";
    case OpTypeFloat: return "OpTypeFloat";
    case OpTypeVector: return "OpTypeVector";
    case OpTypeMatrix: return "OpTypeMatrix";
    case OpTypeImage: return "OpTypeImage";
    case OpTypeSampler: return "OpTypeSampler";
    case OpTypeSampledImage: return "OpTypeSampledImage";
    case OpTypeArray: return "OpTypeArray";
    case OpTypeRuntimeArray: return "OpTypeRuntimeArray";
    case OpTypeStruct: return "OpTypeStruct";
    case OpTypeOpaque: return "OpTypeOpaque";
    case OpTypePointer: return "OpTypePointer";
    case OpTypeFunction: return "OpTypeFunction";
    case OpTypeEvent: return "OpTypeEvent";
    case OpTypeDeviceEvent: return "OpTypeDeviceEvent";
    case OpTypeReserveId: return "OpTypeReserveId";
    case OpTypeQueue: return "OpTypeQueue";
    case OpTypePipe: return "OpTypePipe";
    case OpTypeForwardPointer: return "OpTypeForwardPointer";
    case OpConstantTrue: return "OpConstantTrue";
    case OpConstantFalse: return "OpConstantFalse";
    case OpConstant: return "OpConstant";
    case OpConstantComposite: return "OpConstantComposite";
    case OpConstantSampler: return "OpConstantSampler";
    case OpConstantNull: return "OpConstantNull";
    case OpSpecConstantTrue: return "OpSpecConstantTrue";
    case OpSpecConstantFalse: return "OpSpecConstantFalse";
    case OpSpecConstant: return "OpSpecConstant";
    case OpSpecConstantComposite: return "OpSpecConstantComposite";
    case OpSpecConstantOp: return "OpSpecConstantOp";
    case OpFunction: return "OpFunction";
    case OpFunctionParameter: return "OpFunctionParameter";
    case OpFunctionEnd: return "OpFunctionEnd";
    case OpFunctionCall: return "OpFunctionCall";
    case OpVariable: return "OpVariable";
    case OpImageTexelPointer: return "OpImageTexelPointer";
    case OpLoad: return "OpLoad";
    case OpStore: return "OpStore";
    case OpCopyMemory: return "OpCopyMemory";
    case OpCopyMemorySized: return "OpCopyMemorySized";
    case OpAccessChain: return "OpAccessChain";
    case OpInBoundsAccessChain: return "OpInBoundsAccessChain";
    case OpPtrAccessChain: return "OpPtrAccessChain";
    case OpArrayLength: return "OpArrayLength";
    case OpGenericPtrMemSemantics: return "OpGenericPtrMemSemantics";
    case OpInBoundsPtrAccessChain: return "OpInBoundsPtrAccessChain";
    case OpDecorate: return "OpDecorate";
    case OpMemberDecorate: return "OpMemberDecorate";
    case OpDecorationGroup: return "OpDecorationGroup";
    case OpGroupDecorate: return "OpGroupDecorate";
    case OpGroupMemberDecorate: return "OpGroupMemberDecorate";
    case OpVectorExtractDynamic: return "OpVectorExtractDynamic";
    case OpVectorInsertDynamic: return "OpVectorInsertDynamic";
    case OpVectorShuffle: return "OpVectorShuffle";
    case OpCompositeConstruct: return "OpCompositeConstruct";
    case OpCompositeExtract: return "OpCompositeExtract";
    case OpCompositeInsert: return "OpCompositeInsert";
    case OpCopyObject: return "OpCopyObject";
    case OpTranspose: return "OpTranspose";
    case OpSampledImage: return "OpSampledImage";
    case OpImageSampleImplicitLod: return "OpImageSampleImplicitLod";
    case OpImageSampleExplicitLod: return "OpImageSampleExplicitLod";
    case OpImageSampleDrefImplicitLod: return "OpImageSampleDrefImplicitLod";
    case OpImageSampleDrefExplicitLod: return "OpImageSampleDrefExplicitLod";
    case OpImageSampleProjImplicitLod: return "OpImageSampleProjImplicitLod";
    case OpImageSampleProjExplicitLod: return "OpImageSampleProjExplicitLod";
    case OpImageSampleProjDrefImplicitLod: return "OpImageSampleProjDrefImplicitLod";
    case OpImageSampleProjDrefExplicitLod: return "OpImageSampleProjDrefExplicitLod";
    case OpImageFetch: return "OpImageFetch";
    case OpImageGather: return "OpImageGather";
    case OpImageDrefGather: return "OpImageDrefGather";
    case OpImageRead: return "OpImageRead";
    case OpImageWrite: return "OpImageWrite";
    case OpImage: return "OpImage";
    case OpImageQueryFormat: return "OpImageQueryFormat";
    case OpImageQueryOrder: return "OpImageQueryOrder";
    case OpImageQuerySizeLod: return "OpImageQuerySizeLod";
    case OpImageQuerySize: return "OpImageQuerySize";
    case OpImageQueryLod: return "OpImageQueryLod";
    case OpImageQueryLevels: return "OpImageQueryLevels";
    case OpImageQuerySamples: return "OpImageQuerySamples";
    case OpConvertFToU: return "OpConvertFToU";
    case OpConvertFToS: return "OpConvertFToS";
    case OpConvertSToF: return "OpConvertSToF";
    case OpConvertUToF: return "OpConvertUToF";
    case OpUConvert: return "OpUConvert";
    case OpSConvert: return "OpSConvert";
    case OpFConvert: return "OpFConvert";
    case OpQuantizeToF16: return "OpQuantizeToF16";
    case OpConvertPtrToU: return "OpConvertPtrToU";
    case OpSatConvertSToU: return "OpSatConvertSToU";
    case OpSatConvertUToS: return "OpSatConvertUToS";
    case OpConvertUToPtr: return "OpConvertUToPtr";
    case OpPtrCastToGeneric: return "OpPtrCastToGeneric";
    case OpGenericCastToPtr: return "OpGenericCastToPtr";
    case OpGenericCastToPtrExplicit: return "OpGenericCastToPtrExplicit";
    case OpBitcast: return "OpBitcast";
    case OpSNegate: return "OpSNegate";
    case OpFNegate: return "OpFNegate";
    case OpIAdd: return "OpIAdd";
    case OpFAdd: return "OpFAdd";
    case OpISub: return "OpISub";
    case OpFSub: return "OpFSub";
    case OpIMul: return "OpIMul";
    case OpFMul: return "OpFMul";
    case OpUDiv: return "OpUDiv";
    case OpSDiv: return "OpSDiv";
    case OpFDiv: return "OpFDiv";
    case OpUMod: return "OpUMod";
    case OpSRem: return "OpSRem";
    case OpSMod: return "OpSMod";
    case OpFRem: return "OpFRem";
    case OpFMod: return "OpFMod";
    case OpVectorTimesScalar: return "OpVectorTimesScalar";
    case OpMatrixTimesScalar: return "OpMatrixTimesScalar";
    case OpVectorTimesMatrix: return "OpVectorTimesMatrix";
    case OpMatrixTimesVector: return "OpMatrixTimesVector";
    case OpMatrixTimesMatrix: return "OpMatrixTimesMatrix";
    case OpOuterProduct: return "OpOuterProduct";
    case OpDot: return "OpDot";
    case OpIAddCarry: return "OpIAddCarry";
    case OpISubBorrow: return "OpISubBorrow";
    case OpUMulExtended: return "OpUMulExtended";
    case OpSMulExtended: return "OpSMulExtended";
    case OpAny: return "OpAny";
    case OpAll: return "OpAll";
    case OpIsNan: return "OpIsNan";
    case OpIsInf: return "OpIsInf";
    case OpIsFinite: return "OpIsFinite";
    case OpIsNormal: return "OpIsNormal";
    case OpSignBitSet: return "OpSignBitSet";
    case OpLessOrGreater: return "OpLessOrGreater";
    case OpOrdered: return "OpOrdered";
    case OpUnordered: return "OpUnordered";
    case OpLogicalEqual: return "OpLogicalEqual";
    case OpLogicalNotEqual: return "OpLogicalNotEqual";
    case OpLogicalOr: return "OpLogicalOr";
    case OpLogicalAnd: return "OpLogicalAnd";
    case OpLogicalNot: return "OpLogicalNot";
    case OpSelect: return "OpSelect";
    case OpIEqual: return "OpIEqual";
    case OpINotEqual: return "OpINotEqual";
    case OpUGreaterThan: return "OpUGreaterThan";
    case OpSGreaterThan: return "OpSGreaterThan";
    case OpUGreaterThanEqual: return "OpUGreaterThanEqual";
    case OpSGreaterThanEqual: return "OpSGreaterThanEqual";
    case OpULessThan: return "OpULessThan";
    case OpSLessThan: return "OpSLessThan";
    case OpULessThanEqual: return "OpULessThanEqual";
    case OpSLessThanEqual: return "OpSLessThanEqual";
    case OpFOrdEqual: return "OpFOrdEqual";
    case OpFUnordEqual: return "OpFUnordEqual";
    case OpFOrdNotEqual: return "OpFOrdNotEqual";
    case OpFUnordNotEqual: return "OpFUnordNotEqual";
    case OpFOrdLessThan: return "OpFOrdLessThan";
    case OpFUnordLessThan: return "OpFUnordLessThan";
    case OpFOrdGreaterThan: return "OpFOrdGreaterThan";
    case OpFUnordGreaterThan: return "OpFUnordGreaterThan";
    case OpFOrdLessThanEqual: return "OpFOrdLessThanEqual";
    case OpFUnordLessThanEqual: return "OpFUnordLessThanEqual";
    case OpFOrdGreaterThanEqual: return "OpFOrdGreaterThanEqual";
    case OpFUnordGreaterThanEqual: return "OpFUnordGreaterThanEqual";
    case OpShiftRightLogical: return "OpShiftRightLogical";
    case OpShiftRightArithmetic: return "OpShiftRightArithmetic";
    case OpShiftLeftLogical: return "OpShiftLeftLogical";
    case OpBitwiseOr: return "OpBitwiseOr";
    case OpBitwiseXor: return "OpBitwiseXor";
    case OpBitwiseAnd: return "OpBitwiseAnd";
    case OpNot: return "OpNot";
    case OpBitFieldInsert: return "OpBitFieldInsert";
    case OpBitFieldSExtract: return "OpBitFieldSExtract";
    case OpBitFieldUExtract: return "OpBitFieldUExtract";
    case OpBitReverse: return "OpBitReverse";
    case OpBitCount: return "OpBitCount";
    case OpDPdx: return "OpDPdx";
    case OpDPdy: return "OpDPdy";
    case OpFwidth: return "OpFwidth";
    case OpDPdxFine: return "OpDPdxFine";
    case OpDPdyFine: return "OpDPdyFine";
    case OpFwidthFine: return "OpFwidthFine";
    case OpDPdxCoarse: return "OpDPdxCoarse";
    case OpDPdyCoarse: return "OpDPdyCoarse";
    case OpFwidthCoarse: return "OpFwidthCoarse";
    case OpEmitVertex: return "OpEmitVertex";
    case OpEndPrimitive: return "OpEndPrimitive";
    case OpEmitStreamVertex: return "OpEmitStreamVertex";
    case OpEndStreamPrimitive: return "OpEndStreamPrimitive";
    case OpControlBarrier: return "OpControlBarrier";
    case OpMemoryBarrier: return "OpMemoryBarrier";
    case OpAtomicLoad: return "OpAtomicLoad";
    case OpAtomicStore: return "OpAtomicStore";
    case OpAtomicExchange: return "OpAtomicExchange";
    case OpAtomicCompareExchange: return "OpAtomicCompareExchange";
    case OpAtomicCompareExchangeWeak: return "OpAtomicCompareExchangeWeak";
    case OpAtomicIIncrement: return "OpAtomicIIncrement";
    case OpAtomicIDecrement: return "OpAtomicIDecrement";
    case OpAtomicIAdd: return "OpAtomicIAdd";
    case OpAtomicISub: return "OpAtomicISub";
    case OpAtomicSMin: return "OpAtomicSMin";
    case OpAtomicUMin: return "OpAtomicUMin";
    case OpAtomicSMax: return "OpAtomicSMax";
    case OpAtomicUMax: return "OpAtomicUMax";
    case OpAtomicAnd: return "OpAtomicAnd";
    case OpAtomicOr: return "OpAtomicOr";
    case OpAtomicXor: return "OpAtomicXor";
    case OpPhi: return "OpPhi";
    case OpLoopMerge: return "OpLoopMerge";
    case OpSelectionMerge: return "OpSelectionMerge";
    case OpLabel: return "OpLabel";
    case OpBranch: return "OpBranch";
    case OpBranchConditional: return "OpBranchConditional";
    case OpSwitch: return "OpSwitch";
    case OpKill: return "OpKill";
    case OpReturn: return "OpReturn";
    case OpReturnValue: return "OpReturnValue";
    case OpUnreachable: return "OpUnreachable";
    case OpLifetimeStart: return "OpLifetimeStart";
    case OpLifetimeStop: return "OpLifetimeStop";
    case OpGroupAsyncCopy: return "OpGroupAsyncCopy";
    case OpGroupWaitEvents: return "OpGroupWaitEvents";
    case OpGroupAll: return "OpGroupAll";
    case OpGroupAny: return "OpGroupAny";
    case OpGroupBroadcast: return "OpGroupBroadcast";
    case OpGroupIAdd: return "OpGroupIAdd";
    case OpGroupFAdd: return "OpGroupFAdd";
    case OpGroupFMin: return "OpGroupFMin";
    case OpGroupUMin: return "OpGroupUMin";
    case OpGroupSMin: return "OpGroupSMin";
    case OpGroupFMax: return "OpGroupFMax";
    case OpGroupUMax: return "OpGroupUMax";
    case OpGroupSMax: return "OpGroupSMax";
    case OpReadPipe: return "OpReadPipe";
    case OpWritePipe: return "OpWritePipe";
    case OpReservedReadPipe: return "OpReservedReadPipe";
    case OpReservedWritePipe: return "OpReservedWritePipe";
    case OpReserveReadPipePackets: return "OpReserveReadPipePackets";
    case OpReserveWritePipePackets: return "OpReserveWritePipePackets";
    case OpCommitReadPipe: return "OpCommitReadPipe";
    case OpCommitWritePipe: return "OpCommitWritePipe";
    case OpIsValidReserveId: return "OpIsValidReserveId";
    case OpGetNumPipePackets: return "OpGetNumPipePackets";
    case OpGetMaxPipePackets: return "OpGetMaxPipePackets";
    case OpGroupReserveReadPipePackets: return "OpGroupReserveReadPipePackets";
    case OpGroupReserveWritePipePackets: return "OpGroupReserveWritePipePackets";
    case OpGroupCommitReadPipe: return "OpGroupCommitReadPipe";
    case OpGroupCommitWritePipe: return "OpGroupCommitWritePipe";
    case OpEnqueueMarker: return "OpEnqueueMarker";
    case OpEnqueueKernel: return "OpEnqueueKernel";
    case OpGetKernelNDrangeSubGroupCount: return "OpGetKernelNDrangeSubGroupCount";
    case OpGetKernelNDrangeMaxSubGroupSize: return "OpGetKernelNDrangeMaxSubGroupSize";
    case OpGetKernelWorkGroupSize: return "OpGetKernelWorkGroupSize";
    case OpGetKernelPreferredWorkGroupSizeMultiple: return "OpGetKernelPreferredWorkGroupSizeMultiple";
    case OpRetainEvent: return "OpRetainEvent";
    case OpReleaseEvent: return "OpReleaseEvent";
    case OpCreateUserEvent: return "OpCreateUserEvent";
    case OpIsValidEvent: return "OpIsValidEvent";
    case OpSetUserEventStatus: return "OpSetUserEventStatus";
    case OpCaptureEventProfilingInfo: return "OpCaptureEventProfilingInfo";
    case OpGetDefaultQueue: return "OpGetDefaultQueue";
    case OpBuildNDRange: return "OpBuildNDRange";
    case OpImageSparseSampleImplicitLod: return "OpImageSparseSampleImplicitLod";
    case OpImageSparseSampleExplicitLod: return "OpImageSparseSampleExplicitLod";
    case OpImageSparseSampleDrefImplicitLod: return "OpImageSparseSampleDrefImplicitLod";
    case OpImageSparseSampleDrefExplicitLod: return "OpImageSparseSampleDrefExplicitLod";
    case OpImageSparseSampleProjImplicitLod: return "OpImageSparseSampleProjImplicitLod";
    case OpImageSparseSampleProjExplicitLod: return "OpImageSparseSampleProjExplicitLod";
    case OpImageSparseSampleProjDrefImplicitLod: return "OpImageSparseSampleProjDrefImplicitLod";
    case OpImageSparseSampleProjDrefExplicitLod: return "OpImageSparseSampleProjDrefExplicitLod";
    case OpImageSparseFetch: return "OpImageSparseFetch";
    case OpImageSparseGather: return "OpImageSparseGather";
    case OpImageSparseDrefGather: return "OpImageSparseDrefGather";
    case OpImageSparseTexelsResident: return "OpImageSparseTexelsResident";
    case OpNoLine: return "OpNoLine";
    case OpAtomicFlagTestAndSet: return "OpAtomicFlagTestAndSet";
    case OpAtomicFlagClear: return "OpAtomicFlagClear";
    case OpImageSparseRead: return "OpImageSparseRead";
    case OpSizeOf: return "OpSizeOf";
    case OpTypePipeStorage: return "OpTypePipeStorage";
    case OpConstantPipeStorage: return "OpConstantPipeStorage";
    case OpCreatePipeFromPipeStorage: return "OpCreatePipeFromPipeStorage";
    case OpGetKernelLocalSizeForSubgroupCount: return "OpGetKernelLocalSizeForSubgroupCount";
    case OpGetKernelMaxNumSubgroups: return "OpGetKernelMaxNumSubgroups";
    case OpTypeNamedBarrier: return "OpTypeNamedBarrier";
    case OpNamedBarrierInitialize: return "OpNamedBarrierInitialize";
    case OpMemoryNamedBarrier: return "OpMemoryNamedBarrier";
    case OpModuleProcessed: return "OpModuleProcessed";
    case OpExecutionModeId: return "OpExecutionModeId";
    case OpDecorateId: return "OpDecorateId";
    case OpGroupNonUniformElect: return "OpGroupNonUniformElect";
    case OpGroupNonUniformAll: return "OpGroupNonUniformAll";
    case OpGroupNonUniformAny: return "OpGroupNonUniformAny";
    case OpGroupNonUniformAllEqual: return "OpGroupNonUniformAllEqual";
    case OpGroupNonUniformBroadcast: return "OpGroupNonUniformBroadcast";
    case OpGroupNonUniformBroadcastFirst: return "OpGroupNonUniformBroadcastFirst";
    case OpGroupNonUniformBallot: return "OpGroupNonUniformBallot";
    case OpGroupNonUniformInverseBallot: return "OpGroupNonUniformInverseBallot";
    case OpGroupNonUniformBallotBitExtract: return "OpGroupNonUniformBallotBitExtract";
    case OpGroupNonUniformBallotBitCount: return "OpGroupNonUniformBallotBitCount";
    case OpGroupNonUniformBallotFindLSB: return "OpGroupNonUniformBallotFindLSB";
    case OpGroupNonUniformBallotFindMSB: return "OpGroupNonUniformBallotFindMSB";
    case OpGroupNonUniformShuffle: return "OpGroupNonUniformShuffle";
    case OpGroupNonUniformShuffleXor: return "OpGroupNonUniformShuffleXor";
    case OpGroupNonUniformShuffleUp: return "OpGroupNonUniformShuffleUp";
    case OpGroupNonUniformShuffleDown: return "OpGroupNonUniformShuffleDown";
    case OpGroupNonUniformIAdd: return "OpGroupNonUniformIAdd";
    case OpGroupNonUniformFAdd: return "OpGroupNonUniformFAdd";
    case OpGroupNonUniformIMul: return "OpGroupNonUniformIMul";
    case OpGroupNonUniformFMul: return "OpGroupNonUniformFMul";
    case OpGroupNonUniformSMin: return "OpGroupNonUniformSMin";
    case OpGroupNonUniformUMin: return "OpGroupNonUniformUMin";
    case OpGroupNonUniformFMin: return "OpGroupNonUniformFMin";
    case OpGroupNonUniformSMax: return "OpGroupNonUniformSMax";
    case OpGroupNonUniformUMax: return "OpGroupNonUniformUMax";
    case OpGroupNonUniformFMax: return "OpGroupNonUniformFMax";
    case OpGroupNonUniformBitwiseAnd: return "OpGroupNonUniformBitwiseAnd";
    case OpGroupNonUniformBitwiseOr: return "OpGroupNonUniformBitwiseOr";
    case OpGroupNonUniformBitwiseXor: return "OpGroupNonUniformBitwiseXor";
    case OpGroupNonUniformLogicalAnd: return "OpGroupNonUniformLogicalAnd";
    case OpGroupNonUniformLogicalOr: return "OpGroupNonUniformLogicalOr";
    case OpGroupNonUniformLogicalXor: return "OpGroupNonUniformLogicalXor";
    case OpGroupNonUniformQuadBroadcast: return "OpGroupNonUniformQuadBroadcast";
    case OpGroupNonUniformQuadSwap: return "OpGroupNonUniformQuadSwap";
    case OpCopyLogical: return "OpCopyLogical";
    case OpPtrEqual: return "OpPtrEqual";
    case OpPtrNotEqual: return "OpPtrNotEqual";
    case OpPtrDiff: return "OpPtrDiff";
    case OpColorAttachmentReadEXT: return "OpColorAttachmentReadEXT";
    case OpDepthAttachmentReadEXT: return "OpDepthAttachmentReadEXT";
    case OpStencilAttachmentReadEXT: return "OpStencilAttachmentReadEXT";
    case OpTerminateInvocation: return "OpTerminateInvocation";
    case OpTypeUntypedPointerKHR: return "OpTypeUntypedPointerKHR";
    case OpUntypedVariableKHR: return "OpUntypedVariableKHR";
    case OpUntypedAccessChainKHR: return "OpUntypedAccessChainKHR";
    case OpUntypedInBoundsAccessChainKHR: return "OpUntypedInBoundsAccessChainKHR";
    case OpSubgroupBallotKHR: return "OpSubgroupBallotKHR";
    case OpSubgroupFirstInvocationKHR: return "OpSubgroupFirstInvocationKHR";
    case OpUntypedPtrAccessChainKHR: return "OpUntypedPtrAccessChainKHR";
    case OpUntypedInBoundsPtrAccessChainKHR: return "OpUntypedInBoundsPtrAccessChainKHR";
    case OpUntypedArrayLengthKHR: return "OpUntypedArrayLengthKHR";
    case OpUntypedPrefetchKHR: return "OpUntypedPrefetchKHR";
    case OpSubgroupAllKHR: return "OpSubgroupAllKHR";
    case OpSubgroupAnyKHR: return "OpSubgroupAnyKHR";
    case OpSubgroupAllEqualKHR: return "OpSubgroupAllEqualKHR";
    case OpGroupNonUniformRotateKHR: return "OpGroupNonUniformRotateKHR";
    case OpSubgroupReadInvocationKHR: return "OpSubgroupReadInvocationKHR";
    case OpExtInstWithForwardRefsKHR: return "OpExtInstWithForwardRefsKHR";
    case OpTraceRayKHR: return "OpTraceRayKHR";
    case OpExecuteCallableKHR: return "OpExecuteCallableKHR";
    case OpConvertUToAccelerationStructureKHR: return "OpConvertUToAccelerationStructureKHR";
    case OpIgnoreIntersectionKHR: return "OpIgnoreIntersectionKHR";
    case OpTerminateRayKHR: return "OpTerminateRayKHR";
    case OpSDot: return "OpSDot";
    case OpUDot: return "OpUDot";
    case OpSUDot: return "OpSUDot";
    case OpSDotAccSat: return "OpSDotAccSat";
    case OpUDotAccSat: return "OpUDotAccSat";
    case OpSUDotAccSat: return "OpSUDotAccSat";
    case OpTypeCooperativeMatrixKHR: return "OpTypeCooperativeMatrixKHR";
    case OpCooperativeMatrixLoadKHR: return "OpCooperativeMatrixLoadKHR";
    case OpCooperativeMatrixStoreKHR: return "OpCooperativeMatrixStoreKHR";
    case OpCooperativeMatrixMulAddKHR: return "OpCooperativeMatrixMulAddKHR";
    case OpCooperativeMatrixLengthKHR: return "OpCooperativeMatrixLengthKHR";
    case OpConstantCompositeReplicateEXT: return "OpConstantCompositeReplicateEXT";
    case OpSpecConstantCompositeReplicateEXT: return "OpSpecConstantCompositeReplicateEXT";
    case OpCompositeConstructReplicateEXT: return "OpCompositeConstructReplicateEXT";
    case OpTypeRayQueryKHR: return "OpTypeRayQueryKHR";
    case OpRayQueryInitializeKHR: return "OpRayQueryInitializeKHR";
    case OpRayQueryTerminateKHR: return "OpRayQueryTerminateKHR";
    case OpRayQueryGenerateIntersectionKHR: return "OpRayQueryGenerateIntersectionKHR";
    case OpRayQueryConfirmIntersectionKHR: return "OpRayQueryConfirmIntersectionKHR";
    case OpRayQueryProceedKHR: return "OpRayQueryProceedKHR";
    case OpRayQueryGetIntersectionTypeKHR: return "OpRayQueryGetIntersectionTypeKHR";
    case OpImageSampleWeightedQCOM: return "OpImageSampleWeightedQCOM";
    case OpImageBoxFilterQCOM: return "OpImageBoxFilterQCOM";
    case OpImageBlockMatchSSDQCOM: return "OpImageBlockMatchSSDQCOM";
    case OpImageBlockMatchSADQCOM: return "OpImageBlockMatchSADQCOM";
    case OpImageBlockMatchWindowSSDQCOM: return "OpImageBlockMatchWindowSSDQCOM";
    case OpImageBlockMatchWindowSADQCOM: return "OpImageBlockMatchWindowSADQCOM";
    case OpImageBlockMatchGatherSSDQCOM: return "OpImageBlockMatchGatherSSDQCOM";
    case OpImageBlockMatchGatherSADQCOM: return "OpImageBlockMatchGatherSADQCOM";
    case OpGroupIAddNonUniformAMD: return "OpGroupIAddNonUniformAMD";
    case OpGroupFAddNonUniformAMD: return "OpGroupFAddNonUniformAMD";
    case OpGroupFMinNonUniformAMD: return "OpGroupFMinNonUniformAMD";
    case OpGroupUMinNonUniformAMD: return "OpGroupUMinNonUniformAMD";
    case OpGroupSMinNonUniformAMD: return "OpGroupSMinNonUniformAMD";
    case OpGroupFMaxNonUniformAMD: return "OpGroupFMaxNonUniformAMD";
    case OpGroupUMaxNonUniformAMD: return "OpGroupUMaxNonUniformAMD";
    case OpGroupSMaxNonUniformAMD: return "OpGroupSMaxNonUniformAMD";
    case OpFragmentMaskFetchAMD: return "OpFragmentMaskFetchAMD";
    case OpFragmentFetchAMD: return "OpFragmentFetchAMD";
    case OpReadClockKHR: return "OpReadClockKHR";
    case OpFinalizeNodePayloadsAMDX: return "OpFinalizeNodePayloadsAMDX";
    case OpFinishWritingNodePayloadAMDX: return "OpFinishWritingNodePayloadAMDX";
    case OpInitializeNodePayloadsAMDX: return "OpInitializeNodePayloadsAMDX";
    case OpGroupNonUniformQuadAllKHR: return "OpGroupNonUniformQuadAllKHR";
    case OpGroupNonUniformQuadAnyKHR: return "OpGroupNonUniformQuadAnyKHR";
    case OpHitObjectRecordHitMotionNV: return "OpHitObjectRecordHitMotionNV";
    case OpHitObjectRecordHitWithIndexMotionNV: return "OpHitObjectRecordHitWithIndexMotionNV";
    case OpHitObjectRecordMissMotionNV: return "OpHitObjectRecordMissMotionNV";
    case OpHitObjectGetWorldToObjectNV: return "OpHitObjectGetWorldToObjectNV";
    case OpHitObjectGetObjectToWorldNV: return "OpHitObjectGetObjectToWorldNV";
    case OpHitObjectGetObjectRayDirectionNV: return "OpHitObjectGetObjectRayDirectionNV";
    case OpHitObjectGetObjectRayOriginNV: return "OpHitObjectGetObjectRayOriginNV";
    case OpHitObjectTraceRayMotionNV: return "OpHitObjectTraceRayMotionNV";
    case OpHitObjectGetShaderRecordBufferHandleNV: return "OpHitObjectGetShaderRecordBufferHandleNV";
    case OpHitObjectGetShaderBindingTableRecordIndexNV: return "OpHitObjectGetShaderBindingTableRecordIndexNV";
    case OpHitObjectRecordEmptyNV: return "OpHitObjectRecordEmptyNV";
    case OpHitObjectTraceRayNV: return "OpHitObjectTraceRayNV";
    case OpHitObjectRecordHitNV: return "OpHitObjectRecordHitNV";
    case OpHitObjectRecordHitWithIndexNV: return "OpHitObjectRecordHitWithIndexNV";
    case OpHitObjectRecordMissNV: return "OpHitObjectRecordMissNV";
    case OpHitObjectExecuteShaderNV: return "OpHitObjectExecuteShaderNV";
    case OpHitObjectGetCurrentTimeNV: return "OpHitObjectGetCurrentTimeNV";
    case OpHitObjectGetAttributesNV: return "OpHitObjectGetAttributesNV";
    case OpHitObjectGetHitKindNV: return "OpHitObjectGetHitKindNV";
    case OpHitObjectGetPrimitiveIndexNV: return "OpHitObjectGetPrimitiveIndexNV";
    case OpHitObjectGetGeometryIndexNV: return "OpHitObjectGetGeometryIndexNV";
    case OpHitObjectGetInstanceIdNV: return "OpHitObjectGetInstanceIdNV";
    case OpHitObjectGetInstanceCustomIndexNV: return "OpHitObjectGetInstanceCustomIndexNV";
    case OpHitObjectGetWorldRayDirectionNV: return "OpHitObjectGetWorldRayDirectionNV";
    case OpHitObjectGetWorldRayOriginNV: return "OpHitObjectGetWorldRayOriginNV";
    case OpHitObjectGetRayTMaxNV: return "OpHitObjectGetRayTMaxNV";
    case OpHitObjectGetRayTMinNV: return "OpHitObjectGetRayTMinNV";
    case OpHitObjectIsEmptyNV: return "OpHitObjectIsEmptyNV";
    case OpHitObjectIsHitNV: return "OpHitObjectIsHitNV";
    case OpHitObjectIsMissNV: return "OpHitObjectIsMissNV";
    case OpReorderThreadWithHitObjectNV: return "OpReorderThreadWithHitObjectNV";
    case OpReorderThreadWithHintNV: return "OpReorderThreadWithHintNV";
    case OpTypeHitObjectNV: return "OpTypeHitObjectNV";
    case OpImageSampleFootprintNV: return "OpImageSampleFootprintNV";
    case OpEmitMeshTasksEXT: return "OpEmitMeshTasksEXT";
    case OpSetMeshOutputsEXT: return "OpSetMeshOutputsEXT";
    case OpGroupNonUniformPartitionNV: return "OpGroupNonUniformPartitionNV";
    case OpWritePackedPrimitiveIndices4x8NV: return "OpWritePackedPrimitiveIndices4x8NV";
    case OpFetchMicroTriangleVertexPositionNV: return "OpFetchMicroTriangleVertexPositionNV";
    case OpFetchMicroTriangleVertexBarycentricNV: return "OpFetchMicroTriangleVertexBarycentricNV";
    case OpReportIntersectionKHR: return "OpReportIntersectionKHR";
    case OpIgnoreIntersectionNV: return "OpIgnoreIntersectionNV";
    case OpTerminateRayNV: return "OpTerminateRayNV";
    case OpTraceNV: return "OpTraceNV";
    case OpTraceMotionNV: return "OpTraceMotionNV";
    case OpTraceRayMotionNV: return "OpTraceRayMotionNV";
    case OpRayQueryGetIntersectionTriangleVertexPositionsKHR: return "OpRayQueryGetIntersectionTriangleVertexPositionsKHR";
    case OpTypeAccelerationStructureKHR: return "OpTypeAccelerationStructureKHR";
    case OpExecuteCallableNV: return "OpExecuteCallableNV";
    case OpTypeCooperativeMatrixNV: return "OpTypeCooperativeMatrixNV";
    case OpCooperativeMatrixLoadNV: return "OpCooperativeMatrixLoadNV";
    case OpCooperativeMatrixStoreNV: return "OpCooperativeMatrixStoreNV";
    case OpCooperativeMatrixMulAddNV: return "OpCooperativeMatrixMulAddNV";
    case OpCooperativeMatrixLengthNV: return "OpCooperativeMatrixLengthNV";
    case OpBeginInvocationInterlockEXT: return "OpBeginInvocationInterlockEXT";
    case OpEndInvocationInterlockEXT: return "OpEndInvocationInterlockEXT";
    case OpDemoteToHelperInvocation: return "OpDemoteToHelperInvocation";
    case OpIsHelperInvocationEXT: return "OpIsHelperInvocationEXT";
    case OpConvertUToImageNV: return "OpConvertUToImageNV";
    case OpConvertUToSamplerNV: return "OpConvertUToSamplerNV";
    case OpConvertImageToUNV: return "OpConvertImageToUNV";
    case OpConvertSamplerToUNV: return "OpConvertSamplerToUNV";
    case OpConvertUToSampledImageNV: return "OpConvertUToSampledImageNV";
    case OpConvertSampledImageToUNV: return "OpConvertSampledImageToUNV";
    case OpSamplerImageAddressingModeNV: return "OpSamplerImageAddressingModeNV";
    case OpRawAccessChainNV: return "OpRawAccessChainNV";
    case OpSubgroupShuffleINTEL: return "OpSubgroupShuffleINTEL";
    case OpSubgroupShuffleDownINTEL: return "OpSubgroupShuffleDownINTEL";
    case OpSubgroupShuffleUpINTEL: return "OpSubgroupShuffleUpINTEL";
    case OpSubgroupShuffleXorINTEL: return "OpSubgroupShuffleXorINTEL";
    case OpSubgroupBlockReadINTEL: return "OpSubgroupBlockReadINTEL";
    case OpSubgroupBlockWriteINTEL: return "OpSubgroupBlockWriteINTEL";
    case OpSubgroupImageBlockReadINTEL: return "OpSubgroupImageBlockReadINTEL";
    case OpSubgroupImageBlockWriteINTEL: return "OpSubgroupImageBlockWriteINTEL";
    case OpSubgroupImageMediaBlockReadINTEL: return "OpSubgroupImageMediaBlockReadINTEL";
    case OpSubgroupImageMediaBlockWriteINTEL: return "OpSubgroupImageMediaBlockWriteINTEL";
    case OpUCountLeadingZerosINTEL: return "OpUCountLeadingZerosINTEL";
    case OpUCountTrailingZerosINTEL: return "OpUCountTrailingZerosINTEL";
    case OpAbsISubINTEL: return "OpAbsISubINTEL";
    case OpAbsUSubINTEL: return "OpAbsUSubINTEL";
    case OpIAddSatINTEL: return "OpIAddSatINTEL";
    case OpUAddSatINTEL: return "OpUAddSatINTEL";
    case OpIAverageINTEL: return "OpIAverageINTEL";
    case OpUAverageINTEL: return "OpUAverageINTEL";
    case OpIAverageRoundedINTEL: return "OpIAverageRoundedINTEL";
    case OpUAverageRoundedINTEL: return "OpUAverageRoundedINTEL";
    case OpISubSatINTEL: return "OpISubSatINTEL";
    case OpUSubSatINTEL: return "OpUSubSatINTEL";
    case OpIMul32x16INTEL: return "OpIMul32x16INTEL";
    case OpUMul32x16INTEL: return "OpUMul32x16INTEL";
    case OpConstantFunctionPointerINTEL: return "OpConstantFunctionPointerINTEL";
    case OpFunctionPointerCallINTEL: return "OpFunctionPointerCallINTEL";
    case OpAsmTargetINTEL: return "OpAsmTargetINTEL";
    case OpAsmINTEL: return "OpAsmINTEL";
    case OpAsmCallINTEL: return "OpAsmCallINTEL";
    case OpAtomicFMinEXT: return "OpAtomicFMinEXT";
    case OpAtomicFMaxEXT: return "OpAtomicFMaxEXT";
    case OpAssumeTrueKHR: return "OpAssumeTrueKHR";
    case OpExpectKHR: return "OpExpectKHR";
    case OpDecorateString: return "OpDecorateString";
    case OpMemberDecorateString: return "OpMemberDecorateString";
    case OpVmeImageINTEL: return "OpVmeImageINTEL";
    case OpTypeVmeImageINTEL: return "OpTypeVmeImageINTEL";
    case OpTypeAvcImePayloadINTEL: return "OpTypeAvcImePayloadINTEL";
    case OpTypeAvcRefPayloadINTEL: return "OpTypeAvcRefPayloadINTEL";
    case OpTypeAvcSicPayloadINTEL: return "OpTypeAvcSicPayloadINTEL";
    case OpTypeAvcMcePayloadINTEL: return "OpTypeAvcMcePayloadINTEL";
    case OpTypeAvcMceResultINTEL: return "OpTypeAvcMceResultINTEL";
    case OpTypeAvcImeResultINTEL: return "OpTypeAvcImeResultINTEL";
    case OpTypeAvcImeResultSingleReferenceStreamoutINTEL: return "OpTypeAvcImeResultSingleReferenceStreamoutINTEL";
    case OpTypeAvcImeResultDualReferenceStreamoutINTEL: return "OpTypeAvcImeResultDualReferenceStreamoutINTEL";
    case OpTypeAvcImeSingleReferenceStreaminINTEL: return "OpTypeAvcImeSingleReferenceStreaminINTEL";
    case OpTypeAvcImeDualReferenceStreaminINTEL: return "OpTypeAvcImeDualReferenceStreaminINTEL";
    case OpTypeAvcRefResultINTEL: return "OpTypeAvcRefResultINTEL";
    case OpTypeAvcSicResultINTEL: return "OpTypeAvcSicResultINTEL";
    case OpSubgroupAvcMceGetDefaultInterBaseMultiReferencePenaltyINTEL: return "OpSubgroupAvcMceGetDefaultInterBaseMultiReferencePenaltyINTEL";
    case OpSubgroupAvcMceSetInterBaseMultiReferencePenaltyINTEL: return "OpSubgroupAvcMceSetInterBaseMultiReferencePenaltyINTEL";
    case OpSubgroupAvcMceGetDefaultInterShapePenaltyINTEL: return "OpSubgroupAvcMceGetDefaultInterShapePenaltyINTEL";
    case OpSubgroupAvcMceSetInterShapePenaltyINTEL: return "OpSubgroupAvcMceSetInterShapePenaltyINTEL";
    case OpSubgroupAvcMceGetDefaultInterDirectionPenaltyINTEL: return "OpSubgroupAvcMceGetDefaultInterDirectionPenaltyINTEL";
    case OpSubgroupAvcMceSetInterDirectionPenaltyINTEL: return "OpSubgroupAvcMceSetInterDirectionPenaltyINTEL";
    case OpSubgroupAvcMceGetDefaultIntraLumaShapePenaltyINTEL: return "OpSubgroupAvcMceGetDefaultIntraLumaShapePenaltyINTEL";
    case OpSubgroupAvcMceGetDefaultInterMotionVectorCostTableINTEL: return "OpSubgroupAvcMceGetDefaultInterMotionVectorCostTableINTEL";
    case OpSubgroupAvcMceGetDefaultHighPenaltyCostTableINTEL: return "OpSubgroupAvcMceGetDefaultHighPenaltyCostTableINTEL";
    case OpSubgroupAvcMceGetDefaultMediumPenaltyCostTableINTEL: return "OpSubgroupAvcMceGetDefaultMediumPenaltyCostTableINTEL";
    case OpSubgroupAvcMceGetDefaultLowPenaltyCostTableINTEL: return "OpSubgroupAvcMceGetDefaultLowPenaltyCostTableINTEL";
    case OpSubgroupAvcMceSetMotionVectorCostFunctionINTEL: return "OpSubgroupAvcMceSetMotionVectorCostFunctionINTEL";
    case OpSubgroupAvcMceGetDefaultIntraLumaModePenaltyINTEL: return "OpSubgroupAvcMceGetDefaultIntraLumaModePenaltyINTEL";
    case OpSubgroupAvcMceGetDefaultNonDcLumaIntraPenaltyINTEL: return "OpSubgroupAvcMceGetDefaultNonDcLumaIntraPenaltyINTEL";
    case OpSubgroupAvcMceGetDefaultIntraChromaModeBasePenaltyINTEL: return "OpSubgroupAvcMceGetDefaultIntraChromaModeBasePenaltyINTEL";
    case OpSubgroupAvcMceSetAcOnlyHaarINTEL: return "OpSubgroupAvcMceSetAcOnlyHaarINTEL";
    case OpSubgroupAvcMceSetSourceInterlacedFieldPolarityINTEL: return "OpSubgroupAvcMceSetSourceInterlacedFieldPolarityINTEL";
    case OpSubgroupAvcMceSetSingleReferenceInterlacedFieldPolarityINTEL: return "OpSubgroupAvcMceSetSingleReferenceInterlacedFieldPolarityINTEL";
    case OpSubgroupAvcMceSetDualReferenceInterlacedFieldPolaritiesINTEL: return "OpSubgroupAvcMceSetDualReferenceInterlacedFieldPolaritiesINTEL";
    case OpSubgroupAvcMceConvertToImePayloadINTEL: return "OpSubgroupAvcMceConvertToImePayloadINTEL";
    case OpSubgroupAvcMceConvertToImeResultINTEL: return "OpSubgroupAvcMceConvertToImeResultINTEL";
    case OpSubgroupAvcMceConvertToRefPayloadINTEL: return "OpSubgroupAvcMceConvertToRefPayloadINTEL";
    case OpSubgroupAvcMceConvertToRefResultINTEL: return "OpSubgroupAvcMceConvertToRefResultINTEL";
    case OpSubgroupAvcMceConvertToSicPayloadINTEL: return "OpSubgroupAvcMceConvertToSicPayloadINTEL";
    case OpSubgroupAvcMceConvertToSicResultINTEL: return "OpSubgroupAvcMceConvertToSicResultINTEL";
    case OpSubgroupAvcMceGetMotionVectorsINTEL: return "OpSubgroupAvcMceGetMotionVectorsINTEL";
    case OpSubgroupAvcMceGetInterDistortionsINTEL: return "OpSubgroupAvcMceGetInterDistortionsINTEL";
    case OpSubgroupAvcMceGetBestInterDistortionsINTEL: return "OpSubgroupAvcMceGetBestInterDistortionsINTEL";
    case OpSubgroupAvcMceGetInterMajorShapeINTEL: return "OpSubgroupAvcMceGetInterMajorShapeINTEL";
    case OpSubgroupAvcMceGetInterMinorShapeINTEL: return "OpSubgroupAvcMceGetInterMinorShapeINTEL";
    case OpSubgroupAvcMceGetInterDirectionsINTEL: return "OpSubgroupAvcMceGetInterDirectionsINTEL";
    case OpSubgroupAvcMceGetInterMotionVectorCountINTEL: return "OpSubgroupAvcMceGetInterMotionVectorCountINTEL";
    case OpSubgroupAvcMceGetInterReferenceIdsINTEL: return "OpSubgroupAvcMceGetInterReferenceIdsINTEL";
    case OpSubgroupAvcMceGetInterReferenceInterlacedFieldPolaritiesINTEL: return "OpSubgroupAvcMceGetInterReferenceInterlacedFieldPolaritiesINTEL";
    case OpSubgroupAvcImeInitializeINTEL: return "OpSubgroupAvcImeInitializeINTEL";
    case OpSubgroupAvcImeSetSingleReferenceINTEL: return "OpSubgroupAvcImeSetSingleReferenceINTEL";
    case OpSubgroupAvcImeSetDualReferenceINTEL: return "OpSubgroupAvcImeSetDualReferenceINTEL";
    case OpSubgroupAvcImeRefWindowSizeINTEL: return "OpSubgroupAvcImeRefWindowSizeINTEL";
    case OpSubgroupAvcImeAdjustRefOffsetINTEL: return "OpSubgroupAvcImeAdjustRefOffsetINTEL";
    case OpSubgroupAvcImeConvertToMcePayloadINTEL: return "OpSubgroupAvcImeConvertToMcePayloadINTEL";
    case OpSubgroupAvcImeSetMaxMotionVectorCountINTEL: return "OpSubgroupAvcImeSetMaxMotionVectorCountINTEL";
    case OpSubgroupAvcImeSetUnidirectionalMixDisableINTEL: return "OpSubgroupAvcImeSetUnidirectionalMixDisableINTEL";
    case OpSubgroupAvcImeSetEarlySearchTerminationThresholdINTEL: return "OpSubgroupAvcImeSetEarlySearchTerminationThresholdINTEL";
    case OpSubgroupAvcImeSetWeightedSadINTEL: return "OpSubgroupAvcImeSetWeightedSadINTEL";
    case OpSubgroupAvcImeEvaluateWithSingleReferenceINTEL: return "OpSubgroupAvcImeEvaluateWithSingleReferenceINTEL";
    case OpSubgroupAvcImeEvaluateWithDualReferenceINTEL: return "OpSubgroupAvcImeEvaluateWithDualReferenceINTEL";
    case OpSubgroupAvcImeEvaluateWithSingleReferenceStreaminINTEL: return "OpSubgroupAvcImeEvaluateWithSingleReferenceStreaminINTEL";
    case OpSubgroupAvcImeEvaluateWithDualReferenceStreaminINTEL: return "OpSubgroupAvcImeEvaluateWithDualReferenceStreaminINTEL";
    case OpSubgroupAvcImeEvaluateWithSingleReferenceStreamoutINTEL: return "OpSubgroupAvcImeEvaluateWithSingleReferenceStreamoutINTEL";
    case OpSubgroupAvcImeEvaluateWithDualReferenceStreamoutINTEL: return "OpSubgroupAvcImeEvaluateWithDualReferenceStreamoutINTEL";
    case OpSubgroupAvcImeEvaluateWithSingleReferenceStreaminoutINTEL: return "OpSubgroupAvcImeEvaluateWithSingleReferenceStreaminoutINTEL";
    case OpSubgroupAvcImeEvaluateWithDualReferenceStreaminoutINTEL: return "OpSubgroupAvcImeEvaluateWithDualReferenceStreaminoutINTEL";
    case OpSubgroupAvcImeConvertToMceResultINTEL: return "OpSubgroupAvcImeConvertToMceResultINTEL";
    case OpSubgroupAvcImeGetSingleReferenceStreaminINTEL: return "OpSubgroupAvcImeGetSingleReferenceStreaminINTEL";
    case OpSubgroupAvcImeGetDualReferenceStreaminINTEL: return "OpSubgroupAvcImeGetDualReferenceStreaminINTEL";
    case OpSubgroupAvcImeStripSingleReferenceStreamoutINTEL: return "OpSubgroupAvcImeStripSingleReferenceStreamoutINTEL";
    case OpSubgroupAvcImeStripDualReferenceStreamoutINTEL: return "OpSubgroupAvcImeStripDualReferenceStreamoutINTEL";
    case OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeMotionVectorsINTEL: return "OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeMotionVectorsINTEL";
    case OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeDistortionsINTEL: return "OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeDistortionsINTEL";
    case OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeReferenceIdsINTEL: return "OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeReferenceIdsINTEL";
    case OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeMotionVectorsINTEL: return "OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeMotionVectorsINTEL";
    case OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeDistortionsINTEL: return "OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeDistortionsINTEL";
    case OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeReferenceIdsINTEL: return "OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeReferenceIdsINTEL";
    case OpSubgroupAvcImeGetBorderReachedINTEL: return "OpSubgroupAvcImeGetBorderReachedINTEL";
    case OpSubgroupAvcImeGetTruncatedSearchIndicationINTEL: return "OpSubgroupAvcImeGetTruncatedSearchIndicationINTEL";
    case OpSubgroupAvcImeGetUnidirectionalEarlySearchTerminationINTEL: return "OpSubgroupAvcImeGetUnidirectionalEarlySearchTerminationINTEL";
    case OpSubgroupAvcImeGetWeightingPatternMinimumMotionVectorINTEL: return "OpSubgroupAvcImeGetWeightingPatternMinimumMotionVectorINTEL";
    case OpSubgroupAvcImeGetWeightingPatternMinimumDistortionINTEL: return "OpSubgroupAvcImeGetWeightingPatternMinimumDistortionINTEL";
    case OpSubgroupAvcFmeInitializeINTEL: return "OpSubgroupAvcFmeInitializeINTEL";
    case OpSubgroupAvcBmeInitializeINTEL: return "OpSubgroupAvcBmeInitializeINTEL";
    case OpSubgroupAvcRefConvertToMcePayloadINTEL: return "OpSubgroupAvcRefConvertToMcePayloadINTEL";
    case OpSubgroupAvcRefSetBidirectionalMixDisableINTEL: return "OpSubgroupAvcRefSetBidirectionalMixDisableINTEL";
    case OpSubgroupAvcRefSetBilinearFilterEnableINTEL: return "OpSubgroupAvcRefSetBilinearFilterEnableINTEL";
    case OpSubgroupAvcRefEvaluateWithSingleReferenceINTEL: return "OpSubgroupAvcRefEvaluateWithSingleReferenceINTEL";
    case OpSubgroupAvcRefEvaluateWithDualReferenceINTEL: return "OpSubgroupAvcRefEvaluateWithDualReferenceINTEL";
    case OpSubgroupAvcRefEvaluateWithMultiReferenceINTEL: return "OpSubgroupAvcRefEvaluateWithMultiReferenceINTEL";
    case OpSubgroupAvcRefEvaluateWithMultiReferenceInterlacedINTEL: return "OpSubgroupAvcRefEvaluateWithMultiReferenceInterlacedINTEL";
    case OpSubgroupAvcRefConvertToMceResultINTEL: return "OpSubgroupAvcRefConvertToMceResultINTEL";
    case OpSubgroupAvcSicInitializeINTEL: return "OpSubgroupAvcSicInitializeINTEL";
    case OpSubgroupAvcSicConfigureSkcINTEL: return "OpSubgroupAvcSicConfigureSkcINTEL";
    case OpSubgroupAvcSicConfigureIpeLumaINTEL: return "OpSubgroupAvcSicConfigureIpeLumaINTEL";
    case OpSubgroupAvcSicConfigureIpeLumaChromaINTEL: return "OpSubgroupAvcSicConfigureIpeLumaChromaINTEL";
    case OpSubgroupAvcSicGetMotionVectorMaskINTEL: return "OpSubgroupAvcSicGetMotionVectorMaskINTEL";
    case OpSubgroupAvcSicConvertToMcePayloadINTEL: return "OpSubgroupAvcSicConvertToMcePayloadINTEL";
    case OpSubgroupAvcSicSetIntraLumaShapePenaltyINTEL: return "OpSubgroupAvcSicSetIntraLumaShapePenaltyINTEL";
    case OpSubgroupAvcSicSetIntraLumaModeCostFunctionINTEL: return "OpSubgroupAvcSicSetIntraLumaModeCostFunctionINTEL";
    case OpSubgroupAvcSicSetIntraChromaModeCostFunctionINTEL: return "OpSubgroupAvcSicSetIntraChromaModeCostFunctionINTEL";
    case OpSubgroupAvcSicSetBilinearFilterEnableINTEL: return "OpSubgroupAvcSicSetBilinearFilterEnableINTEL";
    case OpSubgroupAvcSicSetSkcForwardTransformEnableINTEL: return "OpSubgroupAvcSicSetSkcForwardTransformEnableINTEL";
    case OpSubgroupAvcSicSetBlockBasedRawSkipSadINTEL: return "OpSubgroupAvcSicSetBlockBasedRawSkipSadINTEL";
    case OpSubgroupAvcSicEvaluateIpeINTEL: return "OpSubgroupAvcSicEvaluateIpeINTEL";
    case OpSubgroupAvcSicEvaluateWithSingleReferenceINTEL: return "OpSubgroupAvcSicEvaluateWithSingleReferenceINTEL";
    case OpSubgroupAvcSicEvaluateWithDualReferenceINTEL: return "OpSubgroupAvcSicEvaluateWithDualReferenceINTEL";
    case OpSubgroupAvcSicEvaluateWithMultiReferenceINTEL: return "OpSubgroupAvcSicEvaluateWithMultiReferenceINTEL";
    case OpSubgroupAvcSicEvaluateWithMultiReferenceInterlacedINTEL: return "OpSubgroupAvcSicEvaluateWithMultiReferenceInterlacedINTEL";
    case OpSubgroupAvcSicConvertToMceResultINTEL: return "OpSubgroupAvcSicConvertToMceResultINTEL";
    case OpSubgroupAvcSicGetIpeLumaShapeINTEL: return "OpSubgroupAvcSicGetIpeLumaShapeINTEL";
    case OpSubgroupAvcSicGetBestIpeLumaDistortionINTEL: return "OpSubgroupAvcSicGetBestIpeLumaDistortionINTEL";
    case OpSubgroupAvcSicGetBestIpeChromaDistortionINTEL: return "OpSubgroupAvcSicGetBestIpeChromaDistortionINTEL";
    case OpSubgroupAvcSicGetPackedIpeLumaModesINTEL: return "OpSubgroupAvcSicGetPackedIpeLumaModesINTEL";
    case OpSubgroupAvcSicGetIpeChromaModeINTEL: return "OpSubgroupAvcSicGetIpeChromaModeINTEL";
    case OpSubgroupAvcSicGetPackedSkcLumaCountThresholdINTEL: return "OpSubgroupAvcSicGetPackedSkcLumaCountThresholdINTEL";
    case OpSubgroupAvcSicGetPackedSkcLumaSumThresholdINTEL: return "OpSubgroupAvcSicGetPackedSkcLumaSumThresholdINTEL";
    case OpSubgroupAvcSicGetInterRawSadsINTEL: return "OpSubgroupAvcSicGetInterRawSadsINTEL";
    case OpVariableLengthArrayINTEL: return "OpVariableLengthArrayINTEL";
    case OpSaveMemoryINTEL: return "OpSaveMemoryINTEL";
    case OpRestoreMemoryINTEL: return "OpRestoreMemoryINTEL";
    case OpArbitraryFloatSinCosPiINTEL: return "OpArbitraryFloatSinCosPiINTEL";
    case OpArbitraryFloatCastINTEL: return "OpArbitraryFloatCastINTEL";
    case OpArbitraryFloatCastFromIntINTEL: return "OpArbitraryFloatCastFromIntINTEL";
    case OpArbitraryFloatCastToIntINTEL: return "OpArbitraryFloatCastToIntINTEL";
    case OpArbitraryFloatAddINTEL: return "OpArbitraryFloatAddINTEL";
    case OpArbitraryFloatSubINTEL: return "OpArbitraryFloatSubINTEL";
    case OpArbitraryFloatMulINTEL: return "OpArbitraryFloatMulINTEL";
    case OpArbitraryFloatDivINTEL: return "OpArbitraryFloatDivINTEL";
    case OpArbitraryFloatGTINTEL: return "OpArbitraryFloatGTINTEL";
    case OpArbitraryFloatGEINTEL: return "OpArbitraryFloatGEINTEL";
    case OpArbitraryFloatLTINTEL: return "OpArbitraryFloatLTINTEL";
    case OpArbitraryFloatLEINTEL: return "OpArbitraryFloatLEINTEL";
    case OpArbitraryFloatEQINTEL: return "OpArbitraryFloatEQINTEL";
    case OpArbitraryFloatRecipINTEL: return "OpArbitraryFloatRecipINTEL";
    case OpArbitraryFloatRSqrtINTEL: return "OpArbitraryFloatRSqrtINTEL";
    case OpArbitraryFloatCbrtINTEL: return "OpArbitraryFloatCbrtINTEL";
    case OpArbitraryFloatHypotINTEL: return "OpArbitraryFloatHypotINTEL";
    case OpArbitraryFloatSqrtINTEL: return "OpArbitraryFloatSqrtINTEL";
    case OpArbitraryFloatLogINTEL: return "OpArbitraryFloatLogINTEL";
    case OpArbitraryFloatLog2INTEL: return "OpArbitraryFloatLog2INTEL";
    case OpArbitraryFloatLog10INTEL: return "OpArbitraryFloatLog10INTEL";
    case OpArbitraryFloatLog1pINTEL: return "OpArbitraryFloatLog1pINTEL";
    case OpArbitraryFloatExpINTEL: return "OpArbitraryFloatExpINTEL";
    case OpArbitraryFloatExp2INTEL: return "OpArbitraryFloatExp2INTEL";
    case OpArbitraryFloatExp10INTEL: return "OpArbitraryFloatExp10INTEL";
    case OpArbitraryFloatExpm1INTEL: return "OpArbitraryFloatExpm1INTEL";
    case OpArbitraryFloatSinINTEL: return "OpArbitraryFloatSinINTEL";
    case OpArbitraryFloatCosINTEL: return "OpArbitraryFloatCosINTEL";
    case OpArbitraryFloatSinCosINTEL: return "OpArbitraryFloatSinCosINTEL";
    case OpArbitraryFloatSinPiINTEL: return "OpArbitraryFloatSinPiINTEL";
    case OpArbitraryFloatCosPiINTEL: return "OpArbitraryFloatCosPiINTEL";
    case OpArbitraryFloatASinINTEL: return "OpArbitraryFloatASinINTEL";
    case OpArbitraryFloatASinPiINTEL: return "OpArbitraryFloatASinPiINTEL";
    case OpArbitraryFloatACosINTEL: return "OpArbitraryFloatACosINTEL";
    case OpArbitraryFloatACosPiINTEL: return "OpArbitraryFloatACosPiINTEL";
    case OpArbitraryFloatATanINTEL: return "OpArbitraryFloatATanINTEL";
    case OpArbitraryFloatATanPiINTEL: return "OpArbitraryFloatATanPiINTEL";
    case OpArbitraryFloatATan2INTEL: return "OpArbitraryFloatATan2INTEL";
    case OpArbitraryFloatPowINTEL: return "OpArbitraryFloatPowINTEL";
    case OpArbitraryFloatPowRINTEL: return "OpArbitraryFloatPowRINTEL";
    case OpArbitraryFloatPowNINTEL: return "OpArbitraryFloatPowNINTEL";
    case OpLoopControlINTEL: return "OpLoopControlINTEL";
    case OpAliasDomainDeclINTEL: return "OpAliasDomainDeclINTEL";
    case OpAliasScopeDeclINTEL: return "OpAliasScopeDeclINTEL";
    case OpAliasScopeListDeclINTEL: return "OpAliasScopeListDeclINTEL";
    case OpFixedSqrtINTEL: return "OpFixedSqrtINTEL";
    case OpFixedRecipINTEL: return "OpFixedRecipINTEL";
    case OpFixedRsqrtINTEL: return "OpFixedRsqrtINTEL";
    case OpFixedSinINTEL: return "OpFixedSinINTEL";
    case OpFixedCosINTEL: return "OpFixedCosINTEL";
    case OpFixedSinCosINTEL: return "OpFixedSinCosINTEL";
    case OpFixedSinPiINTEL: return "OpFixedSinPiINTEL";
    case OpFixedCosPiINTEL: return "OpFixedCosPiINTEL";
    case OpFixedSinCosPiINTEL: return "OpFixedSinCosPiINTEL";
    case OpFixedLogINTEL: return "OpFixedLogINTEL";
    case OpFixedExpINTEL: return "OpFixedExpINTEL";
    case OpPtrCastToCrossWorkgroupINTEL: return "OpPtrCastToCrossWorkgroupINTEL";
    case OpCrossWorkgroupCastToPtrINTEL: return "OpCrossWorkgroupCastToPtrINTEL";
    case OpReadPipeBlockingINTEL: return "OpReadPipeBlockingINTEL";
    case OpWritePipeBlockingINTEL: return "OpWritePipeBlockingINTEL";
    case OpFPGARegINTEL: return "OpFPGARegINTEL";
    case OpRayQueryGetRayTMinKHR: return "OpRayQueryGetRayTMinKHR";
    case OpRayQueryGetRayFlagsKHR: return "OpRayQueryGetRayFlagsKHR";
    case OpRayQueryGetIntersectionTKHR: return "OpRayQueryGetIntersectionTKHR";
    case OpRayQueryGetIntersectionInstanceCustomIndexKHR: return "OpRayQueryGetIntersectionInstanceCustomIndexKHR";
    case OpRayQueryGetIntersectionInstanceIdKHR: return "OpRayQueryGetIntersectionInstanceIdKHR";
    case OpRayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR: return "OpRayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR";
    case OpRayQueryGetIntersectionGeometryIndexKHR: return "OpRayQueryGetIntersectionGeometryIndexKHR";
    case OpRayQueryGetIntersectionPrimitiveIndexKHR: return "OpRayQueryGetIntersectionPrimitiveIndexKHR";
    case OpRayQueryGetIntersectionBarycentricsKHR: return "OpRayQueryGetIntersectionBarycentricsKHR";
    case OpRayQueryGetIntersectionFrontFaceKHR: return "OpRayQueryGetIntersectionFrontFaceKHR";
    case OpRayQueryGetIntersectionCandidateAABBOpaqueKHR: return "OpRayQueryGetIntersectionCandidateAABBOpaqueKHR";
    case OpRayQueryGetIntersectionObjectRayDirectionKHR: return "OpRayQueryGetIntersectionObjectRayDirectionKHR";
    case OpRayQueryGetIntersectionObjectRayOriginKHR: return "OpRayQueryGetIntersectionObjectRayOriginKHR";
    case OpRayQueryGetWorldRayDirectionKHR: return "OpRayQueryGetWorldRayDirectionKHR";
    case OpRayQueryGetWorldRayOriginKHR: return "OpRayQueryGetWorldRayOriginKHR";
    case OpRayQueryGetIntersectionObjectToWorldKHR: return "OpRayQueryGetIntersectionObjectToWorldKHR";
    case OpRayQueryGetIntersectionWorldToObjectKHR: return "OpRayQueryGetIntersectionWorldToObjectKHR";
    case OpAtomicFAddEXT: return "OpAtomicFAddEXT";
    case OpTypeBufferSurfaceINTEL: return "OpTypeBufferSurfaceINTEL";
    case OpTypeStructContinuedINTEL: return "OpTypeStructContinuedINTEL";
    case OpConstantCompositeContinuedINTEL: return "OpConstantCompositeContinuedINTEL";
    case OpSpecConstantCompositeContinuedINTEL: return "OpSpecConstantCompositeContinuedINTEL";
    case OpCompositeConstructContinuedINTEL: return "OpCompositeConstructContinuedINTEL";
    case OpConvertFToBF16INTEL: return "OpConvertFToBF16INTEL";
    case OpConvertBF16ToFINTEL: return "OpConvertBF16ToFINTEL";
    case OpControlBarrierArriveINTEL: return "OpControlBarrierArriveINTEL";
    case OpControlBarrierWaitINTEL: return "OpControlBarrierWaitINTEL";
    case OpSubgroupBlockPrefetchINTEL: return "OpSubgroupBlockPrefetchINTEL";
    case OpGroupIMulKHR: return "OpGroupIMulKHR";
    case OpGroupFMulKHR: return "OpGroupFMulKHR";
    case OpGroupBitwiseAndKHR: return "OpGroupBitwiseAndKHR";
    case OpGroupBitwiseOrKHR: return "OpGroupBitwiseOrKHR";
    case OpGroupBitwiseXorKHR: return "OpGroupBitwiseXorKHR";
    case OpGroupLogicalAndKHR: return "OpGroupLogicalAndKHR";
    case OpGroupLogicalOrKHR: return "OpGroupLogicalOrKHR";
    case OpGroupLogicalXorKHR: return "OpGroupLogicalXorKHR";
    case OpMaskedGatherINTEL: return "OpMaskedGatherINTEL";
    case OpMaskedScatterINTEL: return "OpMaskedScatterINTEL";
    default: return "Unknown";
    }
}

#endif /* SPV_ENABLE_UTILITY_CODE */

// Overload bitwise operators for mask bit combining

inline ImageOperandsMask operator|(ImageOperandsMask a, ImageOperandsMask b) {}
inline ImageOperandsMask operator&(ImageOperandsMask a, ImageOperandsMask b) {}
inline ImageOperandsMask operator^(ImageOperandsMask a, ImageOperandsMask b) {}
inline ImageOperandsMask operator~(ImageOperandsMask a) {}
inline FPFastMathModeMask operator|(FPFastMathModeMask a, FPFastMathModeMask b) {}
inline FPFastMathModeMask operator&(FPFastMathModeMask a, FPFastMathModeMask b) {}
inline FPFastMathModeMask operator^(FPFastMathModeMask a, FPFastMathModeMask b) {}
inline FPFastMathModeMask operator~(FPFastMathModeMask a) {}
inline SelectionControlMask operator|(SelectionControlMask a, SelectionControlMask b) {}
inline SelectionControlMask operator&(SelectionControlMask a, SelectionControlMask b) {}
inline SelectionControlMask operator^(SelectionControlMask a, SelectionControlMask b) {}
inline SelectionControlMask operator~(SelectionControlMask a) {}
inline LoopControlMask operator|(LoopControlMask a, LoopControlMask b) {}
inline LoopControlMask operator&(LoopControlMask a, LoopControlMask b) {}
inline LoopControlMask operator^(LoopControlMask a, LoopControlMask b) {}
inline LoopControlMask operator~(LoopControlMask a) {}
inline FunctionControlMask operator|(FunctionControlMask a, FunctionControlMask b) {}
inline FunctionControlMask operator&(FunctionControlMask a, FunctionControlMask b) {}
inline FunctionControlMask operator^(FunctionControlMask a, FunctionControlMask b) {}
inline FunctionControlMask operator~(FunctionControlMask a) {}
inline MemorySemanticsMask operator|(MemorySemanticsMask a, MemorySemanticsMask b) {}
inline MemorySemanticsMask operator&(MemorySemanticsMask a, MemorySemanticsMask b) {}
inline MemorySemanticsMask operator^(MemorySemanticsMask a, MemorySemanticsMask b) {}
inline MemorySemanticsMask operator~(MemorySemanticsMask a) {}
inline MemoryAccessMask operator|(MemoryAccessMask a, MemoryAccessMask b) {}
inline MemoryAccessMask operator&(MemoryAccessMask a, MemoryAccessMask b) {}
inline MemoryAccessMask operator^(MemoryAccessMask a, MemoryAccessMask b) {}
inline MemoryAccessMask operator~(MemoryAccessMask a) {}
inline KernelProfilingInfoMask operator|(KernelProfilingInfoMask a, KernelProfilingInfoMask b) {}
inline KernelProfilingInfoMask operator&(KernelProfilingInfoMask a, KernelProfilingInfoMask b) {}
inline KernelProfilingInfoMask operator^(KernelProfilingInfoMask a, KernelProfilingInfoMask b) {}
inline KernelProfilingInfoMask operator~(KernelProfilingInfoMask a) {}
inline RayFlagsMask operator|(RayFlagsMask a, RayFlagsMask b) {}
inline RayFlagsMask operator&(RayFlagsMask a, RayFlagsMask b) {}
inline RayFlagsMask operator^(RayFlagsMask a, RayFlagsMask b) {}
inline RayFlagsMask operator~(RayFlagsMask a) {}
inline FragmentShadingRateMask operator|(FragmentShadingRateMask a, FragmentShadingRateMask b) {}
inline FragmentShadingRateMask operator&(FragmentShadingRateMask a, FragmentShadingRateMask b) {}
inline FragmentShadingRateMask operator^(FragmentShadingRateMask a, FragmentShadingRateMask b) {}
inline FragmentShadingRateMask operator~(FragmentShadingRateMask a) {}
inline CooperativeMatrixOperandsMask operator|(CooperativeMatrixOperandsMask a, CooperativeMatrixOperandsMask b) {}
inline CooperativeMatrixOperandsMask operator&(CooperativeMatrixOperandsMask a, CooperativeMatrixOperandsMask b) {}
inline CooperativeMatrixOperandsMask operator^(CooperativeMatrixOperandsMask a, CooperativeMatrixOperandsMask b) {}
inline CooperativeMatrixOperandsMask operator~(CooperativeMatrixOperandsMask a) {}
inline RawAccessChainOperandsMask operator|(RawAccessChainOperandsMask a, RawAccessChainOperandsMask b) {}
inline RawAccessChainOperandsMask operator&(RawAccessChainOperandsMask a, RawAccessChainOperandsMask b) {}
inline RawAccessChainOperandsMask operator^(RawAccessChainOperandsMask a, RawAccessChainOperandsMask b) {}
inline RawAccessChainOperandsMask operator~(RawAccessChainOperandsMask a) {}

}  // end namespace spv

#endif  // #ifndef spirv_HPP