1// 2// Copyright (C) 2014-2015 LunarG, Inc. 3// Modifications Copyright (C) 2020 Advanced Micro Devices, Inc. All rights reserved. 4// 5// All rights reserved. 6// 7// Redistribution and use in source and binary forms, with or without 8// modification, are permitted provided that the following conditions 9// are met: 10// 11// Redistributions of source code must retain the above copyright 12// notice, this list of conditions and the following disclaimer. 13// 14// Redistributions in binary form must reproduce the above 15// copyright notice, this list of conditions and the following 16// disclaimer in the documentation and/or other materials provided 17// with the distribution. 18// 19// Neither the name of 3Dlabs Inc. Ltd. nor the names of its 20// contributors may be used to endorse or promote products derived 21// from this software without specific prior written permission. 22// 23// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 24// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 25// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 26// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 27// COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 28// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 29// BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 30// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 31// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 32// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN 33// ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 34// POSSIBILITY OF SUCH DAMAGE. 35 36// 37// 1) Programmatically fill in instruction/operand information. 38// This can be used for disassembly, printing documentation, etc. 39// 40// 2) Print documentation from this parameterization. 41// 42 43#include "doc.h" 44 45#include <cstdio> 46#include <cstring> 47#include <algorithm> 48#include <mutex> 49 50namespace spv { 51 extern "C" { 52 // Include C-based headers that don't have a namespace 53 #include "GLSL.ext.KHR.h" 54 #include "GLSL.ext.EXT.h" 55 #include "GLSL.ext.AMD.h" 56 #include "GLSL.ext.NV.h" 57 #include "GLSL.ext.ARM.h" 58 #include "GLSL.ext.QCOM.h" 59 } 60} 61 62namespace spv { 63 64// 65// Whole set of functions that translate enumerants to their text strings for 66// the specification (or their sanitized versions for auto-generating the 67// spirv headers. 68// 69// Also, for masks the ceilings are declared next to these, to help keep them in sync. 70// Ceilings should be 71// - one more than the maximum value an enumerant takes on, for non-mask enumerants 72// (for non-sparse enums, this is the number of enumerants) 73// - the number of bits consumed by the set of masks 74// (for non-sparse mask enums, this is the number of enumerants) 75// 76 77const char* SourceString(int source) 78{ 79 switch (source) { 80 case 0: return "Unknown"; 81 case 1: return "ESSL"; 82 case 2: return "GLSL"; 83 case 3: return "OpenCL_C"; 84 case 4: return "OpenCL_CPP"; 85 case 5: return "HLSL"; 86 87 default: return "Bad"; 88 } 89} 90 91const char* ExecutionModelString(int model) 92{ 93 switch (model) { 94 case 0: return "Vertex"; 95 case 1: return "TessellationControl"; 96 case 2: return "TessellationEvaluation"; 97 case 3: return "Geometry"; 98 case 4: return "Fragment"; 99 case 5: return "GLCompute"; 100 case 6: return "Kernel"; 101 case ExecutionModelTaskNV: return "TaskNV"; 102 case ExecutionModelMeshNV: return "MeshNV"; 103 case ExecutionModelTaskEXT: return "TaskEXT"; 104 case ExecutionModelMeshEXT: return "MeshEXT"; 105 106 default: return "Bad"; 107 108 case ExecutionModelRayGenerationKHR: return "RayGenerationKHR"; 109 case ExecutionModelIntersectionKHR: return "IntersectionKHR"; 110 case ExecutionModelAnyHitKHR: return "AnyHitKHR"; 111 case ExecutionModelClosestHitKHR: return "ClosestHitKHR"; 112 case ExecutionModelMissKHR: return "MissKHR"; 113 case ExecutionModelCallableKHR: return "CallableKHR"; 114 } 115} 116 117const char* AddressingString(int addr) 118{ 119 switch (addr) { 120 case 0: return "Logical"; 121 case 1: return "Physical32"; 122 case 2: return "Physical64"; 123 124 case AddressingModelPhysicalStorageBuffer64EXT: return "PhysicalStorageBuffer64EXT"; 125 126 default: return "Bad"; 127 } 128} 129 130const char* MemoryString(int mem) 131{ 132 switch (mem) { 133 case MemoryModelSimple: return "Simple"; 134 case MemoryModelGLSL450: return "GLSL450"; 135 case MemoryModelOpenCL: return "OpenCL"; 136 case MemoryModelVulkanKHR: return "VulkanKHR"; 137 138 default: return "Bad"; 139 } 140} 141 142const int ExecutionModeCeiling = 40; 143 144const char* ExecutionModeString(int mode) 145{ 146 switch (mode) { 147 case 0: return "Invocations"; 148 case 1: return "SpacingEqual"; 149 case 2: return "SpacingFractionalEven"; 150 case 3: return "SpacingFractionalOdd"; 151 case 4: return "VertexOrderCw"; 152 case 5: return "VertexOrderCcw"; 153 case 6: return "PixelCenterInteger"; 154 case 7: return "OriginUpperLeft"; 155 case 8: return "OriginLowerLeft"; 156 case 9: return "EarlyFragmentTests"; 157 case 10: return "PointMode"; 158 case 11: return "Xfb"; 159 case 12: return "DepthReplacing"; 160 case 13: return "Bad"; 161 case 14: return "DepthGreater"; 162 case 15: return "DepthLess"; 163 case 16: return "DepthUnchanged"; 164 case 17: return "LocalSize"; 165 case 18: return "LocalSizeHint"; 166 case 19: return "InputPoints"; 167 case 20: return "InputLines"; 168 case 21: return "InputLinesAdjacency"; 169 case 22: return "Triangles"; 170 case 23: return "InputTrianglesAdjacency"; 171 case 24: return "Quads"; 172 case 25: return "Isolines"; 173 case 26: return "OutputVertices"; 174 case 27: return "OutputPoints"; 175 case 28: return "OutputLineStrip"; 176 case 29: return "OutputTriangleStrip"; 177 case 30: return "VecTypeHint"; 178 case 31: return "ContractionOff"; 179 case 32: return "Bad"; 180 181 case ExecutionModeInitializer: return "Initializer"; 182 case ExecutionModeFinalizer: return "Finalizer"; 183 case ExecutionModeSubgroupSize: return "SubgroupSize"; 184 case ExecutionModeSubgroupsPerWorkgroup: return "SubgroupsPerWorkgroup"; 185 case ExecutionModeSubgroupsPerWorkgroupId: return "SubgroupsPerWorkgroupId"; 186 case ExecutionModeLocalSizeId: return "LocalSizeId"; 187 case ExecutionModeLocalSizeHintId: return "LocalSizeHintId"; 188 189 case ExecutionModePostDepthCoverage: return "PostDepthCoverage"; 190 case ExecutionModeDenormPreserve: return "DenormPreserve"; 191 case ExecutionModeDenormFlushToZero: return "DenormFlushToZero"; 192 case ExecutionModeSignedZeroInfNanPreserve: return "SignedZeroInfNanPreserve"; 193 case ExecutionModeRoundingModeRTE: return "RoundingModeRTE"; 194 case ExecutionModeRoundingModeRTZ: return "RoundingModeRTZ"; 195 case ExecutionModeEarlyAndLateFragmentTestsAMD: return "EarlyAndLateFragmentTestsAMD"; 196 case ExecutionModeStencilRefUnchangedFrontAMD: return "StencilRefUnchangedFrontAMD"; 197 case ExecutionModeStencilRefLessFrontAMD: return "StencilRefLessFrontAMD"; 198 case ExecutionModeStencilRefGreaterBackAMD: return "StencilRefGreaterBackAMD"; 199 case ExecutionModeStencilRefReplacingEXT: return "StencilRefReplacingEXT"; 200 case ExecutionModeSubgroupUniformControlFlowKHR: return "SubgroupUniformControlFlow"; 201 202 case ExecutionModeOutputLinesNV: return "OutputLinesNV"; 203 case ExecutionModeOutputPrimitivesNV: return "OutputPrimitivesNV"; 204 case ExecutionModeOutputTrianglesNV: return "OutputTrianglesNV"; 205 case ExecutionModeDerivativeGroupQuadsNV: return "DerivativeGroupQuadsNV"; 206 case ExecutionModeDerivativeGroupLinearNV: return "DerivativeGroupLinearNV"; 207 208 case ExecutionModePixelInterlockOrderedEXT: return "PixelInterlockOrderedEXT"; 209 case ExecutionModePixelInterlockUnorderedEXT: return "PixelInterlockUnorderedEXT"; 210 case ExecutionModeSampleInterlockOrderedEXT: return "SampleInterlockOrderedEXT"; 211 case ExecutionModeSampleInterlockUnorderedEXT: return "SampleInterlockUnorderedEXT"; 212 case ExecutionModeShadingRateInterlockOrderedEXT: return "ShadingRateInterlockOrderedEXT"; 213 case ExecutionModeShadingRateInterlockUnorderedEXT: return "ShadingRateInterlockUnorderedEXT"; 214 215 case ExecutionModeMaxWorkgroupSizeINTEL: return "MaxWorkgroupSizeINTEL"; 216 case ExecutionModeMaxWorkDimINTEL: return "MaxWorkDimINTEL"; 217 case ExecutionModeNoGlobalOffsetINTEL: return "NoGlobalOffsetINTEL"; 218 case ExecutionModeNumSIMDWorkitemsINTEL: return "NumSIMDWorkitemsINTEL"; 219 220 case ExecutionModeNonCoherentColorAttachmentReadEXT: return "NonCoherentColorAttachmentReadEXT"; 221 case ExecutionModeNonCoherentDepthAttachmentReadEXT: return "NonCoherentDepthAttachmentReadEXT"; 222 case ExecutionModeNonCoherentStencilAttachmentReadEXT: return "NonCoherentStencilAttachmentReadEXT"; 223 224 case ExecutionModeCeiling: 225 default: return "Bad"; 226 } 227} 228 229const char* StorageClassString(int StorageClass) 230{ 231 switch (StorageClass) { 232 case 0: return "UniformConstant"; 233 case 1: return "Input"; 234 case 2: return "Uniform"; 235 case 3: return "Output"; 236 case 4: return "Workgroup"; 237 case 5: return "CrossWorkgroup"; 238 case 6: return "Private"; 239 case 7: return "Function"; 240 case 8: return "Generic"; 241 case 9: return "PushConstant"; 242 case 10: return "AtomicCounter"; 243 case 11: return "Image"; 244 case 12: return "StorageBuffer"; 245 246 case StorageClassRayPayloadKHR: return "RayPayloadKHR"; 247 case StorageClassHitAttributeKHR: return "HitAttributeKHR"; 248 case StorageClassIncomingRayPayloadKHR: return "IncomingRayPayloadKHR"; 249 case StorageClassShaderRecordBufferKHR: return "ShaderRecordBufferKHR"; 250 case StorageClassCallableDataKHR: return "CallableDataKHR"; 251 case StorageClassIncomingCallableDataKHR: return "IncomingCallableDataKHR"; 252 253 case StorageClassPhysicalStorageBufferEXT: return "PhysicalStorageBufferEXT"; 254 case StorageClassTaskPayloadWorkgroupEXT: return "TaskPayloadWorkgroupEXT"; 255 case StorageClassHitObjectAttributeNV: return "HitObjectAttributeNV"; 256 case StorageClassTileImageEXT: return "TileImageEXT"; 257 default: return "Bad"; 258 } 259} 260 261const int DecorationCeiling = 45; 262 263const char* DecorationString(int decoration) 264{ 265 switch (decoration) { 266 case 0: return "RelaxedPrecision"; 267 case 1: return "SpecId"; 268 case 2: return "Block"; 269 case 3: return "BufferBlock"; 270 case 4: return "RowMajor"; 271 case 5: return "ColMajor"; 272 case 6: return "ArrayStride"; 273 case 7: return "MatrixStride"; 274 case 8: return "GLSLShared"; 275 case 9: return "GLSLPacked"; 276 case 10: return "CPacked"; 277 case 11: return "BuiltIn"; 278 case 12: return "Bad"; 279 case 13: return "NoPerspective"; 280 case 14: return "Flat"; 281 case 15: return "Patch"; 282 case 16: return "Centroid"; 283 case 17: return "Sample"; 284 case 18: return "Invariant"; 285 case 19: return "Restrict"; 286 case 20: return "Aliased"; 287 case 21: return "Volatile"; 288 case 22: return "Constant"; 289 case 23: return "Coherent"; 290 case 24: return "NonWritable"; 291 case 25: return "NonReadable"; 292 case 26: return "Uniform"; 293 case 27: return "Bad"; 294 case 28: return "SaturatedConversion"; 295 case 29: return "Stream"; 296 case 30: return "Location"; 297 case 31: return "Component"; 298 case 32: return "Index"; 299 case 33: return "Binding"; 300 case 34: return "DescriptorSet"; 301 case 35: return "Offset"; 302 case 36: return "XfbBuffer"; 303 case 37: return "XfbStride"; 304 case 38: return "FuncParamAttr"; 305 case 39: return "FP Rounding Mode"; 306 case 40: return "FP Fast Math Mode"; 307 case 41: return "Linkage Attributes"; 308 case 42: return "NoContraction"; 309 case 43: return "InputAttachmentIndex"; 310 case 44: return "Alignment"; 311 312 case DecorationCeiling: 313 default: return "Bad"; 314 315 case DecorationWeightTextureQCOM: return "DecorationWeightTextureQCOM"; 316 case DecorationBlockMatchTextureQCOM: return "DecorationBlockMatchTextureQCOM"; 317 case DecorationExplicitInterpAMD: return "ExplicitInterpAMD"; 318 case DecorationOverrideCoverageNV: return "OverrideCoverageNV"; 319 case DecorationPassthroughNV: return "PassthroughNV"; 320 case DecorationViewportRelativeNV: return "ViewportRelativeNV"; 321 case DecorationSecondaryViewportRelativeNV: return "SecondaryViewportRelativeNV"; 322 case DecorationPerPrimitiveNV: return "PerPrimitiveNV"; 323 case DecorationPerViewNV: return "PerViewNV"; 324 case DecorationPerTaskNV: return "PerTaskNV"; 325 326 case DecorationPerVertexKHR: return "PerVertexKHR"; 327 328 case DecorationNonUniformEXT: return "DecorationNonUniformEXT"; 329 case DecorationHlslCounterBufferGOOGLE: return "DecorationHlslCounterBufferGOOGLE"; 330 case DecorationHlslSemanticGOOGLE: return "DecorationHlslSemanticGOOGLE"; 331 case DecorationRestrictPointerEXT: return "DecorationRestrictPointerEXT"; 332 case DecorationAliasedPointerEXT: return "DecorationAliasedPointerEXT"; 333 334 case DecorationHitObjectShaderRecordBufferNV: return "DecorationHitObjectShaderRecordBufferNV"; 335 } 336} 337 338const char* BuiltInString(int builtIn) 339{ 340 switch (builtIn) { 341 case 0: return "Position"; 342 case 1: return "PointSize"; 343 case 2: return "Bad"; 344 case 3: return "ClipDistance"; 345 case 4: return "CullDistance"; 346 case 5: return "VertexId"; 347 case 6: return "InstanceId"; 348 case 7: return "PrimitiveId"; 349 case 8: return "InvocationId"; 350 case 9: return "Layer"; 351 case 10: return "ViewportIndex"; 352 case 11: return "TessLevelOuter"; 353 case 12: return "TessLevelInner"; 354 case 13: return "TessCoord"; 355 case 14: return "PatchVertices"; 356 case 15: return "FragCoord"; 357 case 16: return "PointCoord"; 358 case 17: return "FrontFacing"; 359 case 18: return "SampleId"; 360 case 19: return "SamplePosition"; 361 case 20: return "SampleMask"; 362 case 21: return "Bad"; 363 case 22: return "FragDepth"; 364 case 23: return "HelperInvocation"; 365 case 24: return "NumWorkgroups"; 366 case 25: return "WorkgroupSize"; 367 case 26: return "WorkgroupId"; 368 case 27: return "LocalInvocationId"; 369 case 28: return "GlobalInvocationId"; 370 case 29: return "LocalInvocationIndex"; 371 case 30: return "WorkDim"; 372 case 31: return "GlobalSize"; 373 case 32: return "EnqueuedWorkgroupSize"; 374 case 33: return "GlobalOffset"; 375 case 34: return "GlobalLinearId"; 376 case 35: return "Bad"; 377 case 36: return "SubgroupSize"; 378 case 37: return "SubgroupMaxSize"; 379 case 38: return "NumSubgroups"; 380 case 39: return "NumEnqueuedSubgroups"; 381 case 40: return "SubgroupId"; 382 case 41: return "SubgroupLocalInvocationId"; 383 case 42: return "VertexIndex"; // TBD: put next to VertexId? 384 case 43: return "InstanceIndex"; // TBD: put next to InstanceId? 385 386 case 4416: return "SubgroupEqMaskKHR"; 387 case 4417: return "SubgroupGeMaskKHR"; 388 case 4418: return "SubgroupGtMaskKHR"; 389 case 4419: return "SubgroupLeMaskKHR"; 390 case 4420: return "SubgroupLtMaskKHR"; 391 case 4438: return "DeviceIndex"; 392 case 4440: return "ViewIndex"; 393 case 4424: return "BaseVertex"; 394 case 4425: return "BaseInstance"; 395 case 4426: return "DrawIndex"; 396 case 4432: return "PrimitiveShadingRateKHR"; 397 case 4444: return "ShadingRateKHR"; 398 case 5014: return "FragStencilRefEXT"; 399 400 case 4992: return "BaryCoordNoPerspAMD"; 401 case 4993: return "BaryCoordNoPerspCentroidAMD"; 402 case 4994: return "BaryCoordNoPerspSampleAMD"; 403 case 4995: return "BaryCoordSmoothAMD"; 404 case 4996: return "BaryCoordSmoothCentroidAMD"; 405 case 4997: return "BaryCoordSmoothSampleAMD"; 406 case 4998: return "BaryCoordPullModelAMD"; 407 case BuiltInLaunchIdKHR: return "LaunchIdKHR"; 408 case BuiltInLaunchSizeKHR: return "LaunchSizeKHR"; 409 case BuiltInWorldRayOriginKHR: return "WorldRayOriginKHR"; 410 case BuiltInWorldRayDirectionKHR: return "WorldRayDirectionKHR"; 411 case BuiltInObjectRayOriginKHR: return "ObjectRayOriginKHR"; 412 case BuiltInObjectRayDirectionKHR: return "ObjectRayDirectionKHR"; 413 case BuiltInRayTminKHR: return "RayTminKHR"; 414 case BuiltInRayTmaxKHR: return "RayTmaxKHR"; 415 case BuiltInCullMaskKHR: return "CullMaskKHR"; 416 case BuiltInHitTriangleVertexPositionsKHR: return "HitTriangleVertexPositionsKHR"; 417 case BuiltInHitMicroTriangleVertexPositionsNV: return "HitMicroTriangleVertexPositionsNV"; 418 case BuiltInHitMicroTriangleVertexBarycentricsNV: return "HitMicroTriangleVertexBarycentricsNV"; 419 case BuiltInHitKindFrontFacingMicroTriangleNV: return "HitKindFrontFacingMicroTriangleNV"; 420 case BuiltInHitKindBackFacingMicroTriangleNV: return "HitKindBackFacingMicroTriangleNV"; 421 case BuiltInInstanceCustomIndexKHR: return "InstanceCustomIndexKHR"; 422 case BuiltInRayGeometryIndexKHR: return "RayGeometryIndexKHR"; 423 case BuiltInObjectToWorldKHR: return "ObjectToWorldKHR"; 424 case BuiltInWorldToObjectKHR: return "WorldToObjectKHR"; 425 case BuiltInHitTNV: return "HitTNV"; 426 case BuiltInHitKindKHR: return "HitKindKHR"; 427 case BuiltInIncomingRayFlagsKHR: return "IncomingRayFlagsKHR"; 428 case BuiltInViewportMaskNV: return "ViewportMaskNV"; 429 case BuiltInSecondaryPositionNV: return "SecondaryPositionNV"; 430 case BuiltInSecondaryViewportMaskNV: return "SecondaryViewportMaskNV"; 431 case BuiltInPositionPerViewNV: return "PositionPerViewNV"; 432 case BuiltInViewportMaskPerViewNV: return "ViewportMaskPerViewNV"; 433// case BuiltInFragmentSizeNV: return "FragmentSizeNV"; // superseded by BuiltInFragSizeEXT 434// case BuiltInInvocationsPerPixelNV: return "InvocationsPerPixelNV"; // superseded by BuiltInFragInvocationCountEXT 435 case BuiltInBaryCoordKHR: return "BaryCoordKHR"; 436 case BuiltInBaryCoordNoPerspKHR: return "BaryCoordNoPerspKHR"; 437 438 case BuiltInFragSizeEXT: return "FragSizeEXT"; 439 case BuiltInFragInvocationCountEXT: return "FragInvocationCountEXT"; 440 441 case 5264: return "FullyCoveredEXT"; 442 443 case BuiltInTaskCountNV: return "TaskCountNV"; 444 case BuiltInPrimitiveCountNV: return "PrimitiveCountNV"; 445 case BuiltInPrimitiveIndicesNV: return "PrimitiveIndicesNV"; 446 case BuiltInClipDistancePerViewNV: return "ClipDistancePerViewNV"; 447 case BuiltInCullDistancePerViewNV: return "CullDistancePerViewNV"; 448 case BuiltInLayerPerViewNV: return "LayerPerViewNV"; 449 case BuiltInMeshViewCountNV: return "MeshViewCountNV"; 450 case BuiltInMeshViewIndicesNV: return "MeshViewIndicesNV"; 451 case BuiltInWarpsPerSMNV: return "WarpsPerSMNV"; 452 case BuiltInSMCountNV: return "SMCountNV"; 453 case BuiltInWarpIDNV: return "WarpIDNV"; 454 case BuiltInSMIDNV: return "SMIDNV"; 455 case BuiltInCurrentRayTimeNV: return "CurrentRayTimeNV"; 456 case BuiltInPrimitivePointIndicesEXT: return "PrimitivePointIndicesEXT"; 457 case BuiltInPrimitiveLineIndicesEXT: return "PrimitiveLineIndicesEXT"; 458 case BuiltInPrimitiveTriangleIndicesEXT: return "PrimitiveTriangleIndicesEXT"; 459 case BuiltInCullPrimitiveEXT: return "CullPrimitiveEXT"; 460 case BuiltInCoreCountARM: return "CoreCountARM"; 461 case BuiltInCoreIDARM: return "CoreIDARM"; 462 case BuiltInCoreMaxIDARM: return "CoreMaxIDARM"; 463 case BuiltInWarpIDARM: return "WarpIDARM"; 464 case BuiltInWarpMaxIDARM: return "BuiltInWarpMaxIDARM"; 465 466 default: return "Bad"; 467 } 468} 469 470const char* DimensionString(int dim) 471{ 472 switch (dim) { 473 case 0: return "1D"; 474 case 1: return "2D"; 475 case 2: return "3D"; 476 case 3: return "Cube"; 477 case 4: return "Rect"; 478 case 5: return "Buffer"; 479 case 6: return "SubpassData"; 480 case DimTileImageDataEXT: return "TileImageDataEXT"; 481 482 default: return "Bad"; 483 } 484} 485 486const char* SamplerAddressingModeString(int mode) 487{ 488 switch (mode) { 489 case 0: return "None"; 490 case 1: return "ClampToEdge"; 491 case 2: return "Clamp"; 492 case 3: return "Repeat"; 493 case 4: return "RepeatMirrored"; 494 495 default: return "Bad"; 496 } 497} 498 499const char* SamplerFilterModeString(int mode) 500{ 501 switch (mode) { 502 case 0: return "Nearest"; 503 case 1: return "Linear"; 504 505 default: return "Bad"; 506 } 507} 508 509const char* ImageFormatString(int format) 510{ 511 switch (format) { 512 case 0: return "Unknown"; 513 514 // ES/Desktop float 515 case 1: return "Rgba32f"; 516 case 2: return "Rgba16f"; 517 case 3: return "R32f"; 518 case 4: return "Rgba8"; 519 case 5: return "Rgba8Snorm"; 520 521 // Desktop float 522 case 6: return "Rg32f"; 523 case 7: return "Rg16f"; 524 case 8: return "R11fG11fB10f"; 525 case 9: return "R16f"; 526 case 10: return "Rgba16"; 527 case 11: return "Rgb10A2"; 528 case 12: return "Rg16"; 529 case 13: return "Rg8"; 530 case 14: return "R16"; 531 case 15: return "R8"; 532 case 16: return "Rgba16Snorm"; 533 case 17: return "Rg16Snorm"; 534 case 18: return "Rg8Snorm"; 535 case 19: return "R16Snorm"; 536 case 20: return "R8Snorm"; 537 538 // ES/Desktop int 539 case 21: return "Rgba32i"; 540 case 22: return "Rgba16i"; 541 case 23: return "Rgba8i"; 542 case 24: return "R32i"; 543 544 // Desktop int 545 case 25: return "Rg32i"; 546 case 26: return "Rg16i"; 547 case 27: return "Rg8i"; 548 case 28: return "R16i"; 549 case 29: return "R8i"; 550 551 // ES/Desktop uint 552 case 30: return "Rgba32ui"; 553 case 31: return "Rgba16ui"; 554 case 32: return "Rgba8ui"; 555 case 33: return "R32ui"; 556 557 // Desktop uint 558 case 34: return "Rgb10a2ui"; 559 case 35: return "Rg32ui"; 560 case 36: return "Rg16ui"; 561 case 37: return "Rg8ui"; 562 case 38: return "R16ui"; 563 case 39: return "R8ui"; 564 case 40: return "R64ui"; 565 case 41: return "R64i"; 566 567 default: 568 return "Bad"; 569 } 570} 571 572const char* ImageChannelOrderString(int format) 573{ 574 switch (format) { 575 case 0: return "R"; 576 case 1: return "A"; 577 case 2: return "RG"; 578 case 3: return "RA"; 579 case 4: return "RGB"; 580 case 5: return "RGBA"; 581 case 6: return "BGRA"; 582 case 7: return "ARGB"; 583 case 8: return "Intensity"; 584 case 9: return "Luminance"; 585 case 10: return "Rx"; 586 case 11: return "RGx"; 587 case 12: return "RGBx"; 588 case 13: return "Depth"; 589 case 14: return "DepthStencil"; 590 case 15: return "sRGB"; 591 case 16: return "sRGBx"; 592 case 17: return "sRGBA"; 593 case 18: return "sBGRA"; 594 595 default: 596 return "Bad"; 597 } 598} 599 600const char* ImageChannelDataTypeString(int type) 601{ 602 switch (type) 603 { 604 case 0: return "SnormInt8"; 605 case 1: return "SnormInt16"; 606 case 2: return "UnormInt8"; 607 case 3: return "UnormInt16"; 608 case 4: return "UnormShort565"; 609 case 5: return "UnormShort555"; 610 case 6: return "UnormInt101010"; 611 case 7: return "SignedInt8"; 612 case 8: return "SignedInt16"; 613 case 9: return "SignedInt32"; 614 case 10: return "UnsignedInt8"; 615 case 11: return "UnsignedInt16"; 616 case 12: return "UnsignedInt32"; 617 case 13: return "HalfFloat"; 618 case 14: return "Float"; 619 case 15: return "UnormInt24"; 620 case 16: return "UnormInt101010_2"; 621 622 default: 623 return "Bad"; 624 } 625} 626 627const int ImageOperandsCeiling = 14; 628 629const char* ImageOperandsString(int format) 630{ 631 switch (format) { 632 case ImageOperandsBiasShift: return "Bias"; 633 case ImageOperandsLodShift: return "Lod"; 634 case ImageOperandsGradShift: return "Grad"; 635 case ImageOperandsConstOffsetShift: return "ConstOffset"; 636 case ImageOperandsOffsetShift: return "Offset"; 637 case ImageOperandsConstOffsetsShift: return "ConstOffsets"; 638 case ImageOperandsSampleShift: return "Sample"; 639 case ImageOperandsMinLodShift: return "MinLod"; 640 case ImageOperandsMakeTexelAvailableKHRShift: return "MakeTexelAvailableKHR"; 641 case ImageOperandsMakeTexelVisibleKHRShift: return "MakeTexelVisibleKHR"; 642 case ImageOperandsNonPrivateTexelKHRShift: return "NonPrivateTexelKHR"; 643 case ImageOperandsVolatileTexelKHRShift: return "VolatileTexelKHR"; 644 case ImageOperandsSignExtendShift: return "SignExtend"; 645 case ImageOperandsZeroExtendShift: return "ZeroExtend"; 646 647 case ImageOperandsCeiling: 648 default: 649 return "Bad"; 650 } 651} 652 653const char* FPFastMathString(int mode) 654{ 655 switch (mode) { 656 case 0: return "NotNaN"; 657 case 1: return "NotInf"; 658 case 2: return "NSZ"; 659 case 3: return "AllowRecip"; 660 case 4: return "Fast"; 661 662 default: return "Bad"; 663 } 664} 665 666const char* FPRoundingModeString(int mode) 667{ 668 switch (mode) { 669 case 0: return "RTE"; 670 case 1: return "RTZ"; 671 case 2: return "RTP"; 672 case 3: return "RTN"; 673 674 default: return "Bad"; 675 } 676} 677 678const char* LinkageTypeString(int type) 679{ 680 switch (type) { 681 case 0: return "Export"; 682 case 1: return "Import"; 683 684 default: return "Bad"; 685 } 686} 687 688const char* FuncParamAttrString(int attr) 689{ 690 switch (attr) { 691 case 0: return "Zext"; 692 case 1: return "Sext"; 693 case 2: return "ByVal"; 694 case 3: return "Sret"; 695 case 4: return "NoAlias"; 696 case 5: return "NoCapture"; 697 case 6: return "NoWrite"; 698 case 7: return "NoReadWrite"; 699 700 default: return "Bad"; 701 } 702} 703 704const char* AccessQualifierString(int attr) 705{ 706 switch (attr) { 707 case 0: return "ReadOnly"; 708 case 1: return "WriteOnly"; 709 case 2: return "ReadWrite"; 710 711 default: return "Bad"; 712 } 713} 714 715const int SelectControlCeiling = 2; 716 717const char* SelectControlString(int cont) 718{ 719 switch (cont) { 720 case 0: return "Flatten"; 721 case 1: return "DontFlatten"; 722 723 case SelectControlCeiling: 724 default: return "Bad"; 725 } 726} 727 728const int LoopControlCeiling = LoopControlPartialCountShift + 1; 729 730const char* LoopControlString(int cont) 731{ 732 switch (cont) { 733 case LoopControlUnrollShift: return "Unroll"; 734 case LoopControlDontUnrollShift: return "DontUnroll"; 735 case LoopControlDependencyInfiniteShift: return "DependencyInfinite"; 736 case LoopControlDependencyLengthShift: return "DependencyLength"; 737 case LoopControlMinIterationsShift: return "MinIterations"; 738 case LoopControlMaxIterationsShift: return "MaxIterations"; 739 case LoopControlIterationMultipleShift: return "IterationMultiple"; 740 case LoopControlPeelCountShift: return "PeelCount"; 741 case LoopControlPartialCountShift: return "PartialCount"; 742 743 case LoopControlCeiling: 744 default: return "Bad"; 745 } 746} 747 748const int FunctionControlCeiling = 4; 749 750const char* FunctionControlString(int cont) 751{ 752 switch (cont) { 753 case 0: return "Inline"; 754 case 1: return "DontInline"; 755 case 2: return "Pure"; 756 case 3: return "Const"; 757 758 case FunctionControlCeiling: 759 default: return "Bad"; 760 } 761} 762 763const char* MemorySemanticsString(int mem) 764{ 765 // Note: No bits set (None) means "Relaxed" 766 switch (mem) { 767 case 0: return "Bad"; // Note: this is a placeholder for 'Consume' 768 case 1: return "Acquire"; 769 case 2: return "Release"; 770 case 3: return "AcquireRelease"; 771 case 4: return "SequentiallyConsistent"; 772 case 5: return "Bad"; // Note: reserved for future expansion 773 case 6: return "UniformMemory"; 774 case 7: return "SubgroupMemory"; 775 case 8: return "WorkgroupMemory"; 776 case 9: return "CrossWorkgroupMemory"; 777 case 10: return "AtomicCounterMemory"; 778 case 11: return "ImageMemory"; 779 780 default: return "Bad"; 781 } 782} 783 784const int MemoryAccessCeiling = 6; 785 786const char* MemoryAccessString(int mem) 787{ 788 switch (mem) { 789 case MemoryAccessVolatileShift: return "Volatile"; 790 case MemoryAccessAlignedShift: return "Aligned"; 791 case MemoryAccessNontemporalShift: return "Nontemporal"; 792 case MemoryAccessMakePointerAvailableKHRShift: return "MakePointerAvailableKHR"; 793 case MemoryAccessMakePointerVisibleKHRShift: return "MakePointerVisibleKHR"; 794 case MemoryAccessNonPrivatePointerKHRShift: return "NonPrivatePointerKHR"; 795 796 default: return "Bad"; 797 } 798} 799 800const int CooperativeMatrixOperandsCeiling = 6; 801 802const char* CooperativeMatrixOperandsString(int op) 803{ 804 switch (op) { 805 case CooperativeMatrixOperandsMatrixASignedComponentsKHRShift: return "ASignedComponentsKHR"; 806 case CooperativeMatrixOperandsMatrixBSignedComponentsKHRShift: return "BSignedComponentsKHR"; 807 case CooperativeMatrixOperandsMatrixCSignedComponentsKHRShift: return "CSignedComponentsKHR"; 808 case CooperativeMatrixOperandsMatrixResultSignedComponentsKHRShift: return "ResultSignedComponentsKHR"; 809 case CooperativeMatrixOperandsSaturatingAccumulationKHRShift: return "SaturatingAccumulationKHR"; 810 811 default: return "Bad"; 812 } 813} 814 815const char* ScopeString(int mem) 816{ 817 switch (mem) { 818 case 0: return "CrossDevice"; 819 case 1: return "Device"; 820 case 2: return "Workgroup"; 821 case 3: return "Subgroup"; 822 case 4: return "Invocation"; 823 824 default: return "Bad"; 825 } 826} 827 828const char* GroupOperationString(int gop) 829{ 830 831 switch (gop) 832 { 833 case GroupOperationReduce: return "Reduce"; 834 case GroupOperationInclusiveScan: return "InclusiveScan"; 835 case GroupOperationExclusiveScan: return "ExclusiveScan"; 836 case GroupOperationClusteredReduce: return "ClusteredReduce"; 837 case GroupOperationPartitionedReduceNV: return "PartitionedReduceNV"; 838 case GroupOperationPartitionedInclusiveScanNV: return "PartitionedInclusiveScanNV"; 839 case GroupOperationPartitionedExclusiveScanNV: return "PartitionedExclusiveScanNV"; 840 841 default: return "Bad"; 842 } 843} 844 845const char* KernelEnqueueFlagsString(int flag) 846{ 847 switch (flag) 848 { 849 case 0: return "NoWait"; 850 case 1: return "WaitKernel"; 851 case 2: return "WaitWorkGroup"; 852 853 default: return "Bad"; 854 } 855} 856 857const char* KernelProfilingInfoString(int info) 858{ 859 switch (info) 860 { 861 case 0: return "CmdExecTime"; 862 863 default: return "Bad"; 864 } 865} 866 867const char* CapabilityString(int info) 868{ 869 switch (info) 870 { 871 case 0: return "Matrix"; 872 case 1: return "Shader"; 873 case 2: return "Geometry"; 874 case 3: return "Tessellation"; 875 case 4: return "Addresses"; 876 case 5: return "Linkage"; 877 case 6: return "Kernel"; 878 case 7: return "Vector16"; 879 case 8: return "Float16Buffer"; 880 case 9: return "Float16"; 881 case 10: return "Float64"; 882 case 11: return "Int64"; 883 case 12: return "Int64Atomics"; 884 case 13: return "ImageBasic"; 885 case 14: return "ImageReadWrite"; 886 case 15: return "ImageMipmap"; 887 case 16: return "Bad"; 888 case 17: return "Pipes"; 889 case 18: return "Groups"; 890 case 19: return "DeviceEnqueue"; 891 case 20: return "LiteralSampler"; 892 case 21: return "AtomicStorage"; 893 case 22: return "Int16"; 894 case 23: return "TessellationPointSize"; 895 case 24: return "GeometryPointSize"; 896 case 25: return "ImageGatherExtended"; 897 case 26: return "Bad"; 898 case 27: return "StorageImageMultisample"; 899 case 28: return "UniformBufferArrayDynamicIndexing"; 900 case 29: return "SampledImageArrayDynamicIndexing"; 901 case 30: return "StorageBufferArrayDynamicIndexing"; 902 case 31: return "StorageImageArrayDynamicIndexing"; 903 case 32: return "ClipDistance"; 904 case 33: return "CullDistance"; 905 case 34: return "ImageCubeArray"; 906 case 35: return "SampleRateShading"; 907 case 36: return "ImageRect"; 908 case 37: return "SampledRect"; 909 case 38: return "GenericPointer"; 910 case 39: return "Int8"; 911 case 40: return "InputAttachment"; 912 case 41: return "SparseResidency"; 913 case 42: return "MinLod"; 914 case 43: return "Sampled1D"; 915 case 44: return "Image1D"; 916 case 45: return "SampledCubeArray"; 917 case 46: return "SampledBuffer"; 918 case 47: return "ImageBuffer"; 919 case 48: return "ImageMSArray"; 920 case 49: return "StorageImageExtendedFormats"; 921 case 50: return "ImageQuery"; 922 case 51: return "DerivativeControl"; 923 case 52: return "InterpolationFunction"; 924 case 53: return "TransformFeedback"; 925 case 54: return "GeometryStreams"; 926 case 55: return "StorageImageReadWithoutFormat"; 927 case 56: return "StorageImageWriteWithoutFormat"; 928 case 57: return "MultiViewport"; 929 case 61: return "GroupNonUniform"; 930 case 62: return "GroupNonUniformVote"; 931 case 63: return "GroupNonUniformArithmetic"; 932 case 64: return "GroupNonUniformBallot"; 933 case 65: return "GroupNonUniformShuffle"; 934 case 66: return "GroupNonUniformShuffleRelative"; 935 case 67: return "GroupNonUniformClustered"; 936 case 68: return "GroupNonUniformQuad"; 937 938 case CapabilitySubgroupBallotKHR: return "SubgroupBallotKHR"; 939 case CapabilityDrawParameters: return "DrawParameters"; 940 case CapabilitySubgroupVoteKHR: return "SubgroupVoteKHR"; 941 942 case CapabilityStorageUniformBufferBlock16: return "StorageUniformBufferBlock16"; 943 case CapabilityStorageUniform16: return "StorageUniform16"; 944 case CapabilityStoragePushConstant16: return "StoragePushConstant16"; 945 case CapabilityStorageInputOutput16: return "StorageInputOutput16"; 946 947 case CapabilityStorageBuffer8BitAccess: return "StorageBuffer8BitAccess"; 948 case CapabilityUniformAndStorageBuffer8BitAccess: return "UniformAndStorageBuffer8BitAccess"; 949 case CapabilityStoragePushConstant8: return "StoragePushConstant8"; 950 951 case CapabilityDeviceGroup: return "DeviceGroup"; 952 case CapabilityMultiView: return "MultiView"; 953 954 case CapabilityDenormPreserve: return "DenormPreserve"; 955 case CapabilityDenormFlushToZero: return "DenormFlushToZero"; 956 case CapabilitySignedZeroInfNanPreserve: return "SignedZeroInfNanPreserve"; 957 case CapabilityRoundingModeRTE: return "RoundingModeRTE"; 958 case CapabilityRoundingModeRTZ: return "RoundingModeRTZ"; 959 960 case CapabilityStencilExportEXT: return "StencilExportEXT"; 961 962 case CapabilityFloat16ImageAMD: return "Float16ImageAMD"; 963 case CapabilityImageGatherBiasLodAMD: return "ImageGatherBiasLodAMD"; 964 case CapabilityFragmentMaskAMD: return "FragmentMaskAMD"; 965 case CapabilityImageReadWriteLodAMD: return "ImageReadWriteLodAMD"; 966 967 case CapabilityAtomicStorageOps: return "AtomicStorageOps"; 968 969 case CapabilitySampleMaskPostDepthCoverage: return "SampleMaskPostDepthCoverage"; 970 case CapabilityGeometryShaderPassthroughNV: return "GeometryShaderPassthroughNV"; 971 case CapabilityShaderViewportIndexLayerNV: return "ShaderViewportIndexLayerNV"; 972 case CapabilityShaderViewportMaskNV: return "ShaderViewportMaskNV"; 973 case CapabilityShaderStereoViewNV: return "ShaderStereoViewNV"; 974 case CapabilityPerViewAttributesNV: return "PerViewAttributesNV"; 975 case CapabilityGroupNonUniformPartitionedNV: return "GroupNonUniformPartitionedNV"; 976 case CapabilityRayTracingNV: return "RayTracingNV"; 977 case CapabilityRayTracingMotionBlurNV: return "RayTracingMotionBlurNV"; 978 case CapabilityRayTracingKHR: return "RayTracingKHR"; 979 case CapabilityRayCullMaskKHR: return "RayCullMaskKHR"; 980 case CapabilityRayQueryKHR: return "RayQueryKHR"; 981 case CapabilityRayTracingProvisionalKHR: return "RayTracingProvisionalKHR"; 982 case CapabilityRayTraversalPrimitiveCullingKHR: return "RayTraversalPrimitiveCullingKHR"; 983 case CapabilityRayTracingPositionFetchKHR: return "RayTracingPositionFetchKHR"; 984 case CapabilityDisplacementMicromapNV: return "DisplacementMicromapNV"; 985 case CapabilityRayTracingDisplacementMicromapNV: return "CapabilityRayTracingDisplacementMicromapNV"; 986 case CapabilityRayQueryPositionFetchKHR: return "RayQueryPositionFetchKHR"; 987 case CapabilityComputeDerivativeGroupQuadsNV: return "ComputeDerivativeGroupQuadsNV"; 988 case CapabilityComputeDerivativeGroupLinearNV: return "ComputeDerivativeGroupLinearNV"; 989 case CapabilityFragmentBarycentricKHR: return "FragmentBarycentricKHR"; 990 case CapabilityMeshShadingNV: return "MeshShadingNV"; 991 case CapabilityImageFootprintNV: return "ImageFootprintNV"; 992 case CapabilityMeshShadingEXT: return "MeshShadingEXT"; 993// case CapabilityShadingRateNV: return "ShadingRateNV"; // superseded by FragmentDensityEXT 994 case CapabilitySampleMaskOverrideCoverageNV: return "SampleMaskOverrideCoverageNV"; 995 case CapabilityFragmentDensityEXT: return "FragmentDensityEXT"; 996 997 case CapabilityFragmentFullyCoveredEXT: return "FragmentFullyCoveredEXT"; 998 999 case CapabilityShaderNonUniformEXT: return "ShaderNonUniformEXT"; 1000 case CapabilityRuntimeDescriptorArrayEXT: return "RuntimeDescriptorArrayEXT"; 1001 case CapabilityInputAttachmentArrayDynamicIndexingEXT: return "InputAttachmentArrayDynamicIndexingEXT"; 1002 case CapabilityUniformTexelBufferArrayDynamicIndexingEXT: return "UniformTexelBufferArrayDynamicIndexingEXT"; 1003 case CapabilityStorageTexelBufferArrayDynamicIndexingEXT: return "StorageTexelBufferArrayDynamicIndexingEXT"; 1004 case CapabilityUniformBufferArrayNonUniformIndexingEXT: return "UniformBufferArrayNonUniformIndexingEXT"; 1005 case CapabilitySampledImageArrayNonUniformIndexingEXT: return "SampledImageArrayNonUniformIndexingEXT"; 1006 case CapabilityStorageBufferArrayNonUniformIndexingEXT: return "StorageBufferArrayNonUniformIndexingEXT"; 1007 case CapabilityStorageImageArrayNonUniformIndexingEXT: return "StorageImageArrayNonUniformIndexingEXT"; 1008 case CapabilityInputAttachmentArrayNonUniformIndexingEXT: return "InputAttachmentArrayNonUniformIndexingEXT"; 1009 case CapabilityUniformTexelBufferArrayNonUniformIndexingEXT: return "UniformTexelBufferArrayNonUniformIndexingEXT"; 1010 case CapabilityStorageTexelBufferArrayNonUniformIndexingEXT: return "StorageTexelBufferArrayNonUniformIndexingEXT"; 1011 1012 case CapabilityVulkanMemoryModelKHR: return "VulkanMemoryModelKHR"; 1013 case CapabilityVulkanMemoryModelDeviceScopeKHR: return "VulkanMemoryModelDeviceScopeKHR"; 1014 1015 case CapabilityPhysicalStorageBufferAddressesEXT: return "PhysicalStorageBufferAddressesEXT"; 1016 1017 case CapabilityVariablePointers: return "VariablePointers"; 1018 1019 case CapabilityCooperativeMatrixNV: return "CooperativeMatrixNV"; 1020 case CapabilityCooperativeMatrixKHR: return "CooperativeMatrixKHR"; 1021 case CapabilityShaderSMBuiltinsNV: return "ShaderSMBuiltinsNV"; 1022 1023 case CapabilityFragmentShaderSampleInterlockEXT: return "CapabilityFragmentShaderSampleInterlockEXT"; 1024 case CapabilityFragmentShaderPixelInterlockEXT: return "CapabilityFragmentShaderPixelInterlockEXT"; 1025 case CapabilityFragmentShaderShadingRateInterlockEXT: return "CapabilityFragmentShaderShadingRateInterlockEXT"; 1026 1027 case CapabilityTileImageColorReadAccessEXT: return "TileImageColorReadAccessEXT"; 1028 case CapabilityTileImageDepthReadAccessEXT: return "TileImageDepthReadAccessEXT"; 1029 case CapabilityTileImageStencilReadAccessEXT: return "TileImageStencilReadAccessEXT"; 1030 1031 case CapabilityFragmentShadingRateKHR: return "FragmentShadingRateKHR"; 1032 1033 case CapabilityDemoteToHelperInvocationEXT: return "DemoteToHelperInvocationEXT"; 1034 case CapabilityShaderClockKHR: return "ShaderClockKHR"; 1035 case CapabilityInt64ImageEXT: return "Int64ImageEXT"; 1036 1037 case CapabilityIntegerFunctions2INTEL: return "CapabilityIntegerFunctions2INTEL"; 1038 1039 case CapabilityAtomicFloat16AddEXT: return "AtomicFloat16AddEXT"; 1040 case CapabilityAtomicFloat32AddEXT: return "AtomicFloat32AddEXT"; 1041 case CapabilityAtomicFloat64AddEXT: return "AtomicFloat64AddEXT"; 1042 case CapabilityAtomicFloat16MinMaxEXT: return "AtomicFloat16MinMaxEXT"; 1043 case CapabilityAtomicFloat32MinMaxEXT: return "AtomicFloat32MinMaxEXT"; 1044 case CapabilityAtomicFloat64MinMaxEXT: return "AtomicFloat64MinMaxEXT"; 1045 1046 case CapabilityWorkgroupMemoryExplicitLayoutKHR: return "CapabilityWorkgroupMemoryExplicitLayoutKHR"; 1047 case CapabilityWorkgroupMemoryExplicitLayout8BitAccessKHR: return "CapabilityWorkgroupMemoryExplicitLayout8BitAccessKHR"; 1048 case CapabilityWorkgroupMemoryExplicitLayout16BitAccessKHR: return "CapabilityWorkgroupMemoryExplicitLayout16BitAccessKHR"; 1049 case CapabilityCoreBuiltinsARM: return "CoreBuiltinsARM"; 1050 1051 case CapabilityShaderInvocationReorderNV: return "ShaderInvocationReorderNV"; 1052 1053 case CapabilityTextureSampleWeightedQCOM: return "TextureSampleWeightedQCOM"; 1054 case CapabilityTextureBoxFilterQCOM: return "TextureBoxFilterQCOM"; 1055 case CapabilityTextureBlockMatchQCOM: return "TextureBlockMatchQCOM"; 1056 1057 default: return "Bad"; 1058 } 1059} 1060 1061const char* OpcodeString(int op) 1062{ 1063 switch (op) { 1064 case 0: return "OpNop"; 1065 case 1: return "OpUndef"; 1066 case 2: return "OpSourceContinued"; 1067 case 3: return "OpSource"; 1068 case 4: return "OpSourceExtension"; 1069 case 5: return "OpName"; 1070 case 6: return "OpMemberName"; 1071 case 7: return "OpString"; 1072 case 8: return "OpLine"; 1073 case 9: return "Bad"; 1074 case 10: return "OpExtension"; 1075 case 11: return "OpExtInstImport"; 1076 case 12: return "OpExtInst"; 1077 case 13: return "Bad"; 1078 case 14: return "OpMemoryModel"; 1079 case 15: return "OpEntryPoint"; 1080 case 16: return "OpExecutionMode"; 1081 case 17: return "OpCapability"; 1082 case 18: return "Bad"; 1083 case 19: return "OpTypeVoid"; 1084 case 20: return "OpTypeBool"; 1085 case 21: return "OpTypeInt"; 1086 case 22: return "OpTypeFloat"; 1087 case 23: return "OpTypeVector"; 1088 case 24: return "OpTypeMatrix"; 1089 case 25: return "OpTypeImage"; 1090 case 26: return "OpTypeSampler"; 1091 case 27: return "OpTypeSampledImage"; 1092 case 28: return "OpTypeArray"; 1093 case 29: return "OpTypeRuntimeArray"; 1094 case 30: return "OpTypeStruct"; 1095 case 31: return "OpTypeOpaque"; 1096 case 32: return "OpTypePointer"; 1097 case 33: return "OpTypeFunction"; 1098 case 34: return "OpTypeEvent"; 1099 case 35: return "OpTypeDeviceEvent"; 1100 case 36: return "OpTypeReserveId"; 1101 case 37: return "OpTypeQueue"; 1102 case 38: return "OpTypePipe"; 1103 case 39: return "OpTypeForwardPointer"; 1104 case 40: return "Bad"; 1105 case 41: return "OpConstantTrue"; 1106 case 42: return "OpConstantFalse"; 1107 case 43: return "OpConstant"; 1108 case 44: return "OpConstantComposite"; 1109 case 45: return "OpConstantSampler"; 1110 case 46: return "OpConstantNull"; 1111 case 47: return "Bad"; 1112 case 48: return "OpSpecConstantTrue"; 1113 case 49: return "OpSpecConstantFalse"; 1114 case 50: return "OpSpecConstant"; 1115 case 51: return "OpSpecConstantComposite"; 1116 case 52: return "OpSpecConstantOp"; 1117 case 53: return "Bad"; 1118 case 54: return "OpFunction"; 1119 case 55: return "OpFunctionParameter"; 1120 case 56: return "OpFunctionEnd"; 1121 case 57: return "OpFunctionCall"; 1122 case 58: return "Bad"; 1123 case 59: return "OpVariable"; 1124 case 60: return "OpImageTexelPointer"; 1125 case 61: return "OpLoad"; 1126 case 62: return "OpStore"; 1127 case 63: return "OpCopyMemory"; 1128 case 64: return "OpCopyMemorySized"; 1129 case 65: return "OpAccessChain"; 1130 case 66: return "OpInBoundsAccessChain"; 1131 case 67: return "OpPtrAccessChain"; 1132 case 68: return "OpArrayLength"; 1133 case 69: return "OpGenericPtrMemSemantics"; 1134 case 70: return "OpInBoundsPtrAccessChain"; 1135 case 71: return "OpDecorate"; 1136 case 72: return "OpMemberDecorate"; 1137 case 73: return "OpDecorationGroup"; 1138 case 74: return "OpGroupDecorate"; 1139 case 75: return "OpGroupMemberDecorate"; 1140 case 76: return "Bad"; 1141 case 77: return "OpVectorExtractDynamic"; 1142 case 78: return "OpVectorInsertDynamic"; 1143 case 79: return "OpVectorShuffle"; 1144 case 80: return "OpCompositeConstruct"; 1145 case 81: return "OpCompositeExtract"; 1146 case 82: return "OpCompositeInsert"; 1147 case 83: return "OpCopyObject"; 1148 case 84: return "OpTranspose"; 1149 case OpCopyLogical: return "OpCopyLogical"; 1150 case 85: return "Bad"; 1151 case 86: return "OpSampledImage"; 1152 case 87: return "OpImageSampleImplicitLod"; 1153 case 88: return "OpImageSampleExplicitLod"; 1154 case 89: return "OpImageSampleDrefImplicitLod"; 1155 case 90: return "OpImageSampleDrefExplicitLod"; 1156 case 91: return "OpImageSampleProjImplicitLod"; 1157 case 92: return "OpImageSampleProjExplicitLod"; 1158 case 93: return "OpImageSampleProjDrefImplicitLod"; 1159 case 94: return "OpImageSampleProjDrefExplicitLod"; 1160 case 95: return "OpImageFetch"; 1161 case 96: return "OpImageGather"; 1162 case 97: return "OpImageDrefGather"; 1163 case 98: return "OpImageRead"; 1164 case 99: return "OpImageWrite"; 1165 case 100: return "OpImage"; 1166 case 101: return "OpImageQueryFormat"; 1167 case 102: return "OpImageQueryOrder"; 1168 case 103: return "OpImageQuerySizeLod"; 1169 case 104: return "OpImageQuerySize"; 1170 case 105: return "OpImageQueryLod"; 1171 case 106: return "OpImageQueryLevels"; 1172 case 107: return "OpImageQuerySamples"; 1173 case 108: return "Bad"; 1174 case 109: return "OpConvertFToU"; 1175 case 110: return "OpConvertFToS"; 1176 case 111: return "OpConvertSToF"; 1177 case 112: return "OpConvertUToF"; 1178 case 113: return "OpUConvert"; 1179 case 114: return "OpSConvert"; 1180 case 115: return "OpFConvert"; 1181 case 116: return "OpQuantizeToF16"; 1182 case 117: return "OpConvertPtrToU"; 1183 case 118: return "OpSatConvertSToU"; 1184 case 119: return "OpSatConvertUToS"; 1185 case 120: return "OpConvertUToPtr"; 1186 case 121: return "OpPtrCastToGeneric"; 1187 case 122: return "OpGenericCastToPtr"; 1188 case 123: return "OpGenericCastToPtrExplicit"; 1189 case 124: return "OpBitcast"; 1190 case 125: return "Bad"; 1191 case 126: return "OpSNegate"; 1192 case 127: return "OpFNegate"; 1193 case 128: return "OpIAdd"; 1194 case 129: return "OpFAdd"; 1195 case 130: return "OpISub"; 1196 case 131: return "OpFSub"; 1197 case 132: return "OpIMul"; 1198 case 133: return "OpFMul"; 1199 case 134: return "OpUDiv"; 1200 case 135: return "OpSDiv"; 1201 case 136: return "OpFDiv"; 1202 case 137: return "OpUMod"; 1203 case 138: return "OpSRem"; 1204 case 139: return "OpSMod"; 1205 case 140: return "OpFRem"; 1206 case 141: return "OpFMod"; 1207 case 142: return "OpVectorTimesScalar"; 1208 case 143: return "OpMatrixTimesScalar"; 1209 case 144: return "OpVectorTimesMatrix"; 1210 case 145: return "OpMatrixTimesVector"; 1211 case 146: return "OpMatrixTimesMatrix"; 1212 case 147: return "OpOuterProduct"; 1213 case 148: return "OpDot"; 1214 case 149: return "OpIAddCarry"; 1215 case 150: return "OpISubBorrow"; 1216 case 151: return "OpUMulExtended"; 1217 case 152: return "OpSMulExtended"; 1218 case 153: return "Bad"; 1219 case 154: return "OpAny"; 1220 case 155: return "OpAll"; 1221 case 156: return "OpIsNan"; 1222 case 157: return "OpIsInf"; 1223 case 158: return "OpIsFinite"; 1224 case 159: return "OpIsNormal"; 1225 case 160: return "OpSignBitSet"; 1226 case 161: return "OpLessOrGreater"; 1227 case 162: return "OpOrdered"; 1228 case 163: return "OpUnordered"; 1229 case 164: return "OpLogicalEqual"; 1230 case 165: return "OpLogicalNotEqual"; 1231 case 166: return "OpLogicalOr"; 1232 case 167: return "OpLogicalAnd"; 1233 case 168: return "OpLogicalNot"; 1234 case 169: return "OpSelect"; 1235 case 170: return "OpIEqual"; 1236 case 171: return "OpINotEqual"; 1237 case 172: return "OpUGreaterThan"; 1238 case 173: return "OpSGreaterThan"; 1239 case 174: return "OpUGreaterThanEqual"; 1240 case 175: return "OpSGreaterThanEqual"; 1241 case 176: return "OpULessThan"; 1242 case 177: return "OpSLessThan"; 1243 case 178: return "OpULessThanEqual"; 1244 case 179: return "OpSLessThanEqual"; 1245 case 180: return "OpFOrdEqual"; 1246 case 181: return "OpFUnordEqual"; 1247 case 182: return "OpFOrdNotEqual"; 1248 case 183: return "OpFUnordNotEqual"; 1249 case 184: return "OpFOrdLessThan"; 1250 case 185: return "OpFUnordLessThan"; 1251 case 186: return "OpFOrdGreaterThan"; 1252 case 187: return "OpFUnordGreaterThan"; 1253 case 188: return "OpFOrdLessThanEqual"; 1254 case 189: return "OpFUnordLessThanEqual"; 1255 case 190: return "OpFOrdGreaterThanEqual"; 1256 case 191: return "OpFUnordGreaterThanEqual"; 1257 case 192: return "Bad"; 1258 case 193: return "Bad"; 1259 case 194: return "OpShiftRightLogical"; 1260 case 195: return "OpShiftRightArithmetic"; 1261 case 196: return "OpShiftLeftLogical"; 1262 case 197: return "OpBitwiseOr"; 1263 case 198: return "OpBitwiseXor"; 1264 case 199: return "OpBitwiseAnd"; 1265 case 200: return "OpNot"; 1266 case 201: return "OpBitFieldInsert"; 1267 case 202: return "OpBitFieldSExtract"; 1268 case 203: return "OpBitFieldUExtract"; 1269 case 204: return "OpBitReverse"; 1270 case 205: return "OpBitCount"; 1271 case 206: return "Bad"; 1272 case 207: return "OpDPdx"; 1273 case 208: return "OpDPdy"; 1274 case 209: return "OpFwidth"; 1275 case 210: return "OpDPdxFine"; 1276 case 211: return "OpDPdyFine"; 1277 case 212: return "OpFwidthFine"; 1278 case 213: return "OpDPdxCoarse"; 1279 case 214: return "OpDPdyCoarse"; 1280 case 215: return "OpFwidthCoarse"; 1281 case 216: return "Bad"; 1282 case 217: return "Bad"; 1283 case 218: return "OpEmitVertex"; 1284 case 219: return "OpEndPrimitive"; 1285 case 220: return "OpEmitStreamVertex"; 1286 case 221: return "OpEndStreamPrimitive"; 1287 case 222: return "Bad"; 1288 case 223: return "Bad"; 1289 case 224: return "OpControlBarrier"; 1290 case 225: return "OpMemoryBarrier"; 1291 case 226: return "Bad"; 1292 case 227: return "OpAtomicLoad"; 1293 case 228: return "OpAtomicStore"; 1294 case 229: return "OpAtomicExchange"; 1295 case 230: return "OpAtomicCompareExchange"; 1296 case 231: return "OpAtomicCompareExchangeWeak"; 1297 case 232: return "OpAtomicIIncrement"; 1298 case 233: return "OpAtomicIDecrement"; 1299 case 234: return "OpAtomicIAdd"; 1300 case 235: return "OpAtomicISub"; 1301 case 236: return "OpAtomicSMin"; 1302 case 237: return "OpAtomicUMin"; 1303 case 238: return "OpAtomicSMax"; 1304 case 239: return "OpAtomicUMax"; 1305 case 240: return "OpAtomicAnd"; 1306 case 241: return "OpAtomicOr"; 1307 case 242: return "OpAtomicXor"; 1308 case 243: return "Bad"; 1309 case 244: return "Bad"; 1310 case 245: return "OpPhi"; 1311 case 246: return "OpLoopMerge"; 1312 case 247: return "OpSelectionMerge"; 1313 case 248: return "OpLabel"; 1314 case 249: return "OpBranch"; 1315 case 250: return "OpBranchConditional"; 1316 case 251: return "OpSwitch"; 1317 case 252: return "OpKill"; 1318 case 253: return "OpReturn"; 1319 case 254: return "OpReturnValue"; 1320 case 255: return "OpUnreachable"; 1321 case 256: return "OpLifetimeStart"; 1322 case 257: return "OpLifetimeStop"; 1323 case 258: return "Bad"; 1324 case 259: return "OpGroupAsyncCopy"; 1325 case 260: return "OpGroupWaitEvents"; 1326 case 261: return "OpGroupAll"; 1327 case 262: return "OpGroupAny"; 1328 case 263: return "OpGroupBroadcast"; 1329 case 264: return "OpGroupIAdd"; 1330 case 265: return "OpGroupFAdd"; 1331 case 266: return "OpGroupFMin"; 1332 case 267: return "OpGroupUMin"; 1333 case 268: return "OpGroupSMin"; 1334 case 269: return "OpGroupFMax"; 1335 case 270: return "OpGroupUMax"; 1336 case 271: return "OpGroupSMax"; 1337 case 272: return "Bad"; 1338 case 273: return "Bad"; 1339 case 274: return "OpReadPipe"; 1340 case 275: return "OpWritePipe"; 1341 case 276: return "OpReservedReadPipe"; 1342 case 277: return "OpReservedWritePipe"; 1343 case 278: return "OpReserveReadPipePackets"; 1344 case 279: return "OpReserveWritePipePackets"; 1345 case 280: return "OpCommitReadPipe"; 1346 case 281: return "OpCommitWritePipe"; 1347 case 282: return "OpIsValidReserveId"; 1348 case 283: return "OpGetNumPipePackets"; 1349 case 284: return "OpGetMaxPipePackets"; 1350 case 285: return "OpGroupReserveReadPipePackets"; 1351 case 286: return "OpGroupReserveWritePipePackets"; 1352 case 287: return "OpGroupCommitReadPipe"; 1353 case 288: return "OpGroupCommitWritePipe"; 1354 case 289: return "Bad"; 1355 case 290: return "Bad"; 1356 case 291: return "OpEnqueueMarker"; 1357 case 292: return "OpEnqueueKernel"; 1358 case 293: return "OpGetKernelNDrangeSubGroupCount"; 1359 case 294: return "OpGetKernelNDrangeMaxSubGroupSize"; 1360 case 295: return "OpGetKernelWorkGroupSize"; 1361 case 296: return "OpGetKernelPreferredWorkGroupSizeMultiple"; 1362 case 297: return "OpRetainEvent"; 1363 case 298: return "OpReleaseEvent"; 1364 case 299: return "OpCreateUserEvent"; 1365 case 300: return "OpIsValidEvent"; 1366 case 301: return "OpSetUserEventStatus"; 1367 case 302: return "OpCaptureEventProfilingInfo"; 1368 case 303: return "OpGetDefaultQueue"; 1369 case 304: return "OpBuildNDRange"; 1370 case 305: return "OpImageSparseSampleImplicitLod"; 1371 case 306: return "OpImageSparseSampleExplicitLod"; 1372 case 307: return "OpImageSparseSampleDrefImplicitLod"; 1373 case 308: return "OpImageSparseSampleDrefExplicitLod"; 1374 case 309: return "OpImageSparseSampleProjImplicitLod"; 1375 case 310: return "OpImageSparseSampleProjExplicitLod"; 1376 case 311: return "OpImageSparseSampleProjDrefImplicitLod"; 1377 case 312: return "OpImageSparseSampleProjDrefExplicitLod"; 1378 case 313: return "OpImageSparseFetch"; 1379 case 314: return "OpImageSparseGather"; 1380 case 315: return "OpImageSparseDrefGather"; 1381 case 316: return "OpImageSparseTexelsResident"; 1382 case 317: return "OpNoLine"; 1383 case 318: return "OpAtomicFlagTestAndSet"; 1384 case 319: return "OpAtomicFlagClear"; 1385 case 320: return "OpImageSparseRead"; 1386 1387 case OpModuleProcessed: return "OpModuleProcessed"; 1388 case OpExecutionModeId: return "OpExecutionModeId"; 1389 case OpDecorateId: return "OpDecorateId"; 1390 1391 case 333: return "OpGroupNonUniformElect"; 1392 case 334: return "OpGroupNonUniformAll"; 1393 case 335: return "OpGroupNonUniformAny"; 1394 case 336: return "OpGroupNonUniformAllEqual"; 1395 case 337: return "OpGroupNonUniformBroadcast"; 1396 case 338: return "OpGroupNonUniformBroadcastFirst"; 1397 case 339: return "OpGroupNonUniformBallot"; 1398 case 340: return "OpGroupNonUniformInverseBallot"; 1399 case 341: return "OpGroupNonUniformBallotBitExtract"; 1400 case 342: return "OpGroupNonUniformBallotBitCount"; 1401 case 343: return "OpGroupNonUniformBallotFindLSB"; 1402 case 344: return "OpGroupNonUniformBallotFindMSB"; 1403 case 345: return "OpGroupNonUniformShuffle"; 1404 case 346: return "OpGroupNonUniformShuffleXor"; 1405 case 347: return "OpGroupNonUniformShuffleUp"; 1406 case 348: return "OpGroupNonUniformShuffleDown"; 1407 case 349: return "OpGroupNonUniformIAdd"; 1408 case 350: return "OpGroupNonUniformFAdd"; 1409 case 351: return "OpGroupNonUniformIMul"; 1410 case 352: return "OpGroupNonUniformFMul"; 1411 case 353: return "OpGroupNonUniformSMin"; 1412 case 354: return "OpGroupNonUniformUMin"; 1413 case 355: return "OpGroupNonUniformFMin"; 1414 case 356: return "OpGroupNonUniformSMax"; 1415 case 357: return "OpGroupNonUniformUMax"; 1416 case 358: return "OpGroupNonUniformFMax"; 1417 case 359: return "OpGroupNonUniformBitwiseAnd"; 1418 case 360: return "OpGroupNonUniformBitwiseOr"; 1419 case 361: return "OpGroupNonUniformBitwiseXor"; 1420 case 362: return "OpGroupNonUniformLogicalAnd"; 1421 case 363: return "OpGroupNonUniformLogicalOr"; 1422 case 364: return "OpGroupNonUniformLogicalXor"; 1423 case 365: return "OpGroupNonUniformQuadBroadcast"; 1424 case 366: return "OpGroupNonUniformQuadSwap"; 1425 1426 case OpTerminateInvocation: return "OpTerminateInvocation"; 1427 1428 case 4421: return "OpSubgroupBallotKHR"; 1429 case 4422: return "OpSubgroupFirstInvocationKHR"; 1430 case 4428: return "OpSubgroupAllKHR"; 1431 case 4429: return "OpSubgroupAnyKHR"; 1432 case 4430: return "OpSubgroupAllEqualKHR"; 1433 case 4432: return "OpSubgroupReadInvocationKHR"; 1434 1435 case OpAtomicFAddEXT: return "OpAtomicFAddEXT"; 1436 case OpAtomicFMinEXT: return "OpAtomicFMinEXT"; 1437 case OpAtomicFMaxEXT: return "OpAtomicFMaxEXT"; 1438 1439 case 5000: return "OpGroupIAddNonUniformAMD"; 1440 case 5001: return "OpGroupFAddNonUniformAMD"; 1441 case 5002: return "OpGroupFMinNonUniformAMD"; 1442 case 5003: return "OpGroupUMinNonUniformAMD"; 1443 case 5004: return "OpGroupSMinNonUniformAMD"; 1444 case 5005: return "OpGroupFMaxNonUniformAMD"; 1445 case 5006: return "OpGroupUMaxNonUniformAMD"; 1446 case 5007: return "OpGroupSMaxNonUniformAMD"; 1447 1448 case 5011: return "OpFragmentMaskFetchAMD"; 1449 case 5012: return "OpFragmentFetchAMD"; 1450 1451 case OpReadClockKHR: return "OpReadClockKHR"; 1452 1453 case OpDecorateStringGOOGLE: return "OpDecorateStringGOOGLE"; 1454 case OpMemberDecorateStringGOOGLE: return "OpMemberDecorateStringGOOGLE"; 1455 1456 case OpReportIntersectionKHR: return "OpReportIntersectionKHR"; 1457 case OpIgnoreIntersectionNV: return "OpIgnoreIntersectionNV"; 1458 case OpIgnoreIntersectionKHR: return "OpIgnoreIntersectionKHR"; 1459 case OpTerminateRayNV: return "OpTerminateRayNV"; 1460 case OpTerminateRayKHR: return "OpTerminateRayKHR"; 1461 case OpTraceNV: return "OpTraceNV"; 1462 case OpTraceRayMotionNV: return "OpTraceRayMotionNV"; 1463 case OpTraceRayKHR: return "OpTraceRayKHR"; 1464 case OpTypeAccelerationStructureKHR: return "OpTypeAccelerationStructureKHR"; 1465 case OpExecuteCallableNV: return "OpExecuteCallableNV"; 1466 case OpExecuteCallableKHR: return "OpExecuteCallableKHR"; 1467 case OpConvertUToAccelerationStructureKHR: return "OpConvertUToAccelerationStructureKHR"; 1468 1469 case OpGroupNonUniformPartitionNV: return "OpGroupNonUniformPartitionNV"; 1470 case OpImageSampleFootprintNV: return "OpImageSampleFootprintNV"; 1471 case OpWritePackedPrimitiveIndices4x8NV: return "OpWritePackedPrimitiveIndices4x8NV"; 1472 case OpEmitMeshTasksEXT: return "OpEmitMeshTasksEXT"; 1473 case OpSetMeshOutputsEXT: return "OpSetMeshOutputsEXT"; 1474 1475 case OpTypeRayQueryKHR: return "OpTypeRayQueryKHR"; 1476 case OpRayQueryInitializeKHR: return "OpRayQueryInitializeKHR"; 1477 case OpRayQueryTerminateKHR: return "OpRayQueryTerminateKHR"; 1478 case OpRayQueryGenerateIntersectionKHR: return "OpRayQueryGenerateIntersectionKHR"; 1479 case OpRayQueryConfirmIntersectionKHR: return "OpRayQueryConfirmIntersectionKHR"; 1480 case OpRayQueryProceedKHR: return "OpRayQueryProceedKHR"; 1481 case OpRayQueryGetIntersectionTypeKHR: return "OpRayQueryGetIntersectionTypeKHR"; 1482 case OpRayQueryGetRayTMinKHR: return "OpRayQueryGetRayTMinKHR"; 1483 case OpRayQueryGetRayFlagsKHR: return "OpRayQueryGetRayFlagsKHR"; 1484 case OpRayQueryGetIntersectionTKHR: return "OpRayQueryGetIntersectionTKHR"; 1485 case OpRayQueryGetIntersectionInstanceCustomIndexKHR: return "OpRayQueryGetIntersectionInstanceCustomIndexKHR"; 1486 case OpRayQueryGetIntersectionInstanceIdKHR: return "OpRayQueryGetIntersectionInstanceIdKHR"; 1487 case OpRayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR: return "OpRayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR"; 1488 case OpRayQueryGetIntersectionGeometryIndexKHR: return "OpRayQueryGetIntersectionGeometryIndexKHR"; 1489 case OpRayQueryGetIntersectionPrimitiveIndexKHR: return "OpRayQueryGetIntersectionPrimitiveIndexKHR"; 1490 case OpRayQueryGetIntersectionBarycentricsKHR: return "OpRayQueryGetIntersectionBarycentricsKHR"; 1491 case OpRayQueryGetIntersectionFrontFaceKHR: return "OpRayQueryGetIntersectionFrontFaceKHR"; 1492 case OpRayQueryGetIntersectionCandidateAABBOpaqueKHR: return "OpRayQueryGetIntersectionCandidateAABBOpaqueKHR"; 1493 case OpRayQueryGetIntersectionObjectRayDirectionKHR: return "OpRayQueryGetIntersectionObjectRayDirectionKHR"; 1494 case OpRayQueryGetIntersectionObjectRayOriginKHR: return "OpRayQueryGetIntersectionObjectRayOriginKHR"; 1495 case OpRayQueryGetWorldRayDirectionKHR: return "OpRayQueryGetWorldRayDirectionKHR"; 1496 case OpRayQueryGetWorldRayOriginKHR: return "OpRayQueryGetWorldRayOriginKHR"; 1497 case OpRayQueryGetIntersectionObjectToWorldKHR: return "OpRayQueryGetIntersectionObjectToWorldKHR"; 1498 case OpRayQueryGetIntersectionWorldToObjectKHR: return "OpRayQueryGetIntersectionWorldToObjectKHR"; 1499 case OpRayQueryGetIntersectionTriangleVertexPositionsKHR: return "OpRayQueryGetIntersectionTriangleVertexPositionsKHR"; 1500 1501 case OpTypeCooperativeMatrixNV: return "OpTypeCooperativeMatrixNV"; 1502 case OpCooperativeMatrixLoadNV: return "OpCooperativeMatrixLoadNV"; 1503 case OpCooperativeMatrixStoreNV: return "OpCooperativeMatrixStoreNV"; 1504 case OpCooperativeMatrixMulAddNV: return "OpCooperativeMatrixMulAddNV"; 1505 case OpCooperativeMatrixLengthNV: return "OpCooperativeMatrixLengthNV"; 1506 case OpTypeCooperativeMatrixKHR: return "OpTypeCooperativeMatrixKHR"; 1507 case OpCooperativeMatrixLoadKHR: return "OpCooperativeMatrixLoadKHR"; 1508 case OpCooperativeMatrixStoreKHR: return "OpCooperativeMatrixStoreKHR"; 1509 case OpCooperativeMatrixMulAddKHR: return "OpCooperativeMatrixMulAddKHR"; 1510 case OpCooperativeMatrixLengthKHR: return "OpCooperativeMatrixLengthKHR"; 1511 case OpDemoteToHelperInvocationEXT: return "OpDemoteToHelperInvocationEXT"; 1512 case OpIsHelperInvocationEXT: return "OpIsHelperInvocationEXT"; 1513 1514 case OpBeginInvocationInterlockEXT: return "OpBeginInvocationInterlockEXT"; 1515 case OpEndInvocationInterlockEXT: return "OpEndInvocationInterlockEXT"; 1516 1517 case OpTypeHitObjectNV: return "OpTypeHitObjectNV"; 1518 case OpHitObjectTraceRayNV: return "OpHitObjectTraceRayNV"; 1519 case OpHitObjectTraceRayMotionNV: return "OpHitObjectTraceRayMotionNV"; 1520 case OpHitObjectRecordHitNV: return "OpHitObjectRecordHitNV"; 1521 case OpHitObjectRecordHitMotionNV: return "OpHitObjectRecordHitMotionNV"; 1522 case OpHitObjectRecordHitWithIndexNV: return "OpHitObjectRecordHitWithIndexNV"; 1523 case OpHitObjectRecordHitWithIndexMotionNV: return "OpHitObjectRecordHitWithIndexMotionNV"; 1524 case OpHitObjectRecordMissNV: return "OpHitObjectRecordMissNV"; 1525 case OpHitObjectRecordMissMotionNV: return "OpHitObjectRecordMissMotionNV"; 1526 case OpHitObjectRecordEmptyNV: return "OpHitObjectRecordEmptyNV"; 1527 case OpHitObjectExecuteShaderNV: return "OpHitObjectExecuteShaderNV"; 1528 case OpReorderThreadWithHintNV: return "OpReorderThreadWithHintNV"; 1529 case OpReorderThreadWithHitObjectNV: return "OpReorderThreadWithHitObjectNV"; 1530 case OpHitObjectGetCurrentTimeNV: return "OpHitObjectGetCurrentTimeNV"; 1531 case OpHitObjectGetAttributesNV: return "OpHitObjectGetAttributesNV"; 1532 case OpHitObjectGetHitKindNV: return "OpHitObjectGetFrontFaceNV"; 1533 case OpHitObjectGetPrimitiveIndexNV: return "OpHitObjectGetPrimitiveIndexNV"; 1534 case OpHitObjectGetGeometryIndexNV: return "OpHitObjectGetGeometryIndexNV"; 1535 case OpHitObjectGetInstanceIdNV: return "OpHitObjectGetInstanceIdNV"; 1536 case OpHitObjectGetInstanceCustomIndexNV: return "OpHitObjectGetInstanceCustomIndexNV"; 1537 case OpHitObjectGetObjectRayDirectionNV: return "OpHitObjectGetObjectRayDirectionNV"; 1538 case OpHitObjectGetObjectRayOriginNV: return "OpHitObjectGetObjectRayOriginNV"; 1539 case OpHitObjectGetWorldRayDirectionNV: return "OpHitObjectGetWorldRayDirectionNV"; 1540 case OpHitObjectGetWorldRayOriginNV: return "OpHitObjectGetWorldRayOriginNV"; 1541 case OpHitObjectGetWorldToObjectNV: return "OpHitObjectGetWorldToObjectNV"; 1542 case OpHitObjectGetObjectToWorldNV: return "OpHitObjectGetObjectToWorldNV"; 1543 case OpHitObjectGetRayTMaxNV: return "OpHitObjectGetRayTMaxNV"; 1544 case OpHitObjectGetRayTMinNV: return "OpHitObjectGetRayTMinNV"; 1545 case OpHitObjectIsEmptyNV: return "OpHitObjectIsEmptyNV"; 1546 case OpHitObjectIsHitNV: return "OpHitObjectIsHitNV"; 1547 case OpHitObjectIsMissNV: return "OpHitObjectIsMissNV"; 1548 case OpHitObjectGetShaderBindingTableRecordIndexNV: return "OpHitObjectGetShaderBindingTableRecordIndexNV"; 1549 case OpHitObjectGetShaderRecordBufferHandleNV: return "OpHitObjectGetShaderRecordBufferHandleNV"; 1550 1551 case OpFetchMicroTriangleVertexBarycentricNV: return "OpFetchMicroTriangleVertexBarycentricNV"; 1552 case OpFetchMicroTriangleVertexPositionNV: return "OpFetchMicroTriangleVertexPositionNV"; 1553 1554 case OpColorAttachmentReadEXT: return "OpColorAttachmentReadEXT"; 1555 case OpDepthAttachmentReadEXT: return "OpDepthAttachmentReadEXT"; 1556 case OpStencilAttachmentReadEXT: return "OpStencilAttachmentReadEXT"; 1557 1558 case OpImageSampleWeightedQCOM: return "OpImageSampleWeightedQCOM"; 1559 case OpImageBoxFilterQCOM: return "OpImageBoxFilterQCOM"; 1560 case OpImageBlockMatchSADQCOM: return "OpImageBlockMatchSADQCOM"; 1561 case OpImageBlockMatchSSDQCOM: return "OpImageBlockMatchSSDQCOM"; 1562 1563 default: 1564 return "Bad"; 1565 } 1566} 1567 1568// The set of objects that hold all the instruction/operand 1569// parameterization information. 1570InstructionParameters InstructionDesc[OpCodeMask + 1]; 1571OperandParameters ExecutionModeOperands[ExecutionModeCeiling]; 1572OperandParameters DecorationOperands[DecorationCeiling]; 1573 1574EnumDefinition OperandClassParams[OperandCount]; 1575EnumParameters ExecutionModeParams[ExecutionModeCeiling]; 1576EnumParameters ImageOperandsParams[ImageOperandsCeiling]; 1577EnumParameters DecorationParams[DecorationCeiling]; 1578EnumParameters LoopControlParams[FunctionControlCeiling]; 1579EnumParameters SelectionControlParams[SelectControlCeiling]; 1580EnumParameters FunctionControlParams[FunctionControlCeiling]; 1581EnumParameters MemoryAccessParams[MemoryAccessCeiling]; 1582EnumParameters CooperativeMatrixOperandsParams[CooperativeMatrixOperandsCeiling]; 1583 1584// Set up all the parameterizing descriptions of the opcodes, operands, etc. 1585void Parameterize() 1586{ 1587 // only do this once. 1588 static std::once_flag initialized; 1589 std::call_once(initialized, [](){ 1590 1591 // Exceptions to having a result <id> and a resulting type <id>. 1592 // (Everything is initialized to have both). 1593 1594 InstructionDesc[OpNop].setResultAndType(false, false); 1595 InstructionDesc[OpSource].setResultAndType(false, false); 1596 InstructionDesc[OpSourceContinued].setResultAndType(false, false); 1597 InstructionDesc[OpSourceExtension].setResultAndType(false, false); 1598 InstructionDesc[OpExtension].setResultAndType(false, false); 1599 InstructionDesc[OpExtInstImport].setResultAndType(true, false); 1600 InstructionDesc[OpCapability].setResultAndType(false, false); 1601 InstructionDesc[OpMemoryModel].setResultAndType(false, false); 1602 InstructionDesc[OpEntryPoint].setResultAndType(false, false); 1603 InstructionDesc[OpExecutionMode].setResultAndType(false, false); 1604 InstructionDesc[OpExecutionModeId].setResultAndType(false, false); 1605 InstructionDesc[OpTypeVoid].setResultAndType(true, false); 1606 InstructionDesc[OpTypeBool].setResultAndType(true, false); 1607 InstructionDesc[OpTypeInt].setResultAndType(true, false); 1608 InstructionDesc[OpTypeFloat].setResultAndType(true, false); 1609 InstructionDesc[OpTypeVector].setResultAndType(true, false); 1610 InstructionDesc[OpTypeMatrix].setResultAndType(true, false); 1611 InstructionDesc[OpTypeImage].setResultAndType(true, false); 1612 InstructionDesc[OpTypeSampler].setResultAndType(true, false); 1613 InstructionDesc[OpTypeSampledImage].setResultAndType(true, false); 1614 InstructionDesc[OpTypeArray].setResultAndType(true, false); 1615 InstructionDesc[OpTypeRuntimeArray].setResultAndType(true, false); 1616 InstructionDesc[OpTypeStruct].setResultAndType(true, false); 1617 InstructionDesc[OpTypeOpaque].setResultAndType(true, false); 1618 InstructionDesc[OpTypePointer].setResultAndType(true, false); 1619 InstructionDesc[OpTypeForwardPointer].setResultAndType(false, false); 1620 InstructionDesc[OpTypeFunction].setResultAndType(true, false); 1621 InstructionDesc[OpTypeEvent].setResultAndType(true, false); 1622 InstructionDesc[OpTypeDeviceEvent].setResultAndType(true, false); 1623 InstructionDesc[OpTypeReserveId].setResultAndType(true, false); 1624 InstructionDesc[OpTypeQueue].setResultAndType(true, false); 1625 InstructionDesc[OpTypePipe].setResultAndType(true, false); 1626 InstructionDesc[OpFunctionEnd].setResultAndType(false, false); 1627 InstructionDesc[OpStore].setResultAndType(false, false); 1628 InstructionDesc[OpImageWrite].setResultAndType(false, false); 1629 InstructionDesc[OpDecorationGroup].setResultAndType(true, false); 1630 InstructionDesc[OpDecorate].setResultAndType(false, false); 1631 InstructionDesc[OpDecorateId].setResultAndType(false, false); 1632 InstructionDesc[OpDecorateStringGOOGLE].setResultAndType(false, false); 1633 InstructionDesc[OpMemberDecorate].setResultAndType(false, false); 1634 InstructionDesc[OpMemberDecorateStringGOOGLE].setResultAndType(false, false); 1635 InstructionDesc[OpGroupDecorate].setResultAndType(false, false); 1636 InstructionDesc[OpGroupMemberDecorate].setResultAndType(false, false); 1637 InstructionDesc[OpName].setResultAndType(false, false); 1638 InstructionDesc[OpMemberName].setResultAndType(false, false); 1639 InstructionDesc[OpString].setResultAndType(true, false); 1640 InstructionDesc[OpLine].setResultAndType(false, false); 1641 InstructionDesc[OpNoLine].setResultAndType(false, false); 1642 InstructionDesc[OpCopyMemory].setResultAndType(false, false); 1643 InstructionDesc[OpCopyMemorySized].setResultAndType(false, false); 1644 InstructionDesc[OpEmitVertex].setResultAndType(false, false); 1645 InstructionDesc[OpEndPrimitive].setResultAndType(false, false); 1646 InstructionDesc[OpEmitStreamVertex].setResultAndType(false, false); 1647 InstructionDesc[OpEndStreamPrimitive].setResultAndType(false, false); 1648 InstructionDesc[OpControlBarrier].setResultAndType(false, false); 1649 InstructionDesc[OpMemoryBarrier].setResultAndType(false, false); 1650 InstructionDesc[OpAtomicStore].setResultAndType(false, false); 1651 InstructionDesc[OpLoopMerge].setResultAndType(false, false); 1652 InstructionDesc[OpSelectionMerge].setResultAndType(false, false); 1653 InstructionDesc[OpLabel].setResultAndType(true, false); 1654 InstructionDesc[OpBranch].setResultAndType(false, false); 1655 InstructionDesc[OpBranchConditional].setResultAndType(false, false); 1656 InstructionDesc[OpSwitch].setResultAndType(false, false); 1657 InstructionDesc[OpKill].setResultAndType(false, false); 1658 InstructionDesc[OpTerminateInvocation].setResultAndType(false, false); 1659 InstructionDesc[OpReturn].setResultAndType(false, false); 1660 InstructionDesc[OpReturnValue].setResultAndType(false, false); 1661 InstructionDesc[OpUnreachable].setResultAndType(false, false); 1662 InstructionDesc[OpLifetimeStart].setResultAndType(false, false); 1663 InstructionDesc[OpLifetimeStop].setResultAndType(false, false); 1664 InstructionDesc[OpCommitReadPipe].setResultAndType(false, false); 1665 InstructionDesc[OpCommitWritePipe].setResultAndType(false, false); 1666 InstructionDesc[OpGroupCommitWritePipe].setResultAndType(false, false); 1667 InstructionDesc[OpGroupCommitReadPipe].setResultAndType(false, false); 1668 InstructionDesc[OpCaptureEventProfilingInfo].setResultAndType(false, false); 1669 InstructionDesc[OpSetUserEventStatus].setResultAndType(false, false); 1670 InstructionDesc[OpRetainEvent].setResultAndType(false, false); 1671 InstructionDesc[OpReleaseEvent].setResultAndType(false, false); 1672 InstructionDesc[OpGroupWaitEvents].setResultAndType(false, false); 1673 InstructionDesc[OpAtomicFlagClear].setResultAndType(false, false); 1674 InstructionDesc[OpModuleProcessed].setResultAndType(false, false); 1675 InstructionDesc[OpTypeCooperativeMatrixNV].setResultAndType(true, false); 1676 InstructionDesc[OpCooperativeMatrixStoreNV].setResultAndType(false, false); 1677 InstructionDesc[OpTypeCooperativeMatrixKHR].setResultAndType(true, false); 1678 InstructionDesc[OpCooperativeMatrixStoreKHR].setResultAndType(false, false); 1679 InstructionDesc[OpBeginInvocationInterlockEXT].setResultAndType(false, false); 1680 InstructionDesc[OpEndInvocationInterlockEXT].setResultAndType(false, false); 1681 1682 // Specific additional context-dependent operands 1683 1684 ExecutionModeOperands[ExecutionModeInvocations].push(OperandLiteralNumber, "'Number of <<Invocation,invocations>>'"); 1685 1686 ExecutionModeOperands[ExecutionModeLocalSize].push(OperandLiteralNumber, "'x size'"); 1687 ExecutionModeOperands[ExecutionModeLocalSize].push(OperandLiteralNumber, "'y size'"); 1688 ExecutionModeOperands[ExecutionModeLocalSize].push(OperandLiteralNumber, "'z size'"); 1689 1690 ExecutionModeOperands[ExecutionModeLocalSizeHint].push(OperandLiteralNumber, "'x size'"); 1691 ExecutionModeOperands[ExecutionModeLocalSizeHint].push(OperandLiteralNumber, "'y size'"); 1692 ExecutionModeOperands[ExecutionModeLocalSizeHint].push(OperandLiteralNumber, "'z size'"); 1693 1694 ExecutionModeOperands[ExecutionModeOutputVertices].push(OperandLiteralNumber, "'Vertex count'"); 1695 ExecutionModeOperands[ExecutionModeVecTypeHint].push(OperandLiteralNumber, "'Vector type'"); 1696 1697 DecorationOperands[DecorationStream].push(OperandLiteralNumber, "'Stream Number'"); 1698 DecorationOperands[DecorationLocation].push(OperandLiteralNumber, "'Location'"); 1699 DecorationOperands[DecorationComponent].push(OperandLiteralNumber, "'Component'"); 1700 DecorationOperands[DecorationIndex].push(OperandLiteralNumber, "'Index'"); 1701 DecorationOperands[DecorationBinding].push(OperandLiteralNumber, "'Binding Point'"); 1702 DecorationOperands[DecorationDescriptorSet].push(OperandLiteralNumber, "'Descriptor Set'"); 1703 DecorationOperands[DecorationOffset].push(OperandLiteralNumber, "'Byte Offset'"); 1704 DecorationOperands[DecorationXfbBuffer].push(OperandLiteralNumber, "'XFB Buffer Number'"); 1705 DecorationOperands[DecorationXfbStride].push(OperandLiteralNumber, "'XFB Stride'"); 1706 DecorationOperands[DecorationArrayStride].push(OperandLiteralNumber, "'Array Stride'"); 1707 DecorationOperands[DecorationMatrixStride].push(OperandLiteralNumber, "'Matrix Stride'"); 1708 DecorationOperands[DecorationBuiltIn].push(OperandLiteralNumber, "See <<BuiltIn,*BuiltIn*>>"); 1709 DecorationOperands[DecorationFPRoundingMode].push(OperandFPRoundingMode, "'Floating-Point Rounding Mode'"); 1710 DecorationOperands[DecorationFPFastMathMode].push(OperandFPFastMath, "'Fast-Math Mode'"); 1711 DecorationOperands[DecorationLinkageAttributes].push(OperandLiteralString, "'Name'"); 1712 DecorationOperands[DecorationLinkageAttributes].push(OperandLinkageType, "'Linkage Type'"); 1713 DecorationOperands[DecorationFuncParamAttr].push(OperandFuncParamAttr, "'Function Parameter Attribute'"); 1714 DecorationOperands[DecorationSpecId].push(OperandLiteralNumber, "'Specialization Constant ID'"); 1715 DecorationOperands[DecorationInputAttachmentIndex].push(OperandLiteralNumber, "'Attachment Index'"); 1716 DecorationOperands[DecorationAlignment].push(OperandLiteralNumber, "'Alignment'"); 1717 1718 OperandClassParams[OperandSource].set(0, SourceString, nullptr); 1719 OperandClassParams[OperandExecutionModel].set(0, ExecutionModelString, nullptr); 1720 OperandClassParams[OperandAddressing].set(0, AddressingString, nullptr); 1721 OperandClassParams[OperandMemory].set(0, MemoryString, nullptr); 1722 OperandClassParams[OperandExecutionMode].set(ExecutionModeCeiling, ExecutionModeString, ExecutionModeParams); 1723 OperandClassParams[OperandExecutionMode].setOperands(ExecutionModeOperands); 1724 OperandClassParams[OperandStorage].set(0, StorageClassString, nullptr); 1725 OperandClassParams[OperandDimensionality].set(0, DimensionString, nullptr); 1726 OperandClassParams[OperandSamplerAddressingMode].set(0, SamplerAddressingModeString, nullptr); 1727 OperandClassParams[OperandSamplerFilterMode].set(0, SamplerFilterModeString, nullptr); 1728 OperandClassParams[OperandSamplerImageFormat].set(0, ImageFormatString, nullptr); 1729 OperandClassParams[OperandImageChannelOrder].set(0, ImageChannelOrderString, nullptr); 1730 OperandClassParams[OperandImageChannelDataType].set(0, ImageChannelDataTypeString, nullptr); 1731 OperandClassParams[OperandImageOperands].set(ImageOperandsCeiling, ImageOperandsString, ImageOperandsParams, true); 1732 OperandClassParams[OperandFPFastMath].set(0, FPFastMathString, nullptr, true); 1733 OperandClassParams[OperandFPRoundingMode].set(0, FPRoundingModeString, nullptr); 1734 OperandClassParams[OperandLinkageType].set(0, LinkageTypeString, nullptr); 1735 OperandClassParams[OperandFuncParamAttr].set(0, FuncParamAttrString, nullptr); 1736 OperandClassParams[OperandAccessQualifier].set(0, AccessQualifierString, nullptr); 1737 OperandClassParams[OperandDecoration].set(DecorationCeiling, DecorationString, DecorationParams); 1738 OperandClassParams[OperandDecoration].setOperands(DecorationOperands); 1739 OperandClassParams[OperandBuiltIn].set(0, BuiltInString, nullptr); 1740 OperandClassParams[OperandSelect].set(SelectControlCeiling, SelectControlString, SelectionControlParams, true); 1741 OperandClassParams[OperandLoop].set(LoopControlCeiling, LoopControlString, LoopControlParams, true); 1742 OperandClassParams[OperandFunction].set(FunctionControlCeiling, FunctionControlString, FunctionControlParams, true); 1743 OperandClassParams[OperandMemorySemantics].set(0, MemorySemanticsString, nullptr, true); 1744 OperandClassParams[OperandMemoryAccess].set(MemoryAccessCeiling, MemoryAccessString, MemoryAccessParams, true); 1745 OperandClassParams[OperandScope].set(0, ScopeString, nullptr); 1746 OperandClassParams[OperandGroupOperation].set(0, GroupOperationString, nullptr); 1747 OperandClassParams[OperandKernelEnqueueFlags].set(0, KernelEnqueueFlagsString, nullptr); 1748 OperandClassParams[OperandKernelProfilingInfo].set(0, KernelProfilingInfoString, nullptr, true); 1749 OperandClassParams[OperandCapability].set(0, CapabilityString, nullptr); 1750 OperandClassParams[OperandCooperativeMatrixOperands].set(CooperativeMatrixOperandsCeiling, CooperativeMatrixOperandsString, CooperativeMatrixOperandsParams, true); 1751 OperandClassParams[OperandOpcode].set(OpCodeMask + 1, OpcodeString, nullptr); 1752 1753 // set name of operator, an initial set of <id> style operands, and the description 1754 1755 InstructionDesc[OpSource].operands.push(OperandSource, ""); 1756 InstructionDesc[OpSource].operands.push(OperandLiteralNumber, "'Version'"); 1757 InstructionDesc[OpSource].operands.push(OperandId, "'File'", true); 1758 InstructionDesc[OpSource].operands.push(OperandLiteralString, "'Source'", true); 1759 1760 InstructionDesc[OpSourceContinued].operands.push(OperandLiteralString, "'Continued Source'"); 1761 1762 InstructionDesc[OpSourceExtension].operands.push(OperandLiteralString, "'Extension'"); 1763 1764 InstructionDesc[OpName].operands.push(OperandId, "'Target'"); 1765 InstructionDesc[OpName].operands.push(OperandLiteralString, "'Name'"); 1766 1767 InstructionDesc[OpMemberName].operands.push(OperandId, "'Type'"); 1768 InstructionDesc[OpMemberName].operands.push(OperandLiteralNumber, "'Member'"); 1769 InstructionDesc[OpMemberName].operands.push(OperandLiteralString, "'Name'"); 1770 1771 InstructionDesc[OpString].operands.push(OperandLiteralString, "'String'"); 1772 1773 InstructionDesc[OpLine].operands.push(OperandId, "'File'"); 1774 InstructionDesc[OpLine].operands.push(OperandLiteralNumber, "'Line'"); 1775 InstructionDesc[OpLine].operands.push(OperandLiteralNumber, "'Column'"); 1776 1777 InstructionDesc[OpExtension].operands.push(OperandLiteralString, "'Name'"); 1778 1779 InstructionDesc[OpExtInstImport].operands.push(OperandLiteralString, "'Name'"); 1780 1781 InstructionDesc[OpCapability].operands.push(OperandCapability, "'Capability'"); 1782 1783 InstructionDesc[OpMemoryModel].operands.push(OperandAddressing, ""); 1784 InstructionDesc[OpMemoryModel].operands.push(OperandMemory, ""); 1785 1786 InstructionDesc[OpEntryPoint].operands.push(OperandExecutionModel, ""); 1787 InstructionDesc[OpEntryPoint].operands.push(OperandId, "'Entry Point'"); 1788 InstructionDesc[OpEntryPoint].operands.push(OperandLiteralString, "'Name'"); 1789 InstructionDesc[OpEntryPoint].operands.push(OperandVariableIds, "'Interface'"); 1790 1791 InstructionDesc[OpExecutionMode].operands.push(OperandId, "'Entry Point'"); 1792 InstructionDesc[OpExecutionMode].operands.push(OperandExecutionMode, "'Mode'"); 1793 InstructionDesc[OpExecutionMode].operands.push(OperandOptionalLiteral, "See <<Execution_Mode,Execution Mode>>"); 1794 1795 InstructionDesc[OpExecutionModeId].operands.push(OperandId, "'Entry Point'"); 1796 InstructionDesc[OpExecutionModeId].operands.push(OperandExecutionMode, "'Mode'"); 1797 InstructionDesc[OpExecutionModeId].operands.push(OperandVariableIds, "See <<Execution_Mode,Execution Mode>>"); 1798 1799 InstructionDesc[OpTypeInt].operands.push(OperandLiteralNumber, "'Width'"); 1800 InstructionDesc[OpTypeInt].operands.push(OperandLiteralNumber, "'Signedness'"); 1801 1802 InstructionDesc[OpTypeFloat].operands.push(OperandLiteralNumber, "'Width'"); 1803 1804 InstructionDesc[OpTypeVector].operands.push(OperandId, "'Component Type'"); 1805 InstructionDesc[OpTypeVector].operands.push(OperandLiteralNumber, "'Component Count'"); 1806 1807 InstructionDesc[OpTypeMatrix].operands.push(OperandId, "'Column Type'"); 1808 InstructionDesc[OpTypeMatrix].operands.push(OperandLiteralNumber, "'Column Count'"); 1809 1810 InstructionDesc[OpTypeImage].operands.push(OperandId, "'Sampled Type'"); 1811 InstructionDesc[OpTypeImage].operands.push(OperandDimensionality, ""); 1812 InstructionDesc[OpTypeImage].operands.push(OperandLiteralNumber, "'Depth'"); 1813 InstructionDesc[OpTypeImage].operands.push(OperandLiteralNumber, "'Arrayed'"); 1814 InstructionDesc[OpTypeImage].operands.push(OperandLiteralNumber, "'MS'"); 1815 InstructionDesc[OpTypeImage].operands.push(OperandLiteralNumber, "'Sampled'"); 1816 InstructionDesc[OpTypeImage].operands.push(OperandSamplerImageFormat, ""); 1817 InstructionDesc[OpTypeImage].operands.push(OperandAccessQualifier, "", true); 1818 1819 InstructionDesc[OpTypeSampledImage].operands.push(OperandId, "'Image Type'"); 1820 1821 InstructionDesc[OpTypeArray].operands.push(OperandId, "'Element Type'"); 1822 InstructionDesc[OpTypeArray].operands.push(OperandId, "'Length'"); 1823 1824 InstructionDesc[OpTypeRuntimeArray].operands.push(OperandId, "'Element Type'"); 1825 1826 InstructionDesc[OpTypeStruct].operands.push(OperandVariableIds, "'Member 0 type', +\n'member 1 type', +\n..."); 1827 1828 InstructionDesc[OpTypeOpaque].operands.push(OperandLiteralString, "The name of the opaque type."); 1829 1830 InstructionDesc[OpTypePointer].operands.push(OperandStorage, ""); 1831 InstructionDesc[OpTypePointer].operands.push(OperandId, "'Type'"); 1832 1833 InstructionDesc[OpTypeForwardPointer].operands.push(OperandId, "'Pointer Type'"); 1834 InstructionDesc[OpTypeForwardPointer].operands.push(OperandStorage, ""); 1835 1836 InstructionDesc[OpTypePipe].operands.push(OperandAccessQualifier, "'Qualifier'"); 1837 1838 InstructionDesc[OpTypeFunction].operands.push(OperandId, "'Return Type'"); 1839 InstructionDesc[OpTypeFunction].operands.push(OperandVariableIds, "'Parameter 0 Type', +\n'Parameter 1 Type', +\n..."); 1840 1841 InstructionDesc[OpConstant].operands.push(OperandVariableLiterals, "'Value'"); 1842 1843 InstructionDesc[OpConstantComposite].operands.push(OperandVariableIds, "'Constituents'"); 1844 1845 InstructionDesc[OpConstantSampler].operands.push(OperandSamplerAddressingMode, ""); 1846 InstructionDesc[OpConstantSampler].operands.push(OperandLiteralNumber, "'Param'"); 1847 InstructionDesc[OpConstantSampler].operands.push(OperandSamplerFilterMode, ""); 1848 1849 InstructionDesc[OpSpecConstant].operands.push(OperandVariableLiterals, "'Value'"); 1850 1851 InstructionDesc[OpSpecConstantComposite].operands.push(OperandVariableIds, "'Constituents'"); 1852 1853 InstructionDesc[OpSpecConstantOp].operands.push(OperandLiteralNumber, "'Opcode'"); 1854 InstructionDesc[OpSpecConstantOp].operands.push(OperandVariableIds, "'Operands'"); 1855 1856 InstructionDesc[OpVariable].operands.push(OperandStorage, ""); 1857 InstructionDesc[OpVariable].operands.push(OperandId, "'Initializer'", true); 1858 1859 InstructionDesc[OpFunction].operands.push(OperandFunction, ""); 1860 InstructionDesc[OpFunction].operands.push(OperandId, "'Function Type'"); 1861 1862 InstructionDesc[OpFunctionCall].operands.push(OperandId, "'Function'"); 1863 InstructionDesc[OpFunctionCall].operands.push(OperandVariableIds, "'Argument 0', +\n'Argument 1', +\n..."); 1864 1865 InstructionDesc[OpExtInst].operands.push(OperandId, "'Set'"); 1866 InstructionDesc[OpExtInst].operands.push(OperandLiteralNumber, "'Instruction'"); 1867 InstructionDesc[OpExtInst].operands.push(OperandVariableIds, "'Operand 1', +\n'Operand 2', +\n..."); 1868 1869 InstructionDesc[OpLoad].operands.push(OperandId, "'Pointer'"); 1870 InstructionDesc[OpLoad].operands.push(OperandMemoryAccess, "", true); 1871 InstructionDesc[OpLoad].operands.push(OperandLiteralNumber, "", true); 1872 InstructionDesc[OpLoad].operands.push(OperandId, "", true); 1873 1874 InstructionDesc[OpStore].operands.push(OperandId, "'Pointer'"); 1875 InstructionDesc[OpStore].operands.push(OperandId, "'Object'"); 1876 InstructionDesc[OpStore].operands.push(OperandMemoryAccess, "", true); 1877 InstructionDesc[OpStore].operands.push(OperandLiteralNumber, "", true); 1878 InstructionDesc[OpStore].operands.push(OperandId, "", true); 1879 1880 InstructionDesc[OpPhi].operands.push(OperandVariableIds, "'Variable, Parent, ...'"); 1881 1882 InstructionDesc[OpDecorate].operands.push(OperandId, "'Target'"); 1883 InstructionDesc[OpDecorate].operands.push(OperandDecoration, ""); 1884 InstructionDesc[OpDecorate].operands.push(OperandVariableLiterals, "See <<Decoration,'Decoration'>>."); 1885 1886 InstructionDesc[OpDecorateId].operands.push(OperandId, "'Target'"); 1887 InstructionDesc[OpDecorateId].operands.push(OperandDecoration, ""); 1888 InstructionDesc[OpDecorateId].operands.push(OperandVariableIds, "See <<Decoration,'Decoration'>>."); 1889 1890 InstructionDesc[OpDecorateStringGOOGLE].operands.push(OperandId, "'Target'"); 1891 InstructionDesc[OpDecorateStringGOOGLE].operands.push(OperandDecoration, ""); 1892 InstructionDesc[OpDecorateStringGOOGLE].operands.push(OperandVariableLiteralStrings, "'Literal Strings'"); 1893 1894 InstructionDesc[OpMemberDecorate].operands.push(OperandId, "'Structure Type'"); 1895 InstructionDesc[OpMemberDecorate].operands.push(OperandLiteralNumber, "'Member'"); 1896 InstructionDesc[OpMemberDecorate].operands.push(OperandDecoration, ""); 1897 InstructionDesc[OpMemberDecorate].operands.push(OperandVariableLiterals, "See <<Decoration,'Decoration'>>."); 1898 1899 InstructionDesc[OpMemberDecorateStringGOOGLE].operands.push(OperandId, "'Structure Type'"); 1900 InstructionDesc[OpMemberDecorateStringGOOGLE].operands.push(OperandLiteralNumber, "'Member'"); 1901 InstructionDesc[OpMemberDecorateStringGOOGLE].operands.push(OperandDecoration, ""); 1902 InstructionDesc[OpMemberDecorateStringGOOGLE].operands.push(OperandVariableLiteralStrings, "'Literal Strings'"); 1903 1904 InstructionDesc[OpGroupDecorate].operands.push(OperandId, "'Decoration Group'"); 1905 InstructionDesc[OpGroupDecorate].operands.push(OperandVariableIds, "'Targets'"); 1906 1907 InstructionDesc[OpGroupMemberDecorate].operands.push(OperandId, "'Decoration Group'"); 1908 InstructionDesc[OpGroupMemberDecorate].operands.push(OperandVariableIdLiteral, "'Targets'"); 1909 1910 InstructionDesc[OpVectorExtractDynamic].operands.push(OperandId, "'Vector'"); 1911 InstructionDesc[OpVectorExtractDynamic].operands.push(OperandId, "'Index'"); 1912 1913 InstructionDesc[OpVectorInsertDynamic].operands.push(OperandId, "'Vector'"); 1914 InstructionDesc[OpVectorInsertDynamic].operands.push(OperandId, "'Component'"); 1915 InstructionDesc[OpVectorInsertDynamic].operands.push(OperandId, "'Index'"); 1916 1917 InstructionDesc[OpVectorShuffle].operands.push(OperandId, "'Vector 1'"); 1918 InstructionDesc[OpVectorShuffle].operands.push(OperandId, "'Vector 2'"); 1919 InstructionDesc[OpVectorShuffle].operands.push(OperandVariableLiterals, "'Components'"); 1920 1921 InstructionDesc[OpCompositeConstruct].operands.push(OperandVariableIds, "'Constituents'"); 1922 1923 InstructionDesc[OpCompositeExtract].operands.push(OperandId, "'Composite'"); 1924 InstructionDesc[OpCompositeExtract].operands.push(OperandVariableLiterals, "'Indexes'"); 1925 1926 InstructionDesc[OpCompositeInsert].operands.push(OperandId, "'Object'"); 1927 InstructionDesc[OpCompositeInsert].operands.push(OperandId, "'Composite'"); 1928 InstructionDesc[OpCompositeInsert].operands.push(OperandVariableLiterals, "'Indexes'"); 1929 1930 InstructionDesc[OpCopyObject].operands.push(OperandId, "'Operand'"); 1931 1932 InstructionDesc[OpCopyMemory].operands.push(OperandId, "'Target'"); 1933 InstructionDesc[OpCopyMemory].operands.push(OperandId, "'Source'"); 1934 InstructionDesc[OpCopyMemory].operands.push(OperandMemoryAccess, "", true); 1935 1936 InstructionDesc[OpCopyMemorySized].operands.push(OperandId, "'Target'"); 1937 InstructionDesc[OpCopyMemorySized].operands.push(OperandId, "'Source'"); 1938 InstructionDesc[OpCopyMemorySized].operands.push(OperandId, "'Size'"); 1939 InstructionDesc[OpCopyMemorySized].operands.push(OperandMemoryAccess, "", true); 1940 1941 InstructionDesc[OpSampledImage].operands.push(OperandId, "'Image'"); 1942 InstructionDesc[OpSampledImage].operands.push(OperandId, "'Sampler'"); 1943 1944 InstructionDesc[OpImage].operands.push(OperandId, "'Sampled Image'"); 1945 1946 InstructionDesc[OpImageRead].operands.push(OperandId, "'Image'"); 1947 InstructionDesc[OpImageRead].operands.push(OperandId, "'Coordinate'"); 1948 InstructionDesc[OpImageRead].operands.push(OperandImageOperands, "", true); 1949 InstructionDesc[OpImageRead].operands.push(OperandVariableIds, "", true); 1950 1951 InstructionDesc[OpImageWrite].operands.push(OperandId, "'Image'"); 1952 InstructionDesc[OpImageWrite].operands.push(OperandId, "'Coordinate'"); 1953 InstructionDesc[OpImageWrite].operands.push(OperandId, "'Texel'"); 1954 InstructionDesc[OpImageWrite].operands.push(OperandImageOperands, "", true); 1955 InstructionDesc[OpImageWrite].operands.push(OperandVariableIds, "", true); 1956 1957 InstructionDesc[OpImageSampleImplicitLod].operands.push(OperandId, "'Sampled Image'"); 1958 InstructionDesc[OpImageSampleImplicitLod].operands.push(OperandId, "'Coordinate'"); 1959 InstructionDesc[OpImageSampleImplicitLod].operands.push(OperandImageOperands, "", true); 1960 InstructionDesc[OpImageSampleImplicitLod].operands.push(OperandVariableIds, "", true); 1961 1962 InstructionDesc[OpImageSampleExplicitLod].operands.push(OperandId, "'Sampled Image'"); 1963 InstructionDesc[OpImageSampleExplicitLod].operands.push(OperandId, "'Coordinate'"); 1964 InstructionDesc[OpImageSampleExplicitLod].operands.push(OperandImageOperands, "", true); 1965 InstructionDesc[OpImageSampleExplicitLod].operands.push(OperandVariableIds, "", true); 1966 1967 InstructionDesc[OpImageSampleDrefImplicitLod].operands.push(OperandId, "'Sampled Image'"); 1968 InstructionDesc[OpImageSampleDrefImplicitLod].operands.push(OperandId, "'Coordinate'"); 1969 InstructionDesc[OpImageSampleDrefImplicitLod].operands.push(OperandId, "'D~ref~'"); 1970 InstructionDesc[OpImageSampleDrefImplicitLod].operands.push(OperandImageOperands, "", true); 1971 InstructionDesc[OpImageSampleDrefImplicitLod].operands.push(OperandVariableIds, "", true); 1972 1973 InstructionDesc[OpImageSampleDrefExplicitLod].operands.push(OperandId, "'Sampled Image'"); 1974 InstructionDesc[OpImageSampleDrefExplicitLod].operands.push(OperandId, "'Coordinate'"); 1975 InstructionDesc[OpImageSampleDrefExplicitLod].operands.push(OperandId, "'D~ref~'"); 1976 InstructionDesc[OpImageSampleDrefExplicitLod].operands.push(OperandImageOperands, "", true); 1977 InstructionDesc[OpImageSampleDrefExplicitLod].operands.push(OperandVariableIds, "", true); 1978 1979 InstructionDesc[OpImageSampleProjImplicitLod].operands.push(OperandId, "'Sampled Image'"); 1980 InstructionDesc[OpImageSampleProjImplicitLod].operands.push(OperandId, "'Coordinate'"); 1981 InstructionDesc[OpImageSampleProjImplicitLod].operands.push(OperandImageOperands, "", true); 1982 InstructionDesc[OpImageSampleProjImplicitLod].operands.push(OperandVariableIds, "", true); 1983 1984 InstructionDesc[OpImageSampleProjExplicitLod].operands.push(OperandId, "'Sampled Image'"); 1985 InstructionDesc[OpImageSampleProjExplicitLod].operands.push(OperandId, "'Coordinate'"); 1986 InstructionDesc[OpImageSampleProjExplicitLod].operands.push(OperandImageOperands, "", true); 1987 InstructionDesc[OpImageSampleProjExplicitLod].operands.push(OperandVariableIds, "", true); 1988 1989 InstructionDesc[OpImageSampleProjDrefImplicitLod].operands.push(OperandId, "'Sampled Image'"); 1990 InstructionDesc[OpImageSampleProjDrefImplicitLod].operands.push(OperandId, "'Coordinate'"); 1991 InstructionDesc[OpImageSampleProjDrefImplicitLod].operands.push(OperandId, "'D~ref~'"); 1992 InstructionDesc[OpImageSampleProjDrefImplicitLod].operands.push(OperandImageOperands, "", true); 1993 InstructionDesc[OpImageSampleProjDrefImplicitLod].operands.push(OperandVariableIds, "", true); 1994 1995 InstructionDesc[OpImageSampleProjDrefExplicitLod].operands.push(OperandId, "'Sampled Image'"); 1996 InstructionDesc[OpImageSampleProjDrefExplicitLod].operands.push(OperandId, "'Coordinate'"); 1997 InstructionDesc[OpImageSampleProjDrefExplicitLod].operands.push(OperandId, "'D~ref~'"); 1998 InstructionDesc[OpImageSampleProjDrefExplicitLod].operands.push(OperandImageOperands, "", true); 1999 InstructionDesc[OpImageSampleProjDrefExplicitLod].operands.push(OperandVariableIds, "", true); 2000 2001 InstructionDesc[OpImageFetch].operands.push(OperandId, "'Image'"); 2002 InstructionDesc[OpImageFetch].operands.push(OperandId, "'Coordinate'"); 2003 InstructionDesc[OpImageFetch].operands.push(OperandImageOperands, "", true); 2004 InstructionDesc[OpImageFetch].operands.push(OperandVariableIds, "", true); 2005 2006 InstructionDesc[OpImageGather].operands.push(OperandId, "'Sampled Image'"); 2007 InstructionDesc[OpImageGather].operands.push(OperandId, "'Coordinate'"); 2008 InstructionDesc[OpImageGather].operands.push(OperandId, "'Component'"); 2009 InstructionDesc[OpImageGather].operands.push(OperandImageOperands, "", true); 2010 InstructionDesc[OpImageGather].operands.push(OperandVariableIds, "", true); 2011 2012 InstructionDesc[OpImageDrefGather].operands.push(OperandId, "'Sampled Image'"); 2013 InstructionDesc[OpImageDrefGather].operands.push(OperandId, "'Coordinate'"); 2014 InstructionDesc[OpImageDrefGather].operands.push(OperandId, "'D~ref~'"); 2015 InstructionDesc[OpImageDrefGather].operands.push(OperandImageOperands, "", true); 2016 InstructionDesc[OpImageDrefGather].operands.push(OperandVariableIds, "", true); 2017 2018 InstructionDesc[OpImageSparseSampleImplicitLod].operands.push(OperandId, "'Sampled Image'"); 2019 InstructionDesc[OpImageSparseSampleImplicitLod].operands.push(OperandId, "'Coordinate'"); 2020 InstructionDesc[OpImageSparseSampleImplicitLod].operands.push(OperandImageOperands, "", true); 2021 InstructionDesc[OpImageSparseSampleImplicitLod].operands.push(OperandVariableIds, "", true); 2022 2023 InstructionDesc[OpImageSparseSampleExplicitLod].operands.push(OperandId, "'Sampled Image'"); 2024 InstructionDesc[OpImageSparseSampleExplicitLod].operands.push(OperandId, "'Coordinate'"); 2025 InstructionDesc[OpImageSparseSampleExplicitLod].operands.push(OperandImageOperands, "", true); 2026 InstructionDesc[OpImageSparseSampleExplicitLod].operands.push(OperandVariableIds, "", true); 2027 2028 InstructionDesc[OpImageSparseSampleDrefImplicitLod].operands.push(OperandId, "'Sampled Image'"); 2029 InstructionDesc[OpImageSparseSampleDrefImplicitLod].operands.push(OperandId, "'Coordinate'"); 2030 InstructionDesc[OpImageSparseSampleDrefImplicitLod].operands.push(OperandId, "'D~ref~'"); 2031 InstructionDesc[OpImageSparseSampleDrefImplicitLod].operands.push(OperandImageOperands, "", true); 2032 InstructionDesc[OpImageSparseSampleDrefImplicitLod].operands.push(OperandVariableIds, "", true); 2033 2034 InstructionDesc[OpImageSparseSampleDrefExplicitLod].operands.push(OperandId, "'Sampled Image'"); 2035 InstructionDesc[OpImageSparseSampleDrefExplicitLod].operands.push(OperandId, "'Coordinate'"); 2036 InstructionDesc[OpImageSparseSampleDrefExplicitLod].operands.push(OperandId, "'D~ref~'"); 2037 InstructionDesc[OpImageSparseSampleDrefExplicitLod].operands.push(OperandImageOperands, "", true); 2038 InstructionDesc[OpImageSparseSampleDrefExplicitLod].operands.push(OperandVariableIds, "", true); 2039 2040 InstructionDesc[OpImageSparseSampleProjImplicitLod].operands.push(OperandId, "'Sampled Image'"); 2041 InstructionDesc[OpImageSparseSampleProjImplicitLod].operands.push(OperandId, "'Coordinate'"); 2042 InstructionDesc[OpImageSparseSampleProjImplicitLod].operands.push(OperandImageOperands, "", true); 2043 InstructionDesc[OpImageSparseSampleProjImplicitLod].operands.push(OperandVariableIds, "", true); 2044 2045 InstructionDesc[OpImageSparseSampleProjExplicitLod].operands.push(OperandId, "'Sampled Image'"); 2046 InstructionDesc[OpImageSparseSampleProjExplicitLod].operands.push(OperandId, "'Coordinate'"); 2047 InstructionDesc[OpImageSparseSampleProjExplicitLod].operands.push(OperandImageOperands, "", true); 2048 InstructionDesc[OpImageSparseSampleProjExplicitLod].operands.push(OperandVariableIds, "", true); 2049 2050 InstructionDesc[OpImageSparseSampleProjDrefImplicitLod].operands.push(OperandId, "'Sampled Image'"); 2051 InstructionDesc[OpImageSparseSampleProjDrefImplicitLod].operands.push(OperandId, "'Coordinate'"); 2052 InstructionDesc[OpImageSparseSampleProjDrefImplicitLod].operands.push(OperandId, "'D~ref~'"); 2053 InstructionDesc[OpImageSparseSampleProjDrefImplicitLod].operands.push(OperandImageOperands, "", true); 2054 InstructionDesc[OpImageSparseSampleProjDrefImplicitLod].operands.push(OperandVariableIds, "", true); 2055 2056 InstructionDesc[OpImageSparseSampleProjDrefExplicitLod].operands.push(OperandId, "'Sampled Image'"); 2057 InstructionDesc[OpImageSparseSampleProjDrefExplicitLod].operands.push(OperandId, "'Coordinate'"); 2058 InstructionDesc[OpImageSparseSampleProjDrefExplicitLod].operands.push(OperandId, "'D~ref~'"); 2059 InstructionDesc[OpImageSparseSampleProjDrefExplicitLod].operands.push(OperandImageOperands, "", true); 2060 InstructionDesc[OpImageSparseSampleProjDrefExplicitLod].operands.push(OperandVariableIds, "", true); 2061 2062 InstructionDesc[OpImageSparseFetch].operands.push(OperandId, "'Image'"); 2063 InstructionDesc[OpImageSparseFetch].operands.push(OperandId, "'Coordinate'"); 2064 InstructionDesc[OpImageSparseFetch].operands.push(OperandImageOperands, "", true); 2065 InstructionDesc[OpImageSparseFetch].operands.push(OperandVariableIds, "", true); 2066 2067 InstructionDesc[OpImageSparseGather].operands.push(OperandId, "'Sampled Image'"); 2068 InstructionDesc[OpImageSparseGather].operands.push(OperandId, "'Coordinate'"); 2069 InstructionDesc[OpImageSparseGather].operands.push(OperandId, "'Component'"); 2070 InstructionDesc[OpImageSparseGather].operands.push(OperandImageOperands, "", true); 2071 InstructionDesc[OpImageSparseGather].operands.push(OperandVariableIds, "", true); 2072 2073 InstructionDesc[OpImageSparseDrefGather].operands.push(OperandId, "'Sampled Image'"); 2074 InstructionDesc[OpImageSparseDrefGather].operands.push(OperandId, "'Coordinate'"); 2075 InstructionDesc[OpImageSparseDrefGather].operands.push(OperandId, "'D~ref~'"); 2076 InstructionDesc[OpImageSparseDrefGather].operands.push(OperandImageOperands, "", true); 2077 InstructionDesc[OpImageSparseDrefGather].operands.push(OperandVariableIds, "", true); 2078 2079 InstructionDesc[OpImageSparseRead].operands.push(OperandId, "'Image'"); 2080 InstructionDesc[OpImageSparseRead].operands.push(OperandId, "'Coordinate'"); 2081 InstructionDesc[OpImageSparseRead].operands.push(OperandImageOperands, "", true); 2082 InstructionDesc[OpImageSparseRead].operands.push(OperandVariableIds, "", true); 2083 2084 InstructionDesc[OpImageSparseTexelsResident].operands.push(OperandId, "'Resident Code'"); 2085 2086 InstructionDesc[OpImageQuerySizeLod].operands.push(OperandId, "'Image'"); 2087 InstructionDesc[OpImageQuerySizeLod].operands.push(OperandId, "'Level of Detail'"); 2088 2089 InstructionDesc[OpImageQuerySize].operands.push(OperandId, "'Image'"); 2090 2091 InstructionDesc[OpImageQueryLod].operands.push(OperandId, "'Image'"); 2092 InstructionDesc[OpImageQueryLod].operands.push(OperandId, "'Coordinate'"); 2093 2094 InstructionDesc[OpImageQueryLevels].operands.push(OperandId, "'Image'"); 2095 2096 InstructionDesc[OpImageQuerySamples].operands.push(OperandId, "'Image'"); 2097 2098 InstructionDesc[OpImageQueryFormat].operands.push(OperandId, "'Image'"); 2099 2100 InstructionDesc[OpImageQueryOrder].operands.push(OperandId, "'Image'"); 2101 2102 InstructionDesc[OpAccessChain].operands.push(OperandId, "'Base'"); 2103 InstructionDesc[OpAccessChain].operands.push(OperandVariableIds, "'Indexes'"); 2104 2105 InstructionDesc[OpInBoundsAccessChain].operands.push(OperandId, "'Base'"); 2106 InstructionDesc[OpInBoundsAccessChain].operands.push(OperandVariableIds, "'Indexes'"); 2107 2108 InstructionDesc[OpPtrAccessChain].operands.push(OperandId, "'Base'"); 2109 InstructionDesc[OpPtrAccessChain].operands.push(OperandId, "'Element'"); 2110 InstructionDesc[OpPtrAccessChain].operands.push(OperandVariableIds, "'Indexes'"); 2111 2112 InstructionDesc[OpInBoundsPtrAccessChain].operands.push(OperandId, "'Base'"); 2113 InstructionDesc[OpInBoundsPtrAccessChain].operands.push(OperandId, "'Element'"); 2114 InstructionDesc[OpInBoundsPtrAccessChain].operands.push(OperandVariableIds, "'Indexes'"); 2115 2116 InstructionDesc[OpSNegate].operands.push(OperandId, "'Operand'"); 2117 2118 InstructionDesc[OpFNegate].operands.push(OperandId, "'Operand'"); 2119 2120 InstructionDesc[OpNot].operands.push(OperandId, "'Operand'"); 2121 2122 InstructionDesc[OpAny].operands.push(OperandId, "'Vector'"); 2123 2124 InstructionDesc[OpAll].operands.push(OperandId, "'Vector'"); 2125 2126 InstructionDesc[OpConvertFToU].operands.push(OperandId, "'Float Value'"); 2127 2128 InstructionDesc[OpConvertFToS].operands.push(OperandId, "'Float Value'"); 2129 2130 InstructionDesc[OpConvertSToF].operands.push(OperandId, "'Signed Value'"); 2131 2132 InstructionDesc[OpConvertUToF].operands.push(OperandId, "'Unsigned Value'"); 2133 2134 InstructionDesc[OpUConvert].operands.push(OperandId, "'Unsigned Value'"); 2135 2136 InstructionDesc[OpSConvert].operands.push(OperandId, "'Signed Value'"); 2137 2138 InstructionDesc[OpFConvert].operands.push(OperandId, "'Float Value'"); 2139 2140 InstructionDesc[OpSatConvertSToU].operands.push(OperandId, "'Signed Value'"); 2141 2142 InstructionDesc[OpSatConvertUToS].operands.push(OperandId, "'Unsigned Value'"); 2143 2144 InstructionDesc[OpConvertPtrToU].operands.push(OperandId, "'Pointer'"); 2145 2146 InstructionDesc[OpConvertUToPtr].operands.push(OperandId, "'Integer Value'"); 2147 2148 InstructionDesc[OpPtrCastToGeneric].operands.push(OperandId, "'Pointer'"); 2149 2150 InstructionDesc[OpGenericCastToPtr].operands.push(OperandId, "'Pointer'"); 2151 2152 InstructionDesc[OpGenericCastToPtrExplicit].operands.push(OperandId, "'Pointer'"); 2153 InstructionDesc[OpGenericCastToPtrExplicit].operands.push(OperandStorage, "'Storage'"); 2154 2155 InstructionDesc[OpGenericPtrMemSemantics].operands.push(OperandId, "'Pointer'"); 2156 2157 InstructionDesc[OpBitcast].operands.push(OperandId, "'Operand'"); 2158 2159 InstructionDesc[OpQuantizeToF16].operands.push(OperandId, "'Value'"); 2160 2161 InstructionDesc[OpTranspose].operands.push(OperandId, "'Matrix'"); 2162 2163 InstructionDesc[OpCopyLogical].operands.push(OperandId, "'Operand'"); 2164 2165 InstructionDesc[OpIsNan].operands.push(OperandId, "'x'"); 2166 2167 InstructionDesc[OpIsInf].operands.push(OperandId, "'x'"); 2168 2169 InstructionDesc[OpIsFinite].operands.push(OperandId, "'x'"); 2170 2171 InstructionDesc[OpIsNormal].operands.push(OperandId, "'x'"); 2172 2173 InstructionDesc[OpSignBitSet].operands.push(OperandId, "'x'"); 2174 2175 InstructionDesc[OpLessOrGreater].operands.push(OperandId, "'x'"); 2176 InstructionDesc[OpLessOrGreater].operands.push(OperandId, "'y'"); 2177 2178 InstructionDesc[OpOrdered].operands.push(OperandId, "'x'"); 2179 InstructionDesc[OpOrdered].operands.push(OperandId, "'y'"); 2180 2181 InstructionDesc[OpUnordered].operands.push(OperandId, "'x'"); 2182 InstructionDesc[OpUnordered].operands.push(OperandId, "'y'"); 2183 2184 InstructionDesc[OpArrayLength].operands.push(OperandId, "'Structure'"); 2185 InstructionDesc[OpArrayLength].operands.push(OperandLiteralNumber, "'Array member'"); 2186 2187 InstructionDesc[OpIAdd].operands.push(OperandId, "'Operand 1'"); 2188 InstructionDesc[OpIAdd].operands.push(OperandId, "'Operand 2'"); 2189 2190 InstructionDesc[OpFAdd].operands.push(OperandId, "'Operand 1'"); 2191 InstructionDesc[OpFAdd].operands.push(OperandId, "'Operand 2'"); 2192 2193 InstructionDesc[OpISub].operands.push(OperandId, "'Operand 1'"); 2194 InstructionDesc[OpISub].operands.push(OperandId, "'Operand 2'"); 2195 2196 InstructionDesc[OpFSub].operands.push(OperandId, "'Operand 1'"); 2197 InstructionDesc[OpFSub].operands.push(OperandId, "'Operand 2'"); 2198 2199 InstructionDesc[OpIMul].operands.push(OperandId, "'Operand 1'"); 2200 InstructionDesc[OpIMul].operands.push(OperandId, "'Operand 2'"); 2201 2202 InstructionDesc[OpFMul].operands.push(OperandId, "'Operand 1'"); 2203 InstructionDesc[OpFMul].operands.push(OperandId, "'Operand 2'"); 2204 2205 InstructionDesc[OpUDiv].operands.push(OperandId, "'Operand 1'"); 2206 InstructionDesc[OpUDiv].operands.push(OperandId, "'Operand 2'"); 2207 2208 InstructionDesc[OpSDiv].operands.push(OperandId, "'Operand 1'"); 2209 InstructionDesc[OpSDiv].operands.push(OperandId, "'Operand 2'"); 2210 2211 InstructionDesc[OpFDiv].operands.push(OperandId, "'Operand 1'"); 2212 InstructionDesc[OpFDiv].operands.push(OperandId, "'Operand 2'"); 2213 2214 InstructionDesc[OpUMod].operands.push(OperandId, "'Operand 1'"); 2215 InstructionDesc[OpUMod].operands.push(OperandId, "'Operand 2'"); 2216 2217 InstructionDesc[OpSRem].operands.push(OperandId, "'Operand 1'"); 2218 InstructionDesc[OpSRem].operands.push(OperandId, "'Operand 2'"); 2219 2220 InstructionDesc[OpSMod].operands.push(OperandId, "'Operand 1'"); 2221 InstructionDesc[OpSMod].operands.push(OperandId, "'Operand 2'"); 2222 2223 InstructionDesc[OpFRem].operands.push(OperandId, "'Operand 1'"); 2224 InstructionDesc[OpFRem].operands.push(OperandId, "'Operand 2'"); 2225 2226 InstructionDesc[OpFMod].operands.push(OperandId, "'Operand 1'"); 2227 InstructionDesc[OpFMod].operands.push(OperandId, "'Operand 2'"); 2228 2229 InstructionDesc[OpVectorTimesScalar].operands.push(OperandId, "'Vector'"); 2230 InstructionDesc[OpVectorTimesScalar].operands.push(OperandId, "'Scalar'"); 2231 2232 InstructionDesc[OpMatrixTimesScalar].operands.push(OperandId, "'Matrix'"); 2233 InstructionDesc[OpMatrixTimesScalar].operands.push(OperandId, "'Scalar'"); 2234 2235 InstructionDesc[OpVectorTimesMatrix].operands.push(OperandId, "'Vector'"); 2236 InstructionDesc[OpVectorTimesMatrix].operands.push(OperandId, "'Matrix'"); 2237 2238 InstructionDesc[OpMatrixTimesVector].operands.push(OperandId, "'Matrix'"); 2239 InstructionDesc[OpMatrixTimesVector].operands.push(OperandId, "'Vector'"); 2240 2241 InstructionDesc[OpMatrixTimesMatrix].operands.push(OperandId, "'LeftMatrix'"); 2242 InstructionDesc[OpMatrixTimesMatrix].operands.push(OperandId, "'RightMatrix'"); 2243 2244 InstructionDesc[OpOuterProduct].operands.push(OperandId, "'Vector 1'"); 2245 InstructionDesc[OpOuterProduct].operands.push(OperandId, "'Vector 2'"); 2246 2247 InstructionDesc[OpDot].operands.push(OperandId, "'Vector 1'"); 2248 InstructionDesc[OpDot].operands.push(OperandId, "'Vector 2'"); 2249 2250 InstructionDesc[OpIAddCarry].operands.push(OperandId, "'Operand 1'"); 2251 InstructionDesc[OpIAddCarry].operands.push(OperandId, "'Operand 2'"); 2252 2253 InstructionDesc[OpISubBorrow].operands.push(OperandId, "'Operand 1'"); 2254 InstructionDesc[OpISubBorrow].operands.push(OperandId, "'Operand 2'"); 2255 2256 InstructionDesc[OpUMulExtended].operands.push(OperandId, "'Operand 1'"); 2257 InstructionDesc[OpUMulExtended].operands.push(OperandId, "'Operand 2'"); 2258 2259 InstructionDesc[OpSMulExtended].operands.push(OperandId, "'Operand 1'"); 2260 InstructionDesc[OpSMulExtended].operands.push(OperandId, "'Operand 2'"); 2261 2262 InstructionDesc[OpShiftRightLogical].operands.push(OperandId, "'Base'"); 2263 InstructionDesc[OpShiftRightLogical].operands.push(OperandId, "'Shift'"); 2264 2265 InstructionDesc[OpShiftRightArithmetic].operands.push(OperandId, "'Base'"); 2266 InstructionDesc[OpShiftRightArithmetic].operands.push(OperandId, "'Shift'"); 2267 2268 InstructionDesc[OpShiftLeftLogical].operands.push(OperandId, "'Base'"); 2269 InstructionDesc[OpShiftLeftLogical].operands.push(OperandId, "'Shift'"); 2270 2271 InstructionDesc[OpLogicalOr].operands.push(OperandId, "'Operand 1'"); 2272 InstructionDesc[OpLogicalOr].operands.push(OperandId, "'Operand 2'"); 2273 2274 InstructionDesc[OpLogicalAnd].operands.push(OperandId, "'Operand 1'"); 2275 InstructionDesc[OpLogicalAnd].operands.push(OperandId, "'Operand 2'"); 2276 2277 InstructionDesc[OpLogicalEqual].operands.push(OperandId, "'Operand 1'"); 2278 InstructionDesc[OpLogicalEqual].operands.push(OperandId, "'Operand 2'"); 2279 2280 InstructionDesc[OpLogicalNotEqual].operands.push(OperandId, "'Operand 1'"); 2281 InstructionDesc[OpLogicalNotEqual].operands.push(OperandId, "'Operand 2'"); 2282 2283 InstructionDesc[OpLogicalNot].operands.push(OperandId, "'Operand'"); 2284 2285 InstructionDesc[OpBitwiseOr].operands.push(OperandId, "'Operand 1'"); 2286 InstructionDesc[OpBitwiseOr].operands.push(OperandId, "'Operand 2'"); 2287 2288 InstructionDesc[OpBitwiseXor].operands.push(OperandId, "'Operand 1'"); 2289 InstructionDesc[OpBitwiseXor].operands.push(OperandId, "'Operand 2'"); 2290 2291 InstructionDesc[OpBitwiseAnd].operands.push(OperandId, "'Operand 1'"); 2292 InstructionDesc[OpBitwiseAnd].operands.push(OperandId, "'Operand 2'"); 2293 2294 InstructionDesc[OpBitFieldInsert].operands.push(OperandId, "'Base'"); 2295 InstructionDesc[OpBitFieldInsert].operands.push(OperandId, "'Insert'"); 2296 InstructionDesc[OpBitFieldInsert].operands.push(OperandId, "'Offset'"); 2297 InstructionDesc[OpBitFieldInsert].operands.push(OperandId, "'Count'"); 2298 2299 InstructionDesc[OpBitFieldSExtract].operands.push(OperandId, "'Base'"); 2300 InstructionDesc[OpBitFieldSExtract].operands.push(OperandId, "'Offset'"); 2301 InstructionDesc[OpBitFieldSExtract].operands.push(OperandId, "'Count'"); 2302 2303 InstructionDesc[OpBitFieldUExtract].operands.push(OperandId, "'Base'"); 2304 InstructionDesc[OpBitFieldUExtract].operands.push(OperandId, "'Offset'"); 2305 InstructionDesc[OpBitFieldUExtract].operands.push(OperandId, "'Count'"); 2306 2307 InstructionDesc[OpBitReverse].operands.push(OperandId, "'Base'"); 2308 2309 InstructionDesc[OpBitCount].operands.push(OperandId, "'Base'"); 2310 2311 InstructionDesc[OpSelect].operands.push(OperandId, "'Condition'"); 2312 InstructionDesc[OpSelect].operands.push(OperandId, "'Object 1'"); 2313 InstructionDesc[OpSelect].operands.push(OperandId, "'Object 2'"); 2314 2315 InstructionDesc[OpIEqual].operands.push(OperandId, "'Operand 1'"); 2316 InstructionDesc[OpIEqual].operands.push(OperandId, "'Operand 2'"); 2317 2318 InstructionDesc[OpFOrdEqual].operands.push(OperandId, "'Operand 1'"); 2319 InstructionDesc[OpFOrdEqual].operands.push(OperandId, "'Operand 2'"); 2320 2321 InstructionDesc[OpFUnordEqual].operands.push(OperandId, "'Operand 1'"); 2322 InstructionDesc[OpFUnordEqual].operands.push(OperandId, "'Operand 2'"); 2323 2324 InstructionDesc[OpINotEqual].operands.push(OperandId, "'Operand 1'"); 2325 InstructionDesc[OpINotEqual].operands.push(OperandId, "'Operand 2'"); 2326 2327 InstructionDesc[OpFOrdNotEqual].operands.push(OperandId, "'Operand 1'"); 2328 InstructionDesc[OpFOrdNotEqual].operands.push(OperandId, "'Operand 2'"); 2329 2330 InstructionDesc[OpFUnordNotEqual].operands.push(OperandId, "'Operand 1'"); 2331 InstructionDesc[OpFUnordNotEqual].operands.push(OperandId, "'Operand 2'"); 2332 2333 InstructionDesc[OpULessThan].operands.push(OperandId, "'Operand 1'"); 2334 InstructionDesc[OpULessThan].operands.push(OperandId, "'Operand 2'"); 2335 2336 InstructionDesc[OpSLessThan].operands.push(OperandId, "'Operand 1'"); 2337 InstructionDesc[OpSLessThan].operands.push(OperandId, "'Operand 2'"); 2338 2339 InstructionDesc[OpFOrdLessThan].operands.push(OperandId, "'Operand 1'"); 2340 InstructionDesc[OpFOrdLessThan].operands.push(OperandId, "'Operand 2'"); 2341 2342 InstructionDesc[OpFUnordLessThan].operands.push(OperandId, "'Operand 1'"); 2343 InstructionDesc[OpFUnordLessThan].operands.push(OperandId, "'Operand 2'"); 2344 2345 InstructionDesc[OpUGreaterThan].operands.push(OperandId, "'Operand 1'"); 2346 InstructionDesc[OpUGreaterThan].operands.push(OperandId, "'Operand 2'"); 2347 2348 InstructionDesc[OpSGreaterThan].operands.push(OperandId, "'Operand 1'"); 2349 InstructionDesc[OpSGreaterThan].operands.push(OperandId, "'Operand 2'"); 2350 2351 InstructionDesc[OpFOrdGreaterThan].operands.push(OperandId, "'Operand 1'"); 2352 InstructionDesc[OpFOrdGreaterThan].operands.push(OperandId, "'Operand 2'"); 2353 2354 InstructionDesc[OpFUnordGreaterThan].operands.push(OperandId, "'Operand 1'"); 2355 InstructionDesc[OpFUnordGreaterThan].operands.push(OperandId, "'Operand 2'"); 2356 2357 InstructionDesc[OpULessThanEqual].operands.push(OperandId, "'Operand 1'"); 2358 InstructionDesc[OpULessThanEqual].operands.push(OperandId, "'Operand 2'"); 2359 2360 InstructionDesc[OpSLessThanEqual].operands.push(OperandId, "'Operand 1'"); 2361 InstructionDesc[OpSLessThanEqual].operands.push(OperandId, "'Operand 2'"); 2362 2363 InstructionDesc[OpFOrdLessThanEqual].operands.push(OperandId, "'Operand 1'"); 2364 InstructionDesc[OpFOrdLessThanEqual].operands.push(OperandId, "'Operand 2'"); 2365 2366 InstructionDesc[OpFUnordLessThanEqual].operands.push(OperandId, "'Operand 1'"); 2367 InstructionDesc[OpFUnordLessThanEqual].operands.push(OperandId, "'Operand 2'"); 2368 2369 InstructionDesc[OpUGreaterThanEqual].operands.push(OperandId, "'Operand 1'"); 2370 InstructionDesc[OpUGreaterThanEqual].operands.push(OperandId, "'Operand 2'"); 2371 2372 InstructionDesc[OpSGreaterThanEqual].operands.push(OperandId, "'Operand 1'"); 2373 InstructionDesc[OpSGreaterThanEqual].operands.push(OperandId, "'Operand 2'"); 2374 2375 InstructionDesc[OpFOrdGreaterThanEqual].operands.push(OperandId, "'Operand 1'"); 2376 InstructionDesc[OpFOrdGreaterThanEqual].operands.push(OperandId, "'Operand 2'"); 2377 2378 InstructionDesc[OpFUnordGreaterThanEqual].operands.push(OperandId, "'Operand 1'"); 2379 InstructionDesc[OpFUnordGreaterThanEqual].operands.push(OperandId, "'Operand 2'"); 2380 2381 InstructionDesc[OpDPdx].operands.push(OperandId, "'P'"); 2382 2383 InstructionDesc[OpDPdy].operands.push(OperandId, "'P'"); 2384 2385 InstructionDesc[OpFwidth].operands.push(OperandId, "'P'"); 2386 2387 InstructionDesc[OpDPdxFine].operands.push(OperandId, "'P'"); 2388 2389 InstructionDesc[OpDPdyFine].operands.push(OperandId, "'P'"); 2390 2391 InstructionDesc[OpFwidthFine].operands.push(OperandId, "'P'"); 2392 2393 InstructionDesc[OpDPdxCoarse].operands.push(OperandId, "'P'"); 2394 2395 InstructionDesc[OpDPdyCoarse].operands.push(OperandId, "'P'"); 2396 2397 InstructionDesc[OpFwidthCoarse].operands.push(OperandId, "'P'"); 2398 2399 InstructionDesc[OpEmitStreamVertex].operands.push(OperandId, "'Stream'"); 2400 2401 InstructionDesc[OpEndStreamPrimitive].operands.push(OperandId, "'Stream'"); 2402 2403 InstructionDesc[OpControlBarrier].operands.push(OperandScope, "'Execution'"); 2404 InstructionDesc[OpControlBarrier].operands.push(OperandScope, "'Memory'"); 2405 InstructionDesc[OpControlBarrier].operands.push(OperandMemorySemantics, "'Semantics'"); 2406 2407 InstructionDesc[OpMemoryBarrier].operands.push(OperandScope, "'Memory'"); 2408 InstructionDesc[OpMemoryBarrier].operands.push(OperandMemorySemantics, "'Semantics'"); 2409 2410 InstructionDesc[OpImageTexelPointer].operands.push(OperandId, "'Image'"); 2411 InstructionDesc[OpImageTexelPointer].operands.push(OperandId, "'Coordinate'"); 2412 InstructionDesc[OpImageTexelPointer].operands.push(OperandId, "'Sample'"); 2413 2414 InstructionDesc[OpAtomicLoad].operands.push(OperandId, "'Pointer'"); 2415 InstructionDesc[OpAtomicLoad].operands.push(OperandScope, "'Scope'"); 2416 InstructionDesc[OpAtomicLoad].operands.push(OperandMemorySemantics, "'Semantics'"); 2417 2418 InstructionDesc[OpAtomicStore].operands.push(OperandId, "'Pointer'"); 2419 InstructionDesc[OpAtomicStore].operands.push(OperandScope, "'Scope'"); 2420 InstructionDesc[OpAtomicStore].operands.push(OperandMemorySemantics, "'Semantics'"); 2421 InstructionDesc[OpAtomicStore].operands.push(OperandId, "'Value'"); 2422 2423 InstructionDesc[OpAtomicExchange].operands.push(OperandId, "'Pointer'"); 2424 InstructionDesc[OpAtomicExchange].operands.push(OperandScope, "'Scope'"); 2425 InstructionDesc[OpAtomicExchange].operands.push(OperandMemorySemantics, "'Semantics'"); 2426 InstructionDesc[OpAtomicExchange].operands.push(OperandId, "'Value'"); 2427 2428 InstructionDesc[OpAtomicCompareExchange].operands.push(OperandId, "'Pointer'"); 2429 InstructionDesc[OpAtomicCompareExchange].operands.push(OperandScope, "'Scope'"); 2430 InstructionDesc[OpAtomicCompareExchange].operands.push(OperandMemorySemantics, "'Equal'"); 2431 InstructionDesc[OpAtomicCompareExchange].operands.push(OperandMemorySemantics, "'Unequal'"); 2432 InstructionDesc[OpAtomicCompareExchange].operands.push(OperandId, "'Value'"); 2433 InstructionDesc[OpAtomicCompareExchange].operands.push(OperandId, "'Comparator'"); 2434 2435 InstructionDesc[OpAtomicCompareExchangeWeak].operands.push(OperandId, "'Pointer'"); 2436 InstructionDesc[OpAtomicCompareExchangeWeak].operands.push(OperandScope, "'Scope'"); 2437 InstructionDesc[OpAtomicCompareExchangeWeak].operands.push(OperandMemorySemantics, "'Equal'"); 2438 InstructionDesc[OpAtomicCompareExchangeWeak].operands.push(OperandMemorySemantics, "'Unequal'"); 2439 InstructionDesc[OpAtomicCompareExchangeWeak].operands.push(OperandId, "'Value'"); 2440 InstructionDesc[OpAtomicCompareExchangeWeak].operands.push(OperandId, "'Comparator'"); 2441 2442 InstructionDesc[OpAtomicIIncrement].operands.push(OperandId, "'Pointer'"); 2443 InstructionDesc[OpAtomicIIncrement].operands.push(OperandScope, "'Scope'"); 2444 InstructionDesc[OpAtomicIIncrement].operands.push(OperandMemorySemantics, "'Semantics'"); 2445 2446 InstructionDesc[OpAtomicIDecrement].operands.push(OperandId, "'Pointer'"); 2447 InstructionDesc[OpAtomicIDecrement].operands.push(OperandScope, "'Scope'"); 2448 InstructionDesc[OpAtomicIDecrement].operands.push(OperandMemorySemantics, "'Semantics'"); 2449 2450 InstructionDesc[OpAtomicIAdd].operands.push(OperandId, "'Pointer'"); 2451 InstructionDesc[OpAtomicIAdd].operands.push(OperandScope, "'Scope'"); 2452 InstructionDesc[OpAtomicIAdd].operands.push(OperandMemorySemantics, "'Semantics'"); 2453 InstructionDesc[OpAtomicIAdd].operands.push(OperandId, "'Value'"); 2454 2455 InstructionDesc[OpAtomicFAddEXT].operands.push(OperandId, "'Pointer'"); 2456 InstructionDesc[OpAtomicFAddEXT].operands.push(OperandScope, "'Scope'"); 2457 InstructionDesc[OpAtomicFAddEXT].operands.push(OperandMemorySemantics, "'Semantics'"); 2458 InstructionDesc[OpAtomicFAddEXT].operands.push(OperandId, "'Value'"); 2459 2460 InstructionDesc[OpAtomicISub].operands.push(OperandId, "'Pointer'"); 2461 InstructionDesc[OpAtomicISub].operands.push(OperandScope, "'Scope'"); 2462 InstructionDesc[OpAtomicISub].operands.push(OperandMemorySemantics, "'Semantics'"); 2463 InstructionDesc[OpAtomicISub].operands.push(OperandId, "'Value'"); 2464 2465 InstructionDesc[OpAtomicUMin].operands.push(OperandId, "'Pointer'"); 2466 InstructionDesc[OpAtomicUMin].operands.push(OperandScope, "'Scope'"); 2467 InstructionDesc[OpAtomicUMin].operands.push(OperandMemorySemantics, "'Semantics'"); 2468 InstructionDesc[OpAtomicUMin].operands.push(OperandId, "'Value'"); 2469 2470 InstructionDesc[OpAtomicUMax].operands.push(OperandId, "'Pointer'"); 2471 InstructionDesc[OpAtomicUMax].operands.push(OperandScope, "'Scope'"); 2472 InstructionDesc[OpAtomicUMax].operands.push(OperandMemorySemantics, "'Semantics'"); 2473 InstructionDesc[OpAtomicUMax].operands.push(OperandId, "'Value'"); 2474 2475 InstructionDesc[OpAtomicSMin].operands.push(OperandId, "'Pointer'"); 2476 InstructionDesc[OpAtomicSMin].operands.push(OperandScope, "'Scope'"); 2477 InstructionDesc[OpAtomicSMin].operands.push(OperandMemorySemantics, "'Semantics'"); 2478 InstructionDesc[OpAtomicSMin].operands.push(OperandId, "'Value'"); 2479 2480 InstructionDesc[OpAtomicSMax].operands.push(OperandId, "'Pointer'"); 2481 InstructionDesc[OpAtomicSMax].operands.push(OperandScope, "'Scope'"); 2482 InstructionDesc[OpAtomicSMax].operands.push(OperandMemorySemantics, "'Semantics'"); 2483 InstructionDesc[OpAtomicSMax].operands.push(OperandId, "'Value'"); 2484 2485 InstructionDesc[OpAtomicFMinEXT].operands.push(OperandId, "'Pointer'"); 2486 InstructionDesc[OpAtomicFMinEXT].operands.push(OperandScope, "'Scope'"); 2487 InstructionDesc[OpAtomicFMinEXT].operands.push(OperandMemorySemantics, "'Semantics'"); 2488 InstructionDesc[OpAtomicFMinEXT].operands.push(OperandId, "'Value'"); 2489 2490 InstructionDesc[OpAtomicFMaxEXT].operands.push(OperandId, "'Pointer'"); 2491 InstructionDesc[OpAtomicFMaxEXT].operands.push(OperandScope, "'Scope'"); 2492 InstructionDesc[OpAtomicFMaxEXT].operands.push(OperandMemorySemantics, "'Semantics'"); 2493 InstructionDesc[OpAtomicFMaxEXT].operands.push(OperandId, "'Value'"); 2494 2495 InstructionDesc[OpAtomicAnd].operands.push(OperandId, "'Pointer'"); 2496 InstructionDesc[OpAtomicAnd].operands.push(OperandScope, "'Scope'"); 2497 InstructionDesc[OpAtomicAnd].operands.push(OperandMemorySemantics, "'Semantics'"); 2498 InstructionDesc[OpAtomicAnd].operands.push(OperandId, "'Value'"); 2499 2500 InstructionDesc[OpAtomicOr].operands.push(OperandId, "'Pointer'"); 2501 InstructionDesc[OpAtomicOr].operands.push(OperandScope, "'Scope'"); 2502 InstructionDesc[OpAtomicOr].operands.push(OperandMemorySemantics, "'Semantics'"); 2503 InstructionDesc[OpAtomicOr].operands.push(OperandId, "'Value'"); 2504 2505 InstructionDesc[OpAtomicXor].operands.push(OperandId, "'Pointer'"); 2506 InstructionDesc[OpAtomicXor].operands.push(OperandScope, "'Scope'"); 2507 InstructionDesc[OpAtomicXor].operands.push(OperandMemorySemantics, "'Semantics'"); 2508 InstructionDesc[OpAtomicXor].operands.push(OperandId, "'Value'"); 2509 2510 InstructionDesc[OpAtomicFlagTestAndSet].operands.push(OperandId, "'Pointer'"); 2511 InstructionDesc[OpAtomicFlagTestAndSet].operands.push(OperandScope, "'Scope'"); 2512 InstructionDesc[OpAtomicFlagTestAndSet].operands.push(OperandMemorySemantics, "'Semantics'"); 2513 2514 InstructionDesc[OpAtomicFlagClear].operands.push(OperandId, "'Pointer'"); 2515 InstructionDesc[OpAtomicFlagClear].operands.push(OperandScope, "'Scope'"); 2516 InstructionDesc[OpAtomicFlagClear].operands.push(OperandMemorySemantics, "'Semantics'"); 2517 2518 InstructionDesc[OpLoopMerge].operands.push(OperandId, "'Merge Block'"); 2519 InstructionDesc[OpLoopMerge].operands.push(OperandId, "'Continue Target'"); 2520 InstructionDesc[OpLoopMerge].operands.push(OperandLoop, ""); 2521 InstructionDesc[OpLoopMerge].operands.push(OperandOptionalLiteral, ""); 2522 2523 InstructionDesc[OpSelectionMerge].operands.push(OperandId, "'Merge Block'"); 2524 InstructionDesc[OpSelectionMerge].operands.push(OperandSelect, ""); 2525 2526 InstructionDesc[OpBranch].operands.push(OperandId, "'Target Label'"); 2527 2528 InstructionDesc[OpBranchConditional].operands.push(OperandId, "'Condition'"); 2529 InstructionDesc[OpBranchConditional].operands.push(OperandId, "'True Label'"); 2530 InstructionDesc[OpBranchConditional].operands.push(OperandId, "'False Label'"); 2531 InstructionDesc[OpBranchConditional].operands.push(OperandVariableLiterals, "'Branch weights'"); 2532 2533 InstructionDesc[OpSwitch].operands.push(OperandId, "'Selector'"); 2534 InstructionDesc[OpSwitch].operands.push(OperandId, "'Default'"); 2535 InstructionDesc[OpSwitch].operands.push(OperandVariableLiteralId, "'Target'"); 2536 2537 2538 InstructionDesc[OpReturnValue].operands.push(OperandId, "'Value'"); 2539 2540 InstructionDesc[OpLifetimeStart].operands.push(OperandId, "'Pointer'"); 2541 InstructionDesc[OpLifetimeStart].operands.push(OperandLiteralNumber, "'Size'"); 2542 2543 InstructionDesc[OpLifetimeStop].operands.push(OperandId, "'Pointer'"); 2544 InstructionDesc[OpLifetimeStop].operands.push(OperandLiteralNumber, "'Size'"); 2545 2546 InstructionDesc[OpGroupAsyncCopy].operands.push(OperandScope, "'Execution'"); 2547 InstructionDesc[OpGroupAsyncCopy].operands.push(OperandId, "'Destination'"); 2548 InstructionDesc[OpGroupAsyncCopy].operands.push(OperandId, "'Source'"); 2549 InstructionDesc[OpGroupAsyncCopy].operands.push(OperandId, "'Num Elements'"); 2550 InstructionDesc[OpGroupAsyncCopy].operands.push(OperandId, "'Stride'"); 2551 InstructionDesc[OpGroupAsyncCopy].operands.push(OperandId, "'Event'"); 2552 2553 InstructionDesc[OpGroupWaitEvents].operands.push(OperandScope, "'Execution'"); 2554 InstructionDesc[OpGroupWaitEvents].operands.push(OperandId, "'Num Events'"); 2555 InstructionDesc[OpGroupWaitEvents].operands.push(OperandId, "'Events List'"); 2556 2557 InstructionDesc[OpGroupAll].operands.push(OperandScope, "'Execution'"); 2558 InstructionDesc[OpGroupAll].operands.push(OperandId, "'Predicate'"); 2559 2560 InstructionDesc[OpGroupAny].operands.push(OperandScope, "'Execution'"); 2561 InstructionDesc[OpGroupAny].operands.push(OperandId, "'Predicate'"); 2562 2563 InstructionDesc[OpGroupBroadcast].operands.push(OperandScope, "'Execution'"); 2564 InstructionDesc[OpGroupBroadcast].operands.push(OperandId, "'Value'"); 2565 InstructionDesc[OpGroupBroadcast].operands.push(OperandId, "'LocalId'"); 2566 2567 InstructionDesc[OpGroupIAdd].operands.push(OperandScope, "'Execution'"); 2568 InstructionDesc[OpGroupIAdd].operands.push(OperandGroupOperation, "'Operation'"); 2569 InstructionDesc[OpGroupIAdd].operands.push(OperandId, "'X'"); 2570 2571 InstructionDesc[OpGroupFAdd].operands.push(OperandScope, "'Execution'"); 2572 InstructionDesc[OpGroupFAdd].operands.push(OperandGroupOperation, "'Operation'"); 2573 InstructionDesc[OpGroupFAdd].operands.push(OperandId, "'X'"); 2574 2575 InstructionDesc[OpGroupUMin].operands.push(OperandScope, "'Execution'"); 2576 InstructionDesc[OpGroupUMin].operands.push(OperandGroupOperation, "'Operation'"); 2577 InstructionDesc[OpGroupUMin].operands.push(OperandId, "'X'"); 2578 2579 InstructionDesc[OpGroupSMin].operands.push(OperandScope, "'Execution'"); 2580 InstructionDesc[OpGroupSMin].operands.push(OperandGroupOperation, "'Operation'"); 2581 InstructionDesc[OpGroupSMin].operands.push(OperandId, "X"); 2582 2583 InstructionDesc[OpGroupFMin].operands.push(OperandScope, "'Execution'"); 2584 InstructionDesc[OpGroupFMin].operands.push(OperandGroupOperation, "'Operation'"); 2585 InstructionDesc[OpGroupFMin].operands.push(OperandId, "X"); 2586 2587 InstructionDesc[OpGroupUMax].operands.push(OperandScope, "'Execution'"); 2588 InstructionDesc[OpGroupUMax].operands.push(OperandGroupOperation, "'Operation'"); 2589 InstructionDesc[OpGroupUMax].operands.push(OperandId, "X"); 2590 2591 InstructionDesc[OpGroupSMax].operands.push(OperandScope, "'Execution'"); 2592 InstructionDesc[OpGroupSMax].operands.push(OperandGroupOperation, "'Operation'"); 2593 InstructionDesc[OpGroupSMax].operands.push(OperandId, "X"); 2594 2595 InstructionDesc[OpGroupFMax].operands.push(OperandScope, "'Execution'"); 2596 InstructionDesc[OpGroupFMax].operands.push(OperandGroupOperation, "'Operation'"); 2597 InstructionDesc[OpGroupFMax].operands.push(OperandId, "X"); 2598 2599 InstructionDesc[OpReadPipe].operands.push(OperandId, "'Pipe'"); 2600 InstructionDesc[OpReadPipe].operands.push(OperandId, "'Pointer'"); 2601 InstructionDesc[OpReadPipe].operands.push(OperandId, "'Packet Size'"); 2602 InstructionDesc[OpReadPipe].operands.push(OperandId, "'Packet Alignment'"); 2603 2604 InstructionDesc[OpWritePipe].operands.push(OperandId, "'Pipe'"); 2605 InstructionDesc[OpWritePipe].operands.push(OperandId, "'Pointer'"); 2606 InstructionDesc[OpWritePipe].operands.push(OperandId, "'Packet Size'"); 2607 InstructionDesc[OpWritePipe].operands.push(OperandId, "'Packet Alignment'"); 2608 2609 InstructionDesc[OpReservedReadPipe].operands.push(OperandId, "'Pipe'"); 2610 InstructionDesc[OpReservedReadPipe].operands.push(OperandId, "'Reserve Id'"); 2611 InstructionDesc[OpReservedReadPipe].operands.push(OperandId, "'Index'"); 2612 InstructionDesc[OpReservedReadPipe].operands.push(OperandId, "'Pointer'"); 2613 InstructionDesc[OpReservedReadPipe].operands.push(OperandId, "'Packet Size'"); 2614 InstructionDesc[OpReservedReadPipe].operands.push(OperandId, "'Packet Alignment'"); 2615 2616 InstructionDesc[OpReservedWritePipe].operands.push(OperandId, "'Pipe'"); 2617 InstructionDesc[OpReservedWritePipe].operands.push(OperandId, "'Reserve Id'"); 2618 InstructionDesc[OpReservedWritePipe].operands.push(OperandId, "'Index'"); 2619 InstructionDesc[OpReservedWritePipe].operands.push(OperandId, "'Pointer'"); 2620 InstructionDesc[OpReservedWritePipe].operands.push(OperandId, "'Packet Size'"); 2621 InstructionDesc[OpReservedWritePipe].operands.push(OperandId, "'Packet Alignment'"); 2622 2623 InstructionDesc[OpReserveReadPipePackets].operands.push(OperandId, "'Pipe'"); 2624 InstructionDesc[OpReserveReadPipePackets].operands.push(OperandId, "'Num Packets'"); 2625 InstructionDesc[OpReserveReadPipePackets].operands.push(OperandId, "'Packet Size'"); 2626 InstructionDesc[OpReserveReadPipePackets].operands.push(OperandId, "'Packet Alignment'"); 2627 2628 InstructionDesc[OpReserveWritePipePackets].operands.push(OperandId, "'Pipe'"); 2629 InstructionDesc[OpReserveWritePipePackets].operands.push(OperandId, "'Num Packets'"); 2630 InstructionDesc[OpReserveWritePipePackets].operands.push(OperandId, "'Packet Size'"); 2631 InstructionDesc[OpReserveWritePipePackets].operands.push(OperandId, "'Packet Alignment'"); 2632 2633 InstructionDesc[OpCommitReadPipe].operands.push(OperandId, "'Pipe'"); 2634 InstructionDesc[OpCommitReadPipe].operands.push(OperandId, "'Reserve Id'"); 2635 InstructionDesc[OpCommitReadPipe].operands.push(OperandId, "'Packet Size'"); 2636 InstructionDesc[OpCommitReadPipe].operands.push(OperandId, "'Packet Alignment'"); 2637 2638 InstructionDesc[OpCommitWritePipe].operands.push(OperandId, "'Pipe'"); 2639 InstructionDesc[OpCommitWritePipe].operands.push(OperandId, "'Reserve Id'"); 2640 InstructionDesc[OpCommitWritePipe].operands.push(OperandId, "'Packet Size'"); 2641 InstructionDesc[OpCommitWritePipe].operands.push(OperandId, "'Packet Alignment'"); 2642 2643 InstructionDesc[OpIsValidReserveId].operands.push(OperandId, "'Reserve Id'"); 2644 2645 InstructionDesc[OpGetNumPipePackets].operands.push(OperandId, "'Pipe'"); 2646 InstructionDesc[OpGetNumPipePackets].operands.push(OperandId, "'Packet Size'"); 2647 InstructionDesc[OpGetNumPipePackets].operands.push(OperandId, "'Packet Alignment'"); 2648 2649 InstructionDesc[OpGetMaxPipePackets].operands.push(OperandId, "'Pipe'"); 2650 InstructionDesc[OpGetMaxPipePackets].operands.push(OperandId, "'Packet Size'"); 2651 InstructionDesc[OpGetMaxPipePackets].operands.push(OperandId, "'Packet Alignment'"); 2652 2653 InstructionDesc[OpGroupReserveReadPipePackets].operands.push(OperandScope, "'Execution'"); 2654 InstructionDesc[OpGroupReserveReadPipePackets].operands.push(OperandId, "'Pipe'"); 2655 InstructionDesc[OpGroupReserveReadPipePackets].operands.push(OperandId, "'Num Packets'"); 2656 InstructionDesc[OpGroupReserveReadPipePackets].operands.push(OperandId, "'Packet Size'"); 2657 InstructionDesc[OpGroupReserveReadPipePackets].operands.push(OperandId, "'Packet Alignment'"); 2658 2659 InstructionDesc[OpGroupReserveWritePipePackets].operands.push(OperandScope, "'Execution'"); 2660 InstructionDesc[OpGroupReserveWritePipePackets].operands.push(OperandId, "'Pipe'"); 2661 InstructionDesc[OpGroupReserveWritePipePackets].operands.push(OperandId, "'Num Packets'"); 2662 InstructionDesc[OpGroupReserveWritePipePackets].operands.push(OperandId, "'Packet Size'"); 2663 InstructionDesc[OpGroupReserveWritePipePackets].operands.push(OperandId, "'Packet Alignment'"); 2664 2665 InstructionDesc[OpGroupCommitReadPipe].operands.push(OperandScope, "'Execution'"); 2666 InstructionDesc[OpGroupCommitReadPipe].operands.push(OperandId, "'Pipe'"); 2667 InstructionDesc[OpGroupCommitReadPipe].operands.push(OperandId, "'Reserve Id'"); 2668 InstructionDesc[OpGroupCommitReadPipe].operands.push(OperandId, "'Packet Size'"); 2669 InstructionDesc[OpGroupCommitReadPipe].operands.push(OperandId, "'Packet Alignment'"); 2670 2671 InstructionDesc[OpGroupCommitWritePipe].operands.push(OperandScope, "'Execution'"); 2672 InstructionDesc[OpGroupCommitWritePipe].operands.push(OperandId, "'Pipe'"); 2673 InstructionDesc[OpGroupCommitWritePipe].operands.push(OperandId, "'Reserve Id'"); 2674 InstructionDesc[OpGroupCommitWritePipe].operands.push(OperandId, "'Packet Size'"); 2675 InstructionDesc[OpGroupCommitWritePipe].operands.push(OperandId, "'Packet Alignment'"); 2676 2677 InstructionDesc[OpBuildNDRange].operands.push(OperandId, "'GlobalWorkSize'"); 2678 InstructionDesc[OpBuildNDRange].operands.push(OperandId, "'LocalWorkSize'"); 2679 InstructionDesc[OpBuildNDRange].operands.push(OperandId, "'GlobalWorkOffset'"); 2680 2681 InstructionDesc[OpCaptureEventProfilingInfo].operands.push(OperandId, "'Event'"); 2682 InstructionDesc[OpCaptureEventProfilingInfo].operands.push(OperandId, "'Profiling Info'"); 2683 InstructionDesc[OpCaptureEventProfilingInfo].operands.push(OperandId, "'Value'"); 2684 2685 InstructionDesc[OpSetUserEventStatus].operands.push(OperandId, "'Event'"); 2686 InstructionDesc[OpSetUserEventStatus].operands.push(OperandId, "'Status'"); 2687 2688 InstructionDesc[OpIsValidEvent].operands.push(OperandId, "'Event'"); 2689 2690 InstructionDesc[OpRetainEvent].operands.push(OperandId, "'Event'"); 2691 2692 InstructionDesc[OpReleaseEvent].operands.push(OperandId, "'Event'"); 2693 2694 InstructionDesc[OpGetKernelWorkGroupSize].operands.push(OperandId, "'Invoke'"); 2695 InstructionDesc[OpGetKernelWorkGroupSize].operands.push(OperandId, "'Param'"); 2696 InstructionDesc[OpGetKernelWorkGroupSize].operands.push(OperandId, "'Param Size'"); 2697 InstructionDesc[OpGetKernelWorkGroupSize].operands.push(OperandId, "'Param Align'"); 2698 2699 InstructionDesc[OpGetKernelPreferredWorkGroupSizeMultiple].operands.push(OperandId, "'Invoke'"); 2700 InstructionDesc[OpGetKernelPreferredWorkGroupSizeMultiple].operands.push(OperandId, "'Param'"); 2701 InstructionDesc[OpGetKernelPreferredWorkGroupSizeMultiple].operands.push(OperandId, "'Param Size'"); 2702 InstructionDesc[OpGetKernelPreferredWorkGroupSizeMultiple].operands.push(OperandId, "'Param Align'"); 2703 2704 InstructionDesc[OpGetKernelNDrangeSubGroupCount].operands.push(OperandId, "'ND Range'"); 2705 InstructionDesc[OpGetKernelNDrangeSubGroupCount].operands.push(OperandId, "'Invoke'"); 2706 InstructionDesc[OpGetKernelNDrangeSubGroupCount].operands.push(OperandId, "'Param'"); 2707 InstructionDesc[OpGetKernelNDrangeSubGroupCount].operands.push(OperandId, "'Param Size'"); 2708 InstructionDesc[OpGetKernelNDrangeSubGroupCount].operands.push(OperandId, "'Param Align'"); 2709 2710 InstructionDesc[OpGetKernelNDrangeMaxSubGroupSize].operands.push(OperandId, "'ND Range'"); 2711 InstructionDesc[OpGetKernelNDrangeMaxSubGroupSize].operands.push(OperandId, "'Invoke'"); 2712 InstructionDesc[OpGetKernelNDrangeMaxSubGroupSize].operands.push(OperandId, "'Param'"); 2713 InstructionDesc[OpGetKernelNDrangeMaxSubGroupSize].operands.push(OperandId, "'Param Size'"); 2714 InstructionDesc[OpGetKernelNDrangeMaxSubGroupSize].operands.push(OperandId, "'Param Align'"); 2715 2716 InstructionDesc[OpEnqueueKernel].operands.push(OperandId, "'Queue'"); 2717 InstructionDesc[OpEnqueueKernel].operands.push(OperandId, "'Flags'"); 2718 InstructionDesc[OpEnqueueKernel].operands.push(OperandId, "'ND Range'"); 2719 InstructionDesc[OpEnqueueKernel].operands.push(OperandId, "'Num Events'"); 2720 InstructionDesc[OpEnqueueKernel].operands.push(OperandId, "'Wait Events'"); 2721 InstructionDesc[OpEnqueueKernel].operands.push(OperandId, "'Ret Event'"); 2722 InstructionDesc[OpEnqueueKernel].operands.push(OperandId, "'Invoke'"); 2723 InstructionDesc[OpEnqueueKernel].operands.push(OperandId, "'Param'"); 2724 InstructionDesc[OpEnqueueKernel].operands.push(OperandId, "'Param Size'"); 2725 InstructionDesc[OpEnqueueKernel].operands.push(OperandId, "'Param Align'"); 2726 InstructionDesc[OpEnqueueKernel].operands.push(OperandVariableIds, "'Local Size'"); 2727 2728 InstructionDesc[OpEnqueueMarker].operands.push(OperandId, "'Queue'"); 2729 InstructionDesc[OpEnqueueMarker].operands.push(OperandId, "'Num Events'"); 2730 InstructionDesc[OpEnqueueMarker].operands.push(OperandId, "'Wait Events'"); 2731 InstructionDesc[OpEnqueueMarker].operands.push(OperandId, "'Ret Event'"); 2732 2733 InstructionDesc[OpGroupNonUniformElect].operands.push(OperandScope, "'Execution'"); 2734 2735 InstructionDesc[OpGroupNonUniformAll].operands.push(OperandScope, "'Execution'"); 2736 InstructionDesc[OpGroupNonUniformAll].operands.push(OperandId, "X"); 2737 2738 InstructionDesc[OpGroupNonUniformAny].operands.push(OperandScope, "'Execution'"); 2739 InstructionDesc[OpGroupNonUniformAny].operands.push(OperandId, "X"); 2740 2741 InstructionDesc[OpGroupNonUniformAllEqual].operands.push(OperandScope, "'Execution'"); 2742 InstructionDesc[OpGroupNonUniformAllEqual].operands.push(OperandId, "X"); 2743 2744 InstructionDesc[OpGroupNonUniformBroadcast].operands.push(OperandScope, "'Execution'"); 2745 InstructionDesc[OpGroupNonUniformBroadcast].operands.push(OperandId, "X"); 2746 InstructionDesc[OpGroupNonUniformBroadcast].operands.push(OperandId, "ID"); 2747 2748 InstructionDesc[OpGroupNonUniformBroadcastFirst].operands.push(OperandScope, "'Execution'"); 2749 InstructionDesc[OpGroupNonUniformBroadcastFirst].operands.push(OperandId, "X"); 2750 2751 InstructionDesc[OpGroupNonUniformBallot].operands.push(OperandScope, "'Execution'"); 2752 InstructionDesc[OpGroupNonUniformBallot].operands.push(OperandId, "X"); 2753 2754 InstructionDesc[OpGroupNonUniformInverseBallot].operands.push(OperandScope, "'Execution'"); 2755 InstructionDesc[OpGroupNonUniformInverseBallot].operands.push(OperandId, "X"); 2756 2757 InstructionDesc[OpGroupNonUniformBallotBitExtract].operands.push(OperandScope, "'Execution'"); 2758 InstructionDesc[OpGroupNonUniformBallotBitExtract].operands.push(OperandId, "X"); 2759 InstructionDesc[OpGroupNonUniformBallotBitExtract].operands.push(OperandId, "Bit"); 2760 2761 InstructionDesc[OpGroupNonUniformBallotBitCount].operands.push(OperandScope, "'Execution'"); 2762 InstructionDesc[OpGroupNonUniformBallotBitCount].operands.push(OperandGroupOperation, "'Operation'"); 2763 InstructionDesc[OpGroupNonUniformBallotBitCount].operands.push(OperandId, "X"); 2764 2765 InstructionDesc[OpGroupNonUniformBallotFindLSB].operands.push(OperandScope, "'Execution'"); 2766 InstructionDesc[OpGroupNonUniformBallotFindLSB].operands.push(OperandId, "X"); 2767 2768 InstructionDesc[OpGroupNonUniformBallotFindMSB].operands.push(OperandScope, "'Execution'"); 2769 InstructionDesc[OpGroupNonUniformBallotFindMSB].operands.push(OperandId, "X"); 2770 2771 InstructionDesc[OpGroupNonUniformShuffle].operands.push(OperandScope, "'Execution'"); 2772 InstructionDesc[OpGroupNonUniformShuffle].operands.push(OperandId, "X"); 2773 InstructionDesc[OpGroupNonUniformShuffle].operands.push(OperandId, "'Id'"); 2774 2775 InstructionDesc[OpGroupNonUniformShuffleXor].operands.push(OperandScope, "'Execution'"); 2776 InstructionDesc[OpGroupNonUniformShuffleXor].operands.push(OperandId, "X"); 2777 InstructionDesc[OpGroupNonUniformShuffleXor].operands.push(OperandId, "Mask"); 2778 2779 InstructionDesc[OpGroupNonUniformShuffleUp].operands.push(OperandScope, "'Execution'"); 2780 InstructionDesc[OpGroupNonUniformShuffleUp].operands.push(OperandId, "X"); 2781 InstructionDesc[OpGroupNonUniformShuffleUp].operands.push(OperandId, "Offset"); 2782 2783 InstructionDesc[OpGroupNonUniformShuffleDown].operands.push(OperandScope, "'Execution'"); 2784 InstructionDesc[OpGroupNonUniformShuffleDown].operands.push(OperandId, "X"); 2785 InstructionDesc[OpGroupNonUniformShuffleDown].operands.push(OperandId, "Offset"); 2786 2787 InstructionDesc[OpGroupNonUniformIAdd].operands.push(OperandScope, "'Execution'"); 2788 InstructionDesc[OpGroupNonUniformIAdd].operands.push(OperandGroupOperation, "'Operation'"); 2789 InstructionDesc[OpGroupNonUniformIAdd].operands.push(OperandId, "X"); 2790 InstructionDesc[OpGroupNonUniformIAdd].operands.push(OperandId, "'ClusterSize'", true); 2791 2792 InstructionDesc[OpGroupNonUniformFAdd].operands.push(OperandScope, "'Execution'"); 2793 InstructionDesc[OpGroupNonUniformFAdd].operands.push(OperandGroupOperation, "'Operation'"); 2794 InstructionDesc[OpGroupNonUniformFAdd].operands.push(OperandId, "X"); 2795 InstructionDesc[OpGroupNonUniformFAdd].operands.push(OperandId, "'ClusterSize'", true); 2796 2797 InstructionDesc[OpGroupNonUniformIMul].operands.push(OperandScope, "'Execution'"); 2798 InstructionDesc[OpGroupNonUniformIMul].operands.push(OperandGroupOperation, "'Operation'"); 2799 InstructionDesc[OpGroupNonUniformIMul].operands.push(OperandId, "X"); 2800 InstructionDesc[OpGroupNonUniformIMul].operands.push(OperandId, "'ClusterSize'", true); 2801 2802 InstructionDesc[OpGroupNonUniformFMul].operands.push(OperandScope, "'Execution'"); 2803 InstructionDesc[OpGroupNonUniformFMul].operands.push(OperandGroupOperation, "'Operation'"); 2804 InstructionDesc[OpGroupNonUniformFMul].operands.push(OperandId, "X"); 2805 InstructionDesc[OpGroupNonUniformFMul].operands.push(OperandId, "'ClusterSize'", true); 2806 2807 InstructionDesc[OpGroupNonUniformSMin].operands.push(OperandScope, "'Execution'"); 2808 InstructionDesc[OpGroupNonUniformSMin].operands.push(OperandGroupOperation, "'Operation'"); 2809 InstructionDesc[OpGroupNonUniformSMin].operands.push(OperandId, "X"); 2810 InstructionDesc[OpGroupNonUniformSMin].operands.push(OperandId, "'ClusterSize'", true); 2811 2812 InstructionDesc[OpGroupNonUniformUMin].operands.push(OperandScope, "'Execution'"); 2813 InstructionDesc[OpGroupNonUniformUMin].operands.push(OperandGroupOperation, "'Operation'"); 2814 InstructionDesc[OpGroupNonUniformUMin].operands.push(OperandId, "X"); 2815 InstructionDesc[OpGroupNonUniformUMin].operands.push(OperandId, "'ClusterSize'", true); 2816 2817 InstructionDesc[OpGroupNonUniformFMin].operands.push(OperandScope, "'Execution'"); 2818 InstructionDesc[OpGroupNonUniformFMin].operands.push(OperandGroupOperation, "'Operation'"); 2819 InstructionDesc[OpGroupNonUniformFMin].operands.push(OperandId, "X"); 2820 InstructionDesc[OpGroupNonUniformFMin].operands.push(OperandId, "'ClusterSize'", true); 2821 2822 InstructionDesc[OpGroupNonUniformSMax].operands.push(OperandScope, "'Execution'"); 2823 InstructionDesc[OpGroupNonUniformSMax].operands.push(OperandGroupOperation, "'Operation'"); 2824 InstructionDesc[OpGroupNonUniformSMax].operands.push(OperandId, "X"); 2825 InstructionDesc[OpGroupNonUniformSMax].operands.push(OperandId, "'ClusterSize'", true); 2826 2827 InstructionDesc[OpGroupNonUniformUMax].operands.push(OperandScope, "'Execution'"); 2828 InstructionDesc[OpGroupNonUniformUMax].operands.push(OperandGroupOperation, "'Operation'"); 2829 InstructionDesc[OpGroupNonUniformUMax].operands.push(OperandId, "X"); 2830 InstructionDesc[OpGroupNonUniformUMax].operands.push(OperandId, "'ClusterSize'", true); 2831 2832 InstructionDesc[OpGroupNonUniformFMax].operands.push(OperandScope, "'Execution'"); 2833 InstructionDesc[OpGroupNonUniformFMax].operands.push(OperandGroupOperation, "'Operation'"); 2834 InstructionDesc[OpGroupNonUniformFMax].operands.push(OperandId, "X"); 2835 InstructionDesc[OpGroupNonUniformFMax].operands.push(OperandId, "'ClusterSize'", true); 2836 2837 InstructionDesc[OpGroupNonUniformBitwiseAnd].operands.push(OperandScope, "'Execution'"); 2838 InstructionDesc[OpGroupNonUniformBitwiseAnd].operands.push(OperandGroupOperation, "'Operation'"); 2839 InstructionDesc[OpGroupNonUniformBitwiseAnd].operands.push(OperandId, "X"); 2840 InstructionDesc[OpGroupNonUniformBitwiseAnd].operands.push(OperandId, "'ClusterSize'", true); 2841 2842 InstructionDesc[OpGroupNonUniformBitwiseOr].operands.push(OperandScope, "'Execution'"); 2843 InstructionDesc[OpGroupNonUniformBitwiseOr].operands.push(OperandGroupOperation, "'Operation'"); 2844 InstructionDesc[OpGroupNonUniformBitwiseOr].operands.push(OperandId, "X"); 2845 InstructionDesc[OpGroupNonUniformBitwiseOr].operands.push(OperandId, "'ClusterSize'", true); 2846 2847 InstructionDesc[OpGroupNonUniformBitwiseXor].operands.push(OperandScope, "'Execution'"); 2848 InstructionDesc[OpGroupNonUniformBitwiseXor].operands.push(OperandGroupOperation, "'Operation'"); 2849 InstructionDesc[OpGroupNonUniformBitwiseXor].operands.push(OperandId, "X"); 2850 InstructionDesc[OpGroupNonUniformBitwiseXor].operands.push(OperandId, "'ClusterSize'", true); 2851 2852 InstructionDesc[OpGroupNonUniformLogicalAnd].operands.push(OperandScope, "'Execution'"); 2853 InstructionDesc[OpGroupNonUniformLogicalAnd].operands.push(OperandGroupOperation, "'Operation'"); 2854 InstructionDesc[OpGroupNonUniformLogicalAnd].operands.push(OperandId, "X"); 2855 InstructionDesc[OpGroupNonUniformLogicalAnd].operands.push(OperandId, "'ClusterSize'", true); 2856 2857 InstructionDesc[OpGroupNonUniformLogicalOr].operands.push(OperandScope, "'Execution'"); 2858 InstructionDesc[OpGroupNonUniformLogicalOr].operands.push(OperandGroupOperation, "'Operation'"); 2859 InstructionDesc[OpGroupNonUniformLogicalOr].operands.push(OperandId, "X"); 2860 InstructionDesc[OpGroupNonUniformLogicalOr].operands.push(OperandId, "'ClusterSize'", true); 2861 2862 InstructionDesc[OpGroupNonUniformLogicalXor].operands.push(OperandScope, "'Execution'"); 2863 InstructionDesc[OpGroupNonUniformLogicalXor].operands.push(OperandGroupOperation, "'Operation'"); 2864 InstructionDesc[OpGroupNonUniformLogicalXor].operands.push(OperandId, "X"); 2865 InstructionDesc[OpGroupNonUniformLogicalXor].operands.push(OperandId, "'ClusterSize'", true); 2866 2867 InstructionDesc[OpGroupNonUniformQuadBroadcast].operands.push(OperandScope, "'Execution'"); 2868 InstructionDesc[OpGroupNonUniformQuadBroadcast].operands.push(OperandId, "X"); 2869 InstructionDesc[OpGroupNonUniformQuadBroadcast].operands.push(OperandId, "'Id'"); 2870 2871 InstructionDesc[OpGroupNonUniformQuadSwap].operands.push(OperandScope, "'Execution'"); 2872 InstructionDesc[OpGroupNonUniformQuadSwap].operands.push(OperandId, "X"); 2873 InstructionDesc[OpGroupNonUniformQuadSwap].operands.push(OperandId, "'Direction'"); 2874 2875 InstructionDesc[OpSubgroupBallotKHR].operands.push(OperandId, "'Predicate'"); 2876 2877 InstructionDesc[OpSubgroupFirstInvocationKHR].operands.push(OperandId, "'Value'"); 2878 2879 InstructionDesc[OpSubgroupAnyKHR].operands.push(OperandScope, "'Execution'"); 2880 InstructionDesc[OpSubgroupAnyKHR].operands.push(OperandId, "'Predicate'"); 2881 2882 InstructionDesc[OpSubgroupAllKHR].operands.push(OperandScope, "'Execution'"); 2883 InstructionDesc[OpSubgroupAllKHR].operands.push(OperandId, "'Predicate'"); 2884 2885 InstructionDesc[OpSubgroupAllEqualKHR].operands.push(OperandScope, "'Execution'"); 2886 InstructionDesc[OpSubgroupAllEqualKHR].operands.push(OperandId, "'Predicate'"); 2887 2888 InstructionDesc[OpSubgroupReadInvocationKHR].operands.push(OperandId, "'Value'"); 2889 InstructionDesc[OpSubgroupReadInvocationKHR].operands.push(OperandId, "'Index'"); 2890 2891 InstructionDesc[OpModuleProcessed].operands.push(OperandLiteralString, "'process'"); 2892 2893 InstructionDesc[OpGroupIAddNonUniformAMD].operands.push(OperandScope, "'Execution'"); 2894 InstructionDesc[OpGroupIAddNonUniformAMD].operands.push(OperandGroupOperation, "'Operation'"); 2895 InstructionDesc[OpGroupIAddNonUniformAMD].operands.push(OperandId, "'X'"); 2896 2897 InstructionDesc[OpGroupFAddNonUniformAMD].operands.push(OperandScope, "'Execution'"); 2898 InstructionDesc[OpGroupFAddNonUniformAMD].operands.push(OperandGroupOperation, "'Operation'"); 2899 InstructionDesc[OpGroupFAddNonUniformAMD].operands.push(OperandId, "'X'"); 2900 2901 InstructionDesc[OpGroupUMinNonUniformAMD].operands.push(OperandScope, "'Execution'"); 2902 InstructionDesc[OpGroupUMinNonUniformAMD].operands.push(OperandGroupOperation, "'Operation'"); 2903 InstructionDesc[OpGroupUMinNonUniformAMD].operands.push(OperandId, "'X'"); 2904 2905 InstructionDesc[OpGroupSMinNonUniformAMD].operands.push(OperandScope, "'Execution'"); 2906 InstructionDesc[OpGroupSMinNonUniformAMD].operands.push(OperandGroupOperation, "'Operation'"); 2907 InstructionDesc[OpGroupSMinNonUniformAMD].operands.push(OperandId, "X"); 2908 2909 InstructionDesc[OpGroupFMinNonUniformAMD].operands.push(OperandScope, "'Execution'"); 2910 InstructionDesc[OpGroupFMinNonUniformAMD].operands.push(OperandGroupOperation, "'Operation'"); 2911 InstructionDesc[OpGroupFMinNonUniformAMD].operands.push(OperandId, "X"); 2912 2913 InstructionDesc[OpGroupUMaxNonUniformAMD].operands.push(OperandScope, "'Execution'"); 2914 InstructionDesc[OpGroupUMaxNonUniformAMD].operands.push(OperandGroupOperation, "'Operation'"); 2915 InstructionDesc[OpGroupUMaxNonUniformAMD].operands.push(OperandId, "X"); 2916 2917 InstructionDesc[OpGroupSMaxNonUniformAMD].operands.push(OperandScope, "'Execution'"); 2918 InstructionDesc[OpGroupSMaxNonUniformAMD].operands.push(OperandGroupOperation, "'Operation'"); 2919 InstructionDesc[OpGroupSMaxNonUniformAMD].operands.push(OperandId, "X"); 2920 2921 InstructionDesc[OpGroupFMaxNonUniformAMD].operands.push(OperandScope, "'Execution'"); 2922 InstructionDesc[OpGroupFMaxNonUniformAMD].operands.push(OperandGroupOperation, "'Operation'"); 2923 InstructionDesc[OpGroupFMaxNonUniformAMD].operands.push(OperandId, "X"); 2924 2925 InstructionDesc[OpFragmentMaskFetchAMD].operands.push(OperandId, "'Image'"); 2926 InstructionDesc[OpFragmentMaskFetchAMD].operands.push(OperandId, "'Coordinate'"); 2927 2928 InstructionDesc[OpFragmentFetchAMD].operands.push(OperandId, "'Image'"); 2929 InstructionDesc[OpFragmentFetchAMD].operands.push(OperandId, "'Coordinate'"); 2930 InstructionDesc[OpFragmentFetchAMD].operands.push(OperandId, "'Fragment Index'"); 2931 2932 InstructionDesc[OpGroupNonUniformPartitionNV].operands.push(OperandId, "X"); 2933 2934 InstructionDesc[OpTypeAccelerationStructureKHR].setResultAndType(true, false); 2935 2936 InstructionDesc[OpTraceNV].operands.push(OperandId, "'Acceleration Structure'"); 2937 InstructionDesc[OpTraceNV].operands.push(OperandId, "'Ray Flags'"); 2938 InstructionDesc[OpTraceNV].operands.push(OperandId, "'Cull Mask'"); 2939 InstructionDesc[OpTraceNV].operands.push(OperandId, "'SBT Record Offset'"); 2940 InstructionDesc[OpTraceNV].operands.push(OperandId, "'SBT Record Stride'"); 2941 InstructionDesc[OpTraceNV].operands.push(OperandId, "'Miss Index'"); 2942 InstructionDesc[OpTraceNV].operands.push(OperandId, "'Ray Origin'"); 2943 InstructionDesc[OpTraceNV].operands.push(OperandId, "'TMin'"); 2944 InstructionDesc[OpTraceNV].operands.push(OperandId, "'Ray Direction'"); 2945 InstructionDesc[OpTraceNV].operands.push(OperandId, "'TMax'"); 2946 InstructionDesc[OpTraceNV].operands.push(OperandId, "'Payload'"); 2947 InstructionDesc[OpTraceNV].setResultAndType(false, false); 2948 2949 InstructionDesc[OpTraceRayMotionNV].operands.push(OperandId, "'Acceleration Structure'"); 2950 InstructionDesc[OpTraceRayMotionNV].operands.push(OperandId, "'Ray Flags'"); 2951 InstructionDesc[OpTraceRayMotionNV].operands.push(OperandId, "'Cull Mask'"); 2952 InstructionDesc[OpTraceRayMotionNV].operands.push(OperandId, "'SBT Record Offset'"); 2953 InstructionDesc[OpTraceRayMotionNV].operands.push(OperandId, "'SBT Record Stride'"); 2954 InstructionDesc[OpTraceRayMotionNV].operands.push(OperandId, "'Miss Index'"); 2955 InstructionDesc[OpTraceRayMotionNV].operands.push(OperandId, "'Ray Origin'"); 2956 InstructionDesc[OpTraceRayMotionNV].operands.push(OperandId, "'TMin'"); 2957 InstructionDesc[OpTraceRayMotionNV].operands.push(OperandId, "'Ray Direction'"); 2958 InstructionDesc[OpTraceRayMotionNV].operands.push(OperandId, "'TMax'"); 2959 InstructionDesc[OpTraceRayMotionNV].operands.push(OperandId, "'Time'"); 2960 InstructionDesc[OpTraceRayMotionNV].operands.push(OperandId, "'Payload'"); 2961 InstructionDesc[OpTraceRayMotionNV].setResultAndType(false, false); 2962 2963 InstructionDesc[OpTraceRayKHR].operands.push(OperandId, "'Acceleration Structure'"); 2964 InstructionDesc[OpTraceRayKHR].operands.push(OperandId, "'Ray Flags'"); 2965 InstructionDesc[OpTraceRayKHR].operands.push(OperandId, "'Cull Mask'"); 2966 InstructionDesc[OpTraceRayKHR].operands.push(OperandId, "'SBT Record Offset'"); 2967 InstructionDesc[OpTraceRayKHR].operands.push(OperandId, "'SBT Record Stride'"); 2968 InstructionDesc[OpTraceRayKHR].operands.push(OperandId, "'Miss Index'"); 2969 InstructionDesc[OpTraceRayKHR].operands.push(OperandId, "'Ray Origin'"); 2970 InstructionDesc[OpTraceRayKHR].operands.push(OperandId, "'TMin'"); 2971 InstructionDesc[OpTraceRayKHR].operands.push(OperandId, "'Ray Direction'"); 2972 InstructionDesc[OpTraceRayKHR].operands.push(OperandId, "'TMax'"); 2973 InstructionDesc[OpTraceRayKHR].operands.push(OperandId, "'Payload'"); 2974 InstructionDesc[OpTraceRayKHR].setResultAndType(false, false); 2975 2976 InstructionDesc[OpReportIntersectionKHR].operands.push(OperandId, "'Hit Parameter'"); 2977 InstructionDesc[OpReportIntersectionKHR].operands.push(OperandId, "'Hit Kind'"); 2978 2979 InstructionDesc[OpIgnoreIntersectionNV].setResultAndType(false, false); 2980 2981 InstructionDesc[OpIgnoreIntersectionKHR].setResultAndType(false, false); 2982 2983 InstructionDesc[OpTerminateRayNV].setResultAndType(false, false); 2984 2985 InstructionDesc[OpTerminateRayKHR].setResultAndType(false, false); 2986 2987 InstructionDesc[OpExecuteCallableNV].operands.push(OperandId, "SBT Record Index"); 2988 InstructionDesc[OpExecuteCallableNV].operands.push(OperandId, "CallableData ID"); 2989 InstructionDesc[OpExecuteCallableNV].setResultAndType(false, false); 2990 2991 InstructionDesc[OpExecuteCallableKHR].operands.push(OperandId, "SBT Record Index"); 2992 InstructionDesc[OpExecuteCallableKHR].operands.push(OperandId, "CallableData"); 2993 InstructionDesc[OpExecuteCallableKHR].setResultAndType(false, false); 2994 2995 InstructionDesc[OpConvertUToAccelerationStructureKHR].operands.push(OperandId, "Value"); 2996 InstructionDesc[OpConvertUToAccelerationStructureKHR].setResultAndType(true, true); 2997 2998 // Ray Query 2999 InstructionDesc[OpTypeAccelerationStructureKHR].setResultAndType(true, false); 3000 InstructionDesc[OpTypeRayQueryKHR].setResultAndType(true, false); 3001 3002 InstructionDesc[OpRayQueryInitializeKHR].operands.push(OperandId, "'RayQuery'"); 3003 InstructionDesc[OpRayQueryInitializeKHR].operands.push(OperandId, "'AccelerationS'"); 3004 InstructionDesc[OpRayQueryInitializeKHR].operands.push(OperandId, "'RayFlags'"); 3005 InstructionDesc[OpRayQueryInitializeKHR].operands.push(OperandId, "'CullMask'"); 3006 InstructionDesc[OpRayQueryInitializeKHR].operands.push(OperandId, "'Origin'"); 3007 InstructionDesc[OpRayQueryInitializeKHR].operands.push(OperandId, "'Tmin'"); 3008 InstructionDesc[OpRayQueryInitializeKHR].operands.push(OperandId, "'Direction'"); 3009 InstructionDesc[OpRayQueryInitializeKHR].operands.push(OperandId, "'Tmax'"); 3010 InstructionDesc[OpRayQueryInitializeKHR].setResultAndType(false, false); 3011 3012 InstructionDesc[OpRayQueryTerminateKHR].operands.push(OperandId, "'RayQuery'"); 3013 InstructionDesc[OpRayQueryTerminateKHR].setResultAndType(false, false); 3014 3015 InstructionDesc[OpRayQueryGenerateIntersectionKHR].operands.push(OperandId, "'RayQuery'"); 3016 InstructionDesc[OpRayQueryGenerateIntersectionKHR].operands.push(OperandId, "'THit'"); 3017 InstructionDesc[OpRayQueryGenerateIntersectionKHR].setResultAndType(false, false); 3018 3019 InstructionDesc[OpRayQueryConfirmIntersectionKHR].operands.push(OperandId, "'RayQuery'"); 3020 InstructionDesc[OpRayQueryConfirmIntersectionKHR].setResultAndType(false, false); 3021 3022 InstructionDesc[OpRayQueryProceedKHR].operands.push(OperandId, "'RayQuery'"); 3023 InstructionDesc[OpRayQueryProceedKHR].setResultAndType(true, true); 3024 3025 InstructionDesc[OpRayQueryGetIntersectionTypeKHR].operands.push(OperandId, "'RayQuery'"); 3026 InstructionDesc[OpRayQueryGetIntersectionTypeKHR].operands.push(OperandId, "'Committed'"); 3027 InstructionDesc[OpRayQueryGetIntersectionTypeKHR].setResultAndType(true, true); 3028 3029 InstructionDesc[OpRayQueryGetRayTMinKHR].operands.push(OperandId, "'RayQuery'"); 3030 InstructionDesc[OpRayQueryGetRayTMinKHR].setResultAndType(true, true); 3031 3032 InstructionDesc[OpRayQueryGetRayFlagsKHR].operands.push(OperandId, "'RayQuery'"); 3033 InstructionDesc[OpRayQueryGetRayFlagsKHR].setResultAndType(true, true); 3034 3035 InstructionDesc[OpRayQueryGetIntersectionTKHR].operands.push(OperandId, "'RayQuery'"); 3036 InstructionDesc[OpRayQueryGetIntersectionTKHR].operands.push(OperandId, "'Committed'"); 3037 InstructionDesc[OpRayQueryGetIntersectionTKHR].setResultAndType(true, true); 3038 3039 InstructionDesc[OpRayQueryGetIntersectionInstanceCustomIndexKHR].operands.push(OperandId, "'RayQuery'"); 3040 InstructionDesc[OpRayQueryGetIntersectionInstanceCustomIndexKHR].operands.push(OperandId, "'Committed'"); 3041 InstructionDesc[OpRayQueryGetIntersectionInstanceCustomIndexKHR].setResultAndType(true, true); 3042 3043 InstructionDesc[OpRayQueryGetIntersectionInstanceIdKHR].operands.push(OperandId, "'RayQuery'"); 3044 InstructionDesc[OpRayQueryGetIntersectionInstanceIdKHR].operands.push(OperandId, "'Committed'"); 3045 InstructionDesc[OpRayQueryGetIntersectionInstanceIdKHR].setResultAndType(true, true); 3046 3047 InstructionDesc[OpRayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR].operands.push(OperandId, "'RayQuery'"); 3048 InstructionDesc[OpRayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR].operands.push(OperandId, "'Committed'"); 3049 InstructionDesc[OpRayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR].setResultAndType(true, true); 3050 3051 InstructionDesc[OpRayQueryGetIntersectionGeometryIndexKHR].operands.push(OperandId, "'RayQuery'"); 3052 InstructionDesc[OpRayQueryGetIntersectionGeometryIndexKHR].operands.push(OperandId, "'Committed'"); 3053 InstructionDesc[OpRayQueryGetIntersectionGeometryIndexKHR].setResultAndType(true, true); 3054 3055 InstructionDesc[OpRayQueryGetIntersectionPrimitiveIndexKHR].operands.push(OperandId, "'RayQuery'"); 3056 InstructionDesc[OpRayQueryGetIntersectionPrimitiveIndexKHR].operands.push(OperandId, "'Committed'"); 3057 InstructionDesc[OpRayQueryGetIntersectionPrimitiveIndexKHR].setResultAndType(true, true); 3058 3059 InstructionDesc[OpRayQueryGetIntersectionBarycentricsKHR].operands.push(OperandId, "'RayQuery'"); 3060 InstructionDesc[OpRayQueryGetIntersectionBarycentricsKHR].operands.push(OperandId, "'Committed'"); 3061 InstructionDesc[OpRayQueryGetIntersectionBarycentricsKHR].setResultAndType(true, true); 3062 3063 InstructionDesc[OpRayQueryGetIntersectionFrontFaceKHR].operands.push(OperandId, "'RayQuery'"); 3064 InstructionDesc[OpRayQueryGetIntersectionFrontFaceKHR].operands.push(OperandId, "'Committed'"); 3065 InstructionDesc[OpRayQueryGetIntersectionFrontFaceKHR].setResultAndType(true, true); 3066 3067 InstructionDesc[OpRayQueryGetIntersectionCandidateAABBOpaqueKHR].operands.push(OperandId, "'RayQuery'"); 3068 InstructionDesc[OpRayQueryGetIntersectionCandidateAABBOpaqueKHR].setResultAndType(true, true); 3069 3070 InstructionDesc[OpRayQueryGetIntersectionObjectRayDirectionKHR].operands.push(OperandId, "'RayQuery'"); 3071 InstructionDesc[OpRayQueryGetIntersectionObjectRayDirectionKHR].operands.push(OperandId, "'Committed'"); 3072 InstructionDesc[OpRayQueryGetIntersectionObjectRayDirectionKHR].setResultAndType(true, true); 3073 3074 InstructionDesc[OpRayQueryGetIntersectionObjectRayOriginKHR].operands.push(OperandId, "'RayQuery'"); 3075 InstructionDesc[OpRayQueryGetIntersectionObjectRayOriginKHR].operands.push(OperandId, "'Committed'"); 3076 InstructionDesc[OpRayQueryGetIntersectionObjectRayOriginKHR].setResultAndType(true, true); 3077 3078 InstructionDesc[OpRayQueryGetWorldRayDirectionKHR].operands.push(OperandId, "'RayQuery'"); 3079 InstructionDesc[OpRayQueryGetWorldRayDirectionKHR].setResultAndType(true, true); 3080 3081 InstructionDesc[OpRayQueryGetWorldRayOriginKHR].operands.push(OperandId, "'RayQuery'"); 3082 InstructionDesc[OpRayQueryGetWorldRayOriginKHR].setResultAndType(true, true); 3083 3084 InstructionDesc[OpRayQueryGetIntersectionObjectToWorldKHR].operands.push(OperandId, "'RayQuery'"); 3085 InstructionDesc[OpRayQueryGetIntersectionObjectToWorldKHR].operands.push(OperandId, "'Committed'"); 3086 InstructionDesc[OpRayQueryGetIntersectionObjectToWorldKHR].setResultAndType(true, true); 3087 3088 InstructionDesc[OpRayQueryGetIntersectionWorldToObjectKHR].operands.push(OperandId, "'RayQuery'"); 3089 InstructionDesc[OpRayQueryGetIntersectionWorldToObjectKHR].operands.push(OperandId, "'Committed'"); 3090 InstructionDesc[OpRayQueryGetIntersectionWorldToObjectKHR].setResultAndType(true, true); 3091 3092 InstructionDesc[OpRayQueryGetIntersectionTriangleVertexPositionsKHR].operands.push(OperandId, "'RayQuery'"); 3093 InstructionDesc[OpRayQueryGetIntersectionTriangleVertexPositionsKHR].operands.push(OperandId, "'Committed'"); 3094 InstructionDesc[OpRayQueryGetIntersectionTriangleVertexPositionsKHR].setResultAndType(true, true); 3095 3096 InstructionDesc[OpImageSampleFootprintNV].operands.push(OperandId, "'Sampled Image'"); 3097 InstructionDesc[OpImageSampleFootprintNV].operands.push(OperandId, "'Coordinate'"); 3098 InstructionDesc[OpImageSampleFootprintNV].operands.push(OperandId, "'Granularity'"); 3099 InstructionDesc[OpImageSampleFootprintNV].operands.push(OperandId, "'Coarse'"); 3100 InstructionDesc[OpImageSampleFootprintNV].operands.push(OperandImageOperands, "", true); 3101 InstructionDesc[OpImageSampleFootprintNV].operands.push(OperandVariableIds, "", true); 3102 3103 InstructionDesc[OpWritePackedPrimitiveIndices4x8NV].operands.push(OperandId, "'Index Offset'"); 3104 InstructionDesc[OpWritePackedPrimitiveIndices4x8NV].operands.push(OperandId, "'Packed Indices'"); 3105 3106 InstructionDesc[OpEmitMeshTasksEXT].operands.push(OperandId, "'groupCountX'"); 3107 InstructionDesc[OpEmitMeshTasksEXT].operands.push(OperandId, "'groupCountY'"); 3108 InstructionDesc[OpEmitMeshTasksEXT].operands.push(OperandId, "'groupCountZ'"); 3109 InstructionDesc[OpEmitMeshTasksEXT].operands.push(OperandId, "'Payload'"); 3110 InstructionDesc[OpEmitMeshTasksEXT].setResultAndType(false, false); 3111 3112 InstructionDesc[OpSetMeshOutputsEXT].operands.push(OperandId, "'vertexCount'"); 3113 InstructionDesc[OpSetMeshOutputsEXT].operands.push(OperandId, "'primitiveCount'"); 3114 InstructionDesc[OpSetMeshOutputsEXT].setResultAndType(false, false); 3115 3116 3117 InstructionDesc[OpTypeCooperativeMatrixNV].operands.push(OperandId, "'Component Type'"); 3118 InstructionDesc[OpTypeCooperativeMatrixNV].operands.push(OperandId, "'Scope'"); 3119 InstructionDesc[OpTypeCooperativeMatrixNV].operands.push(OperandId, "'Rows'"); 3120 InstructionDesc[OpTypeCooperativeMatrixNV].operands.push(OperandId, "'Columns'"); 3121 3122 InstructionDesc[OpCooperativeMatrixLoadNV].operands.push(OperandId, "'Pointer'"); 3123 InstructionDesc[OpCooperativeMatrixLoadNV].operands.push(OperandId, "'Stride'"); 3124 InstructionDesc[OpCooperativeMatrixLoadNV].operands.push(OperandId, "'Column Major'"); 3125 InstructionDesc[OpCooperativeMatrixLoadNV].operands.push(OperandMemoryAccess, "'Memory Access'"); 3126 InstructionDesc[OpCooperativeMatrixLoadNV].operands.push(OperandLiteralNumber, "", true); 3127 InstructionDesc[OpCooperativeMatrixLoadNV].operands.push(OperandId, "", true); 3128 3129 InstructionDesc[OpCooperativeMatrixStoreNV].operands.push(OperandId, "'Pointer'"); 3130 InstructionDesc[OpCooperativeMatrixStoreNV].operands.push(OperandId, "'Object'"); 3131 InstructionDesc[OpCooperativeMatrixStoreNV].operands.push(OperandId, "'Stride'"); 3132 InstructionDesc[OpCooperativeMatrixStoreNV].operands.push(OperandId, "'Column Major'"); 3133 InstructionDesc[OpCooperativeMatrixStoreNV].operands.push(OperandMemoryAccess, "'Memory Access'"); 3134 InstructionDesc[OpCooperativeMatrixStoreNV].operands.push(OperandLiteralNumber, "", true); 3135 InstructionDesc[OpCooperativeMatrixStoreNV].operands.push(OperandId, "", true); 3136 3137 InstructionDesc[OpCooperativeMatrixMulAddNV].operands.push(OperandId, "'A'"); 3138 InstructionDesc[OpCooperativeMatrixMulAddNV].operands.push(OperandId, "'B'"); 3139 InstructionDesc[OpCooperativeMatrixMulAddNV].operands.push(OperandId, "'C'"); 3140 3141 InstructionDesc[OpCooperativeMatrixLengthNV].operands.push(OperandId, "'Type'"); 3142 3143 InstructionDesc[OpTypeCooperativeMatrixKHR].operands.push(OperandId, "'Component Type'"); 3144 InstructionDesc[OpTypeCooperativeMatrixKHR].operands.push(OperandId, "'Scope'"); 3145 InstructionDesc[OpTypeCooperativeMatrixKHR].operands.push(OperandId, "'Rows'"); 3146 InstructionDesc[OpTypeCooperativeMatrixKHR].operands.push(OperandId, "'Columns'"); 3147 InstructionDesc[OpTypeCooperativeMatrixKHR].operands.push(OperandId, "'Use'"); 3148 3149 InstructionDesc[OpCooperativeMatrixLoadKHR].operands.push(OperandId, "'Pointer'"); 3150 InstructionDesc[OpCooperativeMatrixLoadKHR].operands.push(OperandId, "'Memory Layout'"); 3151 InstructionDesc[OpCooperativeMatrixLoadKHR].operands.push(OperandId, "'Stride'"); 3152 InstructionDesc[OpCooperativeMatrixLoadKHR].operands.push(OperandMemoryAccess, "'Memory Access'"); 3153 InstructionDesc[OpCooperativeMatrixLoadKHR].operands.push(OperandLiteralNumber, "", true); 3154 InstructionDesc[OpCooperativeMatrixLoadKHR].operands.push(OperandId, "", true); 3155 3156 InstructionDesc[OpCooperativeMatrixStoreKHR].operands.push(OperandId, "'Pointer'"); 3157 InstructionDesc[OpCooperativeMatrixStoreKHR].operands.push(OperandId, "'Object'"); 3158 InstructionDesc[OpCooperativeMatrixStoreKHR].operands.push(OperandId, "'Memory Layout'"); 3159 InstructionDesc[OpCooperativeMatrixStoreKHR].operands.push(OperandId, "'Stride'"); 3160 InstructionDesc[OpCooperativeMatrixStoreKHR].operands.push(OperandMemoryAccess, "'Memory Access'"); 3161 InstructionDesc[OpCooperativeMatrixStoreKHR].operands.push(OperandLiteralNumber, "", true); 3162 InstructionDesc[OpCooperativeMatrixStoreKHR].operands.push(OperandId, "", true); 3163 3164 InstructionDesc[OpCooperativeMatrixMulAddKHR].operands.push(OperandId, "'A'"); 3165 InstructionDesc[OpCooperativeMatrixMulAddKHR].operands.push(OperandId, "'B'"); 3166 InstructionDesc[OpCooperativeMatrixMulAddKHR].operands.push(OperandId, "'C'"); 3167 InstructionDesc[OpCooperativeMatrixMulAddKHR].operands.push(OperandCooperativeMatrixOperands, "'Cooperative Matrix Operands'", true); 3168 3169 InstructionDesc[OpCooperativeMatrixLengthKHR].operands.push(OperandId, "'Type'"); 3170 3171 InstructionDesc[OpDemoteToHelperInvocationEXT].setResultAndType(false, false); 3172 3173 InstructionDesc[OpReadClockKHR].operands.push(OperandScope, "'Scope'"); 3174 3175 InstructionDesc[OpTypeHitObjectNV].setResultAndType(true, false); 3176 3177 InstructionDesc[OpHitObjectGetShaderRecordBufferHandleNV].operands.push(OperandId, "'HitObject'"); 3178 InstructionDesc[OpHitObjectGetShaderRecordBufferHandleNV].setResultAndType(true, true); 3179 3180 InstructionDesc[OpReorderThreadWithHintNV].operands.push(OperandId, "'Hint'"); 3181 InstructionDesc[OpReorderThreadWithHintNV].operands.push(OperandId, "'Bits'"); 3182 InstructionDesc[OpReorderThreadWithHintNV].setResultAndType(false, false); 3183 3184 InstructionDesc[OpReorderThreadWithHitObjectNV].operands.push(OperandId, "'HitObject'"); 3185 InstructionDesc[OpReorderThreadWithHitObjectNV].operands.push(OperandId, "'Hint'"); 3186 InstructionDesc[OpReorderThreadWithHitObjectNV].operands.push(OperandId, "'Bits'"); 3187 InstructionDesc[OpReorderThreadWithHitObjectNV].setResultAndType(false, false); 3188 3189 InstructionDesc[OpHitObjectGetCurrentTimeNV].operands.push(OperandId, "'HitObject'"); 3190 InstructionDesc[OpHitObjectGetCurrentTimeNV].setResultAndType(true, true); 3191 3192 InstructionDesc[OpHitObjectGetHitKindNV].operands.push(OperandId, "'HitObject'"); 3193 InstructionDesc[OpHitObjectGetHitKindNV].setResultAndType(true, true); 3194 3195 InstructionDesc[OpHitObjectGetPrimitiveIndexNV].operands.push(OperandId, "'HitObject'"); 3196 InstructionDesc[OpHitObjectGetPrimitiveIndexNV].setResultAndType(true, true); 3197 3198 InstructionDesc[OpHitObjectGetGeometryIndexNV].operands.push(OperandId, "'HitObject'"); 3199 InstructionDesc[OpHitObjectGetGeometryIndexNV].setResultAndType(true, true); 3200 3201 InstructionDesc[OpHitObjectGetInstanceIdNV].operands.push(OperandId, "'HitObject'"); 3202 InstructionDesc[OpHitObjectGetInstanceIdNV].setResultAndType(true, true); 3203 3204 InstructionDesc[OpHitObjectGetInstanceCustomIndexNV].operands.push(OperandId, "'HitObject'"); 3205 InstructionDesc[OpHitObjectGetInstanceCustomIndexNV].setResultAndType(true, true); 3206 3207 InstructionDesc[OpHitObjectGetObjectRayDirectionNV].operands.push(OperandId, "'HitObject'"); 3208 InstructionDesc[OpHitObjectGetObjectRayDirectionNV].setResultAndType(true, true); 3209 3210 InstructionDesc[OpHitObjectGetObjectRayOriginNV].operands.push(OperandId, "'HitObject'"); 3211 InstructionDesc[OpHitObjectGetObjectRayOriginNV].setResultAndType(true, true); 3212 3213 InstructionDesc[OpHitObjectGetWorldRayDirectionNV].operands.push(OperandId, "'HitObject'"); 3214 InstructionDesc[OpHitObjectGetWorldRayDirectionNV].setResultAndType(true, true); 3215 3216 InstructionDesc[OpHitObjectGetWorldRayOriginNV].operands.push(OperandId, "'HitObject'"); 3217 InstructionDesc[OpHitObjectGetWorldRayOriginNV].setResultAndType(true, true); 3218 3219 InstructionDesc[OpHitObjectGetWorldToObjectNV].operands.push(OperandId, "'HitObject'"); 3220 InstructionDesc[OpHitObjectGetWorldToObjectNV].setResultAndType(true, true); 3221 3222 InstructionDesc[OpHitObjectGetObjectToWorldNV].operands.push(OperandId, "'HitObject'"); 3223 InstructionDesc[OpHitObjectGetObjectToWorldNV].setResultAndType(true, true); 3224 3225 InstructionDesc[OpHitObjectGetRayTMaxNV].operands.push(OperandId, "'HitObject'"); 3226 InstructionDesc[OpHitObjectGetRayTMaxNV].setResultAndType(true, true); 3227 3228 InstructionDesc[OpHitObjectGetRayTMinNV].operands.push(OperandId, "'HitObject'"); 3229 InstructionDesc[OpHitObjectGetRayTMinNV].setResultAndType(true, true); 3230 3231 InstructionDesc[OpHitObjectGetShaderBindingTableRecordIndexNV].operands.push(OperandId, "'HitObject'"); 3232 InstructionDesc[OpHitObjectGetShaderBindingTableRecordIndexNV].setResultAndType(true, true); 3233 3234 InstructionDesc[OpHitObjectIsEmptyNV].operands.push(OperandId, "'HitObject'"); 3235 InstructionDesc[OpHitObjectIsEmptyNV].setResultAndType(true, true); 3236 3237 InstructionDesc[OpHitObjectIsHitNV].operands.push(OperandId, "'HitObject'"); 3238 InstructionDesc[OpHitObjectIsHitNV].setResultAndType(true, true); 3239 3240 InstructionDesc[OpHitObjectIsMissNV].operands.push(OperandId, "'HitObject'"); 3241 InstructionDesc[OpHitObjectIsMissNV].setResultAndType(true, true); 3242 3243 InstructionDesc[OpHitObjectGetAttributesNV].operands.push(OperandId, "'HitObject'"); 3244 InstructionDesc[OpHitObjectGetAttributesNV].operands.push(OperandId, "'HitObjectAttribute'"); 3245 InstructionDesc[OpHitObjectGetAttributesNV].setResultAndType(false, false); 3246 3247 InstructionDesc[OpHitObjectExecuteShaderNV].operands.push(OperandId, "'HitObject'"); 3248 InstructionDesc[OpHitObjectExecuteShaderNV].operands.push(OperandId, "'Payload'"); 3249 InstructionDesc[OpHitObjectExecuteShaderNV].setResultAndType(false, false); 3250 3251 InstructionDesc[OpHitObjectRecordHitNV].operands.push(OperandId, "'HitObject'"); 3252 InstructionDesc[OpHitObjectRecordHitNV].operands.push(OperandId, "'Acceleration Structure'"); 3253 InstructionDesc[OpHitObjectRecordHitNV].operands.push(OperandId, "'InstanceId'"); 3254 InstructionDesc[OpHitObjectRecordHitNV].operands.push(OperandId, "'PrimitiveId'"); 3255 InstructionDesc[OpHitObjectRecordHitNV].operands.push(OperandId, "'GeometryIndex'"); 3256 InstructionDesc[OpHitObjectRecordHitNV].operands.push(OperandId, "'HitKind'"); 3257 InstructionDesc[OpHitObjectRecordHitNV].operands.push(OperandId, "'SBT Record Offset'"); 3258 InstructionDesc[OpHitObjectRecordHitNV].operands.push(OperandId, "'SBT Record Stride'"); 3259 InstructionDesc[OpHitObjectRecordHitNV].operands.push(OperandId, "'Origin'"); 3260 InstructionDesc[OpHitObjectRecordHitNV].operands.push(OperandId, "'TMin'"); 3261 InstructionDesc[OpHitObjectRecordHitNV].operands.push(OperandId, "'Direction'"); 3262 InstructionDesc[OpHitObjectRecordHitNV].operands.push(OperandId, "'TMax'"); 3263 InstructionDesc[OpHitObjectRecordHitNV].operands.push(OperandId, "'HitObject Attribute'"); 3264 InstructionDesc[OpHitObjectRecordHitNV].setResultAndType(false, false); 3265 3266 InstructionDesc[OpHitObjectRecordHitMotionNV].operands.push(OperandId, "'HitObject'"); 3267 InstructionDesc[OpHitObjectRecordHitMotionNV].operands.push(OperandId, "'Acceleration Structure'"); 3268 InstructionDesc[OpHitObjectRecordHitMotionNV].operands.push(OperandId, "'InstanceId'"); 3269 InstructionDesc[OpHitObjectRecordHitMotionNV].operands.push(OperandId, "'PrimitiveId'"); 3270 InstructionDesc[OpHitObjectRecordHitMotionNV].operands.push(OperandId, "'GeometryIndex'"); 3271 InstructionDesc[OpHitObjectRecordHitMotionNV].operands.push(OperandId, "'HitKind'"); 3272 InstructionDesc[OpHitObjectRecordHitMotionNV].operands.push(OperandId, "'SBT Record Offset'"); 3273 InstructionDesc[OpHitObjectRecordHitMotionNV].operands.push(OperandId, "'SBT Record Stride'"); 3274 InstructionDesc[OpHitObjectRecordHitMotionNV].operands.push(OperandId, "'Origin'"); 3275 InstructionDesc[OpHitObjectRecordHitMotionNV].operands.push(OperandId, "'TMin'"); 3276 InstructionDesc[OpHitObjectRecordHitMotionNV].operands.push(OperandId, "'Direction'"); 3277 InstructionDesc[OpHitObjectRecordHitMotionNV].operands.push(OperandId, "'TMax'"); 3278 InstructionDesc[OpHitObjectRecordHitMotionNV].operands.push(OperandId, "'Current Time'"); 3279 InstructionDesc[OpHitObjectRecordHitMotionNV].operands.push(OperandId, "'HitObject Attribute'"); 3280 InstructionDesc[OpHitObjectRecordHitMotionNV].setResultAndType(false, false); 3281 3282 InstructionDesc[OpHitObjectRecordHitWithIndexNV].operands.push(OperandId, "'HitObject'"); 3283 InstructionDesc[OpHitObjectRecordHitWithIndexNV].operands.push(OperandId, "'Acceleration Structure'"); 3284 InstructionDesc[OpHitObjectRecordHitWithIndexNV].operands.push(OperandId, "'InstanceId'"); 3285 InstructionDesc[OpHitObjectRecordHitWithIndexNV].operands.push(OperandId, "'PrimitiveId'"); 3286 InstructionDesc[OpHitObjectRecordHitWithIndexNV].operands.push(OperandId, "'GeometryIndex'"); 3287 InstructionDesc[OpHitObjectRecordHitWithIndexNV].operands.push(OperandId, "'HitKind'"); 3288 InstructionDesc[OpHitObjectRecordHitWithIndexNV].operands.push(OperandId, "'SBT Record Index'"); 3289 InstructionDesc[OpHitObjectRecordHitWithIndexNV].operands.push(OperandId, "'Origin'"); 3290 InstructionDesc[OpHitObjectRecordHitWithIndexNV].operands.push(OperandId, "'TMin'"); 3291 InstructionDesc[OpHitObjectRecordHitWithIndexNV].operands.push(OperandId, "'Direction'"); 3292 InstructionDesc[OpHitObjectRecordHitWithIndexNV].operands.push(OperandId, "'TMax'"); 3293 InstructionDesc[OpHitObjectRecordHitWithIndexNV].operands.push(OperandId, "'HitObject Attribute'"); 3294 InstructionDesc[OpHitObjectRecordHitWithIndexNV].setResultAndType(false, false); 3295 3296 InstructionDesc[OpHitObjectRecordHitWithIndexMotionNV].operands.push(OperandId, "'HitObject'"); 3297 InstructionDesc[OpHitObjectRecordHitWithIndexMotionNV].operands.push(OperandId, "'Acceleration Structure'"); 3298 InstructionDesc[OpHitObjectRecordHitWithIndexMotionNV].operands.push(OperandId, "'InstanceId'"); 3299 InstructionDesc[OpHitObjectRecordHitWithIndexMotionNV].operands.push(OperandId, "'PrimitiveId'"); 3300 InstructionDesc[OpHitObjectRecordHitWithIndexMotionNV].operands.push(OperandId, "'GeometryIndex'"); 3301 InstructionDesc[OpHitObjectRecordHitWithIndexMotionNV].operands.push(OperandId, "'HitKind'"); 3302 InstructionDesc[OpHitObjectRecordHitWithIndexMotionNV].operands.push(OperandId, "'SBT Record Index'"); 3303 InstructionDesc[OpHitObjectRecordHitWithIndexMotionNV].operands.push(OperandId, "'Origin'"); 3304 InstructionDesc[OpHitObjectRecordHitWithIndexMotionNV].operands.push(OperandId, "'TMin'"); 3305 InstructionDesc[OpHitObjectRecordHitWithIndexMotionNV].operands.push(OperandId, "'Direction'"); 3306 InstructionDesc[OpHitObjectRecordHitWithIndexMotionNV].operands.push(OperandId, "'TMax'"); 3307 InstructionDesc[OpHitObjectRecordHitWithIndexMotionNV].operands.push(OperandId, "'Current Time'"); 3308 InstructionDesc[OpHitObjectRecordHitWithIndexMotionNV].operands.push(OperandId, "'HitObject Attribute'"); 3309 InstructionDesc[OpHitObjectRecordHitWithIndexMotionNV].setResultAndType(false, false); 3310 3311 InstructionDesc[OpHitObjectRecordMissNV].operands.push(OperandId, "'HitObject'"); 3312 InstructionDesc[OpHitObjectRecordMissNV].operands.push(OperandId, "'SBT Index'"); 3313 InstructionDesc[OpHitObjectRecordMissNV].operands.push(OperandId, "'Origin'"); 3314 InstructionDesc[OpHitObjectRecordMissNV].operands.push(OperandId, "'TMin'"); 3315 InstructionDesc[OpHitObjectRecordMissNV].operands.push(OperandId, "'Direction'"); 3316 InstructionDesc[OpHitObjectRecordMissNV].operands.push(OperandId, "'TMax'"); 3317 InstructionDesc[OpHitObjectRecordMissNV].setResultAndType(false, false); 3318 3319 InstructionDesc[OpHitObjectRecordMissMotionNV].operands.push(OperandId, "'HitObject'"); 3320 InstructionDesc[OpHitObjectRecordMissMotionNV].operands.push(OperandId, "'SBT Index'"); 3321 InstructionDesc[OpHitObjectRecordMissMotionNV].operands.push(OperandId, "'Origin'"); 3322 InstructionDesc[OpHitObjectRecordMissMotionNV].operands.push(OperandId, "'TMin'"); 3323 InstructionDesc[OpHitObjectRecordMissMotionNV].operands.push(OperandId, "'Direction'"); 3324 InstructionDesc[OpHitObjectRecordMissMotionNV].operands.push(OperandId, "'TMax'"); 3325 InstructionDesc[OpHitObjectRecordMissMotionNV].operands.push(OperandId, "'Current Time'"); 3326 InstructionDesc[OpHitObjectRecordMissMotionNV].setResultAndType(false, false); 3327 3328 InstructionDesc[OpHitObjectRecordEmptyNV].operands.push(OperandId, "'HitObject'"); 3329 InstructionDesc[OpHitObjectRecordEmptyNV].setResultAndType(false, false); 3330 3331 InstructionDesc[OpHitObjectTraceRayNV].operands.push(OperandId, "'HitObject'"); 3332 InstructionDesc[OpHitObjectTraceRayNV].operands.push(OperandId, "'Acceleration Structure'"); 3333 InstructionDesc[OpHitObjectTraceRayNV].operands.push(OperandId, "'RayFlags'"); 3334 InstructionDesc[OpHitObjectTraceRayNV].operands.push(OperandId, "'Cullmask'"); 3335 InstructionDesc[OpHitObjectTraceRayNV].operands.push(OperandId, "'SBT Record Offset'"); 3336 InstructionDesc[OpHitObjectTraceRayNV].operands.push(OperandId, "'SBT Record Stride'"); 3337 InstructionDesc[OpHitObjectTraceRayNV].operands.push(OperandId, "'Miss Index'"); 3338 InstructionDesc[OpHitObjectTraceRayNV].operands.push(OperandId, "'Origin'"); 3339 InstructionDesc[OpHitObjectTraceRayNV].operands.push(OperandId, "'TMin'"); 3340 InstructionDesc[OpHitObjectTraceRayNV].operands.push(OperandId, "'Direction'"); 3341 InstructionDesc[OpHitObjectTraceRayNV].operands.push(OperandId, "'TMax'"); 3342 InstructionDesc[OpHitObjectTraceRayNV].operands.push(OperandId, "'Payload'"); 3343 InstructionDesc[OpHitObjectTraceRayNV].setResultAndType(false, false); 3344 3345 InstructionDesc[OpHitObjectTraceRayMotionNV].operands.push(OperandId, "'HitObject'"); 3346 InstructionDesc[OpHitObjectTraceRayMotionNV].operands.push(OperandId, "'Acceleration Structure'"); 3347 InstructionDesc[OpHitObjectTraceRayMotionNV].operands.push(OperandId, "'RayFlags'"); 3348 InstructionDesc[OpHitObjectTraceRayMotionNV].operands.push(OperandId, "'Cullmask'"); 3349 InstructionDesc[OpHitObjectTraceRayMotionNV].operands.push(OperandId, "'SBT Record Offset'"); 3350 InstructionDesc[OpHitObjectTraceRayMotionNV].operands.push(OperandId, "'SBT Record Stride'"); 3351 InstructionDesc[OpHitObjectTraceRayMotionNV].operands.push(OperandId, "'Miss Index'"); 3352 InstructionDesc[OpHitObjectTraceRayMotionNV].operands.push(OperandId, "'Origin'"); 3353 InstructionDesc[OpHitObjectTraceRayMotionNV].operands.push(OperandId, "'TMin'"); 3354 InstructionDesc[OpHitObjectTraceRayMotionNV].operands.push(OperandId, "'Direction'"); 3355 InstructionDesc[OpHitObjectTraceRayMotionNV].operands.push(OperandId, "'TMax'"); 3356 InstructionDesc[OpHitObjectTraceRayMotionNV].operands.push(OperandId, "'Time'"); 3357 InstructionDesc[OpHitObjectTraceRayMotionNV].operands.push(OperandId, "'Payload'"); 3358 InstructionDesc[OpHitObjectTraceRayMotionNV].setResultAndType(false, false); 3359 3360 InstructionDesc[OpFetchMicroTriangleVertexBarycentricNV].operands.push(OperandId, "'Acceleration Structure'"); 3361 InstructionDesc[OpFetchMicroTriangleVertexBarycentricNV].operands.push(OperandId, "'Instance ID'"); 3362 InstructionDesc[OpFetchMicroTriangleVertexBarycentricNV].operands.push(OperandId, "'Geometry Index'"); 3363 InstructionDesc[OpFetchMicroTriangleVertexBarycentricNV].operands.push(OperandId, "'Primitive Index'"); 3364 InstructionDesc[OpFetchMicroTriangleVertexBarycentricNV].operands.push(OperandId, "'Barycentrics'"); 3365 InstructionDesc[OpFetchMicroTriangleVertexBarycentricNV].setResultAndType(true, true); 3366 3367 InstructionDesc[OpFetchMicroTriangleVertexPositionNV].operands.push(OperandId, "'Acceleration Structure'"); 3368 InstructionDesc[OpFetchMicroTriangleVertexPositionNV].operands.push(OperandId, "'Instance ID'"); 3369 InstructionDesc[OpFetchMicroTriangleVertexPositionNV].operands.push(OperandId, "'Geometry Index'"); 3370 InstructionDesc[OpFetchMicroTriangleVertexPositionNV].operands.push(OperandId, "'Primitive Index'"); 3371 InstructionDesc[OpFetchMicroTriangleVertexPositionNV].operands.push(OperandId, "'Barycentrics'"); 3372 InstructionDesc[OpFetchMicroTriangleVertexPositionNV].setResultAndType(true, true); 3373 3374 InstructionDesc[OpColorAttachmentReadEXT].operands.push(OperandId, "'Attachment'"); 3375 InstructionDesc[OpColorAttachmentReadEXT].operands.push(OperandId, "'Sample'", true); 3376 InstructionDesc[OpStencilAttachmentReadEXT].operands.push(OperandId, "'Sample'", true); 3377 InstructionDesc[OpDepthAttachmentReadEXT].operands.push(OperandId, "'Sample'", true); 3378 3379 InstructionDesc[OpImageSampleWeightedQCOM].operands.push(OperandId, "'source texture'"); 3380 InstructionDesc[OpImageSampleWeightedQCOM].operands.push(OperandId, "'texture coordinates'"); 3381 InstructionDesc[OpImageSampleWeightedQCOM].operands.push(OperandId, "'weights texture'"); 3382 InstructionDesc[OpImageSampleWeightedQCOM].operands.push(OperandImageOperands, "", true); 3383 InstructionDesc[OpImageSampleWeightedQCOM].setResultAndType(true, true); 3384 3385 InstructionDesc[OpImageBoxFilterQCOM].operands.push(OperandId, "'source texture'"); 3386 InstructionDesc[OpImageBoxFilterQCOM].operands.push(OperandId, "'texture coordinates'"); 3387 InstructionDesc[OpImageBoxFilterQCOM].operands.push(OperandId, "'box size'"); 3388 InstructionDesc[OpImageBoxFilterQCOM].operands.push(OperandImageOperands, "", true); 3389 InstructionDesc[OpImageBoxFilterQCOM].setResultAndType(true, true); 3390 3391 InstructionDesc[OpImageBlockMatchSADQCOM].operands.push(OperandId, "'target texture'"); 3392 InstructionDesc[OpImageBlockMatchSADQCOM].operands.push(OperandId, "'target coordinates'"); 3393 InstructionDesc[OpImageBlockMatchSADQCOM].operands.push(OperandId, "'reference texture'"); 3394 InstructionDesc[OpImageBlockMatchSADQCOM].operands.push(OperandId, "'reference coordinates'"); 3395 InstructionDesc[OpImageBlockMatchSADQCOM].operands.push(OperandId, "'block size'"); 3396 InstructionDesc[OpImageBlockMatchSADQCOM].operands.push(OperandImageOperands, "", true); 3397 InstructionDesc[OpImageBlockMatchSADQCOM].setResultAndType(true, true); 3398 3399 InstructionDesc[OpImageBlockMatchSSDQCOM].operands.push(OperandId, "'target texture'"); 3400 InstructionDesc[OpImageBlockMatchSSDQCOM].operands.push(OperandId, "'target coordinates'"); 3401 InstructionDesc[OpImageBlockMatchSSDQCOM].operands.push(OperandId, "'reference texture'"); 3402 InstructionDesc[OpImageBlockMatchSSDQCOM].operands.push(OperandId, "'reference coordinates'"); 3403 InstructionDesc[OpImageBlockMatchSSDQCOM].operands.push(OperandId, "'block size'"); 3404 InstructionDesc[OpImageBlockMatchSSDQCOM].operands.push(OperandImageOperands, "", true); 3405 InstructionDesc[OpImageBlockMatchSSDQCOM].setResultAndType(true, true); 3406 }); 3407} 3408 3409}; // end spv namespace 3410