1
// Copyright (c) 2014-2019 The Khronos Group Inc.
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:
10
// The above copyright notice and this permission notice shall be included in
11
// all copies or substantial portions of the Materials.
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/
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
25
// This header is automatically generated by the same tool that creates
26
// the Binary Section of the SPIR-V specification.
28
// Enumeration tokens for SPIR-V, in various styles:
29
// C, C++, C++11, JSON, Lua, Python, C#, D
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
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.
50
typedef unsigned int Id;
52
#define SPV_VERSION 0x10500
53
#define SPV_REVISION 1
55
static const unsigned int MagicNumber = 0x07230203;
56
static const unsigned int Version = 0x00010500;
57
static const unsigned int Revision = 1;
58
static const unsigned int OpCodeMask = 0xffff;
59
static const unsigned int WordCountShift = 16;
61
enum class SourceLanguage : unsigned {
71
enum class ExecutionModel : unsigned {
73
TessellationControl = 1,
74
TessellationEvaluation = 2,
81
RayGenerationNV = 5313,
82
IntersectionNV = 5314,
90
enum class AddressingModel : unsigned {
94
PhysicalStorageBuffer64 = 5348,
95
PhysicalStorageBuffer64EXT = 5348,
99
enum class MemoryModel : unsigned {
108
enum class ExecutionMode : unsigned {
111
SpacingFractionalEven = 2,
112
SpacingFractionalOdd = 3,
115
PixelCenterInteger = 6,
118
EarlyFragmentTests = 9,
129
InputLinesAdjacency = 21,
131
InputTrianglesAdjacency = 23,
136
OutputLineStrip = 28,
137
OutputTriangleStrip = 29,
143
SubgroupsPerWorkgroup = 36,
144
SubgroupsPerWorkgroupId = 37,
146
LocalSizeHintId = 39,
147
PostDepthCoverage = 4446,
148
DenormPreserve = 4459,
149
DenormFlushToZero = 4460,
150
SignedZeroInfNanPreserve = 4461,
151
RoundingModeRTE = 4462,
152
RoundingModeRTZ = 4463,
153
StencilRefReplacingEXT = 5027,
154
OutputLinesNV = 5269,
155
OutputPrimitivesNV = 5270,
156
DerivativeGroupQuadsNV = 5289,
157
DerivativeGroupLinearNV = 5290,
158
OutputTrianglesNV = 5298,
159
PixelInterlockOrderedEXT = 5366,
160
PixelInterlockUnorderedEXT = 5367,
161
SampleInterlockOrderedEXT = 5368,
162
SampleInterlockUnorderedEXT = 5369,
163
ShadingRateInterlockOrderedEXT = 5370,
164
ShadingRateInterlockUnorderedEXT = 5371,
168
enum class StorageClass : unsigned {
182
CallableDataNV = 5328,
183
IncomingCallableDataNV = 5329,
185
HitAttributeNV = 5339,
186
IncomingRayPayloadNV = 5342,
187
ShaderRecordBufferNV = 5343,
188
PhysicalStorageBuffer = 5349,
189
PhysicalStorageBufferEXT = 5349,
193
enum class Dim : unsigned {
204
enum class SamplerAddressingMode : unsigned {
213
enum class SamplerFilterMode : unsigned {
219
enum class ImageFormat : unsigned {
263
enum class ImageChannelOrder : unsigned {
287
enum class ImageChannelDataType : unsigned {
304
UnormInt101010_2 = 16,
308
enum class ImageOperandsShift : unsigned {
317
MakeTexelAvailable = 8,
318
MakeTexelAvailableKHR = 8,
319
MakeTexelVisible = 9,
320
MakeTexelVisibleKHR = 9,
321
NonPrivateTexel = 10,
322
NonPrivateTexelKHR = 10,
324
VolatileTexelKHR = 11,
330
enum class ImageOperandsMask : unsigned {
335
ConstOffset = 0x00000008,
337
ConstOffsets = 0x00000020,
340
MakeTexelAvailable = 0x00000100,
341
MakeTexelAvailableKHR = 0x00000100,
342
MakeTexelVisible = 0x00000200,
343
MakeTexelVisibleKHR = 0x00000200,
344
NonPrivateTexel = 0x00000400,
345
NonPrivateTexelKHR = 0x00000400,
346
VolatileTexel = 0x00000800,
347
VolatileTexelKHR = 0x00000800,
348
SignExtend = 0x00001000,
349
ZeroExtend = 0x00002000,
352
enum class FPFastMathModeShift : unsigned {
361
enum class FPFastMathModeMask : unsigned {
366
AllowRecip = 0x00000008,
370
enum class FPRoundingMode : unsigned {
378
enum class LinkageType : unsigned {
384
enum class AccessQualifier : unsigned {
391
enum class FunctionParameterAttribute : unsigned {
403
enum class Decoration : unsigned {
404
RelaxedPrecision = 0,
431
SaturatedConversion = 28,
444
LinkageAttributes = 41,
446
InputAttachmentIndex = 43,
450
MaxByteOffsetId = 47,
452
NoUnsignedWrap = 4470,
453
ExplicitInterpAMD = 4999,
454
OverrideCoverageNV = 5248,
455
PassthroughNV = 5250,
456
ViewportRelativeNV = 5252,
457
SecondaryViewportRelativeNV = 5256,
458
PerPrimitiveNV = 5271,
463
NonUniformEXT = 5300,
464
RestrictPointer = 5355,
465
RestrictPointerEXT = 5355,
466
AliasedPointer = 5356,
467
AliasedPointerEXT = 5356,
468
CounterBuffer = 5634,
469
HlslCounterBufferGOOGLE = 5634,
470
HlslSemanticGOOGLE = 5635,
472
UserTypeGOOGLE = 5636,
476
enum class BuiltIn : unsigned {
498
HelperInvocation = 23,
502
LocalInvocationId = 27,
503
GlobalInvocationId = 28,
504
LocalInvocationIndex = 29,
507
EnqueuedWorkgroupSize = 32,
511
SubgroupMaxSize = 37,
513
NumEnqueuedSubgroups = 39,
515
SubgroupLocalInvocationId = 41,
518
SubgroupEqMask = 4416,
519
SubgroupEqMaskKHR = 4416,
520
SubgroupGeMask = 4417,
521
SubgroupGeMaskKHR = 4417,
522
SubgroupGtMask = 4418,
523
SubgroupGtMaskKHR = 4418,
524
SubgroupLeMask = 4419,
525
SubgroupLeMaskKHR = 4419,
526
SubgroupLtMask = 4420,
527
SubgroupLtMaskKHR = 4420,
533
BaryCoordNoPerspAMD = 4992,
534
BaryCoordNoPerspCentroidAMD = 4993,
535
BaryCoordNoPerspSampleAMD = 4994,
536
BaryCoordSmoothAMD = 4995,
537
BaryCoordSmoothCentroidAMD = 4996,
538
BaryCoordSmoothSampleAMD = 4997,
539
BaryCoordPullModelAMD = 4998,
540
FragStencilRefEXT = 5014,
541
ViewportMaskNV = 5253,
542
SecondaryPositionNV = 5257,
543
SecondaryViewportMaskNV = 5258,
544
PositionPerViewNV = 5261,
545
ViewportMaskPerViewNV = 5262,
546
FullyCoveredEXT = 5264,
548
PrimitiveCountNV = 5275,
549
PrimitiveIndicesNV = 5276,
550
ClipDistancePerViewNV = 5277,
551
CullDistancePerViewNV = 5278,
552
LayerPerViewNV = 5279,
553
MeshViewCountNV = 5280,
554
MeshViewIndicesNV = 5281,
556
BaryCoordNoPerspNV = 5287,
558
FragmentSizeNV = 5292,
559
FragInvocationCountEXT = 5293,
560
InvocationsPerPixelNV = 5293,
563
WorldRayOriginNV = 5321,
564
WorldRayDirectionNV = 5322,
565
ObjectRayOriginNV = 5323,
566
ObjectRayDirectionNV = 5324,
569
InstanceCustomIndexNV = 5327,
570
ObjectToWorldNV = 5330,
571
WorldToObjectNV = 5331,
574
IncomingRayFlagsNV = 5351,
582
enum class SelectionControlShift : unsigned {
588
enum class SelectionControlMask : unsigned {
590
Flatten = 0x00000001,
591
DontFlatten = 0x00000002,
594
enum class LoopControlShift : unsigned {
597
DependencyInfinite = 2,
598
DependencyLength = 3,
601
IterationMultiple = 6,
607
enum class LoopControlMask : unsigned {
610
DontUnroll = 0x00000002,
611
DependencyInfinite = 0x00000004,
612
DependencyLength = 0x00000008,
613
MinIterations = 0x00000010,
614
MaxIterations = 0x00000020,
615
IterationMultiple = 0x00000040,
616
PeelCount = 0x00000080,
617
PartialCount = 0x00000100,
620
enum class FunctionControlShift : unsigned {
628
enum class FunctionControlMask : unsigned {
631
DontInline = 0x00000002,
636
enum class MemorySemanticsShift : unsigned {
640
SequentiallyConsistent = 4,
644
CrossWorkgroupMemory = 9,
645
AtomicCounterMemory = 10,
648
OutputMemoryKHR = 12,
650
MakeAvailableKHR = 13,
657
enum class MemorySemanticsMask : unsigned {
659
Acquire = 0x00000002,
660
Release = 0x00000004,
661
AcquireRelease = 0x00000008,
662
SequentiallyConsistent = 0x00000010,
663
UniformMemory = 0x00000040,
664
SubgroupMemory = 0x00000080,
665
WorkgroupMemory = 0x00000100,
666
CrossWorkgroupMemory = 0x00000200,
667
AtomicCounterMemory = 0x00000400,
668
ImageMemory = 0x00000800,
669
OutputMemory = 0x00001000,
670
OutputMemoryKHR = 0x00001000,
671
MakeAvailable = 0x00002000,
672
MakeAvailableKHR = 0x00002000,
673
MakeVisible = 0x00004000,
674
MakeVisibleKHR = 0x00004000,
675
Volatile = 0x00008000,
678
enum class MemoryAccessShift : unsigned {
682
MakePointerAvailable = 3,
683
MakePointerAvailableKHR = 3,
684
MakePointerVisible = 4,
685
MakePointerVisibleKHR = 4,
686
NonPrivatePointer = 5,
687
NonPrivatePointerKHR = 5,
691
enum class MemoryAccessMask : unsigned {
693
Volatile = 0x00000001,
694
Aligned = 0x00000002,
695
Nontemporal = 0x00000004,
696
MakePointerAvailable = 0x00000008,
697
MakePointerAvailableKHR = 0x00000008,
698
MakePointerVisible = 0x00000010,
699
MakePointerVisibleKHR = 0x00000010,
700
NonPrivatePointer = 0x00000020,
701
NonPrivatePointerKHR = 0x00000020,
704
enum class Scope : unsigned {
715
enum class GroupOperation : unsigned {
720
PartitionedReduceNV = 6,
721
PartitionedInclusiveScanNV = 7,
722
PartitionedExclusiveScanNV = 8,
726
enum class KernelEnqueueFlags : unsigned {
733
enum class KernelProfilingInfoShift : unsigned {
738
enum class KernelProfilingInfoMask : unsigned {
740
CmdExecTime = 0x00000001,
743
enum class Capability : unsigned {
766
TessellationPointSize = 23,
767
GeometryPointSize = 24,
768
ImageGatherExtended = 25,
769
StorageImageMultisample = 27,
770
UniformBufferArrayDynamicIndexing = 28,
771
SampledImageArrayDynamicIndexing = 29,
772
StorageBufferArrayDynamicIndexing = 30,
773
StorageImageArrayDynamicIndexing = 31,
777
SampleRateShading = 35,
782
InputAttachment = 40,
783
SparseResidency = 41,
787
SampledCubeArray = 45,
791
StorageImageExtendedFormats = 49,
793
DerivativeControl = 51,
794
InterpolationFunction = 52,
795
TransformFeedback = 53,
796
GeometryStreams = 54,
797
StorageImageReadWithoutFormat = 55,
798
StorageImageWriteWithoutFormat = 56,
800
SubgroupDispatch = 58,
803
GroupNonUniform = 61,
804
GroupNonUniformVote = 62,
805
GroupNonUniformArithmetic = 63,
806
GroupNonUniformBallot = 64,
807
GroupNonUniformShuffle = 65,
808
GroupNonUniformShuffleRelative = 66,
809
GroupNonUniformClustered = 67,
810
GroupNonUniformQuad = 68,
812
ShaderViewportIndex = 70,
813
SubgroupBallotKHR = 4423,
814
DrawParameters = 4427,
815
SubgroupVoteKHR = 4431,
816
StorageBuffer16BitAccess = 4433,
817
StorageUniformBufferBlock16 = 4433,
818
StorageUniform16 = 4434,
819
UniformAndStorageBuffer16BitAccess = 4434,
820
StoragePushConstant16 = 4435,
821
StorageInputOutput16 = 4436,
824
VariablePointersStorageBuffer = 4441,
825
VariablePointers = 4442,
826
AtomicStorageOps = 4445,
827
SampleMaskPostDepthCoverage = 4447,
828
StorageBuffer8BitAccess = 4448,
829
UniformAndStorageBuffer8BitAccess = 4449,
830
StoragePushConstant8 = 4450,
831
DenormPreserve = 4464,
832
DenormFlushToZero = 4465,
833
SignedZeroInfNanPreserve = 4466,
834
RoundingModeRTE = 4467,
835
RoundingModeRTZ = 4468,
836
Float16ImageAMD = 5008,
837
ImageGatherBiasLodAMD = 5009,
838
FragmentMaskAMD = 5010,
839
StencilExportEXT = 5013,
840
ImageReadWriteLodAMD = 5015,
841
ShaderClockKHR = 5055,
842
SampleMaskOverrideCoverageNV = 5249,
843
GeometryShaderPassthroughNV = 5251,
844
ShaderViewportIndexLayerEXT = 5254,
845
ShaderViewportIndexLayerNV = 5254,
846
ShaderViewportMaskNV = 5255,
847
ShaderStereoViewNV = 5259,
848
PerViewAttributesNV = 5260,
849
FragmentFullyCoveredEXT = 5265,
850
MeshShadingNV = 5266,
851
ImageFootprintNV = 5282,
852
FragmentBarycentricNV = 5284,
853
ComputeDerivativeGroupQuadsNV = 5288,
854
FragmentDensityEXT = 5291,
855
ShadingRateNV = 5291,
856
GroupNonUniformPartitionedNV = 5297,
857
ShaderNonUniform = 5301,
858
ShaderNonUniformEXT = 5301,
859
RuntimeDescriptorArray = 5302,
860
RuntimeDescriptorArrayEXT = 5302,
861
InputAttachmentArrayDynamicIndexing = 5303,
862
InputAttachmentArrayDynamicIndexingEXT = 5303,
863
UniformTexelBufferArrayDynamicIndexing = 5304,
864
UniformTexelBufferArrayDynamicIndexingEXT = 5304,
865
StorageTexelBufferArrayDynamicIndexing = 5305,
866
StorageTexelBufferArrayDynamicIndexingEXT = 5305,
867
UniformBufferArrayNonUniformIndexing = 5306,
868
UniformBufferArrayNonUniformIndexingEXT = 5306,
869
SampledImageArrayNonUniformIndexing = 5307,
870
SampledImageArrayNonUniformIndexingEXT = 5307,
871
StorageBufferArrayNonUniformIndexing = 5308,
872
StorageBufferArrayNonUniformIndexingEXT = 5308,
873
StorageImageArrayNonUniformIndexing = 5309,
874
StorageImageArrayNonUniformIndexingEXT = 5309,
875
InputAttachmentArrayNonUniformIndexing = 5310,
876
InputAttachmentArrayNonUniformIndexingEXT = 5310,
877
UniformTexelBufferArrayNonUniformIndexing = 5311,
878
UniformTexelBufferArrayNonUniformIndexingEXT = 5311,
879
StorageTexelBufferArrayNonUniformIndexing = 5312,
880
StorageTexelBufferArrayNonUniformIndexingEXT = 5312,
882
VulkanMemoryModel = 5345,
883
VulkanMemoryModelKHR = 5345,
884
VulkanMemoryModelDeviceScope = 5346,
885
VulkanMemoryModelDeviceScopeKHR = 5346,
886
PhysicalStorageBufferAddresses = 5347,
887
PhysicalStorageBufferAddressesEXT = 5347,
888
ComputeDerivativeGroupLinearNV = 5350,
889
CooperativeMatrixNV = 5357,
890
FragmentShaderSampleInterlockEXT = 5363,
891
FragmentShaderShadingRateInterlockEXT = 5372,
892
ShaderSMBuiltinsNV = 5373,
893
FragmentShaderPixelInterlockEXT = 5378,
894
DemoteToHelperInvocationEXT = 5379,
895
SubgroupShuffleINTEL = 5568,
896
SubgroupBufferBlockIOINTEL = 5569,
897
SubgroupImageBlockIOINTEL = 5570,
898
SubgroupImageMediaBlockIOINTEL = 5579,
899
IntegerFunctions2INTEL = 5584,
900
SubgroupAvcMotionEstimationINTEL = 5696,
901
SubgroupAvcMotionEstimationIntraINTEL = 5697,
902
SubgroupAvcMotionEstimationChromaINTEL = 5698,
906
enum class Op : unsigned {
909
OpSourceContinued = 2,
911
OpSourceExtension = 4,
917
OpExtInstImport = 11,
921
OpExecutionMode = 16,
931
OpTypeSampledImage = 27,
933
OpTypeRuntimeArray = 29,
939
OpTypeDeviceEvent = 35,
940
OpTypeReserveId = 36,
943
OpTypeForwardPointer = 39,
945
OpConstantFalse = 42,
947
OpConstantComposite = 44,
948
OpConstantSampler = 45,
950
OpSpecConstantTrue = 48,
951
OpSpecConstantFalse = 49,
953
OpSpecConstantComposite = 51,
954
OpSpecConstantOp = 52,
956
OpFunctionParameter = 55,
960
OpImageTexelPointer = 60,
964
OpCopyMemorySized = 64,
966
OpInBoundsAccessChain = 66,
967
OpPtrAccessChain = 67,
969
OpGenericPtrMemSemantics = 69,
970
OpInBoundsPtrAccessChain = 70,
972
OpMemberDecorate = 72,
973
OpDecorationGroup = 73,
974
OpGroupDecorate = 74,
975
OpGroupMemberDecorate = 75,
976
OpVectorExtractDynamic = 77,
977
OpVectorInsertDynamic = 78,
978
OpVectorShuffle = 79,
979
OpCompositeConstruct = 80,
980
OpCompositeExtract = 81,
981
OpCompositeInsert = 82,
985
OpImageSampleImplicitLod = 87,
986
OpImageSampleExplicitLod = 88,
987
OpImageSampleDrefImplicitLod = 89,
988
OpImageSampleDrefExplicitLod = 90,
989
OpImageSampleProjImplicitLod = 91,
990
OpImageSampleProjExplicitLod = 92,
991
OpImageSampleProjDrefImplicitLod = 93,
992
OpImageSampleProjDrefExplicitLod = 94,
995
OpImageDrefGather = 97,
999
OpImageQueryFormat = 101,
1000
OpImageQueryOrder = 102,
1001
OpImageQuerySizeLod = 103,
1002
OpImageQuerySize = 104,
1003
OpImageQueryLod = 105,
1004
OpImageQueryLevels = 106,
1005
OpImageQuerySamples = 107,
1006
OpConvertFToU = 109,
1007
OpConvertFToS = 110,
1008
OpConvertSToF = 111,
1009
OpConvertUToF = 112,
1013
OpQuantizeToF16 = 116,
1014
OpConvertPtrToU = 117,
1015
OpSatConvertSToU = 118,
1016
OpSatConvertUToS = 119,
1017
OpConvertUToPtr = 120,
1018
OpPtrCastToGeneric = 121,
1019
OpGenericCastToPtr = 122,
1020
OpGenericCastToPtrExplicit = 123,
1038
OpVectorTimesScalar = 142,
1039
OpMatrixTimesScalar = 143,
1040
OpVectorTimesMatrix = 144,
1041
OpMatrixTimesVector = 145,
1042
OpMatrixTimesMatrix = 146,
1043
OpOuterProduct = 147,
1047
OpUMulExtended = 151,
1048
OpSMulExtended = 152,
1056
OpLessOrGreater = 161,
1059
OpLogicalEqual = 164,
1060
OpLogicalNotEqual = 165,
1067
OpUGreaterThan = 172,
1068
OpSGreaterThan = 173,
1069
OpUGreaterThanEqual = 174,
1070
OpSGreaterThanEqual = 175,
1073
OpULessThanEqual = 178,
1074
OpSLessThanEqual = 179,
1076
OpFUnordEqual = 181,
1077
OpFOrdNotEqual = 182,
1078
OpFUnordNotEqual = 183,
1079
OpFOrdLessThan = 184,
1080
OpFUnordLessThan = 185,
1081
OpFOrdGreaterThan = 186,
1082
OpFUnordGreaterThan = 187,
1083
OpFOrdLessThanEqual = 188,
1084
OpFUnordLessThanEqual = 189,
1085
OpFOrdGreaterThanEqual = 190,
1086
OpFUnordGreaterThanEqual = 191,
1087
OpShiftRightLogical = 194,
1088
OpShiftRightArithmetic = 195,
1089
OpShiftLeftLogical = 196,
1094
OpBitFieldInsert = 201,
1095
OpBitFieldSExtract = 202,
1096
OpBitFieldUExtract = 203,
1107
OpFwidthCoarse = 215,
1109
OpEndPrimitive = 219,
1110
OpEmitStreamVertex = 220,
1111
OpEndStreamPrimitive = 221,
1112
OpControlBarrier = 224,
1113
OpMemoryBarrier = 225,
1115
OpAtomicStore = 228,
1116
OpAtomicExchange = 229,
1117
OpAtomicCompareExchange = 230,
1118
OpAtomicCompareExchangeWeak = 231,
1119
OpAtomicIIncrement = 232,
1120
OpAtomicIDecrement = 233,
1132
OpSelectionMerge = 247,
1135
OpBranchConditional = 250,
1139
OpReturnValue = 254,
1140
OpUnreachable = 255,
1141
OpLifetimeStart = 256,
1142
OpLifetimeStop = 257,
1143
OpGroupAsyncCopy = 259,
1144
OpGroupWaitEvents = 260,
1147
OpGroupBroadcast = 263,
1158
OpReservedReadPipe = 276,
1159
OpReservedWritePipe = 277,
1160
OpReserveReadPipePackets = 278,
1161
OpReserveWritePipePackets = 279,
1162
OpCommitReadPipe = 280,
1163
OpCommitWritePipe = 281,
1164
OpIsValidReserveId = 282,
1165
OpGetNumPipePackets = 283,
1166
OpGetMaxPipePackets = 284,
1167
OpGroupReserveReadPipePackets = 285,
1168
OpGroupReserveWritePipePackets = 286,
1169
OpGroupCommitReadPipe = 287,
1170
OpGroupCommitWritePipe = 288,
1171
OpEnqueueMarker = 291,
1172
OpEnqueueKernel = 292,
1173
OpGetKernelNDrangeSubGroupCount = 293,
1174
OpGetKernelNDrangeMaxSubGroupSize = 294,
1175
OpGetKernelWorkGroupSize = 295,
1176
OpGetKernelPreferredWorkGroupSizeMultiple = 296,
1177
OpRetainEvent = 297,
1178
OpReleaseEvent = 298,
1179
OpCreateUserEvent = 299,
1180
OpIsValidEvent = 300,
1181
OpSetUserEventStatus = 301,
1182
OpCaptureEventProfilingInfo = 302,
1183
OpGetDefaultQueue = 303,
1184
OpBuildNDRange = 304,
1185
OpImageSparseSampleImplicitLod = 305,
1186
OpImageSparseSampleExplicitLod = 306,
1187
OpImageSparseSampleDrefImplicitLod = 307,
1188
OpImageSparseSampleDrefExplicitLod = 308,
1189
OpImageSparseSampleProjImplicitLod = 309,
1190
OpImageSparseSampleProjExplicitLod = 310,
1191
OpImageSparseSampleProjDrefImplicitLod = 311,
1192
OpImageSparseSampleProjDrefExplicitLod = 312,
1193
OpImageSparseFetch = 313,
1194
OpImageSparseGather = 314,
1195
OpImageSparseDrefGather = 315,
1196
OpImageSparseTexelsResident = 316,
1198
OpAtomicFlagTestAndSet = 318,
1199
OpAtomicFlagClear = 319,
1200
OpImageSparseRead = 320,
1202
OpTypePipeStorage = 322,
1203
OpConstantPipeStorage = 323,
1204
OpCreatePipeFromPipeStorage = 324,
1205
OpGetKernelLocalSizeForSubgroupCount = 325,
1206
OpGetKernelMaxNumSubgroups = 326,
1207
OpTypeNamedBarrier = 327,
1208
OpNamedBarrierInitialize = 328,
1209
OpMemoryNamedBarrier = 329,
1210
OpModuleProcessed = 330,
1211
OpExecutionModeId = 331,
1213
OpGroupNonUniformElect = 333,
1214
OpGroupNonUniformAll = 334,
1215
OpGroupNonUniformAny = 335,
1216
OpGroupNonUniformAllEqual = 336,
1217
OpGroupNonUniformBroadcast = 337,
1218
OpGroupNonUniformBroadcastFirst = 338,
1219
OpGroupNonUniformBallot = 339,
1220
OpGroupNonUniformInverseBallot = 340,
1221
OpGroupNonUniformBallotBitExtract = 341,
1222
OpGroupNonUniformBallotBitCount = 342,
1223
OpGroupNonUniformBallotFindLSB = 343,
1224
OpGroupNonUniformBallotFindMSB = 344,
1225
OpGroupNonUniformShuffle = 345,
1226
OpGroupNonUniformShuffleXor = 346,
1227
OpGroupNonUniformShuffleUp = 347,
1228
OpGroupNonUniformShuffleDown = 348,
1229
OpGroupNonUniformIAdd = 349,
1230
OpGroupNonUniformFAdd = 350,
1231
OpGroupNonUniformIMul = 351,
1232
OpGroupNonUniformFMul = 352,
1233
OpGroupNonUniformSMin = 353,
1234
OpGroupNonUniformUMin = 354,
1235
OpGroupNonUniformFMin = 355,
1236
OpGroupNonUniformSMax = 356,
1237
OpGroupNonUniformUMax = 357,
1238
OpGroupNonUniformFMax = 358,
1239
OpGroupNonUniformBitwiseAnd = 359,
1240
OpGroupNonUniformBitwiseOr = 360,
1241
OpGroupNonUniformBitwiseXor = 361,
1242
OpGroupNonUniformLogicalAnd = 362,
1243
OpGroupNonUniformLogicalOr = 363,
1244
OpGroupNonUniformLogicalXor = 364,
1245
OpGroupNonUniformQuadBroadcast = 365,
1246
OpGroupNonUniformQuadSwap = 366,
1247
OpCopyLogical = 400,
1249
OpPtrNotEqual = 402,
1251
OpSubgroupBallotKHR = 4421,
1252
OpSubgroupFirstInvocationKHR = 4422,
1253
OpSubgroupAllKHR = 4428,
1254
OpSubgroupAnyKHR = 4429,
1255
OpSubgroupAllEqualKHR = 4430,
1256
OpSubgroupReadInvocationKHR = 4432,
1257
OpGroupIAddNonUniformAMD = 5000,
1258
OpGroupFAddNonUniformAMD = 5001,
1259
OpGroupFMinNonUniformAMD = 5002,
1260
OpGroupUMinNonUniformAMD = 5003,
1261
OpGroupSMinNonUniformAMD = 5004,
1262
OpGroupFMaxNonUniformAMD = 5005,
1263
OpGroupUMaxNonUniformAMD = 5006,
1264
OpGroupSMaxNonUniformAMD = 5007,
1265
OpFragmentMaskFetchAMD = 5011,
1266
OpFragmentFetchAMD = 5012,
1267
OpReadClockKHR = 5056,
1268
OpImageSampleFootprintNV = 5283,
1269
OpGroupNonUniformPartitionNV = 5296,
1270
OpWritePackedPrimitiveIndices4x8NV = 5299,
1271
OpReportIntersectionNV = 5334,
1272
OpIgnoreIntersectionNV = 5335,
1273
OpTerminateRayNV = 5336,
1275
OpTypeAccelerationStructureNV = 5341,
1276
OpExecuteCallableNV = 5344,
1277
OpTypeCooperativeMatrixNV = 5358,
1278
OpCooperativeMatrixLoadNV = 5359,
1279
OpCooperativeMatrixStoreNV = 5360,
1280
OpCooperativeMatrixMulAddNV = 5361,
1281
OpCooperativeMatrixLengthNV = 5362,
1282
OpBeginInvocationInterlockEXT = 5364,
1283
OpEndInvocationInterlockEXT = 5365,
1284
OpDemoteToHelperInvocationEXT = 5380,
1285
OpIsHelperInvocationEXT = 5381,
1286
OpSubgroupShuffleINTEL = 5571,
1287
OpSubgroupShuffleDownINTEL = 5572,
1288
OpSubgroupShuffleUpINTEL = 5573,
1289
OpSubgroupShuffleXorINTEL = 5574,
1290
OpSubgroupBlockReadINTEL = 5575,
1291
OpSubgroupBlockWriteINTEL = 5576,
1292
OpSubgroupImageBlockReadINTEL = 5577,
1293
OpSubgroupImageBlockWriteINTEL = 5578,
1294
OpSubgroupImageMediaBlockReadINTEL = 5580,
1295
OpSubgroupImageMediaBlockWriteINTEL = 5581,
1296
OpUCountLeadingZerosINTEL = 5585,
1297
OpUCountTrailingZerosINTEL = 5586,
1298
OpAbsISubINTEL = 5587,
1299
OpAbsUSubINTEL = 5588,
1300
OpIAddSatINTEL = 5589,
1301
OpUAddSatINTEL = 5590,
1302
OpIAverageINTEL = 5591,
1303
OpUAverageINTEL = 5592,
1304
OpIAverageRoundedINTEL = 5593,
1305
OpUAverageRoundedINTEL = 5594,
1306
OpISubSatINTEL = 5595,
1307
OpUSubSatINTEL = 5596,
1308
OpIMul32x16INTEL = 5597,
1309
OpUMul32x16INTEL = 5598,
1310
OpDecorateString = 5632,
1311
OpDecorateStringGOOGLE = 5632,
1312
OpMemberDecorateString = 5633,
1313
OpMemberDecorateStringGOOGLE = 5633,
1314
OpVmeImageINTEL = 5699,
1315
OpTypeVmeImageINTEL = 5700,
1316
OpTypeAvcImePayloadINTEL = 5701,
1317
OpTypeAvcRefPayloadINTEL = 5702,
1318
OpTypeAvcSicPayloadINTEL = 5703,
1319
OpTypeAvcMcePayloadINTEL = 5704,
1320
OpTypeAvcMceResultINTEL = 5705,
1321
OpTypeAvcImeResultINTEL = 5706,
1322
OpTypeAvcImeResultSingleReferenceStreamoutINTEL = 5707,
1323
OpTypeAvcImeResultDualReferenceStreamoutINTEL = 5708,
1324
OpTypeAvcImeSingleReferenceStreaminINTEL = 5709,
1325
OpTypeAvcImeDualReferenceStreaminINTEL = 5710,
1326
OpTypeAvcRefResultINTEL = 5711,
1327
OpTypeAvcSicResultINTEL = 5712,
1328
OpSubgroupAvcMceGetDefaultInterBaseMultiReferencePenaltyINTEL = 5713,
1329
OpSubgroupAvcMceSetInterBaseMultiReferencePenaltyINTEL = 5714,
1330
OpSubgroupAvcMceGetDefaultInterShapePenaltyINTEL = 5715,
1331
OpSubgroupAvcMceSetInterShapePenaltyINTEL = 5716,
1332
OpSubgroupAvcMceGetDefaultInterDirectionPenaltyINTEL = 5717,
1333
OpSubgroupAvcMceSetInterDirectionPenaltyINTEL = 5718,
1334
OpSubgroupAvcMceGetDefaultIntraLumaShapePenaltyINTEL = 5719,
1335
OpSubgroupAvcMceGetDefaultInterMotionVectorCostTableINTEL = 5720,
1336
OpSubgroupAvcMceGetDefaultHighPenaltyCostTableINTEL = 5721,
1337
OpSubgroupAvcMceGetDefaultMediumPenaltyCostTableINTEL = 5722,
1338
OpSubgroupAvcMceGetDefaultLowPenaltyCostTableINTEL = 5723,
1339
OpSubgroupAvcMceSetMotionVectorCostFunctionINTEL = 5724,
1340
OpSubgroupAvcMceGetDefaultIntraLumaModePenaltyINTEL = 5725,
1341
OpSubgroupAvcMceGetDefaultNonDcLumaIntraPenaltyINTEL = 5726,
1342
OpSubgroupAvcMceGetDefaultIntraChromaModeBasePenaltyINTEL = 5727,
1343
OpSubgroupAvcMceSetAcOnlyHaarINTEL = 5728,
1344
OpSubgroupAvcMceSetSourceInterlacedFieldPolarityINTEL = 5729,
1345
OpSubgroupAvcMceSetSingleReferenceInterlacedFieldPolarityINTEL = 5730,
1346
OpSubgroupAvcMceSetDualReferenceInterlacedFieldPolaritiesINTEL = 5731,
1347
OpSubgroupAvcMceConvertToImePayloadINTEL = 5732,
1348
OpSubgroupAvcMceConvertToImeResultINTEL = 5733,
1349
OpSubgroupAvcMceConvertToRefPayloadINTEL = 5734,
1350
OpSubgroupAvcMceConvertToRefResultINTEL = 5735,
1351
OpSubgroupAvcMceConvertToSicPayloadINTEL = 5736,
1352
OpSubgroupAvcMceConvertToSicResultINTEL = 5737,
1353
OpSubgroupAvcMceGetMotionVectorsINTEL = 5738,
1354
OpSubgroupAvcMceGetInterDistortionsINTEL = 5739,
1355
OpSubgroupAvcMceGetBestInterDistortionsINTEL = 5740,
1356
OpSubgroupAvcMceGetInterMajorShapeINTEL = 5741,
1357
OpSubgroupAvcMceGetInterMinorShapeINTEL = 5742,
1358
OpSubgroupAvcMceGetInterDirectionsINTEL = 5743,
1359
OpSubgroupAvcMceGetInterMotionVectorCountINTEL = 5744,
1360
OpSubgroupAvcMceGetInterReferenceIdsINTEL = 5745,
1361
OpSubgroupAvcMceGetInterReferenceInterlacedFieldPolaritiesINTEL = 5746,
1362
OpSubgroupAvcImeInitializeINTEL = 5747,
1363
OpSubgroupAvcImeSetSingleReferenceINTEL = 5748,
1364
OpSubgroupAvcImeSetDualReferenceINTEL = 5749,
1365
OpSubgroupAvcImeRefWindowSizeINTEL = 5750,
1366
OpSubgroupAvcImeAdjustRefOffsetINTEL = 5751,
1367
OpSubgroupAvcImeConvertToMcePayloadINTEL = 5752,
1368
OpSubgroupAvcImeSetMaxMotionVectorCountINTEL = 5753,
1369
OpSubgroupAvcImeSetUnidirectionalMixDisableINTEL = 5754,
1370
OpSubgroupAvcImeSetEarlySearchTerminationThresholdINTEL = 5755,
1371
OpSubgroupAvcImeSetWeightedSadINTEL = 5756,
1372
OpSubgroupAvcImeEvaluateWithSingleReferenceINTEL = 5757,
1373
OpSubgroupAvcImeEvaluateWithDualReferenceINTEL = 5758,
1374
OpSubgroupAvcImeEvaluateWithSingleReferenceStreaminINTEL = 5759,
1375
OpSubgroupAvcImeEvaluateWithDualReferenceStreaminINTEL = 5760,
1376
OpSubgroupAvcImeEvaluateWithSingleReferenceStreamoutINTEL = 5761,
1377
OpSubgroupAvcImeEvaluateWithDualReferenceStreamoutINTEL = 5762,
1378
OpSubgroupAvcImeEvaluateWithSingleReferenceStreaminoutINTEL = 5763,
1379
OpSubgroupAvcImeEvaluateWithDualReferenceStreaminoutINTEL = 5764,
1380
OpSubgroupAvcImeConvertToMceResultINTEL = 5765,
1381
OpSubgroupAvcImeGetSingleReferenceStreaminINTEL = 5766,
1382
OpSubgroupAvcImeGetDualReferenceStreaminINTEL = 5767,
1383
OpSubgroupAvcImeStripSingleReferenceStreamoutINTEL = 5768,
1384
OpSubgroupAvcImeStripDualReferenceStreamoutINTEL = 5769,
1385
OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeMotionVectorsINTEL = 5770,
1386
OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeDistortionsINTEL = 5771,
1387
OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeReferenceIdsINTEL = 5772,
1388
OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeMotionVectorsINTEL = 5773,
1389
OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeDistortionsINTEL = 5774,
1390
OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeReferenceIdsINTEL = 5775,
1391
OpSubgroupAvcImeGetBorderReachedINTEL = 5776,
1392
OpSubgroupAvcImeGetTruncatedSearchIndicationINTEL = 5777,
1393
OpSubgroupAvcImeGetUnidirectionalEarlySearchTerminationINTEL = 5778,
1394
OpSubgroupAvcImeGetWeightingPatternMinimumMotionVectorINTEL = 5779,
1395
OpSubgroupAvcImeGetWeightingPatternMinimumDistortionINTEL = 5780,
1396
OpSubgroupAvcFmeInitializeINTEL = 5781,
1397
OpSubgroupAvcBmeInitializeINTEL = 5782,
1398
OpSubgroupAvcRefConvertToMcePayloadINTEL = 5783,
1399
OpSubgroupAvcRefSetBidirectionalMixDisableINTEL = 5784,
1400
OpSubgroupAvcRefSetBilinearFilterEnableINTEL = 5785,
1401
OpSubgroupAvcRefEvaluateWithSingleReferenceINTEL = 5786,
1402
OpSubgroupAvcRefEvaluateWithDualReferenceINTEL = 5787,
1403
OpSubgroupAvcRefEvaluateWithMultiReferenceINTEL = 5788,
1404
OpSubgroupAvcRefEvaluateWithMultiReferenceInterlacedINTEL = 5789,
1405
OpSubgroupAvcRefConvertToMceResultINTEL = 5790,
1406
OpSubgroupAvcSicInitializeINTEL = 5791,
1407
OpSubgroupAvcSicConfigureSkcINTEL = 5792,
1408
OpSubgroupAvcSicConfigureIpeLumaINTEL = 5793,
1409
OpSubgroupAvcSicConfigureIpeLumaChromaINTEL = 5794,
1410
OpSubgroupAvcSicGetMotionVectorMaskINTEL = 5795,
1411
OpSubgroupAvcSicConvertToMcePayloadINTEL = 5796,
1412
OpSubgroupAvcSicSetIntraLumaShapePenaltyINTEL = 5797,
1413
OpSubgroupAvcSicSetIntraLumaModeCostFunctionINTEL = 5798,
1414
OpSubgroupAvcSicSetIntraChromaModeCostFunctionINTEL = 5799,
1415
OpSubgroupAvcSicSetBilinearFilterEnableINTEL = 5800,
1416
OpSubgroupAvcSicSetSkcForwardTransformEnableINTEL = 5801,
1417
OpSubgroupAvcSicSetBlockBasedRawSkipSadINTEL = 5802,
1418
OpSubgroupAvcSicEvaluateIpeINTEL = 5803,
1419
OpSubgroupAvcSicEvaluateWithSingleReferenceINTEL = 5804,
1420
OpSubgroupAvcSicEvaluateWithDualReferenceINTEL = 5805,
1421
OpSubgroupAvcSicEvaluateWithMultiReferenceINTEL = 5806,
1422
OpSubgroupAvcSicEvaluateWithMultiReferenceInterlacedINTEL = 5807,
1423
OpSubgroupAvcSicConvertToMceResultINTEL = 5808,
1424
OpSubgroupAvcSicGetIpeLumaShapeINTEL = 5809,
1425
OpSubgroupAvcSicGetBestIpeLumaDistortionINTEL = 5810,
1426
OpSubgroupAvcSicGetBestIpeChromaDistortionINTEL = 5811,
1427
OpSubgroupAvcSicGetPackedIpeLumaModesINTEL = 5812,
1428
OpSubgroupAvcSicGetIpeChromaModeINTEL = 5813,
1429
OpSubgroupAvcSicGetPackedSkcLumaCountThresholdINTEL = 5814,
1430
OpSubgroupAvcSicGetPackedSkcLumaSumThresholdINTEL = 5815,
1431
OpSubgroupAvcSicGetInterRawSadsINTEL = 5816,
1435
#ifdef SPV_ENABLE_UTILITY_CODE
1436
inline void HasResultAndType(Op opcode, bool *hasResult, bool *hasResultType) {
1437
*hasResult = *hasResultType = false;
1439
default: /* unknown opcode */ break;
1440
case Op::OpNop: *hasResult = false; *hasResultType = false; break;
1441
case Op::OpUndef: *hasResult = true; *hasResultType = true; break;
1442
case Op::OpSourceContinued: *hasResult = false; *hasResultType = false; break;
1443
case Op::OpSource: *hasResult = false; *hasResultType = false; break;
1444
case Op::OpSourceExtension: *hasResult = false; *hasResultType = false; break;
1445
case Op::OpName: *hasResult = false; *hasResultType = false; break;
1446
case Op::OpMemberName: *hasResult = false; *hasResultType = false; break;
1447
case Op::OpString: *hasResult = true; *hasResultType = false; break;
1448
case Op::OpLine: *hasResult = false; *hasResultType = false; break;
1449
case Op::OpExtension: *hasResult = false; *hasResultType = false; break;
1450
case Op::OpExtInstImport: *hasResult = true; *hasResultType = false; break;
1451
case Op::OpExtInst: *hasResult = true; *hasResultType = true; break;
1452
case Op::OpMemoryModel: *hasResult = false; *hasResultType = false; break;
1453
case Op::OpEntryPoint: *hasResult = false; *hasResultType = false; break;
1454
case Op::OpExecutionMode: *hasResult = false; *hasResultType = false; break;
1455
case Op::OpCapability: *hasResult = false; *hasResultType = false; break;
1456
case Op::OpTypeVoid: *hasResult = true; *hasResultType = false; break;
1457
case Op::OpTypeBool: *hasResult = true; *hasResultType = false; break;
1458
case Op::OpTypeInt: *hasResult = true; *hasResultType = false; break;
1459
case Op::OpTypeFloat: *hasResult = true; *hasResultType = false; break;
1460
case Op::OpTypeVector: *hasResult = true; *hasResultType = false; break;
1461
case Op::OpTypeMatrix: *hasResult = true; *hasResultType = false; break;
1462
case Op::OpTypeImage: *hasResult = true; *hasResultType = false; break;
1463
case Op::OpTypeSampler: *hasResult = true; *hasResultType = false; break;
1464
case Op::OpTypeSampledImage: *hasResult = true; *hasResultType = false; break;
1465
case Op::OpTypeArray: *hasResult = true; *hasResultType = false; break;
1466
case Op::OpTypeRuntimeArray: *hasResult = true; *hasResultType = false; break;
1467
case Op::OpTypeStruct: *hasResult = true; *hasResultType = false; break;
1468
case Op::OpTypeOpaque: *hasResult = true; *hasResultType = false; break;
1469
case Op::OpTypePointer: *hasResult = true; *hasResultType = false; break;
1470
case Op::OpTypeFunction: *hasResult = true; *hasResultType = false; break;
1471
case Op::OpTypeEvent: *hasResult = true; *hasResultType = false; break;
1472
case Op::OpTypeDeviceEvent: *hasResult = true; *hasResultType = false; break;
1473
case Op::OpTypeReserveId: *hasResult = true; *hasResultType = false; break;
1474
case Op::OpTypeQueue: *hasResult = true; *hasResultType = false; break;
1475
case Op::OpTypePipe: *hasResult = true; *hasResultType = false; break;
1476
case Op::OpTypeForwardPointer: *hasResult = false; *hasResultType = false; break;
1477
case Op::OpConstantTrue: *hasResult = true; *hasResultType = true; break;
1478
case Op::OpConstantFalse: *hasResult = true; *hasResultType = true; break;
1479
case Op::OpConstant: *hasResult = true; *hasResultType = true; break;
1480
case Op::OpConstantComposite: *hasResult = true; *hasResultType = true; break;
1481
case Op::OpConstantSampler: *hasResult = true; *hasResultType = true; break;
1482
case Op::OpConstantNull: *hasResult = true; *hasResultType = true; break;
1483
case Op::OpSpecConstantTrue: *hasResult = true; *hasResultType = true; break;
1484
case Op::OpSpecConstantFalse: *hasResult = true; *hasResultType = true; break;
1485
case Op::OpSpecConstant: *hasResult = true; *hasResultType = true; break;
1486
case Op::OpSpecConstantComposite: *hasResult = true; *hasResultType = true; break;
1487
case Op::OpSpecConstantOp: *hasResult = true; *hasResultType = true; break;
1488
case Op::OpFunction: *hasResult = true; *hasResultType = true; break;
1489
case Op::OpFunctionParameter: *hasResult = true; *hasResultType = true; break;
1490
case Op::OpFunctionEnd: *hasResult = false; *hasResultType = false; break;
1491
case Op::OpFunctionCall: *hasResult = true; *hasResultType = true; break;
1492
case Op::OpVariable: *hasResult = true; *hasResultType = true; break;
1493
case Op::OpImageTexelPointer: *hasResult = true; *hasResultType = true; break;
1494
case Op::OpLoad: *hasResult = true; *hasResultType = true; break;
1495
case Op::OpStore: *hasResult = false; *hasResultType = false; break;
1496
case Op::OpCopyMemory: *hasResult = false; *hasResultType = false; break;
1497
case Op::OpCopyMemorySized: *hasResult = false; *hasResultType = false; break;
1498
case Op::OpAccessChain: *hasResult = true; *hasResultType = true; break;
1499
case Op::OpInBoundsAccessChain: *hasResult = true; *hasResultType = true; break;
1500
case Op::OpPtrAccessChain: *hasResult = true; *hasResultType = true; break;
1501
case Op::OpArrayLength: *hasResult = true; *hasResultType = true; break;
1502
case Op::OpGenericPtrMemSemantics: *hasResult = true; *hasResultType = true; break;
1503
case Op::OpInBoundsPtrAccessChain: *hasResult = true; *hasResultType = true; break;
1504
case Op::OpDecorate: *hasResult = false; *hasResultType = false; break;
1505
case Op::OpMemberDecorate: *hasResult = false; *hasResultType = false; break;
1506
case Op::OpDecorationGroup: *hasResult = true; *hasResultType = false; break;
1507
case Op::OpGroupDecorate: *hasResult = false; *hasResultType = false; break;
1508
case Op::OpGroupMemberDecorate: *hasResult = false; *hasResultType = false; break;
1509
case Op::OpVectorExtractDynamic: *hasResult = true; *hasResultType = true; break;
1510
case Op::OpVectorInsertDynamic: *hasResult = true; *hasResultType = true; break;
1511
case Op::OpVectorShuffle: *hasResult = true; *hasResultType = true; break;
1512
case Op::OpCompositeConstruct: *hasResult = true; *hasResultType = true; break;
1513
case Op::OpCompositeExtract: *hasResult = true; *hasResultType = true; break;
1514
case Op::OpCompositeInsert: *hasResult = true; *hasResultType = true; break;
1515
case Op::OpCopyObject: *hasResult = true; *hasResultType = true; break;
1516
case Op::OpTranspose: *hasResult = true; *hasResultType = true; break;
1517
case Op::OpSampledImage: *hasResult = true; *hasResultType = true; break;
1518
case Op::OpImageSampleImplicitLod: *hasResult = true; *hasResultType = true; break;
1519
case Op::OpImageSampleExplicitLod: *hasResult = true; *hasResultType = true; break;
1520
case Op::OpImageSampleDrefImplicitLod: *hasResult = true; *hasResultType = true; break;
1521
case Op::OpImageSampleDrefExplicitLod: *hasResult = true; *hasResultType = true; break;
1522
case Op::OpImageSampleProjImplicitLod: *hasResult = true; *hasResultType = true; break;
1523
case Op::OpImageSampleProjExplicitLod: *hasResult = true; *hasResultType = true; break;
1524
case Op::OpImageSampleProjDrefImplicitLod: *hasResult = true; *hasResultType = true; break;
1525
case Op::OpImageSampleProjDrefExplicitLod: *hasResult = true; *hasResultType = true; break;
1526
case Op::OpImageFetch: *hasResult = true; *hasResultType = true; break;
1527
case Op::OpImageGather: *hasResult = true; *hasResultType = true; break;
1528
case Op::OpImageDrefGather: *hasResult = true; *hasResultType = true; break;
1529
case Op::OpImageRead: *hasResult = true; *hasResultType = true; break;
1530
case Op::OpImageWrite: *hasResult = false; *hasResultType = false; break;
1531
case Op::OpImage: *hasResult = true; *hasResultType = true; break;
1532
case Op::OpImageQueryFormat: *hasResult = true; *hasResultType = true; break;
1533
case Op::OpImageQueryOrder: *hasResult = true; *hasResultType = true; break;
1534
case Op::OpImageQuerySizeLod: *hasResult = true; *hasResultType = true; break;
1535
case Op::OpImageQuerySize: *hasResult = true; *hasResultType = true; break;
1536
case Op::OpImageQueryLod: *hasResult = true; *hasResultType = true; break;
1537
case Op::OpImageQueryLevels: *hasResult = true; *hasResultType = true; break;
1538
case Op::OpImageQuerySamples: *hasResult = true; *hasResultType = true; break;
1539
case Op::OpConvertFToU: *hasResult = true; *hasResultType = true; break;
1540
case Op::OpConvertFToS: *hasResult = true; *hasResultType = true; break;
1541
case Op::OpConvertSToF: *hasResult = true; *hasResultType = true; break;
1542
case Op::OpConvertUToF: *hasResult = true; *hasResultType = true; break;
1543
case Op::OpUConvert: *hasResult = true; *hasResultType = true; break;
1544
case Op::OpSConvert: *hasResult = true; *hasResultType = true; break;
1545
case Op::OpFConvert: *hasResult = true; *hasResultType = true; break;
1546
case Op::OpQuantizeToF16: *hasResult = true; *hasResultType = true; break;
1547
case Op::OpConvertPtrToU: *hasResult = true; *hasResultType = true; break;
1548
case Op::OpSatConvertSToU: *hasResult = true; *hasResultType = true; break;
1549
case Op::OpSatConvertUToS: *hasResult = true; *hasResultType = true; break;
1550
case Op::OpConvertUToPtr: *hasResult = true; *hasResultType = true; break;
1551
case Op::OpPtrCastToGeneric: *hasResult = true; *hasResultType = true; break;
1552
case Op::OpGenericCastToPtr: *hasResult = true; *hasResultType = true; break;
1553
case Op::OpGenericCastToPtrExplicit: *hasResult = true; *hasResultType = true; break;
1554
case Op::OpBitcast: *hasResult = true; *hasResultType = true; break;
1555
case Op::OpSNegate: *hasResult = true; *hasResultType = true; break;
1556
case Op::OpFNegate: *hasResult = true; *hasResultType = true; break;
1557
case Op::OpIAdd: *hasResult = true; *hasResultType = true; break;
1558
case Op::OpFAdd: *hasResult = true; *hasResultType = true; break;
1559
case Op::OpISub: *hasResult = true; *hasResultType = true; break;
1560
case Op::OpFSub: *hasResult = true; *hasResultType = true; break;
1561
case Op::OpIMul: *hasResult = true; *hasResultType = true; break;
1562
case Op::OpFMul: *hasResult = true; *hasResultType = true; break;
1563
case Op::OpUDiv: *hasResult = true; *hasResultType = true; break;
1564
case Op::OpSDiv: *hasResult = true; *hasResultType = true; break;
1565
case Op::OpFDiv: *hasResult = true; *hasResultType = true; break;
1566
case Op::OpUMod: *hasResult = true; *hasResultType = true; break;
1567
case Op::OpSRem: *hasResult = true; *hasResultType = true; break;
1568
case Op::OpSMod: *hasResult = true; *hasResultType = true; break;
1569
case Op::OpFRem: *hasResult = true; *hasResultType = true; break;
1570
case Op::OpFMod: *hasResult = true; *hasResultType = true; break;
1571
case Op::OpVectorTimesScalar: *hasResult = true; *hasResultType = true; break;
1572
case Op::OpMatrixTimesScalar: *hasResult = true; *hasResultType = true; break;
1573
case Op::OpVectorTimesMatrix: *hasResult = true; *hasResultType = true; break;
1574
case Op::OpMatrixTimesVector: *hasResult = true; *hasResultType = true; break;
1575
case Op::OpMatrixTimesMatrix: *hasResult = true; *hasResultType = true; break;
1576
case Op::OpOuterProduct: *hasResult = true; *hasResultType = true; break;
1577
case Op::OpDot: *hasResult = true; *hasResultType = true; break;
1578
case Op::OpIAddCarry: *hasResult = true; *hasResultType = true; break;
1579
case Op::OpISubBorrow: *hasResult = true; *hasResultType = true; break;
1580
case Op::OpUMulExtended: *hasResult = true; *hasResultType = true; break;
1581
case Op::OpSMulExtended: *hasResult = true; *hasResultType = true; break;
1582
case Op::OpAny: *hasResult = true; *hasResultType = true; break;
1583
case Op::OpAll: *hasResult = true; *hasResultType = true; break;
1584
case Op::OpIsNan: *hasResult = true; *hasResultType = true; break;
1585
case Op::OpIsInf: *hasResult = true; *hasResultType = true; break;
1586
case Op::OpIsFinite: *hasResult = true; *hasResultType = true; break;
1587
case Op::OpIsNormal: *hasResult = true; *hasResultType = true; break;
1588
case Op::OpSignBitSet: *hasResult = true; *hasResultType = true; break;
1589
case Op::OpLessOrGreater: *hasResult = true; *hasResultType = true; break;
1590
case Op::OpOrdered: *hasResult = true; *hasResultType = true; break;
1591
case Op::OpUnordered: *hasResult = true; *hasResultType = true; break;
1592
case Op::OpLogicalEqual: *hasResult = true; *hasResultType = true; break;
1593
case Op::OpLogicalNotEqual: *hasResult = true; *hasResultType = true; break;
1594
case Op::OpLogicalOr: *hasResult = true; *hasResultType = true; break;
1595
case Op::OpLogicalAnd: *hasResult = true; *hasResultType = true; break;
1596
case Op::OpLogicalNot: *hasResult = true; *hasResultType = true; break;
1597
case Op::OpSelect: *hasResult = true; *hasResultType = true; break;
1598
case Op::OpIEqual: *hasResult = true; *hasResultType = true; break;
1599
case Op::OpINotEqual: *hasResult = true; *hasResultType = true; break;
1600
case Op::OpUGreaterThan: *hasResult = true; *hasResultType = true; break;
1601
case Op::OpSGreaterThan: *hasResult = true; *hasResultType = true; break;
1602
case Op::OpUGreaterThanEqual: *hasResult = true; *hasResultType = true; break;
1603
case Op::OpSGreaterThanEqual: *hasResult = true; *hasResultType = true; break;
1604
case Op::OpULessThan: *hasResult = true; *hasResultType = true; break;
1605
case Op::OpSLessThan: *hasResult = true; *hasResultType = true; break;
1606
case Op::OpULessThanEqual: *hasResult = true; *hasResultType = true; break;
1607
case Op::OpSLessThanEqual: *hasResult = true; *hasResultType = true; break;
1608
case Op::OpFOrdEqual: *hasResult = true; *hasResultType = true; break;
1609
case Op::OpFUnordEqual: *hasResult = true; *hasResultType = true; break;
1610
case Op::OpFOrdNotEqual: *hasResult = true; *hasResultType = true; break;
1611
case Op::OpFUnordNotEqual: *hasResult = true; *hasResultType = true; break;
1612
case Op::OpFOrdLessThan: *hasResult = true; *hasResultType = true; break;
1613
case Op::OpFUnordLessThan: *hasResult = true; *hasResultType = true; break;
1614
case Op::OpFOrdGreaterThan: *hasResult = true; *hasResultType = true; break;
1615
case Op::OpFUnordGreaterThan: *hasResult = true; *hasResultType = true; break;
1616
case Op::OpFOrdLessThanEqual: *hasResult = true; *hasResultType = true; break;
1617
case Op::OpFUnordLessThanEqual: *hasResult = true; *hasResultType = true; break;
1618
case Op::OpFOrdGreaterThanEqual: *hasResult = true; *hasResultType = true; break;
1619
case Op::OpFUnordGreaterThanEqual: *hasResult = true; *hasResultType = true; break;
1620
case Op::OpShiftRightLogical: *hasResult = true; *hasResultType = true; break;
1621
case Op::OpShiftRightArithmetic: *hasResult = true; *hasResultType = true; break;
1622
case Op::OpShiftLeftLogical: *hasResult = true; *hasResultType = true; break;
1623
case Op::OpBitwiseOr: *hasResult = true; *hasResultType = true; break;
1624
case Op::OpBitwiseXor: *hasResult = true; *hasResultType = true; break;
1625
case Op::OpBitwiseAnd: *hasResult = true; *hasResultType = true; break;
1626
case Op::OpNot: *hasResult = true; *hasResultType = true; break;
1627
case Op::OpBitFieldInsert: *hasResult = true; *hasResultType = true; break;
1628
case Op::OpBitFieldSExtract: *hasResult = true; *hasResultType = true; break;
1629
case Op::OpBitFieldUExtract: *hasResult = true; *hasResultType = true; break;
1630
case Op::OpBitReverse: *hasResult = true; *hasResultType = true; break;
1631
case Op::OpBitCount: *hasResult = true; *hasResultType = true; break;
1632
case Op::OpDPdx: *hasResult = true; *hasResultType = true; break;
1633
case Op::OpDPdy: *hasResult = true; *hasResultType = true; break;
1634
case Op::OpFwidth: *hasResult = true; *hasResultType = true; break;
1635
case Op::OpDPdxFine: *hasResult = true; *hasResultType = true; break;
1636
case Op::OpDPdyFine: *hasResult = true; *hasResultType = true; break;
1637
case Op::OpFwidthFine: *hasResult = true; *hasResultType = true; break;
1638
case Op::OpDPdxCoarse: *hasResult = true; *hasResultType = true; break;
1639
case Op::OpDPdyCoarse: *hasResult = true; *hasResultType = true; break;
1640
case Op::OpFwidthCoarse: *hasResult = true; *hasResultType = true; break;
1641
case Op::OpEmitVertex: *hasResult = false; *hasResultType = false; break;
1642
case Op::OpEndPrimitive: *hasResult = false; *hasResultType = false; break;
1643
case Op::OpEmitStreamVertex: *hasResult = false; *hasResultType = false; break;
1644
case Op::OpEndStreamPrimitive: *hasResult = false; *hasResultType = false; break;
1645
case Op::OpControlBarrier: *hasResult = false; *hasResultType = false; break;
1646
case Op::OpMemoryBarrier: *hasResult = false; *hasResultType = false; break;
1647
case Op::OpAtomicLoad: *hasResult = true; *hasResultType = true; break;
1648
case Op::OpAtomicStore: *hasResult = false; *hasResultType = false; break;
1649
case Op::OpAtomicExchange: *hasResult = true; *hasResultType = true; break;
1650
case Op::OpAtomicCompareExchange: *hasResult = true; *hasResultType = true; break;
1651
case Op::OpAtomicCompareExchangeWeak: *hasResult = true; *hasResultType = true; break;
1652
case Op::OpAtomicIIncrement: *hasResult = true; *hasResultType = true; break;
1653
case Op::OpAtomicIDecrement: *hasResult = true; *hasResultType = true; break;
1654
case Op::OpAtomicIAdd: *hasResult = true; *hasResultType = true; break;
1655
case Op::OpAtomicISub: *hasResult = true; *hasResultType = true; break;
1656
case Op::OpAtomicSMin: *hasResult = true; *hasResultType = true; break;
1657
case Op::OpAtomicUMin: *hasResult = true; *hasResultType = true; break;
1658
case Op::OpAtomicSMax: *hasResult = true; *hasResultType = true; break;
1659
case Op::OpAtomicUMax: *hasResult = true; *hasResultType = true; break;
1660
case Op::OpAtomicAnd: *hasResult = true; *hasResultType = true; break;
1661
case Op::OpAtomicOr: *hasResult = true; *hasResultType = true; break;
1662
case Op::OpAtomicXor: *hasResult = true; *hasResultType = true; break;
1663
case Op::OpPhi: *hasResult = true; *hasResultType = true; break;
1664
case Op::OpLoopMerge: *hasResult = false; *hasResultType = false; break;
1665
case Op::OpSelectionMerge: *hasResult = false; *hasResultType = false; break;
1666
case Op::OpLabel: *hasResult = true; *hasResultType = false; break;
1667
case Op::OpBranch: *hasResult = false; *hasResultType = false; break;
1668
case Op::OpBranchConditional: *hasResult = false; *hasResultType = false; break;
1669
case Op::OpSwitch: *hasResult = false; *hasResultType = false; break;
1670
case Op::OpKill: *hasResult = false; *hasResultType = false; break;
1671
case Op::OpReturn: *hasResult = false; *hasResultType = false; break;
1672
case Op::OpReturnValue: *hasResult = false; *hasResultType = false; break;
1673
case Op::OpUnreachable: *hasResult = false; *hasResultType = false; break;
1674
case Op::OpLifetimeStart: *hasResult = false; *hasResultType = false; break;
1675
case Op::OpLifetimeStop: *hasResult = false; *hasResultType = false; break;
1676
case Op::OpGroupAsyncCopy: *hasResult = true; *hasResultType = true; break;
1677
case Op::OpGroupWaitEvents: *hasResult = false; *hasResultType = false; break;
1678
case Op::OpGroupAll: *hasResult = true; *hasResultType = true; break;
1679
case Op::OpGroupAny: *hasResult = true; *hasResultType = true; break;
1680
case Op::OpGroupBroadcast: *hasResult = true; *hasResultType = true; break;
1681
case Op::OpGroupIAdd: *hasResult = true; *hasResultType = true; break;
1682
case Op::OpGroupFAdd: *hasResult = true; *hasResultType = true; break;
1683
case Op::OpGroupFMin: *hasResult = true; *hasResultType = true; break;
1684
case Op::OpGroupUMin: *hasResult = true; *hasResultType = true; break;
1685
case Op::OpGroupSMin: *hasResult = true; *hasResultType = true; break;
1686
case Op::OpGroupFMax: *hasResult = true; *hasResultType = true; break;
1687
case Op::OpGroupUMax: *hasResult = true; *hasResultType = true; break;
1688
case Op::OpGroupSMax: *hasResult = true; *hasResultType = true; break;
1689
case Op::OpReadPipe: *hasResult = true; *hasResultType = true; break;
1690
case Op::OpWritePipe: *hasResult = true; *hasResultType = true; break;
1691
case Op::OpReservedReadPipe: *hasResult = true; *hasResultType = true; break;
1692
case Op::OpReservedWritePipe: *hasResult = true; *hasResultType = true; break;
1693
case Op::OpReserveReadPipePackets: *hasResult = true; *hasResultType = true; break;
1694
case Op::OpReserveWritePipePackets: *hasResult = true; *hasResultType = true; break;
1695
case Op::OpCommitReadPipe: *hasResult = false; *hasResultType = false; break;
1696
case Op::OpCommitWritePipe: *hasResult = false; *hasResultType = false; break;
1697
case Op::OpIsValidReserveId: *hasResult = true; *hasResultType = true; break;
1698
case Op::OpGetNumPipePackets: *hasResult = true; *hasResultType = true; break;
1699
case Op::OpGetMaxPipePackets: *hasResult = true; *hasResultType = true; break;
1700
case Op::OpGroupReserveReadPipePackets: *hasResult = true; *hasResultType = true; break;
1701
case Op::OpGroupReserveWritePipePackets: *hasResult = true; *hasResultType = true; break;
1702
case Op::OpGroupCommitReadPipe: *hasResult = false; *hasResultType = false; break;
1703
case Op::OpGroupCommitWritePipe: *hasResult = false; *hasResultType = false; break;
1704
case Op::OpEnqueueMarker: *hasResult = true; *hasResultType = true; break;
1705
case Op::OpEnqueueKernel: *hasResult = true; *hasResultType = true; break;
1706
case Op::OpGetKernelNDrangeSubGroupCount: *hasResult = true; *hasResultType = true; break;
1707
case Op::OpGetKernelNDrangeMaxSubGroupSize: *hasResult = true; *hasResultType = true; break;
1708
case Op::OpGetKernelWorkGroupSize: *hasResult = true; *hasResultType = true; break;
1709
case Op::OpGetKernelPreferredWorkGroupSizeMultiple: *hasResult = true; *hasResultType = true; break;
1710
case Op::OpRetainEvent: *hasResult = false; *hasResultType = false; break;
1711
case Op::OpReleaseEvent: *hasResult = false; *hasResultType = false; break;
1712
case Op::OpCreateUserEvent: *hasResult = true; *hasResultType = true; break;
1713
case Op::OpIsValidEvent: *hasResult = true; *hasResultType = true; break;
1714
case Op::OpSetUserEventStatus: *hasResult = false; *hasResultType = false; break;
1715
case Op::OpCaptureEventProfilingInfo: *hasResult = false; *hasResultType = false; break;
1716
case Op::OpGetDefaultQueue: *hasResult = true; *hasResultType = true; break;
1717
case Op::OpBuildNDRange: *hasResult = true; *hasResultType = true; break;
1718
case Op::OpImageSparseSampleImplicitLod: *hasResult = true; *hasResultType = true; break;
1719
case Op::OpImageSparseSampleExplicitLod: *hasResult = true; *hasResultType = true; break;
1720
case Op::OpImageSparseSampleDrefImplicitLod: *hasResult = true; *hasResultType = true; break;
1721
case Op::OpImageSparseSampleDrefExplicitLod: *hasResult = true; *hasResultType = true; break;
1722
case Op::OpImageSparseSampleProjImplicitLod: *hasResult = true; *hasResultType = true; break;
1723
case Op::OpImageSparseSampleProjExplicitLod: *hasResult = true; *hasResultType = true; break;
1724
case Op::OpImageSparseSampleProjDrefImplicitLod: *hasResult = true; *hasResultType = true; break;
1725
case Op::OpImageSparseSampleProjDrefExplicitLod: *hasResult = true; *hasResultType = true; break;
1726
case Op::OpImageSparseFetch: *hasResult = true; *hasResultType = true; break;
1727
case Op::OpImageSparseGather: *hasResult = true; *hasResultType = true; break;
1728
case Op::OpImageSparseDrefGather: *hasResult = true; *hasResultType = true; break;
1729
case Op::OpImageSparseTexelsResident: *hasResult = true; *hasResultType = true; break;
1730
case Op::OpNoLine: *hasResult = false; *hasResultType = false; break;
1731
case Op::OpAtomicFlagTestAndSet: *hasResult = true; *hasResultType = true; break;
1732
case Op::OpAtomicFlagClear: *hasResult = false; *hasResultType = false; break;
1733
case Op::OpImageSparseRead: *hasResult = true; *hasResultType = true; break;
1734
case Op::OpSizeOf: *hasResult = true; *hasResultType = true; break;
1735
case Op::OpTypePipeStorage: *hasResult = true; *hasResultType = false; break;
1736
case Op::OpConstantPipeStorage: *hasResult = true; *hasResultType = true; break;
1737
case Op::OpCreatePipeFromPipeStorage: *hasResult = true; *hasResultType = true; break;
1738
case Op::OpGetKernelLocalSizeForSubgroupCount: *hasResult = true; *hasResultType = true; break;
1739
case Op::OpGetKernelMaxNumSubgroups: *hasResult = true; *hasResultType = true; break;
1740
case Op::OpTypeNamedBarrier: *hasResult = true; *hasResultType = false; break;
1741
case Op::OpNamedBarrierInitialize: *hasResult = true; *hasResultType = true; break;
1742
case Op::OpMemoryNamedBarrier: *hasResult = false; *hasResultType = false; break;
1743
case Op::OpModuleProcessed: *hasResult = false; *hasResultType = false; break;
1744
case Op::OpExecutionModeId: *hasResult = false; *hasResultType = false; break;
1745
case Op::OpDecorateId: *hasResult = false; *hasResultType = false; break;
1746
case Op::OpGroupNonUniformElect: *hasResult = true; *hasResultType = true; break;
1747
case Op::OpGroupNonUniformAll: *hasResult = true; *hasResultType = true; break;
1748
case Op::OpGroupNonUniformAny: *hasResult = true; *hasResultType = true; break;
1749
case Op::OpGroupNonUniformAllEqual: *hasResult = true; *hasResultType = true; break;
1750
case Op::OpGroupNonUniformBroadcast: *hasResult = true; *hasResultType = true; break;
1751
case Op::OpGroupNonUniformBroadcastFirst: *hasResult = true; *hasResultType = true; break;
1752
case Op::OpGroupNonUniformBallot: *hasResult = true; *hasResultType = true; break;
1753
case Op::OpGroupNonUniformInverseBallot: *hasResult = true; *hasResultType = true; break;
1754
case Op::OpGroupNonUniformBallotBitExtract: *hasResult = true; *hasResultType = true; break;
1755
case Op::OpGroupNonUniformBallotBitCount: *hasResult = true; *hasResultType = true; break;
1756
case Op::OpGroupNonUniformBallotFindLSB: *hasResult = true; *hasResultType = true; break;
1757
case Op::OpGroupNonUniformBallotFindMSB: *hasResult = true; *hasResultType = true; break;
1758
case Op::OpGroupNonUniformShuffle: *hasResult = true; *hasResultType = true; break;
1759
case Op::OpGroupNonUniformShuffleXor: *hasResult = true; *hasResultType = true; break;
1760
case Op::OpGroupNonUniformShuffleUp: *hasResult = true; *hasResultType = true; break;
1761
case Op::OpGroupNonUniformShuffleDown: *hasResult = true; *hasResultType = true; break;
1762
case Op::OpGroupNonUniformIAdd: *hasResult = true; *hasResultType = true; break;
1763
case Op::OpGroupNonUniformFAdd: *hasResult = true; *hasResultType = true; break;
1764
case Op::OpGroupNonUniformIMul: *hasResult = true; *hasResultType = true; break;
1765
case Op::OpGroupNonUniformFMul: *hasResult = true; *hasResultType = true; break;
1766
case Op::OpGroupNonUniformSMin: *hasResult = true; *hasResultType = true; break;
1767
case Op::OpGroupNonUniformUMin: *hasResult = true; *hasResultType = true; break;
1768
case Op::OpGroupNonUniformFMin: *hasResult = true; *hasResultType = true; break;
1769
case Op::OpGroupNonUniformSMax: *hasResult = true; *hasResultType = true; break;
1770
case Op::OpGroupNonUniformUMax: *hasResult = true; *hasResultType = true; break;
1771
case Op::OpGroupNonUniformFMax: *hasResult = true; *hasResultType = true; break;
1772
case Op::OpGroupNonUniformBitwiseAnd: *hasResult = true; *hasResultType = true; break;
1773
case Op::OpGroupNonUniformBitwiseOr: *hasResult = true; *hasResultType = true; break;
1774
case Op::OpGroupNonUniformBitwiseXor: *hasResult = true; *hasResultType = true; break;
1775
case Op::OpGroupNonUniformLogicalAnd: *hasResult = true; *hasResultType = true; break;
1776
case Op::OpGroupNonUniformLogicalOr: *hasResult = true; *hasResultType = true; break;
1777
case Op::OpGroupNonUniformLogicalXor: *hasResult = true; *hasResultType = true; break;
1778
case Op::OpGroupNonUniformQuadBroadcast: *hasResult = true; *hasResultType = true; break;
1779
case Op::OpGroupNonUniformQuadSwap: *hasResult = true; *hasResultType = true; break;
1780
case Op::OpCopyLogical: *hasResult = true; *hasResultType = true; break;
1781
case Op::OpPtrEqual: *hasResult = true; *hasResultType = true; break;
1782
case Op::OpPtrNotEqual: *hasResult = true; *hasResultType = true; break;
1783
case Op::OpPtrDiff: *hasResult = true; *hasResultType = true; break;
1784
case Op::OpSubgroupBallotKHR: *hasResult = true; *hasResultType = true; break;
1785
case Op::OpSubgroupFirstInvocationKHR: *hasResult = true; *hasResultType = true; break;
1786
case Op::OpSubgroupAllKHR: *hasResult = true; *hasResultType = true; break;
1787
case Op::OpSubgroupAnyKHR: *hasResult = true; *hasResultType = true; break;
1788
case Op::OpSubgroupAllEqualKHR: *hasResult = true; *hasResultType = true; break;
1789
case Op::OpSubgroupReadInvocationKHR: *hasResult = true; *hasResultType = true; break;
1790
case Op::OpGroupIAddNonUniformAMD: *hasResult = true; *hasResultType = true; break;
1791
case Op::OpGroupFAddNonUniformAMD: *hasResult = true; *hasResultType = true; break;
1792
case Op::OpGroupFMinNonUniformAMD: *hasResult = true; *hasResultType = true; break;
1793
case Op::OpGroupUMinNonUniformAMD: *hasResult = true; *hasResultType = true; break;
1794
case Op::OpGroupSMinNonUniformAMD: *hasResult = true; *hasResultType = true; break;
1795
case Op::OpGroupFMaxNonUniformAMD: *hasResult = true; *hasResultType = true; break;
1796
case Op::OpGroupUMaxNonUniformAMD: *hasResult = true; *hasResultType = true; break;
1797
case Op::OpGroupSMaxNonUniformAMD: *hasResult = true; *hasResultType = true; break;
1798
case Op::OpFragmentMaskFetchAMD: *hasResult = true; *hasResultType = true; break;
1799
case Op::OpFragmentFetchAMD: *hasResult = true; *hasResultType = true; break;
1800
case Op::OpReadClockKHR: *hasResult = true; *hasResultType = true; break;
1801
case Op::OpImageSampleFootprintNV: *hasResult = true; *hasResultType = true; break;
1802
case Op::OpGroupNonUniformPartitionNV: *hasResult = true; *hasResultType = true; break;
1803
case Op::OpWritePackedPrimitiveIndices4x8NV: *hasResult = false; *hasResultType = false; break;
1804
case Op::OpReportIntersectionNV: *hasResult = true; *hasResultType = true; break;
1805
case Op::OpIgnoreIntersectionNV: *hasResult = false; *hasResultType = false; break;
1806
case Op::OpTerminateRayNV: *hasResult = false; *hasResultType = false; break;
1807
case Op::OpTraceNV: *hasResult = false; *hasResultType = false; break;
1808
case Op::OpTypeAccelerationStructureNV: *hasResult = true; *hasResultType = false; break;
1809
case Op::OpExecuteCallableNV: *hasResult = false; *hasResultType = false; break;
1810
case Op::OpTypeCooperativeMatrixNV: *hasResult = true; *hasResultType = false; break;
1811
case Op::OpCooperativeMatrixLoadNV: *hasResult = true; *hasResultType = true; break;
1812
case Op::OpCooperativeMatrixStoreNV: *hasResult = false; *hasResultType = false; break;
1813
case Op::OpCooperativeMatrixMulAddNV: *hasResult = true; *hasResultType = true; break;
1814
case Op::OpCooperativeMatrixLengthNV: *hasResult = true; *hasResultType = true; break;
1815
case Op::OpBeginInvocationInterlockEXT: *hasResult = false; *hasResultType = false; break;
1816
case Op::OpEndInvocationInterlockEXT: *hasResult = false; *hasResultType = false; break;
1817
case Op::OpDemoteToHelperInvocationEXT: *hasResult = false; *hasResultType = false; break;
1818
case Op::OpIsHelperInvocationEXT: *hasResult = true; *hasResultType = true; break;
1819
case Op::OpSubgroupShuffleINTEL: *hasResult = true; *hasResultType = true; break;
1820
case Op::OpSubgroupShuffleDownINTEL: *hasResult = true; *hasResultType = true; break;
1821
case Op::OpSubgroupShuffleUpINTEL: *hasResult = true; *hasResultType = true; break;
1822
case Op::OpSubgroupShuffleXorINTEL: *hasResult = true; *hasResultType = true; break;
1823
case Op::OpSubgroupBlockReadINTEL: *hasResult = true; *hasResultType = true; break;
1824
case Op::OpSubgroupBlockWriteINTEL: *hasResult = false; *hasResultType = false; break;
1825
case Op::OpSubgroupImageBlockReadINTEL: *hasResult = true; *hasResultType = true; break;
1826
case Op::OpSubgroupImageBlockWriteINTEL: *hasResult = false; *hasResultType = false; break;
1827
case Op::OpSubgroupImageMediaBlockReadINTEL: *hasResult = true; *hasResultType = true; break;
1828
case Op::OpSubgroupImageMediaBlockWriteINTEL: *hasResult = false; *hasResultType = false; break;
1829
case Op::OpUCountLeadingZerosINTEL: *hasResult = true; *hasResultType = true; break;
1830
case Op::OpUCountTrailingZerosINTEL: *hasResult = true; *hasResultType = true; break;
1831
case Op::OpAbsISubINTEL: *hasResult = true; *hasResultType = true; break;
1832
case Op::OpAbsUSubINTEL: *hasResult = true; *hasResultType = true; break;
1833
case Op::OpIAddSatINTEL: *hasResult = true; *hasResultType = true; break;
1834
case Op::OpUAddSatINTEL: *hasResult = true; *hasResultType = true; break;
1835
case Op::OpIAverageINTEL: *hasResult = true; *hasResultType = true; break;
1836
case Op::OpUAverageINTEL: *hasResult = true; *hasResultType = true; break;
1837
case Op::OpIAverageRoundedINTEL: *hasResult = true; *hasResultType = true; break;
1838
case Op::OpUAverageRoundedINTEL: *hasResult = true; *hasResultType = true; break;
1839
case Op::OpISubSatINTEL: *hasResult = true; *hasResultType = true; break;
1840
case Op::OpUSubSatINTEL: *hasResult = true; *hasResultType = true; break;
1841
case Op::OpIMul32x16INTEL: *hasResult = true; *hasResultType = true; break;
1842
case Op::OpUMul32x16INTEL: *hasResult = true; *hasResultType = true; break;
1843
case Op::OpDecorateString: *hasResult = false; *hasResultType = false; break;
1844
case Op::OpMemberDecorateString: *hasResult = false; *hasResultType = false; break;
1845
case Op::OpVmeImageINTEL: *hasResult = true; *hasResultType = true; break;
1846
case Op::OpTypeVmeImageINTEL: *hasResult = true; *hasResultType = false; break;
1847
case Op::OpTypeAvcImePayloadINTEL: *hasResult = true; *hasResultType = false; break;
1848
case Op::OpTypeAvcRefPayloadINTEL: *hasResult = true; *hasResultType = false; break;
1849
case Op::OpTypeAvcSicPayloadINTEL: *hasResult = true; *hasResultType = false; break;
1850
case Op::OpTypeAvcMcePayloadINTEL: *hasResult = true; *hasResultType = false; break;
1851
case Op::OpTypeAvcMceResultINTEL: *hasResult = true; *hasResultType = false; break;
1852
case Op::OpTypeAvcImeResultINTEL: *hasResult = true; *hasResultType = false; break;
1853
case Op::OpTypeAvcImeResultSingleReferenceStreamoutINTEL: *hasResult = true; *hasResultType = false; break;
1854
case Op::OpTypeAvcImeResultDualReferenceStreamoutINTEL: *hasResult = true; *hasResultType = false; break;
1855
case Op::OpTypeAvcImeSingleReferenceStreaminINTEL: *hasResult = true; *hasResultType = false; break;
1856
case Op::OpTypeAvcImeDualReferenceStreaminINTEL: *hasResult = true; *hasResultType = false; break;
1857
case Op::OpTypeAvcRefResultINTEL: *hasResult = true; *hasResultType = false; break;
1858
case Op::OpTypeAvcSicResultINTEL: *hasResult = true; *hasResultType = false; break;
1859
case Op::OpSubgroupAvcMceGetDefaultInterBaseMultiReferencePenaltyINTEL: *hasResult = true; *hasResultType = true; break;
1860
case Op::OpSubgroupAvcMceSetInterBaseMultiReferencePenaltyINTEL: *hasResult = true; *hasResultType = true; break;
1861
case Op::OpSubgroupAvcMceGetDefaultInterShapePenaltyINTEL: *hasResult = true; *hasResultType = true; break;
1862
case Op::OpSubgroupAvcMceSetInterShapePenaltyINTEL: *hasResult = true; *hasResultType = true; break;
1863
case Op::OpSubgroupAvcMceGetDefaultInterDirectionPenaltyINTEL: *hasResult = true; *hasResultType = true; break;
1864
case Op::OpSubgroupAvcMceSetInterDirectionPenaltyINTEL: *hasResult = true; *hasResultType = true; break;
1865
case Op::OpSubgroupAvcMceGetDefaultIntraLumaShapePenaltyINTEL: *hasResult = true; *hasResultType = true; break;
1866
case Op::OpSubgroupAvcMceGetDefaultInterMotionVectorCostTableINTEL: *hasResult = true; *hasResultType = true; break;
1867
case Op::OpSubgroupAvcMceGetDefaultHighPenaltyCostTableINTEL: *hasResult = true; *hasResultType = true; break;
1868
case Op::OpSubgroupAvcMceGetDefaultMediumPenaltyCostTableINTEL: *hasResult = true; *hasResultType = true; break;
1869
case Op::OpSubgroupAvcMceGetDefaultLowPenaltyCostTableINTEL: *hasResult = true; *hasResultType = true; break;
1870
case Op::OpSubgroupAvcMceSetMotionVectorCostFunctionINTEL: *hasResult = true; *hasResultType = true; break;
1871
case Op::OpSubgroupAvcMceGetDefaultIntraLumaModePenaltyINTEL: *hasResult = true; *hasResultType = true; break;
1872
case Op::OpSubgroupAvcMceGetDefaultNonDcLumaIntraPenaltyINTEL: *hasResult = true; *hasResultType = true; break;
1873
case Op::OpSubgroupAvcMceGetDefaultIntraChromaModeBasePenaltyINTEL: *hasResult = true; *hasResultType = true; break;
1874
case Op::OpSubgroupAvcMceSetAcOnlyHaarINTEL: *hasResult = true; *hasResultType = true; break;
1875
case Op::OpSubgroupAvcMceSetSourceInterlacedFieldPolarityINTEL: *hasResult = true; *hasResultType = true; break;
1876
case Op::OpSubgroupAvcMceSetSingleReferenceInterlacedFieldPolarityINTEL: *hasResult = true; *hasResultType = true; break;
1877
case Op::OpSubgroupAvcMceSetDualReferenceInterlacedFieldPolaritiesINTEL: *hasResult = true; *hasResultType = true; break;
1878
case Op::OpSubgroupAvcMceConvertToImePayloadINTEL: *hasResult = true; *hasResultType = true; break;
1879
case Op::OpSubgroupAvcMceConvertToImeResultINTEL: *hasResult = true; *hasResultType = true; break;
1880
case Op::OpSubgroupAvcMceConvertToRefPayloadINTEL: *hasResult = true; *hasResultType = true; break;
1881
case Op::OpSubgroupAvcMceConvertToRefResultINTEL: *hasResult = true; *hasResultType = true; break;
1882
case Op::OpSubgroupAvcMceConvertToSicPayloadINTEL: *hasResult = true; *hasResultType = true; break;
1883
case Op::OpSubgroupAvcMceConvertToSicResultINTEL: *hasResult = true; *hasResultType = true; break;
1884
case Op::OpSubgroupAvcMceGetMotionVectorsINTEL: *hasResult = true; *hasResultType = true; break;
1885
case Op::OpSubgroupAvcMceGetInterDistortionsINTEL: *hasResult = true; *hasResultType = true; break;
1886
case Op::OpSubgroupAvcMceGetBestInterDistortionsINTEL: *hasResult = true; *hasResultType = true; break;
1887
case Op::OpSubgroupAvcMceGetInterMajorShapeINTEL: *hasResult = true; *hasResultType = true; break;
1888
case Op::OpSubgroupAvcMceGetInterMinorShapeINTEL: *hasResult = true; *hasResultType = true; break;
1889
case Op::OpSubgroupAvcMceGetInterDirectionsINTEL: *hasResult = true; *hasResultType = true; break;
1890
case Op::OpSubgroupAvcMceGetInterMotionVectorCountINTEL: *hasResult = true; *hasResultType = true; break;
1891
case Op::OpSubgroupAvcMceGetInterReferenceIdsINTEL: *hasResult = true; *hasResultType = true; break;
1892
case Op::OpSubgroupAvcMceGetInterReferenceInterlacedFieldPolaritiesINTEL: *hasResult = true; *hasResultType = true; break;
1893
case Op::OpSubgroupAvcImeInitializeINTEL: *hasResult = true; *hasResultType = true; break;
1894
case Op::OpSubgroupAvcImeSetSingleReferenceINTEL: *hasResult = true; *hasResultType = true; break;
1895
case Op::OpSubgroupAvcImeSetDualReferenceINTEL: *hasResult = true; *hasResultType = true; break;
1896
case Op::OpSubgroupAvcImeRefWindowSizeINTEL: *hasResult = true; *hasResultType = true; break;
1897
case Op::OpSubgroupAvcImeAdjustRefOffsetINTEL: *hasResult = true; *hasResultType = true; break;
1898
case Op::OpSubgroupAvcImeConvertToMcePayloadINTEL: *hasResult = true; *hasResultType = true; break;
1899
case Op::OpSubgroupAvcImeSetMaxMotionVectorCountINTEL: *hasResult = true; *hasResultType = true; break;
1900
case Op::OpSubgroupAvcImeSetUnidirectionalMixDisableINTEL: *hasResult = true; *hasResultType = true; break;
1901
case Op::OpSubgroupAvcImeSetEarlySearchTerminationThresholdINTEL: *hasResult = true; *hasResultType = true; break;
1902
case Op::OpSubgroupAvcImeSetWeightedSadINTEL: *hasResult = true; *hasResultType = true; break;
1903
case Op::OpSubgroupAvcImeEvaluateWithSingleReferenceINTEL: *hasResult = true; *hasResultType = true; break;
1904
case Op::OpSubgroupAvcImeEvaluateWithDualReferenceINTEL: *hasResult = true; *hasResultType = true; break;
1905
case Op::OpSubgroupAvcImeEvaluateWithSingleReferenceStreaminINTEL: *hasResult = true; *hasResultType = true; break;
1906
case Op::OpSubgroupAvcImeEvaluateWithDualReferenceStreaminINTEL: *hasResult = true; *hasResultType = true; break;
1907
case Op::OpSubgroupAvcImeEvaluateWithSingleReferenceStreamoutINTEL: *hasResult = true; *hasResultType = true; break;
1908
case Op::OpSubgroupAvcImeEvaluateWithDualReferenceStreamoutINTEL: *hasResult = true; *hasResultType = true; break;
1909
case Op::OpSubgroupAvcImeEvaluateWithSingleReferenceStreaminoutINTEL: *hasResult = true; *hasResultType = true; break;
1910
case Op::OpSubgroupAvcImeEvaluateWithDualReferenceStreaminoutINTEL: *hasResult = true; *hasResultType = true; break;
1911
case Op::OpSubgroupAvcImeConvertToMceResultINTEL: *hasResult = true; *hasResultType = true; break;
1912
case Op::OpSubgroupAvcImeGetSingleReferenceStreaminINTEL: *hasResult = true; *hasResultType = true; break;
1913
case Op::OpSubgroupAvcImeGetDualReferenceStreaminINTEL: *hasResult = true; *hasResultType = true; break;
1914
case Op::OpSubgroupAvcImeStripSingleReferenceStreamoutINTEL: *hasResult = true; *hasResultType = true; break;
1915
case Op::OpSubgroupAvcImeStripDualReferenceStreamoutINTEL: *hasResult = true; *hasResultType = true; break;
1916
case Op::OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeMotionVectorsINTEL: *hasResult = true; *hasResultType = true; break;
1917
case Op::OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeDistortionsINTEL: *hasResult = true; *hasResultType = true; break;
1918
case Op::OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeReferenceIdsINTEL: *hasResult = true; *hasResultType = true; break;
1919
case Op::OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeMotionVectorsINTEL: *hasResult = true; *hasResultType = true; break;
1920
case Op::OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeDistortionsINTEL: *hasResult = true; *hasResultType = true; break;
1921
case Op::OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeReferenceIdsINTEL: *hasResult = true; *hasResultType = true; break;
1922
case Op::OpSubgroupAvcImeGetBorderReachedINTEL: *hasResult = true; *hasResultType = true; break;
1923
case Op::OpSubgroupAvcImeGetTruncatedSearchIndicationINTEL: *hasResult = true; *hasResultType = true; break;
1924
case Op::OpSubgroupAvcImeGetUnidirectionalEarlySearchTerminationINTEL: *hasResult = true; *hasResultType = true; break;
1925
case Op::OpSubgroupAvcImeGetWeightingPatternMinimumMotionVectorINTEL: *hasResult = true; *hasResultType = true; break;
1926
case Op::OpSubgroupAvcImeGetWeightingPatternMinimumDistortionINTEL: *hasResult = true; *hasResultType = true; break;
1927
case Op::OpSubgroupAvcFmeInitializeINTEL: *hasResult = true; *hasResultType = true; break;
1928
case Op::OpSubgroupAvcBmeInitializeINTEL: *hasResult = true; *hasResultType = true; break;
1929
case Op::OpSubgroupAvcRefConvertToMcePayloadINTEL: *hasResult = true; *hasResultType = true; break;
1930
case Op::OpSubgroupAvcRefSetBidirectionalMixDisableINTEL: *hasResult = true; *hasResultType = true; break;
1931
case Op::OpSubgroupAvcRefSetBilinearFilterEnableINTEL: *hasResult = true; *hasResultType = true; break;
1932
case Op::OpSubgroupAvcRefEvaluateWithSingleReferenceINTEL: *hasResult = true; *hasResultType = true; break;
1933
case Op::OpSubgroupAvcRefEvaluateWithDualReferenceINTEL: *hasResult = true; *hasResultType = true; break;
1934
case Op::OpSubgroupAvcRefEvaluateWithMultiReferenceINTEL: *hasResult = true; *hasResultType = true; break;
1935
case Op::OpSubgroupAvcRefEvaluateWithMultiReferenceInterlacedINTEL: *hasResult = true; *hasResultType = true; break;
1936
case Op::OpSubgroupAvcRefConvertToMceResultINTEL: *hasResult = true; *hasResultType = true; break;
1937
case Op::OpSubgroupAvcSicInitializeINTEL: *hasResult = true; *hasResultType = true; break;
1938
case Op::OpSubgroupAvcSicConfigureSkcINTEL: *hasResult = true; *hasResultType = true; break;
1939
case Op::OpSubgroupAvcSicConfigureIpeLumaINTEL: *hasResult = true; *hasResultType = true; break;
1940
case Op::OpSubgroupAvcSicConfigureIpeLumaChromaINTEL: *hasResult = true; *hasResultType = true; break;
1941
case Op::OpSubgroupAvcSicGetMotionVectorMaskINTEL: *hasResult = true; *hasResultType = true; break;
1942
case Op::OpSubgroupAvcSicConvertToMcePayloadINTEL: *hasResult = true; *hasResultType = true; break;
1943
case Op::OpSubgroupAvcSicSetIntraLumaShapePenaltyINTEL: *hasResult = true; *hasResultType = true; break;
1944
case Op::OpSubgroupAvcSicSetIntraLumaModeCostFunctionINTEL: *hasResult = true; *hasResultType = true; break;
1945
case Op::OpSubgroupAvcSicSetIntraChromaModeCostFunctionINTEL: *hasResult = true; *hasResultType = true; break;
1946
case Op::OpSubgroupAvcSicSetBilinearFilterEnableINTEL: *hasResult = true; *hasResultType = true; break;
1947
case Op::OpSubgroupAvcSicSetSkcForwardTransformEnableINTEL: *hasResult = true; *hasResultType = true; break;
1948
case Op::OpSubgroupAvcSicSetBlockBasedRawSkipSadINTEL: *hasResult = true; *hasResultType = true; break;
1949
case Op::OpSubgroupAvcSicEvaluateIpeINTEL: *hasResult = true; *hasResultType = true; break;
1950
case Op::OpSubgroupAvcSicEvaluateWithSingleReferenceINTEL: *hasResult = true; *hasResultType = true; break;
1951
case Op::OpSubgroupAvcSicEvaluateWithDualReferenceINTEL: *hasResult = true; *hasResultType = true; break;
1952
case Op::OpSubgroupAvcSicEvaluateWithMultiReferenceINTEL: *hasResult = true; *hasResultType = true; break;
1953
case Op::OpSubgroupAvcSicEvaluateWithMultiReferenceInterlacedINTEL: *hasResult = true; *hasResultType = true; break;
1954
case Op::OpSubgroupAvcSicConvertToMceResultINTEL: *hasResult = true; *hasResultType = true; break;
1955
case Op::OpSubgroupAvcSicGetIpeLumaShapeINTEL: *hasResult = true; *hasResultType = true; break;
1956
case Op::OpSubgroupAvcSicGetBestIpeLumaDistortionINTEL: *hasResult = true; *hasResultType = true; break;
1957
case Op::OpSubgroupAvcSicGetBestIpeChromaDistortionINTEL: *hasResult = true; *hasResultType = true; break;
1958
case Op::OpSubgroupAvcSicGetPackedIpeLumaModesINTEL: *hasResult = true; *hasResultType = true; break;
1959
case Op::OpSubgroupAvcSicGetIpeChromaModeINTEL: *hasResult = true; *hasResultType = true; break;
1960
case Op::OpSubgroupAvcSicGetPackedSkcLumaCountThresholdINTEL: *hasResult = true; *hasResultType = true; break;
1961
case Op::OpSubgroupAvcSicGetPackedSkcLumaSumThresholdINTEL: *hasResult = true; *hasResultType = true; break;
1962
case Op::OpSubgroupAvcSicGetInterRawSadsINTEL: *hasResult = true; *hasResultType = true; break;
1965
#endif /* SPV_ENABLE_UTILITY_CODE */
1967
// Overload operator| for mask bit combining
1969
inline ImageOperandsMask operator|(ImageOperandsMask a, ImageOperandsMask b) { return ImageOperandsMask(unsigned(a) | unsigned(b)); }
1970
inline FPFastMathModeMask operator|(FPFastMathModeMask a, FPFastMathModeMask b) { return FPFastMathModeMask(unsigned(a) | unsigned(b)); }
1971
inline SelectionControlMask operator|(SelectionControlMask a, SelectionControlMask b) { return SelectionControlMask(unsigned(a) | unsigned(b)); }
1972
inline LoopControlMask operator|(LoopControlMask a, LoopControlMask b) { return LoopControlMask(unsigned(a) | unsigned(b)); }
1973
inline FunctionControlMask operator|(FunctionControlMask a, FunctionControlMask b) { return FunctionControlMask(unsigned(a) | unsigned(b)); }
1974
inline MemorySemanticsMask operator|(MemorySemanticsMask a, MemorySemanticsMask b) { return MemorySemanticsMask(unsigned(a) | unsigned(b)); }
1975
inline MemoryAccessMask operator|(MemoryAccessMask a, MemoryAccessMask b) { return MemoryAccessMask(unsigned(a) | unsigned(b)); }
1976
inline KernelProfilingInfoMask operator|(KernelProfilingInfoMask a, KernelProfilingInfoMask b) { return KernelProfilingInfoMask(unsigned(a) | unsigned(b)); }
1978
} // end namespace spv
1980
#endif // #ifndef spirv_HPP