// Copyright 2019 The SwiftShader Authors. All Rights Reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//    http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

// This file contains code used to aid debugging.

#include <spirv/unified1/spirv.hpp>
#include "SpirvShader.hpp"

namespace sw
{
	std::string SpirvShader::OpcodeName(spv::Op op)
	{
#ifndef NDEBUG
		switch(op){
		case spv::OpNop: return "Nop";
		case spv::OpUndef: return "Undef";
		case spv::OpSourceContinued: return "SourceContinued";
		case spv::OpSource: return "Source";
		case spv::OpSourceExtension: return "SourceExtension";
		case spv::OpName: return "Name";
		case spv::OpMemberName: return "MemberName";
		case spv::OpString: return "String";
		case spv::OpLine: return "Line";
		case spv::OpExtension: return "Extension";
		case spv::OpExtInstImport: return "ExtInstImport";
		case spv::OpExtInst: return "ExtInst";
		case spv::OpMemoryModel: return "MemoryModel";
		case spv::OpEntryPoint: return "EntryPoint";
		case spv::OpExecutionMode: return "ExecutionMode";
		case spv::OpCapability: return "Capability";
		case spv::OpTypeVoid: return "TypeVoid";
		case spv::OpTypeBool: return "TypeBool";
		case spv::OpTypeInt: return "TypeInt";
		case spv::OpTypeFloat: return "TypeFloat";
		case spv::OpTypeVector: return "TypeVector";
		case spv::OpTypeMatrix: return "TypeMatrix";
		case spv::OpTypeImage: return "TypeImage";
		case spv::OpTypeSampler: return "TypeSampler";
		case spv::OpTypeSampledImage: return "TypeSampledImage";
		case spv::OpTypeArray: return "TypeArray";
		case spv::OpTypeRuntimeArray: return "TypeRuntimeArray";
		case spv::OpTypeStruct: return "TypeStruct";
		case spv::OpTypeOpaque: return "TypeOpaque";
		case spv::OpTypePointer: return "TypePointer";
		case spv::OpTypeFunction: return "TypeFunction";
		case spv::OpTypeEvent: return "TypeEvent";
		case spv::OpTypeDeviceEvent: return "TypeDeviceEvent";
		case spv::OpTypeReserveId: return "TypeReserveId";
		case spv::OpTypeQueue: return "TypeQueue";
		case spv::OpTypePipe: return "TypePipe";
		case spv::OpTypeForwardPointer: return "TypeForwardPointer";
		case spv::OpConstantTrue: return "ConstantTrue";
		case spv::OpConstantFalse: return "ConstantFalse";
		case spv::OpConstant: return "Constant";
		case spv::OpConstantComposite: return "ConstantComposite";
		case spv::OpConstantSampler: return "ConstantSampler";
		case spv::OpConstantNull: return "ConstantNull";
		case spv::OpSpecConstantTrue: return "SpecConstantTrue";
		case spv::OpSpecConstantFalse: return "SpecConstantFalse";
		case spv::OpSpecConstant: return "SpecConstant";
		case spv::OpSpecConstantComposite: return "SpecConstantComposite";
		case spv::OpSpecConstantOp: return "SpecConstantOp";
		case spv::OpFunction: return "Function";
		case spv::OpFunctionParameter: return "FunctionParameter";
		case spv::OpFunctionEnd: return "FunctionEnd";
		case spv::OpFunctionCall: return "FunctionCall";
		case spv::OpVariable: return "Variable";
		case spv::OpImageTexelPointer: return "ImageTexelPointer";
		case spv::OpLoad: return "Load";
		case spv::OpStore: return "Store";
		case spv::OpCopyMemory: return "CopyMemory";
		case spv::OpCopyMemorySized: return "CopyMemorySized";
		case spv::OpAccessChain: return "AccessChain";
		case spv::OpInBoundsAccessChain: return "InBoundsAccessChain";
		case spv::OpPtrAccessChain: return "PtrAccessChain";
		case spv::OpArrayLength: return "ArrayLength";
		case spv::OpGenericPtrMemSemantics: return "GenericPtrMemSemantics";
		case spv::OpInBoundsPtrAccessChain: return "InBoundsPtrAccessChain";
		case spv::OpDecorate: return "Decorate";
		case spv::OpMemberDecorate: return "MemberDecorate";
		case spv::OpDecorationGroup: return "DecorationGroup";
		case spv::OpGroupDecorate: return "GroupDecorate";
		case spv::OpGroupMemberDecorate: return "GroupMemberDecorate";
		case spv::OpVectorExtractDynamic: return "VectorExtractDynamic";
		case spv::OpVectorInsertDynamic: return "VectorInsertDynamic";
		case spv::OpVectorShuffle: return "VectorShuffle";
		case spv::OpCompositeConstruct: return "CompositeConstruct";
		case spv::OpCompositeExtract: return "CompositeExtract";
		case spv::OpCompositeInsert: return "CompositeInsert";
		case spv::OpCopyObject: return "CopyObject";
		case spv::OpTranspose: return "Transpose";
		case spv::OpSampledImage: return "SampledImage";
		case spv::OpImageSampleImplicitLod: return "ImageSampleImplicitLod";
		case spv::OpImageSampleExplicitLod: return "ImageSampleExplicitLod";
		case spv::OpImageSampleDrefImplicitLod: return "ImageSampleDrefImplicitLod";
		case spv::OpImageSampleDrefExplicitLod: return "ImageSampleDrefExplicitLod";
		case spv::OpImageSampleProjImplicitLod: return "ImageSampleProjImplicitLod";
		case spv::OpImageSampleProjExplicitLod: return "ImageSampleProjExplicitLod";
		case spv::OpImageSampleProjDrefImplicitLod: return "ImageSampleProjDrefImplicitLod";
		case spv::OpImageSampleProjDrefExplicitLod: return "ImageSampleProjDrefExplicitLod";
		case spv::OpImageFetch: return "ImageFetch";
		case spv::OpImageGather: return "ImageGather";
		case spv::OpImageDrefGather: return "ImageDrefGather";
		case spv::OpImageRead: return "ImageRead";
		case spv::OpImageWrite: return "ImageWrite";
		case spv::OpImage: return "Image";
		case spv::OpImageQueryFormat: return "ImageQueryFormat";
		case spv::OpImageQueryOrder: return "ImageQueryOrder";
		case spv::OpImageQuerySizeLod: return "ImageQuerySizeLod";
		case spv::OpImageQuerySize: return "ImageQuerySize";
		case spv::OpImageQueryLod: return "ImageQueryLod";
		case spv::OpImageQueryLevels: return "ImageQueryLevels";
		case spv::OpImageQuerySamples: return "ImageQuerySamples";
		case spv::OpConvertFToU: return "ConvertFToU";
		case spv::OpConvertFToS: return "ConvertFToS";
		case spv::OpConvertSToF: return "ConvertSToF";
		case spv::OpConvertUToF: return "ConvertUToF";
		case spv::OpUConvert: return "UConvert";
		case spv::OpSConvert: return "SConvert";
		case spv::OpFConvert: return "FConvert";
		case spv::OpQuantizeToF16: return "QuantizeToF16";
		case spv::OpConvertPtrToU: return "ConvertPtrToU";
		case spv::OpSatConvertSToU: return "SatConvertSToU";
		case spv::OpSatConvertUToS: return "SatConvertUToS";
		case spv::OpConvertUToPtr: return "ConvertUToPtr";
		case spv::OpPtrCastToGeneric: return "PtrCastToGeneric";
		case spv::OpGenericCastToPtr: return "GenericCastToPtr";
		case spv::OpGenericCastToPtrExplicit: return "GenericCastToPtrExplicit";
		case spv::OpBitcast: return "Bitcast";
		case spv::OpSNegate: return "SNegate";
		case spv::OpFNegate: return "FNegate";
		case spv::OpIAdd: return "IAdd";
		case spv::OpFAdd: return "FAdd";
		case spv::OpISub: return "ISub";
		case spv::OpFSub: return "FSub";
		case spv::OpIMul: return "IMul";
		case spv::OpFMul: return "FMul";
		case spv::OpUDiv: return "UDiv";
		case spv::OpSDiv: return "SDiv";
		case spv::OpFDiv: return "FDiv";
		case spv::OpUMod: return "UMod";
		case spv::OpSRem: return "SRem";
		case spv::OpSMod: return "SMod";
		case spv::OpFRem: return "FRem";
		case spv::OpFMod: return "FMod";
		case spv::OpVectorTimesScalar: return "VectorTimesScalar";
		case spv::OpMatrixTimesScalar: return "MatrixTimesScalar";
		case spv::OpVectorTimesMatrix: return "VectorTimesMatrix";
		case spv::OpMatrixTimesVector: return "MatrixTimesVector";
		case spv::OpMatrixTimesMatrix: return "MatrixTimesMatrix";
		case spv::OpOuterProduct: return "OuterProduct";
		case spv::OpDot: return "Dot";
		case spv::OpIAddCarry: return "IAddCarry";
		case spv::OpISubBorrow: return "ISubBorrow";
		case spv::OpUMulExtended: return "UMulExtended";
		case spv::OpSMulExtended: return "SMulExtended";
		case spv::OpAny: return "Any";
		case spv::OpAll: return "All";
		case spv::OpIsNan: return "IsNan";
		case spv::OpIsInf: return "IsInf";
		case spv::OpIsFinite: return "IsFinite";
		case spv::OpIsNormal: return "IsNormal";
		case spv::OpSignBitSet: return "SignBitSet";
		case spv::OpLessOrGreater: return "LessOrGreater";
		case spv::OpOrdered: return "Ordered";
		case spv::OpUnordered: return "Unordered";
		case spv::OpLogicalEqual: return "LogicalEqual";
		case spv::OpLogicalNotEqual: return "LogicalNotEqual";
		case spv::OpLogicalOr: return "LogicalOr";
		case spv::OpLogicalAnd: return "LogicalAnd";
		case spv::OpLogicalNot: return "LogicalNot";
		case spv::OpSelect: return "Select";
		case spv::OpIEqual: return "IEqual";
		case spv::OpINotEqual: return "INotEqual";
		case spv::OpUGreaterThan: return "UGreaterThan";
		case spv::OpSGreaterThan: return "SGreaterThan";
		case spv::OpUGreaterThanEqual: return "UGreaterThanEqual";
		case spv::OpSGreaterThanEqual: return "SGreaterThanEqual";
		case spv::OpULessThan: return "ULessThan";
		case spv::OpSLessThan: return "SLessThan";
		case spv::OpULessThanEqual: return "ULessThanEqual";
		case spv::OpSLessThanEqual: return "SLessThanEqual";
		case spv::OpFOrdEqual: return "FOrdEqual";
		case spv::OpFUnordEqual: return "FUnordEqual";
		case spv::OpFOrdNotEqual: return "FOrdNotEqual";
		case spv::OpFUnordNotEqual: return "FUnordNotEqual";
		case spv::OpFOrdLessThan: return "FOrdLessThan";
		case spv::OpFUnordLessThan: return "FUnordLessThan";
		case spv::OpFOrdGreaterThan: return "FOrdGreaterThan";
		case spv::OpFUnordGreaterThan: return "FUnordGreaterThan";
		case spv::OpFOrdLessThanEqual: return "FOrdLessThanEqual";
		case spv::OpFUnordLessThanEqual: return "FUnordLessThanEqual";
		case spv::OpFOrdGreaterThanEqual: return "FOrdGreaterThanEqual";
		case spv::OpFUnordGreaterThanEqual: return "FUnordGreaterThanEqual";
		case spv::OpShiftRightLogical: return "ShiftRightLogical";
		case spv::OpShiftRightArithmetic: return "ShiftRightArithmetic";
		case spv::OpShiftLeftLogical: return "ShiftLeftLogical";
		case spv::OpBitwiseOr: return "BitwiseOr";
		case spv::OpBitwiseXor: return "BitwiseXor";
		case spv::OpBitwiseAnd: return "BitwiseAnd";
		case spv::OpNot: return "Not";
		case spv::OpBitFieldInsert: return "BitFieldInsert";
		case spv::OpBitFieldSExtract: return "BitFieldSExtract";
		case spv::OpBitFieldUExtract: return "BitFieldUExtract";
		case spv::OpBitReverse: return "BitReverse";
		case spv::OpBitCount: return "BitCount";
		case spv::OpDPdx: return "DPdx";
		case spv::OpDPdy: return "DPdy";
		case spv::OpFwidth: return "Fwidth";
		case spv::OpDPdxFine: return "DPdxFine";
		case spv::OpDPdyFine: return "DPdyFine";
		case spv::OpFwidthFine: return "FwidthFine";
		case spv::OpDPdxCoarse: return "DPdxCoarse";
		case spv::OpDPdyCoarse: return "DPdyCoarse";
		case spv::OpFwidthCoarse: return "FwidthCoarse";
		case spv::OpEmitVertex: return "EmitVertex";
		case spv::OpEndPrimitive: return "EndPrimitive";
		case spv::OpEmitStreamVertex: return "EmitStreamVertex";
		case spv::OpEndStreamPrimitive: return "EndStreamPrimitive";
		case spv::OpControlBarrier: return "ControlBarrier";
		case spv::OpMemoryBarrier: return "MemoryBarrier";
		case spv::OpAtomicLoad: return "AtomicLoad";
		case spv::OpAtomicStore: return "AtomicStore";
		case spv::OpAtomicExchange: return "AtomicExchange";
		case spv::OpAtomicCompareExchange: return "AtomicCompareExchange";
		case spv::OpAtomicCompareExchangeWeak: return "AtomicCompareExchangeWeak";
		case spv::OpAtomicIIncrement: return "AtomicIIncrement";
		case spv::OpAtomicIDecrement: return "AtomicIDecrement";
		case spv::OpAtomicIAdd: return "AtomicIAdd";
		case spv::OpAtomicISub: return "AtomicISub";
		case spv::OpAtomicSMin: return "AtomicSMin";
		case spv::OpAtomicUMin: return "AtomicUMin";
		case spv::OpAtomicSMax: return "AtomicSMax";
		case spv::OpAtomicUMax: return "AtomicUMax";
		case spv::OpAtomicAnd: return "AtomicAnd";
		case spv::OpAtomicOr: return "AtomicOr";
		case spv::OpAtomicXor: return "AtomicXor";
		case spv::OpPhi: return "Phi";
		case spv::OpLoopMerge: return "LoopMerge";
		case spv::OpSelectionMerge: return "SelectionMerge";
		case spv::OpLabel: return "Label";
		case spv::OpBranch: return "Branch";
		case spv::OpBranchConditional: return "BranchConditional";
		case spv::OpSwitch: return "Switch";
		case spv::OpKill: return "Kill";
		case spv::OpReturn: return "Return";
		case spv::OpReturnValue: return "ReturnValue";
		case spv::OpUnreachable: return "Unreachable";
		case spv::OpLifetimeStart: return "LifetimeStart";
		case spv::OpLifetimeStop: return "LifetimeStop";
		case spv::OpGroupAsyncCopy: return "GroupAsyncCopy";
		case spv::OpGroupWaitEvents: return "GroupWaitEvents";
		case spv::OpGroupAll: return "GroupAll";
		case spv::OpGroupAny: return "GroupAny";
		case spv::OpGroupBroadcast: return "GroupBroadcast";
		case spv::OpGroupIAdd: return "GroupIAdd";
		case spv::OpGroupFAdd: return "GroupFAdd";
		case spv::OpGroupFMin: return "GroupFMin";
		case spv::OpGroupUMin: return "GroupUMin";
		case spv::OpGroupSMin: return "GroupSMin";
		case spv::OpGroupFMax: return "GroupFMax";
		case spv::OpGroupUMax: return "GroupUMax";
		case spv::OpGroupSMax: return "GroupSMax";
		case spv::OpReadPipe: return "ReadPipe";
		case spv::OpWritePipe: return "WritePipe";
		case spv::OpReservedReadPipe: return "ReservedReadPipe";
		case spv::OpReservedWritePipe: return "ReservedWritePipe";
		case spv::OpReserveReadPipePackets: return "ReserveReadPipePackets";
		case spv::OpReserveWritePipePackets: return "ReserveWritePipePackets";
		case spv::OpCommitReadPipe: return "CommitReadPipe";
		case spv::OpCommitWritePipe: return "CommitWritePipe";
		case spv::OpIsValidReserveId: return "IsValidReserveId";
		case spv::OpGetNumPipePackets: return "GetNumPipePackets";
		case spv::OpGetMaxPipePackets: return "GetMaxPipePackets";
		case spv::OpGroupReserveReadPipePackets: return "GroupReserveReadPipePackets";
		case spv::OpGroupReserveWritePipePackets: return "GroupReserveWritePipePackets";
		case spv::OpGroupCommitReadPipe: return "GroupCommitReadPipe";
		case spv::OpGroupCommitWritePipe: return "GroupCommitWritePipe";
		case spv::OpEnqueueMarker: return "EnqueueMarker";
		case spv::OpEnqueueKernel: return "EnqueueKernel";
		case spv::OpGetKernelNDrangeSubGroupCount: return "GetKernelNDrangeSubGroupCount";
		case spv::OpGetKernelNDrangeMaxSubGroupSize: return "GetKernelNDrangeMaxSubGroupSize";
		case spv::OpGetKernelWorkGroupSize: return "GetKernelWorkGroupSize";
		case spv::OpGetKernelPreferredWorkGroupSizeMultiple: return "GetKernelPreferredWorkGroupSizeMultiple";
		case spv::OpRetainEvent: return "RetainEvent";
		case spv::OpReleaseEvent: return "ReleaseEvent";
		case spv::OpCreateUserEvent: return "CreateUserEvent";
		case spv::OpIsValidEvent: return "IsValidEvent";
		case spv::OpSetUserEventStatus: return "SetUserEventStatus";
		case spv::OpCaptureEventProfilingInfo: return "CaptureEventProfilingInfo";
		case spv::OpGetDefaultQueue: return "GetDefaultQueue";
		case spv::OpBuildNDRange: return "BuildNDRange";
		case spv::OpImageSparseSampleImplicitLod: return "ImageSparseSampleImplicitLod";
		case spv::OpImageSparseSampleExplicitLod: return "ImageSparseSampleExplicitLod";
		case spv::OpImageSparseSampleDrefImplicitLod: return "ImageSparseSampleDrefImplicitLod";
		case spv::OpImageSparseSampleDrefExplicitLod: return "ImageSparseSampleDrefExplicitLod";
		case spv::OpImageSparseSampleProjImplicitLod: return "ImageSparseSampleProjImplicitLod";
		case spv::OpImageSparseSampleProjExplicitLod: return "ImageSparseSampleProjExplicitLod";
		case spv::OpImageSparseSampleProjDrefImplicitLod: return "ImageSparseSampleProjDrefImplicitLod";
		case spv::OpImageSparseSampleProjDrefExplicitLod: return "ImageSparseSampleProjDrefExplicitLod";
		case spv::OpImageSparseFetch: return "ImageSparseFetch";
		case spv::OpImageSparseGather: return "ImageSparseGather";
		case spv::OpImageSparseDrefGather: return "ImageSparseDrefGather";
		case spv::OpImageSparseTexelsResident: return "ImageSparseTexelsResident";
		case spv::OpNoLine: return "NoLine";
		case spv::OpAtomicFlagTestAndSet: return "AtomicFlagTestAndSet";
		case spv::OpAtomicFlagClear: return "AtomicFlagClear";
		case spv::OpImageSparseRead: return "ImageSparseRead";
		case spv::OpSizeOf: return "SizeOf";
		case spv::OpTypePipeStorage: return "TypePipeStorage";
		case spv::OpConstantPipeStorage: return "ConstantPipeStorage";
		case spv::OpCreatePipeFromPipeStorage: return "CreatePipeFromPipeStorage";
		case spv::OpGetKernelLocalSizeForSubgroupCount: return "GetKernelLocalSizeForSubgroupCount";
		case spv::OpGetKernelMaxNumSubgroups: return "GetKernelMaxNumSubgroups";
		case spv::OpTypeNamedBarrier: return "TypeNamedBarrier";
		case spv::OpNamedBarrierInitialize: return "NamedBarrierInitialize";
		case spv::OpMemoryNamedBarrier: return "MemoryNamedBarrier";
		case spv::OpModuleProcessed: return "ModuleProcessed";
		case spv::OpExecutionModeId: return "ExecutionModeId";
		case spv::OpDecorateId: return "DecorateId";
		case spv::OpGroupNonUniformElect: return "GroupNonUniformElect";
		case spv::OpGroupNonUniformAll: return "GroupNonUniformAll";
		case spv::OpGroupNonUniformAny: return "GroupNonUniformAny";
		case spv::OpGroupNonUniformAllEqual: return "GroupNonUniformAllEqual";
		case spv::OpGroupNonUniformBroadcast: return "GroupNonUniformBroadcast";
		case spv::OpGroupNonUniformBroadcastFirst: return "GroupNonUniformBroadcastFirst";
		case spv::OpGroupNonUniformBallot: return "GroupNonUniformBallot";
		case spv::OpGroupNonUniformInverseBallot: return "GroupNonUniformInverseBallot";
		case spv::OpGroupNonUniformBallotBitExtract: return "GroupNonUniformBallotBitExtract";
		case spv::OpGroupNonUniformBallotBitCount: return "GroupNonUniformBallotBitCount";
		case spv::OpGroupNonUniformBallotFindLSB: return "GroupNonUniformBallotFindLSB";
		case spv::OpGroupNonUniformBallotFindMSB: return "GroupNonUniformBallotFindMSB";
		case spv::OpGroupNonUniformShuffle: return "GroupNonUniformShuffle";
		case spv::OpGroupNonUniformShuffleXor: return "GroupNonUniformShuffleXor";
		case spv::OpGroupNonUniformShuffleUp: return "GroupNonUniformShuffleUp";
		case spv::OpGroupNonUniformShuffleDown: return "GroupNonUniformShuffleDown";
		case spv::OpGroupNonUniformIAdd: return "GroupNonUniformIAdd";
		case spv::OpGroupNonUniformFAdd: return "GroupNonUniformFAdd";
		case spv::OpGroupNonUniformIMul: return "GroupNonUniformIMul";
		case spv::OpGroupNonUniformFMul: return "GroupNonUniformFMul";
		case spv::OpGroupNonUniformSMin: return "GroupNonUniformSMin";
		case spv::OpGroupNonUniformUMin: return "GroupNonUniformUMin";
		case spv::OpGroupNonUniformFMin: return "GroupNonUniformFMin";
		case spv::OpGroupNonUniformSMax: return "GroupNonUniformSMax";
		case spv::OpGroupNonUniformUMax: return "GroupNonUniformUMax";
		case spv::OpGroupNonUniformFMax: return "GroupNonUniformFMax";
		case spv::OpGroupNonUniformBitwiseAnd: return "GroupNonUniformBitwiseAnd";
		case spv::OpGroupNonUniformBitwiseOr: return "GroupNonUniformBitwiseOr";
		case spv::OpGroupNonUniformBitwiseXor: return "GroupNonUniformBitwiseXor";
		case spv::OpGroupNonUniformLogicalAnd: return "GroupNonUniformLogicalAnd";
		case spv::OpGroupNonUniformLogicalOr: return "GroupNonUniformLogicalOr";
		case spv::OpGroupNonUniformLogicalXor: return "GroupNonUniformLogicalXor";
		case spv::OpGroupNonUniformQuadBroadcast: return "GroupNonUniformQuadBroadcast";
		case spv::OpGroupNonUniformQuadSwap: return "GroupNonUniformQuadSwap";
		case spv::OpSubgroupBallotKHR: return "SubgroupBallotKHR";
		case spv::OpSubgroupFirstInvocationKHR: return "SubgroupFirstInvocationKHR";
		case spv::OpSubgroupAllKHR: return "SubgroupAllKHR";
		case spv::OpSubgroupAnyKHR: return "SubgroupAnyKHR";
		case spv::OpSubgroupAllEqualKHR: return "SubgroupAllEqualKHR";
		case spv::OpSubgroupReadInvocationKHR: return "SubgroupReadInvocationKHR";
		case spv::OpGroupIAddNonUniformAMD: return "GroupIAddNonUniformAMD";
		case spv::OpGroupFAddNonUniformAMD: return "GroupFAddNonUniformAMD";
		case spv::OpGroupFMinNonUniformAMD: return "GroupFMinNonUniformAMD";
		case spv::OpGroupUMinNonUniformAMD: return "GroupUMinNonUniformAMD";
		case spv::OpGroupSMinNonUniformAMD: return "GroupSMinNonUniformAMD";
		case spv::OpGroupFMaxNonUniformAMD: return "GroupFMaxNonUniformAMD";
		case spv::OpGroupUMaxNonUniformAMD: return "GroupUMaxNonUniformAMD";
		case spv::OpGroupSMaxNonUniformAMD: return "GroupSMaxNonUniformAMD";
		case spv::OpFragmentMaskFetchAMD: return "FragmentMaskFetchAMD";
		case spv::OpFragmentFetchAMD: return "FragmentFetchAMD";
		case spv::OpImageSampleFootprintNV: return "ImageSampleFootprintNV";
		case spv::OpGroupNonUniformPartitionNV: return "GroupNonUniformPartitionNV";
		case spv::OpWritePackedPrimitiveIndices4x8NV: return "WritePackedPrimitiveIndices4x8NV";
		case spv::OpReportIntersectionNV: return "ReportIntersectionNV";
		case spv::OpIgnoreIntersectionNV: return "IgnoreIntersectionNV";
		case spv::OpTerminateRayNV: return "TerminateRayNV";
		case spv::OpTraceNV: return "TraceNV";
		case spv::OpTypeAccelerationStructureNV: return "TypeAccelerationStructureNV";
		case spv::OpExecuteCallableNV: return "ExecuteCallableNV";
		case spv::OpSubgroupShuffleINTEL: return "SubgroupShuffleINTEL";
		case spv::OpSubgroupShuffleDownINTEL: return "SubgroupShuffleDownINTEL";
		case spv::OpSubgroupShuffleUpINTEL: return "SubgroupShuffleUpINTEL";
		case spv::OpSubgroupShuffleXorINTEL: return "SubgroupShuffleXorINTEL";
		case spv::OpSubgroupBlockReadINTEL: return "SubgroupBlockReadINTEL";
		case spv::OpSubgroupBlockWriteINTEL: return "SubgroupBlockWriteINTEL";
		case spv::OpSubgroupImageBlockReadINTEL: return "SubgroupImageBlockReadINTEL";
		case spv::OpSubgroupImageBlockWriteINTEL: return "SubgroupImageBlockWriteINTEL";
		case spv::OpDecorateStringGOOGLE: return "DecorateStringGOOGLE";
		case spv::OpMemberDecorateStringGOOGLE: return "MemberDecorateStringGOOGLE";
		case spv::OpMax: return "Max";
		default:
			break;
		}
#endif // NDEBUG

		return "Opcode<" + std::to_string(static_cast<int>(op)) + ">";
	}

} // namespace sw
