• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1{
2  "copyright" : [
3    "Copyright (c) 2014-2016 The Khronos Group Inc.",
4    "",
5    "Permission is hereby granted, free of charge, to any person obtaining a copy",
6    "of this software and/or associated documentation files (the \"Materials\"),",
7    "to deal in the Materials without restriction, including without limitation",
8    "the rights to use, copy, modify, merge, publish, distribute, sublicense,",
9    "and/or sell copies of the Materials, and to permit persons to whom the",
10    "Materials are furnished to do so, subject to the following conditions:",
11    "",
12    "The above copyright notice and this permission notice shall be included in",
13    "all copies or substantial portions of the Materials.",
14    "",
15    "MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS KHRONOS",
16    "STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS SPECIFICATIONS AND",
17    "HEADER INFORMATION ARE LOCATED AT https://www.khronos.org/registry/ ",
18    "",
19    "THE MATERIALS ARE PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS",
20    "OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,",
21    "FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL",
22    "THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER",
23    "LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING",
24    "FROM,OUT OF OR IN CONNECTION WITH THE MATERIALS OR THE USE OR OTHER DEALINGS",
25    "IN THE MATERIALS."
26  ],
27  "magic_number" : "0x07230203",
28  "major_version" : 1,
29  "minor_version" : 2,
30  "revision" : 2,
31  "instructions" : [
32    {
33      "opname" : "OpNop",
34      "opcode" : 0
35    },
36    {
37      "opname" : "OpUndef",
38      "opcode" : 1,
39      "operands" : [
40        { "kind" : "IdResultType" },
41        { "kind" : "IdResult" }
42      ]
43    },
44    {
45      "opname" : "OpSourceContinued",
46      "opcode" : 2,
47      "operands" : [
48        { "kind" : "LiteralString", "name" : "'Continued Source'" }
49      ]
50    },
51    {
52      "opname" : "OpSource",
53      "opcode" : 3,
54      "operands" : [
55        { "kind" : "SourceLanguage" },
56        { "kind" : "LiteralInteger",                     "name" : "'Version'" },
57        { "kind" : "IdRef",          "quantifier" : "?", "name" : "'File'" },
58        { "kind" : "LiteralString",  "quantifier" : "?", "name" : "'Source'" }
59      ]
60    },
61    {
62      "opname" : "OpSourceExtension",
63      "opcode" : 4,
64      "operands" : [
65        { "kind" : "LiteralString", "name" : "'Extension'" }
66      ]
67    },
68    {
69      "opname" : "OpName",
70      "opcode" : 5,
71      "operands" : [
72        { "kind" : "IdRef",         "name" : "'Target'" },
73        { "kind" : "LiteralString", "name" : "'Name'" }
74      ]
75    },
76    {
77      "opname" : "OpMemberName",
78      "opcode" : 6,
79      "operands" : [
80        { "kind" : "IdRef",          "name" : "'Type'" },
81        { "kind" : "LiteralInteger", "name" : "'Member'" },
82        { "kind" : "LiteralString",  "name" : "'Name'" }
83      ]
84    },
85    {
86      "opname" : "OpString",
87      "opcode" : 7,
88      "operands" : [
89        { "kind" : "IdResult" },
90        { "kind" : "LiteralString", "name" : "'String'" }
91      ]
92    },
93    {
94      "opname" : "OpLine",
95      "opcode" : 8,
96      "operands" : [
97        { "kind" : "IdRef",          "name" : "'File'" },
98        { "kind" : "LiteralInteger", "name" : "'Line'" },
99        { "kind" : "LiteralInteger", "name" : "'Column'" }
100      ]
101    },
102    {
103      "opname" : "OpExtension",
104      "opcode" : 10,
105      "operands" : [
106        { "kind" : "LiteralString", "name" : "'Name'" }
107      ]
108    },
109    {
110      "opname" : "OpExtInstImport",
111      "opcode" : 11,
112      "operands" : [
113        { "kind" : "IdResult" },
114        { "kind" : "LiteralString", "name" : "'Name'" }
115      ]
116    },
117    {
118      "opname" : "OpExtInst",
119      "opcode" : 12,
120      "operands" : [
121        { "kind" : "IdResultType" },
122        { "kind" : "IdResult" },
123        { "kind" : "IdRef",                                     "name" : "'Set'" },
124        { "kind" : "LiteralExtInstInteger",                     "name" : "'Instruction'" },
125        { "kind" : "IdRef",                 "quantifier" : "*", "name" : "'Operand 1', +\n'Operand 2', +\n..." }
126      ]
127    },
128    {
129      "opname" : "OpMemoryModel",
130      "opcode" : 14,
131      "operands" : [
132        { "kind" : "AddressingModel" },
133        { "kind" : "MemoryModel" }
134      ]
135    },
136    {
137      "opname" : "OpEntryPoint",
138      "opcode" : 15,
139      "operands" : [
140        { "kind" : "ExecutionModel" },
141        { "kind" : "IdRef",                              "name" : "'Entry Point'" },
142        { "kind" : "LiteralString",                      "name" : "'Name'" },
143        { "kind" : "IdRef",          "quantifier" : "*", "name" : "'Interface'" }
144      ]
145    },
146    {
147      "opname" : "OpExecutionMode",
148      "opcode" : 16,
149      "operands" : [
150        { "kind" : "IdRef",         "name" : "'Entry Point'" },
151        { "kind" : "ExecutionMode", "name" : "'Mode'" }
152      ]
153    },
154    {
155      "opname" : "OpCapability",
156      "opcode" : 17,
157      "operands" : [
158        { "kind" : "Capability", "name" : "'Capability'" }
159      ]
160    },
161    {
162      "opname" : "OpTypeVoid",
163      "opcode" : 19,
164      "operands" : [
165        { "kind" : "IdResult" }
166      ]
167    },
168    {
169      "opname" : "OpTypeBool",
170      "opcode" : 20,
171      "operands" : [
172        { "kind" : "IdResult" }
173      ]
174    },
175    {
176      "opname" : "OpTypeInt",
177      "opcode" : 21,
178      "operands" : [
179        { "kind" : "IdResult" },
180        { "kind" : "LiteralInteger", "name" : "'Width'" },
181        { "kind" : "LiteralInteger", "name" : "'Signedness'" }
182      ]
183    },
184    {
185      "opname" : "OpTypeFloat",
186      "opcode" : 22,
187      "operands" : [
188        { "kind" : "IdResult" },
189        { "kind" : "LiteralInteger", "name" : "'Width'" }
190      ]
191    },
192    {
193      "opname" : "OpTypeVector",
194      "opcode" : 23,
195      "operands" : [
196        { "kind" : "IdResult" },
197        { "kind" : "IdRef",          "name" : "'Component Type'" },
198        { "kind" : "LiteralInteger", "name" : "'Component Count'" }
199      ]
200    },
201    {
202      "opname" : "OpTypeMatrix",
203      "opcode" : 24,
204      "operands" : [
205        { "kind" : "IdResult" },
206        { "kind" : "IdRef",          "name" : "'Column Type'" },
207        { "kind" : "LiteralInteger", "name" : "'Column Count'" }
208      ],
209      "capabilities" : [ "Matrix" ]
210    },
211    {
212      "opname" : "OpTypeImage",
213      "opcode" : 25,
214      "operands" : [
215        { "kind" : "IdResult" },
216        { "kind" : "IdRef",                               "name" : "'Sampled Type'" },
217        { "kind" : "Dim" },
218        { "kind" : "LiteralInteger",                      "name" : "'Depth'" },
219        { "kind" : "LiteralInteger",                      "name" : "'Arrayed'" },
220        { "kind" : "LiteralInteger",                      "name" : "'MS'" },
221        { "kind" : "LiteralInteger",                      "name" : "'Sampled'" },
222        { "kind" : "ImageFormat" },
223        { "kind" : "AccessQualifier", "quantifier" : "?" }
224      ]
225    },
226    {
227      "opname" : "OpTypeSampler",
228      "opcode" : 26,
229      "operands" : [
230        { "kind" : "IdResult" }
231      ]
232    },
233    {
234      "opname" : "OpTypeSampledImage",
235      "opcode" : 27,
236      "operands" : [
237        { "kind" : "IdResult" },
238        { "kind" : "IdRef",    "name" : "'Image Type'" }
239      ]
240    },
241    {
242      "opname" : "OpTypeArray",
243      "opcode" : 28,
244      "operands" : [
245        { "kind" : "IdResult" },
246        { "kind" : "IdRef",    "name" : "'Element Type'" },
247        { "kind" : "IdRef",    "name" : "'Length'" }
248      ]
249    },
250    {
251      "opname" : "OpTypeRuntimeArray",
252      "opcode" : 29,
253      "operands" : [
254        { "kind" : "IdResult" },
255        { "kind" : "IdRef",    "name" : "'Element Type'" }
256      ],
257      "capabilities" : [ "Shader" ]
258    },
259    {
260      "opname" : "OpTypeStruct",
261      "opcode" : 30,
262      "operands" : [
263        { "kind" : "IdResult" },
264        { "kind" : "IdRef",    "quantifier" : "*", "name" : "'Member 0 type', +\n'member 1 type', +\n..." }
265      ]
266    },
267    {
268      "opname" : "OpTypeOpaque",
269      "opcode" : 31,
270      "operands" : [
271        { "kind" : "IdResult" },
272        { "kind" : "LiteralString", "name" : "The name of the opaque type." }
273      ],
274      "capabilities" : [ "Kernel" ]
275    },
276    {
277      "opname" : "OpTypePointer",
278      "opcode" : 32,
279      "operands" : [
280        { "kind" : "IdResult" },
281        { "kind" : "StorageClass" },
282        { "kind" : "IdRef",        "name" : "'Type'" }
283      ]
284    },
285    {
286      "opname" : "OpTypeFunction",
287      "opcode" : 33,
288      "operands" : [
289        { "kind" : "IdResult" },
290        { "kind" : "IdRef",                        "name" : "'Return Type'" },
291        { "kind" : "IdRef",    "quantifier" : "*", "name" : "'Parameter 0 Type', +\n'Parameter 1 Type', +\n..." }
292      ]
293    },
294    {
295      "opname" : "OpTypeEvent",
296      "opcode" : 34,
297      "operands" : [
298        { "kind" : "IdResult" }
299      ],
300      "capabilities" : [ "Kernel" ]
301    },
302    {
303      "opname" : "OpTypeDeviceEvent",
304      "opcode" : 35,
305      "operands" : [
306        { "kind" : "IdResult" }
307      ],
308      "capabilities" : [ "DeviceEnqueue" ]
309    },
310    {
311      "opname" : "OpTypeReserveId",
312      "opcode" : 36,
313      "operands" : [
314        { "kind" : "IdResult" }
315      ],
316      "capabilities" : [ "Pipes" ]
317    },
318    {
319      "opname" : "OpTypeQueue",
320      "opcode" : 37,
321      "operands" : [
322        { "kind" : "IdResult" }
323      ],
324      "capabilities" : [ "DeviceEnqueue" ]
325    },
326    {
327      "opname" : "OpTypePipe",
328      "opcode" : 38,
329      "operands" : [
330        { "kind" : "IdResult" },
331        { "kind" : "AccessQualifier", "name" : "'Qualifier'" }
332      ],
333      "capabilities" : [ "Pipes" ]
334    },
335    {
336      "opname" : "OpTypeForwardPointer",
337      "opcode" : 39,
338      "operands" : [
339        { "kind" : "IdRef",        "name" : "'Pointer Type'" },
340        { "kind" : "StorageClass" }
341      ],
342      "capabilities" : [ "Addresses" ]
343    },
344    {
345      "opname" : "OpConstantTrue",
346      "opcode" : 41,
347      "operands" : [
348        { "kind" : "IdResultType" },
349        { "kind" : "IdResult" }
350      ]
351    },
352    {
353      "opname" : "OpConstantFalse",
354      "opcode" : 42,
355      "operands" : [
356        { "kind" : "IdResultType" },
357        { "kind" : "IdResult" }
358      ]
359    },
360    {
361      "opname" : "OpConstant",
362      "opcode" : 43,
363      "operands" : [
364        { "kind" : "IdResultType" },
365        { "kind" : "IdResult" },
366        { "kind" : "LiteralContextDependentNumber", "name" : "'Value'" }
367      ]
368    },
369    {
370      "opname" : "OpConstantComposite",
371      "opcode" : 44,
372      "operands" : [
373        { "kind" : "IdResultType" },
374        { "kind" : "IdResult" },
375        { "kind" : "IdRef",        "quantifier" : "*", "name" : "'Constituents'" }
376      ]
377    },
378    {
379      "opname" : "OpConstantSampler",
380      "opcode" : 45,
381      "operands" : [
382        { "kind" : "IdResultType" },
383        { "kind" : "IdResult" },
384        { "kind" : "SamplerAddressingMode" },
385        { "kind" : "LiteralInteger",        "name" : "'Param'" },
386        { "kind" : "SamplerFilterMode" }
387      ],
388      "capabilities" : [ "LiteralSampler" ]
389    },
390    {
391      "opname" : "OpConstantNull",
392      "opcode" : 46,
393      "operands" : [
394        { "kind" : "IdResultType" },
395        { "kind" : "IdResult" }
396      ]
397    },
398    {
399      "opname" : "OpSpecConstantTrue",
400      "opcode" : 48,
401      "operands" : [
402        { "kind" : "IdResultType" },
403        { "kind" : "IdResult" }
404      ]
405    },
406    {
407      "opname" : "OpSpecConstantFalse",
408      "opcode" : 49,
409      "operands" : [
410        { "kind" : "IdResultType" },
411        { "kind" : "IdResult" }
412      ]
413    },
414    {
415      "opname" : "OpSpecConstant",
416      "opcode" : 50,
417      "operands" : [
418        { "kind" : "IdResultType" },
419        { "kind" : "IdResult" },
420        { "kind" : "LiteralContextDependentNumber", "name" : "'Value'" }
421      ]
422    },
423    {
424      "opname" : "OpSpecConstantComposite",
425      "opcode" : 51,
426      "operands" : [
427        { "kind" : "IdResultType" },
428        { "kind" : "IdResult" },
429        { "kind" : "IdRef",        "quantifier" : "*", "name" : "'Constituents'" }
430      ]
431    },
432    {
433      "opname" : "OpSpecConstantOp",
434      "opcode" : 52,
435      "operands" : [
436        { "kind" : "IdResultType" },
437        { "kind" : "IdResult" },
438        { "kind" : "LiteralSpecConstantOpInteger", "name" : "'Opcode'" }
439      ]
440    },
441    {
442      "opname" : "OpFunction",
443      "opcode" : 54,
444      "operands" : [
445        { "kind" : "IdResultType" },
446        { "kind" : "IdResult" },
447        { "kind" : "FunctionControl" },
448        { "kind" : "IdRef",           "name" : "'Function Type'" }
449      ]
450    },
451    {
452      "opname" : "OpFunctionParameter",
453      "opcode" : 55,
454      "operands" : [
455        { "kind" : "IdResultType" },
456        { "kind" : "IdResult" }
457      ]
458    },
459    {
460      "opname" : "OpFunctionEnd",
461      "opcode" : 56
462    },
463    {
464      "opname" : "OpFunctionCall",
465      "opcode" : 57,
466      "operands" : [
467        { "kind" : "IdResultType" },
468        { "kind" : "IdResult" },
469        { "kind" : "IdRef",                            "name" : "'Function'" },
470        { "kind" : "IdRef",        "quantifier" : "*", "name" : "'Argument 0', +\n'Argument 1', +\n..." }
471      ]
472    },
473    {
474      "opname" : "OpVariable",
475      "opcode" : 59,
476      "operands" : [
477        { "kind" : "IdResultType" },
478        { "kind" : "IdResult" },
479        { "kind" : "StorageClass" },
480        { "kind" : "IdRef",        "quantifier" : "?", "name" : "'Initializer'" }
481      ]
482    },
483    {
484      "opname" : "OpImageTexelPointer",
485      "opcode" : 60,
486      "operands" : [
487        { "kind" : "IdResultType" },
488        { "kind" : "IdResult" },
489        { "kind" : "IdRef",        "name" : "'Image'" },
490        { "kind" : "IdRef",        "name" : "'Coordinate'" },
491        { "kind" : "IdRef",        "name" : "'Sample'" }
492      ]
493    },
494    {
495      "opname" : "OpLoad",
496      "opcode" : 61,
497      "operands" : [
498        { "kind" : "IdResultType" },
499        { "kind" : "IdResult" },
500        { "kind" : "IdRef",                            "name" : "'Pointer'" },
501        { "kind" : "MemoryAccess", "quantifier" : "?" }
502      ]
503    },
504    {
505      "opname" : "OpStore",
506      "opcode" : 62,
507      "operands" : [
508        { "kind" : "IdRef",                            "name" : "'Pointer'" },
509        { "kind" : "IdRef",                            "name" : "'Object'" },
510        { "kind" : "MemoryAccess", "quantifier" : "?" }
511      ]
512    },
513    {
514      "opname" : "OpCopyMemory",
515      "opcode" : 63,
516      "operands" : [
517        { "kind" : "IdRef",                            "name" : "'Target'" },
518        { "kind" : "IdRef",                            "name" : "'Source'" },
519        { "kind" : "MemoryAccess", "quantifier" : "?" }
520      ]
521    },
522    {
523      "opname" : "OpCopyMemorySized",
524      "opcode" : 64,
525      "operands" : [
526        { "kind" : "IdRef",                            "name" : "'Target'" },
527        { "kind" : "IdRef",                            "name" : "'Source'" },
528        { "kind" : "IdRef",                            "name" : "'Size'" },
529        { "kind" : "MemoryAccess", "quantifier" : "?" }
530      ],
531      "capabilities" : [ "Addresses" ]
532    },
533    {
534      "opname" : "OpAccessChain",
535      "opcode" : 65,
536      "operands" : [
537        { "kind" : "IdResultType" },
538        { "kind" : "IdResult" },
539        { "kind" : "IdRef",                            "name" : "'Base'" },
540        { "kind" : "IdRef",        "quantifier" : "*", "name" : "'Indexes'" }
541      ]
542    },
543    {
544      "opname" : "OpInBoundsAccessChain",
545      "opcode" : 66,
546      "operands" : [
547        { "kind" : "IdResultType" },
548        { "kind" : "IdResult" },
549        { "kind" : "IdRef",                            "name" : "'Base'" },
550        { "kind" : "IdRef",        "quantifier" : "*", "name" : "'Indexes'" }
551      ]
552    },
553    {
554      "opname" : "OpPtrAccessChain",
555      "opcode" : 67,
556      "operands" : [
557        { "kind" : "IdResultType" },
558        { "kind" : "IdResult" },
559        { "kind" : "IdRef",                            "name" : "'Base'" },
560        { "kind" : "IdRef",                            "name" : "'Element'" },
561        { "kind" : "IdRef",        "quantifier" : "*", "name" : "'Indexes'" }
562      ],
563      "capabilities" : [
564        "Addresses",
565        "VariablePointers",
566        "VariablePointersStorageBuffer"
567      ]
568    },
569    {
570      "opname" : "OpArrayLength",
571      "opcode" : 68,
572      "operands" : [
573        { "kind" : "IdResultType" },
574        { "kind" : "IdResult" },
575        { "kind" : "IdRef",          "name" : "'Structure'" },
576        { "kind" : "LiteralInteger", "name" : "'Array member'" }
577      ],
578      "capabilities" : [ "Shader" ]
579    },
580    {
581      "opname" : "OpGenericPtrMemSemantics",
582      "opcode" : 69,
583      "operands" : [
584        { "kind" : "IdResultType" },
585        { "kind" : "IdResult" },
586        { "kind" : "IdRef",        "name" : "'Pointer'" }
587      ],
588      "capabilities" : [ "Kernel" ]
589    },
590    {
591      "opname" : "OpInBoundsPtrAccessChain",
592      "opcode" : 70,
593      "operands" : [
594        { "kind" : "IdResultType" },
595        { "kind" : "IdResult" },
596        { "kind" : "IdRef",                            "name" : "'Base'" },
597        { "kind" : "IdRef",                            "name" : "'Element'" },
598        { "kind" : "IdRef",        "quantifier" : "*", "name" : "'Indexes'" }
599      ],
600      "capabilities" : [ "Addresses" ]
601    },
602    {
603      "opname" : "OpDecorate",
604      "opcode" : 71,
605      "operands" : [
606        { "kind" : "IdRef",      "name" : "'Target'" },
607        { "kind" : "Decoration" }
608      ]
609    },
610    {
611      "opname" : "OpMemberDecorate",
612      "opcode" : 72,
613      "operands" : [
614        { "kind" : "IdRef",          "name" : "'Structure Type'" },
615        { "kind" : "LiteralInteger", "name" : "'Member'" },
616        { "kind" : "Decoration" }
617      ]
618    },
619    {
620      "opname" : "OpDecorationGroup",
621      "opcode" : 73,
622      "operands" : [
623        { "kind" : "IdResult" }
624      ]
625    },
626    {
627      "opname" : "OpGroupDecorate",
628      "opcode" : 74,
629      "operands" : [
630        { "kind" : "IdRef",                     "name" : "'Decoration Group'" },
631        { "kind" : "IdRef", "quantifier" : "*", "name" : "'Targets'" }
632      ]
633    },
634    {
635      "opname" : "OpGroupMemberDecorate",
636      "opcode" : 75,
637      "operands" : [
638        { "kind" : "IdRef",                                       "name" : "'Decoration Group'" },
639        { "kind" : "PairIdRefLiteralInteger", "quantifier" : "*", "name" : "'Targets'" }
640      ]
641    },
642    {
643      "opname" : "OpVectorExtractDynamic",
644      "opcode" : 77,
645      "operands" : [
646        { "kind" : "IdResultType" },
647        { "kind" : "IdResult" },
648        { "kind" : "IdRef",        "name" : "'Vector'" },
649        { "kind" : "IdRef",        "name" : "'Index'" }
650      ]
651    },
652    {
653      "opname" : "OpVectorInsertDynamic",
654      "opcode" : 78,
655      "operands" : [
656        { "kind" : "IdResultType" },
657        { "kind" : "IdResult" },
658        { "kind" : "IdRef",        "name" : "'Vector'" },
659        { "kind" : "IdRef",        "name" : "'Component'" },
660        { "kind" : "IdRef",        "name" : "'Index'" }
661      ]
662    },
663    {
664      "opname" : "OpVectorShuffle",
665      "opcode" : 79,
666      "operands" : [
667        { "kind" : "IdResultType" },
668        { "kind" : "IdResult" },
669        { "kind" : "IdRef",                              "name" : "'Vector 1'" },
670        { "kind" : "IdRef",                              "name" : "'Vector 2'" },
671        { "kind" : "LiteralInteger", "quantifier" : "*", "name" : "'Components'" }
672      ]
673    },
674    {
675      "opname" : "OpCompositeConstruct",
676      "opcode" : 80,
677      "operands" : [
678        { "kind" : "IdResultType" },
679        { "kind" : "IdResult" },
680        { "kind" : "IdRef",        "quantifier" : "*", "name" : "'Constituents'" }
681      ]
682    },
683    {
684      "opname" : "OpCompositeExtract",
685      "opcode" : 81,
686      "operands" : [
687        { "kind" : "IdResultType" },
688        { "kind" : "IdResult" },
689        { "kind" : "IdRef",                              "name" : "'Composite'" },
690        { "kind" : "LiteralInteger", "quantifier" : "*", "name" : "'Indexes'" }
691      ]
692    },
693    {
694      "opname" : "OpCompositeInsert",
695      "opcode" : 82,
696      "operands" : [
697        { "kind" : "IdResultType" },
698        { "kind" : "IdResult" },
699        { "kind" : "IdRef",                              "name" : "'Object'" },
700        { "kind" : "IdRef",                              "name" : "'Composite'" },
701        { "kind" : "LiteralInteger", "quantifier" : "*", "name" : "'Indexes'" }
702      ]
703    },
704    {
705      "opname" : "OpCopyObject",
706      "opcode" : 83,
707      "operands" : [
708        { "kind" : "IdResultType" },
709        { "kind" : "IdResult" },
710        { "kind" : "IdRef",        "name" : "'Operand'" }
711      ]
712    },
713    {
714      "opname" : "OpTranspose",
715      "opcode" : 84,
716      "operands" : [
717        { "kind" : "IdResultType" },
718        { "kind" : "IdResult" },
719        { "kind" : "IdRef",        "name" : "'Matrix'" }
720      ],
721      "capabilities" : [ "Matrix" ]
722    },
723    {
724      "opname" : "OpSampledImage",
725      "opcode" : 86,
726      "operands" : [
727        { "kind" : "IdResultType" },
728        { "kind" : "IdResult" },
729        { "kind" : "IdRef",        "name" : "'Image'" },
730        { "kind" : "IdRef",        "name" : "'Sampler'" }
731      ]
732    },
733    {
734      "opname" : "OpImageSampleImplicitLod",
735      "opcode" : 87,
736      "operands" : [
737        { "kind" : "IdResultType" },
738        { "kind" : "IdResult" },
739        { "kind" : "IdRef",                             "name" : "'Sampled Image'" },
740        { "kind" : "IdRef",                             "name" : "'Coordinate'" },
741        { "kind" : "ImageOperands", "quantifier" : "?" }
742      ],
743      "capabilities" : [ "Shader" ]
744    },
745    {
746      "opname" : "OpImageSampleExplicitLod",
747      "opcode" : 88,
748      "operands" : [
749        { "kind" : "IdResultType" },
750        { "kind" : "IdResult" },
751        { "kind" : "IdRef",         "name" : "'Sampled Image'" },
752        { "kind" : "IdRef",         "name" : "'Coordinate'" },
753        { "kind" : "ImageOperands" }
754      ]
755    },
756    {
757      "opname" : "OpImageSampleDrefImplicitLod",
758      "opcode" : 89,
759      "operands" : [
760        { "kind" : "IdResultType" },
761        { "kind" : "IdResult" },
762        { "kind" : "IdRef",                             "name" : "'Sampled Image'" },
763        { "kind" : "IdRef",                             "name" : "'Coordinate'" },
764        { "kind" : "IdRef",                             "name" : "'D~ref~'" },
765        { "kind" : "ImageOperands", "quantifier" : "?" }
766      ],
767      "capabilities" : [ "Shader" ]
768    },
769    {
770      "opname" : "OpImageSampleDrefExplicitLod",
771      "opcode" : 90,
772      "operands" : [
773        { "kind" : "IdResultType" },
774        { "kind" : "IdResult" },
775        { "kind" : "IdRef",         "name" : "'Sampled Image'" },
776        { "kind" : "IdRef",         "name" : "'Coordinate'" },
777        { "kind" : "IdRef",         "name" : "'D~ref~'" },
778        { "kind" : "ImageOperands" }
779      ],
780      "capabilities" : [ "Shader" ]
781    },
782    {
783      "opname" : "OpImageSampleProjImplicitLod",
784      "opcode" : 91,
785      "operands" : [
786        { "kind" : "IdResultType" },
787        { "kind" : "IdResult" },
788        { "kind" : "IdRef",                             "name" : "'Sampled Image'" },
789        { "kind" : "IdRef",                             "name" : "'Coordinate'" },
790        { "kind" : "ImageOperands", "quantifier" : "?" }
791      ],
792      "capabilities" : [ "Shader" ]
793    },
794    {
795      "opname" : "OpImageSampleProjExplicitLod",
796      "opcode" : 92,
797      "operands" : [
798        { "kind" : "IdResultType" },
799        { "kind" : "IdResult" },
800        { "kind" : "IdRef",         "name" : "'Sampled Image'" },
801        { "kind" : "IdRef",         "name" : "'Coordinate'" },
802        { "kind" : "ImageOperands" }
803      ],
804      "capabilities" : [ "Shader" ]
805    },
806    {
807      "opname" : "OpImageSampleProjDrefImplicitLod",
808      "opcode" : 93,
809      "operands" : [
810        { "kind" : "IdResultType" },
811        { "kind" : "IdResult" },
812        { "kind" : "IdRef",                             "name" : "'Sampled Image'" },
813        { "kind" : "IdRef",                             "name" : "'Coordinate'" },
814        { "kind" : "IdRef",                             "name" : "'D~ref~'" },
815        { "kind" : "ImageOperands", "quantifier" : "?" }
816      ],
817      "capabilities" : [ "Shader" ]
818    },
819    {
820      "opname" : "OpImageSampleProjDrefExplicitLod",
821      "opcode" : 94,
822      "operands" : [
823        { "kind" : "IdResultType" },
824        { "kind" : "IdResult" },
825        { "kind" : "IdRef",         "name" : "'Sampled Image'" },
826        { "kind" : "IdRef",         "name" : "'Coordinate'" },
827        { "kind" : "IdRef",         "name" : "'D~ref~'" },
828        { "kind" : "ImageOperands" }
829      ],
830      "capabilities" : [ "Shader" ]
831    },
832    {
833      "opname" : "OpImageFetch",
834      "opcode" : 95,
835      "operands" : [
836        { "kind" : "IdResultType" },
837        { "kind" : "IdResult" },
838        { "kind" : "IdRef",                             "name" : "'Image'" },
839        { "kind" : "IdRef",                             "name" : "'Coordinate'" },
840        { "kind" : "ImageOperands", "quantifier" : "?" }
841      ]
842    },
843    {
844      "opname" : "OpImageGather",
845      "opcode" : 96,
846      "operands" : [
847        { "kind" : "IdResultType" },
848        { "kind" : "IdResult" },
849        { "kind" : "IdRef",                             "name" : "'Sampled Image'" },
850        { "kind" : "IdRef",                             "name" : "'Coordinate'" },
851        { "kind" : "IdRef",                             "name" : "'Component'" },
852        { "kind" : "ImageOperands", "quantifier" : "?" }
853      ],
854      "capabilities" : [ "Shader" ]
855    },
856    {
857      "opname" : "OpImageDrefGather",
858      "opcode" : 97,
859      "operands" : [
860        { "kind" : "IdResultType" },
861        { "kind" : "IdResult" },
862        { "kind" : "IdRef",                             "name" : "'Sampled Image'" },
863        { "kind" : "IdRef",                             "name" : "'Coordinate'" },
864        { "kind" : "IdRef",                             "name" : "'D~ref~'" },
865        { "kind" : "ImageOperands", "quantifier" : "?" }
866      ],
867      "capabilities" : [ "Shader" ]
868    },
869    {
870      "opname" : "OpImageRead",
871      "opcode" : 98,
872      "operands" : [
873        { "kind" : "IdResultType" },
874        { "kind" : "IdResult" },
875        { "kind" : "IdRef",                             "name" : "'Image'" },
876        { "kind" : "IdRef",                             "name" : "'Coordinate'" },
877        { "kind" : "ImageOperands", "quantifier" : "?" }
878      ]
879    },
880    {
881      "opname" : "OpImageWrite",
882      "opcode" : 99,
883      "operands" : [
884        { "kind" : "IdRef",                             "name" : "'Image'" },
885        { "kind" : "IdRef",                             "name" : "'Coordinate'" },
886        { "kind" : "IdRef",                             "name" : "'Texel'" },
887        { "kind" : "ImageOperands", "quantifier" : "?" }
888      ]
889    },
890    {
891      "opname" : "OpImage",
892      "opcode" : 100,
893      "operands" : [
894        { "kind" : "IdResultType" },
895        { "kind" : "IdResult" },
896        { "kind" : "IdRef",        "name" : "'Sampled Image'" }
897      ]
898    },
899    {
900      "opname" : "OpImageQueryFormat",
901      "opcode" : 101,
902      "operands" : [
903        { "kind" : "IdResultType" },
904        { "kind" : "IdResult" },
905        { "kind" : "IdRef",        "name" : "'Image'" }
906      ],
907      "capabilities" : [ "Kernel" ]
908    },
909    {
910      "opname" : "OpImageQueryOrder",
911      "opcode" : 102,
912      "operands" : [
913        { "kind" : "IdResultType" },
914        { "kind" : "IdResult" },
915        { "kind" : "IdRef",        "name" : "'Image'" }
916      ],
917      "capabilities" : [ "Kernel" ]
918    },
919    {
920      "opname" : "OpImageQuerySizeLod",
921      "opcode" : 103,
922      "operands" : [
923        { "kind" : "IdResultType" },
924        { "kind" : "IdResult" },
925        { "kind" : "IdRef",        "name" : "'Image'" },
926        { "kind" : "IdRef",        "name" : "'Level of Detail'" }
927      ],
928      "capabilities" : [ "Kernel", "ImageQuery" ]
929    },
930    {
931      "opname" : "OpImageQuerySize",
932      "opcode" : 104,
933      "operands" : [
934        { "kind" : "IdResultType" },
935        { "kind" : "IdResult" },
936        { "kind" : "IdRef",        "name" : "'Image'" }
937      ],
938      "capabilities" : [ "Kernel", "ImageQuery" ]
939    },
940    {
941      "opname" : "OpImageQueryLod",
942      "opcode" : 105,
943      "operands" : [
944        { "kind" : "IdResultType" },
945        { "kind" : "IdResult" },
946        { "kind" : "IdRef",        "name" : "'Sampled Image'" },
947        { "kind" : "IdRef",        "name" : "'Coordinate'" }
948      ],
949      "capabilities" : [ "ImageQuery" ]
950    },
951    {
952      "opname" : "OpImageQueryLevels",
953      "opcode" : 106,
954      "operands" : [
955        { "kind" : "IdResultType" },
956        { "kind" : "IdResult" },
957        { "kind" : "IdRef",        "name" : "'Image'" }
958      ],
959      "capabilities" : [ "Kernel", "ImageQuery" ]
960    },
961    {
962      "opname" : "OpImageQuerySamples",
963      "opcode" : 107,
964      "operands" : [
965        { "kind" : "IdResultType" },
966        { "kind" : "IdResult" },
967        { "kind" : "IdRef",        "name" : "'Image'" }
968      ],
969      "capabilities" : [ "Kernel", "ImageQuery" ]
970    },
971    {
972      "opname" : "OpConvertFToU",
973      "opcode" : 109,
974      "operands" : [
975        { "kind" : "IdResultType" },
976        { "kind" : "IdResult" },
977        { "kind" : "IdRef",        "name" : "'Float Value'" }
978      ]
979    },
980    {
981      "opname" : "OpConvertFToS",
982      "opcode" : 110,
983      "operands" : [
984        { "kind" : "IdResultType" },
985        { "kind" : "IdResult" },
986        { "kind" : "IdRef",        "name" : "'Float Value'" }
987      ]
988    },
989    {
990      "opname" : "OpConvertSToF",
991      "opcode" : 111,
992      "operands" : [
993        { "kind" : "IdResultType" },
994        { "kind" : "IdResult" },
995        { "kind" : "IdRef",        "name" : "'Signed Value'" }
996      ]
997    },
998    {
999      "opname" : "OpConvertUToF",
1000      "opcode" : 112,
1001      "operands" : [
1002        { "kind" : "IdResultType" },
1003        { "kind" : "IdResult" },
1004        { "kind" : "IdRef",        "name" : "'Unsigned Value'" }
1005      ]
1006    },
1007    {
1008      "opname" : "OpUConvert",
1009      "opcode" : 113,
1010      "operands" : [
1011        { "kind" : "IdResultType" },
1012        { "kind" : "IdResult" },
1013        { "kind" : "IdRef",        "name" : "'Unsigned Value'" }
1014      ]
1015    },
1016    {
1017      "opname" : "OpSConvert",
1018      "opcode" : 114,
1019      "operands" : [
1020        { "kind" : "IdResultType" },
1021        { "kind" : "IdResult" },
1022        { "kind" : "IdRef",        "name" : "'Signed Value'" }
1023      ]
1024    },
1025    {
1026      "opname" : "OpFConvert",
1027      "opcode" : 115,
1028      "operands" : [
1029        { "kind" : "IdResultType" },
1030        { "kind" : "IdResult" },
1031        { "kind" : "IdRef",        "name" : "'Float Value'" }
1032      ]
1033    },
1034    {
1035      "opname" : "OpQuantizeToF16",
1036      "opcode" : 116,
1037      "operands" : [
1038        { "kind" : "IdResultType" },
1039        { "kind" : "IdResult" },
1040        { "kind" : "IdRef",        "name" : "'Value'" }
1041      ]
1042    },
1043    {
1044      "opname" : "OpConvertPtrToU",
1045      "opcode" : 117,
1046      "operands" : [
1047        { "kind" : "IdResultType" },
1048        { "kind" : "IdResult" },
1049        { "kind" : "IdRef",        "name" : "'Pointer'" }
1050      ],
1051      "capabilities" : [ "Addresses" ]
1052    },
1053    {
1054      "opname" : "OpSatConvertSToU",
1055      "opcode" : 118,
1056      "operands" : [
1057        { "kind" : "IdResultType" },
1058        { "kind" : "IdResult" },
1059        { "kind" : "IdRef",        "name" : "'Signed Value'" }
1060      ],
1061      "capabilities" : [ "Kernel" ]
1062    },
1063    {
1064      "opname" : "OpSatConvertUToS",
1065      "opcode" : 119,
1066      "operands" : [
1067        { "kind" : "IdResultType" },
1068        { "kind" : "IdResult" },
1069        { "kind" : "IdRef",        "name" : "'Unsigned Value'" }
1070      ],
1071      "capabilities" : [ "Kernel" ]
1072    },
1073    {
1074      "opname" : "OpConvertUToPtr",
1075      "opcode" : 120,
1076      "operands" : [
1077        { "kind" : "IdResultType" },
1078        { "kind" : "IdResult" },
1079        { "kind" : "IdRef",        "name" : "'Integer Value'" }
1080      ],
1081      "capabilities" : [ "Addresses" ]
1082    },
1083    {
1084      "opname" : "OpPtrCastToGeneric",
1085      "opcode" : 121,
1086      "operands" : [
1087        { "kind" : "IdResultType" },
1088        { "kind" : "IdResult" },
1089        { "kind" : "IdRef",        "name" : "'Pointer'" }
1090      ],
1091      "capabilities" : [ "Kernel" ]
1092    },
1093    {
1094      "opname" : "OpGenericCastToPtr",
1095      "opcode" : 122,
1096      "operands" : [
1097        { "kind" : "IdResultType" },
1098        { "kind" : "IdResult" },
1099        { "kind" : "IdRef",        "name" : "'Pointer'" }
1100      ],
1101      "capabilities" : [ "Kernel" ]
1102    },
1103    {
1104      "opname" : "OpGenericCastToPtrExplicit",
1105      "opcode" : 123,
1106      "operands" : [
1107        { "kind" : "IdResultType" },
1108        { "kind" : "IdResult" },
1109        { "kind" : "IdRef",        "name" : "'Pointer'" },
1110        { "kind" : "StorageClass", "name" : "'Storage'" }
1111      ],
1112      "capabilities" : [ "Kernel" ]
1113    },
1114    {
1115      "opname" : "OpBitcast",
1116      "opcode" : 124,
1117      "operands" : [
1118        { "kind" : "IdResultType" },
1119        { "kind" : "IdResult" },
1120        { "kind" : "IdRef",        "name" : "'Operand'" }
1121      ]
1122    },
1123    {
1124      "opname" : "OpSNegate",
1125      "opcode" : 126,
1126      "operands" : [
1127        { "kind" : "IdResultType" },
1128        { "kind" : "IdResult" },
1129        { "kind" : "IdRef",        "name" : "'Operand'" }
1130      ]
1131    },
1132    {
1133      "opname" : "OpFNegate",
1134      "opcode" : 127,
1135      "operands" : [
1136        { "kind" : "IdResultType" },
1137        { "kind" : "IdResult" },
1138        { "kind" : "IdRef",        "name" : "'Operand'" }
1139      ]
1140    },
1141    {
1142      "opname" : "OpIAdd",
1143      "opcode" : 128,
1144      "operands" : [
1145        { "kind" : "IdResultType" },
1146        { "kind" : "IdResult" },
1147        { "kind" : "IdRef",        "name" : "'Operand 1'" },
1148        { "kind" : "IdRef",        "name" : "'Operand 2'" }
1149      ]
1150    },
1151    {
1152      "opname" : "OpFAdd",
1153      "opcode" : 129,
1154      "operands" : [
1155        { "kind" : "IdResultType" },
1156        { "kind" : "IdResult" },
1157        { "kind" : "IdRef",        "name" : "'Operand 1'" },
1158        { "kind" : "IdRef",        "name" : "'Operand 2'" }
1159      ]
1160    },
1161    {
1162      "opname" : "OpISub",
1163      "opcode" : 130,
1164      "operands" : [
1165        { "kind" : "IdResultType" },
1166        { "kind" : "IdResult" },
1167        { "kind" : "IdRef",        "name" : "'Operand 1'" },
1168        { "kind" : "IdRef",        "name" : "'Operand 2'" }
1169      ]
1170    },
1171    {
1172      "opname" : "OpFSub",
1173      "opcode" : 131,
1174      "operands" : [
1175        { "kind" : "IdResultType" },
1176        { "kind" : "IdResult" },
1177        { "kind" : "IdRef",        "name" : "'Operand 1'" },
1178        { "kind" : "IdRef",        "name" : "'Operand 2'" }
1179      ]
1180    },
1181    {
1182      "opname" : "OpIMul",
1183      "opcode" : 132,
1184      "operands" : [
1185        { "kind" : "IdResultType" },
1186        { "kind" : "IdResult" },
1187        { "kind" : "IdRef",        "name" : "'Operand 1'" },
1188        { "kind" : "IdRef",        "name" : "'Operand 2'" }
1189      ]
1190    },
1191    {
1192      "opname" : "OpFMul",
1193      "opcode" : 133,
1194      "operands" : [
1195        { "kind" : "IdResultType" },
1196        { "kind" : "IdResult" },
1197        { "kind" : "IdRef",        "name" : "'Operand 1'" },
1198        { "kind" : "IdRef",        "name" : "'Operand 2'" }
1199      ]
1200    },
1201    {
1202      "opname" : "OpUDiv",
1203      "opcode" : 134,
1204      "operands" : [
1205        { "kind" : "IdResultType" },
1206        { "kind" : "IdResult" },
1207        { "kind" : "IdRef",        "name" : "'Operand 1'" },
1208        { "kind" : "IdRef",        "name" : "'Operand 2'" }
1209      ]
1210    },
1211    {
1212      "opname" : "OpSDiv",
1213      "opcode" : 135,
1214      "operands" : [
1215        { "kind" : "IdResultType" },
1216        { "kind" : "IdResult" },
1217        { "kind" : "IdRef",        "name" : "'Operand 1'" },
1218        { "kind" : "IdRef",        "name" : "'Operand 2'" }
1219      ]
1220    },
1221    {
1222      "opname" : "OpFDiv",
1223      "opcode" : 136,
1224      "operands" : [
1225        { "kind" : "IdResultType" },
1226        { "kind" : "IdResult" },
1227        { "kind" : "IdRef",        "name" : "'Operand 1'" },
1228        { "kind" : "IdRef",        "name" : "'Operand 2'" }
1229      ]
1230    },
1231    {
1232      "opname" : "OpUMod",
1233      "opcode" : 137,
1234      "operands" : [
1235        { "kind" : "IdResultType" },
1236        { "kind" : "IdResult" },
1237        { "kind" : "IdRef",        "name" : "'Operand 1'" },
1238        { "kind" : "IdRef",        "name" : "'Operand 2'" }
1239      ]
1240    },
1241    {
1242      "opname" : "OpSRem",
1243      "opcode" : 138,
1244      "operands" : [
1245        { "kind" : "IdResultType" },
1246        { "kind" : "IdResult" },
1247        { "kind" : "IdRef",        "name" : "'Operand 1'" },
1248        { "kind" : "IdRef",        "name" : "'Operand 2'" }
1249      ]
1250    },
1251    {
1252      "opname" : "OpSMod",
1253      "opcode" : 139,
1254      "operands" : [
1255        { "kind" : "IdResultType" },
1256        { "kind" : "IdResult" },
1257        { "kind" : "IdRef",        "name" : "'Operand 1'" },
1258        { "kind" : "IdRef",        "name" : "'Operand 2'" }
1259      ]
1260    },
1261    {
1262      "opname" : "OpFRem",
1263      "opcode" : 140,
1264      "operands" : [
1265        { "kind" : "IdResultType" },
1266        { "kind" : "IdResult" },
1267        { "kind" : "IdRef",        "name" : "'Operand 1'" },
1268        { "kind" : "IdRef",        "name" : "'Operand 2'" }
1269      ]
1270    },
1271    {
1272      "opname" : "OpFMod",
1273      "opcode" : 141,
1274      "operands" : [
1275        { "kind" : "IdResultType" },
1276        { "kind" : "IdResult" },
1277        { "kind" : "IdRef",        "name" : "'Operand 1'" },
1278        { "kind" : "IdRef",        "name" : "'Operand 2'" }
1279      ]
1280    },
1281    {
1282      "opname" : "OpVectorTimesScalar",
1283      "opcode" : 142,
1284      "operands" : [
1285        { "kind" : "IdResultType" },
1286        { "kind" : "IdResult" },
1287        { "kind" : "IdRef",        "name" : "'Vector'" },
1288        { "kind" : "IdRef",        "name" : "'Scalar'" }
1289      ]
1290    },
1291    {
1292      "opname" : "OpMatrixTimesScalar",
1293      "opcode" : 143,
1294      "operands" : [
1295        { "kind" : "IdResultType" },
1296        { "kind" : "IdResult" },
1297        { "kind" : "IdRef",        "name" : "'Matrix'" },
1298        { "kind" : "IdRef",        "name" : "'Scalar'" }
1299      ],
1300      "capabilities" : [ "Matrix" ]
1301    },
1302    {
1303      "opname" : "OpVectorTimesMatrix",
1304      "opcode" : 144,
1305      "operands" : [
1306        { "kind" : "IdResultType" },
1307        { "kind" : "IdResult" },
1308        { "kind" : "IdRef",        "name" : "'Vector'" },
1309        { "kind" : "IdRef",        "name" : "'Matrix'" }
1310      ],
1311      "capabilities" : [ "Matrix" ]
1312    },
1313    {
1314      "opname" : "OpMatrixTimesVector",
1315      "opcode" : 145,
1316      "operands" : [
1317        { "kind" : "IdResultType" },
1318        { "kind" : "IdResult" },
1319        { "kind" : "IdRef",        "name" : "'Matrix'" },
1320        { "kind" : "IdRef",        "name" : "'Vector'" }
1321      ],
1322      "capabilities" : [ "Matrix" ]
1323    },
1324    {
1325      "opname" : "OpMatrixTimesMatrix",
1326      "opcode" : 146,
1327      "operands" : [
1328        { "kind" : "IdResultType" },
1329        { "kind" : "IdResult" },
1330        { "kind" : "IdRef",        "name" : "'LeftMatrix'" },
1331        { "kind" : "IdRef",        "name" : "'RightMatrix'" }
1332      ],
1333      "capabilities" : [ "Matrix" ]
1334    },
1335    {
1336      "opname" : "OpOuterProduct",
1337      "opcode" : 147,
1338      "operands" : [
1339        { "kind" : "IdResultType" },
1340        { "kind" : "IdResult" },
1341        { "kind" : "IdRef",        "name" : "'Vector 1'" },
1342        { "kind" : "IdRef",        "name" : "'Vector 2'" }
1343      ],
1344      "capabilities" : [ "Matrix" ]
1345    },
1346    {
1347      "opname" : "OpDot",
1348      "opcode" : 148,
1349      "operands" : [
1350        { "kind" : "IdResultType" },
1351        { "kind" : "IdResult" },
1352        { "kind" : "IdRef",        "name" : "'Vector 1'" },
1353        { "kind" : "IdRef",        "name" : "'Vector 2'" }
1354      ]
1355    },
1356    {
1357      "opname" : "OpIAddCarry",
1358      "opcode" : 149,
1359      "operands" : [
1360        { "kind" : "IdResultType" },
1361        { "kind" : "IdResult" },
1362        { "kind" : "IdRef",        "name" : "'Operand 1'" },
1363        { "kind" : "IdRef",        "name" : "'Operand 2'" }
1364      ]
1365    },
1366    {
1367      "opname" : "OpISubBorrow",
1368      "opcode" : 150,
1369      "operands" : [
1370        { "kind" : "IdResultType" },
1371        { "kind" : "IdResult" },
1372        { "kind" : "IdRef",        "name" : "'Operand 1'" },
1373        { "kind" : "IdRef",        "name" : "'Operand 2'" }
1374      ]
1375    },
1376    {
1377      "opname" : "OpUMulExtended",
1378      "opcode" : 151,
1379      "operands" : [
1380        { "kind" : "IdResultType" },
1381        { "kind" : "IdResult" },
1382        { "kind" : "IdRef",        "name" : "'Operand 1'" },
1383        { "kind" : "IdRef",        "name" : "'Operand 2'" }
1384      ]
1385    },
1386    {
1387      "opname" : "OpSMulExtended",
1388      "opcode" : 152,
1389      "operands" : [
1390        { "kind" : "IdResultType" },
1391        { "kind" : "IdResult" },
1392        { "kind" : "IdRef",        "name" : "'Operand 1'" },
1393        { "kind" : "IdRef",        "name" : "'Operand 2'" }
1394      ]
1395    },
1396    {
1397      "opname" : "OpAny",
1398      "opcode" : 154,
1399      "operands" : [
1400        { "kind" : "IdResultType" },
1401        { "kind" : "IdResult" },
1402        { "kind" : "IdRef",        "name" : "'Vector'" }
1403      ]
1404    },
1405    {
1406      "opname" : "OpAll",
1407      "opcode" : 155,
1408      "operands" : [
1409        { "kind" : "IdResultType" },
1410        { "kind" : "IdResult" },
1411        { "kind" : "IdRef",        "name" : "'Vector'" }
1412      ]
1413    },
1414    {
1415      "opname" : "OpIsNan",
1416      "opcode" : 156,
1417      "operands" : [
1418        { "kind" : "IdResultType" },
1419        { "kind" : "IdResult" },
1420        { "kind" : "IdRef",        "name" : "'x'" }
1421      ]
1422    },
1423    {
1424      "opname" : "OpIsInf",
1425      "opcode" : 157,
1426      "operands" : [
1427        { "kind" : "IdResultType" },
1428        { "kind" : "IdResult" },
1429        { "kind" : "IdRef",        "name" : "'x'" }
1430      ]
1431    },
1432    {
1433      "opname" : "OpIsFinite",
1434      "opcode" : 158,
1435      "operands" : [
1436        { "kind" : "IdResultType" },
1437        { "kind" : "IdResult" },
1438        { "kind" : "IdRef",        "name" : "'x'" }
1439      ],
1440      "capabilities" : [ "Kernel" ]
1441    },
1442    {
1443      "opname" : "OpIsNormal",
1444      "opcode" : 159,
1445      "operands" : [
1446        { "kind" : "IdResultType" },
1447        { "kind" : "IdResult" },
1448        { "kind" : "IdRef",        "name" : "'x'" }
1449      ],
1450      "capabilities" : [ "Kernel" ]
1451    },
1452    {
1453      "opname" : "OpSignBitSet",
1454      "opcode" : 160,
1455      "operands" : [
1456        { "kind" : "IdResultType" },
1457        { "kind" : "IdResult" },
1458        { "kind" : "IdRef",        "name" : "'x'" }
1459      ],
1460      "capabilities" : [ "Kernel" ]
1461    },
1462    {
1463      "opname" : "OpLessOrGreater",
1464      "opcode" : 161,
1465      "operands" : [
1466        { "kind" : "IdResultType" },
1467        { "kind" : "IdResult" },
1468        { "kind" : "IdRef",        "name" : "'x'" },
1469        { "kind" : "IdRef",        "name" : "'y'" }
1470      ],
1471      "capabilities" : [ "Kernel" ]
1472    },
1473    {
1474      "opname" : "OpOrdered",
1475      "opcode" : 162,
1476      "operands" : [
1477        { "kind" : "IdResultType" },
1478        { "kind" : "IdResult" },
1479        { "kind" : "IdRef",        "name" : "'x'" },
1480        { "kind" : "IdRef",        "name" : "'y'" }
1481      ],
1482      "capabilities" : [ "Kernel" ]
1483    },
1484    {
1485      "opname" : "OpUnordered",
1486      "opcode" : 163,
1487      "operands" : [
1488        { "kind" : "IdResultType" },
1489        { "kind" : "IdResult" },
1490        { "kind" : "IdRef",        "name" : "'x'" },
1491        { "kind" : "IdRef",        "name" : "'y'" }
1492      ],
1493      "capabilities" : [ "Kernel" ]
1494    },
1495    {
1496      "opname" : "OpLogicalEqual",
1497      "opcode" : 164,
1498      "operands" : [
1499        { "kind" : "IdResultType" },
1500        { "kind" : "IdResult" },
1501        { "kind" : "IdRef",        "name" : "'Operand 1'" },
1502        { "kind" : "IdRef",        "name" : "'Operand 2'" }
1503      ]
1504    },
1505    {
1506      "opname" : "OpLogicalNotEqual",
1507      "opcode" : 165,
1508      "operands" : [
1509        { "kind" : "IdResultType" },
1510        { "kind" : "IdResult" },
1511        { "kind" : "IdRef",        "name" : "'Operand 1'" },
1512        { "kind" : "IdRef",        "name" : "'Operand 2'" }
1513      ]
1514    },
1515    {
1516      "opname" : "OpLogicalOr",
1517      "opcode" : 166,
1518      "operands" : [
1519        { "kind" : "IdResultType" },
1520        { "kind" : "IdResult" },
1521        { "kind" : "IdRef",        "name" : "'Operand 1'" },
1522        { "kind" : "IdRef",        "name" : "'Operand 2'" }
1523      ]
1524    },
1525    {
1526      "opname" : "OpLogicalAnd",
1527      "opcode" : 167,
1528      "operands" : [
1529        { "kind" : "IdResultType" },
1530        { "kind" : "IdResult" },
1531        { "kind" : "IdRef",        "name" : "'Operand 1'" },
1532        { "kind" : "IdRef",        "name" : "'Operand 2'" }
1533      ]
1534    },
1535    {
1536      "opname" : "OpLogicalNot",
1537      "opcode" : 168,
1538      "operands" : [
1539        { "kind" : "IdResultType" },
1540        { "kind" : "IdResult" },
1541        { "kind" : "IdRef",        "name" : "'Operand'" }
1542      ]
1543    },
1544    {
1545      "opname" : "OpSelect",
1546      "opcode" : 169,
1547      "operands" : [
1548        { "kind" : "IdResultType" },
1549        { "kind" : "IdResult" },
1550        { "kind" : "IdRef",        "name" : "'Condition'" },
1551        { "kind" : "IdRef",        "name" : "'Object 1'" },
1552        { "kind" : "IdRef",        "name" : "'Object 2'" }
1553      ]
1554    },
1555    {
1556      "opname" : "OpIEqual",
1557      "opcode" : 170,
1558      "operands" : [
1559        { "kind" : "IdResultType" },
1560        { "kind" : "IdResult" },
1561        { "kind" : "IdRef",        "name" : "'Operand 1'" },
1562        { "kind" : "IdRef",        "name" : "'Operand 2'" }
1563      ]
1564    },
1565    {
1566      "opname" : "OpINotEqual",
1567      "opcode" : 171,
1568      "operands" : [
1569        { "kind" : "IdResultType" },
1570        { "kind" : "IdResult" },
1571        { "kind" : "IdRef",        "name" : "'Operand 1'" },
1572        { "kind" : "IdRef",        "name" : "'Operand 2'" }
1573      ]
1574    },
1575    {
1576      "opname" : "OpUGreaterThan",
1577      "opcode" : 172,
1578      "operands" : [
1579        { "kind" : "IdResultType" },
1580        { "kind" : "IdResult" },
1581        { "kind" : "IdRef",        "name" : "'Operand 1'" },
1582        { "kind" : "IdRef",        "name" : "'Operand 2'" }
1583      ]
1584    },
1585    {
1586      "opname" : "OpSGreaterThan",
1587      "opcode" : 173,
1588      "operands" : [
1589        { "kind" : "IdResultType" },
1590        { "kind" : "IdResult" },
1591        { "kind" : "IdRef",        "name" : "'Operand 1'" },
1592        { "kind" : "IdRef",        "name" : "'Operand 2'" }
1593      ]
1594    },
1595    {
1596      "opname" : "OpUGreaterThanEqual",
1597      "opcode" : 174,
1598      "operands" : [
1599        { "kind" : "IdResultType" },
1600        { "kind" : "IdResult" },
1601        { "kind" : "IdRef",        "name" : "'Operand 1'" },
1602        { "kind" : "IdRef",        "name" : "'Operand 2'" }
1603      ]
1604    },
1605    {
1606      "opname" : "OpSGreaterThanEqual",
1607      "opcode" : 175,
1608      "operands" : [
1609        { "kind" : "IdResultType" },
1610        { "kind" : "IdResult" },
1611        { "kind" : "IdRef",        "name" : "'Operand 1'" },
1612        { "kind" : "IdRef",        "name" : "'Operand 2'" }
1613      ]
1614    },
1615    {
1616      "opname" : "OpULessThan",
1617      "opcode" : 176,
1618      "operands" : [
1619        { "kind" : "IdResultType" },
1620        { "kind" : "IdResult" },
1621        { "kind" : "IdRef",        "name" : "'Operand 1'" },
1622        { "kind" : "IdRef",        "name" : "'Operand 2'" }
1623      ]
1624    },
1625    {
1626      "opname" : "OpSLessThan",
1627      "opcode" : 177,
1628      "operands" : [
1629        { "kind" : "IdResultType" },
1630        { "kind" : "IdResult" },
1631        { "kind" : "IdRef",        "name" : "'Operand 1'" },
1632        { "kind" : "IdRef",        "name" : "'Operand 2'" }
1633      ]
1634    },
1635    {
1636      "opname" : "OpULessThanEqual",
1637      "opcode" : 178,
1638      "operands" : [
1639        { "kind" : "IdResultType" },
1640        { "kind" : "IdResult" },
1641        { "kind" : "IdRef",        "name" : "'Operand 1'" },
1642        { "kind" : "IdRef",        "name" : "'Operand 2'" }
1643      ]
1644    },
1645    {
1646      "opname" : "OpSLessThanEqual",
1647      "opcode" : 179,
1648      "operands" : [
1649        { "kind" : "IdResultType" },
1650        { "kind" : "IdResult" },
1651        { "kind" : "IdRef",        "name" : "'Operand 1'" },
1652        { "kind" : "IdRef",        "name" : "'Operand 2'" }
1653      ]
1654    },
1655    {
1656      "opname" : "OpFOrdEqual",
1657      "opcode" : 180,
1658      "operands" : [
1659        { "kind" : "IdResultType" },
1660        { "kind" : "IdResult" },
1661        { "kind" : "IdRef",        "name" : "'Operand 1'" },
1662        { "kind" : "IdRef",        "name" : "'Operand 2'" }
1663      ]
1664    },
1665    {
1666      "opname" : "OpFUnordEqual",
1667      "opcode" : 181,
1668      "operands" : [
1669        { "kind" : "IdResultType" },
1670        { "kind" : "IdResult" },
1671        { "kind" : "IdRef",        "name" : "'Operand 1'" },
1672        { "kind" : "IdRef",        "name" : "'Operand 2'" }
1673      ]
1674    },
1675    {
1676      "opname" : "OpFOrdNotEqual",
1677      "opcode" : 182,
1678      "operands" : [
1679        { "kind" : "IdResultType" },
1680        { "kind" : "IdResult" },
1681        { "kind" : "IdRef",        "name" : "'Operand 1'" },
1682        { "kind" : "IdRef",        "name" : "'Operand 2'" }
1683      ]
1684    },
1685    {
1686      "opname" : "OpFUnordNotEqual",
1687      "opcode" : 183,
1688      "operands" : [
1689        { "kind" : "IdResultType" },
1690        { "kind" : "IdResult" },
1691        { "kind" : "IdRef",        "name" : "'Operand 1'" },
1692        { "kind" : "IdRef",        "name" : "'Operand 2'" }
1693      ]
1694    },
1695    {
1696      "opname" : "OpFOrdLessThan",
1697      "opcode" : 184,
1698      "operands" : [
1699        { "kind" : "IdResultType" },
1700        { "kind" : "IdResult" },
1701        { "kind" : "IdRef",        "name" : "'Operand 1'" },
1702        { "kind" : "IdRef",        "name" : "'Operand 2'" }
1703      ]
1704    },
1705    {
1706      "opname" : "OpFUnordLessThan",
1707      "opcode" : 185,
1708      "operands" : [
1709        { "kind" : "IdResultType" },
1710        { "kind" : "IdResult" },
1711        { "kind" : "IdRef",        "name" : "'Operand 1'" },
1712        { "kind" : "IdRef",        "name" : "'Operand 2'" }
1713      ]
1714    },
1715    {
1716      "opname" : "OpFOrdGreaterThan",
1717      "opcode" : 186,
1718      "operands" : [
1719        { "kind" : "IdResultType" },
1720        { "kind" : "IdResult" },
1721        { "kind" : "IdRef",        "name" : "'Operand 1'" },
1722        { "kind" : "IdRef",        "name" : "'Operand 2'" }
1723      ]
1724    },
1725    {
1726      "opname" : "OpFUnordGreaterThan",
1727      "opcode" : 187,
1728      "operands" : [
1729        { "kind" : "IdResultType" },
1730        { "kind" : "IdResult" },
1731        { "kind" : "IdRef",        "name" : "'Operand 1'" },
1732        { "kind" : "IdRef",        "name" : "'Operand 2'" }
1733      ]
1734    },
1735    {
1736      "opname" : "OpFOrdLessThanEqual",
1737      "opcode" : 188,
1738      "operands" : [
1739        { "kind" : "IdResultType" },
1740        { "kind" : "IdResult" },
1741        { "kind" : "IdRef",        "name" : "'Operand 1'" },
1742        { "kind" : "IdRef",        "name" : "'Operand 2'" }
1743      ]
1744    },
1745    {
1746      "opname" : "OpFUnordLessThanEqual",
1747      "opcode" : 189,
1748      "operands" : [
1749        { "kind" : "IdResultType" },
1750        { "kind" : "IdResult" },
1751        { "kind" : "IdRef",        "name" : "'Operand 1'" },
1752        { "kind" : "IdRef",        "name" : "'Operand 2'" }
1753      ]
1754    },
1755    {
1756      "opname" : "OpFOrdGreaterThanEqual",
1757      "opcode" : 190,
1758      "operands" : [
1759        { "kind" : "IdResultType" },
1760        { "kind" : "IdResult" },
1761        { "kind" : "IdRef",        "name" : "'Operand 1'" },
1762        { "kind" : "IdRef",        "name" : "'Operand 2'" }
1763      ]
1764    },
1765    {
1766      "opname" : "OpFUnordGreaterThanEqual",
1767      "opcode" : 191,
1768      "operands" : [
1769        { "kind" : "IdResultType" },
1770        { "kind" : "IdResult" },
1771        { "kind" : "IdRef",        "name" : "'Operand 1'" },
1772        { "kind" : "IdRef",        "name" : "'Operand 2'" }
1773      ]
1774    },
1775    {
1776      "opname" : "OpShiftRightLogical",
1777      "opcode" : 194,
1778      "operands" : [
1779        { "kind" : "IdResultType" },
1780        { "kind" : "IdResult" },
1781        { "kind" : "IdRef",        "name" : "'Base'" },
1782        { "kind" : "IdRef",        "name" : "'Shift'" }
1783      ]
1784    },
1785    {
1786      "opname" : "OpShiftRightArithmetic",
1787      "opcode" : 195,
1788      "operands" : [
1789        { "kind" : "IdResultType" },
1790        { "kind" : "IdResult" },
1791        { "kind" : "IdRef",        "name" : "'Base'" },
1792        { "kind" : "IdRef",        "name" : "'Shift'" }
1793      ]
1794    },
1795    {
1796      "opname" : "OpShiftLeftLogical",
1797      "opcode" : 196,
1798      "operands" : [
1799        { "kind" : "IdResultType" },
1800        { "kind" : "IdResult" },
1801        { "kind" : "IdRef",        "name" : "'Base'" },
1802        { "kind" : "IdRef",        "name" : "'Shift'" }
1803      ]
1804    },
1805    {
1806      "opname" : "OpBitwiseOr",
1807      "opcode" : 197,
1808      "operands" : [
1809        { "kind" : "IdResultType" },
1810        { "kind" : "IdResult" },
1811        { "kind" : "IdRef",        "name" : "'Operand 1'" },
1812        { "kind" : "IdRef",        "name" : "'Operand 2'" }
1813      ]
1814    },
1815    {
1816      "opname" : "OpBitwiseXor",
1817      "opcode" : 198,
1818      "operands" : [
1819        { "kind" : "IdResultType" },
1820        { "kind" : "IdResult" },
1821        { "kind" : "IdRef",        "name" : "'Operand 1'" },
1822        { "kind" : "IdRef",        "name" : "'Operand 2'" }
1823      ]
1824    },
1825    {
1826      "opname" : "OpBitwiseAnd",
1827      "opcode" : 199,
1828      "operands" : [
1829        { "kind" : "IdResultType" },
1830        { "kind" : "IdResult" },
1831        { "kind" : "IdRef",        "name" : "'Operand 1'" },
1832        { "kind" : "IdRef",        "name" : "'Operand 2'" }
1833      ]
1834    },
1835    {
1836      "opname" : "OpNot",
1837      "opcode" : 200,
1838      "operands" : [
1839        { "kind" : "IdResultType" },
1840        { "kind" : "IdResult" },
1841        { "kind" : "IdRef",        "name" : "'Operand'" }
1842      ]
1843    },
1844    {
1845      "opname" : "OpBitFieldInsert",
1846      "opcode" : 201,
1847      "operands" : [
1848        { "kind" : "IdResultType" },
1849        { "kind" : "IdResult" },
1850        { "kind" : "IdRef",        "name" : "'Base'" },
1851        { "kind" : "IdRef",        "name" : "'Insert'" },
1852        { "kind" : "IdRef",        "name" : "'Offset'" },
1853        { "kind" : "IdRef",        "name" : "'Count'" }
1854      ],
1855      "capabilities" : [ "Shader" ]
1856    },
1857    {
1858      "opname" : "OpBitFieldSExtract",
1859      "opcode" : 202,
1860      "operands" : [
1861        { "kind" : "IdResultType" },
1862        { "kind" : "IdResult" },
1863        { "kind" : "IdRef",        "name" : "'Base'" },
1864        { "kind" : "IdRef",        "name" : "'Offset'" },
1865        { "kind" : "IdRef",        "name" : "'Count'" }
1866      ],
1867      "capabilities" : [ "Shader" ]
1868    },
1869    {
1870      "opname" : "OpBitFieldUExtract",
1871      "opcode" : 203,
1872      "operands" : [
1873        { "kind" : "IdResultType" },
1874        { "kind" : "IdResult" },
1875        { "kind" : "IdRef",        "name" : "'Base'" },
1876        { "kind" : "IdRef",        "name" : "'Offset'" },
1877        { "kind" : "IdRef",        "name" : "'Count'" }
1878      ],
1879      "capabilities" : [ "Shader" ]
1880    },
1881    {
1882      "opname" : "OpBitReverse",
1883      "opcode" : 204,
1884      "operands" : [
1885        { "kind" : "IdResultType" },
1886        { "kind" : "IdResult" },
1887        { "kind" : "IdRef",        "name" : "'Base'" }
1888      ],
1889      "capabilities" : [ "Shader" ]
1890    },
1891    {
1892      "opname" : "OpBitCount",
1893      "opcode" : 205,
1894      "operands" : [
1895        { "kind" : "IdResultType" },
1896        { "kind" : "IdResult" },
1897        { "kind" : "IdRef",        "name" : "'Base'" }
1898      ]
1899    },
1900    {
1901      "opname" : "OpDPdx",
1902      "opcode" : 207,
1903      "operands" : [
1904        { "kind" : "IdResultType" },
1905        { "kind" : "IdResult" },
1906        { "kind" : "IdRef",        "name" : "'P'" }
1907      ],
1908      "capabilities" : [ "Shader" ]
1909    },
1910    {
1911      "opname" : "OpDPdy",
1912      "opcode" : 208,
1913      "operands" : [
1914        { "kind" : "IdResultType" },
1915        { "kind" : "IdResult" },
1916        { "kind" : "IdRef",        "name" : "'P'" }
1917      ],
1918      "capabilities" : [ "Shader" ]
1919    },
1920    {
1921      "opname" : "OpFwidth",
1922      "opcode" : 209,
1923      "operands" : [
1924        { "kind" : "IdResultType" },
1925        { "kind" : "IdResult" },
1926        { "kind" : "IdRef",        "name" : "'P'" }
1927      ],
1928      "capabilities" : [ "Shader" ]
1929    },
1930    {
1931      "opname" : "OpDPdxFine",
1932      "opcode" : 210,
1933      "operands" : [
1934        { "kind" : "IdResultType" },
1935        { "kind" : "IdResult" },
1936        { "kind" : "IdRef",        "name" : "'P'" }
1937      ],
1938      "capabilities" : [ "DerivativeControl" ]
1939    },
1940    {
1941      "opname" : "OpDPdyFine",
1942      "opcode" : 211,
1943      "operands" : [
1944        { "kind" : "IdResultType" },
1945        { "kind" : "IdResult" },
1946        { "kind" : "IdRef",        "name" : "'P'" }
1947      ],
1948      "capabilities" : [ "DerivativeControl" ]
1949    },
1950    {
1951      "opname" : "OpFwidthFine",
1952      "opcode" : 212,
1953      "operands" : [
1954        { "kind" : "IdResultType" },
1955        { "kind" : "IdResult" },
1956        { "kind" : "IdRef",        "name" : "'P'" }
1957      ],
1958      "capabilities" : [ "DerivativeControl" ]
1959    },
1960    {
1961      "opname" : "OpDPdxCoarse",
1962      "opcode" : 213,
1963      "operands" : [
1964        { "kind" : "IdResultType" },
1965        { "kind" : "IdResult" },
1966        { "kind" : "IdRef",        "name" : "'P'" }
1967      ],
1968      "capabilities" : [ "DerivativeControl" ]
1969    },
1970    {
1971      "opname" : "OpDPdyCoarse",
1972      "opcode" : 214,
1973      "operands" : [
1974        { "kind" : "IdResultType" },
1975        { "kind" : "IdResult" },
1976        { "kind" : "IdRef",        "name" : "'P'" }
1977      ],
1978      "capabilities" : [ "DerivativeControl" ]
1979    },
1980    {
1981      "opname" : "OpFwidthCoarse",
1982      "opcode" : 215,
1983      "operands" : [
1984        { "kind" : "IdResultType" },
1985        { "kind" : "IdResult" },
1986        { "kind" : "IdRef",        "name" : "'P'" }
1987      ],
1988      "capabilities" : [ "DerivativeControl" ]
1989    },
1990    {
1991      "opname" : "OpEmitVertex",
1992      "opcode" : 218,
1993      "capabilities" : [ "Geometry" ]
1994    },
1995    {
1996      "opname" : "OpEndPrimitive",
1997      "opcode" : 219,
1998      "capabilities" : [ "Geometry" ]
1999    },
2000    {
2001      "opname" : "OpEmitStreamVertex",
2002      "opcode" : 220,
2003      "operands" : [
2004        { "kind" : "IdRef", "name" : "'Stream'" }
2005      ],
2006      "capabilities" : [ "GeometryStreams" ]
2007    },
2008    {
2009      "opname" : "OpEndStreamPrimitive",
2010      "opcode" : 221,
2011      "operands" : [
2012        { "kind" : "IdRef", "name" : "'Stream'" }
2013      ],
2014      "capabilities" : [ "GeometryStreams" ]
2015    },
2016    {
2017      "opname" : "OpControlBarrier",
2018      "opcode" : 224,
2019      "operands" : [
2020        { "kind" : "IdScope",           "name" : "'Execution'" },
2021        { "kind" : "IdScope",           "name" : "'Memory'" },
2022        { "kind" : "IdMemorySemantics", "name" : "'Semantics'" }
2023      ]
2024    },
2025    {
2026      "opname" : "OpMemoryBarrier",
2027      "opcode" : 225,
2028      "operands" : [
2029        { "kind" : "IdScope",           "name" : "'Memory'" },
2030        { "kind" : "IdMemorySemantics", "name" : "'Semantics'" }
2031      ]
2032    },
2033    {
2034      "opname" : "OpAtomicLoad",
2035      "opcode" : 227,
2036      "operands" : [
2037        { "kind" : "IdResultType" },
2038        { "kind" : "IdResult" },
2039        { "kind" : "IdRef",             "name" : "'Pointer'" },
2040        { "kind" : "IdScope",           "name" : "'Scope'" },
2041        { "kind" : "IdMemorySemantics", "name" : "'Semantics'" }
2042      ]
2043    },
2044    {
2045      "opname" : "OpAtomicStore",
2046      "opcode" : 228,
2047      "operands" : [
2048        { "kind" : "IdRef",             "name" : "'Pointer'" },
2049        { "kind" : "IdScope",           "name" : "'Scope'" },
2050        { "kind" : "IdMemorySemantics", "name" : "'Semantics'" },
2051        { "kind" : "IdRef",             "name" : "'Value'" }
2052      ]
2053    },
2054    {
2055      "opname" : "OpAtomicExchange",
2056      "opcode" : 229,
2057      "operands" : [
2058        { "kind" : "IdResultType" },
2059        { "kind" : "IdResult" },
2060        { "kind" : "IdRef",             "name" : "'Pointer'" },
2061        { "kind" : "IdScope",           "name" : "'Scope'" },
2062        { "kind" : "IdMemorySemantics", "name" : "'Semantics'" },
2063        { "kind" : "IdRef",             "name" : "'Value'" }
2064      ]
2065    },
2066    {
2067      "opname" : "OpAtomicCompareExchange",
2068      "opcode" : 230,
2069      "operands" : [
2070        { "kind" : "IdResultType" },
2071        { "kind" : "IdResult" },
2072        { "kind" : "IdRef",             "name" : "'Pointer'" },
2073        { "kind" : "IdScope",           "name" : "'Scope'" },
2074        { "kind" : "IdMemorySemantics", "name" : "'Equal'" },
2075        { "kind" : "IdMemorySemantics", "name" : "'Unequal'" },
2076        { "kind" : "IdRef",             "name" : "'Value'" },
2077        { "kind" : "IdRef",             "name" : "'Comparator'" }
2078      ]
2079    },
2080    {
2081      "opname" : "OpAtomicCompareExchangeWeak",
2082      "opcode" : 231,
2083      "operands" : [
2084        { "kind" : "IdResultType" },
2085        { "kind" : "IdResult" },
2086        { "kind" : "IdRef",             "name" : "'Pointer'" },
2087        { "kind" : "IdScope",           "name" : "'Scope'" },
2088        { "kind" : "IdMemorySemantics", "name" : "'Equal'" },
2089        { "kind" : "IdMemorySemantics", "name" : "'Unequal'" },
2090        { "kind" : "IdRef",             "name" : "'Value'" },
2091        { "kind" : "IdRef",             "name" : "'Comparator'" }
2092      ],
2093      "capabilities" : [ "Kernel" ]
2094    },
2095    {
2096      "opname" : "OpAtomicIIncrement",
2097      "opcode" : 232,
2098      "operands" : [
2099        { "kind" : "IdResultType" },
2100        { "kind" : "IdResult" },
2101        { "kind" : "IdRef",             "name" : "'Pointer'" },
2102        { "kind" : "IdScope",           "name" : "'Scope'" },
2103        { "kind" : "IdMemorySemantics", "name" : "'Semantics'" }
2104      ]
2105    },
2106    {
2107      "opname" : "OpAtomicIDecrement",
2108      "opcode" : 233,
2109      "operands" : [
2110        { "kind" : "IdResultType" },
2111        { "kind" : "IdResult" },
2112        { "kind" : "IdRef",             "name" : "'Pointer'" },
2113        { "kind" : "IdScope",           "name" : "'Scope'" },
2114        { "kind" : "IdMemorySemantics", "name" : "'Semantics'" }
2115      ]
2116    },
2117    {
2118      "opname" : "OpAtomicIAdd",
2119      "opcode" : 234,
2120      "operands" : [
2121        { "kind" : "IdResultType" },
2122        { "kind" : "IdResult" },
2123        { "kind" : "IdRef",             "name" : "'Pointer'" },
2124        { "kind" : "IdScope",           "name" : "'Scope'" },
2125        { "kind" : "IdMemorySemantics", "name" : "'Semantics'" },
2126        { "kind" : "IdRef",             "name" : "'Value'" }
2127      ]
2128    },
2129    {
2130      "opname" : "OpAtomicISub",
2131      "opcode" : 235,
2132      "operands" : [
2133        { "kind" : "IdResultType" },
2134        { "kind" : "IdResult" },
2135        { "kind" : "IdRef",             "name" : "'Pointer'" },
2136        { "kind" : "IdScope",           "name" : "'Scope'" },
2137        { "kind" : "IdMemorySemantics", "name" : "'Semantics'" },
2138        { "kind" : "IdRef",             "name" : "'Value'" }
2139      ]
2140    },
2141    {
2142      "opname" : "OpAtomicSMin",
2143      "opcode" : 236,
2144      "operands" : [
2145        { "kind" : "IdResultType" },
2146        { "kind" : "IdResult" },
2147        { "kind" : "IdRef",             "name" : "'Pointer'" },
2148        { "kind" : "IdScope",           "name" : "'Scope'" },
2149        { "kind" : "IdMemorySemantics", "name" : "'Semantics'" },
2150        { "kind" : "IdRef",             "name" : "'Value'" }
2151      ]
2152    },
2153    {
2154      "opname" : "OpAtomicUMin",
2155      "opcode" : 237,
2156      "operands" : [
2157        { "kind" : "IdResultType" },
2158        { "kind" : "IdResult" },
2159        { "kind" : "IdRef",             "name" : "'Pointer'" },
2160        { "kind" : "IdScope",           "name" : "'Scope'" },
2161        { "kind" : "IdMemorySemantics", "name" : "'Semantics'" },
2162        { "kind" : "IdRef",             "name" : "'Value'" }
2163      ]
2164    },
2165    {
2166      "opname" : "OpAtomicSMax",
2167      "opcode" : 238,
2168      "operands" : [
2169        { "kind" : "IdResultType" },
2170        { "kind" : "IdResult" },
2171        { "kind" : "IdRef",             "name" : "'Pointer'" },
2172        { "kind" : "IdScope",           "name" : "'Scope'" },
2173        { "kind" : "IdMemorySemantics", "name" : "'Semantics'" },
2174        { "kind" : "IdRef",             "name" : "'Value'" }
2175      ]
2176    },
2177    {
2178      "opname" : "OpAtomicUMax",
2179      "opcode" : 239,
2180      "operands" : [
2181        { "kind" : "IdResultType" },
2182        { "kind" : "IdResult" },
2183        { "kind" : "IdRef",             "name" : "'Pointer'" },
2184        { "kind" : "IdScope",           "name" : "'Scope'" },
2185        { "kind" : "IdMemorySemantics", "name" : "'Semantics'" },
2186        { "kind" : "IdRef",             "name" : "'Value'" }
2187      ]
2188    },
2189    {
2190      "opname" : "OpAtomicAnd",
2191      "opcode" : 240,
2192      "operands" : [
2193        { "kind" : "IdResultType" },
2194        { "kind" : "IdResult" },
2195        { "kind" : "IdRef",             "name" : "'Pointer'" },
2196        { "kind" : "IdScope",           "name" : "'Scope'" },
2197        { "kind" : "IdMemorySemantics", "name" : "'Semantics'" },
2198        { "kind" : "IdRef",             "name" : "'Value'" }
2199      ]
2200    },
2201    {
2202      "opname" : "OpAtomicOr",
2203      "opcode" : 241,
2204      "operands" : [
2205        { "kind" : "IdResultType" },
2206        { "kind" : "IdResult" },
2207        { "kind" : "IdRef",             "name" : "'Pointer'" },
2208        { "kind" : "IdScope",           "name" : "'Scope'" },
2209        { "kind" : "IdMemorySemantics", "name" : "'Semantics'" },
2210        { "kind" : "IdRef",             "name" : "'Value'" }
2211      ]
2212    },
2213    {
2214      "opname" : "OpAtomicXor",
2215      "opcode" : 242,
2216      "operands" : [
2217        { "kind" : "IdResultType" },
2218        { "kind" : "IdResult" },
2219        { "kind" : "IdRef",             "name" : "'Pointer'" },
2220        { "kind" : "IdScope",           "name" : "'Scope'" },
2221        { "kind" : "IdMemorySemantics", "name" : "'Semantics'" },
2222        { "kind" : "IdRef",             "name" : "'Value'" }
2223      ]
2224    },
2225    {
2226      "opname" : "OpPhi",
2227      "opcode" : 245,
2228      "operands" : [
2229        { "kind" : "IdResultType" },
2230        { "kind" : "IdResult" },
2231        { "kind" : "PairIdRefIdRef", "quantifier" : "*", "name" : "'Variable, Parent, ...'" }
2232      ]
2233    },
2234    {
2235      "opname" : "OpLoopMerge",
2236      "opcode" : 246,
2237      "operands" : [
2238        { "kind" : "IdRef",       "name" : "'Merge Block'" },
2239        { "kind" : "IdRef",       "name" : "'Continue Target'" },
2240        { "kind" : "LoopControl" }
2241      ]
2242    },
2243    {
2244      "opname" : "OpSelectionMerge",
2245      "opcode" : 247,
2246      "operands" : [
2247        { "kind" : "IdRef",            "name" : "'Merge Block'" },
2248        { "kind" : "SelectionControl" }
2249      ]
2250    },
2251    {
2252      "opname" : "OpLabel",
2253      "opcode" : 248,
2254      "operands" : [
2255        { "kind" : "IdResult" }
2256      ]
2257    },
2258    {
2259      "opname" : "OpBranch",
2260      "opcode" : 249,
2261      "operands" : [
2262        { "kind" : "IdRef", "name" : "'Target Label'" }
2263      ]
2264    },
2265    {
2266      "opname" : "OpBranchConditional",
2267      "opcode" : 250,
2268      "operands" : [
2269        { "kind" : "IdRef",                              "name" : "'Condition'" },
2270        { "kind" : "IdRef",                              "name" : "'True Label'" },
2271        { "kind" : "IdRef",                              "name" : "'False Label'" },
2272        { "kind" : "LiteralInteger", "quantifier" : "*", "name" : "'Branch weights'" }
2273      ]
2274    },
2275    {
2276      "opname" : "OpSwitch",
2277      "opcode" : 251,
2278      "operands" : [
2279        { "kind" : "IdRef",                                       "name" : "'Selector'" },
2280        { "kind" : "IdRef",                                       "name" : "'Default'" },
2281        { "kind" : "PairLiteralIntegerIdRef", "quantifier" : "*", "name" : "'Target'" }
2282      ]
2283    },
2284    {
2285      "opname" : "OpKill",
2286      "opcode" : 252,
2287      "capabilities" : [ "Shader" ]
2288    },
2289    {
2290      "opname" : "OpReturn",
2291      "opcode" : 253
2292    },
2293    {
2294      "opname" : "OpReturnValue",
2295      "opcode" : 254,
2296      "operands" : [
2297        { "kind" : "IdRef", "name" : "'Value'" }
2298      ]
2299    },
2300    {
2301      "opname" : "OpUnreachable",
2302      "opcode" : 255
2303    },
2304    {
2305      "opname" : "OpLifetimeStart",
2306      "opcode" : 256,
2307      "operands" : [
2308        { "kind" : "IdRef",          "name" : "'Pointer'" },
2309        { "kind" : "LiteralInteger", "name" : "'Size'" }
2310      ],
2311      "capabilities" : [ "Kernel" ]
2312    },
2313    {
2314      "opname" : "OpLifetimeStop",
2315      "opcode" : 257,
2316      "operands" : [
2317        { "kind" : "IdRef",          "name" : "'Pointer'" },
2318        { "kind" : "LiteralInteger", "name" : "'Size'" }
2319      ],
2320      "capabilities" : [ "Kernel" ]
2321    },
2322    {
2323      "opname" : "OpGroupAsyncCopy",
2324      "opcode" : 259,
2325      "operands" : [
2326        { "kind" : "IdResultType" },
2327        { "kind" : "IdResult" },
2328        { "kind" : "IdScope",      "name" : "'Execution'" },
2329        { "kind" : "IdRef",        "name" : "'Destination'" },
2330        { "kind" : "IdRef",        "name" : "'Source'" },
2331        { "kind" : "IdRef",        "name" : "'Num Elements'" },
2332        { "kind" : "IdRef",        "name" : "'Stride'" },
2333        { "kind" : "IdRef",        "name" : "'Event'" }
2334      ],
2335      "capabilities" : [ "Kernel" ]
2336    },
2337    {
2338      "opname" : "OpGroupWaitEvents",
2339      "opcode" : 260,
2340      "operands" : [
2341        { "kind" : "IdScope", "name" : "'Execution'" },
2342        { "kind" : "IdRef",   "name" : "'Num Events'" },
2343        { "kind" : "IdRef",   "name" : "'Events List'" }
2344      ],
2345      "capabilities" : [ "Kernel" ]
2346    },
2347    {
2348      "opname" : "OpGroupAll",
2349      "opcode" : 261,
2350      "operands" : [
2351        { "kind" : "IdResultType" },
2352        { "kind" : "IdResult" },
2353        { "kind" : "IdScope",      "name" : "'Execution'" },
2354        { "kind" : "IdRef",        "name" : "'Predicate'" }
2355      ],
2356      "capabilities" : [ "Groups" ]
2357    },
2358    {
2359      "opname" : "OpGroupAny",
2360      "opcode" : 262,
2361      "operands" : [
2362        { "kind" : "IdResultType" },
2363        { "kind" : "IdResult" },
2364        { "kind" : "IdScope",      "name" : "'Execution'" },
2365        { "kind" : "IdRef",        "name" : "'Predicate'" }
2366      ],
2367      "capabilities" : [ "Groups" ]
2368    },
2369    {
2370      "opname" : "OpGroupBroadcast",
2371      "opcode" : 263,
2372      "operands" : [
2373        { "kind" : "IdResultType" },
2374        { "kind" : "IdResult" },
2375        { "kind" : "IdScope",      "name" : "'Execution'" },
2376        { "kind" : "IdRef",        "name" : "'Value'" },
2377        { "kind" : "IdRef",        "name" : "'LocalId'" }
2378      ],
2379      "capabilities" : [ "Groups" ]
2380    },
2381    {
2382      "opname" : "OpGroupIAdd",
2383      "opcode" : 264,
2384      "operands" : [
2385        { "kind" : "IdResultType" },
2386        { "kind" : "IdResult" },
2387        { "kind" : "IdScope",        "name" : "'Execution'" },
2388        { "kind" : "GroupOperation", "name" : "'Operation'" },
2389        { "kind" : "IdRef",          "name" : "'X'" }
2390      ],
2391      "capabilities" : [ "Groups" ]
2392    },
2393    {
2394      "opname" : "OpGroupFAdd",
2395      "opcode" : 265,
2396      "operands" : [
2397        { "kind" : "IdResultType" },
2398        { "kind" : "IdResult" },
2399        { "kind" : "IdScope",        "name" : "'Execution'" },
2400        { "kind" : "GroupOperation", "name" : "'Operation'" },
2401        { "kind" : "IdRef",          "name" : "'X'" }
2402      ],
2403      "capabilities" : [ "Groups" ]
2404    },
2405    {
2406      "opname" : "OpGroupFMin",
2407      "opcode" : 266,
2408      "operands" : [
2409        { "kind" : "IdResultType" },
2410        { "kind" : "IdResult" },
2411        { "kind" : "IdScope",        "name" : "'Execution'" },
2412        { "kind" : "GroupOperation", "name" : "'Operation'" },
2413        { "kind" : "IdRef",          "name" : "'X'" }
2414      ],
2415      "capabilities" : [ "Groups" ]
2416    },
2417    {
2418      "opname" : "OpGroupUMin",
2419      "opcode" : 267,
2420      "operands" : [
2421        { "kind" : "IdResultType" },
2422        { "kind" : "IdResult" },
2423        { "kind" : "IdScope",        "name" : "'Execution'" },
2424        { "kind" : "GroupOperation", "name" : "'Operation'" },
2425        { "kind" : "IdRef",          "name" : "'X'" }
2426      ],
2427      "capabilities" : [ "Groups" ]
2428    },
2429    {
2430      "opname" : "OpGroupSMin",
2431      "opcode" : 268,
2432      "operands" : [
2433        { "kind" : "IdResultType" },
2434        { "kind" : "IdResult" },
2435        { "kind" : "IdScope",        "name" : "'Execution'" },
2436        { "kind" : "GroupOperation", "name" : "'Operation'" },
2437        { "kind" : "IdRef",          "name" : "'X'" }
2438      ],
2439      "capabilities" : [ "Groups" ]
2440    },
2441    {
2442      "opname" : "OpGroupFMax",
2443      "opcode" : 269,
2444      "operands" : [
2445        { "kind" : "IdResultType" },
2446        { "kind" : "IdResult" },
2447        { "kind" : "IdScope",        "name" : "'Execution'" },
2448        { "kind" : "GroupOperation", "name" : "'Operation'" },
2449        { "kind" : "IdRef",          "name" : "'X'" }
2450      ],
2451      "capabilities" : [ "Groups" ]
2452    },
2453    {
2454      "opname" : "OpGroupUMax",
2455      "opcode" : 270,
2456      "operands" : [
2457        { "kind" : "IdResultType" },
2458        { "kind" : "IdResult" },
2459        { "kind" : "IdScope",        "name" : "'Execution'" },
2460        { "kind" : "GroupOperation", "name" : "'Operation'" },
2461        { "kind" : "IdRef",          "name" : "'X'" }
2462      ],
2463      "capabilities" : [ "Groups" ]
2464    },
2465    {
2466      "opname" : "OpGroupSMax",
2467      "opcode" : 271,
2468      "operands" : [
2469        { "kind" : "IdResultType" },
2470        { "kind" : "IdResult" },
2471        { "kind" : "IdScope",        "name" : "'Execution'" },
2472        { "kind" : "GroupOperation", "name" : "'Operation'" },
2473        { "kind" : "IdRef",          "name" : "'X'" }
2474      ],
2475      "capabilities" : [ "Groups" ]
2476    },
2477    {
2478      "opname" : "OpReadPipe",
2479      "opcode" : 274,
2480      "operands" : [
2481        { "kind" : "IdResultType" },
2482        { "kind" : "IdResult" },
2483        { "kind" : "IdRef",        "name" : "'Pipe'" },
2484        { "kind" : "IdRef",        "name" : "'Pointer'" },
2485        { "kind" : "IdRef",        "name" : "'Packet Size'" },
2486        { "kind" : "IdRef",        "name" : "'Packet Alignment'" }
2487      ],
2488      "capabilities" : [ "Pipes" ]
2489    },
2490    {
2491      "opname" : "OpWritePipe",
2492      "opcode" : 275,
2493      "operands" : [
2494        { "kind" : "IdResultType" },
2495        { "kind" : "IdResult" },
2496        { "kind" : "IdRef",        "name" : "'Pipe'" },
2497        { "kind" : "IdRef",        "name" : "'Pointer'" },
2498        { "kind" : "IdRef",        "name" : "'Packet Size'" },
2499        { "kind" : "IdRef",        "name" : "'Packet Alignment'" }
2500      ],
2501      "capabilities" : [ "Pipes" ]
2502    },
2503    {
2504      "opname" : "OpReservedReadPipe",
2505      "opcode" : 276,
2506      "operands" : [
2507        { "kind" : "IdResultType" },
2508        { "kind" : "IdResult" },
2509        { "kind" : "IdRef",        "name" : "'Pipe'" },
2510        { "kind" : "IdRef",        "name" : "'Reserve Id'" },
2511        { "kind" : "IdRef",        "name" : "'Index'" },
2512        { "kind" : "IdRef",        "name" : "'Pointer'" },
2513        { "kind" : "IdRef",        "name" : "'Packet Size'" },
2514        { "kind" : "IdRef",        "name" : "'Packet Alignment'" }
2515      ],
2516      "capabilities" : [ "Pipes" ]
2517    },
2518    {
2519      "opname" : "OpReservedWritePipe",
2520      "opcode" : 277,
2521      "operands" : [
2522        { "kind" : "IdResultType" },
2523        { "kind" : "IdResult" },
2524        { "kind" : "IdRef",        "name" : "'Pipe'" },
2525        { "kind" : "IdRef",        "name" : "'Reserve Id'" },
2526        { "kind" : "IdRef",        "name" : "'Index'" },
2527        { "kind" : "IdRef",        "name" : "'Pointer'" },
2528        { "kind" : "IdRef",        "name" : "'Packet Size'" },
2529        { "kind" : "IdRef",        "name" : "'Packet Alignment'" }
2530      ],
2531      "capabilities" : [ "Pipes" ]
2532    },
2533    {
2534      "opname" : "OpReserveReadPipePackets",
2535      "opcode" : 278,
2536      "operands" : [
2537        { "kind" : "IdResultType" },
2538        { "kind" : "IdResult" },
2539        { "kind" : "IdRef",        "name" : "'Pipe'" },
2540        { "kind" : "IdRef",        "name" : "'Num Packets'" },
2541        { "kind" : "IdRef",        "name" : "'Packet Size'" },
2542        { "kind" : "IdRef",        "name" : "'Packet Alignment'" }
2543      ],
2544      "capabilities" : [ "Pipes" ]
2545    },
2546    {
2547      "opname" : "OpReserveWritePipePackets",
2548      "opcode" : 279,
2549      "operands" : [
2550        { "kind" : "IdResultType" },
2551        { "kind" : "IdResult" },
2552        { "kind" : "IdRef",        "name" : "'Pipe'" },
2553        { "kind" : "IdRef",        "name" : "'Num Packets'" },
2554        { "kind" : "IdRef",        "name" : "'Packet Size'" },
2555        { "kind" : "IdRef",        "name" : "'Packet Alignment'" }
2556      ],
2557      "capabilities" : [ "Pipes" ]
2558    },
2559    {
2560      "opname" : "OpCommitReadPipe",
2561      "opcode" : 280,
2562      "operands" : [
2563        { "kind" : "IdRef", "name" : "'Pipe'" },
2564        { "kind" : "IdRef", "name" : "'Reserve Id'" },
2565        { "kind" : "IdRef", "name" : "'Packet Size'" },
2566        { "kind" : "IdRef", "name" : "'Packet Alignment'" }
2567      ],
2568      "capabilities" : [ "Pipes" ]
2569    },
2570    {
2571      "opname" : "OpCommitWritePipe",
2572      "opcode" : 281,
2573      "operands" : [
2574        { "kind" : "IdRef", "name" : "'Pipe'" },
2575        { "kind" : "IdRef", "name" : "'Reserve Id'" },
2576        { "kind" : "IdRef", "name" : "'Packet Size'" },
2577        { "kind" : "IdRef", "name" : "'Packet Alignment'" }
2578      ],
2579      "capabilities" : [ "Pipes" ]
2580    },
2581    {
2582      "opname" : "OpIsValidReserveId",
2583      "opcode" : 282,
2584      "operands" : [
2585        { "kind" : "IdResultType" },
2586        { "kind" : "IdResult" },
2587        { "kind" : "IdRef",        "name" : "'Reserve Id'" }
2588      ],
2589      "capabilities" : [ "Pipes" ]
2590    },
2591    {
2592      "opname" : "OpGetNumPipePackets",
2593      "opcode" : 283,
2594      "operands" : [
2595        { "kind" : "IdResultType" },
2596        { "kind" : "IdResult" },
2597        { "kind" : "IdRef",        "name" : "'Pipe'" },
2598        { "kind" : "IdRef",        "name" : "'Packet Size'" },
2599        { "kind" : "IdRef",        "name" : "'Packet Alignment'" }
2600      ],
2601      "capabilities" : [ "Pipes" ]
2602    },
2603    {
2604      "opname" : "OpGetMaxPipePackets",
2605      "opcode" : 284,
2606      "operands" : [
2607        { "kind" : "IdResultType" },
2608        { "kind" : "IdResult" },
2609        { "kind" : "IdRef",        "name" : "'Pipe'" },
2610        { "kind" : "IdRef",        "name" : "'Packet Size'" },
2611        { "kind" : "IdRef",        "name" : "'Packet Alignment'" }
2612      ],
2613      "capabilities" : [ "Pipes" ]
2614    },
2615    {
2616      "opname" : "OpGroupReserveReadPipePackets",
2617      "opcode" : 285,
2618      "operands" : [
2619        { "kind" : "IdResultType" },
2620        { "kind" : "IdResult" },
2621        { "kind" : "IdScope",      "name" : "'Execution'" },
2622        { "kind" : "IdRef",        "name" : "'Pipe'" },
2623        { "kind" : "IdRef",        "name" : "'Num Packets'" },
2624        { "kind" : "IdRef",        "name" : "'Packet Size'" },
2625        { "kind" : "IdRef",        "name" : "'Packet Alignment'" }
2626      ],
2627      "capabilities" : [ "Pipes" ]
2628    },
2629    {
2630      "opname" : "OpGroupReserveWritePipePackets",
2631      "opcode" : 286,
2632      "operands" : [
2633        { "kind" : "IdResultType" },
2634        { "kind" : "IdResult" },
2635        { "kind" : "IdScope",      "name" : "'Execution'" },
2636        { "kind" : "IdRef",        "name" : "'Pipe'" },
2637        { "kind" : "IdRef",        "name" : "'Num Packets'" },
2638        { "kind" : "IdRef",        "name" : "'Packet Size'" },
2639        { "kind" : "IdRef",        "name" : "'Packet Alignment'" }
2640      ],
2641      "capabilities" : [ "Pipes" ]
2642    },
2643    {
2644      "opname" : "OpGroupCommitReadPipe",
2645      "opcode" : 287,
2646      "operands" : [
2647        { "kind" : "IdScope", "name" : "'Execution'" },
2648        { "kind" : "IdRef",   "name" : "'Pipe'" },
2649        { "kind" : "IdRef",   "name" : "'Reserve Id'" },
2650        { "kind" : "IdRef",   "name" : "'Packet Size'" },
2651        { "kind" : "IdRef",   "name" : "'Packet Alignment'" }
2652      ],
2653      "capabilities" : [ "Pipes" ]
2654    },
2655    {
2656      "opname" : "OpGroupCommitWritePipe",
2657      "opcode" : 288,
2658      "operands" : [
2659        { "kind" : "IdScope", "name" : "'Execution'" },
2660        { "kind" : "IdRef",   "name" : "'Pipe'" },
2661        { "kind" : "IdRef",   "name" : "'Reserve Id'" },
2662        { "kind" : "IdRef",   "name" : "'Packet Size'" },
2663        { "kind" : "IdRef",   "name" : "'Packet Alignment'" }
2664      ],
2665      "capabilities" : [ "Pipes" ]
2666    },
2667    {
2668      "opname" : "OpEnqueueMarker",
2669      "opcode" : 291,
2670      "operands" : [
2671        { "kind" : "IdResultType" },
2672        { "kind" : "IdResult" },
2673        { "kind" : "IdRef",        "name" : "'Queue'" },
2674        { "kind" : "IdRef",        "name" : "'Num Events'" },
2675        { "kind" : "IdRef",        "name" : "'Wait Events'" },
2676        { "kind" : "IdRef",        "name" : "'Ret Event'" }
2677      ],
2678      "capabilities" : [ "DeviceEnqueue" ]
2679    },
2680    {
2681      "opname" : "OpEnqueueKernel",
2682      "opcode" : 292,
2683      "operands" : [
2684        { "kind" : "IdResultType" },
2685        { "kind" : "IdResult" },
2686        { "kind" : "IdRef",                            "name" : "'Queue'" },
2687        { "kind" : "IdRef",                            "name" : "'Flags'" },
2688        { "kind" : "IdRef",                            "name" : "'ND Range'" },
2689        { "kind" : "IdRef",                            "name" : "'Num Events'" },
2690        { "kind" : "IdRef",                            "name" : "'Wait Events'" },
2691        { "kind" : "IdRef",                            "name" : "'Ret Event'" },
2692        { "kind" : "IdRef",                            "name" : "'Invoke'" },
2693        { "kind" : "IdRef",                            "name" : "'Param'" },
2694        { "kind" : "IdRef",                            "name" : "'Param Size'" },
2695        { "kind" : "IdRef",                            "name" : "'Param Align'" },
2696        { "kind" : "IdRef",        "quantifier" : "*", "name" : "'Local Size'" }
2697      ],
2698      "capabilities" : [ "DeviceEnqueue" ]
2699    },
2700    {
2701      "opname" : "OpGetKernelNDrangeSubGroupCount",
2702      "opcode" : 293,
2703      "operands" : [
2704        { "kind" : "IdResultType" },
2705        { "kind" : "IdResult" },
2706        { "kind" : "IdRef",        "name" : "'ND Range'" },
2707        { "kind" : "IdRef",        "name" : "'Invoke'" },
2708        { "kind" : "IdRef",        "name" : "'Param'" },
2709        { "kind" : "IdRef",        "name" : "'Param Size'" },
2710        { "kind" : "IdRef",        "name" : "'Param Align'" }
2711      ],
2712      "capabilities" : [ "DeviceEnqueue" ]
2713    },
2714    {
2715      "opname" : "OpGetKernelNDrangeMaxSubGroupSize",
2716      "opcode" : 294,
2717      "operands" : [
2718        { "kind" : "IdResultType" },
2719        { "kind" : "IdResult" },
2720        { "kind" : "IdRef",        "name" : "'ND Range'" },
2721        { "kind" : "IdRef",        "name" : "'Invoke'" },
2722        { "kind" : "IdRef",        "name" : "'Param'" },
2723        { "kind" : "IdRef",        "name" : "'Param Size'" },
2724        { "kind" : "IdRef",        "name" : "'Param Align'" }
2725      ],
2726      "capabilities" : [ "DeviceEnqueue" ]
2727    },
2728    {
2729      "opname" : "OpGetKernelWorkGroupSize",
2730      "opcode" : 295,
2731      "operands" : [
2732        { "kind" : "IdResultType" },
2733        { "kind" : "IdResult" },
2734        { "kind" : "IdRef",        "name" : "'Invoke'" },
2735        { "kind" : "IdRef",        "name" : "'Param'" },
2736        { "kind" : "IdRef",        "name" : "'Param Size'" },
2737        { "kind" : "IdRef",        "name" : "'Param Align'" }
2738      ],
2739      "capabilities" : [ "DeviceEnqueue" ]
2740    },
2741    {
2742      "opname" : "OpGetKernelPreferredWorkGroupSizeMultiple",
2743      "opcode" : 296,
2744      "operands" : [
2745        { "kind" : "IdResultType" },
2746        { "kind" : "IdResult" },
2747        { "kind" : "IdRef",        "name" : "'Invoke'" },
2748        { "kind" : "IdRef",        "name" : "'Param'" },
2749        { "kind" : "IdRef",        "name" : "'Param Size'" },
2750        { "kind" : "IdRef",        "name" : "'Param Align'" }
2751      ],
2752      "capabilities" : [ "DeviceEnqueue" ]
2753    },
2754    {
2755      "opname" : "OpRetainEvent",
2756      "opcode" : 297,
2757      "operands" : [
2758        { "kind" : "IdRef", "name" : "'Event'" }
2759      ],
2760      "capabilities" : [ "DeviceEnqueue" ]
2761    },
2762    {
2763      "opname" : "OpReleaseEvent",
2764      "opcode" : 298,
2765      "operands" : [
2766        { "kind" : "IdRef", "name" : "'Event'" }
2767      ],
2768      "capabilities" : [ "DeviceEnqueue" ]
2769    },
2770    {
2771      "opname" : "OpCreateUserEvent",
2772      "opcode" : 299,
2773      "operands" : [
2774        { "kind" : "IdResultType" },
2775        { "kind" : "IdResult" }
2776      ],
2777      "capabilities" : [ "DeviceEnqueue" ]
2778    },
2779    {
2780      "opname" : "OpIsValidEvent",
2781      "opcode" : 300,
2782      "operands" : [
2783        { "kind" : "IdResultType" },
2784        { "kind" : "IdResult" },
2785        { "kind" : "IdRef",        "name" : "'Event'" }
2786      ],
2787      "capabilities" : [ "DeviceEnqueue" ]
2788    },
2789    {
2790      "opname" : "OpSetUserEventStatus",
2791      "opcode" : 301,
2792      "operands" : [
2793        { "kind" : "IdRef", "name" : "'Event'" },
2794        { "kind" : "IdRef", "name" : "'Status'" }
2795      ],
2796      "capabilities" : [ "DeviceEnqueue" ]
2797    },
2798    {
2799      "opname" : "OpCaptureEventProfilingInfo",
2800      "opcode" : 302,
2801      "operands" : [
2802        { "kind" : "IdRef", "name" : "'Event'" },
2803        { "kind" : "IdRef", "name" : "'Profiling Info'" },
2804        { "kind" : "IdRef", "name" : "'Value'" }
2805      ],
2806      "capabilities" : [ "DeviceEnqueue" ]
2807    },
2808    {
2809      "opname" : "OpGetDefaultQueue",
2810      "opcode" : 303,
2811      "operands" : [
2812        { "kind" : "IdResultType" },
2813        { "kind" : "IdResult" }
2814      ],
2815      "capabilities" : [ "DeviceEnqueue" ]
2816    },
2817    {
2818      "opname" : "OpBuildNDRange",
2819      "opcode" : 304,
2820      "operands" : [
2821        { "kind" : "IdResultType" },
2822        { "kind" : "IdResult" },
2823        { "kind" : "IdRef",        "name" : "'GlobalWorkSize'" },
2824        { "kind" : "IdRef",        "name" : "'LocalWorkSize'" },
2825        { "kind" : "IdRef",        "name" : "'GlobalWorkOffset'" }
2826      ],
2827      "capabilities" : [ "DeviceEnqueue" ]
2828    },
2829    {
2830      "opname" : "OpImageSparseSampleImplicitLod",
2831      "opcode" : 305,
2832      "operands" : [
2833        { "kind" : "IdResultType" },
2834        { "kind" : "IdResult" },
2835        { "kind" : "IdRef",                             "name" : "'Sampled Image'" },
2836        { "kind" : "IdRef",                             "name" : "'Coordinate'" },
2837        { "kind" : "ImageOperands", "quantifier" : "?" }
2838      ],
2839      "capabilities" : [ "SparseResidency" ]
2840    },
2841    {
2842      "opname" : "OpImageSparseSampleExplicitLod",
2843      "opcode" : 306,
2844      "operands" : [
2845        { "kind" : "IdResultType" },
2846        { "kind" : "IdResult" },
2847        { "kind" : "IdRef",         "name" : "'Sampled Image'" },
2848        { "kind" : "IdRef",         "name" : "'Coordinate'" },
2849        { "kind" : "ImageOperands" }
2850      ],
2851      "capabilities" : [ "SparseResidency" ]
2852    },
2853    {
2854      "opname" : "OpImageSparseSampleDrefImplicitLod",
2855      "opcode" : 307,
2856      "operands" : [
2857        { "kind" : "IdResultType" },
2858        { "kind" : "IdResult" },
2859        { "kind" : "IdRef",                             "name" : "'Sampled Image'" },
2860        { "kind" : "IdRef",                             "name" : "'Coordinate'" },
2861        { "kind" : "IdRef",                             "name" : "'D~ref~'" },
2862        { "kind" : "ImageOperands", "quantifier" : "?" }
2863      ],
2864      "capabilities" : [ "SparseResidency" ]
2865    },
2866    {
2867      "opname" : "OpImageSparseSampleDrefExplicitLod",
2868      "opcode" : 308,
2869      "operands" : [
2870        { "kind" : "IdResultType" },
2871        { "kind" : "IdResult" },
2872        { "kind" : "IdRef",         "name" : "'Sampled Image'" },
2873        { "kind" : "IdRef",         "name" : "'Coordinate'" },
2874        { "kind" : "IdRef",         "name" : "'D~ref~'" },
2875        { "kind" : "ImageOperands" }
2876      ],
2877      "capabilities" : [ "SparseResidency" ]
2878    },
2879    {
2880      "opname" : "OpImageSparseSampleProjImplicitLod",
2881      "opcode" : 309,
2882      "operands" : [
2883        { "kind" : "IdResultType" },
2884        { "kind" : "IdResult" },
2885        { "kind" : "IdRef",                             "name" : "'Sampled Image'" },
2886        { "kind" : "IdRef",                             "name" : "'Coordinate'" },
2887        { "kind" : "ImageOperands", "quantifier" : "?" }
2888      ],
2889      "capabilities" : [ "SparseResidency" ]
2890    },
2891    {
2892      "opname" : "OpImageSparseSampleProjExplicitLod",
2893      "opcode" : 310,
2894      "operands" : [
2895        { "kind" : "IdResultType" },
2896        { "kind" : "IdResult" },
2897        { "kind" : "IdRef",         "name" : "'Sampled Image'" },
2898        { "kind" : "IdRef",         "name" : "'Coordinate'" },
2899        { "kind" : "ImageOperands" }
2900      ],
2901      "capabilities" : [ "SparseResidency" ]
2902    },
2903    {
2904      "opname" : "OpImageSparseSampleProjDrefImplicitLod",
2905      "opcode" : 311,
2906      "operands" : [
2907        { "kind" : "IdResultType" },
2908        { "kind" : "IdResult" },
2909        { "kind" : "IdRef",                             "name" : "'Sampled Image'" },
2910        { "kind" : "IdRef",                             "name" : "'Coordinate'" },
2911        { "kind" : "IdRef",                             "name" : "'D~ref~'" },
2912        { "kind" : "ImageOperands", "quantifier" : "?" }
2913      ],
2914      "capabilities" : [ "SparseResidency" ]
2915    },
2916    {
2917      "opname" : "OpImageSparseSampleProjDrefExplicitLod",
2918      "opcode" : 312,
2919      "operands" : [
2920        { "kind" : "IdResultType" },
2921        { "kind" : "IdResult" },
2922        { "kind" : "IdRef",         "name" : "'Sampled Image'" },
2923        { "kind" : "IdRef",         "name" : "'Coordinate'" },
2924        { "kind" : "IdRef",         "name" : "'D~ref~'" },
2925        { "kind" : "ImageOperands" }
2926      ],
2927      "capabilities" : [ "SparseResidency" ]
2928    },
2929    {
2930      "opname" : "OpImageSparseFetch",
2931      "opcode" : 313,
2932      "operands" : [
2933        { "kind" : "IdResultType" },
2934        { "kind" : "IdResult" },
2935        { "kind" : "IdRef",                             "name" : "'Image'" },
2936        { "kind" : "IdRef",                             "name" : "'Coordinate'" },
2937        { "kind" : "ImageOperands", "quantifier" : "?" }
2938      ],
2939      "capabilities" : [ "SparseResidency" ]
2940    },
2941    {
2942      "opname" : "OpImageSparseGather",
2943      "opcode" : 314,
2944      "operands" : [
2945        { "kind" : "IdResultType" },
2946        { "kind" : "IdResult" },
2947        { "kind" : "IdRef",                             "name" : "'Sampled Image'" },
2948        { "kind" : "IdRef",                             "name" : "'Coordinate'" },
2949        { "kind" : "IdRef",                             "name" : "'Component'" },
2950        { "kind" : "ImageOperands", "quantifier" : "?" }
2951      ],
2952      "capabilities" : [ "SparseResidency" ]
2953    },
2954    {
2955      "opname" : "OpImageSparseDrefGather",
2956      "opcode" : 315,
2957      "operands" : [
2958        { "kind" : "IdResultType" },
2959        { "kind" : "IdResult" },
2960        { "kind" : "IdRef",                             "name" : "'Sampled Image'" },
2961        { "kind" : "IdRef",                             "name" : "'Coordinate'" },
2962        { "kind" : "IdRef",                             "name" : "'D~ref~'" },
2963        { "kind" : "ImageOperands", "quantifier" : "?" }
2964      ],
2965      "capabilities" : [ "SparseResidency" ]
2966    },
2967    {
2968      "opname" : "OpImageSparseTexelsResident",
2969      "opcode" : 316,
2970      "operands" : [
2971        { "kind" : "IdResultType" },
2972        { "kind" : "IdResult" },
2973        { "kind" : "IdRef",        "name" : "'Resident Code'" }
2974      ],
2975      "capabilities" : [ "SparseResidency" ]
2976    },
2977    {
2978      "opname" : "OpNoLine",
2979      "opcode" : 317
2980    },
2981    {
2982      "opname" : "OpAtomicFlagTestAndSet",
2983      "opcode" : 318,
2984      "operands" : [
2985        { "kind" : "IdResultType" },
2986        { "kind" : "IdResult" },
2987        { "kind" : "IdRef",             "name" : "'Pointer'" },
2988        { "kind" : "IdScope",           "name" : "'Scope'" },
2989        { "kind" : "IdMemorySemantics", "name" : "'Semantics'" }
2990      ],
2991      "capabilities" : [ "Kernel" ]
2992    },
2993    {
2994      "opname" : "OpAtomicFlagClear",
2995      "opcode" : 319,
2996      "operands" : [
2997        { "kind" : "IdRef",             "name" : "'Pointer'" },
2998        { "kind" : "IdScope",           "name" : "'Scope'" },
2999        { "kind" : "IdMemorySemantics", "name" : "'Semantics'" }
3000      ],
3001      "capabilities" : [ "Kernel" ]
3002    },
3003    {
3004      "opname" : "OpImageSparseRead",
3005      "opcode" : 320,
3006      "operands" : [
3007        { "kind" : "IdResultType" },
3008        { "kind" : "IdResult" },
3009        { "kind" : "IdRef",                             "name" : "'Image'" },
3010        { "kind" : "IdRef",                             "name" : "'Coordinate'" },
3011        { "kind" : "ImageOperands", "quantifier" : "?" }
3012      ],
3013      "capabilities" : [ "SparseResidency" ]
3014    },
3015    {
3016      "opname" : "OpSizeOf",
3017      "opcode" : 321,
3018      "operands" : [
3019        { "kind" : "IdResultType" },
3020        { "kind" : "IdResult" },
3021        { "kind" : "IdRef",        "name" : "'Pointer'" }
3022      ],
3023      "capabilities" : [ "Addresses" ]
3024    },
3025    {
3026      "opname" : "OpTypePipeStorage",
3027      "opcode" : 322,
3028      "operands" : [
3029        { "kind" : "IdResult" }
3030      ],
3031      "capabilities" : [ "PipeStorage" ]
3032    },
3033    {
3034      "opname" : "OpConstantPipeStorage",
3035      "opcode" : 323,
3036      "operands" : [
3037        { "kind" : "IdResultType" },
3038        { "kind" : "IdResult" },
3039        { "kind" : "LiteralInteger", "name" : "'Packet Size'" },
3040        { "kind" : "LiteralInteger", "name" : "'Packet Alignment'" },
3041        { "kind" : "LiteralInteger", "name" : "'Capacity'" }
3042      ],
3043      "capabilities" : [ "PipeStorage" ]
3044    },
3045    {
3046      "opname" : "OpCreatePipeFromPipeStorage",
3047      "opcode" : 324,
3048      "operands" : [
3049        { "kind" : "IdResultType" },
3050        { "kind" : "IdResult" },
3051        { "kind" : "IdRef",        "name" : "'Pipe Storage'" }
3052      ],
3053      "capabilities" : [ "PipeStorage" ]
3054    },
3055    {
3056      "opname" : "OpGetKernelLocalSizeForSubgroupCount",
3057      "opcode" : 325,
3058      "operands" : [
3059        { "kind" : "IdResultType" },
3060        { "kind" : "IdResult" },
3061        { "kind" : "IdRef",        "name" : "'Subgroup Count'" },
3062        { "kind" : "IdRef",        "name" : "'Invoke'" },
3063        { "kind" : "IdRef",        "name" : "'Param'" },
3064        { "kind" : "IdRef",        "name" : "'Param Size'" },
3065        { "kind" : "IdRef",        "name" : "'Param Align'" }
3066      ],
3067      "capabilities" : [ "SubgroupDispatch" ]
3068    },
3069    {
3070      "opname" : "OpGetKernelMaxNumSubgroups",
3071      "opcode" : 326,
3072      "operands" : [
3073        { "kind" : "IdResultType" },
3074        { "kind" : "IdResult" },
3075        { "kind" : "IdRef",        "name" : "'Invoke'" },
3076        { "kind" : "IdRef",        "name" : "'Param'" },
3077        { "kind" : "IdRef",        "name" : "'Param Size'" },
3078        { "kind" : "IdRef",        "name" : "'Param Align'" }
3079      ],
3080      "capabilities" : [ "SubgroupDispatch" ]
3081    },
3082    {
3083      "opname" : "OpTypeNamedBarrier",
3084      "opcode" : 327,
3085      "operands" : [
3086        { "kind" : "IdResult" }
3087      ],
3088      "capabilities" : [ "NamedBarrier" ]
3089    },
3090    {
3091      "opname" : "OpNamedBarrierInitialize",
3092      "opcode" : 328,
3093      "operands" : [
3094        { "kind" : "IdResultType" },
3095        { "kind" : "IdResult" },
3096        { "kind" : "IdRef",        "name" : "'Subgroup Count'" }
3097      ],
3098      "capabilities" : [ "NamedBarrier" ]
3099    },
3100    {
3101      "opname" : "OpMemoryNamedBarrier",
3102      "opcode" : 329,
3103      "operands" : [
3104        { "kind" : "IdRef",             "name" : "'Named Barrier'" },
3105        { "kind" : "IdScope",           "name" : "'Memory'" },
3106        { "kind" : "IdMemorySemantics", "name" : "'Semantics'" }
3107      ],
3108      "capabilities" : [ "NamedBarrier" ]
3109    },
3110    {
3111      "opname" : "OpModuleProcessed",
3112      "opcode" : 330,
3113      "operands" : [
3114        { "kind" : "LiteralString", "name" : "'Process'" }
3115      ]
3116    },
3117    {
3118      "opname" : "OpExecutionModeId",
3119      "opcode" : 331,
3120      "operands" : [
3121        { "kind" : "IdRef",           "name" : "'Entry Point'" },
3122        { "kind" : "ExecutionMode",   "name" : "'Mode'" }
3123      ]
3124    },
3125    {
3126      "opname" : "OpDecorateId",
3127      "opcode" : 332,
3128      "operands" : [
3129        { "kind" : "IdRef",      "name" : "'Target'" },
3130        { "kind" : "Decoration" }
3131      ]
3132    },
3133    {
3134      "opname" : "OpSubgroupBallotKHR",
3135      "opcode" : 4421,
3136      "operands" : [
3137        { "kind" : "IdResultType" },
3138        { "kind" : "IdResult" },
3139        { "kind" : "IdRef", "name" : "'Predicate'" }
3140      ],
3141      "capabilities" : [ "SubgroupBallotKHR" ]
3142    },
3143    {
3144      "opname" : "OpSubgroupFirstInvocationKHR",
3145      "opcode" : 4422,
3146      "operands" : [
3147        { "kind" : "IdResultType" },
3148        { "kind" : "IdResult" },
3149        { "kind" : "IdRef", "name" : "'Value'" }
3150      ],
3151      "capabilities" : [ "SubgroupBallotKHR" ]
3152    },
3153    {
3154      "opname" : "OpSubgroupAllKHR",
3155      "opcode" : 4428,
3156      "operands" : [
3157        { "kind" : "IdResultType" },
3158        { "kind" : "IdResult" },
3159        { "kind" : "IdRef", "name" : "'Predicate'" }
3160      ],
3161      "capabilities" : [ "SubgroupVoteKHR" ]
3162    },
3163    {
3164      "opname" : "OpSubgroupAnyKHR",
3165      "opcode" : 4429,
3166      "operands" : [
3167        { "kind" : "IdResultType" },
3168        { "kind" : "IdResult" },
3169        { "kind" : "IdRef", "name" : "'Predicate'" }
3170      ],
3171      "capabilities" : [ "SubgroupVoteKHR" ]
3172    },
3173    {
3174      "opname" : "OpSubgroupAllEqualKHR",
3175      "opcode" : 4430,
3176      "operands" : [
3177        { "kind" : "IdResultType" },
3178        { "kind" : "IdResult" },
3179        { "kind" : "IdRef", "name" : "'Predicate'" }
3180      ],
3181      "capabilities" : [ "SubgroupVoteKHR" ]
3182    },
3183    {
3184      "opname" : "OpSubgroupReadInvocationKHR",
3185      "opcode" : 4432,
3186      "operands" : [
3187        { "kind" : "IdResultType" },
3188        { "kind" : "IdResult" },
3189        { "kind" : "IdRef", "name" : "'Value'" },
3190        { "kind" : "IdRef", "name" : "'Index'" }
3191      ],
3192      "capabilities" : [ "SubgroupBallotKHR" ]
3193    },
3194    {
3195      "opname" : "OpGroupIAddNonUniformAMD",
3196      "opcode" : 5000,
3197      "operands" : [
3198        { "kind" : "IdResultType" },
3199        { "kind" : "IdResult" },
3200        { "kind" : "IdScope",        "name" : "'Execution'" },
3201        { "kind" : "GroupOperation", "name" : "'Operation'" },
3202        { "kind" : "IdRef",          "name" : "'X'" }
3203      ],
3204      "capabilities" : [ "Groups" ]
3205    },
3206    {
3207      "opname" : "OpGroupFAddNonUniformAMD",
3208      "opcode" : 5001,
3209      "operands" : [
3210        { "kind" : "IdResultType" },
3211        { "kind" : "IdResult" },
3212        { "kind" : "IdScope",        "name" : "'Execution'" },
3213        { "kind" : "GroupOperation", "name" : "'Operation'" },
3214        { "kind" : "IdRef",          "name" : "'X'" }
3215      ],
3216      "capabilities" : [ "Groups" ]
3217    },
3218    {
3219      "opname" : "OpGroupFMinNonUniformAMD",
3220      "opcode" : 5002,
3221      "operands" : [
3222        { "kind" : "IdResultType" },
3223        { "kind" : "IdResult" },
3224        { "kind" : "IdScope",        "name" : "'Execution'" },
3225        { "kind" : "GroupOperation", "name" : "'Operation'" },
3226        { "kind" : "IdRef",          "name" : "'X'" }
3227      ],
3228      "capabilities" : [ "Groups" ]
3229    },
3230    {
3231      "opname" : "OpGroupUMinNonUniformAMD",
3232      "opcode" : 5003,
3233      "operands" : [
3234        { "kind" : "IdResultType" },
3235        { "kind" : "IdResult" },
3236        { "kind" : "IdScope",        "name" : "'Execution'" },
3237        { "kind" : "GroupOperation", "name" : "'Operation'" },
3238        { "kind" : "IdRef",          "name" : "'X'" }
3239      ],
3240      "capabilities" : [ "Groups" ]
3241    },
3242    {
3243      "opname" : "OpGroupSMinNonUniformAMD",
3244      "opcode" : 5004,
3245      "operands" : [
3246        { "kind" : "IdResultType" },
3247        { "kind" : "IdResult" },
3248        { "kind" : "IdScope",        "name" : "'Execution'" },
3249        { "kind" : "GroupOperation", "name" : "'Operation'" },
3250        { "kind" : "IdRef",          "name" : "'X'" }
3251      ],
3252      "capabilities" : [ "Groups" ]
3253    },
3254    {
3255      "opname" : "OpGroupFMaxNonUniformAMD",
3256      "opcode" : 5005,
3257      "operands" : [
3258        { "kind" : "IdResultType" },
3259        { "kind" : "IdResult" },
3260        { "kind" : "IdScope",        "name" : "'Execution'" },
3261        { "kind" : "GroupOperation", "name" : "'Operation'" },
3262        { "kind" : "IdRef",          "name" : "'X'" }
3263      ],
3264      "capabilities" : [ "Groups" ]
3265    },
3266    {
3267      "opname" : "OpGroupUMaxNonUniformAMD",
3268      "opcode" : 5006,
3269      "operands" : [
3270        { "kind" : "IdResultType" },
3271        { "kind" : "IdResult" },
3272        { "kind" : "IdScope",        "name" : "'Execution'" },
3273        { "kind" : "GroupOperation", "name" : "'Operation'" },
3274        { "kind" : "IdRef",          "name" : "'X'" }
3275      ],
3276      "capabilities" : [ "Groups" ]
3277    },
3278    {
3279      "opname" : "OpGroupSMaxNonUniformAMD",
3280      "opcode" : 5007,
3281      "operands" : [
3282        { "kind" : "IdResultType" },
3283        { "kind" : "IdResult" },
3284        { "kind" : "IdScope",        "name" : "'Execution'" },
3285        { "kind" : "GroupOperation", "name" : "'Operation'" },
3286        { "kind" : "IdRef",          "name" : "'X'" }
3287      ],
3288      "capabilities" : [ "Groups" ]
3289    },
3290    {
3291      "opname" : "OpFragmentMaskFetchAMD",
3292      "opcode" : 5011,
3293      "operands" : [
3294        { "kind" : "IdResultType" },
3295        { "kind" : "IdResult" },
3296        { "kind" : "IdRef", "name" : "'Image'" },
3297        { "kind" : "IdRef", "name" : "'Coordinate'" }
3298      ],
3299      "capabilities" : [ "FragmentMaskAMD" ]
3300    },
3301    {
3302      "opname" : "OpFragmentFetchAMD",
3303      "opcode" : 5012,
3304      "operands" : [
3305        { "kind" : "IdResultType" },
3306        { "kind" : "IdResult" },
3307        { "kind" : "IdRef", "name" : "'Image'" },
3308        { "kind" : "IdRef", "name" : "'Coordinate'" },
3309        { "kind" : "IdRef", "name" : "'Fragment Index'" }
3310      ],
3311      "capabilities" : [ "FragmentMaskAMD" ]
3312    },
3313    {
3314      "opname" : "OpSubgroupShuffleINTEL",
3315      "opcode" : 5571,
3316      "operands" : [
3317        { "kind" : "IdResultType" },
3318        { "kind" : "IdResult" },
3319        { "kind" : "IdRef", "name" : "'Data'" },
3320        { "kind" : "IdRef", "name" : "'InvocationId'" }
3321      ],
3322      "capabilities" : [ "SubgroupShuffleINTEL" ]
3323    },
3324    {
3325      "opname" : "OpSubgroupShuffleDownINTEL",
3326      "opcode" : 5572,
3327      "operands" : [
3328        { "kind" : "IdResultType" },
3329        { "kind" : "IdResult" },
3330        { "kind" : "IdRef", "name" : "'Current'" },
3331        { "kind" : "IdRef", "name" : "'Next'" },
3332        { "kind" : "IdRef", "name" : "'Delta'" }
3333      ],
3334      "capabilities" : [ "SubgroupShuffleINTEL" ]
3335    },
3336    {
3337      "opname" : "OpSubgroupShuffleUpINTEL",
3338      "opcode" : 5573,
3339      "operands" : [
3340        { "kind" : "IdResultType" },
3341        { "kind" : "IdResult" },
3342        { "kind" : "IdRef", "name" : "'Previous'" },
3343        { "kind" : "IdRef", "name" : "'Current'" },
3344        { "kind" : "IdRef", "name" : "'Delta'" }
3345      ],
3346      "capabilities" : [ "SubgroupShuffleINTEL" ]
3347    },
3348    {
3349      "opname" : "OpSubgroupShuffleXorINTEL",
3350      "opcode" : 5574,
3351      "operands" : [
3352        { "kind" : "IdResultType" },
3353        { "kind" : "IdResult" },
3354        { "kind" : "IdRef", "name" : "'Data'" },
3355        { "kind" : "IdRef", "name" : "'Value'" }
3356      ],
3357      "capabilities" : [ "SubgroupShuffleINTEL" ]
3358    },
3359    {
3360      "opname" : "OpSubgroupBlockReadINTEL",
3361      "opcode" : 5575,
3362      "operands" : [
3363        { "kind" : "IdResultType" },
3364        { "kind" : "IdResult" },
3365        { "kind" : "IdRef", "name" : "'Ptr'" }
3366      ],
3367      "capabilities" : [ "SubgroupBufferBlockIOINTEL" ]
3368    },
3369    {
3370      "opname" : "OpSubgroupBlockWriteINTEL",
3371      "opcode" : 5576,
3372      "operands" : [
3373        { "kind" : "IdRef", "name" : "'Ptr'" },
3374        { "kind" : "IdRef", "name" : "'Data'" }
3375      ],
3376      "capabilities" : [ "SubgroupBufferBlockIOINTEL" ]
3377    },
3378    {
3379      "opname" : "OpSubgroupImageBlockReadINTEL",
3380      "opcode" : 5577,
3381      "operands" : [
3382        { "kind" : "IdResultType" },
3383        { "kind" : "IdResult" },
3384        { "kind" : "IdRef", "name" : "'Image'" },
3385        { "kind" : "IdRef", "name" : "'Coordinate'" }
3386      ],
3387      "capabilities" : [ "SubgroupImageBlockIOINTEL" ]
3388    },
3389    {
3390      "opname" : "OpSubgroupImageBlockWriteINTEL",
3391      "opcode" : 5578,
3392      "operands" : [
3393        { "kind" : "IdRef", "name" : "'Image'" },
3394        { "kind" : "IdRef", "name" : "'Coordinate'" },
3395        { "kind" : "IdRef", "name" : "'Data'" }
3396      ],
3397      "capabilities" : [ "SubgroupImageBlockIOINTEL" ]
3398    },
3399    {
3400      "opname" : "OpDecorateStringGOOGLE",
3401      "opcode" : 5632,
3402      "operands" : [
3403        { "kind" : "IdRef",         "name" : "'Target'" },
3404        { "kind" : "Decoration" }
3405      ],
3406      "extensions" : [ "SPV_GOOGLE_decorate_string" ]
3407    },
3408    {
3409      "opname" : "OpMemberDecorateStringGOOGLE",
3410      "opcode" : 5633,
3411      "operands" : [
3412        { "kind" : "IdRef",          "name" : "'Struct Type'" },
3413        { "kind" : "LiteralInteger", "name" : "'Member'" },
3414        { "kind" : "Decoration" }
3415      ],
3416      "extensions" : [ "SPV_GOOGLE_decorate_string" ]
3417    }
3418  ],
3419  "operand_kinds" : [
3420    {
3421      "category" : "BitEnum",
3422      "kind" : "ImageOperands",
3423      "enumerants" : [
3424        {
3425          "enumerant" : "None",
3426          "value" : "0x0000"
3427        },
3428        {
3429          "enumerant" : "Bias",
3430          "value" : "0x0001",
3431          "capabilities" : [ "Shader" ],
3432          "parameters" : [
3433            { "kind" : "IdRef" }
3434          ]
3435        },
3436        {
3437          "enumerant" : "Lod",
3438          "value" : "0x0002",
3439          "parameters" : [
3440            { "kind" : "IdRef" }
3441          ]
3442        },
3443        {
3444          "enumerant" : "Grad",
3445          "value" : "0x0004",
3446          "parameters" : [
3447            { "kind" : "IdRef" },
3448            { "kind" : "IdRef" }
3449          ]
3450        },
3451        {
3452          "enumerant" : "ConstOffset",
3453          "value" : "0x0008",
3454          "parameters" : [
3455            { "kind" : "IdRef" }
3456          ]
3457        },
3458        {
3459          "enumerant" : "Offset",
3460          "value" : "0x0010",
3461          "capabilities" : [ "ImageGatherExtended" ],
3462          "parameters" : [
3463            { "kind" : "IdRef" }
3464          ]
3465        },
3466        {
3467          "enumerant" : "ConstOffsets",
3468          "value" : "0x0020",
3469          "parameters" : [
3470            { "kind" : "IdRef" }
3471          ]
3472        },
3473        {
3474          "enumerant" : "Sample",
3475          "value" : "0x0040",
3476          "parameters" : [
3477            { "kind" : "IdRef" }
3478          ]
3479        },
3480        {
3481          "enumerant" : "MinLod",
3482          "value" : "0x0080",
3483          "capabilities" : [ "MinLod" ],
3484          "parameters" : [
3485            { "kind" : "IdRef" }
3486          ]
3487        }
3488      ]
3489    },
3490    {
3491      "category" : "BitEnum",
3492      "kind" : "FPFastMathMode",
3493      "enumerants" : [
3494        {
3495          "enumerant" : "None",
3496          "value" : "0x0000"
3497        },
3498        {
3499          "enumerant" : "NotNaN",
3500          "value" : "0x0001",
3501          "capabilities" : [ "Kernel" ]
3502        },
3503        {
3504          "enumerant" : "NotInf",
3505          "value" : "0x0002",
3506          "capabilities" : [ "Kernel" ]
3507        },
3508        {
3509          "enumerant" : "NSZ",
3510          "value" : "0x0004",
3511          "capabilities" : [ "Kernel" ]
3512        },
3513        {
3514          "enumerant" : "AllowRecip",
3515          "value" : "0x0008",
3516          "capabilities" : [ "Kernel" ]
3517        },
3518        {
3519          "enumerant" : "Fast",
3520          "value" : "0x0010",
3521          "capabilities" : [ "Kernel" ]
3522        }
3523      ]
3524    },
3525    {
3526      "category" : "BitEnum",
3527      "kind" : "SelectionControl",
3528      "enumerants" : [
3529        {
3530          "enumerant" : "None",
3531          "value" : "0x0000"
3532        },
3533        {
3534          "enumerant" : "Flatten",
3535          "value" : "0x0001"
3536        },
3537        {
3538          "enumerant" : "DontFlatten",
3539          "value" : "0x0002"
3540        }
3541      ]
3542    },
3543    {
3544      "category" : "BitEnum",
3545      "kind" : "LoopControl",
3546      "enumerants" : [
3547        {
3548          "enumerant" : "None",
3549          "value" : "0x0000"
3550        },
3551        {
3552          "enumerant" : "Unroll",
3553          "value" : "0x0001"
3554        },
3555        {
3556          "enumerant" : "DontUnroll",
3557          "value" : "0x0002"
3558        },
3559        {
3560          "enumerant" : "DependencyInfinite",
3561          "value" : "0x0004"
3562        },
3563        {
3564          "enumerant" : "DependencyLength",
3565          "value" : "0x0008",
3566          "parameters" : [
3567            { "kind" : "LiteralInteger" }
3568          ]
3569
3570        }
3571      ]
3572    },
3573    {
3574      "category" : "BitEnum",
3575      "kind" : "FunctionControl",
3576      "enumerants" : [
3577        {
3578          "enumerant" : "None",
3579          "value" : "0x0000"
3580        },
3581        {
3582          "enumerant" : "Inline",
3583          "value" : "0x0001"
3584        },
3585        {
3586          "enumerant" : "DontInline",
3587          "value" : "0x0002"
3588        },
3589        {
3590          "enumerant" : "Pure",
3591          "value" : "0x0004"
3592        },
3593        {
3594          "enumerant" : "Const",
3595          "value" : "0x0008"
3596        }
3597      ]
3598    },
3599    {
3600      "category" : "BitEnum",
3601      "kind" : "MemorySemantics",
3602      "enumerants" : [
3603        {
3604          "enumerant" : "Relaxed",
3605          "value" : "0x0000"
3606        },
3607        {
3608          "enumerant" : "None",
3609          "value" : "0x0000"
3610        },
3611        {
3612          "enumerant" : "Acquire",
3613          "value" : "0x0002"
3614        },
3615        {
3616          "enumerant" : "Release",
3617          "value" : "0x0004"
3618        },
3619        {
3620          "enumerant" : "AcquireRelease",
3621          "value" : "0x0008"
3622        },
3623        {
3624          "enumerant" : "SequentiallyConsistent",
3625          "value" : "0x0010"
3626        },
3627        {
3628          "enumerant" : "UniformMemory",
3629          "value" : "0x0040",
3630          "capabilities" : [ "Shader" ]
3631        },
3632        {
3633          "enumerant" : "SubgroupMemory",
3634          "value" : "0x0080"
3635        },
3636        {
3637          "enumerant" : "WorkgroupMemory",
3638          "value" : "0x0100"
3639        },
3640        {
3641          "enumerant" : "CrossWorkgroupMemory",
3642          "value" : "0x0200"
3643        },
3644        {
3645          "enumerant" : "AtomicCounterMemory",
3646          "value" : "0x0400",
3647          "capabilities" : [ "AtomicStorage" ]
3648        },
3649        {
3650          "enumerant" : "ImageMemory",
3651          "value" : "0x0800"
3652        }
3653      ]
3654    },
3655    {
3656      "category" : "BitEnum",
3657      "kind" : "MemoryAccess",
3658      "enumerants" : [
3659        {
3660          "enumerant" : "None",
3661          "value" : "0x0000"
3662        },
3663        {
3664          "enumerant" : "Volatile",
3665          "value" : "0x0001"
3666        },
3667        {
3668          "enumerant" : "Aligned",
3669          "value" : "0x0002",
3670          "parameters" : [
3671            { "kind" : "LiteralInteger" }
3672          ]
3673        },
3674        {
3675          "enumerant" : "Nontemporal",
3676          "value" : "0x0004"
3677        }
3678      ]
3679    },
3680    {
3681      "category" : "BitEnum",
3682      "kind" : "KernelProfilingInfo",
3683      "enumerants" : [
3684        {
3685          "enumerant" : "None",
3686          "value" : "0x0000"
3687        },
3688        {
3689          "enumerant" : "CmdExecTime",
3690          "value" : "0x0001",
3691          "capabilities" : [ "Kernel" ]
3692        }
3693      ]
3694    },
3695    {
3696      "category" : "ValueEnum",
3697      "kind" : "SourceLanguage",
3698      "enumerants" : [
3699        {
3700          "enumerant" : "Unknown",
3701          "value" : 0
3702        },
3703        {
3704          "enumerant" : "ESSL",
3705          "value" : 1
3706        },
3707        {
3708          "enumerant" : "GLSL",
3709          "value" : 2
3710        },
3711        {
3712          "enumerant" : "OpenCL_C",
3713          "value" : 3
3714        },
3715        {
3716          "enumerant" : "OpenCL_CPP",
3717          "value" : 4
3718        },
3719        {
3720          "enumerant" : "HLSL",
3721          "value" : 5
3722        }
3723      ]
3724    },
3725    {
3726      "category" : "ValueEnum",
3727      "kind" : "ExecutionModel",
3728      "enumerants" : [
3729        {
3730          "enumerant" : "Vertex",
3731          "value" : 0,
3732          "capabilities" : [ "Shader" ]
3733        },
3734        {
3735          "enumerant" : "TessellationControl",
3736          "value" : 1,
3737          "capabilities" : [ "Tessellation" ]
3738        },
3739        {
3740          "enumerant" : "TessellationEvaluation",
3741          "value" : 2,
3742          "capabilities" : [ "Tessellation" ]
3743        },
3744        {
3745          "enumerant" : "Geometry",
3746          "value" : 3,
3747          "capabilities" : [ "Geometry" ]
3748        },
3749        {
3750          "enumerant" : "Fragment",
3751          "value" : 4,
3752          "capabilities" : [ "Shader" ]
3753        },
3754        {
3755          "enumerant" : "GLCompute",
3756          "value" : 5,
3757          "capabilities" : [ "Shader" ]
3758        },
3759        {
3760          "enumerant" : "Kernel",
3761          "value" : 6,
3762          "capabilities" : [ "Kernel" ]
3763        }
3764      ]
3765    },
3766    {
3767      "category" : "ValueEnum",
3768      "kind" : "AddressingModel",
3769      "enumerants" : [
3770        {
3771          "enumerant" : "Logical",
3772          "value" : 0
3773        },
3774        {
3775          "enumerant" : "Physical32",
3776          "value" : 1,
3777          "capabilities" : [ "Addresses" ]
3778        },
3779        {
3780          "enumerant" : "Physical64",
3781          "value" : 2,
3782          "capabilities" : [ "Addresses" ]
3783        }
3784      ]
3785    },
3786    {
3787      "category" : "ValueEnum",
3788      "kind" : "MemoryModel",
3789      "enumerants" : [
3790        {
3791          "enumerant" : "Simple",
3792          "value" : 0,
3793          "capabilities" : [ "Shader" ]
3794        },
3795        {
3796          "enumerant" : "GLSL450",
3797          "value" : 1,
3798          "capabilities" : [ "Shader" ]
3799        },
3800        {
3801          "enumerant" : "OpenCL",
3802          "value" : 2,
3803          "capabilities" : [ "Kernel" ]
3804        }
3805      ]
3806    },
3807    {
3808      "category" : "ValueEnum",
3809      "kind" : "ExecutionMode",
3810      "enumerants" : [
3811        {
3812          "enumerant" : "Invocations",
3813          "value" : 0,
3814          "capabilities" : [ "Geometry" ],
3815          "parameters" : [
3816            { "kind" : "LiteralInteger", "name" : "'Number of <<Invocation,invocations>>'" }
3817          ]
3818        },
3819        {
3820          "enumerant" : "SpacingEqual",
3821          "value" : 1,
3822          "capabilities" : [ "Tessellation" ]
3823        },
3824        {
3825          "enumerant" : "SpacingFractionalEven",
3826          "value" : 2,
3827          "capabilities" : [ "Tessellation" ]
3828        },
3829        {
3830          "enumerant" : "SpacingFractionalOdd",
3831          "value" : 3,
3832          "capabilities" : [ "Tessellation" ]
3833        },
3834        {
3835          "enumerant" : "VertexOrderCw",
3836          "value" : 4,
3837          "capabilities" : [ "Tessellation" ]
3838        },
3839        {
3840          "enumerant" : "VertexOrderCcw",
3841          "value" : 5,
3842          "capabilities" : [ "Tessellation" ]
3843        },
3844        {
3845          "enumerant" : "PixelCenterInteger",
3846          "value" : 6,
3847          "capabilities" : [ "Shader" ]
3848        },
3849        {
3850          "enumerant" : "OriginUpperLeft",
3851          "value" : 7,
3852          "capabilities" : [ "Shader" ]
3853        },
3854        {
3855          "enumerant" : "OriginLowerLeft",
3856          "value" : 8,
3857          "capabilities" : [ "Shader" ]
3858        },
3859        {
3860          "enumerant" : "EarlyFragmentTests",
3861          "value" : 9,
3862          "capabilities" : [ "Shader" ]
3863        },
3864        {
3865          "enumerant" : "PointMode",
3866          "value" : 10,
3867          "capabilities" : [ "Tessellation" ]
3868        },
3869        {
3870          "enumerant" : "Xfb",
3871          "value" : 11,
3872          "capabilities" : [ "TransformFeedback" ]
3873        },
3874        {
3875          "enumerant" : "DepthReplacing",
3876          "value" : 12,
3877          "capabilities" : [ "Shader" ]
3878        },
3879        {
3880          "enumerant" : "DepthGreater",
3881          "value" : 14,
3882          "capabilities" : [ "Shader" ]
3883        },
3884        {
3885          "enumerant" : "DepthLess",
3886          "value" : 15,
3887          "capabilities" : [ "Shader" ]
3888        },
3889        {
3890          "enumerant" : "DepthUnchanged",
3891          "value" : 16,
3892          "capabilities" : [ "Shader" ]
3893        },
3894        {
3895          "enumerant" : "LocalSize",
3896          "value" : 17,
3897          "parameters" : [
3898            { "kind" : "LiteralInteger", "name" : "'x size'" },
3899            { "kind" : "LiteralInteger", "name" : "'y size'" },
3900            { "kind" : "LiteralInteger", "name" : "'z size'" }
3901          ]
3902        },
3903        {
3904          "enumerant" : "LocalSizeHint",
3905          "value" : 18,
3906          "capabilities" : [ "Kernel" ],
3907          "parameters" : [
3908            { "kind" : "LiteralInteger", "name" : "'x size'" },
3909            { "kind" : "LiteralInteger", "name" : "'y size'" },
3910            { "kind" : "LiteralInteger", "name" : "'z size'" }
3911          ]
3912        },
3913        {
3914          "enumerant" : "InputPoints",
3915          "value" : 19,
3916          "capabilities" : [ "Geometry" ]
3917        },
3918        {
3919          "enumerant" : "InputLines",
3920          "value" : 20,
3921          "capabilities" : [ "Geometry" ]
3922        },
3923        {
3924          "enumerant" : "InputLinesAdjacency",
3925          "value" : 21,
3926          "capabilities" : [ "Geometry" ]
3927        },
3928        {
3929          "enumerant" : "Triangles",
3930          "value" : 22,
3931          "capabilities" : [ "Geometry", "Tessellation" ]
3932        },
3933        {
3934          "enumerant" : "InputTrianglesAdjacency",
3935          "value" : 23,
3936          "capabilities" : [ "Geometry" ]
3937        },
3938        {
3939          "enumerant" : "Quads",
3940          "value" : 24,
3941          "capabilities" : [ "Tessellation" ]
3942        },
3943        {
3944          "enumerant" : "Isolines",
3945          "value" : 25,
3946          "capabilities" : [ "Tessellation" ]
3947        },
3948        {
3949          "enumerant" : "OutputVertices",
3950          "value" : 26,
3951          "capabilities" : [ "Geometry", "Tessellation" ],
3952          "parameters" : [
3953            { "kind" : "LiteralInteger", "name" : "'Vertex count'" }
3954          ]
3955        },
3956        {
3957          "enumerant" : "OutputPoints",
3958          "value" : 27,
3959          "capabilities" : [ "Geometry" ]
3960        },
3961        {
3962          "enumerant" : "OutputLineStrip",
3963          "value" : 28,
3964          "capabilities" : [ "Geometry" ]
3965        },
3966        {
3967          "enumerant" : "OutputTriangleStrip",
3968          "value" : 29,
3969          "capabilities" : [ "Geometry" ]
3970        },
3971        {
3972          "enumerant" : "VecTypeHint",
3973          "value" : 30,
3974          "capabilities" : [ "Kernel" ],
3975          "parameters" : [
3976            { "kind" : "LiteralInteger", "name" : "'Vector type'" }
3977          ]
3978        },
3979        {
3980          "enumerant" : "ContractionOff",
3981          "value" : 31,
3982          "capabilities" : [ "Kernel" ]
3983        },
3984        {
3985          "enumerant" : "Initializer",
3986          "value" : 33,
3987          "capabilities" : [ "Kernel" ]
3988        },
3989        {
3990          "enumerant" : "Finalizer",
3991          "value" : 34,
3992          "capabilities" : [ "Kernel" ]
3993        },
3994        {
3995          "enumerant" : "SubgroupSize",
3996          "value" : 35,
3997          "capabilities" : [ "SubgroupDispatch" ],
3998          "parameters" : [
3999            { "kind" : "LiteralInteger", "name" : "'Subgroup Size'" }
4000          ]
4001        },
4002        {
4003          "enumerant" : "SubgroupsPerWorkgroup",
4004          "value" : 36,
4005          "capabilities" : [ "SubgroupDispatch" ],
4006          "parameters" : [
4007            { "kind" : "LiteralInteger", "name" : "'Subgroups Per Workgroup'" }
4008          ]
4009        },
4010        {
4011          "enumerant" : "SubgroupsPerWorkgroupId",
4012          "value" : 37,
4013          "capabilities" : [ "SubgroupDispatch" ],
4014          "parameters" : [
4015            { "kind" : "IdRef", "name" : "'Subgroups Per Workgroup'" }
4016          ]
4017        },
4018        {
4019          "enumerant" : "LocalSizeId",
4020          "value" : 38,
4021          "parameters" : [
4022            { "kind" : "IdRef", "name" : "'x size'" },
4023            { "kind" : "IdRef", "name" : "'y size'" },
4024            { "kind" : "IdRef", "name" : "'z size'" }
4025          ]
4026        },
4027        {
4028          "enumerant" : "LocalSizeHintId",
4029          "value" : 39,
4030          "capabilities" : [ "Kernel" ],
4031          "parameters" : [
4032            { "kind" : "IdRef", "name" : "'Local Size Hint'" }
4033          ]
4034        },
4035        {
4036          "enumerant" : "PostDepthCoverage",
4037          "value" : 4446,
4038          "capabilities" : [ "SampleMaskPostDepthCoverage" ]
4039        },
4040        {
4041          "enumerant" : "StencilRefReplacingEXT",
4042          "value" : 5027,
4043          "capabilities" : [ "StencilExportEXT" ]
4044        }
4045      ]
4046    },
4047    {
4048      "category" : "ValueEnum",
4049      "kind" : "StorageClass",
4050      "enumerants" : [
4051        {
4052          "enumerant" : "UniformConstant",
4053          "value" : 0
4054        },
4055        {
4056          "enumerant" : "Input",
4057          "value" : 1
4058        },
4059        {
4060          "enumerant" : "Uniform",
4061          "value" : 2,
4062          "capabilities" : [ "Shader" ]
4063        },
4064        {
4065          "enumerant" : "Output",
4066          "value" : 3,
4067          "capabilities" : [ "Shader" ]
4068        },
4069        {
4070          "enumerant" : "Workgroup",
4071          "value" : 4
4072        },
4073        {
4074          "enumerant" : "CrossWorkgroup",
4075          "value" : 5
4076        },
4077        {
4078          "enumerant" : "Private",
4079          "value" : 6,
4080          "capabilities" : [ "Shader" ]
4081        },
4082        {
4083          "enumerant" : "Function",
4084          "value" : 7
4085        },
4086        {
4087          "enumerant" : "Generic",
4088          "value" : 8,
4089          "capabilities" : [ "GenericPointer" ]
4090        },
4091        {
4092          "enumerant" : "PushConstant",
4093          "value" : 9,
4094          "capabilities" : [ "Shader" ]
4095        },
4096        {
4097          "enumerant" : "AtomicCounter",
4098          "value" : 10,
4099          "capabilities" : [ "AtomicStorage" ]
4100        },
4101        {
4102          "enumerant" : "Image",
4103          "value" : 11
4104        },
4105        {
4106          "enumerant" : "StorageBuffer",
4107          "value" : 12,
4108          "extensions" : [
4109            "SPV_KHR_storage_buffer_storage_class",
4110            "SPV_KHR_variable_pointers"
4111          ],
4112          "capabilities" : [ "Shader" ]
4113        }
4114      ]
4115    },
4116    {
4117      "category" : "ValueEnum",
4118      "kind" : "Dim",
4119      "enumerants" : [
4120        {
4121          "enumerant" : "1D",
4122          "value" : 0,
4123          "capabilities" : [ "Sampled1D" ]
4124        },
4125        {
4126          "enumerant" : "2D",
4127          "value" : 1
4128        },
4129        {
4130          "enumerant" : "3D",
4131          "value" : 2
4132        },
4133        {
4134          "enumerant" : "Cube",
4135          "value" : 3,
4136          "capabilities" : [ "Shader" ]
4137        },
4138        {
4139          "enumerant" : "Rect",
4140          "value" : 4,
4141          "capabilities" : [ "SampledRect" ]
4142        },
4143        {
4144          "enumerant" : "Buffer",
4145          "value" : 5,
4146          "capabilities" : [ "SampledBuffer" ]
4147        },
4148        {
4149          "enumerant" : "SubpassData",
4150          "value" : 6,
4151          "capabilities" : [ "InputAttachment" ]
4152        }
4153      ]
4154    },
4155    {
4156      "category" : "ValueEnum",
4157      "kind" : "SamplerAddressingMode",
4158      "enumerants" : [
4159        {
4160          "enumerant" : "None",
4161          "value" : 0,
4162          "capabilities" : [ "Kernel" ]
4163        },
4164        {
4165          "enumerant" : "ClampToEdge",
4166          "value" : 1,
4167          "capabilities" : [ "Kernel" ]
4168        },
4169        {
4170          "enumerant" : "Clamp",
4171          "value" : 2,
4172          "capabilities" : [ "Kernel" ]
4173        },
4174        {
4175          "enumerant" : "Repeat",
4176          "value" : 3,
4177          "capabilities" : [ "Kernel" ]
4178        },
4179        {
4180          "enumerant" : "RepeatMirrored",
4181          "value" : 4,
4182          "capabilities" : [ "Kernel" ]
4183        }
4184      ]
4185    },
4186    {
4187      "category" : "ValueEnum",
4188      "kind" : "SamplerFilterMode",
4189      "enumerants" : [
4190        {
4191          "enumerant" : "Nearest",
4192          "value" : 0,
4193          "capabilities" : [ "Kernel" ]
4194        },
4195        {
4196          "enumerant" : "Linear",
4197          "value" : 1,
4198          "capabilities" : [ "Kernel" ]
4199        }
4200      ]
4201    },
4202    {
4203      "category" : "ValueEnum",
4204      "kind" : "ImageFormat",
4205      "enumerants" : [
4206        {
4207          "enumerant" : "Unknown",
4208          "value" : 0
4209        },
4210        {
4211          "enumerant" : "Rgba32f",
4212          "value" : 1,
4213          "capabilities" : [ "Shader" ]
4214        },
4215        {
4216          "enumerant" : "Rgba16f",
4217          "value" : 2,
4218          "capabilities" : [ "Shader" ]
4219        },
4220        {
4221          "enumerant" : "R32f",
4222          "value" : 3,
4223          "capabilities" : [ "Shader" ]
4224        },
4225        {
4226          "enumerant" : "Rgba8",
4227          "value" : 4,
4228          "capabilities" : [ "Shader" ]
4229        },
4230        {
4231          "enumerant" : "Rgba8Snorm",
4232          "value" : 5,
4233          "capabilities" : [ "Shader" ]
4234        },
4235        {
4236          "enumerant" : "Rg32f",
4237          "value" : 6,
4238          "capabilities" : [ "StorageImageExtendedFormats" ]
4239        },
4240        {
4241          "enumerant" : "Rg16f",
4242          "value" : 7,
4243          "capabilities" : [ "StorageImageExtendedFormats" ]
4244        },
4245        {
4246          "enumerant" : "R11fG11fB10f",
4247          "value" : 8,
4248          "capabilities" : [ "StorageImageExtendedFormats" ]
4249        },
4250        {
4251          "enumerant" : "R16f",
4252          "value" : 9,
4253          "capabilities" : [ "StorageImageExtendedFormats" ]
4254        },
4255        {
4256          "enumerant" : "Rgba16",
4257          "value" : 10,
4258          "capabilities" : [ "StorageImageExtendedFormats" ]
4259        },
4260        {
4261          "enumerant" : "Rgb10A2",
4262          "value" : 11,
4263          "capabilities" : [ "StorageImageExtendedFormats" ]
4264        },
4265        {
4266          "enumerant" : "Rg16",
4267          "value" : 12,
4268          "capabilities" : [ "StorageImageExtendedFormats" ]
4269        },
4270        {
4271          "enumerant" : "Rg8",
4272          "value" : 13,
4273          "capabilities" : [ "StorageImageExtendedFormats" ]
4274        },
4275        {
4276          "enumerant" : "R16",
4277          "value" : 14,
4278          "capabilities" : [ "StorageImageExtendedFormats" ]
4279        },
4280        {
4281          "enumerant" : "R8",
4282          "value" : 15,
4283          "capabilities" : [ "StorageImageExtendedFormats" ]
4284        },
4285        {
4286          "enumerant" : "Rgba16Snorm",
4287          "value" : 16,
4288          "capabilities" : [ "StorageImageExtendedFormats" ]
4289        },
4290        {
4291          "enumerant" : "Rg16Snorm",
4292          "value" : 17,
4293          "capabilities" : [ "StorageImageExtendedFormats" ]
4294        },
4295        {
4296          "enumerant" : "Rg8Snorm",
4297          "value" : 18,
4298          "capabilities" : [ "StorageImageExtendedFormats" ]
4299        },
4300        {
4301          "enumerant" : "R16Snorm",
4302          "value" : 19,
4303          "capabilities" : [ "StorageImageExtendedFormats" ]
4304        },
4305        {
4306          "enumerant" : "R8Snorm",
4307          "value" : 20,
4308          "capabilities" : [ "StorageImageExtendedFormats" ]
4309        },
4310        {
4311          "enumerant" : "Rgba32i",
4312          "value" : 21,
4313          "capabilities" : [ "Shader" ]
4314        },
4315        {
4316          "enumerant" : "Rgba16i",
4317          "value" : 22,
4318          "capabilities" : [ "Shader" ]
4319        },
4320        {
4321          "enumerant" : "Rgba8i",
4322          "value" : 23,
4323          "capabilities" : [ "Shader" ]
4324        },
4325        {
4326          "enumerant" : "R32i",
4327          "value" : 24,
4328          "capabilities" : [ "Shader" ]
4329        },
4330        {
4331          "enumerant" : "Rg32i",
4332          "value" : 25,
4333          "capabilities" : [ "StorageImageExtendedFormats" ]
4334        },
4335        {
4336          "enumerant" : "Rg16i",
4337          "value" : 26,
4338          "capabilities" : [ "StorageImageExtendedFormats" ]
4339        },
4340        {
4341          "enumerant" : "Rg8i",
4342          "value" : 27,
4343          "capabilities" : [ "StorageImageExtendedFormats" ]
4344        },
4345        {
4346          "enumerant" : "R16i",
4347          "value" : 28,
4348          "capabilities" : [ "StorageImageExtendedFormats" ]
4349        },
4350        {
4351          "enumerant" : "R8i",
4352          "value" : 29,
4353          "capabilities" : [ "StorageImageExtendedFormats" ]
4354        },
4355        {
4356          "enumerant" : "Rgba32ui",
4357          "value" : 30,
4358          "capabilities" : [ "Shader" ]
4359        },
4360        {
4361          "enumerant" : "Rgba16ui",
4362          "value" : 31,
4363          "capabilities" : [ "Shader" ]
4364        },
4365        {
4366          "enumerant" : "Rgba8ui",
4367          "value" : 32,
4368          "capabilities" : [ "Shader" ]
4369        },
4370        {
4371          "enumerant" : "R32ui",
4372          "value" : 33,
4373          "capabilities" : [ "Shader" ]
4374        },
4375        {
4376          "enumerant" : "Rgb10a2ui",
4377          "value" : 34,
4378          "capabilities" : [ "StorageImageExtendedFormats" ]
4379        },
4380        {
4381          "enumerant" : "Rg32ui",
4382          "value" : 35,
4383          "capabilities" : [ "StorageImageExtendedFormats" ]
4384        },
4385        {
4386          "enumerant" : "Rg16ui",
4387          "value" : 36,
4388          "capabilities" : [ "StorageImageExtendedFormats" ]
4389        },
4390        {
4391          "enumerant" : "Rg8ui",
4392          "value" : 37,
4393          "capabilities" : [ "StorageImageExtendedFormats" ]
4394        },
4395        {
4396          "enumerant" : "R16ui",
4397          "value" : 38,
4398          "capabilities" : [ "StorageImageExtendedFormats" ]
4399        },
4400        {
4401          "enumerant" : "R8ui",
4402          "value" : 39,
4403          "capabilities" : [ "StorageImageExtendedFormats" ]
4404        }
4405      ]
4406    },
4407    {
4408      "category" : "ValueEnum",
4409      "kind" : "ImageChannelOrder",
4410      "enumerants" : [
4411        {
4412          "enumerant" : "R",
4413          "value" : 0,
4414          "capabilities" : [ "Kernel" ]
4415        },
4416        {
4417          "enumerant" : "A",
4418          "value" : 1,
4419          "capabilities" : [ "Kernel" ]
4420        },
4421        {
4422          "enumerant" : "RG",
4423          "value" : 2,
4424          "capabilities" : [ "Kernel" ]
4425        },
4426        {
4427          "enumerant" : "RA",
4428          "value" : 3,
4429          "capabilities" : [ "Kernel" ]
4430        },
4431        {
4432          "enumerant" : "RGB",
4433          "value" : 4,
4434          "capabilities" : [ "Kernel" ]
4435        },
4436        {
4437          "enumerant" : "RGBA",
4438          "value" : 5,
4439          "capabilities" : [ "Kernel" ]
4440        },
4441        {
4442          "enumerant" : "BGRA",
4443          "value" : 6,
4444          "capabilities" : [ "Kernel" ]
4445        },
4446        {
4447          "enumerant" : "ARGB",
4448          "value" : 7,
4449          "capabilities" : [ "Kernel" ]
4450        },
4451        {
4452          "enumerant" : "Intensity",
4453          "value" : 8,
4454          "capabilities" : [ "Kernel" ]
4455        },
4456        {
4457          "enumerant" : "Luminance",
4458          "value" : 9,
4459          "capabilities" : [ "Kernel" ]
4460        },
4461        {
4462          "enumerant" : "Rx",
4463          "value" : 10,
4464          "capabilities" : [ "Kernel" ]
4465        },
4466        {
4467          "enumerant" : "RGx",
4468          "value" : 11,
4469          "capabilities" : [ "Kernel" ]
4470        },
4471        {
4472          "enumerant" : "RGBx",
4473          "value" : 12,
4474          "capabilities" : [ "Kernel" ]
4475        },
4476        {
4477          "enumerant" : "Depth",
4478          "value" : 13,
4479          "capabilities" : [ "Kernel" ]
4480        },
4481        {
4482          "enumerant" : "DepthStencil",
4483          "value" : 14,
4484          "capabilities" : [ "Kernel" ]
4485        },
4486        {
4487          "enumerant" : "sRGB",
4488          "value" : 15,
4489          "capabilities" : [ "Kernel" ]
4490        },
4491        {
4492          "enumerant" : "sRGBx",
4493          "value" : 16,
4494          "capabilities" : [ "Kernel" ]
4495        },
4496        {
4497          "enumerant" : "sRGBA",
4498          "value" : 17,
4499          "capabilities" : [ "Kernel" ]
4500        },
4501        {
4502          "enumerant" : "sBGRA",
4503          "value" : 18,
4504          "capabilities" : [ "Kernel" ]
4505        },
4506        {
4507          "enumerant" : "ABGR",
4508          "value" : 19,
4509          "capabilities" : [ "Kernel" ]
4510        }
4511      ]
4512    },
4513    {
4514      "category" : "ValueEnum",
4515      "kind" : "ImageChannelDataType",
4516      "enumerants" : [
4517        {
4518          "enumerant" : "SnormInt8",
4519          "value" : 0,
4520          "capabilities" : [ "Kernel" ]
4521        },
4522        {
4523          "enumerant" : "SnormInt16",
4524          "value" : 1,
4525          "capabilities" : [ "Kernel" ]
4526        },
4527        {
4528          "enumerant" : "UnormInt8",
4529          "value" : 2,
4530          "capabilities" : [ "Kernel" ]
4531        },
4532        {
4533          "enumerant" : "UnormInt16",
4534          "value" : 3,
4535          "capabilities" : [ "Kernel" ]
4536        },
4537        {
4538          "enumerant" : "UnormShort565",
4539          "value" : 4,
4540          "capabilities" : [ "Kernel" ]
4541        },
4542        {
4543          "enumerant" : "UnormShort555",
4544          "value" : 5,
4545          "capabilities" : [ "Kernel" ]
4546        },
4547        {
4548          "enumerant" : "UnormInt101010",
4549          "value" : 6,
4550          "capabilities" : [ "Kernel" ]
4551        },
4552        {
4553          "enumerant" : "SignedInt8",
4554          "value" : 7,
4555          "capabilities" : [ "Kernel" ]
4556        },
4557        {
4558          "enumerant" : "SignedInt16",
4559          "value" : 8,
4560          "capabilities" : [ "Kernel" ]
4561        },
4562        {
4563          "enumerant" : "SignedInt32",
4564          "value" : 9,
4565          "capabilities" : [ "Kernel" ]
4566        },
4567        {
4568          "enumerant" : "UnsignedInt8",
4569          "value" : 10,
4570          "capabilities" : [ "Kernel" ]
4571        },
4572        {
4573          "enumerant" : "UnsignedInt16",
4574          "value" : 11,
4575          "capabilities" : [ "Kernel" ]
4576        },
4577        {
4578          "enumerant" : "UnsignedInt32",
4579          "value" : 12,
4580          "capabilities" : [ "Kernel" ]
4581        },
4582        {
4583          "enumerant" : "HalfFloat",
4584          "value" : 13,
4585          "capabilities" : [ "Kernel" ]
4586        },
4587        {
4588          "enumerant" : "Float",
4589          "value" : 14,
4590          "capabilities" : [ "Kernel" ]
4591        },
4592        {
4593          "enumerant" : "UnormInt24",
4594          "value" : 15,
4595          "capabilities" : [ "Kernel" ]
4596        },
4597        {
4598          "enumerant" : "UnormInt101010_2",
4599          "value" : 16,
4600          "capabilities" : [ "Kernel" ]
4601        }
4602      ]
4603    },
4604    {
4605      "category" : "ValueEnum",
4606      "kind" : "FPRoundingMode",
4607      "enumerants" : [
4608        {
4609          "enumerant" : "RTE",
4610          "value" : 0,
4611          "capabilities" : [
4612            "Kernel",
4613            "StorageUniformBufferBlock16",
4614            "StorageUniform16",
4615            "StoragePushConstant16",
4616            "StorageInputOutput16"
4617          ]
4618        },
4619        {
4620          "enumerant" : "RTZ",
4621          "value" : 1,
4622          "capabilities" : [
4623            "Kernel",
4624            "StorageUniformBufferBlock16",
4625            "StorageUniform16",
4626            "StoragePushConstant16",
4627            "StorageInputOutput16"
4628          ]
4629        },
4630        {
4631          "enumerant" : "RTP",
4632          "value" : 2,
4633          "capabilities" : [
4634            "Kernel",
4635            "StorageUniformBufferBlock16",
4636            "StorageUniform16",
4637            "StoragePushConstant16",
4638            "StorageInputOutput16"
4639          ]
4640        },
4641        {
4642          "enumerant" : "RTN",
4643          "value" : 3,
4644          "capabilities" : [
4645            "Kernel",
4646            "StorageUniformBufferBlock16",
4647            "StorageUniform16",
4648            "StoragePushConstant16",
4649            "StorageInputOutput16"
4650          ]
4651        }
4652      ]
4653    },
4654    {
4655      "category" : "ValueEnum",
4656      "kind" : "LinkageType",
4657      "enumerants" : [
4658        {
4659          "enumerant" : "Export",
4660          "value" : 0,
4661          "capabilities" : [ "Linkage" ]
4662        },
4663        {
4664          "enumerant" : "Import",
4665          "value" : 1,
4666          "capabilities" : [ "Linkage" ]
4667        }
4668      ]
4669    },
4670    {
4671      "category" : "ValueEnum",
4672      "kind" : "AccessQualifier",
4673      "enumerants" : [
4674        {
4675          "enumerant" : "ReadOnly",
4676          "value" : 0,
4677          "capabilities" : [ "Kernel" ]
4678        },
4679        {
4680          "enumerant" : "WriteOnly",
4681          "value" : 1,
4682          "capabilities" : [ "Kernel" ]
4683        },
4684        {
4685          "enumerant" : "ReadWrite",
4686          "value" : 2,
4687          "capabilities" : [ "Kernel" ]
4688        }
4689      ]
4690    },
4691    {
4692      "category" : "ValueEnum",
4693      "kind" : "FunctionParameterAttribute",
4694      "enumerants" : [
4695        {
4696          "enumerant" : "Zext",
4697          "value" : 0,
4698          "capabilities" : [ "Kernel" ]
4699        },
4700        {
4701          "enumerant" : "Sext",
4702          "value" : 1,
4703          "capabilities" : [ "Kernel" ]
4704        },
4705        {
4706          "enumerant" : "ByVal",
4707          "value" : 2,
4708          "capabilities" : [ "Kernel" ]
4709        },
4710        {
4711          "enumerant" : "Sret",
4712          "value" : 3,
4713          "capabilities" : [ "Kernel" ]
4714        },
4715        {
4716          "enumerant" : "NoAlias",
4717          "value" : 4,
4718          "capabilities" : [ "Kernel" ]
4719        },
4720        {
4721          "enumerant" : "NoCapture",
4722          "value" : 5,
4723          "capabilities" : [ "Kernel" ]
4724        },
4725        {
4726          "enumerant" : "NoWrite",
4727          "value" : 6,
4728          "capabilities" : [ "Kernel" ]
4729        },
4730        {
4731          "enumerant" : "NoReadWrite",
4732          "value" : 7,
4733          "capabilities" : [ "Kernel" ]
4734        }
4735      ]
4736    },
4737    {
4738      "category" : "ValueEnum",
4739      "kind" : "Decoration",
4740      "enumerants" : [
4741        {
4742          "enumerant" : "RelaxedPrecision",
4743          "value" : 0,
4744          "capabilities" : [ "Shader" ]
4745        },
4746        {
4747          "enumerant" : "SpecId",
4748          "value" : 1,
4749          "capabilities" : [ "Shader", "Kernel" ],
4750          "parameters" : [
4751            { "kind" : "LiteralInteger", "name" : "'Specialization Constant ID'" }
4752          ]
4753        },
4754        {
4755          "enumerant" : "Block",
4756          "value" : 2,
4757          "capabilities" : [ "Shader" ]
4758        },
4759        {
4760          "enumerant" : "BufferBlock",
4761          "value" : 3,
4762          "capabilities" : [ "Shader" ]
4763        },
4764        {
4765          "enumerant" : "RowMajor",
4766          "value" : 4,
4767          "capabilities" : [ "Matrix" ]
4768        },
4769        {
4770          "enumerant" : "ColMajor",
4771          "value" : 5,
4772          "capabilities" : [ "Matrix" ]
4773        },
4774        {
4775          "enumerant" : "ArrayStride",
4776          "value" : 6,
4777          "capabilities" : [ "Shader" ],
4778          "parameters" : [
4779            { "kind" : "LiteralInteger", "name" : "'Array Stride'" }
4780          ]
4781        },
4782        {
4783          "enumerant" : "MatrixStride",
4784          "value" : 7,
4785          "capabilities" : [ "Matrix" ],
4786          "parameters" : [
4787            { "kind" : "LiteralInteger", "name" : "'Matrix Stride'" }
4788          ]
4789        },
4790        {
4791          "enumerant" : "GLSLShared",
4792          "value" : 8,
4793          "capabilities" : [ "Shader" ]
4794        },
4795        {
4796          "enumerant" : "GLSLPacked",
4797          "value" : 9,
4798          "capabilities" : [ "Shader" ]
4799        },
4800        {
4801          "enumerant" : "CPacked",
4802          "value" : 10,
4803          "capabilities" : [ "Kernel" ]
4804        },
4805        {
4806          "enumerant" : "BuiltIn",
4807          "value" : 11,
4808          "parameters" : [
4809            { "kind" : "BuiltIn" }
4810          ]
4811        },
4812        {
4813          "enumerant" : "NoPerspective",
4814          "value" : 13,
4815          "capabilities" : [ "Shader" ]
4816        },
4817        {
4818          "enumerant" : "Flat",
4819          "value" : 14,
4820          "capabilities" : [ "Shader" ]
4821        },
4822        {
4823          "enumerant" : "Patch",
4824          "value" : 15,
4825          "capabilities" : [ "Tessellation" ]
4826        },
4827        {
4828          "enumerant" : "Centroid",
4829          "value" : 16,
4830          "capabilities" : [ "Shader" ]
4831        },
4832        {
4833          "enumerant" : "Sample",
4834          "value" : 17,
4835          "capabilities" : [ "SampleRateShading" ]
4836        },
4837        {
4838          "enumerant" : "Invariant",
4839          "value" : 18,
4840          "capabilities" : [ "Shader" ]
4841        },
4842        {
4843          "enumerant" : "Restrict",
4844          "value" : 19
4845        },
4846        {
4847          "enumerant" : "Aliased",
4848          "value" : 20
4849        },
4850        {
4851          "enumerant" : "Volatile",
4852          "value" : 21
4853        },
4854        {
4855          "enumerant" : "Constant",
4856          "value" : 22,
4857          "capabilities" : [ "Kernel" ]
4858        },
4859        {
4860          "enumerant" : "Coherent",
4861          "value" : 23
4862        },
4863        {
4864          "enumerant" : "NonWritable",
4865          "value" : 24
4866        },
4867        {
4868          "enumerant" : "NonReadable",
4869          "value" : 25
4870        },
4871        {
4872          "enumerant" : "Uniform",
4873          "value" : 26,
4874          "capabilities" : [ "Shader" ]
4875        },
4876        {
4877          "enumerant" : "SaturatedConversion",
4878          "value" : 28,
4879          "capabilities" : [ "Kernel" ]
4880        },
4881        {
4882          "enumerant" : "Stream",
4883          "value" : 29,
4884          "capabilities" : [ "GeometryStreams" ],
4885          "parameters" : [
4886            { "kind" : "LiteralInteger", "name" : "'Stream Number'" }
4887          ]
4888        },
4889        {
4890          "enumerant" : "Location",
4891          "value" : 30,
4892          "capabilities" : [ "Shader" ],
4893          "parameters" : [
4894            { "kind" : "LiteralInteger", "name" : "'Location'" }
4895          ]
4896        },
4897        {
4898          "enumerant" : "Component",
4899          "value" : 31,
4900          "capabilities" : [ "Shader" ],
4901          "parameters" : [
4902            { "kind" : "LiteralInteger", "name" : "'Component'" }
4903          ]
4904        },
4905        {
4906          "enumerant" : "Index",
4907          "value" : 32,
4908          "capabilities" : [ "Shader" ],
4909          "parameters" : [
4910            { "kind" : "LiteralInteger", "name" : "'Index'" }
4911          ]
4912        },
4913        {
4914          "enumerant" : "Binding",
4915          "value" : 33,
4916          "capabilities" : [ "Shader" ],
4917          "parameters" : [
4918            { "kind" : "LiteralInteger", "name" : "'Binding Point'" }
4919          ]
4920        },
4921        {
4922          "enumerant" : "DescriptorSet",
4923          "value" : 34,
4924          "capabilities" : [ "Shader" ],
4925          "parameters" : [
4926            { "kind" : "LiteralInteger", "name" : "'Descriptor Set'" }
4927          ]
4928        },
4929        {
4930          "enumerant" : "Offset",
4931          "value" : 35,
4932          "capabilities" : [ "Shader" ],
4933          "parameters" : [
4934            { "kind" : "LiteralInteger", "name" : "'Byte Offset'" }
4935          ]
4936        },
4937        {
4938          "enumerant" : "XfbBuffer",
4939          "value" : 36,
4940          "capabilities" : [ "TransformFeedback" ],
4941          "parameters" : [
4942            { "kind" : "LiteralInteger", "name" : "'XFB Buffer Number'" }
4943          ]
4944        },
4945        {
4946          "enumerant" : "XfbStride",
4947          "value" : 37,
4948          "capabilities" : [ "TransformFeedback" ],
4949          "parameters" : [
4950            { "kind" : "LiteralInteger", "name" : "'XFB Stride'" }
4951          ]
4952        },
4953        {
4954          "enumerant" : "FuncParamAttr",
4955          "value" : 38,
4956          "capabilities" : [ "Kernel" ],
4957          "parameters" : [
4958            { "kind" : "FunctionParameterAttribute", "name" : "'Function Parameter Attribute'" }
4959          ]
4960        },
4961        {
4962          "enumerant" : "FPRoundingMode",
4963          "value" : 39,
4964          "capabilities" : [
4965            "Kernel",
4966            "StorageUniformBufferBlock16",
4967            "StorageUniform16",
4968            "StoragePushConstant16",
4969            "StorageInputOutput16"
4970          ],
4971          "parameters" : [
4972            { "kind" : "FPRoundingMode", "name" : "'Floating-Point Rounding Mode'" }
4973          ]
4974        },
4975        {
4976          "enumerant" : "FPFastMathMode",
4977          "value" : 40,
4978          "capabilities" : [ "Kernel" ],
4979          "parameters" : [
4980            { "kind" : "FPFastMathMode", "name" : "'Fast-Math Mode'" }
4981          ]
4982        },
4983        {
4984          "enumerant" : "LinkageAttributes",
4985          "value" : 41,
4986          "capabilities" : [ "Linkage" ],
4987          "parameters" : [
4988            { "kind" : "LiteralString", "name" : "'Name'" },
4989            { "kind" : "LinkageType",   "name" : "'Linkage Type'" }
4990          ]
4991        },
4992        {
4993          "enumerant" : "NoContraction",
4994          "value" : 42,
4995          "capabilities" : [ "Shader" ]
4996        },
4997        {
4998          "enumerant" : "InputAttachmentIndex",
4999          "value" : 43,
5000          "capabilities" : [ "InputAttachment" ],
5001          "parameters" : [
5002            { "kind" : "LiteralInteger", "name" : "'Attachment Index'" }
5003          ]
5004        },
5005        {
5006          "enumerant" : "Alignment",
5007          "value" : 44,
5008          "capabilities" : [ "Kernel" ],
5009          "parameters" : [
5010            { "kind" : "LiteralInteger", "name" : "'Alignment'" }
5011          ]
5012        },
5013        {
5014          "enumerant" : "MaxByteOffset",
5015          "value" : 45,
5016          "capabilities" : [ "Addresses" ],
5017          "parameters" : [
5018            { "kind" : "LiteralInteger", "name" : "'Max Byte Offset'" }
5019          ]
5020        },
5021        {
5022          "enumerant" : "AlignmentId",
5023          "value" : 46,
5024          "capabilities" : [ "Kernel" ],
5025          "parameters" : [
5026            { "kind" : "IdRef", "name" : "'Alignment'" }
5027          ]
5028        },
5029        {
5030          "enumerant" : "MaxByteOffsetId",
5031          "value" : 47,
5032          "capabilities" : [ "Addresses" ],
5033          "parameters" : [
5034            { "kind" : "IdRef", "name" : "'Max Byte Offset'" }
5035          ]
5036        },
5037        {
5038          "enumerant" : "ExplicitInterpAMD",
5039          "value" : 4999
5040        },
5041        {
5042          "enumerant" : "OverrideCoverageNV",
5043          "value" : 5248,
5044          "capabilities" : [ "SampleMaskOverrideCoverageNV" ]
5045        },
5046        {
5047          "enumerant" : "PassthroughNV",
5048          "value" : 5250,
5049          "capabilities" : [ "GeometryShaderPassthroughNV" ]
5050        },
5051        {
5052          "enumerant" : "ViewportRelativeNV",
5053          "value" : 5252,
5054          "capabilities" : [ "ShaderViewportMaskNV" ]
5055        },
5056        {
5057          "enumerant" : "SecondaryViewportRelativeNV",
5058          "value" : 5256,
5059          "capabilities" : [ "ShaderStereoViewNV" ],
5060          "parameters" : [
5061            { "kind" : "LiteralInteger", "name" : "'Offset'" }
5062          ]
5063        },
5064        {
5065          "enumerant" : "HlslCounterBufferGOOGLE",
5066          "value" : 5634,
5067          "parameters" : [
5068            { "kind" : "IdRef", "name" : "'Counter Buffer'" }
5069          ],
5070          "extensions" : [ "SPV_GOOGLE_hlsl_functionality1" ]
5071        },
5072        {
5073          "enumerant" : "HlslSemanticGOOGLE",
5074          "value" : 5635,
5075          "parameters" : [
5076            { "kind" : "LiteralString", "name" : "'Semantic'" }
5077          ],
5078          "extensions" : [ "SPV_GOOGLE_hlsl_functionality1" ]
5079        }
5080      ]
5081    },
5082    {
5083      "category" : "ValueEnum",
5084      "kind" : "BuiltIn",
5085      "enumerants" : [
5086        {
5087          "enumerant" : "Position",
5088          "value" : 0,
5089          "capabilities" : [ "Shader" ]
5090        },
5091        {
5092          "enumerant" : "PointSize",
5093          "value" : 1,
5094          "capabilities" : [ "Shader" ]
5095        },
5096        {
5097          "enumerant" : "ClipDistance",
5098          "value" : 3,
5099          "capabilities" : [ "ClipDistance" ]
5100        },
5101        {
5102          "enumerant" : "CullDistance",
5103          "value" : 4,
5104          "capabilities" : [ "CullDistance" ]
5105        },
5106        {
5107          "enumerant" : "VertexId",
5108          "value" : 5,
5109          "capabilities" : [ "Shader" ]
5110        },
5111        {
5112          "enumerant" : "InstanceId",
5113          "value" : 6,
5114          "capabilities" : [ "Shader" ]
5115        },
5116        {
5117          "enumerant" : "PrimitiveId",
5118          "value" : 7,
5119          "capabilities" : [ "Geometry", "Tessellation" ]
5120        },
5121        {
5122          "enumerant" : "InvocationId",
5123          "value" : 8,
5124          "capabilities" : [ "Geometry", "Tessellation" ]
5125        },
5126        {
5127          "enumerant" : "Layer",
5128          "value" : 9,
5129          "capabilities" : [ "Geometry" ]
5130        },
5131        {
5132          "enumerant" : "ViewportIndex",
5133          "value" : 10,
5134          "capabilities" : [ "MultiViewport" ]
5135        },
5136        {
5137          "enumerant" : "TessLevelOuter",
5138          "value" : 11,
5139          "capabilities" : [ "Tessellation" ]
5140        },
5141        {
5142          "enumerant" : "TessLevelInner",
5143          "value" : 12,
5144          "capabilities" : [ "Tessellation" ]
5145        },
5146        {
5147          "enumerant" : "TessCoord",
5148          "value" : 13,
5149          "capabilities" : [ "Tessellation" ]
5150        },
5151        {
5152          "enumerant" : "PatchVertices",
5153          "value" : 14,
5154          "capabilities" : [ "Tessellation" ]
5155        },
5156        {
5157          "enumerant" : "FragCoord",
5158          "value" : 15,
5159          "capabilities" : [ "Shader" ]
5160        },
5161        {
5162          "enumerant" : "PointCoord",
5163          "value" : 16,
5164          "capabilities" : [ "Shader" ]
5165        },
5166        {
5167          "enumerant" : "FrontFacing",
5168          "value" : 17,
5169          "capabilities" : [ "Shader" ]
5170        },
5171        {
5172          "enumerant" : "SampleId",
5173          "value" : 18,
5174          "capabilities" : [ "SampleRateShading" ]
5175        },
5176        {
5177          "enumerant" : "SamplePosition",
5178          "value" : 19,
5179          "capabilities" : [ "SampleRateShading" ]
5180        },
5181        {
5182          "enumerant" : "SampleMask",
5183          "value" : 20,
5184          "capabilities" : [ "Shader" ]
5185        },
5186        {
5187          "enumerant" : "FragDepth",
5188          "value" : 22,
5189          "capabilities" : [ "Shader" ]
5190        },
5191        {
5192          "enumerant" : "HelperInvocation",
5193          "value" : 23,
5194          "capabilities" : [ "Shader" ]
5195        },
5196        {
5197          "enumerant" : "NumWorkgroups",
5198          "value" : 24
5199        },
5200        {
5201          "enumerant" : "WorkgroupSize",
5202          "value" : 25
5203        },
5204        {
5205          "enumerant" : "WorkgroupId",
5206          "value" : 26
5207        },
5208        {
5209          "enumerant" : "LocalInvocationId",
5210          "value" : 27
5211        },
5212        {
5213          "enumerant" : "GlobalInvocationId",
5214          "value" : 28
5215        },
5216        {
5217          "enumerant" : "LocalInvocationIndex",
5218          "value" : 29
5219        },
5220        {
5221          "enumerant" : "WorkDim",
5222          "value" : 30,
5223          "capabilities" : [ "Kernel" ]
5224        },
5225        {
5226          "enumerant" : "GlobalSize",
5227          "value" : 31,
5228          "capabilities" : [ "Kernel" ]
5229        },
5230        {
5231          "enumerant" : "EnqueuedWorkgroupSize",
5232          "value" : 32,
5233          "capabilities" : [ "Kernel" ]
5234        },
5235        {
5236          "enumerant" : "GlobalOffset",
5237          "value" : 33,
5238          "capabilities" : [ "Kernel" ]
5239        },
5240        {
5241          "enumerant" : "GlobalLinearId",
5242          "value" : 34,
5243          "capabilities" : [ "Kernel" ]
5244        },
5245        {
5246          "enumerant" : "SubgroupSize",
5247          "value" : 36,
5248          "capabilities" : [ "Kernel", "SubgroupBallotKHR" ]
5249        },
5250        {
5251          "enumerant" : "SubgroupMaxSize",
5252          "value" : 37,
5253          "capabilities" : [ "Kernel" ]
5254        },
5255        {
5256          "enumerant" : "NumSubgroups",
5257          "value" : 38,
5258          "capabilities" : [ "Kernel" ]
5259        },
5260        {
5261          "enumerant" : "NumEnqueuedSubgroups",
5262          "value" : 39,
5263          "capabilities" : [ "Kernel" ]
5264        },
5265        {
5266          "enumerant" : "SubgroupId",
5267          "value" : 40,
5268          "capabilities" : [ "Kernel" ]
5269        },
5270        {
5271          "enumerant" : "SubgroupLocalInvocationId",
5272          "value" : 41,
5273          "capabilities" : [ "Kernel", "SubgroupBallotKHR" ]
5274        },
5275        {
5276          "enumerant" : "VertexIndex",
5277          "value" : 42,
5278          "capabilities" : [ "Shader" ]
5279        },
5280        {
5281          "enumerant" : "InstanceIndex",
5282          "value" : 43,
5283          "capabilities" : [ "Shader" ]
5284        },
5285        {
5286          "enumerant" : "SubgroupEqMaskKHR",
5287          "value" : 4416,
5288          "capabilities" : [ "SubgroupBallotKHR" ]
5289        },
5290        {
5291          "enumerant" : "SubgroupGeMaskKHR",
5292          "value" : 4417,
5293          "capabilities" : [ "SubgroupBallotKHR" ]
5294        },
5295        {
5296          "enumerant" : "SubgroupGtMaskKHR",
5297          "value" : 4418,
5298          "capabilities" : [ "SubgroupBallotKHR" ]
5299        },
5300        {
5301          "enumerant" : "SubgroupLeMaskKHR",
5302          "value" : 4419,
5303          "capabilities" : [ "SubgroupBallotKHR" ]
5304        },
5305        {
5306          "enumerant" : "SubgroupLtMaskKHR",
5307          "value" : 4420,
5308          "capabilities" : [ "SubgroupBallotKHR" ]
5309        },
5310        {
5311          "enumerant" : "BaseVertex",
5312          "value" : 4424,
5313          "capabilities" : [ "DrawParameters" ]
5314        },
5315        {
5316          "enumerant" : "BaseInstance",
5317          "value" : 4425,
5318          "capabilities" : [ "DrawParameters" ]
5319        },
5320        {
5321          "enumerant" : "DrawIndex",
5322          "value" : 4426,
5323          "capabilities" : [ "DrawParameters" ]
5324        },
5325        {
5326          "enumerant" : "DeviceIndex",
5327          "value" : 4438,
5328          "capabilities" : [ "DeviceGroup" ]
5329        },
5330        {
5331          "enumerant" : "ViewIndex",
5332          "value" : 4440,
5333          "capabilities" : [ "MultiView" ]
5334        },
5335        {
5336          "enumerant" : "BaryCoordNoPerspAMD",
5337          "value" : 4992
5338        },
5339        {
5340          "enumerant" : "BaryCoordNoPerspCentroidAMD",
5341          "value" : 4993
5342        },
5343        {
5344          "enumerant" : "BaryCoordNoPerspSampleAMD",
5345          "value" : 4994
5346        },
5347        {
5348          "enumerant" : "BaryCoordSmoothAMD",
5349          "value" : 4995
5350        },
5351        {
5352          "enumerant" : "BaryCoordSmoothCentroidAMD",
5353          "value" : 4996
5354        },
5355        {
5356          "enumerant" : "BaryCoordSmoothSampleAMD",
5357          "value" : 4997
5358        },
5359        {
5360          "enumerant" : "BaryCoordPullModelAMD",
5361          "value" : 4998
5362        },
5363        {
5364          "enumerant" : "FragStencilRefEXT",
5365          "value" : 5014,
5366          "capabilities" : [ "StencilExportEXT" ]
5367        },
5368        {
5369          "enumerant" : "ViewportMaskNV",
5370          "value" : 5253,
5371          "capabilities" : [ "ShaderViewportMaskNV" ]
5372        },
5373        {
5374          "enumerant" : "SecondaryPositionNV",
5375          "value" : 5257,
5376          "capabilities" : [ "ShaderStereoViewNV" ]
5377        },
5378        {
5379          "enumerant" : "SecondaryViewportMaskNV",
5380          "value" : 5258,
5381          "capabilities" : [ "ShaderStereoViewNV" ]
5382        },
5383        {
5384          "enumerant" : "PositionPerViewNV",
5385          "value" : 5261,
5386          "capabilities" : [ "PerViewAttributesNV" ]
5387        },
5388        {
5389          "enumerant" : "ViewportMaskPerViewNV",
5390          "value" : 5262,
5391          "capabilities" : [ "PerViewAttributesNV" ]
5392        }
5393      ]
5394    },
5395    {
5396      "category" : "ValueEnum",
5397      "kind" : "Scope",
5398      "enumerants" : [
5399        {
5400          "enumerant" : "CrossDevice",
5401          "value" : 0
5402        },
5403        {
5404          "enumerant" : "Device",
5405          "value" : 1
5406        },
5407        {
5408          "enumerant" : "Workgroup",
5409          "value" : 2
5410        },
5411        {
5412          "enumerant" : "Subgroup",
5413          "value" : 3
5414        },
5415        {
5416          "enumerant" : "Invocation",
5417          "value" : 4
5418        }
5419      ]
5420    },
5421    {
5422      "category" : "ValueEnum",
5423      "kind" : "GroupOperation",
5424      "enumerants" : [
5425        {
5426          "enumerant" : "Reduce",
5427          "value" : 0,
5428          "capabilities" : [ "Kernel" ]
5429        },
5430        {
5431          "enumerant" : "InclusiveScan",
5432          "value" : 1,
5433          "capabilities" : [ "Kernel" ]
5434        },
5435        {
5436          "enumerant" : "ExclusiveScan",
5437          "value" : 2,
5438          "capabilities" : [ "Kernel" ]
5439        }
5440      ]
5441    },
5442    {
5443      "category" : "ValueEnum",
5444      "kind" : "KernelEnqueueFlags",
5445      "enumerants" : [
5446        {
5447          "enumerant" : "NoWait",
5448          "value" : 0,
5449          "capabilities" : [ "Kernel" ]
5450        },
5451        {
5452          "enumerant" : "WaitKernel",
5453          "value" : 1,
5454          "capabilities" : [ "Kernel" ]
5455        },
5456        {
5457          "enumerant" : "WaitWorkGroup",
5458          "value" : 2,
5459          "capabilities" : [ "Kernel" ]
5460        }
5461      ]
5462    },
5463    {
5464      "category" : "ValueEnum",
5465      "kind" : "Capability",
5466      "enumerants" : [
5467        {
5468          "enumerant" : "Matrix",
5469          "value" : 0
5470        },
5471        {
5472          "enumerant" : "Shader",
5473          "value" : 1,
5474          "capabilities" : [ "Matrix" ]
5475        },
5476        {
5477          "enumerant" : "Geometry",
5478          "value" : 2,
5479          "capabilities" : [ "Shader" ]
5480        },
5481        {
5482          "enumerant" : "Tessellation",
5483          "value" : 3,
5484          "capabilities" : [ "Shader" ]
5485        },
5486        {
5487          "enumerant" : "Addresses",
5488          "value" : 4
5489        },
5490        {
5491          "enumerant" : "Linkage",
5492          "value" : 5
5493        },
5494        {
5495          "enumerant" : "Kernel",
5496          "value" : 6
5497        },
5498        {
5499          "enumerant" : "Vector16",
5500          "value" : 7,
5501          "capabilities" : [ "Kernel" ]
5502        },
5503        {
5504          "enumerant" : "Float16Buffer",
5505          "value" : 8,
5506          "capabilities" : [ "Kernel" ]
5507        },
5508        {
5509          "enumerant" : "Float16",
5510          "value" : 9
5511        },
5512        {
5513          "enumerant" : "Float64",
5514          "value" : 10
5515        },
5516        {
5517          "enumerant" : "Int64",
5518          "value" : 11
5519        },
5520        {
5521          "enumerant" : "Int64Atomics",
5522          "value" : 12,
5523          "capabilities" : [ "Int64" ]
5524        },
5525        {
5526          "enumerant" : "ImageBasic",
5527          "value" : 13,
5528          "capabilities" : [ "Kernel" ]
5529        },
5530        {
5531          "enumerant" : "ImageReadWrite",
5532          "value" : 14,
5533          "capabilities" : [ "ImageBasic" ]
5534        },
5535        {
5536          "enumerant" : "ImageMipmap",
5537          "value" : 15,
5538          "capabilities" : [ "ImageBasic" ]
5539        },
5540        {
5541          "enumerant" : "Pipes",
5542          "value" : 17,
5543          "capabilities" : [ "Kernel" ]
5544        },
5545        {
5546          "enumerant" : "Groups",
5547          "value" : 18
5548        },
5549        {
5550          "enumerant" : "DeviceEnqueue",
5551          "value" : 19,
5552          "capabilities" : [ "Kernel" ]
5553        },
5554        {
5555          "enumerant" : "LiteralSampler",
5556          "value" : 20,
5557          "capabilities" : [ "Kernel" ]
5558        },
5559        {
5560          "enumerant" : "AtomicStorage",
5561          "value" : 21,
5562          "capabilities" : [ "Shader" ]
5563        },
5564        {
5565          "enumerant" : "Int16",
5566          "value" : 22
5567        },
5568        {
5569          "enumerant" : "TessellationPointSize",
5570          "value" : 23,
5571          "capabilities" : [ "Tessellation" ]
5572        },
5573        {
5574          "enumerant" : "GeometryPointSize",
5575          "value" : 24,
5576          "capabilities" : [ "Geometry" ]
5577        },
5578        {
5579          "enumerant" : "ImageGatherExtended",
5580          "value" : 25,
5581          "capabilities" : [ "Shader" ]
5582        },
5583        {
5584          "enumerant" : "StorageImageMultisample",
5585          "value" : 27,
5586          "capabilities" : [ "Shader" ]
5587        },
5588        {
5589          "enumerant" : "UniformBufferArrayDynamicIndexing",
5590          "value" : 28,
5591          "capabilities" : [ "Shader" ]
5592        },
5593        {
5594          "enumerant" : "SampledImageArrayDynamicIndexing",
5595          "value" : 29,
5596          "capabilities" : [ "Shader" ]
5597        },
5598        {
5599          "enumerant" : "StorageBufferArrayDynamicIndexing",
5600          "value" : 30,
5601          "capabilities" : [ "Shader" ]
5602        },
5603        {
5604          "enumerant" : "StorageImageArrayDynamicIndexing",
5605          "value" : 31,
5606          "capabilities" : [ "Shader" ]
5607        },
5608        {
5609          "enumerant" : "ClipDistance",
5610          "value" : 32,
5611          "capabilities" : [ "Shader" ]
5612        },
5613        {
5614          "enumerant" : "CullDistance",
5615          "value" : 33,
5616          "capabilities" : [ "Shader" ]
5617        },
5618        {
5619          "enumerant" : "ImageCubeArray",
5620          "value" : 34,
5621          "capabilities" : [ "SampledCubeArray" ]
5622        },
5623        {
5624          "enumerant" : "SampleRateShading",
5625          "value" : 35,
5626          "capabilities" : [ "Shader" ]
5627        },
5628        {
5629          "enumerant" : "ImageRect",
5630          "value" : 36,
5631          "capabilities" : [ "SampledRect" ]
5632        },
5633        {
5634          "enumerant" : "SampledRect",
5635          "value" : 37,
5636          "capabilities" : [ "Shader" ]
5637        },
5638        {
5639          "enumerant" : "GenericPointer",
5640          "value" : 38,
5641          "capabilities" : [ "Addresses" ]
5642        },
5643        {
5644          "enumerant" : "Int8",
5645          "value" : 39,
5646          "capabilities" : [ "Kernel" ]
5647        },
5648        {
5649          "enumerant" : "InputAttachment",
5650          "value" : 40,
5651          "capabilities" : [ "Shader" ]
5652        },
5653        {
5654          "enumerant" : "SparseResidency",
5655          "value" : 41,
5656          "capabilities" : [ "Shader" ]
5657        },
5658        {
5659          "enumerant" : "MinLod",
5660          "value" : 42,
5661          "capabilities" : [ "Shader" ]
5662        },
5663        {
5664          "enumerant" : "Sampled1D",
5665          "value" : 43
5666        },
5667        {
5668          "enumerant" : "Image1D",
5669          "value" : 44,
5670          "capabilities" : [ "Sampled1D" ]
5671        },
5672        {
5673          "enumerant" : "SampledCubeArray",
5674          "value" : 45,
5675          "capabilities" : [ "Shader" ]
5676        },
5677        {
5678          "enumerant" : "SampledBuffer",
5679          "value" : 46
5680        },
5681        {
5682          "enumerant" : "ImageBuffer",
5683          "value" : 47,
5684          "capabilities" : [ "SampledBuffer" ]
5685        },
5686        {
5687          "enumerant" : "ImageMSArray",
5688          "value" : 48,
5689          "capabilities" : [ "Shader" ]
5690        },
5691        {
5692          "enumerant" : "StorageImageExtendedFormats",
5693          "value" : 49,
5694          "capabilities" : [ "Shader" ]
5695        },
5696        {
5697          "enumerant" : "ImageQuery",
5698          "value" : 50,
5699          "capabilities" : [ "Shader" ]
5700        },
5701        {
5702          "enumerant" : "DerivativeControl",
5703          "value" : 51,
5704          "capabilities" : [ "Shader" ]
5705        },
5706        {
5707          "enumerant" : "InterpolationFunction",
5708          "value" : 52,
5709          "capabilities" : [ "Shader" ]
5710        },
5711        {
5712          "enumerant" : "TransformFeedback",
5713          "value" : 53,
5714          "capabilities" : [ "Shader" ]
5715        },
5716        {
5717          "enumerant" : "GeometryStreams",
5718          "value" : 54,
5719          "capabilities" : [ "Geometry" ]
5720        },
5721        {
5722          "enumerant" : "StorageImageReadWithoutFormat",
5723          "value" : 55,
5724          "capabilities" : [ "Shader" ]
5725        },
5726        {
5727          "enumerant" : "StorageImageWriteWithoutFormat",
5728          "value" : 56,
5729          "capabilities" : [ "Shader" ]
5730        },
5731        {
5732          "enumerant" : "MultiViewport",
5733          "value" : 57,
5734          "capabilities" : [ "Geometry" ]
5735        },
5736        {
5737          "enumerant" : "SubgroupDispatch",
5738          "value" : 58,
5739          "capabilities" : [ "DeviceEnqueue" ]
5740        },
5741        {
5742          "enumerant" : "NamedBarrier",
5743          "value" : 59,
5744          "capabilities" : [ "Kernel" ]
5745        },
5746        {
5747          "enumerant" : "PipeStorage",
5748          "value" : 60,
5749          "capabilities" : [ "Pipes" ]
5750        },
5751        {
5752          "enumerant" : "SubgroupBallotKHR",
5753          "value" : 4423,
5754          "extensions" : [ "SPV_KHR_shader_ballot" ]
5755        },
5756        {
5757          "enumerant" : "DrawParameters",
5758          "value" : 4427,
5759          "extensions" : [ "SPV_KHR_shader_draw_parameters" ]
5760        },
5761        {
5762          "enumerant" : "SubgroupVoteKHR",
5763          "value" : 4431,
5764          "extensions" : [ "SPV_KHR_subgroup_vote" ]
5765        },
5766        {
5767          "enumerant" : "StorageBuffer16BitAccess",
5768          "value" : 4433,
5769          "extensions" : [ "SPV_KHR_16bit_storage" ]
5770        },
5771        {
5772          "enumerant" : "StorageUniformBufferBlock16",
5773          "value" : 4433,
5774          "extensions" : [ "SPV_KHR_16bit_storage" ]
5775        },
5776        {
5777          "enumerant" : "UniformAndStorageBuffer16BitAccess",
5778          "value" : 4434,
5779          "capabilities" : [
5780            "StorageBuffer16BitAccess",
5781            "StorageUniformBufferBlock16"
5782          ],
5783          "extensions" : [ "SPV_KHR_16bit_storage" ]
5784        },
5785        {
5786          "enumerant" : "StorageUniform16",
5787          "value" : 4434,
5788          "capabilities" : [
5789            "StorageBuffer16BitAccess",
5790            "StorageUniformBufferBlock16"
5791          ],
5792          "extensions" : [ "SPV_KHR_16bit_storage" ]
5793        },
5794        {
5795          "enumerant" : "StoragePushConstant16",
5796          "value" : 4435,
5797          "extensions" : [ "SPV_KHR_16bit_storage" ]
5798        },
5799        {
5800          "enumerant" : "StorageInputOutput16",
5801          "value" : 4436,
5802          "extensions" : [ "SPV_KHR_16bit_storage" ]
5803        },
5804        {
5805          "enumerant" : "DeviceGroup",
5806          "value" : 4437,
5807          "extensions" : [ "SPV_KHR_device_group" ]
5808        },
5809        {
5810          "enumerant" : "MultiView",
5811          "value" : 4439,
5812          "capabilities" : [ "Shader" ],
5813          "extensions" : [ "SPV_KHR_multiview" ]
5814        },
5815        {
5816          "enumerant" : "VariablePointersStorageBuffer",
5817          "value" : 4441,
5818          "capabilities" : [ "Shader" ],
5819          "extensions" : [ "SPV_KHR_variable_pointers" ]
5820        },
5821        {
5822          "enumerant" : "VariablePointers",
5823          "value" : 4442,
5824          "capabilities" : [ "VariablePointersStorageBuffer" ],
5825          "extensions" : [ "SPV_KHR_variable_pointers" ]
5826        },
5827        {
5828            "enumerant": "AtomicStorageOps",
5829            "value": 4445,
5830            "extensions": [ "SPV_KHR_shader_atomic_counter_ops" ]
5831        },
5832        {
5833          "enumerant" : "SampleMaskPostDepthCoverage",
5834          "value" : 4447,
5835          "extensions" : [ "SPV_KHR_post_depth_coverage" ]
5836        },
5837        {
5838          "enumerant" : "ImageGatherBiasLodAMD",
5839          "value" : 5009,
5840          "capabilities" : [ "Shader" ],
5841          "extensions" : [ "SPV_AMD_texture_gather_bias_lod" ]
5842        },
5843        {
5844          "enumerant" : "FragmentMaskAMD",
5845          "value" : 5010,
5846          "capabilities" : [ "Shader" ],
5847          "extensions" : [ "SPV_AMD_shader_fragment_mask" ]
5848        },
5849        {
5850          "enumerant" : "StencilExportEXT",
5851          "value" : 5013,
5852          "capabilities" : [ "Shader" ],
5853          "extensions" : [ "SPV_EXT_shader_stencil_export" ]
5854        },
5855        {
5856          "enumerant" : "ImageReadWriteLodAMD",
5857          "value" : 5015,
5858          "capabilities" : [ "Shader" ],
5859          "extensions" : [ "SPV_AMD_shader_image_load_store_lod" ]
5860        },
5861        {
5862          "enumerant" : "SampleMaskOverrideCoverageNV",
5863          "value" : 5249,
5864          "capabilities" : [ "SampleRateShading" ],
5865          "extensions" : [ "SPV_NV_sample_mask_override_coverage" ]
5866        },
5867        {
5868          "enumerant" : "GeometryShaderPassthroughNV",
5869          "value" : 5251,
5870          "capabilities" : [ "Geometry" ],
5871          "extensions" : [ "SPV_NV_geometry_shader_passthrough" ]
5872        },
5873        {
5874          "enumerant" : "ShaderViewportIndexLayerEXT",
5875          "value" : 5254,
5876          "capabilities" : [ "MultiViewport" ],
5877          "extensions" : [ "SPV_EXT_shader_viewport_index_layer" ]
5878        },
5879        {
5880          "enumerant" : "ShaderViewportIndexLayerNV",
5881          "value" : 5254,
5882          "capabilities" : [ "MultiViewport" ],
5883          "extensions" : [ "SPV_NV_viewport_array2" ]
5884        },
5885        {
5886          "enumerant" : "ShaderViewportMaskNV",
5887          "value" : 5255,
5888          "capabilities" : [ "ShaderViewportIndexLayerNV" ],
5889          "extensions" : [ "SPV_NV_viewport_array2" ]
5890        },
5891        {
5892          "enumerant" : "ShaderStereoViewNV",
5893          "value" : 5259,
5894          "capabilities" : [ "ShaderViewportMaskNV" ],
5895          "extensions" : [ "SPV_NV_stereo_view_rendering" ]
5896        },
5897        {
5898          "enumerant" : "PerViewAttributesNV",
5899          "value" : 5260,
5900          "capabilities" : [ "MultiView" ],
5901          "extensions" : [ "SPV_NVX_multiview_per_view_attributes" ]
5902        },
5903        {
5904          "enumerant" : "SubgroupShuffleINTEL",
5905          "value" : 5568,
5906          "extensions" : [ "SPV_INTEL_subgroups" ]
5907        },
5908        {
5909          "enumerant" : "SubgroupBufferBlockIOINTEL",
5910          "value" : 5569,
5911          "extensions" : [ "SPV_INTEL_subgroups" ]
5912        },
5913        {
5914          "enumerant" : "SubgroupImageBlockIOINTEL",
5915          "value" : 5570,
5916          "extensions" : [ "SPV_INTEL_subgroups" ]
5917        }
5918      ]
5919    },
5920    {
5921      "category" : "Id",
5922      "kind" : "IdResultType",
5923      "doc" : "Reference to an <id> representing the result's type of the enclosing instruction"
5924    },
5925    {
5926      "category" : "Id",
5927      "kind" : "IdResult",
5928      "doc" : "Definition of an <id> representing the result of the enclosing instruction"
5929    },
5930    {
5931      "category" : "Id",
5932      "kind" : "IdMemorySemantics",
5933      "doc" : "Reference to an <id> representing a 32-bit integer that is a mask from the MemorySemantics operand kind"
5934    },
5935    {
5936      "category" : "Id",
5937      "kind" : "IdScope",
5938      "doc" : "Reference to an <id> representing a 32-bit integer that is a mask from the Scope operand kind"
5939    },
5940    {
5941      "category" : "Id",
5942      "kind" : "IdRef",
5943      "doc" : "Reference to an <id>"
5944    },
5945    {
5946      "category" : "Literal",
5947      "kind" : "LiteralInteger",
5948      "doc" : "An integer consuming one or more words"
5949    },
5950    {
5951      "category" : "Literal",
5952      "kind" : "LiteralString",
5953      "doc" : "A null-terminated stream of characters consuming an integral number of words"
5954    },
5955    {
5956      "category" : "Literal",
5957      "kind" : "LiteralContextDependentNumber",
5958      "doc" : "A literal number whose size and format are determined by a previous operand in the enclosing instruction"
5959    },
5960    {
5961      "category" : "Literal",
5962      "kind" : "LiteralExtInstInteger",
5963      "doc" : "A 32-bit unsigned integer indicating which instruction to use and determining the layout of following operands (for OpExtInst)"
5964    },
5965    {
5966      "category" : "Literal",
5967      "kind" : "LiteralSpecConstantOpInteger",
5968      "doc" : "An opcode indicating the operation to be performed and determining the layout of following operands (for OpSpecConstantOp)"
5969    },
5970    {
5971      "category" : "Composite",
5972      "kind" : "PairLiteralIntegerIdRef",
5973      "bases" : [ "LiteralInteger", "IdRef" ]
5974    },
5975    {
5976      "category" : "Composite",
5977      "kind" : "PairIdRefLiteralInteger",
5978      "bases" : [ "IdRef", "LiteralInteger" ]
5979    },
5980    {
5981      "category" : "Composite",
5982      "kind" : "PairIdRefIdRef",
5983      "bases" : [ "IdRef", "IdRef" ]
5984    }
5985  ]
5986}
5987