Ben Clayton | d4e4c66 | 2019-02-26 11:54:34 +0000 | [diff] [blame] | 1 | // Copyright 2019 The SwiftShader Authors. All Rights Reserved. |
| 2 | // |
| 3 | // Licensed under the Apache License, Version 2.0 (the "License"); |
| 4 | // you may not use this file except in compliance with the License. |
| 5 | // You may obtain a copy of the License at |
| 6 | // |
| 7 | // http://www.apache.org/licenses/LICENSE-2.0 |
| 8 | // |
| 9 | // Unless required by applicable law or agreed to in writing, software |
| 10 | // distributed under the License is distributed on an "AS IS" BASIS, |
| 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| 12 | // See the License for the specific language governing permissions and |
| 13 | // limitations under the License. |
| 14 | |
| 15 | // This file contains code used to aid debugging. |
| 16 | |
| 17 | #include <spirv/unified1/spirv.hpp> |
| 18 | #include "SpirvShader.hpp" |
| 19 | |
| 20 | namespace sw |
| 21 | { |
| 22 | std::string SpirvShader::OpcodeName(spv::Op op) |
| 23 | { |
Ben Clayton | d4e4c66 | 2019-02-26 11:54:34 +0000 | [diff] [blame] | 24 | #ifndef NDEBUG |
Alexis Hetu | 5078d48 | 2019-04-10 15:00:25 -0400 | [diff] [blame] | 25 | switch(op){ |
Ben Clayton | d4e4c66 | 2019-02-26 11:54:34 +0000 | [diff] [blame] | 26 | case spv::OpNop: return "Nop"; |
| 27 | case spv::OpUndef: return "Undef"; |
| 28 | case spv::OpSourceContinued: return "SourceContinued"; |
| 29 | case spv::OpSource: return "Source"; |
| 30 | case spv::OpSourceExtension: return "SourceExtension"; |
| 31 | case spv::OpName: return "Name"; |
| 32 | case spv::OpMemberName: return "MemberName"; |
| 33 | case spv::OpString: return "String"; |
| 34 | case spv::OpLine: return "Line"; |
| 35 | case spv::OpExtension: return "Extension"; |
| 36 | case spv::OpExtInstImport: return "ExtInstImport"; |
| 37 | case spv::OpExtInst: return "ExtInst"; |
| 38 | case spv::OpMemoryModel: return "MemoryModel"; |
| 39 | case spv::OpEntryPoint: return "EntryPoint"; |
| 40 | case spv::OpExecutionMode: return "ExecutionMode"; |
| 41 | case spv::OpCapability: return "Capability"; |
| 42 | case spv::OpTypeVoid: return "TypeVoid"; |
| 43 | case spv::OpTypeBool: return "TypeBool"; |
| 44 | case spv::OpTypeInt: return "TypeInt"; |
| 45 | case spv::OpTypeFloat: return "TypeFloat"; |
| 46 | case spv::OpTypeVector: return "TypeVector"; |
| 47 | case spv::OpTypeMatrix: return "TypeMatrix"; |
| 48 | case spv::OpTypeImage: return "TypeImage"; |
| 49 | case spv::OpTypeSampler: return "TypeSampler"; |
| 50 | case spv::OpTypeSampledImage: return "TypeSampledImage"; |
| 51 | case spv::OpTypeArray: return "TypeArray"; |
| 52 | case spv::OpTypeRuntimeArray: return "TypeRuntimeArray"; |
| 53 | case spv::OpTypeStruct: return "TypeStruct"; |
| 54 | case spv::OpTypeOpaque: return "TypeOpaque"; |
| 55 | case spv::OpTypePointer: return "TypePointer"; |
| 56 | case spv::OpTypeFunction: return "TypeFunction"; |
| 57 | case spv::OpTypeEvent: return "TypeEvent"; |
| 58 | case spv::OpTypeDeviceEvent: return "TypeDeviceEvent"; |
| 59 | case spv::OpTypeReserveId: return "TypeReserveId"; |
| 60 | case spv::OpTypeQueue: return "TypeQueue"; |
| 61 | case spv::OpTypePipe: return "TypePipe"; |
| 62 | case spv::OpTypeForwardPointer: return "TypeForwardPointer"; |
| 63 | case spv::OpConstantTrue: return "ConstantTrue"; |
| 64 | case spv::OpConstantFalse: return "ConstantFalse"; |
| 65 | case spv::OpConstant: return "Constant"; |
| 66 | case spv::OpConstantComposite: return "ConstantComposite"; |
| 67 | case spv::OpConstantSampler: return "ConstantSampler"; |
| 68 | case spv::OpConstantNull: return "ConstantNull"; |
| 69 | case spv::OpSpecConstantTrue: return "SpecConstantTrue"; |
| 70 | case spv::OpSpecConstantFalse: return "SpecConstantFalse"; |
| 71 | case spv::OpSpecConstant: return "SpecConstant"; |
| 72 | case spv::OpSpecConstantComposite: return "SpecConstantComposite"; |
| 73 | case spv::OpSpecConstantOp: return "SpecConstantOp"; |
| 74 | case spv::OpFunction: return "Function"; |
| 75 | case spv::OpFunctionParameter: return "FunctionParameter"; |
| 76 | case spv::OpFunctionEnd: return "FunctionEnd"; |
| 77 | case spv::OpFunctionCall: return "FunctionCall"; |
| 78 | case spv::OpVariable: return "Variable"; |
| 79 | case spv::OpImageTexelPointer: return "ImageTexelPointer"; |
| 80 | case spv::OpLoad: return "Load"; |
| 81 | case spv::OpStore: return "Store"; |
| 82 | case spv::OpCopyMemory: return "CopyMemory"; |
| 83 | case spv::OpCopyMemorySized: return "CopyMemorySized"; |
| 84 | case spv::OpAccessChain: return "AccessChain"; |
| 85 | case spv::OpInBoundsAccessChain: return "InBoundsAccessChain"; |
| 86 | case spv::OpPtrAccessChain: return "PtrAccessChain"; |
| 87 | case spv::OpArrayLength: return "ArrayLength"; |
| 88 | case spv::OpGenericPtrMemSemantics: return "GenericPtrMemSemantics"; |
| 89 | case spv::OpInBoundsPtrAccessChain: return "InBoundsPtrAccessChain"; |
| 90 | case spv::OpDecorate: return "Decorate"; |
| 91 | case spv::OpMemberDecorate: return "MemberDecorate"; |
| 92 | case spv::OpDecorationGroup: return "DecorationGroup"; |
| 93 | case spv::OpGroupDecorate: return "GroupDecorate"; |
| 94 | case spv::OpGroupMemberDecorate: return "GroupMemberDecorate"; |
| 95 | case spv::OpVectorExtractDynamic: return "VectorExtractDynamic"; |
| 96 | case spv::OpVectorInsertDynamic: return "VectorInsertDynamic"; |
| 97 | case spv::OpVectorShuffle: return "VectorShuffle"; |
| 98 | case spv::OpCompositeConstruct: return "CompositeConstruct"; |
| 99 | case spv::OpCompositeExtract: return "CompositeExtract"; |
| 100 | case spv::OpCompositeInsert: return "CompositeInsert"; |
| 101 | case spv::OpCopyObject: return "CopyObject"; |
| 102 | case spv::OpTranspose: return "Transpose"; |
| 103 | case spv::OpSampledImage: return "SampledImage"; |
| 104 | case spv::OpImageSampleImplicitLod: return "ImageSampleImplicitLod"; |
| 105 | case spv::OpImageSampleExplicitLod: return "ImageSampleExplicitLod"; |
| 106 | case spv::OpImageSampleDrefImplicitLod: return "ImageSampleDrefImplicitLod"; |
| 107 | case spv::OpImageSampleDrefExplicitLod: return "ImageSampleDrefExplicitLod"; |
| 108 | case spv::OpImageSampleProjImplicitLod: return "ImageSampleProjImplicitLod"; |
| 109 | case spv::OpImageSampleProjExplicitLod: return "ImageSampleProjExplicitLod"; |
| 110 | case spv::OpImageSampleProjDrefImplicitLod: return "ImageSampleProjDrefImplicitLod"; |
| 111 | case spv::OpImageSampleProjDrefExplicitLod: return "ImageSampleProjDrefExplicitLod"; |
| 112 | case spv::OpImageFetch: return "ImageFetch"; |
| 113 | case spv::OpImageGather: return "ImageGather"; |
| 114 | case spv::OpImageDrefGather: return "ImageDrefGather"; |
| 115 | case spv::OpImageRead: return "ImageRead"; |
| 116 | case spv::OpImageWrite: return "ImageWrite"; |
| 117 | case spv::OpImage: return "Image"; |
| 118 | case spv::OpImageQueryFormat: return "ImageQueryFormat"; |
| 119 | case spv::OpImageQueryOrder: return "ImageQueryOrder"; |
| 120 | case spv::OpImageQuerySizeLod: return "ImageQuerySizeLod"; |
| 121 | case spv::OpImageQuerySize: return "ImageQuerySize"; |
| 122 | case spv::OpImageQueryLod: return "ImageQueryLod"; |
| 123 | case spv::OpImageQueryLevels: return "ImageQueryLevels"; |
| 124 | case spv::OpImageQuerySamples: return "ImageQuerySamples"; |
| 125 | case spv::OpConvertFToU: return "ConvertFToU"; |
| 126 | case spv::OpConvertFToS: return "ConvertFToS"; |
| 127 | case spv::OpConvertSToF: return "ConvertSToF"; |
| 128 | case spv::OpConvertUToF: return "ConvertUToF"; |
| 129 | case spv::OpUConvert: return "UConvert"; |
| 130 | case spv::OpSConvert: return "SConvert"; |
| 131 | case spv::OpFConvert: return "FConvert"; |
| 132 | case spv::OpQuantizeToF16: return "QuantizeToF16"; |
| 133 | case spv::OpConvertPtrToU: return "ConvertPtrToU"; |
| 134 | case spv::OpSatConvertSToU: return "SatConvertSToU"; |
| 135 | case spv::OpSatConvertUToS: return "SatConvertUToS"; |
| 136 | case spv::OpConvertUToPtr: return "ConvertUToPtr"; |
| 137 | case spv::OpPtrCastToGeneric: return "PtrCastToGeneric"; |
| 138 | case spv::OpGenericCastToPtr: return "GenericCastToPtr"; |
| 139 | case spv::OpGenericCastToPtrExplicit: return "GenericCastToPtrExplicit"; |
| 140 | case spv::OpBitcast: return "Bitcast"; |
| 141 | case spv::OpSNegate: return "SNegate"; |
| 142 | case spv::OpFNegate: return "FNegate"; |
| 143 | case spv::OpIAdd: return "IAdd"; |
| 144 | case spv::OpFAdd: return "FAdd"; |
| 145 | case spv::OpISub: return "ISub"; |
| 146 | case spv::OpFSub: return "FSub"; |
| 147 | case spv::OpIMul: return "IMul"; |
| 148 | case spv::OpFMul: return "FMul"; |
| 149 | case spv::OpUDiv: return "UDiv"; |
| 150 | case spv::OpSDiv: return "SDiv"; |
| 151 | case spv::OpFDiv: return "FDiv"; |
| 152 | case spv::OpUMod: return "UMod"; |
| 153 | case spv::OpSRem: return "SRem"; |
| 154 | case spv::OpSMod: return "SMod"; |
| 155 | case spv::OpFRem: return "FRem"; |
| 156 | case spv::OpFMod: return "FMod"; |
| 157 | case spv::OpVectorTimesScalar: return "VectorTimesScalar"; |
| 158 | case spv::OpMatrixTimesScalar: return "MatrixTimesScalar"; |
| 159 | case spv::OpVectorTimesMatrix: return "VectorTimesMatrix"; |
| 160 | case spv::OpMatrixTimesVector: return "MatrixTimesVector"; |
| 161 | case spv::OpMatrixTimesMatrix: return "MatrixTimesMatrix"; |
| 162 | case spv::OpOuterProduct: return "OuterProduct"; |
| 163 | case spv::OpDot: return "Dot"; |
| 164 | case spv::OpIAddCarry: return "IAddCarry"; |
| 165 | case spv::OpISubBorrow: return "ISubBorrow"; |
| 166 | case spv::OpUMulExtended: return "UMulExtended"; |
| 167 | case spv::OpSMulExtended: return "SMulExtended"; |
| 168 | case spv::OpAny: return "Any"; |
| 169 | case spv::OpAll: return "All"; |
| 170 | case spv::OpIsNan: return "IsNan"; |
| 171 | case spv::OpIsInf: return "IsInf"; |
| 172 | case spv::OpIsFinite: return "IsFinite"; |
| 173 | case spv::OpIsNormal: return "IsNormal"; |
| 174 | case spv::OpSignBitSet: return "SignBitSet"; |
| 175 | case spv::OpLessOrGreater: return "LessOrGreater"; |
| 176 | case spv::OpOrdered: return "Ordered"; |
| 177 | case spv::OpUnordered: return "Unordered"; |
| 178 | case spv::OpLogicalEqual: return "LogicalEqual"; |
| 179 | case spv::OpLogicalNotEqual: return "LogicalNotEqual"; |
| 180 | case spv::OpLogicalOr: return "LogicalOr"; |
| 181 | case spv::OpLogicalAnd: return "LogicalAnd"; |
| 182 | case spv::OpLogicalNot: return "LogicalNot"; |
| 183 | case spv::OpSelect: return "Select"; |
| 184 | case spv::OpIEqual: return "IEqual"; |
| 185 | case spv::OpINotEqual: return "INotEqual"; |
| 186 | case spv::OpUGreaterThan: return "UGreaterThan"; |
| 187 | case spv::OpSGreaterThan: return "SGreaterThan"; |
| 188 | case spv::OpUGreaterThanEqual: return "UGreaterThanEqual"; |
| 189 | case spv::OpSGreaterThanEqual: return "SGreaterThanEqual"; |
| 190 | case spv::OpULessThan: return "ULessThan"; |
| 191 | case spv::OpSLessThan: return "SLessThan"; |
| 192 | case spv::OpULessThanEqual: return "ULessThanEqual"; |
| 193 | case spv::OpSLessThanEqual: return "SLessThanEqual"; |
| 194 | case spv::OpFOrdEqual: return "FOrdEqual"; |
| 195 | case spv::OpFUnordEqual: return "FUnordEqual"; |
| 196 | case spv::OpFOrdNotEqual: return "FOrdNotEqual"; |
| 197 | case spv::OpFUnordNotEqual: return "FUnordNotEqual"; |
| 198 | case spv::OpFOrdLessThan: return "FOrdLessThan"; |
| 199 | case spv::OpFUnordLessThan: return "FUnordLessThan"; |
| 200 | case spv::OpFOrdGreaterThan: return "FOrdGreaterThan"; |
| 201 | case spv::OpFUnordGreaterThan: return "FUnordGreaterThan"; |
| 202 | case spv::OpFOrdLessThanEqual: return "FOrdLessThanEqual"; |
| 203 | case spv::OpFUnordLessThanEqual: return "FUnordLessThanEqual"; |
| 204 | case spv::OpFOrdGreaterThanEqual: return "FOrdGreaterThanEqual"; |
| 205 | case spv::OpFUnordGreaterThanEqual: return "FUnordGreaterThanEqual"; |
| 206 | case spv::OpShiftRightLogical: return "ShiftRightLogical"; |
| 207 | case spv::OpShiftRightArithmetic: return "ShiftRightArithmetic"; |
| 208 | case spv::OpShiftLeftLogical: return "ShiftLeftLogical"; |
| 209 | case spv::OpBitwiseOr: return "BitwiseOr"; |
| 210 | case spv::OpBitwiseXor: return "BitwiseXor"; |
| 211 | case spv::OpBitwiseAnd: return "BitwiseAnd"; |
| 212 | case spv::OpNot: return "Not"; |
| 213 | case spv::OpBitFieldInsert: return "BitFieldInsert"; |
| 214 | case spv::OpBitFieldSExtract: return "BitFieldSExtract"; |
| 215 | case spv::OpBitFieldUExtract: return "BitFieldUExtract"; |
| 216 | case spv::OpBitReverse: return "BitReverse"; |
| 217 | case spv::OpBitCount: return "BitCount"; |
| 218 | case spv::OpDPdx: return "DPdx"; |
| 219 | case spv::OpDPdy: return "DPdy"; |
| 220 | case spv::OpFwidth: return "Fwidth"; |
| 221 | case spv::OpDPdxFine: return "DPdxFine"; |
| 222 | case spv::OpDPdyFine: return "DPdyFine"; |
| 223 | case spv::OpFwidthFine: return "FwidthFine"; |
| 224 | case spv::OpDPdxCoarse: return "DPdxCoarse"; |
| 225 | case spv::OpDPdyCoarse: return "DPdyCoarse"; |
| 226 | case spv::OpFwidthCoarse: return "FwidthCoarse"; |
| 227 | case spv::OpEmitVertex: return "EmitVertex"; |
| 228 | case spv::OpEndPrimitive: return "EndPrimitive"; |
| 229 | case spv::OpEmitStreamVertex: return "EmitStreamVertex"; |
| 230 | case spv::OpEndStreamPrimitive: return "EndStreamPrimitive"; |
| 231 | case spv::OpControlBarrier: return "ControlBarrier"; |
| 232 | case spv::OpMemoryBarrier: return "MemoryBarrier"; |
| 233 | case spv::OpAtomicLoad: return "AtomicLoad"; |
| 234 | case spv::OpAtomicStore: return "AtomicStore"; |
| 235 | case spv::OpAtomicExchange: return "AtomicExchange"; |
| 236 | case spv::OpAtomicCompareExchange: return "AtomicCompareExchange"; |
| 237 | case spv::OpAtomicCompareExchangeWeak: return "AtomicCompareExchangeWeak"; |
| 238 | case spv::OpAtomicIIncrement: return "AtomicIIncrement"; |
| 239 | case spv::OpAtomicIDecrement: return "AtomicIDecrement"; |
| 240 | case spv::OpAtomicIAdd: return "AtomicIAdd"; |
| 241 | case spv::OpAtomicISub: return "AtomicISub"; |
| 242 | case spv::OpAtomicSMin: return "AtomicSMin"; |
| 243 | case spv::OpAtomicUMin: return "AtomicUMin"; |
| 244 | case spv::OpAtomicSMax: return "AtomicSMax"; |
| 245 | case spv::OpAtomicUMax: return "AtomicUMax"; |
| 246 | case spv::OpAtomicAnd: return "AtomicAnd"; |
| 247 | case spv::OpAtomicOr: return "AtomicOr"; |
| 248 | case spv::OpAtomicXor: return "AtomicXor"; |
| 249 | case spv::OpPhi: return "Phi"; |
| 250 | case spv::OpLoopMerge: return "LoopMerge"; |
| 251 | case spv::OpSelectionMerge: return "SelectionMerge"; |
| 252 | case spv::OpLabel: return "Label"; |
| 253 | case spv::OpBranch: return "Branch"; |
| 254 | case spv::OpBranchConditional: return "BranchConditional"; |
| 255 | case spv::OpSwitch: return "Switch"; |
| 256 | case spv::OpKill: return "Kill"; |
| 257 | case spv::OpReturn: return "Return"; |
| 258 | case spv::OpReturnValue: return "ReturnValue"; |
| 259 | case spv::OpUnreachable: return "Unreachable"; |
| 260 | case spv::OpLifetimeStart: return "LifetimeStart"; |
| 261 | case spv::OpLifetimeStop: return "LifetimeStop"; |
| 262 | case spv::OpGroupAsyncCopy: return "GroupAsyncCopy"; |
| 263 | case spv::OpGroupWaitEvents: return "GroupWaitEvents"; |
| 264 | case spv::OpGroupAll: return "GroupAll"; |
| 265 | case spv::OpGroupAny: return "GroupAny"; |
| 266 | case spv::OpGroupBroadcast: return "GroupBroadcast"; |
| 267 | case spv::OpGroupIAdd: return "GroupIAdd"; |
| 268 | case spv::OpGroupFAdd: return "GroupFAdd"; |
| 269 | case spv::OpGroupFMin: return "GroupFMin"; |
| 270 | case spv::OpGroupUMin: return "GroupUMin"; |
| 271 | case spv::OpGroupSMin: return "GroupSMin"; |
| 272 | case spv::OpGroupFMax: return "GroupFMax"; |
| 273 | case spv::OpGroupUMax: return "GroupUMax"; |
| 274 | case spv::OpGroupSMax: return "GroupSMax"; |
| 275 | case spv::OpReadPipe: return "ReadPipe"; |
| 276 | case spv::OpWritePipe: return "WritePipe"; |
| 277 | case spv::OpReservedReadPipe: return "ReservedReadPipe"; |
| 278 | case spv::OpReservedWritePipe: return "ReservedWritePipe"; |
| 279 | case spv::OpReserveReadPipePackets: return "ReserveReadPipePackets"; |
| 280 | case spv::OpReserveWritePipePackets: return "ReserveWritePipePackets"; |
| 281 | case spv::OpCommitReadPipe: return "CommitReadPipe"; |
| 282 | case spv::OpCommitWritePipe: return "CommitWritePipe"; |
| 283 | case spv::OpIsValidReserveId: return "IsValidReserveId"; |
| 284 | case spv::OpGetNumPipePackets: return "GetNumPipePackets"; |
| 285 | case spv::OpGetMaxPipePackets: return "GetMaxPipePackets"; |
| 286 | case spv::OpGroupReserveReadPipePackets: return "GroupReserveReadPipePackets"; |
| 287 | case spv::OpGroupReserveWritePipePackets: return "GroupReserveWritePipePackets"; |
| 288 | case spv::OpGroupCommitReadPipe: return "GroupCommitReadPipe"; |
| 289 | case spv::OpGroupCommitWritePipe: return "GroupCommitWritePipe"; |
| 290 | case spv::OpEnqueueMarker: return "EnqueueMarker"; |
| 291 | case spv::OpEnqueueKernel: return "EnqueueKernel"; |
| 292 | case spv::OpGetKernelNDrangeSubGroupCount: return "GetKernelNDrangeSubGroupCount"; |
| 293 | case spv::OpGetKernelNDrangeMaxSubGroupSize: return "GetKernelNDrangeMaxSubGroupSize"; |
| 294 | case spv::OpGetKernelWorkGroupSize: return "GetKernelWorkGroupSize"; |
| 295 | case spv::OpGetKernelPreferredWorkGroupSizeMultiple: return "GetKernelPreferredWorkGroupSizeMultiple"; |
| 296 | case spv::OpRetainEvent: return "RetainEvent"; |
| 297 | case spv::OpReleaseEvent: return "ReleaseEvent"; |
| 298 | case spv::OpCreateUserEvent: return "CreateUserEvent"; |
| 299 | case spv::OpIsValidEvent: return "IsValidEvent"; |
| 300 | case spv::OpSetUserEventStatus: return "SetUserEventStatus"; |
| 301 | case spv::OpCaptureEventProfilingInfo: return "CaptureEventProfilingInfo"; |
| 302 | case spv::OpGetDefaultQueue: return "GetDefaultQueue"; |
| 303 | case spv::OpBuildNDRange: return "BuildNDRange"; |
| 304 | case spv::OpImageSparseSampleImplicitLod: return "ImageSparseSampleImplicitLod"; |
| 305 | case spv::OpImageSparseSampleExplicitLod: return "ImageSparseSampleExplicitLod"; |
| 306 | case spv::OpImageSparseSampleDrefImplicitLod: return "ImageSparseSampleDrefImplicitLod"; |
| 307 | case spv::OpImageSparseSampleDrefExplicitLod: return "ImageSparseSampleDrefExplicitLod"; |
| 308 | case spv::OpImageSparseSampleProjImplicitLod: return "ImageSparseSampleProjImplicitLod"; |
| 309 | case spv::OpImageSparseSampleProjExplicitLod: return "ImageSparseSampleProjExplicitLod"; |
| 310 | case spv::OpImageSparseSampleProjDrefImplicitLod: return "ImageSparseSampleProjDrefImplicitLod"; |
| 311 | case spv::OpImageSparseSampleProjDrefExplicitLod: return "ImageSparseSampleProjDrefExplicitLod"; |
| 312 | case spv::OpImageSparseFetch: return "ImageSparseFetch"; |
| 313 | case spv::OpImageSparseGather: return "ImageSparseGather"; |
| 314 | case spv::OpImageSparseDrefGather: return "ImageSparseDrefGather"; |
| 315 | case spv::OpImageSparseTexelsResident: return "ImageSparseTexelsResident"; |
| 316 | case spv::OpNoLine: return "NoLine"; |
| 317 | case spv::OpAtomicFlagTestAndSet: return "AtomicFlagTestAndSet"; |
| 318 | case spv::OpAtomicFlagClear: return "AtomicFlagClear"; |
| 319 | case spv::OpImageSparseRead: return "ImageSparseRead"; |
| 320 | case spv::OpSizeOf: return "SizeOf"; |
| 321 | case spv::OpTypePipeStorage: return "TypePipeStorage"; |
| 322 | case spv::OpConstantPipeStorage: return "ConstantPipeStorage"; |
| 323 | case spv::OpCreatePipeFromPipeStorage: return "CreatePipeFromPipeStorage"; |
| 324 | case spv::OpGetKernelLocalSizeForSubgroupCount: return "GetKernelLocalSizeForSubgroupCount"; |
| 325 | case spv::OpGetKernelMaxNumSubgroups: return "GetKernelMaxNumSubgroups"; |
| 326 | case spv::OpTypeNamedBarrier: return "TypeNamedBarrier"; |
| 327 | case spv::OpNamedBarrierInitialize: return "NamedBarrierInitialize"; |
| 328 | case spv::OpMemoryNamedBarrier: return "MemoryNamedBarrier"; |
| 329 | case spv::OpModuleProcessed: return "ModuleProcessed"; |
| 330 | case spv::OpExecutionModeId: return "ExecutionModeId"; |
| 331 | case spv::OpDecorateId: return "DecorateId"; |
| 332 | case spv::OpGroupNonUniformElect: return "GroupNonUniformElect"; |
| 333 | case spv::OpGroupNonUniformAll: return "GroupNonUniformAll"; |
| 334 | case spv::OpGroupNonUniformAny: return "GroupNonUniformAny"; |
| 335 | case spv::OpGroupNonUniformAllEqual: return "GroupNonUniformAllEqual"; |
| 336 | case spv::OpGroupNonUniformBroadcast: return "GroupNonUniformBroadcast"; |
| 337 | case spv::OpGroupNonUniformBroadcastFirst: return "GroupNonUniformBroadcastFirst"; |
| 338 | case spv::OpGroupNonUniformBallot: return "GroupNonUniformBallot"; |
| 339 | case spv::OpGroupNonUniformInverseBallot: return "GroupNonUniformInverseBallot"; |
| 340 | case spv::OpGroupNonUniformBallotBitExtract: return "GroupNonUniformBallotBitExtract"; |
| 341 | case spv::OpGroupNonUniformBallotBitCount: return "GroupNonUniformBallotBitCount"; |
| 342 | case spv::OpGroupNonUniformBallotFindLSB: return "GroupNonUniformBallotFindLSB"; |
| 343 | case spv::OpGroupNonUniformBallotFindMSB: return "GroupNonUniformBallotFindMSB"; |
| 344 | case spv::OpGroupNonUniformShuffle: return "GroupNonUniformShuffle"; |
| 345 | case spv::OpGroupNonUniformShuffleXor: return "GroupNonUniformShuffleXor"; |
| 346 | case spv::OpGroupNonUniformShuffleUp: return "GroupNonUniformShuffleUp"; |
| 347 | case spv::OpGroupNonUniformShuffleDown: return "GroupNonUniformShuffleDown"; |
| 348 | case spv::OpGroupNonUniformIAdd: return "GroupNonUniformIAdd"; |
| 349 | case spv::OpGroupNonUniformFAdd: return "GroupNonUniformFAdd"; |
| 350 | case spv::OpGroupNonUniformIMul: return "GroupNonUniformIMul"; |
| 351 | case spv::OpGroupNonUniformFMul: return "GroupNonUniformFMul"; |
| 352 | case spv::OpGroupNonUniformSMin: return "GroupNonUniformSMin"; |
| 353 | case spv::OpGroupNonUniformUMin: return "GroupNonUniformUMin"; |
| 354 | case spv::OpGroupNonUniformFMin: return "GroupNonUniformFMin"; |
| 355 | case spv::OpGroupNonUniformSMax: return "GroupNonUniformSMax"; |
| 356 | case spv::OpGroupNonUniformUMax: return "GroupNonUniformUMax"; |
| 357 | case spv::OpGroupNonUniformFMax: return "GroupNonUniformFMax"; |
| 358 | case spv::OpGroupNonUniformBitwiseAnd: return "GroupNonUniformBitwiseAnd"; |
| 359 | case spv::OpGroupNonUniformBitwiseOr: return "GroupNonUniformBitwiseOr"; |
| 360 | case spv::OpGroupNonUniformBitwiseXor: return "GroupNonUniformBitwiseXor"; |
| 361 | case spv::OpGroupNonUniformLogicalAnd: return "GroupNonUniformLogicalAnd"; |
| 362 | case spv::OpGroupNonUniformLogicalOr: return "GroupNonUniformLogicalOr"; |
| 363 | case spv::OpGroupNonUniformLogicalXor: return "GroupNonUniformLogicalXor"; |
| 364 | case spv::OpGroupNonUniformQuadBroadcast: return "GroupNonUniformQuadBroadcast"; |
| 365 | case spv::OpGroupNonUniformQuadSwap: return "GroupNonUniformQuadSwap"; |
| 366 | case spv::OpSubgroupBallotKHR: return "SubgroupBallotKHR"; |
| 367 | case spv::OpSubgroupFirstInvocationKHR: return "SubgroupFirstInvocationKHR"; |
| 368 | case spv::OpSubgroupAllKHR: return "SubgroupAllKHR"; |
| 369 | case spv::OpSubgroupAnyKHR: return "SubgroupAnyKHR"; |
| 370 | case spv::OpSubgroupAllEqualKHR: return "SubgroupAllEqualKHR"; |
| 371 | case spv::OpSubgroupReadInvocationKHR: return "SubgroupReadInvocationKHR"; |
| 372 | case spv::OpGroupIAddNonUniformAMD: return "GroupIAddNonUniformAMD"; |
| 373 | case spv::OpGroupFAddNonUniformAMD: return "GroupFAddNonUniformAMD"; |
| 374 | case spv::OpGroupFMinNonUniformAMD: return "GroupFMinNonUniformAMD"; |
| 375 | case spv::OpGroupUMinNonUniformAMD: return "GroupUMinNonUniformAMD"; |
| 376 | case spv::OpGroupSMinNonUniformAMD: return "GroupSMinNonUniformAMD"; |
| 377 | case spv::OpGroupFMaxNonUniformAMD: return "GroupFMaxNonUniformAMD"; |
| 378 | case spv::OpGroupUMaxNonUniformAMD: return "GroupUMaxNonUniformAMD"; |
| 379 | case spv::OpGroupSMaxNonUniformAMD: return "GroupSMaxNonUniformAMD"; |
| 380 | case spv::OpFragmentMaskFetchAMD: return "FragmentMaskFetchAMD"; |
| 381 | case spv::OpFragmentFetchAMD: return "FragmentFetchAMD"; |
| 382 | case spv::OpImageSampleFootprintNV: return "ImageSampleFootprintNV"; |
| 383 | case spv::OpGroupNonUniformPartitionNV: return "GroupNonUniformPartitionNV"; |
| 384 | case spv::OpWritePackedPrimitiveIndices4x8NV: return "WritePackedPrimitiveIndices4x8NV"; |
| 385 | case spv::OpReportIntersectionNV: return "ReportIntersectionNV"; |
| 386 | case spv::OpIgnoreIntersectionNV: return "IgnoreIntersectionNV"; |
| 387 | case spv::OpTerminateRayNV: return "TerminateRayNV"; |
| 388 | case spv::OpTraceNV: return "TraceNV"; |
| 389 | case spv::OpTypeAccelerationStructureNV: return "TypeAccelerationStructureNV"; |
| 390 | case spv::OpExecuteCallableNV: return "ExecuteCallableNV"; |
| 391 | case spv::OpSubgroupShuffleINTEL: return "SubgroupShuffleINTEL"; |
| 392 | case spv::OpSubgroupShuffleDownINTEL: return "SubgroupShuffleDownINTEL"; |
| 393 | case spv::OpSubgroupShuffleUpINTEL: return "SubgroupShuffleUpINTEL"; |
| 394 | case spv::OpSubgroupShuffleXorINTEL: return "SubgroupShuffleXorINTEL"; |
| 395 | case spv::OpSubgroupBlockReadINTEL: return "SubgroupBlockReadINTEL"; |
| 396 | case spv::OpSubgroupBlockWriteINTEL: return "SubgroupBlockWriteINTEL"; |
| 397 | case spv::OpSubgroupImageBlockReadINTEL: return "SubgroupImageBlockReadINTEL"; |
| 398 | case spv::OpSubgroupImageBlockWriteINTEL: return "SubgroupImageBlockWriteINTEL"; |
| 399 | case spv::OpDecorateStringGOOGLE: return "DecorateStringGOOGLE"; |
| 400 | case spv::OpMemberDecorateStringGOOGLE: return "MemberDecorateStringGOOGLE"; |
| 401 | case spv::OpMax: return "Max"; |
Ben Clayton | d4e4c66 | 2019-02-26 11:54:34 +0000 | [diff] [blame] | 402 | default: |
Alexis Hetu | 5078d48 | 2019-04-10 15:00:25 -0400 | [diff] [blame] | 403 | break; |
Ben Clayton | d4e4c66 | 2019-02-26 11:54:34 +0000 | [diff] [blame] | 404 | } |
Alexis Hetu | 5078d48 | 2019-04-10 15:00:25 -0400 | [diff] [blame] | 405 | #endif // NDEBUG |
| 406 | |
| 407 | return "Opcode<" + std::to_string(static_cast<int>(op)) + ">"; |
Ben Clayton | d4e4c66 | 2019-02-26 11:54:34 +0000 | [diff] [blame] | 408 | } |
| 409 | |
| 410 | } // namespace sw |