"Fossies" - the Fresh Open Source Software Archive

Member "mesa-20.1.8/src/compiler/spirv/spirv.core.grammar.json" (16 Sep 2020, 345627 Bytes) of package /linux/misc/mesa-20.1.8.tar.xz:


As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) JSON source code syntax highlighting (style: standard) with prefixed line numbers. Alternatively you can here view or download the uninterpreted source code file. See also the last Fossies "Diffs" side-by-side code changes report for "spirv.core.grammar.json": 20.1.5_vs_20.2.0-rc1.

    1 {
    2   "copyright" : [
    3     "Copyright (c) 2014-2020 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" : 5,
   30   "revision" : 1,
   31   "instruction_printing_class" : [
   32     {
   33       "tag"     : "@exclude"
   34     },
   35     {
   36       "tag"     : "Miscellaneous",
   37       "heading" : "Miscellaneous Instructions"
   38     },
   39     {
   40       "tag"     : "Debug",
   41       "heading" : "Debug Instructions"
   42     },
   43     {
   44       "tag"     : "Annotation",
   45       "heading" : "Annotation Instructions"
   46     },
   47     {
   48       "tag"     : "Extension",
   49       "heading" : "Extension Instructions"
   50     },
   51     {
   52       "tag"     : "Mode-Setting",
   53       "heading" : "Mode-Setting Instructions"
   54     },
   55     {
   56       "tag"     : "Type-Declaration",
   57       "heading" : "Type-Declaration Instructions"
   58     },
   59     {
   60       "tag"     : "Constant-Creation",
   61       "heading" : "Constant-Creation Instructions"
   62     },
   63     {
   64       "tag"     : "Memory",
   65       "heading" : "Memory Instructions"
   66     },
   67     {
   68       "tag"     : "Function",
   69       "heading" : "Function Instructions"
   70     },
   71     {
   72       "tag"     : "Image",
   73       "heading" : "Image Instructions"
   74     },
   75     {
   76       "tag"     : "Conversion",
   77       "heading" : "Conversion Instructions"
   78     },
   79     {
   80       "tag"     : "Composite",
   81       "heading" : "Composite Instructions"
   82     },
   83     {
   84       "tag"     : "Arithmetic",
   85       "heading" : "Arithmetic Instructions"
   86     },
   87     {
   88       "tag"     : "Bit",
   89       "heading" : "Bit Instructions"
   90     },
   91     {
   92       "tag"     : "Relational_and_Logical",
   93       "heading" : "Relational and Logical Instructions"
   94     },
   95     {
   96       "tag"     : "Derivative",
   97       "heading" : "Derivative Instructions"
   98     },
   99     {
  100       "tag"     : "Control-Flow",
  101       "heading" : "Control-Flow Instructions"
  102     },
  103     {
  104       "tag"     : "Atomic",
  105       "heading" : "Atomic Instructions"
  106     },
  107     {
  108       "tag"     : "Primitive",
  109       "heading" : "Primitive Instructions"
  110     },
  111     {
  112       "tag"     : "Barrier",
  113       "heading" : "Barrier Instructions"
  114     },
  115     {
  116       "tag"     : "Group",
  117       "heading" : "Group and Subgroup Instructions"
  118     },
  119     {
  120       "tag"     : "Device-Side_Enqueue",
  121       "heading" : "Device-Side Enqueue Instructions"
  122     },
  123     {
  124       "tag"     : "Pipe",
  125       "heading" : "Pipe Instructions"
  126     },
  127     {
  128       "tag"     : "Non-Uniform",
  129       "heading" : "Non-Uniform Instructions"
  130     },
  131     {
  132       "tag"     : "Reserved",
  133       "heading" : "Reserved Instructions"
  134     }
  135   ],
  136   "instructions" : [
  137     {
  138       "opname" : "OpNop",
  139       "class"  : "Miscellaneous",
  140       "opcode" : 0
  141     },
  142     {
  143       "opname" : "OpUndef",
  144       "class"  : "Miscellaneous",
  145       "opcode" : 1,
  146       "operands" : [
  147         { "kind" : "IdResultType" },
  148         { "kind" : "IdResult" }
  149       ]
  150     },
  151     {
  152       "opname" : "OpSourceContinued",
  153       "class"  : "Debug",
  154       "opcode" : 2,
  155       "operands" : [
  156         { "kind" : "LiteralString", "name" : "'Continued Source'" }
  157       ]
  158     },
  159     {
  160       "opname" : "OpSource",
  161       "class"  : "Debug",
  162       "opcode" : 3,
  163       "operands" : [
  164         { "kind" : "SourceLanguage" },
  165         { "kind" : "LiteralInteger",                     "name" : "'Version'" },
  166         { "kind" : "IdRef",          "quantifier" : "?", "name" : "'File'" },
  167         { "kind" : "LiteralString",  "quantifier" : "?", "name" : "'Source'" }
  168       ]
  169     },
  170     {
  171       "opname" : "OpSourceExtension",
  172       "class"  : "Debug",
  173       "opcode" : 4,
  174       "operands" : [
  175         { "kind" : "LiteralString", "name" : "'Extension'" }
  176       ]
  177     },
  178     {
  179       "opname" : "OpName",
  180       "class"  : "Debug",
  181       "opcode" : 5,
  182       "operands" : [
  183         { "kind" : "IdRef",         "name" : "'Target'" },
  184         { "kind" : "LiteralString", "name" : "'Name'" }
  185       ]
  186     },
  187     {
  188       "opname" : "OpMemberName",
  189       "class"  : "Debug",
  190       "opcode" : 6,
  191       "operands" : [
  192         { "kind" : "IdRef",          "name" : "'Type'" },
  193         { "kind" : "LiteralInteger", "name" : "'Member'" },
  194         { "kind" : "LiteralString",  "name" : "'Name'" }
  195       ]
  196     },
  197     {
  198       "opname" : "OpString",
  199       "class"  : "Debug",
  200       "opcode" : 7,
  201       "operands" : [
  202         { "kind" : "IdResult" },
  203         { "kind" : "LiteralString", "name" : "'String'" }
  204       ]
  205     },
  206     {
  207       "opname" : "OpLine",
  208       "class"  : "Debug",
  209       "opcode" : 8,
  210       "operands" : [
  211         { "kind" : "IdRef",          "name" : "'File'" },
  212         { "kind" : "LiteralInteger", "name" : "'Line'" },
  213         { "kind" : "LiteralInteger", "name" : "'Column'" }
  214       ]
  215     },
  216     {
  217       "opname" : "OpExtension",
  218       "class"  : "Extension",
  219       "opcode" : 10,
  220       "operands" : [
  221         { "kind" : "LiteralString", "name" : "'Name'" }
  222       ]
  223     },
  224     {
  225       "opname" : "OpExtInstImport",
  226       "class"  : "Extension",
  227       "opcode" : 11,
  228       "operands" : [
  229         { "kind" : "IdResult" },
  230         { "kind" : "LiteralString", "name" : "'Name'" }
  231       ]
  232     },
  233     {
  234       "opname" : "OpExtInst",
  235       "class"  : "Extension",
  236       "opcode" : 12,
  237       "operands" : [
  238         { "kind" : "IdResultType" },
  239         { "kind" : "IdResult" },
  240         { "kind" : "IdRef",                                     "name" : "'Set'" },
  241         { "kind" : "LiteralExtInstInteger",                     "name" : "'Instruction'" },
  242         { "kind" : "IdRef",                 "quantifier" : "*", "name" : "'Operand 1', +\n'Operand 2', +\n..." }
  243       ]
  244     },
  245     {
  246       "opname" : "OpMemoryModel",
  247       "class"  : "Mode-Setting",
  248       "opcode" : 14,
  249       "operands" : [
  250         { "kind" : "AddressingModel" },
  251         { "kind" : "MemoryModel" }
  252       ]
  253     },
  254     {
  255       "opname" : "OpEntryPoint",
  256       "class"  : "Mode-Setting",
  257       "opcode" : 15,
  258       "operands" : [
  259         { "kind" : "ExecutionModel" },
  260         { "kind" : "IdRef",                              "name" : "'Entry Point'" },
  261         { "kind" : "LiteralString",                      "name" : "'Name'" },
  262         { "kind" : "IdRef",          "quantifier" : "*", "name" : "'Interface'" }
  263       ]
  264     },
  265     {
  266       "opname" : "OpExecutionMode",
  267       "class"  : "Mode-Setting",
  268       "opcode" : 16,
  269       "operands" : [
  270         { "kind" : "IdRef",         "name" : "'Entry Point'" },
  271         { "kind" : "ExecutionMode", "name" : "'Mode'" }
  272       ]
  273     },
  274     {
  275       "opname" : "OpCapability",
  276       "class"  : "Mode-Setting",
  277       "opcode" : 17,
  278       "operands" : [
  279         { "kind" : "Capability", "name" : "'Capability'" }
  280       ]
  281     },
  282     {
  283       "opname" : "OpTypeVoid",
  284       "class"  : "Type-Declaration",
  285       "opcode" : 19,
  286       "operands" : [
  287         { "kind" : "IdResult" }
  288       ]
  289     },
  290     {
  291       "opname" : "OpTypeBool",
  292       "class"  : "Type-Declaration",
  293       "opcode" : 20,
  294       "operands" : [
  295         { "kind" : "IdResult" }
  296       ]
  297     },
  298     {
  299       "opname" : "OpTypeInt",
  300       "class"  : "Type-Declaration",
  301       "opcode" : 21,
  302       "operands" : [
  303         { "kind" : "IdResult" },
  304         { "kind" : "LiteralInteger", "name" : "'Width'" },
  305         { "kind" : "LiteralInteger", "name" : "'Signedness'" }
  306       ]
  307     },
  308     {
  309       "opname" : "OpTypeFloat",
  310       "class"  : "Type-Declaration",
  311       "opcode" : 22,
  312       "operands" : [
  313         { "kind" : "IdResult" },
  314         { "kind" : "LiteralInteger", "name" : "'Width'" }
  315       ]
  316     },
  317     {
  318       "opname" : "OpTypeVector",
  319       "class"  : "Type-Declaration",
  320       "opcode" : 23,
  321       "operands" : [
  322         { "kind" : "IdResult" },
  323         { "kind" : "IdRef",          "name" : "'Component Type'" },
  324         { "kind" : "LiteralInteger", "name" : "'Component Count'" }
  325       ]
  326     },
  327     {
  328       "opname" : "OpTypeMatrix",
  329       "class"  : "Type-Declaration",
  330       "opcode" : 24,
  331       "operands" : [
  332         { "kind" : "IdResult" },
  333         { "kind" : "IdRef",          "name" : "'Column Type'" },
  334         { "kind" : "LiteralInteger", "name" : "'Column Count'" }
  335       ],
  336       "capabilities" : [ "Matrix" ]
  337     },
  338     {
  339       "opname" : "OpTypeImage",
  340       "class"  : "Type-Declaration",
  341       "opcode" : 25,
  342       "operands" : [
  343         { "kind" : "IdResult" },
  344         { "kind" : "IdRef",                               "name" : "'Sampled Type'" },
  345         { "kind" : "Dim" },
  346         { "kind" : "LiteralInteger",                      "name" : "'Depth'" },
  347         { "kind" : "LiteralInteger",                      "name" : "'Arrayed'" },
  348         { "kind" : "LiteralInteger",                      "name" : "'MS'" },
  349         { "kind" : "LiteralInteger",                      "name" : "'Sampled'" },
  350         { "kind" : "ImageFormat" },
  351         { "kind" : "AccessQualifier", "quantifier" : "?" }
  352       ]
  353     },
  354     {
  355       "opname" : "OpTypeSampler",
  356       "class"  : "Type-Declaration",
  357       "opcode" : 26,
  358       "operands" : [
  359         { "kind" : "IdResult" }
  360       ]
  361     },
  362     {
  363       "opname" : "OpTypeSampledImage",
  364       "class"  : "Type-Declaration",
  365       "opcode" : 27,
  366       "operands" : [
  367         { "kind" : "IdResult" },
  368         { "kind" : "IdRef",    "name" : "'Image Type'" }
  369       ]
  370     },
  371     {
  372       "opname" : "OpTypeArray",
  373       "class"  : "Type-Declaration",
  374       "opcode" : 28,
  375       "operands" : [
  376         { "kind" : "IdResult" },
  377         { "kind" : "IdRef",    "name" : "'Element Type'" },
  378         { "kind" : "IdRef",    "name" : "'Length'" }
  379       ]
  380     },
  381     {
  382       "opname" : "OpTypeRuntimeArray",
  383       "class"  : "Type-Declaration",
  384       "opcode" : 29,
  385       "operands" : [
  386         { "kind" : "IdResult" },
  387         { "kind" : "IdRef",    "name" : "'Element Type'" }
  388       ],
  389       "capabilities" : [ "Shader" ]
  390     },
  391     {
  392       "opname" : "OpTypeStruct",
  393       "class"  : "Type-Declaration",
  394       "opcode" : 30,
  395       "operands" : [
  396         { "kind" : "IdResult" },
  397         { "kind" : "IdRef",    "quantifier" : "*", "name" : "'Member 0 type', +\n'member 1 type', +\n..." }
  398       ]
  399     },
  400     {
  401       "opname" : "OpTypeOpaque",
  402       "class"  : "Type-Declaration",
  403       "opcode" : 31,
  404       "operands" : [
  405         { "kind" : "IdResult" },
  406         { "kind" : "LiteralString", "name" : "The name of the opaque type." }
  407       ],
  408       "capabilities" : [ "Kernel" ]
  409     },
  410     {
  411       "opname" : "OpTypePointer",
  412       "class"  : "Type-Declaration",
  413       "opcode" : 32,
  414       "operands" : [
  415         { "kind" : "IdResult" },
  416         { "kind" : "StorageClass" },
  417         { "kind" : "IdRef",        "name" : "'Type'" }
  418       ]
  419     },
  420     {
  421       "opname" : "OpTypeFunction",
  422       "class"  : "Type-Declaration",
  423       "opcode" : 33,
  424       "operands" : [
  425         { "kind" : "IdResult" },
  426         { "kind" : "IdRef",                        "name" : "'Return Type'" },
  427         { "kind" : "IdRef",    "quantifier" : "*", "name" : "'Parameter 0 Type', +\n'Parameter 1 Type', +\n..." }
  428       ]
  429     },
  430     {
  431       "opname" : "OpTypeEvent",
  432       "class"  : "Type-Declaration",
  433       "opcode" : 34,
  434       "operands" : [
  435         { "kind" : "IdResult" }
  436       ],
  437       "capabilities" : [ "Kernel" ]
  438     },
  439     {
  440       "opname" : "OpTypeDeviceEvent",
  441       "class"  : "Type-Declaration",
  442       "opcode" : 35,
  443       "operands" : [
  444         { "kind" : "IdResult" }
  445       ],
  446       "capabilities" : [ "DeviceEnqueue" ]
  447     },
  448     {
  449       "opname" : "OpTypeReserveId",
  450       "class"  : "Type-Declaration",
  451       "opcode" : 36,
  452       "operands" : [
  453         { "kind" : "IdResult" }
  454       ],
  455       "capabilities" : [ "Pipes" ]
  456     },
  457     {
  458       "opname" : "OpTypeQueue",
  459       "class"  : "Type-Declaration",
  460       "opcode" : 37,
  461       "operands" : [
  462         { "kind" : "IdResult" }
  463       ],
  464       "capabilities" : [ "DeviceEnqueue" ]
  465     },
  466     {
  467       "opname" : "OpTypePipe",
  468       "class"  : "Type-Declaration",
  469       "opcode" : 38,
  470       "operands" : [
  471         { "kind" : "IdResult" },
  472         { "kind" : "AccessQualifier", "name" : "'Qualifier'" }
  473       ],
  474       "capabilities" : [ "Pipes" ]
  475     },
  476     {
  477       "opname" : "OpTypeForwardPointer",
  478       "class"  : "Type-Declaration",
  479       "opcode" : 39,
  480       "operands" : [
  481         { "kind" : "IdRef",        "name" : "'Pointer Type'" },
  482         { "kind" : "StorageClass" }
  483       ],
  484       "capabilities" : [
  485         "Addresses",
  486         "PhysicalStorageBufferAddresses"
  487       ]
  488     },
  489     {
  490       "opname" : "OpConstantTrue",
  491       "class"  : "Constant-Creation",
  492       "opcode" : 41,
  493       "operands" : [
  494         { "kind" : "IdResultType" },
  495         { "kind" : "IdResult" }
  496       ]
  497     },
  498     {
  499       "opname" : "OpConstantFalse",
  500       "class"  : "Constant-Creation",
  501       "opcode" : 42,
  502       "operands" : [
  503         { "kind" : "IdResultType" },
  504         { "kind" : "IdResult" }
  505       ]
  506     },
  507     {
  508       "opname" : "OpConstant",
  509       "class"  : "Constant-Creation",
  510       "opcode" : 43,
  511       "operands" : [
  512         { "kind" : "IdResultType" },
  513         { "kind" : "IdResult" },
  514         { "kind" : "LiteralContextDependentNumber", "name" : "'Value'" }
  515       ]
  516     },
  517     {
  518       "opname" : "OpConstantComposite",
  519       "class"  : "Constant-Creation",
  520       "opcode" : 44,
  521       "operands" : [
  522         { "kind" : "IdResultType" },
  523         { "kind" : "IdResult" },
  524         { "kind" : "IdRef",        "quantifier" : "*", "name" : "'Constituents'" }
  525       ]
  526     },
  527     {
  528       "opname" : "OpConstantSampler",
  529       "class"  : "Constant-Creation",
  530       "opcode" : 45,
  531       "operands" : [
  532         { "kind" : "IdResultType" },
  533         { "kind" : "IdResult" },
  534         { "kind" : "SamplerAddressingMode" },
  535         { "kind" : "LiteralInteger",        "name" : "'Param'" },
  536         { "kind" : "SamplerFilterMode" }
  537       ],
  538       "capabilities" : [ "LiteralSampler" ]
  539     },
  540     {
  541       "opname" : "OpConstantNull",
  542       "class"  : "Constant-Creation",
  543       "opcode" : 46,
  544       "operands" : [
  545         { "kind" : "IdResultType" },
  546         { "kind" : "IdResult" }
  547       ]
  548     },
  549     {
  550       "opname" : "OpSpecConstantTrue",
  551       "class"  : "Constant-Creation",
  552       "opcode" : 48,
  553       "operands" : [
  554         { "kind" : "IdResultType" },
  555         { "kind" : "IdResult" }
  556       ]
  557     },
  558     {
  559       "opname" : "OpSpecConstantFalse",
  560       "class"  : "Constant-Creation",
  561       "opcode" : 49,
  562       "operands" : [
  563         { "kind" : "IdResultType" },
  564         { "kind" : "IdResult" }
  565       ]
  566     },
  567     {
  568       "opname" : "OpSpecConstant",
  569       "class"  : "Constant-Creation",
  570       "opcode" : 50,
  571       "operands" : [
  572         { "kind" : "IdResultType" },
  573         { "kind" : "IdResult" },
  574         { "kind" : "LiteralContextDependentNumber", "name" : "'Value'" }
  575       ]
  576     },
  577     {
  578       "opname" : "OpSpecConstantComposite",
  579       "class"  : "Constant-Creation",
  580       "opcode" : 51,
  581       "operands" : [
  582         { "kind" : "IdResultType" },
  583         { "kind" : "IdResult" },
  584         { "kind" : "IdRef",        "quantifier" : "*", "name" : "'Constituents'" }
  585       ]
  586     },
  587     {
  588       "opname" : "OpSpecConstantOp",
  589       "class"  : "Constant-Creation",
  590       "opcode" : 52,
  591       "operands" : [
  592         { "kind" : "IdResultType" },
  593         { "kind" : "IdResult" },
  594         { "kind" : "LiteralSpecConstantOpInteger", "name" : "'Opcode'" }
  595       ]
  596     },
  597     {
  598       "opname" : "OpFunction",
  599       "class"  : "Function",
  600       "opcode" : 54,
  601       "operands" : [
  602         { "kind" : "IdResultType" },
  603         { "kind" : "IdResult" },
  604         { "kind" : "FunctionControl" },
  605         { "kind" : "IdRef",           "name" : "'Function Type'" }
  606       ]
  607     },
  608     {
  609       "opname" : "OpFunctionParameter",
  610       "class"  : "Function",
  611       "opcode" : 55,
  612       "operands" : [
  613         { "kind" : "IdResultType" },
  614         { "kind" : "IdResult" }
  615       ]
  616     },
  617     {
  618       "opname" : "OpFunctionEnd",
  619       "class"  : "Function",
  620       "opcode" : 56
  621     },
  622     {
  623       "opname" : "OpFunctionCall",
  624       "class"  : "Function",
  625       "opcode" : 57,
  626       "operands" : [
  627         { "kind" : "IdResultType" },
  628         { "kind" : "IdResult" },
  629         { "kind" : "IdRef",                            "name" : "'Function'" },
  630         { "kind" : "IdRef",        "quantifier" : "*", "name" : "'Argument 0', +\n'Argument 1', +\n..." }
  631       ]
  632     },
  633     {
  634       "opname" : "OpVariable",
  635       "class"  : "Memory",
  636       "opcode" : 59,
  637       "operands" : [
  638         { "kind" : "IdResultType" },
  639         { "kind" : "IdResult" },
  640         { "kind" : "StorageClass" },
  641         { "kind" : "IdRef",        "quantifier" : "?", "name" : "'Initializer'" }
  642       ]
  643     },
  644     {
  645       "opname" : "OpImageTexelPointer",
  646       "class"  : "Memory",
  647       "opcode" : 60,
  648       "operands" : [
  649         { "kind" : "IdResultType" },
  650         { "kind" : "IdResult" },
  651         { "kind" : "IdRef",        "name" : "'Image'" },
  652         { "kind" : "IdRef",        "name" : "'Coordinate'" },
  653         { "kind" : "IdRef",        "name" : "'Sample'" }
  654       ]
  655     },
  656     {
  657       "opname" : "OpLoad",
  658       "class"  : "Memory",
  659       "opcode" : 61,
  660       "operands" : [
  661         { "kind" : "IdResultType" },
  662         { "kind" : "IdResult" },
  663         { "kind" : "IdRef",                            "name" : "'Pointer'" },
  664         { "kind" : "MemoryAccess", "quantifier" : "?" }
  665       ]
  666     },
  667     {
  668       "opname" : "OpStore",
  669       "class"  : "Memory",
  670       "opcode" : 62,
  671       "operands" : [
  672         { "kind" : "IdRef",                            "name" : "'Pointer'" },
  673         { "kind" : "IdRef",                            "name" : "'Object'" },
  674         { "kind" : "MemoryAccess", "quantifier" : "?" }
  675       ]
  676     },
  677     {
  678       "opname" : "OpCopyMemory",
  679       "class"  : "Memory",
  680       "opcode" : 63,
  681       "operands" : [
  682         { "kind" : "IdRef",                            "name" : "'Target'" },
  683         { "kind" : "IdRef",                            "name" : "'Source'" },
  684         { "kind" : "MemoryAccess", "quantifier" : "?" },
  685         { "kind" : "MemoryAccess", "quantifier" : "?" }
  686       ]
  687     },
  688     {
  689       "opname" : "OpCopyMemorySized",
  690       "class"  : "Memory",
  691       "opcode" : 64,
  692       "operands" : [
  693         { "kind" : "IdRef",                            "name" : "'Target'" },
  694         { "kind" : "IdRef",                            "name" : "'Source'" },
  695         { "kind" : "IdRef",                            "name" : "'Size'" },
  696         { "kind" : "MemoryAccess", "quantifier" : "?" },
  697         { "kind" : "MemoryAccess", "quantifier" : "?" }
  698       ],
  699       "capabilities" : [ "Addresses" ]
  700     },
  701     {
  702       "opname" : "OpAccessChain",
  703       "class"  : "Memory",
  704       "opcode" : 65,
  705       "operands" : [
  706         { "kind" : "IdResultType" },
  707         { "kind" : "IdResult" },
  708         { "kind" : "IdRef",                            "name" : "'Base'" },
  709         { "kind" : "IdRef",        "quantifier" : "*", "name" : "'Indexes'" }
  710       ]
  711     },
  712     {
  713       "opname" : "OpInBoundsAccessChain",
  714       "class"  : "Memory",
  715       "opcode" : 66,
  716       "operands" : [
  717         { "kind" : "IdResultType" },
  718         { "kind" : "IdResult" },
  719         { "kind" : "IdRef",                            "name" : "'Base'" },
  720         { "kind" : "IdRef",        "quantifier" : "*", "name" : "'Indexes'" }
  721       ]
  722     },
  723     {
  724       "opname" : "OpPtrAccessChain",
  725       "class"  : "Memory",
  726       "opcode" : 67,
  727       "operands" : [
  728         { "kind" : "IdResultType" },
  729         { "kind" : "IdResult" },
  730         { "kind" : "IdRef",                            "name" : "'Base'" },
  731         { "kind" : "IdRef",                            "name" : "'Element'" },
  732         { "kind" : "IdRef",        "quantifier" : "*", "name" : "'Indexes'" }
  733       ],
  734       "capabilities" : [
  735         "Addresses",
  736         "VariablePointers",
  737         "VariablePointersStorageBuffer",
  738         "PhysicalStorageBufferAddresses"
  739       ]
  740     },
  741     {
  742       "opname" : "OpArrayLength",
  743       "class"  : "Memory",
  744       "opcode" : 68,
  745       "operands" : [
  746         { "kind" : "IdResultType" },
  747         { "kind" : "IdResult" },
  748         { "kind" : "IdRef",          "name" : "'Structure'" },
  749         { "kind" : "LiteralInteger", "name" : "'Array member'" }
  750       ],
  751       "capabilities" : [ "Shader" ]
  752     },
  753     {
  754       "opname" : "OpGenericPtrMemSemantics",
  755       "class"  : "Memory",
  756       "opcode" : 69,
  757       "operands" : [
  758         { "kind" : "IdResultType" },
  759         { "kind" : "IdResult" },
  760         { "kind" : "IdRef",        "name" : "'Pointer'" }
  761       ],
  762       "capabilities" : [ "Kernel" ]
  763     },
  764     {
  765       "opname" : "OpInBoundsPtrAccessChain",
  766       "class"  : "Memory",
  767       "opcode" : 70,
  768       "operands" : [
  769         { "kind" : "IdResultType" },
  770         { "kind" : "IdResult" },
  771         { "kind" : "IdRef",                            "name" : "'Base'" },
  772         { "kind" : "IdRef",                            "name" : "'Element'" },
  773         { "kind" : "IdRef",        "quantifier" : "*", "name" : "'Indexes'" }
  774       ],
  775       "capabilities" : [ "Addresses" ]
  776     },
  777     {
  778       "opname" : "OpDecorate",
  779       "class"  : "Annotation",
  780       "opcode" : 71,
  781       "operands" : [
  782         { "kind" : "IdRef",      "name" : "'Target'" },
  783         { "kind" : "Decoration" }
  784       ]
  785     },
  786     {
  787       "opname" : "OpMemberDecorate",
  788       "class"  : "Annotation",
  789       "opcode" : 72,
  790       "operands" : [
  791         { "kind" : "IdRef",          "name" : "'Structure Type'" },
  792         { "kind" : "LiteralInteger", "name" : "'Member'" },
  793         { "kind" : "Decoration" }
  794       ]
  795     },
  796     {
  797       "opname" : "OpDecorationGroup",
  798       "class"  : "Annotation",
  799       "opcode" : 73,
  800       "operands" : [
  801         { "kind" : "IdResult" }
  802       ]
  803     },
  804     {
  805       "opname" : "OpGroupDecorate",
  806       "class"  : "Annotation",
  807       "opcode" : 74,
  808       "operands" : [
  809         { "kind" : "IdRef",                     "name" : "'Decoration Group'" },
  810         { "kind" : "IdRef", "quantifier" : "*", "name" : "'Targets'" }
  811       ]
  812     },
  813     {
  814       "opname" : "OpGroupMemberDecorate",
  815       "class"  : "Annotation",
  816       "opcode" : 75,
  817       "operands" : [
  818         { "kind" : "IdRef",                                       "name" : "'Decoration Group'" },
  819         { "kind" : "PairIdRefLiteralInteger", "quantifier" : "*", "name" : "'Targets'" }
  820       ]
  821     },
  822     {
  823       "opname" : "OpVectorExtractDynamic",
  824       "class"  : "Composite",
  825       "opcode" : 77,
  826       "operands" : [
  827         { "kind" : "IdResultType" },
  828         { "kind" : "IdResult" },
  829         { "kind" : "IdRef",        "name" : "'Vector'" },
  830         { "kind" : "IdRef",        "name" : "'Index'" }
  831       ]
  832     },
  833     {
  834       "opname" : "OpVectorInsertDynamic",
  835       "class"  : "Composite",
  836       "opcode" : 78,
  837       "operands" : [
  838         { "kind" : "IdResultType" },
  839         { "kind" : "IdResult" },
  840         { "kind" : "IdRef",        "name" : "'Vector'" },
  841         { "kind" : "IdRef",        "name" : "'Component'" },
  842         { "kind" : "IdRef",        "name" : "'Index'" }
  843       ]
  844     },
  845     {
  846       "opname" : "OpVectorShuffle",
  847       "class"  : "Composite",
  848       "opcode" : 79,
  849       "operands" : [
  850         { "kind" : "IdResultType" },
  851         { "kind" : "IdResult" },
  852         { "kind" : "IdRef",                              "name" : "'Vector 1'" },
  853         { "kind" : "IdRef",                              "name" : "'Vector 2'" },
  854         { "kind" : "LiteralInteger", "quantifier" : "*", "name" : "'Components'" }
  855       ]
  856     },
  857     {
  858       "opname" : "OpCompositeConstruct",
  859       "class"  : "Composite",
  860       "opcode" : 80,
  861       "operands" : [
  862         { "kind" : "IdResultType" },
  863         { "kind" : "IdResult" },
  864         { "kind" : "IdRef",        "quantifier" : "*", "name" : "'Constituents'" }
  865       ]
  866     },
  867     {
  868       "opname" : "OpCompositeExtract",
  869       "class"  : "Composite",
  870       "opcode" : 81,
  871       "operands" : [
  872         { "kind" : "IdResultType" },
  873         { "kind" : "IdResult" },
  874         { "kind" : "IdRef",                              "name" : "'Composite'" },
  875         { "kind" : "LiteralInteger", "quantifier" : "*", "name" : "'Indexes'" }
  876       ]
  877     },
  878     {
  879       "opname" : "OpCompositeInsert",
  880       "class"  : "Composite",
  881       "opcode" : 82,
  882       "operands" : [
  883         { "kind" : "IdResultType" },
  884         { "kind" : "IdResult" },
  885         { "kind" : "IdRef",                              "name" : "'Object'" },
  886         { "kind" : "IdRef",                              "name" : "'Composite'" },
  887         { "kind" : "LiteralInteger", "quantifier" : "*", "name" : "'Indexes'" }
  888       ]
  889     },
  890     {
  891       "opname" : "OpCopyObject",
  892       "class"  : "Composite",
  893       "opcode" : 83,
  894       "operands" : [
  895         { "kind" : "IdResultType" },
  896         { "kind" : "IdResult" },
  897         { "kind" : "IdRef",        "name" : "'Operand'" }
  898       ]
  899     },
  900     {
  901       "opname" : "OpTranspose",
  902       "class"  : "Composite",
  903       "opcode" : 84,
  904       "operands" : [
  905         { "kind" : "IdResultType" },
  906         { "kind" : "IdResult" },
  907         { "kind" : "IdRef",        "name" : "'Matrix'" }
  908       ],
  909       "capabilities" : [ "Matrix" ]
  910     },
  911     {
  912       "opname" : "OpSampledImage",
  913       "class"  : "Image",
  914       "opcode" : 86,
  915       "operands" : [
  916         { "kind" : "IdResultType" },
  917         { "kind" : "IdResult" },
  918         { "kind" : "IdRef",        "name" : "'Image'" },
  919         { "kind" : "IdRef",        "name" : "'Sampler'" }
  920       ]
  921     },
  922     {
  923       "opname" : "OpImageSampleImplicitLod",
  924       "class"  : "Image",
  925       "opcode" : 87,
  926       "operands" : [
  927         { "kind" : "IdResultType" },
  928         { "kind" : "IdResult" },
  929         { "kind" : "IdRef",                             "name" : "'Sampled Image'" },
  930         { "kind" : "IdRef",                             "name" : "'Coordinate'" },
  931         { "kind" : "ImageOperands", "quantifier" : "?" }
  932       ],
  933       "capabilities" : [ "Shader" ]
  934     },
  935     {
  936       "opname" : "OpImageSampleExplicitLod",
  937       "class"  : "Image",
  938       "opcode" : 88,
  939       "operands" : [
  940         { "kind" : "IdResultType" },
  941         { "kind" : "IdResult" },
  942         { "kind" : "IdRef",         "name" : "'Sampled Image'" },
  943         { "kind" : "IdRef",         "name" : "'Coordinate'" },
  944         { "kind" : "ImageOperands" }
  945       ]
  946     },
  947     {
  948       "opname" : "OpImageSampleDrefImplicitLod",
  949       "class"  : "Image",
  950       "opcode" : 89,
  951       "operands" : [
  952         { "kind" : "IdResultType" },
  953         { "kind" : "IdResult" },
  954         { "kind" : "IdRef",                             "name" : "'Sampled Image'" },
  955         { "kind" : "IdRef",                             "name" : "'Coordinate'" },
  956         { "kind" : "IdRef",                             "name" : "'D~ref~'" },
  957         { "kind" : "ImageOperands", "quantifier" : "?" }
  958       ],
  959       "capabilities" : [ "Shader" ]
  960     },
  961     {
  962       "opname" : "OpImageSampleDrefExplicitLod",
  963       "class"  : "Image",
  964       "opcode" : 90,
  965       "operands" : [
  966         { "kind" : "IdResultType" },
  967         { "kind" : "IdResult" },
  968         { "kind" : "IdRef",         "name" : "'Sampled Image'" },
  969         { "kind" : "IdRef",         "name" : "'Coordinate'" },
  970         { "kind" : "IdRef",         "name" : "'D~ref~'" },
  971         { "kind" : "ImageOperands" }
  972       ],
  973       "capabilities" : [ "Shader" ]
  974     },
  975     {
  976       "opname" : "OpImageSampleProjImplicitLod",
  977       "class"  : "Image",
  978       "opcode" : 91,
  979       "operands" : [
  980         { "kind" : "IdResultType" },
  981         { "kind" : "IdResult" },
  982         { "kind" : "IdRef",                             "name" : "'Sampled Image'" },
  983         { "kind" : "IdRef",                             "name" : "'Coordinate'" },
  984         { "kind" : "ImageOperands", "quantifier" : "?" }
  985       ],
  986       "capabilities" : [ "Shader" ]
  987     },
  988     {
  989       "opname" : "OpImageSampleProjExplicitLod",
  990       "class"  : "Image",
  991       "opcode" : 92,
  992       "operands" : [
  993         { "kind" : "IdResultType" },
  994         { "kind" : "IdResult" },
  995         { "kind" : "IdRef",         "name" : "'Sampled Image'" },
  996         { "kind" : "IdRef",         "name" : "'Coordinate'" },
  997         { "kind" : "ImageOperands" }
  998       ],
  999       "capabilities" : [ "Shader" ]
 1000     },
 1001     {
 1002       "opname" : "OpImageSampleProjDrefImplicitLod",
 1003       "class"  : "Image",
 1004       "opcode" : 93,
 1005       "operands" : [
 1006         { "kind" : "IdResultType" },
 1007         { "kind" : "IdResult" },
 1008         { "kind" : "IdRef",                             "name" : "'Sampled Image'" },
 1009         { "kind" : "IdRef",                             "name" : "'Coordinate'" },
 1010         { "kind" : "IdRef",                             "name" : "'D~ref~'" },
 1011         { "kind" : "ImageOperands", "quantifier" : "?" }
 1012       ],
 1013       "capabilities" : [ "Shader" ]
 1014     },
 1015     {
 1016       "opname" : "OpImageSampleProjDrefExplicitLod",
 1017       "class"  : "Image",
 1018       "opcode" : 94,
 1019       "operands" : [
 1020         { "kind" : "IdResultType" },
 1021         { "kind" : "IdResult" },
 1022         { "kind" : "IdRef",         "name" : "'Sampled Image'" },
 1023         { "kind" : "IdRef",         "name" : "'Coordinate'" },
 1024         { "kind" : "IdRef",         "name" : "'D~ref~'" },
 1025         { "kind" : "ImageOperands" }
 1026       ],
 1027       "capabilities" : [ "Shader" ]
 1028     },
 1029     {
 1030       "opname" : "OpImageFetch",
 1031       "class"  : "Image",
 1032       "opcode" : 95,
 1033       "operands" : [
 1034         { "kind" : "IdResultType" },
 1035         { "kind" : "IdResult" },
 1036         { "kind" : "IdRef",                             "name" : "'Image'" },
 1037         { "kind" : "IdRef",                             "name" : "'Coordinate'" },
 1038         { "kind" : "ImageOperands", "quantifier" : "?" }
 1039       ]
 1040     },
 1041     {
 1042       "opname" : "OpImageGather",
 1043       "class"  : "Image",
 1044       "opcode" : 96,
 1045       "operands" : [
 1046         { "kind" : "IdResultType" },
 1047         { "kind" : "IdResult" },
 1048         { "kind" : "IdRef",                             "name" : "'Sampled Image'" },
 1049         { "kind" : "IdRef",                             "name" : "'Coordinate'" },
 1050         { "kind" : "IdRef",                             "name" : "'Component'" },
 1051         { "kind" : "ImageOperands", "quantifier" : "?" }
 1052       ],
 1053       "capabilities" : [ "Shader" ]
 1054     },
 1055     {
 1056       "opname" : "OpImageDrefGather",
 1057       "class"  : "Image",
 1058       "opcode" : 97,
 1059       "operands" : [
 1060         { "kind" : "IdResultType" },
 1061         { "kind" : "IdResult" },
 1062         { "kind" : "IdRef",                             "name" : "'Sampled Image'" },
 1063         { "kind" : "IdRef",                             "name" : "'Coordinate'" },
 1064         { "kind" : "IdRef",                             "name" : "'D~ref~'" },
 1065         { "kind" : "ImageOperands", "quantifier" : "?" }
 1066       ],
 1067       "capabilities" : [ "Shader" ]
 1068     },
 1069     {
 1070       "opname" : "OpImageRead",
 1071       "class"  : "Image",
 1072       "opcode" : 98,
 1073       "operands" : [
 1074         { "kind" : "IdResultType" },
 1075         { "kind" : "IdResult" },
 1076         { "kind" : "IdRef",                             "name" : "'Image'" },
 1077         { "kind" : "IdRef",                             "name" : "'Coordinate'" },
 1078         { "kind" : "ImageOperands", "quantifier" : "?" }
 1079       ]
 1080     },
 1081     {
 1082       "opname" : "OpImageWrite",
 1083       "class"  : "Image",
 1084       "opcode" : 99,
 1085       "operands" : [
 1086         { "kind" : "IdRef",                             "name" : "'Image'" },
 1087         { "kind" : "IdRef",                             "name" : "'Coordinate'" },
 1088         { "kind" : "IdRef",                             "name" : "'Texel'" },
 1089         { "kind" : "ImageOperands", "quantifier" : "?" }
 1090       ]
 1091     },
 1092     {
 1093       "opname" : "OpImage",
 1094       "class"  : "Image",
 1095       "opcode" : 100,
 1096       "operands" : [
 1097         { "kind" : "IdResultType" },
 1098         { "kind" : "IdResult" },
 1099         { "kind" : "IdRef",        "name" : "'Sampled Image'" }
 1100       ]
 1101     },
 1102     {
 1103       "opname" : "OpImageQueryFormat",
 1104       "class"  : "Image",
 1105       "opcode" : 101,
 1106       "operands" : [
 1107         { "kind" : "IdResultType" },
 1108         { "kind" : "IdResult" },
 1109         { "kind" : "IdRef",        "name" : "'Image'" }
 1110       ],
 1111       "capabilities" : [ "Kernel" ]
 1112     },
 1113     {
 1114       "opname" : "OpImageQueryOrder",
 1115       "class"  : "Image",
 1116       "opcode" : 102,
 1117       "operands" : [
 1118         { "kind" : "IdResultType" },
 1119         { "kind" : "IdResult" },
 1120         { "kind" : "IdRef",        "name" : "'Image'" }
 1121       ],
 1122       "capabilities" : [ "Kernel" ]
 1123     },
 1124     {
 1125       "opname" : "OpImageQuerySizeLod",
 1126       "class"  : "Image",
 1127       "opcode" : 103,
 1128       "operands" : [
 1129         { "kind" : "IdResultType" },
 1130         { "kind" : "IdResult" },
 1131         { "kind" : "IdRef",        "name" : "'Image'" },
 1132         { "kind" : "IdRef",        "name" : "'Level of Detail'" }
 1133       ],
 1134       "capabilities" : [ "Kernel", "ImageQuery" ]
 1135     },
 1136     {
 1137       "opname" : "OpImageQuerySize",
 1138       "class"  : "Image",
 1139       "opcode" : 104,
 1140       "operands" : [
 1141         { "kind" : "IdResultType" },
 1142         { "kind" : "IdResult" },
 1143         { "kind" : "IdRef",        "name" : "'Image'" }
 1144       ],
 1145       "capabilities" : [ "Kernel", "ImageQuery" ]
 1146     },
 1147     {
 1148       "opname" : "OpImageQueryLod",
 1149       "class"  : "Image",
 1150       "opcode" : 105,
 1151       "operands" : [
 1152         { "kind" : "IdResultType" },
 1153         { "kind" : "IdResult" },
 1154         { "kind" : "IdRef",        "name" : "'Sampled Image'" },
 1155         { "kind" : "IdRef",        "name" : "'Coordinate'" }
 1156       ],
 1157       "capabilities" : [ "ImageQuery" ]
 1158     },
 1159     {
 1160       "opname" : "OpImageQueryLevels",
 1161       "class"  : "Image",
 1162       "opcode" : 106,
 1163       "operands" : [
 1164         { "kind" : "IdResultType" },
 1165         { "kind" : "IdResult" },
 1166         { "kind" : "IdRef",        "name" : "'Image'" }
 1167       ],
 1168       "capabilities" : [ "Kernel", "ImageQuery" ]
 1169     },
 1170     {
 1171       "opname" : "OpImageQuerySamples",
 1172       "class"  : "Image",
 1173       "opcode" : 107,
 1174       "operands" : [
 1175         { "kind" : "IdResultType" },
 1176         { "kind" : "IdResult" },
 1177         { "kind" : "IdRef",        "name" : "'Image'" }
 1178       ],
 1179       "capabilities" : [ "Kernel", "ImageQuery" ]
 1180     },
 1181     {
 1182       "opname" : "OpConvertFToU",
 1183       "class"  : "Conversion",
 1184       "opcode" : 109,
 1185       "operands" : [
 1186         { "kind" : "IdResultType" },
 1187         { "kind" : "IdResult" },
 1188         { "kind" : "IdRef",        "name" : "'Float Value'" }
 1189       ]
 1190     },
 1191     {
 1192       "opname" : "OpConvertFToS",
 1193       "class"  : "Conversion",
 1194       "opcode" : 110,
 1195       "operands" : [
 1196         { "kind" : "IdResultType" },
 1197         { "kind" : "IdResult" },
 1198         { "kind" : "IdRef",        "name" : "'Float Value'" }
 1199       ]
 1200     },
 1201     {
 1202       "opname" : "OpConvertSToF",
 1203       "class"  : "Conversion",
 1204       "opcode" : 111,
 1205       "operands" : [
 1206         { "kind" : "IdResultType" },
 1207         { "kind" : "IdResult" },
 1208         { "kind" : "IdRef",        "name" : "'Signed Value'" }
 1209       ]
 1210     },
 1211     {
 1212       "opname" : "OpConvertUToF",
 1213       "class"  : "Conversion",
 1214       "opcode" : 112,
 1215       "operands" : [
 1216         { "kind" : "IdResultType" },
 1217         { "kind" : "IdResult" },
 1218         { "kind" : "IdRef",        "name" : "'Unsigned Value'" }
 1219       ]
 1220     },
 1221     {
 1222       "opname" : "OpUConvert",
 1223       "class"  : "Conversion",
 1224       "opcode" : 113,
 1225       "operands" : [
 1226         { "kind" : "IdResultType" },
 1227         { "kind" : "IdResult" },
 1228         { "kind" : "IdRef",        "name" : "'Unsigned Value'" }
 1229       ]
 1230     },
 1231     {
 1232       "opname" : "OpSConvert",
 1233       "class"  : "Conversion",
 1234       "opcode" : 114,
 1235       "operands" : [
 1236         { "kind" : "IdResultType" },
 1237         { "kind" : "IdResult" },
 1238         { "kind" : "IdRef",        "name" : "'Signed Value'" }
 1239       ]
 1240     },
 1241     {
 1242       "opname" : "OpFConvert",
 1243       "class"  : "Conversion",
 1244       "opcode" : 115,
 1245       "operands" : [
 1246         { "kind" : "IdResultType" },
 1247         { "kind" : "IdResult" },
 1248         { "kind" : "IdRef",        "name" : "'Float Value'" }
 1249       ]
 1250     },
 1251     {
 1252       "opname" : "OpQuantizeToF16",
 1253       "class"  : "Conversion",
 1254       "opcode" : 116,
 1255       "operands" : [
 1256         { "kind" : "IdResultType" },
 1257         { "kind" : "IdResult" },
 1258         { "kind" : "IdRef",        "name" : "'Value'" }
 1259       ]
 1260     },
 1261     {
 1262       "opname" : "OpConvertPtrToU",
 1263       "class"  : "Conversion",
 1264       "opcode" : 117,
 1265       "operands" : [
 1266         { "kind" : "IdResultType" },
 1267         { "kind" : "IdResult" },
 1268         { "kind" : "IdRef",        "name" : "'Pointer'" }
 1269       ],
 1270       "capabilities" : [
 1271         "Addresses",
 1272         "PhysicalStorageBufferAddresses"
 1273       ]
 1274     },
 1275     {
 1276       "opname" : "OpSatConvertSToU",
 1277       "class"  : "Conversion",
 1278       "opcode" : 118,
 1279       "operands" : [
 1280         { "kind" : "IdResultType" },
 1281         { "kind" : "IdResult" },
 1282         { "kind" : "IdRef",        "name" : "'Signed Value'" }
 1283       ],
 1284       "capabilities" : [ "Kernel" ]
 1285     },
 1286     {
 1287       "opname" : "OpSatConvertUToS",
 1288       "class"  : "Conversion",
 1289       "opcode" : 119,
 1290       "operands" : [
 1291         { "kind" : "IdResultType" },
 1292         { "kind" : "IdResult" },
 1293         { "kind" : "IdRef",        "name" : "'Unsigned Value'" }
 1294       ],
 1295       "capabilities" : [ "Kernel" ]
 1296     },
 1297     {
 1298       "opname" : "OpConvertUToPtr",
 1299       "class"  : "Conversion",
 1300       "opcode" : 120,
 1301       "operands" : [
 1302         { "kind" : "IdResultType" },
 1303         { "kind" : "IdResult" },
 1304         { "kind" : "IdRef",        "name" : "'Integer Value'" }
 1305       ],
 1306       "capabilities" : [
 1307         "Addresses",
 1308         "PhysicalStorageBufferAddresses"
 1309       ]
 1310     },
 1311     {
 1312       "opname" : "OpPtrCastToGeneric",
 1313       "class"  : "Conversion",
 1314       "opcode" : 121,
 1315       "operands" : [
 1316         { "kind" : "IdResultType" },
 1317         { "kind" : "IdResult" },
 1318         { "kind" : "IdRef",        "name" : "'Pointer'" }
 1319       ],
 1320       "capabilities" : [ "Kernel" ]
 1321     },
 1322     {
 1323       "opname" : "OpGenericCastToPtr",
 1324       "class"  : "Conversion",
 1325       "opcode" : 122,
 1326       "operands" : [
 1327         { "kind" : "IdResultType" },
 1328         { "kind" : "IdResult" },
 1329         { "kind" : "IdRef",        "name" : "'Pointer'" }
 1330       ],
 1331       "capabilities" : [ "Kernel" ]
 1332     },
 1333     {
 1334       "opname" : "OpGenericCastToPtrExplicit",
 1335       "class"  : "Conversion",
 1336       "opcode" : 123,
 1337       "operands" : [
 1338         { "kind" : "IdResultType" },
 1339         { "kind" : "IdResult" },
 1340         { "kind" : "IdRef",        "name" : "'Pointer'" },
 1341         { "kind" : "StorageClass", "name" : "'Storage'" }
 1342       ],
 1343       "capabilities" : [ "Kernel" ]
 1344     },
 1345     {
 1346       "opname" : "OpBitcast",
 1347       "class"  : "Conversion",
 1348       "opcode" : 124,
 1349       "operands" : [
 1350         { "kind" : "IdResultType" },
 1351         { "kind" : "IdResult" },
 1352         { "kind" : "IdRef",        "name" : "'Operand'" }
 1353       ]
 1354     },
 1355     {
 1356       "opname" : "OpSNegate",
 1357       "class"  : "Arithmetic",
 1358       "opcode" : 126,
 1359       "operands" : [
 1360         { "kind" : "IdResultType" },
 1361         { "kind" : "IdResult" },
 1362         { "kind" : "IdRef",        "name" : "'Operand'" }
 1363       ]
 1364     },
 1365     {
 1366       "opname" : "OpFNegate",
 1367       "class"  : "Arithmetic",
 1368       "opcode" : 127,
 1369       "operands" : [
 1370         { "kind" : "IdResultType" },
 1371         { "kind" : "IdResult" },
 1372         { "kind" : "IdRef",        "name" : "'Operand'" }
 1373       ]
 1374     },
 1375     {
 1376       "opname" : "OpIAdd",
 1377       "class"  : "Arithmetic",
 1378       "opcode" : 128,
 1379       "operands" : [
 1380         { "kind" : "IdResultType" },
 1381         { "kind" : "IdResult" },
 1382         { "kind" : "IdRef",        "name" : "'Operand 1'" },
 1383         { "kind" : "IdRef",        "name" : "'Operand 2'" }
 1384       ]
 1385     },
 1386     {
 1387       "opname" : "OpFAdd",
 1388       "class"  : "Arithmetic",
 1389       "opcode" : 129,
 1390       "operands" : [
 1391         { "kind" : "IdResultType" },
 1392         { "kind" : "IdResult" },
 1393         { "kind" : "IdRef",        "name" : "'Operand 1'" },
 1394         { "kind" : "IdRef",        "name" : "'Operand 2'" }
 1395       ]
 1396     },
 1397     {
 1398       "opname" : "OpISub",
 1399       "class"  : "Arithmetic",
 1400       "opcode" : 130,
 1401       "operands" : [
 1402         { "kind" : "IdResultType" },
 1403         { "kind" : "IdResult" },
 1404         { "kind" : "IdRef",        "name" : "'Operand 1'" },
 1405         { "kind" : "IdRef",        "name" : "'Operand 2'" }
 1406       ]
 1407     },
 1408     {
 1409       "opname" : "OpFSub",
 1410       "class"  : "Arithmetic",
 1411       "opcode" : 131,
 1412       "operands" : [
 1413         { "kind" : "IdResultType" },
 1414         { "kind" : "IdResult" },
 1415         { "kind" : "IdRef",        "name" : "'Operand 1'" },
 1416         { "kind" : "IdRef",        "name" : "'Operand 2'" }
 1417       ]
 1418     },
 1419     {
 1420       "opname" : "OpIMul",
 1421       "class"  : "Arithmetic",
 1422       "opcode" : 132,
 1423       "operands" : [
 1424         { "kind" : "IdResultType" },
 1425         { "kind" : "IdResult" },
 1426         { "kind" : "IdRef",        "name" : "'Operand 1'" },
 1427         { "kind" : "IdRef",        "name" : "'Operand 2'" }
 1428       ]
 1429     },
 1430     {
 1431       "opname" : "OpFMul",
 1432       "class"  : "Arithmetic",
 1433       "opcode" : 133,
 1434       "operands" : [
 1435         { "kind" : "IdResultType" },
 1436         { "kind" : "IdResult" },
 1437         { "kind" : "IdRef",        "name" : "'Operand 1'" },
 1438         { "kind" : "IdRef",        "name" : "'Operand 2'" }
 1439       ]
 1440     },
 1441     {
 1442       "opname" : "OpUDiv",
 1443       "class"  : "Arithmetic",
 1444       "opcode" : 134,
 1445       "operands" : [
 1446         { "kind" : "IdResultType" },
 1447         { "kind" : "IdResult" },
 1448         { "kind" : "IdRef",        "name" : "'Operand 1'" },
 1449         { "kind" : "IdRef",        "name" : "'Operand 2'" }
 1450       ]
 1451     },
 1452     {
 1453       "opname" : "OpSDiv",
 1454       "class"  : "Arithmetic",
 1455       "opcode" : 135,
 1456       "operands" : [
 1457         { "kind" : "IdResultType" },
 1458         { "kind" : "IdResult" },
 1459         { "kind" : "IdRef",        "name" : "'Operand 1'" },
 1460         { "kind" : "IdRef",        "name" : "'Operand 2'" }
 1461       ]
 1462     },
 1463     {
 1464       "opname" : "OpFDiv",
 1465       "class"  : "Arithmetic",
 1466       "opcode" : 136,
 1467       "operands" : [
 1468         { "kind" : "IdResultType" },
 1469         { "kind" : "IdResult" },
 1470         { "kind" : "IdRef",        "name" : "'Operand 1'" },
 1471         { "kind" : "IdRef",        "name" : "'Operand 2'" }
 1472       ]
 1473     },
 1474     {
 1475       "opname" : "OpUMod",
 1476       "class"  : "Arithmetic",
 1477       "opcode" : 137,
 1478       "operands" : [
 1479         { "kind" : "IdResultType" },
 1480         { "kind" : "IdResult" },
 1481         { "kind" : "IdRef",        "name" : "'Operand 1'" },
 1482         { "kind" : "IdRef",        "name" : "'Operand 2'" }
 1483       ]
 1484     },
 1485     {
 1486       "opname" : "OpSRem",
 1487       "class"  : "Arithmetic",
 1488       "opcode" : 138,
 1489       "operands" : [
 1490         { "kind" : "IdResultType" },
 1491         { "kind" : "IdResult" },
 1492         { "kind" : "IdRef",        "name" : "'Operand 1'" },
 1493         { "kind" : "IdRef",        "name" : "'Operand 2'" }
 1494       ]
 1495     },
 1496     {
 1497       "opname" : "OpSMod",
 1498       "class"  : "Arithmetic",
 1499       "opcode" : 139,
 1500       "operands" : [
 1501         { "kind" : "IdResultType" },
 1502         { "kind" : "IdResult" },
 1503         { "kind" : "IdRef",        "name" : "'Operand 1'" },
 1504         { "kind" : "IdRef",        "name" : "'Operand 2'" }
 1505       ]
 1506     },
 1507     {
 1508       "opname" : "OpFRem",
 1509       "class"  : "Arithmetic",
 1510       "opcode" : 140,
 1511       "operands" : [
 1512         { "kind" : "IdResultType" },
 1513         { "kind" : "IdResult" },
 1514         { "kind" : "IdRef",        "name" : "'Operand 1'" },
 1515         { "kind" : "IdRef",        "name" : "'Operand 2'" }
 1516       ]
 1517     },
 1518     {
 1519       "opname" : "OpFMod",
 1520       "class"  : "Arithmetic",
 1521       "opcode" : 141,
 1522       "operands" : [
 1523         { "kind" : "IdResultType" },
 1524         { "kind" : "IdResult" },
 1525         { "kind" : "IdRef",        "name" : "'Operand 1'" },
 1526         { "kind" : "IdRef",        "name" : "'Operand 2'" }
 1527       ]
 1528     },
 1529     {
 1530       "opname" : "OpVectorTimesScalar",
 1531       "class"  : "Arithmetic",
 1532       "opcode" : 142,
 1533       "operands" : [
 1534         { "kind" : "IdResultType" },
 1535         { "kind" : "IdResult" },
 1536         { "kind" : "IdRef",        "name" : "'Vector'" },
 1537         { "kind" : "IdRef",        "name" : "'Scalar'" }
 1538       ]
 1539     },
 1540     {
 1541       "opname" : "OpMatrixTimesScalar",
 1542       "class"  : "Arithmetic",
 1543       "opcode" : 143,
 1544       "operands" : [
 1545         { "kind" : "IdResultType" },
 1546         { "kind" : "IdResult" },
 1547         { "kind" : "IdRef",        "name" : "'Matrix'" },
 1548         { "kind" : "IdRef",        "name" : "'Scalar'" }
 1549       ],
 1550       "capabilities" : [ "Matrix" ]
 1551     },
 1552     {
 1553       "opname" : "OpVectorTimesMatrix",
 1554       "class"  : "Arithmetic",
 1555       "opcode" : 144,
 1556       "operands" : [
 1557         { "kind" : "IdResultType" },
 1558         { "kind" : "IdResult" },
 1559         { "kind" : "IdRef",        "name" : "'Vector'" },
 1560         { "kind" : "IdRef",        "name" : "'Matrix'" }
 1561       ],
 1562       "capabilities" : [ "Matrix" ]
 1563     },
 1564     {
 1565       "opname" : "OpMatrixTimesVector",
 1566       "class"  : "Arithmetic",
 1567       "opcode" : 145,
 1568       "operands" : [
 1569         { "kind" : "IdResultType" },
 1570         { "kind" : "IdResult" },
 1571         { "kind" : "IdRef",        "name" : "'Matrix'" },
 1572         { "kind" : "IdRef",        "name" : "'Vector'" }
 1573       ],
 1574       "capabilities" : [ "Matrix" ]
 1575     },
 1576     {
 1577       "opname" : "OpMatrixTimesMatrix",
 1578       "class"  : "Arithmetic",
 1579       "opcode" : 146,
 1580       "operands" : [
 1581         { "kind" : "IdResultType" },
 1582         { "kind" : "IdResult" },
 1583         { "kind" : "IdRef",        "name" : "'LeftMatrix'" },
 1584         { "kind" : "IdRef",        "name" : "'RightMatrix'" }
 1585       ],
 1586       "capabilities" : [ "Matrix" ]
 1587     },
 1588     {
 1589       "opname" : "OpOuterProduct",
 1590       "class"  : "Arithmetic",
 1591       "opcode" : 147,
 1592       "operands" : [
 1593         { "kind" : "IdResultType" },
 1594         { "kind" : "IdResult" },
 1595         { "kind" : "IdRef",        "name" : "'Vector 1'" },
 1596         { "kind" : "IdRef",        "name" : "'Vector 2'" }
 1597       ],
 1598       "capabilities" : [ "Matrix" ]
 1599     },
 1600     {
 1601       "opname" : "OpDot",
 1602       "class"  : "Arithmetic",
 1603       "opcode" : 148,
 1604       "operands" : [
 1605         { "kind" : "IdResultType" },
 1606         { "kind" : "IdResult" },
 1607         { "kind" : "IdRef",        "name" : "'Vector 1'" },
 1608         { "kind" : "IdRef",        "name" : "'Vector 2'" }
 1609       ]
 1610     },
 1611     {
 1612       "opname" : "OpIAddCarry",
 1613       "class"  : "Arithmetic",
 1614       "opcode" : 149,
 1615       "operands" : [
 1616         { "kind" : "IdResultType" },
 1617         { "kind" : "IdResult" },
 1618         { "kind" : "IdRef",        "name" : "'Operand 1'" },
 1619         { "kind" : "IdRef",        "name" : "'Operand 2'" }
 1620       ]
 1621     },
 1622     {
 1623       "opname" : "OpISubBorrow",
 1624       "class"  : "Arithmetic",
 1625       "opcode" : 150,
 1626       "operands" : [
 1627         { "kind" : "IdResultType" },
 1628         { "kind" : "IdResult" },
 1629         { "kind" : "IdRef",        "name" : "'Operand 1'" },
 1630         { "kind" : "IdRef",        "name" : "'Operand 2'" }
 1631       ]
 1632     },
 1633     {
 1634       "opname" : "OpUMulExtended",
 1635       "class"  : "Arithmetic",
 1636       "opcode" : 151,
 1637       "operands" : [
 1638         { "kind" : "IdResultType" },
 1639         { "kind" : "IdResult" },
 1640         { "kind" : "IdRef",        "name" : "'Operand 1'" },
 1641         { "kind" : "IdRef",        "name" : "'Operand 2'" }
 1642       ]
 1643     },
 1644     {
 1645       "opname" : "OpSMulExtended",
 1646       "class"  : "Arithmetic",
 1647       "opcode" : 152,
 1648       "operands" : [
 1649         { "kind" : "IdResultType" },
 1650         { "kind" : "IdResult" },
 1651         { "kind" : "IdRef",        "name" : "'Operand 1'" },
 1652         { "kind" : "IdRef",        "name" : "'Operand 2'" }
 1653       ]
 1654     },
 1655     {
 1656       "opname" : "OpAny",
 1657       "class"  : "Relational_and_Logical",
 1658       "opcode" : 154,
 1659       "operands" : [
 1660         { "kind" : "IdResultType" },
 1661         { "kind" : "IdResult" },
 1662         { "kind" : "IdRef",        "name" : "'Vector'" }
 1663       ]
 1664     },
 1665     {
 1666       "opname" : "OpAll",
 1667       "class"  : "Relational_and_Logical",
 1668       "opcode" : 155,
 1669       "operands" : [
 1670         { "kind" : "IdResultType" },
 1671         { "kind" : "IdResult" },
 1672         { "kind" : "IdRef",        "name" : "'Vector'" }
 1673       ]
 1674     },
 1675     {
 1676       "opname" : "OpIsNan",
 1677       "class"  : "Relational_and_Logical",
 1678       "opcode" : 156,
 1679       "operands" : [
 1680         { "kind" : "IdResultType" },
 1681         { "kind" : "IdResult" },
 1682         { "kind" : "IdRef",        "name" : "'x'" }
 1683       ]
 1684     },
 1685     {
 1686       "opname" : "OpIsInf",
 1687       "class"  : "Relational_and_Logical",
 1688       "opcode" : 157,
 1689       "operands" : [
 1690         { "kind" : "IdResultType" },
 1691         { "kind" : "IdResult" },
 1692         { "kind" : "IdRef",        "name" : "'x'" }
 1693       ]
 1694     },
 1695     {
 1696       "opname" : "OpIsFinite",
 1697       "class"  : "Relational_and_Logical",
 1698       "opcode" : 158,
 1699       "operands" : [
 1700         { "kind" : "IdResultType" },
 1701         { "kind" : "IdResult" },
 1702         { "kind" : "IdRef",        "name" : "'x'" }
 1703       ],
 1704       "capabilities" : [ "Kernel" ]
 1705     },
 1706     {
 1707       "opname" : "OpIsNormal",
 1708       "class"  : "Relational_and_Logical",
 1709       "opcode" : 159,
 1710       "operands" : [
 1711         { "kind" : "IdResultType" },
 1712         { "kind" : "IdResult" },
 1713         { "kind" : "IdRef",        "name" : "'x'" }
 1714       ],
 1715       "capabilities" : [ "Kernel" ]
 1716     },
 1717     {
 1718       "opname" : "OpSignBitSet",
 1719       "class"  : "Relational_and_Logical",
 1720       "opcode" : 160,
 1721       "operands" : [
 1722         { "kind" : "IdResultType" },
 1723         { "kind" : "IdResult" },
 1724         { "kind" : "IdRef",        "name" : "'x'" }
 1725       ],
 1726       "capabilities" : [ "Kernel" ]
 1727     },
 1728     {
 1729       "opname" : "OpLessOrGreater",
 1730       "class"  : "Relational_and_Logical",
 1731       "opcode" : 161,
 1732       "operands" : [
 1733         { "kind" : "IdResultType" },
 1734         { "kind" : "IdResult" },
 1735         { "kind" : "IdRef",        "name" : "'x'" },
 1736         { "kind" : "IdRef",        "name" : "'y'" }
 1737       ],
 1738       "capabilities" : [ "Kernel" ]
 1739     },
 1740     {
 1741       "opname" : "OpOrdered",
 1742       "class"  : "Relational_and_Logical",
 1743       "opcode" : 162,
 1744       "operands" : [
 1745         { "kind" : "IdResultType" },
 1746         { "kind" : "IdResult" },
 1747         { "kind" : "IdRef",        "name" : "'x'" },
 1748         { "kind" : "IdRef",        "name" : "'y'" }
 1749       ],
 1750       "capabilities" : [ "Kernel" ]
 1751     },
 1752     {
 1753       "opname" : "OpUnordered",
 1754       "class"  : "Relational_and_Logical",
 1755       "opcode" : 163,
 1756       "operands" : [
 1757         { "kind" : "IdResultType" },
 1758         { "kind" : "IdResult" },
 1759         { "kind" : "IdRef",        "name" : "'x'" },
 1760         { "kind" : "IdRef",        "name" : "'y'" }
 1761       ],
 1762       "capabilities" : [ "Kernel" ]
 1763     },
 1764     {
 1765       "opname" : "OpLogicalEqual",
 1766       "class"  : "Relational_and_Logical",
 1767       "opcode" : 164,
 1768       "operands" : [
 1769         { "kind" : "IdResultType" },
 1770         { "kind" : "IdResult" },
 1771         { "kind" : "IdRef",        "name" : "'Operand 1'" },
 1772         { "kind" : "IdRef",        "name" : "'Operand 2'" }
 1773       ]
 1774     },
 1775     {
 1776       "opname" : "OpLogicalNotEqual",
 1777       "class"  : "Relational_and_Logical",
 1778       "opcode" : 165,
 1779       "operands" : [
 1780         { "kind" : "IdResultType" },
 1781         { "kind" : "IdResult" },
 1782         { "kind" : "IdRef",        "name" : "'Operand 1'" },
 1783         { "kind" : "IdRef",        "name" : "'Operand 2'" }
 1784       ]
 1785     },
 1786     {
 1787       "opname" : "OpLogicalOr",
 1788       "class"  : "Relational_and_Logical",
 1789       "opcode" : 166,
 1790       "operands" : [
 1791         { "kind" : "IdResultType" },
 1792         { "kind" : "IdResult" },
 1793         { "kind" : "IdRef",        "name" : "'Operand 1'" },
 1794         { "kind" : "IdRef",        "name" : "'Operand 2'" }
 1795       ]
 1796     },
 1797     {
 1798       "opname" : "OpLogicalAnd",
 1799       "class"  : "Relational_and_Logical",
 1800       "opcode" : 167,
 1801       "operands" : [
 1802         { "kind" : "IdResultType" },
 1803         { "kind" : "IdResult" },
 1804         { "kind" : "IdRef",        "name" : "'Operand 1'" },
 1805         { "kind" : "IdRef",        "name" : "'Operand 2'" }
 1806       ]
 1807     },
 1808     {
 1809       "opname" : "OpLogicalNot",
 1810       "class"  : "Relational_and_Logical",
 1811       "opcode" : 168,
 1812       "operands" : [
 1813         { "kind" : "IdResultType" },
 1814         { "kind" : "IdResult" },
 1815         { "kind" : "IdRef",        "name" : "'Operand'" }
 1816       ]
 1817     },
 1818     {
 1819       "opname" : "OpSelect",
 1820       "class"  : "Relational_and_Logical",
 1821       "opcode" : 169,
 1822       "operands" : [
 1823         { "kind" : "IdResultType" },
 1824         { "kind" : "IdResult" },
 1825         { "kind" : "IdRef",        "name" : "'Condition'" },
 1826         { "kind" : "IdRef",        "name" : "'Object 1'" },
 1827         { "kind" : "IdRef",        "name" : "'Object 2'" }
 1828       ]
 1829     },
 1830     {
 1831       "opname" : "OpIEqual",
 1832       "class"  : "Relational_and_Logical",
 1833       "opcode" : 170,
 1834       "operands" : [
 1835         { "kind" : "IdResultType" },
 1836         { "kind" : "IdResult" },
 1837         { "kind" : "IdRef",        "name" : "'Operand 1'" },
 1838         { "kind" : "IdRef",        "name" : "'Operand 2'" }
 1839       ]
 1840     },
 1841     {
 1842       "opname" : "OpINotEqual",
 1843       "class"  : "Relational_and_Logical",
 1844       "opcode" : 171,
 1845       "operands" : [
 1846         { "kind" : "IdResultType" },
 1847         { "kind" : "IdResult" },
 1848         { "kind" : "IdRef",        "name" : "'Operand 1'" },
 1849         { "kind" : "IdRef",        "name" : "'Operand 2'" }
 1850       ]
 1851     },
 1852     {
 1853       "opname" : "OpUGreaterThan",
 1854       "class"  : "Relational_and_Logical",
 1855       "opcode" : 172,
 1856       "operands" : [
 1857         { "kind" : "IdResultType" },
 1858         { "kind" : "IdResult" },
 1859         { "kind" : "IdRef",        "name" : "'Operand 1'" },
 1860         { "kind" : "IdRef",        "name" : "'Operand 2'" }
 1861       ]
 1862     },
 1863     {
 1864       "opname" : "OpSGreaterThan",
 1865       "class"  : "Relational_and_Logical",
 1866       "opcode" : 173,
 1867       "operands" : [
 1868         { "kind" : "IdResultType" },
 1869         { "kind" : "IdResult" },
 1870         { "kind" : "IdRef",        "name" : "'Operand 1'" },
 1871         { "kind" : "IdRef",        "name" : "'Operand 2'" }
 1872       ]
 1873     },
 1874     {
 1875       "opname" : "OpUGreaterThanEqual",
 1876       "class"  : "Relational_and_Logical",
 1877       "opcode" : 174,
 1878       "operands" : [
 1879         { "kind" : "IdResultType" },
 1880         { "kind" : "IdResult" },
 1881         { "kind" : "IdRef",        "name" : "'Operand 1'" },
 1882         { "kind" : "IdRef",        "name" : "'Operand 2'" }
 1883       ]
 1884     },
 1885     {
 1886       "opname" : "OpSGreaterThanEqual",
 1887       "class"  : "Relational_and_Logical",
 1888       "opcode" : 175,
 1889       "operands" : [
 1890         { "kind" : "IdResultType" },
 1891         { "kind" : "IdResult" },
 1892         { "kind" : "IdRef",        "name" : "'Operand 1'" },
 1893         { "kind" : "IdRef",        "name" : "'Operand 2'" }
 1894       ]
 1895     },
 1896     {
 1897       "opname" : "OpULessThan",
 1898       "class"  : "Relational_and_Logical",
 1899       "opcode" : 176,
 1900       "operands" : [
 1901         { "kind" : "IdResultType" },
 1902         { "kind" : "IdResult" },
 1903         { "kind" : "IdRef",        "name" : "'Operand 1'" },
 1904         { "kind" : "IdRef",        "name" : "'Operand 2'" }
 1905       ]
 1906     },
 1907     {
 1908       "opname" : "OpSLessThan",
 1909       "class"  : "Relational_and_Logical",
 1910       "opcode" : 177,
 1911       "operands" : [
 1912         { "kind" : "IdResultType" },
 1913         { "kind" : "IdResult" },
 1914         { "kind" : "IdRef",        "name" : "'Operand 1'" },
 1915         { "kind" : "IdRef",        "name" : "'Operand 2'" }
 1916       ]
 1917     },
 1918     {
 1919       "opname" : "OpULessThanEqual",
 1920       "class"  : "Relational_and_Logical",
 1921       "opcode" : 178,
 1922       "operands" : [
 1923         { "kind" : "IdResultType" },
 1924         { "kind" : "IdResult" },
 1925         { "kind" : "IdRef",        "name" : "'Operand 1'" },
 1926         { "kind" : "IdRef",        "name" : "'Operand 2'" }
 1927       ]
 1928     },
 1929     {
 1930       "opname" : "OpSLessThanEqual",
 1931       "class"  : "Relational_and_Logical",
 1932       "opcode" : 179,
 1933       "operands" : [
 1934         { "kind" : "IdResultType" },
 1935         { "kind" : "IdResult" },
 1936         { "kind" : "IdRef",        "name" : "'Operand 1'" },
 1937         { "kind" : "IdRef",        "name" : "'Operand 2'" }
 1938       ]
 1939     },
 1940     {
 1941       "opname" : "OpFOrdEqual",
 1942       "class"  : "Relational_and_Logical",
 1943       "opcode" : 180,
 1944       "operands" : [
 1945         { "kind" : "IdResultType" },
 1946         { "kind" : "IdResult" },
 1947         { "kind" : "IdRef",        "name" : "'Operand 1'" },
 1948         { "kind" : "IdRef",        "name" : "'Operand 2'" }
 1949       ]
 1950     },
 1951     {
 1952       "opname" : "OpFUnordEqual",
 1953       "class"  : "Relational_and_Logical",
 1954       "opcode" : 181,
 1955       "operands" : [
 1956         { "kind" : "IdResultType" },
 1957         { "kind" : "IdResult" },
 1958         { "kind" : "IdRef",        "name" : "'Operand 1'" },
 1959         { "kind" : "IdRef",        "name" : "'Operand 2'" }
 1960       ]
 1961     },
 1962     {
 1963       "opname" : "OpFOrdNotEqual",
 1964       "class"  : "Relational_and_Logical",
 1965       "opcode" : 182,
 1966       "operands" : [
 1967         { "kind" : "IdResultType" },
 1968         { "kind" : "IdResult" },
 1969         { "kind" : "IdRef",        "name" : "'Operand 1'" },
 1970         { "kind" : "IdRef",        "name" : "'Operand 2'" }
 1971       ]
 1972     },
 1973     {
 1974       "opname" : "OpFUnordNotEqual",
 1975       "class"  : "Relational_and_Logical",
 1976       "opcode" : 183,
 1977       "operands" : [
 1978         { "kind" : "IdResultType" },
 1979         { "kind" : "IdResult" },
 1980         { "kind" : "IdRef",        "name" : "'Operand 1'" },
 1981         { "kind" : "IdRef",        "name" : "'Operand 2'" }
 1982       ]
 1983     },
 1984     {
 1985       "opname" : "OpFOrdLessThan",
 1986       "class"  : "Relational_and_Logical",
 1987       "opcode" : 184,
 1988       "operands" : [
 1989         { "kind" : "IdResultType" },
 1990         { "kind" : "IdResult" },
 1991         { "kind" : "IdRef",        "name" : "'Operand 1'" },
 1992         { "kind" : "IdRef",        "name" : "'Operand 2'" }
 1993       ]
 1994     },
 1995     {
 1996       "opname" : "OpFUnordLessThan",
 1997       "class"  : "Relational_and_Logical",
 1998       "opcode" : 185,
 1999       "operands" : [
 2000         { "kind" : "IdResultType" },
 2001         { "kind" : "IdResult" },
 2002         { "kind" : "IdRef",        "name" : "'Operand 1'" },
 2003         { "kind" : "IdRef",        "name" : "'Operand 2'" }
 2004       ]
 2005     },
 2006     {
 2007       "opname" : "OpFOrdGreaterThan",
 2008       "class"  : "Relational_and_Logical",
 2009       "opcode" : 186,
 2010       "operands" : [
 2011         { "kind" : "IdResultType" },
 2012         { "kind" : "IdResult" },
 2013         { "kind" : "IdRef",        "name" : "'Operand 1'" },
 2014         { "kind" : "IdRef",        "name" : "'Operand 2'" }
 2015       ]
 2016     },
 2017     {
 2018       "opname" : "OpFUnordGreaterThan",
 2019       "class"  : "Relational_and_Logical",
 2020       "opcode" : 187,
 2021       "operands" : [
 2022         { "kind" : "IdResultType" },
 2023         { "kind" : "IdResult" },
 2024         { "kind" : "IdRef",        "name" : "'Operand 1'" },
 2025         { "kind" : "IdRef",        "name" : "'Operand 2'" }
 2026       ]
 2027     },
 2028     {
 2029       "opname" : "OpFOrdLessThanEqual",
 2030       "class"  : "Relational_and_Logical",
 2031       "opcode" : 188,
 2032       "operands" : [
 2033         { "kind" : "IdResultType" },
 2034         { "kind" : "IdResult" },
 2035         { "kind" : "IdRef",        "name" : "'Operand 1'" },
 2036         { "kind" : "IdRef",        "name" : "'Operand 2'" }
 2037       ]
 2038     },
 2039     {
 2040       "opname" : "OpFUnordLessThanEqual",
 2041       "class"  : "Relational_and_Logical",
 2042       "opcode" : 189,
 2043       "operands" : [
 2044         { "kind" : "IdResultType" },
 2045         { "kind" : "IdResult" },
 2046         { "kind" : "IdRef",        "name" : "'Operand 1'" },
 2047         { "kind" : "IdRef",        "name" : "'Operand 2'" }
 2048       ]
 2049     },
 2050     {
 2051       "opname" : "OpFOrdGreaterThanEqual",
 2052       "class"  : "Relational_and_Logical",
 2053       "opcode" : 190,
 2054       "operands" : [
 2055         { "kind" : "IdResultType" },
 2056         { "kind" : "IdResult" },
 2057         { "kind" : "IdRef",        "name" : "'Operand 1'" },
 2058         { "kind" : "IdRef",        "name" : "'Operand 2'" }
 2059       ]
 2060     },
 2061     {
 2062       "opname" : "OpFUnordGreaterThanEqual",
 2063       "class"  : "Relational_and_Logical",
 2064       "opcode" : 191,
 2065       "operands" : [
 2066         { "kind" : "IdResultType" },
 2067         { "kind" : "IdResult" },
 2068         { "kind" : "IdRef",        "name" : "'Operand 1'" },
 2069         { "kind" : "IdRef",        "name" : "'Operand 2'" }
 2070       ]
 2071     },
 2072     {
 2073       "opname" : "OpShiftRightLogical",
 2074       "class"  : "Bit",
 2075       "opcode" : 194,
 2076       "operands" : [
 2077         { "kind" : "IdResultType" },
 2078         { "kind" : "IdResult" },
 2079         { "kind" : "IdRef",        "name" : "'Base'" },
 2080         { "kind" : "IdRef",        "name" : "'Shift'" }
 2081       ]
 2082     },
 2083     {
 2084       "opname" : "OpShiftRightArithmetic",
 2085       "class"  : "Bit",
 2086       "opcode" : 195,
 2087       "operands" : [
 2088         { "kind" : "IdResultType" },
 2089         { "kind" : "IdResult" },
 2090         { "kind" : "IdRef",        "name" : "'Base'" },
 2091         { "kind" : "IdRef",        "name" : "'Shift'" }
 2092       ]
 2093     },
 2094     {
 2095       "opname" : "OpShiftLeftLogical",
 2096       "class"  : "Bit",
 2097       "opcode" : 196,
 2098       "operands" : [
 2099         { "kind" : "IdResultType" },
 2100         { "kind" : "IdResult" },
 2101         { "kind" : "IdRef",        "name" : "'Base'" },
 2102         { "kind" : "IdRef",        "name" : "'Shift'" }
 2103       ]
 2104     },
 2105     {
 2106       "opname" : "OpBitwiseOr",
 2107       "class"  : "Bit",
 2108       "opcode" : 197,
 2109       "operands" : [
 2110         { "kind" : "IdResultType" },
 2111         { "kind" : "IdResult" },
 2112         { "kind" : "IdRef",        "name" : "'Operand 1'" },
 2113         { "kind" : "IdRef",        "name" : "'Operand 2'" }
 2114       ]
 2115     },
 2116     {
 2117       "opname" : "OpBitwiseXor",
 2118       "class"  : "Bit",
 2119       "opcode" : 198,
 2120       "operands" : [
 2121         { "kind" : "IdResultType" },
 2122         { "kind" : "IdResult" },
 2123         { "kind" : "IdRef",        "name" : "'Operand 1'" },
 2124         { "kind" : "IdRef",        "name" : "'Operand 2'" }
 2125       ]
 2126     },
 2127     {
 2128       "opname" : "OpBitwiseAnd",
 2129       "class"  : "Bit",
 2130       "opcode" : 199,
 2131       "operands" : [
 2132         { "kind" : "IdResultType" },
 2133         { "kind" : "IdResult" },
 2134         { "kind" : "IdRef",        "name" : "'Operand 1'" },
 2135         { "kind" : "IdRef",        "name" : "'Operand 2'" }
 2136       ]
 2137     },
 2138     {
 2139       "opname" : "OpNot",
 2140       "class"  : "Bit",
 2141       "opcode" : 200,
 2142       "operands" : [
 2143         { "kind" : "IdResultType" },
 2144         { "kind" : "IdResult" },
 2145         { "kind" : "IdRef",        "name" : "'Operand'" }
 2146       ]
 2147     },
 2148     {
 2149       "opname" : "OpBitFieldInsert",
 2150       "class"  : "Bit",
 2151       "opcode" : 201,
 2152       "operands" : [
 2153         { "kind" : "IdResultType" },
 2154         { "kind" : "IdResult" },
 2155         { "kind" : "IdRef",        "name" : "'Base'" },
 2156         { "kind" : "IdRef",        "name" : "'Insert'" },
 2157         { "kind" : "IdRef",        "name" : "'Offset'" },
 2158         { "kind" : "IdRef",        "name" : "'Count'" }
 2159       ],
 2160       "capabilities" : [ "Shader" ]
 2161     },
 2162     {
 2163       "opname" : "OpBitFieldSExtract",
 2164       "class"  : "Bit",
 2165       "opcode" : 202,
 2166       "operands" : [
 2167         { "kind" : "IdResultType" },
 2168         { "kind" : "IdResult" },
 2169         { "kind" : "IdRef",        "name" : "'Base'" },
 2170         { "kind" : "IdRef",        "name" : "'Offset'" },
 2171         { "kind" : "IdRef",        "name" : "'Count'" }
 2172       ],
 2173       "capabilities" : [ "Shader" ]
 2174     },
 2175     {
 2176       "opname" : "OpBitFieldUExtract",
 2177       "class"  : "Bit",
 2178       "opcode" : 203,
 2179       "operands" : [
 2180         { "kind" : "IdResultType" },
 2181         { "kind" : "IdResult" },
 2182         { "kind" : "IdRef",        "name" : "'Base'" },
 2183         { "kind" : "IdRef",        "name" : "'Offset'" },
 2184         { "kind" : "IdRef",        "name" : "'Count'" }
 2185       ],
 2186       "capabilities" : [ "Shader" ]
 2187     },
 2188     {
 2189       "opname" : "OpBitReverse",
 2190       "class"  : "Bit",
 2191       "opcode" : 204,
 2192       "operands" : [
 2193         { "kind" : "IdResultType" },
 2194         { "kind" : "IdResult" },
 2195         { "kind" : "IdRef",        "name" : "'Base'" }
 2196       ],
 2197       "capabilities" : [ "Shader" ]
 2198     },
 2199     {
 2200       "opname" : "OpBitCount",
 2201       "class"  : "Bit",
 2202       "opcode" : 205,
 2203       "operands" : [
 2204         { "kind" : "IdResultType" },
 2205         { "kind" : "IdResult" },
 2206         { "kind" : "IdRef",        "name" : "'Base'" }
 2207       ]
 2208     },
 2209     {
 2210       "opname" : "OpDPdx",
 2211       "class"  : "Derivative",
 2212       "opcode" : 207,
 2213       "operands" : [
 2214         { "kind" : "IdResultType" },
 2215         { "kind" : "IdResult" },
 2216         { "kind" : "IdRef",        "name" : "'P'" }
 2217       ],
 2218       "capabilities" : [ "Shader" ]
 2219     },
 2220     {
 2221       "opname" : "OpDPdy",
 2222       "class"  : "Derivative",
 2223       "opcode" : 208,
 2224       "operands" : [
 2225         { "kind" : "IdResultType" },
 2226         { "kind" : "IdResult" },
 2227         { "kind" : "IdRef",        "name" : "'P'" }
 2228       ],
 2229       "capabilities" : [ "Shader" ]
 2230     },
 2231     {
 2232       "opname" : "OpFwidth",
 2233       "class"  : "Derivative",
 2234       "opcode" : 209,
 2235       "operands" : [
 2236         { "kind" : "IdResultType" },
 2237         { "kind" : "IdResult" },
 2238         { "kind" : "IdRef",        "name" : "'P'" }
 2239       ],
 2240       "capabilities" : [ "Shader" ]
 2241     },
 2242     {
 2243       "opname" : "OpDPdxFine",
 2244       "class"  : "Derivative",
 2245       "opcode" : 210,
 2246       "operands" : [
 2247         { "kind" : "IdResultType" },
 2248         { "kind" : "IdResult" },
 2249         { "kind" : "IdRef",        "name" : "'P'" }
 2250       ],
 2251       "capabilities" : [ "DerivativeControl" ]
 2252     },
 2253     {
 2254       "opname" : "OpDPdyFine",
 2255       "class"  : "Derivative",
 2256       "opcode" : 211,
 2257       "operands" : [
 2258         { "kind" : "IdResultType" },
 2259         { "kind" : "IdResult" },
 2260         { "kind" : "IdRef",        "name" : "'P'" }
 2261       ],
 2262       "capabilities" : [ "DerivativeControl" ]
 2263     },
 2264     {
 2265       "opname" : "OpFwidthFine",
 2266       "class"  : "Derivative",
 2267       "opcode" : 212,
 2268       "operands" : [
 2269         { "kind" : "IdResultType" },
 2270         { "kind" : "IdResult" },
 2271         { "kind" : "IdRef",        "name" : "'P'" }
 2272       ],
 2273       "capabilities" : [ "DerivativeControl" ]
 2274     },
 2275     {
 2276       "opname" : "OpDPdxCoarse",
 2277       "class"  : "Derivative",
 2278       "opcode" : 213,
 2279       "operands" : [
 2280         { "kind" : "IdResultType" },
 2281         { "kind" : "IdResult" },
 2282         { "kind" : "IdRef",        "name" : "'P'" }
 2283       ],
 2284       "capabilities" : [ "DerivativeControl" ]
 2285     },
 2286     {
 2287       "opname" : "OpDPdyCoarse",
 2288       "class"  : "Derivative",
 2289       "opcode" : 214,
 2290       "operands" : [
 2291         { "kind" : "IdResultType" },
 2292         { "kind" : "IdResult" },
 2293         { "kind" : "IdRef",        "name" : "'P'" }
 2294       ],
 2295       "capabilities" : [ "DerivativeControl" ]
 2296     },
 2297     {
 2298       "opname" : "OpFwidthCoarse",
 2299       "class"  : "Derivative",
 2300       "opcode" : 215,
 2301       "operands" : [
 2302         { "kind" : "IdResultType" },
 2303         { "kind" : "IdResult" },
 2304         { "kind" : "IdRef",        "name" : "'P'" }
 2305       ],
 2306       "capabilities" : [ "DerivativeControl" ]
 2307     },
 2308     {
 2309       "opname" : "OpEmitVertex",
 2310       "class"  : "Primitive",
 2311       "opcode" : 218,
 2312       "capabilities" : [ "Geometry" ]
 2313     },
 2314     {
 2315       "opname" : "OpEndPrimitive",
 2316       "class"  : "Primitive",
 2317       "opcode" : 219,
 2318       "capabilities" : [ "Geometry" ]
 2319     },
 2320     {
 2321       "opname" : "OpEmitStreamVertex",
 2322       "class"  : "Primitive",
 2323       "opcode" : 220,
 2324       "operands" : [
 2325         { "kind" : "IdRef", "name" : "'Stream'" }
 2326       ],
 2327       "capabilities" : [ "GeometryStreams" ]
 2328     },
 2329     {
 2330       "opname" : "OpEndStreamPrimitive",
 2331       "class"  : "Primitive",
 2332       "opcode" : 221,
 2333       "operands" : [
 2334         { "kind" : "IdRef", "name" : "'Stream'" }
 2335       ],
 2336       "capabilities" : [ "GeometryStreams" ]
 2337     },
 2338     {
 2339       "opname" : "OpControlBarrier",
 2340       "class"  : "Barrier",
 2341       "opcode" : 224,
 2342       "operands" : [
 2343         { "kind" : "IdScope",           "name" : "'Execution'" },
 2344         { "kind" : "IdScope",           "name" : "'Memory'" },
 2345         { "kind" : "IdMemorySemantics", "name" : "'Semantics'" }
 2346       ]
 2347     },
 2348     {
 2349       "opname" : "OpMemoryBarrier",
 2350       "class"  : "Barrier",
 2351       "opcode" : 225,
 2352       "operands" : [
 2353         { "kind" : "IdScope",           "name" : "'Memory'" },
 2354         { "kind" : "IdMemorySemantics", "name" : "'Semantics'" }
 2355       ]
 2356     },
 2357     {
 2358       "opname" : "OpAtomicLoad",
 2359       "class"  : "Atomic",
 2360       "opcode" : 227,
 2361       "operands" : [
 2362         { "kind" : "IdResultType" },
 2363         { "kind" : "IdResult" },
 2364         { "kind" : "IdRef",             "name" : "'Pointer'" },
 2365         { "kind" : "IdScope",           "name" : "'Memory'" },
 2366         { "kind" : "IdMemorySemantics", "name" : "'Semantics'" }
 2367       ]
 2368     },
 2369     {
 2370       "opname" : "OpAtomicStore",
 2371       "class"  : "Atomic",
 2372       "opcode" : 228,
 2373       "operands" : [
 2374         { "kind" : "IdRef",             "name" : "'Pointer'" },
 2375         { "kind" : "IdScope",           "name" : "'Memory'" },
 2376         { "kind" : "IdMemorySemantics", "name" : "'Semantics'" },
 2377         { "kind" : "IdRef",             "name" : "'Value'" }
 2378       ]
 2379     },
 2380     {
 2381       "opname" : "OpAtomicExchange",
 2382       "class"  : "Atomic",
 2383       "opcode" : 229,
 2384       "operands" : [
 2385         { "kind" : "IdResultType" },
 2386         { "kind" : "IdResult" },
 2387         { "kind" : "IdRef",             "name" : "'Pointer'" },
 2388         { "kind" : "IdScope",           "name" : "'Memory'" },
 2389         { "kind" : "IdMemorySemantics", "name" : "'Semantics'" },
 2390         { "kind" : "IdRef",             "name" : "'Value'" }
 2391       ]
 2392     },
 2393     {
 2394       "opname" : "OpAtomicCompareExchange",
 2395       "class"  : "Atomic",
 2396       "opcode" : 230,
 2397       "operands" : [
 2398         { "kind" : "IdResultType" },
 2399         { "kind" : "IdResult" },
 2400         { "kind" : "IdRef",             "name" : "'Pointer'" },
 2401         { "kind" : "IdScope",           "name" : "'Memory'" },
 2402         { "kind" : "IdMemorySemantics", "name" : "'Equal'" },
 2403         { "kind" : "IdMemorySemantics", "name" : "'Unequal'" },
 2404         { "kind" : "IdRef",             "name" : "'Value'" },
 2405         { "kind" : "IdRef",             "name" : "'Comparator'" }
 2406       ]
 2407     },
 2408     {
 2409       "opname" : "OpAtomicCompareExchangeWeak",
 2410       "class"  : "Atomic",
 2411       "opcode" : 231,
 2412       "operands" : [
 2413         { "kind" : "IdResultType" },
 2414         { "kind" : "IdResult" },
 2415         { "kind" : "IdRef",             "name" : "'Pointer'" },
 2416         { "kind" : "IdScope",           "name" : "'Memory'" },
 2417         { "kind" : "IdMemorySemantics", "name" : "'Equal'" },
 2418         { "kind" : "IdMemorySemantics", "name" : "'Unequal'" },
 2419         { "kind" : "IdRef",             "name" : "'Value'" },
 2420         { "kind" : "IdRef",             "name" : "'Comparator'" }
 2421       ],
 2422       "capabilities" : [ "Kernel" ],
 2423       "lastVersion" : "1.3"
 2424     },
 2425     {
 2426       "opname" : "OpAtomicIIncrement",
 2427       "class"  : "Atomic",
 2428       "opcode" : 232,
 2429       "operands" : [
 2430         { "kind" : "IdResultType" },
 2431         { "kind" : "IdResult" },
 2432         { "kind" : "IdRef",             "name" : "'Pointer'" },
 2433         { "kind" : "IdScope",           "name" : "'Memory'" },
 2434         { "kind" : "IdMemorySemantics", "name" : "'Semantics'" }
 2435       ]
 2436     },
 2437     {
 2438       "opname" : "OpAtomicIDecrement",
 2439       "class"  : "Atomic",
 2440       "opcode" : 233,
 2441       "operands" : [
 2442         { "kind" : "IdResultType" },
 2443         { "kind" : "IdResult" },
 2444         { "kind" : "IdRef",             "name" : "'Pointer'" },
 2445         { "kind" : "IdScope",           "name" : "'Memory'" },
 2446         { "kind" : "IdMemorySemantics", "name" : "'Semantics'" }
 2447       ]
 2448     },
 2449     {
 2450       "opname" : "OpAtomicIAdd",
 2451       "class"  : "Atomic",
 2452       "opcode" : 234,
 2453       "operands" : [
 2454         { "kind" : "IdResultType" },
 2455         { "kind" : "IdResult" },
 2456         { "kind" : "IdRef",             "name" : "'Pointer'" },
 2457         { "kind" : "IdScope",           "name" : "'Memory'" },
 2458         { "kind" : "IdMemorySemantics", "name" : "'Semantics'" },
 2459         { "kind" : "IdRef",             "name" : "'Value'" }
 2460       ]
 2461     },
 2462     {
 2463       "opname" : "OpAtomicISub",
 2464       "class"  : "Atomic",
 2465       "opcode" : 235,
 2466       "operands" : [
 2467         { "kind" : "IdResultType" },
 2468         { "kind" : "IdResult" },
 2469         { "kind" : "IdRef",             "name" : "'Pointer'" },
 2470         { "kind" : "IdScope",           "name" : "'Memory'" },
 2471         { "kind" : "IdMemorySemantics", "name" : "'Semantics'" },
 2472         { "kind" : "IdRef",             "name" : "'Value'" }
 2473       ]
 2474     },
 2475     {
 2476       "opname" : "OpAtomicSMin",
 2477       "class"  : "Atomic",
 2478       "opcode" : 236,
 2479       "operands" : [
 2480         { "kind" : "IdResultType" },
 2481         { "kind" : "IdResult" },
 2482         { "kind" : "IdRef",             "name" : "'Pointer'" },
 2483         { "kind" : "IdScope",           "name" : "'Memory'" },
 2484         { "kind" : "IdMemorySemantics", "name" : "'Semantics'" },
 2485         { "kind" : "IdRef",             "name" : "'Value'" }
 2486       ]
 2487     },
 2488     {
 2489       "opname" : "OpAtomicUMin",
 2490       "class"  : "Atomic",
 2491       "opcode" : 237,
 2492       "operands" : [
 2493         { "kind" : "IdResultType" },
 2494         { "kind" : "IdResult" },
 2495         { "kind" : "IdRef",             "name" : "'Pointer'" },
 2496         { "kind" : "IdScope",           "name" : "'Memory'" },
 2497         { "kind" : "IdMemorySemantics", "name" : "'Semantics'" },
 2498         { "kind" : "IdRef",             "name" : "'Value'" }
 2499       ]
 2500     },
 2501     {
 2502       "opname" : "OpAtomicSMax",
 2503       "class"  : "Atomic",
 2504       "opcode" : 238,
 2505       "operands" : [
 2506         { "kind" : "IdResultType" },
 2507         { "kind" : "IdResult" },
 2508         { "kind" : "IdRef",             "name" : "'Pointer'" },
 2509         { "kind" : "IdScope",           "name" : "'Memory'" },
 2510         { "kind" : "IdMemorySemantics", "name" : "'Semantics'" },
 2511         { "kind" : "IdRef",             "name" : "'Value'" }
 2512       ]
 2513     },
 2514     {
 2515       "opname" : "OpAtomicUMax",
 2516       "class"  : "Atomic",
 2517       "opcode" : 239,
 2518       "operands" : [
 2519         { "kind" : "IdResultType" },
 2520         { "kind" : "IdResult" },
 2521         { "kind" : "IdRef",             "name" : "'Pointer'" },
 2522         { "kind" : "IdScope",           "name" : "'Memory'" },
 2523         { "kind" : "IdMemorySemantics", "name" : "'Semantics'" },
 2524         { "kind" : "IdRef",             "name" : "'Value'" }
 2525       ]
 2526     },
 2527     {
 2528       "opname" : "OpAtomicAnd",
 2529       "class"  : "Atomic",
 2530       "opcode" : 240,
 2531       "operands" : [
 2532         { "kind" : "IdResultType" },
 2533         { "kind" : "IdResult" },
 2534         { "kind" : "IdRef",             "name" : "'Pointer'" },
 2535         { "kind" : "IdScope",           "name" : "'Memory'" },
 2536         { "kind" : "IdMemorySemantics", "name" : "'Semantics'" },
 2537         { "kind" : "IdRef",             "name" : "'Value'" }
 2538       ]
 2539     },
 2540     {
 2541       "opname" : "OpAtomicOr",
 2542       "class"  : "Atomic",
 2543       "opcode" : 241,
 2544       "operands" : [
 2545         { "kind" : "IdResultType" },
 2546         { "kind" : "IdResult" },
 2547         { "kind" : "IdRef",             "name" : "'Pointer'" },
 2548         { "kind" : "IdScope",           "name" : "'Memory'" },
 2549         { "kind" : "IdMemorySemantics", "name" : "'Semantics'" },
 2550         { "kind" : "IdRef",             "name" : "'Value'" }
 2551       ]
 2552     },
 2553     {
 2554       "opname" : "OpAtomicXor",
 2555       "class"  : "Atomic",
 2556       "opcode" : 242,
 2557       "operands" : [
 2558         { "kind" : "IdResultType" },
 2559         { "kind" : "IdResult" },
 2560         { "kind" : "IdRef",             "name" : "'Pointer'" },
 2561         { "kind" : "IdScope",           "name" : "'Memory'" },
 2562         { "kind" : "IdMemorySemantics", "name" : "'Semantics'" },
 2563         { "kind" : "IdRef",             "name" : "'Value'" }
 2564       ]
 2565     },
 2566     {
 2567       "opname" : "OpPhi",
 2568       "class"  : "Control-Flow",
 2569       "opcode" : 245,
 2570       "operands" : [
 2571         { "kind" : "IdResultType" },
 2572         { "kind" : "IdResult" },
 2573         { "kind" : "PairIdRefIdRef", "quantifier" : "*", "name" : "'Variable, Parent, ...'" }
 2574       ]
 2575     },
 2576     {
 2577       "opname" : "OpLoopMerge",
 2578       "class"  : "Control-Flow",
 2579       "opcode" : 246,
 2580       "operands" : [
 2581         { "kind" : "IdRef",       "name" : "'Merge Block'" },
 2582         { "kind" : "IdRef",       "name" : "'Continue Target'" },
 2583         { "kind" : "LoopControl" }
 2584       ]
 2585     },
 2586     {
 2587       "opname" : "OpSelectionMerge",
 2588       "class"  : "Control-Flow",
 2589       "opcode" : 247,
 2590       "operands" : [
 2591         { "kind" : "IdRef",            "name" : "'Merge Block'" },
 2592         { "kind" : "SelectionControl" }
 2593       ]
 2594     },
 2595     {
 2596       "opname" : "OpLabel",
 2597       "class"  : "Control-Flow",
 2598       "opcode" : 248,
 2599       "operands" : [
 2600         { "kind" : "IdResult" }
 2601       ]
 2602     },
 2603     {
 2604       "opname" : "OpBranch",
 2605       "class"  : "Control-Flow",
 2606       "opcode" : 249,
 2607       "operands" : [
 2608         { "kind" : "IdRef", "name" : "'Target Label'" }
 2609       ]
 2610     },
 2611     {
 2612       "opname" : "OpBranchConditional",
 2613       "class"  : "Control-Flow",
 2614       "opcode" : 250,
 2615       "operands" : [
 2616         { "kind" : "IdRef",                              "name" : "'Condition'" },
 2617         { "kind" : "IdRef",                              "name" : "'True Label'" },
 2618         { "kind" : "IdRef",                              "name" : "'False Label'" },
 2619         { "kind" : "LiteralInteger", "quantifier" : "*", "name" : "'Branch weights'" }
 2620       ]
 2621     },
 2622     {
 2623       "opname" : "OpSwitch",
 2624       "class"  : "Control-Flow",
 2625       "opcode" : 251,
 2626       "operands" : [
 2627         { "kind" : "IdRef",                                       "name" : "'Selector'" },
 2628         { "kind" : "IdRef",                                       "name" : "'Default'" },
 2629         { "kind" : "PairLiteralIntegerIdRef", "quantifier" : "*", "name" : "'Target'" }
 2630       ]
 2631     },
 2632     {
 2633       "opname" : "OpKill",
 2634       "class"  : "Control-Flow",
 2635       "opcode" : 252,
 2636       "capabilities" : [ "Shader" ]
 2637     },
 2638     {
 2639       "opname" : "OpReturn",
 2640       "class"  : "Control-Flow",
 2641       "opcode" : 253
 2642     },
 2643     {
 2644       "opname" : "OpReturnValue",
 2645       "class"  : "Control-Flow",
 2646       "opcode" : 254,
 2647       "operands" : [
 2648         { "kind" : "IdRef", "name" : "'Value'" }
 2649       ]
 2650     },
 2651     {
 2652       "opname" : "OpUnreachable",
 2653       "class"  : "Control-Flow",
 2654       "opcode" : 255
 2655     },
 2656     {
 2657       "opname" : "OpLifetimeStart",
 2658       "class"  : "Control-Flow",
 2659       "opcode" : 256,
 2660       "operands" : [
 2661         { "kind" : "IdRef",          "name" : "'Pointer'" },
 2662         { "kind" : "LiteralInteger", "name" : "'Size'" }
 2663       ],
 2664       "capabilities" : [ "Kernel" ]
 2665     },
 2666     {
 2667       "opname" : "OpLifetimeStop",
 2668       "class"  : "Control-Flow",
 2669       "opcode" : 257,
 2670       "operands" : [
 2671         { "kind" : "IdRef",          "name" : "'Pointer'" },
 2672         { "kind" : "LiteralInteger", "name" : "'Size'" }
 2673       ],
 2674       "capabilities" : [ "Kernel" ]
 2675     },
 2676     {
 2677       "opname" : "OpGroupAsyncCopy",
 2678       "class"  : "Group",
 2679       "opcode" : 259,
 2680       "operands" : [
 2681         { "kind" : "IdResultType" },
 2682         { "kind" : "IdResult" },
 2683         { "kind" : "IdScope",      "name" : "'Execution'" },
 2684         { "kind" : "IdRef",        "name" : "'Destination'" },
 2685         { "kind" : "IdRef",        "name" : "'Source'" },
 2686         { "kind" : "IdRef",        "name" : "'Num Elements'" },
 2687         { "kind" : "IdRef",        "name" : "'Stride'" },
 2688         { "kind" : "IdRef",        "name" : "'Event'" }
 2689       ],
 2690       "capabilities" : [ "Kernel" ]
 2691     },
 2692     {
 2693       "opname" : "OpGroupWaitEvents",
 2694       "class"  : "Group",
 2695       "opcode" : 260,
 2696       "operands" : [
 2697         { "kind" : "IdScope", "name" : "'Execution'" },
 2698         { "kind" : "IdRef",   "name" : "'Num Events'" },
 2699         { "kind" : "IdRef",   "name" : "'Events List'" }
 2700       ],
 2701       "capabilities" : [ "Kernel" ]
 2702     },
 2703     {
 2704       "opname" : "OpGroupAll",
 2705       "class"  : "Group",
 2706       "opcode" : 261,
 2707       "operands" : [
 2708         { "kind" : "IdResultType" },
 2709         { "kind" : "IdResult" },
 2710         { "kind" : "IdScope",      "name" : "'Execution'" },
 2711         { "kind" : "IdRef",        "name" : "'Predicate'" }
 2712       ],
 2713       "capabilities" : [ "Groups" ]
 2714     },
 2715     {
 2716       "opname" : "OpGroupAny",
 2717       "class"  : "Group",
 2718       "opcode" : 262,
 2719       "operands" : [
 2720         { "kind" : "IdResultType" },
 2721         { "kind" : "IdResult" },
 2722         { "kind" : "IdScope",      "name" : "'Execution'" },
 2723         { "kind" : "IdRef",        "name" : "'Predicate'" }
 2724       ],
 2725       "capabilities" : [ "Groups" ]
 2726     },
 2727     {
 2728       "opname" : "OpGroupBroadcast",
 2729       "class"  : "Group",
 2730       "opcode" : 263,
 2731       "operands" : [
 2732         { "kind" : "IdResultType" },
 2733         { "kind" : "IdResult" },
 2734         { "kind" : "IdScope",      "name" : "'Execution'" },
 2735         { "kind" : "IdRef",        "name" : "'Value'" },
 2736         { "kind" : "IdRef",        "name" : "'LocalId'" }
 2737       ],
 2738       "capabilities" : [ "Groups" ]
 2739     },
 2740     {
 2741       "opname" : "OpGroupIAdd",
 2742       "class"  : "Group",
 2743       "opcode" : 264,
 2744       "operands" : [
 2745         { "kind" : "IdResultType" },
 2746         { "kind" : "IdResult" },
 2747         { "kind" : "IdScope",        "name" : "'Execution'" },
 2748         { "kind" : "GroupOperation", "name" : "'Operation'" },
 2749         { "kind" : "IdRef",          "name" : "'X'" }
 2750       ],
 2751       "capabilities" : [ "Groups" ]
 2752     },
 2753     {
 2754       "opname" : "OpGroupFAdd",
 2755       "class"  : "Group",
 2756       "opcode" : 265,
 2757       "operands" : [
 2758         { "kind" : "IdResultType" },
 2759         { "kind" : "IdResult" },
 2760         { "kind" : "IdScope",        "name" : "'Execution'" },
 2761         { "kind" : "GroupOperation", "name" : "'Operation'" },
 2762         { "kind" : "IdRef",          "name" : "'X'" }
 2763       ],
 2764       "capabilities" : [ "Groups" ]
 2765     },
 2766     {
 2767       "opname" : "OpGroupFMin",
 2768       "class"  : "Group",
 2769       "opcode" : 266,
 2770       "operands" : [
 2771         { "kind" : "IdResultType" },
 2772         { "kind" : "IdResult" },
 2773         { "kind" : "IdScope",        "name" : "'Execution'" },
 2774         { "kind" : "GroupOperation", "name" : "'Operation'" },
 2775         { "kind" : "IdRef",          "name" : "'X'" }
 2776       ],
 2777       "capabilities" : [ "Groups" ]
 2778     },
 2779     {
 2780       "opname" : "OpGroupUMin",
 2781       "class"  : "Group",
 2782       "opcode" : 267,
 2783       "operands" : [
 2784         { "kind" : "IdResultType" },
 2785         { "kind" : "IdResult" },
 2786         { "kind" : "IdScope",        "name" : "'Execution'" },
 2787         { "kind" : "GroupOperation", "name" : "'Operation'" },
 2788         { "kind" : "IdRef",          "name" : "'X'" }
 2789       ],
 2790       "capabilities" : [ "Groups" ]
 2791     },
 2792     {
 2793       "opname" : "OpGroupSMin",
 2794       "class"  : "Group",
 2795       "opcode" : 268,
 2796       "operands" : [
 2797         { "kind" : "IdResultType" },
 2798         { "kind" : "IdResult" },
 2799         { "kind" : "IdScope",        "name" : "'Execution'" },
 2800         { "kind" : "GroupOperation", "name" : "'Operation'" },
 2801         { "kind" : "IdRef",          "name" : "'X'" }
 2802       ],
 2803       "capabilities" : [ "Groups" ]
 2804     },
 2805     {
 2806       "opname" : "OpGroupFMax",
 2807       "class"  : "Group",
 2808       "opcode" : 269,
 2809       "operands" : [
 2810         { "kind" : "IdResultType" },
 2811         { "kind" : "IdResult" },
 2812         { "kind" : "IdScope",        "name" : "'Execution'" },
 2813         { "kind" : "GroupOperation", "name" : "'Operation'" },
 2814         { "kind" : "IdRef",          "name" : "'X'" }
 2815       ],
 2816       "capabilities" : [ "Groups" ]
 2817     },
 2818     {
 2819       "opname" : "OpGroupUMax",
 2820       "class"  : "Group",
 2821       "opcode" : 270,
 2822       "operands" : [
 2823         { "kind" : "IdResultType" },
 2824         { "kind" : "IdResult" },
 2825         { "kind" : "IdScope",        "name" : "'Execution'" },
 2826         { "kind" : "GroupOperation", "name" : "'Operation'" },
 2827         { "kind" : "IdRef",          "name" : "'X'" }
 2828       ],
 2829       "capabilities" : [ "Groups" ]
 2830     },
 2831     {
 2832       "opname" : "OpGroupSMax",
 2833       "class"  : "Group",
 2834       "opcode" : 271,
 2835       "operands" : [
 2836         { "kind" : "IdResultType" },
 2837         { "kind" : "IdResult" },
 2838         { "kind" : "IdScope",        "name" : "'Execution'" },
 2839         { "kind" : "GroupOperation", "name" : "'Operation'" },
 2840         { "kind" : "IdRef",          "name" : "'X'" }
 2841       ],
 2842       "capabilities" : [ "Groups" ]
 2843     },
 2844     {
 2845       "opname" : "OpReadPipe",
 2846       "class"  : "Pipe",
 2847       "opcode" : 274,
 2848       "operands" : [
 2849         { "kind" : "IdResultType" },
 2850         { "kind" : "IdResult" },
 2851         { "kind" : "IdRef",        "name" : "'Pipe'" },
 2852         { "kind" : "IdRef",        "name" : "'Pointer'" },
 2853         { "kind" : "IdRef",        "name" : "'Packet Size'" },
 2854         { "kind" : "IdRef",        "name" : "'Packet Alignment'" }
 2855       ],
 2856       "capabilities" : [ "Pipes" ]
 2857     },
 2858     {
 2859       "opname" : "OpWritePipe",
 2860       "class"  : "Pipe",
 2861       "opcode" : 275,
 2862       "operands" : [
 2863         { "kind" : "IdResultType" },
 2864         { "kind" : "IdResult" },
 2865         { "kind" : "IdRef",        "name" : "'Pipe'" },
 2866         { "kind" : "IdRef",        "name" : "'Pointer'" },
 2867         { "kind" : "IdRef",        "name" : "'Packet Size'" },
 2868         { "kind" : "IdRef",        "name" : "'Packet Alignment'" }
 2869       ],
 2870       "capabilities" : [ "Pipes" ]
 2871     },
 2872     {
 2873       "opname" : "OpReservedReadPipe",
 2874       "class"  : "Pipe",
 2875       "opcode" : 276,
 2876       "operands" : [
 2877         { "kind" : "IdResultType" },
 2878         { "kind" : "IdResult" },
 2879         { "kind" : "IdRef",        "name" : "'Pipe'" },
 2880         { "kind" : "IdRef",        "name" : "'Reserve Id'" },
 2881         { "kind" : "IdRef",        "name" : "'Index'" },
 2882         { "kind" : "IdRef",        "name" : "'Pointer'" },
 2883         { "kind" : "IdRef",        "name" : "'Packet Size'" },
 2884         { "kind" : "IdRef",        "name" : "'Packet Alignment'" }
 2885       ],
 2886       "capabilities" : [ "Pipes" ]
 2887     },
 2888     {
 2889       "opname" : "OpReservedWritePipe",
 2890       "class"  : "Pipe",
 2891       "opcode" : 277,
 2892       "operands" : [
 2893         { "kind" : "IdResultType" },
 2894         { "kind" : "IdResult" },
 2895         { "kind" : "IdRef",        "name" : "'Pipe'" },
 2896         { "kind" : "IdRef",        "name" : "'Reserve Id'" },
 2897         { "kind" : "IdRef",        "name" : "'Index'" },
 2898         { "kind" : "IdRef",        "name" : "'Pointer'" },
 2899         { "kind" : "IdRef",        "name" : "'Packet Size'" },
 2900         { "kind" : "IdRef",        "name" : "'Packet Alignment'" }
 2901       ],
 2902       "capabilities" : [ "Pipes" ]
 2903     },
 2904     {
 2905       "opname" : "OpReserveReadPipePackets",
 2906       "class"  : "Pipe",
 2907       "opcode" : 278,
 2908       "operands" : [
 2909         { "kind" : "IdResultType" },
 2910         { "kind" : "IdResult" },
 2911         { "kind" : "IdRef",        "name" : "'Pipe'" },
 2912         { "kind" : "IdRef",        "name" : "'Num Packets'" },
 2913         { "kind" : "IdRef",        "name" : "'Packet Size'" },
 2914         { "kind" : "IdRef",        "name" : "'Packet Alignment'" }
 2915       ],
 2916       "capabilities" : [ "Pipes" ]
 2917     },
 2918     {
 2919       "opname" : "OpReserveWritePipePackets",
 2920       "class"  : "Pipe",
 2921       "opcode" : 279,
 2922       "operands" : [
 2923         { "kind" : "IdResultType" },
 2924         { "kind" : "IdResult" },
 2925         { "kind" : "IdRef",        "name" : "'Pipe'" },
 2926         { "kind" : "IdRef",        "name" : "'Num Packets'" },
 2927         { "kind" : "IdRef",        "name" : "'Packet Size'" },
 2928         { "kind" : "IdRef",        "name" : "'Packet Alignment'" }
 2929       ],
 2930       "capabilities" : [ "Pipes" ]
 2931     },
 2932     {
 2933       "opname" : "OpCommitReadPipe",
 2934       "class"  : "Pipe",
 2935       "opcode" : 280,
 2936       "operands" : [
 2937         { "kind" : "IdRef", "name" : "'Pipe'" },
 2938         { "kind" : "IdRef", "name" : "'Reserve Id'" },
 2939         { "kind" : "IdRef", "name" : "'Packet Size'" },
 2940         { "kind" : "IdRef", "name" : "'Packet Alignment'" }
 2941       ],
 2942       "capabilities" : [ "Pipes" ]
 2943     },
 2944     {
 2945       "opname" : "OpCommitWritePipe",
 2946       "class"  : "Pipe",
 2947       "opcode" : 281,
 2948       "operands" : [
 2949         { "kind" : "IdRef", "name" : "'Pipe'" },
 2950         { "kind" : "IdRef", "name" : "'Reserve Id'" },
 2951         { "kind" : "IdRef", "name" : "'Packet Size'" },
 2952         { "kind" : "IdRef", "name" : "'Packet Alignment'" }
 2953       ],
 2954       "capabilities" : [ "Pipes" ]
 2955     },
 2956     {
 2957       "opname" : "OpIsValidReserveId",
 2958       "class"  : "Pipe",
 2959       "opcode" : 282,
 2960       "operands" : [
 2961         { "kind" : "IdResultType" },
 2962         { "kind" : "IdResult" },
 2963         { "kind" : "IdRef",        "name" : "'Reserve Id'" }
 2964       ],
 2965       "capabilities" : [ "Pipes" ]
 2966     },
 2967     {
 2968       "opname" : "OpGetNumPipePackets",
 2969       "class"  : "Pipe",
 2970       "opcode" : 283,
 2971       "operands" : [
 2972         { "kind" : "IdResultType" },
 2973         { "kind" : "IdResult" },
 2974         { "kind" : "IdRef",        "name" : "'Pipe'" },
 2975         { "kind" : "IdRef",        "name" : "'Packet Size'" },
 2976         { "kind" : "IdRef",        "name" : "'Packet Alignment'" }
 2977       ],
 2978       "capabilities" : [ "Pipes" ]
 2979     },
 2980     {
 2981       "opname" : "OpGetMaxPipePackets",
 2982       "class"  : "Pipe",
 2983       "opcode" : 284,
 2984       "operands" : [
 2985         { "kind" : "IdResultType" },
 2986         { "kind" : "IdResult" },
 2987         { "kind" : "IdRef",        "name" : "'Pipe'" },
 2988         { "kind" : "IdRef",        "name" : "'Packet Size'" },
 2989         { "kind" : "IdRef",        "name" : "'Packet Alignment'" }
 2990       ],
 2991       "capabilities" : [ "Pipes" ]
 2992     },
 2993     {
 2994       "opname" : "OpGroupReserveReadPipePackets",
 2995       "class"  : "Pipe",
 2996       "opcode" : 285,
 2997       "operands" : [
 2998         { "kind" : "IdResultType" },
 2999         { "kind" : "IdResult" },
 3000         { "kind" : "IdScope",      "name" : "'Execution'" },
 3001         { "kind" : "IdRef",        "name" : "'Pipe'" },
 3002         { "kind" : "IdRef",        "name" : "'Num Packets'" },
 3003         { "kind" : "IdRef",        "name" : "'Packet Size'" },
 3004         { "kind" : "IdRef",        "name" : "'Packet Alignment'" }
 3005       ],
 3006       "capabilities" : [ "Pipes" ]
 3007     },
 3008     {
 3009       "opname" : "OpGroupReserveWritePipePackets",
 3010       "class"  : "Pipe",
 3011       "opcode" : 286,
 3012       "operands" : [
 3013         { "kind" : "IdResultType" },
 3014         { "kind" : "IdResult" },
 3015         { "kind" : "IdScope",      "name" : "'Execution'" },
 3016         { "kind" : "IdRef",        "name" : "'Pipe'" },
 3017         { "kind" : "IdRef",        "name" : "'Num Packets'" },
 3018         { "kind" : "IdRef",        "name" : "'Packet Size'" },
 3019         { "kind" : "IdRef",        "name" : "'Packet Alignment'" }
 3020       ],
 3021       "capabilities" : [ "Pipes" ]
 3022     },
 3023     {
 3024       "opname" : "OpGroupCommitReadPipe",
 3025       "class"  : "Pipe",
 3026       "opcode" : 287,
 3027       "operands" : [
 3028         { "kind" : "IdScope", "name" : "'Execution'" },
 3029         { "kind" : "IdRef",   "name" : "'Pipe'" },
 3030         { "kind" : "IdRef",   "name" : "'Reserve Id'" },
 3031         { "kind" : "IdRef",   "name" : "'Packet Size'" },
 3032         { "kind" : "IdRef",   "name" : "'Packet Alignment'" }
 3033       ],
 3034       "capabilities" : [ "Pipes" ]
 3035     },
 3036     {
 3037       "opname" : "OpGroupCommitWritePipe",
 3038       "class"  : "Pipe",
 3039       "opcode" : 288,
 3040       "operands" : [
 3041         { "kind" : "IdScope", "name" : "'Execution'" },
 3042         { "kind" : "IdRef",   "name" : "'Pipe'" },
 3043         { "kind" : "IdRef",   "name" : "'Reserve Id'" },
 3044         { "kind" : "IdRef",   "name" : "'Packet Size'" },
 3045         { "kind" : "IdRef",   "name" : "'Packet Alignment'" }
 3046       ],
 3047       "capabilities" : [ "Pipes" ]
 3048     },
 3049     {
 3050       "opname" : "OpEnqueueMarker",
 3051       "class"  : "Device-Side_Enqueue",
 3052       "opcode" : 291,
 3053       "operands" : [
 3054         { "kind" : "IdResultType" },
 3055         { "kind" : "IdResult" },
 3056         { "kind" : "IdRef",        "name" : "'Queue'" },
 3057         { "kind" : "IdRef",        "name" : "'Num Events'" },
 3058         { "kind" : "IdRef",        "name" : "'Wait Events'" },
 3059         { "kind" : "IdRef",        "name" : "'Ret Event'" }
 3060       ],
 3061       "capabilities" : [ "DeviceEnqueue" ]
 3062     },
 3063     {
 3064       "opname" : "OpEnqueueKernel",
 3065       "class"  : "Device-Side_Enqueue",
 3066       "opcode" : 292,
 3067       "operands" : [
 3068         { "kind" : "IdResultType" },
 3069         { "kind" : "IdResult" },
 3070         { "kind" : "IdRef",                            "name" : "'Queue'" },
 3071         { "kind" : "IdRef",                            "name" : "'Flags'" },
 3072         { "kind" : "IdRef",                            "name" : "'ND Range'" },
 3073         { "kind" : "IdRef",                            "name" : "'Num Events'" },
 3074         { "kind" : "IdRef",                            "name" : "'Wait Events'" },
 3075         { "kind" : "IdRef",                            "name" : "'Ret Event'" },
 3076         { "kind" : "IdRef",                            "name" : "'Invoke'" },
 3077         { "kind" : "IdRef",                            "name" : "'Param'" },
 3078         { "kind" : "IdRef",                            "name" : "'Param Size'" },
 3079         { "kind" : "IdRef",                            "name" : "'Param Align'" },
 3080         { "kind" : "IdRef",        "quantifier" : "*", "name" : "'Local Size'" }
 3081       ],
 3082       "capabilities" : [ "DeviceEnqueue" ]
 3083     },
 3084     {
 3085       "opname" : "OpGetKernelNDrangeSubGroupCount",
 3086       "class"  : "Device-Side_Enqueue",
 3087       "opcode" : 293,
 3088       "operands" : [
 3089         { "kind" : "IdResultType" },
 3090         { "kind" : "IdResult" },
 3091         { "kind" : "IdRef",        "name" : "'ND Range'" },
 3092         { "kind" : "IdRef",        "name" : "'Invoke'" },
 3093         { "kind" : "IdRef",        "name" : "'Param'" },
 3094         { "kind" : "IdRef",        "name" : "'Param Size'" },
 3095         { "kind" : "IdRef",        "name" : "'Param Align'" }
 3096       ],
 3097       "capabilities" : [ "DeviceEnqueue" ]
 3098     },
 3099     {
 3100       "opname" : "OpGetKernelNDrangeMaxSubGroupSize",
 3101       "class"  : "Device-Side_Enqueue",
 3102       "opcode" : 294,
 3103       "operands" : [
 3104         { "kind" : "IdResultType" },
 3105         { "kind" : "IdResult" },
 3106         { "kind" : "IdRef",        "name" : "'ND Range'" },
 3107         { "kind" : "IdRef",        "name" : "'Invoke'" },
 3108         { "kind" : "IdRef",        "name" : "'Param'" },
 3109         { "kind" : "IdRef",        "name" : "'Param Size'" },
 3110         { "kind" : "IdRef",        "name" : "'Param Align'" }
 3111       ],
 3112       "capabilities" : [ "DeviceEnqueue" ]
 3113     },
 3114     {
 3115       "opname" : "OpGetKernelWorkGroupSize",
 3116       "class"  : "Device-Side_Enqueue",
 3117       "opcode" : 295,
 3118       "operands" : [
 3119         { "kind" : "IdResultType" },
 3120         { "kind" : "IdResult" },
 3121         { "kind" : "IdRef",        "name" : "'Invoke'" },
 3122         { "kind" : "IdRef",        "name" : "'Param'" },
 3123         { "kind" : "IdRef",        "name" : "'Param Size'" },
 3124         { "kind" : "IdRef",        "name" : "'Param Align'" }
 3125       ],
 3126       "capabilities" : [ "DeviceEnqueue" ]
 3127     },
 3128     {
 3129       "opname" : "OpGetKernelPreferredWorkGroupSizeMultiple",
 3130       "class"  : "Device-Side_Enqueue",
 3131       "opcode" : 296,
 3132       "operands" : [
 3133         { "kind" : "IdResultType" },
 3134         { "kind" : "IdResult" },
 3135         { "kind" : "IdRef",        "name" : "'Invoke'" },
 3136         { "kind" : "IdRef",        "name" : "'Param'" },
 3137         { "kind" : "IdRef",        "name" : "'Param Size'" },
 3138         { "kind" : "IdRef",        "name" : "'Param Align'" }
 3139       ],
 3140       "capabilities" : [ "DeviceEnqueue" ]
 3141     },
 3142     {
 3143       "opname" : "OpRetainEvent",
 3144       "class"  : "Device-Side_Enqueue",
 3145       "opcode" : 297,
 3146       "operands" : [
 3147         { "kind" : "IdRef", "name" : "'Event'" }
 3148       ],
 3149       "capabilities" : [ "DeviceEnqueue" ]
 3150     },
 3151     {
 3152       "opname" : "OpReleaseEvent",
 3153       "class"  : "Device-Side_Enqueue",
 3154       "opcode" : 298,
 3155       "operands" : [
 3156         { "kind" : "IdRef", "name" : "'Event'" }
 3157       ],
 3158       "capabilities" : [ "DeviceEnqueue" ]
 3159     },
 3160     {
 3161       "opname" : "OpCreateUserEvent",
 3162       "class"  : "Device-Side_Enqueue",
 3163       "opcode" : 299,
 3164       "operands" : [
 3165         { "kind" : "IdResultType" },
 3166         { "kind" : "IdResult" }
 3167       ],
 3168       "capabilities" : [ "DeviceEnqueue" ]
 3169     },
 3170     {
 3171       "opname" : "OpIsValidEvent",
 3172       "class"  : "Device-Side_Enqueue",
 3173       "opcode" : 300,
 3174       "operands" : [
 3175         { "kind" : "IdResultType" },
 3176         { "kind" : "IdResult" },
 3177         { "kind" : "IdRef",        "name" : "'Event'" }
 3178       ],
 3179       "capabilities" : [ "DeviceEnqueue" ]
 3180     },
 3181     {
 3182       "opname" : "OpSetUserEventStatus",
 3183       "class"  : "Device-Side_Enqueue",
 3184       "opcode" : 301,
 3185       "operands" : [
 3186         { "kind" : "IdRef", "name" : "'Event'" },
 3187         { "kind" : "IdRef", "name" : "'Status'" }
 3188       ],
 3189       "capabilities" : [ "DeviceEnqueue" ]
 3190     },
 3191     {
 3192       "opname" : "OpCaptureEventProfilingInfo",
 3193       "class"  : "Device-Side_Enqueue",
 3194       "opcode" : 302,
 3195       "operands" : [
 3196         { "kind" : "IdRef", "name" : "'Event'" },
 3197         { "kind" : "IdRef", "name" : "'Profiling Info'" },
 3198         { "kind" : "IdRef", "name" : "'Value'" }
 3199       ],
 3200       "capabilities" : [ "DeviceEnqueue" ]
 3201     },
 3202     {
 3203       "opname" : "OpGetDefaultQueue",
 3204       "class"  : "Device-Side_Enqueue",
 3205       "opcode" : 303,
 3206       "operands" : [
 3207         { "kind" : "IdResultType" },
 3208         { "kind" : "IdResult" }
 3209       ],
 3210       "capabilities" : [ "DeviceEnqueue" ]
 3211     },
 3212     {
 3213       "opname" : "OpBuildNDRange",
 3214       "class"  : "Device-Side_Enqueue",
 3215       "opcode" : 304,
 3216       "operands" : [
 3217         { "kind" : "IdResultType" },
 3218         { "kind" : "IdResult" },
 3219         { "kind" : "IdRef",        "name" : "'GlobalWorkSize'" },
 3220         { "kind" : "IdRef",        "name" : "'LocalWorkSize'" },
 3221         { "kind" : "IdRef",        "name" : "'GlobalWorkOffset'" }
 3222       ],
 3223       "capabilities" : [ "DeviceEnqueue" ]
 3224     },
 3225     {
 3226       "opname" : "OpImageSparseSampleImplicitLod",
 3227       "class"  : "Image",
 3228       "opcode" : 305,
 3229       "operands" : [
 3230         { "kind" : "IdResultType" },
 3231         { "kind" : "IdResult" },
 3232         { "kind" : "IdRef",                             "name" : "'Sampled Image'" },
 3233         { "kind" : "IdRef",                             "name" : "'Coordinate'" },
 3234         { "kind" : "ImageOperands", "quantifier" : "?" }
 3235       ],
 3236       "capabilities" : [ "SparseResidency" ]
 3237     },
 3238     {
 3239       "opname" : "OpImageSparseSampleExplicitLod",
 3240       "class"  : "Image",
 3241       "opcode" : 306,
 3242       "operands" : [
 3243         { "kind" : "IdResultType" },
 3244         { "kind" : "IdResult" },
 3245         { "kind" : "IdRef",         "name" : "'Sampled Image'" },
 3246         { "kind" : "IdRef",         "name" : "'Coordinate'" },
 3247         { "kind" : "ImageOperands" }
 3248       ],
 3249       "capabilities" : [ "SparseResidency" ]
 3250     },
 3251     {
 3252       "opname" : "OpImageSparseSampleDrefImplicitLod",
 3253       "class"  : "Image",
 3254       "opcode" : 307,
 3255       "operands" : [
 3256         { "kind" : "IdResultType" },
 3257         { "kind" : "IdResult" },
 3258         { "kind" : "IdRef",                             "name" : "'Sampled Image'" },
 3259         { "kind" : "IdRef",                             "name" : "'Coordinate'" },
 3260         { "kind" : "IdRef",                             "name" : "'D~ref~'" },
 3261         { "kind" : "ImageOperands", "quantifier" : "?" }
 3262       ],
 3263       "capabilities" : [ "SparseResidency" ]
 3264     },
 3265     {
 3266       "opname" : "OpImageSparseSampleDrefExplicitLod",
 3267       "class"  : "Image",
 3268       "opcode" : 308,
 3269       "operands" : [
 3270         { "kind" : "IdResultType" },
 3271         { "kind" : "IdResult" },
 3272         { "kind" : "IdRef",         "name" : "'Sampled Image'" },
 3273         { "kind" : "IdRef",         "name" : "'Coordinate'" },
 3274         { "kind" : "IdRef",         "name" : "'D~ref~'" },
 3275         { "kind" : "ImageOperands" }
 3276       ],
 3277       "capabilities" : [ "SparseResidency" ]
 3278     },
 3279     {
 3280       "opname" : "OpImageSparseSampleProjImplicitLod",
 3281       "class"  : "Image",
 3282       "opcode" : 309,
 3283       "operands" : [
 3284         { "kind" : "IdResultType" },
 3285         { "kind" : "IdResult" },
 3286         { "kind" : "IdRef",                             "name" : "'Sampled Image'" },
 3287         { "kind" : "IdRef",                             "name" : "'Coordinate'" },
 3288         { "kind" : "ImageOperands", "quantifier" : "?" }
 3289       ],
 3290       "capabilities" : [ "SparseResidency" ],
 3291       "version" : "None"
 3292     },
 3293     {
 3294       "opname" : "OpImageSparseSampleProjExplicitLod",
 3295       "class"  : "Image",
 3296       "opcode" : 310,
 3297       "operands" : [
 3298         { "kind" : "IdResultType" },
 3299         { "kind" : "IdResult" },
 3300         { "kind" : "IdRef",         "name" : "'Sampled Image'" },
 3301         { "kind" : "IdRef",         "name" : "'Coordinate'" },
 3302         { "kind" : "ImageOperands" }
 3303       ],
 3304       "capabilities" : [ "SparseResidency" ],
 3305       "version" : "None"
 3306     },
 3307     {
 3308       "opname" : "OpImageSparseSampleProjDrefImplicitLod",
 3309       "class"  : "Image",
 3310       "opcode" : 311,
 3311       "operands" : [
 3312         { "kind" : "IdResultType" },
 3313         { "kind" : "IdResult" },
 3314         { "kind" : "IdRef",                             "name" : "'Sampled Image'" },
 3315         { "kind" : "IdRef",                             "name" : "'Coordinate'" },
 3316         { "kind" : "IdRef",                             "name" : "'D~ref~'" },
 3317         { "kind" : "ImageOperands", "quantifier" : "?" }
 3318       ],
 3319       "capabilities" : [ "SparseResidency" ],
 3320       "version" : "None"
 3321     },
 3322     {
 3323       "opname" : "OpImageSparseSampleProjDrefExplicitLod",
 3324       "class"  : "Image",
 3325       "opcode" : 312,
 3326       "operands" : [
 3327         { "kind" : "IdResultType" },
 3328         { "kind" : "IdResult" },
 3329         { "kind" : "IdRef",         "name" : "'Sampled Image'" },
 3330         { "kind" : "IdRef",         "name" : "'Coordinate'" },
 3331         { "kind" : "IdRef",         "name" : "'D~ref~'" },
 3332         { "kind" : "ImageOperands" }
 3333       ],
 3334       "capabilities" : [ "SparseResidency" ],
 3335       "version" : "None"
 3336     },
 3337     {
 3338       "opname" : "OpImageSparseFetch",
 3339       "class"  : "Image",
 3340       "opcode" : 313,
 3341       "operands" : [
 3342         { "kind" : "IdResultType" },
 3343         { "kind" : "IdResult" },
 3344         { "kind" : "IdRef",                             "name" : "'Image'" },
 3345         { "kind" : "IdRef",                             "name" : "'Coordinate'" },
 3346         { "kind" : "ImageOperands", "quantifier" : "?" }
 3347       ],
 3348       "capabilities" : [ "SparseResidency" ]
 3349     },
 3350     {
 3351       "opname" : "OpImageSparseGather",
 3352       "class"  : "Image",
 3353       "opcode" : 314,
 3354       "operands" : [
 3355         { "kind" : "IdResultType" },
 3356         { "kind" : "IdResult" },
 3357         { "kind" : "IdRef",                             "name" : "'Sampled Image'" },
 3358         { "kind" : "IdRef",                             "name" : "'Coordinate'" },
 3359         { "kind" : "IdRef",                             "name" : "'Component'" },
 3360         { "kind" : "ImageOperands", "quantifier" : "?" }
 3361       ],
 3362       "capabilities" : [ "SparseResidency" ]
 3363     },
 3364     {
 3365       "opname" : "OpImageSparseDrefGather",
 3366       "class"  : "Image",
 3367       "opcode" : 315,
 3368       "operands" : [
 3369         { "kind" : "IdResultType" },
 3370         { "kind" : "IdResult" },
 3371         { "kind" : "IdRef",                             "name" : "'Sampled Image'" },
 3372         { "kind" : "IdRef",                             "name" : "'Coordinate'" },
 3373         { "kind" : "IdRef",                             "name" : "'D~ref~'" },
 3374         { "kind" : "ImageOperands", "quantifier" : "?" }
 3375       ],
 3376       "capabilities" : [ "SparseResidency" ]
 3377     },
 3378     {
 3379       "opname" : "OpImageSparseTexelsResident",
 3380       "class"  : "Image",
 3381       "opcode" : 316,
 3382       "operands" : [
 3383         { "kind" : "IdResultType" },
 3384         { "kind" : "IdResult" },
 3385         { "kind" : "IdRef",        "name" : "'Resident Code'" }
 3386       ],
 3387       "capabilities" : [ "SparseResidency" ]
 3388     },
 3389     {
 3390       "opname" : "OpNoLine",
 3391       "class"  : "Debug",
 3392       "opcode" : 317
 3393     },
 3394     {
 3395       "opname" : "OpAtomicFlagTestAndSet",
 3396       "class"  : "Atomic",
 3397       "opcode" : 318,
 3398       "operands" : [
 3399         { "kind" : "IdResultType" },
 3400         { "kind" : "IdResult" },
 3401         { "kind" : "IdRef",             "name" : "'Pointer'" },
 3402         { "kind" : "IdScope",           "name" : "'Memory'" },
 3403         { "kind" : "IdMemorySemantics", "name" : "'Semantics'" }
 3404       ],
 3405       "capabilities" : [ "Kernel" ]
 3406     },
 3407     {
 3408       "opname" : "OpAtomicFlagClear",
 3409       "class"  : "Atomic",
 3410       "opcode" : 319,
 3411       "operands" : [
 3412         { "kind" : "IdRef",             "name" : "'Pointer'" },
 3413         { "kind" : "IdScope",           "name" : "'Memory'" },
 3414         { "kind" : "IdMemorySemantics", "name" : "'Semantics'" }
 3415       ],
 3416       "capabilities" : [ "Kernel" ]
 3417     },
 3418     {
 3419       "opname" : "OpImageSparseRead",
 3420       "class"  : "Image",
 3421       "opcode" : 320,
 3422       "operands" : [
 3423         { "kind" : "IdResultType" },
 3424         { "kind" : "IdResult" },
 3425         { "kind" : "IdRef",                             "name" : "'Image'" },
 3426         { "kind" : "IdRef",                             "name" : "'Coordinate'" },
 3427         { "kind" : "ImageOperands", "quantifier" : "?" }
 3428       ],
 3429       "capabilities" : [ "SparseResidency" ]
 3430     },
 3431     {
 3432       "opname" : "OpSizeOf",
 3433       "class"  : "Miscellaneous",
 3434       "opcode" : 321,
 3435       "operands" : [
 3436         { "kind" : "IdResultType" },
 3437         { "kind" : "IdResult" },
 3438         { "kind" : "IdRef", "name" : "'Pointer'" }
 3439       ],
 3440       "capabilities" : [ "Addresses" ],
 3441       "version" : "1.1"
 3442     },
 3443     {
 3444       "opname" : "OpTypePipeStorage",
 3445       "class"  : "Type-Declaration",
 3446       "opcode" : 322,
 3447       "operands" : [
 3448         { "kind" : "IdResult" }
 3449       ],
 3450       "capabilities" : [ "PipeStorage" ],
 3451       "version" : "1.1"
 3452     },
 3453     {
 3454       "opname" : "OpConstantPipeStorage",
 3455       "class"  : "Pipe",
 3456       "opcode" : 323,
 3457       "operands" : [
 3458         { "kind" : "IdResultType" },
 3459         { "kind" : "IdResult" },
 3460         { "kind" : "LiteralInteger", "name" : "'Packet Size'" },
 3461         { "kind" : "LiteralInteger", "name" : "'Packet Alignment'" },
 3462         { "kind" : "LiteralInteger", "name" : "'Capacity'" }
 3463       ],
 3464       "capabilities" : [ "PipeStorage" ],
 3465       "version" : "1.1"
 3466     },
 3467     {
 3468       "opname" : "OpCreatePipeFromPipeStorage",
 3469       "class"  : "Pipe",
 3470       "opcode" : 324,
 3471       "operands" : [
 3472         { "kind" : "IdResultType" },
 3473         { "kind" : "IdResult" },
 3474         { "kind" : "IdRef", "name" : "'Pipe Storage'" }
 3475       ],
 3476       "capabilities" : [ "PipeStorage" ],
 3477       "version" : "1.1"
 3478     },
 3479     {
 3480       "opname" : "OpGetKernelLocalSizeForSubgroupCount",
 3481       "class"  : "Device-Side_Enqueue",
 3482       "opcode" : 325,
 3483       "operands" : [
 3484         { "kind" : "IdResultType" },
 3485         { "kind" : "IdResult" },
 3486         { "kind" : "IdRef", "name" : "'Subgroup Count'" },
 3487         { "kind" : "IdRef", "name" : "'Invoke'" },
 3488         { "kind" : "IdRef", "name" : "'Param'" },
 3489         { "kind" : "IdRef", "name" : "'Param Size'" },
 3490         { "kind" : "IdRef", "name" : "'Param Align'" }
 3491       ],
 3492       "capabilities" : [ "SubgroupDispatch" ],
 3493       "version" : "1.1"
 3494     },
 3495     {
 3496       "opname" : "OpGetKernelMaxNumSubgroups",
 3497       "class"  : "Device-Side_Enqueue",
 3498       "opcode" : 326,
 3499       "operands" : [
 3500         { "kind" : "IdResultType" },
 3501         { "kind" : "IdResult" },
 3502         { "kind" : "IdRef", "name" : "'Invoke'" },
 3503         { "kind" : "IdRef", "name" : "'Param'" },
 3504         { "kind" : "IdRef", "name" : "'Param Size'" },
 3505         { "kind" : "IdRef", "name" : "'Param Align'" }
 3506       ],
 3507       "capabilities" : [ "SubgroupDispatch" ],
 3508       "version" : "1.1"
 3509     },
 3510     {
 3511       "opname" : "OpTypeNamedBarrier",
 3512       "class"  : "Type-Declaration",
 3513       "opcode" : 327,
 3514       "operands" : [
 3515         { "kind" : "IdResult" }
 3516       ],
 3517       "capabilities" : [ "NamedBarrier" ],
 3518       "version" : "1.1"
 3519     },
 3520     {
 3521       "opname" : "OpNamedBarrierInitialize",
 3522       "class"  : "Barrier",
 3523       "opcode" : 328,
 3524       "operands" : [
 3525         { "kind" : "IdResultType" },
 3526         { "kind" : "IdResult" },
 3527         { "kind" : "IdRef", "name" : "'Subgroup Count'" }
 3528       ],
 3529       "capabilities" : [ "NamedBarrier" ],
 3530       "version" : "1.1"
 3531     },
 3532     {
 3533       "opname" : "OpMemoryNamedBarrier",
 3534       "class"  : "Barrier",
 3535       "opcode" : 329,
 3536       "operands" : [
 3537         { "kind" : "IdRef", "name" : "'Named Barrier'" },
 3538         { "kind" : "IdScope", "name" : "'Memory'" },
 3539         { "kind" : "IdMemorySemantics", "name" : "'Semantics'" }
 3540       ],
 3541       "capabilities" : [ "NamedBarrier" ],
 3542       "version" : "1.1"
 3543     },
 3544     {
 3545       "opname" : "OpModuleProcessed",
 3546       "class"  : "Debug",
 3547       "opcode" : 330,
 3548       "operands" : [
 3549         { "kind" : "LiteralString", "name" : "'Process'" }
 3550       ],
 3551       "version" : "1.1"
 3552     },
 3553     {
 3554       "opname" : "OpExecutionModeId",
 3555       "class"  : "Mode-Setting",
 3556       "opcode" : 331,
 3557       "operands" : [
 3558         { "kind" : "IdRef", "name" : "'Entry Point'" },
 3559         { "kind" : "ExecutionMode", "name" : "'Mode'" }
 3560       ],
 3561       "version" : "1.2"
 3562     },
 3563     {
 3564       "opname" : "OpDecorateId",
 3565       "class"  : "Annotation",
 3566       "opcode" : 332,
 3567       "operands" : [
 3568         { "kind" : "IdRef", "name" : "'Target'" },
 3569         { "kind" : "Decoration" }
 3570       ],
 3571       "extensions" : [ "SPV_GOOGLE_hlsl_functionality1" ],
 3572       "version" : "1.2"
 3573     },
 3574     {
 3575       "opname" : "OpGroupNonUniformElect",
 3576       "class"  : "Non-Uniform",
 3577       "opcode" : 333,
 3578       "operands" : [
 3579         { "kind" : "IdResultType" },
 3580         { "kind" : "IdResult" },
 3581         { "kind" : "IdScope", "name" : "'Execution'" }
 3582       ],
 3583       "capabilities" : [ "GroupNonUniform" ],
 3584       "version" : "1.3"
 3585     },
 3586     {
 3587       "opname" : "OpGroupNonUniformAll",
 3588       "class"  : "Non-Uniform",
 3589       "opcode" : 334,
 3590       "operands" : [
 3591         { "kind" : "IdResultType" },
 3592         { "kind" : "IdResult" },
 3593         { "kind" : "IdScope", "name" : "'Execution'" },
 3594         { "kind" : "IdRef", "name" : "'Predicate'" }
 3595       ],
 3596       "capabilities" : [ "GroupNonUniformVote" ],
 3597       "version" : "1.3"
 3598     },
 3599     {
 3600       "opname" : "OpGroupNonUniformAny",
 3601       "class"  : "Non-Uniform",
 3602       "opcode" : 335,
 3603       "operands" : [
 3604         { "kind" : "IdResultType" },
 3605         { "kind" : "IdResult" },
 3606         { "kind" : "IdScope", "name" : "'Execution'" },
 3607         { "kind" : "IdRef", "name" : "'Predicate'" }
 3608       ],
 3609       "capabilities" : [ "GroupNonUniformVote" ],
 3610       "version" : "1.3"
 3611     },
 3612     {
 3613       "opname" : "OpGroupNonUniformAllEqual",
 3614       "class"  : "Non-Uniform",
 3615       "opcode" : 336,
 3616       "operands" : [
 3617         { "kind" : "IdResultType" },
 3618         { "kind" : "IdResult" },
 3619         { "kind" : "IdScope", "name" : "'Execution'" },
 3620         { "kind" : "IdRef", "name" : "'Value'" }
 3621       ],
 3622       "capabilities" : [ "GroupNonUniformVote" ],
 3623       "version" : "1.3"
 3624     },
 3625     {
 3626       "opname" : "OpGroupNonUniformBroadcast",
 3627       "class"  : "Non-Uniform",
 3628       "opcode" : 337,
 3629       "operands" : [
 3630         { "kind" : "IdResultType" },
 3631         { "kind" : "IdResult" },
 3632         { "kind" : "IdScope", "name" : "'Execution'" },
 3633         { "kind" : "IdRef", "name" : "'Value'" },
 3634         { "kind" : "IdRef", "name" : "'Id'" }
 3635       ],
 3636       "capabilities" : [ "GroupNonUniformBallot" ],
 3637       "version" : "1.3"
 3638     },
 3639     {
 3640       "opname" : "OpGroupNonUniformBroadcastFirst",
 3641       "class"  : "Non-Uniform",
 3642       "opcode" : 338,
 3643       "operands" : [
 3644         { "kind" : "IdResultType" },
 3645         { "kind" : "IdResult" },
 3646         { "kind" : "IdScope", "name" : "'Execution'" },
 3647         { "kind" : "IdRef", "name" : "'Value'" }
 3648       ],
 3649       "capabilities" : [ "GroupNonUniformBallot" ],
 3650       "version" : "1.3"
 3651     },
 3652     {
 3653       "opname" : "OpGroupNonUniformBallot",
 3654       "class"  : "Non-Uniform",
 3655       "opcode" : 339,
 3656       "operands" : [
 3657         { "kind" : "IdResultType" },
 3658         { "kind" : "IdResult" },
 3659         { "kind" : "IdScope", "name" : "'Execution'" },
 3660         { "kind" : "IdRef", "name" : "'Predicate'" }
 3661       ],
 3662       "capabilities" : [ "GroupNonUniformBallot" ],
 3663       "version" : "1.3"
 3664     },
 3665     {
 3666       "opname" : "OpGroupNonUniformInverseBallot",
 3667       "class"  : "Non-Uniform",
 3668       "opcode" : 340,
 3669       "operands" : [
 3670         { "kind" : "IdResultType" },
 3671         { "kind" : "IdResult" },
 3672         { "kind" : "IdScope", "name" : "'Execution'" },
 3673         { "kind" : "IdRef", "name" : "'Value'" }
 3674       ],
 3675       "capabilities" : [ "GroupNonUniformBallot" ],
 3676       "version" : "1.3"
 3677     },
 3678     {
 3679       "opname" : "OpGroupNonUniformBallotBitExtract",
 3680       "class"  : "Non-Uniform",
 3681       "opcode" : 341,
 3682       "operands" : [
 3683         { "kind" : "IdResultType" },
 3684         { "kind" : "IdResult" },
 3685         { "kind" : "IdScope", "name" : "'Execution'" },
 3686         { "kind" : "IdRef", "name" : "'Value'" },
 3687         { "kind" : "IdRef", "name" : "'Index'" }
 3688       ],
 3689       "capabilities" : [ "GroupNonUniformBallot" ],
 3690       "version" : "1.3"
 3691     },
 3692     {
 3693       "opname" : "OpGroupNonUniformBallotBitCount",
 3694       "class"  : "Non-Uniform",
 3695       "opcode" : 342,
 3696       "operands" : [
 3697         { "kind" : "IdResultType" },
 3698         { "kind" : "IdResult" },
 3699         { "kind" : "IdScope", "name" : "'Execution'" },
 3700         { "kind" : "GroupOperation", "name" : "'Operation'" },
 3701         { "kind" : "IdRef", "name" : "'Value'" }
 3702       ],
 3703       "capabilities" : [ "GroupNonUniformBallot" ],
 3704       "version" : "1.3"
 3705     },
 3706     {
 3707       "opname" : "OpGroupNonUniformBallotFindLSB",
 3708       "class"  : "Non-Uniform",
 3709       "opcode" : 343,
 3710       "operands" : [
 3711         { "kind" : "IdResultType" },
 3712         { "kind" : "IdResult" },
 3713         { "kind" : "IdScope", "name" : "'Execution'" },
 3714         { "kind" : "IdRef", "name" : "'Value'" }
 3715       ],
 3716       "capabilities" : [ "GroupNonUniformBallot" ],
 3717       "version" : "1.3"
 3718     },
 3719     {
 3720       "opname" : "OpGroupNonUniformBallotFindMSB",
 3721       "class"  : "Non-Uniform",
 3722       "opcode" : 344,
 3723       "operands" : [
 3724         { "kind" : "IdResultType" },
 3725         { "kind" : "IdResult" },
 3726         { "kind" : "IdScope", "name" : "'Execution'" },
 3727         { "kind" : "IdRef", "name" : "'Value'" }
 3728       ],
 3729       "capabilities" : [ "GroupNonUniformBallot" ],
 3730       "version" : "1.3"
 3731     },
 3732     {
 3733       "opname" : "OpGroupNonUniformShuffle",
 3734       "class"  : "Non-Uniform",
 3735       "opcode" : 345,
 3736       "operands" : [
 3737         { "kind" : "IdResultType" },
 3738         { "kind" : "IdResult" },
 3739         { "kind" : "IdScope", "name" : "'Execution'" },
 3740         { "kind" : "IdRef", "name" : "'Value'" },
 3741         { "kind" : "IdRef", "name" : "'Id'" }
 3742       ],
 3743       "capabilities" : [ "GroupNonUniformShuffle" ],
 3744       "version" : "1.3"
 3745     },
 3746     {
 3747       "opname" : "OpGroupNonUniformShuffleXor",
 3748       "class"  : "Non-Uniform",
 3749       "opcode" : 346,
 3750       "operands" : [
 3751         { "kind" : "IdResultType" },
 3752         { "kind" : "IdResult" },
 3753         { "kind" : "IdScope", "name" : "'Execution'" },
 3754         { "kind" : "IdRef", "name" : "'Value'" },
 3755         { "kind" : "IdRef", "name" : "'Mask'" }
 3756       ],
 3757       "capabilities" : [ "GroupNonUniformShuffle" ],
 3758       "version" : "1.3"
 3759     },
 3760     {
 3761       "opname" : "OpGroupNonUniformShuffleUp",
 3762       "class"  : "Non-Uniform",
 3763       "opcode" : 347,
 3764       "operands" : [
 3765         { "kind" : "IdResultType" },
 3766         { "kind" : "IdResult" },
 3767         { "kind" : "IdScope", "name" : "'Execution'" },
 3768         { "kind" : "IdRef", "name" : "'Value'" },
 3769         { "kind" : "IdRef", "name" : "'Delta'" }
 3770       ],
 3771       "capabilities" : [ "GroupNonUniformShuffleRelative" ],
 3772       "version" : "1.3"
 3773     },
 3774     {
 3775       "opname" : "OpGroupNonUniformShuffleDown",
 3776       "class"  : "Non-Uniform",
 3777       "opcode" : 348,
 3778       "operands" : [
 3779         { "kind" : "IdResultType" },
 3780         { "kind" : "IdResult" },
 3781         { "kind" : "IdScope", "name" : "'Execution'" },
 3782         { "kind" : "IdRef", "name" : "'Value'" },
 3783         { "kind" : "IdRef", "name" : "'Delta'" }
 3784       ],
 3785       "capabilities" : [ "GroupNonUniformShuffleRelative" ],
 3786       "version" : "1.3"
 3787     },
 3788     {
 3789       "opname" : "OpGroupNonUniformIAdd",
 3790       "class"  : "Non-Uniform",
 3791       "opcode" : 349,
 3792       "operands" : [
 3793         { "kind" : "IdResultType" },
 3794         { "kind" : "IdResult" },
 3795         { "kind" : "IdScope", "name" : "'Execution'" },
 3796         { "kind" : "GroupOperation", "name" : "'Operation'" },
 3797         { "kind" : "IdRef", "name" : "'Value'" },
 3798         { "kind" : "IdRef", "name" : "'ClusterSize'", "quantifier" : "?" }
 3799       ],
 3800       "capabilities" : [ "GroupNonUniformArithmetic", "GroupNonUniformClustered", "GroupNonUniformPartitionedNV" ],
 3801       "version" : "1.3"
 3802     },
 3803     {
 3804       "opname" : "OpGroupNonUniformFAdd",
 3805       "class"  : "Non-Uniform",
 3806       "opcode" : 350,
 3807       "operands" : [
 3808         { "kind" : "IdResultType" },
 3809         { "kind" : "IdResult" },
 3810         { "kind" : "IdScope", "name" : "'Execution'" },
 3811         { "kind" : "GroupOperation", "name" : "'Operation'" },
 3812         { "kind" : "IdRef", "name" : "'Value'" },
 3813         { "kind" : "IdRef", "name" : "'ClusterSize'", "quantifier" : "?" }
 3814       ],
 3815       "capabilities" : [ "GroupNonUniformArithmetic", "GroupNonUniformClustered", "GroupNonUniformPartitionedNV" ],
 3816       "version" : "1.3"
 3817     },
 3818     {
 3819       "opname" : "OpGroupNonUniformIMul",
 3820       "class"  : "Non-Uniform",
 3821       "opcode" : 351,
 3822       "operands" : [
 3823         { "kind" : "IdResultType" },
 3824         { "kind" : "IdResult" },
 3825         { "kind" : "IdScope", "name" : "'Execution'" },
 3826         { "kind" : "GroupOperation", "name" : "'Operation'" },
 3827         { "kind" : "IdRef", "name" : "'Value'" },
 3828         { "kind" : "IdRef", "name" : "'ClusterSize'", "quantifier" : "?" }
 3829       ],
 3830       "capabilities" : [ "GroupNonUniformArithmetic", "GroupNonUniformClustered", "GroupNonUniformPartitionedNV" ],
 3831       "version" : "1.3"
 3832     },
 3833     {
 3834       "opname" : "OpGroupNonUniformFMul",
 3835       "class"  : "Non-Uniform",
 3836       "opcode" : 352,
 3837       "operands" : [
 3838         { "kind" : "IdResultType" },
 3839         { "kind" : "IdResult" },
 3840         { "kind" : "IdScope", "name" : "'Execution'" },
 3841         { "kind" : "GroupOperation", "name" : "'Operation'" },
 3842         { "kind" : "IdRef", "name" : "'Value'" },
 3843         { "kind" : "IdRef", "name" : "'ClusterSize'", "quantifier" : "?" }
 3844       ],
 3845       "capabilities" : [ "GroupNonUniformArithmetic", "GroupNonUniformClustered", "GroupNonUniformPartitionedNV" ],
 3846       "version" : "1.3"
 3847     },
 3848     {
 3849       "opname" : "OpGroupNonUniformSMin",
 3850       "class"  : "Non-Uniform",
 3851       "opcode" : 353,
 3852       "operands" : [
 3853         { "kind" : "IdResultType" },
 3854         { "kind" : "IdResult" },
 3855         { "kind" : "IdScope", "name" : "'Execution'" },
 3856         { "kind" : "GroupOperation", "name" : "'Operation'" },
 3857         { "kind" : "IdRef", "name" : "'Value'" },
 3858         { "kind" : "IdRef", "name" : "'ClusterSize'", "quantifier" : "?" }
 3859       ],
 3860       "capabilities" : [ "GroupNonUniformArithmetic", "GroupNonUniformClustered", "GroupNonUniformPartitionedNV" ],
 3861       "version" : "1.3"
 3862     },
 3863     {
 3864       "opname" : "OpGroupNonUniformUMin",
 3865       "class"  : "Non-Uniform",
 3866       "opcode" : 354,
 3867       "operands" : [
 3868         { "kind" : "IdResultType" },
 3869         { "kind" : "IdResult" },
 3870         { "kind" : "IdScope", "name" : "'Execution'" },
 3871         { "kind" : "GroupOperation", "name" : "'Operation'" },
 3872         { "kind" : "IdRef", "name" : "'Value'" },
 3873         { "kind" : "IdRef", "name" : "'ClusterSize'", "quantifier" : "?" }
 3874       ],
 3875       "capabilities" : [ "GroupNonUniformArithmetic", "GroupNonUniformClustered", "GroupNonUniformPartitionedNV" ],
 3876       "version" : "1.3"
 3877     },
 3878     {
 3879       "opname" : "OpGroupNonUniformFMin",
 3880       "class"  : "Non-Uniform",
 3881       "opcode" : 355,
 3882       "operands" : [
 3883         { "kind" : "IdResultType" },
 3884         { "kind" : "IdResult" },
 3885         { "kind" : "IdScope", "name" : "'Execution'" },
 3886         { "kind" : "GroupOperation", "name" : "'Operation'" },
 3887         { "kind" : "IdRef", "name" : "'Value'" },
 3888         { "kind" : "IdRef", "name" : "'ClusterSize'", "quantifier" : "?" }
 3889       ],
 3890       "capabilities" : [ "GroupNonUniformArithmetic", "GroupNonUniformClustered", "GroupNonUniformPartitionedNV" ],
 3891       "version" : "1.3"
 3892     },
 3893     {
 3894       "opname" : "OpGroupNonUniformSMax",
 3895       "class"  : "Non-Uniform",
 3896       "opcode" : 356,
 3897       "operands" : [
 3898         { "kind" : "IdResultType" },
 3899         { "kind" : "IdResult" },
 3900         { "kind" : "IdScope", "name" : "'Execution'" },
 3901         { "kind" : "GroupOperation", "name" : "'Operation'" },
 3902         { "kind" : "IdRef", "name" : "'Value'" },
 3903         { "kind" : "IdRef", "name" : "'ClusterSize'", "quantifier" : "?" }
 3904       ],
 3905       "capabilities" : [ "GroupNonUniformArithmetic", "GroupNonUniformClustered", "GroupNonUniformPartitionedNV" ],
 3906       "version" : "1.3"
 3907     },
 3908     {
 3909       "opname" : "OpGroupNonUniformUMax",
 3910       "class"  : "Non-Uniform",
 3911       "opcode" : 357,
 3912       "operands" : [
 3913         { "kind" : "IdResultType" },
 3914         { "kind" : "IdResult" },
 3915         { "kind" : "IdScope", "name" : "'Execution'" },
 3916         { "kind" : "GroupOperation", "name" : "'Operation'" },
 3917         { "kind" : "IdRef", "name" : "'Value'" },
 3918         { "kind" : "IdRef", "name" : "'ClusterSize'", "quantifier" : "?" }
 3919       ],
 3920       "capabilities" : [ "GroupNonUniformArithmetic", "GroupNonUniformClustered", "GroupNonUniformPartitionedNV" ],
 3921       "version" : "1.3"
 3922     },
 3923     {
 3924       "opname" : "OpGroupNonUniformFMax",
 3925       "class"  : "Non-Uniform",
 3926       "opcode" : 358,
 3927       "operands" : [
 3928         { "kind" : "IdResultType" },
 3929         { "kind" : "IdResult" },
 3930         { "kind" : "IdScope", "name" : "'Execution'" },
 3931         { "kind" : "GroupOperation", "name" : "'Operation'" },
 3932         { "kind" : "IdRef", "name" : "'Value'" },
 3933         { "kind" : "IdRef", "name" : "'ClusterSize'", "quantifier" : "?" }
 3934       ],
 3935       "capabilities" : [ "GroupNonUniformArithmetic", "GroupNonUniformClustered", "GroupNonUniformPartitionedNV" ],
 3936       "version" : "1.3"
 3937     },
 3938     {
 3939       "opname" : "OpGroupNonUniformBitwiseAnd",
 3940       "class"  : "Non-Uniform",
 3941       "opcode" : 359,
 3942       "operands" : [
 3943         { "kind" : "IdResultType" },
 3944         { "kind" : "IdResult" },
 3945         { "kind" : "IdScope", "name" : "'Execution'" },
 3946         { "kind" : "GroupOperation", "name" : "'Operation'" },
 3947         { "kind" : "IdRef", "name" : "'Value'" },
 3948         { "kind" : "IdRef", "name" : "'ClusterSize'", "quantifier" : "?" }
 3949       ],
 3950       "capabilities" : [ "GroupNonUniformArithmetic", "GroupNonUniformClustered", "GroupNonUniformPartitionedNV" ],
 3951       "version" : "1.3"
 3952     },
 3953     {
 3954       "opname" : "OpGroupNonUniformBitwiseOr",
 3955       "class"  : "Non-Uniform",
 3956       "opcode" : 360,
 3957       "operands" : [
 3958         { "kind" : "IdResultType" },
 3959         { "kind" : "IdResult" },
 3960         { "kind" : "IdScope", "name" : "'Execution'" },
 3961         { "kind" : "GroupOperation", "name" : "'Operation'" },
 3962         { "kind" : "IdRef", "name" : "'Value'" },
 3963         { "kind" : "IdRef", "name" : "'ClusterSize'", "quantifier" : "?" }
 3964       ],
 3965       "capabilities" : [ "GroupNonUniformArithmetic", "GroupNonUniformClustered", "GroupNonUniformPartitionedNV" ],
 3966       "version" : "1.3"
 3967     },
 3968     {
 3969       "opname" : "OpGroupNonUniformBitwiseXor",
 3970       "class"  : "Non-Uniform",
 3971       "opcode" : 361,
 3972       "operands" : [
 3973         { "kind" : "IdResultType" },
 3974         { "kind" : "IdResult" },
 3975         { "kind" : "IdScope", "name" : "'Execution'" },
 3976         { "kind" : "GroupOperation", "name" : "'Operation'" },
 3977         { "kind" : "IdRef", "name" : "'Value'" },
 3978         { "kind" : "IdRef", "name" : "'ClusterSize'", "quantifier" : "?" }
 3979       ],
 3980       "capabilities" : [ "GroupNonUniformArithmetic", "GroupNonUniformClustered", "GroupNonUniformPartitionedNV" ],
 3981       "version" : "1.3"
 3982     },
 3983     {
 3984       "opname" : "OpGroupNonUniformLogicalAnd",
 3985       "class"  : "Non-Uniform",
 3986       "opcode" : 362,
 3987       "operands" : [
 3988         { "kind" : "IdResultType" },
 3989         { "kind" : "IdResult" },
 3990         { "kind" : "IdScope", "name" : "'Execution'" },
 3991         { "kind" : "GroupOperation", "name" : "'Operation'" },
 3992         { "kind" : "IdRef", "name" : "'Value'" },
 3993         { "kind" : "IdRef", "name" : "'ClusterSize'", "quantifier" : "?" }
 3994       ],
 3995       "capabilities" : [ "GroupNonUniformArithmetic", "GroupNonUniformClustered", "GroupNonUniformPartitionedNV" ],
 3996       "version" : "1.3"
 3997     },
 3998     {
 3999       "opname" : "OpGroupNonUniformLogicalOr",
 4000       "class"  : "Non-Uniform",
 4001       "opcode" : 363,
 4002       "operands" : [
 4003         { "kind" : "IdResultType" },
 4004         { "kind" : "IdResult" },
 4005         { "kind" : "IdScope", "name" : "'Execution'" },
 4006         { "kind" : "GroupOperation", "name" : "'Operation'" },
 4007         { "kind" : "IdRef", "name" : "'Value'" },
 4008         { "kind" : "IdRef", "name" : "'ClusterSize'", "quantifier" : "?" }
 4009       ],
 4010       "capabilities" : [ "GroupNonUniformArithmetic", "GroupNonUniformClustered", "GroupNonUniformPartitionedNV" ],
 4011       "version" : "1.3"
 4012     },
 4013     {
 4014       "opname" : "OpGroupNonUniformLogicalXor",
 4015       "class"  : "Non-Uniform",
 4016       "opcode" : 364,
 4017       "operands" : [
 4018         { "kind" : "IdResultType" },
 4019         { "kind" : "IdResult" },
 4020         { "kind" : "IdScope", "name" : "'Execution'" },
 4021         { "kind" : "GroupOperation", "name" : "'Operation'" },
 4022         { "kind" : "IdRef", "name" : "'Value'" },
 4023         { "kind" : "IdRef", "name" : "'ClusterSize'", "quantifier" : "?" }
 4024       ],
 4025       "capabilities" : [ "GroupNonUniformArithmetic", "GroupNonUniformClustered", "GroupNonUniformPartitionedNV" ],
 4026       "version" : "1.3"
 4027     },
 4028     {
 4029       "opname" : "OpGroupNonUniformQuadBroadcast",
 4030       "class"  : "Non-Uniform",
 4031       "opcode" : 365,
 4032       "operands" : [
 4033         { "kind" : "IdResultType" },
 4034         { "kind" : "IdResult" },
 4035         { "kind" : "IdScope", "name" : "'Execution'" },
 4036         { "kind" : "IdRef", "name" : "'Value'" },
 4037         { "kind" : "IdRef", "name" : "'Index'" }
 4038       ],
 4039       "capabilities" : [ "GroupNonUniformQuad" ],
 4040       "version" : "1.3"
 4041     },
 4042     {
 4043       "opname" : "OpGroupNonUniformQuadSwap",
 4044       "class"  : "Non-Uniform",
 4045       "opcode" : 366,
 4046       "operands" : [
 4047         { "kind" : "IdResultType" },
 4048         { "kind" : "IdResult" },
 4049         { "kind" : "IdScope", "name" : "'Execution'" },
 4050         { "kind" : "IdRef", "name" : "'Value'" },
 4051         { "kind" : "IdRef", "name" : "'Direction'" }
 4052       ],
 4053       "capabilities" : [ "GroupNonUniformQuad" ],
 4054       "version" : "1.3"
 4055     },
 4056     {
 4057       "opname" : "OpCopyLogical",
 4058       "class"  : "Composite",
 4059       "opcode" : 400,
 4060       "operands" : [
 4061         { "kind" : "IdResultType" },
 4062         { "kind" : "IdResult" },
 4063         { "kind" : "IdRef",        "name" : "'Operand'" }
 4064       ],
 4065       "version" : "1.4"
 4066     },
 4067     {
 4068       "opname" : "OpPtrEqual",
 4069       "class"  : "Memory",
 4070       "opcode" : 401,
 4071       "operands" : [
 4072         { "kind" : "IdResultType" },
 4073         { "kind" : "IdResult" },
 4074         { "kind" : "IdRef",        "name" : "'Operand 1'" },
 4075         { "kind" : "IdRef",        "name" : "'Operand 2'" }
 4076       ],
 4077       "version" : "1.4"
 4078     },
 4079     {
 4080       "opname" : "OpPtrNotEqual",
 4081       "class"  : "Memory",
 4082       "opcode" : 402,
 4083       "operands" : [
 4084         { "kind" : "IdResultType" },
 4085         { "kind" : "IdResult" },
 4086         { "kind" : "IdRef",        "name" : "'Operand 1'" },
 4087         { "kind" : "IdRef",        "name" : "'Operand 2'" }
 4088       ],
 4089       "version" : "1.4"
 4090     },
 4091     {
 4092       "opname" : "OpPtrDiff",
 4093       "class"  : "Memory",
 4094       "opcode" : 403,
 4095       "operands" : [
 4096         { "kind" : "IdResultType" },
 4097         { "kind" : "IdResult" },
 4098         { "kind" : "IdRef",        "name" : "'Operand 1'" },
 4099         { "kind" : "IdRef",        "name" : "'Operand 2'" }
 4100       ],
 4101       "capabilities" : [ "Addresses", "VariablePointers", "VariablePointersStorageBuffer" ],
 4102       "version" : "1.4"
 4103     },
 4104     {
 4105       "opname" : "OpSubgroupBallotKHR",
 4106       "class"  : "Group",
 4107       "opcode" : 4421,
 4108       "operands" : [
 4109         { "kind" : "IdResultType" },
 4110         { "kind" : "IdResult" },
 4111         { "kind" : "IdRef", "name" : "'Predicate'" }
 4112       ],
 4113       "capabilities" : [ "SubgroupBallotKHR" ],
 4114       "extensions" : [ "SPV_KHR_shader_ballot" ],
 4115       "version" : "None"
 4116     },
 4117     {
 4118       "opname" : "OpSubgroupFirstInvocationKHR",
 4119       "class"  : "Group",
 4120       "opcode" : 4422,
 4121       "operands" : [
 4122         { "kind" : "IdResultType" },
 4123         { "kind" : "IdResult" },
 4124         { "kind" : "IdRef", "name" : "'Value'" }
 4125       ],
 4126       "capabilities" : [ "SubgroupBallotKHR" ],
 4127       "extensions" : [ "SPV_KHR_shader_ballot" ],
 4128       "version" : "None"
 4129     },
 4130     {
 4131       "opname" : "OpSubgroupAllKHR",
 4132       "class"  : "Group",
 4133       "opcode"</