Incremental update for multiple recent extensions.
[platform/upstream/SPIRV-Headers.git] / include / spirv / 1.2 / spirv.core.grammar.json
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" : 1,
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   "operand_kinds" : [
3292     {
3293       "category" : "BitEnum",
3294       "kind" : "ImageOperands",
3295       "enumerants" : [
3296         {
3297           "enumerant" : "None",
3298           "value" : "0x0000"
3299         },
3300         {
3301           "enumerant" : "Bias",
3302           "value" : "0x0001",
3303           "capabilities" : [ "Shader" ],
3304           "parameters" : [
3305             { "kind" : "IdRef" }
3306           ]
3307         },
3308         {
3309           "enumerant" : "Lod",
3310           "value" : "0x0002",
3311           "parameters" : [
3312             { "kind" : "IdRef" }
3313           ]
3314         },
3315         {
3316           "enumerant" : "Grad",
3317           "value" : "0x0004",
3318           "parameters" : [
3319             { "kind" : "IdRef" },
3320             { "kind" : "IdRef" }
3321           ]
3322         },
3323         {
3324           "enumerant" : "ConstOffset",
3325           "value" : "0x0008",
3326           "parameters" : [
3327             { "kind" : "IdRef" }
3328           ]
3329         },
3330         {
3331           "enumerant" : "Offset",
3332           "value" : "0x0010",
3333           "capabilities" : [ "ImageGatherExtended" ],
3334           "parameters" : [
3335             { "kind" : "IdRef" }
3336           ]
3337         },
3338         {
3339           "enumerant" : "ConstOffsets",
3340           "value" : "0x0020",
3341           "parameters" : [
3342             { "kind" : "IdRef" }
3343           ]
3344         },
3345         {
3346           "enumerant" : "Sample",
3347           "value" : "0x0040",
3348           "parameters" : [
3349             { "kind" : "IdRef" }
3350           ]
3351         },
3352         {
3353           "enumerant" : "MinLod",
3354           "value" : "0x0080",
3355           "capabilities" : [ "MinLod" ],
3356           "parameters" : [
3357             { "kind" : "IdRef" }
3358           ]
3359         }
3360       ]
3361     },
3362     {
3363       "category" : "BitEnum",
3364       "kind" : "FPFastMathMode",
3365       "enumerants" : [
3366         {
3367           "enumerant" : "None",
3368           "value" : "0x0000"
3369         },
3370         {
3371           "enumerant" : "NotNaN",
3372           "value" : "0x0001",
3373           "capabilities" : [ "Kernel" ]
3374         },
3375         {
3376           "enumerant" : "NotInf",
3377           "value" : "0x0002",
3378           "capabilities" : [ "Kernel" ]
3379         },
3380         {
3381           "enumerant" : "NSZ",
3382           "value" : "0x0004",
3383           "capabilities" : [ "Kernel" ]
3384         },
3385         {
3386           "enumerant" : "AllowRecip",
3387           "value" : "0x0008",
3388           "capabilities" : [ "Kernel" ]
3389         },
3390         {
3391           "enumerant" : "Fast",
3392           "value" : "0x0010",
3393           "capabilities" : [ "Kernel" ]
3394         }
3395       ]
3396     },
3397     {
3398       "category" : "BitEnum",
3399       "kind" : "SelectionControl",
3400       "enumerants" : [
3401         {
3402           "enumerant" : "None",
3403           "value" : "0x0000"
3404         },
3405         {
3406           "enumerant" : "Flatten",
3407           "value" : "0x0001"
3408         },
3409         {
3410           "enumerant" : "DontFlatten",
3411           "value" : "0x0002"
3412         }
3413       ]
3414     },
3415     {
3416       "category" : "BitEnum",
3417       "kind" : "LoopControl",
3418       "enumerants" : [
3419         {
3420           "enumerant" : "None",
3421           "value" : "0x0000"
3422         },
3423         {
3424           "enumerant" : "Unroll",
3425           "value" : "0x0001"
3426         },
3427         {
3428           "enumerant" : "DontUnroll",
3429           "value" : "0x0002"
3430         },
3431         {
3432           "enumerant" : "DependencyInfinite",
3433           "value" : "0x0004"
3434         },
3435         {
3436           "enumerant" : "DependencyLength",
3437           "value" : "0x0008",
3438           "parameters" : [
3439             { "kind" : "LiteralInteger" }
3440           ]
3441
3442         }
3443       ]
3444     },
3445     {
3446       "category" : "BitEnum",
3447       "kind" : "FunctionControl",
3448       "enumerants" : [
3449         {
3450           "enumerant" : "None",
3451           "value" : "0x0000"
3452         },
3453         {
3454           "enumerant" : "Inline",
3455           "value" : "0x0001"
3456         },
3457         {
3458           "enumerant" : "DontInline",
3459           "value" : "0x0002"
3460         },
3461         {
3462           "enumerant" : "Pure",
3463           "value" : "0x0004"
3464         },
3465         {
3466           "enumerant" : "Const",
3467           "value" : "0x0008"
3468         }
3469       ]
3470     },
3471     {
3472       "category" : "BitEnum",
3473       "kind" : "MemorySemantics",
3474       "enumerants" : [
3475         {
3476           "enumerant" : "Relaxed",
3477           "value" : "0x0000"
3478         },
3479         {
3480           "enumerant" : "None",
3481           "value" : "0x0000"
3482         },
3483         {
3484           "enumerant" : "Acquire",
3485           "value" : "0x0002"
3486         },
3487         {
3488           "enumerant" : "Release",
3489           "value" : "0x0004"
3490         },
3491         {
3492           "enumerant" : "AcquireRelease",
3493           "value" : "0x0008"
3494         },
3495         {
3496           "enumerant" : "SequentiallyConsistent",
3497           "value" : "0x0010"
3498         },
3499         {
3500           "enumerant" : "UniformMemory",
3501           "value" : "0x0040",
3502           "capabilities" : [ "Shader" ]
3503         },
3504         {
3505           "enumerant" : "SubgroupMemory",
3506           "value" : "0x0080"
3507         },
3508         {
3509           "enumerant" : "WorkgroupMemory",
3510           "value" : "0x0100"
3511         },
3512         {
3513           "enumerant" : "CrossWorkgroupMemory",
3514           "value" : "0x0200"
3515         },
3516         {
3517           "enumerant" : "AtomicCounterMemory",
3518           "value" : "0x0400",
3519           "capabilities" : [ "AtomicStorage" ]
3520         },
3521         {
3522           "enumerant" : "ImageMemory",
3523           "value" : "0x0800"
3524         }
3525       ]
3526     },
3527     {
3528       "category" : "BitEnum",
3529       "kind" : "MemoryAccess",
3530       "enumerants" : [
3531         {
3532           "enumerant" : "None",
3533           "value" : "0x0000"
3534         },
3535         {
3536           "enumerant" : "Volatile",
3537           "value" : "0x0001"
3538         },
3539         {
3540           "enumerant" : "Aligned",
3541           "value" : "0x0002",
3542           "parameters" : [
3543             { "kind" : "LiteralInteger" }
3544           ]
3545         },
3546         {
3547           "enumerant" : "Nontemporal",
3548           "value" : "0x0004"
3549         }
3550       ]
3551     },
3552     {
3553       "category" : "BitEnum",
3554       "kind" : "KernelProfilingInfo",
3555       "enumerants" : [
3556         {
3557           "enumerant" : "None",
3558           "value" : "0x0000"
3559         },
3560         {
3561           "enumerant" : "CmdExecTime",
3562           "value" : "0x0001",
3563           "capabilities" : [ "Kernel" ]
3564         }
3565       ]
3566     },
3567     {
3568       "category" : "ValueEnum",
3569       "kind" : "SourceLanguage",
3570       "enumerants" : [
3571         {
3572           "enumerant" : "Unknown",
3573           "value" : 0
3574         },
3575         {
3576           "enumerant" : "ESSL",
3577           "value" : 1
3578         },
3579         {
3580           "enumerant" : "GLSL",
3581           "value" : 2
3582         },
3583         {
3584           "enumerant" : "OpenCL_C",
3585           "value" : 3
3586         },
3587         {
3588           "enumerant" : "OpenCL_CPP",
3589           "value" : 4
3590         },
3591         {
3592           "enumerant" : "HLSL",
3593           "value" : 5
3594         }
3595       ]
3596     },
3597     {
3598       "category" : "ValueEnum",
3599       "kind" : "ExecutionModel",
3600       "enumerants" : [
3601         {
3602           "enumerant" : "Vertex",
3603           "value" : 0,
3604           "capabilities" : [ "Shader" ]
3605         },
3606         {
3607           "enumerant" : "TessellationControl",
3608           "value" : 1,
3609           "capabilities" : [ "Tessellation" ]
3610         },
3611         {
3612           "enumerant" : "TessellationEvaluation",
3613           "value" : 2,
3614           "capabilities" : [ "Tessellation" ]
3615         },
3616         {
3617           "enumerant" : "Geometry",
3618           "value" : 3,
3619           "capabilities" : [ "Geometry" ]
3620         },
3621         {
3622           "enumerant" : "Fragment",
3623           "value" : 4,
3624           "capabilities" : [ "Shader" ]
3625         },
3626         {
3627           "enumerant" : "GLCompute",
3628           "value" : 5,
3629           "capabilities" : [ "Shader" ]
3630         },
3631         {
3632           "enumerant" : "Kernel",
3633           "value" : 6,
3634           "capabilities" : [ "Kernel" ]
3635         }
3636       ]
3637     },
3638     {
3639       "category" : "ValueEnum",
3640       "kind" : "AddressingModel",
3641       "enumerants" : [
3642         {
3643           "enumerant" : "Logical",
3644           "value" : 0
3645         },
3646         {
3647           "enumerant" : "Physical32",
3648           "value" : 1,
3649           "capabilities" : [ "Addresses" ]
3650         },
3651         {
3652           "enumerant" : "Physical64",
3653           "value" : 2,
3654           "capabilities" : [ "Addresses" ]
3655         }
3656       ]
3657     },
3658     {
3659       "category" : "ValueEnum",
3660       "kind" : "MemoryModel",
3661       "enumerants" : [
3662         {
3663           "enumerant" : "Simple",
3664           "value" : 0,
3665           "capabilities" : [ "Shader" ]
3666         },
3667         {
3668           "enumerant" : "GLSL450",
3669           "value" : 1,
3670           "capabilities" : [ "Shader" ]
3671         },
3672         {
3673           "enumerant" : "OpenCL",
3674           "value" : 2,
3675           "capabilities" : [ "Kernel" ]
3676         }
3677       ]
3678     },
3679     {
3680       "category" : "ValueEnum",
3681       "kind" : "ExecutionMode",
3682       "enumerants" : [
3683         {
3684           "enumerant" : "Invocations",
3685           "value" : 0,
3686           "capabilities" : [ "Geometry" ],
3687           "parameters" : [
3688             { "kind" : "LiteralInteger", "name" : "'Number of <<Invocation,invocations>>'" }
3689           ]
3690         },
3691         {
3692           "enumerant" : "SpacingEqual",
3693           "value" : 1,
3694           "capabilities" : [ "Tessellation" ]
3695         },
3696         {
3697           "enumerant" : "SpacingFractionalEven",
3698           "value" : 2,
3699           "capabilities" : [ "Tessellation" ]
3700         },
3701         {
3702           "enumerant" : "SpacingFractionalOdd",
3703           "value" : 3,
3704           "capabilities" : [ "Tessellation" ]
3705         },
3706         {
3707           "enumerant" : "VertexOrderCw",
3708           "value" : 4,
3709           "capabilities" : [ "Tessellation" ]
3710         },
3711         {
3712           "enumerant" : "VertexOrderCcw",
3713           "value" : 5,
3714           "capabilities" : [ "Tessellation" ]
3715         },
3716         {
3717           "enumerant" : "PixelCenterInteger",
3718           "value" : 6,
3719           "capabilities" : [ "Shader" ]
3720         },
3721         {
3722           "enumerant" : "OriginUpperLeft",
3723           "value" : 7,
3724           "capabilities" : [ "Shader" ]
3725         },
3726         {
3727           "enumerant" : "OriginLowerLeft",
3728           "value" : 8,
3729           "capabilities" : [ "Shader" ]
3730         },
3731         {
3732           "enumerant" : "EarlyFragmentTests",
3733           "value" : 9,
3734           "capabilities" : [ "Shader" ]
3735         },
3736         {
3737           "enumerant" : "PointMode",
3738           "value" : 10,
3739           "capabilities" : [ "Tessellation" ]
3740         },
3741         {
3742           "enumerant" : "Xfb",
3743           "value" : 11,
3744           "capabilities" : [ "TransformFeedback" ]
3745         },
3746         {
3747           "enumerant" : "DepthReplacing",
3748           "value" : 12,
3749           "capabilities" : [ "Shader" ]
3750         },
3751         {
3752           "enumerant" : "DepthGreater",
3753           "value" : 14,
3754           "capabilities" : [ "Shader" ]
3755         },
3756         {
3757           "enumerant" : "DepthLess",
3758           "value" : 15,
3759           "capabilities" : [ "Shader" ]
3760         },
3761         {
3762           "enumerant" : "DepthUnchanged",
3763           "value" : 16,
3764           "capabilities" : [ "Shader" ]
3765         },
3766         {
3767           "enumerant" : "LocalSize",
3768           "value" : 17,
3769           "parameters" : [
3770             { "kind" : "LiteralInteger", "name" : "'x size'" },
3771             { "kind" : "LiteralInteger", "name" : "'y size'" },
3772             { "kind" : "LiteralInteger", "name" : "'z size'" }
3773           ]
3774         },
3775         {
3776           "enumerant" : "LocalSizeHint",
3777           "value" : 18,
3778           "capabilities" : [ "Kernel" ],
3779           "parameters" : [
3780             { "kind" : "LiteralInteger", "name" : "'x size'" },
3781             { "kind" : "LiteralInteger", "name" : "'y size'" },
3782             { "kind" : "LiteralInteger", "name" : "'z size'" }
3783           ]
3784         },
3785         {
3786           "enumerant" : "InputPoints",
3787           "value" : 19,
3788           "capabilities" : [ "Geometry" ]
3789         },
3790         {
3791           "enumerant" : "InputLines",
3792           "value" : 20,
3793           "capabilities" : [ "Geometry" ]
3794         },
3795         {
3796           "enumerant" : "InputLinesAdjacency",
3797           "value" : 21,
3798           "capabilities" : [ "Geometry" ]
3799         },
3800         {
3801           "enumerant" : "Triangles",
3802           "value" : 22,
3803           "capabilities" : [ "Geometry", "Tessellation" ]
3804         },
3805         {
3806           "enumerant" : "InputTrianglesAdjacency",
3807           "value" : 23,
3808           "capabilities" : [ "Geometry" ]
3809         },
3810         {
3811           "enumerant" : "Quads",
3812           "value" : 24,
3813           "capabilities" : [ "Tessellation" ]
3814         },
3815         {
3816           "enumerant" : "Isolines",
3817           "value" : 25,
3818           "capabilities" : [ "Tessellation" ]
3819         },
3820         {
3821           "enumerant" : "OutputVertices",
3822           "value" : 26,
3823           "capabilities" : [ "Geometry", "Tessellation" ],
3824           "parameters" : [
3825             { "kind" : "LiteralInteger", "name" : "'Vertex count'" }
3826           ]
3827         },
3828         {
3829           "enumerant" : "OutputPoints",
3830           "value" : 27,
3831           "capabilities" : [ "Geometry" ]
3832         },
3833         {
3834           "enumerant" : "OutputLineStrip",
3835           "value" : 28,
3836           "capabilities" : [ "Geometry" ]
3837         },
3838         {
3839           "enumerant" : "OutputTriangleStrip",
3840           "value" : 29,
3841           "capabilities" : [ "Geometry" ]
3842         },
3843         {
3844           "enumerant" : "VecTypeHint",
3845           "value" : 30,
3846           "capabilities" : [ "Kernel" ],
3847           "parameters" : [
3848             { "kind" : "LiteralInteger", "name" : "'Vector type'" }
3849           ]
3850         },
3851         {
3852           "enumerant" : "ContractionOff",
3853           "value" : 31,
3854           "capabilities" : [ "Kernel" ]
3855         },
3856         {
3857           "enumerant" : "Initializer",
3858           "value" : 33,
3859           "capabilities" : [ "Kernel" ]
3860         },
3861         {
3862           "enumerant" : "Finalizer",
3863           "value" : 34,
3864           "capabilities" : [ "Kernel" ]
3865         },
3866         {
3867           "enumerant" : "SubgroupSize",
3868           "value" : 35,
3869           "capabilities" : [ "SubgroupDispatch" ],
3870           "parameters" : [
3871             { "kind" : "LiteralInteger", "name" : "'Subgroup Size'" }
3872           ]
3873         },
3874         {
3875           "enumerant" : "SubgroupsPerWorkgroup",
3876           "value" : 36,
3877           "capabilities" : [ "SubgroupDispatch" ],
3878           "parameters" : [
3879             { "kind" : "LiteralInteger", "name" : "'Subgroups Per Workgroup'" }
3880           ]
3881         },
3882         {
3883           "enumerant" : "SubgroupsPerWorkgroupId",
3884           "value" : 37,
3885           "capabilities" : [ "SubgroupDispatch" ],
3886           "parameters" : [
3887             { "kind" : "IdRef", "name" : "'Subgroups Per Workgroup'" }
3888           ]
3889         },
3890         {
3891           "enumerant" : "LocalSizeId",
3892           "value" : 38,
3893           "parameters" : [
3894             { "kind" : "IdRef", "name" : "'x size'" },
3895             { "kind" : "IdRef", "name" : "'y size'" },
3896             { "kind" : "IdRef", "name" : "'z size'" }
3897           ]
3898         },
3899         {
3900           "enumerant" : "LocalSizeHintId",
3901           "value" : 39,
3902           "capabilities" : [ "Kernel" ],
3903           "parameters" : [
3904             { "kind" : "IdRef", "name" : "'Local Size Hint'" }
3905           ]
3906         },
3907         {
3908           "enumerant" : "PostDepthCoverage",
3909           "value" : 4446,
3910           "capabilities" : [ "SampleMaskPostDepthCoverage" ]
3911         }
3912       ]
3913     },
3914     {
3915       "category" : "ValueEnum",
3916       "kind" : "StorageClass",
3917       "enumerants" : [
3918         {
3919           "enumerant" : "UniformConstant",
3920           "value" : 0
3921         },
3922         {
3923           "enumerant" : "Input",
3924           "value" : 1
3925         },
3926         {
3927           "enumerant" : "Uniform",
3928           "value" : 2,
3929           "capabilities" : [ "Shader" ]
3930         },
3931         {
3932           "enumerant" : "Output",
3933           "value" : 3,
3934           "capabilities" : [ "Shader" ]
3935         },
3936         {
3937           "enumerant" : "Workgroup",
3938           "value" : 4
3939         },
3940         {
3941           "enumerant" : "CrossWorkgroup",
3942           "value" : 5
3943         },
3944         {
3945           "enumerant" : "Private",
3946           "value" : 6,
3947           "capabilities" : [ "Shader" ]
3948         },
3949         {
3950           "enumerant" : "Function",
3951           "value" : 7
3952         },
3953         {
3954           "enumerant" : "Generic",
3955           "value" : 8,
3956           "capabilities" : [ "GenericPointer" ]
3957         },
3958         {
3959           "enumerant" : "PushConstant",
3960           "value" : 9,
3961           "capabilities" : [ "Shader" ]
3962         },
3963         {
3964           "enumerant" : "AtomicCounter",
3965           "value" : 10,
3966           "capabilities" : [ "AtomicStorage" ]
3967         },
3968         {
3969           "enumerant" : "Image",
3970           "value" : 11
3971         },
3972         {
3973           "enumerant" : "StorageBuffer",
3974           "value" : 12,
3975           "extensions" : [
3976             "SPV_KHR_storage_buffer_storage_class",
3977             "SPV_KHR_variable_pointers"
3978           ]
3979         }
3980       ]
3981     },
3982     {
3983       "category" : "ValueEnum",
3984       "kind" : "Dim",
3985       "enumerants" : [
3986         {
3987           "enumerant" : "1D",
3988           "value" : 0,
3989           "capabilities" : [ "Sampled1D" ]
3990         },
3991         {
3992           "enumerant" : "2D",
3993           "value" : 1
3994         },
3995         {
3996           "enumerant" : "3D",
3997           "value" : 2
3998         },
3999         {
4000           "enumerant" : "Cube",
4001           "value" : 3,
4002           "capabilities" : [ "Shader" ]
4003         },
4004         {
4005           "enumerant" : "Rect",
4006           "value" : 4,
4007           "capabilities" : [ "SampledRect" ]
4008         },
4009         {
4010           "enumerant" : "Buffer",
4011           "value" : 5,
4012           "capabilities" : [ "SampledBuffer" ]
4013         },
4014         {
4015           "enumerant" : "SubpassData",
4016           "value" : 6,
4017           "capabilities" : [ "InputAttachment" ]
4018         }
4019       ]
4020     },
4021     {
4022       "category" : "ValueEnum",
4023       "kind" : "SamplerAddressingMode",
4024       "enumerants" : [
4025         {
4026           "enumerant" : "None",
4027           "value" : 0,
4028           "capabilities" : [ "Kernel" ]
4029         },
4030         {
4031           "enumerant" : "ClampToEdge",
4032           "value" : 1,
4033           "capabilities" : [ "Kernel" ]
4034         },
4035         {
4036           "enumerant" : "Clamp",
4037           "value" : 2,
4038           "capabilities" : [ "Kernel" ]
4039         },
4040         {
4041           "enumerant" : "Repeat",
4042           "value" : 3,
4043           "capabilities" : [ "Kernel" ]
4044         },
4045         {
4046           "enumerant" : "RepeatMirrored",
4047           "value" : 4,
4048           "capabilities" : [ "Kernel" ]
4049         }
4050       ]
4051     },
4052     {
4053       "category" : "ValueEnum",
4054       "kind" : "SamplerFilterMode",
4055       "enumerants" : [
4056         {
4057           "enumerant" : "Nearest",
4058           "value" : 0,
4059           "capabilities" : [ "Kernel" ]
4060         },
4061         {
4062           "enumerant" : "Linear",
4063           "value" : 1,
4064           "capabilities" : [ "Kernel" ]
4065         }
4066       ]
4067     },
4068     {
4069       "category" : "ValueEnum",
4070       "kind" : "ImageFormat",
4071       "enumerants" : [
4072         {
4073           "enumerant" : "Unknown",
4074           "value" : 0
4075         },
4076         {
4077           "enumerant" : "Rgba32f",
4078           "value" : 1,
4079           "capabilities" : [ "Shader" ]
4080         },
4081         {
4082           "enumerant" : "Rgba16f",
4083           "value" : 2,
4084           "capabilities" : [ "Shader" ]
4085         },
4086         {
4087           "enumerant" : "R32f",
4088           "value" : 3,
4089           "capabilities" : [ "Shader" ]
4090         },
4091         {
4092           "enumerant" : "Rgba8",
4093           "value" : 4,
4094           "capabilities" : [ "Shader" ]
4095         },
4096         {
4097           "enumerant" : "Rgba8Snorm",
4098           "value" : 5,
4099           "capabilities" : [ "Shader" ]
4100         },
4101         {
4102           "enumerant" : "Rg32f",
4103           "value" : 6,
4104           "capabilities" : [ "StorageImageExtendedFormats" ]
4105         },
4106         {
4107           "enumerant" : "Rg16f",
4108           "value" : 7,
4109           "capabilities" : [ "StorageImageExtendedFormats" ]
4110         },
4111         {
4112           "enumerant" : "R11fG11fB10f",
4113           "value" : 8,
4114           "capabilities" : [ "StorageImageExtendedFormats" ]
4115         },
4116         {
4117           "enumerant" : "R16f",
4118           "value" : 9,
4119           "capabilities" : [ "StorageImageExtendedFormats" ]
4120         },
4121         {
4122           "enumerant" : "Rgba16",
4123           "value" : 10,
4124           "capabilities" : [ "StorageImageExtendedFormats" ]
4125         },
4126         {
4127           "enumerant" : "Rgb10A2",
4128           "value" : 11,
4129           "capabilities" : [ "StorageImageExtendedFormats" ]
4130         },
4131         {
4132           "enumerant" : "Rg16",
4133           "value" : 12,
4134           "capabilities" : [ "StorageImageExtendedFormats" ]
4135         },
4136         {
4137           "enumerant" : "Rg8",
4138           "value" : 13,
4139           "capabilities" : [ "StorageImageExtendedFormats" ]
4140         },
4141         {
4142           "enumerant" : "R16",
4143           "value" : 14,
4144           "capabilities" : [ "StorageImageExtendedFormats" ]
4145         },
4146         {
4147           "enumerant" : "R8",
4148           "value" : 15,
4149           "capabilities" : [ "StorageImageExtendedFormats" ]
4150         },
4151         {
4152           "enumerant" : "Rgba16Snorm",
4153           "value" : 16,
4154           "capabilities" : [ "StorageImageExtendedFormats" ]
4155         },
4156         {
4157           "enumerant" : "Rg16Snorm",
4158           "value" : 17,
4159           "capabilities" : [ "StorageImageExtendedFormats" ]
4160         },
4161         {
4162           "enumerant" : "Rg8Snorm",
4163           "value" : 18,
4164           "capabilities" : [ "StorageImageExtendedFormats" ]
4165         },
4166         {
4167           "enumerant" : "R16Snorm",
4168           "value" : 19,
4169           "capabilities" : [ "StorageImageExtendedFormats" ]
4170         },
4171         {
4172           "enumerant" : "R8Snorm",
4173           "value" : 20,
4174           "capabilities" : [ "StorageImageExtendedFormats" ]
4175         },
4176         {
4177           "enumerant" : "Rgba32i",
4178           "value" : 21,
4179           "capabilities" : [ "Shader" ]
4180         },
4181         {
4182           "enumerant" : "Rgba16i",
4183           "value" : 22,
4184           "capabilities" : [ "Shader" ]
4185         },
4186         {
4187           "enumerant" : "Rgba8i",
4188           "value" : 23,
4189           "capabilities" : [ "Shader" ]
4190         },
4191         {
4192           "enumerant" : "R32i",
4193           "value" : 24,
4194           "capabilities" : [ "Shader" ]
4195         },
4196         {
4197           "enumerant" : "Rg32i",
4198           "value" : 25,
4199           "capabilities" : [ "StorageImageExtendedFormats" ]
4200         },
4201         {
4202           "enumerant" : "Rg16i",
4203           "value" : 26,
4204           "capabilities" : [ "StorageImageExtendedFormats" ]
4205         },
4206         {
4207           "enumerant" : "Rg8i",
4208           "value" : 27,
4209           "capabilities" : [ "StorageImageExtendedFormats" ]
4210         },
4211         {
4212           "enumerant" : "R16i",
4213           "value" : 28,
4214           "capabilities" : [ "StorageImageExtendedFormats" ]
4215         },
4216         {
4217           "enumerant" : "R8i",
4218           "value" : 29,
4219           "capabilities" : [ "StorageImageExtendedFormats" ]
4220         },
4221         {
4222           "enumerant" : "Rgba32ui",
4223           "value" : 30,
4224           "capabilities" : [ "Shader" ]
4225         },
4226         {
4227           "enumerant" : "Rgba16ui",
4228           "value" : 31,
4229           "capabilities" : [ "Shader" ]
4230         },
4231         {
4232           "enumerant" : "Rgba8ui",
4233           "value" : 32,
4234           "capabilities" : [ "Shader" ]
4235         },
4236         {
4237           "enumerant" : "R32ui",
4238           "value" : 33,
4239           "capabilities" : [ "Shader" ]
4240         },
4241         {
4242           "enumerant" : "Rgb10a2ui",
4243           "value" : 34,
4244           "capabilities" : [ "StorageImageExtendedFormats" ]
4245         },
4246         {
4247           "enumerant" : "Rg32ui",
4248           "value" : 35,
4249           "capabilities" : [ "StorageImageExtendedFormats" ]
4250         },
4251         {
4252           "enumerant" : "Rg16ui",
4253           "value" : 36,
4254           "capabilities" : [ "StorageImageExtendedFormats" ]
4255         },
4256         {
4257           "enumerant" : "Rg8ui",
4258           "value" : 37,
4259           "capabilities" : [ "StorageImageExtendedFormats" ]
4260         },
4261         {
4262           "enumerant" : "R16ui",
4263           "value" : 38,
4264           "capabilities" : [ "StorageImageExtendedFormats" ]
4265         },
4266         {
4267           "enumerant" : "R8ui",
4268           "value" : 39,
4269           "capabilities" : [ "StorageImageExtendedFormats" ]
4270         }
4271       ]
4272     },
4273     {
4274       "category" : "ValueEnum",
4275       "kind" : "ImageChannelOrder",
4276       "enumerants" : [
4277         {
4278           "enumerant" : "R",
4279           "value" : 0,
4280           "capabilities" : [ "Kernel" ]
4281         },
4282         {
4283           "enumerant" : "A",
4284           "value" : 1,
4285           "capabilities" : [ "Kernel" ]
4286         },
4287         {
4288           "enumerant" : "RG",
4289           "value" : 2,
4290           "capabilities" : [ "Kernel" ]
4291         },
4292         {
4293           "enumerant" : "RA",
4294           "value" : 3,
4295           "capabilities" : [ "Kernel" ]
4296         },
4297         {
4298           "enumerant" : "RGB",
4299           "value" : 4,
4300           "capabilities" : [ "Kernel" ]
4301         },
4302         {
4303           "enumerant" : "RGBA",
4304           "value" : 5,
4305           "capabilities" : [ "Kernel" ]
4306         },
4307         {
4308           "enumerant" : "BGRA",
4309           "value" : 6,
4310           "capabilities" : [ "Kernel" ]
4311         },
4312         {
4313           "enumerant" : "ARGB",
4314           "value" : 7,
4315           "capabilities" : [ "Kernel" ]
4316         },
4317         {
4318           "enumerant" : "Intensity",
4319           "value" : 8,
4320           "capabilities" : [ "Kernel" ]
4321         },
4322         {
4323           "enumerant" : "Luminance",
4324           "value" : 9,
4325           "capabilities" : [ "Kernel" ]
4326         },
4327         {
4328           "enumerant" : "Rx",
4329           "value" : 10,
4330           "capabilities" : [ "Kernel" ]
4331         },
4332         {
4333           "enumerant" : "RGx",
4334           "value" : 11,
4335           "capabilities" : [ "Kernel" ]
4336         },
4337         {
4338           "enumerant" : "RGBx",
4339           "value" : 12,
4340           "capabilities" : [ "Kernel" ]
4341         },
4342         {
4343           "enumerant" : "Depth",
4344           "value" : 13,
4345           "capabilities" : [ "Kernel" ]
4346         },
4347         {
4348           "enumerant" : "DepthStencil",
4349           "value" : 14,
4350           "capabilities" : [ "Kernel" ]
4351         },
4352         {
4353           "enumerant" : "sRGB",
4354           "value" : 15,
4355           "capabilities" : [ "Kernel" ]
4356         },
4357         {
4358           "enumerant" : "sRGBx",
4359           "value" : 16,
4360           "capabilities" : [ "Kernel" ]
4361         },
4362         {
4363           "enumerant" : "sRGBA",
4364           "value" : 17,
4365           "capabilities" : [ "Kernel" ]
4366         },
4367         {
4368           "enumerant" : "sBGRA",
4369           "value" : 18,
4370           "capabilities" : [ "Kernel" ]
4371         },
4372         {
4373           "enumerant" : "ABGR",
4374           "value" : 19,
4375           "capabilities" : [ "Kernel" ]
4376         }
4377       ]
4378     },
4379     {
4380       "category" : "ValueEnum",
4381       "kind" : "ImageChannelDataType",
4382       "enumerants" : [
4383         {
4384           "enumerant" : "SnormInt8",
4385           "value" : 0,
4386           "capabilities" : [ "Kernel" ]
4387         },
4388         {
4389           "enumerant" : "SnormInt16",
4390           "value" : 1,
4391           "capabilities" : [ "Kernel" ]
4392         },
4393         {
4394           "enumerant" : "UnormInt8",
4395           "value" : 2,
4396           "capabilities" : [ "Kernel" ]
4397         },
4398         {
4399           "enumerant" : "UnormInt16",
4400           "value" : 3,
4401           "capabilities" : [ "Kernel" ]
4402         },
4403         {
4404           "enumerant" : "UnormShort565",
4405           "value" : 4,
4406           "capabilities" : [ "Kernel" ]
4407         },
4408         {
4409           "enumerant" : "UnormShort555",
4410           "value" : 5,
4411           "capabilities" : [ "Kernel" ]
4412         },
4413         {
4414           "enumerant" : "UnormInt101010",
4415           "value" : 6,
4416           "capabilities" : [ "Kernel" ]
4417         },
4418         {
4419           "enumerant" : "SignedInt8",
4420           "value" : 7,
4421           "capabilities" : [ "Kernel" ]
4422         },
4423         {
4424           "enumerant" : "SignedInt16",
4425           "value" : 8,
4426           "capabilities" : [ "Kernel" ]
4427         },
4428         {
4429           "enumerant" : "SignedInt32",
4430           "value" : 9,
4431           "capabilities" : [ "Kernel" ]
4432         },
4433         {
4434           "enumerant" : "UnsignedInt8",
4435           "value" : 10,
4436           "capabilities" : [ "Kernel" ]
4437         },
4438         {
4439           "enumerant" : "UnsignedInt16",
4440           "value" : 11,
4441           "capabilities" : [ "Kernel" ]
4442         },
4443         {
4444           "enumerant" : "UnsignedInt32",
4445           "value" : 12,
4446           "capabilities" : [ "Kernel" ]
4447         },
4448         {
4449           "enumerant" : "HalfFloat",
4450           "value" : 13,
4451           "capabilities" : [ "Kernel" ]
4452         },
4453         {
4454           "enumerant" : "Float",
4455           "value" : 14,
4456           "capabilities" : [ "Kernel" ]
4457         },
4458         {
4459           "enumerant" : "UnormInt24",
4460           "value" : 15,
4461           "capabilities" : [ "Kernel" ]
4462         },
4463         {
4464           "enumerant" : "UnormInt101010_2",
4465           "value" : 16,
4466           "capabilities" : [ "Kernel" ]
4467         }
4468       ]
4469     },
4470     {
4471       "category" : "ValueEnum",
4472       "kind" : "FPRoundingMode",
4473       "enumerants" : [
4474         {
4475           "enumerant" : "RTE",
4476           "value" : 0,
4477           "capabilities" : [
4478             "Kernel",
4479             "StorageUniformBufferBlock16",
4480             "StorageUniform16",
4481             "StoragePushConstant16",
4482             "StorageInputOutput16"
4483           ]
4484         },
4485         {
4486           "enumerant" : "RTZ",
4487           "value" : 1,
4488           "capabilities" : [
4489             "Kernel",
4490             "StorageUniformBufferBlock16",
4491             "StorageUniform16",
4492             "StoragePushConstant16",
4493             "StorageInputOutput16"
4494           ]
4495         },
4496         {
4497           "enumerant" : "RTP",
4498           "value" : 2,
4499           "capabilities" : [
4500             "Kernel",
4501             "StorageUniformBufferBlock16",
4502             "StorageUniform16",
4503             "StoragePushConstant16",
4504             "StorageInputOutput16"
4505           ]
4506         },
4507         {
4508           "enumerant" : "RTN",
4509           "value" : 3,
4510           "capabilities" : [
4511             "Kernel",
4512             "StorageUniformBufferBlock16",
4513             "StorageUniform16",
4514             "StoragePushConstant16",
4515             "StorageInputOutput16"
4516           ]
4517         }
4518       ]
4519     },
4520     {
4521       "category" : "ValueEnum",
4522       "kind" : "LinkageType",
4523       "enumerants" : [
4524         {
4525           "enumerant" : "Export",
4526           "value" : 0,
4527           "capabilities" : [ "Linkage" ]
4528         },
4529         {
4530           "enumerant" : "Import",
4531           "value" : 1,
4532           "capabilities" : [ "Linkage" ]
4533         }
4534       ]
4535     },
4536     {
4537       "category" : "ValueEnum",
4538       "kind" : "AccessQualifier",
4539       "enumerants" : [
4540         {
4541           "enumerant" : "ReadOnly",
4542           "value" : 0,
4543           "capabilities" : [ "Kernel" ]
4544         },
4545         {
4546           "enumerant" : "WriteOnly",
4547           "value" : 1,
4548           "capabilities" : [ "Kernel" ]
4549         },
4550         {
4551           "enumerant" : "ReadWrite",
4552           "value" : 2,
4553           "capabilities" : [ "Kernel" ]
4554         }
4555       ]
4556     },
4557     {
4558       "category" : "ValueEnum",
4559       "kind" : "FunctionParameterAttribute",
4560       "enumerants" : [
4561         {
4562           "enumerant" : "Zext",
4563           "value" : 0,
4564           "capabilities" : [ "Kernel" ]
4565         },
4566         {
4567           "enumerant" : "Sext",
4568           "value" : 1,
4569           "capabilities" : [ "Kernel" ]
4570         },
4571         {
4572           "enumerant" : "ByVal",
4573           "value" : 2,
4574           "capabilities" : [ "Kernel" ]
4575         },
4576         {
4577           "enumerant" : "Sret",
4578           "value" : 3,
4579           "capabilities" : [ "Kernel" ]
4580         },
4581         {
4582           "enumerant" : "NoAlias",
4583           "value" : 4,
4584           "capabilities" : [ "Kernel" ]
4585         },
4586         {
4587           "enumerant" : "NoCapture",
4588           "value" : 5,
4589           "capabilities" : [ "Kernel" ]
4590         },
4591         {
4592           "enumerant" : "NoWrite",
4593           "value" : 6,
4594           "capabilities" : [ "Kernel" ]
4595         },
4596         {
4597           "enumerant" : "NoReadWrite",
4598           "value" : 7,
4599           "capabilities" : [ "Kernel" ]
4600         }
4601       ]
4602     },
4603     {
4604       "category" : "ValueEnum",
4605       "kind" : "Decoration",
4606       "enumerants" : [
4607         {
4608           "enumerant" : "RelaxedPrecision",
4609           "value" : 0,
4610           "capabilities" : [ "Shader" ]
4611         },
4612         {
4613           "enumerant" : "SpecId",
4614           "value" : 1,
4615           "capabilities" : [ "Shader", "Kernel" ],
4616           "parameters" : [
4617             { "kind" : "LiteralInteger", "name" : "'Specialization Constant ID'" }
4618           ]
4619         },
4620         {
4621           "enumerant" : "Block",
4622           "value" : 2,
4623           "capabilities" : [ "Shader" ]
4624         },
4625         {
4626           "enumerant" : "BufferBlock",
4627           "value" : 3,
4628           "capabilities" : [ "Shader" ]
4629         },
4630         {
4631           "enumerant" : "RowMajor",
4632           "value" : 4,
4633           "capabilities" : [ "Matrix" ]
4634         },
4635         {
4636           "enumerant" : "ColMajor",
4637           "value" : 5,
4638           "capabilities" : [ "Matrix" ]
4639         },
4640         {
4641           "enumerant" : "ArrayStride",
4642           "value" : 6,
4643           "capabilities" : [ "Shader" ],
4644           "parameters" : [
4645             { "kind" : "LiteralInteger", "name" : "'Array Stride'" }
4646           ]
4647         },
4648         {
4649           "enumerant" : "MatrixStride",
4650           "value" : 7,
4651           "capabilities" : [ "Matrix" ],
4652           "parameters" : [
4653             { "kind" : "LiteralInteger", "name" : "'Matrix Stride'" }
4654           ]
4655         },
4656         {
4657           "enumerant" : "GLSLShared",
4658           "value" : 8,
4659           "capabilities" : [ "Shader" ]
4660         },
4661         {
4662           "enumerant" : "GLSLPacked",
4663           "value" : 9,
4664           "capabilities" : [ "Shader" ]
4665         },
4666         {
4667           "enumerant" : "CPacked",
4668           "value" : 10,
4669           "capabilities" : [ "Kernel" ]
4670         },
4671         {
4672           "enumerant" : "BuiltIn",
4673           "value" : 11,
4674           "parameters" : [
4675             { "kind" : "BuiltIn" }
4676           ]
4677         },
4678         {
4679           "enumerant" : "NoPerspective",
4680           "value" : 13,
4681           "capabilities" : [ "Shader" ]
4682         },
4683         {
4684           "enumerant" : "Flat",
4685           "value" : 14,
4686           "capabilities" : [ "Shader" ]
4687         },
4688         {
4689           "enumerant" : "Patch",
4690           "value" : 15,
4691           "capabilities" : [ "Tessellation" ]
4692         },
4693         {
4694           "enumerant" : "Centroid",
4695           "value" : 16,
4696           "capabilities" : [ "Shader" ]
4697         },
4698         {
4699           "enumerant" : "Sample",
4700           "value" : 17,
4701           "capabilities" : [ "SampleRateShading" ]
4702         },
4703         {
4704           "enumerant" : "Invariant",
4705           "value" : 18,
4706           "capabilities" : [ "Shader" ]
4707         },
4708         {
4709           "enumerant" : "Restrict",
4710           "value" : 19
4711         },
4712         {
4713           "enumerant" : "Aliased",
4714           "value" : 20
4715         },
4716         {
4717           "enumerant" : "Volatile",
4718           "value" : 21
4719         },
4720         {
4721           "enumerant" : "Constant",
4722           "value" : 22,
4723           "capabilities" : [ "Kernel" ]
4724         },
4725         {
4726           "enumerant" : "Coherent",
4727           "value" : 23
4728         },
4729         {
4730           "enumerant" : "NonWritable",
4731           "value" : 24
4732         },
4733         {
4734           "enumerant" : "NonReadable",
4735           "value" : 25
4736         },
4737         {
4738           "enumerant" : "Uniform",
4739           "value" : 26,
4740           "capabilities" : [ "Shader" ]
4741         },
4742         {
4743           "enumerant" : "SaturatedConversion",
4744           "value" : 28,
4745           "capabilities" : [ "Kernel" ]
4746         },
4747         {
4748           "enumerant" : "Stream",
4749           "value" : 29,
4750           "capabilities" : [ "GeometryStreams" ],
4751           "parameters" : [
4752             { "kind" : "LiteralInteger", "name" : "'Stream Number'" }
4753           ]
4754         },
4755         {
4756           "enumerant" : "Location",
4757           "value" : 30,
4758           "capabilities" : [ "Shader" ],
4759           "parameters" : [
4760             { "kind" : "LiteralInteger", "name" : "'Location'" }
4761           ]
4762         },
4763         {
4764           "enumerant" : "Component",
4765           "value" : 31,
4766           "capabilities" : [ "Shader" ],
4767           "parameters" : [
4768             { "kind" : "LiteralInteger", "name" : "'Component'" }
4769           ]
4770         },
4771         {
4772           "enumerant" : "Index",
4773           "value" : 32,
4774           "capabilities" : [ "Shader" ],
4775           "parameters" : [
4776             { "kind" : "LiteralInteger", "name" : "'Index'" }
4777           ]
4778         },
4779         {
4780           "enumerant" : "Binding",
4781           "value" : 33,
4782           "capabilities" : [ "Shader" ],
4783           "parameters" : [
4784             { "kind" : "LiteralInteger", "name" : "'Binding Point'" }
4785           ]
4786         },
4787         {
4788           "enumerant" : "DescriptorSet",
4789           "value" : 34,
4790           "capabilities" : [ "Shader" ],
4791           "parameters" : [
4792             { "kind" : "LiteralInteger", "name" : "'Descriptor Set'" }
4793           ]
4794         },
4795         {
4796           "enumerant" : "Offset",
4797           "value" : 35,
4798           "capabilities" : [ "Shader" ],
4799           "parameters" : [
4800             { "kind" : "LiteralInteger", "name" : "'Byte Offset'" }
4801           ]
4802         },
4803         {
4804           "enumerant" : "XfbBuffer",
4805           "value" : 36,
4806           "capabilities" : [ "TransformFeedback" ],
4807           "parameters" : [
4808             { "kind" : "LiteralInteger", "name" : "'XFB Buffer Number'" }
4809           ]
4810         },
4811         {
4812           "enumerant" : "XfbStride",
4813           "value" : 37,
4814           "capabilities" : [ "TransformFeedback" ],
4815           "parameters" : [
4816             { "kind" : "LiteralInteger", "name" : "'XFB Stride'" }
4817           ]
4818         },
4819         {
4820           "enumerant" : "FuncParamAttr",
4821           "value" : 38,
4822           "capabilities" : [ "Kernel" ],
4823           "parameters" : [
4824             { "kind" : "FunctionParameterAttribute", "name" : "'Function Parameter Attribute'" }
4825           ]
4826         },
4827         {
4828           "enumerant" : "FPRoundingMode",
4829           "value" : 39,
4830           "capabilities" : [
4831             "Kernel",
4832             "StorageUniformBufferBlock16",
4833             "StorageUniform16",
4834             "StoragePushConstant16",
4835             "StorageInputOutput16"
4836           ],
4837           "parameters" : [
4838             { "kind" : "FPRoundingMode", "name" : "'Floating-Point Rounding Mode'" }
4839           ]
4840         },
4841         {
4842           "enumerant" : "FPFastMathMode",
4843           "value" : 40,
4844           "capabilities" : [ "Kernel" ],
4845           "parameters" : [
4846             { "kind" : "FPFastMathMode", "name" : "'Fast-Math Mode'" }
4847           ]
4848         },
4849         {
4850           "enumerant" : "LinkageAttributes",
4851           "value" : 41,
4852           "capabilities" : [ "Linkage" ],
4853           "parameters" : [
4854             { "kind" : "LiteralString", "name" : "'Name'" },
4855             { "kind" : "LinkageType",   "name" : "'Linkage Type'" }
4856           ]
4857         },
4858         {
4859           "enumerant" : "NoContraction",
4860           "value" : 42,
4861           "capabilities" : [ "Shader" ]
4862         },
4863         {
4864           "enumerant" : "InputAttachmentIndex",
4865           "value" : 43,
4866           "capabilities" : [ "InputAttachment" ],
4867           "parameters" : [
4868             { "kind" : "LiteralInteger", "name" : "'Attachment Index'" }
4869           ]
4870         },
4871         {
4872           "enumerant" : "Alignment",
4873           "value" : 44,
4874           "capabilities" : [ "Kernel" ],
4875           "parameters" : [
4876             { "kind" : "LiteralInteger", "name" : "'Alignment'" }
4877           ]
4878         },
4879         {
4880           "enumerant" : "MaxByteOffset",
4881           "value" : 45,
4882           "capabilities" : [ "Addresses" ],
4883           "parameters" : [
4884             { "kind" : "LiteralInteger", "name" : "'Max Byte Offset'" }
4885           ]
4886         },
4887         {
4888           "enumerant" : "AlignmentId",
4889           "value" : 46,
4890           "capabilities" : [ "Kernel" ],
4891           "parameters" : [
4892             { "kind" : "IdRef", "name" : "'Alignment'" }
4893           ]
4894         },
4895         {
4896           "enumerant" : "MaxByteOffsetId",
4897           "value" : 47,
4898           "capabilities" : [ "Addresses" ],
4899           "parameters" : [
4900             { "kind" : "IdRef", "name" : "'Max Byte Offset'" }
4901           ]
4902         },
4903         {
4904           "enumerant" : "ExplicitInterpAMD",
4905           "value" : 4999
4906         },
4907         {
4908           "enumerant" : "OverrideCoverageNV",
4909           "value" : 5248,
4910           "capabilities" : [ "SampleMaskOverrideCoverageNV" ]
4911         },
4912         {
4913           "enumerant" : "PassthroughNV",
4914           "value" : 5250,
4915           "capabilities" : [ "GeometryShaderPassthroughNV" ]
4916         },
4917         {
4918           "enumerant" : "ViewportRelativeNV",
4919           "value" : 5252,
4920           "capabilities" : [ "ShaderViewportMaskNV" ]
4921         },
4922         {
4923           "enumerant" : "SecondaryViewportRelativeNV",
4924           "value" : 5256,
4925           "capabilities" : [ "ShaderStereoViewNV" ],
4926           "parameters" : [
4927             { "kind" : "LiteralInteger", "name" : "'Offset'" }
4928           ]
4929         }
4930       ]
4931     },
4932     {
4933       "category" : "ValueEnum",
4934       "kind" : "BuiltIn",
4935       "enumerants" : [
4936         {
4937           "enumerant" : "Position",
4938           "value" : 0,
4939           "capabilities" : [ "Shader" ]
4940         },
4941         {
4942           "enumerant" : "PointSize",
4943           "value" : 1,
4944           "capabilities" : [ "Shader" ]
4945         },
4946         {
4947           "enumerant" : "ClipDistance",
4948           "value" : 3,
4949           "capabilities" : [ "ClipDistance" ]
4950         },
4951         {
4952           "enumerant" : "CullDistance",
4953           "value" : 4,
4954           "capabilities" : [ "CullDistance" ]
4955         },
4956         {
4957           "enumerant" : "VertexId",
4958           "value" : 5,
4959           "capabilities" : [ "Shader" ]
4960         },
4961         {
4962           "enumerant" : "InstanceId",
4963           "value" : 6,
4964           "capabilities" : [ "Shader" ]
4965         },
4966         {
4967           "enumerant" : "PrimitiveId",
4968           "value" : 7,
4969           "capabilities" : [ "Geometry", "Tessellation" ]
4970         },
4971         {
4972           "enumerant" : "InvocationId",
4973           "value" : 8,
4974           "capabilities" : [ "Geometry", "Tessellation" ]
4975         },
4976         {
4977           "enumerant" : "Layer",
4978           "value" : 9,
4979           "capabilities" : [ "Geometry" ]
4980         },
4981         {
4982           "enumerant" : "ViewportIndex",
4983           "value" : 10,
4984           "capabilities" : [ "MultiViewport" ]
4985         },
4986         {
4987           "enumerant" : "TessLevelOuter",
4988           "value" : 11,
4989           "capabilities" : [ "Tessellation" ]
4990         },
4991         {
4992           "enumerant" : "TessLevelInner",
4993           "value" : 12,
4994           "capabilities" : [ "Tessellation" ]
4995         },
4996         {
4997           "enumerant" : "TessCoord",
4998           "value" : 13,
4999           "capabilities" : [ "Tessellation" ]
5000         },
5001         {
5002           "enumerant" : "PatchVertices",
5003           "value" : 14,
5004           "capabilities" : [ "Tessellation" ]
5005         },
5006         {
5007           "enumerant" : "FragCoord",
5008           "value" : 15,
5009           "capabilities" : [ "Shader" ]
5010         },
5011         {
5012           "enumerant" : "PointCoord",
5013           "value" : 16,
5014           "capabilities" : [ "Shader" ]
5015         },
5016         {
5017           "enumerant" : "FrontFacing",
5018           "value" : 17,
5019           "capabilities" : [ "Shader" ]
5020         },
5021         {
5022           "enumerant" : "SampleId",
5023           "value" : 18,
5024           "capabilities" : [ "SampleRateShading" ]
5025         },
5026         {
5027           "enumerant" : "SamplePosition",
5028           "value" : 19,
5029           "capabilities" : [ "SampleRateShading" ]
5030         },
5031         {
5032           "enumerant" : "SampleMask",
5033           "value" : 20,
5034           "capabilities" : [ "SampleRateShading" ]
5035         },
5036         {
5037           "enumerant" : "FragDepth",
5038           "value" : 22,
5039           "capabilities" : [ "Shader" ]
5040         },
5041         {
5042           "enumerant" : "HelperInvocation",
5043           "value" : 23,
5044           "capabilities" : [ "Shader" ]
5045         },
5046         {
5047           "enumerant" : "NumWorkgroups",
5048           "value" : 24
5049         },
5050         {
5051           "enumerant" : "WorkgroupSize",
5052           "value" : 25
5053         },
5054         {
5055           "enumerant" : "WorkgroupId",
5056           "value" : 26
5057         },
5058         {
5059           "enumerant" : "LocalInvocationId",
5060           "value" : 27
5061         },
5062         {
5063           "enumerant" : "GlobalInvocationId",
5064           "value" : 28
5065         },
5066         {
5067           "enumerant" : "LocalInvocationIndex",
5068           "value" : 29
5069         },
5070         {
5071           "enumerant" : "WorkDim",
5072           "value" : 30,
5073           "capabilities" : [ "Kernel" ]
5074         },
5075         {
5076           "enumerant" : "GlobalSize",
5077           "value" : 31,
5078           "capabilities" : [ "Kernel" ]
5079         },
5080         {
5081           "enumerant" : "EnqueuedWorkgroupSize",
5082           "value" : 32,
5083           "capabilities" : [ "Kernel" ]
5084         },
5085         {
5086           "enumerant" : "GlobalOffset",
5087           "value" : 33,
5088           "capabilities" : [ "Kernel" ]
5089         },
5090         {
5091           "enumerant" : "GlobalLinearId",
5092           "value" : 34,
5093           "capabilities" : [ "Kernel" ]
5094         },
5095         {
5096           "enumerant" : "SubgroupSize",
5097           "value" : 36,
5098           "capabilities" : [ "Kernel" ]
5099         },
5100         {
5101           "enumerant" : "SubgroupMaxSize",
5102           "value" : 37,
5103           "capabilities" : [ "Kernel" ]
5104         },
5105         {
5106           "enumerant" : "NumSubgroups",
5107           "value" : 38,
5108           "capabilities" : [ "Kernel" ]
5109         },
5110         {
5111           "enumerant" : "NumEnqueuedSubgroups",
5112           "value" : 39,
5113           "capabilities" : [ "Kernel" ]
5114         },
5115         {
5116           "enumerant" : "SubgroupId",
5117           "value" : 40,
5118           "capabilities" : [ "Kernel" ]
5119         },
5120         {
5121           "enumerant" : "SubgroupLocalInvocationId",
5122           "value" : 41,
5123           "capabilities" : [ "Kernel" ]
5124         },
5125         {
5126           "enumerant" : "VertexIndex",
5127           "value" : 42,
5128           "capabilities" : [ "Shader" ]
5129         },
5130         {
5131           "enumerant" : "InstanceIndex",
5132           "value" : 43,
5133           "capabilities" : [ "Shader" ]
5134         },
5135         {
5136           "enumerant" : "SubgroupEqMaskKHR",
5137           "value" : 4416,
5138           "capabilities" : [ "SubgroupBallotKHR" ]
5139         },
5140         {
5141           "enumerant" : "SubgroupGeMaskKHR",
5142           "value" : 4417,
5143           "capabilities" : [ "SubgroupBallotKHR" ]
5144         },
5145         {
5146           "enumerant" : "SubgroupGtMaskKHR",
5147           "value" : 4418,
5148           "capabilities" : [ "SubgroupBallotKHR" ]
5149         },
5150         {
5151           "enumerant" : "SubgroupLeMaskKHR",
5152           "value" : 4419,
5153           "capabilities" : [ "SubgroupBallotKHR" ]
5154         },
5155         {
5156           "enumerant" : "SubgroupLtMaskKHR",
5157           "value" : 4420,
5158           "capabilities" : [ "SubgroupBallotKHR" ]
5159         },
5160         {
5161           "enumerant" : "BaseVertex",
5162           "value" : 4424,
5163           "capabilities" : [ "DrawParameters" ]
5164         },
5165         {
5166           "enumerant" : "BaseInstance",
5167           "value" : 4425,
5168           "capabilities" : [ "DrawParameters" ]
5169         },
5170         {
5171           "enumerant" : "DrawIndex",
5172           "value" : 4426,
5173           "capabilities" : [ "DrawParameters" ]
5174         },
5175         {
5176           "enumerant" : "DeviceIndex",
5177           "value" : 4438,
5178           "capabilities" : [ "DeviceGroup" ]
5179         },
5180         {
5181           "enumerant" : "ViewIndex",
5182           "value" : 4440,
5183           "capabilities" : [ "MultiView" ]
5184         },
5185         {
5186           "enumerant" : "BaryCoordNoPerspAMD",
5187           "value" : 4992
5188         },
5189         {
5190           "enumerant" : "BaryCoordNoPerspCentroidAMD",
5191           "value" : 4993
5192         },
5193         {
5194           "enumerant" : "BaryCoordNoPerspSampleAMD",
5195           "value" : 4994
5196         },
5197         {
5198           "enumerant" : "BaryCoordSmoothAMD",
5199           "value" : 4995
5200         },
5201         {
5202           "enumerant" : "BaryCoordSmoothCentroidAMD",
5203           "value" : 4996
5204         },
5205         {
5206           "enumerant" : "BaryCoordSmoothSampleAMD",
5207           "value" : 4997
5208         },
5209         {
5210           "enumerant" : "BaryCoordPullModelAMD",
5211           "value" : 4998
5212         },
5213         {
5214           "enumerant" : "ViewportMaskNV",
5215           "value" : 5253,
5216           "capabilities" : [ "ShaderViewportMaskNV" ]
5217         },
5218         {
5219           "enumerant" : "SecondaryPositionNV",
5220           "value" : 5257,
5221           "capabilities" : [ "ShaderStereoViewNV" ]
5222         },
5223         {
5224           "enumerant" : "SecondaryViewportMaskNV",
5225           "value" : 5258,
5226           "capabilities" : [ "ShaderStereoViewNV" ]
5227         },
5228         {
5229           "enumerant" : "PositionPerViewNV",
5230           "value" : 5261,
5231           "capabilities" : [ "PerViewAttributesNV" ]
5232         },
5233         {
5234           "enumerant" : "ViewportMaskPerViewNV",
5235           "value" : 5262,
5236           "capabilities" : [ "PerViewAttributesNV" ]
5237         }
5238       ]
5239     },
5240     {
5241       "category" : "ValueEnum",
5242       "kind" : "Scope",
5243       "enumerants" : [
5244         {
5245           "enumerant" : "CrossDevice",
5246           "value" : 0
5247         },
5248         {
5249           "enumerant" : "Device",
5250           "value" : 1
5251         },
5252         {
5253           "enumerant" : "Workgroup",
5254           "value" : 2
5255         },
5256         {
5257           "enumerant" : "Subgroup",
5258           "value" : 3
5259         },
5260         {
5261           "enumerant" : "Invocation",
5262           "value" : 4
5263         }
5264       ]
5265     },
5266     {
5267       "category" : "ValueEnum",
5268       "kind" : "GroupOperation",
5269       "enumerants" : [
5270         {
5271           "enumerant" : "Reduce",
5272           "value" : 0,
5273           "capabilities" : [ "Kernel" ]
5274         },
5275         {
5276           "enumerant" : "InclusiveScan",
5277           "value" : 1,
5278           "capabilities" : [ "Kernel" ]
5279         },
5280         {
5281           "enumerant" : "ExclusiveScan",
5282           "value" : 2,
5283           "capabilities" : [ "Kernel" ]
5284         }
5285       ]
5286     },
5287     {
5288       "category" : "ValueEnum",
5289       "kind" : "KernelEnqueueFlags",
5290       "enumerants" : [
5291         {
5292           "enumerant" : "NoWait",
5293           "value" : 0,
5294           "capabilities" : [ "Kernel" ]
5295         },
5296         {
5297           "enumerant" : "WaitKernel",
5298           "value" : 1,
5299           "capabilities" : [ "Kernel" ]
5300         },
5301         {
5302           "enumerant" : "WaitWorkGroup",
5303           "value" : 2,
5304           "capabilities" : [ "Kernel" ]
5305         }
5306       ]
5307     },
5308     {
5309       "category" : "ValueEnum",
5310       "kind" : "Capability",
5311       "enumerants" : [
5312         {
5313           "enumerant" : "Matrix",
5314           "value" : 0
5315         },
5316         {
5317           "enumerant" : "Shader",
5318           "value" : 1,
5319           "capabilities" : [ "Matrix" ]
5320         },
5321         {
5322           "enumerant" : "Geometry",
5323           "value" : 2,
5324           "capabilities" : [ "Shader" ]
5325         },
5326         {
5327           "enumerant" : "Tessellation",
5328           "value" : 3,
5329           "capabilities" : [ "Shader" ]
5330         },
5331         {
5332           "enumerant" : "Addresses",
5333           "value" : 4
5334         },
5335         {
5336           "enumerant" : "Linkage",
5337           "value" : 5
5338         },
5339         {
5340           "enumerant" : "Kernel",
5341           "value" : 6
5342         },
5343         {
5344           "enumerant" : "Vector16",
5345           "value" : 7,
5346           "capabilities" : [ "Kernel" ]
5347         },
5348         {
5349           "enumerant" : "Float16Buffer",
5350           "value" : 8,
5351           "capabilities" : [ "Kernel" ]
5352         },
5353         {
5354           "enumerant" : "Float16",
5355           "value" : 9
5356         },
5357         {
5358           "enumerant" : "Float64",
5359           "value" : 10
5360         },
5361         {
5362           "enumerant" : "Int64",
5363           "value" : 11
5364         },
5365         {
5366           "enumerant" : "Int64Atomics",
5367           "value" : 12,
5368           "capabilities" : [ "Int64" ]
5369         },
5370         {
5371           "enumerant" : "ImageBasic",
5372           "value" : 13,
5373           "capabilities" : [ "Kernel" ]
5374         },
5375         {
5376           "enumerant" : "ImageReadWrite",
5377           "value" : 14,
5378           "capabilities" : [ "ImageBasic" ]
5379         },
5380         {
5381           "enumerant" : "ImageMipmap",
5382           "value" : 15,
5383           "capabilities" : [ "ImageBasic" ]
5384         },
5385         {
5386           "enumerant" : "Pipes",
5387           "value" : 17,
5388           "capabilities" : [ "Kernel" ]
5389         },
5390         {
5391           "enumerant" : "Groups",
5392           "value" : 18
5393         },
5394         {
5395           "enumerant" : "DeviceEnqueue",
5396           "value" : 19,
5397           "capabilities" : [ "Kernel" ]
5398         },
5399         {
5400           "enumerant" : "LiteralSampler",
5401           "value" : 20,
5402           "capabilities" : [ "Kernel" ]
5403         },
5404         {
5405           "enumerant" : "AtomicStorage",
5406           "value" : 21,
5407           "capabilities" : [ "Shader" ]
5408         },
5409         {
5410           "enumerant" : "Int16",
5411           "value" : 22
5412         },
5413         {
5414           "enumerant" : "TessellationPointSize",
5415           "value" : 23,
5416           "capabilities" : [ "Tessellation" ]
5417         },
5418         {
5419           "enumerant" : "GeometryPointSize",
5420           "value" : 24,
5421           "capabilities" : [ "Geometry" ]
5422         },
5423         {
5424           "enumerant" : "ImageGatherExtended",
5425           "value" : 25,
5426           "capabilities" : [ "Shader" ]
5427         },
5428         {
5429           "enumerant" : "StorageImageMultisample",
5430           "value" : 27,
5431           "capabilities" : [ "Shader" ]
5432         },
5433         {
5434           "enumerant" : "UniformBufferArrayDynamicIndexing",
5435           "value" : 28,
5436           "capabilities" : [ "Shader" ]
5437         },
5438         {
5439           "enumerant" : "SampledImageArrayDynamicIndexing",
5440           "value" : 29,
5441           "capabilities" : [ "Shader" ]
5442         },
5443         {
5444           "enumerant" : "StorageBufferArrayDynamicIndexing",
5445           "value" : 30,
5446           "capabilities" : [ "Shader" ]
5447         },
5448         {
5449           "enumerant" : "StorageImageArrayDynamicIndexing",
5450           "value" : 31,
5451           "capabilities" : [ "Shader" ]
5452         },
5453         {
5454           "enumerant" : "ClipDistance",
5455           "value" : 32,
5456           "capabilities" : [ "Shader" ]
5457         },
5458         {
5459           "enumerant" : "CullDistance",
5460           "value" : 33,
5461           "capabilities" : [ "Shader" ]
5462         },
5463         {
5464           "enumerant" : "ImageCubeArray",
5465           "value" : 34,
5466           "capabilities" : [ "SampledCubeArray" ]
5467         },
5468         {
5469           "enumerant" : "SampleRateShading",
5470           "value" : 35,
5471           "capabilities" : [ "Shader" ]
5472         },
5473         {
5474           "enumerant" : "ImageRect",
5475           "value" : 36,
5476           "capabilities" : [ "SampledRect" ]
5477         },
5478         {
5479           "enumerant" : "SampledRect",
5480           "value" : 37,
5481           "capabilities" : [ "Shader" ]
5482         },
5483         {
5484           "enumerant" : "GenericPointer",
5485           "value" : 38,
5486           "capabilities" : [ "Addresses" ]
5487         },
5488         {
5489           "enumerant" : "Int8",
5490           "value" : 39,
5491           "capabilities" : [ "Kernel" ]
5492         },
5493         {
5494           "enumerant" : "InputAttachment",
5495           "value" : 40,
5496           "capabilities" : [ "Shader" ]
5497         },
5498         {
5499           "enumerant" : "SparseResidency",
5500           "value" : 41,
5501           "capabilities" : [ "Shader" ]
5502         },
5503         {
5504           "enumerant" : "MinLod",
5505           "value" : 42,
5506           "capabilities" : [ "Shader" ]
5507         },
5508         {
5509           "enumerant" : "Sampled1D",
5510           "value" : 43
5511         },
5512         {
5513           "enumerant" : "Image1D",
5514           "value" : 44,
5515           "capabilities" : [ "Sampled1D" ]
5516         },
5517         {
5518           "enumerant" : "SampledCubeArray",
5519           "value" : 45,
5520           "capabilities" : [ "Shader" ]
5521         },
5522         {
5523           "enumerant" : "SampledBuffer",
5524           "value" : 46
5525         },
5526         {
5527           "enumerant" : "ImageBuffer",
5528           "value" : 47,
5529           "capabilities" : [ "SampledBuffer" ]
5530         },
5531         {
5532           "enumerant" : "ImageMSArray",
5533           "value" : 48,
5534           "capabilities" : [ "Shader" ]
5535         },
5536         {
5537           "enumerant" : "StorageImageExtendedFormats",
5538           "value" : 49,
5539           "capabilities" : [ "Shader" ]
5540         },
5541         {
5542           "enumerant" : "ImageQuery",
5543           "value" : 50,
5544           "capabilities" : [ "Shader" ]
5545         },
5546         {
5547           "enumerant" : "DerivativeControl",
5548           "value" : 51,
5549           "capabilities" : [ "Shader" ]
5550         },
5551         {
5552           "enumerant" : "InterpolationFunction",
5553           "value" : 52,
5554           "capabilities" : [ "Shader" ]
5555         },
5556         {
5557           "enumerant" : "TransformFeedback",
5558           "value" : 53,
5559           "capabilities" : [ "Shader" ]
5560         },
5561         {
5562           "enumerant" : "GeometryStreams",
5563           "value" : 54,
5564           "capabilities" : [ "Geometry" ]
5565         },
5566         {
5567           "enumerant" : "StorageImageReadWithoutFormat",
5568           "value" : 55,
5569           "capabilities" : [ "Shader" ]
5570         },
5571         {
5572           "enumerant" : "StorageImageWriteWithoutFormat",
5573           "value" : 56,
5574           "capabilities" : [ "Shader" ]
5575         },
5576         {
5577           "enumerant" : "MultiViewport",
5578           "value" : 57,
5579           "capabilities" : [ "Geometry" ]
5580         },
5581         {
5582           "enumerant" : "SubgroupDispatch",
5583           "value" : 58,
5584           "capabilities" : [ "DeviceEnqueue" ]
5585         },
5586         {
5587           "enumerant" : "NamedBarrier",
5588           "value" : 59,
5589           "capabilities" : [ "Kernel" ]
5590         },
5591         {
5592           "enumerant" : "PipeStorage",
5593           "value" : 60,
5594           "capabilities" : [ "Pipes" ]
5595         },
5596         {
5597           "enumerant" : "SubgroupBallotKHR",
5598           "value" : 4423,
5599           "extensions" : [ "SPV_KHR_shader_ballot" ]
5600         },
5601         {
5602           "enumerant" : "DrawParameters",
5603           "value" : 4427,
5604           "extensions" : [ "SPV_KHR_shader_draw_parameters" ]
5605         },
5606         {
5607           "enumerant" : "SubgroupVoteKHR",
5608           "value" : 4431,
5609           "extensions" : [ "SPV_KHR_subgroup_vote" ]
5610         },
5611         {
5612           "enumerant" : "StorageBuffer16BitAccess",
5613           "value" : 4433,
5614           "extensions" : [ "SPV_KHR_16bit_storage" ]
5615         },
5616         {
5617           "enumerant" : "StorageUniformBufferBlock16",
5618           "value" : 4433,
5619           "extensions" : [ "SPV_KHR_16bit_storage" ]
5620         },
5621         {
5622           "enumerant" : "UniformAndStorageBuffer16BitAccess",
5623           "value" : 4434,
5624           "capabilities" : [
5625             "StorageBuffer16BitAccess",
5626             "StorageUniformBufferBlock16"
5627           ],
5628           "extensions" : [ "SPV_KHR_16bit_storage" ]
5629         },
5630         {
5631           "enumerant" : "StorageUniform16",
5632           "value" : 4434,
5633           "capabilities" : [
5634             "StorageBuffer16BitAccess",
5635             "StorageUniformBufferBlock16"
5636           ],
5637           "extensions" : [ "SPV_KHR_16bit_storage" ]
5638         },
5639         {
5640           "enumerant" : "StoragePushConstant16",
5641           "value" : 4435,
5642           "extensions" : [ "SPV_KHR_16bit_storage" ]
5643         },
5644         {
5645           "enumerant" : "StorageInputOutput16",
5646           "value" : 4436,
5647           "extensions" : [ "SPV_KHR_16bit_storage" ]
5648         },
5649         {
5650           "enumerant" : "DeviceGroup",
5651           "value" : 4437,
5652           "extensions" : [ "SPV_KHR_device_group" ]
5653         },
5654         {
5655           "enumerant" : "MultiView",
5656           "value" : 4439,
5657           "capabilities" : [ "Shader" ],
5658           "extensions" : [ "SPV_KHR_multiview" ]
5659         },
5660         {
5661           "enumerant" : "VariablePointersStorageBuffer",
5662           "value" : 4441,
5663           "capabilities" : [ "Shader" ],
5664           "extensions" : [ "SPV_KHR_variable_pointers" ]
5665         },
5666         {
5667           "enumerant" : "VariablePointers",
5668           "value" : 4442,
5669           "capabilities" : [ "VariablePointersStorageBuffer" ],
5670           "extensions" : [ "SPV_KHR_variable_pointers" ]
5671         },
5672         {          "enumerant" : "AtomicStorageOps",
5673           "value" : 4445,
5674           "extensions" : [ "SPV_KHR_shader_atomic_counter_ops" ]
5675         },
5676         {
5677           "enumerant" : "SampleMaskPostDepthCoverage",
5678           "value" : 4447,
5679           "capabilities" : [ "SampleRateShading" ],
5680           "extensions" : [ "SPV_KHR_post_depth_coverage" ]
5681         },
5682         {
5683           "enumerant" : "ImageGatherBiasLodAMD",
5684           "value" : 5009,
5685           "capabilities" : [ "Shader" ],
5686           "extensions" : [ "SPV_AMD_texture_gather_bias_lod" ]
5687         },
5688         {
5689           "enumerant" : "SampleMaskOverrideCoverageNV",
5690           "value" : 5249,
5691           "capabilities" : [ "SampleRateShading" ],
5692           "extensions" : [ "SPV_NV_sample_mask_override_coverage" ]
5693         },
5694         {
5695           "enumerant" : "GeometryShaderPassthroughNV",
5696           "value" : 5251,
5697           "capabilities" : [ "Geometry" ],
5698           "extensions" : [ "SPV_NV_geometry_shader_passthrough" ]
5699         },
5700         {
5701           "enumerant" : "ShaderViewportIndexLayerNV",
5702           "value" : 5254,
5703           "capabilities" : [ "MultiViewport" ],
5704           "extensions" : [ "SPV_NV_viewport_array2" ]
5705         },
5706         {
5707           "enumerant" : "ShaderViewportMaskNV",
5708           "value" : 5255,
5709           "capabilities" : [ "ShaderViewportIndexLayerNV" ],
5710           "extensions" : [ "SPV_NV_viewport_array2" ]
5711         },
5712         {
5713           "enumerant" : "ShaderStereoViewNV",
5714           "value" : 5259,
5715           "capabilities" : [ "ShaderViewportMaskNV" ],
5716           "extensions" : [ "SPV_NV_stereo_view_rendering" ]
5717         },
5718         {
5719           "enumerant" : "PerViewAttributesNV",
5720           "value" : 5260,
5721           "capabilities" : [ "MultiView" ],
5722           "extensions" : [ "SPV_NVX_multiview_per_view_attributes" ]
5723         }
5724       ]
5725     },
5726     {
5727       "category" : "Id",
5728       "kind" : "IdResultType",
5729       "doc" : "Reference to an <id> representing the result's type of the enclosing instruction"
5730     },
5731     {
5732       "category" : "Id",
5733       "kind" : "IdResult",
5734       "doc" : "Definition of an <id> representing the result of the enclosing instruction"
5735     },
5736     {
5737       "category" : "Id",
5738       "kind" : "IdMemorySemantics",
5739       "doc" : "Reference to an <id> representing a 32-bit integer that is a mask from the MemorySemantics operand kind"
5740     },
5741     {
5742       "category" : "Id",
5743       "kind" : "IdScope",
5744       "doc" : "Reference to an <id> representing a 32-bit integer that is a mask from the Scope operand kind"
5745     },
5746     {
5747       "category" : "Id",
5748       "kind" : "IdRef",
5749       "doc" : "Reference to an <id>"
5750     },
5751     {
5752       "category" : "Literal",
5753       "kind" : "LiteralInteger",
5754       "doc" : "An integer consuming one or more words"
5755     },
5756     {
5757       "category" : "Literal",
5758       "kind" : "LiteralString",
5759       "doc" : "A null-terminated stream of characters consuming an integral number of words"
5760     },
5761     {
5762       "category" : "Literal",
5763       "kind" : "LiteralContextDependentNumber",
5764       "doc" : "A literal number whose size and format are determined by a previous operand in the enclosing instruction"
5765     },
5766     {
5767       "category" : "Literal",
5768       "kind" : "LiteralExtInstInteger",
5769       "doc" : "A 32-bit unsigned integer indicating which instruction to use and determining the layout of following operands (for OpExtInst)"
5770     },
5771     {
5772       "category" : "Literal",
5773       "kind" : "LiteralSpecConstantOpInteger",
5774       "doc" : "An opcode indicating the operation to be performed and determining the layout of following operands (for OpSpecConstantOp)"
5775     },
5776     {
5777       "category" : "Composite",
5778       "kind" : "PairLiteralIntegerIdRef",
5779       "bases" : [ "LiteralInteger", "IdRef" ]
5780     },
5781     {
5782       "category" : "Composite",
5783       "kind" : "PairIdRefLiteralInteger",
5784       "bases" : [ "IdRef", "LiteralInteger" ]
5785     },
5786     {
5787       "category" : "Composite",
5788       "kind" : "PairIdRefIdRef",
5789       "bases" : [ "IdRef", "IdRef" ]
5790     }
5791   ]
5792 }