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

Return to Bug 177726