spirv: Include headers and grammar for SPV_KHR_8bit_storage
[mesa.git] / src / compiler / spirv / spirv.h
1 /*
2 ** Copyright (c) 2014-2018 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
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 **
42 ** Some tokens act like mask values, which can be OR'd together,
43 ** while others are mutually exclusive. The mask-like ones have
44 ** "Mask" in their name, and a parallel enum that has the shift
45 ** amount (1 << x) for each corresponding enumerant.
46 */
47
48 #ifndef spirv_H
49 #define spirv_H
50
51 typedef unsigned int SpvId;
52
53 #define SPV_VERSION 0x10300
54 #define SPV_REVISION 1
55
56 static const unsigned int SpvMagicNumber = 0x07230203;
57 static const unsigned int SpvVersion = 0x00010300;
58 static const unsigned int SpvRevision = 1;
59 static const unsigned int SpvOpCodeMask = 0xffff;
60 static const unsigned int SpvWordCountShift = 16;
61
62 typedef enum SpvSourceLanguage_ {
63 SpvSourceLanguageUnknown = 0,
64 SpvSourceLanguageESSL = 1,
65 SpvSourceLanguageGLSL = 2,
66 SpvSourceLanguageOpenCL_C = 3,
67 SpvSourceLanguageOpenCL_CPP = 4,
68 SpvSourceLanguageHLSL = 5,
69 SpvSourceLanguageMax = 0x7fffffff,
70 } SpvSourceLanguage;
71
72 typedef enum SpvExecutionModel_ {
73 SpvExecutionModelVertex = 0,
74 SpvExecutionModelTessellationControl = 1,
75 SpvExecutionModelTessellationEvaluation = 2,
76 SpvExecutionModelGeometry = 3,
77 SpvExecutionModelFragment = 4,
78 SpvExecutionModelGLCompute = 5,
79 SpvExecutionModelKernel = 6,
80 SpvExecutionModelMax = 0x7fffffff,
81 } SpvExecutionModel;
82
83 typedef enum SpvAddressingModel_ {
84 SpvAddressingModelLogical = 0,
85 SpvAddressingModelPhysical32 = 1,
86 SpvAddressingModelPhysical64 = 2,
87 SpvAddressingModelMax = 0x7fffffff,
88 } SpvAddressingModel;
89
90 typedef enum SpvMemoryModel_ {
91 SpvMemoryModelSimple = 0,
92 SpvMemoryModelGLSL450 = 1,
93 SpvMemoryModelOpenCL = 2,
94 SpvMemoryModelMax = 0x7fffffff,
95 } SpvMemoryModel;
96
97 typedef enum SpvExecutionMode_ {
98 SpvExecutionModeInvocations = 0,
99 SpvExecutionModeSpacingEqual = 1,
100 SpvExecutionModeSpacingFractionalEven = 2,
101 SpvExecutionModeSpacingFractionalOdd = 3,
102 SpvExecutionModeVertexOrderCw = 4,
103 SpvExecutionModeVertexOrderCcw = 5,
104 SpvExecutionModePixelCenterInteger = 6,
105 SpvExecutionModeOriginUpperLeft = 7,
106 SpvExecutionModeOriginLowerLeft = 8,
107 SpvExecutionModeEarlyFragmentTests = 9,
108 SpvExecutionModePointMode = 10,
109 SpvExecutionModeXfb = 11,
110 SpvExecutionModeDepthReplacing = 12,
111 SpvExecutionModeDepthGreater = 14,
112 SpvExecutionModeDepthLess = 15,
113 SpvExecutionModeDepthUnchanged = 16,
114 SpvExecutionModeLocalSize = 17,
115 SpvExecutionModeLocalSizeHint = 18,
116 SpvExecutionModeInputPoints = 19,
117 SpvExecutionModeInputLines = 20,
118 SpvExecutionModeInputLinesAdjacency = 21,
119 SpvExecutionModeTriangles = 22,
120 SpvExecutionModeInputTrianglesAdjacency = 23,
121 SpvExecutionModeQuads = 24,
122 SpvExecutionModeIsolines = 25,
123 SpvExecutionModeOutputVertices = 26,
124 SpvExecutionModeOutputPoints = 27,
125 SpvExecutionModeOutputLineStrip = 28,
126 SpvExecutionModeOutputTriangleStrip = 29,
127 SpvExecutionModeVecTypeHint = 30,
128 SpvExecutionModeContractionOff = 31,
129 SpvExecutionModeInitializer = 33,
130 SpvExecutionModeFinalizer = 34,
131 SpvExecutionModeSubgroupSize = 35,
132 SpvExecutionModeSubgroupsPerWorkgroup = 36,
133 SpvExecutionModeSubgroupsPerWorkgroupId = 37,
134 SpvExecutionModeLocalSizeId = 38,
135 SpvExecutionModeLocalSizeHintId = 39,
136 SpvExecutionModePostDepthCoverage = 4446,
137 SpvExecutionModeStencilRefReplacingEXT = 5027,
138 SpvExecutionModeMax = 0x7fffffff,
139 } SpvExecutionMode;
140
141 typedef enum SpvStorageClass_ {
142 SpvStorageClassUniformConstant = 0,
143 SpvStorageClassInput = 1,
144 SpvStorageClassUniform = 2,
145 SpvStorageClassOutput = 3,
146 SpvStorageClassWorkgroup = 4,
147 SpvStorageClassCrossWorkgroup = 5,
148 SpvStorageClassPrivate = 6,
149 SpvStorageClassFunction = 7,
150 SpvStorageClassGeneric = 8,
151 SpvStorageClassPushConstant = 9,
152 SpvStorageClassAtomicCounter = 10,
153 SpvStorageClassImage = 11,
154 SpvStorageClassStorageBuffer = 12,
155 SpvStorageClassMax = 0x7fffffff,
156 } SpvStorageClass;
157
158 typedef enum SpvDim_ {
159 SpvDim1D = 0,
160 SpvDim2D = 1,
161 SpvDim3D = 2,
162 SpvDimCube = 3,
163 SpvDimRect = 4,
164 SpvDimBuffer = 5,
165 SpvDimSubpassData = 6,
166 SpvDimMax = 0x7fffffff,
167 } SpvDim;
168
169 typedef enum SpvSamplerAddressingMode_ {
170 SpvSamplerAddressingModeNone = 0,
171 SpvSamplerAddressingModeClampToEdge = 1,
172 SpvSamplerAddressingModeClamp = 2,
173 SpvSamplerAddressingModeRepeat = 3,
174 SpvSamplerAddressingModeRepeatMirrored = 4,
175 SpvSamplerAddressingModeMax = 0x7fffffff,
176 } SpvSamplerAddressingMode;
177
178 typedef enum SpvSamplerFilterMode_ {
179 SpvSamplerFilterModeNearest = 0,
180 SpvSamplerFilterModeLinear = 1,
181 SpvSamplerFilterModeMax = 0x7fffffff,
182 } SpvSamplerFilterMode;
183
184 typedef enum SpvImageFormat_ {
185 SpvImageFormatUnknown = 0,
186 SpvImageFormatRgba32f = 1,
187 SpvImageFormatRgba16f = 2,
188 SpvImageFormatR32f = 3,
189 SpvImageFormatRgba8 = 4,
190 SpvImageFormatRgba8Snorm = 5,
191 SpvImageFormatRg32f = 6,
192 SpvImageFormatRg16f = 7,
193 SpvImageFormatR11fG11fB10f = 8,
194 SpvImageFormatR16f = 9,
195 SpvImageFormatRgba16 = 10,
196 SpvImageFormatRgb10A2 = 11,
197 SpvImageFormatRg16 = 12,
198 SpvImageFormatRg8 = 13,
199 SpvImageFormatR16 = 14,
200 SpvImageFormatR8 = 15,
201 SpvImageFormatRgba16Snorm = 16,
202 SpvImageFormatRg16Snorm = 17,
203 SpvImageFormatRg8Snorm = 18,
204 SpvImageFormatR16Snorm = 19,
205 SpvImageFormatR8Snorm = 20,
206 SpvImageFormatRgba32i = 21,
207 SpvImageFormatRgba16i = 22,
208 SpvImageFormatRgba8i = 23,
209 SpvImageFormatR32i = 24,
210 SpvImageFormatRg32i = 25,
211 SpvImageFormatRg16i = 26,
212 SpvImageFormatRg8i = 27,
213 SpvImageFormatR16i = 28,
214 SpvImageFormatR8i = 29,
215 SpvImageFormatRgba32ui = 30,
216 SpvImageFormatRgba16ui = 31,
217 SpvImageFormatRgba8ui = 32,
218 SpvImageFormatR32ui = 33,
219 SpvImageFormatRgb10a2ui = 34,
220 SpvImageFormatRg32ui = 35,
221 SpvImageFormatRg16ui = 36,
222 SpvImageFormatRg8ui = 37,
223 SpvImageFormatR16ui = 38,
224 SpvImageFormatR8ui = 39,
225 SpvImageFormatMax = 0x7fffffff,
226 } SpvImageFormat;
227
228 typedef enum SpvImageChannelOrder_ {
229 SpvImageChannelOrderR = 0,
230 SpvImageChannelOrderA = 1,
231 SpvImageChannelOrderRG = 2,
232 SpvImageChannelOrderRA = 3,
233 SpvImageChannelOrderRGB = 4,
234 SpvImageChannelOrderRGBA = 5,
235 SpvImageChannelOrderBGRA = 6,
236 SpvImageChannelOrderARGB = 7,
237 SpvImageChannelOrderIntensity = 8,
238 SpvImageChannelOrderLuminance = 9,
239 SpvImageChannelOrderRx = 10,
240 SpvImageChannelOrderRGx = 11,
241 SpvImageChannelOrderRGBx = 12,
242 SpvImageChannelOrderDepth = 13,
243 SpvImageChannelOrderDepthStencil = 14,
244 SpvImageChannelOrdersRGB = 15,
245 SpvImageChannelOrdersRGBx = 16,
246 SpvImageChannelOrdersRGBA = 17,
247 SpvImageChannelOrdersBGRA = 18,
248 SpvImageChannelOrderABGR = 19,
249 SpvImageChannelOrderMax = 0x7fffffff,
250 } SpvImageChannelOrder;
251
252 typedef enum SpvImageChannelDataType_ {
253 SpvImageChannelDataTypeSnormInt8 = 0,
254 SpvImageChannelDataTypeSnormInt16 = 1,
255 SpvImageChannelDataTypeUnormInt8 = 2,
256 SpvImageChannelDataTypeUnormInt16 = 3,
257 SpvImageChannelDataTypeUnormShort565 = 4,
258 SpvImageChannelDataTypeUnormShort555 = 5,
259 SpvImageChannelDataTypeUnormInt101010 = 6,
260 SpvImageChannelDataTypeSignedInt8 = 7,
261 SpvImageChannelDataTypeSignedInt16 = 8,
262 SpvImageChannelDataTypeSignedInt32 = 9,
263 SpvImageChannelDataTypeUnsignedInt8 = 10,
264 SpvImageChannelDataTypeUnsignedInt16 = 11,
265 SpvImageChannelDataTypeUnsignedInt32 = 12,
266 SpvImageChannelDataTypeHalfFloat = 13,
267 SpvImageChannelDataTypeFloat = 14,
268 SpvImageChannelDataTypeUnormInt24 = 15,
269 SpvImageChannelDataTypeUnormInt101010_2 = 16,
270 SpvImageChannelDataTypeMax = 0x7fffffff,
271 } SpvImageChannelDataType;
272
273 typedef enum SpvImageOperandsShift_ {
274 SpvImageOperandsBiasShift = 0,
275 SpvImageOperandsLodShift = 1,
276 SpvImageOperandsGradShift = 2,
277 SpvImageOperandsConstOffsetShift = 3,
278 SpvImageOperandsOffsetShift = 4,
279 SpvImageOperandsConstOffsetsShift = 5,
280 SpvImageOperandsSampleShift = 6,
281 SpvImageOperandsMinLodShift = 7,
282 SpvImageOperandsMax = 0x7fffffff,
283 } SpvImageOperandsShift;
284
285 typedef enum SpvImageOperandsMask_ {
286 SpvImageOperandsMaskNone = 0,
287 SpvImageOperandsBiasMask = 0x00000001,
288 SpvImageOperandsLodMask = 0x00000002,
289 SpvImageOperandsGradMask = 0x00000004,
290 SpvImageOperandsConstOffsetMask = 0x00000008,
291 SpvImageOperandsOffsetMask = 0x00000010,
292 SpvImageOperandsConstOffsetsMask = 0x00000020,
293 SpvImageOperandsSampleMask = 0x00000040,
294 SpvImageOperandsMinLodMask = 0x00000080,
295 } SpvImageOperandsMask;
296
297 typedef enum SpvFPFastMathModeShift_ {
298 SpvFPFastMathModeNotNaNShift = 0,
299 SpvFPFastMathModeNotInfShift = 1,
300 SpvFPFastMathModeNSZShift = 2,
301 SpvFPFastMathModeAllowRecipShift = 3,
302 SpvFPFastMathModeFastShift = 4,
303 SpvFPFastMathModeMax = 0x7fffffff,
304 } SpvFPFastMathModeShift;
305
306 typedef enum SpvFPFastMathModeMask_ {
307 SpvFPFastMathModeMaskNone = 0,
308 SpvFPFastMathModeNotNaNMask = 0x00000001,
309 SpvFPFastMathModeNotInfMask = 0x00000002,
310 SpvFPFastMathModeNSZMask = 0x00000004,
311 SpvFPFastMathModeAllowRecipMask = 0x00000008,
312 SpvFPFastMathModeFastMask = 0x00000010,
313 } SpvFPFastMathModeMask;
314
315 typedef enum SpvFPRoundingMode_ {
316 SpvFPRoundingModeRTE = 0,
317 SpvFPRoundingModeRTZ = 1,
318 SpvFPRoundingModeRTP = 2,
319 SpvFPRoundingModeRTN = 3,
320 SpvFPRoundingModeMax = 0x7fffffff,
321 } SpvFPRoundingMode;
322
323 typedef enum SpvLinkageType_ {
324 SpvLinkageTypeExport = 0,
325 SpvLinkageTypeImport = 1,
326 SpvLinkageTypeMax = 0x7fffffff,
327 } SpvLinkageType;
328
329 typedef enum SpvAccessQualifier_ {
330 SpvAccessQualifierReadOnly = 0,
331 SpvAccessQualifierWriteOnly = 1,
332 SpvAccessQualifierReadWrite = 2,
333 SpvAccessQualifierMax = 0x7fffffff,
334 } SpvAccessQualifier;
335
336 typedef enum SpvFunctionParameterAttribute_ {
337 SpvFunctionParameterAttributeZext = 0,
338 SpvFunctionParameterAttributeSext = 1,
339 SpvFunctionParameterAttributeByVal = 2,
340 SpvFunctionParameterAttributeSret = 3,
341 SpvFunctionParameterAttributeNoAlias = 4,
342 SpvFunctionParameterAttributeNoCapture = 5,
343 SpvFunctionParameterAttributeNoWrite = 6,
344 SpvFunctionParameterAttributeNoReadWrite = 7,
345 SpvFunctionParameterAttributeMax = 0x7fffffff,
346 } SpvFunctionParameterAttribute;
347
348 typedef enum SpvDecoration_ {
349 SpvDecorationRelaxedPrecision = 0,
350 SpvDecorationSpecId = 1,
351 SpvDecorationBlock = 2,
352 SpvDecorationBufferBlock = 3,
353 SpvDecorationRowMajor = 4,
354 SpvDecorationColMajor = 5,
355 SpvDecorationArrayStride = 6,
356 SpvDecorationMatrixStride = 7,
357 SpvDecorationGLSLShared = 8,
358 SpvDecorationGLSLPacked = 9,
359 SpvDecorationCPacked = 10,
360 SpvDecorationBuiltIn = 11,
361 SpvDecorationNoPerspective = 13,
362 SpvDecorationFlat = 14,
363 SpvDecorationPatch = 15,
364 SpvDecorationCentroid = 16,
365 SpvDecorationSample = 17,
366 SpvDecorationInvariant = 18,
367 SpvDecorationRestrict = 19,
368 SpvDecorationAliased = 20,
369 SpvDecorationVolatile = 21,
370 SpvDecorationConstant = 22,
371 SpvDecorationCoherent = 23,
372 SpvDecorationNonWritable = 24,
373 SpvDecorationNonReadable = 25,
374 SpvDecorationUniform = 26,
375 SpvDecorationSaturatedConversion = 28,
376 SpvDecorationStream = 29,
377 SpvDecorationLocation = 30,
378 SpvDecorationComponent = 31,
379 SpvDecorationIndex = 32,
380 SpvDecorationBinding = 33,
381 SpvDecorationDescriptorSet = 34,
382 SpvDecorationOffset = 35,
383 SpvDecorationXfbBuffer = 36,
384 SpvDecorationXfbStride = 37,
385 SpvDecorationFuncParamAttr = 38,
386 SpvDecorationFPRoundingMode = 39,
387 SpvDecorationFPFastMathMode = 40,
388 SpvDecorationLinkageAttributes = 41,
389 SpvDecorationNoContraction = 42,
390 SpvDecorationInputAttachmentIndex = 43,
391 SpvDecorationAlignment = 44,
392 SpvDecorationMaxByteOffset = 45,
393 SpvDecorationAlignmentId = 46,
394 SpvDecorationMaxByteOffsetId = 47,
395 SpvDecorationExplicitInterpAMD = 4999,
396 SpvDecorationOverrideCoverageNV = 5248,
397 SpvDecorationPassthroughNV = 5250,
398 SpvDecorationViewportRelativeNV = 5252,
399 SpvDecorationSecondaryViewportRelativeNV = 5256,
400 SpvDecorationNonUniformEXT = 5300,
401 SpvDecorationHlslCounterBufferGOOGLE = 5634,
402 SpvDecorationHlslSemanticGOOGLE = 5635,
403 SpvDecorationMax = 0x7fffffff,
404 } SpvDecoration;
405
406 typedef enum SpvBuiltIn_ {
407 SpvBuiltInPosition = 0,
408 SpvBuiltInPointSize = 1,
409 SpvBuiltInClipDistance = 3,
410 SpvBuiltInCullDistance = 4,
411 SpvBuiltInVertexId = 5,
412 SpvBuiltInInstanceId = 6,
413 SpvBuiltInPrimitiveId = 7,
414 SpvBuiltInInvocationId = 8,
415 SpvBuiltInLayer = 9,
416 SpvBuiltInViewportIndex = 10,
417 SpvBuiltInTessLevelOuter = 11,
418 SpvBuiltInTessLevelInner = 12,
419 SpvBuiltInTessCoord = 13,
420 SpvBuiltInPatchVertices = 14,
421 SpvBuiltInFragCoord = 15,
422 SpvBuiltInPointCoord = 16,
423 SpvBuiltInFrontFacing = 17,
424 SpvBuiltInSampleId = 18,
425 SpvBuiltInSamplePosition = 19,
426 SpvBuiltInSampleMask = 20,
427 SpvBuiltInFragDepth = 22,
428 SpvBuiltInHelperInvocation = 23,
429 SpvBuiltInNumWorkgroups = 24,
430 SpvBuiltInWorkgroupSize = 25,
431 SpvBuiltInWorkgroupId = 26,
432 SpvBuiltInLocalInvocationId = 27,
433 SpvBuiltInGlobalInvocationId = 28,
434 SpvBuiltInLocalInvocationIndex = 29,
435 SpvBuiltInWorkDim = 30,
436 SpvBuiltInGlobalSize = 31,
437 SpvBuiltInEnqueuedWorkgroupSize = 32,
438 SpvBuiltInGlobalOffset = 33,
439 SpvBuiltInGlobalLinearId = 34,
440 SpvBuiltInSubgroupSize = 36,
441 SpvBuiltInSubgroupMaxSize = 37,
442 SpvBuiltInNumSubgroups = 38,
443 SpvBuiltInNumEnqueuedSubgroups = 39,
444 SpvBuiltInSubgroupId = 40,
445 SpvBuiltInSubgroupLocalInvocationId = 41,
446 SpvBuiltInVertexIndex = 42,
447 SpvBuiltInInstanceIndex = 43,
448 SpvBuiltInSubgroupEqMask = 4416,
449 SpvBuiltInSubgroupEqMaskKHR = 4416,
450 SpvBuiltInSubgroupGeMask = 4417,
451 SpvBuiltInSubgroupGeMaskKHR = 4417,
452 SpvBuiltInSubgroupGtMask = 4418,
453 SpvBuiltInSubgroupGtMaskKHR = 4418,
454 SpvBuiltInSubgroupLeMask = 4419,
455 SpvBuiltInSubgroupLeMaskKHR = 4419,
456 SpvBuiltInSubgroupLtMask = 4420,
457 SpvBuiltInSubgroupLtMaskKHR = 4420,
458 SpvBuiltInBaseVertex = 4424,
459 SpvBuiltInBaseInstance = 4425,
460 SpvBuiltInDrawIndex = 4426,
461 SpvBuiltInDeviceIndex = 4438,
462 SpvBuiltInViewIndex = 4440,
463 SpvBuiltInBaryCoordNoPerspAMD = 4992,
464 SpvBuiltInBaryCoordNoPerspCentroidAMD = 4993,
465 SpvBuiltInBaryCoordNoPerspSampleAMD = 4994,
466 SpvBuiltInBaryCoordSmoothAMD = 4995,
467 SpvBuiltInBaryCoordSmoothCentroidAMD = 4996,
468 SpvBuiltInBaryCoordSmoothSampleAMD = 4997,
469 SpvBuiltInBaryCoordPullModelAMD = 4998,
470 SpvBuiltInFragStencilRefEXT = 5014,
471 SpvBuiltInViewportMaskNV = 5253,
472 SpvBuiltInSecondaryPositionNV = 5257,
473 SpvBuiltInSecondaryViewportMaskNV = 5258,
474 SpvBuiltInPositionPerViewNV = 5261,
475 SpvBuiltInViewportMaskPerViewNV = 5262,
476 SpvBuiltInFullyCoveredEXT = 5264,
477 SpvBuiltInMax = 0x7fffffff,
478 } SpvBuiltIn;
479
480 typedef enum SpvSelectionControlShift_ {
481 SpvSelectionControlFlattenShift = 0,
482 SpvSelectionControlDontFlattenShift = 1,
483 SpvSelectionControlMax = 0x7fffffff,
484 } SpvSelectionControlShift;
485
486 typedef enum SpvSelectionControlMask_ {
487 SpvSelectionControlMaskNone = 0,
488 SpvSelectionControlFlattenMask = 0x00000001,
489 SpvSelectionControlDontFlattenMask = 0x00000002,
490 } SpvSelectionControlMask;
491
492 typedef enum SpvLoopControlShift_ {
493 SpvLoopControlUnrollShift = 0,
494 SpvLoopControlDontUnrollShift = 1,
495 SpvLoopControlDependencyInfiniteShift = 2,
496 SpvLoopControlDependencyLengthShift = 3,
497 SpvLoopControlMax = 0x7fffffff,
498 } SpvLoopControlShift;
499
500 typedef enum SpvLoopControlMask_ {
501 SpvLoopControlMaskNone = 0,
502 SpvLoopControlUnrollMask = 0x00000001,
503 SpvLoopControlDontUnrollMask = 0x00000002,
504 SpvLoopControlDependencyInfiniteMask = 0x00000004,
505 SpvLoopControlDependencyLengthMask = 0x00000008,
506 } SpvLoopControlMask;
507
508 typedef enum SpvFunctionControlShift_ {
509 SpvFunctionControlInlineShift = 0,
510 SpvFunctionControlDontInlineShift = 1,
511 SpvFunctionControlPureShift = 2,
512 SpvFunctionControlConstShift = 3,
513 SpvFunctionControlMax = 0x7fffffff,
514 } SpvFunctionControlShift;
515
516 typedef enum SpvFunctionControlMask_ {
517 SpvFunctionControlMaskNone = 0,
518 SpvFunctionControlInlineMask = 0x00000001,
519 SpvFunctionControlDontInlineMask = 0x00000002,
520 SpvFunctionControlPureMask = 0x00000004,
521 SpvFunctionControlConstMask = 0x00000008,
522 } SpvFunctionControlMask;
523
524 typedef enum SpvMemorySemanticsShift_ {
525 SpvMemorySemanticsAcquireShift = 1,
526 SpvMemorySemanticsReleaseShift = 2,
527 SpvMemorySemanticsAcquireReleaseShift = 3,
528 SpvMemorySemanticsSequentiallyConsistentShift = 4,
529 SpvMemorySemanticsUniformMemoryShift = 6,
530 SpvMemorySemanticsSubgroupMemoryShift = 7,
531 SpvMemorySemanticsWorkgroupMemoryShift = 8,
532 SpvMemorySemanticsCrossWorkgroupMemoryShift = 9,
533 SpvMemorySemanticsAtomicCounterMemoryShift = 10,
534 SpvMemorySemanticsImageMemoryShift = 11,
535 SpvMemorySemanticsMax = 0x7fffffff,
536 } SpvMemorySemanticsShift;
537
538 typedef enum SpvMemorySemanticsMask_ {
539 SpvMemorySemanticsMaskNone = 0,
540 SpvMemorySemanticsAcquireMask = 0x00000002,
541 SpvMemorySemanticsReleaseMask = 0x00000004,
542 SpvMemorySemanticsAcquireReleaseMask = 0x00000008,
543 SpvMemorySemanticsSequentiallyConsistentMask = 0x00000010,
544 SpvMemorySemanticsUniformMemoryMask = 0x00000040,
545 SpvMemorySemanticsSubgroupMemoryMask = 0x00000080,
546 SpvMemorySemanticsWorkgroupMemoryMask = 0x00000100,
547 SpvMemorySemanticsCrossWorkgroupMemoryMask = 0x00000200,
548 SpvMemorySemanticsAtomicCounterMemoryMask = 0x00000400,
549 SpvMemorySemanticsImageMemoryMask = 0x00000800,
550 } SpvMemorySemanticsMask;
551
552 typedef enum SpvMemoryAccessShift_ {
553 SpvMemoryAccessVolatileShift = 0,
554 SpvMemoryAccessAlignedShift = 1,
555 SpvMemoryAccessNontemporalShift = 2,
556 SpvMemoryAccessMax = 0x7fffffff,
557 } SpvMemoryAccessShift;
558
559 typedef enum SpvMemoryAccessMask_ {
560 SpvMemoryAccessMaskNone = 0,
561 SpvMemoryAccessVolatileMask = 0x00000001,
562 SpvMemoryAccessAlignedMask = 0x00000002,
563 SpvMemoryAccessNontemporalMask = 0x00000004,
564 } SpvMemoryAccessMask;
565
566 typedef enum SpvScope_ {
567 SpvScopeCrossDevice = 0,
568 SpvScopeDevice = 1,
569 SpvScopeWorkgroup = 2,
570 SpvScopeSubgroup = 3,
571 SpvScopeInvocation = 4,
572 SpvScopeMax = 0x7fffffff,
573 } SpvScope;
574
575 typedef enum SpvGroupOperation_ {
576 SpvGroupOperationReduce = 0,
577 SpvGroupOperationInclusiveScan = 1,
578 SpvGroupOperationExclusiveScan = 2,
579 SpvGroupOperationClusteredReduce = 3,
580 SpvGroupOperationPartitionedReduceNV = 6,
581 SpvGroupOperationPartitionedInclusiveScanNV = 7,
582 SpvGroupOperationPartitionedExclusiveScanNV = 8,
583 SpvGroupOperationMax = 0x7fffffff,
584 } SpvGroupOperation;
585
586 typedef enum SpvKernelEnqueueFlags_ {
587 SpvKernelEnqueueFlagsNoWait = 0,
588 SpvKernelEnqueueFlagsWaitKernel = 1,
589 SpvKernelEnqueueFlagsWaitWorkGroup = 2,
590 SpvKernelEnqueueFlagsMax = 0x7fffffff,
591 } SpvKernelEnqueueFlags;
592
593 typedef enum SpvKernelProfilingInfoShift_ {
594 SpvKernelProfilingInfoCmdExecTimeShift = 0,
595 SpvKernelProfilingInfoMax = 0x7fffffff,
596 } SpvKernelProfilingInfoShift;
597
598 typedef enum SpvKernelProfilingInfoMask_ {
599 SpvKernelProfilingInfoMaskNone = 0,
600 SpvKernelProfilingInfoCmdExecTimeMask = 0x00000001,
601 } SpvKernelProfilingInfoMask;
602
603 typedef enum SpvCapability_ {
604 SpvCapabilityMatrix = 0,
605 SpvCapabilityShader = 1,
606 SpvCapabilityGeometry = 2,
607 SpvCapabilityTessellation = 3,
608 SpvCapabilityAddresses = 4,
609 SpvCapabilityLinkage = 5,
610 SpvCapabilityKernel = 6,
611 SpvCapabilityVector16 = 7,
612 SpvCapabilityFloat16Buffer = 8,
613 SpvCapabilityFloat16 = 9,
614 SpvCapabilityFloat64 = 10,
615 SpvCapabilityInt64 = 11,
616 SpvCapabilityInt64Atomics = 12,
617 SpvCapabilityImageBasic = 13,
618 SpvCapabilityImageReadWrite = 14,
619 SpvCapabilityImageMipmap = 15,
620 SpvCapabilityPipes = 17,
621 SpvCapabilityGroups = 18,
622 SpvCapabilityDeviceEnqueue = 19,
623 SpvCapabilityLiteralSampler = 20,
624 SpvCapabilityAtomicStorage = 21,
625 SpvCapabilityInt16 = 22,
626 SpvCapabilityTessellationPointSize = 23,
627 SpvCapabilityGeometryPointSize = 24,
628 SpvCapabilityImageGatherExtended = 25,
629 SpvCapabilityStorageImageMultisample = 27,
630 SpvCapabilityUniformBufferArrayDynamicIndexing = 28,
631 SpvCapabilitySampledImageArrayDynamicIndexing = 29,
632 SpvCapabilityStorageBufferArrayDynamicIndexing = 30,
633 SpvCapabilityStorageImageArrayDynamicIndexing = 31,
634 SpvCapabilityClipDistance = 32,
635 SpvCapabilityCullDistance = 33,
636 SpvCapabilityImageCubeArray = 34,
637 SpvCapabilitySampleRateShading = 35,
638 SpvCapabilityImageRect = 36,
639 SpvCapabilitySampledRect = 37,
640 SpvCapabilityGenericPointer = 38,
641 SpvCapabilityInt8 = 39,
642 SpvCapabilityInputAttachment = 40,
643 SpvCapabilitySparseResidency = 41,
644 SpvCapabilityMinLod = 42,
645 SpvCapabilitySampled1D = 43,
646 SpvCapabilityImage1D = 44,
647 SpvCapabilitySampledCubeArray = 45,
648 SpvCapabilitySampledBuffer = 46,
649 SpvCapabilityImageBuffer = 47,
650 SpvCapabilityImageMSArray = 48,
651 SpvCapabilityStorageImageExtendedFormats = 49,
652 SpvCapabilityImageQuery = 50,
653 SpvCapabilityDerivativeControl = 51,
654 SpvCapabilityInterpolationFunction = 52,
655 SpvCapabilityTransformFeedback = 53,
656 SpvCapabilityGeometryStreams = 54,
657 SpvCapabilityStorageImageReadWithoutFormat = 55,
658 SpvCapabilityStorageImageWriteWithoutFormat = 56,
659 SpvCapabilityMultiViewport = 57,
660 SpvCapabilitySubgroupDispatch = 58,
661 SpvCapabilityNamedBarrier = 59,
662 SpvCapabilityPipeStorage = 60,
663 SpvCapabilityGroupNonUniform = 61,
664 SpvCapabilityGroupNonUniformVote = 62,
665 SpvCapabilityGroupNonUniformArithmetic = 63,
666 SpvCapabilityGroupNonUniformBallot = 64,
667 SpvCapabilityGroupNonUniformShuffle = 65,
668 SpvCapabilityGroupNonUniformShuffleRelative = 66,
669 SpvCapabilityGroupNonUniformClustered = 67,
670 SpvCapabilityGroupNonUniformQuad = 68,
671 SpvCapabilitySubgroupBallotKHR = 4423,
672 SpvCapabilityDrawParameters = 4427,
673 SpvCapabilitySubgroupVoteKHR = 4431,
674 SpvCapabilityStorageBuffer16BitAccess = 4433,
675 SpvCapabilityStorageUniformBufferBlock16 = 4433,
676 SpvCapabilityStorageUniform16 = 4434,
677 SpvCapabilityUniformAndStorageBuffer16BitAccess = 4434,
678 SpvCapabilityStoragePushConstant16 = 4435,
679 SpvCapabilityStorageInputOutput16 = 4436,
680 SpvCapabilityDeviceGroup = 4437,
681 SpvCapabilityMultiView = 4439,
682 SpvCapabilityVariablePointersStorageBuffer = 4441,
683 SpvCapabilityVariablePointers = 4442,
684 SpvCapabilityAtomicStorageOps = 4445,
685 SpvCapabilitySampleMaskPostDepthCoverage = 4447,
686 SpvCapabilityStorageBuffer8BitAccess = 4448,
687 SpvCapabilityUniformAndStorageBuffer8BitAccess = 4449,
688 SpvCapabilityStoragePushConstant8 = 4450,
689 SpvCapabilityFloat16ImageAMD = 5008,
690 SpvCapabilityImageGatherBiasLodAMD = 5009,
691 SpvCapabilityFragmentMaskAMD = 5010,
692 SpvCapabilityStencilExportEXT = 5013,
693 SpvCapabilityImageReadWriteLodAMD = 5015,
694 SpvCapabilitySampleMaskOverrideCoverageNV = 5249,
695 SpvCapabilityGeometryShaderPassthroughNV = 5251,
696 SpvCapabilityShaderViewportIndexLayerEXT = 5254,
697 SpvCapabilityShaderViewportIndexLayerNV = 5254,
698 SpvCapabilityShaderViewportMaskNV = 5255,
699 SpvCapabilityShaderStereoViewNV = 5259,
700 SpvCapabilityPerViewAttributesNV = 5260,
701 SpvCapabilityFragmentFullyCoveredEXT = 5265,
702 SpvCapabilityGroupNonUniformPartitionedNV = 5297,
703 SpvCapabilityShaderNonUniformEXT = 5301,
704 SpvCapabilityRuntimeDescriptorArrayEXT = 5302,
705 SpvCapabilityInputAttachmentArrayDynamicIndexingEXT = 5303,
706 SpvCapabilityUniformTexelBufferArrayDynamicIndexingEXT = 5304,
707 SpvCapabilityStorageTexelBufferArrayDynamicIndexingEXT = 5305,
708 SpvCapabilityUniformBufferArrayNonUniformIndexingEXT = 5306,
709 SpvCapabilitySampledImageArrayNonUniformIndexingEXT = 5307,
710 SpvCapabilityStorageBufferArrayNonUniformIndexingEXT = 5308,
711 SpvCapabilityStorageImageArrayNonUniformIndexingEXT = 5309,
712 SpvCapabilityInputAttachmentArrayNonUniformIndexingEXT = 5310,
713 SpvCapabilityUniformTexelBufferArrayNonUniformIndexingEXT = 5311,
714 SpvCapabilityStorageTexelBufferArrayNonUniformIndexingEXT = 5312,
715 SpvCapabilitySubgroupShuffleINTEL = 5568,
716 SpvCapabilitySubgroupBufferBlockIOINTEL = 5569,
717 SpvCapabilitySubgroupImageBlockIOINTEL = 5570,
718 SpvCapabilityMax = 0x7fffffff,
719 } SpvCapability;
720
721 typedef enum SpvOp_ {
722 SpvOpNop = 0,
723 SpvOpUndef = 1,
724 SpvOpSourceContinued = 2,
725 SpvOpSource = 3,
726 SpvOpSourceExtension = 4,
727 SpvOpName = 5,
728 SpvOpMemberName = 6,
729 SpvOpString = 7,
730 SpvOpLine = 8,
731 SpvOpExtension = 10,
732 SpvOpExtInstImport = 11,
733 SpvOpExtInst = 12,
734 SpvOpMemoryModel = 14,
735 SpvOpEntryPoint = 15,
736 SpvOpExecutionMode = 16,
737 SpvOpCapability = 17,
738 SpvOpTypeVoid = 19,
739 SpvOpTypeBool = 20,
740 SpvOpTypeInt = 21,
741 SpvOpTypeFloat = 22,
742 SpvOpTypeVector = 23,
743 SpvOpTypeMatrix = 24,
744 SpvOpTypeImage = 25,
745 SpvOpTypeSampler = 26,
746 SpvOpTypeSampledImage = 27,
747 SpvOpTypeArray = 28,
748 SpvOpTypeRuntimeArray = 29,
749 SpvOpTypeStruct = 30,
750 SpvOpTypeOpaque = 31,
751 SpvOpTypePointer = 32,
752 SpvOpTypeFunction = 33,
753 SpvOpTypeEvent = 34,
754 SpvOpTypeDeviceEvent = 35,
755 SpvOpTypeReserveId = 36,
756 SpvOpTypeQueue = 37,
757 SpvOpTypePipe = 38,
758 SpvOpTypeForwardPointer = 39,
759 SpvOpConstantTrue = 41,
760 SpvOpConstantFalse = 42,
761 SpvOpConstant = 43,
762 SpvOpConstantComposite = 44,
763 SpvOpConstantSampler = 45,
764 SpvOpConstantNull = 46,
765 SpvOpSpecConstantTrue = 48,
766 SpvOpSpecConstantFalse = 49,
767 SpvOpSpecConstant = 50,
768 SpvOpSpecConstantComposite = 51,
769 SpvOpSpecConstantOp = 52,
770 SpvOpFunction = 54,
771 SpvOpFunctionParameter = 55,
772 SpvOpFunctionEnd = 56,
773 SpvOpFunctionCall = 57,
774 SpvOpVariable = 59,
775 SpvOpImageTexelPointer = 60,
776 SpvOpLoad = 61,
777 SpvOpStore = 62,
778 SpvOpCopyMemory = 63,
779 SpvOpCopyMemorySized = 64,
780 SpvOpAccessChain = 65,
781 SpvOpInBoundsAccessChain = 66,
782 SpvOpPtrAccessChain = 67,
783 SpvOpArrayLength = 68,
784 SpvOpGenericPtrMemSemantics = 69,
785 SpvOpInBoundsPtrAccessChain = 70,
786 SpvOpDecorate = 71,
787 SpvOpMemberDecorate = 72,
788 SpvOpDecorationGroup = 73,
789 SpvOpGroupDecorate = 74,
790 SpvOpGroupMemberDecorate = 75,
791 SpvOpVectorExtractDynamic = 77,
792 SpvOpVectorInsertDynamic = 78,
793 SpvOpVectorShuffle = 79,
794 SpvOpCompositeConstruct = 80,
795 SpvOpCompositeExtract = 81,
796 SpvOpCompositeInsert = 82,
797 SpvOpCopyObject = 83,
798 SpvOpTranspose = 84,
799 SpvOpSampledImage = 86,
800 SpvOpImageSampleImplicitLod = 87,
801 SpvOpImageSampleExplicitLod = 88,
802 SpvOpImageSampleDrefImplicitLod = 89,
803 SpvOpImageSampleDrefExplicitLod = 90,
804 SpvOpImageSampleProjImplicitLod = 91,
805 SpvOpImageSampleProjExplicitLod = 92,
806 SpvOpImageSampleProjDrefImplicitLod = 93,
807 SpvOpImageSampleProjDrefExplicitLod = 94,
808 SpvOpImageFetch = 95,
809 SpvOpImageGather = 96,
810 SpvOpImageDrefGather = 97,
811 SpvOpImageRead = 98,
812 SpvOpImageWrite = 99,
813 SpvOpImage = 100,
814 SpvOpImageQueryFormat = 101,
815 SpvOpImageQueryOrder = 102,
816 SpvOpImageQuerySizeLod = 103,
817 SpvOpImageQuerySize = 104,
818 SpvOpImageQueryLod = 105,
819 SpvOpImageQueryLevels = 106,
820 SpvOpImageQuerySamples = 107,
821 SpvOpConvertFToU = 109,
822 SpvOpConvertFToS = 110,
823 SpvOpConvertSToF = 111,
824 SpvOpConvertUToF = 112,
825 SpvOpUConvert = 113,
826 SpvOpSConvert = 114,
827 SpvOpFConvert = 115,
828 SpvOpQuantizeToF16 = 116,
829 SpvOpConvertPtrToU = 117,
830 SpvOpSatConvertSToU = 118,
831 SpvOpSatConvertUToS = 119,
832 SpvOpConvertUToPtr = 120,
833 SpvOpPtrCastToGeneric = 121,
834 SpvOpGenericCastToPtr = 122,
835 SpvOpGenericCastToPtrExplicit = 123,
836 SpvOpBitcast = 124,
837 SpvOpSNegate = 126,
838 SpvOpFNegate = 127,
839 SpvOpIAdd = 128,
840 SpvOpFAdd = 129,
841 SpvOpISub = 130,
842 SpvOpFSub = 131,
843 SpvOpIMul = 132,
844 SpvOpFMul = 133,
845 SpvOpUDiv = 134,
846 SpvOpSDiv = 135,
847 SpvOpFDiv = 136,
848 SpvOpUMod = 137,
849 SpvOpSRem = 138,
850 SpvOpSMod = 139,
851 SpvOpFRem = 140,
852 SpvOpFMod = 141,
853 SpvOpVectorTimesScalar = 142,
854 SpvOpMatrixTimesScalar = 143,
855 SpvOpVectorTimesMatrix = 144,
856 SpvOpMatrixTimesVector = 145,
857 SpvOpMatrixTimesMatrix = 146,
858 SpvOpOuterProduct = 147,
859 SpvOpDot = 148,
860 SpvOpIAddCarry = 149,
861 SpvOpISubBorrow = 150,
862 SpvOpUMulExtended = 151,
863 SpvOpSMulExtended = 152,
864 SpvOpAny = 154,
865 SpvOpAll = 155,
866 SpvOpIsNan = 156,
867 SpvOpIsInf = 157,
868 SpvOpIsFinite = 158,
869 SpvOpIsNormal = 159,
870 SpvOpSignBitSet = 160,
871 SpvOpLessOrGreater = 161,
872 SpvOpOrdered = 162,
873 SpvOpUnordered = 163,
874 SpvOpLogicalEqual = 164,
875 SpvOpLogicalNotEqual = 165,
876 SpvOpLogicalOr = 166,
877 SpvOpLogicalAnd = 167,
878 SpvOpLogicalNot = 168,
879 SpvOpSelect = 169,
880 SpvOpIEqual = 170,
881 SpvOpINotEqual = 171,
882 SpvOpUGreaterThan = 172,
883 SpvOpSGreaterThan = 173,
884 SpvOpUGreaterThanEqual = 174,
885 SpvOpSGreaterThanEqual = 175,
886 SpvOpULessThan = 176,
887 SpvOpSLessThan = 177,
888 SpvOpULessThanEqual = 178,
889 SpvOpSLessThanEqual = 179,
890 SpvOpFOrdEqual = 180,
891 SpvOpFUnordEqual = 181,
892 SpvOpFOrdNotEqual = 182,
893 SpvOpFUnordNotEqual = 183,
894 SpvOpFOrdLessThan = 184,
895 SpvOpFUnordLessThan = 185,
896 SpvOpFOrdGreaterThan = 186,
897 SpvOpFUnordGreaterThan = 187,
898 SpvOpFOrdLessThanEqual = 188,
899 SpvOpFUnordLessThanEqual = 189,
900 SpvOpFOrdGreaterThanEqual = 190,
901 SpvOpFUnordGreaterThanEqual = 191,
902 SpvOpShiftRightLogical = 194,
903 SpvOpShiftRightArithmetic = 195,
904 SpvOpShiftLeftLogical = 196,
905 SpvOpBitwiseOr = 197,
906 SpvOpBitwiseXor = 198,
907 SpvOpBitwiseAnd = 199,
908 SpvOpNot = 200,
909 SpvOpBitFieldInsert = 201,
910 SpvOpBitFieldSExtract = 202,
911 SpvOpBitFieldUExtract = 203,
912 SpvOpBitReverse = 204,
913 SpvOpBitCount = 205,
914 SpvOpDPdx = 207,
915 SpvOpDPdy = 208,
916 SpvOpFwidth = 209,
917 SpvOpDPdxFine = 210,
918 SpvOpDPdyFine = 211,
919 SpvOpFwidthFine = 212,
920 SpvOpDPdxCoarse = 213,
921 SpvOpDPdyCoarse = 214,
922 SpvOpFwidthCoarse = 215,
923 SpvOpEmitVertex = 218,
924 SpvOpEndPrimitive = 219,
925 SpvOpEmitStreamVertex = 220,
926 SpvOpEndStreamPrimitive = 221,
927 SpvOpControlBarrier = 224,
928 SpvOpMemoryBarrier = 225,
929 SpvOpAtomicLoad = 227,
930 SpvOpAtomicStore = 228,
931 SpvOpAtomicExchange = 229,
932 SpvOpAtomicCompareExchange = 230,
933 SpvOpAtomicCompareExchangeWeak = 231,
934 SpvOpAtomicIIncrement = 232,
935 SpvOpAtomicIDecrement = 233,
936 SpvOpAtomicIAdd = 234,
937 SpvOpAtomicISub = 235,
938 SpvOpAtomicSMin = 236,
939 SpvOpAtomicUMin = 237,
940 SpvOpAtomicSMax = 238,
941 SpvOpAtomicUMax = 239,
942 SpvOpAtomicAnd = 240,
943 SpvOpAtomicOr = 241,
944 SpvOpAtomicXor = 242,
945 SpvOpPhi = 245,
946 SpvOpLoopMerge = 246,
947 SpvOpSelectionMerge = 247,
948 SpvOpLabel = 248,
949 SpvOpBranch = 249,
950 SpvOpBranchConditional = 250,
951 SpvOpSwitch = 251,
952 SpvOpKill = 252,
953 SpvOpReturn = 253,
954 SpvOpReturnValue = 254,
955 SpvOpUnreachable = 255,
956 SpvOpLifetimeStart = 256,
957 SpvOpLifetimeStop = 257,
958 SpvOpGroupAsyncCopy = 259,
959 SpvOpGroupWaitEvents = 260,
960 SpvOpGroupAll = 261,
961 SpvOpGroupAny = 262,
962 SpvOpGroupBroadcast = 263,
963 SpvOpGroupIAdd = 264,
964 SpvOpGroupFAdd = 265,
965 SpvOpGroupFMin = 266,
966 SpvOpGroupUMin = 267,
967 SpvOpGroupSMin = 268,
968 SpvOpGroupFMax = 269,
969 SpvOpGroupUMax = 270,
970 SpvOpGroupSMax = 271,
971 SpvOpReadPipe = 274,
972 SpvOpWritePipe = 275,
973 SpvOpReservedReadPipe = 276,
974 SpvOpReservedWritePipe = 277,
975 SpvOpReserveReadPipePackets = 278,
976 SpvOpReserveWritePipePackets = 279,
977 SpvOpCommitReadPipe = 280,
978 SpvOpCommitWritePipe = 281,
979 SpvOpIsValidReserveId = 282,
980 SpvOpGetNumPipePackets = 283,
981 SpvOpGetMaxPipePackets = 284,
982 SpvOpGroupReserveReadPipePackets = 285,
983 SpvOpGroupReserveWritePipePackets = 286,
984 SpvOpGroupCommitReadPipe = 287,
985 SpvOpGroupCommitWritePipe = 288,
986 SpvOpEnqueueMarker = 291,
987 SpvOpEnqueueKernel = 292,
988 SpvOpGetKernelNDrangeSubGroupCount = 293,
989 SpvOpGetKernelNDrangeMaxSubGroupSize = 294,
990 SpvOpGetKernelWorkGroupSize = 295,
991 SpvOpGetKernelPreferredWorkGroupSizeMultiple = 296,
992 SpvOpRetainEvent = 297,
993 SpvOpReleaseEvent = 298,
994 SpvOpCreateUserEvent = 299,
995 SpvOpIsValidEvent = 300,
996 SpvOpSetUserEventStatus = 301,
997 SpvOpCaptureEventProfilingInfo = 302,
998 SpvOpGetDefaultQueue = 303,
999 SpvOpBuildNDRange = 304,
1000 SpvOpImageSparseSampleImplicitLod = 305,
1001 SpvOpImageSparseSampleExplicitLod = 306,
1002 SpvOpImageSparseSampleDrefImplicitLod = 307,
1003 SpvOpImageSparseSampleDrefExplicitLod = 308,
1004 SpvOpImageSparseSampleProjImplicitLod = 309,
1005 SpvOpImageSparseSampleProjExplicitLod = 310,
1006 SpvOpImageSparseSampleProjDrefImplicitLod = 311,
1007 SpvOpImageSparseSampleProjDrefExplicitLod = 312,
1008 SpvOpImageSparseFetch = 313,
1009 SpvOpImageSparseGather = 314,
1010 SpvOpImageSparseDrefGather = 315,
1011 SpvOpImageSparseTexelsResident = 316,
1012 SpvOpNoLine = 317,
1013 SpvOpAtomicFlagTestAndSet = 318,
1014 SpvOpAtomicFlagClear = 319,
1015 SpvOpImageSparseRead = 320,
1016 SpvOpSizeOf = 321,
1017 SpvOpTypePipeStorage = 322,
1018 SpvOpConstantPipeStorage = 323,
1019 SpvOpCreatePipeFromPipeStorage = 324,
1020 SpvOpGetKernelLocalSizeForSubgroupCount = 325,
1021 SpvOpGetKernelMaxNumSubgroups = 326,
1022 SpvOpTypeNamedBarrier = 327,
1023 SpvOpNamedBarrierInitialize = 328,
1024 SpvOpMemoryNamedBarrier = 329,
1025 SpvOpModuleProcessed = 330,
1026 SpvOpExecutionModeId = 331,
1027 SpvOpDecorateId = 332,
1028 SpvOpGroupNonUniformElect = 333,
1029 SpvOpGroupNonUniformAll = 334,
1030 SpvOpGroupNonUniformAny = 335,
1031 SpvOpGroupNonUniformAllEqual = 336,
1032 SpvOpGroupNonUniformBroadcast = 337,
1033 SpvOpGroupNonUniformBroadcastFirst = 338,
1034 SpvOpGroupNonUniformBallot = 339,
1035 SpvOpGroupNonUniformInverseBallot = 340,
1036 SpvOpGroupNonUniformBallotBitExtract = 341,
1037 SpvOpGroupNonUniformBallotBitCount = 342,
1038 SpvOpGroupNonUniformBallotFindLSB = 343,
1039 SpvOpGroupNonUniformBallotFindMSB = 344,
1040 SpvOpGroupNonUniformShuffle = 345,
1041 SpvOpGroupNonUniformShuffleXor = 346,
1042 SpvOpGroupNonUniformShuffleUp = 347,
1043 SpvOpGroupNonUniformShuffleDown = 348,
1044 SpvOpGroupNonUniformIAdd = 349,
1045 SpvOpGroupNonUniformFAdd = 350,
1046 SpvOpGroupNonUniformIMul = 351,
1047 SpvOpGroupNonUniformFMul = 352,
1048 SpvOpGroupNonUniformSMin = 353,
1049 SpvOpGroupNonUniformUMin = 354,
1050 SpvOpGroupNonUniformFMin = 355,
1051 SpvOpGroupNonUniformSMax = 356,
1052 SpvOpGroupNonUniformUMax = 357,
1053 SpvOpGroupNonUniformFMax = 358,
1054 SpvOpGroupNonUniformBitwiseAnd = 359,
1055 SpvOpGroupNonUniformBitwiseOr = 360,
1056 SpvOpGroupNonUniformBitwiseXor = 361,
1057 SpvOpGroupNonUniformLogicalAnd = 362,
1058 SpvOpGroupNonUniformLogicalOr = 363,
1059 SpvOpGroupNonUniformLogicalXor = 364,
1060 SpvOpGroupNonUniformQuadBroadcast = 365,
1061 SpvOpGroupNonUniformQuadSwap = 366,
1062 SpvOpSubgroupBallotKHR = 4421,
1063 SpvOpSubgroupFirstInvocationKHR = 4422,
1064 SpvOpSubgroupAllKHR = 4428,
1065 SpvOpSubgroupAnyKHR = 4429,
1066 SpvOpSubgroupAllEqualKHR = 4430,
1067 SpvOpSubgroupReadInvocationKHR = 4432,
1068 SpvOpGroupIAddNonUniformAMD = 5000,
1069 SpvOpGroupFAddNonUniformAMD = 5001,
1070 SpvOpGroupFMinNonUniformAMD = 5002,
1071 SpvOpGroupUMinNonUniformAMD = 5003,
1072 SpvOpGroupSMinNonUniformAMD = 5004,
1073 SpvOpGroupFMaxNonUniformAMD = 5005,
1074 SpvOpGroupUMaxNonUniformAMD = 5006,
1075 SpvOpGroupSMaxNonUniformAMD = 5007,
1076 SpvOpFragmentMaskFetchAMD = 5011,
1077 SpvOpFragmentFetchAMD = 5012,
1078 SpvOpGroupNonUniformPartitionNV = 5296,
1079 SpvOpSubgroupShuffleINTEL = 5571,
1080 SpvOpSubgroupShuffleDownINTEL = 5572,
1081 SpvOpSubgroupShuffleUpINTEL = 5573,
1082 SpvOpSubgroupShuffleXorINTEL = 5574,
1083 SpvOpSubgroupBlockReadINTEL = 5575,
1084 SpvOpSubgroupBlockWriteINTEL = 5576,
1085 SpvOpSubgroupImageBlockReadINTEL = 5577,
1086 SpvOpSubgroupImageBlockWriteINTEL = 5578,
1087 SpvOpDecorateStringGOOGLE = 5632,
1088 SpvOpMemberDecorateStringGOOGLE = 5633,
1089 SpvOpMax = 0x7fffffff,
1090 } SpvOp;
1091
1092 #endif // #ifndef spirv_H
1093