1// Copyright (c) 2014-2019 The Khronos Group Inc. 2// 3// Permission is hereby granted, free of charge, to any person obtaining a copy 4// of this software and/or associated documentation files (the "Materials"), 5// to deal in the Materials without restriction, including without limitation 6// the rights to use, copy, modify, merge, publish, distribute, sublicense, 7// and/or sell copies of the Materials, and to permit persons to whom the 8// Materials are furnished to do so, subject to the following conditions: 9// 10// The above copyright notice and this permission notice shall be included in 11// all copies or substantial portions of the Materials. 12// 13// MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS KHRONOS 14// STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS SPECIFICATIONS AND 15// HEADER INFORMATION ARE LOCATED AT https://www.khronos.org/registry/ 16// 17// THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 18// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 19// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 20// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 21// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 22// FROM,OUT OF OR IN CONNECTION WITH THE MATERIALS OR THE USE OR OTHER DEALINGS 23// IN THE MATERIALS. 24 25// This header is automatically generated by the same tool that creates 26// the Binary Section of the SPIR-V specification. 27 28// Enumeration tokens for SPIR-V, in various styles: 29// C, C++, C++11, JSON, Lua, Python, C#, D 30// 31// - C will have tokens with a "Spv" prefix, e.g.: SpvSourceLanguageGLSL 32// - C++ will have tokens in the "spv" name space, e.g.: spv::SourceLanguageGLSL 33// - C++11 will use enum classes in the spv namespace, e.g.: spv::SourceLanguage::GLSL 34// - Lua will use tables, e.g.: spv.SourceLanguage.GLSL 35// - Python will use dictionaries, e.g.: spv['SourceLanguage']['GLSL'] 36// - C# will use enum classes in the Specification class located in the "Spv" namespace, 37// e.g.: Spv.Specification.SourceLanguage.GLSL 38// - D will have tokens under the "spv" module, e.g: spv.SourceLanguage.GLSL 39// 40// Some tokens act like mask values, which can be OR'd together, 41// while others are mutually exclusive. The mask-like ones have 42// "Mask" in their name, and a parallel enum that has the shift 43// amount (1 << x) for each corresponding enumerant. 44 45#ifndef spirv_HPP 46#define spirv_HPP 47 48namespace spv { 49 50typedef unsigned int Id; 51 52#define SPV_VERSION 0x10400 53#define SPV_REVISION 1 54 55static const unsigned int MagicNumber = 0x07230203; 56static const unsigned int Version = 0x00010400; 57static const unsigned int Revision = 1; 58static const unsigned int OpCodeMask = 0xffff; 59static const unsigned int WordCountShift = 16; 60 61enum class SourceLanguage : unsigned { 62 Unknown = 0, 63 ESSL = 1, 64 GLSL = 2, 65 OpenCL_C = 3, 66 OpenCL_CPP = 4, 67 HLSL = 5, 68 Max = 0x7fffffff, 69}; 70 71enum class ExecutionModel : unsigned { 72 Vertex = 0, 73 TessellationControl = 1, 74 TessellationEvaluation = 2, 75 Geometry = 3, 76 Fragment = 4, 77 GLCompute = 5, 78 Kernel = 6, 79 TaskNV = 5267, 80 MeshNV = 5268, 81 RayGenerationNV = 5313, 82 IntersectionNV = 5314, 83 AnyHitNV = 5315, 84 ClosestHitNV = 5316, 85 MissNV = 5317, 86 CallableNV = 5318, 87 Max = 0x7fffffff, 88}; 89 90enum class AddressingModel : unsigned { 91 Logical = 0, 92 Physical32 = 1, 93 Physical64 = 2, 94 PhysicalStorageBuffer64EXT = 5348, 95 Max = 0x7fffffff, 96}; 97 98enum class MemoryModel : unsigned { 99 Simple = 0, 100 GLSL450 = 1, 101 OpenCL = 2, 102 VulkanKHR = 3, 103 Max = 0x7fffffff, 104}; 105 106enum class ExecutionMode : unsigned { 107 Invocations = 0, 108 SpacingEqual = 1, 109 SpacingFractionalEven = 2, 110 SpacingFractionalOdd = 3, 111 VertexOrderCw = 4, 112 VertexOrderCcw = 5, 113 PixelCenterInteger = 6, 114 OriginUpperLeft = 7, 115 OriginLowerLeft = 8, 116 EarlyFragmentTests = 9, 117 PointMode = 10, 118 Xfb = 11, 119 DepthReplacing = 12, 120 DepthGreater = 14, 121 DepthLess = 15, 122 DepthUnchanged = 16, 123 LocalSize = 17, 124 LocalSizeHint = 18, 125 InputPoints = 19, 126 InputLines = 20, 127 InputLinesAdjacency = 21, 128 Triangles = 22, 129 InputTrianglesAdjacency = 23, 130 Quads = 24, 131 Isolines = 25, 132 OutputVertices = 26, 133 OutputPoints = 27, 134 OutputLineStrip = 28, 135 OutputTriangleStrip = 29, 136 VecTypeHint = 30, 137 ContractionOff = 31, 138 Initializer = 33, 139 Finalizer = 34, 140 SubgroupSize = 35, 141 SubgroupsPerWorkgroup = 36, 142 SubgroupsPerWorkgroupId = 37, 143 LocalSizeId = 38, 144 LocalSizeHintId = 39, 145 PostDepthCoverage = 4446, 146 DenormPreserve = 4459, 147 DenormFlushToZero = 4460, 148 SignedZeroInfNanPreserve = 4461, 149 RoundingModeRTE = 4462, 150 RoundingModeRTZ = 4463, 151 StencilRefReplacingEXT = 5027, 152 OutputLinesNV = 5269, 153 OutputPrimitivesNV = 5270, 154 DerivativeGroupQuadsNV = 5289, 155 DerivativeGroupLinearNV = 5290, 156 OutputTrianglesNV = 5298, 157 PixelInterlockOrderedEXT = 5366, 158 PixelInterlockUnorderedEXT = 5367, 159 SampleInterlockOrderedEXT = 5368, 160 SampleInterlockUnorderedEXT = 5369, 161 ShadingRateInterlockOrderedEXT = 5370, 162 ShadingRateInterlockUnorderedEXT = 5371, 163 Max = 0x7fffffff, 164}; 165 166enum class StorageClass : unsigned { 167 UniformConstant = 0, 168 Input = 1, 169 Uniform = 2, 170 Output = 3, 171 Workgroup = 4, 172 CrossWorkgroup = 5, 173 Private = 6, 174 Function = 7, 175 Generic = 8, 176 PushConstant = 9, 177 AtomicCounter = 10, 178 Image = 11, 179 StorageBuffer = 12, 180 CallableDataNV = 5328, 181 IncomingCallableDataNV = 5329, 182 RayPayloadNV = 5338, 183 HitAttributeNV = 5339, 184 IncomingRayPayloadNV = 5342, 185 ShaderRecordBufferNV = 5343, 186 PhysicalStorageBufferEXT = 5349, 187 Max = 0x7fffffff, 188}; 189 190enum class Dim : unsigned { 191 Dim1D = 0, 192 Dim2D = 1, 193 Dim3D = 2, 194 Cube = 3, 195 Rect = 4, 196 Buffer = 5, 197 SubpassData = 6, 198 Max = 0x7fffffff, 199}; 200 201enum class SamplerAddressingMode : unsigned { 202 None = 0, 203 ClampToEdge = 1, 204 Clamp = 2, 205 Repeat = 3, 206 RepeatMirrored = 4, 207 Max = 0x7fffffff, 208}; 209 210enum class SamplerFilterMode : unsigned { 211 Nearest = 0, 212 Linear = 1, 213 Max = 0x7fffffff, 214}; 215 216enum class ImageFormat : unsigned { 217 Unknown = 0, 218 Rgba32f = 1, 219 Rgba16f = 2, 220 R32f = 3, 221 Rgba8 = 4, 222 Rgba8Snorm = 5, 223 Rg32f = 6, 224 Rg16f = 7, 225 R11fG11fB10f = 8, 226 R16f = 9, 227 Rgba16 = 10, 228 Rgb10A2 = 11, 229 Rg16 = 12, 230 Rg8 = 13, 231 R16 = 14, 232 R8 = 15, 233 Rgba16Snorm = 16, 234 Rg16Snorm = 17, 235 Rg8Snorm = 18, 236 R16Snorm = 19, 237 R8Snorm = 20, 238 Rgba32i = 21, 239 Rgba16i = 22, 240 Rgba8i = 23, 241 R32i = 24, 242 Rg32i = 25, 243 Rg16i = 26, 244 Rg8i = 27, 245 R16i = 28, 246 R8i = 29, 247 Rgba32ui = 30, 248 Rgba16ui = 31, 249 Rgba8ui = 32, 250 R32ui = 33, 251 Rgb10a2ui = 34, 252 Rg32ui = 35, 253 Rg16ui = 36, 254 Rg8ui = 37, 255 R16ui = 38, 256 R8ui = 39, 257 Max = 0x7fffffff, 258}; 259 260enum class ImageChannelOrder : unsigned { 261 R = 0, 262 A = 1, 263 RG = 2, 264 RA = 3, 265 RGB = 4, 266 RGBA = 5, 267 BGRA = 6, 268 ARGB = 7, 269 Intensity = 8, 270 Luminance = 9, 271 Rx = 10, 272 RGx = 11, 273 RGBx = 12, 274 Depth = 13, 275 DepthStencil = 14, 276 sRGB = 15, 277 sRGBx = 16, 278 sRGBA = 17, 279 sBGRA = 18, 280 ABGR = 19, 281 Max = 0x7fffffff, 282}; 283 284enum class ImageChannelDataType : unsigned { 285 SnormInt8 = 0, 286 SnormInt16 = 1, 287 UnormInt8 = 2, 288 UnormInt16 = 3, 289 UnormShort565 = 4, 290 UnormShort555 = 5, 291 UnormInt101010 = 6, 292 SignedInt8 = 7, 293 SignedInt16 = 8, 294 SignedInt32 = 9, 295 UnsignedInt8 = 10, 296 UnsignedInt16 = 11, 297 UnsignedInt32 = 12, 298 HalfFloat = 13, 299 Float = 14, 300 UnormInt24 = 15, 301 UnormInt101010_2 = 16, 302 Max = 0x7fffffff, 303}; 304 305enum class ImageOperandsShift : unsigned { 306 Bias = 0, 307 Lod = 1, 308 Grad = 2, 309 ConstOffset = 3, 310 Offset = 4, 311 ConstOffsets = 5, 312 Sample = 6, 313 MinLod = 7, 314 MakeTexelAvailableKHR = 8, 315 MakeTexelVisibleKHR = 9, 316 NonPrivateTexelKHR = 10, 317 VolatileTexelKHR = 11, 318 SignExtend = 12, 319 ZeroExtend = 13, 320 Max = 0x7fffffff, 321}; 322 323enum class ImageOperandsMask : unsigned { 324 MaskNone = 0, 325 Bias = 0x00000001, 326 Lod = 0x00000002, 327 Grad = 0x00000004, 328 ConstOffset = 0x00000008, 329 Offset = 0x00000010, 330 ConstOffsets = 0x00000020, 331 Sample = 0x00000040, 332 MinLod = 0x00000080, 333 MakeTexelAvailableKHR = 0x00000100, 334 MakeTexelVisibleKHR = 0x00000200, 335 NonPrivateTexelKHR = 0x00000400, 336 VolatileTexelKHR = 0x00000800, 337 SignExtend = 0x00001000, 338 ZeroExtend = 0x00002000, 339}; 340 341enum class FPFastMathModeShift : unsigned { 342 NotNaN = 0, 343 NotInf = 1, 344 NSZ = 2, 345 AllowRecip = 3, 346 Fast = 4, 347 Max = 0x7fffffff, 348}; 349 350enum class FPFastMathModeMask : unsigned { 351 MaskNone = 0, 352 NotNaN = 0x00000001, 353 NotInf = 0x00000002, 354 NSZ = 0x00000004, 355 AllowRecip = 0x00000008, 356 Fast = 0x00000010, 357}; 358 359enum class FPRoundingMode : unsigned { 360 RTE = 0, 361 RTZ = 1, 362 RTP = 2, 363 RTN = 3, 364 Max = 0x7fffffff, 365}; 366 367enum class LinkageType : unsigned { 368 Export = 0, 369 Import = 1, 370 Max = 0x7fffffff, 371}; 372 373enum class AccessQualifier : unsigned { 374 ReadOnly = 0, 375 WriteOnly = 1, 376 ReadWrite = 2, 377 Max = 0x7fffffff, 378}; 379 380enum class FunctionParameterAttribute : unsigned { 381 Zext = 0, 382 Sext = 1, 383 ByVal = 2, 384 Sret = 3, 385 NoAlias = 4, 386 NoCapture = 5, 387 NoWrite = 6, 388 NoReadWrite = 7, 389 Max = 0x7fffffff, 390}; 391 392enum class Decoration : unsigned { 393 RelaxedPrecision = 0, 394 SpecId = 1, 395 Block = 2, 396 BufferBlock = 3, 397 RowMajor = 4, 398 ColMajor = 5, 399 ArrayStride = 6, 400 MatrixStride = 7, 401 GLSLShared = 8, 402 GLSLPacked = 9, 403 CPacked = 10, 404 BuiltIn = 11, 405 NoPerspective = 13, 406 Flat = 14, 407 Patch = 15, 408 Centroid = 16, 409 Sample = 17, 410 Invariant = 18, 411 Restrict = 19, 412 Aliased = 20, 413 Volatile = 21, 414 Constant = 22, 415 Coherent = 23, 416 NonWritable = 24, 417 NonReadable = 25, 418 Uniform = 26, 419 UniformId = 27, 420 SaturatedConversion = 28, 421 Stream = 29, 422 Location = 30, 423 Component = 31, 424 Index = 32, 425 Binding = 33, 426 DescriptorSet = 34, 427 Offset = 35, 428 XfbBuffer = 36, 429 XfbStride = 37, 430 FuncParamAttr = 38, 431 FPRoundingMode = 39, 432 FPFastMathMode = 40, 433 LinkageAttributes = 41, 434 NoContraction = 42, 435 InputAttachmentIndex = 43, 436 Alignment = 44, 437 MaxByteOffset = 45, 438 AlignmentId = 46, 439 MaxByteOffsetId = 47, 440 NoSignedWrap = 4469, 441 NoUnsignedWrap = 4470, 442 ExplicitInterpAMD = 4999, 443 OverrideCoverageNV = 5248, 444 PassthroughNV = 5250, 445 ViewportRelativeNV = 5252, 446 SecondaryViewportRelativeNV = 5256, 447 PerPrimitiveNV = 5271, 448 PerViewNV = 5272, 449 PerTaskNV = 5273, 450 PerVertexNV = 5285, 451 NonUniformEXT = 5300, 452 RestrictPointerEXT = 5355, 453 AliasedPointerEXT = 5356, 454 CounterBuffer = 5634, 455 HlslCounterBufferGOOGLE = 5634, 456 HlslSemanticGOOGLE = 5635, 457 UserSemantic = 5635, 458 UserTypeGOOGLE = 5636, 459 Max = 0x7fffffff, 460}; 461 462enum class BuiltIn : unsigned { 463 Position = 0, 464 PointSize = 1, 465 ClipDistance = 3, 466 CullDistance = 4, 467 VertexId = 5, 468 InstanceId = 6, 469 PrimitiveId = 7, 470 InvocationId = 8, 471 Layer = 9, 472 ViewportIndex = 10, 473 TessLevelOuter = 11, 474 TessLevelInner = 12, 475 TessCoord = 13, 476 PatchVertices = 14, 477 FragCoord = 15, 478 PointCoord = 16, 479 FrontFacing = 17, 480 SampleId = 18, 481 SamplePosition = 19, 482 SampleMask = 20, 483 FragDepth = 22, 484 HelperInvocation = 23, 485 NumWorkgroups = 24, 486 WorkgroupSize = 25, 487 WorkgroupId = 26, 488 LocalInvocationId = 27, 489 GlobalInvocationId = 28, 490 LocalInvocationIndex = 29, 491 WorkDim = 30, 492 GlobalSize = 31, 493 EnqueuedWorkgroupSize = 32, 494 GlobalOffset = 33, 495 GlobalLinearId = 34, 496 SubgroupSize = 36, 497 SubgroupMaxSize = 37, 498 NumSubgroups = 38, 499 NumEnqueuedSubgroups = 39, 500 SubgroupId = 40, 501 SubgroupLocalInvocationId = 41, 502 VertexIndex = 42, 503 InstanceIndex = 43, 504 SubgroupEqMask = 4416, 505 SubgroupEqMaskKHR = 4416, 506 SubgroupGeMask = 4417, 507 SubgroupGeMaskKHR = 4417, 508 SubgroupGtMask = 4418, 509 SubgroupGtMaskKHR = 4418, 510 SubgroupLeMask = 4419, 511 SubgroupLeMaskKHR = 4419, 512 SubgroupLtMask = 4420, 513 SubgroupLtMaskKHR = 4420, 514 BaseVertex = 4424, 515 BaseInstance = 4425, 516 DrawIndex = 4426, 517 DeviceIndex = 4438, 518 ViewIndex = 4440, 519 BaryCoordNoPerspAMD = 4992, 520 BaryCoordNoPerspCentroidAMD = 4993, 521 BaryCoordNoPerspSampleAMD = 4994, 522 BaryCoordSmoothAMD = 4995, 523 BaryCoordSmoothCentroidAMD = 4996, 524 BaryCoordSmoothSampleAMD = 4997, 525 BaryCoordPullModelAMD = 4998, 526 FragStencilRefEXT = 5014, 527 ViewportMaskNV = 5253, 528 SecondaryPositionNV = 5257, 529 SecondaryViewportMaskNV = 5258, 530 PositionPerViewNV = 5261, 531 ViewportMaskPerViewNV = 5262, 532 FullyCoveredEXT = 5264, 533 TaskCountNV = 5274, 534 PrimitiveCountNV = 5275, 535 PrimitiveIndicesNV = 5276, 536 ClipDistancePerViewNV = 5277, 537 CullDistancePerViewNV = 5278, 538 LayerPerViewNV = 5279, 539 MeshViewCountNV = 5280, 540 MeshViewIndicesNV = 5281, 541 BaryCoordNV = 5286, 542 BaryCoordNoPerspNV = 5287, 543 FragSizeEXT = 5292, 544 FragmentSizeNV = 5292, 545 FragInvocationCountEXT = 5293, 546 InvocationsPerPixelNV = 5293, 547 LaunchIdNV = 5319, 548 LaunchSizeNV = 5320, 549 WorldRayOriginNV = 5321, 550 WorldRayDirectionNV = 5322, 551 ObjectRayOriginNV = 5323, 552 ObjectRayDirectionNV = 5324, 553 RayTminNV = 5325, 554 RayTmaxNV = 5326, 555 InstanceCustomIndexNV = 5327, 556 ObjectToWorldNV = 5330, 557 WorldToObjectNV = 5331, 558 HitTNV = 5332, 559 HitKindNV = 5333, 560 IncomingRayFlagsNV = 5351, 561 WarpsPerSMNV = 5374, 562 SMCountNV = 5375, 563 WarpIDNV = 5376, 564 SMIDNV = 5377, 565 Max = 0x7fffffff, 566}; 567 568enum class SelectionControlShift : unsigned { 569 Flatten = 0, 570 DontFlatten = 1, 571 Max = 0x7fffffff, 572}; 573 574enum class SelectionControlMask : unsigned { 575 MaskNone = 0, 576 Flatten = 0x00000001, 577 DontFlatten = 0x00000002, 578}; 579 580enum class LoopControlShift : unsigned { 581 Unroll = 0, 582 DontUnroll = 1, 583 DependencyInfinite = 2, 584 DependencyLength = 3, 585 MinIterations = 4, 586 MaxIterations = 5, 587 IterationMultiple = 6, 588 PeelCount = 7, 589 PartialCount = 8, 590 Max = 0x7fffffff, 591}; 592 593enum class LoopControlMask : unsigned { 594 MaskNone = 0, 595 Unroll = 0x00000001, 596 DontUnroll = 0x00000002, 597 DependencyInfinite = 0x00000004, 598 DependencyLength = 0x00000008, 599 MinIterations = 0x00000010, 600 MaxIterations = 0x00000020, 601 IterationMultiple = 0x00000040, 602 PeelCount = 0x00000080, 603 PartialCount = 0x00000100, 604}; 605 606enum class FunctionControlShift : unsigned { 607 Inline = 0, 608 DontInline = 1, 609 Pure = 2, 610 Const = 3, 611 Max = 0x7fffffff, 612}; 613 614enum class FunctionControlMask : unsigned { 615 MaskNone = 0, 616 Inline = 0x00000001, 617 DontInline = 0x00000002, 618 Pure = 0x00000004, 619 Const = 0x00000008, 620}; 621 622enum class MemorySemanticsShift : unsigned { 623 Acquire = 1, 624 Release = 2, 625 AcquireRelease = 3, 626 SequentiallyConsistent = 4, 627 UniformMemory = 6, 628 SubgroupMemory = 7, 629 WorkgroupMemory = 8, 630 CrossWorkgroupMemory = 9, 631 AtomicCounterMemory = 10, 632 ImageMemory = 11, 633 OutputMemoryKHR = 12, 634 MakeAvailableKHR = 13, 635 MakeVisibleKHR = 14, 636 Volatile = 15, 637 Max = 0x7fffffff, 638}; 639 640enum class MemorySemanticsMask : unsigned { 641 MaskNone = 0, 642 Acquire = 0x00000002, 643 Release = 0x00000004, 644 AcquireRelease = 0x00000008, 645 SequentiallyConsistent = 0x00000010, 646 UniformMemory = 0x00000040, 647 SubgroupMemory = 0x00000080, 648 WorkgroupMemory = 0x00000100, 649 CrossWorkgroupMemory = 0x00000200, 650 AtomicCounterMemory = 0x00000400, 651 ImageMemory = 0x00000800, 652 OutputMemoryKHR = 0x00001000, 653 MakeAvailableKHR = 0x00002000, 654 MakeVisibleKHR = 0x00004000, 655 Volatile = 0x00008000, 656}; 657 658enum class MemoryAccessShift : unsigned { 659 Volatile = 0, 660 Aligned = 1, 661 Nontemporal = 2, 662 MakePointerAvailableKHR = 3, 663 MakePointerVisibleKHR = 4, 664 NonPrivatePointerKHR = 5, 665 Max = 0x7fffffff, 666}; 667 668enum class MemoryAccessMask : unsigned { 669 MaskNone = 0, 670 Volatile = 0x00000001, 671 Aligned = 0x00000002, 672 Nontemporal = 0x00000004, 673 MakePointerAvailableKHR = 0x00000008, 674 MakePointerVisibleKHR = 0x00000010, 675 NonPrivatePointerKHR = 0x00000020, 676}; 677 678enum class Scope : unsigned { 679 CrossDevice = 0, 680 Device = 1, 681 Workgroup = 2, 682 Subgroup = 3, 683 Invocation = 4, 684 QueueFamilyKHR = 5, 685 Max = 0x7fffffff, 686}; 687 688enum class GroupOperation : unsigned { 689 Reduce = 0, 690 InclusiveScan = 1, 691 ExclusiveScan = 2, 692 ClusteredReduce = 3, 693 PartitionedReduceNV = 6, 694 PartitionedInclusiveScanNV = 7, 695 PartitionedExclusiveScanNV = 8, 696 Max = 0x7fffffff, 697}; 698 699enum class KernelEnqueueFlags : unsigned { 700 NoWait = 0, 701 WaitKernel = 1, 702 WaitWorkGroup = 2, 703 Max = 0x7fffffff, 704}; 705 706enum class KernelProfilingInfoShift : unsigned { 707 CmdExecTime = 0, 708 Max = 0x7fffffff, 709}; 710 711enum class KernelProfilingInfoMask : unsigned { 712 MaskNone = 0, 713 CmdExecTime = 0x00000001, 714}; 715 716enum class Capability : unsigned { 717 Matrix = 0, 718 Shader = 1, 719 Geometry = 2, 720 Tessellation = 3, 721 Addresses = 4, 722 Linkage = 5, 723 Kernel = 6, 724 Vector16 = 7, 725 Float16Buffer = 8, 726 Float16 = 9, 727 Float64 = 10, 728 Int64 = 11, 729 Int64Atomics = 12, 730 ImageBasic = 13, 731 ImageReadWrite = 14, 732 ImageMipmap = 15, 733 Pipes = 17, 734 Groups = 18, 735 DeviceEnqueue = 19, 736 LiteralSampler = 20, 737 AtomicStorage = 21, 738 Int16 = 22, 739 TessellationPointSize = 23, 740 GeometryPointSize = 24, 741 ImageGatherExtended = 25, 742 StorageImageMultisample = 27, 743 UniformBufferArrayDynamicIndexing = 28, 744 SampledImageArrayDynamicIndexing = 29, 745 StorageBufferArrayDynamicIndexing = 30, 746 StorageImageArrayDynamicIndexing = 31, 747 ClipDistance = 32, 748 CullDistance = 33, 749 ImageCubeArray = 34, 750 SampleRateShading = 35, 751 ImageRect = 36, 752 SampledRect = 37, 753 GenericPointer = 38, 754 Int8 = 39, 755 InputAttachment = 40, 756 SparseResidency = 41, 757 MinLod = 42, 758 Sampled1D = 43, 759 Image1D = 44, 760 SampledCubeArray = 45, 761 SampledBuffer = 46, 762 ImageBuffer = 47, 763 ImageMSArray = 48, 764 StorageImageExtendedFormats = 49, 765 ImageQuery = 50, 766 DerivativeControl = 51, 767 InterpolationFunction = 52, 768 TransformFeedback = 53, 769 GeometryStreams = 54, 770 StorageImageReadWithoutFormat = 55, 771 StorageImageWriteWithoutFormat = 56, 772 MultiViewport = 57, 773 SubgroupDispatch = 58, 774 NamedBarrier = 59, 775 PipeStorage = 60, 776 GroupNonUniform = 61, 777 GroupNonUniformVote = 62, 778 GroupNonUniformArithmetic = 63, 779 GroupNonUniformBallot = 64, 780 GroupNonUniformShuffle = 65, 781 GroupNonUniformShuffleRelative = 66, 782 GroupNonUniformClustered = 67, 783 GroupNonUniformQuad = 68, 784 SubgroupBallotKHR = 4423, 785 DrawParameters = 4427, 786 SubgroupVoteKHR = 4431, 787 StorageBuffer16BitAccess = 4433, 788 StorageUniformBufferBlock16 = 4433, 789 StorageUniform16 = 4434, 790 UniformAndStorageBuffer16BitAccess = 4434, 791 StoragePushConstant16 = 4435, 792 StorageInputOutput16 = 4436, 793 DeviceGroup = 4437, 794 MultiView = 4439, 795 VariablePointersStorageBuffer = 4441, 796 VariablePointers = 4442, 797 AtomicStorageOps = 4445, 798 SampleMaskPostDepthCoverage = 4447, 799 StorageBuffer8BitAccess = 4448, 800 UniformAndStorageBuffer8BitAccess = 4449, 801 StoragePushConstant8 = 4450, 802 DenormPreserve = 4464, 803 DenormFlushToZero = 4465, 804 SignedZeroInfNanPreserve = 4466, 805 RoundingModeRTE = 4467, 806 RoundingModeRTZ = 4468, 807 Float16ImageAMD = 5008, 808 ImageGatherBiasLodAMD = 5009, 809 FragmentMaskAMD = 5010, 810 StencilExportEXT = 5013, 811 ImageReadWriteLodAMD = 5015, 812 SampleMaskOverrideCoverageNV = 5249, 813 GeometryShaderPassthroughNV = 5251, 814 ShaderViewportIndexLayerEXT = 5254, 815 ShaderViewportIndexLayerNV = 5254, 816 ShaderViewportMaskNV = 5255, 817 ShaderStereoViewNV = 5259, 818 PerViewAttributesNV = 5260, 819 FragmentFullyCoveredEXT = 5265, 820 MeshShadingNV = 5266, 821 ImageFootprintNV = 5282, 822 FragmentBarycentricNV = 5284, 823 ComputeDerivativeGroupQuadsNV = 5288, 824 FragmentDensityEXT = 5291, 825 ShadingRateNV = 5291, 826 GroupNonUniformPartitionedNV = 5297, 827 ShaderNonUniformEXT = 5301, 828 RuntimeDescriptorArrayEXT = 5302, 829 InputAttachmentArrayDynamicIndexingEXT = 5303, 830 UniformTexelBufferArrayDynamicIndexingEXT = 5304, 831 StorageTexelBufferArrayDynamicIndexingEXT = 5305, 832 UniformBufferArrayNonUniformIndexingEXT = 5306, 833 SampledImageArrayNonUniformIndexingEXT = 5307, 834 StorageBufferArrayNonUniformIndexingEXT = 5308, 835 StorageImageArrayNonUniformIndexingEXT = 5309, 836 InputAttachmentArrayNonUniformIndexingEXT = 5310, 837 UniformTexelBufferArrayNonUniformIndexingEXT = 5311, 838 StorageTexelBufferArrayNonUniformIndexingEXT = 5312, 839 RayTracingNV = 5340, 840 VulkanMemoryModelKHR = 5345, 841 VulkanMemoryModelDeviceScopeKHR = 5346, 842 PhysicalStorageBufferAddressesEXT = 5347, 843 ComputeDerivativeGroupLinearNV = 5350, 844 CooperativeMatrixNV = 5357, 845 FragmentShaderSampleInterlockEXT = 5363, 846 FragmentShaderShadingRateInterlockEXT = 5372, 847 ShaderSMBuiltinsNV = 5373, 848 FragmentShaderPixelInterlockEXT = 5378, 849 DemoteToHelperInvocationEXT = 5379, 850 SubgroupShuffleINTEL = 5568, 851 SubgroupBufferBlockIOINTEL = 5569, 852 SubgroupImageBlockIOINTEL = 5570, 853 SubgroupImageMediaBlockIOINTEL = 5579, 854 IntegerFunctions2INTEL = 5584, 855 SubgroupAvcMotionEstimationINTEL = 5696, 856 SubgroupAvcMotionEstimationIntraINTEL = 5697, 857 SubgroupAvcMotionEstimationChromaINTEL = 5698, 858 Max = 0x7fffffff, 859}; 860 861enum class Op : unsigned { 862 OpNop = 0, 863 OpUndef = 1, 864 OpSourceContinued = 2, 865 OpSource = 3, 866 OpSourceExtension = 4, 867 OpName = 5, 868 OpMemberName = 6, 869 OpString = 7, 870 OpLine = 8, 871 OpExtension = 10, 872 OpExtInstImport = 11, 873 OpExtInst = 12, 874 OpMemoryModel = 14, 875 OpEntryPoint = 15, 876 OpExecutionMode = 16, 877 OpCapability = 17, 878 OpTypeVoid = 19, 879 OpTypeBool = 20, 880 OpTypeInt = 21, 881 OpTypeFloat = 22, 882 OpTypeVector = 23, 883 OpTypeMatrix = 24, 884 OpTypeImage = 25, 885 OpTypeSampler = 26, 886 OpTypeSampledImage = 27, 887 OpTypeArray = 28, 888 OpTypeRuntimeArray = 29, 889 OpTypeStruct = 30, 890 OpTypeOpaque = 31, 891 OpTypePointer = 32, 892 OpTypeFunction = 33, 893 OpTypeEvent = 34, 894 OpTypeDeviceEvent = 35, 895 OpTypeReserveId = 36, 896 OpTypeQueue = 37, 897 OpTypePipe = 38, 898 OpTypeForwardPointer = 39, 899 OpConstantTrue = 41, 900 OpConstantFalse = 42, 901 OpConstant = 43, 902 OpConstantComposite = 44, 903 OpConstantSampler = 45, 904 OpConstantNull = 46, 905 OpSpecConstantTrue = 48, 906 OpSpecConstantFalse = 49, 907 OpSpecConstant = 50, 908 OpSpecConstantComposite = 51, 909 OpSpecConstantOp = 52, 910 OpFunction = 54, 911 OpFunctionParameter = 55, 912 OpFunctionEnd = 56, 913 OpFunctionCall = 57, 914 OpVariable = 59, 915 OpImageTexelPointer = 60, 916 OpLoad = 61, 917 OpStore = 62, 918 OpCopyMemory = 63, 919 OpCopyMemorySized = 64, 920 OpAccessChain = 65, 921 OpInBoundsAccessChain = 66, 922 OpPtrAccessChain = 67, 923 OpArrayLength = 68, 924 OpGenericPtrMemSemantics = 69, 925 OpInBoundsPtrAccessChain = 70, 926 OpDecorate = 71, 927 OpMemberDecorate = 72, 928 OpDecorationGroup = 73, 929 OpGroupDecorate = 74, 930 OpGroupMemberDecorate = 75, 931 OpVectorExtractDynamic = 77, 932 OpVectorInsertDynamic = 78, 933 OpVectorShuffle = 79, 934 OpCompositeConstruct = 80, 935 OpCompositeExtract = 81, 936 OpCompositeInsert = 82, 937 OpCopyObject = 83, 938 OpTranspose = 84, 939 OpSampledImage = 86, 940 OpImageSampleImplicitLod = 87, 941 OpImageSampleExplicitLod = 88, 942 OpImageSampleDrefImplicitLod = 89, 943 OpImageSampleDrefExplicitLod = 90, 944 OpImageSampleProjImplicitLod = 91, 945 OpImageSampleProjExplicitLod = 92, 946 OpImageSampleProjDrefImplicitLod = 93, 947 OpImageSampleProjDrefExplicitLod = 94, 948 OpImageFetch = 95, 949 OpImageGather = 96, 950 OpImageDrefGather = 97, 951 OpImageRead = 98, 952 OpImageWrite = 99, 953 OpImage = 100, 954 OpImageQueryFormat = 101, 955 OpImageQueryOrder = 102, 956 OpImageQuerySizeLod = 103, 957 OpImageQuerySize = 104, 958 OpImageQueryLod = 105, 959 OpImageQueryLevels = 106, 960 OpImageQuerySamples = 107, 961 OpConvertFToU = 109, 962 OpConvertFToS = 110, 963 OpConvertSToF = 111, 964 OpConvertUToF = 112, 965 OpUConvert = 113, 966 OpSConvert = 114, 967 OpFConvert = 115, 968 OpQuantizeToF16 = 116, 969 OpConvertPtrToU = 117, 970 OpSatConvertSToU = 118, 971 OpSatConvertUToS = 119, 972 OpConvertUToPtr = 120, 973 OpPtrCastToGeneric = 121, 974 OpGenericCastToPtr = 122, 975 OpGenericCastToPtrExplicit = 123, 976 OpBitcast = 124, 977 OpSNegate = 126, 978 OpFNegate = 127, 979 OpIAdd = 128, 980 OpFAdd = 129, 981 OpISub = 130, 982 OpFSub = 131, 983 OpIMul = 132, 984 OpFMul = 133, 985 OpUDiv = 134, 986 OpSDiv = 135, 987 OpFDiv = 136, 988 OpUMod = 137, 989 OpSRem = 138, 990 OpSMod = 139, 991 OpFRem = 140, 992 OpFMod = 141, 993 OpVectorTimesScalar = 142, 994 OpMatrixTimesScalar = 143, 995 OpVectorTimesMatrix = 144, 996 OpMatrixTimesVector = 145, 997 OpMatrixTimesMatrix = 146, 998 OpOuterProduct = 147, 999 OpDot = 148, 1000 OpIAddCarry = 149, 1001 OpISubBorrow = 150, 1002 OpUMulExtended = 151, 1003 OpSMulExtended = 152, 1004 OpAny = 154, 1005 OpAll = 155, 1006 OpIsNan = 156, 1007 OpIsInf = 157, 1008 OpIsFinite = 158, 1009 OpIsNormal = 159, 1010 OpSignBitSet = 160, 1011 OpLessOrGreater = 161, 1012 OpOrdered = 162, 1013 OpUnordered = 163, 1014 OpLogicalEqual = 164, 1015 OpLogicalNotEqual = 165, 1016 OpLogicalOr = 166, 1017 OpLogicalAnd = 167, 1018 OpLogicalNot = 168, 1019 OpSelect = 169, 1020 OpIEqual = 170, 1021 OpINotEqual = 171, 1022 OpUGreaterThan = 172, 1023 OpSGreaterThan = 173, 1024 OpUGreaterThanEqual = 174, 1025 OpSGreaterThanEqual = 175, 1026 OpULessThan = 176, 1027 OpSLessThan = 177, 1028 OpULessThanEqual = 178, 1029 OpSLessThanEqual = 179, 1030 OpFOrdEqual = 180, 1031 OpFUnordEqual = 181, 1032 OpFOrdNotEqual = 182, 1033 OpFUnordNotEqual = 183, 1034 OpFOrdLessThan = 184, 1035 OpFUnordLessThan = 185, 1036 OpFOrdGreaterThan = 186, 1037 OpFUnordGreaterThan = 187, 1038 OpFOrdLessThanEqual = 188, 1039 OpFUnordLessThanEqual = 189, 1040 OpFOrdGreaterThanEqual = 190, 1041 OpFUnordGreaterThanEqual = 191, 1042 OpShiftRightLogical = 194, 1043 OpShiftRightArithmetic = 195, 1044 OpShiftLeftLogical = 196, 1045 OpBitwiseOr = 197, 1046 OpBitwiseXor = 198, 1047 OpBitwiseAnd = 199, 1048 OpNot = 200, 1049 OpBitFieldInsert = 201, 1050 OpBitFieldSExtract = 202, 1051 OpBitFieldUExtract = 203, 1052 OpBitReverse = 204, 1053 OpBitCount = 205, 1054 OpDPdx = 207, 1055 OpDPdy = 208, 1056 OpFwidth = 209, 1057 OpDPdxFine = 210, 1058 OpDPdyFine = 211, 1059 OpFwidthFine = 212, 1060 OpDPdxCoarse = 213, 1061 OpDPdyCoarse = 214, 1062 OpFwidthCoarse = 215, 1063 OpEmitVertex = 218, 1064 OpEndPrimitive = 219, 1065 OpEmitStreamVertex = 220, 1066 OpEndStreamPrimitive = 221, 1067 OpControlBarrier = 224, 1068 OpMemoryBarrier = 225, 1069 OpAtomicLoad = 227, 1070 OpAtomicStore = 228, 1071 OpAtomicExchange = 229, 1072 OpAtomicCompareExchange = 230, 1073 OpAtomicCompareExchangeWeak = 231, 1074 OpAtomicIIncrement = 232, 1075 OpAtomicIDecrement = 233, 1076 OpAtomicIAdd = 234, 1077 OpAtomicISub = 235, 1078 OpAtomicSMin = 236, 1079 OpAtomicUMin = 237, 1080 OpAtomicSMax = 238, 1081 OpAtomicUMax = 239, 1082 OpAtomicAnd = 240, 1083 OpAtomicOr = 241, 1084 OpAtomicXor = 242, 1085 OpPhi = 245, 1086 OpLoopMerge = 246, 1087 OpSelectionMerge = 247, 1088 OpLabel = 248, 1089 OpBranch = 249, 1090 OpBranchConditional = 250, 1091 OpSwitch = 251, 1092 OpKill = 252, 1093 OpReturn = 253, 1094 OpReturnValue = 254, 1095 OpUnreachable = 255, 1096 OpLifetimeStart = 256, 1097 OpLifetimeStop = 257, 1098 OpGroupAsyncCopy = 259, 1099 OpGroupWaitEvents = 260, 1100 OpGroupAll = 261, 1101 OpGroupAny = 262, 1102 OpGroupBroadcast = 263, 1103 OpGroupIAdd = 264, 1104 OpGroupFAdd = 265, 1105 OpGroupFMin = 266, 1106 OpGroupUMin = 267, 1107 OpGroupSMin = 268, 1108 OpGroupFMax = 269, 1109 OpGroupUMax = 270, 1110 OpGroupSMax = 271, 1111 OpReadPipe = 274, 1112 OpWritePipe = 275, 1113 OpReservedReadPipe = 276, 1114 OpReservedWritePipe = 277, 1115 OpReserveReadPipePackets = 278, 1116 OpReserveWritePipePackets = 279, 1117 OpCommitReadPipe = 280, 1118 OpCommitWritePipe = 281, 1119 OpIsValidReserveId = 282, 1120 OpGetNumPipePackets = 283, 1121 OpGetMaxPipePackets = 284, 1122 OpGroupReserveReadPipePackets = 285, 1123 OpGroupReserveWritePipePackets = 286, 1124 OpGroupCommitReadPipe = 287, 1125 OpGroupCommitWritePipe = 288, 1126 OpEnqueueMarker = 291, 1127 OpEnqueueKernel = 292, 1128 OpGetKernelNDrangeSubGroupCount = 293, 1129 OpGetKernelNDrangeMaxSubGroupSize = 294, 1130 OpGetKernelWorkGroupSize = 295, 1131 OpGetKernelPreferredWorkGroupSizeMultiple = 296, 1132 OpRetainEvent = 297, 1133 OpReleaseEvent = 298, 1134 OpCreateUserEvent = 299, 1135 OpIsValidEvent = 300, 1136 OpSetUserEventStatus = 301, 1137 OpCaptureEventProfilingInfo = 302, 1138 OpGetDefaultQueue = 303, 1139 OpBuildNDRange = 304, 1140 OpImageSparseSampleImplicitLod = 305, 1141 OpImageSparseSampleExplicitLod = 306, 1142 OpImageSparseSampleDrefImplicitLod = 307, 1143 OpImageSparseSampleDrefExplicitLod = 308, 1144 OpImageSparseSampleProjImplicitLod = 309, 1145 OpImageSparseSampleProjExplicitLod = 310, 1146 OpImageSparseSampleProjDrefImplicitLod = 311, 1147 OpImageSparseSampleProjDrefExplicitLod = 312, 1148 OpImageSparseFetch = 313, 1149 OpImageSparseGather = 314, 1150 OpImageSparseDrefGather = 315, 1151 OpImageSparseTexelsResident = 316, 1152 OpNoLine = 317, 1153 OpAtomicFlagTestAndSet = 318, 1154 OpAtomicFlagClear = 319, 1155 OpImageSparseRead = 320, 1156 OpSizeOf = 321, 1157 OpTypePipeStorage = 322, 1158 OpConstantPipeStorage = 323, 1159 OpCreatePipeFromPipeStorage = 324, 1160 OpGetKernelLocalSizeForSubgroupCount = 325, 1161 OpGetKernelMaxNumSubgroups = 326, 1162 OpTypeNamedBarrier = 327, 1163 OpNamedBarrierInitialize = 328, 1164 OpMemoryNamedBarrier = 329, 1165 OpModuleProcessed = 330, 1166 OpExecutionModeId = 331, 1167 OpDecorateId = 332, 1168 OpGroupNonUniformElect = 333, 1169 OpGroupNonUniformAll = 334, 1170 OpGroupNonUniformAny = 335, 1171 OpGroupNonUniformAllEqual = 336, 1172 OpGroupNonUniformBroadcast = 337, 1173 OpGroupNonUniformBroadcastFirst = 338, 1174 OpGroupNonUniformBallot = 339, 1175 OpGroupNonUniformInverseBallot = 340, 1176 OpGroupNonUniformBallotBitExtract = 341, 1177 OpGroupNonUniformBallotBitCount = 342, 1178 OpGroupNonUniformBallotFindLSB = 343, 1179 OpGroupNonUniformBallotFindMSB = 344, 1180 OpGroupNonUniformShuffle = 345, 1181 OpGroupNonUniformShuffleXor = 346, 1182 OpGroupNonUniformShuffleUp = 347, 1183 OpGroupNonUniformShuffleDown = 348, 1184 OpGroupNonUniformIAdd = 349, 1185 OpGroupNonUniformFAdd = 350, 1186 OpGroupNonUniformIMul = 351, 1187 OpGroupNonUniformFMul = 352, 1188 OpGroupNonUniformSMin = 353, 1189 OpGroupNonUniformUMin = 354, 1190 OpGroupNonUniformFMin = 355, 1191 OpGroupNonUniformSMax = 356, 1192 OpGroupNonUniformUMax = 357, 1193 OpGroupNonUniformFMax = 358, 1194 OpGroupNonUniformBitwiseAnd = 359, 1195 OpGroupNonUniformBitwiseOr = 360, 1196 OpGroupNonUniformBitwiseXor = 361, 1197 OpGroupNonUniformLogicalAnd = 362, 1198 OpGroupNonUniformLogicalOr = 363, 1199 OpGroupNonUniformLogicalXor = 364, 1200 OpGroupNonUniformQuadBroadcast = 365, 1201 OpGroupNonUniformQuadSwap = 366, 1202 OpCopyLogical = 400, 1203 OpPtrEqual = 401, 1204 OpPtrNotEqual = 402, 1205 OpPtrDiff = 403, 1206 OpSubgroupBallotKHR = 4421, 1207 OpSubgroupFirstInvocationKHR = 4422, 1208 OpSubgroupAllKHR = 4428, 1209 OpSubgroupAnyKHR = 4429, 1210 OpSubgroupAllEqualKHR = 4430, 1211 OpSubgroupReadInvocationKHR = 4432, 1212 OpGroupIAddNonUniformAMD = 5000, 1213 OpGroupFAddNonUniformAMD = 5001, 1214 OpGroupFMinNonUniformAMD = 5002, 1215 OpGroupUMinNonUniformAMD = 5003, 1216 OpGroupSMinNonUniformAMD = 5004, 1217 OpGroupFMaxNonUniformAMD = 5005, 1218 OpGroupUMaxNonUniformAMD = 5006, 1219 OpGroupSMaxNonUniformAMD = 5007, 1220 OpFragmentMaskFetchAMD = 5011, 1221 OpFragmentFetchAMD = 5012, 1222 OpImageSampleFootprintNV = 5283, 1223 OpGroupNonUniformPartitionNV = 5296, 1224 OpWritePackedPrimitiveIndices4x8NV = 5299, 1225 OpReportIntersectionNV = 5334, 1226 OpIgnoreIntersectionNV = 5335, 1227 OpTerminateRayNV = 5336, 1228 OpTraceNV = 5337, 1229 OpTypeAccelerationStructureNV = 5341, 1230 OpExecuteCallableNV = 5344, 1231 OpTypeCooperativeMatrixNV = 5358, 1232 OpCooperativeMatrixLoadNV = 5359, 1233 OpCooperativeMatrixStoreNV = 5360, 1234 OpCooperativeMatrixMulAddNV = 5361, 1235 OpCooperativeMatrixLengthNV = 5362, 1236 OpBeginInvocationInterlockEXT = 5364, 1237 OpEndInvocationInterlockEXT = 5365, 1238 OpDemoteToHelperInvocationEXT = 5380, 1239 OpIsHelperInvocationEXT = 5381, 1240 OpSubgroupShuffleINTEL = 5571, 1241 OpSubgroupShuffleDownINTEL = 5572, 1242 OpSubgroupShuffleUpINTEL = 5573, 1243 OpSubgroupShuffleXorINTEL = 5574, 1244 OpSubgroupBlockReadINTEL = 5575, 1245 OpSubgroupBlockWriteINTEL = 5576, 1246 OpSubgroupImageBlockReadINTEL = 5577, 1247 OpSubgroupImageBlockWriteINTEL = 5578, 1248 OpSubgroupImageMediaBlockReadINTEL = 5580, 1249 OpSubgroupImageMediaBlockWriteINTEL = 5581, 1250 OpUCountLeadingZerosINTEL = 5585, 1251 OpUCountTrailingZerosINTEL = 5586, 1252 OpAbsISubINTEL = 5587, 1253 OpAbsUSubINTEL = 5588, 1254 OpIAddSatINTEL = 5589, 1255 OpUAddSatINTEL = 5590, 1256 OpIAverageINTEL = 5591, 1257 OpUAverageINTEL = 5592, 1258 OpIAverageRoundedINTEL = 5593, 1259 OpUAverageRoundedINTEL = 5594, 1260 OpISubSatINTEL = 5595, 1261 OpUSubSatINTEL = 5596, 1262 OpIMul32x16INTEL = 5597, 1263 OpUMul32x16INTEL = 5598, 1264 OpDecorateString = 5632, 1265 OpDecorateStringGOOGLE = 5632, 1266 OpMemberDecorateString = 5633, 1267 OpMemberDecorateStringGOOGLE = 5633, 1268 OpVmeImageINTEL = 5699, 1269 OpTypeVmeImageINTEL = 5700, 1270 OpTypeAvcImePayloadINTEL = 5701, 1271 OpTypeAvcRefPayloadINTEL = 5702, 1272 OpTypeAvcSicPayloadINTEL = 5703, 1273 OpTypeAvcMcePayloadINTEL = 5704, 1274 OpTypeAvcMceResultINTEL = 5705, 1275 OpTypeAvcImeResultINTEL = 5706, 1276 OpTypeAvcImeResultSingleReferenceStreamoutINTEL = 5707, 1277 OpTypeAvcImeResultDualReferenceStreamoutINTEL = 5708, 1278 OpTypeAvcImeSingleReferenceStreaminINTEL = 5709, 1279 OpTypeAvcImeDualReferenceStreaminINTEL = 5710, 1280 OpTypeAvcRefResultINTEL = 5711, 1281 OpTypeAvcSicResultINTEL = 5712, 1282 OpSubgroupAvcMceGetDefaultInterBaseMultiReferencePenaltyINTEL = 5713, 1283 OpSubgroupAvcMceSetInterBaseMultiReferencePenaltyINTEL = 5714, 1284 OpSubgroupAvcMceGetDefaultInterShapePenaltyINTEL = 5715, 1285 OpSubgroupAvcMceSetInterShapePenaltyINTEL = 5716, 1286 OpSubgroupAvcMceGetDefaultInterDirectionPenaltyINTEL = 5717, 1287 OpSubgroupAvcMceSetInterDirectionPenaltyINTEL = 5718, 1288 OpSubgroupAvcMceGetDefaultIntraLumaShapePenaltyINTEL = 5719, 1289 OpSubgroupAvcMceGetDefaultInterMotionVectorCostTableINTEL = 5720, 1290 OpSubgroupAvcMceGetDefaultHighPenaltyCostTableINTEL = 5721, 1291 OpSubgroupAvcMceGetDefaultMediumPenaltyCostTableINTEL = 5722, 1292 OpSubgroupAvcMceGetDefaultLowPenaltyCostTableINTEL = 5723, 1293 OpSubgroupAvcMceSetMotionVectorCostFunctionINTEL = 5724, 1294 OpSubgroupAvcMceGetDefaultIntraLumaModePenaltyINTEL = 5725, 1295 OpSubgroupAvcMceGetDefaultNonDcLumaIntraPenaltyINTEL = 5726, 1296 OpSubgroupAvcMceGetDefaultIntraChromaModeBasePenaltyINTEL = 5727, 1297 OpSubgroupAvcMceSetAcOnlyHaarINTEL = 5728, 1298 OpSubgroupAvcMceSetSourceInterlacedFieldPolarityINTEL = 5729, 1299 OpSubgroupAvcMceSetSingleReferenceInterlacedFieldPolarityINTEL = 5730, 1300 OpSubgroupAvcMceSetDualReferenceInterlacedFieldPolaritiesINTEL = 5731, 1301 OpSubgroupAvcMceConvertToImePayloadINTEL = 5732, 1302 OpSubgroupAvcMceConvertToImeResultINTEL = 5733, 1303 OpSubgroupAvcMceConvertToRefPayloadINTEL = 5734, 1304 OpSubgroupAvcMceConvertToRefResultINTEL = 5735, 1305 OpSubgroupAvcMceConvertToSicPayloadINTEL = 5736, 1306 OpSubgroupAvcMceConvertToSicResultINTEL = 5737, 1307 OpSubgroupAvcMceGetMotionVectorsINTEL = 5738, 1308 OpSubgroupAvcMceGetInterDistortionsINTEL = 5739, 1309 OpSubgroupAvcMceGetBestInterDistortionsINTEL = 5740, 1310 OpSubgroupAvcMceGetInterMajorShapeINTEL = 5741, 1311 OpSubgroupAvcMceGetInterMinorShapeINTEL = 5742, 1312 OpSubgroupAvcMceGetInterDirectionsINTEL = 5743, 1313 OpSubgroupAvcMceGetInterMotionVectorCountINTEL = 5744, 1314 OpSubgroupAvcMceGetInterReferenceIdsINTEL = 5745, 1315 OpSubgroupAvcMceGetInterReferenceInterlacedFieldPolaritiesINTEL = 5746, 1316 OpSubgroupAvcImeInitializeINTEL = 5747, 1317 OpSubgroupAvcImeSetSingleReferenceINTEL = 5748, 1318 OpSubgroupAvcImeSetDualReferenceINTEL = 5749, 1319 OpSubgroupAvcImeRefWindowSizeINTEL = 5750, 1320 OpSubgroupAvcImeAdjustRefOffsetINTEL = 5751, 1321 OpSubgroupAvcImeConvertToMcePayloadINTEL = 5752, 1322 OpSubgroupAvcImeSetMaxMotionVectorCountINTEL = 5753, 1323 OpSubgroupAvcImeSetUnidirectionalMixDisableINTEL = 5754, 1324 OpSubgroupAvcImeSetEarlySearchTerminationThresholdINTEL = 5755, 1325 OpSubgroupAvcImeSetWeightedSadINTEL = 5756, 1326 OpSubgroupAvcImeEvaluateWithSingleReferenceINTEL = 5757, 1327 OpSubgroupAvcImeEvaluateWithDualReferenceINTEL = 5758, 1328 OpSubgroupAvcImeEvaluateWithSingleReferenceStreaminINTEL = 5759, 1329 OpSubgroupAvcImeEvaluateWithDualReferenceStreaminINTEL = 5760, 1330 OpSubgroupAvcImeEvaluateWithSingleReferenceStreamoutINTEL = 5761, 1331 OpSubgroupAvcImeEvaluateWithDualReferenceStreamoutINTEL = 5762, 1332 OpSubgroupAvcImeEvaluateWithSingleReferenceStreaminoutINTEL = 5763, 1333 OpSubgroupAvcImeEvaluateWithDualReferenceStreaminoutINTEL = 5764, 1334 OpSubgroupAvcImeConvertToMceResultINTEL = 5765, 1335 OpSubgroupAvcImeGetSingleReferenceStreaminINTEL = 5766, 1336 OpSubgroupAvcImeGetDualReferenceStreaminINTEL = 5767, 1337 OpSubgroupAvcImeStripSingleReferenceStreamoutINTEL = 5768, 1338 OpSubgroupAvcImeStripDualReferenceStreamoutINTEL = 5769, 1339 OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeMotionVectorsINTEL = 5770, 1340 OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeDistortionsINTEL = 5771, 1341 OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeReferenceIdsINTEL = 5772, 1342 OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeMotionVectorsINTEL = 5773, 1343 OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeDistortionsINTEL = 5774, 1344 OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeReferenceIdsINTEL = 5775, 1345 OpSubgroupAvcImeGetBorderReachedINTEL = 5776, 1346 OpSubgroupAvcImeGetTruncatedSearchIndicationINTEL = 5777, 1347 OpSubgroupAvcImeGetUnidirectionalEarlySearchTerminationINTEL = 5778, 1348 OpSubgroupAvcImeGetWeightingPatternMinimumMotionVectorINTEL = 5779, 1349 OpSubgroupAvcImeGetWeightingPatternMinimumDistortionINTEL = 5780, 1350 OpSubgroupAvcFmeInitializeINTEL = 5781, 1351 OpSubgroupAvcBmeInitializeINTEL = 5782, 1352 OpSubgroupAvcRefConvertToMcePayloadINTEL = 5783, 1353 OpSubgroupAvcRefSetBidirectionalMixDisableINTEL = 5784, 1354 OpSubgroupAvcRefSetBilinearFilterEnableINTEL = 5785, 1355 OpSubgroupAvcRefEvaluateWithSingleReferenceINTEL = 5786, 1356 OpSubgroupAvcRefEvaluateWithDualReferenceINTEL = 5787, 1357 OpSubgroupAvcRefEvaluateWithMultiReferenceINTEL = 5788, 1358 OpSubgroupAvcRefEvaluateWithMultiReferenceInterlacedINTEL = 5789, 1359 OpSubgroupAvcRefConvertToMceResultINTEL = 5790, 1360 OpSubgroupAvcSicInitializeINTEL = 5791, 1361 OpSubgroupAvcSicConfigureSkcINTEL = 5792, 1362 OpSubgroupAvcSicConfigureIpeLumaINTEL = 5793, 1363 OpSubgroupAvcSicConfigureIpeLumaChromaINTEL = 5794, 1364 OpSubgroupAvcSicGetMotionVectorMaskINTEL = 5795, 1365 OpSubgroupAvcSicConvertToMcePayloadINTEL = 5796, 1366 OpSubgroupAvcSicSetIntraLumaShapePenaltyINTEL = 5797, 1367 OpSubgroupAvcSicSetIntraLumaModeCostFunctionINTEL = 5798, 1368 OpSubgroupAvcSicSetIntraChromaModeCostFunctionINTEL = 5799, 1369 OpSubgroupAvcSicSetBilinearFilterEnableINTEL = 5800, 1370 OpSubgroupAvcSicSetSkcForwardTransformEnableINTEL = 5801, 1371 OpSubgroupAvcSicSetBlockBasedRawSkipSadINTEL = 5802, 1372 OpSubgroupAvcSicEvaluateIpeINTEL = 5803, 1373 OpSubgroupAvcSicEvaluateWithSingleReferenceINTEL = 5804, 1374 OpSubgroupAvcSicEvaluateWithDualReferenceINTEL = 5805, 1375 OpSubgroupAvcSicEvaluateWithMultiReferenceINTEL = 5806, 1376 OpSubgroupAvcSicEvaluateWithMultiReferenceInterlacedINTEL = 5807, 1377 OpSubgroupAvcSicConvertToMceResultINTEL = 5808, 1378 OpSubgroupAvcSicGetIpeLumaShapeINTEL = 5809, 1379 OpSubgroupAvcSicGetBestIpeLumaDistortionINTEL = 5810, 1380 OpSubgroupAvcSicGetBestIpeChromaDistortionINTEL = 5811, 1381 OpSubgroupAvcSicGetPackedIpeLumaModesINTEL = 5812, 1382 OpSubgroupAvcSicGetIpeChromaModeINTEL = 5813, 1383 OpSubgroupAvcSicGetPackedSkcLumaCountThresholdINTEL = 5814, 1384 OpSubgroupAvcSicGetPackedSkcLumaSumThresholdINTEL = 5815, 1385 OpSubgroupAvcSicGetInterRawSadsINTEL = 5816, 1386 Max = 0x7fffffff, 1387}; 1388 1389#ifdef SPV_ENABLE_UTILITY_CODE 1390inline void HasResultAndType(Op opcode, bool *hasResult, bool *hasResultType) { 1391 *hasResult = *hasResultType = false; 1392 switch (opcode) { 1393 default: /* unknown opcode */ break; 1394 case Op::OpNop: *hasResult = false; *hasResultType = false; break; 1395 case Op::OpUndef: *hasResult = true; *hasResultType = true; break; 1396 case Op::OpSourceContinued: *hasResult = false; *hasResultType = false; break; 1397 case Op::OpSource: *hasResult = false; *hasResultType = false; break; 1398 case Op::OpSourceExtension: *hasResult = false; *hasResultType = false; break; 1399 case Op::OpName: *hasResult = false; *hasResultType = false; break; 1400 case Op::OpMemberName: *hasResult = false; *hasResultType = false; break; 1401 case Op::OpString: *hasResult = true; *hasResultType = false; break; 1402 case Op::OpLine: *hasResult = false; *hasResultType = false; break; 1403 case Op::OpExtension: *hasResult = false; *hasResultType = false; break; 1404 case Op::OpExtInstImport: *hasResult = true; *hasResultType = false; break; 1405 case Op::OpExtInst: *hasResult = true; *hasResultType = true; break; 1406 case Op::OpMemoryModel: *hasResult = false; *hasResultType = false; break; 1407 case Op::OpEntryPoint: *hasResult = false; *hasResultType = false; break; 1408 case Op::OpExecutionMode: *hasResult = false; *hasResultType = false; break; 1409 case Op::OpCapability: *hasResult = false; *hasResultType = false; break; 1410 case Op::OpTypeVoid: *hasResult = true; *hasResultType = false; break; 1411 case Op::OpTypeBool: *hasResult = true; *hasResultType = false; break; 1412 case Op::OpTypeInt: *hasResult = true; *hasResultType = false; break; 1413 case Op::OpTypeFloat: *hasResult = true; *hasResultType = false; break; 1414 case Op::OpTypeVector: *hasResult = true; *hasResultType = false; break; 1415 case Op::OpTypeMatrix: *hasResult = true; *hasResultType = false; break; 1416 case Op::OpTypeImage: *hasResult = true; *hasResultType = false; break; 1417 case Op::OpTypeSampler: *hasResult = true; *hasResultType = false; break; 1418 case Op::OpTypeSampledImage: *hasResult = true; *hasResultType = false; break; 1419 case Op::OpTypeArray: *hasResult = true; *hasResultType = false; break; 1420 case Op::OpTypeRuntimeArray: *hasResult = true; *hasResultType = false; break; 1421 case Op::OpTypeStruct: *hasResult = true; *hasResultType = false; break; 1422 case Op::OpTypeOpaque: *hasResult = true; *hasResultType = false; break; 1423 case Op::OpTypePointer: *hasResult = true; *hasResultType = false; break; 1424 case Op::OpTypeFunction: *hasResult = true; *hasResultType = false; break; 1425 case Op::OpTypeEvent: *hasResult = true; *hasResultType = false; break; 1426 case Op::OpTypeDeviceEvent: *hasResult = true; *hasResultType = false; break; 1427 case Op::OpTypeReserveId: *hasResult = true; *hasResultType = false; break; 1428 case Op::OpTypeQueue: *hasResult = true; *hasResultType = false; break; 1429 case Op::OpTypePipe: *hasResult = true; *hasResultType = false; break; 1430 case Op::OpTypeForwardPointer: *hasResult = false; *hasResultType = false; break; 1431 case Op::OpConstantTrue: *hasResult = true; *hasResultType = true; break; 1432 case Op::OpConstantFalse: *hasResult = true; *hasResultType = true; break; 1433 case Op::OpConstant: *hasResult = true; *hasResultType = true; break; 1434 case Op::OpConstantComposite: *hasResult = true; *hasResultType = true; break; 1435 case Op::OpConstantSampler: *hasResult = true; *hasResultType = true; break; 1436 case Op::OpConstantNull: *hasResult = true; *hasResultType = true; break; 1437 case Op::OpSpecConstantTrue: *hasResult = true; *hasResultType = true; break; 1438 case Op::OpSpecConstantFalse: *hasResult = true; *hasResultType = true; break; 1439 case Op::OpSpecConstant: *hasResult = true; *hasResultType = true; break; 1440 case Op::OpSpecConstantComposite: *hasResult = true; *hasResultType = true; break; 1441 case Op::OpSpecConstantOp: *hasResult = true; *hasResultType = true; break; 1442 case Op::OpFunction: *hasResult = true; *hasResultType = true; break; 1443 case Op::OpFunctionParameter: *hasResult = true; *hasResultType = true; break; 1444 case Op::OpFunctionEnd: *hasResult = false; *hasResultType = false; break; 1445 case Op::OpFunctionCall: *hasResult = true; *hasResultType = true; break; 1446 case Op::OpVariable: *hasResult = true; *hasResultType = true; break; 1447 case Op::OpImageTexelPointer: *hasResult = true; *hasResultType = true; break; 1448 case Op::OpLoad: *hasResult = true; *hasResultType = true; break; 1449 case Op::OpStore: *hasResult = false; *hasResultType = false; break; 1450 case Op::OpCopyMemory: *hasResult = false; *hasResultType = false; break; 1451 case Op::OpCopyMemorySized: *hasResult = false; *hasResultType = false; break; 1452 case Op::OpAccessChain: *hasResult = true; *hasResultType = true; break; 1453 case Op::OpInBoundsAccessChain: *hasResult = true; *hasResultType = true; break; 1454 case Op::OpPtrAccessChain: *hasResult = true; *hasResultType = true; break; 1455 case Op::OpArrayLength: *hasResult = true; *hasResultType = true; break; 1456 case Op::OpGenericPtrMemSemantics: *hasResult = true; *hasResultType = true; break; 1457 case Op::OpInBoundsPtrAccessChain: *hasResult = true; *hasResultType = true; break; 1458 case Op::OpDecorate: *hasResult = false; *hasResultType = false; break; 1459 case Op::OpMemberDecorate: *hasResult = false; *hasResultType = false; break; 1460 case Op::OpDecorationGroup: *hasResult = true; *hasResultType = false; break; 1461 case Op::OpGroupDecorate: *hasResult = false; *hasResultType = false; break; 1462 case Op::OpGroupMemberDecorate: *hasResult = false; *hasResultType = false; break; 1463 case Op::OpVectorExtractDynamic: *hasResult = true; *hasResultType = true; break; 1464 case Op::OpVectorInsertDynamic: *hasResult = true; *hasResultType = true; break; 1465 case Op::OpVectorShuffle: *hasResult = true; *hasResultType = true; break; 1466 case Op::OpCompositeConstruct: *hasResult = true; *hasResultType = true; break; 1467 case Op::OpCompositeExtract: *hasResult = true; *hasResultType = true; break; 1468 case Op::OpCompositeInsert: *hasResult = true; *hasResultType = true; break; 1469 case Op::OpCopyObject: *hasResult = true; *hasResultType = true; break; 1470 case Op::OpTranspose: *hasResult = true; *hasResultType = true; break; 1471 case Op::OpSampledImage: *hasResult = true; *hasResultType = true; break; 1472 case Op::OpImageSampleImplicitLod: *hasResult = true; *hasResultType = true; break; 1473 case Op::OpImageSampleExplicitLod: *hasResult = true; *hasResultType = true; break; 1474 case Op::OpImageSampleDrefImplicitLod: *hasResult = true; *hasResultType = true; break; 1475 case Op::OpImageSampleDrefExplicitLod: *hasResult = true; *hasResultType = true; break; 1476 case Op::OpImageSampleProjImplicitLod: *hasResult = true; *hasResultType = true; break; 1477 case Op::OpImageSampleProjExplicitLod: *hasResult = true; *hasResultType = true; break; 1478 case Op::OpImageSampleProjDrefImplicitLod: *hasResult = true; *hasResultType = true; break; 1479 case Op::OpImageSampleProjDrefExplicitLod: *hasResult = true; *hasResultType = true; break; 1480 case Op::OpImageFetch: *hasResult = true; *hasResultType = true; break; 1481 case Op::OpImageGather: *hasResult = true; *hasResultType = true; break; 1482 case Op::OpImageDrefGather: *hasResult = true; *hasResultType = true; break; 1483 case Op::OpImageRead: *hasResult = true; *hasResultType = true; break; 1484 case Op::OpImageWrite: *hasResult = false; *hasResultType = false; break; 1485 case Op::OpImage: *hasResult = true; *hasResultType = true; break; 1486 case Op::OpImageQueryFormat: *hasResult = true; *hasResultType = true; break; 1487 case Op::OpImageQueryOrder: *hasResult = true; *hasResultType = true; break; 1488 case Op::OpImageQuerySizeLod: *hasResult = true; *hasResultType = true; break; 1489 case Op::OpImageQuerySize: *hasResult = true; *hasResultType = true; break; 1490 case Op::OpImageQueryLod: *hasResult = true; *hasResultType = true; break; 1491 case Op::OpImageQueryLevels: *hasResult = true; *hasResultType = true; break; 1492 case Op::OpImageQuerySamples: *hasResult = true; *hasResultType = true; break; 1493 case Op::OpConvertFToU: *hasResult = true; *hasResultType = true; break; 1494 case Op::OpConvertFToS: *hasResult = true; *hasResultType = true; break; 1495 case Op::OpConvertSToF: *hasResult = true; *hasResultType = true; break; 1496 case Op::OpConvertUToF: *hasResult = true; *hasResultType = true; break; 1497 case Op::OpUConvert: *hasResult = true; *hasResultType = true; break; 1498 case Op::OpSConvert: *hasResult = true; *hasResultType = true; break; 1499 case Op::OpFConvert: *hasResult = true; *hasResultType = true; break; 1500 case Op::OpQuantizeToF16: *hasResult = true; *hasResultType = true; break; 1501 case Op::OpConvertPtrToU: *hasResult = true; *hasResultType = true; break; 1502 case Op::OpSatConvertSToU: *hasResult = true; *hasResultType = true; break; 1503 case Op::OpSatConvertUToS: *hasResult = true; *hasResultType = true; break; 1504 case Op::OpConvertUToPtr: *hasResult = true; *hasResultType = true; break; 1505 case Op::OpPtrCastToGeneric: *hasResult = true; *hasResultType = true; break; 1506 case Op::OpGenericCastToPtr: *hasResult = true; *hasResultType = true; break; 1507 case Op::OpGenericCastToPtrExplicit: *hasResult = true; *hasResultType = true; break; 1508 case Op::OpBitcast: *hasResult = true; *hasResultType = true; break; 1509 case Op::OpSNegate: *hasResult = true; *hasResultType = true; break; 1510 case Op::OpFNegate: *hasResult = true; *hasResultType = true; break; 1511 case Op::OpIAdd: *hasResult = true; *hasResultType = true; break; 1512 case Op::OpFAdd: *hasResult = true; *hasResultType = true; break; 1513 case Op::OpISub: *hasResult = true; *hasResultType = true; break; 1514 case Op::OpFSub: *hasResult = true; *hasResultType = true; break; 1515 case Op::OpIMul: *hasResult = true; *hasResultType = true; break; 1516 case Op::OpFMul: *hasResult = true; *hasResultType = true; break; 1517 case Op::OpUDiv: *hasResult = true; *hasResultType = true; break; 1518 case Op::OpSDiv: *hasResult = true; *hasResultType = true; break; 1519 case Op::OpFDiv: *hasResult = true; *hasResultType = true; break; 1520 case Op::OpUMod: *hasResult = true; *hasResultType = true; break; 1521 case Op::OpSRem: *hasResult = true; *hasResultType = true; break; 1522 case Op::OpSMod: *hasResult = true; *hasResultType = true; break; 1523 case Op::OpFRem: *hasResult = true; *hasResultType = true; break; 1524 case Op::OpFMod: *hasResult = true; *hasResultType = true; break; 1525 case Op::OpVectorTimesScalar: *hasResult = true; *hasResultType = true; break; 1526 case Op::OpMatrixTimesScalar: *hasResult = true; *hasResultType = true; break; 1527 case Op::OpVectorTimesMatrix: *hasResult = true; *hasResultType = true; break; 1528 case Op::OpMatrixTimesVector: *hasResult = true; *hasResultType = true; break; 1529 case Op::OpMatrixTimesMatrix: *hasResult = true; *hasResultType = true; break; 1530 case Op::OpOuterProduct: *hasResult = true; *hasResultType = true; break; 1531 case Op::OpDot: *hasResult = true; *hasResultType = true; break; 1532 case Op::OpIAddCarry: *hasResult = true; *hasResultType = true; break; 1533 case Op::OpISubBorrow: *hasResult = true; *hasResultType = true; break; 1534 case Op::OpUMulExtended: *hasResult = true; *hasResultType = true; break; 1535 case Op::OpSMulExtended: *hasResult = true; *hasResultType = true; break; 1536 case Op::OpAny: *hasResult = true; *hasResultType = true; break; 1537 case Op::OpAll: *hasResult = true; *hasResultType = true; break; 1538 case Op::OpIsNan: *hasResult = true; *hasResultType = true; break; 1539 case Op::OpIsInf: *hasResult = true; *hasResultType = true; break; 1540 case Op::OpIsFinite: *hasResult = true; *hasResultType = true; break; 1541 case Op::OpIsNormal: *hasResult = true; *hasResultType = true; break; 1542 case Op::OpSignBitSet: *hasResult = true; *hasResultType = true; break; 1543 case Op::OpLessOrGreater: *hasResult = true; *hasResultType = true; break; 1544 case Op::OpOrdered: *hasResult = true; *hasResultType = true; break; 1545 case Op::OpUnordered: *hasResult = true; *hasResultType = true; break; 1546 case Op::OpLogicalEqual: *hasResult = true; *hasResultType = true; break; 1547 case Op::OpLogicalNotEqual: *hasResult = true; *hasResultType = true; break; 1548 case Op::OpLogicalOr: *hasResult = true; *hasResultType = true; break; 1549 case Op::OpLogicalAnd: *hasResult = true; *hasResultType = true; break; 1550 case Op::OpLogicalNot: *hasResult = true; *hasResultType = true; break; 1551 case Op::OpSelect: *hasResult = true; *hasResultType = true; break; 1552 case Op::OpIEqual: *hasResult = true; *hasResultType = true; break; 1553 case Op::OpINotEqual: *hasResult = true; *hasResultType = true; break; 1554 case Op::OpUGreaterThan: *hasResult = true; *hasResultType = true; break; 1555 case Op::OpSGreaterThan: *hasResult = true; *hasResultType = true; break; 1556 case Op::OpUGreaterThanEqual: *hasResult = true; *hasResultType = true; break; 1557 case Op::OpSGreaterThanEqual: *hasResult = true; *hasResultType = true; break; 1558 case Op::OpULessThan: *hasResult = true; *hasResultType = true; break; 1559 case Op::OpSLessThan: *hasResult = true; *hasResultType = true; break; 1560 case Op::OpULessThanEqual: *hasResult = true; *hasResultType = true; break; 1561 case Op::OpSLessThanEqual: *hasResult = true; *hasResultType = true; break; 1562 case Op::OpFOrdEqual: *hasResult = true; *hasResultType = true; break; 1563 case Op::OpFUnordEqual: *hasResult = true; *hasResultType = true; break; 1564 case Op::OpFOrdNotEqual: *hasResult = true; *hasResultType = true; break; 1565 case Op::OpFUnordNotEqual: *hasResult = true; *hasResultType = true; break; 1566 case Op::OpFOrdLessThan: *hasResult = true; *hasResultType = true; break; 1567 case Op::OpFUnordLessThan: *hasResult = true; *hasResultType = true; break; 1568 case Op::OpFOrdGreaterThan: *hasResult = true; *hasResultType = true; break; 1569 case Op::OpFUnordGreaterThan: *hasResult = true; *hasResultType = true; break; 1570 case Op::OpFOrdLessThanEqual: *hasResult = true; *hasResultType = true; break; 1571 case Op::OpFUnordLessThanEqual: *hasResult = true; *hasResultType = true; break; 1572 case Op::OpFOrdGreaterThanEqual: *hasResult = true; *hasResultType = true; break; 1573 case Op::OpFUnordGreaterThanEqual: *hasResult = true; *hasResultType = true; break; 1574 case Op::OpShiftRightLogical: *hasResult = true; *hasResultType = true; break; 1575 case Op::OpShiftRightArithmetic: *hasResult = true; *hasResultType = true; break; 1576 case Op::OpShiftLeftLogical: *hasResult = true; *hasResultType = true; break; 1577 case Op::OpBitwiseOr: *hasResult = true; *hasResultType = true; break; 1578 case Op::OpBitwiseXor: *hasResult = true; *hasResultType = true; break; 1579 case Op::OpBitwiseAnd: *hasResult = true; *hasResultType = true; break; 1580 case Op::OpNot: *hasResult = true; *hasResultType = true; break; 1581 case Op::OpBitFieldInsert: *hasResult = true; *hasResultType = true; break; 1582 case Op::OpBitFieldSExtract: *hasResult = true; *hasResultType = true; break; 1583 case Op::OpBitFieldUExtract: *hasResult = true; *hasResultType = true; break; 1584 case Op::OpBitReverse: *hasResult = true; *hasResultType = true; break; 1585 case Op::OpBitCount: *hasResult = true; *hasResultType = true; break; 1586 case Op::OpDPdx: *hasResult = true; *hasResultType = true; break; 1587 case Op::OpDPdy: *hasResult = true; *hasResultType = true; break; 1588 case Op::OpFwidth: *hasResult = true; *hasResultType = true; break; 1589 case Op::OpDPdxFine: *hasResult = true; *hasResultType = true; break; 1590 case Op::OpDPdyFine: *hasResult = true; *hasResultType = true; break; 1591 case Op::OpFwidthFine: *hasResult = true; *hasResultType = true; break; 1592 case Op::OpDPdxCoarse: *hasResult = true; *hasResultType = true; break; 1593 case Op::OpDPdyCoarse: *hasResult = true; *hasResultType = true; break; 1594 case Op::OpFwidthCoarse: *hasResult = true; *hasResultType = true; break; 1595 case Op::OpEmitVertex: *hasResult = false; *hasResultType = false; break; 1596 case Op::OpEndPrimitive: *hasResult = false; *hasResultType = false; break; 1597 case Op::OpEmitStreamVertex: *hasResult = false; *hasResultType = false; break; 1598 case Op::OpEndStreamPrimitive: *hasResult = false; *hasResultType = false; break; 1599 case Op::OpControlBarrier: *hasResult = false; *hasResultType = false; break; 1600 case Op::OpMemoryBarrier: *hasResult = false; *hasResultType = false; break; 1601 case Op::OpAtomicLoad: *hasResult = true; *hasResultType = true; break; 1602 case Op::OpAtomicStore: *hasResult = false; *hasResultType = false; break; 1603 case Op::OpAtomicExchange: *hasResult = true; *hasResultType = true; break; 1604 case Op::OpAtomicCompareExchange: *hasResult = true; *hasResultType = true; break; 1605 case Op::OpAtomicCompareExchangeWeak: *hasResult = true; *hasResultType = true; break; 1606 case Op::OpAtomicIIncrement: *hasResult = true; *hasResultType = true; break; 1607 case Op::OpAtomicIDecrement: *hasResult = true; *hasResultType = true; break; 1608 case Op::OpAtomicIAdd: *hasResult = true; *hasResultType = true; break; 1609 case Op::OpAtomicISub: *hasResult = true; *hasResultType = true; break; 1610 case Op::OpAtomicSMin: *hasResult = true; *hasResultType = true; break; 1611 case Op::OpAtomicUMin: *hasResult = true; *hasResultType = true; break; 1612 case Op::OpAtomicSMax: *hasResult = true; *hasResultType = true; break; 1613 case Op::OpAtomicUMax: *hasResult = true; *hasResultType = true; break; 1614 case Op::OpAtomicAnd: *hasResult = true; *hasResultType = true; break; 1615 case Op::OpAtomicOr: *hasResult = true; *hasResultType = true; break; 1616 case Op::OpAtomicXor: *hasResult = true; *hasResultType = true; break; 1617 case Op::OpPhi: *hasResult = true; *hasResultType = true; break; 1618 case Op::OpLoopMerge: *hasResult = false; *hasResultType = false; break; 1619 case Op::OpSelectionMerge: *hasResult = false; *hasResultType = false; break; 1620 case Op::OpLabel: *hasResult = true; *hasResultType = false; break; 1621 case Op::OpBranch: *hasResult = false; *hasResultType = false; break; 1622 case Op::OpBranchConditional: *hasResult = false; *hasResultType = false; break; 1623 case Op::OpSwitch: *hasResult = false; *hasResultType = false; break; 1624 case Op::OpKill: *hasResult = false; *hasResultType = false; break; 1625 case Op::OpReturn: *hasResult = false; *hasResultType = false; break; 1626 case Op::OpReturnValue: *hasResult = false; *hasResultType = false; break; 1627 case Op::OpUnreachable: *hasResult = false; *hasResultType = false; break; 1628 case Op::OpLifetimeStart: *hasResult = false; *hasResultType = false; break; 1629 case Op::OpLifetimeStop: *hasResult = false; *hasResultType = false; break; 1630 case Op::OpGroupAsyncCopy: *hasResult = true; *hasResultType = true; break; 1631 case Op::OpGroupWaitEvents: *hasResult = false; *hasResultType = false; break; 1632 case Op::OpGroupAll: *hasResult = true; *hasResultType = true; break; 1633 case Op::OpGroupAny: *hasResult = true; *hasResultType = true; break; 1634 case Op::OpGroupBroadcast: *hasResult = true; *hasResultType = true; break; 1635 case Op::OpGroupIAdd: *hasResult = true; *hasResultType = true; break; 1636 case Op::OpGroupFAdd: *hasResult = true; *hasResultType = true; break; 1637 case Op::OpGroupFMin: *hasResult = true; *hasResultType = true; break; 1638 case Op::OpGroupUMin: *hasResult = true; *hasResultType = true; break; 1639 case Op::OpGroupSMin: *hasResult = true; *hasResultType = true; break; 1640 case Op::OpGroupFMax: *hasResult = true; *hasResultType = true; break; 1641 case Op::OpGroupUMax: *hasResult = true; *hasResultType = true; break; 1642 case Op::OpGroupSMax: *hasResult = true; *hasResultType = true; break; 1643 case Op::OpReadPipe: *hasResult = true; *hasResultType = true; break; 1644 case Op::OpWritePipe: *hasResult = true; *hasResultType = true; break; 1645 case Op::OpReservedReadPipe: *hasResult = true; *hasResultType = true; break; 1646 case Op::OpReservedWritePipe: *hasResult = true; *hasResultType = true; break; 1647 case Op::OpReserveReadPipePackets: *hasResult = true; *hasResultType = true; break; 1648 case Op::OpReserveWritePipePackets: *hasResult = true; *hasResultType = true; break; 1649 case Op::OpCommitReadPipe: *hasResult = false; *hasResultType = false; break; 1650 case Op::OpCommitWritePipe: *hasResult = false; *hasResultType = false; break; 1651 case Op::OpIsValidReserveId: *hasResult = true; *hasResultType = true; break; 1652 case Op::OpGetNumPipePackets: *hasResult = true; *hasResultType = true; break; 1653 case Op::OpGetMaxPipePackets: *hasResult = true; *hasResultType = true; break; 1654 case Op::OpGroupReserveReadPipePackets: *hasResult = true; *hasResultType = true; break; 1655 case Op::OpGroupReserveWritePipePackets: *hasResult = true; *hasResultType = true; break; 1656 case Op::OpGroupCommitReadPipe: *hasResult = false; *hasResultType = false; break; 1657 case Op::OpGroupCommitWritePipe: *hasResult = false; *hasResultType = false; break; 1658 case Op::OpEnqueueMarker: *hasResult = true; *hasResultType = true; break; 1659 case Op::OpEnqueueKernel: *hasResult = true; *hasResultType = true; break; 1660 case Op::OpGetKernelNDrangeSubGroupCount: *hasResult = true; *hasResultType = true; break; 1661 case Op::OpGetKernelNDrangeMaxSubGroupSize: *hasResult = true; *hasResultType = true; break; 1662 case Op::OpGetKernelWorkGroupSize: *hasResult = true; *hasResultType = true; break; 1663 case Op::OpGetKernelPreferredWorkGroupSizeMultiple: *hasResult = true; *hasResultType = true; break; 1664 case Op::OpRetainEvent: *hasResult = false; *hasResultType = false; break; 1665 case Op::OpReleaseEvent: *hasResult = false; *hasResultType = false; break; 1666 case Op::OpCreateUserEvent: *hasResult = true; *hasResultType = true; break; 1667 case Op::OpIsValidEvent: *hasResult = true; *hasResultType = true; break; 1668 case Op::OpSetUserEventStatus: *hasResult = false; *hasResultType = false; break; 1669 case Op::OpCaptureEventProfilingInfo: *hasResult = false; *hasResultType = false; break; 1670 case Op::OpGetDefaultQueue: *hasResult = true; *hasResultType = true; break; 1671 case Op::OpBuildNDRange: *hasResult = true; *hasResultType = true; break; 1672 case Op::OpImageSparseSampleImplicitLod: *hasResult = true; *hasResultType = true; break; 1673 case Op::OpImageSparseSampleExplicitLod: *hasResult = true; *hasResultType = true; break; 1674 case Op::OpImageSparseSampleDrefImplicitLod: *hasResult = true; *hasResultType = true; break; 1675 case Op::OpImageSparseSampleDrefExplicitLod: *hasResult = true; *hasResultType = true; break; 1676 case Op::OpImageSparseSampleProjImplicitLod: *hasResult = true; *hasResultType = true; break; 1677 case Op::OpImageSparseSampleProjExplicitLod: *hasResult = true; *hasResultType = true; break; 1678 case Op::OpImageSparseSampleProjDrefImplicitLod: *hasResult = true; *hasResultType = true; break; 1679 case Op::OpImageSparseSampleProjDrefExplicitLod: *hasResult = true; *hasResultType = true; break; 1680 case Op::OpImageSparseFetch: *hasResult = true; *hasResultType = true; break; 1681 case Op::OpImageSparseGather: *hasResult = true; *hasResultType = true; break; 1682 case Op::OpImageSparseDrefGather: *hasResult = true; *hasResultType = true; break; 1683 case Op::OpImageSparseTexelsResident: *hasResult = true; *hasResultType = true; break; 1684 case Op::OpNoLine: *hasResult = false; *hasResultType = false; break; 1685 case Op::OpAtomicFlagTestAndSet: *hasResult = true; *hasResultType = true; break; 1686 case Op::OpAtomicFlagClear: *hasResult = false; *hasResultType = false; break; 1687 case Op::OpImageSparseRead: *hasResult = true; *hasResultType = true; break; 1688 case Op::OpSizeOf: *hasResult = true; *hasResultType = true; break; 1689 case Op::OpTypePipeStorage: *hasResult = true; *hasResultType = false; break; 1690 case Op::OpConstantPipeStorage: *hasResult = true; *hasResultType = true; break; 1691 case Op::OpCreatePipeFromPipeStorage: *hasResult = true; *hasResultType = true; break; 1692 case Op::OpGetKernelLocalSizeForSubgroupCount: *hasResult = true; *hasResultType = true; break; 1693 case Op::OpGetKernelMaxNumSubgroups: *hasResult = true; *hasResultType = true; break; 1694 case Op::OpTypeNamedBarrier: *hasResult = true; *hasResultType = false; break; 1695 case Op::OpNamedBarrierInitialize: *hasResult = true; *hasResultType = true; break; 1696 case Op::OpMemoryNamedBarrier: *hasResult = false; *hasResultType = false; break; 1697 case Op::OpModuleProcessed: *hasResult = false; *hasResultType = false; break; 1698 case Op::OpExecutionModeId: *hasResult = false; *hasResultType = false; break; 1699 case Op::OpDecorateId: *hasResult = false; *hasResultType = false; break; 1700 case Op::OpGroupNonUniformElect: *hasResult = true; *hasResultType = true; break; 1701 case Op::OpGroupNonUniformAll: *hasResult = true; *hasResultType = true; break; 1702 case Op::OpGroupNonUniformAny: *hasResult = true; *hasResultType = true; break; 1703 case Op::OpGroupNonUniformAllEqual: *hasResult = true; *hasResultType = true; break; 1704 case Op::OpGroupNonUniformBroadcast: *hasResult = true; *hasResultType = true; break; 1705 case Op::OpGroupNonUniformBroadcastFirst: *hasResult = true; *hasResultType = true; break; 1706 case Op::OpGroupNonUniformBallot: *hasResult = true; *hasResultType = true; break; 1707 case Op::OpGroupNonUniformInverseBallot: *hasResult = true; *hasResultType = true; break; 1708 case Op::OpGroupNonUniformBallotBitExtract: *hasResult = true; *hasResultType = true; break; 1709 case Op::OpGroupNonUniformBallotBitCount: *hasResult = true; *hasResultType = true; break; 1710 case Op::OpGroupNonUniformBallotFindLSB: *hasResult = true; *hasResultType = true; break; 1711 case Op::OpGroupNonUniformBallotFindMSB: *hasResult = true; *hasResultType = true; break; 1712 case Op::OpGroupNonUniformShuffle: *hasResult = true; *hasResultType = true; break; 1713 case Op::OpGroupNonUniformShuffleXor: *hasResult = true; *hasResultType = true; break; 1714 case Op::OpGroupNonUniformShuffleUp: *hasResult = true; *hasResultType = true; break; 1715 case Op::OpGroupNonUniformShuffleDown: *hasResult = true; *hasResultType = true; break; 1716 case Op::OpGroupNonUniformIAdd: *hasResult = true; *hasResultType = true; break; 1717 case Op::OpGroupNonUniformFAdd: *hasResult = true; *hasResultType = true; break; 1718 case Op::OpGroupNonUniformIMul: *hasResult = true; *hasResultType = true; break; 1719 case Op::OpGroupNonUniformFMul: *hasResult = true; *hasResultType = true; break; 1720 case Op::OpGroupNonUniformSMin: *hasResult = true; *hasResultType = true; break; 1721 case Op::OpGroupNonUniformUMin: *hasResult = true; *hasResultType = true; break; 1722 case Op::OpGroupNonUniformFMin: *hasResult = true; *hasResultType = true; break; 1723 case Op::OpGroupNonUniformSMax: *hasResult = true; *hasResultType = true; break; 1724 case Op::OpGroupNonUniformUMax: *hasResult = true; *hasResultType = true; break; 1725 case Op::OpGroupNonUniformFMax: *hasResult = true; *hasResultType = true; break; 1726 case Op::OpGroupNonUniformBitwiseAnd: *hasResult = true; *hasResultType = true; break; 1727 case Op::OpGroupNonUniformBitwiseOr: *hasResult = true; *hasResultType = true; break; 1728 case Op::OpGroupNonUniformBitwiseXor: *hasResult = true; *hasResultType = true; break; 1729 case Op::OpGroupNonUniformLogicalAnd: *hasResult = true; *hasResultType = true; break; 1730 case Op::OpGroupNonUniformLogicalOr: *hasResult = true; *hasResultType = true; break; 1731 case Op::OpGroupNonUniformLogicalXor: *hasResult = true; *hasResultType = true; break; 1732 case Op::OpGroupNonUniformQuadBroadcast: *hasResult = true; *hasResultType = true; break; 1733 case Op::OpGroupNonUniformQuadSwap: *hasResult = true; *hasResultType = true; break; 1734 case Op::OpCopyLogical: *hasResult = true; *hasResultType = true; break; 1735 case Op::OpPtrEqual: *hasResult = true; *hasResultType = true; break; 1736 case Op::OpPtrNotEqual: *hasResult = true; *hasResultType = true; break; 1737 case Op::OpPtrDiff: *hasResult = true; *hasResultType = true; break; 1738 case Op::OpSubgroupBallotKHR: *hasResult = true; *hasResultType = true; break; 1739 case Op::OpSubgroupFirstInvocationKHR: *hasResult = true; *hasResultType = true; break; 1740 case Op::OpSubgroupAllKHR: *hasResult = true; *hasResultType = true; break; 1741 case Op::OpSubgroupAnyKHR: *hasResult = true; *hasResultType = true; break; 1742 case Op::OpSubgroupAllEqualKHR: *hasResult = true; *hasResultType = true; break; 1743 case Op::OpSubgroupReadInvocationKHR: *hasResult = true; *hasResultType = true; break; 1744 case Op::OpGroupIAddNonUniformAMD: *hasResult = true; *hasResultType = true; break; 1745 case Op::OpGroupFAddNonUniformAMD: *hasResult = true; *hasResultType = true; break; 1746 case Op::OpGroupFMinNonUniformAMD: *hasResult = true; *hasResultType = true; break; 1747 case Op::OpGroupUMinNonUniformAMD: *hasResult = true; *hasResultType = true; break; 1748 case Op::OpGroupSMinNonUniformAMD: *hasResult = true; *hasResultType = true; break; 1749 case Op::OpGroupFMaxNonUniformAMD: *hasResult = true; *hasResultType = true; break; 1750 case Op::OpGroupUMaxNonUniformAMD: *hasResult = true; *hasResultType = true; break; 1751 case Op::OpGroupSMaxNonUniformAMD: *hasResult = true; *hasResultType = true; break; 1752 case Op::OpFragmentMaskFetchAMD: *hasResult = true; *hasResultType = true; break; 1753 case Op::OpFragmentFetchAMD: *hasResult = true; *hasResultType = true; break; 1754 case Op::OpImageSampleFootprintNV: *hasResult = true; *hasResultType = true; break; 1755 case Op::OpGroupNonUniformPartitionNV: *hasResult = true; *hasResultType = true; break; 1756 case Op::OpWritePackedPrimitiveIndices4x8NV: *hasResult = false; *hasResultType = false; break; 1757 case Op::OpReportIntersectionNV: *hasResult = true; *hasResultType = true; break; 1758 case Op::OpIgnoreIntersectionNV: *hasResult = false; *hasResultType = false; break; 1759 case Op::OpTerminateRayNV: *hasResult = false; *hasResultType = false; break; 1760 case Op::OpTraceNV: *hasResult = false; *hasResultType = false; break; 1761 case Op::OpTypeAccelerationStructureNV: *hasResult = true; *hasResultType = false; break; 1762 case Op::OpExecuteCallableNV: *hasResult = false; *hasResultType = false; break; 1763 case Op::OpTypeCooperativeMatrixNV: *hasResult = true; *hasResultType = false; break; 1764 case Op::OpCooperativeMatrixLoadNV: *hasResult = true; *hasResultType = true; break; 1765 case Op::OpCooperativeMatrixStoreNV: *hasResult = false; *hasResultType = false; break; 1766 case Op::OpCooperativeMatrixMulAddNV: *hasResult = true; *hasResultType = true; break; 1767 case Op::OpCooperativeMatrixLengthNV: *hasResult = true; *hasResultType = true; break; 1768 case Op::OpBeginInvocationInterlockEXT: *hasResult = false; *hasResultType = false; break; 1769 case Op::OpEndInvocationInterlockEXT: *hasResult = false; *hasResultType = false; break; 1770 case Op::OpDemoteToHelperInvocationEXT: *hasResult = false; *hasResultType = false; break; 1771 case Op::OpIsHelperInvocationEXT: *hasResult = true; *hasResultType = true; break; 1772 case Op::OpSubgroupShuffleINTEL: *hasResult = true; *hasResultType = true; break; 1773 case Op::OpSubgroupShuffleDownINTEL: *hasResult = true; *hasResultType = true; break; 1774 case Op::OpSubgroupShuffleUpINTEL: *hasResult = true; *hasResultType = true; break; 1775 case Op::OpSubgroupShuffleXorINTEL: *hasResult = true; *hasResultType = true; break; 1776 case Op::OpSubgroupBlockReadINTEL: *hasResult = true; *hasResultType = true; break; 1777 case Op::OpSubgroupBlockWriteINTEL: *hasResult = false; *hasResultType = false; break; 1778 case Op::OpSubgroupImageBlockReadINTEL: *hasResult = true; *hasResultType = true; break; 1779 case Op::OpSubgroupImageBlockWriteINTEL: *hasResult = false; *hasResultType = false; break; 1780 case Op::OpSubgroupImageMediaBlockReadINTEL: *hasResult = true; *hasResultType = true; break; 1781 case Op::OpSubgroupImageMediaBlockWriteINTEL: *hasResult = false; *hasResultType = false; break; 1782 case Op::OpUCountLeadingZerosINTEL: *hasResult = true; *hasResultType = true; break; 1783 case Op::OpUCountTrailingZerosINTEL: *hasResult = true; *hasResultType = true; break; 1784 case Op::OpAbsISubINTEL: *hasResult = true; *hasResultType = true; break; 1785 case Op::OpAbsUSubINTEL: *hasResult = true; *hasResultType = true; break; 1786 case Op::OpIAddSatINTEL: *hasResult = true; *hasResultType = true; break; 1787 case Op::OpUAddSatINTEL: *hasResult = true; *hasResultType = true; break; 1788 case Op::OpIAverageINTEL: *hasResult = true; *hasResultType = true; break; 1789 case Op::OpUAverageINTEL: *hasResult = true; *hasResultType = true; break; 1790 case Op::OpIAverageRoundedINTEL: *hasResult = true; *hasResultType = true; break; 1791 case Op::OpUAverageRoundedINTEL: *hasResult = true; *hasResultType = true; break; 1792 case Op::OpISubSatINTEL: *hasResult = true; *hasResultType = true; break; 1793 case Op::OpUSubSatINTEL: *hasResult = true; *hasResultType = true; break; 1794 case Op::OpIMul32x16INTEL: *hasResult = true; *hasResultType = true; break; 1795 case Op::OpUMul32x16INTEL: *hasResult = true; *hasResultType = true; break; 1796 case Op::OpDecorateString: *hasResult = false; *hasResultType = false; break; 1797 case Op::OpMemberDecorateString: *hasResult = false; *hasResultType = false; break; 1798 case Op::OpVmeImageINTEL: *hasResult = true; *hasResultType = true; break; 1799 case Op::OpTypeVmeImageINTEL: *hasResult = true; *hasResultType = false; break; 1800 case Op::OpTypeAvcImePayloadINTEL: *hasResult = true; *hasResultType = false; break; 1801 case Op::OpTypeAvcRefPayloadINTEL: *hasResult = true; *hasResultType = false; break; 1802 case Op::OpTypeAvcSicPayloadINTEL: *hasResult = true; *hasResultType = false; break; 1803 case Op::OpTypeAvcMcePayloadINTEL: *hasResult = true; *hasResultType = false; break; 1804 case Op::OpTypeAvcMceResultINTEL: *hasResult = true; *hasResultType = false; break; 1805 case Op::OpTypeAvcImeResultINTEL: *hasResult = true; *hasResultType = false; break; 1806 case Op::OpTypeAvcImeResultSingleReferenceStreamoutINTEL: *hasResult = true; *hasResultType = false; break; 1807 case Op::OpTypeAvcImeResultDualReferenceStreamoutINTEL: *hasResult = true; *hasResultType = false; break; 1808 case Op::OpTypeAvcImeSingleReferenceStreaminINTEL: *hasResult = true; *hasResultType = false; break; 1809 case Op::OpTypeAvcImeDualReferenceStreaminINTEL: *hasResult = true; *hasResultType = false; break; 1810 case Op::OpTypeAvcRefResultINTEL: *hasResult = true; *hasResultType = false; break; 1811 case Op::OpTypeAvcSicResultINTEL: *hasResult = true; *hasResultType = false; break; 1812 case Op::OpSubgroupAvcMceGetDefaultInterBaseMultiReferencePenaltyINTEL: *hasResult = true; *hasResultType = true; break; 1813 case Op::OpSubgroupAvcMceSetInterBaseMultiReferencePenaltyINTEL: *hasResult = true; *hasResultType = true; break; 1814 case Op::OpSubgroupAvcMceGetDefaultInterShapePenaltyINTEL: *hasResult = true; *hasResultType = true; break; 1815 case Op::OpSubgroupAvcMceSetInterShapePenaltyINTEL: *hasResult = true; *hasResultType = true; break; 1816 case Op::OpSubgroupAvcMceGetDefaultInterDirectionPenaltyINTEL: *hasResult = true; *hasResultType = true; break; 1817 case Op::OpSubgroupAvcMceSetInterDirectionPenaltyINTEL: *hasResult = true; *hasResultType = true; break; 1818 case Op::OpSubgroupAvcMceGetDefaultIntraLumaShapePenaltyINTEL: *hasResult = true; *hasResultType = true; break; 1819 case Op::OpSubgroupAvcMceGetDefaultInterMotionVectorCostTableINTEL: *hasResult = true; *hasResultType = true; break; 1820 case Op::OpSubgroupAvcMceGetDefaultHighPenaltyCostTableINTEL: *hasResult = true; *hasResultType = true; break; 1821 case Op::OpSubgroupAvcMceGetDefaultMediumPenaltyCostTableINTEL: *hasResult = true; *hasResultType = true; break; 1822 case Op::OpSubgroupAvcMceGetDefaultLowPenaltyCostTableINTEL: *hasResult = true; *hasResultType = true; break; 1823 case Op::OpSubgroupAvcMceSetMotionVectorCostFunctionINTEL: *hasResult = true; *hasResultType = true; break; 1824 case Op::OpSubgroupAvcMceGetDefaultIntraLumaModePenaltyINTEL: *hasResult = true; *hasResultType = true; break; 1825 case Op::OpSubgroupAvcMceGetDefaultNonDcLumaIntraPenaltyINTEL: *hasResult = true; *hasResultType = true; break; 1826 case Op::OpSubgroupAvcMceGetDefaultIntraChromaModeBasePenaltyINTEL: *hasResult = true; *hasResultType = true; break; 1827 case Op::OpSubgroupAvcMceSetAcOnlyHaarINTEL: *hasResult = true; *hasResultType = true; break; 1828 case Op::OpSubgroupAvcMceSetSourceInterlacedFieldPolarityINTEL: *hasResult = true; *hasResultType = true; break; 1829 case Op::OpSubgroupAvcMceSetSingleReferenceInterlacedFieldPolarityINTEL: *hasResult = true; *hasResultType = true; break; 1830 case Op::OpSubgroupAvcMceSetDualReferenceInterlacedFieldPolaritiesINTEL: *hasResult = true; *hasResultType = true; break; 1831 case Op::OpSubgroupAvcMceConvertToImePayloadINTEL: *hasResult = true; *hasResultType = true; break; 1832 case Op::OpSubgroupAvcMceConvertToImeResultINTEL: *hasResult = true; *hasResultType = true; break; 1833 case Op::OpSubgroupAvcMceConvertToRefPayloadINTEL: *hasResult = true; *hasResultType = true; break; 1834 case Op::OpSubgroupAvcMceConvertToRefResultINTEL: *hasResult = true; *hasResultType = true; break; 1835 case Op::OpSubgroupAvcMceConvertToSicPayloadINTEL: *hasResult = true; *hasResultType = true; break; 1836 case Op::OpSubgroupAvcMceConvertToSicResultINTEL: *hasResult = true; *hasResultType = true; break; 1837 case Op::OpSubgroupAvcMceGetMotionVectorsINTEL: *hasResult = true; *hasResultType = true; break; 1838 case Op::OpSubgroupAvcMceGetInterDistortionsINTEL: *hasResult = true; *hasResultType = true; break; 1839 case Op::OpSubgroupAvcMceGetBestInterDistortionsINTEL: *hasResult = true; *hasResultType = true; break; 1840 case Op::OpSubgroupAvcMceGetInterMajorShapeINTEL: *hasResult = true; *hasResultType = true; break; 1841 case Op::OpSubgroupAvcMceGetInterMinorShapeINTEL: *hasResult = true; *hasResultType = true; break; 1842 case Op::OpSubgroupAvcMceGetInterDirectionsINTEL: *hasResult = true; *hasResultType = true; break; 1843 case Op::OpSubgroupAvcMceGetInterMotionVectorCountINTEL: *hasResult = true; *hasResultType = true; break; 1844 case Op::OpSubgroupAvcMceGetInterReferenceIdsINTEL: *hasResult = true; *hasResultType = true; break; 1845 case Op::OpSubgroupAvcMceGetInterReferenceInterlacedFieldPolaritiesINTEL: *hasResult = true; *hasResultType = true; break; 1846 case Op::OpSubgroupAvcImeInitializeINTEL: *hasResult = true; *hasResultType = true; break; 1847 case Op::OpSubgroupAvcImeSetSingleReferenceINTEL: *hasResult = true; *hasResultType = true; break; 1848 case Op::OpSubgroupAvcImeSetDualReferenceINTEL: *hasResult = true; *hasResultType = true; break; 1849 case Op::OpSubgroupAvcImeRefWindowSizeINTEL: *hasResult = true; *hasResultType = true; break; 1850 case Op::OpSubgroupAvcImeAdjustRefOffsetINTEL: *hasResult = true; *hasResultType = true; break; 1851 case Op::OpSubgroupAvcImeConvertToMcePayloadINTEL: *hasResult = true; *hasResultType = true; break; 1852 case Op::OpSubgroupAvcImeSetMaxMotionVectorCountINTEL: *hasResult = true; *hasResultType = true; break; 1853 case Op::OpSubgroupAvcImeSetUnidirectionalMixDisableINTEL: *hasResult = true; *hasResultType = true; break; 1854 case Op::OpSubgroupAvcImeSetEarlySearchTerminationThresholdINTEL: *hasResult = true; *hasResultType = true; break; 1855 case Op::OpSubgroupAvcImeSetWeightedSadINTEL: *hasResult = true; *hasResultType = true; break; 1856 case Op::OpSubgroupAvcImeEvaluateWithSingleReferenceINTEL: *hasResult = true; *hasResultType = true; break; 1857 case Op::OpSubgroupAvcImeEvaluateWithDualReferenceINTEL: *hasResult = true; *hasResultType = true; break; 1858 case Op::OpSubgroupAvcImeEvaluateWithSingleReferenceStreaminINTEL: *hasResult = true; *hasResultType = true; break; 1859 case Op::OpSubgroupAvcImeEvaluateWithDualReferenceStreaminINTEL: *hasResult = true; *hasResultType = true; break; 1860 case Op::OpSubgroupAvcImeEvaluateWithSingleReferenceStreamoutINTEL: *hasResult = true; *hasResultType = true; break; 1861 case Op::OpSubgroupAvcImeEvaluateWithDualReferenceStreamoutINTEL: *hasResult = true; *hasResultType = true; break; 1862 case Op::OpSubgroupAvcImeEvaluateWithSingleReferenceStreaminoutINTEL: *hasResult = true; *hasResultType = true; break; 1863 case Op::OpSubgroupAvcImeEvaluateWithDualReferenceStreaminoutINTEL: *hasResult = true; *hasResultType = true; break; 1864 case Op::OpSubgroupAvcImeConvertToMceResultINTEL: *hasResult = true; *hasResultType = true; break; 1865 case Op::OpSubgroupAvcImeGetSingleReferenceStreaminINTEL: *hasResult = true; *hasResultType = true; break; 1866 case Op::OpSubgroupAvcImeGetDualReferenceStreaminINTEL: *hasResult = true; *hasResultType = true; break; 1867 case Op::OpSubgroupAvcImeStripSingleReferenceStreamoutINTEL: *hasResult = true; *hasResultType = true; break; 1868 case Op::OpSubgroupAvcImeStripDualReferenceStreamoutINTEL: *hasResult = true; *hasResultType = true; break; 1869 case Op::OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeMotionVectorsINTEL: *hasResult = true; *hasResultType = true; break; 1870 case Op::OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeDistortionsINTEL: *hasResult = true; *hasResultType = true; break; 1871 case Op::OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeReferenceIdsINTEL: *hasResult = true; *hasResultType = true; break; 1872 case Op::OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeMotionVectorsINTEL: *hasResult = true; *hasResultType = true; break; 1873 case Op::OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeDistortionsINTEL: *hasResult = true; *hasResultType = true; break; 1874 case Op::OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeReferenceIdsINTEL: *hasResult = true; *hasResultType = true; break; 1875 case Op::OpSubgroupAvcImeGetBorderReachedINTEL: *hasResult = true; *hasResultType = true; break; 1876 case Op::OpSubgroupAvcImeGetTruncatedSearchIndicationINTEL: *hasResult = true; *hasResultType = true; break; 1877 case Op::OpSubgroupAvcImeGetUnidirectionalEarlySearchTerminationINTEL: *hasResult = true; *hasResultType = true; break; 1878 case Op::OpSubgroupAvcImeGetWeightingPatternMinimumMotionVectorINTEL: *hasResult = true; *hasResultType = true; break; 1879 case Op::OpSubgroupAvcImeGetWeightingPatternMinimumDistortionINTEL: *hasResult = true; *hasResultType = true; break; 1880 case Op::OpSubgroupAvcFmeInitializeINTEL: *hasResult = true; *hasResultType = true; break; 1881 case Op::OpSubgroupAvcBmeInitializeINTEL: *hasResult = true; *hasResultType = true; break; 1882 case Op::OpSubgroupAvcRefConvertToMcePayloadINTEL: *hasResult = true; *hasResultType = true; break; 1883 case Op::OpSubgroupAvcRefSetBidirectionalMixDisableINTEL: *hasResult = true; *hasResultType = true; break; 1884 case Op::OpSubgroupAvcRefSetBilinearFilterEnableINTEL: *hasResult = true; *hasResultType = true; break; 1885 case Op::OpSubgroupAvcRefEvaluateWithSingleReferenceINTEL: *hasResult = true; *hasResultType = true; break; 1886 case Op::OpSubgroupAvcRefEvaluateWithDualReferenceINTEL: *hasResult = true; *hasResultType = true; break; 1887 case Op::OpSubgroupAvcRefEvaluateWithMultiReferenceINTEL: *hasResult = true; *hasResultType = true; break; 1888 case Op::OpSubgroupAvcRefEvaluateWithMultiReferenceInterlacedINTEL: *hasResult = true; *hasResultType = true; break; 1889 case Op::OpSubgroupAvcRefConvertToMceResultINTEL: *hasResult = true; *hasResultType = true; break; 1890 case Op::OpSubgroupAvcSicInitializeINTEL: *hasResult = true; *hasResultType = true; break; 1891 case Op::OpSubgroupAvcSicConfigureSkcINTEL: *hasResult = true; *hasResultType = true; break; 1892 case Op::OpSubgroupAvcSicConfigureIpeLumaINTEL: *hasResult = true; *hasResultType = true; break; 1893 case Op::OpSubgroupAvcSicConfigureIpeLumaChromaINTEL: *hasResult = true; *hasResultType = true; break; 1894 case Op::OpSubgroupAvcSicGetMotionVectorMaskINTEL: *hasResult = true; *hasResultType = true; break; 1895 case Op::OpSubgroupAvcSicConvertToMcePayloadINTEL: *hasResult = true; *hasResultType = true; break; 1896 case Op::OpSubgroupAvcSicSetIntraLumaShapePenaltyINTEL: *hasResult = true; *hasResultType = true; break; 1897 case Op::OpSubgroupAvcSicSetIntraLumaModeCostFunctionINTEL: *hasResult = true; *hasResultType = true; break; 1898 case Op::OpSubgroupAvcSicSetIntraChromaModeCostFunctionINTEL: *hasResult = true; *hasResultType = true; break; 1899 case Op::OpSubgroupAvcSicSetBilinearFilterEnableINTEL: *hasResult = true; *hasResultType = true; break; 1900 case Op::OpSubgroupAvcSicSetSkcForwardTransformEnableINTEL: *hasResult = true; *hasResultType = true; break; 1901 case Op::OpSubgroupAvcSicSetBlockBasedRawSkipSadINTEL: *hasResult = true; *hasResultType = true; break; 1902 case Op::OpSubgroupAvcSicEvaluateIpeINTEL: *hasResult = true; *hasResultType = true; break; 1903 case Op::OpSubgroupAvcSicEvaluateWithSingleReferenceINTEL: *hasResult = true; *hasResultType = true; break; 1904 case Op::OpSubgroupAvcSicEvaluateWithDualReferenceINTEL: *hasResult = true; *hasResultType = true; break; 1905 case Op::OpSubgroupAvcSicEvaluateWithMultiReferenceINTEL: *hasResult = true; *hasResultType = true; break; 1906 case Op::OpSubgroupAvcSicEvaluateWithMultiReferenceInterlacedINTEL: *hasResult = true; *hasResultType = true; break; 1907 case Op::OpSubgroupAvcSicConvertToMceResultINTEL: *hasResult = true; *hasResultType = true; break; 1908 case Op::OpSubgroupAvcSicGetIpeLumaShapeINTEL: *hasResult = true; *hasResultType = true; break; 1909 case Op::OpSubgroupAvcSicGetBestIpeLumaDistortionINTEL: *hasResult = true; *hasResultType = true; break; 1910 case Op::OpSubgroupAvcSicGetBestIpeChromaDistortionINTEL: *hasResult = true; *hasResultType = true; break; 1911 case Op::OpSubgroupAvcSicGetPackedIpeLumaModesINTEL: *hasResult = true; *hasResultType = true; break; 1912 case Op::OpSubgroupAvcSicGetIpeChromaModeINTEL: *hasResult = true; *hasResultType = true; break; 1913 case Op::OpSubgroupAvcSicGetPackedSkcLumaCountThresholdINTEL: *hasResult = true; *hasResultType = true; break; 1914 case Op::OpSubgroupAvcSicGetPackedSkcLumaSumThresholdINTEL: *hasResult = true; *hasResultType = true; break; 1915 case Op::OpSubgroupAvcSicGetInterRawSadsINTEL: *hasResult = true; *hasResultType = true; break; 1916 } 1917} 1918#endif /* SPV_ENABLE_UTILITY_CODE */ 1919 1920// Overload operator| for mask bit combining 1921 1922inline ImageOperandsMask operator|(ImageOperandsMask a, ImageOperandsMask b) { return ImageOperandsMask(unsigned(a) | unsigned(b)); } 1923inline FPFastMathModeMask operator|(FPFastMathModeMask a, FPFastMathModeMask b) { return FPFastMathModeMask(unsigned(a) | unsigned(b)); } 1924inline SelectionControlMask operator|(SelectionControlMask a, SelectionControlMask b) { return SelectionControlMask(unsigned(a) | unsigned(b)); } 1925inline LoopControlMask operator|(LoopControlMask a, LoopControlMask b) { return LoopControlMask(unsigned(a) | unsigned(b)); } 1926inline FunctionControlMask operator|(FunctionControlMask a, FunctionControlMask b) { return FunctionControlMask(unsigned(a) | unsigned(b)); } 1927inline MemorySemanticsMask operator|(MemorySemanticsMask a, MemorySemanticsMask b) { return MemorySemanticsMask(unsigned(a) | unsigned(b)); } 1928inline MemoryAccessMask operator|(MemoryAccessMask a, MemoryAccessMask b) { return MemoryAccessMask(unsigned(a) | unsigned(b)); } 1929inline KernelProfilingInfoMask operator|(KernelProfilingInfoMask a, KernelProfilingInfoMask b) { return KernelProfilingInfoMask(unsigned(a) | unsigned(b)); } 1930 1931} // end namespace spv 1932 1933#endif // #ifndef spirv_HPP 1934 1935