2
** Copyright (c) 2014-2018 The Khronos Group Inc.
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:
11
** The above copyright notice and this permission notice shall be included in
12
** all copies or substantial portions of the Materials.
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/
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
28
** This header is automatically generated by the same tool that creates
29
** the Binary Section of the SPIR-V specification.
33
** Enumeration tokens for SPIR-V, in various styles:
34
** C, C++, C++11, JSON, Lua, Python
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']
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.
51
typedef unsigned int SpvId;
53
#define SPV_VERSION 0x10000
54
#define SPV_REVISION 12
56
static const unsigned int SpvMagicNumber = 0x07230203;
57
static const unsigned int SpvVersion = 0x00010000;
58
static const unsigned int SpvRevision = 12;
59
static const unsigned int SpvOpCodeMask = 0xffff;
60
static const unsigned int SpvWordCountShift = 16;
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,
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,
83
typedef enum SpvAddressingModel_ {
84
SpvAddressingModelLogical = 0,
85
SpvAddressingModelPhysical32 = 1,
86
SpvAddressingModelPhysical64 = 2,
87
SpvAddressingModelMax = 0x7fffffff,
90
typedef enum SpvMemoryModel_ {
91
SpvMemoryModelSimple = 0,
92
SpvMemoryModelGLSL450 = 1,
93
SpvMemoryModelOpenCL = 2,
94
SpvMemoryModelMax = 0x7fffffff,
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
SpvExecutionModePostDepthCoverage = 4446,
130
SpvExecutionModeStencilRefReplacingEXT = 5027,
131
SpvExecutionModeMax = 0x7fffffff,
134
typedef enum SpvStorageClass_ {
135
SpvStorageClassUniformConstant = 0,
136
SpvStorageClassInput = 1,
137
SpvStorageClassUniform = 2,
138
SpvStorageClassOutput = 3,
139
SpvStorageClassWorkgroup = 4,
140
SpvStorageClassCrossWorkgroup = 5,
141
SpvStorageClassPrivate = 6,
142
SpvStorageClassFunction = 7,
143
SpvStorageClassGeneric = 8,
144
SpvStorageClassPushConstant = 9,
145
SpvStorageClassAtomicCounter = 10,
146
SpvStorageClassImage = 11,
147
SpvStorageClassStorageBuffer = 12,
148
SpvStorageClassMax = 0x7fffffff,
151
typedef enum SpvDim_ {
158
SpvDimSubpassData = 6,
159
SpvDimMax = 0x7fffffff,
162
typedef enum SpvSamplerAddressingMode_ {
163
SpvSamplerAddressingModeNone = 0,
164
SpvSamplerAddressingModeClampToEdge = 1,
165
SpvSamplerAddressingModeClamp = 2,
166
SpvSamplerAddressingModeRepeat = 3,
167
SpvSamplerAddressingModeRepeatMirrored = 4,
168
SpvSamplerAddressingModeMax = 0x7fffffff,
169
} SpvSamplerAddressingMode;
171
typedef enum SpvSamplerFilterMode_ {
172
SpvSamplerFilterModeNearest = 0,
173
SpvSamplerFilterModeLinear = 1,
174
SpvSamplerFilterModeMax = 0x7fffffff,
175
} SpvSamplerFilterMode;
177
typedef enum SpvImageFormat_ {
178
SpvImageFormatUnknown = 0,
179
SpvImageFormatRgba32f = 1,
180
SpvImageFormatRgba16f = 2,
181
SpvImageFormatR32f = 3,
182
SpvImageFormatRgba8 = 4,
183
SpvImageFormatRgba8Snorm = 5,
184
SpvImageFormatRg32f = 6,
185
SpvImageFormatRg16f = 7,
186
SpvImageFormatR11fG11fB10f = 8,
187
SpvImageFormatR16f = 9,
188
SpvImageFormatRgba16 = 10,
189
SpvImageFormatRgb10A2 = 11,
190
SpvImageFormatRg16 = 12,
191
SpvImageFormatRg8 = 13,
192
SpvImageFormatR16 = 14,
193
SpvImageFormatR8 = 15,
194
SpvImageFormatRgba16Snorm = 16,
195
SpvImageFormatRg16Snorm = 17,
196
SpvImageFormatRg8Snorm = 18,
197
SpvImageFormatR16Snorm = 19,
198
SpvImageFormatR8Snorm = 20,
199
SpvImageFormatRgba32i = 21,
200
SpvImageFormatRgba16i = 22,
201
SpvImageFormatRgba8i = 23,
202
SpvImageFormatR32i = 24,
203
SpvImageFormatRg32i = 25,
204
SpvImageFormatRg16i = 26,
205
SpvImageFormatRg8i = 27,
206
SpvImageFormatR16i = 28,
207
SpvImageFormatR8i = 29,
208
SpvImageFormatRgba32ui = 30,
209
SpvImageFormatRgba16ui = 31,
210
SpvImageFormatRgba8ui = 32,
211
SpvImageFormatR32ui = 33,
212
SpvImageFormatRgb10a2ui = 34,
213
SpvImageFormatRg32ui = 35,
214
SpvImageFormatRg16ui = 36,
215
SpvImageFormatRg8ui = 37,
216
SpvImageFormatR16ui = 38,
217
SpvImageFormatR8ui = 39,
218
SpvImageFormatMax = 0x7fffffff,
221
typedef enum SpvImageChannelOrder_ {
222
SpvImageChannelOrderR = 0,
223
SpvImageChannelOrderA = 1,
224
SpvImageChannelOrderRG = 2,
225
SpvImageChannelOrderRA = 3,
226
SpvImageChannelOrderRGB = 4,
227
SpvImageChannelOrderRGBA = 5,
228
SpvImageChannelOrderBGRA = 6,
229
SpvImageChannelOrderARGB = 7,
230
SpvImageChannelOrderIntensity = 8,
231
SpvImageChannelOrderLuminance = 9,
232
SpvImageChannelOrderRx = 10,
233
SpvImageChannelOrderRGx = 11,
234
SpvImageChannelOrderRGBx = 12,
235
SpvImageChannelOrderDepth = 13,
236
SpvImageChannelOrderDepthStencil = 14,
237
SpvImageChannelOrdersRGB = 15,
238
SpvImageChannelOrdersRGBx = 16,
239
SpvImageChannelOrdersRGBA = 17,
240
SpvImageChannelOrdersBGRA = 18,
241
SpvImageChannelOrderABGR = 19,
242
SpvImageChannelOrderMax = 0x7fffffff,
243
} SpvImageChannelOrder;
245
typedef enum SpvImageChannelDataType_ {
246
SpvImageChannelDataTypeSnormInt8 = 0,
247
SpvImageChannelDataTypeSnormInt16 = 1,
248
SpvImageChannelDataTypeUnormInt8 = 2,
249
SpvImageChannelDataTypeUnormInt16 = 3,
250
SpvImageChannelDataTypeUnormShort565 = 4,
251
SpvImageChannelDataTypeUnormShort555 = 5,
252
SpvImageChannelDataTypeUnormInt101010 = 6,
253
SpvImageChannelDataTypeSignedInt8 = 7,
254
SpvImageChannelDataTypeSignedInt16 = 8,
255
SpvImageChannelDataTypeSignedInt32 = 9,
256
SpvImageChannelDataTypeUnsignedInt8 = 10,
257
SpvImageChannelDataTypeUnsignedInt16 = 11,
258
SpvImageChannelDataTypeUnsignedInt32 = 12,
259
SpvImageChannelDataTypeHalfFloat = 13,
260
SpvImageChannelDataTypeFloat = 14,
261
SpvImageChannelDataTypeUnormInt24 = 15,
262
SpvImageChannelDataTypeUnormInt101010_2 = 16,
263
SpvImageChannelDataTypeMax = 0x7fffffff,
264
} SpvImageChannelDataType;
266
typedef enum SpvImageOperandsShift_ {
267
SpvImageOperandsBiasShift = 0,
268
SpvImageOperandsLodShift = 1,
269
SpvImageOperandsGradShift = 2,
270
SpvImageOperandsConstOffsetShift = 3,
271
SpvImageOperandsOffsetShift = 4,
272
SpvImageOperandsConstOffsetsShift = 5,
273
SpvImageOperandsSampleShift = 6,
274
SpvImageOperandsMinLodShift = 7,
275
SpvImageOperandsMax = 0x7fffffff,
276
} SpvImageOperandsShift;
278
typedef enum SpvImageOperandsMask_ {
279
SpvImageOperandsMaskNone = 0,
280
SpvImageOperandsBiasMask = 0x00000001,
281
SpvImageOperandsLodMask = 0x00000002,
282
SpvImageOperandsGradMask = 0x00000004,
283
SpvImageOperandsConstOffsetMask = 0x00000008,
284
SpvImageOperandsOffsetMask = 0x00000010,
285
SpvImageOperandsConstOffsetsMask = 0x00000020,
286
SpvImageOperandsSampleMask = 0x00000040,
287
SpvImageOperandsMinLodMask = 0x00000080,
288
} SpvImageOperandsMask;
290
typedef enum SpvFPFastMathModeShift_ {
291
SpvFPFastMathModeNotNaNShift = 0,
292
SpvFPFastMathModeNotInfShift = 1,
293
SpvFPFastMathModeNSZShift = 2,
294
SpvFPFastMathModeAllowRecipShift = 3,
295
SpvFPFastMathModeFastShift = 4,
296
SpvFPFastMathModeMax = 0x7fffffff,
297
} SpvFPFastMathModeShift;
299
typedef enum SpvFPFastMathModeMask_ {
300
SpvFPFastMathModeMaskNone = 0,
301
SpvFPFastMathModeNotNaNMask = 0x00000001,
302
SpvFPFastMathModeNotInfMask = 0x00000002,
303
SpvFPFastMathModeNSZMask = 0x00000004,
304
SpvFPFastMathModeAllowRecipMask = 0x00000008,
305
SpvFPFastMathModeFastMask = 0x00000010,
306
} SpvFPFastMathModeMask;
308
typedef enum SpvFPRoundingMode_ {
309
SpvFPRoundingModeRTE = 0,
310
SpvFPRoundingModeRTZ = 1,
311
SpvFPRoundingModeRTP = 2,
312
SpvFPRoundingModeRTN = 3,
313
SpvFPRoundingModeMax = 0x7fffffff,
316
typedef enum SpvLinkageType_ {
317
SpvLinkageTypeExport = 0,
318
SpvLinkageTypeImport = 1,
319
SpvLinkageTypeMax = 0x7fffffff,
322
typedef enum SpvAccessQualifier_ {
323
SpvAccessQualifierReadOnly = 0,
324
SpvAccessQualifierWriteOnly = 1,
325
SpvAccessQualifierReadWrite = 2,
326
SpvAccessQualifierMax = 0x7fffffff,
327
} SpvAccessQualifier;
329
typedef enum SpvFunctionParameterAttribute_ {
330
SpvFunctionParameterAttributeZext = 0,
331
SpvFunctionParameterAttributeSext = 1,
332
SpvFunctionParameterAttributeByVal = 2,
333
SpvFunctionParameterAttributeSret = 3,
334
SpvFunctionParameterAttributeNoAlias = 4,
335
SpvFunctionParameterAttributeNoCapture = 5,
336
SpvFunctionParameterAttributeNoWrite = 6,
337
SpvFunctionParameterAttributeNoReadWrite = 7,
338
SpvFunctionParameterAttributeMax = 0x7fffffff,
339
} SpvFunctionParameterAttribute;
341
typedef enum SpvDecoration_ {
342
SpvDecorationRelaxedPrecision = 0,
343
SpvDecorationSpecId = 1,
344
SpvDecorationBlock = 2,
345
SpvDecorationBufferBlock = 3,
346
SpvDecorationRowMajor = 4,
347
SpvDecorationColMajor = 5,
348
SpvDecorationArrayStride = 6,
349
SpvDecorationMatrixStride = 7,
350
SpvDecorationGLSLShared = 8,
351
SpvDecorationGLSLPacked = 9,
352
SpvDecorationCPacked = 10,
353
SpvDecorationBuiltIn = 11,
354
SpvDecorationNoPerspective = 13,
355
SpvDecorationFlat = 14,
356
SpvDecorationPatch = 15,
357
SpvDecorationCentroid = 16,
358
SpvDecorationSample = 17,
359
SpvDecorationInvariant = 18,
360
SpvDecorationRestrict = 19,
361
SpvDecorationAliased = 20,
362
SpvDecorationVolatile = 21,
363
SpvDecorationConstant = 22,
364
SpvDecorationCoherent = 23,
365
SpvDecorationNonWritable = 24,
366
SpvDecorationNonReadable = 25,
367
SpvDecorationUniform = 26,
368
SpvDecorationSaturatedConversion = 28,
369
SpvDecorationStream = 29,
370
SpvDecorationLocation = 30,
371
SpvDecorationComponent = 31,
372
SpvDecorationIndex = 32,
373
SpvDecorationBinding = 33,
374
SpvDecorationDescriptorSet = 34,
375
SpvDecorationOffset = 35,
376
SpvDecorationXfbBuffer = 36,
377
SpvDecorationXfbStride = 37,
378
SpvDecorationFuncParamAttr = 38,
379
SpvDecorationFPRoundingMode = 39,
380
SpvDecorationFPFastMathMode = 40,
381
SpvDecorationLinkageAttributes = 41,
382
SpvDecorationNoContraction = 42,
383
SpvDecorationInputAttachmentIndex = 43,
384
SpvDecorationAlignment = 44,
385
SpvDecorationExplicitInterpAMD = 4999,
386
SpvDecorationOverrideCoverageNV = 5248,
387
SpvDecorationPassthroughNV = 5250,
388
SpvDecorationViewportRelativeNV = 5252,
389
SpvDecorationSecondaryViewportRelativeNV = 5256,
390
SpvDecorationHlslCounterBufferGOOGLE = 5634,
391
SpvDecorationHlslSemanticGOOGLE = 5635,
392
SpvDecorationMax = 0x7fffffff,
395
typedef enum SpvBuiltIn_ {
396
SpvBuiltInPosition = 0,
397
SpvBuiltInPointSize = 1,
398
SpvBuiltInClipDistance = 3,
399
SpvBuiltInCullDistance = 4,
400
SpvBuiltInVertexId = 5,
401
SpvBuiltInInstanceId = 6,
402
SpvBuiltInPrimitiveId = 7,
403
SpvBuiltInInvocationId = 8,
405
SpvBuiltInViewportIndex = 10,
406
SpvBuiltInTessLevelOuter = 11,
407
SpvBuiltInTessLevelInner = 12,
408
SpvBuiltInTessCoord = 13,
409
SpvBuiltInPatchVertices = 14,
410
SpvBuiltInFragCoord = 15,
411
SpvBuiltInPointCoord = 16,
412
SpvBuiltInFrontFacing = 17,
413
SpvBuiltInSampleId = 18,
414
SpvBuiltInSamplePosition = 19,
415
SpvBuiltInSampleMask = 20,
416
SpvBuiltInFragDepth = 22,
417
SpvBuiltInHelperInvocation = 23,
418
SpvBuiltInNumWorkgroups = 24,
419
SpvBuiltInWorkgroupSize = 25,
420
SpvBuiltInWorkgroupId = 26,
421
SpvBuiltInLocalInvocationId = 27,
422
SpvBuiltInGlobalInvocationId = 28,
423
SpvBuiltInLocalInvocationIndex = 29,
424
SpvBuiltInWorkDim = 30,
425
SpvBuiltInGlobalSize = 31,
426
SpvBuiltInEnqueuedWorkgroupSize = 32,
427
SpvBuiltInGlobalOffset = 33,
428
SpvBuiltInGlobalLinearId = 34,
429
SpvBuiltInSubgroupSize = 36,
430
SpvBuiltInSubgroupMaxSize = 37,
431
SpvBuiltInNumSubgroups = 38,
432
SpvBuiltInNumEnqueuedSubgroups = 39,
433
SpvBuiltInSubgroupId = 40,
434
SpvBuiltInSubgroupLocalInvocationId = 41,
435
SpvBuiltInVertexIndex = 42,
436
SpvBuiltInInstanceIndex = 43,
437
SpvBuiltInSubgroupEqMaskKHR = 4416,
438
SpvBuiltInSubgroupGeMaskKHR = 4417,
439
SpvBuiltInSubgroupGtMaskKHR = 4418,
440
SpvBuiltInSubgroupLeMaskKHR = 4419,
441
SpvBuiltInSubgroupLtMaskKHR = 4420,
442
SpvBuiltInBaseVertex = 4424,
443
SpvBuiltInBaseInstance = 4425,
444
SpvBuiltInDrawIndex = 4426,
445
SpvBuiltInDeviceIndex = 4438,
446
SpvBuiltInViewIndex = 4440,
447
SpvBuiltInBaryCoordNoPerspAMD = 4992,
448
SpvBuiltInBaryCoordNoPerspCentroidAMD = 4993,
449
SpvBuiltInBaryCoordNoPerspSampleAMD = 4994,
450
SpvBuiltInBaryCoordSmoothAMD = 4995,
451
SpvBuiltInBaryCoordSmoothCentroidAMD = 4996,
452
SpvBuiltInBaryCoordSmoothSampleAMD = 4997,
453
SpvBuiltInBaryCoordPullModelAMD = 4998,
454
SpvBuiltInFragStencilRefEXT = 5014,
455
SpvBuiltInViewportMaskNV = 5253,
456
SpvBuiltInSecondaryPositionNV = 5257,
457
SpvBuiltInSecondaryViewportMaskNV = 5258,
458
SpvBuiltInPositionPerViewNV = 5261,
459
SpvBuiltInViewportMaskPerViewNV = 5262,
460
SpvBuiltInMax = 0x7fffffff,
463
typedef enum SpvSelectionControlShift_ {
464
SpvSelectionControlFlattenShift = 0,
465
SpvSelectionControlDontFlattenShift = 1,
466
SpvSelectionControlMax = 0x7fffffff,
467
} SpvSelectionControlShift;
469
typedef enum SpvSelectionControlMask_ {
470
SpvSelectionControlMaskNone = 0,
471
SpvSelectionControlFlattenMask = 0x00000001,
472
SpvSelectionControlDontFlattenMask = 0x00000002,
473
} SpvSelectionControlMask;
475
typedef enum SpvLoopControlShift_ {
476
SpvLoopControlUnrollShift = 0,
477
SpvLoopControlDontUnrollShift = 1,
478
SpvLoopControlMax = 0x7fffffff,
479
} SpvLoopControlShift;
481
typedef enum SpvLoopControlMask_ {
482
SpvLoopControlMaskNone = 0,
483
SpvLoopControlUnrollMask = 0x00000001,
484
SpvLoopControlDontUnrollMask = 0x00000002,
485
} SpvLoopControlMask;
487
typedef enum SpvFunctionControlShift_ {
488
SpvFunctionControlInlineShift = 0,
489
SpvFunctionControlDontInlineShift = 1,
490
SpvFunctionControlPureShift = 2,
491
SpvFunctionControlConstShift = 3,
492
SpvFunctionControlMax = 0x7fffffff,
493
} SpvFunctionControlShift;
495
typedef enum SpvFunctionControlMask_ {
496
SpvFunctionControlMaskNone = 0,
497
SpvFunctionControlInlineMask = 0x00000001,
498
SpvFunctionControlDontInlineMask = 0x00000002,
499
SpvFunctionControlPureMask = 0x00000004,
500
SpvFunctionControlConstMask = 0x00000008,
501
} SpvFunctionControlMask;
503
typedef enum SpvMemorySemanticsShift_ {
504
SpvMemorySemanticsAcquireShift = 1,
505
SpvMemorySemanticsReleaseShift = 2,
506
SpvMemorySemanticsAcquireReleaseShift = 3,
507
SpvMemorySemanticsSequentiallyConsistentShift = 4,
508
SpvMemorySemanticsUniformMemoryShift = 6,
509
SpvMemorySemanticsSubgroupMemoryShift = 7,
510
SpvMemorySemanticsWorkgroupMemoryShift = 8,
511
SpvMemorySemanticsCrossWorkgroupMemoryShift = 9,
512
SpvMemorySemanticsAtomicCounterMemoryShift = 10,
513
SpvMemorySemanticsImageMemoryShift = 11,
514
SpvMemorySemanticsMax = 0x7fffffff,
515
} SpvMemorySemanticsShift;
517
typedef enum SpvMemorySemanticsMask_ {
518
SpvMemorySemanticsMaskNone = 0,
519
SpvMemorySemanticsAcquireMask = 0x00000002,
520
SpvMemorySemanticsReleaseMask = 0x00000004,
521
SpvMemorySemanticsAcquireReleaseMask = 0x00000008,
522
SpvMemorySemanticsSequentiallyConsistentMask = 0x00000010,
523
SpvMemorySemanticsUniformMemoryMask = 0x00000040,
524
SpvMemorySemanticsSubgroupMemoryMask = 0x00000080,
525
SpvMemorySemanticsWorkgroupMemoryMask = 0x00000100,
526
SpvMemorySemanticsCrossWorkgroupMemoryMask = 0x00000200,
527
SpvMemorySemanticsAtomicCounterMemoryMask = 0x00000400,
528
SpvMemorySemanticsImageMemoryMask = 0x00000800,
529
} SpvMemorySemanticsMask;
531
typedef enum SpvMemoryAccessShift_ {
532
SpvMemoryAccessVolatileShift = 0,
533
SpvMemoryAccessAlignedShift = 1,
534
SpvMemoryAccessNontemporalShift = 2,
535
SpvMemoryAccessMax = 0x7fffffff,
536
} SpvMemoryAccessShift;
538
typedef enum SpvMemoryAccessMask_ {
539
SpvMemoryAccessMaskNone = 0,
540
SpvMemoryAccessVolatileMask = 0x00000001,
541
SpvMemoryAccessAlignedMask = 0x00000002,
542
SpvMemoryAccessNontemporalMask = 0x00000004,
543
} SpvMemoryAccessMask;
545
typedef enum SpvScope_ {
546
SpvScopeCrossDevice = 0,
548
SpvScopeWorkgroup = 2,
549
SpvScopeSubgroup = 3,
550
SpvScopeInvocation = 4,
551
SpvScopeMax = 0x7fffffff,
554
typedef enum SpvGroupOperation_ {
555
SpvGroupOperationReduce = 0,
556
SpvGroupOperationInclusiveScan = 1,
557
SpvGroupOperationExclusiveScan = 2,
558
SpvGroupOperationMax = 0x7fffffff,
561
typedef enum SpvKernelEnqueueFlags_ {
562
SpvKernelEnqueueFlagsNoWait = 0,
563
SpvKernelEnqueueFlagsWaitKernel = 1,
564
SpvKernelEnqueueFlagsWaitWorkGroup = 2,
565
SpvKernelEnqueueFlagsMax = 0x7fffffff,
566
} SpvKernelEnqueueFlags;
568
typedef enum SpvKernelProfilingInfoShift_ {
569
SpvKernelProfilingInfoCmdExecTimeShift = 0,
570
SpvKernelProfilingInfoMax = 0x7fffffff,
571
} SpvKernelProfilingInfoShift;
573
typedef enum SpvKernelProfilingInfoMask_ {
574
SpvKernelProfilingInfoMaskNone = 0,
575
SpvKernelProfilingInfoCmdExecTimeMask = 0x00000001,
576
} SpvKernelProfilingInfoMask;
578
typedef enum SpvCapability_ {
579
SpvCapabilityMatrix = 0,
580
SpvCapabilityShader = 1,
581
SpvCapabilityGeometry = 2,
582
SpvCapabilityTessellation = 3,
583
SpvCapabilityAddresses = 4,
584
SpvCapabilityLinkage = 5,
585
SpvCapabilityKernel = 6,
586
SpvCapabilityVector16 = 7,
587
SpvCapabilityFloat16Buffer = 8,
588
SpvCapabilityFloat16 = 9,
589
SpvCapabilityFloat64 = 10,
590
SpvCapabilityInt64 = 11,
591
SpvCapabilityInt64Atomics = 12,
592
SpvCapabilityImageBasic = 13,
593
SpvCapabilityImageReadWrite = 14,
594
SpvCapabilityImageMipmap = 15,
595
SpvCapabilityPipes = 17,
596
SpvCapabilityGroups = 18,
597
SpvCapabilityDeviceEnqueue = 19,
598
SpvCapabilityLiteralSampler = 20,
599
SpvCapabilityAtomicStorage = 21,
600
SpvCapabilityInt16 = 22,
601
SpvCapabilityTessellationPointSize = 23,
602
SpvCapabilityGeometryPointSize = 24,
603
SpvCapabilityImageGatherExtended = 25,
604
SpvCapabilityStorageImageMultisample = 27,
605
SpvCapabilityUniformBufferArrayDynamicIndexing = 28,
606
SpvCapabilitySampledImageArrayDynamicIndexing = 29,
607
SpvCapabilityStorageBufferArrayDynamicIndexing = 30,
608
SpvCapabilityStorageImageArrayDynamicIndexing = 31,
609
SpvCapabilityClipDistance = 32,
610
SpvCapabilityCullDistance = 33,
611
SpvCapabilityImageCubeArray = 34,
612
SpvCapabilitySampleRateShading = 35,
613
SpvCapabilityImageRect = 36,
614
SpvCapabilitySampledRect = 37,
615
SpvCapabilityGenericPointer = 38,
616
SpvCapabilityInt8 = 39,
617
SpvCapabilityInputAttachment = 40,
618
SpvCapabilitySparseResidency = 41,
619
SpvCapabilityMinLod = 42,
620
SpvCapabilitySampled1D = 43,
621
SpvCapabilityImage1D = 44,
622
SpvCapabilitySampledCubeArray = 45,
623
SpvCapabilitySampledBuffer = 46,
624
SpvCapabilityImageBuffer = 47,
625
SpvCapabilityImageMSArray = 48,
626
SpvCapabilityStorageImageExtendedFormats = 49,
627
SpvCapabilityImageQuery = 50,
628
SpvCapabilityDerivativeControl = 51,
629
SpvCapabilityInterpolationFunction = 52,
630
SpvCapabilityTransformFeedback = 53,
631
SpvCapabilityGeometryStreams = 54,
632
SpvCapabilityStorageImageReadWithoutFormat = 55,
633
SpvCapabilityStorageImageWriteWithoutFormat = 56,
634
SpvCapabilityMultiViewport = 57,
635
SpvCapabilitySubgroupBallotKHR = 4423,
636
SpvCapabilityDrawParameters = 4427,
637
SpvCapabilitySubgroupVoteKHR = 4431,
638
SpvCapabilityStorageBuffer16BitAccess = 4433,
639
SpvCapabilityStorageUniformBufferBlock16 = 4433,
640
SpvCapabilityStorageUniform16 = 4434,
641
SpvCapabilityUniformAndStorageBuffer16BitAccess = 4434,
642
SpvCapabilityStoragePushConstant16 = 4435,
643
SpvCapabilityStorageInputOutput16 = 4436,
644
SpvCapabilityDeviceGroup = 4437,
645
SpvCapabilityMultiView = 4439,
646
SpvCapabilityVariablePointersStorageBuffer = 4441,
647
SpvCapabilityVariablePointers = 4442,
648
SpvCapabilityAtomicStorageOps = 4445,
649
SpvCapabilitySampleMaskPostDepthCoverage = 4447,
650
SpvCapabilityImageGatherBiasLodAMD = 5009,
651
SpvCapabilityFragmentMaskAMD = 5010,
652
SpvCapabilityStencilExportEXT = 5013,
653
SpvCapabilityImageReadWriteLodAMD = 5015,
654
SpvCapabilitySampleMaskOverrideCoverageNV = 5249,
655
SpvCapabilityGeometryShaderPassthroughNV = 5251,
656
SpvCapabilityShaderViewportIndexLayerEXT = 5254,
657
SpvCapabilityShaderViewportIndexLayerNV = 5254,
658
SpvCapabilityShaderViewportMaskNV = 5255,
659
SpvCapabilityShaderStereoViewNV = 5259,
660
SpvCapabilityPerViewAttributesNV = 5260,
661
SpvCapabilitySubgroupShuffleINTEL = 5568,
662
SpvCapabilitySubgroupBufferBlockIOINTEL = 5569,
663
SpvCapabilitySubgroupImageBlockIOINTEL = 5570,
664
SpvCapabilityMax = 0x7fffffff,
667
typedef enum SpvOp_ {
670
SpvOpSourceContinued = 2,
672
SpvOpSourceExtension = 4,
678
SpvOpExtInstImport = 11,
680
SpvOpMemoryModel = 14,
681
SpvOpEntryPoint = 15,
682
SpvOpExecutionMode = 16,
683
SpvOpCapability = 17,
688
SpvOpTypeVector = 23,
689
SpvOpTypeMatrix = 24,
691
SpvOpTypeSampler = 26,
692
SpvOpTypeSampledImage = 27,
694
SpvOpTypeRuntimeArray = 29,
695
SpvOpTypeStruct = 30,
696
SpvOpTypeOpaque = 31,
697
SpvOpTypePointer = 32,
698
SpvOpTypeFunction = 33,
700
SpvOpTypeDeviceEvent = 35,
701
SpvOpTypeReserveId = 36,
704
SpvOpTypeForwardPointer = 39,
705
SpvOpConstantTrue = 41,
706
SpvOpConstantFalse = 42,
708
SpvOpConstantComposite = 44,
709
SpvOpConstantSampler = 45,
710
SpvOpConstantNull = 46,
711
SpvOpSpecConstantTrue = 48,
712
SpvOpSpecConstantFalse = 49,
713
SpvOpSpecConstant = 50,
714
SpvOpSpecConstantComposite = 51,
715
SpvOpSpecConstantOp = 52,
717
SpvOpFunctionParameter = 55,
718
SpvOpFunctionEnd = 56,
719
SpvOpFunctionCall = 57,
721
SpvOpImageTexelPointer = 60,
724
SpvOpCopyMemory = 63,
725
SpvOpCopyMemorySized = 64,
726
SpvOpAccessChain = 65,
727
SpvOpInBoundsAccessChain = 66,
728
SpvOpPtrAccessChain = 67,
729
SpvOpArrayLength = 68,
730
SpvOpGenericPtrMemSemantics = 69,
731
SpvOpInBoundsPtrAccessChain = 70,
733
SpvOpMemberDecorate = 72,
734
SpvOpDecorationGroup = 73,
735
SpvOpGroupDecorate = 74,
736
SpvOpGroupMemberDecorate = 75,
737
SpvOpVectorExtractDynamic = 77,
738
SpvOpVectorInsertDynamic = 78,
739
SpvOpVectorShuffle = 79,
740
SpvOpCompositeConstruct = 80,
741
SpvOpCompositeExtract = 81,
742
SpvOpCompositeInsert = 82,
743
SpvOpCopyObject = 83,
745
SpvOpSampledImage = 86,
746
SpvOpImageSampleImplicitLod = 87,
747
SpvOpImageSampleExplicitLod = 88,
748
SpvOpImageSampleDrefImplicitLod = 89,
749
SpvOpImageSampleDrefExplicitLod = 90,
750
SpvOpImageSampleProjImplicitLod = 91,
751
SpvOpImageSampleProjExplicitLod = 92,
752
SpvOpImageSampleProjDrefImplicitLod = 93,
753
SpvOpImageSampleProjDrefExplicitLod = 94,
754
SpvOpImageFetch = 95,
755
SpvOpImageGather = 96,
756
SpvOpImageDrefGather = 97,
758
SpvOpImageWrite = 99,
760
SpvOpImageQueryFormat = 101,
761
SpvOpImageQueryOrder = 102,
762
SpvOpImageQuerySizeLod = 103,
763
SpvOpImageQuerySize = 104,
764
SpvOpImageQueryLod = 105,
765
SpvOpImageQueryLevels = 106,
766
SpvOpImageQuerySamples = 107,
767
SpvOpConvertFToU = 109,
768
SpvOpConvertFToS = 110,
769
SpvOpConvertSToF = 111,
770
SpvOpConvertUToF = 112,
774
SpvOpQuantizeToF16 = 116,
775
SpvOpConvertPtrToU = 117,
776
SpvOpSatConvertSToU = 118,
777
SpvOpSatConvertUToS = 119,
778
SpvOpConvertUToPtr = 120,
779
SpvOpPtrCastToGeneric = 121,
780
SpvOpGenericCastToPtr = 122,
781
SpvOpGenericCastToPtrExplicit = 123,
799
SpvOpVectorTimesScalar = 142,
800
SpvOpMatrixTimesScalar = 143,
801
SpvOpVectorTimesMatrix = 144,
802
SpvOpMatrixTimesVector = 145,
803
SpvOpMatrixTimesMatrix = 146,
804
SpvOpOuterProduct = 147,
806
SpvOpIAddCarry = 149,
807
SpvOpISubBorrow = 150,
808
SpvOpUMulExtended = 151,
809
SpvOpSMulExtended = 152,
816
SpvOpSignBitSet = 160,
817
SpvOpLessOrGreater = 161,
819
SpvOpUnordered = 163,
820
SpvOpLogicalEqual = 164,
821
SpvOpLogicalNotEqual = 165,
822
SpvOpLogicalOr = 166,
823
SpvOpLogicalAnd = 167,
824
SpvOpLogicalNot = 168,
827
SpvOpINotEqual = 171,
828
SpvOpUGreaterThan = 172,
829
SpvOpSGreaterThan = 173,
830
SpvOpUGreaterThanEqual = 174,
831
SpvOpSGreaterThanEqual = 175,
832
SpvOpULessThan = 176,
833
SpvOpSLessThan = 177,
834
SpvOpULessThanEqual = 178,
835
SpvOpSLessThanEqual = 179,
836
SpvOpFOrdEqual = 180,
837
SpvOpFUnordEqual = 181,
838
SpvOpFOrdNotEqual = 182,
839
SpvOpFUnordNotEqual = 183,
840
SpvOpFOrdLessThan = 184,
841
SpvOpFUnordLessThan = 185,
842
SpvOpFOrdGreaterThan = 186,
843
SpvOpFUnordGreaterThan = 187,
844
SpvOpFOrdLessThanEqual = 188,
845
SpvOpFUnordLessThanEqual = 189,
846
SpvOpFOrdGreaterThanEqual = 190,
847
SpvOpFUnordGreaterThanEqual = 191,
848
SpvOpShiftRightLogical = 194,
849
SpvOpShiftRightArithmetic = 195,
850
SpvOpShiftLeftLogical = 196,
851
SpvOpBitwiseOr = 197,
852
SpvOpBitwiseXor = 198,
853
SpvOpBitwiseAnd = 199,
855
SpvOpBitFieldInsert = 201,
856
SpvOpBitFieldSExtract = 202,
857
SpvOpBitFieldUExtract = 203,
858
SpvOpBitReverse = 204,
865
SpvOpFwidthFine = 212,
866
SpvOpDPdxCoarse = 213,
867
SpvOpDPdyCoarse = 214,
868
SpvOpFwidthCoarse = 215,
869
SpvOpEmitVertex = 218,
870
SpvOpEndPrimitive = 219,
871
SpvOpEmitStreamVertex = 220,
872
SpvOpEndStreamPrimitive = 221,
873
SpvOpControlBarrier = 224,
874
SpvOpMemoryBarrier = 225,
875
SpvOpAtomicLoad = 227,
876
SpvOpAtomicStore = 228,
877
SpvOpAtomicExchange = 229,
878
SpvOpAtomicCompareExchange = 230,
879
SpvOpAtomicCompareExchangeWeak = 231,
880
SpvOpAtomicIIncrement = 232,
881
SpvOpAtomicIDecrement = 233,
882
SpvOpAtomicIAdd = 234,
883
SpvOpAtomicISub = 235,
884
SpvOpAtomicSMin = 236,
885
SpvOpAtomicUMin = 237,
886
SpvOpAtomicSMax = 238,
887
SpvOpAtomicUMax = 239,
888
SpvOpAtomicAnd = 240,
890
SpvOpAtomicXor = 242,
892
SpvOpLoopMerge = 246,
893
SpvOpSelectionMerge = 247,
896
SpvOpBranchConditional = 250,
900
SpvOpReturnValue = 254,
901
SpvOpUnreachable = 255,
902
SpvOpLifetimeStart = 256,
903
SpvOpLifetimeStop = 257,
904
SpvOpGroupAsyncCopy = 259,
905
SpvOpGroupWaitEvents = 260,
908
SpvOpGroupBroadcast = 263,
909
SpvOpGroupIAdd = 264,
910
SpvOpGroupFAdd = 265,
911
SpvOpGroupFMin = 266,
912
SpvOpGroupUMin = 267,
913
SpvOpGroupSMin = 268,
914
SpvOpGroupFMax = 269,
915
SpvOpGroupUMax = 270,
916
SpvOpGroupSMax = 271,
918
SpvOpWritePipe = 275,
919
SpvOpReservedReadPipe = 276,
920
SpvOpReservedWritePipe = 277,
921
SpvOpReserveReadPipePackets = 278,
922
SpvOpReserveWritePipePackets = 279,
923
SpvOpCommitReadPipe = 280,
924
SpvOpCommitWritePipe = 281,
925
SpvOpIsValidReserveId = 282,
926
SpvOpGetNumPipePackets = 283,
927
SpvOpGetMaxPipePackets = 284,
928
SpvOpGroupReserveReadPipePackets = 285,
929
SpvOpGroupReserveWritePipePackets = 286,
930
SpvOpGroupCommitReadPipe = 287,
931
SpvOpGroupCommitWritePipe = 288,
932
SpvOpEnqueueMarker = 291,
933
SpvOpEnqueueKernel = 292,
934
SpvOpGetKernelNDrangeSubGroupCount = 293,
935
SpvOpGetKernelNDrangeMaxSubGroupSize = 294,
936
SpvOpGetKernelWorkGroupSize = 295,
937
SpvOpGetKernelPreferredWorkGroupSizeMultiple = 296,
938
SpvOpRetainEvent = 297,
939
SpvOpReleaseEvent = 298,
940
SpvOpCreateUserEvent = 299,
941
SpvOpIsValidEvent = 300,
942
SpvOpSetUserEventStatus = 301,
943
SpvOpCaptureEventProfilingInfo = 302,
944
SpvOpGetDefaultQueue = 303,
945
SpvOpBuildNDRange = 304,
946
SpvOpImageSparseSampleImplicitLod = 305,
947
SpvOpImageSparseSampleExplicitLod = 306,
948
SpvOpImageSparseSampleDrefImplicitLod = 307,
949
SpvOpImageSparseSampleDrefExplicitLod = 308,
950
SpvOpImageSparseSampleProjImplicitLod = 309,
951
SpvOpImageSparseSampleProjExplicitLod = 310,
952
SpvOpImageSparseSampleProjDrefImplicitLod = 311,
953
SpvOpImageSparseSampleProjDrefExplicitLod = 312,
954
SpvOpImageSparseFetch = 313,
955
SpvOpImageSparseGather = 314,
956
SpvOpImageSparseDrefGather = 315,
957
SpvOpImageSparseTexelsResident = 316,
959
SpvOpAtomicFlagTestAndSet = 318,
960
SpvOpAtomicFlagClear = 319,
961
SpvOpImageSparseRead = 320,
962
SpvOpDecorateId = 332,
963
SpvOpSubgroupBallotKHR = 4421,
964
SpvOpSubgroupFirstInvocationKHR = 4422,
965
SpvOpSubgroupAllKHR = 4428,
966
SpvOpSubgroupAnyKHR = 4429,
967
SpvOpSubgroupAllEqualKHR = 4430,
968
SpvOpSubgroupReadInvocationKHR = 4432,
969
SpvOpGroupIAddNonUniformAMD = 5000,
970
SpvOpGroupFAddNonUniformAMD = 5001,
971
SpvOpGroupFMinNonUniformAMD = 5002,
972
SpvOpGroupUMinNonUniformAMD = 5003,
973
SpvOpGroupSMinNonUniformAMD = 5004,
974
SpvOpGroupFMaxNonUniformAMD = 5005,
975
SpvOpGroupUMaxNonUniformAMD = 5006,
976
SpvOpGroupSMaxNonUniformAMD = 5007,
977
SpvOpFragmentMaskFetchAMD = 5011,
978
SpvOpFragmentFetchAMD = 5012,
979
SpvOpSubgroupShuffleINTEL = 5571,
980
SpvOpSubgroupShuffleDownINTEL = 5572,
981
SpvOpSubgroupShuffleUpINTEL = 5573,
982
SpvOpSubgroupShuffleXorINTEL = 5574,
983
SpvOpSubgroupBlockReadINTEL = 5575,
984
SpvOpSubgroupBlockWriteINTEL = 5576,
985
SpvOpSubgroupImageBlockReadINTEL = 5577,
986
SpvOpSubgroupImageBlockWriteINTEL = 5578,
987
SpvOpDecorateStringGOOGLE = 5632,
988
SpvOpMemberDecorateStringGOOGLE = 5633,
989
SpvOpMax = 0x7fffffff,
992
#endif // #ifndef spirv_H