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" : 6,
     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" : [ "Addresses" ]
    564     },
    565     {
    566       "opname" : "OpArrayLength",
    567       "opcode" : 68,
    568       "operands" : [
    569         { "kind" : "IdResultType" },
    570         { "kind" : "IdResult" },
    571         { "kind" : "IdRef",          "name" : "'Structure'" },
    572         { "kind" : "LiteralInteger", "name" : "'Array member'" }
    573       ],
    574       "capabilities" : [ "Shader" ]
    575     },
    576     {
    577       "opname" : "OpGenericPtrMemSemantics",
    578       "opcode" : 69,
    579       "operands" : [
    580         { "kind" : "IdResultType" },
    581         { "kind" : "IdResult" },
    582         { "kind" : "IdRef",        "name" : "'Pointer'" }
    583       ],
    584       "capabilities" : [ "Kernel" ]
    585     },
    586     {
    587       "opname" : "OpInBoundsPtrAccessChain",
    588       "opcode" : 70,
    589       "operands" : [
    590         { "kind" : "IdResultType" },
    591         { "kind" : "IdResult" },
    592         { "kind" : "IdRef",                            "name" : "'Base'" },
    593         { "kind" : "IdRef",                            "name" : "'Element'" },
    594         { "kind" : "IdRef",        "quantifier" : "*", "name" : "'Indexes'" }
    595       ],
    596       "capabilities" : [ "Addresses" ]
    597     },
    598     {
    599       "opname" : "OpDecorate",
    600       "opcode" : 71,
    601       "operands" : [
    602         { "kind" : "IdRef",      "name" : "'Target'" },
    603         { "kind" : "Decoration" }
    604       ]
    605     },
    606     {
    607       "opname" : "OpMemberDecorate",
    608       "opcode" : 72,
    609       "operands" : [
    610         { "kind" : "IdRef",          "name" : "'Structure Type'" },
    611         { "kind" : "LiteralInteger", "name" : "'Member'" },
    612         { "kind" : "Decoration" }
    613       ]
    614     },
    615     {
    616       "opname" : "OpDecorationGroup",
    617       "opcode" : 73,
    618       "operands" : [
    619         { "kind" : "IdResult" }
    620       ]
    621     },
    622     {
    623       "opname" : "OpGroupDecorate",
    624       "opcode" : 74,
    625       "operands" : [
    626         { "kind" : "IdRef",                     "name" : "'Decoration Group'" },
    627         { "kind" : "IdRef", "quantifier" : "*", "name" : "'Targets'" }
    628       ]
    629     },
    630     {
    631       "opname" : "OpGroupMemberDecorate",
    632       "opcode" : 75,
    633       "operands" : [
    634         { "kind" : "IdRef",                                       "name" : "'Decoration Group'" },
    635         { "kind" : "PairIdRefLiteralInteger", "quantifier" : "*", "name" : "'Targets'" }
    636       ]
    637     },
    638     {
    639       "opname" : "OpVectorExtractDynamic",
    640       "opcode" : 77,
    641       "operands" : [
    642         { "kind" : "IdResultType" },
    643         { "kind" : "IdResult" },
    644         { "kind" : "IdRef",        "name" : "'Vector'" },
    645         { "kind" : "IdRef",        "name" : "'Index'" }
    646       ]
    647     },
    648     {
    649       "opname" : "OpVectorInsertDynamic",
    650       "opcode" : 78,
    651       "operands" : [
    652         { "kind" : "IdResultType" },
    653         { "kind" : "IdResult" },
    654         { "kind" : "IdRef",        "name" : "'Vector'" },
    655         { "kind" : "IdRef",        "name" : "'Component'" },
    656         { "kind" : "IdRef",        "name" : "'Index'" }
    657       ]
    658     },
    659     {
    660       "opname" : "OpVectorShuffle",
    661       "opcode" : 79,
    662       "operands" : [
    663         { "kind" : "IdResultType" },
    664         { "kind" : "IdResult" },
    665         { "kind" : "IdRef",                              "name" : "'Vector 1'" },
    666         { "kind" : "IdRef",                              "name" : "'Vector 2'" },
    667         { "kind" : "LiteralInteger", "quantifier" : "*", "name" : "'Components'" }
    668       ]
    669     },
    670     {
    671       "opname" : "OpCompositeConstruct",
    672       "opcode" : 80,
    673       "operands" : [
    674         { "kind" : "IdResultType" },
    675         { "kind" : "IdResult" },
    676         { "kind" : "IdRef",        "quantifier" : "*", "name" : "'Constituents'" }
    677       ]
    678     },
    679     {
    680       "opname" : "OpCompositeExtract",
    681       "opcode" : 81,
    682       "operands" : [
    683         { "kind" : "IdResultType" },
    684         { "kind" : "IdResult" },
    685         { "kind" : "IdRef",                              "name" : "'Composite'" },
    686         { "kind" : "LiteralInteger", "quantifier" : "*", "name" : "'Indexes'" }
    687       ]
    688     },
    689     {
    690       "opname" : "OpCompositeInsert",
    691       "opcode" : 82,
    692       "operands" : [
    693         { "kind" : "IdResultType" },
    694         { "kind" : "IdResult" },
    695         { "kind" : "IdRef",                              "name" : "'Object'" },
    696         { "kind" : "IdRef",                              "name" : "'Composite'" },
    697         { "kind" : "LiteralInteger", "quantifier" : "*", "name" : "'Indexes'" }
    698       ]
    699     },
    700     {
    701       "opname" : "OpCopyObject",
    702       "opcode" : 83,
    703       "operands" : [
    704         { "kind" : "IdResultType" },
    705         { "kind" : "IdResult" },
    706         { "kind" : "IdRef",        "name" : "'Operand'" }
    707       ]
    708     },
    709     {
    710       "opname" : "OpTranspose",
    711       "opcode" : 84,
    712       "operands" : [
    713         { "kind" : "IdResultType" },
    714         { "kind" : "IdResult" },
    715         { "kind" : "IdRef",        "name" : "'Matrix'" }
    716       ],
    717       "capabilities" : [ "Matrix" ]
    718     },
    719     {
    720       "opname" : "OpSampledImage",
    721       "opcode" : 86,
    722       "operands" : [
    723         { "kind" : "IdResultType" },
    724         { "kind" : "IdResult" },
    725         { "kind" : "IdRef",        "name" : "'Image'" },
    726         { "kind" : "IdRef",        "name" : "'Sampler'" }
    727       ]
    728     },
    729     {
    730       "opname" : "OpImageSampleImplicitLod",
    731       "opcode" : 87,
    732       "operands" : [
    733         { "kind" : "IdResultType" },
    734         { "kind" : "IdResult" },
    735         { "kind" : "IdRef",                             "name" : "'Sampled Image'" },
    736         { "kind" : "IdRef",                             "name" : "'Coordinate'" },
    737         { "kind" : "ImageOperands", "quantifier" : "?" }
    738       ],
    739       "capabilities" : [ "Shader" ]
    740     },
    741     {
    742       "opname" : "OpImageSampleExplicitLod",
    743       "opcode" : 88,
    744       "operands" : [
    745         { "kind" : "IdResultType" },
    746         { "kind" : "IdResult" },
    747         { "kind" : "IdRef",         "name" : "'Sampled Image'" },
    748         { "kind" : "IdRef",         "name" : "'Coordinate'" },
    749         { "kind" : "ImageOperands" }
    750       ]
    751     },
    752     {
    753       "opname" : "OpImageSampleDrefImplicitLod",
    754       "opcode" : 89,
    755       "operands" : [
    756         { "kind" : "IdResultType" },
    757         { "kind" : "IdResult" },
    758         { "kind" : "IdRef",                             "name" : "'Sampled Image'" },
    759         { "kind" : "IdRef",                             "name" : "'Coordinate'" },
    760         { "kind" : "IdRef",                             "name" : "'D~ref~'" },
    761         { "kind" : "ImageOperands", "quantifier" : "?" }
    762       ],
    763       "capabilities" : [ "Shader" ]
    764     },
    765     {
    766       "opname" : "OpImageSampleDrefExplicitLod",
    767       "opcode" : 90,
    768       "operands" : [
    769         { "kind" : "IdResultType" },
    770         { "kind" : "IdResult" },
    771         { "kind" : "IdRef",         "name" : "'Sampled Image'" },
    772         { "kind" : "IdRef",         "name" : "'Coordinate'" },
    773         { "kind" : "IdRef",         "name" : "'D~ref~'" },
    774         { "kind" : "ImageOperands" }
    775       ],
    776       "capabilities" : [ "Shader" ]
    777     },
    778     {
    779       "opname" : "OpImageSampleProjImplicitLod",
    780       "opcode" : 91,
    781       "operands" : [
    782         { "kind" : "IdResultType" },
    783         { "kind" : "IdResult" },
    784         { "kind" : "IdRef",                             "name" : "'Sampled Image'" },
    785         { "kind" : "IdRef",                             "name" : "'Coordinate'" },
    786         { "kind" : "ImageOperands", "quantifier" : "?" }
    787       ],
    788       "capabilities" : [ "Shader" ]
    789     },
    790     {
    791       "opname" : "OpImageSampleProjExplicitLod",
    792       "opcode" : 92,
    793       "operands" : [
    794         { "kind" : "IdResultType" },
    795         { "kind" : "IdResult" },
    796         { "kind" : "IdRef",         "name" : "'Sampled Image'" },
    797         { "kind" : "IdRef",         "name" : "'Coordinate'" },
    798         { "kind" : "ImageOperands" }
    799       ],
    800       "capabilities" : [ "Shader" ]
    801     },
    802     {
    803       "opname" : "OpImageSampleProjDrefImplicitLod",
    804       "opcode" : 93,
    805       "operands" : [
    806         { "kind" : "IdResultType" },
    807         { "kind" : "IdResult" },
    808         { "kind" : "IdRef",                             "name" : "'Sampled Image'" },
    809         { "kind" : "IdRef",                             "name" : "'Coordinate'" },
    810         { "kind" : "IdRef",                             "name" : "'D~ref~'" },
    811         { "kind" : "ImageOperands", "quantifier" : "?" }
    812       ],
    813       "capabilities" : [ "Shader" ]
    814     },
    815     {
    816       "opname" : "OpImageSampleProjDrefExplicitLod",
    817       "opcode" : 94,
    818       "operands" : [
    819         { "kind" : "IdResultType" },
    820         { "kind" : "IdResult" },
    821         { "kind" : "IdRef",         "name" : "'Sampled Image'" },
    822         { "kind" : "IdRef",         "name" : "'Coordinate'" },
    823         { "kind" : "IdRef",         "name" : "'D~ref~'" },
    824         { "kind" : "ImageOperands" }
    825       ],
    826       "capabilities" : [ "Shader" ]
    827     },
    828     {
    829       "opname" : "OpImageFetch",
    830       "opcode" : 95,
    831       "operands" : [
    832         { "kind" : "IdResultType" },
    833         { "kind" : "IdResult" },
    834         { "kind" : "IdRef",                             "name" : "'Image'" },
    835         { "kind" : "IdRef",                             "name" : "'Coordinate'" },
    836         { "kind" : "ImageOperands", "quantifier" : "?" }
    837       ]
    838     },
    839     {
    840       "opname" : "OpImageGather",
    841       "opcode" : 96,
    842       "operands" : [
    843         { "kind" : "IdResultType" },
    844         { "kind" : "IdResult" },
    845         { "kind" : "IdRef",                             "name" : "'Sampled Image'" },
    846         { "kind" : "IdRef",                             "name" : "'Coordinate'" },
    847         { "kind" : "IdRef",                             "name" : "'Component'" },
    848         { "kind" : "ImageOperands", "quantifier" : "?" }
    849       ],
    850       "capabilities" : [ "Shader" ]
    851     },
    852     {
    853       "opname" : "OpImageDrefGather",
    854       "opcode" : 97,
    855       "operands" : [
    856         { "kind" : "IdResultType" },
    857         { "kind" : "IdResult" },
    858         { "kind" : "IdRef",                             "name" : "'Sampled Image'" },
    859         { "kind" : "IdRef",                             "name" : "'Coordinate'" },
    860         { "kind" : "IdRef",                             "name" : "'D~ref~'" },
    861         { "kind" : "ImageOperands", "quantifier" : "?" }
    862       ],
    863       "capabilities" : [ "Shader" ]
    864     },
    865     {
    866       "opname" : "OpImageRead",
    867       "opcode" : 98,
    868       "operands" : [
    869         { "kind" : "IdResultType" },
    870         { "kind" : "IdResult" },
    871         { "kind" : "IdRef",                             "name" : "'Image'" },
    872         { "kind" : "IdRef",                             "name" : "'Coordinate'" },
    873         { "kind" : "ImageOperands", "quantifier" : "?" }
    874       ]
    875     },
    876     {
    877       "opname" : "OpImageWrite",
    878       "opcode" : 99,
    879       "operands" : [
    880         { "kind" : "IdRef",                             "name" : "'Image'" },
    881         { "kind" : "IdRef",                             "name" : "'Coordinate'" },
    882         { "kind" : "IdRef",                             "name" : "'Texel'" },
    883         { "kind" : "ImageOperands", "quantifier" : "?" }
    884       ]
    885     },
    886     {
    887       "opname" : "OpImage",
    888       "opcode" : 100,
    889       "operands" : [
    890         { "kind" : "IdResultType" },
    891         { "kind" : "IdResult" },
    892         { "kind" : "IdRef",        "name" : "'Sampled Image'" }
    893       ]
    894     },
    895     {
    896       "opname" : "OpImageQueryFormat",
    897       "opcode" : 101,
    898       "operands" : [
    899         { "kind" : "IdResultType" },
    900         { "kind" : "IdResult" },
    901         { "kind" : "IdRef",        "name" : "'Image'" }
    902       ],
    903       "capabilities" : [ "Kernel" ]
    904     },
    905     {
    906       "opname" : "OpImageQueryOrder",
    907       "opcode" : 102,
    908       "operands" : [
    909         { "kind" : "IdResultType" },
    910         { "kind" : "IdResult" },
    911         { "kind" : "IdRef",        "name" : "'Image'" }
    912       ],
    913       "capabilities" : [ "Kernel" ]
    914     },
    915     {
    916       "opname" : "OpImageQuerySizeLod",
    917       "opcode" : 103,
    918       "operands" : [
    919         { "kind" : "IdResultType" },
    920         { "kind" : "IdResult" },
    921         { "kind" : "IdRef",        "name" : "'Image'" },
    922         { "kind" : "IdRef",        "name" : "'Level of Detail'" }
    923       ],
    924       "capabilities" : [ "Kernel", "ImageQuery" ]
    925     },
    926     {
    927       "opname" : "OpImageQuerySize",
    928       "opcode" : 104,
    929       "operands" : [
    930         { "kind" : "IdResultType" },
    931         { "kind" : "IdResult" },
    932         { "kind" : "IdRef",        "name" : "'Image'" }
    933       ],
    934       "capabilities" : [ "Kernel", "ImageQuery" ]
    935     },
    936     {
    937       "opname" : "OpImageQueryLod",
    938       "opcode" : 105,
    939       "operands" : [
    940         { "kind" : "IdResultType" },
    941         { "kind" : "IdResult" },
    942         { "kind" : "IdRef",        "name" : "'Sampled Image'" },
    943         { "kind" : "IdRef",        "name" : "'Coordinate'" }
    944       ],
    945       "capabilities" : [ "ImageQuery" ]
    946     },
    947     {
    948       "opname" : "OpImageQueryLevels",
    949       "opcode" : 106,
    950       "operands" : [
    951         { "kind" : "IdResultType" },
    952         { "kind" : "IdResult" },
    953         { "kind" : "IdRef",        "name" : "'Image'" }
    954       ],
    955       "capabilities" : [ "Kernel", "ImageQuery" ]
    956     },
    957     {
    958       "opname" : "OpImageQuerySamples",
    959       "opcode" : 107,
    960       "operands" : [
    961         { "kind" : "IdResultType" },
    962         { "kind" : "IdResult" },
    963         { "kind" : "IdRef",        "name" : "'Image'" }
    964       ],
    965       "capabilities" : [ "Kernel", "ImageQuery" ]
    966     },
    967     {
    968       "opname" : "OpConvertFToU",
    969       "opcode" : 109,
    970       "operands" : [
    971         { "kind" : "IdResultType" },
    972         { "kind" : "IdResult" },
    973         { "kind" : "IdRef",        "name" : "'Float Value'" }
    974       ]
    975     },
    976     {
    977       "opname" : "OpConvertFToS",
    978       "opcode" : 110,
    979       "operands" : [
    980         { "kind" : "IdResultType" },
    981         { "kind" : "IdResult" },
    982         { "kind" : "IdRef",        "name" : "'Float Value'" }
    983       ]
    984     },
    985     {
    986       "opname" : "OpConvertSToF",
    987       "opcode" : 111,
    988       "operands" : [
    989         { "kind" : "IdResultType" },
    990         { "kind" : "IdResult" },
    991         { "kind" : "IdRef",        "name" : "'Signed Value'" }
    992       ]
    993     },
    994     {
    995       "opname" : "OpConvertUToF",
    996       "opcode" : 112,
    997       "operands" : [
    998         { "kind" : "IdResultType" },
    999         { "kind" : "IdResult" },
   1000         { "kind" : "IdRef",        "name" : "'Unsigned Value'" }
   1001       ]
   1002     },
   1003     {
   1004       "opname" : "OpUConvert",
   1005       "opcode" : 113,
   1006       "operands" : [
   1007         { "kind" : "IdResultType" },
   1008         { "kind" : "IdResult" },
   1009         { "kind" : "IdRef",        "name" : "'Unsigned Value'" }
   1010       ]
   1011     },
   1012     {
   1013       "opname" : "OpSConvert",
   1014       "opcode" : 114,
   1015       "operands" : [
   1016         { "kind" : "IdResultType" },
   1017         { "kind" : "IdResult" },
   1018         { "kind" : "IdRef",        "name" : "'Signed Value'" }
   1019       ]
   1020     },
   1021     {
   1022       "opname" : "OpFConvert",
   1023       "opcode" : 115,
   1024       "operands" : [
   1025         { "kind" : "IdResultType" },
   1026         { "kind" : "IdResult" },
   1027         { "kind" : "IdRef",        "name" : "'Float Value'" }
   1028       ]
   1029     },
   1030     {
   1031       "opname" : "OpQuantizeToF16",
   1032       "opcode" : 116,
   1033       "operands" : [
   1034         { "kind" : "IdResultType" },
   1035         { "kind" : "IdResult" },
   1036         { "kind" : "IdRef",        "name" : "'Value'" }
   1037       ]
   1038     },
   1039     {
   1040       "opname" : "OpConvertPtrToU",
   1041       "opcode" : 117,
   1042       "operands" : [
   1043         { "kind" : "IdResultType" },
   1044         { "kind" : "IdResult" },
   1045         { "kind" : "IdRef",        "name" : "'Pointer'" }
   1046       ],
   1047       "capabilities" : [ "Addresses" ]
   1048     },
   1049     {
   1050       "opname" : "OpSatConvertSToU",
   1051       "opcode" : 118,
   1052       "operands" : [
   1053         { "kind" : "IdResultType" },
   1054         { "kind" : "IdResult" },
   1055         { "kind" : "IdRef",        "name" : "'Signed Value'" }
   1056       ],
   1057       "capabilities" : [ "Kernel" ]
   1058     },
   1059     {
   1060       "opname" : "OpSatConvertUToS",
   1061       "opcode" : 119,
   1062       "operands" : [
   1063         { "kind" : "IdResultType" },
   1064         { "kind" : "IdResult" },
   1065         { "kind" : "IdRef",        "name" : "'Unsigned Value'" }
   1066       ],
   1067       "capabilities" : [ "Kernel" ]
   1068     },
   1069     {
   1070       "opname" : "OpConvertUToPtr",
   1071       "opcode" : 120,
   1072       "operands" : [
   1073         { "kind" : "IdResultType" },
   1074         { "kind" : "IdResult" },
   1075         { "kind" : "IdRef",        "name" : "'Integer Value'" }
   1076       ],
   1077       "capabilities" : [ "Addresses" ]
   1078     },
   1079     {
   1080       "opname" : "OpPtrCastToGeneric",
   1081       "opcode" : 121,
   1082       "operands" : [
   1083         { "kind" : "IdResultType" },
   1084         { "kind" : "IdResult" },
   1085         { "kind" : "IdRef",        "name" : "'Pointer'" }
   1086       ],
   1087       "capabilities" : [ "Kernel" ]
   1088     },
   1089     {
   1090       "opname" : "OpGenericCastToPtr",
   1091       "opcode" : 122,
   1092       "operands" : [
   1093         { "kind" : "IdResultType" },
   1094         { "kind" : "IdResult" },
   1095         { "kind" : "IdRef",        "name" : "'Pointer'" }
   1096       ],
   1097       "capabilities" : [ "Kernel" ]
   1098     },
   1099     {
   1100       "opname" : "OpGenericCastToPtrExplicit",
   1101       "opcode" : 123,
   1102       "operands" : [
   1103         { "kind" : "IdResultType" },
   1104         { "kind" : "IdResult" },
   1105         { "kind" : "IdRef",        "name" : "'Pointer'" },
   1106         { "kind" : "StorageClass", "name" : "'Storage'" }
   1107       ],
   1108       "capabilities" : [ "Kernel" ]
   1109     },
   1110     {
   1111       "opname" : "OpBitcast",
   1112       "opcode" : 124,
   1113       "operands" : [
   1114         { "kind" : "IdResultType" },
   1115         { "kind" : "IdResult" },
   1116         { "kind" : "IdRef",        "name" : "'Operand'" }
   1117       ]
   1118     },
   1119     {
   1120       "opname" : "OpSNegate",
   1121       "opcode" : 126,
   1122       "operands" : [
   1123         { "kind" : "IdResultType" },
   1124         { "kind" : "IdResult" },
   1125         { "kind" : "IdRef",        "name" : "'Operand'" }
   1126       ]
   1127     },
   1128     {
   1129       "opname" : "OpFNegate",
   1130       "opcode" : 127,
   1131       "operands" : [
   1132         { "kind" : "IdResultType" },
   1133         { "kind" : "IdResult" },
   1134         { "kind" : "IdRef",        "name" : "'Operand'" }
   1135       ]
   1136     },
   1137     {
   1138       "opname" : "OpIAdd",
   1139       "opcode" : 128,
   1140       "operands" : [
   1141         { "kind" : "IdResultType" },
   1142         { "kind" : "IdResult" },
   1143         { "kind" : "IdRef",        "name" : "'Operand 1'" },
   1144         { "kind" : "IdRef",        "name" : "'Operand 2'" }
   1145       ]
   1146     },
   1147     {
   1148       "opname" : "OpFAdd",
   1149       "opcode" : 129,
   1150       "operands" : [
   1151         { "kind" : "IdResultType" },
   1152         { "kind" : "IdResult" },
   1153         { "kind" : "IdRef",        "name" : "'Operand 1'" },
   1154         { "kind" : "IdRef",        "name" : "'Operand 2'" }
   1155       ]
   1156     },
   1157     {
   1158       "opname" : "OpISub",
   1159       "opcode" : 130,
   1160       "operands" : [
   1161         { "kind" : "IdResultType" },
   1162         { "kind" : "IdResult" },
   1163         { "kind" : "IdRef",        "name" : "'Operand 1'" },
   1164         { "kind" : "IdRef",        "name" : "'Operand 2'" }
   1165       ]
   1166     },
   1167     {
   1168       "opname" : "OpFSub",
   1169       "opcode" : 131,
   1170       "operands" : [
   1171         { "kind" : "IdResultType" },
   1172         { "kind" : "IdResult" },
   1173         { "kind" : "IdRef",        "name" : "'Operand 1'" },
   1174         { "kind" : "IdRef",        "name" : "'Operand 2'" }
   1175       ]
   1176     },
   1177     {
   1178       "opname" : "OpIMul",
   1179       "opcode" : 132,
   1180       "operands" : [
   1181         { "kind" : "IdResultType" },
   1182         { "kind" : "IdResult" },
   1183         { "kind" : "IdRef",        "name" : "'Operand 1'" },
   1184         { "kind" : "IdRef",        "name" : "'Operand 2'" }
   1185       ]
   1186     },
   1187     {
   1188       "opname" : "OpFMul",
   1189       "opcode" : 133,
   1190       "operands" : [
   1191         { "kind" : "IdResultType" },
   1192         { "kind" : "IdResult" },
   1193         { "kind" : "IdRef",        "name" : "'Operand 1'" },
   1194         { "kind" : "IdRef",        "name" : "'Operand 2'" }
   1195       ]
   1196     },
   1197     {
   1198       "opname" : "OpUDiv",
   1199       "opcode" : 134,
   1200       "operands" : [
   1201         { "kind" : "IdResultType" },
   1202         { "kind" : "IdResult" },
   1203         { "kind" : "IdRef",        "name" : "'Operand 1'" },
   1204         { "kind" : "IdRef",        "name" : "'Operand 2'" }
   1205       ]
   1206     },
   1207     {
   1208       "opname" : "OpSDiv",
   1209       "opcode" : 135,
   1210       "operands" : [
   1211         { "kind" : "IdResultType" },
   1212         { "kind" : "IdResult" },
   1213         { "kind" : "IdRef",        "name" : "'Operand 1'" },
   1214         { "kind" : "IdRef",        "name" : "'Operand 2'" }
   1215       ]
   1216     },
   1217     {
   1218       "opname" : "OpFDiv",
   1219       "opcode" : 136,
   1220       "operands" : [
   1221         { "kind" : "IdResultType" },
   1222         { "kind" : "IdResult" },
   1223         { "kind" : "IdRef",        "name" : "'Operand 1'" },
   1224         { "kind" : "IdRef",        "name" : "'Operand 2'" }
   1225       ]
   1226     },
   1227     {
   1228       "opname" : "OpUMod",
   1229       "opcode" : 137,
   1230       "operands" : [
   1231         { "kind" : "IdResultType" },
   1232         { "kind" : "IdResult" },
   1233         { "kind" : "IdRef",        "name" : "'Operand 1'" },
   1234         { "kind" : "IdRef",        "name" : "'Operand 2'" }
   1235       ]
   1236     },
   1237     {
   1238       "opname" : "OpSRem",
   1239       "opcode" : 138,
   1240       "operands" : [
   1241         { "kind" : "IdResultType" },
   1242         { "kind" : "IdResult" },
   1243         { "kind" : "IdRef",        "name" : "'Operand 1'" },
   1244         { "kind" : "IdRef",        "name" : "'Operand 2'" }
   1245       ]
   1246     },
   1247     {
   1248       "opname" : "OpSMod",
   1249       "opcode" : 139,
   1250       "operands" : [
   1251         { "kind" : "IdResultType" },
   1252         { "kind" : "IdResult" },
   1253         { "kind" : "IdRef",        "name" : "'Operand 1'" },
   1254         { "kind" : "IdRef",        "name" : "'Operand 2'" }
   1255       ]
   1256     },
   1257     {
   1258       "opname" : "OpFRem",
   1259       "opcode" : 140,
   1260       "operands" : [
   1261         { "kind" : "IdResultType" },
   1262         { "kind" : "IdResult" },
   1263         { "kind" : "IdRef",        "name" : "'Operand 1'" },
   1264         { "kind" : "IdRef",        "name" : "'Operand 2'" }
   1265       ]
   1266     },
   1267     {
   1268       "opname" : "OpFMod",
   1269       "opcode" : 141,
   1270       "operands" : [
   1271         { "kind" : "IdResultType" },
   1272         { "kind" : "IdResult" },
   1273         { "kind" : "IdRef",        "name" : "'Operand 1'" },
   1274         { "kind" : "IdRef",        "name" : "'Operand 2'" }
   1275       ]
   1276     },
   1277     {
   1278       "opname" : "OpVectorTimesScalar",
   1279       "opcode" : 142,
   1280       "operands" : [
   1281         { "kind" : "IdResultType" },
   1282         { "kind" : "IdResult" },
   1283         { "kind" : "IdRef",        "name" : "'Vector'" },
   1284         { "kind" : "IdRef",        "name" : "'Scalar'" }
   1285       ]
   1286     },
   1287     {
   1288       "opname" : "OpMatrixTimesScalar",
   1289       "opcode" : 143,
   1290       "operands" : [
   1291         { "kind" : "IdResultType" },
   1292         { "kind" : "IdResult" },
   1293         { "kind" : "IdRef",        "name" : "'Matrix'" },
   1294         { "kind" : "IdRef",        "name" : "'Scalar'" }
   1295       ],
   1296       "capabilities" : [ "Matrix" ]
   1297     },
   1298     {
   1299       "opname" : "OpVectorTimesMatrix",
   1300       "opcode" : 144,
   1301       "operands" : [
   1302         { "kind" : "IdResultType" },
   1303         { "kind" : "IdResult" },
   1304         { "kind" : "IdRef",        "name" : "'Vector'" },
   1305         { "kind" : "IdRef",        "name" : "'Matrix'" }
   1306       ],
   1307       "capabilities" : [ "Matrix" ]
   1308     },
   1309     {
   1310       "opname" : "OpMatrixTimesVector",
   1311       "opcode" : 145,
   1312       "operands" : [
   1313         { "kind" : "IdResultType" },
   1314         { "kind" : "IdResult" },
   1315         { "kind" : "IdRef",        "name" : "'Matrix'" },
   1316         { "kind" : "IdRef",        "name" : "'Vector'" }
   1317       ],
   1318       "capabilities" : [ "Matrix" ]
   1319     },
   1320     {
   1321       "opname" : "OpMatrixTimesMatrix",
   1322       "opcode" : 146,
   1323       "operands" : [
   1324         { "kind" : "IdResultType" },
   1325         { "kind" : "IdResult" },
   1326         { "kind" : "IdRef",        "name" : "'LeftMatrix'" },
   1327         { "kind" : "IdRef",        "name" : "'RightMatrix'" }
   1328       ],
   1329       "capabilities" : [ "Matrix" ]
   1330     },
   1331     {
   1332       "opname" : "OpOuterProduct",
   1333       "opcode" : 147,
   1334       "operands" : [
   1335         { "kind" : "IdResultType" },
   1336         { "kind" : "IdResult" },
   1337         { "kind" : "IdRef",        "name" : "'Vector 1'" },
   1338         { "kind" : "IdRef",        "name" : "'Vector 2'" }
   1339       ],
   1340       "capabilities" : [ "Matrix" ]
   1341     },
   1342     {
   1343       "opname" : "OpDot",
   1344       "opcode" : 148,
   1345       "operands" : [
   1346         { "kind" : "IdResultType" },
   1347         { "kind" : "IdResult" },
   1348         { "kind" : "IdRef",        "name" : "'Vector 1'" },
   1349         { "kind" : "IdRef",        "name" : "'Vector 2'" }
   1350       ]
   1351     },
   1352     {
   1353       "opname" : "OpIAddCarry",
   1354       "opcode" : 149,
   1355       "operands" : [
   1356         { "kind" : "IdResultType" },
   1357         { "kind" : "IdResult" },
   1358         { "kind" : "IdRef",        "name" : "'Operand 1'" },
   1359         { "kind" : "IdRef",        "name" : "'Operand 2'" }
   1360       ]
   1361     },
   1362     {
   1363       "opname" : "OpISubBorrow",
   1364       "opcode" : 150,
   1365       "operands" : [
   1366         { "kind" : "IdResultType" },
   1367         { "kind" : "IdResult" },
   1368         { "kind" : "IdRef",        "name" : "'Operand 1'" },
   1369         { "kind" : "IdRef",        "name" : "'Operand 2'" }
   1370       ]
   1371     },
   1372     {
   1373       "opname" : "OpUMulExtended",
   1374       "opcode" : 151,
   1375       "operands" : [
   1376         { "kind" : "IdResultType" },
   1377         { "kind" : "IdResult" },
   1378         { "kind" : "IdRef",        "name" : "'Operand 1'" },
   1379         { "kind" : "IdRef",        "name" : "'Operand 2'" }
   1380       ]
   1381     },
   1382     {
   1383       "opname" : "OpSMulExtended",
   1384       "opcode" : 152,
   1385       "operands" : [
   1386         { "kind" : "IdResultType" },
   1387         { "kind" : "IdResult" },
   1388         { "kind" : "IdRef",        "name" : "'Operand 1'" },
   1389         { "kind" : "IdRef",        "name" : "'Operand 2'" }
   1390       ]
   1391     },
   1392     {
   1393       "opname" : "OpAny",
   1394       "opcode" : 154,
   1395       "operands" : [
   1396         { "kind" : "IdResultType" },
   1397         { "kind" : "IdResult" },
   1398         { "kind" : "IdRef",        "name" : "'Vector'" }
   1399       ]
   1400     },
   1401     {
   1402       "opname" : "OpAll",
   1403       "opcode" : 155,
   1404       "operands" : [
   1405         { "kind" : "IdResultType" },
   1406         { "kind" : "IdResult" },
   1407         { "kind" : "IdRef",        "name" : "'Vector'" }
   1408       ]
   1409     },
   1410     {
   1411       "opname" : "OpIsNan",
   1412       "opcode" : 156,
   1413       "operands" : [
   1414         { "kind" : "IdResultType" },
   1415         { "kind" : "IdResult" },
   1416         { "kind" : "IdRef",        "name" : "'x'" }
   1417       ]
   1418     },
   1419     {
   1420       "opname" : "OpIsInf",
   1421       "opcode" : 157,
   1422       "operands" : [
   1423         { "kind" : "IdResultType" },
   1424         { "kind" : "IdResult" },
   1425         { "kind" : "IdRef",        "name" : "'x'" }
   1426       ]
   1427     },
   1428     {
   1429       "opname" : "OpIsFinite",
   1430       "opcode" : 158,
   1431       "operands" : [
   1432         { "kind" : "IdResultType" },
   1433         { "kind" : "IdResult" },
   1434         { "kind" : "IdRef",        "name" : "'x'" }
   1435       ],
   1436       "capabilities" : [ "Kernel" ]
   1437     },
   1438     {
   1439       "opname" : "OpIsNormal",
   1440       "opcode" : 159,
   1441       "operands" : [
   1442         { "kind" : "IdResultType" },
   1443         { "kind" : "IdResult" },
   1444         { "kind" : "IdRef",        "name" : "'x'" }
   1445       ],
   1446       "capabilities" : [ "Kernel" ]
   1447     },
   1448     {
   1449       "opname" : "OpSignBitSet",
   1450       "opcode" : 160,
   1451       "operands" : [
   1452         { "kind" : "IdResultType" },
   1453         { "kind" : "IdResult" },
   1454         { "kind" : "IdRef",        "name" : "'x'" }
   1455       ],
   1456       "capabilities" : [ "Kernel" ]
   1457     },
   1458     {
   1459       "opname" : "OpLessOrGreater",
   1460       "opcode" : 161,
   1461       "operands" : [
   1462         { "kind" : "IdResultType" },
   1463         { "kind" : "IdResult" },
   1464         { "kind" : "IdRef",        "name" : "'x'" },
   1465         { "kind" : "IdRef",        "name" : "'y'" }
   1466       ],
   1467       "capabilities" : [ "Kernel" ]
   1468     },
   1469     {
   1470       "opname" : "OpOrdered",
   1471       "opcode" : 162,
   1472       "operands" : [
   1473         { "kind" : "IdResultType" },
   1474         { "kind" : "IdResult" },
   1475         { "kind" : "IdRef",        "name" : "'x'" },
   1476         { "kind" : "IdRef",        "name" : "'y'" }
   1477       ],
   1478       "capabilities" : [ "Kernel" ]
   1479     },
   1480     {
   1481       "opname" : "OpUnordered",
   1482       "opcode" : 163,
   1483       "operands" : [
   1484         { "kind" : "IdResultType" },
   1485         { "kind" : "IdResult" },
   1486         { "kind" : "IdRef",        "name" : "'x'" },
   1487         { "kind" : "IdRef",        "name" : "'y'" }
   1488       ],
   1489       "capabilities" : [ "Kernel" ]
   1490     },
   1491     {
   1492       "opname" : "OpLogicalEqual",
   1493       "opcode" : 164,
   1494       "operands" : [
   1495         { "kind" : "IdResultType" },
   1496         { "kind" : "IdResult" },
   1497         { "kind" : "IdRef",        "name" : "'Operand 1'" },
   1498         { "kind" : "IdRef",        "name" : "'Operand 2'" }
   1499       ]
   1500     },
   1501     {
   1502       "opname" : "OpLogicalNotEqual",
   1503       "opcode" : 165,
   1504       "operands" : [
   1505         { "kind" : "IdResultType" },
   1506         { "kind" : "IdResult" },
   1507         { "kind" : "IdRef",        "name" : "'Operand 1'" },
   1508         { "kind" : "IdRef",        "name" : "'Operand 2'" }
   1509       ]
   1510     },
   1511     {
   1512       "opname" : "OpLogicalOr",
   1513       "opcode" : 166,
   1514       "operands" : [
   1515         { "kind" : "IdResultType" },
   1516         { "kind" : "IdResult" },
   1517         { "kind" : "IdRef",        "name" : "'Operand 1'" },
   1518         { "kind" : "IdRef",        "name" : "'Operand 2'" }
   1519       ]
   1520     },
   1521     {
   1522       "opname" : "OpLogicalAnd",
   1523       "opcode" : 167,
   1524       "operands" : [
   1525         { "kind" : "IdResultType" },
   1526         { "kind" : "IdResult" },
   1527         { "kind" : "IdRef",        "name" : "'Operand 1'" },
   1528         { "kind" : "IdRef",        "name" : "'Operand 2'" }
   1529       ]
   1530     },
   1531     {
   1532       "opname" : "OpLogicalNot",
   1533       "opcode" : 168,
   1534       "operands" : [
   1535         { "kind" : "IdResultType" },
   1536         { "kind" : "IdResult" },
   1537         { "kind" : "IdRef",        "name" : "'Operand'" }
   1538       ]
   1539     },
   1540     {
   1541       "opname" : "OpSelect",
   1542       "opcode" : 169,
   1543       "operands" : [
   1544         { "kind" : "IdResultType" },
   1545         { "kind" : "IdResult" },
   1546         { "kind" : "IdRef",        "name" : "'Condition'" },
   1547         { "kind" : "IdRef",        "name" : "'Object 1'" },
   1548         { "kind" : "IdRef",        "name" : "'Object 2'" }
   1549       ]
   1550     },
   1551     {
   1552       "opname" : "OpIEqual",
   1553       "opcode" : 170,
   1554       "operands" : [
   1555         { "kind" : "IdResultType" },
   1556         { "kind" : "IdResult" },
   1557         { "kind" : "IdRef",        "name" : "'Operand 1'" },
   1558         { "kind" : "IdRef",        "name" : "'Operand 2'" }
   1559       ]
   1560     },
   1561     {
   1562       "opname" : "OpINotEqual",
   1563       "opcode" : 171,
   1564       "operands" : [
   1565         { "kind" : "IdResultType" },
   1566         { "kind" : "IdResult" },
   1567         { "kind" : "IdRef",        "name" : "'Operand 1'" },
   1568         { "kind" : "IdRef",        "name" : "'Operand 2'" }
   1569       ]
   1570     },
   1571     {
   1572       "opname" : "OpUGreaterThan",
   1573       "opcode" : 172,
   1574       "operands" : [
   1575         { "kind" : "IdResultType" },
   1576         { "kind" : "IdResult" },
   1577         { "kind" : "IdRef",        "name" : "'Operand 1'" },
   1578         { "kind" : "IdRef",        "name" : "'Operand 2'" }
   1579       ]
   1580     },
   1581     {
   1582       "opname" : "OpSGreaterThan",
   1583       "opcode" : 173,
   1584       "operands" : [
   1585         { "kind" : "IdResultType" },
   1586         { "kind" : "IdResult" },
   1587         { "kind" : "IdRef",        "name" : "'Operand 1'" },
   1588         { "kind" : "IdRef",        "name" : "'Operand 2'" }
   1589       ]
   1590     },
   1591     {
   1592       "opname" : "OpUGreaterThanEqual",
   1593       "opcode" : 174,
   1594       "operands" : [
   1595         { "kind" : "IdResultType" },
   1596         { "kind" : "IdResult" },
   1597         { "kind" : "IdRef",        "name" : "'Operand 1'" },
   1598         { "kind" : "IdRef",        "name" : "'Operand 2'" }
   1599       ]
   1600     },
   1601     {
   1602       "opname" : "OpSGreaterThanEqual",
   1603       "opcode" : 175,
   1604       "operands" : [
   1605         { "kind" : "IdResultType" },
   1606         { "kind" : "IdResult" },
   1607         { "kind" : "IdRef",        "name" : "'Operand 1'" },
   1608         { "kind" : "IdRef",        "name" : "'Operand 2'" }
   1609       ]
   1610     },
   1611     {
   1612       "opname" : "OpULessThan",
   1613       "opcode" : 176,
   1614       "operands" : [
   1615         { "kind" : "IdResultType" },
   1616         { "kind" : "IdResult" },
   1617         { "kind" : "IdRef",        "name" : "'Operand 1'" },
   1618         { "kind" : "IdRef",        "name" : "'Operand 2'" }
   1619       ]
   1620     },
   1621     {
   1622       "opname" : "OpSLessThan",
   1623       "opcode" : 177,
   1624       "operands" : [
   1625         { "kind" : "IdResultType" },
   1626         { "kind" : "IdResult" },
   1627         { "kind" : "IdRef",        "name" : "'Operand 1'" },
   1628         { "kind" : "IdRef",        "name" : "'Operand 2'" }
   1629       ]
   1630     },
   1631     {
   1632       "opname" : "OpULessThanEqual",
   1633       "opcode" : 178,
   1634       "operands" : [
   1635         { "kind" : "IdResultType" },
   1636         { "kind" : "IdResult" },
   1637         { "kind" : "IdRef",        "name" : "'Operand 1'" },
   1638         { "kind" : "IdRef",        "name" : "'Operand 2'" }
   1639       ]
   1640     },
   1641     {
   1642       "opname" : "OpSLessThanEqual",
   1643       "opcode" : 179,
   1644       "operands" : [
   1645         { "kind" : "IdResultType" },
   1646         { "kind" : "IdResult" },
   1647         { "kind" : "IdRef",        "name" : "'Operand 1'" },
   1648         { "kind" : "IdRef",        "name" : "'Operand 2'" }
   1649       ]
   1650     },
   1651     {
   1652       "opname" : "OpFOrdEqual",
   1653       "opcode" : 180,
   1654       "operands" : [
   1655         { "kind" : "IdResultType" },
   1656         { "kind" : "IdResult" },
   1657         { "kind" : "IdRef",        "name" : "'Operand 1'" },
   1658         { "kind" : "IdRef",        "name" : "'Operand 2'" }
   1659       ]
   1660     },
   1661     {
   1662       "opname" : "OpFUnordEqual",
   1663       "opcode" : 181,
   1664       "operands" : [
   1665         { "kind" : "IdResultType" },
   1666         { "kind" : "IdResult" },
   1667         { "kind" : "IdRef",        "name" : "'Operand 1'" },
   1668         { "kind" : "IdRef",        "name" : "'Operand 2'" }
   1669       ]
   1670     },
   1671     {
   1672       "opname" : "OpFOrdNotEqual",
   1673       "opcode" : 182,
   1674       "operands" : [
   1675         { "kind" : "IdResultType" },
   1676         { "kind" : "IdResult" },
   1677         { "kind" : "IdRef",        "name" : "'Operand 1'" },
   1678         { "kind" : "IdRef",        "name" : "'Operand 2'" }
   1679       ]
   1680     },
   1681     {
   1682       "opname" : "OpFUnordNotEqual",
   1683       "opcode" : 183,
   1684       "operands" : [
   1685         { "kind" : "IdResultType" },
   1686         { "kind" : "IdResult" },
   1687         { "kind" : "IdRef",        "name" : "'Operand 1'" },
   1688         { "kind" : "IdRef",        "name" : "'Operand 2'" }
   1689       ]
   1690     },
   1691     {
   1692       "opname" : "OpFOrdLessThan",
   1693       "opcode" : 184,
   1694       "operands" : [
   1695         { "kind" : "IdResultType" },
   1696         { "kind" : "IdResult" },
   1697         { "kind" : "IdRef",        "name" : "'Operand 1'" },
   1698         { "kind" : "IdRef",        "name" : "'Operand 2'" }
   1699       ]
   1700     },
   1701     {
   1702       "opname" : "OpFUnordLessThan",
   1703       "opcode" : 185,
   1704       "operands" : [
   1705         { "kind" : "IdResultType" },
   1706         { "kind" : "IdResult" },
   1707         { "kind" : "IdRef",        "name" : "'Operand 1'" },
   1708         { "kind" : "IdRef",        "name" : "'Operand 2'" }
   1709       ]
   1710     },
   1711     {
   1712       "opname" : "OpFOrdGreaterThan",
   1713       "opcode" : 186,
   1714       "operands" : [
   1715         { "kind" : "IdResultType" },
   1716         { "kind" : "IdResult" },
   1717         { "kind" : "IdRef",        "name" : "'Operand 1'" },
   1718         { "kind" : "IdRef",        "name" : "'Operand 2'" }
   1719       ]
   1720     },
   1721     {
   1722       "opname" : "OpFUnordGreaterThan",
   1723       "opcode" : 187,
   1724       "operands" : [
   1725         { "kind" : "IdResultType" },
   1726         { "kind" : "IdResult" },
   1727         { "kind" : "IdRef",        "name" : "'Operand 1'" },
   1728         { "kind" : "IdRef",        "name" : "'Operand 2'" }
   1729       ]
   1730     },
   1731     {
   1732       "opname" : "OpFOrdLessThanEqual",
   1733       "opcode" : 188,
   1734       "operands" : [
   1735         { "kind" : "IdResultType" },
   1736         { "kind" : "IdResult" },
   1737         { "kind" : "IdRef",        "name" : "'Operand 1'" },
   1738         { "kind" : "IdRef",        "name" : "'Operand 2'" }
   1739       ]
   1740     },
   1741     {
   1742       "opname" : "OpFUnordLessThanEqual",
   1743       "opcode" : 189,
   1744       "operands" : [
   1745         { "kind" : "IdResultType" },
   1746         { "kind" : "IdResult" },
   1747         { "kind" : "IdRef",        "name" : "'Operand 1'" },
   1748         { "kind" : "IdRef",        "name" : "'Operand 2'" }
   1749       ]
   1750     },
   1751     {
   1752       "opname" : "OpFOrdGreaterThanEqual",
   1753       "opcode" : 190,
   1754       "operands" : [
   1755         { "kind" : "IdResultType" },
   1756         { "kind" : "IdResult" },
   1757         { "kind" : "IdRef",        "name" : "'Operand 1'" },
   1758         { "kind" : "IdRef",        "name" : "'Operand 2'" }
   1759       ]
   1760     },
   1761     {
   1762       "opname" : "OpFUnordGreaterThanEqual",
   1763       "opcode" : 191,
   1764       "operands" : [
   1765         { "kind" : "IdResultType" },
   1766         { "kind" : "IdResult" },
   1767         { "kind" : "IdRef",        "name" : "'Operand 1'" },
   1768         { "kind" : "IdRef",        "name" : "'Operand 2'" }
   1769       ]
   1770     },
   1771     {
   1772       "opname" : "OpShiftRightLogical",
   1773       "opcode" : 194,
   1774       "operands" : [
   1775         { "kind" : "IdResultType" },
   1776         { "kind" : "IdResult" },
   1777         { "kind" : "IdRef",        "name" : "'Base'" },
   1778         { "kind" : "IdRef",        "name" : "'Shift'" }
   1779       ]
   1780     },
   1781     {
   1782       "opname" : "OpShiftRightArithmetic",
   1783       "opcode" : 195,
   1784       "operands" : [
   1785         { "kind" : "IdResultType" },
   1786         { "kind" : "IdResult" },
   1787         { "kind" : "IdRef",        "name" : "'Base'" },
   1788         { "kind" : "IdRef",        "name" : "'Shift'" }
   1789       ]
   1790     },
   1791     {
   1792       "opname" : "OpShiftLeftLogical",
   1793       "opcode" : 196,
   1794       "operands" : [
   1795         { "kind" : "IdResultType" },
   1796         { "kind" : "IdResult" },
   1797         { "kind" : "IdRef",        "name" : "'Base'" },
   1798         { "kind" : "IdRef",        "name" : "'Shift'" }
   1799       ]
   1800     },
   1801     {
   1802       "opname" : "OpBitwiseOr",
   1803       "opcode" : 197,
   1804       "operands" : [
   1805         { "kind" : "IdResultType" },
   1806         { "kind" : "IdResult" },
   1807         { "kind" : "IdRef",        "name" : "'Operand 1'" },
   1808         { "kind" : "IdRef",        "name" : "'Operand 2'" }
   1809       ]
   1810     },
   1811     {
   1812       "opname" : "OpBitwiseXor",
   1813       "opcode" : 198,
   1814       "operands" : [
   1815         { "kind" : "IdResultType" },
   1816         { "kind" : "IdResult" },
   1817         { "kind" : "IdRef",        "name" : "'Operand 1'" },
   1818         { "kind" : "IdRef",        "name" : "'Operand 2'" }
   1819       ]
   1820     },
   1821     {
   1822       "opname" : "OpBitwiseAnd",
   1823       "opcode" : 199,
   1824       "operands" : [
   1825         { "kind" : "IdResultType" },
   1826         { "kind" : "IdResult" },
   1827         { "kind" : "IdRef",        "name" : "'Operand 1'" },
   1828         { "kind" : "IdRef",        "name" : "'Operand 2'" }
   1829       ]
   1830     },
   1831     {
   1832       "opname" : "OpNot",
   1833       "opcode" : 200,
   1834       "operands" : [
   1835         { "kind" : "IdResultType" },
   1836         { "kind" : "IdResult" },
   1837         { "kind" : "IdRef",        "name" : "'Operand'" }
   1838       ]
   1839     },
   1840     {
   1841       "opname" : "OpBitFieldInsert",
   1842       "opcode" : 201,
   1843       "operands" : [
   1844         { "kind" : "IdResultType" },
   1845         { "kind" : "IdResult" },
   1846         { "kind" : "IdRef",        "name" : "'Base'" },
   1847         { "kind" : "IdRef",        "name" : "'Insert'" },
   1848         { "kind" : "IdRef",        "name" : "'Offset'" },
   1849         { "kind" : "IdRef",        "name" : "'Count'" }
   1850       ],
   1851       "capabilities" : [ "Shader" ]
   1852     },
   1853     {
   1854       "opname" : "OpBitFieldSExtract",
   1855       "opcode" : 202,
   1856       "operands" : [
   1857         { "kind" : "IdResultType" },
   1858         { "kind" : "IdResult" },
   1859         { "kind" : "IdRef",        "name" : "'Base'" },
   1860         { "kind" : "IdRef",        "name" : "'Offset'" },
   1861         { "kind" : "IdRef",        "name" : "'Count'" }
   1862       ],
   1863       "capabilities" : [ "Shader" ]
   1864     },
   1865     {
   1866       "opname" : "OpBitFieldUExtract",
   1867       "opcode" : 203,
   1868       "operands" : [
   1869         { "kind" : "IdResultType" },
   1870         { "kind" : "IdResult" },
   1871         { "kind" : "IdRef",        "name" : "'Base'" },
   1872         { "kind" : "IdRef",        "name" : "'Offset'" },
   1873         { "kind" : "IdRef",        "name" : "'Count'" }
   1874       ],
   1875       "capabilities" : [ "Shader" ]
   1876     },
   1877     {
   1878       "opname" : "OpBitReverse",
   1879       "opcode" : 204,
   1880       "operands" : [
   1881         { "kind" : "IdResultType" },
   1882         { "kind" : "IdResult" },
   1883         { "kind" : "IdRef",        "name" : "'Base'" }
   1884       ],
   1885       "capabilities" : [ "Shader" ]
   1886     },
   1887     {
   1888       "opname" : "OpBitCount",
   1889       "opcode" : 205,
   1890       "operands" : [
   1891         { "kind" : "IdResultType" },
   1892         { "kind" : "IdResult" },
   1893         { "kind" : "IdRef",        "name" : "'Base'" }
   1894       ]
   1895     },
   1896     {
   1897       "opname" : "OpDPdx",
   1898       "opcode" : 207,
   1899       "operands" : [
   1900         { "kind" : "IdResultType" },
   1901         { "kind" : "IdResult" },
   1902         { "kind" : "IdRef",        "name" : "'P'" }
   1903       ],
   1904       "capabilities" : [ "Shader" ]
   1905     },
   1906     {
   1907       "opname" : "OpDPdy",
   1908       "opcode" : 208,
   1909       "operands" : [
   1910         { "kind" : "IdResultType" },
   1911         { "kind" : "IdResult" },
   1912         { "kind" : "IdRef",        "name" : "'P'" }
   1913       ],
   1914       "capabilities" : [ "Shader" ]
   1915     },
   1916     {
   1917       "opname" : "OpFwidth",
   1918       "opcode" : 209,
   1919       "operands" : [
   1920         { "kind" : "IdResultType" },
   1921         { "kind" : "IdResult" },
   1922         { "kind" : "IdRef",        "name" : "'P'" }
   1923       ],
   1924       "capabilities" : [ "Shader" ]
   1925     },
   1926     {
   1927       "opname" : "OpDPdxFine",
   1928       "opcode" : 210,
   1929       "operands" : [
   1930         { "kind" : "IdResultType" },
   1931         { "kind" : "IdResult" },
   1932         { "kind" : "IdRef",        "name" : "'P'" }
   1933       ],
   1934       "capabilities" : [ "DerivativeControl" ]
   1935     },
   1936     {
   1937       "opname" : "OpDPdyFine",
   1938       "opcode" : 211,
   1939       "operands" : [
   1940         { "kind" : "IdResultType" },
   1941         { "kind" : "IdResult" },
   1942         { "kind" : "IdRef",        "name" : "'P'" }
   1943       ],
   1944       "capabilities" : [ "DerivativeControl" ]
   1945     },
   1946     {
   1947       "opname" : "OpFwidthFine",
   1948       "opcode" : 212,
   1949       "operands" : [
   1950         { "kind" : "IdResultType" },
   1951         { "kind" : "IdResult" },
   1952         { "kind" : "IdRef",        "name" : "'P'" }
   1953       ],
   1954       "capabilities" : [ "DerivativeControl" ]
   1955     },
   1956     {
   1957       "opname" : "OpDPdxCoarse",
   1958       "opcode" : 213,
   1959       "operands" : [
   1960         { "kind" : "IdResultType" },
   1961         { "kind" : "IdResult" },
   1962         { "kind" : "IdRef",        "name" : "'P'" }
   1963       ],
   1964       "capabilities" : [ "DerivativeControl" ]
   1965     },
   1966     {
   1967       "opname" : "OpDPdyCoarse",
   1968       "opcode" : 214,
   1969       "operands" : [
   1970         { "kind" : "IdResultType" },
   1971         { "kind" : "IdResult" },
   1972         { "kind" : "IdRef",        "name" : "'P'" }
   1973       ],
   1974       "capabilities" : [ "DerivativeControl" ]
   1975     },
   1976     {
   1977       "opname" : "OpFwidthCoarse",
   1978       "opcode" : 215,
   1979       "operands" : [
   1980         { "kind" : "IdResultType" },
   1981         { "kind" : "IdResult" },
   1982         { "kind" : "IdRef",        "name" : "'P'" }
   1983       ],
   1984       "capabilities" : [ "DerivativeControl" ]
   1985     },
   1986     {
   1987       "opname" : "OpEmitVertex",
   1988       "opcode" : 218,
   1989       "capabilities" : [ "Geometry" ]
   1990     },
   1991     {
   1992       "opname" : "OpEndPrimitive",
   1993       "opcode" : 219,
   1994       "capabilities" : [ "Geometry" ]
   1995     },
   1996     {
   1997       "opname" : "OpEmitStreamVertex",
   1998       "opcode" : 220,
   1999       "operands" : [
   2000         { "kind" : "IdRef", "name" : "'Stream'" }
   2001       ],
   2002       "capabilities" : [ "GeometryStreams" ]
   2003     },
   2004     {
   2005       "opname" : "OpEndStreamPrimitive",
   2006       "opcode" : 221,
   2007       "operands" : [
   2008         { "kind" : "IdRef", "name" : "'Stream'" }
   2009       ],
   2010       "capabilities" : [ "GeometryStreams" ]
   2011     },
   2012     {
   2013       "opname" : "OpControlBarrier",
   2014       "opcode" : 224,
   2015       "operands" : [
   2016         { "kind" : "IdScope",           "name" : "'Execution'" },
   2017         { "kind" : "IdScope",           "name" : "'Memory'" },
   2018         { "kind" : "IdMemorySemantics", "name" : "'Semantics'" }
   2019       ]
   2020     },
   2021     {
   2022       "opname" : "OpMemoryBarrier",
   2023       "opcode" : 225,
   2024       "operands" : [
   2025         { "kind" : "IdScope",           "name" : "'Memory'" },
   2026         { "kind" : "IdMemorySemantics", "name" : "'Semantics'" }
   2027       ]
   2028     },
   2029     {
   2030       "opname" : "OpAtomicLoad",
   2031       "opcode" : 227,
   2032       "operands" : [
   2033         { "kind" : "IdResultType" },
   2034         { "kind" : "IdResult" },
   2035         { "kind" : "IdRef",             "name" : "'Pointer'" },
   2036         { "kind" : "IdScope",           "name" : "'Scope'" },
   2037         { "kind" : "IdMemorySemantics", "name" : "'Semantics'" }
   2038       ]
   2039     },
   2040     {
   2041       "opname" : "OpAtomicStore",
   2042       "opcode" : 228,
   2043       "operands" : [
   2044         { "kind" : "IdRef",             "name" : "'Pointer'" },
   2045         { "kind" : "IdScope",           "name" : "'Scope'" },
   2046         { "kind" : "IdMemorySemantics", "name" : "'Semantics'" },
   2047         { "kind" : "IdRef",             "name" : "'Value'" }
   2048       ]
   2049     },
   2050     {
   2051       "opname" : "OpAtomicExchange",
   2052       "opcode" : 229,
   2053       "operands" : [
   2054         { "kind" : "IdResultType" },
   2055         { "kind" : "IdResult" },
   2056         { "kind" : "IdRef",             "name" : "'Pointer'" },
   2057         { "kind" : "IdScope",           "name" : "'Scope'" },
   2058         { "kind" : "IdMemorySemantics", "name" : "'Semantics'" },
   2059         { "kind" : "IdRef",             "name" : "'Value'" }
   2060       ]
   2061     },
   2062     {
   2063       "opname" : "OpAtomicCompareExchange",
   2064       "opcode" : 230,
   2065       "operands" : [
   2066         { "kind" : "IdResultType" },
   2067         { "kind" : "IdResult" },
   2068         { "kind" : "IdRef",             "name" : "'Pointer'" },
   2069         { "kind" : "IdScope",           "name" : "'Scope'" },
   2070         { "kind" : "IdMemorySemantics", "name" : "'Equal'" },
   2071         { "kind" : "IdMemorySemantics", "name" : "'Unequal'" },
   2072         { "kind" : "IdRef",             "name" : "'Value'" },
   2073         { "kind" : "IdRef",             "name" : "'Comparator'" }
   2074       ]
   2075     },
   2076     {
   2077       "opname" : "OpAtomicCompareExchangeWeak",
   2078       "opcode" : 231,
   2079       "operands" : [
   2080         { "kind" : "IdResultType" },
   2081         { "kind" : "IdResult" },
   2082         { "kind" : "IdRef",             "name" : "'Pointer'" },
   2083         { "kind" : "IdScope",           "name" : "'Scope'" },
   2084         { "kind" : "IdMemorySemantics", "name" : "'Equal'" },
   2085         { "kind" : "IdMemorySemantics", "name" : "'Unequal'" },
   2086         { "kind" : "IdRef",             "name" : "'Value'" },
   2087         { "kind" : "IdRef",             "name" : "'Comparator'" }
   2088       ],
   2089       "capabilities" : [ "Kernel" ]
   2090     },
   2091     {
   2092       "opname" : "OpAtomicIIncrement",
   2093       "opcode" : 232,
   2094       "operands" : [
   2095         { "kind" : "IdResultType" },
   2096         { "kind" : "IdResult" },
   2097         { "kind" : "IdRef",             "name" : "'Pointer'" },
   2098         { "kind" : "IdScope",           "name" : "'Scope'" },
   2099         { "kind" : "IdMemorySemantics", "name" : "'Semantics'" }
   2100       ]
   2101     },
   2102     {
   2103       "opname" : "OpAtomicIDecrement",
   2104       "opcode" : 233,
   2105       "operands" : [
   2106         { "kind" : "IdResultType" },
   2107         { "kind" : "IdResult" },
   2108         { "kind" : "IdRef",             "name" : "'Pointer'" },
   2109         { "kind" : "IdScope",           "name" : "'Scope'" },
   2110         { "kind" : "IdMemorySemantics", "name" : "'Semantics'" }
   2111       ]
   2112     },
   2113     {
   2114       "opname" : "OpAtomicIAdd",
   2115       "opcode" : 234,
   2116       "operands" : [
   2117         { "kind" : "IdResultType" },
   2118         { "kind" : "IdResult" },
   2119         { "kind" : "IdRef",             "name" : "'Pointer'" },
   2120         { "kind" : "IdScope",           "name" : "'Scope'" },
   2121         { "kind" : "IdMemorySemantics", "name" : "'Semantics'" },
   2122         { "kind" : "IdRef",             "name" : "'Value'" }
   2123       ]
   2124     },
   2125     {
   2126       "opname" : "OpAtomicISub",
   2127       "opcode" : 235,
   2128       "operands" : [
   2129         { "kind" : "IdResultType" },
   2130         { "kind" : "IdResult" },
   2131         { "kind" : "IdRef",             "name" : "'Pointer'" },
   2132         { "kind" : "IdScope",           "name" : "'Scope'" },
   2133         { "kind" : "IdMemorySemantics", "name" : "'Semantics'" },
   2134         { "kind" : "IdRef",             "name" : "'Value'" }
   2135       ]
   2136     },
   2137     {
   2138       "opname" : "OpAtomicSMin",
   2139       "opcode" : 236,
   2140       "operands" : [
   2141         { "kind" : "IdResultType" },
   2142         { "kind" : "IdResult" },
   2143         { "kind" : "IdRef",             "name" : "'Pointer'" },
   2144         { "kind" : "IdScope",           "name" : "'Scope'" },
   2145         { "kind" : "IdMemorySemantics", "name" : "'Semantics'" },
   2146         { "kind" : "IdRef",             "name" : "'Value'" }
   2147       ]
   2148     },
   2149     {
   2150       "opname" : "OpAtomicUMin",
   2151       "opcode" : 237,
   2152       "operands" : [
   2153         { "kind" : "IdResultType" },
   2154         { "kind" : "IdResult" },
   2155         { "kind" : "IdRef",             "name" : "'Pointer'" },
   2156         { "kind" : "IdScope",           "name" : "'Scope'" },
   2157         { "kind" : "IdMemorySemantics", "name" : "'Semantics'" },
   2158         { "kind" : "IdRef",             "name" : "'Value'" }
   2159       ]
   2160     },
   2161     {
   2162       "opname" : "OpAtomicSMax",
   2163       "opcode" : 238,
   2164       "operands" : [
   2165         { "kind" : "IdResultType" },
   2166         { "kind" : "IdResult" },
   2167         { "kind" : "IdRef",             "name" : "'Pointer'" },
   2168         { "kind" : "IdScope",           "name" : "'Scope'" },
   2169         { "kind" : "IdMemorySemantics", "name" : "'Semantics'" },
   2170         { "kind" : "IdRef",             "name" : "'Value'" }
   2171       ]
   2172     },
   2173     {
   2174       "opname" : "OpAtomicUMax",
   2175       "opcode" : 239,
   2176       "operands" : [
   2177         { "kind" : "IdResultType" },
   2178         { "kind" : "IdResult" },
   2179         { "kind" : "IdRef",             "name" : "'Pointer'" },
   2180         { "kind" : "IdScope",           "name" : "'Scope'" },
   2181         { "kind" : "IdMemorySemantics", "name" : "'Semantics'" },
   2182         { "kind" : "IdRef",             "name" : "'Value'" }
   2183       ]
   2184     },
   2185     {
   2186       "opname" : "OpAtomicAnd",
   2187       "opcode" : 240,
   2188       "operands" : [
   2189         { "kind" : "IdResultType" },
   2190         { "kind" : "IdResult" },
   2191         { "kind" : "IdRef",             "name" : "'Pointer'" },
   2192         { "kind" : "IdScope",           "name" : "'Scope'" },
   2193         { "kind" : "IdMemorySemantics", "name" : "'Semantics'" },
   2194         { "kind" : "IdRef",             "name" : "'Value'" }
   2195       ]
   2196     },
   2197     {
   2198       "opname" : "OpAtomicOr",
   2199       "opcode" : 241,
   2200       "operands" : [
   2201         { "kind" : "IdResultType" },
   2202         { "kind" : "IdResult" },
   2203         { "kind" : "IdRef",             "name" : "'Pointer'" },
   2204         { "kind" : "IdScope",           "name" : "'Scope'" },
   2205         { "kind" : "IdMemorySemantics", "name" : "'Semantics'" },
   2206         { "kind" : "IdRef",             "name" : "'Value'" }
   2207       ]
   2208     },
   2209     {
   2210       "opname" : "OpAtomicXor",
   2211       "opcode" : 242,
   2212       "operands" : [
   2213         { "kind" : "IdResultType" },
   2214         { "kind" : "IdResult" },
   2215         { "kind" : "IdRef",             "name" : "'Pointer'" },
   2216         { "kind" : "IdScope",           "name" : "'Scope'" },
   2217         { "kind" : "IdMemorySemantics", "name" : "'Semantics'" },
   2218         { "kind" : "IdRef",             "name" : "'Value'" }
   2219       ]
   2220     },
   2221     {
   2222       "opname" : "OpPhi",
   2223       "opcode" : 245,
   2224       "operands" : [
   2225         { "kind" : "IdResultType" },
   2226         { "kind" : "IdResult" },
   2227         { "kind" : "PairIdRefIdRef", "quantifier" : "*", "name" : "'Variable, Parent, ...'" }
   2228       ]
   2229     },
   2230     {
   2231       "opname" : "OpLoopMerge",
   2232       "opcode" : 246,
   2233       "operands" : [
   2234         { "kind" : "IdRef",       "name" : "'Merge Block'" },
   2235         { "kind" : "IdRef",       "name" : "'Continue Target'" },
   2236         { "kind" : "LoopControl" }
   2237       ]
   2238     },
   2239     {
   2240       "opname" : "OpSelectionMerge",
   2241       "opcode" : 247,
   2242       "operands" : [
   2243         { "kind" : "IdRef",            "name" : "'Merge Block'" },
   2244         { "kind" : "SelectionControl" }
   2245       ]
   2246     },
   2247     {
   2248       "opname" : "OpLabel",
   2249       "opcode" : 248,
   2250       "operands" : [
   2251         { "kind" : "IdResult" }
   2252       ]
   2253     },
   2254     {
   2255       "opname" : "OpBranch",
   2256       "opcode" : 249,
   2257       "operands" : [
   2258         { "kind" : "IdRef", "name" : "'Target Label'" }
   2259       ]
   2260     },
   2261     {
   2262       "opname" : "OpBranchConditional",
   2263       "opcode" : 250,
   2264       "operands" : [
   2265         { "kind" : "IdRef",                              "name" : "'Condition'" },
   2266         { "kind" : "IdRef",                              "name" : "'True Label'" },
   2267         { "kind" : "IdRef",                              "name" : "'False Label'" },
   2268         { "kind" : "LiteralInteger", "quantifier" : "*", "name" : "'Branch weights'" }
   2269       ]
   2270     },
   2271     {
   2272       "opname" : "OpSwitch",
   2273       "opcode" : 251,
   2274       "operands" : [
   2275         { "kind" : "IdRef",                                       "name" : "'Selector'" },
   2276         { "kind" : "IdRef",                                       "name" : "'Default'" },
   2277         { "kind" : "PairLiteralIntegerIdRef", "quantifier" : "*", "name" : "'Target'" }
   2278       ]
   2279     },
   2280     {
   2281       "opname" : "OpKill",
   2282       "opcode" : 252,
   2283       "capabilities" : [ "Shader" ]
   2284     },
   2285     {
   2286       "opname" : "OpReturn",
   2287       "opcode" : 253
   2288     },
   2289     {
   2290       "opname" : "OpReturnValue",
   2291       "opcode" : 254,
   2292       "operands" : [
   2293         { "kind" : "IdRef", "name" : "'Value'" }
   2294       ]
   2295     },
   2296     {
   2297       "opname" : "OpUnreachable",
   2298       "opcode" : 255
   2299     },
   2300     {
   2301       "opname" : "OpLifetimeStart",
   2302       "opcode" : 256,
   2303       "operands" : [
   2304         { "kind" : "IdRef",          "name" : "'Pointer'" },
   2305         { "kind" : "LiteralInteger", "name" : "'Size'" }
   2306       ],
   2307       "capabilities" : [ "Kernel" ]
   2308     },
   2309     {
   2310       "opname" : "OpLifetimeStop",
   2311       "opcode" : 257,
   2312       "operands" : [
   2313         { "kind" : "IdRef",          "name" : "'Pointer'" },
   2314         { "kind" : "LiteralInteger", "name" : "'Size'" }
   2315       ],
   2316       "capabilities" : [ "Kernel" ]
   2317     },
   2318     {
   2319       "opname" : "OpGroupAsyncCopy",
   2320       "opcode" : 259,
   2321       "operands" : [
   2322         { "kind" : "IdResultType" },
   2323         { "kind" : "IdResult" },
   2324         { "kind" : "IdScope",      "name" : "'Execution'" },
   2325         { "kind" : "IdRef",        "name" : "'Destination'" },
   2326         { "kind" : "IdRef",        "name" : "'Source'" },
   2327         { "kind" : "IdRef",        "name" : "'Num Elements'" },
   2328         { "kind" : "IdRef",        "name" : "'Stride'" },
   2329         { "kind" : "IdRef",        "name" : "'Event'" }
   2330       ],
   2331       "capabilities" : [ "Kernel" ]
   2332     },
   2333     {
   2334       "opname" : "OpGroupWaitEvents",
   2335       "opcode" : 260,
   2336       "operands" : [
   2337         { "kind" : "IdScope", "name" : "'Execution'" },
   2338         { "kind" : "IdRef",   "name" : "'Num Events'" },
   2339         { "kind" : "IdRef",   "name" : "'Events List'" }
   2340       ],
   2341       "capabilities" : [ "Kernel" ]
   2342     },
   2343     {
   2344       "opname" : "OpGroupAll",
   2345       "opcode" : 261,
   2346       "operands" : [
   2347         { "kind" : "IdResultType" },
   2348         { "kind" : "IdResult" },
   2349         { "kind" : "IdScope",      "name" : "'Execution'" },
   2350         { "kind" : "IdRef",        "name" : "'Predicate'" }
   2351       ],
   2352       "capabilities" : [ "Groups" ]
   2353     },
   2354     {
   2355       "opname" : "OpGroupAny",
   2356       "opcode" : 262,
   2357       "operands" : [
   2358         { "kind" : "IdResultType" },
   2359         { "kind" : "IdResult" },
   2360         { "kind" : "IdScope",      "name" : "'Execution'" },
   2361         { "kind" : "IdRef",        "name" : "'Predicate'" }
   2362       ],
   2363       "capabilities" : [ "Groups" ]
   2364     },
   2365     {
   2366       "opname" : "OpGroupBroadcast",
   2367       "opcode" : 263,
   2368       "operands" : [
   2369         { "kind" : "IdResultType" },
   2370         { "kind" : "IdResult" },
   2371         { "kind" : "IdScope",      "name" : "'Execution'" },
   2372         { "kind" : "IdRef",        "name" : "'Value'" },
   2373         { "kind" : "IdRef",        "name" : "'LocalId'" }
   2374       ],
   2375       "capabilities" : [ "Groups" ]
   2376     },
   2377     {
   2378       "opname" : "OpGroupIAdd",
   2379       "opcode" : 264,
   2380       "operands" : [
   2381         { "kind" : "IdResultType" },
   2382         { "kind" : "IdResult" },
   2383         { "kind" : "IdScope",        "name" : "'Execution'" },
   2384         { "kind" : "GroupOperation", "name" : "'Operation'" },
   2385         { "kind" : "IdRef",          "name" : "'X'" }
   2386       ],
   2387       "capabilities" : [ "Groups" ]
   2388     },
   2389     {
   2390       "opname" : "OpGroupFAdd",
   2391       "opcode" : 265,
   2392       "operands" : [
   2393         { "kind" : "IdResultType" },
   2394         { "kind" : "IdResult" },
   2395         { "kind" : "IdScope",        "name" : "'Execution'" },
   2396         { "kind" : "GroupOperation", "name" : "'Operation'" },
   2397         { "kind" : "IdRef",          "name" : "'X'" }
   2398       ],
   2399       "capabilities" : [ "Groups" ]
   2400     },
   2401     {
   2402       "opname" : "OpGroupFMin",
   2403       "opcode" : 266,
   2404       "operands" : [
   2405         { "kind" : "IdResultType" },
   2406         { "kind" : "IdResult" },
   2407         { "kind" : "IdScope",        "name" : "'Execution'" },
   2408         { "kind" : "GroupOperation", "name" : "'Operation'" },
   2409         { "kind" : "IdRef",          "name" : "X" }
   2410       ],
   2411       "capabilities" : [ "Groups" ]
   2412     },
   2413     {
   2414       "opname" : "OpGroupUMin",
   2415       "opcode" : 267,
   2416       "operands" : [
   2417         { "kind" : "IdResultType" },
   2418         { "kind" : "IdResult" },
   2419         { "kind" : "IdScope",        "name" : "'Execution'" },
   2420         { "kind" : "GroupOperation", "name" : "'Operation'" },
   2421         { "kind" : "IdRef",          "name" : "'X'" }
   2422       ],
   2423       "capabilities" : [ "Groups" ]
   2424     },
   2425     {
   2426       "opname" : "OpGroupSMin",
   2427       "opcode" : 268,
   2428       "operands" : [
   2429         { "kind" : "IdResultType" },
   2430         { "kind" : "IdResult" },
   2431         { "kind" : "IdScope",        "name" : "'Execution'" },
   2432         { "kind" : "GroupOperation", "name" : "'Operation'" },
   2433         { "kind" : "IdRef",          "name" : "X" }
   2434       ],
   2435       "capabilities" : [ "Groups" ]
   2436     },
   2437     {
   2438       "opname" : "OpGroupFMax",
   2439       "opcode" : 269,
   2440       "operands" : [
   2441         { "kind" : "IdResultType" },
   2442         { "kind" : "IdResult" },
   2443         { "kind" : "IdScope",        "name" : "'Execution'" },
   2444         { "kind" : "GroupOperation", "name" : "'Operation'" },
   2445         { "kind" : "IdRef",          "name" : "X" }
   2446       ],
   2447       "capabilities" : [ "Groups" ]
   2448     },
   2449     {
   2450       "opname" : "OpGroupUMax",
   2451       "opcode" : 270,
   2452       "operands" : [
   2453         { "kind" : "IdResultType" },
   2454         { "kind" : "IdResult" },
   2455         { "kind" : "IdScope",        "name" : "'Execution'" },
   2456         { "kind" : "GroupOperation", "name" : "'Operation'" },
   2457         { "kind" : "IdRef",          "name" : "X" }
   2458       ],
   2459       "capabilities" : [ "Groups" ]
   2460     },
   2461     {
   2462       "opname" : "OpGroupSMax",
   2463       "opcode" : 271,
   2464       "operands" : [
   2465         { "kind" : "IdResultType" },
   2466         { "kind" : "IdResult" },
   2467         { "kind" : "IdScope",        "name" : "'Execution'" },
   2468         { "kind" : "GroupOperation", "name" : "'Operation'" },
   2469         { "kind" : "IdRef",          "name" : "X" }
   2470       ],
   2471       "capabilities" : [ "Groups" ]
   2472     },
   2473     {
   2474       "opname" : "OpReadPipe",
   2475       "opcode" : 274,
   2476       "operands" : [
   2477         { "kind" : "IdResultType" },
   2478         { "kind" : "IdResult" },
   2479         { "kind" : "IdRef",        "name" : "'Pipe'" },
   2480         { "kind" : "IdRef",        "name" : "'Pointer'" },
   2481         { "kind" : "IdRef",        "name" : "'Packet Size'" },
   2482         { "kind" : "IdRef",        "name" : "'Packet Alignment'" }
   2483       ],
   2484       "capabilities" : [ "Pipes" ]
   2485     },
   2486     {
   2487       "opname" : "OpWritePipe",
   2488       "opcode" : 275,
   2489       "operands" : [
   2490         { "kind" : "IdResultType" },
   2491         { "kind" : "IdResult" },
   2492         { "kind" : "IdRef",        "name" : "'Pipe'" },
   2493         { "kind" : "IdRef",        "name" : "'Pointer'" },
   2494         { "kind" : "IdRef",        "name" : "'Packet Size'" },
   2495         { "kind" : "IdRef",        "name" : "'Packet Alignment'" }
   2496       ],
   2497       "capabilities" : [ "Pipes" ]
   2498     },
   2499     {
   2500       "opname" : "OpReservedReadPipe",
   2501       "opcode" : 276,
   2502       "operands" : [
   2503         { "kind" : "IdResultType" },
   2504         { "kind" : "IdResult" },
   2505         { "kind" : "IdRef",        "name" : "'Pipe'" },
   2506         { "kind" : "IdRef",        "name" : "'Reserve Id'" },
   2507         { "kind" : "IdRef",        "name" : "'Index'" },
   2508         { "kind" : "IdRef",        "name" : "'Pointer'" },
   2509         { "kind" : "IdRef",        "name" : "'Packet Size'" },
   2510         { "kind" : "IdRef",        "name" : "'Packet Alignment'" }
   2511       ],
   2512       "capabilities" : [ "Pipes" ]
   2513     },
   2514     {
   2515       "opname" : "OpReservedWritePipe",
   2516       "opcode" : 277,
   2517       "operands" : [
   2518         { "kind" : "IdResultType" },
   2519         { "kind" : "IdResult" },
   2520         { "kind" : "IdRef",        "name" : "'Pipe'" },
   2521         { "kind" : "IdRef",        "name" : "'Reserve Id'" },
   2522         { "kind" : "IdRef",        "name" : "'Index'" },
   2523         { "kind" : "IdRef",        "name" : "'Pointer'" },
   2524         { "kind" : "IdRef",        "name" : "'Packet Size'" },
   2525         { "kind" : "IdRef",        "name" : "'Packet Alignment'" }
   2526       ],
   2527       "capabilities" : [ "Pipes" ]
   2528     },
   2529     {
   2530       "opname" : "OpReserveReadPipePackets",
   2531       "opcode" : 278,
   2532       "operands" : [
   2533         { "kind" : "IdResultType" },
   2534         { "kind" : "IdResult" },
   2535         { "kind" : "IdRef",        "name" : "'Pipe'" },
   2536         { "kind" : "IdRef",        "name" : "'Num Packets'" },
   2537         { "kind" : "IdRef",        "name" : "'Packet Size'" },
   2538         { "kind" : "IdRef",        "name" : "'Packet Alignment'" }
   2539       ],
   2540       "capabilities" : [ "Pipes" ]
   2541     },
   2542     {
   2543       "opname" : "OpReserveWritePipePackets",
   2544       "opcode" : 279,
   2545       "operands" : [
   2546         { "kind" : "IdResultType" },
   2547         { "kind" : "IdResult" },
   2548         { "kind" : "IdRef",        "name" : "'Pipe'" },
   2549         { "kind" : "IdRef",        "name" : "'Num Packets'" },
   2550         { "kind" : "IdRef",        "name" : "'Packet Size'" },
   2551         { "kind" : "IdRef",        "name" : "'Packet Alignment'" }
   2552       ],
   2553       "capabilities" : [ "Pipes" ]
   2554     },
   2555     {
   2556       "opname" : "OpCommitReadPipe",
   2557       "opcode" : 280,
   2558       "operands" : [
   2559         { "kind" : "IdRef", "name" : "'Pipe'" },
   2560         { "kind" : "IdRef", "name" : "'Reserve Id'" },
   2561         { "kind" : "IdRef", "name" : "'Packet Size'" },
   2562         { "kind" : "IdRef", "name" : "'Packet Alignment'" }
   2563       ],
   2564       "capabilities" : [ "Pipes" ]
   2565     },
   2566     {
   2567       "opname" : "OpCommitWritePipe",
   2568       "opcode" : 281,
   2569       "operands" : [
   2570         { "kind" : "IdRef", "name" : "'Pipe'" },
   2571         { "kind" : "IdRef", "name" : "'Reserve Id'" },
   2572         { "kind" : "IdRef", "name" : "'Packet Size'" },
   2573         { "kind" : "IdRef", "name" : "'Packet Alignment'" }
   2574       ],
   2575       "capabilities" : [ "Pipes" ]
   2576     },
   2577     {
   2578       "opname" : "OpIsValidReserveId",
   2579       "opcode" : 282,
   2580       "operands" : [
   2581         { "kind" : "IdResultType" },
   2582         { "kind" : "IdResult" },
   2583         { "kind" : "IdRef",        "name" : "'Reserve Id'" }
   2584       ],
   2585       "capabilities" : [ "Pipes" ]
   2586     },
   2587     {
   2588       "opname" : "OpGetNumPipePackets",
   2589       "opcode" : 283,
   2590       "operands" : [
   2591         { "kind" : "IdResultType" },
   2592         { "kind" : "IdResult" },
   2593         { "kind" : "IdRef",        "name" : "'Pipe'" },
   2594         { "kind" : "IdRef",        "name" : "'Packet Size'" },
   2595         { "kind" : "IdRef",        "name" : "'Packet Alignment'" }
   2596       ],
   2597       "capabilities" : [ "Pipes" ]
   2598     },
   2599     {
   2600       "opname" : "OpGetMaxPipePackets",
   2601       "opcode" : 284,
   2602       "operands" : [
   2603         { "kind" : "IdResultType" },
   2604         { "kind" : "IdResult" },
   2605         { "kind" : "IdRef",        "name" : "'Pipe'" },
   2606         { "kind" : "IdRef",        "name" : "'Packet Size'" },
   2607         { "kind" : "IdRef",        "name" : "'Packet Alignment'" }
   2608       ],
   2609       "capabilities" : [ "Pipes" ]
   2610     },
   2611     {
   2612       "opname" : "OpGroupReserveReadPipePackets",
   2613       "opcode" : 285,
   2614       "operands" : [
   2615         { "kind" : "IdResultType" },
   2616         { "kind" : "IdResult" },
   2617         { "kind" : "IdScope",      "name" : "'Execution'" },
   2618         { "kind" : "IdRef",        "name" : "'Pipe'" },
   2619         { "kind" : "IdRef",        "name" : "'Num Packets'" },
   2620         { "kind" : "IdRef",        "name" : "'Packet Size'" },
   2621         { "kind" : "IdRef",        "name" : "'Packet Alignment'" }
   2622       ],
   2623       "capabilities" : [ "Pipes" ]
   2624     },
   2625     {
   2626       "opname" : "OpGroupReserveWritePipePackets",
   2627       "opcode" : 286,
   2628       "operands" : [
   2629         { "kind" : "IdResultType" },
   2630         { "kind" : "IdResult" },
   2631         { "kind" : "IdScope",      "name" : "'Execution'" },
   2632         { "kind" : "IdRef",        "name" : "'Pipe'" },
   2633         { "kind" : "IdRef",        "name" : "'Num Packets'" },
   2634         { "kind" : "IdRef",        "name" : "'Packet Size'" },
   2635         { "kind" : "IdRef",        "name" : "'Packet Alignment'" }
   2636       ],
   2637       "capabilities" : [ "Pipes" ]
   2638     },
   2639     {
   2640       "opname" : "OpGroupCommitReadPipe",
   2641       "opcode" : 287,
   2642       "operands" : [
   2643         { "kind" : "IdScope", "name" : "'Execution'" },
   2644         { "kind" : "IdRef",   "name" : "'Pipe'" },
   2645         { "kind" : "IdRef",   "name" : "'Reserve Id'" },
   2646         { "kind" : "IdRef",   "name" : "'Packet Size'" },
   2647         { "kind" : "IdRef",   "name" : "'Packet Alignment'" }
   2648       ],
   2649       "capabilities" : [ "Pipes" ]
   2650     },
   2651     {
   2652       "opname" : "OpGroupCommitWritePipe",
   2653       "opcode" : 288,
   2654       "operands" : [
   2655         { "kind" : "IdScope", "name" : "'Execution'" },
   2656         { "kind" : "IdRef",   "name" : "'Pipe'" },
   2657         { "kind" : "IdRef",   "name" : "'Reserve Id'" },
   2658         { "kind" : "IdRef",   "name" : "'Packet Size'" },
   2659         { "kind" : "IdRef",   "name" : "'Packet Alignment'" }
   2660       ],
   2661       "capabilities" : [ "Pipes" ]
   2662     },
   2663     {
   2664       "opname" : "OpEnqueueMarker",
   2665       "opcode" : 291,
   2666       "operands" : [
   2667         { "kind" : "IdResultType" },
   2668         { "kind" : "IdResult" },
   2669         { "kind" : "IdRef",        "name" : "'Queue'" },
   2670         { "kind" : "IdRef",        "name" : "'Num Events'" },
   2671         { "kind" : "IdRef",        "name" : "'Wait Events'" },
   2672         { "kind" : "IdRef",        "name" : "'Ret Event'" }
   2673       ],
   2674       "capabilities" : [ "DeviceEnqueue" ]
   2675     },
   2676     {
   2677       "opname" : "OpEnqueueKernel",
   2678       "opcode" : 292,
   2679       "operands" : [
   2680         { "kind" : "IdResultType" },
   2681         { "kind" : "IdResult" },
   2682         { "kind" : "IdRef",                            "name" : "'Queue'" },
   2683         { "kind" : "IdRef",                            "name" : "'Flags'" },
   2684         { "kind" : "IdRef",                            "name" : "'ND Range'" },
   2685         { "kind" : "IdRef",                            "name" : "'Num Events'" },
   2686         { "kind" : "IdRef",                            "name" : "'Wait Events'" },
   2687         { "kind" : "IdRef",                            "name" : "'Ret Event'" },
   2688         { "kind" : "IdRef",                            "name" : "'Invoke'" },
   2689         { "kind" : "IdRef",                            "name" : "'Param'" },
   2690         { "kind" : "IdRef",                            "name" : "'Param Size'" },
   2691         { "kind" : "IdRef",                            "name" : "'Param Align'" },
   2692         { "kind" : "IdRef",        "quantifier" : "*", "name" : "'Local Size'" }
   2693       ],
   2694       "capabilities" : [ "DeviceEnqueue" ]
   2695     },
   2696     {
   2697       "opname" : "OpGetKernelNDrangeSubGroupCount",
   2698       "opcode" : 293,
   2699       "operands" : [
   2700         { "kind" : "IdResultType" },
   2701         { "kind" : "IdResult" },
   2702         { "kind" : "IdRef",        "name" : "'ND Range'" },
   2703         { "kind" : "IdRef",        "name" : "'Invoke'" },
   2704         { "kind" : "IdRef",        "name" : "'Param'" },
   2705         { "kind" : "IdRef",        "name" : "'Param Size'" },
   2706         { "kind" : "IdRef",        "name" : "'Param Align'" }
   2707       ],
   2708       "capabilities" : [ "DeviceEnqueue" ]
   2709     },
   2710     {
   2711       "opname" : "OpGetKernelNDrangeMaxSubGroupSize",
   2712       "opcode" : 294,
   2713       "operands" : [
   2714         { "kind" : "IdResultType" },
   2715         { "kind" : "IdResult" },
   2716         { "kind" : "IdRef",        "name" : "'ND Range'" },
   2717         { "kind" : "IdRef",        "name" : "'Invoke'" },
   2718         { "kind" : "IdRef",        "name" : "'Param'" },
   2719         { "kind" : "IdRef",        "name" : "'Param Size'" },
   2720         { "kind" : "IdRef",        "name" : "'Param Align'" }
   2721       ],
   2722       "capabilities" : [ "DeviceEnqueue" ]
   2723     },
   2724     {
   2725       "opname" : "OpGetKernelWorkGroupSize",
   2726       "opcode" : 295,
   2727       "operands" : [
   2728         { "kind" : "IdResultType" },
   2729         { "kind" : "IdResult" },
   2730         { "kind" : "IdRef",        "name" : "'Invoke'" },
   2731         { "kind" : "IdRef",        "name" : "'Param'" },
   2732         { "kind" : "IdRef",        "name" : "'Param Size'" },
   2733         { "kind" : "IdRef",        "name" : "'Param Align'" }
   2734       ],
   2735       "capabilities" : [ "DeviceEnqueue" ]
   2736     },
   2737     {
   2738       "opname" : "OpGetKernelPreferredWorkGroupSizeMultiple",
   2739       "opcode" : 296,
   2740       "operands" : [
   2741         { "kind" : "IdResultType" },
   2742         { "kind" : "IdResult" },
   2743         { "kind" : "IdRef",        "name" : "'Invoke'" },
   2744         { "kind" : "IdRef",        "name" : "'Param'" },
   2745         { "kind" : "IdRef",        "name" : "'Param Size'" },
   2746         { "kind" : "IdRef",        "name" : "'Param Align'" }
   2747       ],
   2748       "capabilities" : [ "DeviceEnqueue" ]
   2749     },
   2750     {
   2751       "opname" : "OpRetainEvent",
   2752       "opcode" : 297,
   2753       "operands" : [
   2754         { "kind" : "IdRef", "name" : "'Event'" }
   2755       ],
   2756       "capabilities" : [ "DeviceEnqueue" ]
   2757     },
   2758     {
   2759       "opname" : "OpReleaseEvent",
   2760       "opcode" : 298,
   2761       "operands" : [
   2762         { "kind" : "IdRef", "name" : "'Event'" }
   2763       ],
   2764       "capabilities" : [ "DeviceEnqueue" ]
   2765     },
   2766     {
   2767       "opname" : "OpCreateUserEvent",
   2768       "opcode" : 299,
   2769       "operands" : [
   2770         { "kind" : "IdResultType" },
   2771         { "kind" : "IdResult" }
   2772       ],
   2773       "capabilities" : [ "DeviceEnqueue" ]
   2774     },
   2775     {
   2776       "opname" : "OpIsValidEvent",
   2777       "opcode" : 300,
   2778       "operands" : [
   2779         { "kind" : "IdResultType" },
   2780         { "kind" : "IdResult" },
   2781         { "kind" : "IdRef",        "name" : "'Event'" }
   2782       ],
   2783       "capabilities" : [ "DeviceEnqueue" ]
   2784     },
   2785     {
   2786       "opname" : "OpSetUserEventStatus",
   2787       "opcode" : 301,
   2788       "operands" : [
   2789         { "kind" : "IdRef", "name" : "'Event'" },
   2790         { "kind" : "IdRef", "name" : "'Status'" }
   2791       ],
   2792       "capabilities" : [ "DeviceEnqueue" ]
   2793     },
   2794     {
   2795       "opname" : "OpCaptureEventProfilingInfo",
   2796       "opcode" : 302,
   2797       "operands" : [
   2798         { "kind" : "IdRef", "name" : "'Event'" },
   2799         { "kind" : "IdRef", "name" : "'Profiling Info'" },
   2800         { "kind" : "IdRef", "name" : "'Value'" }
   2801       ],
   2802       "capabilities" : [ "DeviceEnqueue" ]
   2803     },
   2804     {
   2805       "opname" : "OpGetDefaultQueue",
   2806       "opcode" : 303,
   2807       "operands" : [
   2808         { "kind" : "IdResultType" },
   2809         { "kind" : "IdResult" }
   2810       ],
   2811       "capabilities" : [ "DeviceEnqueue" ]
   2812     },
   2813     {
   2814       "opname" : "OpBuildNDRange",
   2815       "opcode" : 304,
   2816       "operands" : [
   2817         { "kind" : "IdResultType" },
   2818         { "kind" : "IdResult" },
   2819         { "kind" : "IdRef",        "name" : "'GlobalWorkSize'" },
   2820         { "kind" : "IdRef",        "name" : "'LocalWorkSize'" },
   2821         { "kind" : "IdRef",        "name" : "'GlobalWorkOffset'" }
   2822       ],
   2823       "capabilities" : [ "DeviceEnqueue" ]
   2824     },
   2825     {
   2826       "opname" : "OpImageSparseSampleImplicitLod",
   2827       "opcode" : 305,
   2828       "operands" : [
   2829         { "kind" : "IdResultType" },
   2830         { "kind" : "IdResult" },
   2831         { "kind" : "IdRef",                             "name" : "'Sampled Image'" },
   2832         { "kind" : "IdRef",                             "name" : "'Coordinate'" },
   2833         { "kind" : "ImageOperands", "quantifier" : "?" }
   2834       ],
   2835       "capabilities" : [ "SparseResidency" ]
   2836     },
   2837     {
   2838       "opname" : "OpImageSparseSampleExplicitLod",
   2839       "opcode" : 306,
   2840       "operands" : [
   2841         { "kind" : "IdResultType" },
   2842         { "kind" : "IdResult" },
   2843         { "kind" : "IdRef",         "name" : "'Sampled Image'" },
   2844         { "kind" : "IdRef",         "name" : "'Coordinate'" },
   2845         { "kind" : "ImageOperands" }
   2846       ],
   2847       "capabilities" : [ "SparseResidency" ]
   2848     },
   2849     {
   2850       "opname" : "OpImageSparseSampleDrefImplicitLod",
   2851       "opcode" : 307,
   2852       "operands" : [
   2853         { "kind" : "IdResultType" },
   2854         { "kind" : "IdResult" },
   2855         { "kind" : "IdRef",                             "name" : "'Sampled Image'" },
   2856         { "kind" : "IdRef",                             "name" : "'Coordinate'" },
   2857         { "kind" : "IdRef",                             "name" : "'D~ref~'" },
   2858         { "kind" : "ImageOperands", "quantifier" : "?" }
   2859       ],
   2860       "capabilities" : [ "SparseResidency" ]
   2861     },
   2862     {
   2863       "opname" : "OpImageSparseSampleDrefExplicitLod",
   2864       "opcode" : 308,
   2865       "operands" : [
   2866         { "kind" : "IdResultType" },
   2867         { "kind" : "IdResult" },
   2868         { "kind" : "IdRef",         "name" : "'Sampled Image'" },
   2869         { "kind" : "IdRef",         "name" : "'Coordinate'" },
   2870         { "kind" : "IdRef",         "name" : "'D~ref~'" },
   2871         { "kind" : "ImageOperands" }
   2872       ],
   2873       "capabilities" : [ "SparseResidency" ]
   2874     },
   2875     {
   2876       "opname" : "OpImageSparseSampleProjImplicitLod",
   2877       "opcode" : 309,
   2878       "operands" : [
   2879         { "kind" : "IdResultType" },
   2880         { "kind" : "IdResult" },
   2881         { "kind" : "IdRef",                             "name" : "'Sampled Image'" },
   2882         { "kind" : "IdRef",                             "name" : "'Coordinate'" },
   2883         { "kind" : "ImageOperands", "quantifier" : "?" }
   2884       ],
   2885       "capabilities" : [ "SparseResidency" ]
   2886     },
   2887     {
   2888       "opname" : "OpImageSparseSampleProjExplicitLod",
   2889       "opcode" : 310,
   2890       "operands" : [
   2891         { "kind" : "IdResultType" },
   2892         { "kind" : "IdResult" },
   2893         { "kind" : "IdRef",         "name" : "'Sampled Image'" },
   2894         { "kind" : "IdRef",         "name" : "'Coordinate'" },
   2895         { "kind" : "ImageOperands" }
   2896       ],
   2897       "capabilities" : [ "SparseResidency" ]
   2898     },
   2899     {
   2900       "opname" : "OpImageSparseSampleProjDrefImplicitLod",
   2901       "opcode" : 311,
   2902       "operands" : [
   2903         { "kind" : "IdResultType" },
   2904         { "kind" : "IdResult" },
   2905         { "kind" : "IdRef",                             "name" : "'Sampled Image'" },
   2906         { "kind" : "IdRef",                             "name" : "'Coordinate'" },
   2907         { "kind" : "IdRef",                             "name" : "'D~ref~'" },
   2908         { "kind" : "ImageOperands", "quantifier" : "?" }
   2909       ],
   2910       "capabilities" : [ "SparseResidency" ]
   2911     },
   2912     {
   2913       "opname" : "OpImageSparseSampleProjDrefExplicitLod",
   2914       "opcode" : 312,
   2915       "operands" : [
   2916         { "kind" : "IdResultType" },
   2917         { "kind" : "IdResult" },
   2918         { "kind" : "IdRef",         "name" : "'Sampled Image'" },
   2919         { "kind" : "IdRef",         "name" : "'Coordinate'" },
   2920         { "kind" : "IdRef",         "name" : "'D~ref~'" },
   2921         { "kind" : "ImageOperands" }
   2922       ],
   2923       "capabilities" : [ "SparseResidency" ]
   2924     },
   2925     {
   2926       "opname" : "OpImageSparseFetch",
   2927       "opcode" : 313,
   2928       "operands" : [
   2929         { "kind" : "IdResultType" },
   2930         { "kind" : "IdResult" },
   2931         { "kind" : "IdRef",                             "name" : "'Image'" },
   2932         { "kind" : "IdRef",                             "name" : "'Coordinate'" },
   2933         { "kind" : "ImageOperands", "quantifier" : "?" }
   2934       ],
   2935       "capabilities" : [ "SparseResidency" ]
   2936     },
   2937     {
   2938       "opname" : "OpImageSparseGather",
   2939       "opcode" : 314,
   2940       "operands" : [
   2941         { "kind" : "IdResultType" },
   2942         { "kind" : "IdResult" },
   2943         { "kind" : "IdRef",                             "name" : "'Sampled Image'" },
   2944         { "kind" : "IdRef",                             "name" : "'Coordinate'" },
   2945         { "kind" : "IdRef",                             "name" : "'Component'" },
   2946         { "kind" : "ImageOperands", "quantifier" : "?" }
   2947       ],
   2948       "capabilities" : [ "SparseResidency" ]
   2949     },
   2950     {
   2951       "opname" : "OpImageSparseDrefGather",
   2952       "opcode" : 315,
   2953       "operands" : [
   2954         { "kind" : "IdResultType" },
   2955         { "kind" : "IdResult" },
   2956         { "kind" : "IdRef",                             "name" : "'Sampled Image'" },
   2957         { "kind" : "IdRef",                             "name" : "'Coordinate'" },
   2958         { "kind" : "IdRef",                             "name" : "'D~ref~'" },
   2959         { "kind" : "ImageOperands", "quantifier" : "?" }
   2960       ],
   2961       "capabilities" : [ "SparseResidency" ]
   2962     },
   2963     {
   2964       "opname" : "OpImageSparseTexelsResident",
   2965       "opcode" : 316,
   2966       "operands" : [
   2967         { "kind" : "IdResultType" },
   2968         { "kind" : "IdResult" },
   2969         { "kind" : "IdRef",        "name" : "'Resident Code'" }
   2970       ],
   2971       "capabilities" : [ "SparseResidency" ]
   2972     },
   2973     {
   2974       "opname" : "OpNoLine",
   2975       "opcode" : 317
   2976     },
   2977     {
   2978       "opname" : "OpAtomicFlagTestAndSet",
   2979       "opcode" : 318,
   2980       "operands" : [
   2981         { "kind" : "IdResultType" },
   2982         { "kind" : "IdResult" },
   2983         { "kind" : "IdRef",             "name" : "'Pointer'" },
   2984         { "kind" : "IdScope",           "name" : "'Scope'" },
   2985         { "kind" : "IdMemorySemantics", "name" : "'Semantics'" }
   2986       ],
   2987       "capabilities" : [ "Kernel" ]
   2988     },
   2989     {
   2990       "opname" : "OpAtomicFlagClear",
   2991       "opcode" : 319,
   2992       "operands" : [
   2993         { "kind" : "IdRef",             "name" : "'Pointer'" },
   2994         { "kind" : "IdScope",           "name" : "'Scope'" },
   2995         { "kind" : "IdMemorySemantics", "name" : "'Semantics'" }
   2996       ],
   2997       "capabilities" : [ "Kernel" ]
   2998     },
   2999     {
   3000       "opname" : "OpImageSparseRead",
   3001       "opcode" : 320,
   3002       "operands" : [
   3003         { "kind" : "IdResultType" },
   3004         { "kind" : "IdResult" },
   3005         { "kind" : "IdRef",                             "name" : "'Image'" },
   3006         { "kind" : "IdRef",                             "name" : "'Coordinate'" },
   3007         { "kind" : "ImageOperands", "quantifier" : "?" }
   3008       ],
   3009       "capabilities" : [ "SparseResidency" ]
   3010     },
   3011     {
   3012       "opname" : "OpSubgroupBallotKHR",
   3013       "opcode" : 4421,
   3014       "operands" : [
   3015         { "kind" : "IdResultType" },
   3016         { "kind" : "IdResult" },
   3017         { "kind" : "IdRef", "name" : "'Predicate'" }
   3018       ],
   3019       "capabilities" : [ "SubgroupBallotKHR" ]
   3020     },
   3021     {
   3022       "opname" : "OpSubgroupFirstInvocationKHR",
   3023       "opcode" : 4422,
   3024       "operands" : [
   3025         { "kind" : "IdResultType" },
   3026         { "kind" : "IdResult" },
   3027         { "kind" : "IdRef", "name" : "'Value'" }
   3028       ],
   3029       "capabilities" : [ "SubgroupBallotKHR" ]
   3030     }
   3031   ],
   3032   "operand_kinds" : [
   3033     {
   3034       "category" : "BitEnum",
   3035       "kind" : "ImageOperands",
   3036       "enumerants" : [
   3037         {
   3038           "enumerant" : "None",
   3039           "value" : "0x0000"
   3040         },
   3041         {
   3042           "enumerant" : "Bias",
   3043           "value" : "0x0001",
   3044           "capabilities" : [ "Shader" ],
   3045           "parameters" : [
   3046             { "kind" : "IdRef" }
   3047           ]
   3048         },
   3049         {
   3050           "enumerant" : "Lod",
   3051           "value" : "0x0002",
   3052           "parameters" : [
   3053             { "kind" : "IdRef" }
   3054           ]
   3055         },
   3056         {
   3057           "enumerant" : "Grad",
   3058           "value" : "0x0004",
   3059           "parameters" : [
   3060             { "kind" : "IdRef" },
   3061             { "kind" : "IdRef" }
   3062           ]
   3063         },
   3064         {
   3065           "enumerant" : "ConstOffset",
   3066           "value" : "0x0008",
   3067           "parameters" : [
   3068             { "kind" : "IdRef" }
   3069           ]
   3070         },
   3071         {
   3072           "enumerant" : "Offset",
   3073           "value" : "0x0010",
   3074           "capabilities" : [ "ImageGatherExtended" ],
   3075           "parameters" : [
   3076             { "kind" : "IdRef" }
   3077           ]
   3078         },
   3079         {
   3080           "enumerant" : "ConstOffsets",
   3081           "value" : "0x0020",
   3082           "parameters" : [
   3083             { "kind" : "IdRef" }
   3084           ]
   3085         },
   3086         {
   3087           "enumerant" : "Sample",
   3088           "value" : "0x0040",
   3089           "parameters" : [
   3090             { "kind" : "IdRef" }
   3091           ]
   3092         },
   3093         {
   3094           "enumerant" : "MinLod",
   3095           "value" : "0x0080",
   3096           "capabilities" : [ "MinLod" ],
   3097           "parameters" : [
   3098             { "kind" : "IdRef" }
   3099           ]
   3100         }
   3101       ]
   3102     },
   3103     {
   3104       "category" : "BitEnum",
   3105       "kind" : "FPFastMathMode",
   3106       "enumerants" : [
   3107         {
   3108           "enumerant" : "None",
   3109           "value" : "0x0000"
   3110         },
   3111         {
   3112           "enumerant" : "NotNaN",
   3113           "value" : "0x0001",
   3114           "capabilities" : [ "Kernel" ]
   3115         },
   3116         {
   3117           "enumerant" : "NotInf",
   3118           "value" : "0x0002",
   3119           "capabilities" : [ "Kernel" ]
   3120         },
   3121         {
   3122           "enumerant" : "NSZ",
   3123           "value" : "0x0004",
   3124           "capabilities" : [ "Kernel" ]
   3125         },
   3126         {
   3127           "enumerant" : "AllowRecip",
   3128           "value" : "0x0008",
   3129           "capabilities" : [ "Kernel" ]
   3130         },
   3131         {
   3132           "enumerant" : "Fast",
   3133           "value" : "0x0010",
   3134           "capabilities" : [ "Kernel" ]
   3135         }
   3136       ]
   3137     },
   3138     {
   3139       "category" : "BitEnum",
   3140       "kind" : "SelectionControl",
   3141       "enumerants" : [
   3142         {
   3143           "enumerant" : "None",
   3144           "value" : "0x0000"
   3145         },
   3146         {
   3147           "enumerant" : "Flatten",
   3148           "value" : "0x0001"
   3149         },
   3150         {
   3151           "enumerant" : "DontFlatten",
   3152           "value" : "0x0002"
   3153         }
   3154       ]
   3155     },
   3156     {
   3157       "category" : "BitEnum",
   3158       "kind" : "LoopControl",
   3159       "enumerants" : [
   3160         {
   3161           "enumerant" : "None",
   3162           "value" : "0x0000"
   3163         },
   3164         {
   3165           "enumerant" : "Unroll",
   3166           "value" : "0x0001"
   3167         },
   3168         {
   3169           "enumerant" : "DontUnroll",
   3170           "value" : "0x0002"
   3171         }
   3172       ]
   3173     },
   3174     {
   3175       "category" : "BitEnum",
   3176       "kind" : "FunctionControl",
   3177       "enumerants" : [
   3178         {
   3179           "enumerant" : "None",
   3180           "value" : "0x0000"
   3181         },
   3182         {
   3183           "enumerant" : "Inline",
   3184           "value" : "0x0001"
   3185         },
   3186         {
   3187           "enumerant" : "DontInline",
   3188           "value" : "0x0002"
   3189         },
   3190         {
   3191           "enumerant" : "Pure",
   3192           "value" : "0x0004"
   3193         },
   3194         {
   3195           "enumerant" : "Const",
   3196           "value" : "0x0008"
   3197         }
   3198       ]
   3199     },
   3200     {
   3201       "category" : "BitEnum",
   3202       "kind" : "MemorySemantics",
   3203       "enumerants" : [
   3204         {
   3205           "enumerant" : "Relaxed",
   3206           "value" : "0x0000"
   3207         },
   3208         {
   3209           "enumerant" : "None",
   3210           "value" : "0x0000"
   3211         },
   3212         {
   3213           "enumerant" : "Acquire",
   3214           "value" : "0x0002"
   3215         },
   3216         {
   3217           "enumerant" : "Release",
   3218           "value" : "0x0004"
   3219         },
   3220         {
   3221           "enumerant" : "AcquireRelease",
   3222           "value" : "0x0008"
   3223         },
   3224         {
   3225           "enumerant" : "SequentiallyConsistent",
   3226           "value" : "0x0010"
   3227         },
   3228         {
   3229           "enumerant" : "UniformMemory",
   3230           "value" : "0x0040",
   3231           "capabilities" : [ "Shader" ]
   3232         },
   3233         {
   3234           "enumerant" : "SubgroupMemory",
   3235           "value" : "0x0080"
   3236         },
   3237         {
   3238           "enumerant" : "WorkgroupMemory",
   3239           "value" : "0x0100"
   3240         },
   3241         {
   3242           "enumerant" : "CrossWorkgroupMemory",
   3243           "value" : "0x0200"
   3244         },
   3245         {
   3246           "enumerant" : "AtomicCounterMemory",
   3247           "value" : "0x0400",
   3248           "capabilities" : [ "AtomicStorage" ]
   3249         },
   3250         {
   3251           "enumerant" : "ImageMemory",
   3252           "value" : "0x0800"
   3253         }
   3254       ]
   3255     },
   3256     {
   3257       "category" : "BitEnum",
   3258       "kind" : "MemoryAccess",
   3259       "enumerants" : [
   3260         {
   3261           "enumerant" : "None",
   3262           "value" : "0x0000"
   3263         },
   3264         {
   3265           "enumerant" : "Volatile",
   3266           "value" : "0x0001"
   3267         },
   3268         {
   3269           "enumerant" : "Aligned",
   3270           "value" : "0x0002",
   3271           "parameters" : [
   3272             { "kind" : "LiteralInteger" }
   3273           ]
   3274         },
   3275         {
   3276           "enumerant" : "Nontemporal",
   3277           "value" : "0x0004"
   3278         }
   3279       ]
   3280     },
   3281     {
   3282       "category" : "BitEnum",
   3283       "kind" : "KernelProfilingInfo",
   3284       "enumerants" : [
   3285         {
   3286           "enumerant" : "None",
   3287           "value" : "0x0000"
   3288         },
   3289         {
   3290           "enumerant" : "CmdExecTime",
   3291           "value" : "0x0001",
   3292           "capabilities" : [ "Kernel" ]
   3293         }
   3294       ]
   3295     },
   3296     {
   3297       "category" : "ValueEnum",
   3298       "kind" : "SourceLanguage",
   3299       "enumerants" : [
   3300         {
   3301           "enumerant" : "Unknown",
   3302           "value" : 0
   3303         },
   3304         {
   3305           "enumerant" : "ESSL",
   3306           "value" : 1
   3307         },
   3308         {
   3309           "enumerant" : "GLSL",
   3310           "value" : 2
   3311         },
   3312         {
   3313           "enumerant" : "OpenCL_C",
   3314           "value" : 3
   3315         },
   3316         {
   3317           "enumerant" : "OpenCL_CPP",
   3318           "value" : 4
   3319         }
   3320       ]
   3321     },
   3322     {
   3323       "category" : "ValueEnum",
   3324       "kind" : "ExecutionModel",
   3325       "enumerants" : [
   3326         {
   3327           "enumerant" : "Vertex",
   3328           "value" : 0,
   3329           "capabilities" : [ "Shader" ]
   3330         },
   3331         {
   3332           "enumerant" : "TessellationControl",
   3333           "value" : 1,
   3334           "capabilities" : [ "Tessellation" ]
   3335         },
   3336         {
   3337           "enumerant" : "TessellationEvaluation",
   3338           "value" : 2,
   3339           "capabilities" : [ "Tessellation" ]
   3340         },
   3341         {
   3342           "enumerant" : "Geometry",
   3343           "value" : 3,
   3344           "capabilities" : [ "Geometry" ]
   3345         },
   3346         {
   3347           "enumerant" : "Fragment",
   3348           "value" : 4,
   3349           "capabilities" : [ "Shader" ]
   3350         },
   3351         {
   3352           "enumerant" : "GLCompute",
   3353           "value" : 5,
   3354           "capabilities" : [ "Shader" ]
   3355         },
   3356         {
   3357           "enumerant" : "Kernel",
   3358           "value" : 6,
   3359           "capabilities" : [ "Kernel" ]
   3360         }
   3361       ]
   3362     },
   3363     {
   3364       "category" : "ValueEnum",
   3365       "kind" : "AddressingModel",
   3366       "enumerants" : [
   3367         {
   3368           "enumerant" : "Logical",
   3369           "value" : 0
   3370         },
   3371         {
   3372           "enumerant" : "Physical32",
   3373           "value" : 1,
   3374           "capabilities" : [ "Addresses" ]
   3375         },
   3376         {
   3377           "enumerant" : "Physical64",
   3378           "value" : 2,
   3379           "capabilities" : [ "Addresses" ]
   3380         }
   3381       ]
   3382     },
   3383     {
   3384       "category" : "ValueEnum",
   3385       "kind" : "MemoryModel",
   3386       "enumerants" : [
   3387         {
   3388           "enumerant" : "Simple",
   3389           "value" : 0,
   3390           "capabilities" : [ "Shader" ]
   3391         },
   3392         {
   3393           "enumerant" : "GLSL450",
   3394           "value" : 1,
   3395           "capabilities" : [ "Shader" ]
   3396         },
   3397         {
   3398           "enumerant" : "OpenCL",
   3399           "value" : 2,
   3400           "capabilities" : [ "Kernel" ]
   3401         }
   3402       ]
   3403     },
   3404     {
   3405       "category" : "ValueEnum",
   3406       "kind" : "ExecutionMode",
   3407       "enumerants" : [
   3408         {
   3409           "enumerant" : "Invocations",
   3410           "value" : 0,
   3411           "capabilities" : [ "Geometry" ],
   3412           "parameters" : [
   3413             { "kind" : "LiteralInteger", "name" : "'Number of <<Invocation,invocations>>'" }
   3414           ]
   3415         },
   3416         {
   3417           "enumerant" : "SpacingEqual",
   3418           "value" : 1,
   3419           "capabilities" : [ "Tessellation" ]
   3420         },
   3421         {
   3422           "enumerant" : "SpacingFractionalEven",
   3423           "value" : 2,
   3424           "capabilities" : [ "Tessellation" ]
   3425         },
   3426         {
   3427           "enumerant" : "SpacingFractionalOdd",
   3428           "value" : 3,
   3429           "capabilities" : [ "Tessellation" ]
   3430         },
   3431         {
   3432           "enumerant" : "VertexOrderCw",
   3433           "value" : 4,
   3434           "capabilities" : [ "Tessellation" ]
   3435         },
   3436         {
   3437           "enumerant" : "VertexOrderCcw",
   3438           "value" : 5,
   3439           "capabilities" : [ "Tessellation" ]
   3440         },
   3441         {
   3442           "enumerant" : "PixelCenterInteger",
   3443           "value" : 6,
   3444           "capabilities" : [ "Shader" ]
   3445         },
   3446         {
   3447           "enumerant" : "OriginUpperLeft",
   3448           "value" : 7,
   3449           "capabilities" : [ "Shader" ]
   3450         },
   3451         {
   3452           "enumerant" : "OriginLowerLeft",
   3453           "value" : 8,
   3454           "capabilities" : [ "Shader" ]
   3455         },
   3456         {
   3457           "enumerant" : "EarlyFragmentTests",
   3458           "value" : 9,
   3459           "capabilities" : [ "Shader" ]
   3460         },
   3461         {
   3462           "enumerant" : "PointMode",
   3463           "value" : 10,
   3464           "capabilities" : [ "Tessellation" ]
   3465         },
   3466         {
   3467           "enumerant" : "Xfb",
   3468           "value" : 11,
   3469           "capabilities" : [ "TransformFeedback" ]
   3470         },
   3471         {
   3472           "enumerant" : "DepthReplacing",
   3473           "value" : 12,
   3474           "capabilities" : [ "Shader" ]
   3475         },
   3476         {
   3477           "enumerant" : "DepthGreater",
   3478           "value" : 14,
   3479           "capabilities" : [ "Shader" ]
   3480         },
   3481         {
   3482           "enumerant" : "DepthLess",
   3483           "value" : 15,
   3484           "capabilities" : [ "Shader" ]
   3485         },
   3486         {
   3487           "enumerant" : "DepthUnchanged",
   3488           "value" : 16,
   3489           "capabilities" : [ "Shader" ]
   3490         },
   3491         {
   3492           "enumerant" : "LocalSize",
   3493           "value" : 17,
   3494           "parameters" : [
   3495             { "kind" : "LiteralInteger", "name" : "'x size'" },
   3496             { "kind" : "LiteralInteger", "name" : "'y size'" },
   3497             { "kind" : "LiteralInteger", "name" : "'z size'" }
   3498           ]
   3499         },
   3500         {
   3501           "enumerant" : "LocalSizeHint",
   3502           "value" : 18,
   3503           "capabilities" : [ "Kernel" ],
   3504           "parameters" : [
   3505             { "kind" : "LiteralInteger", "name" : "'x size'" },
   3506             { "kind" : "LiteralInteger", "name" : "'y size'" },
   3507             { "kind" : "LiteralInteger", "name" : "'z size'" }
   3508           ]
   3509         },
   3510         {
   3511           "enumerant" : "InputPoints",
   3512           "value" : 19,
   3513           "capabilities" : [ "Geometry" ]
   3514         },
   3515         {
   3516           "enumerant" : "InputLines",
   3517           "value" : 20,
   3518           "capabilities" : [ "Geometry" ]
   3519         },
   3520         {
   3521           "enumerant" : "InputLinesAdjacency",
   3522           "value" : 21,
   3523           "capabilities" : [ "Geometry" ]
   3524         },
   3525         {
   3526           "enumerant" : "Triangles",
   3527           "value" : 22,
   3528           "capabilities" : [ "Geometry", "Tessellation" ]
   3529         },
   3530         {
   3531           "enumerant" : "InputTrianglesAdjacency",
   3532           "value" : 23,
   3533           "capabilities" : [ "Geometry" ]
   3534         },
   3535         {
   3536           "enumerant" : "Quads",
   3537           "value" : 24,
   3538           "capabilities" : [ "Tessellation" ]
   3539         },
   3540         {
   3541           "enumerant" : "Isolines",
   3542           "value" : 25,
   3543           "capabilities" : [ "Tessellation" ]
   3544         },
   3545         {
   3546           "enumerant" : "OutputVertices",
   3547           "value" : 26,
   3548           "capabilities" : [ "Geometry", "Tessellation" ],
   3549           "parameters" : [
   3550             { "kind" : "LiteralInteger", "name" : "'Vertex count'" }
   3551           ]
   3552         },
   3553         {
   3554           "enumerant" : "OutputPoints",
   3555           "value" : 27,
   3556           "capabilities" : [ "Geometry" ]
   3557         },
   3558         {
   3559           "enumerant" : "OutputLineStrip",
   3560           "value" : 28,
   3561           "capabilities" : [ "Geometry" ]
   3562         },
   3563         {
   3564           "enumerant" : "OutputTriangleStrip",
   3565           "value" : 29,
   3566           "capabilities" : [ "Geometry" ]
   3567         },
   3568         {
   3569           "enumerant" : "VecTypeHint",
   3570           "value" : 30,
   3571           "capabilities" : [ "Kernel" ],
   3572           "parameters" : [
   3573             { "kind" : "LiteralInteger", "name" : "'Vector type'" }
   3574           ]
   3575         },
   3576         {
   3577           "enumerant" : "ContractionOff",
   3578           "value" : 31,
   3579           "capabilities" : [ "Kernel" ]
   3580         }
   3581       ]
   3582     },
   3583     {
   3584       "category" : "ValueEnum",
   3585       "kind" : "StorageClass",
   3586       "enumerants" : [
   3587         {
   3588           "enumerant" : "UniformConstant",
   3589           "value" : 0
   3590         },
   3591         {
   3592           "enumerant" : "Input",
   3593           "value" : 1
   3594         },
   3595         {
   3596           "enumerant" : "Uniform",
   3597           "value" : 2,
   3598           "capabilities" : [ "Shader" ]
   3599         },
   3600         {
   3601           "enumerant" : "Output",
   3602           "value" : 3,
   3603           "capabilities" : [ "Shader" ]
   3604         },
   3605         {
   3606           "enumerant" : "Workgroup",
   3607           "value" : 4
   3608         },
   3609         {
   3610           "enumerant" : "CrossWorkgroup",
   3611           "value" : 5
   3612         },
   3613         {
   3614           "enumerant" : "Private",
   3615           "value" : 6,
   3616           "capabilities" : [ "Shader" ]
   3617         },
   3618         {
   3619           "enumerant" : "Function",
   3620           "value" : 7
   3621         },
   3622         {
   3623           "enumerant" : "Generic",
   3624           "value" : 8,
   3625           "capabilities" : [ "GenericPointer" ]
   3626         },
   3627         {
   3628           "enumerant" : "PushConstant",
   3629           "value" : 9,
   3630           "capabilities" : [ "Shader" ]
   3631         },
   3632         {
   3633           "enumerant" : "AtomicCounter",
   3634           "value" : 10,
   3635           "capabilities" : [ "AtomicStorage" ]
   3636         },
   3637         {
   3638           "enumerant" : "Image",
   3639           "value" : 11
   3640         }
   3641       ]
   3642     },
   3643     {
   3644       "category" : "ValueEnum",
   3645       "kind" : "Dim",
   3646       "enumerants" : [
   3647         {
   3648           "enumerant" : "1D",
   3649           "value" : 0,
   3650           "capabilities" : [ "Sampled1D" ]
   3651         },
   3652         {
   3653           "enumerant" : "2D",
   3654           "value" : 1
   3655         },
   3656         {
   3657           "enumerant" : "3D",
   3658           "value" : 2
   3659         },
   3660         {
   3661           "enumerant" : "Cube",
   3662           "value" : 3,
   3663           "capabilities" : [ "Shader" ]
   3664         },
   3665         {
   3666           "enumerant" : "Rect",
   3667           "value" : 4,
   3668           "capabilities" : [ "SampledRect" ]
   3669         },
   3670         {
   3671           "enumerant" : "Buffer",
   3672           "value" : 5,
   3673           "capabilities" : [ "SampledBuffer" ]
   3674         },
   3675         {
   3676           "enumerant" : "SubpassData",
   3677           "value" : 6,
   3678           "capabilities" : [ "InputAttachment" ]
   3679         }
   3680       ]
   3681     },
   3682     {
   3683       "category" : "ValueEnum",
   3684       "kind" : "SamplerAddressingMode",
   3685       "enumerants" : [
   3686         {
   3687           "enumerant" : "None",
   3688           "value" : 0,
   3689           "capabilities" : [ "Kernel" ]
   3690         },
   3691         {
   3692           "enumerant" : "ClampToEdge",
   3693           "value" : 1,
   3694           "capabilities" : [ "Kernel" ]
   3695         },
   3696         {
   3697           "enumerant" : "Clamp",
   3698           "value" : 2,
   3699           "capabilities" : [ "Kernel" ]
   3700         },
   3701         {
   3702           "enumerant" : "Repeat",
   3703           "value" : 3,
   3704           "capabilities" : [ "Kernel" ]
   3705         },
   3706         {
   3707           "enumerant" : "RepeatMirrored",
   3708           "value" : 4,
   3709           "capabilities" : [ "Kernel" ]
   3710         }
   3711       ]
   3712     },
   3713     {
   3714       "category" : "ValueEnum",
   3715       "kind" : "SamplerFilterMode",
   3716       "enumerants" : [
   3717         {
   3718           "enumerant" : "Nearest",
   3719           "value" : 0,
   3720           "capabilities" : [ "Kernel" ]
   3721         },
   3722         {
   3723           "enumerant" : "Linear",
   3724           "value" : 1,
   3725           "capabilities" : [ "Kernel" ]
   3726         }
   3727       ]
   3728     },
   3729     {
   3730       "category" : "ValueEnum",
   3731       "kind" : "ImageFormat",
   3732       "enumerants" : [
   3733         {
   3734           "enumerant" : "Unknown",
   3735           "value" : 0
   3736         },
   3737         {
   3738           "enumerant" : "Rgba32f",
   3739           "value" : 1,
   3740           "capabilities" : [ "Shader" ]
   3741         },
   3742         {
   3743           "enumerant" : "Rgba16f",
   3744           "value" : 2,
   3745           "capabilities" : [ "Shader" ]
   3746         },
   3747         {
   3748           "enumerant" : "R32f",
   3749           "value" : 3,
   3750           "capabilities" : [ "Shader" ]
   3751         },
   3752         {
   3753           "enumerant" : "Rgba8",
   3754           "value" : 4,
   3755           "capabilities" : [ "Shader" ]
   3756         },
   3757         {
   3758           "enumerant" : "Rgba8Snorm",
   3759           "value" : 5,
   3760           "capabilities" : [ "Shader" ]
   3761         },
   3762         {
   3763           "enumerant" : "Rg32f",
   3764           "value" : 6,
   3765           "capabilities" : [ "StorageImageExtendedFormats" ]
   3766         },
   3767         {
   3768           "enumerant" : "Rg16f",
   3769           "value" : 7,
   3770           "capabilities" : [ "StorageImageExtendedFormats" ]
   3771         },
   3772         {
   3773           "enumerant" : "R11fG11fB10f",
   3774           "value" : 8,
   3775           "capabilities" : [ "StorageImageExtendedFormats" ]
   3776         },
   3777         {
   3778           "enumerant" : "R16f",
   3779           "value" : 9,
   3780           "capabilities" : [ "StorageImageExtendedFormats" ]
   3781         },
   3782         {
   3783           "enumerant" : "Rgba16",
   3784           "value" : 10,
   3785           "capabilities" : [ "StorageImageExtendedFormats" ]
   3786         },
   3787         {
   3788           "enumerant" : "Rgb10A2",
   3789           "value" : 11,
   3790           "capabilities" : [ "StorageImageExtendedFormats" ]
   3791         },
   3792         {
   3793           "enumerant" : "Rg16",
   3794           "value" : 12,
   3795           "capabilities" : [ "StorageImageExtendedFormats" ]
   3796         },
   3797         {
   3798           "enumerant" : "Rg8",
   3799           "value" : 13,
   3800           "capabilities" : [ "StorageImageExtendedFormats" ]
   3801         },
   3802         {
   3803           "enumerant" : "R16",
   3804           "value" : 14,
   3805           "capabilities" : [ "StorageImageExtendedFormats" ]
   3806         },
   3807         {
   3808           "enumerant" : "R8",
   3809           "value" : 15,
   3810           "capabilities" : [ "StorageImageExtendedFormats" ]
   3811         },
   3812         {
   3813           "enumerant" : "Rgba16Snorm",
   3814           "value" : 16,
   3815           "capabilities" : [ "StorageImageExtendedFormats" ]
   3816         },
   3817         {
   3818           "enumerant" : "Rg16Snorm",
   3819           "value" : 17,
   3820           "capabilities" : [ "StorageImageExtendedFormats" ]
   3821         },
   3822         {
   3823           "enumerant" : "Rg8Snorm",
   3824           "value" : 18,
   3825           "capabilities" : [ "StorageImageExtendedFormats" ]
   3826         },
   3827         {
   3828           "enumerant" : "R16Snorm",
   3829           "value" : 19,
   3830           "capabilities" : [ "StorageImageExtendedFormats" ]
   3831         },
   3832         {
   3833           "enumerant" : "R8Snorm",
   3834           "value" : 20,
   3835           "capabilities" : [ "StorageImageExtendedFormats" ]
   3836         },
   3837         {
   3838           "enumerant" : "Rgba32i",
   3839           "value" : 21,
   3840           "capabilities" : [ "Shader" ]
   3841         },
   3842         {
   3843           "enumerant" : "Rgba16i",
   3844           "value" : 22,
   3845           "capabilities" : [ "Shader" ]
   3846         },
   3847         {
   3848           "enumerant" : "Rgba8i",
   3849           "value" : 23,
   3850           "capabilities" : [ "Shader" ]
   3851         },
   3852         {
   3853           "enumerant" : "R32i",
   3854           "value" : 24,
   3855           "capabilities" : [ "Shader" ]
   3856         },
   3857         {
   3858           "enumerant" : "Rg32i",
   3859           "value" : 25,
   3860           "capabilities" : [ "StorageImageExtendedFormats" ]
   3861         },
   3862         {
   3863           "enumerant" : "Rg16i",
   3864           "value" : 26,
   3865           "capabilities" : [ "StorageImageExtendedFormats" ]
   3866         },
   3867         {
   3868           "enumerant" : "Rg8i",
   3869           "value" : 27,
   3870           "capabilities" : [ "StorageImageExtendedFormats" ]
   3871         },
   3872         {
   3873           "enumerant" : "R16i",
   3874           "value" : 28,
   3875           "capabilities" : [ "StorageImageExtendedFormats" ]
   3876         },
   3877         {
   3878           "enumerant" : "R8i",
   3879           "value" : 29,
   3880           "capabilities" : [ "StorageImageExtendedFormats" ]
   3881         },
   3882         {
   3883           "enumerant" : "Rgba32ui",
   3884           "value" : 30,
   3885           "capabilities" : [ "Shader" ]
   3886         },
   3887         {
   3888           "enumerant" : "Rgba16ui",
   3889           "value" : 31,
   3890           "capabilities" : [ "Shader" ]
   3891         },
   3892         {
   3893           "enumerant" : "Rgba8ui",
   3894           "value" : 32,
   3895           "capabilities" : [ "Shader" ]
   3896         },
   3897         {
   3898           "enumerant" : "R32ui",
   3899           "value" : 33,
   3900           "capabilities" : [ "Shader" ]
   3901         },
   3902         {
   3903           "enumerant" : "Rgb10a2ui",
   3904           "value" : 34,
   3905           "capabilities" : [ "StorageImageExtendedFormats" ]
   3906         },
   3907         {
   3908           "enumerant" : "Rg32ui",
   3909           "value" : 35,
   3910           "capabilities" : [ "StorageImageExtendedFormats" ]
   3911         },
   3912         {
   3913           "enumerant" : "Rg16ui",
   3914           "value" : 36,
   3915           "capabilities" : [ "StorageImageExtendedFormats" ]
   3916         },
   3917         {
   3918           "enumerant" : "Rg8ui",
   3919           "value" : 37,
   3920           "capabilities" : [ "StorageImageExtendedFormats" ]
   3921         },
   3922         {
   3923           "enumerant" : "R16ui",
   3924           "value" : 38,
   3925           "capabilities" : [ "StorageImageExtendedFormats" ]
   3926         },
   3927         {
   3928           "enumerant" : "R8ui",
   3929           "value" : 39,
   3930           "capabilities" : [ "StorageImageExtendedFormats" ]
   3931         }
   3932       ]
   3933     },
   3934     {
   3935       "category" : "ValueEnum",
   3936       "kind" : "ImageChannelOrder",
   3937       "enumerants" : [
   3938         {
   3939           "enumerant" : "R",
   3940           "value" : 0,
   3941           "capabilities" : [ "Kernel" ]
   3942         },
   3943         {
   3944           "enumerant" : "A",
   3945           "value" : 1,
   3946           "capabilities" : [ "Kernel" ]
   3947         },
   3948         {
   3949           "enumerant" : "RG",
   3950           "value" : 2,
   3951           "capabilities" : [ "Kernel" ]
   3952         },
   3953         {
   3954           "enumerant" : "RA",
   3955           "value" : 3,
   3956           "capabilities" : [ "Kernel" ]
   3957         },
   3958         {
   3959           "enumerant" : "RGB",
   3960           "value" : 4,
   3961           "capabilities" : [ "Kernel" ]
   3962         },
   3963         {
   3964           "enumerant" : "RGBA",
   3965           "value" : 5,
   3966           "capabilities" : [ "Kernel" ]
   3967         },
   3968         {
   3969           "enumerant" : "BGRA",
   3970           "value" : 6,
   3971           "capabilities" : [ "Kernel" ]
   3972         },
   3973         {
   3974           "enumerant" : "ARGB",
   3975           "value" : 7,
   3976           "capabilities" : [ "Kernel" ]
   3977         },
   3978         {
   3979           "enumerant" : "Intensity",
   3980           "value" : 8,
   3981           "capabilities" : [ "Kernel" ]
   3982         },
   3983         {
   3984           "enumerant" : "Luminance",
   3985           "value" : 9,
   3986           "capabilities" : [ "Kernel" ]
   3987         },
   3988         {
   3989           "enumerant" : "Rx",
   3990           "value" : 10,
   3991           "capabilities" : [ "Kernel" ]
   3992         },
   3993         {
   3994           "enumerant" : "RGx",
   3995           "value" : 11,
   3996           "capabilities" : [ "Kernel" ]
   3997         },
   3998         {
   3999           "enumerant" : "RGBx",
   4000           "value" : 12,
   4001           "capabilities" : [ "Kernel" ]
   4002         },
   4003         {
   4004           "enumerant" : "Depth",
   4005           "value" : 13,
   4006           "capabilities" : [ "Kernel" ]
   4007         },
   4008         {
   4009           "enumerant" : "DepthStencil",
   4010           "value" : 14,
   4011           "capabilities" : [ "Kernel" ]
   4012         },
   4013         {
   4014           "enumerant" : "sRGB",
   4015           "value" : 15,
   4016           "capabilities" : [ "Kernel" ]
   4017         },
   4018         {
   4019           "enumerant" : "sRGBx",
   4020           "value" : 16,
   4021           "capabilities" : [ "Kernel" ]
   4022         },
   4023         {
   4024           "enumerant" : "sRGBA",
   4025           "value" : 17,
   4026           "capabilities" : [ "Kernel" ]
   4027         },
   4028         {
   4029           "enumerant" : "sBGRA",
   4030           "value" : 18,
   4031           "capabilities" : [ "Kernel" ]
   4032         },
   4033         {
   4034           "enumerant" : "ABGR",
   4035           "value" : 19,
   4036           "capabilities" : [ "Kernel" ]
   4037         }
   4038       ]
   4039     },
   4040     {
   4041       "category" : "ValueEnum",
   4042       "kind" : "ImageChannelDataType",
   4043       "enumerants" : [
   4044         {
   4045           "enumerant" : "SnormInt8",
   4046           "value" : 0,
   4047           "capabilities" : [ "Kernel" ]
   4048         },
   4049         {
   4050           "enumerant" : "SnormInt16",
   4051           "value" : 1,
   4052           "capabilities" : [ "Kernel" ]
   4053         },
   4054         {
   4055           "enumerant" : "UnormInt8",
   4056           "value" : 2,
   4057           "capabilities" : [ "Kernel" ]
   4058         },
   4059         {
   4060           "enumerant" : "UnormInt16",
   4061           "value" : 3,
   4062           "capabilities" : [ "Kernel" ]
   4063         },
   4064         {
   4065           "enumerant" : "UnormShort565",
   4066           "value" : 4,
   4067           "capabilities" : [ "Kernel" ]
   4068         },
   4069         {
   4070           "enumerant" : "UnormShort555",
   4071           "value" : 5,
   4072           "capabilities" : [ "Kernel" ]
   4073         },
   4074         {
   4075           "enumerant" : "UnormInt101010",
   4076           "value" : 6,
   4077           "capabilities" : [ "Kernel" ]
   4078         },
   4079         {
   4080           "enumerant" : "SignedInt8",
   4081           "value" : 7,
   4082           "capabilities" : [ "Kernel" ]
   4083         },
   4084         {
   4085           "enumerant" : "SignedInt16",
   4086           "value" : 8,
   4087           "capabilities" : [ "Kernel" ]
   4088         },
   4089         {
   4090           "enumerant" : "SignedInt32",
   4091           "value" : 9,
   4092           "capabilities" : [ "Kernel" ]
   4093         },
   4094         {
   4095           "enumerant" : "UnsignedInt8",
   4096           "value" : 10,
   4097           "capabilities" : [ "Kernel" ]
   4098         },
   4099         {
   4100           "enumerant" : "UnsignedInt16",
   4101           "value" : 11,
   4102           "capabilities" : [ "Kernel" ]
   4103         },
   4104         {
   4105           "enumerant" : "UnsignedInt32",
   4106           "value" : 12,
   4107           "capabilities" : [ "Kernel" ]
   4108         },
   4109         {
   4110           "enumerant" : "HalfFloat",
   4111           "value" : 13,
   4112           "capabilities" : [ "Kernel" ]
   4113         },
   4114         {
   4115           "enumerant" : "Float",
   4116           "value" : 14,
   4117           "capabilities" : [ "Kernel" ]
   4118         },
   4119         {
   4120           "enumerant" : "UnormInt24",
   4121           "value" : 15,
   4122           "capabilities" : [ "Kernel" ]
   4123         },
   4124         {
   4125           "enumerant" : "UnormInt101010_2",
   4126           "value" : 16,
   4127           "capabilities" : [ "Kernel" ]
   4128         }
   4129       ]
   4130     },
   4131     {
   4132       "category" : "ValueEnum",
   4133       "kind" : "FPRoundingMode",
   4134       "enumerants" : [
   4135         {
   4136           "enumerant" : "RTE",
   4137           "value" : 0,
   4138           "capabilities" : [ "Kernel" ]
   4139         },
   4140         {
   4141           "enumerant" : "RTZ",
   4142           "value" : 1,
   4143           "capabilities" : [ "Kernel" ]
   4144         },
   4145         {
   4146           "enumerant" : "RTP",
   4147           "value" : 2,
   4148           "capabilities" : [ "Kernel" ]
   4149         },
   4150         {
   4151           "enumerant" : "RTN",
   4152           "value" : 3,
   4153           "capabilities" : [ "Kernel" ]
   4154         }
   4155       ]
   4156     },
   4157     {
   4158       "category" : "ValueEnum",
   4159       "kind" : "LinkageType",
   4160       "enumerants" : [
   4161         {
   4162           "enumerant" : "Export",
   4163           "value" : 0,
   4164           "capabilities" : [ "Linkage" ]
   4165         },
   4166         {
   4167           "enumerant" : "Import",
   4168           "value" : 1,
   4169           "capabilities" : [ "Linkage" ]
   4170         }
   4171       ]
   4172     },
   4173     {
   4174       "category" : "ValueEnum",
   4175       "kind" : "AccessQualifier",
   4176       "enumerants" : [
   4177         {
   4178           "enumerant" : "ReadOnly",
   4179           "value" : 0,
   4180           "capabilities" : [ "Kernel" ]
   4181         },
   4182         {
   4183           "enumerant" : "WriteOnly",
   4184           "value" : 1,
   4185           "capabilities" : [ "Kernel" ]
   4186         },
   4187         {
   4188           "enumerant" : "ReadWrite",
   4189           "value" : 2,
   4190           "capabilities" : [ "Kernel" ]
   4191         }
   4192       ]
   4193     },
   4194     {
   4195       "category" : "ValueEnum",
   4196       "kind" : "FunctionParameterAttribute",
   4197       "enumerants" : [
   4198         {
   4199           "enumerant" : "Zext",
   4200           "value" : 0,
   4201           "capabilities" : [ "Kernel" ]
   4202         },
   4203         {
   4204           "enumerant" : "Sext",
   4205           "value" : 1,
   4206           "capabilities" : [ "Kernel" ]
   4207         },
   4208         {
   4209           "enumerant" : "ByVal",
   4210           "value" : 2,
   4211           "capabilities" : [ "Kernel" ]
   4212         },
   4213         {
   4214           "enumerant" : "Sret",
   4215           "value" : 3,
   4216           "capabilities" : [ "Kernel" ]
   4217         },
   4218         {
   4219           "enumerant" : "NoAlias",
   4220           "value" : 4,
   4221           "capabilities" : [ "Kernel" ]
   4222         },
   4223         {
   4224           "enumerant" : "NoCapture",
   4225           "value" : 5,
   4226           "capabilities" : [ "Kernel" ]
   4227         },
   4228         {
   4229           "enumerant" : "NoWrite",
   4230           "value" : 6,
   4231           "capabilities" : [ "Kernel" ]
   4232         },
   4233         {
   4234           "enumerant" : "NoReadWrite",
   4235           "value" : 7,
   4236           "capabilities" : [ "Kernel" ]
   4237         }
   4238       ]
   4239     },
   4240     {
   4241       "category" : "ValueEnum",
   4242       "kind" : "Decoration",
   4243       "enumerants" : [
   4244         {
   4245           "enumerant" : "RelaxedPrecision",
   4246           "value" : 0,
   4247           "capabilities" : [ "Shader" ]
   4248         },
   4249         {
   4250           "enumerant" : "SpecId",
   4251           "value" : 1,
   4252           "capabilities" : [ "Shader" ],
   4253           "parameters" : [
   4254             { "kind" : "LiteralInteger", "name" : "'Specialization Constant ID'" }
   4255           ]
   4256         },
   4257         {
   4258           "enumerant" : "Block",
   4259           "value" : 2,
   4260           "capabilities" : [ "Shader" ]
   4261         },
   4262         {
   4263           "enumerant" : "BufferBlock",
   4264           "value" : 3,
   4265           "capabilities" : [ "Shader" ]
   4266         },
   4267         {
   4268           "enumerant" : "RowMajor",
   4269           "value" : 4,
   4270           "capabilities" : [ "Matrix" ]
   4271         },
   4272         {
   4273           "enumerant" : "ColMajor",
   4274           "value" : 5,
   4275           "capabilities" : [ "Matrix" ]
   4276         },
   4277         {
   4278           "enumerant" : "ArrayStride",
   4279           "value" : 6,
   4280           "capabilities" : [ "Shader" ],
   4281           "parameters" : [
   4282             { "kind" : "LiteralInteger", "name" : "'Array Stride'" }
   4283           ]
   4284         },
   4285         {
   4286           "enumerant" : "MatrixStride",
   4287           "value" : 7,
   4288           "capabilities" : [ "Matrix" ],
   4289           "parameters" : [
   4290             { "kind" : "LiteralInteger", "name" : "'Matrix Stride'" }
   4291           ]
   4292         },
   4293         {
   4294           "enumerant" : "GLSLShared",
   4295           "value" : 8,
   4296           "capabilities" : [ "Shader" ]
   4297         },
   4298         {
   4299           "enumerant" : "GLSLPacked",
   4300           "value" : 9,
   4301           "capabilities" : [ "Shader" ]
   4302         },
   4303         {
   4304           "enumerant" : "CPacked",
   4305           "value" : 10,
   4306           "capabilities" : [ "Kernel" ]
   4307         },
   4308         {
   4309           "enumerant" : "BuiltIn",
   4310           "value" : 11,
   4311           "parameters" : [
   4312             { "kind" : "BuiltIn" }
   4313           ]
   4314         },
   4315         {
   4316           "enumerant" : "NoPerspective",
   4317           "value" : 13,
   4318           "capabilities" : [ "Shader" ]
   4319         },
   4320         {
   4321           "enumerant" : "Flat",
   4322           "value" : 14,
   4323           "capabilities" : [ "Shader" ]
   4324         },
   4325         {
   4326           "enumerant" : "Patch",
   4327           "value" : 15,
   4328           "capabilities" : [ "Tessellation" ]
   4329         },
   4330         {
   4331           "enumerant" : "Centroid",
   4332           "value" : 16,
   4333           "capabilities" : [ "Shader" ]
   4334         },
   4335         {
   4336           "enumerant" : "Sample",
   4337           "value" : 17,
   4338           "capabilities" : [ "SampleRateShading" ]
   4339         },
   4340         {
   4341           "enumerant" : "Invariant",
   4342           "value" : 18,
   4343           "capabilities" : [ "Shader" ]
   4344         },
   4345         {
   4346           "enumerant" : "Restrict",
   4347           "value" : 19
   4348         },
   4349         {
   4350           "enumerant" : "Aliased",
   4351           "value" : 20
   4352         },
   4353         {
   4354           "enumerant" : "Volatile",
   4355           "value" : 21
   4356         },
   4357         {
   4358           "enumerant" : "Constant",
   4359           "value" : 22,
   4360           "capabilities" : [ "Kernel" ]
   4361         },
   4362         {
   4363           "enumerant" : "Coherent",
   4364           "value" : 23
   4365         },
   4366         {
   4367           "enumerant" : "NonWritable",
   4368           "value" : 24
   4369         },
   4370         {
   4371           "enumerant" : "NonReadable",
   4372           "value" : 25
   4373         },
   4374         {
   4375           "enumerant" : "Uniform",
   4376           "value" : 26,
   4377           "capabilities" : [ "Shader" ]
   4378         },
   4379         {
   4380           "enumerant" : "SaturatedConversion",
   4381           "value" : 28,
   4382           "capabilities" : [ "Kernel" ]
   4383         },
   4384         {
   4385           "enumerant" : "Stream",
   4386           "value" : 29,
   4387           "capabilities" : [ "GeometryStreams" ],
   4388           "parameters" : [
   4389             { "kind" : "LiteralInteger", "name" : "'Stream Number'" }
   4390           ]
   4391         },
   4392         {
   4393           "enumerant" : "Location",
   4394           "value" : 30,
   4395           "capabilities" : [ "Shader" ],
   4396           "parameters" : [
   4397             { "kind" : "LiteralInteger", "name" : "'Location'" }
   4398           ]
   4399         },
   4400         {
   4401           "enumerant" : "Component",
   4402           "value" : 31,
   4403           "capabilities" : [ "Shader" ],
   4404           "parameters" : [
   4405             { "kind" : "LiteralInteger", "name" : "'Component'" }
   4406           ]
   4407         },
   4408         {
   4409           "enumerant" : "Index",
   4410           "value" : 32,
   4411           "capabilities" : [ "Shader" ],
   4412           "parameters" : [
   4413             { "kind" : "LiteralInteger", "name" : "'Index'" }
   4414           ]
   4415         },
   4416         {
   4417           "enumerant" : "Binding",
   4418           "value" : 33,
   4419           "capabilities" : [ "Shader" ],
   4420           "parameters" : [
   4421             { "kind" : "LiteralInteger", "name" : "'Binding Point'" }
   4422           ]
   4423         },
   4424         {
   4425           "enumerant" : "DescriptorSet",
   4426           "value" : 34,
   4427           "capabilities" : [ "Shader" ],
   4428           "parameters" : [
   4429             { "kind" : "LiteralInteger", "name" : "'Descriptor Set'" }
   4430           ]
   4431         },
   4432         {
   4433           "enumerant" : "Offset",
   4434           "value" : 35,
   4435           "capabilities" : [ "Shader" ],
   4436           "parameters" : [
   4437             { "kind" : "LiteralInteger", "name" : "'Byte Offset'" }
   4438           ]
   4439         },
   4440         {
   4441           "enumerant" : "XfbBuffer",
   4442           "value" : 36,
   4443           "capabilities" : [ "TransformFeedback" ],
   4444           "parameters" : [
   4445             { "kind" : "LiteralInteger", "name" : "'XFB Buffer Number'" }
   4446           ]
   4447         },
   4448         {
   4449           "enumerant" : "XfbStride",
   4450           "value" : 37,
   4451           "capabilities" : [ "TransformFeedback" ],
   4452           "parameters" : [
   4453             { "kind" : "LiteralInteger", "name" : "'XFB Stride'" }
   4454           ]
   4455         },
   4456         {
   4457           "enumerant" : "FuncParamAttr",
   4458           "value" : 38,
   4459           "capabilities" : [ "Kernel" ],
   4460           "parameters" : [
   4461             { "kind" : "FunctionParameterAttribute", "name" : "'Function Parameter Attribute'" }
   4462           ]
   4463         },
   4464         {
   4465           "enumerant" : "FPRoundingMode",
   4466           "value" : 39,
   4467           "capabilities" : [ "Kernel" ],
   4468           "parameters" : [
   4469             { "kind" : "FPRoundingMode", "name" : "'Floating-Point Rounding Mode'" }
   4470           ]
   4471         },
   4472         {
   4473           "enumerant" : "FPFastMathMode",
   4474           "value" : 40,
   4475           "capabilities" : [ "Kernel" ],
   4476           "parameters" : [
   4477             { "kind" : "FPFastMathMode", "name" : "'Fast-Math Mode'" }
   4478           ]
   4479         },
   4480         {
   4481           "enumerant" : "LinkageAttributes",
   4482           "value" : 41,
   4483           "capabilities" : [ "Linkage" ],
   4484           "parameters" : [
   4485             { "kind" : "LiteralString", "name" : "'Name'" },
   4486             { "kind" : "LinkageType",   "name" : "'Linkage Type'" }
   4487           ]
   4488         },
   4489         {
   4490           "enumerant" : "NoContraction",
   4491           "value" : 42,
   4492           "capabilities" : [ "Shader" ]
   4493         },
   4494         {
   4495           "enumerant" : "InputAttachmentIndex",
   4496           "value" : 43,
   4497           "capabilities" : [ "InputAttachment" ],
   4498           "parameters" : [
   4499             { "kind" : "LiteralInteger", "name" : "'Attachment Index'" }
   4500           ]
   4501         },
   4502         {
   4503           "enumerant" : "Alignment",
   4504           "value" : 44,
   4505           "capabilities" : [ "Kernel" ],
   4506           "parameters" : [
   4507             { "kind" : "LiteralInteger", "name" : "'Alignment'" }
   4508           ]
   4509         }
   4510       ]
   4511     },
   4512     {
   4513       "category" : "ValueEnum",
   4514       "kind" : "BuiltIn",
   4515       "enumerants" : [
   4516         {
   4517           "enumerant" : "Position",
   4518           "value" : 0,
   4519           "capabilities" : [ "Shader" ]
   4520         },
   4521         {
   4522           "enumerant" : "PointSize",
   4523           "value" : 1,
   4524           "capabilities" : [ "Shader" ]
   4525         },
   4526         {
   4527           "enumerant" : "ClipDistance",
   4528           "value" : 3,
   4529           "capabilities" : [ "ClipDistance" ]
   4530         },
   4531         {
   4532           "enumerant" : "CullDistance",
   4533           "value" : 4,
   4534           "capabilities" : [ "CullDistance" ]
   4535         },
   4536         {
   4537           "enumerant" : "VertexId",
   4538           "value" : 5,
   4539           "capabilities" : [ "Shader" ]
   4540         },
   4541         {
   4542           "enumerant" : "InstanceId",
   4543           "value" : 6,
   4544           "capabilities" : [ "Shader" ]
   4545         },
   4546         {
   4547           "enumerant" : "PrimitiveId",
   4548           "value" : 7,
   4549           "capabilities" : [ "Geometry", "Tessellation" ]
   4550         },
   4551         {
   4552           "enumerant" : "InvocationId",
   4553           "value" : 8,
   4554           "capabilities" : [ "Geometry", "Tessellation" ]
   4555         },
   4556         {
   4557           "enumerant" : "Layer",
   4558           "value" : 9,
   4559           "capabilities" : [ "Geometry" ]
   4560         },
   4561         {
   4562           "enumerant" : "ViewportIndex",
   4563           "value" : 10,
   4564           "capabilities" : [ "MultiViewport" ]
   4565         },
   4566         {
   4567           "enumerant" : "TessLevelOuter",
   4568           "value" : 11,
   4569           "capabilities" : [ "Tessellation" ]
   4570         },
   4571         {
   4572           "enumerant" : "TessLevelInner",
   4573           "value" : 12,
   4574           "capabilities" : [ "Tessellation" ]
   4575         },
   4576         {
   4577           "enumerant" : "TessCoord",
   4578           "value" : 13,
   4579           "capabilities" : [ "Tessellation" ]
   4580         },
   4581         {
   4582           "enumerant" : "PatchVertices",
   4583           "value" : 14,
   4584           "capabilities" : [ "Tessellation" ]
   4585         },
   4586         {
   4587           "enumerant" : "FragCoord",
   4588           "value" : 15,
   4589           "capabilities" : [ "Shader" ]
   4590         },
   4591         {
   4592           "enumerant" : "PointCoord",
   4593           "value" : 16,
   4594           "capabilities" : [ "Shader" ]
   4595         },
   4596         {
   4597           "enumerant" : "FrontFacing",
   4598           "value" : 17,
   4599           "capabilities" : [ "Shader" ]
   4600         },
   4601         {
   4602           "enumerant" : "SampleId",
   4603           "value" : 18,
   4604           "capabilities" : [ "SampleRateShading" ]
   4605         },
   4606         {
   4607           "enumerant" : "SamplePosition",
   4608           "value" : 19,
   4609           "capabilities" : [ "SampleRateShading" ]
   4610         },
   4611         {
   4612           "enumerant" : "SampleMask",
   4613           "value" : 20,
   4614           "capabilities" : [ "SampleRateShading" ]
   4615         },
   4616         {
   4617           "enumerant" : "FragDepth",
   4618           "value" : 22,
   4619           "capabilities" : [ "Shader" ]
   4620         },
   4621         {
   4622           "enumerant" : "HelperInvocation",
   4623           "value" : 23,
   4624           "capabilities" : [ "Shader" ]
   4625         },
   4626         {
   4627           "enumerant" : "NumWorkgroups",
   4628           "value" : 24
   4629         },
   4630         {
   4631           "enumerant" : "WorkgroupSize",
   4632           "value" : 25
   4633         },
   4634         {
   4635           "enumerant" : "WorkgroupId",
   4636           "value" : 26
   4637         },
   4638         {
   4639           "enumerant" : "LocalInvocationId",
   4640           "value" : 27
   4641         },
   4642         {
   4643           "enumerant" : "GlobalInvocationId",
   4644           "value" : 28
   4645         },
   4646         {
   4647           "enumerant" : "LocalInvocationIndex",
   4648           "value" : 29
   4649         },
   4650         {
   4651           "enumerant" : "WorkDim",
   4652           "value" : 30,
   4653           "capabilities" : [ "Kernel" ]
   4654         },
   4655         {
   4656           "enumerant" : "GlobalSize",
   4657           "value" : 31,
   4658           "capabilities" : [ "Kernel" ]
   4659         },
   4660         {
   4661           "enumerant" : "EnqueuedWorkgroupSize",
   4662           "value" : 32,
   4663           "capabilities" : [ "Kernel" ]
   4664         },
   4665         {
   4666           "enumerant" : "GlobalOffset",
   4667           "value" : 33,
   4668           "capabilities" : [ "Kernel" ]
   4669         },
   4670         {
   4671           "enumerant" : "GlobalLinearId",
   4672           "value" : 34,
   4673           "capabilities" : [ "Kernel" ]
   4674         },
   4675         {
   4676           "enumerant" : "SubgroupSize",
   4677           "value" : 36,
   4678           "capabilities" : [ "Kernel" ]
   4679         },
   4680         {
   4681           "enumerant" : "SubgroupMaxSize",
   4682           "value" : 37,
   4683           "capabilities" : [ "Kernel" ]
   4684         },
   4685         {
   4686           "enumerant" : "NumSubgroups",
   4687           "value" : 38,
   4688           "capabilities" : [ "Kernel" ]
   4689         },
   4690         {
   4691           "enumerant" : "NumEnqueuedSubgroups",
   4692           "value" : 39,
   4693           "capabilities" : [ "Kernel" ]
   4694         },
   4695         {
   4696           "enumerant" : "SubgroupId",
   4697           "value" : 40,
   4698           "capabilities" : [ "Kernel" ]
   4699         },
   4700         {
   4701           "enumerant" : "SubgroupLocalInvocationId",
   4702           "value" : 41,
   4703           "capabilities" : [ "Kernel" ]
   4704         },
   4705         {
   4706           "enumerant" : "VertexIndex",
   4707           "value" : 42,
   4708           "capabilities" : [ "Shader" ]
   4709         },
   4710         {
   4711           "enumerant" : "InstanceIndex",
   4712           "value" : 43,
   4713           "capabilities" : [ "Shader" ]
   4714         },
   4715         {
   4716           "enumerant" : "SubgroupEqMaskKHR",
   4717           "value" : 4416,
   4718           "capabilities" : [ "SubgroupBallotKHR" ]
   4719         },
   4720         {
   4721           "enumerant" : "SubgroupGeMaskKHR",
   4722           "value" : 4417,
   4723           "capabilities" : [ "SubgroupBallotKHR" ]
   4724         },
   4725         {
   4726           "enumerant" : "SubgroupGtMaskKHR",
   4727           "value" : 4418,
   4728           "capabilities" : [ "SubgroupBallotKHR" ]
   4729         },
   4730         {
   4731           "enumerant" : "SubgroupLeMaskKHR",
   4732           "value" : 4419,
   4733           "capabilities" : [ "SubgroupBallotKHR" ]
   4734         },
   4735         {
   4736           "enumerant" : "SubgroupLtMaskKHR",
   4737           "value" : 4420,
   4738           "capabilities" : [ "SubgroupBallotKHR" ]
   4739         },
   4740         {
   4741           "enumerant" : "BaseVertex",
   4742           "value" : 4424,
   4743           "capabilities" : [ "DrawParameters" ]
   4744         },
   4745         {
   4746           "enumerant" : "BaseInstance",
   4747           "value" : 4425,
   4748           "capabilities" : [ "DrawParameters" ]
   4749         },
   4750         {
   4751           "enumerant" : "DrawIndex",
   4752           "value" : 4426,
   4753           "capabilities" : [ "DrawParameters" ]
   4754         }
   4755       ]
   4756     },
   4757     {
   4758       "category" : "ValueEnum",
   4759       "kind" : "Scope",
   4760       "enumerants" : [
   4761         {
   4762           "enumerant" : "CrossDevice",
   4763           "value" : 0
   4764         },
   4765         {
   4766           "enumerant" : "Device",
   4767           "value" : 1
   4768         },
   4769         {
   4770           "enumerant" : "Workgroup",
   4771           "value" : 2
   4772         },
   4773         {
   4774           "enumerant" : "Subgroup",
   4775           "value" : 3
   4776         },
   4777         {
   4778           "enumerant" : "Invocation",
   4779           "value" : 4
   4780         }
   4781       ]
   4782     },
   4783     {
   4784       "category" : "ValueEnum",
   4785       "kind" : "GroupOperation",
   4786       "enumerants" : [
   4787         {
   4788           "enumerant" : "Reduce",
   4789           "value" : 0,
   4790           "capabilities" : [ "Kernel" ]
   4791         },
   4792         {
   4793           "enumerant" : "InclusiveScan",
   4794           "value" : 1,
   4795           "capabilities" : [ "Kernel" ]
   4796         },
   4797         {
   4798           "enumerant" : "ExclusiveScan",
   4799           "value" : 2,
   4800           "capabilities" : [ "Kernel" ]
   4801         }
   4802       ]
   4803     },
   4804     {
   4805       "category" : "ValueEnum",
   4806       "kind" : "KernelEnqueueFlags",
   4807       "enumerants" : [
   4808         {
   4809           "enumerant" : "NoWait",
   4810           "value" : 0,
   4811           "capabilities" : [ "Kernel" ]
   4812         },
   4813         {
   4814           "enumerant" : "WaitKernel",
   4815           "value" : 1,
   4816           "capabilities" : [ "Kernel" ]
   4817         },
   4818         {
   4819           "enumerant" : "WaitWorkGroup",
   4820           "value" : 2,
   4821           "capabilities" : [ "Kernel" ]
   4822         }
   4823       ]
   4824     },
   4825     {
   4826       "category" : "ValueEnum",
   4827       "kind" : "Capability",
   4828       "enumerants" : [
   4829         {
   4830           "enumerant" : "Matrix",
   4831           "value" : 0
   4832         },
   4833         {
   4834           "enumerant" : "Shader",
   4835           "value" : 1,
   4836           "capabilities" : [ "Matrix" ]
   4837         },
   4838         {
   4839           "enumerant" : "Geometry",
   4840           "value" : 2,
   4841           "capabilities" : [ "Shader" ]
   4842         },
   4843         {
   4844           "enumerant" : "Tessellation",
   4845           "value" : 3,
   4846           "capabilities" : [ "Shader" ]
   4847         },
   4848         {
   4849           "enumerant" : "Addresses",
   4850           "value" : 4
   4851         },
   4852         {
   4853           "enumerant" : "Linkage",
   4854           "value" : 5
   4855         },
   4856         {
   4857           "enumerant" : "Kernel",
   4858           "value" : 6
   4859         },
   4860         {
   4861           "enumerant" : "Vector16",
   4862           "value" : 7,
   4863           "capabilities" : [ "Kernel" ]
   4864         },
   4865         {
   4866           "enumerant" : "Float16Buffer",
   4867           "value" : 8,
   4868           "capabilities" : [ "Kernel" ]
   4869         },
   4870         {
   4871           "enumerant" : "Float16",
   4872           "value" : 9
   4873         },
   4874         {
   4875           "enumerant" : "Float64",
   4876           "value" : 10
   4877         },
   4878         {
   4879           "enumerant" : "Int64",
   4880           "value" : 11
   4881         },
   4882         {
   4883           "enumerant" : "Int64Atomics",
   4884           "value" : 12,
   4885           "capabilities" : [ "Int64" ]
   4886         },
   4887         {
   4888           "enumerant" : "ImageBasic",
   4889           "value" : 13,
   4890           "capabilities" : [ "Kernel" ]
   4891         },
   4892         {
   4893           "enumerant" : "ImageReadWrite",
   4894           "value" : 14,
   4895           "capabilities" : [ "ImageBasic" ]
   4896         },
   4897         {
   4898           "enumerant" : "ImageMipmap",
   4899           "value" : 15,
   4900           "capabilities" : [ "ImageBasic" ]
   4901         },
   4902         {
   4903           "enumerant" : "Pipes",
   4904           "value" : 17,
   4905           "capabilities" : [ "Kernel" ]
   4906         },
   4907         {
   4908           "enumerant" : "Groups",
   4909           "value" : 18
   4910         },
   4911         {
   4912           "enumerant" : "DeviceEnqueue",
   4913           "value" : 19,
   4914           "capabilities" : [ "Kernel" ]
   4915         },
   4916         {
   4917           "enumerant" : "LiteralSampler",
   4918           "value" : 20,
   4919           "capabilities" : [ "Kernel" ]
   4920         },
   4921         {
   4922           "enumerant" : "AtomicStorage",
   4923           "value" : 21,
   4924           "capabilities" : [ "Shader" ]
   4925         },
   4926         {
   4927           "enumerant" : "Int16",
   4928           "value" : 22
   4929         },
   4930         {
   4931           "enumerant" : "TessellationPointSize",
   4932           "value" : 23,
   4933           "capabilities" : [ "Tessellation" ]
   4934         },
   4935         {
   4936           "enumerant" : "GeometryPointSize",
   4937           "value" : 24,
   4938           "capabilities" : [ "Geometry" ]
   4939         },
   4940         {
   4941           "enumerant" : "ImageGatherExtended",
   4942           "value" : 25,
   4943           "capabilities" : [ "Shader" ]
   4944         },
   4945         {
   4946           "enumerant" : "StorageImageMultisample",
   4947           "value" : 27,
   4948           "capabilities" : [ "Shader" ]
   4949         },
   4950         {
   4951           "enumerant" : "UniformBufferArrayDynamicIndexing",
   4952           "value" : 28,
   4953           "capabilities" : [ "Shader" ]
   4954         },
   4955         {
   4956           "enumerant" : "SampledImageArrayDynamicIndexing",
   4957           "value" : 29,
   4958           "capabilities" : [ "Shader" ]
   4959         },
   4960         {
   4961           "enumerant" : "StorageBufferArrayDynamicIndexing",
   4962           "value" : 30,
   4963           "capabilities" : [ "Shader" ]
   4964         },
   4965         {
   4966           "enumerant" : "StorageImageArrayDynamicIndexing",
   4967           "value" : 31,
   4968           "capabilities" : [ "Shader" ]
   4969         },
   4970         {
   4971           "enumerant" : "ClipDistance",
   4972           "value" : 32,
   4973           "capabilities" : [ "Shader" ]
   4974         },
   4975         {
   4976           "enumerant" : "CullDistance",
   4977           "value" : 33,
   4978           "capabilities" : [ "Shader" ]
   4979         },
   4980         {
   4981           "enumerant" : "ImageCubeArray",
   4982           "value" : 34,
   4983           "capabilities" : [ "SampledCubeArray" ]
   4984         },
   4985         {
   4986           "enumerant" : "SampleRateShading",
   4987           "value" : 35,
   4988           "capabilities" : [ "Shader" ]
   4989         },
   4990         {
   4991           "enumerant" : "ImageRect",
   4992           "value" : 36,
   4993           "capabilities" : [ "SampledRect" ]
   4994         },
   4995         {
   4996           "enumerant" : "SampledRect",
   4997           "value" : 37,
   4998           "capabilities" : [ "Shader" ]
   4999         },
   5000         {
   5001           "enumerant" : "GenericPointer",
   5002           "value" : 38,
   5003           "capabilities" : [ "Addresses" ]
   5004         },
   5005         {
   5006           "enumerant" : "Int8",
   5007           "value" : 39,
   5008           "capabilities" : [ "Kernel" ]
   5009         },
   5010         {
   5011           "enumerant" : "InputAttachment",
   5012           "value" : 40,
   5013           "capabilities" : [ "Shader" ]
   5014         },
   5015         {
   5016           "enumerant" : "SparseResidency",
   5017           "value" : 41,
   5018           "capabilities" : [ "Shader" ]
   5019         },
   5020         {
   5021           "enumerant" : "MinLod",
   5022           "value" : 42,
   5023           "capabilities" : [ "Shader" ]
   5024         },
   5025         {
   5026           "enumerant" : "Sampled1D",
   5027           "value" : 43
   5028         },
   5029         {
   5030           "enumerant" : "Image1D",
   5031           "value" : 44,
   5032           "capabilities" : [ "Sampled1D" ]
   5033         },
   5034         {
   5035           "enumerant" : "SampledCubeArray",
   5036           "value" : 45,
   5037           "capabilities" : [ "Shader" ]
   5038         },
   5039         {
   5040           "enumerant" : "SampledBuffer",
   5041           "value" : 46
   5042         },
   5043         {
   5044           "enumerant" : "ImageBuffer",
   5045           "value" : 47,
   5046           "capabilities" : [ "SampledBuffer" ]
   5047         },
   5048         {
   5049           "enumerant" : "ImageMSArray",
   5050           "value" : 48,
   5051           "capabilities" : [ "Shader" ]
   5052         },
   5053         {
   5054           "enumerant" : "StorageImageExtendedFormats",
   5055           "value" : 49,
   5056           "capabilities" : [ "Shader" ]
   5057         },
   5058         {
   5059           "enumerant" : "ImageQuery",
   5060           "value" : 50,
   5061           "capabilities" : [ "Shader" ]
   5062         },
   5063         {
   5064           "enumerant" : "DerivativeControl",
   5065           "value" : 51,
   5066           "capabilities" : [ "Shader" ]
   5067         },
   5068         {
   5069           "enumerant" : "InterpolationFunction",
   5070           "value" : 52,
   5071           "capabilities" : [ "Shader" ]
   5072         },
   5073         {
   5074           "enumerant" : "TransformFeedback",
   5075           "value" : 53,
   5076           "capabilities" : [ "Shader" ]
   5077         },
   5078         {
   5079           "enumerant" : "GeometryStreams",
   5080           "value" : 54,
   5081           "capabilities" : [ "Geometry" ]
   5082         },
   5083         {
   5084           "enumerant" : "StorageImageReadWithoutFormat",
   5085           "value" : 55,
   5086           "capabilities" : [ "Shader" ]
   5087         },
   5088         {
   5089           "enumerant" : "StorageImageWriteWithoutFormat",
   5090           "value" : 56,
   5091           "capabilities" : [ "Shader" ]
   5092         },
   5093         {
   5094           "enumerant" : "MultiViewport",
   5095           "value" : 57,
   5096           "capabilities" : [ "Geometry" ]
   5097         },
   5098         {
   5099           "enumerant" : "SubgroupBallotKHR",
   5100           "value" : 4423,
   5101           "extensions" : [ "SPV_KHR_shader_ballot" ]
   5102         },
   5103         {
   5104           "enumerant" : "DrawParameters",
   5105           "value" : 4427,
   5106           "extensions" : [ "SPV_KHR_shader_draw_parameters" ]
   5107         }
   5108       ]
   5109     },
   5110     {
   5111       "category" : "Id",
   5112       "kind" : "IdResultType",
   5113       "doc" : "Reference to an <id> representing the result's type of the enclosing instruction"
   5114     },
   5115     {
   5116       "category" : "Id",
   5117       "kind" : "IdResult",
   5118       "doc" : "Definition of an <id> representing the result of the enclosing instruction"
   5119     },
   5120     {
   5121       "category" : "Id",
   5122       "kind" : "IdMemorySemantics",
   5123       "doc" : "Reference to an <id> representing a 32-bit integer that is a mask from the MemorySemantics operand kind"
   5124     },
   5125     {
   5126       "category" : "Id",
   5127       "kind" : "IdScope",
   5128       "doc" : "Reference to an <id> representing a 32-bit integer that is a mask from the Scope operand kind"
   5129     },
   5130     {
   5131       "category" : "Id",
   5132       "kind" : "IdRef",
   5133       "doc" : "Reference to an <id>"
   5134     },
   5135     {
   5136       "category" : "Literal",
   5137       "kind" : "LiteralInteger",
   5138       "doc" : "An integer consuming one or more words"
   5139     },
   5140     {
   5141       "category" : "Literal",
   5142       "kind" : "LiteralString",
   5143       "doc" : "A null-terminated stream of characters consuming an integral number of words"
   5144     },
   5145     {
   5146       "category" : "Literal",
   5147       "kind" : "LiteralContextDependentNumber",
   5148       "doc" : "A literal number whose size and format are determined by a previous operand in the enclosing instruction"
   5149     },
   5150     {
   5151       "category" : "Literal",
   5152       "kind" : "LiteralExtInstInteger",
   5153       "doc" : "A 32-bit unsigned integer indicating which instruction to use and determining the layout of following operands (for OpExtInst)"
   5154     },
   5155     {
   5156       "category" : "Literal",
   5157       "kind" : "LiteralSpecConstantOpInteger",
   5158       "doc" : "An opcode indicating the operation to be performed and determining the layout of following operands (for OpSpecConstantOp)"
   5159     },
   5160     {
   5161       "category" : "Composite",
   5162       "kind" : "PairLiteralIntegerIdRef",
   5163       "bases" : [ "LiteralInteger", "IdRef" ]
   5164     },
   5165     {
   5166       "category" : "Composite",
   5167       "kind" : "PairIdRefLiteralInteger",
   5168       "bases" : [ "IdRef", "LiteralInteger" ]
   5169     },
   5170     {
   5171       "category" : "Composite",
   5172       "kind" : "PairIdRefIdRef",
   5173       "bases" : [ "IdRef", "IdRef" ]
   5174     }
   5175   ]
   5176 }
   5177