1/*
2** Copyright (c) 2014-2020 The Khronos Group Inc.
3**
4** Permission is hereby granted, free of charge, to any person obtaining a copy
5** of this software and/or associated documentation files (the "Materials"),
6** to deal in the Materials without restriction, including without limitation
7** the rights to use, copy, modify, merge, publish, distribute, sublicense,
8** and/or sell copies of the Materials, and to permit persons to whom the
9** Materials are furnished to do so, subject to the following conditions:
10**
11** The above copyright notice and this permission notice shall be included in
12** all copies or substantial portions of the Materials.
13**
14** MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS KHRONOS
15** STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS SPECIFICATIONS AND
16** HEADER INFORMATION ARE LOCATED AT https://www.khronos.org/registry/
17**
18** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
19** OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20** FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
21** THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
22** LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
23** FROM,OUT OF OR IN CONNECTION WITH THE MATERIALS OR THE USE OR OTHER DEALINGS
24** IN THE MATERIALS.
25*/
26
27/*
28** This header is automatically generated by the same tool that creates
29** the Binary Section of the SPIR-V specification.
30*/
31
32/*
33** Enumeration tokens for SPIR-V, in various styles:
34** C, C++, C++11, JSON, Lua, Python, C#, D
35**
36** - C will have tokens with a "Spv" prefix, e.g.: SpvSourceLanguageGLSL
37** - C++ will have tokens in the "spv" name space, e.g.: spv::SourceLanguageGLSL
38** - C++11 will use enum classes in the spv namespace, e.g.: spv::SourceLanguage::GLSL
39** - Lua will use tables, e.g.: spv.SourceLanguage.GLSL
40** - Python will use dictionaries, e.g.: spv['SourceLanguage']['GLSL']
41** - C# will use enum classes in the Specification class located in the "Spv" namespace,
42** e.g.: Spv.Specification.SourceLanguage.GLSL
43** - D will have tokens under the "spv" module, e.g: spv.SourceLanguage.GLSL
44**
45** Some tokens act like mask values, which can be OR'd together,
46** while others are mutually exclusive. The mask-like ones have
47** "Mask" in their name, and a parallel enum that has the shift
48** amount (1 << x) for each corresponding enumerant.
49*/
50
51#ifndef spirv_H
52#define spirv_H
53
54typedef unsigned int SpvId;
55
56#define SPV_VERSION 0x10500
57#define SPV_REVISION 1
58
59static const unsigned int SpvMagicNumber = 0x07230203;
60static const unsigned int SpvVersion = 0x00010500;
61static const unsigned int SpvRevision = 1;
62static const unsigned int SpvOpCodeMask = 0xffff;
63static const unsigned int SpvWordCountShift = 16;
64
65typedef enum SpvSourceLanguage_ {
66 SpvSourceLanguageUnknown = 0,
67 SpvSourceLanguageESSL = 1,
68 SpvSourceLanguageGLSL = 2,
69 SpvSourceLanguageOpenCL_C = 3,
70 SpvSourceLanguageOpenCL_CPP = 4,
71 SpvSourceLanguageHLSL = 5,
72 SpvSourceLanguageMax = 0x7fffffff,
73} SpvSourceLanguage;
74
75typedef enum SpvExecutionModel_ {
76 SpvExecutionModelVertex = 0,
77 SpvExecutionModelTessellationControl = 1,
78 SpvExecutionModelTessellationEvaluation = 2,
79 SpvExecutionModelGeometry = 3,
80 SpvExecutionModelFragment = 4,
81 SpvExecutionModelGLCompute = 5,
82 SpvExecutionModelKernel = 6,
83 SpvExecutionModelTaskNV = 5267,
84 SpvExecutionModelMeshNV = 5268,
85 SpvExecutionModelRayGenerationKHR = 5313,
86 SpvExecutionModelRayGenerationNV = 5313,
87 SpvExecutionModelIntersectionKHR = 5314,
88 SpvExecutionModelIntersectionNV = 5314,
89 SpvExecutionModelAnyHitKHR = 5315,
90 SpvExecutionModelAnyHitNV = 5315,
91 SpvExecutionModelClosestHitKHR = 5316,
92 SpvExecutionModelClosestHitNV = 5316,
93 SpvExecutionModelMissKHR = 5317,
94 SpvExecutionModelMissNV = 5317,
95 SpvExecutionModelCallableKHR = 5318,
96 SpvExecutionModelCallableNV = 5318,
97 SpvExecutionModelMax = 0x7fffffff,
98} SpvExecutionModel;
99
100typedef enum SpvAddressingModel_ {
101 SpvAddressingModelLogical = 0,
102 SpvAddressingModelPhysical32 = 1,
103 SpvAddressingModelPhysical64 = 2,
104 SpvAddressingModelPhysicalStorageBuffer64 = 5348,
105 SpvAddressingModelPhysicalStorageBuffer64EXT = 5348,
106 SpvAddressingModelMax = 0x7fffffff,
107} SpvAddressingModel;
108
109typedef enum SpvMemoryModel_ {
110 SpvMemoryModelSimple = 0,
111 SpvMemoryModelGLSL450 = 1,
112 SpvMemoryModelOpenCL = 2,
113 SpvMemoryModelVulkan = 3,
114 SpvMemoryModelVulkanKHR = 3,
115 SpvMemoryModelMax = 0x7fffffff,
116} SpvMemoryModel;
117
118typedef enum SpvExecutionMode_ {
119 SpvExecutionModeInvocations = 0,
120 SpvExecutionModeSpacingEqual = 1,
121 SpvExecutionModeSpacingFractionalEven = 2,
122 SpvExecutionModeSpacingFractionalOdd = 3,
123 SpvExecutionModeVertexOrderCw = 4,
124 SpvExecutionModeVertexOrderCcw = 5,
125 SpvExecutionModePixelCenterInteger = 6,
126 SpvExecutionModeOriginUpperLeft = 7,
127 SpvExecutionModeOriginLowerLeft = 8,
128 SpvExecutionModeEarlyFragmentTests = 9,
129 SpvExecutionModePointMode = 10,
130 SpvExecutionModeXfb = 11,
131 SpvExecutionModeDepthReplacing = 12,
132 SpvExecutionModeDepthGreater = 14,
133 SpvExecutionModeDepthLess = 15,
134 SpvExecutionModeDepthUnchanged = 16,
135 SpvExecutionModeLocalSize = 17,
136 SpvExecutionModeLocalSizeHint = 18,
137 SpvExecutionModeInputPoints = 19,
138 SpvExecutionModeInputLines = 20,
139 SpvExecutionModeInputLinesAdjacency = 21,
140 SpvExecutionModeTriangles = 22,
141 SpvExecutionModeInputTrianglesAdjacency = 23,
142 SpvExecutionModeQuads = 24,
143 SpvExecutionModeIsolines = 25,
144 SpvExecutionModeOutputVertices = 26,
145 SpvExecutionModeOutputPoints = 27,
146 SpvExecutionModeOutputLineStrip = 28,
147 SpvExecutionModeOutputTriangleStrip = 29,
148 SpvExecutionModeVecTypeHint = 30,
149 SpvExecutionModeContractionOff = 31,
150 SpvExecutionModeInitializer = 33,
151 SpvExecutionModeFinalizer = 34,
152 SpvExecutionModeSubgroupSize = 35,
153 SpvExecutionModeSubgroupsPerWorkgroup = 36,
154 SpvExecutionModeSubgroupsPerWorkgroupId = 37,
155 SpvExecutionModeLocalSizeId = 38,
156 SpvExecutionModeLocalSizeHintId = 39,
157 SpvExecutionModePostDepthCoverage = 4446,
158 SpvExecutionModeDenormPreserve = 4459,
159 SpvExecutionModeDenormFlushToZero = 4460,
160 SpvExecutionModeSignedZeroInfNanPreserve = 4461,
161 SpvExecutionModeRoundingModeRTE = 4462,
162 SpvExecutionModeRoundingModeRTZ = 4463,
163 SpvExecutionModeStencilRefReplacingEXT = 5027,
164 SpvExecutionModeOutputLinesNV = 5269,
165 SpvExecutionModeOutputPrimitivesNV = 5270,
166 SpvExecutionModeDerivativeGroupQuadsNV = 5289,
167 SpvExecutionModeDerivativeGroupLinearNV = 5290,
168 SpvExecutionModeOutputTrianglesNV = 5298,
169 SpvExecutionModePixelInterlockOrderedEXT = 5366,
170 SpvExecutionModePixelInterlockUnorderedEXT = 5367,
171 SpvExecutionModeSampleInterlockOrderedEXT = 5368,
172 SpvExecutionModeSampleInterlockUnorderedEXT = 5369,
173 SpvExecutionModeShadingRateInterlockOrderedEXT = 5370,
174 SpvExecutionModeShadingRateInterlockUnorderedEXT = 5371,
175 SpvExecutionModeMax = 0x7fffffff,
176} SpvExecutionMode;
177
178typedef enum SpvStorageClass_ {
179 SpvStorageClassUniformConstant = 0,
180 SpvStorageClassInput = 1,
181 SpvStorageClassUniform = 2,
182 SpvStorageClassOutput = 3,
183 SpvStorageClassWorkgroup = 4,
184 SpvStorageClassCrossWorkgroup = 5,
185 SpvStorageClassPrivate = 6,
186 SpvStorageClassFunction = 7,
187 SpvStorageClassGeneric = 8,
188 SpvStorageClassPushConstant = 9,
189 SpvStorageClassAtomicCounter = 10,
190 SpvStorageClassImage = 11,
191 SpvStorageClassStorageBuffer = 12,
192 SpvStorageClassCallableDataKHR = 5328,
193 SpvStorageClassCallableDataNV = 5328,
194 SpvStorageClassIncomingCallableDataKHR = 5329,
195 SpvStorageClassIncomingCallableDataNV = 5329,
196 SpvStorageClassRayPayloadKHR = 5338,
197 SpvStorageClassRayPayloadNV = 5338,
198 SpvStorageClassHitAttributeKHR = 5339,
199 SpvStorageClassHitAttributeNV = 5339,
200 SpvStorageClassIncomingRayPayloadKHR = 5342,
201 SpvStorageClassIncomingRayPayloadNV = 5342,
202 SpvStorageClassShaderRecordBufferKHR = 5343,
203 SpvStorageClassShaderRecordBufferNV = 5343,
204 SpvStorageClassPhysicalStorageBuffer = 5349,
205 SpvStorageClassPhysicalStorageBufferEXT = 5349,
206 SpvStorageClassMax = 0x7fffffff,
207} SpvStorageClass;
208
209typedef enum SpvDim_ {
210 SpvDim1D = 0,
211 SpvDim2D = 1,
212 SpvDim3D = 2,
213 SpvDimCube = 3,
214 SpvDimRect = 4,
215 SpvDimBuffer = 5,
216 SpvDimSubpassData = 6,
217 SpvDimMax = 0x7fffffff,
218} SpvDim;
219
220typedef enum SpvSamplerAddressingMode_ {
221 SpvSamplerAddressingModeNone = 0,
222 SpvSamplerAddressingModeClampToEdge = 1,
223 SpvSamplerAddressingModeClamp = 2,
224 SpvSamplerAddressingModeRepeat = 3,
225 SpvSamplerAddressingModeRepeatMirrored = 4,
226 SpvSamplerAddressingModeMax = 0x7fffffff,
227} SpvSamplerAddressingMode;
228
229typedef enum SpvSamplerFilterMode_ {
230 SpvSamplerFilterModeNearest = 0,
231 SpvSamplerFilterModeLinear = 1,
232 SpvSamplerFilterModeMax = 0x7fffffff,
233} SpvSamplerFilterMode;
234
235typedef enum SpvImageFormat_ {
236 SpvImageFormatUnknown = 0,
237 SpvImageFormatRgba32f = 1,
238 SpvImageFormatRgba16f = 2,
239 SpvImageFormatR32f = 3,
240 SpvImageFormatRgba8 = 4,
241 SpvImageFormatRgba8Snorm = 5,
242 SpvImageFormatRg32f = 6,
243 SpvImageFormatRg16f = 7,
244 SpvImageFormatR11fG11fB10f = 8,
245 SpvImageFormatR16f = 9,
246 SpvImageFormatRgba16 = 10,
247 SpvImageFormatRgb10A2 = 11,
248 SpvImageFormatRg16 = 12,
249 SpvImageFormatRg8 = 13,
250 SpvImageFormatR16 = 14,
251 SpvImageFormatR8 = 15,
252 SpvImageFormatRgba16Snorm = 16,
253 SpvImageFormatRg16Snorm = 17,
254 SpvImageFormatRg8Snorm = 18,
255 SpvImageFormatR16Snorm = 19,
256 SpvImageFormatR8Snorm = 20,
257 SpvImageFormatRgba32i = 21,
258 SpvImageFormatRgba16i = 22,
259 SpvImageFormatRgba8i = 23,
260 SpvImageFormatR32i = 24,
261 SpvImageFormatRg32i = 25,
262 SpvImageFormatRg16i = 26,
263 SpvImageFormatRg8i = 27,
264 SpvImageFormatR16i = 28,
265 SpvImageFormatR8i = 29,
266 SpvImageFormatRgba32ui = 30,
267 SpvImageFormatRgba16ui = 31,
268 SpvImageFormatRgba8ui = 32,
269 SpvImageFormatR32ui = 33,
270 SpvImageFormatRgb10a2ui = 34,
271 SpvImageFormatRg32ui = 35,
272 SpvImageFormatRg16ui = 36,
273 SpvImageFormatRg8ui = 37,
274 SpvImageFormatR16ui = 38,
275 SpvImageFormatR8ui = 39,
276 SpvImageFormatMax = 0x7fffffff,
277} SpvImageFormat;
278
279typedef enum SpvImageChannelOrder_ {
280 SpvImageChannelOrderR = 0,
281 SpvImageChannelOrderA = 1,
282 SpvImageChannelOrderRG = 2,
283 SpvImageChannelOrderRA = 3,
284 SpvImageChannelOrderRGB = 4,
285 SpvImageChannelOrderRGBA = 5,
286 SpvImageChannelOrderBGRA = 6,
287 SpvImageChannelOrderARGB = 7,
288 SpvImageChannelOrderIntensity = 8,
289 SpvImageChannelOrderLuminance = 9,
290 SpvImageChannelOrderRx = 10,
291 SpvImageChannelOrderRGx = 11,
292 SpvImageChannelOrderRGBx = 12,
293 SpvImageChannelOrderDepth = 13,
294 SpvImageChannelOrderDepthStencil = 14,
295 SpvImageChannelOrdersRGB = 15,
296 SpvImageChannelOrdersRGBx = 16,
297 SpvImageChannelOrdersRGBA = 17,
298 SpvImageChannelOrdersBGRA = 18,
299 SpvImageChannelOrderABGR = 19,
300 SpvImageChannelOrderMax = 0x7fffffff,
301} SpvImageChannelOrder;
302
303typedef enum SpvImageChannelDataType_ {
304 SpvImageChannelDataTypeSnormInt8 = 0,
305 SpvImageChannelDataTypeSnormInt16 = 1,
306 SpvImageChannelDataTypeUnormInt8 = 2,
307 SpvImageChannelDataTypeUnormInt16 = 3,
308 SpvImageChannelDataTypeUnormShort565 = 4,
309 SpvImageChannelDataTypeUnormShort555 = 5,
310 SpvImageChannelDataTypeUnormInt101010 = 6,
311 SpvImageChannelDataTypeSignedInt8 = 7,
312 SpvImageChannelDataTypeSignedInt16 = 8,
313 SpvImageChannelDataTypeSignedInt32 = 9,
314 SpvImageChannelDataTypeUnsignedInt8 = 10,
315 SpvImageChannelDataTypeUnsignedInt16 = 11,
316 SpvImageChannelDataTypeUnsignedInt32 = 12,
317 SpvImageChannelDataTypeHalfFloat = 13,
318 SpvImageChannelDataTypeFloat = 14,
319 SpvImageChannelDataTypeUnormInt24 = 15,
320 SpvImageChannelDataTypeUnormInt101010_2 = 16,
321 SpvImageChannelDataTypeMax = 0x7fffffff,
322} SpvImageChannelDataType;
323
324typedef enum SpvImageOperandsShift_ {
325 SpvImageOperandsBiasShift = 0,
326 SpvImageOperandsLodShift = 1,
327 SpvImageOperandsGradShift = 2,
328 SpvImageOperandsConstOffsetShift = 3,
329 SpvImageOperandsOffsetShift = 4,
330 SpvImageOperandsConstOffsetsShift = 5,
331 SpvImageOperandsSampleShift = 6,
332 SpvImageOperandsMinLodShift = 7,
333 SpvImageOperandsMakeTexelAvailableShift = 8,
334 SpvImageOperandsMakeTexelAvailableKHRShift = 8,
335 SpvImageOperandsMakeTexelVisibleShift = 9,
336 SpvImageOperandsMakeTexelVisibleKHRShift = 9,
337 SpvImageOperandsNonPrivateTexelShift = 10,
338 SpvImageOperandsNonPrivateTexelKHRShift = 10,
339 SpvImageOperandsVolatileTexelShift = 11,
340 SpvImageOperandsVolatileTexelKHRShift = 11,
341 SpvImageOperandsSignExtendShift = 12,
342 SpvImageOperandsZeroExtendShift = 13,
343 SpvImageOperandsMax = 0x7fffffff,
344} SpvImageOperandsShift;
345
346typedef enum SpvImageOperandsMask_ {
347 SpvImageOperandsMaskNone = 0,
348 SpvImageOperandsBiasMask = 0x00000001,
349 SpvImageOperandsLodMask = 0x00000002,
350 SpvImageOperandsGradMask = 0x00000004,
351 SpvImageOperandsConstOffsetMask = 0x00000008,
352 SpvImageOperandsOffsetMask = 0x00000010,
353 SpvImageOperandsConstOffsetsMask = 0x00000020,
354 SpvImageOperandsSampleMask = 0x00000040,
355 SpvImageOperandsMinLodMask = 0x00000080,
356 SpvImageOperandsMakeTexelAvailableMask = 0x00000100,
357 SpvImageOperandsMakeTexelAvailableKHRMask = 0x00000100,
358 SpvImageOperandsMakeTexelVisibleMask = 0x00000200,
359 SpvImageOperandsMakeTexelVisibleKHRMask = 0x00000200,
360 SpvImageOperandsNonPrivateTexelMask = 0x00000400,
361 SpvImageOperandsNonPrivateTexelKHRMask = 0x00000400,
362 SpvImageOperandsVolatileTexelMask = 0x00000800,
363 SpvImageOperandsVolatileTexelKHRMask = 0x00000800,
364 SpvImageOperandsSignExtendMask = 0x00001000,
365 SpvImageOperandsZeroExtendMask = 0x00002000,
366} SpvImageOperandsMask;
367
368typedef enum SpvFPFastMathModeShift_ {
369 SpvFPFastMathModeNotNaNShift = 0,
370 SpvFPFastMathModeNotInfShift = 1,
371 SpvFPFastMathModeNSZShift = 2,
372 SpvFPFastMathModeAllowRecipShift = 3,
373 SpvFPFastMathModeFastShift = 4,
374 SpvFPFastMathModeMax = 0x7fffffff,
375} SpvFPFastMathModeShift;
376
377typedef enum SpvFPFastMathModeMask_ {
378 SpvFPFastMathModeMaskNone = 0,
379 SpvFPFastMathModeNotNaNMask = 0x00000001,
380 SpvFPFastMathModeNotInfMask = 0x00000002,
381 SpvFPFastMathModeNSZMask = 0x00000004,
382 SpvFPFastMathModeAllowRecipMask = 0x00000008,
383 SpvFPFastMathModeFastMask = 0x00000010,
384} SpvFPFastMathModeMask;
385
386typedef enum SpvFPRoundingMode_ {
387 SpvFPRoundingModeRTE = 0,
388 SpvFPRoundingModeRTZ = 1,
389 SpvFPRoundingModeRTP = 2,
390 SpvFPRoundingModeRTN = 3,
391 SpvFPRoundingModeMax = 0x7fffffff,
392} SpvFPRoundingMode;
393
394typedef enum SpvLinkageType_ {
395 SpvLinkageTypeExport = 0,
396 SpvLinkageTypeImport = 1,
397 SpvLinkageTypeMax = 0x7fffffff,
398} SpvLinkageType;
399
400typedef enum SpvAccessQualifier_ {
401 SpvAccessQualifierReadOnly = 0,
402 SpvAccessQualifierWriteOnly = 1,
403 SpvAccessQualifierReadWrite = 2,
404 SpvAccessQualifierMax = 0x7fffffff,
405} SpvAccessQualifier;
406
407typedef enum SpvFunctionParameterAttribute_ {
408 SpvFunctionParameterAttributeZext = 0,
409 SpvFunctionParameterAttributeSext = 1,
410 SpvFunctionParameterAttributeByVal = 2,
411 SpvFunctionParameterAttributeSret = 3,
412 SpvFunctionParameterAttributeNoAlias = 4,
413 SpvFunctionParameterAttributeNoCapture = 5,
414 SpvFunctionParameterAttributeNoWrite = 6,
415 SpvFunctionParameterAttributeNoReadWrite = 7,
416 SpvFunctionParameterAttributeMax = 0x7fffffff,
417} SpvFunctionParameterAttribute;
418
419typedef enum SpvDecoration_ {
420 SpvDecorationRelaxedPrecision = 0,
421 SpvDecorationSpecId = 1,
422 SpvDecorationBlock = 2,
423 SpvDecorationBufferBlock = 3,
424 SpvDecorationRowMajor = 4,
425 SpvDecorationColMajor = 5,
426 SpvDecorationArrayStride = 6,
427 SpvDecorationMatrixStride = 7,
428 SpvDecorationGLSLShared = 8,
429 SpvDecorationGLSLPacked = 9,
430 SpvDecorationCPacked = 10,
431 SpvDecorationBuiltIn = 11,
432 SpvDecorationNoPerspective = 13,
433 SpvDecorationFlat = 14,
434 SpvDecorationPatch = 15,
435 SpvDecorationCentroid = 16,
436 SpvDecorationSample = 17,
437 SpvDecorationInvariant = 18,
438 SpvDecorationRestrict = 19,
439 SpvDecorationAliased = 20,
440 SpvDecorationVolatile = 21,
441 SpvDecorationConstant = 22,
442 SpvDecorationCoherent = 23,
443 SpvDecorationNonWritable = 24,
444 SpvDecorationNonReadable = 25,
445 SpvDecorationUniform = 26,
446 SpvDecorationUniformId = 27,
447 SpvDecorationSaturatedConversion = 28,
448 SpvDecorationStream = 29,
449 SpvDecorationLocation = 30,
450 SpvDecorationComponent = 31,
451 SpvDecorationIndex = 32,
452 SpvDecorationBinding = 33,
453 SpvDecorationDescriptorSet = 34,
454 SpvDecorationOffset = 35,
455 SpvDecorationXfbBuffer = 36,
456 SpvDecorationXfbStride = 37,
457 SpvDecorationFuncParamAttr = 38,
458 SpvDecorationFPRoundingMode = 39,
459 SpvDecorationFPFastMathMode = 40,
460 SpvDecorationLinkageAttributes = 41,
461 SpvDecorationNoContraction = 42,
462 SpvDecorationInputAttachmentIndex = 43,
463 SpvDecorationAlignment = 44,
464 SpvDecorationMaxByteOffset = 45,
465 SpvDecorationAlignmentId = 46,
466 SpvDecorationMaxByteOffsetId = 47,
467 SpvDecorationNoSignedWrap = 4469,
468 SpvDecorationNoUnsignedWrap = 4470,
469 SpvDecorationExplicitInterpAMD = 4999,
470 SpvDecorationOverrideCoverageNV = 5248,
471 SpvDecorationPassthroughNV = 5250,
472 SpvDecorationViewportRelativeNV = 5252,
473 SpvDecorationSecondaryViewportRelativeNV = 5256,
474 SpvDecorationPerPrimitiveNV = 5271,
475 SpvDecorationPerViewNV = 5272,
476 SpvDecorationPerTaskNV = 5273,
477 SpvDecorationPerVertexNV = 5285,
478 SpvDecorationNonUniform = 5300,
479 SpvDecorationNonUniformEXT = 5300,
480 SpvDecorationRestrictPointer = 5355,
481 SpvDecorationRestrictPointerEXT = 5355,
482 SpvDecorationAliasedPointer = 5356,
483 SpvDecorationAliasedPointerEXT = 5356,
484 SpvDecorationCounterBuffer = 5634,
485 SpvDecorationHlslCounterBufferGOOGLE = 5634,
486 SpvDecorationHlslSemanticGOOGLE = 5635,
487 SpvDecorationUserSemantic = 5635,
488 SpvDecorationUserTypeGOOGLE = 5636,
489 SpvDecorationMax = 0x7fffffff,
490} SpvDecoration;
491
492typedef enum SpvBuiltIn_ {
493 SpvBuiltInPosition = 0,
494 SpvBuiltInPointSize = 1,
495 SpvBuiltInClipDistance = 3,
496 SpvBuiltInCullDistance = 4,
497 SpvBuiltInVertexId = 5,
498 SpvBuiltInInstanceId = 6,
499 SpvBuiltInPrimitiveId = 7,
500 SpvBuiltInInvocationId = 8,
501 SpvBuiltInLayer = 9,
502 SpvBuiltInViewportIndex = 10,
503 SpvBuiltInTessLevelOuter = 11,
504 SpvBuiltInTessLevelInner = 12,
505 SpvBuiltInTessCoord = 13,
506 SpvBuiltInPatchVertices = 14,
507 SpvBuiltInFragCoord = 15,
508 SpvBuiltInPointCoord = 16,
509 SpvBuiltInFrontFacing = 17,
510 SpvBuiltInSampleId = 18,
511 SpvBuiltInSamplePosition = 19,
512 SpvBuiltInSampleMask = 20,
513 SpvBuiltInFragDepth = 22,
514 SpvBuiltInHelperInvocation = 23,
515 SpvBuiltInNumWorkgroups = 24,
516 SpvBuiltInWorkgroupSize = 25,
517 SpvBuiltInWorkgroupId = 26,
518 SpvBuiltInLocalInvocationId = 27,
519 SpvBuiltInGlobalInvocationId = 28,
520 SpvBuiltInLocalInvocationIndex = 29,
521 SpvBuiltInWorkDim = 30,
522 SpvBuiltInGlobalSize = 31,
523 SpvBuiltInEnqueuedWorkgroupSize = 32,
524 SpvBuiltInGlobalOffset = 33,
525 SpvBuiltInGlobalLinearId = 34,
526 SpvBuiltInSubgroupSize = 36,
527 SpvBuiltInSubgroupMaxSize = 37,
528 SpvBuiltInNumSubgroups = 38,
529 SpvBuiltInNumEnqueuedSubgroups = 39,
530 SpvBuiltInSubgroupId = 40,
531 SpvBuiltInSubgroupLocalInvocationId = 41,
532 SpvBuiltInVertexIndex = 42,
533 SpvBuiltInInstanceIndex = 43,
534 SpvBuiltInSubgroupEqMask = 4416,
535 SpvBuiltInSubgroupEqMaskKHR = 4416,
536 SpvBuiltInSubgroupGeMask = 4417,
537 SpvBuiltInSubgroupGeMaskKHR = 4417,
538 SpvBuiltInSubgroupGtMask = 4418,
539 SpvBuiltInSubgroupGtMaskKHR = 4418,
540 SpvBuiltInSubgroupLeMask = 4419,
541 SpvBuiltInSubgroupLeMaskKHR = 4419,
542 SpvBuiltInSubgroupLtMask = 4420,
543 SpvBuiltInSubgroupLtMaskKHR = 4420,
544 SpvBuiltInBaseVertex = 4424,
545 SpvBuiltInBaseInstance = 4425,
546 SpvBuiltInDrawIndex = 4426,
547 SpvBuiltInDeviceIndex = 4438,
548 SpvBuiltInViewIndex = 4440,
549 SpvBuiltInBaryCoordNoPerspAMD = 4992,
550 SpvBuiltInBaryCoordNoPerspCentroidAMD = 4993,
551 SpvBuiltInBaryCoordNoPerspSampleAMD = 4994,
552 SpvBuiltInBaryCoordSmoothAMD = 4995,
553 SpvBuiltInBaryCoordSmoothCentroidAMD = 4996,
554 SpvBuiltInBaryCoordSmoothSampleAMD = 4997,
555 SpvBuiltInBaryCoordPullModelAMD = 4998,
556 SpvBuiltInFragStencilRefEXT = 5014,
557 SpvBuiltInViewportMaskNV = 5253,
558 SpvBuiltInSecondaryPositionNV = 5257,
559 SpvBuiltInSecondaryViewportMaskNV = 5258,
560 SpvBuiltInPositionPerViewNV = 5261,
561 SpvBuiltInViewportMaskPerViewNV = 5262,
562 SpvBuiltInFullyCoveredEXT = 5264,
563 SpvBuiltInTaskCountNV = 5274,
564 SpvBuiltInPrimitiveCountNV = 5275,
565 SpvBuiltInPrimitiveIndicesNV = 5276,
566 SpvBuiltInClipDistancePerViewNV = 5277,
567 SpvBuiltInCullDistancePerViewNV = 5278,
568 SpvBuiltInLayerPerViewNV = 5279,
569 SpvBuiltInMeshViewCountNV = 5280,
570 SpvBuiltInMeshViewIndicesNV = 5281,
571 SpvBuiltInBaryCoordNV = 5286,
572 SpvBuiltInBaryCoordNoPerspNV = 5287,
573 SpvBuiltInFragSizeEXT = 5292,
574 SpvBuiltInFragmentSizeNV = 5292,
575 SpvBuiltInFragInvocationCountEXT = 5293,
576 SpvBuiltInInvocationsPerPixelNV = 5293,
577 SpvBuiltInLaunchIdKHR = 5319,
578 SpvBuiltInLaunchIdNV = 5319,
579 SpvBuiltInLaunchSizeKHR = 5320,
580 SpvBuiltInLaunchSizeNV = 5320,
581 SpvBuiltInWorldRayOriginKHR = 5321,
582 SpvBuiltInWorldRayOriginNV = 5321,
583 SpvBuiltInWorldRayDirectionKHR = 5322,
584 SpvBuiltInWorldRayDirectionNV = 5322,
585 SpvBuiltInObjectRayOriginKHR = 5323,
586 SpvBuiltInObjectRayOriginNV = 5323,
587 SpvBuiltInObjectRayDirectionKHR = 5324,
588 SpvBuiltInObjectRayDirectionNV = 5324,
589 SpvBuiltInRayTminKHR = 5325,
590 SpvBuiltInRayTminNV = 5325,
591 SpvBuiltInRayTmaxKHR = 5326,
592 SpvBuiltInRayTmaxNV = 5326,
593 SpvBuiltInInstanceCustomIndexKHR = 5327,
594 SpvBuiltInInstanceCustomIndexNV = 5327,
595 SpvBuiltInObjectToWorldKHR = 5330,
596 SpvBuiltInObjectToWorldNV = 5330,
597 SpvBuiltInWorldToObjectKHR = 5331,
598 SpvBuiltInWorldToObjectNV = 5331,
599 SpvBuiltInHitTKHR = 5332,
600 SpvBuiltInHitTNV = 5332,
601 SpvBuiltInHitKindKHR = 5333,
602 SpvBuiltInHitKindNV = 5333,
603 SpvBuiltInIncomingRayFlagsKHR = 5351,
604 SpvBuiltInIncomingRayFlagsNV = 5351,
605 SpvBuiltInRayGeometryIndexKHR = 5352,
606 SpvBuiltInWarpsPerSMNV = 5374,
607 SpvBuiltInSMCountNV = 5375,
608 SpvBuiltInWarpIDNV = 5376,
609 SpvBuiltInSMIDNV = 5377,
610 SpvBuiltInMax = 0x7fffffff,
611} SpvBuiltIn;
612
613typedef enum SpvSelectionControlShift_ {
614 SpvSelectionControlFlattenShift = 0,
615 SpvSelectionControlDontFlattenShift = 1,
616 SpvSelectionControlMax = 0x7fffffff,
617} SpvSelectionControlShift;
618
619typedef enum SpvSelectionControlMask_ {
620 SpvSelectionControlMaskNone = 0,
621 SpvSelectionControlFlattenMask = 0x00000001,
622 SpvSelectionControlDontFlattenMask = 0x00000002,
623} SpvSelectionControlMask;
624
625typedef enum SpvLoopControlShift_ {
626 SpvLoopControlUnrollShift = 0,
627 SpvLoopControlDontUnrollShift = 1,
628 SpvLoopControlDependencyInfiniteShift = 2,
629 SpvLoopControlDependencyLengthShift = 3,
630 SpvLoopControlMinIterationsShift = 4,
631 SpvLoopControlMaxIterationsShift = 5,
632 SpvLoopControlIterationMultipleShift = 6,
633 SpvLoopControlPeelCountShift = 7,
634 SpvLoopControlPartialCountShift = 8,
635 SpvLoopControlMax = 0x7fffffff,
636} SpvLoopControlShift;
637
638typedef enum SpvLoopControlMask_ {
639 SpvLoopControlMaskNone = 0,
640 SpvLoopControlUnrollMask = 0x00000001,
641 SpvLoopControlDontUnrollMask = 0x00000002,
642 SpvLoopControlDependencyInfiniteMask = 0x00000004,
643 SpvLoopControlDependencyLengthMask = 0x00000008,
644 SpvLoopControlMinIterationsMask = 0x00000010,
645 SpvLoopControlMaxIterationsMask = 0x00000020,
646 SpvLoopControlIterationMultipleMask = 0x00000040,
647 SpvLoopControlPeelCountMask = 0x00000080,
648 SpvLoopControlPartialCountMask = 0x00000100,
649} SpvLoopControlMask;
650
651typedef enum SpvFunctionControlShift_ {
652 SpvFunctionControlInlineShift = 0,
653 SpvFunctionControlDontInlineShift = 1,
654 SpvFunctionControlPureShift = 2,
655 SpvFunctionControlConstShift = 3,
656 SpvFunctionControlMax = 0x7fffffff,
657} SpvFunctionControlShift;
658
659typedef enum SpvFunctionControlMask_ {
660 SpvFunctionControlMaskNone = 0,
661 SpvFunctionControlInlineMask = 0x00000001,
662 SpvFunctionControlDontInlineMask = 0x00000002,
663 SpvFunctionControlPureMask = 0x00000004,
664 SpvFunctionControlConstMask = 0x00000008,
665} SpvFunctionControlMask;
666
667typedef enum SpvMemorySemanticsShift_ {
668 SpvMemorySemanticsAcquireShift = 1,
669 SpvMemorySemanticsReleaseShift = 2,
670 SpvMemorySemanticsAcquireReleaseShift = 3,
671 SpvMemorySemanticsSequentiallyConsistentShift = 4,
672 SpvMemorySemanticsUniformMemoryShift = 6,
673 SpvMemorySemanticsSubgroupMemoryShift = 7,
674 SpvMemorySemanticsWorkgroupMemoryShift = 8,
675 SpvMemorySemanticsCrossWorkgroupMemoryShift = 9,
676 SpvMemorySemanticsAtomicCounterMemoryShift = 10,
677 SpvMemorySemanticsImageMemoryShift = 11,
678 SpvMemorySemanticsOutputMemoryShift = 12,
679 SpvMemorySemanticsOutputMemoryKHRShift = 12,
680 SpvMemorySemanticsMakeAvailableShift = 13,
681 SpvMemorySemanticsMakeAvailableKHRShift = 13,
682 SpvMemorySemanticsMakeVisibleShift = 14,
683 SpvMemorySemanticsMakeVisibleKHRShift = 14,
684 SpvMemorySemanticsVolatileShift = 15,
685 SpvMemorySemanticsMax = 0x7fffffff,
686} SpvMemorySemanticsShift;
687
688typedef enum SpvMemorySemanticsMask_ {
689 SpvMemorySemanticsMaskNone = 0,
690 SpvMemorySemanticsAcquireMask = 0x00000002,
691 SpvMemorySemanticsReleaseMask = 0x00000004,
692 SpvMemorySemanticsAcquireReleaseMask = 0x00000008,
693 SpvMemorySemanticsSequentiallyConsistentMask = 0x00000010,
694 SpvMemorySemanticsUniformMemoryMask = 0x00000040,
695 SpvMemorySemanticsSubgroupMemoryMask = 0x00000080,
696 SpvMemorySemanticsWorkgroupMemoryMask = 0x00000100,
697 SpvMemorySemanticsCrossWorkgroupMemoryMask = 0x00000200,
698 SpvMemorySemanticsAtomicCounterMemoryMask = 0x00000400,
699 SpvMemorySemanticsImageMemoryMask = 0x00000800,
700 SpvMemorySemanticsOutputMemoryMask = 0x00001000,
701 SpvMemorySemanticsOutputMemoryKHRMask = 0x00001000,
702 SpvMemorySemanticsMakeAvailableMask = 0x00002000,
703 SpvMemorySemanticsMakeAvailableKHRMask = 0x00002000,
704 SpvMemorySemanticsMakeVisibleMask = 0x00004000,
705 SpvMemorySemanticsMakeVisibleKHRMask = 0x00004000,
706 SpvMemorySemanticsVolatileMask = 0x00008000,
707} SpvMemorySemanticsMask;
708
709typedef enum SpvMemoryAccessShift_ {
710 SpvMemoryAccessVolatileShift = 0,
711 SpvMemoryAccessAlignedShift = 1,
712 SpvMemoryAccessNontemporalShift = 2,
713 SpvMemoryAccessMakePointerAvailableShift = 3,
714 SpvMemoryAccessMakePointerAvailableKHRShift = 3,
715 SpvMemoryAccessMakePointerVisibleShift = 4,
716 SpvMemoryAccessMakePointerVisibleKHRShift = 4,
717 SpvMemoryAccessNonPrivatePointerShift = 5,
718 SpvMemoryAccessNonPrivatePointerKHRShift = 5,
719 SpvMemoryAccessMax = 0x7fffffff,
720} SpvMemoryAccessShift;
721
722typedef enum SpvMemoryAccessMask_ {
723 SpvMemoryAccessMaskNone = 0,
724 SpvMemoryAccessVolatileMask = 0x00000001,
725 SpvMemoryAccessAlignedMask = 0x00000002,
726 SpvMemoryAccessNontemporalMask = 0x00000004,
727 SpvMemoryAccessMakePointerAvailableMask = 0x00000008,
728 SpvMemoryAccessMakePointerAvailableKHRMask = 0x00000008,
729 SpvMemoryAccessMakePointerVisibleMask = 0x00000010,
730 SpvMemoryAccessMakePointerVisibleKHRMask = 0x00000010,
731 SpvMemoryAccessNonPrivatePointerMask = 0x00000020,
732 SpvMemoryAccessNonPrivatePointerKHRMask = 0x00000020,
733} SpvMemoryAccessMask;
734
735typedef enum SpvScope_ {
736 SpvScopeCrossDevice = 0,
737 SpvScopeDevice = 1,
738 SpvScopeWorkgroup = 2,
739 SpvScopeSubgroup = 3,
740 SpvScopeInvocation = 4,
741 SpvScopeQueueFamily = 5,
742 SpvScopeQueueFamilyKHR = 5,
743 SpvScopeShaderCallKHR = 6,
744 SpvScopeMax = 0x7fffffff,
745} SpvScope;
746
747typedef enum SpvGroupOperation_ {
748 SpvGroupOperationReduce = 0,
749 SpvGroupOperationInclusiveScan = 1,
750 SpvGroupOperationExclusiveScan = 2,
751 SpvGroupOperationClusteredReduce = 3,
752 SpvGroupOperationPartitionedReduceNV = 6,
753 SpvGroupOperationPartitionedInclusiveScanNV = 7,
754 SpvGroupOperationPartitionedExclusiveScanNV = 8,
755 SpvGroupOperationMax = 0x7fffffff,
756} SpvGroupOperation;
757
758typedef enum SpvKernelEnqueueFlags_ {
759 SpvKernelEnqueueFlagsNoWait = 0,
760 SpvKernelEnqueueFlagsWaitKernel = 1,
761 SpvKernelEnqueueFlagsWaitWorkGroup = 2,
762 SpvKernelEnqueueFlagsMax = 0x7fffffff,
763} SpvKernelEnqueueFlags;
764
765typedef enum SpvKernelProfilingInfoShift_ {
766 SpvKernelProfilingInfoCmdExecTimeShift = 0,
767 SpvKernelProfilingInfoMax = 0x7fffffff,
768} SpvKernelProfilingInfoShift;
769
770typedef enum SpvKernelProfilingInfoMask_ {
771 SpvKernelProfilingInfoMaskNone = 0,
772 SpvKernelProfilingInfoCmdExecTimeMask = 0x00000001,
773} SpvKernelProfilingInfoMask;
774
775typedef enum SpvCapability_ {
776 SpvCapabilityMatrix = 0,
777 SpvCapabilityShader = 1,
778 SpvCapabilityGeometry = 2,
779 SpvCapabilityTessellation = 3,
780 SpvCapabilityAddresses = 4,
781 SpvCapabilityLinkage = 5,
782 SpvCapabilityKernel = 6,
783 SpvCapabilityVector16 = 7,
784 SpvCapabilityFloat16Buffer = 8,
785 SpvCapabilityFloat16 = 9,
786 SpvCapabilityFloat64 = 10,
787 SpvCapabilityInt64 = 11,
788 SpvCapabilityInt64Atomics = 12,
789 SpvCapabilityImageBasic = 13,
790 SpvCapabilityImageReadWrite = 14,
791 SpvCapabilityImageMipmap = 15,
792 SpvCapabilityPipes = 17,
793 SpvCapabilityGroups = 18,
794 SpvCapabilityDeviceEnqueue = 19,
795 SpvCapabilityLiteralSampler = 20,
796 SpvCapabilityAtomicStorage = 21,
797 SpvCapabilityInt16 = 22,
798 SpvCapabilityTessellationPointSize = 23,
799 SpvCapabilityGeometryPointSize = 24,
800 SpvCapabilityImageGatherExtended = 25,
801 SpvCapabilityStorageImageMultisample = 27,
802 SpvCapabilityUniformBufferArrayDynamicIndexing = 28,
803 SpvCapabilitySampledImageArrayDynamicIndexing = 29,
804 SpvCapabilityStorageBufferArrayDynamicIndexing = 30,
805 SpvCapabilityStorageImageArrayDynamicIndexing = 31,
806 SpvCapabilityClipDistance = 32,
807 SpvCapabilityCullDistance = 33,
808 SpvCapabilityImageCubeArray = 34,
809 SpvCapabilitySampleRateShading = 35,
810 SpvCapabilityImageRect = 36,
811 SpvCapabilitySampledRect = 37,
812 SpvCapabilityGenericPointer = 38,
813 SpvCapabilityInt8 = 39,
814 SpvCapabilityInputAttachment = 40,
815 SpvCapabilitySparseResidency = 41,
816 SpvCapabilityMinLod = 42,
817 SpvCapabilitySampled1D = 43,
818 SpvCapabilityImage1D = 44,
819 SpvCapabilitySampledCubeArray = 45,
820 SpvCapabilitySampledBuffer = 46,
821 SpvCapabilityImageBuffer = 47,
822 SpvCapabilityImageMSArray = 48,
823 SpvCapabilityStorageImageExtendedFormats = 49,
824 SpvCapabilityImageQuery = 50,
825 SpvCapabilityDerivativeControl = 51,
826 SpvCapabilityInterpolationFunction = 52,
827 SpvCapabilityTransformFeedback = 53,
828 SpvCapabilityGeometryStreams = 54,
829 SpvCapabilityStorageImageReadWithoutFormat = 55,
830 SpvCapabilityStorageImageWriteWithoutFormat = 56,
831 SpvCapabilityMultiViewport = 57,
832 SpvCapabilitySubgroupDispatch = 58,
833 SpvCapabilityNamedBarrier = 59,
834 SpvCapabilityPipeStorage = 60,
835 SpvCapabilityGroupNonUniform = 61,
836 SpvCapabilityGroupNonUniformVote = 62,
837 SpvCapabilityGroupNonUniformArithmetic = 63,
838 SpvCapabilityGroupNonUniformBallot = 64,
839 SpvCapabilityGroupNonUniformShuffle = 65,
840 SpvCapabilityGroupNonUniformShuffleRelative = 66,
841 SpvCapabilityGroupNonUniformClustered = 67,
842 SpvCapabilityGroupNonUniformQuad = 68,
843 SpvCapabilityShaderLayer = 69,
844 SpvCapabilityShaderViewportIndex = 70,
845 SpvCapabilitySubgroupBallotKHR = 4423,
846 SpvCapabilityDrawParameters = 4427,
847 SpvCapabilitySubgroupVoteKHR = 4431,
848 SpvCapabilityStorageBuffer16BitAccess = 4433,
849 SpvCapabilityStorageUniformBufferBlock16 = 4433,
850 SpvCapabilityStorageUniform16 = 4434,
851 SpvCapabilityUniformAndStorageBuffer16BitAccess = 4434,
852 SpvCapabilityStoragePushConstant16 = 4435,
853 SpvCapabilityStorageInputOutput16 = 4436,
854 SpvCapabilityDeviceGroup = 4437,
855 SpvCapabilityMultiView = 4439,
856 SpvCapabilityVariablePointersStorageBuffer = 4441,
857 SpvCapabilityVariablePointers = 4442,
858 SpvCapabilityAtomicStorageOps = 4445,
859 SpvCapabilitySampleMaskPostDepthCoverage = 4447,
860 SpvCapabilityStorageBuffer8BitAccess = 4448,
861 SpvCapabilityUniformAndStorageBuffer8BitAccess = 4449,
862 SpvCapabilityStoragePushConstant8 = 4450,
863 SpvCapabilityDenormPreserve = 4464,
864 SpvCapabilityDenormFlushToZero = 4465,
865 SpvCapabilitySignedZeroInfNanPreserve = 4466,
866 SpvCapabilityRoundingModeRTE = 4467,
867 SpvCapabilityRoundingModeRTZ = 4468,
868 SpvCapabilityRayQueryProvisionalKHR = 4471,
869 SpvCapabilityRayTraversalPrimitiveCullingProvisionalKHR = 4478,
870 SpvCapabilityFloat16ImageAMD = 5008,
871 SpvCapabilityImageGatherBiasLodAMD = 5009,
872 SpvCapabilityFragmentMaskAMD = 5010,
873 SpvCapabilityStencilExportEXT = 5013,
874 SpvCapabilityImageReadWriteLodAMD = 5015,
875 SpvCapabilityShaderClockKHR = 5055,
876 SpvCapabilitySampleMaskOverrideCoverageNV = 5249,
877 SpvCapabilityGeometryShaderPassthroughNV = 5251,
878 SpvCapabilityShaderViewportIndexLayerEXT = 5254,
879 SpvCapabilityShaderViewportIndexLayerNV = 5254,
880 SpvCapabilityShaderViewportMaskNV = 5255,
881 SpvCapabilityShaderStereoViewNV = 5259,
882 SpvCapabilityPerViewAttributesNV = 5260,
883 SpvCapabilityFragmentFullyCoveredEXT = 5265,
884 SpvCapabilityMeshShadingNV = 5266,
885 SpvCapabilityImageFootprintNV = 5282,
886 SpvCapabilityFragmentBarycentricNV = 5284,
887 SpvCapabilityComputeDerivativeGroupQuadsNV = 5288,
888 SpvCapabilityFragmentDensityEXT = 5291,
889 SpvCapabilityShadingRateNV = 5291,
890 SpvCapabilityGroupNonUniformPartitionedNV = 5297,
891 SpvCapabilityShaderNonUniform = 5301,
892 SpvCapabilityShaderNonUniformEXT = 5301,
893 SpvCapabilityRuntimeDescriptorArray = 5302,
894 SpvCapabilityRuntimeDescriptorArrayEXT = 5302,
895 SpvCapabilityInputAttachmentArrayDynamicIndexing = 5303,
896 SpvCapabilityInputAttachmentArrayDynamicIndexingEXT = 5303,
897 SpvCapabilityUniformTexelBufferArrayDynamicIndexing = 5304,
898 SpvCapabilityUniformTexelBufferArrayDynamicIndexingEXT = 5304,
899 SpvCapabilityStorageTexelBufferArrayDynamicIndexing = 5305,
900 SpvCapabilityStorageTexelBufferArrayDynamicIndexingEXT = 5305,
901 SpvCapabilityUniformBufferArrayNonUniformIndexing = 5306,
902 SpvCapabilityUniformBufferArrayNonUniformIndexingEXT = 5306,
903 SpvCapabilitySampledImageArrayNonUniformIndexing = 5307,
904 SpvCapabilitySampledImageArrayNonUniformIndexingEXT = 5307,
905 SpvCapabilityStorageBufferArrayNonUniformIndexing = 5308,
906 SpvCapabilityStorageBufferArrayNonUniformIndexingEXT = 5308,
907 SpvCapabilityStorageImageArrayNonUniformIndexing = 5309,
908 SpvCapabilityStorageImageArrayNonUniformIndexingEXT = 5309,
909 SpvCapabilityInputAttachmentArrayNonUniformIndexing = 5310,
910 SpvCapabilityInputAttachmentArrayNonUniformIndexingEXT = 5310,
911 SpvCapabilityUniformTexelBufferArrayNonUniformIndexing = 5311,
912 SpvCapabilityUniformTexelBufferArrayNonUniformIndexingEXT = 5311,
913 SpvCapabilityStorageTexelBufferArrayNonUniformIndexing = 5312,
914 SpvCapabilityStorageTexelBufferArrayNonUniformIndexingEXT = 5312,
915 SpvCapabilityRayTracingNV = 5340,
916 SpvCapabilityVulkanMemoryModel = 5345,
917 SpvCapabilityVulkanMemoryModelKHR = 5345,
918 SpvCapabilityVulkanMemoryModelDeviceScope = 5346,
919 SpvCapabilityVulkanMemoryModelDeviceScopeKHR = 5346,
920 SpvCapabilityPhysicalStorageBufferAddresses = 5347,
921 SpvCapabilityPhysicalStorageBufferAddressesEXT = 5347,
922 SpvCapabilityComputeDerivativeGroupLinearNV = 5350,
923 SpvCapabilityRayTracingProvisionalKHR = 5353,
924 SpvCapabilityCooperativeMatrixNV = 5357,
925 SpvCapabilityFragmentShaderSampleInterlockEXT = 5363,
926 SpvCapabilityFragmentShaderShadingRateInterlockEXT = 5372,
927 SpvCapabilityShaderSMBuiltinsNV = 5373,
928 SpvCapabilityFragmentShaderPixelInterlockEXT = 5378,
929 SpvCapabilityDemoteToHelperInvocationEXT = 5379,
930 SpvCapabilitySubgroupShuffleINTEL = 5568,
931 SpvCapabilitySubgroupBufferBlockIOINTEL = 5569,
932 SpvCapabilitySubgroupImageBlockIOINTEL = 5570,
933 SpvCapabilitySubgroupImageMediaBlockIOINTEL = 5579,
934 SpvCapabilityIntegerFunctions2INTEL = 5584,
935 SpvCapabilitySubgroupAvcMotionEstimationINTEL = 5696,
936 SpvCapabilitySubgroupAvcMotionEstimationIntraINTEL = 5697,
937 SpvCapabilitySubgroupAvcMotionEstimationChromaINTEL = 5698,
938 SpvCapabilityMax = 0x7fffffff,
939} SpvCapability;
940
941typedef enum SpvRayFlagsShift_ {
942 SpvRayFlagsOpaqueKHRShift = 0,
943 SpvRayFlagsNoOpaqueKHRShift = 1,
944 SpvRayFlagsTerminateOnFirstHitKHRShift = 2,
945 SpvRayFlagsSkipClosestHitShaderKHRShift = 3,
946 SpvRayFlagsCullBackFacingTrianglesKHRShift = 4,
947 SpvRayFlagsCullFrontFacingTrianglesKHRShift = 5,
948 SpvRayFlagsCullOpaqueKHRShift = 6,
949 SpvRayFlagsCullNoOpaqueKHRShift = 7,
950 SpvRayFlagsSkipTrianglesKHRShift = 8,
951 SpvRayFlagsSkipAABBsKHRShift = 9,
952 SpvRayFlagsMax = 0x7fffffff,
953} SpvRayFlagsShift;
954
955typedef enum SpvRayFlagsMask_ {
956 SpvRayFlagsMaskNone = 0,
957 SpvRayFlagsOpaqueKHRMask = 0x00000001,
958 SpvRayFlagsNoOpaqueKHRMask = 0x00000002,
959 SpvRayFlagsTerminateOnFirstHitKHRMask = 0x00000004,
960 SpvRayFlagsSkipClosestHitShaderKHRMask = 0x00000008,
961 SpvRayFlagsCullBackFacingTrianglesKHRMask = 0x00000010,
962 SpvRayFlagsCullFrontFacingTrianglesKHRMask = 0x00000020,
963 SpvRayFlagsCullOpaqueKHRMask = 0x00000040,
964 SpvRayFlagsCullNoOpaqueKHRMask = 0x00000080,
965 SpvRayFlagsSkipTrianglesKHRMask = 0x00000100,
966 SpvRayFlagsSkipAABBsKHRMask = 0x00000200,
967} SpvRayFlagsMask;
968
969typedef enum SpvRayQueryIntersection_ {
970 SpvRayQueryIntersectionRayQueryCandidateIntersectionKHR = 0,
971 SpvRayQueryIntersectionRayQueryCommittedIntersectionKHR = 1,
972 SpvRayQueryIntersectionMax = 0x7fffffff,
973} SpvRayQueryIntersection;
974
975typedef enum SpvRayQueryCommittedIntersectionType_ {
976 SpvRayQueryCommittedIntersectionTypeRayQueryCommittedIntersectionNoneKHR = 0,
977 SpvRayQueryCommittedIntersectionTypeRayQueryCommittedIntersectionTriangleKHR = 1,
978 SpvRayQueryCommittedIntersectionTypeRayQueryCommittedIntersectionGeneratedKHR = 2,
979 SpvRayQueryCommittedIntersectionTypeMax = 0x7fffffff,
980} SpvRayQueryCommittedIntersectionType;
981
982typedef enum SpvRayQueryCandidateIntersectionType_ {
983 SpvRayQueryCandidateIntersectionTypeRayQueryCandidateIntersectionTriangleKHR = 0,
984 SpvRayQueryCandidateIntersectionTypeRayQueryCandidateIntersectionAABBKHR = 1,
985 SpvRayQueryCandidateIntersectionTypeMax = 0x7fffffff,
986} SpvRayQueryCandidateIntersectionType;
987
988typedef enum SpvOp_ {
989 SpvOpNop = 0,
990 SpvOpUndef = 1,
991 SpvOpSourceContinued = 2,
992 SpvOpSource = 3,
993 SpvOpSourceExtension = 4,
994 SpvOpName = 5,
995 SpvOpMemberName = 6,
996 SpvOpString = 7,
997 SpvOpLine = 8,
998 SpvOpExtension = 10,
999 SpvOpExtInstImport = 11,
1000 SpvOpExtInst = 12,
1001 SpvOpMemoryModel = 14,
1002 SpvOpEntryPoint = 15,
1003 SpvOpExecutionMode = 16,
1004 SpvOpCapability = 17,
1005 SpvOpTypeVoid = 19,
1006 SpvOpTypeBool = 20,
1007 SpvOpTypeInt = 21,
1008 SpvOpTypeFloat = 22,
1009 SpvOpTypeVector = 23,
1010 SpvOpTypeMatrix = 24,
1011 SpvOpTypeImage = 25,
1012 SpvOpTypeSampler = 26,
1013 SpvOpTypeSampledImage = 27,
1014 SpvOpTypeArray = 28,
1015 SpvOpTypeRuntimeArray = 29,
1016 SpvOpTypeStruct = 30,
1017 SpvOpTypeOpaque = 31,
1018 SpvOpTypePointer = 32,
1019 SpvOpTypeFunction = 33,
1020 SpvOpTypeEvent = 34,
1021 SpvOpTypeDeviceEvent = 35,
1022 SpvOpTypeReserveId = 36,
1023 SpvOpTypeQueue = 37,
1024 SpvOpTypePipe = 38,
1025 SpvOpTypeForwardPointer = 39,
1026 SpvOpConstantTrue = 41,
1027 SpvOpConstantFalse = 42,
1028 SpvOpConstant = 43,
1029 SpvOpConstantComposite = 44,
1030 SpvOpConstantSampler = 45,
1031 SpvOpConstantNull = 46,
1032 SpvOpSpecConstantTrue = 48,
1033 SpvOpSpecConstantFalse = 49,
1034 SpvOpSpecConstant = 50,
1035 SpvOpSpecConstantComposite = 51,
1036 SpvOpSpecConstantOp = 52,
1037 SpvOpFunction = 54,
1038 SpvOpFunctionParameter = 55,
1039 SpvOpFunctionEnd = 56,
1040 SpvOpFunctionCall = 57,
1041 SpvOpVariable = 59,
1042 SpvOpImageTexelPointer = 60,
1043 SpvOpLoad = 61,
1044 SpvOpStore = 62,
1045 SpvOpCopyMemory = 63,
1046 SpvOpCopyMemorySized = 64,
1047 SpvOpAccessChain = 65,
1048 SpvOpInBoundsAccessChain = 66,
1049 SpvOpPtrAccessChain = 67,
1050 SpvOpArrayLength = 68,
1051 SpvOpGenericPtrMemSemantics = 69,
1052 SpvOpInBoundsPtrAccessChain = 70,
1053 SpvOpDecorate = 71,
1054 SpvOpMemberDecorate = 72,
1055 SpvOpDecorationGroup = 73,
1056 SpvOpGroupDecorate = 74,
1057 SpvOpGroupMemberDecorate = 75,
1058 SpvOpVectorExtractDynamic = 77,
1059 SpvOpVectorInsertDynamic = 78,
1060 SpvOpVectorShuffle = 79,
1061 SpvOpCompositeConstruct = 80,
1062 SpvOpCompositeExtract = 81,
1063 SpvOpCompositeInsert = 82,
1064 SpvOpCopyObject = 83,
1065 SpvOpTranspose = 84,
1066 SpvOpSampledImage = 86,
1067 SpvOpImageSampleImplicitLod = 87,
1068 SpvOpImageSampleExplicitLod = 88,
1069 SpvOpImageSampleDrefImplicitLod = 89,
1070 SpvOpImageSampleDrefExplicitLod = 90,
1071 SpvOpImageSampleProjImplicitLod = 91,
1072 SpvOpImageSampleProjExplicitLod = 92,
1073 SpvOpImageSampleProjDrefImplicitLod = 93,
1074 SpvOpImageSampleProjDrefExplicitLod = 94,
1075 SpvOpImageFetch = 95,
1076 SpvOpImageGather = 96,
1077 SpvOpImageDrefGather = 97,
1078 SpvOpImageRead = 98,
1079 SpvOpImageWrite = 99,
1080 SpvOpImage = 100,
1081 SpvOpImageQueryFormat = 101,
1082 SpvOpImageQueryOrder = 102,
1083 SpvOpImageQuerySizeLod = 103,
1084 SpvOpImageQuerySize = 104,
1085 SpvOpImageQueryLod = 105,
1086 SpvOpImageQueryLevels = 106,
1087 SpvOpImageQuerySamples = 107,
1088 SpvOpConvertFToU = 109,
1089 SpvOpConvertFToS = 110,
1090 SpvOpConvertSToF = 111,
1091 SpvOpConvertUToF = 112,
1092 SpvOpUConvert = 113,
1093 SpvOpSConvert = 114,
1094 SpvOpFConvert = 115,
1095 SpvOpQuantizeToF16 = 116,
1096 SpvOpConvertPtrToU = 117,
1097 SpvOpSatConvertSToU = 118,
1098 SpvOpSatConvertUToS = 119,
1099 SpvOpConvertUToPtr = 120,
1100 SpvOpPtrCastToGeneric = 121,
1101 SpvOpGenericCastToPtr = 122,
1102 SpvOpGenericCastToPtrExplicit = 123,
1103 SpvOpBitcast = 124,
1104 SpvOpSNegate = 126,
1105 SpvOpFNegate = 127,
1106 SpvOpIAdd = 128,
1107 SpvOpFAdd = 129,
1108 SpvOpISub = 130,
1109 SpvOpFSub = 131,
1110 SpvOpIMul = 132,
1111 SpvOpFMul = 133,
1112 SpvOpUDiv = 134,
1113 SpvOpSDiv = 135,
1114 SpvOpFDiv = 136,
1115 SpvOpUMod = 137,
1116 SpvOpSRem = 138,
1117 SpvOpSMod = 139,
1118 SpvOpFRem = 140,
1119 SpvOpFMod = 141,
1120 SpvOpVectorTimesScalar = 142,
1121 SpvOpMatrixTimesScalar = 143,
1122 SpvOpVectorTimesMatrix = 144,
1123 SpvOpMatrixTimesVector = 145,
1124 SpvOpMatrixTimesMatrix = 146,
1125 SpvOpOuterProduct = 147,
1126 SpvOpDot = 148,
1127 SpvOpIAddCarry = 149,
1128 SpvOpISubBorrow = 150,
1129 SpvOpUMulExtended = 151,
1130 SpvOpSMulExtended = 152,
1131 SpvOpAny = 154,
1132 SpvOpAll = 155,
1133 SpvOpIsNan = 156,
1134 SpvOpIsInf = 157,
1135 SpvOpIsFinite = 158,
1136 SpvOpIsNormal = 159,
1137 SpvOpSignBitSet = 160,
1138 SpvOpLessOrGreater = 161,
1139 SpvOpOrdered = 162,
1140 SpvOpUnordered = 163,
1141 SpvOpLogicalEqual = 164,
1142 SpvOpLogicalNotEqual = 165,
1143 SpvOpLogicalOr = 166,
1144 SpvOpLogicalAnd = 167,
1145 SpvOpLogicalNot = 168,
1146 SpvOpSelect = 169,
1147 SpvOpIEqual = 170,
1148 SpvOpINotEqual = 171,
1149 SpvOpUGreaterThan = 172,
1150 SpvOpSGreaterThan = 173,
1151 SpvOpUGreaterThanEqual = 174,
1152 SpvOpSGreaterThanEqual = 175,
1153 SpvOpULessThan = 176,
1154 SpvOpSLessThan = 177,
1155 SpvOpULessThanEqual = 178,
1156 SpvOpSLessThanEqual = 179,
1157 SpvOpFOrdEqual = 180,
1158 SpvOpFUnordEqual = 181,
1159 SpvOpFOrdNotEqual = 182,
1160 SpvOpFUnordNotEqual = 183,
1161 SpvOpFOrdLessThan = 184,
1162 SpvOpFUnordLessThan = 185,
1163 SpvOpFOrdGreaterThan = 186,
1164 SpvOpFUnordGreaterThan = 187,
1165 SpvOpFOrdLessThanEqual = 188,
1166 SpvOpFUnordLessThanEqual = 189,
1167 SpvOpFOrdGreaterThanEqual = 190,
1168 SpvOpFUnordGreaterThanEqual = 191,
1169 SpvOpShiftRightLogical = 194,
1170 SpvOpShiftRightArithmetic = 195,
1171 SpvOpShiftLeftLogical = 196,
1172 SpvOpBitwiseOr = 197,
1173 SpvOpBitwiseXor = 198,
1174 SpvOpBitwiseAnd = 199,
1175 SpvOpNot = 200,
1176 SpvOpBitFieldInsert = 201,
1177 SpvOpBitFieldSExtract = 202,
1178 SpvOpBitFieldUExtract = 203,
1179 SpvOpBitReverse = 204,
1180 SpvOpBitCount = 205,
1181 SpvOpDPdx = 207,
1182 SpvOpDPdy = 208,
1183 SpvOpFwidth = 209,
1184 SpvOpDPdxFine = 210,
1185 SpvOpDPdyFine = 211,
1186 SpvOpFwidthFine = 212,
1187 SpvOpDPdxCoarse = 213,
1188 SpvOpDPdyCoarse = 214,
1189 SpvOpFwidthCoarse = 215,
1190 SpvOpEmitVertex = 218,
1191 SpvOpEndPrimitive = 219,
1192 SpvOpEmitStreamVertex = 220,
1193 SpvOpEndStreamPrimitive = 221,
1194 SpvOpControlBarrier = 224,
1195 SpvOpMemoryBarrier = 225,
1196 SpvOpAtomicLoad = 227,
1197 SpvOpAtomicStore = 228,
1198 SpvOpAtomicExchange = 229,
1199 SpvOpAtomicCompareExchange = 230,
1200 SpvOpAtomicCompareExchangeWeak = 231,
1201 SpvOpAtomicIIncrement = 232,
1202 SpvOpAtomicIDecrement = 233,
1203 SpvOpAtomicIAdd = 234,
1204 SpvOpAtomicISub = 235,
1205 SpvOpAtomicSMin = 236,
1206 SpvOpAtomicUMin = 237,
1207 SpvOpAtomicSMax = 238,
1208 SpvOpAtomicUMax = 239,
1209 SpvOpAtomicAnd = 240,
1210 SpvOpAtomicOr = 241,
1211 SpvOpAtomicXor = 242,
1212 SpvOpPhi = 245,
1213 SpvOpLoopMerge = 246,
1214 SpvOpSelectionMerge = 247,
1215 SpvOpLabel = 248,
1216 SpvOpBranch = 249,
1217 SpvOpBranchConditional = 250,
1218 SpvOpSwitch = 251,
1219 SpvOpKill = 252,
1220 SpvOpReturn = 253,
1221 SpvOpReturnValue = 254,
1222 SpvOpUnreachable = 255,
1223 SpvOpLifetimeStart = 256,
1224 SpvOpLifetimeStop = 257,
1225 SpvOpGroupAsyncCopy = 259,
1226 SpvOpGroupWaitEvents = 260,
1227 SpvOpGroupAll = 261,
1228 SpvOpGroupAny = 262,
1229 SpvOpGroupBroadcast = 263,
1230 SpvOpGroupIAdd = 264,
1231 SpvOpGroupFAdd = 265,
1232 SpvOpGroupFMin = 266,
1233 SpvOpGroupUMin = 267,
1234 SpvOpGroupSMin = 268,
1235 SpvOpGroupFMax = 269,
1236 SpvOpGroupUMax = 270,
1237 SpvOpGroupSMax = 271,
1238 SpvOpReadPipe = 274,
1239 SpvOpWritePipe = 275,
1240 SpvOpReservedReadPipe = 276,
1241 SpvOpReservedWritePipe = 277,
1242 SpvOpReserveReadPipePackets = 278,
1243 SpvOpReserveWritePipePackets = 279,
1244 SpvOpCommitReadPipe = 280,
1245 SpvOpCommitWritePipe = 281,
1246 SpvOpIsValidReserveId = 282,
1247 SpvOpGetNumPipePackets = 283,
1248 SpvOpGetMaxPipePackets = 284,
1249 SpvOpGroupReserveReadPipePackets = 285,
1250 SpvOpGroupReserveWritePipePackets = 286,
1251 SpvOpGroupCommitReadPipe = 287,
1252 SpvOpGroupCommitWritePipe = 288,
1253 SpvOpEnqueueMarker = 291,
1254 SpvOpEnqueueKernel = 292,
1255 SpvOpGetKernelNDrangeSubGroupCount = 293,
1256 SpvOpGetKernelNDrangeMaxSubGroupSize = 294,
1257 SpvOpGetKernelWorkGroupSize = 295,
1258 SpvOpGetKernelPreferredWorkGroupSizeMultiple = 296,
1259 SpvOpRetainEvent = 297,
1260 SpvOpReleaseEvent = 298,
1261 SpvOpCreateUserEvent = 299,
1262 SpvOpIsValidEvent = 300,
1263 SpvOpSetUserEventStatus = 301,
1264 SpvOpCaptureEventProfilingInfo = 302,
1265 SpvOpGetDefaultQueue = 303,
1266 SpvOpBuildNDRange = 304,
1267 SpvOpImageSparseSampleImplicitLod = 305,
1268 SpvOpImageSparseSampleExplicitLod = 306,
1269 SpvOpImageSparseSampleDrefImplicitLod = 307,
1270 SpvOpImageSparseSampleDrefExplicitLod = 308,
1271 SpvOpImageSparseSampleProjImplicitLod = 309,
1272 SpvOpImageSparseSampleProjExplicitLod = 310,
1273 SpvOpImageSparseSampleProjDrefImplicitLod = 311,
1274 SpvOpImageSparseSampleProjDrefExplicitLod = 312,
1275 SpvOpImageSparseFetch = 313,
1276 SpvOpImageSparseGather = 314,
1277 SpvOpImageSparseDrefGather = 315,
1278 SpvOpImageSparseTexelsResident = 316,
1279 SpvOpNoLine = 317,
1280 SpvOpAtomicFlagTestAndSet = 318,
1281 SpvOpAtomicFlagClear = 319,
1282 SpvOpImageSparseRead = 320,
1283 SpvOpSizeOf = 321,
1284 SpvOpTypePipeStorage = 322,
1285 SpvOpConstantPipeStorage = 323,
1286 SpvOpCreatePipeFromPipeStorage = 324,
1287 SpvOpGetKernelLocalSizeForSubgroupCount = 325,
1288 SpvOpGetKernelMaxNumSubgroups = 326,
1289 SpvOpTypeNamedBarrier = 327,
1290 SpvOpNamedBarrierInitialize = 328,
1291 SpvOpMemoryNamedBarrier = 329,
1292 SpvOpModuleProcessed = 330,
1293 SpvOpExecutionModeId = 331,
1294 SpvOpDecorateId = 332,
1295 SpvOpGroupNonUniformElect = 333,
1296 SpvOpGroupNonUniformAll = 334,
1297 SpvOpGroupNonUniformAny = 335,
1298 SpvOpGroupNonUniformAllEqual = 336,
1299 SpvOpGroupNonUniformBroadcast = 337,
1300 SpvOpGroupNonUniformBroadcastFirst = 338,
1301 SpvOpGroupNonUniformBallot = 339,
1302 SpvOpGroupNonUniformInverseBallot = 340,
1303 SpvOpGroupNonUniformBallotBitExtract = 341,
1304 SpvOpGroupNonUniformBallotBitCount = 342,
1305 SpvOpGroupNonUniformBallotFindLSB = 343,
1306 SpvOpGroupNonUniformBallotFindMSB = 344,
1307 SpvOpGroupNonUniformShuffle = 345,
1308 SpvOpGroupNonUniformShuffleXor = 346,
1309 SpvOpGroupNonUniformShuffleUp = 347,
1310 SpvOpGroupNonUniformShuffleDown = 348,
1311 SpvOpGroupNonUniformIAdd = 349,
1312 SpvOpGroupNonUniformFAdd = 350,
1313 SpvOpGroupNonUniformIMul = 351,
1314 SpvOpGroupNonUniformFMul = 352,
1315 SpvOpGroupNonUniformSMin = 353,
1316 SpvOpGroupNonUniformUMin = 354,
1317 SpvOpGroupNonUniformFMin = 355,
1318 SpvOpGroupNonUniformSMax = 356,
1319 SpvOpGroupNonUniformUMax = 357,
1320 SpvOpGroupNonUniformFMax = 358,
1321 SpvOpGroupNonUniformBitwiseAnd = 359,
1322 SpvOpGroupNonUniformBitwiseOr = 360,
1323 SpvOpGroupNonUniformBitwiseXor = 361,
1324 SpvOpGroupNonUniformLogicalAnd = 362,
1325 SpvOpGroupNonUniformLogicalOr = 363,
1326 SpvOpGroupNonUniformLogicalXor = 364,
1327 SpvOpGroupNonUniformQuadBroadcast = 365,
1328 SpvOpGroupNonUniformQuadSwap = 366,
1329 SpvOpCopyLogical = 400,
1330 SpvOpPtrEqual = 401,
1331 SpvOpPtrNotEqual = 402,
1332 SpvOpPtrDiff = 403,
1333 SpvOpSubgroupBallotKHR = 4421,
1334 SpvOpSubgroupFirstInvocationKHR = 4422,
1335 SpvOpSubgroupAllKHR = 4428,
1336 SpvOpSubgroupAnyKHR = 4429,
1337 SpvOpSubgroupAllEqualKHR = 4430,
1338 SpvOpSubgroupReadInvocationKHR = 4432,
1339 SpvOpTypeRayQueryProvisionalKHR = 4472,
1340 SpvOpRayQueryInitializeKHR = 4473,
1341 SpvOpRayQueryTerminateKHR = 4474,
1342 SpvOpRayQueryGenerateIntersectionKHR = 4475,
1343 SpvOpRayQueryConfirmIntersectionKHR = 4476,
1344 SpvOpRayQueryProceedKHR = 4477,
1345 SpvOpRayQueryGetIntersectionTypeKHR = 4479,
1346 SpvOpGroupIAddNonUniformAMD = 5000,
1347 SpvOpGroupFAddNonUniformAMD = 5001,
1348 SpvOpGroupFMinNonUniformAMD = 5002,
1349 SpvOpGroupUMinNonUniformAMD = 5003,
1350 SpvOpGroupSMinNonUniformAMD = 5004,
1351 SpvOpGroupFMaxNonUniformAMD = 5005,
1352 SpvOpGroupUMaxNonUniformAMD = 5006,
1353 SpvOpGroupSMaxNonUniformAMD = 5007,
1354 SpvOpFragmentMaskFetchAMD = 5011,
1355 SpvOpFragmentFetchAMD = 5012,
1356 SpvOpReadClockKHR = 5056,
1357 SpvOpImageSampleFootprintNV = 5283,
1358 SpvOpGroupNonUniformPartitionNV = 5296,
1359 SpvOpWritePackedPrimitiveIndices4x8NV = 5299,
1360 SpvOpReportIntersectionKHR = 5334,
1361 SpvOpReportIntersectionNV = 5334,
1362 SpvOpIgnoreIntersectionKHR = 5335,
1363 SpvOpIgnoreIntersectionNV = 5335,
1364 SpvOpTerminateRayKHR = 5336,
1365 SpvOpTerminateRayNV = 5336,
1366 SpvOpTraceNV = 5337,
1367 SpvOpTraceRayKHR = 5337,
1368 SpvOpTypeAccelerationStructureKHR = 5341,
1369 SpvOpTypeAccelerationStructureNV = 5341,
1370 SpvOpExecuteCallableKHR = 5344,
1371 SpvOpExecuteCallableNV = 5344,
1372 SpvOpTypeCooperativeMatrixNV = 5358,
1373 SpvOpCooperativeMatrixLoadNV = 5359,
1374 SpvOpCooperativeMatrixStoreNV = 5360,
1375 SpvOpCooperativeMatrixMulAddNV = 5361,
1376 SpvOpCooperativeMatrixLengthNV = 5362,
1377 SpvOpBeginInvocationInterlockEXT = 5364,
1378 SpvOpEndInvocationInterlockEXT = 5365,
1379 SpvOpDemoteToHelperInvocationEXT = 5380,
1380 SpvOpIsHelperInvocationEXT = 5381,
1381 SpvOpSubgroupShuffleINTEL = 5571,
1382 SpvOpSubgroupShuffleDownINTEL = 5572,
1383 SpvOpSubgroupShuffleUpINTEL = 5573,
1384 SpvOpSubgroupShuffleXorINTEL = 5574,
1385 SpvOpSubgroupBlockReadINTEL = 5575,
1386 SpvOpSubgroupBlockWriteINTEL = 5576,
1387 SpvOpSubgroupImageBlockReadINTEL = 5577,
1388 SpvOpSubgroupImageBlockWriteINTEL = 5578,
1389 SpvOpSubgroupImageMediaBlockReadINTEL = 5580,
1390 SpvOpSubgroupImageMediaBlockWriteINTEL = 5581,
1391 SpvOpUCountLeadingZerosINTEL = 5585,
1392 SpvOpUCountTrailingZerosINTEL = 5586,
1393 SpvOpAbsISubINTEL = 5587,
1394 SpvOpAbsUSubINTEL = 5588,
1395 SpvOpIAddSatINTEL = 5589,
1396 SpvOpUAddSatINTEL = 5590,
1397 SpvOpIAverageINTEL = 5591,
1398 SpvOpUAverageINTEL = 5592,
1399 SpvOpIAverageRoundedINTEL = 5593,
1400 SpvOpUAverageRoundedINTEL = 5594,
1401 SpvOpISubSatINTEL = 5595,
1402 SpvOpUSubSatINTEL = 5596,
1403 SpvOpIMul32x16INTEL = 5597,
1404 SpvOpUMul32x16INTEL = 5598,
1405 SpvOpDecorateString = 5632,
1406 SpvOpDecorateStringGOOGLE = 5632,
1407 SpvOpMemberDecorateString = 5633,
1408 SpvOpMemberDecorateStringGOOGLE = 5633,
1409 SpvOpVmeImageINTEL = 5699,
1410 SpvOpTypeVmeImageINTEL = 5700,
1411 SpvOpTypeAvcImePayloadINTEL = 5701,
1412 SpvOpTypeAvcRefPayloadINTEL = 5702,
1413 SpvOpTypeAvcSicPayloadINTEL = 5703,
1414 SpvOpTypeAvcMcePayloadINTEL = 5704,
1415 SpvOpTypeAvcMceResultINTEL = 5705,
1416 SpvOpTypeAvcImeResultINTEL = 5706,
1417 SpvOpTypeAvcImeResultSingleReferenceStreamoutINTEL = 5707,
1418 SpvOpTypeAvcImeResultDualReferenceStreamoutINTEL = 5708,
1419 SpvOpTypeAvcImeSingleReferenceStreaminINTEL = 5709,
1420 SpvOpTypeAvcImeDualReferenceStreaminINTEL = 5710,
1421 SpvOpTypeAvcRefResultINTEL = 5711,
1422 SpvOpTypeAvcSicResultINTEL = 5712,
1423 SpvOpSubgroupAvcMceGetDefaultInterBaseMultiReferencePenaltyINTEL = 5713,
1424 SpvOpSubgroupAvcMceSetInterBaseMultiReferencePenaltyINTEL = 5714,
1425 SpvOpSubgroupAvcMceGetDefaultInterShapePenaltyINTEL = 5715,
1426 SpvOpSubgroupAvcMceSetInterShapePenaltyINTEL = 5716,
1427 SpvOpSubgroupAvcMceGetDefaultInterDirectionPenaltyINTEL = 5717,
1428 SpvOpSubgroupAvcMceSetInterDirectionPenaltyINTEL = 5718,
1429 SpvOpSubgroupAvcMceGetDefaultIntraLumaShapePenaltyINTEL = 5719,
1430 SpvOpSubgroupAvcMceGetDefaultInterMotionVectorCostTableINTEL = 5720,
1431 SpvOpSubgroupAvcMceGetDefaultHighPenaltyCostTableINTEL = 5721,
1432 SpvOpSubgroupAvcMceGetDefaultMediumPenaltyCostTableINTEL = 5722,
1433 SpvOpSubgroupAvcMceGetDefaultLowPenaltyCostTableINTEL = 5723,
1434 SpvOpSubgroupAvcMceSetMotionVectorCostFunctionINTEL = 5724,
1435 SpvOpSubgroupAvcMceGetDefaultIntraLumaModePenaltyINTEL = 5725,
1436 SpvOpSubgroupAvcMceGetDefaultNonDcLumaIntraPenaltyINTEL = 5726,
1437 SpvOpSubgroupAvcMceGetDefaultIntraChromaModeBasePenaltyINTEL = 5727,
1438 SpvOpSubgroupAvcMceSetAcOnlyHaarINTEL = 5728,
1439 SpvOpSubgroupAvcMceSetSourceInterlacedFieldPolarityINTEL = 5729,
1440 SpvOpSubgroupAvcMceSetSingleReferenceInterlacedFieldPolarityINTEL = 5730,
1441 SpvOpSubgroupAvcMceSetDualReferenceInterlacedFieldPolaritiesINTEL = 5731,
1442 SpvOpSubgroupAvcMceConvertToImePayloadINTEL = 5732,
1443 SpvOpSubgroupAvcMceConvertToImeResultINTEL = 5733,
1444 SpvOpSubgroupAvcMceConvertToRefPayloadINTEL = 5734,
1445 SpvOpSubgroupAvcMceConvertToRefResultINTEL = 5735,
1446 SpvOpSubgroupAvcMceConvertToSicPayloadINTEL = 5736,
1447 SpvOpSubgroupAvcMceConvertToSicResultINTEL = 5737,
1448 SpvOpSubgroupAvcMceGetMotionVectorsINTEL = 5738,
1449 SpvOpSubgroupAvcMceGetInterDistortionsINTEL = 5739,
1450 SpvOpSubgroupAvcMceGetBestInterDistortionsINTEL = 5740,
1451 SpvOpSubgroupAvcMceGetInterMajorShapeINTEL = 5741,
1452 SpvOpSubgroupAvcMceGetInterMinorShapeINTEL = 5742,
1453 SpvOpSubgroupAvcMceGetInterDirectionsINTEL = 5743,
1454 SpvOpSubgroupAvcMceGetInterMotionVectorCountINTEL = 5744,
1455 SpvOpSubgroupAvcMceGetInterReferenceIdsINTEL = 5745,
1456 SpvOpSubgroupAvcMceGetInterReferenceInterlacedFieldPolaritiesINTEL = 5746,
1457 SpvOpSubgroupAvcImeInitializeINTEL = 5747,
1458 SpvOpSubgroupAvcImeSetSingleReferenceINTEL = 5748,
1459 SpvOpSubgroupAvcImeSetDualReferenceINTEL = 5749,
1460 SpvOpSubgroupAvcImeRefWindowSizeINTEL = 5750,
1461 SpvOpSubgroupAvcImeAdjustRefOffsetINTEL = 5751,
1462 SpvOpSubgroupAvcImeConvertToMcePayloadINTEL = 5752,
1463 SpvOpSubgroupAvcImeSetMaxMotionVectorCountINTEL = 5753,
1464 SpvOpSubgroupAvcImeSetUnidirectionalMixDisableINTEL = 5754,
1465 SpvOpSubgroupAvcImeSetEarlySearchTerminationThresholdINTEL = 5755,
1466 SpvOpSubgroupAvcImeSetWeightedSadINTEL = 5756,
1467 SpvOpSubgroupAvcImeEvaluateWithSingleReferenceINTEL = 5757,
1468 SpvOpSubgroupAvcImeEvaluateWithDualReferenceINTEL = 5758,
1469 SpvOpSubgroupAvcImeEvaluateWithSingleReferenceStreaminINTEL = 5759,
1470 SpvOpSubgroupAvcImeEvaluateWithDualReferenceStreaminINTEL = 5760,
1471 SpvOpSubgroupAvcImeEvaluateWithSingleReferenceStreamoutINTEL = 5761,
1472 SpvOpSubgroupAvcImeEvaluateWithDualReferenceStreamoutINTEL = 5762,
1473 SpvOpSubgroupAvcImeEvaluateWithSingleReferenceStreaminoutINTEL = 5763,
1474 SpvOpSubgroupAvcImeEvaluateWithDualReferenceStreaminoutINTEL = 5764,
1475 SpvOpSubgroupAvcImeConvertToMceResultINTEL = 5765,
1476 SpvOpSubgroupAvcImeGetSingleReferenceStreaminINTEL = 5766,
1477 SpvOpSubgroupAvcImeGetDualReferenceStreaminINTEL = 5767,
1478 SpvOpSubgroupAvcImeStripSingleReferenceStreamoutINTEL = 5768,
1479 SpvOpSubgroupAvcImeStripDualReferenceStreamoutINTEL = 5769,
1480 SpvOpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeMotionVectorsINTEL = 5770,
1481 SpvOpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeDistortionsINTEL = 5771,
1482 SpvOpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeReferenceIdsINTEL = 5772,
1483 SpvOpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeMotionVectorsINTEL = 5773,
1484 SpvOpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeDistortionsINTEL = 5774,
1485 SpvOpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeReferenceIdsINTEL = 5775,
1486 SpvOpSubgroupAvcImeGetBorderReachedINTEL = 5776,
1487 SpvOpSubgroupAvcImeGetTruncatedSearchIndicationINTEL = 5777,
1488 SpvOpSubgroupAvcImeGetUnidirectionalEarlySearchTerminationINTEL = 5778,
1489 SpvOpSubgroupAvcImeGetWeightingPatternMinimumMotionVectorINTEL = 5779,
1490 SpvOpSubgroupAvcImeGetWeightingPatternMinimumDistortionINTEL = 5780,
1491 SpvOpSubgroupAvcFmeInitializeINTEL = 5781,
1492 SpvOpSubgroupAvcBmeInitializeINTEL = 5782,
1493 SpvOpSubgroupAvcRefConvertToMcePayloadINTEL = 5783,
1494 SpvOpSubgroupAvcRefSetBidirectionalMixDisableINTEL = 5784,
1495 SpvOpSubgroupAvcRefSetBilinearFilterEnableINTEL = 5785,
1496 SpvOpSubgroupAvcRefEvaluateWithSingleReferenceINTEL = 5786,
1497 SpvOpSubgroupAvcRefEvaluateWithDualReferenceINTEL = 5787,
1498 SpvOpSubgroupAvcRefEvaluateWithMultiReferenceINTEL = 5788,
1499 SpvOpSubgroupAvcRefEvaluateWithMultiReferenceInterlacedINTEL = 5789,
1500 SpvOpSubgroupAvcRefConvertToMceResultINTEL = 5790,
1501 SpvOpSubgroupAvcSicInitializeINTEL = 5791,
1502 SpvOpSubgroupAvcSicConfigureSkcINTEL = 5792,
1503 SpvOpSubgroupAvcSicConfigureIpeLumaINTEL = 5793,
1504 SpvOpSubgroupAvcSicConfigureIpeLumaChromaINTEL = 5794,
1505 SpvOpSubgroupAvcSicGetMotionVectorMaskINTEL = 5795,
1506 SpvOpSubgroupAvcSicConvertToMcePayloadINTEL = 5796,
1507 SpvOpSubgroupAvcSicSetIntraLumaShapePenaltyINTEL = 5797,
1508 SpvOpSubgroupAvcSicSetIntraLumaModeCostFunctionINTEL = 5798,
1509 SpvOpSubgroupAvcSicSetIntraChromaModeCostFunctionINTEL = 5799,
1510 SpvOpSubgroupAvcSicSetBilinearFilterEnableINTEL = 5800,
1511 SpvOpSubgroupAvcSicSetSkcForwardTransformEnableINTEL = 5801,
1512 SpvOpSubgroupAvcSicSetBlockBasedRawSkipSadINTEL = 5802,
1513 SpvOpSubgroupAvcSicEvaluateIpeINTEL = 5803,
1514 SpvOpSubgroupAvcSicEvaluateWithSingleReferenceINTEL = 5804,
1515 SpvOpSubgroupAvcSicEvaluateWithDualReferenceINTEL = 5805,
1516 SpvOpSubgroupAvcSicEvaluateWithMultiReferenceINTEL = 5806,
1517 SpvOpSubgroupAvcSicEvaluateWithMultiReferenceInterlacedINTEL = 5807,
1518 SpvOpSubgroupAvcSicConvertToMceResultINTEL = 5808,
1519 SpvOpSubgroupAvcSicGetIpeLumaShapeINTEL = 5809,
1520 SpvOpSubgroupAvcSicGetBestIpeLumaDistortionINTEL = 5810,
1521 SpvOpSubgroupAvcSicGetBestIpeChromaDistortionINTEL = 5811,
1522 SpvOpSubgroupAvcSicGetPackedIpeLumaModesINTEL = 5812,
1523 SpvOpSubgroupAvcSicGetIpeChromaModeINTEL = 5813,
1524 SpvOpSubgroupAvcSicGetPackedSkcLumaCountThresholdINTEL = 5814,
1525 SpvOpSubgroupAvcSicGetPackedSkcLumaSumThresholdINTEL = 5815,
1526 SpvOpSubgroupAvcSicGetInterRawSadsINTEL = 5816,
1527 SpvOpRayQueryGetRayTMinKHR = 6016,
1528 SpvOpRayQueryGetRayFlagsKHR = 6017,
1529 SpvOpRayQueryGetIntersectionTKHR = 6018,
1530 SpvOpRayQueryGetIntersectionInstanceCustomIndexKHR = 6019,
1531 SpvOpRayQueryGetIntersectionInstanceIdKHR = 6020,
1532 SpvOpRayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR = 6021,
1533 SpvOpRayQueryGetIntersectionGeometryIndexKHR = 6022,
1534 SpvOpRayQueryGetIntersectionPrimitiveIndexKHR = 6023,
1535 SpvOpRayQueryGetIntersectionBarycentricsKHR = 6024,
1536 SpvOpRayQueryGetIntersectionFrontFaceKHR = 6025,
1537 SpvOpRayQueryGetIntersectionCandidateAABBOpaqueKHR = 6026,
1538 SpvOpRayQueryGetIntersectionObjectRayDirectionKHR = 6027,
1539 SpvOpRayQueryGetIntersectionObjectRayOriginKHR = 6028,
1540 SpvOpRayQueryGetWorldRayDirectionKHR = 6029,
1541 SpvOpRayQueryGetWorldRayOriginKHR = 6030,
1542 SpvOpRayQueryGetIntersectionObjectToWorldKHR = 6031,
1543 SpvOpRayQueryGetIntersectionWorldToObjectKHR = 6032,
1544 SpvOpMax = 0x7fffffff,
1545} SpvOp;
1546
1547#ifdef SPV_ENABLE_UTILITY_CODE
1548inline void SpvHasResultAndType(SpvOp opcode, bool *hasResult, bool *hasResultType) {
1549 *hasResult = *hasResultType = false;
1550 switch (opcode) {
1551 default: /* unknown opcode */ break;
1552 case SpvOpNop: *hasResult = false; *hasResultType = false; break;
1553 case SpvOpUndef: *hasResult = true; *hasResultType = true; break;
1554 case SpvOpSourceContinued: *hasResult = false; *hasResultType = false; break;
1555 case SpvOpSource: *hasResult = false; *hasResultType = false; break;
1556 case SpvOpSourceExtension: *hasResult = false; *hasResultType = false; break;
1557 case SpvOpName: *hasResult = false; *hasResultType = false; break;
1558 case SpvOpMemberName: *hasResult = false; *hasResultType = false; break;
1559 case SpvOpString: *hasResult = true; *hasResultType = false; break;
1560 case SpvOpLine: *hasResult = false; *hasResultType = false; break;
1561 case SpvOpExtension: *hasResult = false; *hasResultType = false; break;
1562 case SpvOpExtInstImport: *hasResult = true; *hasResultType = false; break;
1563 case SpvOpExtInst: *hasResult = true; *hasResultType = true; break;
1564 case SpvOpMemoryModel: *hasResult = false; *hasResultType = false; break;
1565 case SpvOpEntryPoint: *hasResult = false; *hasResultType = false; break;
1566 case SpvOpExecutionMode: *hasResult = false; *hasResultType = false; break;
1567 case SpvOpCapability: *hasResult = false; *hasResultType = false; break;
1568 case SpvOpTypeVoid: *hasResult = true; *hasResultType = false; break;
1569 case SpvOpTypeBool: *hasResult = true; *hasResultType = false; break;
1570 case SpvOpTypeInt: *hasResult = true; *hasResultType = false; break;
1571 case SpvOpTypeFloat: *hasResult = true; *hasResultType = false; break;
1572 case SpvOpTypeVector: *hasResult = true; *hasResultType = false; break;
1573 case SpvOpTypeMatrix: *hasResult = true; *hasResultType = false; break;
1574 case SpvOpTypeImage: *hasResult = true; *hasResultType = false; break;
1575 case SpvOpTypeSampler: *hasResult = true; *hasResultType = false; break;
1576 case SpvOpTypeSampledImage: *hasResult = true; *hasResultType = false; break;
1577 case SpvOpTypeArray: *hasResult = true; *hasResultType = false; break;
1578 case SpvOpTypeRuntimeArray: *hasResult = true; *hasResultType = false; break;
1579 case SpvOpTypeStruct: *hasResult = true; *hasResultType = false; break;
1580 case SpvOpTypeOpaque: *hasResult = true; *hasResultType = false; break;
1581 case SpvOpTypePointer: *hasResult = true; *hasResultType = false; break;
1582 case SpvOpTypeFunction: *hasResult = true; *hasResultType = false; break;
1583 case SpvOpTypeEvent: *hasResult = true; *hasResultType = false; break;
1584 case SpvOpTypeDeviceEvent: *hasResult = true; *hasResultType = false; break;
1585 case SpvOpTypeReserveId: *hasResult = true; *hasResultType = false; break;
1586 case SpvOpTypeQueue: *hasResult = true; *hasResultType = false; break;
1587 case SpvOpTypePipe: *hasResult = true; *hasResultType = false; break;
1588 case SpvOpTypeForwardPointer: *hasResult = false; *hasResultType = false; break;
1589 case SpvOpConstantTrue: *hasResult = true; *hasResultType = true; break;
1590 case SpvOpConstantFalse: *hasResult = true; *hasResultType = true; break;
1591 case SpvOpConstant: *hasResult = true; *hasResultType = true; break;
1592 case SpvOpConstantComposite: *hasResult = true; *hasResultType = true; break;
1593 case SpvOpConstantSampler: *hasResult = true; *hasResultType = true; break;
1594 case SpvOpConstantNull: *hasResult = true; *hasResultType = true; break;
1595 case SpvOpSpecConstantTrue: *hasResult = true; *hasResultType = true; break;
1596 case SpvOpSpecConstantFalse: *hasResult = true; *hasResultType = true; break;
1597 case SpvOpSpecConstant: *hasResult = true; *hasResultType = true; break;
1598 case SpvOpSpecConstantComposite: *hasResult = true; *hasResultType = true; break;
1599 case SpvOpSpecConstantOp: *hasResult = true; *hasResultType = true; break;
1600 case SpvOpFunction: *hasResult = true; *hasResultType = true; break;
1601 case SpvOpFunctionParameter: *hasResult = true; *hasResultType = true; break;
1602 case SpvOpFunctionEnd: *hasResult = false; *hasResultType = false; break;
1603 case SpvOpFunctionCall: *hasResult = true; *hasResultType = true; break;
1604 case SpvOpVariable: *hasResult = true; *hasResultType = true; break;
1605 case SpvOpImageTexelPointer: *hasResult = true; *hasResultType = true; break;
1606 case SpvOpLoad: *hasResult = true; *hasResultType = true; break;
1607 case SpvOpStore: *hasResult = false; *hasResultType = false; break;
1608 case SpvOpCopyMemory: *hasResult = false; *hasResultType = false; break;
1609 case SpvOpCopyMemorySized: *hasResult = false; *hasResultType = false; break;
1610 case SpvOpAccessChain: *hasResult = true; *hasResultType = true; break;
1611 case SpvOpInBoundsAccessChain: *hasResult = true; *hasResultType = true; break;
1612 case SpvOpPtrAccessChain: *hasResult = true; *hasResultType = true; break;
1613 case SpvOpArrayLength: *hasResult = true; *hasResultType = true; break;
1614 case SpvOpGenericPtrMemSemantics: *hasResult = true; *hasResultType = true; break;
1615 case SpvOpInBoundsPtrAccessChain: *hasResult = true; *hasResultType = true; break;
1616 case SpvOpDecorate: *hasResult = false; *hasResultType = false; break;
1617 case SpvOpMemberDecorate: *hasResult = false; *hasResultType = false; break;
1618 case SpvOpDecorationGroup: *hasResult = true; *hasResultType = false; break;
1619 case SpvOpGroupDecorate: *hasResult = false; *hasResultType = false; break;
1620 case SpvOpGroupMemberDecorate: *hasResult = false; *hasResultType = false; break;
1621 case SpvOpVectorExtractDynamic: *hasResult = true; *hasResultType = true; break;
1622 case SpvOpVectorInsertDynamic: *hasResult = true; *hasResultType = true; break;
1623 case SpvOpVectorShuffle: *hasResult = true; *hasResultType = true; break;
1624 case SpvOpCompositeConstruct: *hasResult = true; *hasResultType = true; break;
1625 case SpvOpCompositeExtract: *hasResult = true; *hasResultType = true; break;
1626 case SpvOpCompositeInsert: *hasResult = true; *hasResultType = true; break;
1627 case SpvOpCopyObject: *hasResult = true; *hasResultType = true; break;
1628 case SpvOpTranspose: *hasResult = true; *hasResultType = true; break;
1629 case SpvOpSampledImage: *hasResult = true; *hasResultType = true; break;
1630 case SpvOpImageSampleImplicitLod: *hasResult = true; *hasResultType = true; break;
1631 case SpvOpImageSampleExplicitLod: *hasResult = true; *hasResultType = true; break;
1632 case SpvOpImageSampleDrefImplicitLod: *hasResult = true; *hasResultType = true; break;
1633 case SpvOpImageSampleDrefExplicitLod: *hasResult = true; *hasResultType = true; break;
1634 case SpvOpImageSampleProjImplicitLod: *hasResult = true; *hasResultType = true; break;
1635 case SpvOpImageSampleProjExplicitLod: *hasResult = true; *hasResultType = true; break;
1636 case SpvOpImageSampleProjDrefImplicitLod: *hasResult = true; *hasResultType = true; break;
1637 case SpvOpImageSampleProjDrefExplicitLod: *hasResult = true; *hasResultType = true; break;
1638 case SpvOpImageFetch: *hasResult = true; *hasResultType = true; break;
1639 case SpvOpImageGather: *hasResult = true; *hasResultType = true; break;
1640 case SpvOpImageDrefGather: *hasResult = true; *hasResultType = true; break;
1641 case SpvOpImageRead: *hasResult = true; *hasResultType = true; break;
1642 case SpvOpImageWrite: *hasResult = false; *hasResultType = false; break;
1643 case SpvOpImage: *hasResult = true; *hasResultType = true; break;
1644 case SpvOpImageQueryFormat: *hasResult = true; *hasResultType = true; break;
1645 case SpvOpImageQueryOrder: *hasResult = true; *hasResultType = true; break;
1646 case SpvOpImageQuerySizeLod: *hasResult = true; *hasResultType = true; break;
1647 case SpvOpImageQuerySize: *hasResult = true; *hasResultType = true; break;
1648 case SpvOpImageQueryLod: *hasResult = true; *hasResultType = true; break;
1649 case SpvOpImageQueryLevels: *hasResult = true; *hasResultType = true; break;
1650 case SpvOpImageQuerySamples: *hasResult = true; *hasResultType = true; break;
1651 case SpvOpConvertFToU: *hasResult = true; *hasResultType = true; break;
1652 case SpvOpConvertFToS: *hasResult = true; *hasResultType = true; break;
1653 case SpvOpConvertSToF: *hasResult = true; *hasResultType = true; break;
1654 case SpvOpConvertUToF: *hasResult = true; *hasResultType = true; break;
1655 case SpvOpUConvert: *hasResult = true; *hasResultType = true; break;
1656 case SpvOpSConvert: *hasResult = true; *hasResultType = true; break;
1657 case SpvOpFConvert: *hasResult = true; *hasResultType = true; break;
1658 case SpvOpQuantizeToF16: *hasResult = true; *hasResultType = true; break;
1659 case SpvOpConvertPtrToU: *hasResult = true; *hasResultType = true; break;
1660 case SpvOpSatConvertSToU: *hasResult = true; *hasResultType = true; break;
1661 case SpvOpSatConvertUToS: *hasResult = true; *hasResultType = true; break;
1662 case SpvOpConvertUToPtr: *hasResult = true; *hasResultType = true; break;
1663 case SpvOpPtrCastToGeneric: *hasResult = true; *hasResultType = true; break;
1664 case SpvOpGenericCastToPtr: *hasResult = true; *hasResultType = true; break;
1665 case SpvOpGenericCastToPtrExplicit: *hasResult = true; *hasResultType = true; break;
1666 case SpvOpBitcast: *hasResult = true; *hasResultType = true; break;
1667 case SpvOpSNegate: *hasResult = true; *hasResultType = true; break;
1668 case SpvOpFNegate: *hasResult = true; *hasResultType = true; break;
1669 case SpvOpIAdd: *hasResult = true; *hasResultType = true; break;
1670 case SpvOpFAdd: *hasResult = true; *hasResultType = true; break;
1671 case SpvOpISub: *hasResult = true; *hasResultType = true; break;
1672 case SpvOpFSub: *hasResult = true; *hasResultType = true; break;
1673 case SpvOpIMul: *hasResult = true; *hasResultType = true; break;
1674 case SpvOpFMul: *hasResult = true; *hasResultType = true; break;
1675 case SpvOpUDiv: *hasResult = true; *hasResultType = true; break;
1676 case SpvOpSDiv: *hasResult = true; *hasResultType = true; break;
1677 case SpvOpFDiv: *hasResult = true; *hasResultType = true; break;
1678 case SpvOpUMod: *hasResult = true; *hasResultType = true; break;
1679 case SpvOpSRem: *hasResult = true; *hasResultType = true; break;
1680 case SpvOpSMod: *hasResult = true; *hasResultType = true; break;
1681 case SpvOpFRem: *hasResult = true; *hasResultType = true; break;
1682 case SpvOpFMod: *hasResult = true; *hasResultType = true; break;
1683 case SpvOpVectorTimesScalar: *hasResult = true; *hasResultType = true; break;
1684 case SpvOpMatrixTimesScalar: *hasResult = true; *hasResultType = true; break;
1685 case SpvOpVectorTimesMatrix: *hasResult = true; *hasResultType = true; break;
1686 case SpvOpMatrixTimesVector: *hasResult = true; *hasResultType = true; break;
1687 case SpvOpMatrixTimesMatrix: *hasResult = true; *hasResultType = true; break;
1688 case SpvOpOuterProduct: *hasResult = true; *hasResultType = true; break;
1689 case SpvOpDot: *hasResult = true; *hasResultType = true; break;
1690 case SpvOpIAddCarry: *hasResult = true; *hasResultType = true; break;
1691 case SpvOpISubBorrow: *hasResult = true; *hasResultType = true; break;
1692 case SpvOpUMulExtended: *hasResult = true; *hasResultType = true; break;
1693 case SpvOpSMulExtended: *hasResult = true; *hasResultType = true; break;
1694 case SpvOpAny: *hasResult = true; *hasResultType = true; break;
1695 case SpvOpAll: *hasResult = true; *hasResultType = true; break;
1696 case SpvOpIsNan: *hasResult = true; *hasResultType = true; break;
1697 case SpvOpIsInf: *hasResult = true; *hasResultType = true; break;
1698 case SpvOpIsFinite: *hasResult = true; *hasResultType = true; break;
1699 case SpvOpIsNormal: *hasResult = true; *hasResultType = true; break;
1700 case SpvOpSignBitSet: *hasResult = true; *hasResultType = true; break;
1701 case SpvOpLessOrGreater: *hasResult = true; *hasResultType = true; break;
1702 case SpvOpOrdered: *hasResult = true; *hasResultType = true; break;
1703 case SpvOpUnordered: *hasResult = true; *hasResultType = true; break;
1704 case SpvOpLogicalEqual: *hasResult = true; *hasResultType = true; break;
1705 case SpvOpLogicalNotEqual: *hasResult = true; *hasResultType = true; break;
1706 case SpvOpLogicalOr: *hasResult = true; *hasResultType = true; break;
1707 case SpvOpLogicalAnd: *hasResult = true; *hasResultType = true; break;
1708 case SpvOpLogicalNot: *hasResult = true; *hasResultType = true; break;
1709 case SpvOpSelect: *hasResult = true; *hasResultType = true; break;
1710 case SpvOpIEqual: *hasResult = true; *hasResultType = true; break;
1711 case SpvOpINotEqual: *hasResult = true; *hasResultType = true; break;
1712 case SpvOpUGreaterThan: *hasResult = true; *hasResultType = true; break;
1713 case SpvOpSGreaterThan: *hasResult = true; *hasResultType = true; break;
1714 case SpvOpUGreaterThanEqual: *hasResult = true; *hasResultType = true; break;
1715 case SpvOpSGreaterThanEqual: *hasResult = true; *hasResultType = true; break;
1716 case SpvOpULessThan: *hasResult = true; *hasResultType = true; break;
1717 case SpvOpSLessThan: *hasResult = true; *hasResultType = true; break;
1718 case SpvOpULessThanEqual: *hasResult = true; *hasResultType = true; break;
1719 case SpvOpSLessThanEqual: *hasResult = true; *hasResultType = true; break;
1720 case SpvOpFOrdEqual: *hasResult = true; *hasResultType = true; break;
1721 case SpvOpFUnordEqual: *hasResult = true; *hasResultType = true; break;
1722 case SpvOpFOrdNotEqual: *hasResult = true; *hasResultType = true; break;
1723 case SpvOpFUnordNotEqual: *hasResult = true; *hasResultType = true; break;
1724 case SpvOpFOrdLessThan: *hasResult = true; *hasResultType = true; break;
1725 case SpvOpFUnordLessThan: *hasResult = true; *hasResultType = true; break;
1726 case SpvOpFOrdGreaterThan: *hasResult = true; *hasResultType = true; break;
1727 case SpvOpFUnordGreaterThan: *hasResult = true; *hasResultType = true; break;
1728 case SpvOpFOrdLessThanEqual: *hasResult = true; *hasResultType = true; break;
1729 case SpvOpFUnordLessThanEqual: *hasResult = true; *hasResultType = true; break;
1730 case SpvOpFOrdGreaterThanEqual: *hasResult = true; *hasResultType = true; break;
1731 case SpvOpFUnordGreaterThanEqual: *hasResult = true; *hasResultType = true; break;
1732 case SpvOpShiftRightLogical: *hasResult = true; *hasResultType = true; break;
1733 case SpvOpShiftRightArithmetic: *hasResult = true; *hasResultType = true; break;
1734 case SpvOpShiftLeftLogical: *hasResult = true; *hasResultType = true; break;
1735 case SpvOpBitwiseOr: *hasResult = true; *hasResultType = true; break;
1736 case SpvOpBitwiseXor: *hasResult = true; *hasResultType = true; break;
1737 case SpvOpBitwiseAnd: *hasResult = true; *hasResultType = true; break;
1738 case SpvOpNot: *hasResult = true; *hasResultType = true; break;
1739 case SpvOpBitFieldInsert: *hasResult = true; *hasResultType = true; break;
1740 case SpvOpBitFieldSExtract: *hasResult = true; *hasResultType = true; break;
1741 case SpvOpBitFieldUExtract: *hasResult = true; *hasResultType = true; break;
1742 case SpvOpBitReverse: *hasResult = true; *hasResultType = true; break;
1743 case SpvOpBitCount: *hasResult = true; *hasResultType = true; break;
1744 case SpvOpDPdx: *hasResult = true; *hasResultType = true; break;
1745 case SpvOpDPdy: *hasResult = true; *hasResultType = true; break;
1746 case SpvOpFwidth: *hasResult = true; *hasResultType = true; break;
1747 case SpvOpDPdxFine: *hasResult = true; *hasResultType = true; break;
1748 case SpvOpDPdyFine: *hasResult = true; *hasResultType = true; break;
1749 case SpvOpFwidthFine: *hasResult = true; *hasResultType = true; break;
1750 case SpvOpDPdxCoarse: *hasResult = true; *hasResultType = true; break;
1751 case SpvOpDPdyCoarse: *hasResult = true; *hasResultType = true; break;
1752 case SpvOpFwidthCoarse: *hasResult = true; *hasResultType = true; break;
1753 case SpvOpEmitVertex: *hasResult = false; *hasResultType = false; break;
1754 case SpvOpEndPrimitive: *hasResult = false; *hasResultType = false; break;
1755 case SpvOpEmitStreamVertex: *hasResult = false; *hasResultType = false; break;
1756 case SpvOpEndStreamPrimitive: *hasResult = false; *hasResultType = false; break;
1757 case SpvOpControlBarrier: *hasResult = false; *hasResultType = false; break;
1758 case SpvOpMemoryBarrier: *hasResult = false; *hasResultType = false; break;
1759 case SpvOpAtomicLoad: *hasResult = true; *hasResultType = true; break;
1760 case SpvOpAtomicStore: *hasResult = false; *hasResultType = false; break;
1761 case SpvOpAtomicExchange: *hasResult = true; *hasResultType = true; break;
1762 case SpvOpAtomicCompareExchange: *hasResult = true; *hasResultType = true; break;
1763 case SpvOpAtomicCompareExchangeWeak: *hasResult = true; *hasResultType = true; break;
1764 case SpvOpAtomicIIncrement: *hasResult = true; *hasResultType = true; break;
1765 case SpvOpAtomicIDecrement: *hasResult = true; *hasResultType = true; break;
1766 case SpvOpAtomicIAdd: *hasResult = true; *hasResultType = true; break;
1767 case SpvOpAtomicISub: *hasResult = true; *hasResultType = true; break;
1768 case SpvOpAtomicSMin: *hasResult = true; *hasResultType = true; break;
1769 case SpvOpAtomicUMin: *hasResult = true; *hasResultType = true; break;
1770 case SpvOpAtomicSMax: *hasResult = true; *hasResultType = true; break;
1771 case SpvOpAtomicUMax: *hasResult = true; *hasResultType = true; break;
1772 case SpvOpAtomicAnd: *hasResult = true; *hasResultType = true; break;
1773 case SpvOpAtomicOr: *hasResult = true; *hasResultType = true; break;
1774 case SpvOpAtomicXor: *hasResult = true; *hasResultType = true; break;
1775 case SpvOpPhi: *hasResult = true; *hasResultType = true; break;
1776 case SpvOpLoopMerge: *hasResult = false; *hasResultType = false; break;
1777 case SpvOpSelectionMerge: *hasResult = false; *hasResultType = false; break;
1778 case SpvOpLabel: *hasResult = true; *hasResultType = false; break;
1779 case SpvOpBranch: *hasResult = false; *hasResultType = false; break;
1780 case SpvOpBranchConditional: *hasResult = false; *hasResultType = false; break;
1781 case SpvOpSwitch: *hasResult = false; *hasResultType = false; break;
1782 case SpvOpKill: *hasResult = false; *hasResultType = false; break;
1783 case SpvOpReturn: *hasResult = false; *hasResultType = false; break;
1784 case SpvOpReturnValue: *hasResult = false; *hasResultType = false; break;
1785 case SpvOpUnreachable: *hasResult = false; *hasResultType = false; break;
1786 case SpvOpLifetimeStart: *hasResult = false; *hasResultType = false; break;
1787 case SpvOpLifetimeStop: *hasResult = false; *hasResultType = false; break;
1788 case SpvOpGroupAsyncCopy: *hasResult = true; *hasResultType = true; break;
1789 case SpvOpGroupWaitEvents: *hasResult = false; *hasResultType = false; break;
1790 case SpvOpGroupAll: *hasResult = true; *hasResultType = true; break;
1791 case SpvOpGroupAny: *hasResult = true; *hasResultType = true; break;
1792 case SpvOpGroupBroadcast: *hasResult = true; *hasResultType = true; break;
1793 case SpvOpGroupIAdd: *hasResult = true; *hasResultType = true; break;
1794 case SpvOpGroupFAdd: *hasResult = true; *hasResultType = true; break;
1795 case SpvOpGroupFMin: *hasResult = true; *hasResultType = true; break;
1796 case SpvOpGroupUMin: *hasResult = true; *hasResultType = true; break;
1797 case SpvOpGroupSMin: *hasResult = true; *hasResultType = true; break;
1798 case SpvOpGroupFMax: *hasResult = true; *hasResultType = true; break;
1799 case SpvOpGroupUMax: *hasResult = true; *hasResultType = true; break;
1800 case SpvOpGroupSMax: *hasResult = true; *hasResultType = true; break;
1801 case SpvOpReadPipe: *hasResult = true; *hasResultType = true; break;
1802 case SpvOpWritePipe: *hasResult = true; *hasResultType = true; break;
1803 case SpvOpReservedReadPipe: *hasResult = true; *hasResultType = true; break;
1804 case SpvOpReservedWritePipe: *hasResult = true; *hasResultType = true; break;
1805 case SpvOpReserveReadPipePackets: *hasResult = true; *hasResultType = true; break;
1806 case SpvOpReserveWritePipePackets: *hasResult = true; *hasResultType = true; break;
1807 case SpvOpCommitReadPipe: *hasResult = false; *hasResultType = false; break;
1808 case SpvOpCommitWritePipe: *hasResult = false; *hasResultType = false; break;
1809 case SpvOpIsValidReserveId: *hasResult = true; *hasResultType = true; break;
1810 case SpvOpGetNumPipePackets: *hasResult = true; *hasResultType = true; break;
1811 case SpvOpGetMaxPipePackets: *hasResult = true; *hasResultType = true; break;
1812 case SpvOpGroupReserveReadPipePackets: *hasResult = true; *hasResultType = true; break;
1813 case SpvOpGroupReserveWritePipePackets: *hasResult = true; *hasResultType = true; break;
1814 case SpvOpGroupCommitReadPipe: *hasResult = false; *hasResultType = false; break;
1815 case SpvOpGroupCommitWritePipe: *hasResult = false; *hasResultType = false; break;
1816 case SpvOpEnqueueMarker: *hasResult = true; *hasResultType = true; break;
1817 case SpvOpEnqueueKernel: *hasResult = true; *hasResultType = true; break;
1818 case SpvOpGetKernelNDrangeSubGroupCount: *hasResult = true; *hasResultType = true; break;
1819 case SpvOpGetKernelNDrangeMaxSubGroupSize: *hasResult = true; *hasResultType = true; break;
1820 case SpvOpGetKernelWorkGroupSize: *hasResult = true; *hasResultType = true; break;
1821 case SpvOpGetKernelPreferredWorkGroupSizeMultiple: *hasResult = true; *hasResultType = true; break;
1822 case SpvOpRetainEvent: *hasResult = false; *hasResultType = false; break;
1823 case SpvOpReleaseEvent: *hasResult = false; *hasResultType = false; break;
1824 case SpvOpCreateUserEvent: *hasResult = true; *hasResultType = true; break;
1825 case SpvOpIsValidEvent: *hasResult = true; *hasResultType = true; break;
1826 case SpvOpSetUserEventStatus: *hasResult = false; *hasResultType = false; break;
1827 case SpvOpCaptureEventProfilingInfo: *hasResult = false; *hasResultType = false; break;
1828 case SpvOpGetDefaultQueue: *hasResult = true; *hasResultType = true; break;
1829 case SpvOpBuildNDRange: *hasResult = true; *hasResultType = true; break;
1830 case SpvOpImageSparseSampleImplicitLod: *hasResult = true; *hasResultType = true; break;
1831 case SpvOpImageSparseSampleExplicitLod: *hasResult = true; *hasResultType = true; break;
1832 case SpvOpImageSparseSampleDrefImplicitLod: *hasResult = true; *hasResultType = true; break;
1833 case SpvOpImageSparseSampleDrefExplicitLod: *hasResult = true; *hasResultType = true; break;
1834 case SpvOpImageSparseSampleProjImplicitLod: *hasResult = true; *hasResultType = true; break;
1835 case SpvOpImageSparseSampleProjExplicitLod: *hasResult = true; *hasResultType = true; break;
1836 case SpvOpImageSparseSampleProjDrefImplicitLod: *hasResult = true; *hasResultType = true; break;
1837 case SpvOpImageSparseSampleProjDrefExplicitLod: *hasResult = true; *hasResultType = true; break;
1838 case SpvOpImageSparseFetch: *hasResult = true; *hasResultType = true; break;
1839 case SpvOpImageSparseGather: *hasResult = true; *hasResultType = true; break;
1840 case SpvOpImageSparseDrefGather: *hasResult = true; *hasResultType = true; break;
1841 case SpvOpImageSparseTexelsResident: *hasResult = true; *hasResultType = true; break;
1842 case SpvOpNoLine: *hasResult = false; *hasResultType = false; break;
1843 case SpvOpAtomicFlagTestAndSet: *hasResult = true; *hasResultType = true; break;
1844 case SpvOpAtomicFlagClear: *hasResult = false; *hasResultType = false; break;
1845 case SpvOpImageSparseRead: *hasResult = true; *hasResultType = true; break;
1846 case SpvOpSizeOf: *hasResult = true; *hasResultType = true; break;
1847 case SpvOpTypePipeStorage: *hasResult = true; *hasResultType = false; break;
1848 case SpvOpConstantPipeStorage: *hasResult = true; *hasResultType = true; break;
1849 case SpvOpCreatePipeFromPipeStorage: *hasResult = true; *hasResultType = true; break;
1850 case SpvOpGetKernelLocalSizeForSubgroupCount: *hasResult = true; *hasResultType = true; break;
1851 case SpvOpGetKernelMaxNumSubgroups: *hasResult = true; *hasResultType = true; break;
1852 case SpvOpTypeNamedBarrier: *hasResult = true; *hasResultType = false; break;
1853 case SpvOpNamedBarrierInitialize: *hasResult = true; *hasResultType = true; break;
1854 case SpvOpMemoryNamedBarrier: *hasResult = false; *hasResultType = false; break;
1855 case SpvOpModuleProcessed: *hasResult = false; *hasResultType = false; break;
1856 case SpvOpExecutionModeId: *hasResult = false; *hasResultType = false; break;
1857 case SpvOpDecorateId: *hasResult = false; *hasResultType = false; break;
1858 case SpvOpGroupNonUniformElect: *hasResult = true; *hasResultType = true; break;
1859 case SpvOpGroupNonUniformAll: *hasResult = true; *hasResultType = true; break;
1860 case SpvOpGroupNonUniformAny: *hasResult = true; *hasResultType = true; break;
1861 case SpvOpGroupNonUniformAllEqual: *hasResult = true; *hasResultType = true; break;
1862 case SpvOpGroupNonUniformBroadcast: *hasResult = true; *hasResultType = true; break;
1863 case SpvOpGroupNonUniformBroadcastFirst: *hasResult = true; *hasResultType = true; break;
1864 case SpvOpGroupNonUniformBallot: *hasResult = true; *hasResultType = true; break;
1865 case SpvOpGroupNonUniformInverseBallot: *hasResult = true; *hasResultType = true; break;
1866 case SpvOpGroupNonUniformBallotBitExtract: *hasResult = true; *hasResultType = true; break;
1867 case SpvOpGroupNonUniformBallotBitCount: *hasResult = true; *hasResultType = true; break;
1868 case SpvOpGroupNonUniformBallotFindLSB: *hasResult = true; *hasResultType = true; break;
1869 case SpvOpGroupNonUniformBallotFindMSB: *hasResult = true; *hasResultType = true; break;
1870 case SpvOpGroupNonUniformShuffle: *hasResult = true; *hasResultType = true; break;
1871 case SpvOpGroupNonUniformShuffleXor: *hasResult = true; *hasResultType = true; break;
1872 case SpvOpGroupNonUniformShuffleUp: *hasResult = true; *hasResultType = true; break;
1873 case SpvOpGroupNonUniformShuffleDown: *hasResult = true; *hasResultType = true; break;
1874 case SpvOpGroupNonUniformIAdd: *hasResult = true; *hasResultType = true; break;
1875 case SpvOpGroupNonUniformFAdd: *hasResult = true; *hasResultType = true; break;
1876 case SpvOpGroupNonUniformIMul: *hasResult = true; *hasResultType = true; break;
1877 case SpvOpGroupNonUniformFMul: *hasResult = true; *hasResultType = true; break;
1878 case SpvOpGroupNonUniformSMin: *hasResult = true; *hasResultType = true; break;
1879 case SpvOpGroupNonUniformUMin: *hasResult = true; *hasResultType = true; break;
1880 case SpvOpGroupNonUniformFMin: *hasResult = true; *hasResultType = true; break;
1881 case SpvOpGroupNonUniformSMax: *hasResult = true; *hasResultType = true; break;
1882 case SpvOpGroupNonUniformUMax: *hasResult = true; *hasResultType = true; break;
1883 case SpvOpGroupNonUniformFMax: *hasResult = true; *hasResultType = true; break;
1884 case SpvOpGroupNonUniformBitwiseAnd: *hasResult = true; *hasResultType = true; break;
1885 case SpvOpGroupNonUniformBitwiseOr: *hasResult = true; *hasResultType = true; break;
1886 case SpvOpGroupNonUniformBitwiseXor: *hasResult = true; *hasResultType = true; break;
1887 case SpvOpGroupNonUniformLogicalAnd: *hasResult = true; *hasResultType = true; break;
1888 case SpvOpGroupNonUniformLogicalOr: *hasResult = true; *hasResultType = true; break;
1889 case SpvOpGroupNonUniformLogicalXor: *hasResult = true; *hasResultType = true; break;
1890 case SpvOpGroupNonUniformQuadBroadcast: *hasResult = true; *hasResultType = true; break;
1891 case SpvOpGroupNonUniformQuadSwap: *hasResult = true; *hasResultType = true; break;
1892 case SpvOpCopyLogical: *hasResult = true; *hasResultType = true; break;
1893 case SpvOpPtrEqual: *hasResult = true; *hasResultType = true; break;
1894 case SpvOpPtrNotEqual: *hasResult = true; *hasResultType = true; break;
1895 case SpvOpPtrDiff: *hasResult = true; *hasResultType = true; break;
1896 case SpvOpSubgroupBallotKHR: *hasResult = true; *hasResultType = true; break;
1897 case SpvOpSubgroupFirstInvocationKHR: *hasResult = true; *hasResultType = true; break;
1898 case SpvOpSubgroupAllKHR: *hasResult = true; *hasResultType = true; break;
1899 case SpvOpSubgroupAnyKHR: *hasResult = true; *hasResultType = true; break;
1900 case SpvOpSubgroupAllEqualKHR: *hasResult = true; *hasResultType = true; break;
1901 case SpvOpSubgroupReadInvocationKHR: *hasResult = true; *hasResultType = true; break;
1902 case SpvOpGroupIAddNonUniformAMD: *hasResult = true; *hasResultType = true; break;
1903 case SpvOpGroupFAddNonUniformAMD: *hasResult = true; *hasResultType = true; break;
1904 case SpvOpGroupFMinNonUniformAMD: *hasResult = true; *hasResultType = true; break;
1905 case SpvOpGroupUMinNonUniformAMD: *hasResult = true; *hasResultType = true; break;
1906 case SpvOpGroupSMinNonUniformAMD: *hasResult = true; *hasResultType = true; break;
1907 case SpvOpGroupFMaxNonUniformAMD: *hasResult = true; *hasResultType = true; break;
1908 case SpvOpGroupUMaxNonUniformAMD: *hasResult = true; *hasResultType = true; break;
1909 case SpvOpGroupSMaxNonUniformAMD: *hasResult = true; *hasResultType = true; break;
1910 case SpvOpFragmentMaskFetchAMD: *hasResult = true; *hasResultType = true; break;
1911 case SpvOpFragmentFetchAMD: *hasResult = true; *hasResultType = true; break;
1912 case SpvOpReadClockKHR: *hasResult = true; *hasResultType = true; break;
1913 case SpvOpImageSampleFootprintNV: *hasResult = true; *hasResultType = true; break;
1914 case SpvOpGroupNonUniformPartitionNV: *hasResult = true; *hasResultType = true; break;
1915 case SpvOpWritePackedPrimitiveIndices4x8NV: *hasResult = false; *hasResultType = false; break;
1916 case SpvOpReportIntersectionNV: *hasResult = true; *hasResultType = true; break;
1917 case SpvOpIgnoreIntersectionNV: *hasResult = false; *hasResultType = false; break;
1918 case SpvOpTerminateRayNV: *hasResult = false; *hasResultType = false; break;
1919 case SpvOpTraceNV: *hasResult = false; *hasResultType = false; break;
1920 case SpvOpTypeAccelerationStructureNV: *hasResult = true; *hasResultType = false; break;
1921 case SpvOpTypeRayQueryProvisionalKHR: *hasResult = true; *hasResultType = false; break;
1922 case SpvOpRayQueryInitializeKHR: *hasResult = false; *hasResultType = false; break;
1923 case SpvOpRayQueryTerminateKHR: *hasResult = false; *hasResultType = false; break;
1924 case SpvOpRayQueryGenerateIntersectionKHR: *hasResult = false; *hasResultType = false; break;
1925 case SpvOpRayQueryConfirmIntersectionKHR: *hasResult = false; *hasResultType = false; break;
1926 case SpvOpRayQueryProceedKHR: *hasResult = true; *hasResultType = true; break;
1927 case SpvOpRayQueryGetIntersectionTypeKHR: *hasResult = true; *hasResultType = true; break;
1928 case SpvOpRayQueryGetRayTMinKHR: *hasResult = true; *hasResultType = true; break;
1929 case SpvOpRayQueryGetRayFlagsKHR: *hasResult = true; *hasResultType = true; break;
1930 case SpvOpRayQueryGetIntersectionTKHR: *hasResult = true; *hasResultType = true; break;
1931 case SpvOpRayQueryGetIntersectionInstanceCustomIndexKHR: *hasResult = true; *hasResultType = true; break;
1932 case SpvOpRayQueryGetIntersectionInstanceIdKHR: *hasResult = true; *hasResultType = true; break;
1933 case SpvOpRayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR: *hasResult = true; *hasResultType = true; break;
1934 case SpvOpRayQueryGetIntersectionGeometryIndexKHR: *hasResult = true; *hasResultType = true; break;
1935 case SpvOpRayQueryGetIntersectionPrimitiveIndexKHR: *hasResult = true; *hasResultType = true; break;
1936 case SpvOpRayQueryGetIntersectionBarycentricsKHR: *hasResult = true; *hasResultType = true; break;
1937 case SpvOpRayQueryGetIntersectionFrontFaceKHR: *hasResult = true; *hasResultType = true; break;
1938 case SpvOpRayQueryGetIntersectionCandidateAABBOpaqueKHR: *hasResult = true; *hasResultType = true; break;
1939 case SpvOpRayQueryGetIntersectionObjectRayDirectionKHR: *hasResult = true; *hasResultType = true; break;
1940 case SpvOpRayQueryGetIntersectionObjectRayOriginKHR: *hasResult = true; *hasResultType = true; break;
1941 case SpvOpRayQueryGetWorldRayDirectionKHR: *hasResult = true; *hasResultType = true; break;
1942 case SpvOpRayQueryGetWorldRayOriginKHR: *hasResult = true; *hasResultType = true; break;
1943 case SpvOpRayQueryGetIntersectionObjectToWorldKHR: *hasResult = true; *hasResultType = true; break;
1944 case SpvOpRayQueryGetIntersectionWorldToObjectKHR: *hasResult = true; *hasResultType = true; break;
1945 case SpvOpExecuteCallableNV: *hasResult = false; *hasResultType = false; break;
1946 case SpvOpTypeCooperativeMatrixNV: *hasResult = true; *hasResultType = false; break;
1947 case SpvOpCooperativeMatrixLoadNV: *hasResult = true; *hasResultType = true; break;
1948 case SpvOpCooperativeMatrixStoreNV: *hasResult = false; *hasResultType = false; break;
1949 case SpvOpCooperativeMatrixMulAddNV: *hasResult = true; *hasResultType = true; break;
1950 case SpvOpCooperativeMatrixLengthNV: *hasResult = true; *hasResultType = true; break;
1951 case SpvOpBeginInvocationInterlockEXT: *hasResult = false; *hasResultType = false; break;
1952 case SpvOpEndInvocationInterlockEXT: *hasResult = false; *hasResultType = false; break;
1953 case SpvOpDemoteToHelperInvocationEXT: *hasResult = false; *hasResultType = false; break;
1954 case SpvOpIsHelperInvocationEXT: *hasResult = true; *hasResultType = true; break;
1955 case SpvOpSubgroupShuffleINTEL: *hasResult = true; *hasResultType = true; break;
1956 case SpvOpSubgroupShuffleDownINTEL: *hasResult = true; *hasResultType = true; break;
1957 case SpvOpSubgroupShuffleUpINTEL: *hasResult = true; *hasResultType = true; break;
1958 case SpvOpSubgroupShuffleXorINTEL: *hasResult = true; *hasResultType = true; break;
1959 case SpvOpSubgroupBlockReadINTEL: *hasResult = true; *hasResultType = true; break;
1960 case SpvOpSubgroupBlockWriteINTEL: *hasResult = false; *hasResultType = false; break;
1961 case SpvOpSubgroupImageBlockReadINTEL: *hasResult = true; *hasResultType = true; break;
1962 case SpvOpSubgroupImageBlockWriteINTEL: *hasResult = false; *hasResultType = false; break;
1963 case SpvOpSubgroupImageMediaBlockReadINTEL: *hasResult = true; *hasResultType = true; break;
1964 case SpvOpSubgroupImageMediaBlockWriteINTEL: *hasResult = false; *hasResultType = false; break;
1965 case SpvOpUCountLeadingZerosINTEL: *hasResult = true; *hasResultType = true; break;
1966 case SpvOpUCountTrailingZerosINTEL: *hasResult = true; *hasResultType = true; break;
1967 case SpvOpAbsISubINTEL: *hasResult = true; *hasResultType = true; break;
1968 case SpvOpAbsUSubINTEL: *hasResult = true; *hasResultType = true; break;
1969 case SpvOpIAddSatINTEL: *hasResult = true; *hasResultType = true; break;
1970 case SpvOpUAddSatINTEL: *hasResult = true; *hasResultType = true; break;
1971 case SpvOpIAverageINTEL: *hasResult = true; *hasResultType = true; break;
1972 case SpvOpUAverageINTEL: *hasResult = true; *hasResultType = true; break;
1973 case SpvOpIAverageRoundedINTEL: *hasResult = true; *hasResultType = true; break;
1974 case SpvOpUAverageRoundedINTEL: *hasResult = true; *hasResultType = true; break;
1975 case SpvOpISubSatINTEL: *hasResult = true; *hasResultType = true; break;
1976 case SpvOpUSubSatINTEL: *hasResult = true; *hasResultType = true; break;
1977 case SpvOpIMul32x16INTEL: *hasResult = true; *hasResultType = true; break;
1978 case SpvOpUMul32x16INTEL: *hasResult = true; *hasResultType = true; break;
1979 case SpvOpDecorateString: *hasResult = false; *hasResultType = false; break;
1980 case SpvOpMemberDecorateString: *hasResult = false; *hasResultType = false; break;
1981 case SpvOpVmeImageINTEL: *hasResult = true; *hasResultType = true; break;
1982 case SpvOpTypeVmeImageINTEL: *hasResult = true; *hasResultType = false; break;
1983 case SpvOpTypeAvcImePayloadINTEL: *hasResult = true; *hasResultType = false; break;
1984 case SpvOpTypeAvcRefPayloadINTEL: *hasResult = true; *hasResultType = false; break;
1985 case SpvOpTypeAvcSicPayloadINTEL: *hasResult = true; *hasResultType = false; break;
1986 case SpvOpTypeAvcMcePayloadINTEL: *hasResult = true; *hasResultType = false; break;
1987 case SpvOpTypeAvcMceResultINTEL: *hasResult = true; *hasResultType = false; break;
1988 case SpvOpTypeAvcImeResultINTEL: *hasResult = true; *hasResultType = false; break;
1989 case SpvOpTypeAvcImeResultSingleReferenceStreamoutINTEL: *hasResult = true; *hasResultType = false; break;
1990 case SpvOpTypeAvcImeResultDualReferenceStreamoutINTEL: *hasResult = true; *hasResultType = false; break;
1991 case SpvOpTypeAvcImeSingleReferenceStreaminINTEL: *hasResult = true; *hasResultType = false; break;
1992 case SpvOpTypeAvcImeDualReferenceStreaminINTEL: *hasResult = true; *hasResultType = false; break;
1993 case SpvOpTypeAvcRefResultINTEL: *hasResult = true; *hasResultType = false; break;
1994 case SpvOpTypeAvcSicResultINTEL: *hasResult = true; *hasResultType = false; break;
1995 case SpvOpSubgroupAvcMceGetDefaultInterBaseMultiReferencePenaltyINTEL: *hasResult = true; *hasResultType = true; break;
1996 case SpvOpSubgroupAvcMceSetInterBaseMultiReferencePenaltyINTEL: *hasResult = true; *hasResultType = true; break;
1997 case SpvOpSubgroupAvcMceGetDefaultInterShapePenaltyINTEL: *hasResult = true; *hasResultType = true; break;
1998 case SpvOpSubgroupAvcMceSetInterShapePenaltyINTEL: *hasResult = true; *hasResultType = true; break;
1999 case SpvOpSubgroupAvcMceGetDefaultInterDirectionPenaltyINTEL: *hasResult = true; *hasResultType = true; break;
2000 case SpvOpSubgroupAvcMceSetInterDirectionPenaltyINTEL: *hasResult = true; *hasResultType = true; break;
2001 case SpvOpSubgroupAvcMceGetDefaultIntraLumaShapePenaltyINTEL: *hasResult = true; *hasResultType = true; break;
2002 case SpvOpSubgroupAvcMceGetDefaultInterMotionVectorCostTableINTEL: *hasResult = true; *hasResultType = true; break;
2003 case SpvOpSubgroupAvcMceGetDefaultHighPenaltyCostTableINTEL: *hasResult = true; *hasResultType = true; break;
2004 case SpvOpSubgroupAvcMceGetDefaultMediumPenaltyCostTableINTEL: *hasResult = true; *hasResultType = true; break;
2005 case SpvOpSubgroupAvcMceGetDefaultLowPenaltyCostTableINTEL: *hasResult = true; *hasResultType = true; break;
2006 case SpvOpSubgroupAvcMceSetMotionVectorCostFunctionINTEL: *hasResult = true; *hasResultType = true; break;
2007 case SpvOpSubgroupAvcMceGetDefaultIntraLumaModePenaltyINTEL: *hasResult = true; *hasResultType = true; break;
2008 case SpvOpSubgroupAvcMceGetDefaultNonDcLumaIntraPenaltyINTEL: *hasResult = true; *hasResultType = true; break;
2009 case SpvOpSubgroupAvcMceGetDefaultIntraChromaModeBasePenaltyINTEL: *hasResult = true; *hasResultType = true; break;
2010 case SpvOpSubgroupAvcMceSetAcOnlyHaarINTEL: *hasResult = true; *hasResultType = true; break;
2011 case SpvOpSubgroupAvcMceSetSourceInterlacedFieldPolarityINTEL: *hasResult = true; *hasResultType = true; break;
2012 case SpvOpSubgroupAvcMceSetSingleReferenceInterlacedFieldPolarityINTEL: *hasResult = true; *hasResultType = true; break;
2013 case SpvOpSubgroupAvcMceSetDualReferenceInterlacedFieldPolaritiesINTEL: *hasResult = true; *hasResultType = true; break;
2014 case SpvOpSubgroupAvcMceConvertToImePayloadINTEL: *hasResult = true; *hasResultType = true; break;
2015 case SpvOpSubgroupAvcMceConvertToImeResultINTEL: *hasResult = true; *hasResultType = true; break;
2016 case SpvOpSubgroupAvcMceConvertToRefPayloadINTEL: *hasResult = true; *hasResultType = true; break;
2017 case SpvOpSubgroupAvcMceConvertToRefResultINTEL: *hasResult = true; *hasResultType = true; break;
2018 case SpvOpSubgroupAvcMceConvertToSicPayloadINTEL: *hasResult = true; *hasResultType = true; break;
2019 case SpvOpSubgroupAvcMceConvertToSicResultINTEL: *hasResult = true; *hasResultType = true; break;
2020 case SpvOpSubgroupAvcMceGetMotionVectorsINTEL: *hasResult = true; *hasResultType = true; break;
2021 case SpvOpSubgroupAvcMceGetInterDistortionsINTEL: *hasResult = true; *hasResultType = true; break;
2022 case SpvOpSubgroupAvcMceGetBestInterDistortionsINTEL: *hasResult = true; *hasResultType = true; break;
2023 case SpvOpSubgroupAvcMceGetInterMajorShapeINTEL: *hasResult = true; *hasResultType = true; break;
2024 case SpvOpSubgroupAvcMceGetInterMinorShapeINTEL: *hasResult = true; *hasResultType = true; break;
2025 case SpvOpSubgroupAvcMceGetInterDirectionsINTEL: *hasResult = true; *hasResultType = true; break;
2026 case SpvOpSubgroupAvcMceGetInterMotionVectorCountINTEL: *hasResult = true; *hasResultType = true; break;
2027 case SpvOpSubgroupAvcMceGetInterReferenceIdsINTEL: *hasResult = true; *hasResultType = true; break;
2028 case SpvOpSubgroupAvcMceGetInterReferenceInterlacedFieldPolaritiesINTEL: *hasResult = true; *hasResultType = true; break;
2029 case SpvOpSubgroupAvcImeInitializeINTEL: *hasResult = true; *hasResultType = true; break;
2030 case SpvOpSubgroupAvcImeSetSingleReferenceINTEL: *hasResult = true; *hasResultType = true; break;
2031 case SpvOpSubgroupAvcImeSetDualReferenceINTEL: *hasResult = true; *hasResultType = true; break;
2032 case SpvOpSubgroupAvcImeRefWindowSizeINTEL: *hasResult = true; *hasResultType = true; break;
2033 case SpvOpSubgroupAvcImeAdjustRefOffsetINTEL: *hasResult = true; *hasResultType = true; break;
2034 case SpvOpSubgroupAvcImeConvertToMcePayloadINTEL: *hasResult = true; *hasResultType = true; break;
2035 case SpvOpSubgroupAvcImeSetMaxMotionVectorCountINTEL: *hasResult = true; *hasResultType = true; break;
2036 case SpvOpSubgroupAvcImeSetUnidirectionalMixDisableINTEL: *hasResult = true; *hasResultType = true; break;
2037 case SpvOpSubgroupAvcImeSetEarlySearchTerminationThresholdINTEL: *hasResult = true; *hasResultType = true; break;
2038 case SpvOpSubgroupAvcImeSetWeightedSadINTEL: *hasResult = true; *hasResultType = true; break;
2039 case SpvOpSubgroupAvcImeEvaluateWithSingleReferenceINTEL: *hasResult = true; *hasResultType = true; break;
2040 case SpvOpSubgroupAvcImeEvaluateWithDualReferenceINTEL: *hasResult = true; *hasResultType = true; break;
2041 case SpvOpSubgroupAvcImeEvaluateWithSingleReferenceStreaminINTEL: *hasResult = true; *hasResultType = true; break;
2042 case SpvOpSubgroupAvcImeEvaluateWithDualReferenceStreaminINTEL: *hasResult = true; *hasResultType = true; break;
2043 case SpvOpSubgroupAvcImeEvaluateWithSingleReferenceStreamoutINTEL: *hasResult = true; *hasResultType = true; break;
2044 case SpvOpSubgroupAvcImeEvaluateWithDualReferenceStreamoutINTEL: *hasResult = true; *hasResultType = true; break;
2045 case SpvOpSubgroupAvcImeEvaluateWithSingleReferenceStreaminoutINTEL: *hasResult = true; *hasResultType = true; break;
2046 case SpvOpSubgroupAvcImeEvaluateWithDualReferenceStreaminoutINTEL: *hasResult = true; *hasResultType = true; break;
2047 case SpvOpSubgroupAvcImeConvertToMceResultINTEL: *hasResult = true; *hasResultType = true; break;
2048 case SpvOpSubgroupAvcImeGetSingleReferenceStreaminINTEL: *hasResult = true; *hasResultType = true; break;
2049 case SpvOpSubgroupAvcImeGetDualReferenceStreaminINTEL: *hasResult = true; *hasResultType = true; break;
2050 case SpvOpSubgroupAvcImeStripSingleReferenceStreamoutINTEL: *hasResult = true; *hasResultType = true; break;
2051 case SpvOpSubgroupAvcImeStripDualReferenceStreamoutINTEL: *hasResult = true; *hasResultType = true; break;
2052 case SpvOpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeMotionVectorsINTEL: *hasResult = true; *hasResultType = true; break;
2053 case SpvOpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeDistortionsINTEL: *hasResult = true; *hasResultType = true; break;
2054 case SpvOpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeReferenceIdsINTEL: *hasResult = true; *hasResultType = true; break;
2055 case SpvOpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeMotionVectorsINTEL: *hasResult = true; *hasResultType = true; break;
2056 case SpvOpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeDistortionsINTEL: *hasResult = true; *hasResultType = true; break;
2057 case SpvOpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeReferenceIdsINTEL: *hasResult = true; *hasResultType = true; break;
2058 case SpvOpSubgroupAvcImeGetBorderReachedINTEL: *hasResult = true; *hasResultType = true; break;
2059 case SpvOpSubgroupAvcImeGetTruncatedSearchIndicationINTEL: *hasResult = true; *hasResultType = true; break;
2060 case SpvOpSubgroupAvcImeGetUnidirectionalEarlySearchTerminationINTEL: *hasResult = true; *hasResultType = true; break;
2061 case SpvOpSubgroupAvcImeGetWeightingPatternMinimumMotionVectorINTEL: *hasResult = true; *hasResultType = true; break;
2062 case SpvOpSubgroupAvcImeGetWeightingPatternMinimumDistortionINTEL: *hasResult = true; *hasResultType = true; break;
2063 case SpvOpSubgroupAvcFmeInitializeINTEL: *hasResult = true; *hasResultType = true; break;
2064 case SpvOpSubgroupAvcBmeInitializeINTEL: *hasResult = true; *hasResultType = true; break;
2065 case SpvOpSubgroupAvcRefConvertToMcePayloadINTEL: *hasResult = true; *hasResultType = true; break;
2066 case SpvOpSubgroupAvcRefSetBidirectionalMixDisableINTEL: *hasResult = true; *hasResultType = true; break;
2067 case SpvOpSubgroupAvcRefSetBilinearFilterEnableINTEL: *hasResult = true; *hasResultType = true; break;
2068 case SpvOpSubgroupAvcRefEvaluateWithSingleReferenceINTEL: *hasResult = true; *hasResultType = true; break;
2069 case SpvOpSubgroupAvcRefEvaluateWithDualReferenceINTEL: *hasResult = true; *hasResultType = true; break;
2070 case SpvOpSubgroupAvcRefEvaluateWithMultiReferenceINTEL: *hasResult = true; *hasResultType = true; break;
2071 case SpvOpSubgroupAvcRefEvaluateWithMultiReferenceInterlacedINTEL: *hasResult = true; *hasResultType = true; break;
2072 case SpvOpSubgroupAvcRefConvertToMceResultINTEL: *hasResult = true; *hasResultType = true; break;
2073 case SpvOpSubgroupAvcSicInitializeINTEL: *hasResult = true; *hasResultType = true; break;
2074 case SpvOpSubgroupAvcSicConfigureSkcINTEL: *hasResult = true; *hasResultType = true; break;
2075 case SpvOpSubgroupAvcSicConfigureIpeLumaINTEL: *hasResult = true; *hasResultType = true; break;
2076 case SpvOpSubgroupAvcSicConfigureIpeLumaChromaINTEL: *hasResult = true; *hasResultType = true; break;
2077 case SpvOpSubgroupAvcSicGetMotionVectorMaskINTEL: *hasResult = true; *hasResultType = true; break;
2078 case SpvOpSubgroupAvcSicConvertToMcePayloadINTEL: *hasResult = true; *hasResultType = true; break;
2079 case SpvOpSubgroupAvcSicSetIntraLumaShapePenaltyINTEL: *hasResult = true; *hasResultType = true; break;
2080 case SpvOpSubgroupAvcSicSetIntraLumaModeCostFunctionINTEL: *hasResult = true; *hasResultType = true; break;
2081 case SpvOpSubgroupAvcSicSetIntraChromaModeCostFunctionINTEL: *hasResult = true; *hasResultType = true; break;
2082 case SpvOpSubgroupAvcSicSetBilinearFilterEnableINTEL: *hasResult = true; *hasResultType = true; break;
2083 case SpvOpSubgroupAvcSicSetSkcForwardTransformEnableINTEL: *hasResult = true; *hasResultType = true; break;
2084 case SpvOpSubgroupAvcSicSetBlockBasedRawSkipSadINTEL: *hasResult = true; *hasResultType = true; break;
2085 case SpvOpSubgroupAvcSicEvaluateIpeINTEL: *hasResult = true; *hasResultType = true; break;
2086 case SpvOpSubgroupAvcSicEvaluateWithSingleReferenceINTEL: *hasResult = true; *hasResultType = true; break;
2087 case SpvOpSubgroupAvcSicEvaluateWithDualReferenceINTEL: *hasResult = true; *hasResultType = true; break;
2088 case SpvOpSubgroupAvcSicEvaluateWithMultiReferenceINTEL: *hasResult = true; *hasResultType = true; break;
2089 case SpvOpSubgroupAvcSicEvaluateWithMultiReferenceInterlacedINTEL: *hasResult = true; *hasResultType = true; break;
2090 case SpvOpSubgroupAvcSicConvertToMceResultINTEL: *hasResult = true; *hasResultType = true; break;
2091 case SpvOpSubgroupAvcSicGetIpeLumaShapeINTEL: *hasResult = true; *hasResultType = true; break;
2092 case SpvOpSubgroupAvcSicGetBestIpeLumaDistortionINTEL: *hasResult = true; *hasResultType = true; break;
2093 case SpvOpSubgroupAvcSicGetBestIpeChromaDistortionINTEL: *hasResult = true; *hasResultType = true; break;
2094 case SpvOpSubgroupAvcSicGetPackedIpeLumaModesINTEL: *hasResult = true; *hasResultType = true; break;
2095 case SpvOpSubgroupAvcSicGetIpeChromaModeINTEL: *hasResult = true; *hasResultType = true; break;
2096 case SpvOpSubgroupAvcSicGetPackedSkcLumaCountThresholdINTEL: *hasResult = true; *hasResultType = true; break;
2097 case SpvOpSubgroupAvcSicGetPackedSkcLumaSumThresholdINTEL: *hasResult = true; *hasResultType = true; break;
2098 case SpvOpSubgroupAvcSicGetInterRawSadsINTEL: *hasResult = true; *hasResultType = true; break;
2099 }
2100}
2101#endif /* SPV_ENABLE_UTILITY_CODE */
2102
2103#endif
2104
2105