1 // Copyright (c) 2014-2016 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 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 // 37 // Some tokens act like mask values, which can be OR'd together, 38 // while others are mutually exclusive. The mask-like ones have 39 // "Mask" in their name, and a parallel enum that has the shift 40 // amount (1 << x) for each corresponding enumerant. 41 42 #ifndef spirv_HPP 43 #define spirv_HPP 44 45 namespace spv { 46 47 typedef unsigned int Id; 48 49 #define SPV_VERSION 0x10100 50 #define SPV_REVISION 4 51 52 static const unsigned int MagicNumber = 0x07230203; 53 static const unsigned int Version = 0x00010100; 54 static const unsigned int Revision = 4; 55 static const unsigned int OpCodeMask = 0xffff; 56 static const unsigned int WordCountShift = 16; 57 58 enum class SourceLanguage : unsigned { 59 Unknown = 0, 60 ESSL = 1, 61 GLSL = 2, 62 OpenCL_C = 3, 63 OpenCL_CPP = 4, 64 Max = 0x7fffffff, 65 }; 66 67 enum class ExecutionModel : unsigned { 68 Vertex = 0, 69 TessellationControl = 1, 70 TessellationEvaluation = 2, 71 Geometry = 3, 72 Fragment = 4, 73 GLCompute = 5, 74 Kernel = 6, 75 Max = 0x7fffffff, 76 }; 77 78 enum class AddressingModel : unsigned { 79 Logical = 0, 80 Physical32 = 1, 81 Physical64 = 2, 82 Max = 0x7fffffff, 83 }; 84 85 enum class MemoryModel : unsigned { 86 Simple = 0, 87 GLSL450 = 1, 88 OpenCL = 2, 89 Max = 0x7fffffff, 90 }; 91 92 enum class ExecutionMode : unsigned { 93 Invocations = 0, 94 SpacingEqual = 1, 95 SpacingFractionalEven = 2, 96 SpacingFractionalOdd = 3, 97 VertexOrderCw = 4, 98 VertexOrderCcw = 5, 99 PixelCenterInteger = 6, 100 OriginUpperLeft = 7, 101 OriginLowerLeft = 8, 102 EarlyFragmentTests = 9, 103 PointMode = 10, 104 Xfb = 11, 105 DepthReplacing = 12, 106 DepthGreater = 14, 107 DepthLess = 15, 108 DepthUnchanged = 16, 109 LocalSize = 17, 110 LocalSizeHint = 18, 111 InputPoints = 19, 112 InputLines = 20, 113 InputLinesAdjacency = 21, 114 Triangles = 22, 115 InputTrianglesAdjacency = 23, 116 Quads = 24, 117 Isolines = 25, 118 OutputVertices = 26, 119 OutputPoints = 27, 120 OutputLineStrip = 28, 121 OutputTriangleStrip = 29, 122 VecTypeHint = 30, 123 ContractionOff = 31, 124 Initializer = 33, 125 Finalizer = 34, 126 SubgroupSize = 35, 127 SubgroupsPerWorkgroup = 36, 128 Max = 0x7fffffff, 129 }; 130 131 enum class StorageClass : unsigned { 132 UniformConstant = 0, 133 Input = 1, 134 Uniform = 2, 135 Output = 3, 136 Workgroup = 4, 137 CrossWorkgroup = 5, 138 Private = 6, 139 Function = 7, 140 Generic = 8, 141 PushConstant = 9, 142 AtomicCounter = 10, 143 Image = 11, 144 Max = 0x7fffffff, 145 }; 146 147 enum class Dim : unsigned { 148 Dim1D = 0, 149 Dim2D = 1, 150 Dim3D = 2, 151 Cube = 3, 152 Rect = 4, 153 Buffer = 5, 154 SubpassData = 6, 155 Max = 0x7fffffff, 156 }; 157 158 enum class SamplerAddressingMode : unsigned { 159 None = 0, 160 ClampToEdge = 1, 161 Clamp = 2, 162 Repeat = 3, 163 RepeatMirrored = 4, 164 Max = 0x7fffffff, 165 }; 166 167 enum class SamplerFilterMode : unsigned { 168 Nearest = 0, 169 Linear = 1, 170 Max = 0x7fffffff, 171 }; 172 173 enum class ImageFormat : unsigned { 174 Unknown = 0, 175 Rgba32f = 1, 176 Rgba16f = 2, 177 R32f = 3, 178 Rgba8 = 4, 179 Rgba8Snorm = 5, 180 Rg32f = 6, 181 Rg16f = 7, 182 R11fG11fB10f = 8, 183 R16f = 9, 184 Rgba16 = 10, 185 Rgb10A2 = 11, 186 Rg16 = 12, 187 Rg8 = 13, 188 R16 = 14, 189 R8 = 15, 190 Rgba16Snorm = 16, 191 Rg16Snorm = 17, 192 Rg8Snorm = 18, 193 R16Snorm = 19, 194 R8Snorm = 20, 195 Rgba32i = 21, 196 Rgba16i = 22, 197 Rgba8i = 23, 198 R32i = 24, 199 Rg32i = 25, 200 Rg16i = 26, 201 Rg8i = 27, 202 R16i = 28, 203 R8i = 29, 204 Rgba32ui = 30, 205 Rgba16ui = 31, 206 Rgba8ui = 32, 207 R32ui = 33, 208 Rgb10a2ui = 34, 209 Rg32ui = 35, 210 Rg16ui = 36, 211 Rg8ui = 37, 212 R16ui = 38, 213 R8ui = 39, 214 Max = 0x7fffffff, 215 }; 216 217 enum class ImageChannelOrder : unsigned { 218 R = 0, 219 A = 1, 220 RG = 2, 221 RA = 3, 222 RGB = 4, 223 RGBA = 5, 224 BGRA = 6, 225 ARGB = 7, 226 Intensity = 8, 227 Luminance = 9, 228 Rx = 10, 229 RGx = 11, 230 RGBx = 12, 231 Depth = 13, 232 DepthStencil = 14, 233 sRGB = 15, 234 sRGBx = 16, 235 sRGBA = 17, 236 sBGRA = 18, 237 ABGR = 19, 238 Max = 0x7fffffff, 239 }; 240 241 enum class ImageChannelDataType : unsigned { 242 SnormInt8 = 0, 243 SnormInt16 = 1, 244 UnormInt8 = 2, 245 UnormInt16 = 3, 246 UnormShort565 = 4, 247 UnormShort555 = 5, 248 UnormInt101010 = 6, 249 SignedInt8 = 7, 250 SignedInt16 = 8, 251 SignedInt32 = 9, 252 UnsignedInt8 = 10, 253 UnsignedInt16 = 11, 254 UnsignedInt32 = 12, 255 HalfFloat = 13, 256 Float = 14, 257 UnormInt24 = 15, 258 UnormInt101010_2 = 16, 259 Max = 0x7fffffff, 260 }; 261 262 enum class ImageOperandsShift : unsigned { 263 Bias = 0, 264 Lod = 1, 265 Grad = 2, 266 ConstOffset = 3, 267 Offset = 4, 268 ConstOffsets = 5, 269 Sample = 6, 270 MinLod = 7, 271 Max = 0x7fffffff, 272 }; 273 274 enum class ImageOperandsMask : unsigned { 275 MaskNone = 0, 276 Bias = 0x00000001, 277 Lod = 0x00000002, 278 Grad = 0x00000004, 279 ConstOffset = 0x00000008, 280 Offset = 0x00000010, 281 ConstOffsets = 0x00000020, 282 Sample = 0x00000040, 283 MinLod = 0x00000080, 284 }; 285 286 enum class FPFastMathModeShift : unsigned { 287 NotNaN = 0, 288 NotInf = 1, 289 NSZ = 2, 290 AllowRecip = 3, 291 Fast = 4, 292 Max = 0x7fffffff, 293 }; 294 295 enum class FPFastMathModeMask : unsigned { 296 MaskNone = 0, 297 NotNaN = 0x00000001, 298 NotInf = 0x00000002, 299 NSZ = 0x00000004, 300 AllowRecip = 0x00000008, 301 Fast = 0x00000010, 302 }; 303 304 enum class FPRoundingMode : unsigned { 305 RTE = 0, 306 RTZ = 1, 307 RTP = 2, 308 RTN = 3, 309 Max = 0x7fffffff, 310 }; 311 312 enum class LinkageType : unsigned { 313 Export = 0, 314 Import = 1, 315 Max = 0x7fffffff, 316 }; 317 318 enum class AccessQualifier : unsigned { 319 ReadOnly = 0, 320 WriteOnly = 1, 321 ReadWrite = 2, 322 Max = 0x7fffffff, 323 }; 324 325 enum class FunctionParameterAttribute : unsigned { 326 Zext = 0, 327 Sext = 1, 328 ByVal = 2, 329 Sret = 3, 330 NoAlias = 4, 331 NoCapture = 5, 332 NoWrite = 6, 333 NoReadWrite = 7, 334 Max = 0x7fffffff, 335 }; 336 337 enum class Decoration : unsigned { 338 RelaxedPrecision = 0, 339 SpecId = 1, 340 Block = 2, 341 BufferBlock = 3, 342 RowMajor = 4, 343 ColMajor = 5, 344 ArrayStride = 6, 345 MatrixStride = 7, 346 GLSLShared = 8, 347 GLSLPacked = 9, 348 CPacked = 10, 349 BuiltIn = 11, 350 NoPerspective = 13, 351 Flat = 14, 352 Patch = 15, 353 Centroid = 16, 354 Sample = 17, 355 Invariant = 18, 356 Restrict = 19, 357 Aliased = 20, 358 Volatile = 21, 359 Constant = 22, 360 Coherent = 23, 361 NonWritable = 24, 362 NonReadable = 25, 363 Uniform = 26, 364 SaturatedConversion = 28, 365 Stream = 29, 366 Location = 30, 367 Component = 31, 368 Index = 32, 369 Binding = 33, 370 DescriptorSet = 34, 371 Offset = 35, 372 XfbBuffer = 36, 373 XfbStride = 37, 374 FuncParamAttr = 38, 375 FPRoundingMode = 39, 376 FPFastMathMode = 40, 377 LinkageAttributes = 41, 378 NoContraction = 42, 379 InputAttachmentIndex = 43, 380 Alignment = 44, 381 MaxByteOffset = 45, 382 Max = 0x7fffffff, 383 }; 384 385 enum class BuiltIn : unsigned { 386 Position = 0, 387 PointSize = 1, 388 ClipDistance = 3, 389 CullDistance = 4, 390 VertexId = 5, 391 InstanceId = 6, 392 PrimitiveId = 7, 393 InvocationId = 8, 394 Layer = 9, 395 ViewportIndex = 10, 396 TessLevelOuter = 11, 397 TessLevelInner = 12, 398 TessCoord = 13, 399 PatchVertices = 14, 400 FragCoord = 15, 401 PointCoord = 16, 402 FrontFacing = 17, 403 SampleId = 18, 404 SamplePosition = 19, 405 SampleMask = 20, 406 FragDepth = 22, 407 HelperInvocation = 23, 408 NumWorkgroups = 24, 409 WorkgroupSize = 25, 410 WorkgroupId = 26, 411 LocalInvocationId = 27, 412 GlobalInvocationId = 28, 413 LocalInvocationIndex = 29, 414 WorkDim = 30, 415 GlobalSize = 31, 416 EnqueuedWorkgroupSize = 32, 417 GlobalOffset = 33, 418 GlobalLinearId = 34, 419 SubgroupSize = 36, 420 SubgroupMaxSize = 37, 421 NumSubgroups = 38, 422 NumEnqueuedSubgroups = 39, 423 SubgroupId = 40, 424 SubgroupLocalInvocationId = 41, 425 VertexIndex = 42, 426 InstanceIndex = 43, 427 SubgroupEqMaskKHR = 4416, 428 SubgroupGeMaskKHR = 4417, 429 SubgroupGtMaskKHR = 4418, 430 SubgroupLeMaskKHR = 4419, 431 SubgroupLtMaskKHR = 4420, 432 BaseVertex = 4424, 433 BaseInstance = 4425, 434 DrawIndex = 4426, 435 Max = 0x7fffffff, 436 }; 437 438 enum class SelectionControlShift : unsigned { 439 Flatten = 0, 440 DontFlatten = 1, 441 Max = 0x7fffffff, 442 }; 443 444 enum class SelectionControlMask : unsigned { 445 MaskNone = 0, 446 Flatten = 0x00000001, 447 DontFlatten = 0x00000002, 448 }; 449 450 enum class LoopControlShift : unsigned { 451 Unroll = 0, 452 DontUnroll = 1, 453 DependencyInfinite = 2, 454 DependencyLength = 3, 455 Max = 0x7fffffff, 456 }; 457 458 enum class LoopControlMask : unsigned { 459 MaskNone = 0, 460 Unroll = 0x00000001, 461 DontUnroll = 0x00000002, 462 DependencyInfinite = 0x00000004, 463 DependencyLength = 0x00000008, 464 }; 465 466 enum class FunctionControlShift : unsigned { 467 Inline = 0, 468 DontInline = 1, 469 Pure = 2, 470 Const = 3, 471 Max = 0x7fffffff, 472 }; 473 474 enum class FunctionControlMask : unsigned { 475 MaskNone = 0, 476 Inline = 0x00000001, 477 DontInline = 0x00000002, 478 Pure = 0x00000004, 479 Const = 0x00000008, 480 }; 481 482 enum class MemorySemanticsShift : unsigned { 483 Acquire = 1, 484 Release = 2, 485 AcquireRelease = 3, 486 SequentiallyConsistent = 4, 487 UniformMemory = 6, 488 SubgroupMemory = 7, 489 WorkgroupMemory = 8, 490 CrossWorkgroupMemory = 9, 491 AtomicCounterMemory = 10, 492 ImageMemory = 11, 493 Max = 0x7fffffff, 494 }; 495 496 enum class MemorySemanticsMask : unsigned { 497 MaskNone = 0, 498 Acquire = 0x00000002, 499 Release = 0x00000004, 500 AcquireRelease = 0x00000008, 501 SequentiallyConsistent = 0x00000010, 502 UniformMemory = 0x00000040, 503 SubgroupMemory = 0x00000080, 504 WorkgroupMemory = 0x00000100, 505 CrossWorkgroupMemory = 0x00000200, 506 AtomicCounterMemory = 0x00000400, 507 ImageMemory = 0x00000800, 508 }; 509 510 enum class MemoryAccessShift : unsigned { 511 Volatile = 0, 512 Aligned = 1, 513 Nontemporal = 2, 514 Max = 0x7fffffff, 515 }; 516 517 enum class MemoryAccessMask : unsigned { 518 MaskNone = 0, 519 Volatile = 0x00000001, 520 Aligned = 0x00000002, 521 Nontemporal = 0x00000004, 522 }; 523 524 enum class Scope : unsigned { 525 CrossDevice = 0, 526 Device = 1, 527 Workgroup = 2, 528 Subgroup = 3, 529 Invocation = 4, 530 Max = 0x7fffffff, 531 }; 532 533 enum class GroupOperation : unsigned { 534 Reduce = 0, 535 InclusiveScan = 1, 536 ExclusiveScan = 2, 537 Max = 0x7fffffff, 538 }; 539 540 enum class KernelEnqueueFlags : unsigned { 541 NoWait = 0, 542 WaitKernel = 1, 543 WaitWorkGroup = 2, 544 Max = 0x7fffffff, 545 }; 546 547 enum class KernelProfilingInfoShift : unsigned { 548 CmdExecTime = 0, 549 Max = 0x7fffffff, 550 }; 551 552 enum class KernelProfilingInfoMask : unsigned { 553 MaskNone = 0, 554 CmdExecTime = 0x00000001, 555 }; 556 557 enum class Capability : unsigned { 558 Matrix = 0, 559 Shader = 1, 560 Geometry = 2, 561 Tessellation = 3, 562 Addresses = 4, 563 Linkage = 5, 564 Kernel = 6, 565 Vector16 = 7, 566 Float16Buffer = 8, 567 Float16 = 9, 568 Float64 = 10, 569 Int64 = 11, 570 Int64Atomics = 12, 571 ImageBasic = 13, 572 ImageReadWrite = 14, 573 ImageMipmap = 15, 574 Pipes = 17, 575 Groups = 18, 576 DeviceEnqueue = 19, 577 LiteralSampler = 20, 578 AtomicStorage = 21, 579 Int16 = 22, 580 TessellationPointSize = 23, 581 GeometryPointSize = 24, 582 ImageGatherExtended = 25, 583 StorageImageMultisample = 27, 584 UniformBufferArrayDynamicIndexing = 28, 585 SampledImageArrayDynamicIndexing = 29, 586 StorageBufferArrayDynamicIndexing = 30, 587 StorageImageArrayDynamicIndexing = 31, 588 ClipDistance = 32, 589 CullDistance = 33, 590 ImageCubeArray = 34, 591 SampleRateShading = 35, 592 ImageRect = 36, 593 SampledRect = 37, 594 GenericPointer = 38, 595 Int8 = 39, 596 InputAttachment = 40, 597 SparseResidency = 41, 598 MinLod = 42, 599 Sampled1D = 43, 600 Image1D = 44, 601 SampledCubeArray = 45, 602 SampledBuffer = 46, 603 ImageBuffer = 47, 604 ImageMSArray = 48, 605 StorageImageExtendedFormats = 49, 606 ImageQuery = 50, 607 DerivativeControl = 51, 608 InterpolationFunction = 52, 609 TransformFeedback = 53, 610 GeometryStreams = 54, 611 StorageImageReadWithoutFormat = 55, 612 StorageImageWriteWithoutFormat = 56, 613 MultiViewport = 57, 614 SubgroupDispatch = 58, 615 NamedBarrier = 59, 616 PipeStorage = 60, 617 SubgroupBallotKHR = 4423, 618 DrawParameters = 4427, 619 Max = 0x7fffffff, 620 }; 621 622 enum class Op : unsigned { 623 OpNop = 0, 624 OpUndef = 1, 625 OpSourceContinued = 2, 626 OpSource = 3, 627 OpSourceExtension = 4, 628 OpName = 5, 629 OpMemberName = 6, 630 OpString = 7, 631 OpLine = 8, 632 OpExtension = 10, 633 OpExtInstImport = 11, 634 OpExtInst = 12, 635 OpMemoryModel = 14, 636 OpEntryPoint = 15, 637 OpExecutionMode = 16, 638 OpCapability = 17, 639 OpTypeVoid = 19, 640 OpTypeBool = 20, 641 OpTypeInt = 21, 642 OpTypeFloat = 22, 643 OpTypeVector = 23, 644 OpTypeMatrix = 24, 645 OpTypeImage = 25, 646 OpTypeSampler = 26, 647 OpTypeSampledImage = 27, 648 OpTypeArray = 28, 649 OpTypeRuntimeArray = 29, 650 OpTypeStruct = 30, 651 OpTypeOpaque = 31, 652 OpTypePointer = 32, 653 OpTypeFunction = 33, 654 OpTypeEvent = 34, 655 OpTypeDeviceEvent = 35, 656 OpTypeReserveId = 36, 657 OpTypeQueue = 37, 658 OpTypePipe = 38, 659 OpTypeForwardPointer = 39, 660 OpConstantTrue = 41, 661 OpConstantFalse = 42, 662 OpConstant = 43, 663 OpConstantComposite = 44, 664 OpConstantSampler = 45, 665 OpConstantNull = 46, 666 OpSpecConstantTrue = 48, 667 OpSpecConstantFalse = 49, 668 OpSpecConstant = 50, 669 OpSpecConstantComposite = 51, 670 OpSpecConstantOp = 52, 671 OpFunction = 54, 672 OpFunctionParameter = 55, 673 OpFunctionEnd = 56, 674 OpFunctionCall = 57, 675 OpVariable = 59, 676 OpImageTexelPointer = 60, 677 OpLoad = 61, 678 OpStore = 62, 679 OpCopyMemory = 63, 680 OpCopyMemorySized = 64, 681 OpAccessChain = 65, 682 OpInBoundsAccessChain = 66, 683 OpPtrAccessChain = 67, 684 OpArrayLength = 68, 685 OpGenericPtrMemSemantics = 69, 686 OpInBoundsPtrAccessChain = 70, 687 OpDecorate = 71, 688 OpMemberDecorate = 72, 689 OpDecorationGroup = 73, 690 OpGroupDecorate = 74, 691 OpGroupMemberDecorate = 75, 692 OpVectorExtractDynamic = 77, 693 OpVectorInsertDynamic = 78, 694 OpVectorShuffle = 79, 695 OpCompositeConstruct = 80, 696 OpCompositeExtract = 81, 697 OpCompositeInsert = 82, 698 OpCopyObject = 83, 699 OpTranspose = 84, 700 OpSampledImage = 86, 701 OpImageSampleImplicitLod = 87, 702 OpImageSampleExplicitLod = 88, 703 OpImageSampleDrefImplicitLod = 89, 704 OpImageSampleDrefExplicitLod = 90, 705 OpImageSampleProjImplicitLod = 91, 706 OpImageSampleProjExplicitLod = 92, 707 OpImageSampleProjDrefImplicitLod = 93, 708 OpImageSampleProjDrefExplicitLod = 94, 709 OpImageFetch = 95, 710 OpImageGather = 96, 711 OpImageDrefGather = 97, 712 OpImageRead = 98, 713 OpImageWrite = 99, 714 OpImage = 100, 715 OpImageQueryFormat = 101, 716 OpImageQueryOrder = 102, 717 OpImageQuerySizeLod = 103, 718 OpImageQuerySize = 104, 719 OpImageQueryLod = 105, 720 OpImageQueryLevels = 106, 721 OpImageQuerySamples = 107, 722 OpConvertFToU = 109, 723 OpConvertFToS = 110, 724 OpConvertSToF = 111, 725 OpConvertUToF = 112, 726 OpUConvert = 113, 727 OpSConvert = 114, 728 OpFConvert = 115, 729 OpQuantizeToF16 = 116, 730 OpConvertPtrToU = 117, 731 OpSatConvertSToU = 118, 732 OpSatConvertUToS = 119, 733 OpConvertUToPtr = 120, 734 OpPtrCastToGeneric = 121, 735 OpGenericCastToPtr = 122, 736 OpGenericCastToPtrExplicit = 123, 737 OpBitcast = 124, 738 OpSNegate = 126, 739 OpFNegate = 127, 740 OpIAdd = 128, 741 OpFAdd = 129, 742 OpISub = 130, 743 OpFSub = 131, 744 OpIMul = 132, 745 OpFMul = 133, 746 OpUDiv = 134, 747 OpSDiv = 135, 748 OpFDiv = 136, 749 OpUMod = 137, 750 OpSRem = 138, 751 OpSMod = 139, 752 OpFRem = 140, 753 OpFMod = 141, 754 OpVectorTimesScalar = 142, 755 OpMatrixTimesScalar = 143, 756 OpVectorTimesMatrix = 144, 757 OpMatrixTimesVector = 145, 758 OpMatrixTimesMatrix = 146, 759 OpOuterProduct = 147, 760 OpDot = 148, 761 OpIAddCarry = 149, 762 OpISubBorrow = 150, 763 OpUMulExtended = 151, 764 OpSMulExtended = 152, 765 OpAny = 154, 766 OpAll = 155, 767 OpIsNan = 156, 768 OpIsInf = 157, 769 OpIsFinite = 158, 770 OpIsNormal = 159, 771 OpSignBitSet = 160, 772 OpLessOrGreater = 161, 773 OpOrdered = 162, 774 OpUnordered = 163, 775 OpLogicalEqual = 164, 776 OpLogicalNotEqual = 165, 777 OpLogicalOr = 166, 778 OpLogicalAnd = 167, 779 OpLogicalNot = 168, 780 OpSelect = 169, 781 OpIEqual = 170, 782 OpINotEqual = 171, 783 OpUGreaterThan = 172, 784 OpSGreaterThan = 173, 785 OpUGreaterThanEqual = 174, 786 OpSGreaterThanEqual = 175, 787 OpULessThan = 176, 788 OpSLessThan = 177, 789 OpULessThanEqual = 178, 790 OpSLessThanEqual = 179, 791 OpFOrdEqual = 180, 792 OpFUnordEqual = 181, 793 OpFOrdNotEqual = 182, 794 OpFUnordNotEqual = 183, 795 OpFOrdLessThan = 184, 796 OpFUnordLessThan = 185, 797 OpFOrdGreaterThan = 186, 798 OpFUnordGreaterThan = 187, 799 OpFOrdLessThanEqual = 188, 800 OpFUnordLessThanEqual = 189, 801 OpFOrdGreaterThanEqual = 190, 802 OpFUnordGreaterThanEqual = 191, 803 OpShiftRightLogical = 194, 804 OpShiftRightArithmetic = 195, 805 OpShiftLeftLogical = 196, 806 OpBitwiseOr = 197, 807 OpBitwiseXor = 198, 808 OpBitwiseAnd = 199, 809 OpNot = 200, 810 OpBitFieldInsert = 201, 811 OpBitFieldSExtract = 202, 812 OpBitFieldUExtract = 203, 813 OpBitReverse = 204, 814 OpBitCount = 205, 815 OpDPdx = 207, 816 OpDPdy = 208, 817 OpFwidth = 209, 818 OpDPdxFine = 210, 819 OpDPdyFine = 211, 820 OpFwidthFine = 212, 821 OpDPdxCoarse = 213, 822 OpDPdyCoarse = 214, 823 OpFwidthCoarse = 215, 824 OpEmitVertex = 218, 825 OpEndPrimitive = 219, 826 OpEmitStreamVertex = 220, 827 OpEndStreamPrimitive = 221, 828 OpControlBarrier = 224, 829 OpMemoryBarrier = 225, 830 OpAtomicLoad = 227, 831 OpAtomicStore = 228, 832 OpAtomicExchange = 229, 833 OpAtomicCompareExchange = 230, 834 OpAtomicCompareExchangeWeak = 231, 835 OpAtomicIIncrement = 232, 836 OpAtomicIDecrement = 233, 837 OpAtomicIAdd = 234, 838 OpAtomicISub = 235, 839 OpAtomicSMin = 236, 840 OpAtomicUMin = 237, 841 OpAtomicSMax = 238, 842 OpAtomicUMax = 239, 843 OpAtomicAnd = 240, 844 OpAtomicOr = 241, 845 OpAtomicXor = 242, 846 OpPhi = 245, 847 OpLoopMerge = 246, 848 OpSelectionMerge = 247, 849 OpLabel = 248, 850 OpBranch = 249, 851 OpBranchConditional = 250, 852 OpSwitch = 251, 853 OpKill = 252, 854 OpReturn = 253, 855 OpReturnValue = 254, 856 OpUnreachable = 255, 857 OpLifetimeStart = 256, 858 OpLifetimeStop = 257, 859 OpGroupAsyncCopy = 259, 860 OpGroupWaitEvents = 260, 861 OpGroupAll = 261, 862 OpGroupAny = 262, 863 OpGroupBroadcast = 263, 864 OpGroupIAdd = 264, 865 OpGroupFAdd = 265, 866 OpGroupFMin = 266, 867 OpGroupUMin = 267, 868 OpGroupSMin = 268, 869 OpGroupFMax = 269, 870 OpGroupUMax = 270, 871 OpGroupSMax = 271, 872 OpReadPipe = 274, 873 OpWritePipe = 275, 874 OpReservedReadPipe = 276, 875 OpReservedWritePipe = 277, 876 OpReserveReadPipePackets = 278, 877 OpReserveWritePipePackets = 279, 878 OpCommitReadPipe = 280, 879 OpCommitWritePipe = 281, 880 OpIsValidReserveId = 282, 881 OpGetNumPipePackets = 283, 882 OpGetMaxPipePackets = 284, 883 OpGroupReserveReadPipePackets = 285, 884 OpGroupReserveWritePipePackets = 286, 885 OpGroupCommitReadPipe = 287, 886 OpGroupCommitWritePipe = 288, 887 OpEnqueueMarker = 291, 888 OpEnqueueKernel = 292, 889 OpGetKernelNDrangeSubGroupCount = 293, 890 OpGetKernelNDrangeMaxSubGroupSize = 294, 891 OpGetKernelWorkGroupSize = 295, 892 OpGetKernelPreferredWorkGroupSizeMultiple = 296, 893 OpRetainEvent = 297, 894 OpReleaseEvent = 298, 895 OpCreateUserEvent = 299, 896 OpIsValidEvent = 300, 897 OpSetUserEventStatus = 301, 898 OpCaptureEventProfilingInfo = 302, 899 OpGetDefaultQueue = 303, 900 OpBuildNDRange = 304, 901 OpImageSparseSampleImplicitLod = 305, 902 OpImageSparseSampleExplicitLod = 306, 903 OpImageSparseSampleDrefImplicitLod = 307, 904 OpImageSparseSampleDrefExplicitLod = 308, 905 OpImageSparseSampleProjImplicitLod = 309, 906 OpImageSparseSampleProjExplicitLod = 310, 907 OpImageSparseSampleProjDrefImplicitLod = 311, 908 OpImageSparseSampleProjDrefExplicitLod = 312, 909 OpImageSparseFetch = 313, 910 OpImageSparseGather = 314, 911 OpImageSparseDrefGather = 315, 912 OpImageSparseTexelsResident = 316, 913 OpNoLine = 317, 914 OpAtomicFlagTestAndSet = 318, 915 OpAtomicFlagClear = 319, 916 OpImageSparseRead = 320, 917 OpSizeOf = 321, 918 OpTypePipeStorage = 322, 919 OpConstantPipeStorage = 323, 920 OpCreatePipeFromPipeStorage = 324, 921 OpGetKernelLocalSizeForSubgroupCount = 325, 922 OpGetKernelMaxNumSubgroups = 326, 923 OpTypeNamedBarrier = 327, 924 OpNamedBarrierInitialize = 328, 925 OpMemoryNamedBarrier = 329, 926 OpModuleProcessed = 330, 927 OpSubgroupBallotKHR = 4421, 928 OpSubgroupFirstInvocationKHR = 4422, 929 Max = 0x7fffffff, 930 }; 931 932 // Overload operator| for mask bit combining 933 934 inline ImageOperandsMask operator|(ImageOperandsMask a, ImageOperandsMask b) { return ImageOperandsMask(unsigned(a) | unsigned(b)); } 935 inline FPFastMathModeMask operator|(FPFastMathModeMask a, FPFastMathModeMask b) { return FPFastMathModeMask(unsigned(a) | unsigned(b)); } 936 inline SelectionControlMask operator|(SelectionControlMask a, SelectionControlMask b) { return SelectionControlMask(unsigned(a) | unsigned(b)); } 937 inline LoopControlMask operator|(LoopControlMask a, LoopControlMask b) { return LoopControlMask(unsigned(a) | unsigned(b)); } 938 inline FunctionControlMask operator|(FunctionControlMask a, FunctionControlMask b) { return FunctionControlMask(unsigned(a) | unsigned(b)); } 939 inline MemorySemanticsMask operator|(MemorySemanticsMask a, MemorySemanticsMask b) { return MemorySemanticsMask(unsigned(a) | unsigned(b)); } 940 inline MemoryAccessMask operator|(MemoryAccessMask a, MemoryAccessMask b) { return MemoryAccessMask(unsigned(a) | unsigned(b)); } 941 inline KernelProfilingInfoMask operator|(KernelProfilingInfoMask a, KernelProfilingInfoMask b) { return KernelProfilingInfoMask(unsigned(a) | unsigned(b)); } 942 943 } // end namespace spv 944 945 #endif // #ifndef spirv_HPP 946 947