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