[PATCH 7/9] libs: Import SPIRV-Headers 1.5.4.

Zebediah Figura zfigura at codeweavers.com
Mon Nov 29 11:01:20 CST 2021


Signed-off-by: Zebediah Figura <zfigura at codeweavers.com>
---
 libs/spirv-headers/spirv/1.0/GLSL.std.450.h   |   131 +
 libs/spirv-headers/spirv/1.0/OpenCL.std.h     |   210 +
 .../1.0/extinst.glsl.std.450.grammar.json     |   642 +
 .../1.0/extinst.opencl.std.100.grammar.json   |  1279 ++
 .../spirv/1.0/spirv.core.grammar.json         |  5775 ++++++++
 libs/spirv-headers/spirv/1.0/spirv.cs         |   993 ++
 libs/spirv-headers/spirv/1.0/spirv.h          |   993 ++
 libs/spirv-headers/spirv/1.0/spirv.hpp        |  1002 ++
 libs/spirv-headers/spirv/1.0/spirv.hpp11      |  1002 ++
 libs/spirv-headers/spirv/1.0/spirv.json       |  1020 ++
 libs/spirv-headers/spirv/1.0/spirv.lua        |   949 ++
 libs/spirv-headers/spirv/1.0/spirv.py         |   949 ++
 libs/spirv-headers/spirv/1.1/GLSL.std.450.h   |   131 +
 libs/spirv-headers/spirv/1.1/OpenCL.std.h     |   210 +
 .../1.1/extinst.glsl.std.450.grammar.json     |   642 +
 .../1.1/extinst.opencl.std.100.grammar.json   |  1279 ++
 .../spirv/1.1/spirv.core.grammar.json         |  5938 ++++++++
 libs/spirv-headers/spirv/1.1/spirv.cs         |  1015 ++
 libs/spirv-headers/spirv/1.1/spirv.h          |  1015 ++
 libs/spirv-headers/spirv/1.1/spirv.hpp        |  1024 ++
 libs/spirv-headers/spirv/1.1/spirv.hpp11      |  1024 ++
 libs/spirv-headers/spirv/1.1/spirv.json       |  1040 ++
 libs/spirv-headers/spirv/1.1/spirv.lua        |   971 ++
 libs/spirv-headers/spirv/1.1/spirv.py         |   971 ++
 libs/spirv-headers/spirv/1.2/GLSL.std.450.h   |   131 +
 libs/spirv-headers/spirv/1.2/OpenCL.std.h     |   210 +
 .../1.2/extinst.glsl.std.450.grammar.json     |   642 +
 .../1.2/extinst.opencl.std.100.grammar.json   |  1279 ++
 .../spirv/1.2/spirv.core.grammar.json         |  5986 ++++++++
 libs/spirv-headers/spirv/1.2/spirv.cs         |  1021 ++
 libs/spirv-headers/spirv/1.2/spirv.h          |  1021 ++
 libs/spirv-headers/spirv/1.2/spirv.hpp        |  1030 ++
 libs/spirv-headers/spirv/1.2/spirv.hpp11      |  1030 ++
 libs/spirv-headers/spirv/1.2/spirv.json       |  1046 ++
 libs/spirv-headers/spirv/1.2/spirv.lua        |   977 ++
 libs/spirv-headers/spirv/1.2/spirv.py         |   977 ++
 libs/spirv-headers/spirv/spir-v.xml           |   204 +
 .../spirv/unified1/AMD_gcn_shader.h           |    52 +
 .../spirv/unified1/AMD_shader_ballot.h        |    53 +
 .../AMD_shader_explicit_vertex_parameter.h    |    50 +
 .../unified1/AMD_shader_trinary_minmax.h      |    58 +
 libs/spirv-headers/spirv/unified1/DebugInfo.h |   143 +
 .../spirv/unified1/GLSL.std.450.h             |   131 +
 .../unified1/NonSemanticClspvReflection.h     |    73 +
 .../spirv/unified1/NonSemanticDebugPrintf.h   |    50 +
 .../spirv-headers/spirv/unified1/OpenCL.std.h |   401 +
 .../spirv/unified1/OpenCLDebugInfo100.h       |   156 +
 .../unified1/extinst.debuginfo.grammar.json   |   568 +
 .../extinst.glsl.std.450.grammar.json         |   642 +
 ...t.nonsemantic.clspvreflection.grammar.json |   237 +
 ...tinst.nonsemantic.debugprintf.grammar.json |    13 +
 .../extinst.opencl.debuginfo.100.grammar.json |   632 +
 .../extinst.opencl.std.100.grammar.json       |  1279 ++
 .../extinst.spv-amd-gcn-shader.grammar.json   |    26 +
 ...extinst.spv-amd-shader-ballot.grammar.json |    41 +
 ...der-explicit-vertex-parameter.grammar.json |    14 +
 ...spv-amd-shader-trinary-minmax.grammar.json |    95 +
 .../spirv/unified1/spirv.core.grammar.json    | 11779 ++++++++++++++++
 libs/spirv-headers/spirv/unified1/spirv.cs    |  1622 +++
 libs/spirv-headers/spirv/unified1/spirv.h     |  2185 +++
 libs/spirv-headers/spirv/unified1/spirv.hpp   |  2196 +++
 libs/spirv-headers/spirv/unified1/spirv.hpp11 |  2196 +++
 libs/spirv-headers/spirv/unified1/spirv.json  |  1604 +++
 libs/spirv-headers/spirv/unified1/spirv.lua   |  1572 +++
 libs/spirv-headers/spirv/unified1/spirv.py    |  1572 +++
 libs/spirv-headers/spirv/unified1/spv.d       |  1624 +++
 66 files changed, 76823 insertions(+)
 create mode 100644 libs/spirv-headers/spirv/1.0/GLSL.std.450.h
 create mode 100644 libs/spirv-headers/spirv/1.0/OpenCL.std.h
 create mode 100644 libs/spirv-headers/spirv/1.0/extinst.glsl.std.450.grammar.json
 create mode 100644 libs/spirv-headers/spirv/1.0/extinst.opencl.std.100.grammar.json
 create mode 100644 libs/spirv-headers/spirv/1.0/spirv.core.grammar.json
 create mode 100644 libs/spirv-headers/spirv/1.0/spirv.cs
 create mode 100644 libs/spirv-headers/spirv/1.0/spirv.h
 create mode 100644 libs/spirv-headers/spirv/1.0/spirv.hpp
 create mode 100644 libs/spirv-headers/spirv/1.0/spirv.hpp11
 create mode 100644 libs/spirv-headers/spirv/1.0/spirv.json
 create mode 100644 libs/spirv-headers/spirv/1.0/spirv.lua
 create mode 100644 libs/spirv-headers/spirv/1.0/spirv.py
 create mode 100644 libs/spirv-headers/spirv/1.1/GLSL.std.450.h
 create mode 100644 libs/spirv-headers/spirv/1.1/OpenCL.std.h
 create mode 100644 libs/spirv-headers/spirv/1.1/extinst.glsl.std.450.grammar.json
 create mode 100644 libs/spirv-headers/spirv/1.1/extinst.opencl.std.100.grammar.json
 create mode 100644 libs/spirv-headers/spirv/1.1/spirv.core.grammar.json
 create mode 100644 libs/spirv-headers/spirv/1.1/spirv.cs
 create mode 100644 libs/spirv-headers/spirv/1.1/spirv.h
 create mode 100644 libs/spirv-headers/spirv/1.1/spirv.hpp
 create mode 100644 libs/spirv-headers/spirv/1.1/spirv.hpp11
 create mode 100644 libs/spirv-headers/spirv/1.1/spirv.json
 create mode 100644 libs/spirv-headers/spirv/1.1/spirv.lua
 create mode 100644 libs/spirv-headers/spirv/1.1/spirv.py
 create mode 100644 libs/spirv-headers/spirv/1.2/GLSL.std.450.h
 create mode 100644 libs/spirv-headers/spirv/1.2/OpenCL.std.h
 create mode 100644 libs/spirv-headers/spirv/1.2/extinst.glsl.std.450.grammar.json
 create mode 100644 libs/spirv-headers/spirv/1.2/extinst.opencl.std.100.grammar.json
 create mode 100644 libs/spirv-headers/spirv/1.2/spirv.core.grammar.json
 create mode 100644 libs/spirv-headers/spirv/1.2/spirv.cs
 create mode 100644 libs/spirv-headers/spirv/1.2/spirv.h
 create mode 100644 libs/spirv-headers/spirv/1.2/spirv.hpp
 create mode 100644 libs/spirv-headers/spirv/1.2/spirv.hpp11
 create mode 100644 libs/spirv-headers/spirv/1.2/spirv.json
 create mode 100644 libs/spirv-headers/spirv/1.2/spirv.lua
 create mode 100644 libs/spirv-headers/spirv/1.2/spirv.py
 create mode 100644 libs/spirv-headers/spirv/spir-v.xml
 create mode 100644 libs/spirv-headers/spirv/unified1/AMD_gcn_shader.h
 create mode 100644 libs/spirv-headers/spirv/unified1/AMD_shader_ballot.h
 create mode 100644 libs/spirv-headers/spirv/unified1/AMD_shader_explicit_vertex_parameter.h
 create mode 100644 libs/spirv-headers/spirv/unified1/AMD_shader_trinary_minmax.h
 create mode 100644 libs/spirv-headers/spirv/unified1/DebugInfo.h
 create mode 100644 libs/spirv-headers/spirv/unified1/GLSL.std.450.h
 create mode 100644 libs/spirv-headers/spirv/unified1/NonSemanticClspvReflection.h
 create mode 100644 libs/spirv-headers/spirv/unified1/NonSemanticDebugPrintf.h
 create mode 100644 libs/spirv-headers/spirv/unified1/OpenCL.std.h
 create mode 100644 libs/spirv-headers/spirv/unified1/OpenCLDebugInfo100.h
 create mode 100644 libs/spirv-headers/spirv/unified1/extinst.debuginfo.grammar.json
 create mode 100644 libs/spirv-headers/spirv/unified1/extinst.glsl.std.450.grammar.json
 create mode 100644 libs/spirv-headers/spirv/unified1/extinst.nonsemantic.clspvreflection.grammar.json
 create mode 100644 libs/spirv-headers/spirv/unified1/extinst.nonsemantic.debugprintf.grammar.json
 create mode 100644 libs/spirv-headers/spirv/unified1/extinst.opencl.debuginfo.100.grammar.json
 create mode 100644 libs/spirv-headers/spirv/unified1/extinst.opencl.std.100.grammar.json
 create mode 100644 libs/spirv-headers/spirv/unified1/extinst.spv-amd-gcn-shader.grammar.json
 create mode 100644 libs/spirv-headers/spirv/unified1/extinst.spv-amd-shader-ballot.grammar.json
 create mode 100644 libs/spirv-headers/spirv/unified1/extinst.spv-amd-shader-explicit-vertex-parameter.grammar.json
 create mode 100644 libs/spirv-headers/spirv/unified1/extinst.spv-amd-shader-trinary-minmax.grammar.json
 create mode 100644 libs/spirv-headers/spirv/unified1/spirv.core.grammar.json
 create mode 100644 libs/spirv-headers/spirv/unified1/spirv.cs
 create mode 100644 libs/spirv-headers/spirv/unified1/spirv.h
 create mode 100644 libs/spirv-headers/spirv/unified1/spirv.hpp
 create mode 100644 libs/spirv-headers/spirv/unified1/spirv.hpp11
 create mode 100644 libs/spirv-headers/spirv/unified1/spirv.json
 create mode 100644 libs/spirv-headers/spirv/unified1/spirv.lua
 create mode 100644 libs/spirv-headers/spirv/unified1/spirv.py
 create mode 100644 libs/spirv-headers/spirv/unified1/spv.d

diff --git a/libs/spirv-headers/spirv/1.0/GLSL.std.450.h b/libs/spirv-headers/spirv/1.0/GLSL.std.450.h
new file mode 100644
index 00000000000..54cc00e9a88
--- /dev/null
+++ b/libs/spirv-headers/spirv/1.0/GLSL.std.450.h
@@ -0,0 +1,131 @@
+/*
+** Copyright (c) 2014-2016 The Khronos Group Inc.
+**
+** Permission is hereby granted, free of charge, to any person obtaining a copy
+** of this software and/or associated documentation files (the "Materials"),
+** to deal in the Materials without restriction, including without limitation
+** the rights to use, copy, modify, merge, publish, distribute, sublicense,
+** and/or sell copies of the Materials, and to permit persons to whom the
+** Materials are furnished to do so, subject to the following conditions:
+**
+** The above copyright notice and this permission notice shall be included in
+** all copies or substantial portions of the Materials.
+**
+** MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS KHRONOS
+** STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS SPECIFICATIONS AND
+** HEADER INFORMATION ARE LOCATED AT https://www.khronos.org/registry/ 
+**
+** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+** OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+** FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+** THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+** LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+** FROM,OUT OF OR IN CONNECTION WITH THE MATERIALS OR THE USE OR OTHER DEALINGS
+** IN THE MATERIALS.
+*/
+
+#ifndef GLSLstd450_H
+#define GLSLstd450_H
+
+static const int GLSLstd450Version = 100;
+static const int GLSLstd450Revision = 3;
+
+enum GLSLstd450 {
+    GLSLstd450Bad = 0,              // Don't use
+
+    GLSLstd450Round = 1,
+    GLSLstd450RoundEven = 2,
+    GLSLstd450Trunc = 3,
+    GLSLstd450FAbs = 4,
+    GLSLstd450SAbs = 5,
+    GLSLstd450FSign = 6,
+    GLSLstd450SSign = 7,
+    GLSLstd450Floor = 8,
+    GLSLstd450Ceil = 9,
+    GLSLstd450Fract = 10,
+
+    GLSLstd450Radians = 11,
+    GLSLstd450Degrees = 12,
+    GLSLstd450Sin = 13,
+    GLSLstd450Cos = 14,
+    GLSLstd450Tan = 15,
+    GLSLstd450Asin = 16,
+    GLSLstd450Acos = 17,
+    GLSLstd450Atan = 18,
+    GLSLstd450Sinh = 19,
+    GLSLstd450Cosh = 20,
+    GLSLstd450Tanh = 21,
+    GLSLstd450Asinh = 22,
+    GLSLstd450Acosh = 23,
+    GLSLstd450Atanh = 24,
+    GLSLstd450Atan2 = 25,
+
+    GLSLstd450Pow = 26,
+    GLSLstd450Exp = 27,
+    GLSLstd450Log = 28,
+    GLSLstd450Exp2 = 29,
+    GLSLstd450Log2 = 30,
+    GLSLstd450Sqrt = 31,
+    GLSLstd450InverseSqrt = 32,
+
+    GLSLstd450Determinant = 33,
+    GLSLstd450MatrixInverse = 34,
+
+    GLSLstd450Modf = 35,            // second operand needs an OpVariable to write to
+    GLSLstd450ModfStruct = 36,      // no OpVariable operand
+    GLSLstd450FMin = 37,
+    GLSLstd450UMin = 38,
+    GLSLstd450SMin = 39,
+    GLSLstd450FMax = 40,
+    GLSLstd450UMax = 41,
+    GLSLstd450SMax = 42,
+    GLSLstd450FClamp = 43,
+    GLSLstd450UClamp = 44,
+    GLSLstd450SClamp = 45,
+    GLSLstd450FMix = 46,
+    GLSLstd450IMix = 47,            // Reserved
+    GLSLstd450Step = 48,
+    GLSLstd450SmoothStep = 49,
+
+    GLSLstd450Fma = 50,
+    GLSLstd450Frexp = 51,            // second operand needs an OpVariable to write to
+    GLSLstd450FrexpStruct = 52,      // no OpVariable operand
+    GLSLstd450Ldexp = 53,
+
+    GLSLstd450PackSnorm4x8 = 54,
+    GLSLstd450PackUnorm4x8 = 55,
+    GLSLstd450PackSnorm2x16 = 56,
+    GLSLstd450PackUnorm2x16 = 57,
+    GLSLstd450PackHalf2x16 = 58,
+    GLSLstd450PackDouble2x32 = 59,
+    GLSLstd450UnpackSnorm2x16 = 60,
+    GLSLstd450UnpackUnorm2x16 = 61,
+    GLSLstd450UnpackHalf2x16 = 62,
+    GLSLstd450UnpackSnorm4x8 = 63,
+    GLSLstd450UnpackUnorm4x8 = 64,
+    GLSLstd450UnpackDouble2x32 = 65,
+
+    GLSLstd450Length = 66,
+    GLSLstd450Distance = 67,
+    GLSLstd450Cross = 68,
+    GLSLstd450Normalize = 69,
+    GLSLstd450FaceForward = 70,
+    GLSLstd450Reflect = 71,
+    GLSLstd450Refract = 72,
+
+    GLSLstd450FindILsb = 73,
+    GLSLstd450FindSMsb = 74,
+    GLSLstd450FindUMsb = 75,
+
+    GLSLstd450InterpolateAtCentroid = 76,
+    GLSLstd450InterpolateAtSample = 77,
+    GLSLstd450InterpolateAtOffset = 78,
+
+    GLSLstd450NMin = 79,
+    GLSLstd450NMax = 80,
+    GLSLstd450NClamp = 81,
+
+    GLSLstd450Count
+};
+
+#endif  // #ifndef GLSLstd450_H
diff --git a/libs/spirv-headers/spirv/1.0/OpenCL.std.h b/libs/spirv-headers/spirv/1.0/OpenCL.std.h
new file mode 100644
index 00000000000..19a6688490c
--- /dev/null
+++ b/libs/spirv-headers/spirv/1.0/OpenCL.std.h
@@ -0,0 +1,210 @@
+/*
+** Copyright (c) 2015-2017 The Khronos Group Inc.
+**
+** Permission is hereby granted, free of charge, to any person obtaining a copy
+** of this software and/or associated documentation files (the "Materials"),
+** to deal in the Materials without restriction, including without limitation
+** the rights to use, copy, modify, merge, publish, distribute, sublicense,
+** and/or sell copies of the Materials, and to permit persons to whom the
+** Materials are furnished to do so, subject to the following conditions:
+**
+** The above copyright notice and this permission notice shall be included in
+** all copies or substantial portions of the Materials.
+**
+** MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS KHRONOS
+** STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS SPECIFICATIONS AND
+** HEADER INFORMATION ARE LOCATED AT https://www.khronos.org/registry/ 
+**
+** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+** OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+** FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+** THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+** LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+** FROM,OUT OF OR IN CONNECTION WITH THE MATERIALS OR THE USE OR OTHER DEALINGS
+** IN THE MATERIALS.
+*/
+
+namespace OpenCLLIB {
+
+enum Entrypoints {
+
+    // Section 2.1: Math extended instructions
+    Acos = 0,
+    Acosh = 1,
+    Acospi = 2,
+    Asin = 3,
+    Asinh = 4,
+    Asinpi = 5,
+    Atan = 6,
+    Atan2 = 7,
+    Atanh = 8,
+    Atanpi = 9,
+    Atan2pi = 10,
+    Cbrt = 11,
+    Ceil = 12,
+    Copysign = 13,
+    Cos = 14,
+    Cosh = 15,
+    Cospi = 16,
+    Erfc = 17,
+    Erf = 18,
+    Exp = 19,
+    Exp2 = 20,
+    Exp10 = 21,
+    Expm1 = 22,
+    Fabs = 23,
+    Fdim = 24,
+    Floor = 25,
+    Fma = 26,
+    Fmax = 27,
+    Fmin = 28,
+    Fmod = 29,
+    Fract = 30, 
+    Frexp = 31,
+    Hypot = 32,
+    Ilogb = 33,
+    Ldexp = 34,
+    Lgamma = 35,
+    Lgamma_r = 36,
+    Log = 37,
+    Log2 = 38,
+    Log10 = 39,
+    Log1p = 40,
+    Logb = 41,
+    Mad = 42,
+    Maxmag = 43,
+    Minmag = 44,
+    Modf = 45,
+    Nan = 46,
+    Nextafter = 47,
+    Pow = 48,
+    Pown = 49,
+    Powr = 50,
+    Remainder = 51,
+    Remquo = 52,
+    Rint = 53,
+    Rootn = 54,
+    Round = 55,
+    Rsqrt = 56,
+    Sin = 57,
+    Sincos = 58,
+    Sinh = 59,
+    Sinpi = 60,
+    Sqrt = 61,
+    Tan = 62,
+    Tanh = 63,
+    Tanpi = 64,
+    Tgamma = 65,
+    Trunc = 66,
+    Half_cos = 67,
+    Half_divide = 68,
+    Half_exp = 69,
+    Half_exp2 = 70,
+    Half_exp10 = 71,
+    Half_log = 72,
+    Half_log2 = 73,
+    Half_log10 = 74,
+    Half_powr = 75,
+    Half_recip = 76,
+    Half_rsqrt = 77,
+    Half_sin = 78,
+    Half_sqrt = 79,
+    Half_tan = 80,
+    Native_cos = 81,
+    Native_divide = 82,
+    Native_exp = 83,
+    Native_exp2 = 84,
+    Native_exp10 = 85,
+    Native_log = 86,
+    Native_log2 = 87,
+    Native_log10 = 88,
+    Native_powr = 89,
+    Native_recip = 90,
+    Native_rsqrt = 91,
+    Native_sin = 92,
+    Native_sqrt = 93,
+    Native_tan = 94,
+    
+    // Section 2.2: Integer instructions
+    SAbs = 141,
+    SAbs_diff = 142,
+    SAdd_sat = 143,
+    UAdd_sat = 144,
+    SHadd = 145,
+    UHadd = 146,
+    SRhadd = 147,
+    URhadd = 148,
+    SClamp = 149,
+    UClamp = 150, 
+    Clz = 151,
+    Ctz = 152,    
+    SMad_hi = 153,
+    UMad_sat = 154,
+    SMad_sat = 155,
+    SMax = 156,
+    UMax = 157,
+    SMin = 158,
+    UMin = 159,
+    SMul_hi = 160,
+    Rotate = 161,
+    SSub_sat = 162,
+    USub_sat = 163,
+    U_Upsample = 164,
+    S_Upsample = 165,
+    Popcount = 166,
+    SMad24 = 167,
+    UMad24 = 168,
+    SMul24 = 169,
+    UMul24 = 170,
+    UAbs = 201,
+    UAbs_diff = 202,
+    UMul_hi = 203,
+    UMad_hi = 204,
+
+    // Section 2.3: Common instructions
+    FClamp = 95,
+    Degrees = 96,
+    FMax_common = 97,
+    FMin_common = 98, 
+    Mix = 99,
+    Radians = 100,
+    Step = 101,
+    Smoothstep = 102,
+    Sign = 103,
+
+    // Section 2.4: Geometric instructions
+    Cross = 104,
+    Distance = 105, 
+    Length = 106,
+    Normalize = 107,
+    Fast_distance = 108,
+    Fast_length = 109,
+    Fast_normalize = 110,
+
+    // Section 2.5: Relational instructions
+    Bitselect = 186,
+    Select = 187,
+
+    // Section 2.6: Vector Data Load and Store instructions
+    Vloadn = 171,
+    Vstoren = 172,
+    Vload_half = 173,
+    Vload_halfn = 174,
+    Vstore_half = 175,
+    Vstore_half_r = 176,
+    Vstore_halfn = 177,
+    Vstore_halfn_r = 178,
+    Vloada_halfn = 179,
+    Vstorea_halfn = 180,
+    Vstorea_halfn_r = 181,
+
+    // Section 2.7: Miscellaneous Vector instructions
+    Shuffle = 182,
+    Shuffle2 = 183,
+
+    // Section 2.8: Misc instructions 
+    Printf = 184,
+    Prefetch = 185,
+};
+
+} // end namespace OpenCLLIB
diff --git a/libs/spirv-headers/spirv/1.0/extinst.glsl.std.450.grammar.json b/libs/spirv-headers/spirv/1.0/extinst.glsl.std.450.grammar.json
new file mode 100644
index 00000000000..3d9f39e76c9
--- /dev/null
+++ b/libs/spirv-headers/spirv/1.0/extinst.glsl.std.450.grammar.json
@@ -0,0 +1,642 @@
+{
+  "copyright" : [
+    "Copyright (c) 2014-2016 The Khronos Group Inc.",
+    "",
+    "Permission is hereby granted, free of charge, to any person obtaining a copy",
+    "of this software and/or associated documentation files (the \"Materials\"),",
+    "to deal in the Materials without restriction, including without limitation",
+    "the rights to use, copy, modify, merge, publish, distribute, sublicense,",
+    "and/or sell copies of the Materials, and to permit persons to whom the",
+    "Materials are furnished to do so, subject to the following conditions:",
+    "",
+    "The above copyright notice and this permission notice shall be included in",
+    "all copies or substantial portions of the Materials.",
+    "",
+    "MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS KHRONOS",
+    "STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS SPECIFICATIONS AND",
+    "HEADER INFORMATION ARE LOCATED AT https://www.khronos.org/registry/ ",
+    "",
+    "THE MATERIALS ARE PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS",
+    "OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,",
+    "FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL",
+    "THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER",
+    "LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING",
+    "FROM,OUT OF OR IN CONNECTION WITH THE MATERIALS OR THE USE OR OTHER DEALINGS",
+    "IN THE MATERIALS."
+  ],
+  "version" : 100,
+  "revision" : 2,
+  "instructions" : [
+    {
+      "opname" : "Round",
+      "opcode" : 1,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "RoundEven",
+      "opcode" : 2,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "Trunc",
+      "opcode" : 3,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "FAbs",
+      "opcode" : 4,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "SAbs",
+      "opcode" : 5,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "FSign",
+      "opcode" : 6,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "SSign",
+      "opcode" : 7,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "Floor",
+      "opcode" : 8,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "Ceil",
+      "opcode" : 9,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "Fract",
+      "opcode" : 10,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "Radians",
+      "opcode" : 11,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'degrees'" }
+      ]
+    },
+    {
+      "opname" : "Degrees",
+      "opcode" : 12,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'radians'" }
+      ]
+    },
+    {
+      "opname" : "Sin",
+      "opcode" : 13,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "Cos",
+      "opcode" : 14,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "Tan",
+      "opcode" : 15,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "Asin",
+      "opcode" : 16,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "Acos",
+      "opcode" : 17,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "Atan",
+      "opcode" : 18,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'y_over_x'" }
+      ]
+    },
+    {
+      "opname" : "Sinh",
+      "opcode" : 19,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "Cosh",
+      "opcode" : 20,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "Tanh",
+      "opcode" : 21,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "Asinh",
+      "opcode" : 22,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "Acosh",
+      "opcode" : 23,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "Atanh",
+      "opcode" : 24,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "Atan2",
+      "opcode" : 25,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'y'" },
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "Pow",
+      "opcode" : 26,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "Exp",
+      "opcode" : 27,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "Log",
+      "opcode" : 28,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "Exp2",
+      "opcode" : 29,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "Log2",
+      "opcode" : 30,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "Sqrt",
+      "opcode" : 31,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "InverseSqrt",
+      "opcode" : 32,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "Determinant",
+      "opcode" : 33,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "MatrixInverse",
+      "opcode" : 34,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "Modf",
+      "opcode" : 35,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'i'" }
+      ]
+    },
+    {
+      "opname" : "ModfStruct",
+      "opcode" : 36,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "FMin",
+      "opcode" : 37,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "UMin",
+      "opcode" : 38,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "SMin",
+      "opcode" : 39,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "FMax",
+      "opcode" : 40,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "UMax",
+      "opcode" : 41,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "SMax",
+      "opcode" : 42,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "FClamp",
+      "opcode" : 43,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'minVal'" },
+        { "kind" : "IdRef", "name" : "'maxVal'" }
+      ]
+    },
+    {
+      "opname" : "UClamp",
+      "opcode" : 44,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'minVal'" },
+        { "kind" : "IdRef", "name" : "'maxVal'" }
+      ]
+    },
+    {
+      "opname" : "SClamp",
+      "opcode" : 45,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'minVal'" },
+        { "kind" : "IdRef", "name" : "'maxVal'" }
+      ]
+    },
+    {
+      "opname" : "FMix",
+      "opcode" : 46,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" },
+        { "kind" : "IdRef", "name" : "'a'" }
+      ]
+    },
+    {
+      "opname" : "IMix",
+      "opcode" : 47,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" },
+        { "kind" : "IdRef", "name" : "'a'" }
+      ]
+    },
+    {
+      "opname" : "Step",
+      "opcode" : 48,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'edge'" },
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "SmoothStep",
+      "opcode" : 49,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'edge0'" },
+        { "kind" : "IdRef", "name" : "'edge1'" },
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "Fma",
+      "opcode" : 50,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'a'" },
+        { "kind" : "IdRef", "name" : "'b'" },
+        { "kind" : "IdRef", "name" : "'c'" }
+      ]
+    },
+    {
+      "opname" : "Frexp",
+      "opcode" : 51,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'exp'" }
+      ]
+    },
+    {
+      "opname" : "FrexpStruct",
+      "opcode" : 52,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "Ldexp",
+      "opcode" : 53,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'exp'" }
+      ]
+    },
+    {
+      "opname" : "PackSnorm4x8",
+      "opcode" : 54,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'v'" }
+      ]
+    },
+    {
+      "opname" : "PackUnorm4x8",
+      "opcode" : 55,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'v'" }
+      ]
+    },
+    {
+      "opname" : "PackSnorm2x16",
+      "opcode" : 56,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'v'" }
+      ]
+    },
+    {
+      "opname" : "PackUnorm2x16",
+      "opcode" : 57,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'v'" }
+      ]
+    },
+    {
+      "opname" : "PackHalf2x16",
+      "opcode" : 58,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'v'" }
+      ]
+    },
+    {
+      "opname" : "PackDouble2x32",
+      "opcode" : 59,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'v'" }
+      ],
+      "capabilities" : [ "Float64" ]
+    },
+    {
+      "opname" : "UnpackSnorm2x16",
+      "opcode" : 60,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'p'" }
+      ]
+    },
+    {
+      "opname" : "UnpackUnorm2x16",
+      "opcode" : 61,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'p'" }
+      ]
+    },
+    {
+      "opname" : "UnpackHalf2x16",
+      "opcode" : 62,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'v'" }
+      ]
+    },
+    {
+      "opname" : "UnpackSnorm4x8",
+      "opcode" : 63,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'p'" }
+      ]
+    },
+    {
+      "opname" : "UnpackUnorm4x8",
+      "opcode" : 64,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'p'" }
+      ]
+    },
+    {
+      "opname" : "UnpackDouble2x32",
+      "opcode" : 65,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'v'" }
+      ],
+      "capabilities" : [ "Float64" ]
+    },
+    {
+      "opname" : "Length",
+      "opcode" : 66,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "Distance",
+      "opcode" : 67,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'p0'" },
+        { "kind" : "IdRef", "name" : "'p1'" }
+      ]
+    },
+    {
+      "opname" : "Cross",
+      "opcode" : 68,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "Normalize",
+      "opcode" : 69,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "FaceForward",
+      "opcode" : 70,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'N'" },
+        { "kind" : "IdRef", "name" : "'I'" },
+        { "kind" : "IdRef", "name" : "'Nref'" }
+      ]
+    },
+    {
+      "opname" : "Reflect",
+      "opcode" : 71,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'I'" },
+        { "kind" : "IdRef", "name" : "'N'" }
+      ]
+    },
+    {
+      "opname" : "Refract",
+      "opcode" : 72,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'I'" },
+        { "kind" : "IdRef", "name" : "'N'" },
+        { "kind" : "IdRef", "name" : "'eta'" }
+      ]
+    },
+    {
+      "opname" : "FindILsb",
+      "opcode" : 73,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'Value'" }
+      ]
+    },
+    {
+      "opname" : "FindSMsb",
+      "opcode" : 74,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'Value'" }
+      ]
+    },
+    {
+      "opname" : "FindUMsb",
+      "opcode" : 75,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'Value'" }
+      ]
+    },
+    {
+      "opname" : "InterpolateAtCentroid",
+      "opcode" : 76,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'interpolant'" }
+      ],
+      "capabilities" : [ "InterpolationFunction" ]
+    },
+    {
+      "opname" : "InterpolateAtSample",
+      "opcode" : 77,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'interpolant'" },
+        { "kind" : "IdRef", "name" : "'sample'" }
+      ],
+      "capabilities" : [ "InterpolationFunction" ]
+    },
+    {
+      "opname" : "InterpolateAtOffset",
+      "opcode" : 78,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'interpolant'" },
+        { "kind" : "IdRef", "name" : "'offset'" }
+      ],
+      "capabilities" : [ "InterpolationFunction" ]
+    },
+    {
+      "opname" : "NMin",
+      "opcode" : 79,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "NMax",
+      "opcode" : 80,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "NClamp",
+      "opcode" : 81,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'minVal'" },
+        { "kind" : "IdRef", "name" : "'maxVal'" }
+      ]
+    }
+  ]
+}
diff --git a/libs/spirv-headers/spirv/1.0/extinst.opencl.std.100.grammar.json b/libs/spirv-headers/spirv/1.0/extinst.opencl.std.100.grammar.json
new file mode 100644
index 00000000000..4fe45060bb9
--- /dev/null
+++ b/libs/spirv-headers/spirv/1.0/extinst.opencl.std.100.grammar.json
@@ -0,0 +1,1279 @@
+{
+  "copyright" : [
+    "Copyright (c) 2014-2016 The Khronos Group Inc.",
+    "",
+    "Permission is hereby granted, free of charge, to any person obtaining a copy",
+    "of this software and/or associated documentation files (the \"Materials\"),",
+    "to deal in the Materials without restriction, including without limitation",
+    "the rights to use, copy, modify, merge, publish, distribute, sublicense,",
+    "and/or sell copies of the Materials, and to permit persons to whom the",
+    "Materials are furnished to do so, subject to the following conditions:",
+    "",
+    "The above copyright notice and this permission notice shall be included in",
+    "all copies or substantial portions of the Materials.",
+    "",
+    "MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS KHRONOS",
+    "STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS SPECIFICATIONS AND",
+    "HEADER INFORMATION ARE LOCATED AT https://www.khronos.org/registry/ ",
+    "",
+    "THE MATERIALS ARE PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS",
+    "OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,",
+    "FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL",
+    "THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER",
+    "LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING",
+    "FROM,OUT OF OR IN CONNECTION WITH THE MATERIALS OR THE USE OR OTHER DEALINGS",
+    "IN THE MATERIALS."
+  ],
+  "version" : 100,
+  "revision" : 2,
+  "instructions" : [
+    {
+      "opname" : "acos",
+      "opcode" : 0,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "acosh",
+      "opcode" : 1,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "acospi",
+      "opcode" : 2,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "asin",
+      "opcode" : 3,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "asinh",
+      "opcode" : 4,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "asinpi",
+      "opcode" : 5,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "atan",
+      "opcode" : 6,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "atan2",
+      "opcode" : 7,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'y'" },
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "atanh",
+      "opcode" : 8,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "atanpi",
+      "opcode" : 9,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "atan2pi",
+      "opcode" : 10,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'y'" },
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "cbrt",
+      "opcode" : 11,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "ceil",
+      "opcode" : 12,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "copysign",
+      "opcode" : 13,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "cos",
+      "opcode" : 14,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "cosh",
+      "opcode" : 15,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "cospi",
+      "opcode" : 16,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "erfc",
+      "opcode" : 17,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "erf",
+      "opcode" : 18,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "exp",
+      "opcode" : 19,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "exp2",
+      "opcode" : 20,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "exp10",
+      "opcode" : 21,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "expm1",
+      "opcode" : 22,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "fabs",
+      "opcode" : 23,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "fdim",
+      "opcode" : 24,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "floor",
+      "opcode" : 25,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "fma",
+      "opcode" : 26,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'a'" },
+        { "kind" : "IdRef", "name" : "'b'" },
+        { "kind" : "IdRef", "name" : "'c'" }
+      ]
+    },
+    {
+      "opname" : "fmax",
+      "opcode" : 27,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "fmin",
+      "opcode" : 28,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "fmod",
+      "opcode" : 29,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "fract",
+      "opcode" : 30,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'ptr'" }
+      ]
+    },
+    {
+      "opname" : "frexp",
+      "opcode" : 31,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'exp'" }
+      ]
+    },
+    {
+      "opname" : "hypot",
+      "opcode" : 32,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "ilogb",
+      "opcode" : 33,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "ldexp",
+      "opcode" : 34,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'k'" }
+      ]
+    },
+    {
+      "opname" : "lgamma",
+      "opcode" : 35,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "lgamma_r",
+      "opcode" : 36,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'signp'" }
+      ]
+    },
+    {
+      "opname" : "log",
+      "opcode" : 37,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "log2",
+      "opcode" : 38,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "log10",
+      "opcode" : 39,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "log1p",
+      "opcode" : 40,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "logb",
+      "opcode" : 41,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "mad",
+      "opcode" : 42,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'a'" },
+        { "kind" : "IdRef", "name" : "'b'" },
+        { "kind" : "IdRef", "name" : "'c'" }
+      ]
+    },
+    {
+      "opname" : "maxmag",
+      "opcode" : 43,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "minmag",
+      "opcode" : 44,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "modf",
+      "opcode" : 45,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'iptr'" }
+      ]
+    },
+    {
+      "opname" : "nan",
+      "opcode" : 46,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'nancode'" }
+      ]
+    },
+    {
+      "opname" : "nextafter",
+      "opcode" : 47,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "pow",
+      "opcode" : 48,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y" }
+      ]
+    },
+    {
+      "opname" : "pown",
+      "opcode" : 49,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "powr",
+      "opcode" : 50,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "remainder",
+      "opcode" : 51,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "remquo",
+      "opcode" : 52,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" },
+        { "kind" : "IdRef", "name" : "'quo'" }
+      ]
+    },
+    {
+      "opname" : "rint",
+      "opcode" : 53,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "rootn",
+      "opcode" : 54,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "round",
+      "opcode" : 55,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "rsqrt",
+      "opcode" : 56,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "sin",
+      "opcode" : 57,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "sincos",
+      "opcode" : 58,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'cosval'" }
+      ]
+    },
+    {
+      "opname" : "sinh",
+      "opcode" : 59,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "sinpi",
+      "opcode" : 60,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "sqrt",
+      "opcode" : 61,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "tan",
+      "opcode" : 62,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "tanh",
+      "opcode" : 63,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "tanpi",
+      "opcode" : 64,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "tgamma",
+      "opcode" : 65,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "trunc",
+      "opcode" : 66,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "half_cos",
+      "opcode" : 67,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "half_divide",
+      "opcode" : 68,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "half_exp",
+      "opcode" : 69,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "half_exp2",
+      "opcode" : 70,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "half_exp10",
+      "opcode" : 71,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "half_log",
+      "opcode" : 72,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "half_log2",
+      "opcode" : 73,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "half_log10",
+      "opcode" : 74,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "half_powr",
+      "opcode" : 75,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "half_recip",
+      "opcode" : 76,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "half_rsqrt",
+      "opcode" : 77,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "half_sin",
+      "opcode" : 78,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "half_sqrt",
+      "opcode" : 79,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "half_tan",
+      "opcode" : 80,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "native_cos",
+      "opcode" : 81,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "native_divide",
+      "opcode" : 82,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "native_exp",
+      "opcode" : 83,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "native_exp2",
+      "opcode" : 84,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "native_exp10",
+      "opcode" : 85,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "native_log",
+      "opcode" : 86,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "native_log2",
+      "opcode" : 87,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "native_log10",
+      "opcode" : 88,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "native_powr",
+      "opcode" : 89,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "native_recip",
+      "opcode" : 90,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "native_rsqrt",
+      "opcode" : 91,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "native_sin",
+      "opcode" : 92,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "native_sqrt",
+      "opcode" : 93,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "native_tan",
+      "opcode" : 94,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "s_abs",
+      "opcode" : 141,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "s_abs_diff",
+      "opcode" : 142,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "s_add_sat",
+      "opcode" : 143,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "u_add_sat",
+      "opcode" : 144,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "s_hadd",
+      "opcode" : 145,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "u_hadd",
+      "opcode" : 146,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "s_rhadd",
+      "opcode" : 147,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "u_rhadd",
+      "opcode" : 148,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "s_clamp",
+      "opcode" : 149,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'minval'" },
+        { "kind" : "IdRef", "name" : "'maxval'" }
+      ]
+    },
+    {
+      "opname" : "u_clamp",
+      "opcode" : 150,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'minval'" },
+        { "kind" : "IdRef", "name" : "'maxval'" }
+      ]
+    },
+    {
+      "opname" : "clz",
+      "opcode" : 151,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "ctz",
+      "opcode" : 152,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "s_mad_hi",
+      "opcode" : 153,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'a'" },
+        { "kind" : "IdRef", "name" : "'b'" },
+        { "kind" : "IdRef", "name" : "'c'" }
+      ]
+    },
+    {
+      "opname" : "u_mad_sat",
+      "opcode" : 154,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" },
+        { "kind" : "IdRef", "name" : "'z'" }
+      ]
+    },
+    {
+      "opname" : "s_mad_sat",
+      "opcode" : 155,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" },
+        { "kind" : "IdRef", "name" : "'z'" }
+      ]
+    },
+    {
+      "opname" : "s_max",
+      "opcode" : 156,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "u_max",
+      "opcode" : 157,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "s_min",
+      "opcode" : 158,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "u_min",
+      "opcode" : 159,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "s_mul_hi",
+      "opcode" : 160,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "rotate",
+      "opcode" : 161,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'v'" },
+        { "kind" : "IdRef", "name" : "'i'" }
+      ]
+    },
+    {
+      "opname" : "s_sub_sat",
+      "opcode" : 162,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "u_sub_sat",
+      "opcode" : 163,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "u_upsample",
+      "opcode" : 164,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'hi'" },
+        { "kind" : "IdRef", "name" : "'lo'" }
+      ]
+    },
+    {
+      "opname" : "s_upsample",
+      "opcode" : 165,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'hi'" },
+        { "kind" : "IdRef", "name" : "'lo'" }
+      ]
+    },
+    {
+      "opname" : "popcount",
+      "opcode" : 166,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "s_mad24",
+      "opcode" : 167,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" },
+        { "kind" : "IdRef", "name" : "'z'" }
+      ]
+    },
+    {
+      "opname" : "u_mad24",
+      "opcode" : 168,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" },
+        { "kind" : "IdRef", "name" : "'z'" }
+      ]
+    },
+    {
+      "opname" : "s_mul24",
+      "opcode" : 169,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "u_mul24",
+      "opcode" : 170,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "u_abs",
+      "opcode" : 201,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "u_abs_diff",
+      "opcode" : 202,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "u_mul_hi",
+      "opcode" : 203,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "u_mad_hi",
+      "opcode" : 204,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'a'" },
+        { "kind" : "IdRef", "name" : "'b'" },
+        { "kind" : "IdRef", "name" : "'c'" }
+      ]
+    },
+    {
+      "opname" : "fclamp",
+      "opcode" : 95,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'minval'" },
+        { "kind" : "IdRef", "name" : "'maxval'" }
+      ]
+    },
+    {
+      "opname" : "degrees",
+      "opcode" :96,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'radians'" }
+      ]
+    },
+    {
+      "opname" : "fmax_common",
+      "opcode" : 97,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "fmin_common",
+      "opcode" : 98,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "mix",
+      "opcode" : 99,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" },
+        { "kind" : "IdRef", "name" : "'a'" }
+      ]
+    },
+    {
+      "opname" : "radians",
+      "opcode" : 100,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'degrees'" }
+      ]
+    },
+    {
+      "opname" : "step",
+      "opcode" : 101,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'edge'" },
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "smoothstep",
+      "opcode" : 102,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'edge0'" },
+        { "kind" : "IdRef", "name" : "'edge1'" },
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "sign",
+      "opcode" : 103,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "cross",
+      "opcode" : 104,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'p0'" },
+        { "kind" : "IdRef", "name" : "'p1'" }
+      ]
+    },
+    {
+      "opname" : "distance",
+      "opcode" : 105,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'p0'" },
+        { "kind" : "IdRef", "name" : "'p1'" }
+      ]
+    },
+    {
+      "opname" : "length",
+      "opcode" : 106,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'p'" }
+      ]
+    },
+    {
+      "opname" : "normalize",
+      "opcode" : 107,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'p'" }
+      ]
+    },
+    {
+      "opname" : "fast_distance",
+      "opcode" : 108,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'p0'" },
+        { "kind" : "IdRef", "name" : "'p1'" }
+      ]
+    },
+    {
+      "opname" : "fast_length",
+      "opcode" : 109,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'p'" }
+      ]
+    },
+    {
+      "opname" : "fast_normalize",
+      "opcode" : 110,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'p'" }
+      ]
+    },
+    {
+      "opname" : "bitselect",
+      "opcode" : 186,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'a'" },
+        { "kind" : "IdRef", "name" : "'b'" },
+        { "kind" : "IdRef", "name" : "'c'" }
+      ]
+    },
+    {
+      "opname" : "select",
+      "opcode" : 187,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'a'" },
+        { "kind" : "IdRef", "name" : "'b'" },
+        { "kind" : "IdRef", "name" : "'c'" }
+      ]
+    },
+    {
+      "opname" : "vloadn",
+      "opcode" : 171,
+      "operands" : [
+        { "kind" : "IdRef",          "name" : "'offset'" },
+        { "kind" : "IdRef",          "name" : "'p'" },
+        { "kind" : "LiteralInteger", "name" : "'n'" }
+      ]
+    },
+    {
+      "opname" : "vstoren",
+      "opcode" : 172,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'data'" },
+        { "kind" : "IdRef", "name" : "'offset'" },
+        { "kind" : "IdRef", "name" : "'p'" }
+      ]
+    },
+    {
+      "opname" : "vload_half",
+      "opcode" : 173,
+      "operands" : [
+        { "kind" : "IdRef",          "name" : "'offset'" },
+        { "kind" : "IdRef",          "name" : "'p'" }
+      ]
+    },
+    {
+      "opname" : "vload_halfn",
+      "opcode" : 174,
+      "operands" : [
+        { "kind" : "IdRef",          "name" : "'offset'" },
+        { "kind" : "IdRef",          "name" : "'p'" },
+        { "kind" : "LiteralInteger", "name" : "'n'" }
+      ]
+    },
+    {
+      "opname" : "vstore_half",
+      "opcode" : 175,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'data'" },
+        { "kind" : "IdRef", "name" : "'offset'" },
+        { "kind" : "IdRef", "name" : "'p'" }
+      ]
+    },
+    {
+      "opname" : "vstore_half_r",
+      "opcode" : 176,
+      "operands" : [
+        { "kind" : "IdRef",          "name" : "'data'" },
+        { "kind" : "IdRef",          "name" : "'offset'" },
+        { "kind" : "IdRef",          "name" : "'p'" },
+        { "kind" : "FPRoundingMode", "name" : "'mode'" }
+      ]
+    },
+    {
+      "opname" : "vstore_halfn",
+      "opcode" : 177,
+      "operands" : [
+        { "kind" : "IdRef",          "name" : "'data'" },
+        { "kind" : "IdRef",          "name" : "'offset'" },
+        { "kind" : "IdRef",          "name" : "'p'" }
+      ]
+    },
+    {
+      "opname" : "vstore_halfn_r",
+      "opcode" : 178,
+      "operands" : [
+        { "kind" : "IdRef",          "name" : "'data'" },
+        { "kind" : "IdRef",          "name" : "'offset'" },
+        { "kind" : "IdRef",          "name" : "'p'" },
+        { "kind" : "FPRoundingMode", "name" : "'mode'" }
+      ]
+    },
+    {
+      "opname" : "vloada_halfn",
+      "opcode" : 179,
+      "operands" : [
+        { "kind" : "IdRef",          "name" : "'offset'" },
+        { "kind" : "IdRef",          "name" : "'p'" },
+        { "kind" : "LiteralInteger", "name" : "'n'" }
+      ]
+    },
+    {
+      "opname" : "vstorea_halfn",
+      "opcode" : 180,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'data'" },
+        { "kind" : "IdRef", "name" : "'offset'" },
+        { "kind" : "IdRef", "name" : "'p'" }
+      ]
+    },
+    {
+      "opname" : "vstorea_halfn_r",
+      "opcode" : 181,
+      "operands" : [
+        { "kind" : "IdRef",          "name" : "'data'" },
+        { "kind" : "IdRef",          "name" : "'offset'" },
+        { "kind" : "IdRef",          "name" : "'p'" },
+        { "kind" : "FPRoundingMode", "name" : "'mode'" }
+      ]
+    },
+    {
+      "opname" : "shuffle",
+      "opcode" : 182,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'shuffle mask'" }
+      ]
+    },
+    {
+      "opname" : "shuffle2",
+      "opcode" : 183,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" },
+        { "kind" : "IdRef", "name" : "'shuffle mask'" }
+      ]
+    },
+    {
+      "opname" : "printf",
+      "opcode" : 184,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'format'" },
+        { "kind" : "IdRef", "name" : "'additional arguments'", "quantifier" : "*" }
+      ]
+    },
+    {
+      "opname" : "prefetch",
+      "opcode" : 185,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'ptr'" },
+        { "kind" : "IdRef", "name" : "'num elements'" }
+      ]
+    }
+  ]
+}
diff --git a/libs/spirv-headers/spirv/1.0/spirv.core.grammar.json b/libs/spirv-headers/spirv/1.0/spirv.core.grammar.json
new file mode 100644
index 00000000000..f3cfc4c299b
--- /dev/null
+++ b/libs/spirv-headers/spirv/1.0/spirv.core.grammar.json
@@ -0,0 +1,5775 @@
+{
+  "copyright" : [
+    "Copyright (c) 2014-2016 The Khronos Group Inc.",
+    "",
+    "Permission is hereby granted, free of charge, to any person obtaining a copy",
+    "of this software and/or associated documentation files (the \"Materials\"),",
+    "to deal in the Materials without restriction, including without limitation",
+    "the rights to use, copy, modify, merge, publish, distribute, sublicense,",
+    "and/or sell copies of the Materials, and to permit persons to whom the",
+    "Materials are furnished to do so, subject to the following conditions:",
+    "",
+    "The above copyright notice and this permission notice shall be included in",
+    "all copies or substantial portions of the Materials.",
+    "",
+    "MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS KHRONOS",
+    "STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS SPECIFICATIONS AND",
+    "HEADER INFORMATION ARE LOCATED AT https://www.khronos.org/registry/ ",
+    "",
+    "THE MATERIALS ARE PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS",
+    "OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,",
+    "FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL",
+    "THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER",
+    "LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING",
+    "FROM,OUT OF OR IN CONNECTION WITH THE MATERIALS OR THE USE OR OTHER DEALINGS",
+    "IN THE MATERIALS."
+  ],
+  "magic_number" : "0x07230203",
+  "major_version" : 1,
+  "minor_version" : 0,
+  "revision" : 12,
+  "instructions" : [
+    {
+      "opname" : "OpNop",
+      "opcode" : 0
+    },
+    {
+      "opname" : "OpUndef",
+      "opcode" : 1,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" }
+      ]
+    },
+    {
+      "opname" : "OpSourceContinued",
+      "opcode" : 2,
+      "operands" : [
+        { "kind" : "LiteralString", "name" : "'Continued Source'" }
+      ]
+    },
+    {
+      "opname" : "OpSource",
+      "opcode" : 3,
+      "operands" : [
+        { "kind" : "SourceLanguage" },
+        { "kind" : "LiteralInteger",                     "name" : "'Version'" },
+        { "kind" : "IdRef",          "quantifier" : "?", "name" : "'File'" },
+        { "kind" : "LiteralString",  "quantifier" : "?", "name" : "'Source'" }
+      ]
+    },
+    {
+      "opname" : "OpSourceExtension",
+      "opcode" : 4,
+      "operands" : [
+        { "kind" : "LiteralString", "name" : "'Extension'" }
+      ]
+    },
+    {
+      "opname" : "OpName",
+      "opcode" : 5,
+      "operands" : [
+        { "kind" : "IdRef",         "name" : "'Target'" },
+        { "kind" : "LiteralString", "name" : "'Name'" }
+      ]
+    },
+    {
+      "opname" : "OpMemberName",
+      "opcode" : 6,
+      "operands" : [
+        { "kind" : "IdRef",          "name" : "'Type'" },
+        { "kind" : "LiteralInteger", "name" : "'Member'" },
+        { "kind" : "LiteralString",  "name" : "'Name'" }
+      ]
+    },
+    {
+      "opname" : "OpString",
+      "opcode" : 7,
+      "operands" : [
+        { "kind" : "IdResult" },
+        { "kind" : "LiteralString", "name" : "'String'" }
+      ]
+    },
+    {
+      "opname" : "OpLine",
+      "opcode" : 8,
+      "operands" : [
+        { "kind" : "IdRef",          "name" : "'File'" },
+        { "kind" : "LiteralInteger", "name" : "'Line'" },
+        { "kind" : "LiteralInteger", "name" : "'Column'" }
+      ]
+    },
+    {
+      "opname" : "OpExtension",
+      "opcode" : 10,
+      "operands" : [
+        { "kind" : "LiteralString", "name" : "'Name'" }
+      ]
+    },
+    {
+      "opname" : "OpExtInstImport",
+      "opcode" : 11,
+      "operands" : [
+        { "kind" : "IdResult" },
+        { "kind" : "LiteralString", "name" : "'Name'" }
+      ]
+    },
+    {
+      "opname" : "OpExtInst",
+      "opcode" : 12,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",                                     "name" : "'Set'" },
+        { "kind" : "LiteralExtInstInteger",                     "name" : "'Instruction'" },
+        { "kind" : "IdRef",                 "quantifier" : "*", "name" : "'Operand 1', +\n'Operand 2', +\n..." }
+      ]
+    },
+    {
+      "opname" : "OpMemoryModel",
+      "opcode" : 14,
+      "operands" : [
+        { "kind" : "AddressingModel" },
+        { "kind" : "MemoryModel" }
+      ]
+    },
+    {
+      "opname" : "OpEntryPoint",
+      "opcode" : 15,
+      "operands" : [
+        { "kind" : "ExecutionModel" },
+        { "kind" : "IdRef",                              "name" : "'Entry Point'" },
+        { "kind" : "LiteralString",                      "name" : "'Name'" },
+        { "kind" : "IdRef",          "quantifier" : "*", "name" : "'Interface'" }
+      ]
+    },
+    {
+      "opname" : "OpExecutionMode",
+      "opcode" : 16,
+      "operands" : [
+        { "kind" : "IdRef",         "name" : "'Entry Point'" },
+        { "kind" : "ExecutionMode", "name" : "'Mode'" }
+      ]
+    },
+    {
+      "opname" : "OpCapability",
+      "opcode" : 17,
+      "operands" : [
+        { "kind" : "Capability", "name" : "'Capability'" }
+      ]
+    },
+    {
+      "opname" : "OpTypeVoid",
+      "opcode" : 19,
+      "operands" : [
+        { "kind" : "IdResult" }
+      ]
+    },
+    {
+      "opname" : "OpTypeBool",
+      "opcode" : 20,
+      "operands" : [
+        { "kind" : "IdResult" }
+      ]
+    },
+    {
+      "opname" : "OpTypeInt",
+      "opcode" : 21,
+      "operands" : [
+        { "kind" : "IdResult" },
+        { "kind" : "LiteralInteger", "name" : "'Width'" },
+        { "kind" : "LiteralInteger", "name" : "'Signedness'" }
+      ]
+    },
+    {
+      "opname" : "OpTypeFloat",
+      "opcode" : 22,
+      "operands" : [
+        { "kind" : "IdResult" },
+        { "kind" : "LiteralInteger", "name" : "'Width'" }
+      ]
+    },
+    {
+      "opname" : "OpTypeVector",
+      "opcode" : 23,
+      "operands" : [
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",          "name" : "'Component Type'" },
+        { "kind" : "LiteralInteger", "name" : "'Component Count'" }
+      ]
+    },
+    {
+      "opname" : "OpTypeMatrix",
+      "opcode" : 24,
+      "operands" : [
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",          "name" : "'Column Type'" },
+        { "kind" : "LiteralInteger", "name" : "'Column Count'" }
+      ],
+      "capabilities" : [ "Matrix" ]
+    },
+    {
+      "opname" : "OpTypeImage",
+      "opcode" : 25,
+      "operands" : [
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",                               "name" : "'Sampled Type'" },
+        { "kind" : "Dim" },
+        { "kind" : "LiteralInteger",                      "name" : "'Depth'" },
+        { "kind" : "LiteralInteger",                      "name" : "'Arrayed'" },
+        { "kind" : "LiteralInteger",                      "name" : "'MS'" },
+        { "kind" : "LiteralInteger",                      "name" : "'Sampled'" },
+        { "kind" : "ImageFormat" },
+        { "kind" : "AccessQualifier", "quantifier" : "?" }
+      ]
+    },
+    {
+      "opname" : "OpTypeSampler",
+      "opcode" : 26,
+      "operands" : [
+        { "kind" : "IdResult" }
+      ]
+    },
+    {
+      "opname" : "OpTypeSampledImage",
+      "opcode" : 27,
+      "operands" : [
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",    "name" : "'Image Type'" }
+      ]
+    },
+    {
+      "opname" : "OpTypeArray",
+      "opcode" : 28,
+      "operands" : [
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",    "name" : "'Element Type'" },
+        { "kind" : "IdRef",    "name" : "'Length'" }
+      ]
+    },
+    {
+      "opname" : "OpTypeRuntimeArray",
+      "opcode" : 29,
+      "operands" : [
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",    "name" : "'Element Type'" }
+      ],
+      "capabilities" : [ "Shader" ]
+    },
+    {
+      "opname" : "OpTypeStruct",
+      "opcode" : 30,
+      "operands" : [
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",    "quantifier" : "*", "name" : "'Member 0 type', +\n'member 1 type', +\n..." }
+      ]
+    },
+    {
+      "opname" : "OpTypeOpaque",
+      "opcode" : 31,
+      "operands" : [
+        { "kind" : "IdResult" },
+        { "kind" : "LiteralString", "name" : "The name of the opaque type." }
+      ],
+      "capabilities" : [ "Kernel" ]
+    },
+    {
+      "opname" : "OpTypePointer",
+      "opcode" : 32,
+      "operands" : [
+        { "kind" : "IdResult" },
+        { "kind" : "StorageClass" },
+        { "kind" : "IdRef",        "name" : "'Type'" }
+      ]
+    },
+    {
+      "opname" : "OpTypeFunction",
+      "opcode" : 33,
+      "operands" : [
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",                        "name" : "'Return Type'" },
+        { "kind" : "IdRef",    "quantifier" : "*", "name" : "'Parameter 0 Type', +\n'Parameter 1 Type', +\n..." }
+      ]
+    },
+    {
+      "opname" : "OpTypeEvent",
+      "opcode" : 34,
+      "operands" : [
+        { "kind" : "IdResult" }
+      ],
+      "capabilities" : [ "Kernel" ]
+    },
+    {
+      "opname" : "OpTypeDeviceEvent",
+      "opcode" : 35,
+      "operands" : [
+        { "kind" : "IdResult" }
+      ],
+      "capabilities" : [ "DeviceEnqueue" ]
+    },
+    {
+      "opname" : "OpTypeReserveId",
+      "opcode" : 36,
+      "operands" : [
+        { "kind" : "IdResult" }
+      ],
+      "capabilities" : [ "Pipes" ]
+    },
+    {
+      "opname" : "OpTypeQueue",
+      "opcode" : 37,
+      "operands" : [
+        { "kind" : "IdResult" }
+      ],
+      "capabilities" : [ "DeviceEnqueue" ]
+    },
+    {
+      "opname" : "OpTypePipe",
+      "opcode" : 38,
+      "operands" : [
+        { "kind" : "IdResult" },
+        { "kind" : "AccessQualifier", "name" : "'Qualifier'" }
+      ],
+      "capabilities" : [ "Pipes" ]
+    },
+    {
+      "opname" : "OpTypeForwardPointer",
+      "opcode" : 39,
+      "operands" : [
+        { "kind" : "IdRef",        "name" : "'Pointer Type'" },
+        { "kind" : "StorageClass" }
+      ],
+      "capabilities" : [ "Addresses" ]
+    },
+    {
+      "opname" : "OpConstantTrue",
+      "opcode" : 41,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" }
+      ]
+    },
+    {
+      "opname" : "OpConstantFalse",
+      "opcode" : 42,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" }
+      ]
+    },
+    {
+      "opname" : "OpConstant",
+      "opcode" : 43,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "LiteralContextDependentNumber", "name" : "'Value'" }
+      ]
+    },
+    {
+      "opname" : "OpConstantComposite",
+      "opcode" : 44,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "quantifier" : "*", "name" : "'Constituents'" }
+      ]
+    },
+    {
+      "opname" : "OpConstantSampler",
+      "opcode" : 45,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "SamplerAddressingMode" },
+        { "kind" : "LiteralInteger",        "name" : "'Param'" },
+        { "kind" : "SamplerFilterMode" }
+      ],
+      "capabilities" : [ "LiteralSampler" ]
+    },
+    {
+      "opname" : "OpConstantNull",
+      "opcode" : 46,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" }
+      ]
+    },
+    {
+      "opname" : "OpSpecConstantTrue",
+      "opcode" : 48,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" }
+      ]
+    },
+    {
+      "opname" : "OpSpecConstantFalse",
+      "opcode" : 49,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" }
+      ]
+    },
+    {
+      "opname" : "OpSpecConstant",
+      "opcode" : 50,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "LiteralContextDependentNumber", "name" : "'Value'" }
+      ]
+    },
+    {
+      "opname" : "OpSpecConstantComposite",
+      "opcode" : 51,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "quantifier" : "*", "name" : "'Constituents'" }
+      ]
+    },
+    {
+      "opname" : "OpSpecConstantOp",
+      "opcode" : 52,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "LiteralSpecConstantOpInteger", "name" : "'Opcode'" }
+      ]
+    },
+    {
+      "opname" : "OpFunction",
+      "opcode" : 54,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "FunctionControl" },
+        { "kind" : "IdRef",           "name" : "'Function Type'" }
+      ]
+    },
+    {
+      "opname" : "OpFunctionParameter",
+      "opcode" : 55,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" }
+      ]
+    },
+    {
+      "opname" : "OpFunctionEnd",
+      "opcode" : 56
+    },
+    {
+      "opname" : "OpFunctionCall",
+      "opcode" : 57,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",                            "name" : "'Function'" },
+        { "kind" : "IdRef",        "quantifier" : "*", "name" : "'Argument 0', +\n'Argument 1', +\n..." }
+      ]
+    },
+    {
+      "opname" : "OpVariable",
+      "opcode" : 59,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "StorageClass" },
+        { "kind" : "IdRef",        "quantifier" : "?", "name" : "'Initializer'" }
+      ]
+    },
+    {
+      "opname" : "OpImageTexelPointer",
+      "opcode" : 60,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Image'" },
+        { "kind" : "IdRef",        "name" : "'Coordinate'" },
+        { "kind" : "IdRef",        "name" : "'Sample'" }
+      ]
+    },
+    {
+      "opname" : "OpLoad",
+      "opcode" : 61,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",                            "name" : "'Pointer'" },
+        { "kind" : "MemoryAccess", "quantifier" : "?" }
+      ]
+    },
+    {
+      "opname" : "OpStore",
+      "opcode" : 62,
+      "operands" : [
+        { "kind" : "IdRef",                            "name" : "'Pointer'" },
+        { "kind" : "IdRef",                            "name" : "'Object'" },
+        { "kind" : "MemoryAccess", "quantifier" : "?" }
+      ]
+    },
+    {
+      "opname" : "OpCopyMemory",
+      "opcode" : 63,
+      "operands" : [
+        { "kind" : "IdRef",                            "name" : "'Target'" },
+        { "kind" : "IdRef",                            "name" : "'Source'" },
+        { "kind" : "MemoryAccess", "quantifier" : "?" }
+      ]
+    },
+    {
+      "opname" : "OpCopyMemorySized",
+      "opcode" : 64,
+      "operands" : [
+        { "kind" : "IdRef",                            "name" : "'Target'" },
+        { "kind" : "IdRef",                            "name" : "'Source'" },
+        { "kind" : "IdRef",                            "name" : "'Size'" },
+        { "kind" : "MemoryAccess", "quantifier" : "?" }
+      ],
+      "capabilities" : [ "Addresses" ]
+    },
+    {
+      "opname" : "OpAccessChain",
+      "opcode" : 65,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",                            "name" : "'Base'" },
+        { "kind" : "IdRef",        "quantifier" : "*", "name" : "'Indexes'" }
+      ]
+    },
+    {
+      "opname" : "OpInBoundsAccessChain",
+      "opcode" : 66,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",                            "name" : "'Base'" },
+        { "kind" : "IdRef",        "quantifier" : "*", "name" : "'Indexes'" }
+      ]
+    },
+    {
+      "opname" : "OpPtrAccessChain",
+      "opcode" : 67,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",                            "name" : "'Base'" },
+        { "kind" : "IdRef",                            "name" : "'Element'" },
+        { "kind" : "IdRef",        "quantifier" : "*", "name" : "'Indexes'" }
+      ],
+      "capabilities" : [
+        "Addresses",
+        "VariablePointers",
+        "VariablePointersStorageBuffer"
+      ]
+    },
+    {
+      "opname" : "OpArrayLength",
+      "opcode" : 68,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",          "name" : "'Structure'" },
+        { "kind" : "LiteralInteger", "name" : "'Array member'" }
+      ],
+      "capabilities" : [ "Shader" ]
+    },
+    {
+      "opname" : "OpGenericPtrMemSemantics",
+      "opcode" : 69,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Pointer'" }
+      ],
+      "capabilities" : [ "Kernel" ]
+    },
+    {
+      "opname" : "OpInBoundsPtrAccessChain",
+      "opcode" : 70,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",                            "name" : "'Base'" },
+        { "kind" : "IdRef",                            "name" : "'Element'" },
+        { "kind" : "IdRef",        "quantifier" : "*", "name" : "'Indexes'" }
+      ],
+      "capabilities" : [ "Addresses" ]
+    },
+    {
+      "opname" : "OpDecorate",
+      "opcode" : 71,
+      "operands" : [
+        { "kind" : "IdRef",      "name" : "'Target'" },
+        { "kind" : "Decoration" }
+      ]
+    },
+    {
+      "opname" : "OpMemberDecorate",
+      "opcode" : 72,
+      "operands" : [
+        { "kind" : "IdRef",          "name" : "'Structure Type'" },
+        { "kind" : "LiteralInteger", "name" : "'Member'" },
+        { "kind" : "Decoration" }
+      ]
+    },
+    {
+      "opname" : "OpDecorationGroup",
+      "opcode" : 73,
+      "operands" : [
+        { "kind" : "IdResult" }
+      ]
+    },
+    {
+      "opname" : "OpGroupDecorate",
+      "opcode" : 74,
+      "operands" : [
+        { "kind" : "IdRef",                     "name" : "'Decoration Group'" },
+        { "kind" : "IdRef", "quantifier" : "*", "name" : "'Targets'" }
+      ]
+    },
+    {
+      "opname" : "OpGroupMemberDecorate",
+      "opcode" : 75,
+      "operands" : [
+        { "kind" : "IdRef",                                       "name" : "'Decoration Group'" },
+        { "kind" : "PairIdRefLiteralInteger", "quantifier" : "*", "name" : "'Targets'" }
+      ]
+    },
+    {
+      "opname" : "OpVectorExtractDynamic",
+      "opcode" : 77,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Vector'" },
+        { "kind" : "IdRef",        "name" : "'Index'" }
+      ]
+    },
+    {
+      "opname" : "OpVectorInsertDynamic",
+      "opcode" : 78,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Vector'" },
+        { "kind" : "IdRef",        "name" : "'Component'" },
+        { "kind" : "IdRef",        "name" : "'Index'" }
+      ]
+    },
+    {
+      "opname" : "OpVectorShuffle",
+      "opcode" : 79,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",                              "name" : "'Vector 1'" },
+        { "kind" : "IdRef",                              "name" : "'Vector 2'" },
+        { "kind" : "LiteralInteger", "quantifier" : "*", "name" : "'Components'" }
+      ]
+    },
+    {
+      "opname" : "OpCompositeConstruct",
+      "opcode" : 80,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "quantifier" : "*", "name" : "'Constituents'" }
+      ]
+    },
+    {
+      "opname" : "OpCompositeExtract",
+      "opcode" : 81,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",                              "name" : "'Composite'" },
+        { "kind" : "LiteralInteger", "quantifier" : "*", "name" : "'Indexes'" }
+      ]
+    },
+    {
+      "opname" : "OpCompositeInsert",
+      "opcode" : 82,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",                              "name" : "'Object'" },
+        { "kind" : "IdRef",                              "name" : "'Composite'" },
+        { "kind" : "LiteralInteger", "quantifier" : "*", "name" : "'Indexes'" }
+      ]
+    },
+    {
+      "opname" : "OpCopyObject",
+      "opcode" : 83,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand'" }
+      ]
+    },
+    {
+      "opname" : "OpTranspose",
+      "opcode" : 84,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Matrix'" }
+      ],
+      "capabilities" : [ "Matrix" ]
+    },
+    {
+      "opname" : "OpSampledImage",
+      "opcode" : 86,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Image'" },
+        { "kind" : "IdRef",        "name" : "'Sampler'" }
+      ]
+    },
+    {
+      "opname" : "OpImageSampleImplicitLod",
+      "opcode" : 87,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",                             "name" : "'Sampled Image'" },
+        { "kind" : "IdRef",                             "name" : "'Coordinate'" },
+        { "kind" : "ImageOperands", "quantifier" : "?" }
+      ],
+      "capabilities" : [ "Shader" ]
+    },
+    {
+      "opname" : "OpImageSampleExplicitLod",
+      "opcode" : 88,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",         "name" : "'Sampled Image'" },
+        { "kind" : "IdRef",         "name" : "'Coordinate'" },
+        { "kind" : "ImageOperands" }
+      ]
+    },
+    {
+      "opname" : "OpImageSampleDrefImplicitLod",
+      "opcode" : 89,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",                             "name" : "'Sampled Image'" },
+        { "kind" : "IdRef",                             "name" : "'Coordinate'" },
+        { "kind" : "IdRef",                             "name" : "'D~ref~'" },
+        { "kind" : "ImageOperands", "quantifier" : "?" }
+      ],
+      "capabilities" : [ "Shader" ]
+    },
+    {
+      "opname" : "OpImageSampleDrefExplicitLod",
+      "opcode" : 90,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",         "name" : "'Sampled Image'" },
+        { "kind" : "IdRef",         "name" : "'Coordinate'" },
+        { "kind" : "IdRef",         "name" : "'D~ref~'" },
+        { "kind" : "ImageOperands" }
+      ],
+      "capabilities" : [ "Shader" ]
+    },
+    {
+      "opname" : "OpImageSampleProjImplicitLod",
+      "opcode" : 91,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",                             "name" : "'Sampled Image'" },
+        { "kind" : "IdRef",                             "name" : "'Coordinate'" },
+        { "kind" : "ImageOperands", "quantifier" : "?" }
+      ],
+      "capabilities" : [ "Shader" ]
+    },
+    {
+      "opname" : "OpImageSampleProjExplicitLod",
+      "opcode" : 92,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",         "name" : "'Sampled Image'" },
+        { "kind" : "IdRef",         "name" : "'Coordinate'" },
+        { "kind" : "ImageOperands" }
+      ],
+      "capabilities" : [ "Shader" ]
+    },
+    {
+      "opname" : "OpImageSampleProjDrefImplicitLod",
+      "opcode" : 93,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",                             "name" : "'Sampled Image'" },
+        { "kind" : "IdRef",                             "name" : "'Coordinate'" },
+        { "kind" : "IdRef",                             "name" : "'D~ref~'" },
+        { "kind" : "ImageOperands", "quantifier" : "?" }
+      ],
+      "capabilities" : [ "Shader" ]
+    },
+    {
+      "opname" : "OpImageSampleProjDrefExplicitLod",
+      "opcode" : 94,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",         "name" : "'Sampled Image'" },
+        { "kind" : "IdRef",         "name" : "'Coordinate'" },
+        { "kind" : "IdRef",         "name" : "'D~ref~'" },
+        { "kind" : "ImageOperands" }
+      ],
+      "capabilities" : [ "Shader" ]
+    },
+    {
+      "opname" : "OpImageFetch",
+      "opcode" : 95,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",                             "name" : "'Image'" },
+        { "kind" : "IdRef",                             "name" : "'Coordinate'" },
+        { "kind" : "ImageOperands", "quantifier" : "?" }
+      ]
+    },
+    {
+      "opname" : "OpImageGather",
+      "opcode" : 96,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",                             "name" : "'Sampled Image'" },
+        { "kind" : "IdRef",                             "name" : "'Coordinate'" },
+        { "kind" : "IdRef",                             "name" : "'Component'" },
+        { "kind" : "ImageOperands", "quantifier" : "?" }
+      ],
+      "capabilities" : [ "Shader" ]
+    },
+    {
+      "opname" : "OpImageDrefGather",
+      "opcode" : 97,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",                             "name" : "'Sampled Image'" },
+        { "kind" : "IdRef",                             "name" : "'Coordinate'" },
+        { "kind" : "IdRef",                             "name" : "'D~ref~'" },
+        { "kind" : "ImageOperands", "quantifier" : "?" }
+      ],
+      "capabilities" : [ "Shader" ]
+    },
+    {
+      "opname" : "OpImageRead",
+      "opcode" : 98,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",                             "name" : "'Image'" },
+        { "kind" : "IdRef",                             "name" : "'Coordinate'" },
+        { "kind" : "ImageOperands", "quantifier" : "?" }
+      ]
+    },
+    {
+      "opname" : "OpImageWrite",
+      "opcode" : 99,
+      "operands" : [
+        { "kind" : "IdRef",                             "name" : "'Image'" },
+        { "kind" : "IdRef",                             "name" : "'Coordinate'" },
+        { "kind" : "IdRef",                             "name" : "'Texel'" },
+        { "kind" : "ImageOperands", "quantifier" : "?" }
+      ]
+    },
+    {
+      "opname" : "OpImage",
+      "opcode" : 100,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Sampled Image'" }
+      ]
+    },
+    {
+      "opname" : "OpImageQueryFormat",
+      "opcode" : 101,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Image'" }
+      ],
+      "capabilities" : [ "Kernel" ]
+    },
+    {
+      "opname" : "OpImageQueryOrder",
+      "opcode" : 102,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Image'" }
+      ],
+      "capabilities" : [ "Kernel" ]
+    },
+    {
+      "opname" : "OpImageQuerySizeLod",
+      "opcode" : 103,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Image'" },
+        { "kind" : "IdRef",        "name" : "'Level of Detail'" }
+      ],
+      "capabilities" : [ "Kernel", "ImageQuery" ]
+    },
+    {
+      "opname" : "OpImageQuerySize",
+      "opcode" : 104,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Image'" }
+      ],
+      "capabilities" : [ "Kernel", "ImageQuery" ]
+    },
+    {
+      "opname" : "OpImageQueryLod",
+      "opcode" : 105,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Sampled Image'" },
+        { "kind" : "IdRef",        "name" : "'Coordinate'" }
+      ],
+      "capabilities" : [ "ImageQuery" ]
+    },
+    {
+      "opname" : "OpImageQueryLevels",
+      "opcode" : 106,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Image'" }
+      ],
+      "capabilities" : [ "Kernel", "ImageQuery" ]
+    },
+    {
+      "opname" : "OpImageQuerySamples",
+      "opcode" : 107,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Image'" }
+      ],
+      "capabilities" : [ "Kernel", "ImageQuery" ]
+    },
+    {
+      "opname" : "OpConvertFToU",
+      "opcode" : 109,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Float Value'" }
+      ]
+    },
+    {
+      "opname" : "OpConvertFToS",
+      "opcode" : 110,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Float Value'" }
+      ]
+    },
+    {
+      "opname" : "OpConvertSToF",
+      "opcode" : 111,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Signed Value'" }
+      ]
+    },
+    {
+      "opname" : "OpConvertUToF",
+      "opcode" : 112,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Unsigned Value'" }
+      ]
+    },
+    {
+      "opname" : "OpUConvert",
+      "opcode" : 113,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Unsigned Value'" }
+      ]
+    },
+    {
+      "opname" : "OpSConvert",
+      "opcode" : 114,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Signed Value'" }
+      ]
+    },
+    {
+      "opname" : "OpFConvert",
+      "opcode" : 115,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Float Value'" }
+      ]
+    },
+    {
+      "opname" : "OpQuantizeToF16",
+      "opcode" : 116,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Value'" }
+      ]
+    },
+    {
+      "opname" : "OpConvertPtrToU",
+      "opcode" : 117,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Pointer'" }
+      ],
+      "capabilities" : [ "Addresses" ]
+    },
+    {
+      "opname" : "OpSatConvertSToU",
+      "opcode" : 118,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Signed Value'" }
+      ],
+      "capabilities" : [ "Kernel" ]
+    },
+    {
+      "opname" : "OpSatConvertUToS",
+      "opcode" : 119,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Unsigned Value'" }
+      ],
+      "capabilities" : [ "Kernel" ]
+    },
+    {
+      "opname" : "OpConvertUToPtr",
+      "opcode" : 120,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Integer Value'" }
+      ],
+      "capabilities" : [ "Addresses" ]
+    },
+    {
+      "opname" : "OpPtrCastToGeneric",
+      "opcode" : 121,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Pointer'" }
+      ],
+      "capabilities" : [ "Kernel" ]
+    },
+    {
+      "opname" : "OpGenericCastToPtr",
+      "opcode" : 122,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Pointer'" }
+      ],
+      "capabilities" : [ "Kernel" ]
+    },
+    {
+      "opname" : "OpGenericCastToPtrExplicit",
+      "opcode" : 123,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Pointer'" },
+        { "kind" : "StorageClass", "name" : "'Storage'" }
+      ],
+      "capabilities" : [ "Kernel" ]
+    },
+    {
+      "opname" : "OpBitcast",
+      "opcode" : 124,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand'" }
+      ]
+    },
+    {
+      "opname" : "OpSNegate",
+      "opcode" : 126,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand'" }
+      ]
+    },
+    {
+      "opname" : "OpFNegate",
+      "opcode" : 127,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand'" }
+      ]
+    },
+    {
+      "opname" : "OpIAdd",
+      "opcode" : 128,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpFAdd",
+      "opcode" : 129,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpISub",
+      "opcode" : 130,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpFSub",
+      "opcode" : 131,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpIMul",
+      "opcode" : 132,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpFMul",
+      "opcode" : 133,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpUDiv",
+      "opcode" : 134,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpSDiv",
+      "opcode" : 135,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpFDiv",
+      "opcode" : 136,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpUMod",
+      "opcode" : 137,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpSRem",
+      "opcode" : 138,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpSMod",
+      "opcode" : 139,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpFRem",
+      "opcode" : 140,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpFMod",
+      "opcode" : 141,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpVectorTimesScalar",
+      "opcode" : 142,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Vector'" },
+        { "kind" : "IdRef",        "name" : "'Scalar'" }
+      ]
+    },
+    {
+      "opname" : "OpMatrixTimesScalar",
+      "opcode" : 143,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Matrix'" },
+        { "kind" : "IdRef",        "name" : "'Scalar'" }
+      ],
+      "capabilities" : [ "Matrix" ]
+    },
+    {
+      "opname" : "OpVectorTimesMatrix",
+      "opcode" : 144,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Vector'" },
+        { "kind" : "IdRef",        "name" : "'Matrix'" }
+      ],
+      "capabilities" : [ "Matrix" ]
+    },
+    {
+      "opname" : "OpMatrixTimesVector",
+      "opcode" : 145,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Matrix'" },
+        { "kind" : "IdRef",        "name" : "'Vector'" }
+      ],
+      "capabilities" : [ "Matrix" ]
+    },
+    {
+      "opname" : "OpMatrixTimesMatrix",
+      "opcode" : 146,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'LeftMatrix'" },
+        { "kind" : "IdRef",        "name" : "'RightMatrix'" }
+      ],
+      "capabilities" : [ "Matrix" ]
+    },
+    {
+      "opname" : "OpOuterProduct",
+      "opcode" : 147,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Vector 1'" },
+        { "kind" : "IdRef",        "name" : "'Vector 2'" }
+      ],
+      "capabilities" : [ "Matrix" ]
+    },
+    {
+      "opname" : "OpDot",
+      "opcode" : 148,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Vector 1'" },
+        { "kind" : "IdRef",        "name" : "'Vector 2'" }
+      ]
+    },
+    {
+      "opname" : "OpIAddCarry",
+      "opcode" : 149,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpISubBorrow",
+      "opcode" : 150,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpUMulExtended",
+      "opcode" : 151,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpSMulExtended",
+      "opcode" : 152,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpAny",
+      "opcode" : 154,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Vector'" }
+      ]
+    },
+    {
+      "opname" : "OpAll",
+      "opcode" : 155,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Vector'" }
+      ]
+    },
+    {
+      "opname" : "OpIsNan",
+      "opcode" : 156,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "OpIsInf",
+      "opcode" : 157,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "OpIsFinite",
+      "opcode" : 158,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'x'" }
+      ],
+      "capabilities" : [ "Kernel" ]
+    },
+    {
+      "opname" : "OpIsNormal",
+      "opcode" : 159,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'x'" }
+      ],
+      "capabilities" : [ "Kernel" ]
+    },
+    {
+      "opname" : "OpSignBitSet",
+      "opcode" : 160,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'x'" }
+      ],
+      "capabilities" : [ "Kernel" ]
+    },
+    {
+      "opname" : "OpLessOrGreater",
+      "opcode" : 161,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'x'" },
+        { "kind" : "IdRef",        "name" : "'y'" }
+      ],
+      "capabilities" : [ "Kernel" ]
+    },
+    {
+      "opname" : "OpOrdered",
+      "opcode" : 162,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'x'" },
+        { "kind" : "IdRef",        "name" : "'y'" }
+      ],
+      "capabilities" : [ "Kernel" ]
+    },
+    {
+      "opname" : "OpUnordered",
+      "opcode" : 163,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'x'" },
+        { "kind" : "IdRef",        "name" : "'y'" }
+      ],
+      "capabilities" : [ "Kernel" ]
+    },
+    {
+      "opname" : "OpLogicalEqual",
+      "opcode" : 164,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpLogicalNotEqual",
+      "opcode" : 165,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpLogicalOr",
+      "opcode" : 166,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpLogicalAnd",
+      "opcode" : 167,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpLogicalNot",
+      "opcode" : 168,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand'" }
+      ]
+    },
+    {
+      "opname" : "OpSelect",
+      "opcode" : 169,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Condition'" },
+        { "kind" : "IdRef",        "name" : "'Object 1'" },
+        { "kind" : "IdRef",        "name" : "'Object 2'" }
+      ]
+    },
+    {
+      "opname" : "OpIEqual",
+      "opcode" : 170,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpINotEqual",
+      "opcode" : 171,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpUGreaterThan",
+      "opcode" : 172,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpSGreaterThan",
+      "opcode" : 173,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpUGreaterThanEqual",
+      "opcode" : 174,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpSGreaterThanEqual",
+      "opcode" : 175,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpULessThan",
+      "opcode" : 176,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpSLessThan",
+      "opcode" : 177,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpULessThanEqual",
+      "opcode" : 178,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpSLessThanEqual",
+      "opcode" : 179,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpFOrdEqual",
+      "opcode" : 180,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpFUnordEqual",
+      "opcode" : 181,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpFOrdNotEqual",
+      "opcode" : 182,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpFUnordNotEqual",
+      "opcode" : 183,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpFOrdLessThan",
+      "opcode" : 184,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpFUnordLessThan",
+      "opcode" : 185,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpFOrdGreaterThan",
+      "opcode" : 186,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpFUnordGreaterThan",
+      "opcode" : 187,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpFOrdLessThanEqual",
+      "opcode" : 188,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpFUnordLessThanEqual",
+      "opcode" : 189,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpFOrdGreaterThanEqual",
+      "opcode" : 190,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpFUnordGreaterThanEqual",
+      "opcode" : 191,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpShiftRightLogical",
+      "opcode" : 194,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Base'" },
+        { "kind" : "IdRef",        "name" : "'Shift'" }
+      ]
+    },
+    {
+      "opname" : "OpShiftRightArithmetic",
+      "opcode" : 195,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Base'" },
+        { "kind" : "IdRef",        "name" : "'Shift'" }
+      ]
+    },
+    {
+      "opname" : "OpShiftLeftLogical",
+      "opcode" : 196,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Base'" },
+        { "kind" : "IdRef",        "name" : "'Shift'" }
+      ]
+    },
+    {
+      "opname" : "OpBitwiseOr",
+      "opcode" : 197,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpBitwiseXor",
+      "opcode" : 198,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpBitwiseAnd",
+      "opcode" : 199,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpNot",
+      "opcode" : 200,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand'" }
+      ]
+    },
+    {
+      "opname" : "OpBitFieldInsert",
+      "opcode" : 201,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Base'" },
+        { "kind" : "IdRef",        "name" : "'Insert'" },
+        { "kind" : "IdRef",        "name" : "'Offset'" },
+        { "kind" : "IdRef",        "name" : "'Count'" }
+      ],
+      "capabilities" : [ "Shader" ]
+    },
+    {
+      "opname" : "OpBitFieldSExtract",
+      "opcode" : 202,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Base'" },
+        { "kind" : "IdRef",        "name" : "'Offset'" },
+        { "kind" : "IdRef",        "name" : "'Count'" }
+      ],
+      "capabilities" : [ "Shader" ]
+    },
+    {
+      "opname" : "OpBitFieldUExtract",
+      "opcode" : 203,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Base'" },
+        { "kind" : "IdRef",        "name" : "'Offset'" },
+        { "kind" : "IdRef",        "name" : "'Count'" }
+      ],
+      "capabilities" : [ "Shader" ]
+    },
+    {
+      "opname" : "OpBitReverse",
+      "opcode" : 204,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Base'" }
+      ],
+      "capabilities" : [ "Shader" ]
+    },
+    {
+      "opname" : "OpBitCount",
+      "opcode" : 205,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Base'" }
+      ]
+    },
+    {
+      "opname" : "OpDPdx",
+      "opcode" : 207,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'P'" }
+      ],
+      "capabilities" : [ "Shader" ]
+    },
+    {
+      "opname" : "OpDPdy",
+      "opcode" : 208,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'P'" }
+      ],
+      "capabilities" : [ "Shader" ]
+    },
+    {
+      "opname" : "OpFwidth",
+      "opcode" : 209,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'P'" }
+      ],
+      "capabilities" : [ "Shader" ]
+    },
+    {
+      "opname" : "OpDPdxFine",
+      "opcode" : 210,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'P'" }
+      ],
+      "capabilities" : [ "DerivativeControl" ]
+    },
+    {
+      "opname" : "OpDPdyFine",
+      "opcode" : 211,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'P'" }
+      ],
+      "capabilities" : [ "DerivativeControl" ]
+    },
+    {
+      "opname" : "OpFwidthFine",
+      "opcode" : 212,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'P'" }
+      ],
+      "capabilities" : [ "DerivativeControl" ]
+    },
+    {
+      "opname" : "OpDPdxCoarse",
+      "opcode" : 213,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'P'" }
+      ],
+      "capabilities" : [ "DerivativeControl" ]
+    },
+    {
+      "opname" : "OpDPdyCoarse",
+      "opcode" : 214,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'P'" }
+      ],
+      "capabilities" : [ "DerivativeControl" ]
+    },
+    {
+      "opname" : "OpFwidthCoarse",
+      "opcode" : 215,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'P'" }
+      ],
+      "capabilities" : [ "DerivativeControl" ]
+    },
+    {
+      "opname" : "OpEmitVertex",
+      "opcode" : 218,
+      "capabilities" : [ "Geometry" ]
+    },
+    {
+      "opname" : "OpEndPrimitive",
+      "opcode" : 219,
+      "capabilities" : [ "Geometry" ]
+    },
+    {
+      "opname" : "OpEmitStreamVertex",
+      "opcode" : 220,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'Stream'" }
+      ],
+      "capabilities" : [ "GeometryStreams" ]
+    },
+    {
+      "opname" : "OpEndStreamPrimitive",
+      "opcode" : 221,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'Stream'" }
+      ],
+      "capabilities" : [ "GeometryStreams" ]
+    },
+    {
+      "opname" : "OpControlBarrier",
+      "opcode" : 224,
+      "operands" : [
+        { "kind" : "IdScope",           "name" : "'Execution'" },
+        { "kind" : "IdScope",           "name" : "'Memory'" },
+        { "kind" : "IdMemorySemantics", "name" : "'Semantics'" }
+      ]
+    },
+    {
+      "opname" : "OpMemoryBarrier",
+      "opcode" : 225,
+      "operands" : [
+        { "kind" : "IdScope",           "name" : "'Memory'" },
+        { "kind" : "IdMemorySemantics", "name" : "'Semantics'" }
+      ]
+    },
+    {
+      "opname" : "OpAtomicLoad",
+      "opcode" : 227,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",             "name" : "'Pointer'" },
+        { "kind" : "IdScope",           "name" : "'Scope'" },
+        { "kind" : "IdMemorySemantics", "name" : "'Semantics'" }
+      ]
+    },
+    {
+      "opname" : "OpAtomicStore",
+      "opcode" : 228,
+      "operands" : [
+        { "kind" : "IdRef",             "name" : "'Pointer'" },
+        { "kind" : "IdScope",           "name" : "'Scope'" },
+        { "kind" : "IdMemorySemantics", "name" : "'Semantics'" },
+        { "kind" : "IdRef",             "name" : "'Value'" }
+      ]
+    },
+    {
+      "opname" : "OpAtomicExchange",
+      "opcode" : 229,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",             "name" : "'Pointer'" },
+        { "kind" : "IdScope",           "name" : "'Scope'" },
+        { "kind" : "IdMemorySemantics", "name" : "'Semantics'" },
+        { "kind" : "IdRef",             "name" : "'Value'" }
+      ]
+    },
+    {
+      "opname" : "OpAtomicCompareExchange",
+      "opcode" : 230,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",             "name" : "'Pointer'" },
+        { "kind" : "IdScope",           "name" : "'Scope'" },
+        { "kind" : "IdMemorySemantics", "name" : "'Equal'" },
+        { "kind" : "IdMemorySemantics", "name" : "'Unequal'" },
+        { "kind" : "IdRef",             "name" : "'Value'" },
+        { "kind" : "IdRef",             "name" : "'Comparator'" }
+      ]
+    },
+    {
+      "opname" : "OpAtomicCompareExchangeWeak",
+      "opcode" : 231,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",             "name" : "'Pointer'" },
+        { "kind" : "IdScope",           "name" : "'Scope'" },
+        { "kind" : "IdMemorySemantics", "name" : "'Equal'" },
+        { "kind" : "IdMemorySemantics", "name" : "'Unequal'" },
+        { "kind" : "IdRef",             "name" : "'Value'" },
+        { "kind" : "IdRef",             "name" : "'Comparator'" }
+      ],
+      "capabilities" : [ "Kernel" ]
+    },
+    {
+      "opname" : "OpAtomicIIncrement",
+      "opcode" : 232,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",             "name" : "'Pointer'" },
+        { "kind" : "IdScope",           "name" : "'Scope'" },
+        { "kind" : "IdMemorySemantics", "name" : "'Semantics'" }
+      ]
+    },
+    {
+      "opname" : "OpAtomicIDecrement",
+      "opcode" : 233,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",             "name" : "'Pointer'" },
+        { "kind" : "IdScope",           "name" : "'Scope'" },
+        { "kind" : "IdMemorySemantics", "name" : "'Semantics'" }
+      ]
+    },
+    {
+      "opname" : "OpAtomicIAdd",
+      "opcode" : 234,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",             "name" : "'Pointer'" },
+        { "kind" : "IdScope",           "name" : "'Scope'" },
+        { "kind" : "IdMemorySemantics", "name" : "'Semantics'" },
+        { "kind" : "IdRef",             "name" : "'Value'" }
+      ]
+    },
+    {
+      "opname" : "OpAtomicISub",
+      "opcode" : 235,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",             "name" : "'Pointer'" },
+        { "kind" : "IdScope",           "name" : "'Scope'" },
+        { "kind" : "IdMemorySemantics", "name" : "'Semantics'" },
+        { "kind" : "IdRef",             "name" : "'Value'" }
+      ]
+    },
+    {
+      "opname" : "OpAtomicSMin",
+      "opcode" : 236,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",             "name" : "'Pointer'" },
+        { "kind" : "IdScope",           "name" : "'Scope'" },
+        { "kind" : "IdMemorySemantics", "name" : "'Semantics'" },
+        { "kind" : "IdRef",             "name" : "'Value'" }
+      ]
+    },
+    {
+      "opname" : "OpAtomicUMin",
+      "opcode" : 237,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",             "name" : "'Pointer'" },
+        { "kind" : "IdScope",           "name" : "'Scope'" },
+        { "kind" : "IdMemorySemantics", "name" : "'Semantics'" },
+        { "kind" : "IdRef",             "name" : "'Value'" }
+      ]
+    },
+    {
+      "opname" : "OpAtomicSMax",
+      "opcode" : 238,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",             "name" : "'Pointer'" },
+        { "kind" : "IdScope",           "name" : "'Scope'" },
+        { "kind" : "IdMemorySemantics", "name" : "'Semantics'" },
+        { "kind" : "IdRef",             "name" : "'Value'" }
+      ]
+    },
+    {
+      "opname" : "OpAtomicUMax",
+      "opcode" : 239,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",             "name" : "'Pointer'" },
+        { "kind" : "IdScope",           "name" : "'Scope'" },
+        { "kind" : "IdMemorySemantics", "name" : "'Semantics'" },
+        { "kind" : "IdRef",             "name" : "'Value'" }
+      ]
+    },
+    {
+      "opname" : "OpAtomicAnd",
+      "opcode" : 240,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",             "name" : "'Pointer'" },
+        { "kind" : "IdScope",           "name" : "'Scope'" },
+        { "kind" : "IdMemorySemantics", "name" : "'Semantics'" },
+        { "kind" : "IdRef",             "name" : "'Value'" }
+      ]
+    },
+    {
+      "opname" : "OpAtomicOr",
+      "opcode" : 241,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",             "name" : "'Pointer'" },
+        { "kind" : "IdScope",           "name" : "'Scope'" },
+        { "kind" : "IdMemorySemantics", "name" : "'Semantics'" },
+        { "kind" : "IdRef",             "name" : "'Value'" }
+      ]
+    },
+    {
+      "opname" : "OpAtomicXor",
+      "opcode" : 242,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",             "name" : "'Pointer'" },
+        { "kind" : "IdScope",           "name" : "'Scope'" },
+        { "kind" : "IdMemorySemantics", "name" : "'Semantics'" },
+        { "kind" : "IdRef",             "name" : "'Value'" }
+      ]
+    },
+    {
+      "opname" : "OpPhi",
+      "opcode" : 245,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "PairIdRefIdRef", "quantifier" : "*", "name" : "'Variable, Parent, ...'" }
+      ]
+    },
+    {
+      "opname" : "OpLoopMerge",
+      "opcode" : 246,
+      "operands" : [
+        { "kind" : "IdRef",       "name" : "'Merge Block'" },
+        { "kind" : "IdRef",       "name" : "'Continue Target'" },
+        { "kind" : "LoopControl" }
+      ]
+    },
+    {
+      "opname" : "OpSelectionMerge",
+      "opcode" : 247,
+      "operands" : [
+        { "kind" : "IdRef",            "name" : "'Merge Block'" },
+        { "kind" : "SelectionControl" }
+      ]
+    },
+    {
+      "opname" : "OpLabel",
+      "opcode" : 248,
+      "operands" : [
+        { "kind" : "IdResult" }
+      ]
+    },
+    {
+      "opname" : "OpBranch",
+      "opcode" : 249,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'Target Label'" }
+      ]
+    },
+    {
+      "opname" : "OpBranchConditional",
+      "opcode" : 250,
+      "operands" : [
+        { "kind" : "IdRef",                              "name" : "'Condition'" },
+        { "kind" : "IdRef",                              "name" : "'True Label'" },
+        { "kind" : "IdRef",                              "name" : "'False Label'" },
+        { "kind" : "LiteralInteger", "quantifier" : "*", "name" : "'Branch weights'" }
+      ]
+    },
+    {
+      "opname" : "OpSwitch",
+      "opcode" : 251,
+      "operands" : [
+        { "kind" : "IdRef",                                       "name" : "'Selector'" },
+        { "kind" : "IdRef",                                       "name" : "'Default'" },
+        { "kind" : "PairLiteralIntegerIdRef", "quantifier" : "*", "name" : "'Target'" }
+      ]
+    },
+    {
+      "opname" : "OpKill",
+      "opcode" : 252,
+      "capabilities" : [ "Shader" ]
+    },
+    {
+      "opname" : "OpReturn",
+      "opcode" : 253
+    },
+    {
+      "opname" : "OpReturnValue",
+      "opcode" : 254,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'Value'" }
+      ]
+    },
+    {
+      "opname" : "OpUnreachable",
+      "opcode" : 255
+    },
+    {
+      "opname" : "OpLifetimeStart",
+      "opcode" : 256,
+      "operands" : [
+        { "kind" : "IdRef",          "name" : "'Pointer'" },
+        { "kind" : "LiteralInteger", "name" : "'Size'" }
+      ],
+      "capabilities" : [ "Kernel" ]
+    },
+    {
+      "opname" : "OpLifetimeStop",
+      "opcode" : 257,
+      "operands" : [
+        { "kind" : "IdRef",          "name" : "'Pointer'" },
+        { "kind" : "LiteralInteger", "name" : "'Size'" }
+      ],
+      "capabilities" : [ "Kernel" ]
+    },
+    {
+      "opname" : "OpGroupAsyncCopy",
+      "opcode" : 259,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdScope",      "name" : "'Execution'" },
+        { "kind" : "IdRef",        "name" : "'Destination'" },
+        { "kind" : "IdRef",        "name" : "'Source'" },
+        { "kind" : "IdRef",        "name" : "'Num Elements'" },
+        { "kind" : "IdRef",        "name" : "'Stride'" },
+        { "kind" : "IdRef",        "name" : "'Event'" }
+      ],
+      "capabilities" : [ "Kernel" ]
+    },
+    {
+      "opname" : "OpGroupWaitEvents",
+      "opcode" : 260,
+      "operands" : [
+        { "kind" : "IdScope", "name" : "'Execution'" },
+        { "kind" : "IdRef",   "name" : "'Num Events'" },
+        { "kind" : "IdRef",   "name" : "'Events List'" }
+      ],
+      "capabilities" : [ "Kernel" ]
+    },
+    {
+      "opname" : "OpGroupAll",
+      "opcode" : 261,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdScope",      "name" : "'Execution'" },
+        { "kind" : "IdRef",        "name" : "'Predicate'" }
+      ],
+      "capabilities" : [ "Groups" ]
+    },
+    {
+      "opname" : "OpGroupAny",
+      "opcode" : 262,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdScope",      "name" : "'Execution'" },
+        { "kind" : "IdRef",        "name" : "'Predicate'" }
+      ],
+      "capabilities" : [ "Groups" ]
+    },
+    {
+      "opname" : "OpGroupBroadcast",
+      "opcode" : 263,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdScope",      "name" : "'Execution'" },
+        { "kind" : "IdRef",        "name" : "'Value'" },
+        { "kind" : "IdRef",        "name" : "'LocalId'" }
+      ],
+      "capabilities" : [ "Groups" ]
+    },
+    {
+      "opname" : "OpGroupIAdd",
+      "opcode" : 264,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdScope",        "name" : "'Execution'" },
+        { "kind" : "GroupOperation", "name" : "'Operation'" },
+        { "kind" : "IdRef",          "name" : "'X'" }
+      ],
+      "capabilities" : [ "Groups" ]
+    },
+    {
+      "opname" : "OpGroupFAdd",
+      "opcode" : 265,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdScope",        "name" : "'Execution'" },
+        { "kind" : "GroupOperation", "name" : "'Operation'" },
+        { "kind" : "IdRef",          "name" : "'X'" }
+      ],
+      "capabilities" : [ "Groups" ]
+    },
+    {
+      "opname" : "OpGroupFMin",
+      "opcode" : 266,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdScope",        "name" : "'Execution'" },
+        { "kind" : "GroupOperation", "name" : "'Operation'" },
+        { "kind" : "IdRef",          "name" : "'X'" }
+      ],
+      "capabilities" : [ "Groups" ]
+    },
+    {
+      "opname" : "OpGroupUMin",
+      "opcode" : 267,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdScope",        "name" : "'Execution'" },
+        { "kind" : "GroupOperation", "name" : "'Operation'" },
+        { "kind" : "IdRef",          "name" : "'X'" }
+      ],
+      "capabilities" : [ "Groups" ]
+    },
+    {
+      "opname" : "OpGroupSMin",
+      "opcode" : 268,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdScope",        "name" : "'Execution'" },
+        { "kind" : "GroupOperation", "name" : "'Operation'" },
+        { "kind" : "IdRef",          "name" : "'X'" }
+      ],
+      "capabilities" : [ "Groups" ]
+    },
+    {
+      "opname" : "OpGroupFMax",
+      "opcode" : 269,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdScope",        "name" : "'Execution'" },
+        { "kind" : "GroupOperation", "name" : "'Operation'" },
+        { "kind" : "IdRef",          "name" : "'X'" }
+      ],
+      "capabilities" : [ "Groups" ]
+    },
+    {
+      "opname" : "OpGroupUMax",
+      "opcode" : 270,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdScope",        "name" : "'Execution'" },
+        { "kind" : "GroupOperation", "name" : "'Operation'" },
+        { "kind" : "IdRef",          "name" : "'X'" }
+      ],
+      "capabilities" : [ "Groups" ]
+    },
+    {
+      "opname" : "OpGroupSMax",
+      "opcode" : 271,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdScope",        "name" : "'Execution'" },
+        { "kind" : "GroupOperation", "name" : "'Operation'" },
+        { "kind" : "IdRef",          "name" : "'X'" }
+      ],
+      "capabilities" : [ "Groups" ]
+    },
+    {
+      "opname" : "OpReadPipe",
+      "opcode" : 274,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Pipe'" },
+        { "kind" : "IdRef",        "name" : "'Pointer'" },
+        { "kind" : "IdRef",        "name" : "'Packet Size'" },
+        { "kind" : "IdRef",        "name" : "'Packet Alignment'" }
+      ],
+      "capabilities" : [ "Pipes" ]
+    },
+    {
+      "opname" : "OpWritePipe",
+      "opcode" : 275,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Pipe'" },
+        { "kind" : "IdRef",        "name" : "'Pointer'" },
+        { "kind" : "IdRef",        "name" : "'Packet Size'" },
+        { "kind" : "IdRef",        "name" : "'Packet Alignment'" }
+      ],
+      "capabilities" : [ "Pipes" ]
+    },
+    {
+      "opname" : "OpReservedReadPipe",
+      "opcode" : 276,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Pipe'" },
+        { "kind" : "IdRef",        "name" : "'Reserve Id'" },
+        { "kind" : "IdRef",        "name" : "'Index'" },
+        { "kind" : "IdRef",        "name" : "'Pointer'" },
+        { "kind" : "IdRef",        "name" : "'Packet Size'" },
+        { "kind" : "IdRef",        "name" : "'Packet Alignment'" }
+      ],
+      "capabilities" : [ "Pipes" ]
+    },
+    {
+      "opname" : "OpReservedWritePipe",
+      "opcode" : 277,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Pipe'" },
+        { "kind" : "IdRef",        "name" : "'Reserve Id'" },
+        { "kind" : "IdRef",        "name" : "'Index'" },
+        { "kind" : "IdRef",        "name" : "'Pointer'" },
+        { "kind" : "IdRef",        "name" : "'Packet Size'" },
+        { "kind" : "IdRef",        "name" : "'Packet Alignment'" }
+      ],
+      "capabilities" : [ "Pipes" ]
+    },
+    {
+      "opname" : "OpReserveReadPipePackets",
+      "opcode" : 278,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Pipe'" },
+        { "kind" : "IdRef",        "name" : "'Num Packets'" },
+        { "kind" : "IdRef",        "name" : "'Packet Size'" },
+        { "kind" : "IdRef",        "name" : "'Packet Alignment'" }
+      ],
+      "capabilities" : [ "Pipes" ]
+    },
+    {
+      "opname" : "OpReserveWritePipePackets",
+      "opcode" : 279,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Pipe'" },
+        { "kind" : "IdRef",        "name" : "'Num Packets'" },
+        { "kind" : "IdRef",        "name" : "'Packet Size'" },
+        { "kind" : "IdRef",        "name" : "'Packet Alignment'" }
+      ],
+      "capabilities" : [ "Pipes" ]
+    },
+    {
+      "opname" : "OpCommitReadPipe",
+      "opcode" : 280,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'Pipe'" },
+        { "kind" : "IdRef", "name" : "'Reserve Id'" },
+        { "kind" : "IdRef", "name" : "'Packet Size'" },
+        { "kind" : "IdRef", "name" : "'Packet Alignment'" }
+      ],
+      "capabilities" : [ "Pipes" ]
+    },
+    {
+      "opname" : "OpCommitWritePipe",
+      "opcode" : 281,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'Pipe'" },
+        { "kind" : "IdRef", "name" : "'Reserve Id'" },
+        { "kind" : "IdRef", "name" : "'Packet Size'" },
+        { "kind" : "IdRef", "name" : "'Packet Alignment'" }
+      ],
+      "capabilities" : [ "Pipes" ]
+    },
+    {
+      "opname" : "OpIsValidReserveId",
+      "opcode" : 282,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Reserve Id'" }
+      ],
+      "capabilities" : [ "Pipes" ]
+    },
+    {
+      "opname" : "OpGetNumPipePackets",
+      "opcode" : 283,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Pipe'" },
+        { "kind" : "IdRef",        "name" : "'Packet Size'" },
+        { "kind" : "IdRef",        "name" : "'Packet Alignment'" }
+      ],
+      "capabilities" : [ "Pipes" ]
+    },
+    {
+      "opname" : "OpGetMaxPipePackets",
+      "opcode" : 284,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Pipe'" },
+        { "kind" : "IdRef",        "name" : "'Packet Size'" },
+        { "kind" : "IdRef",        "name" : "'Packet Alignment'" }
+      ],
+      "capabilities" : [ "Pipes" ]
+    },
+    {
+      "opname" : "OpGroupReserveReadPipePackets",
+      "opcode" : 285,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdScope",      "name" : "'Execution'" },
+        { "kind" : "IdRef",        "name" : "'Pipe'" },
+        { "kind" : "IdRef",        "name" : "'Num Packets'" },
+        { "kind" : "IdRef",        "name" : "'Packet Size'" },
+        { "kind" : "IdRef",        "name" : "'Packet Alignment'" }
+      ],
+      "capabilities" : [ "Pipes" ]
+    },
+    {
+      "opname" : "OpGroupReserveWritePipePackets",
+      "opcode" : 286,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdScope",      "name" : "'Execution'" },
+        { "kind" : "IdRef",        "name" : "'Pipe'" },
+        { "kind" : "IdRef",        "name" : "'Num Packets'" },
+        { "kind" : "IdRef",        "name" : "'Packet Size'" },
+        { "kind" : "IdRef",        "name" : "'Packet Alignment'" }
+      ],
+      "capabilities" : [ "Pipes" ]
+    },
+    {
+      "opname" : "OpGroupCommitReadPipe",
+      "opcode" : 287,
+      "operands" : [
+        { "kind" : "IdScope", "name" : "'Execution'" },
+        { "kind" : "IdRef",   "name" : "'Pipe'" },
+        { "kind" : "IdRef",   "name" : "'Reserve Id'" },
+        { "kind" : "IdRef",   "name" : "'Packet Size'" },
+        { "kind" : "IdRef",   "name" : "'Packet Alignment'" }
+      ],
+      "capabilities" : [ "Pipes" ]
+    },
+    {
+      "opname" : "OpGroupCommitWritePipe",
+      "opcode" : 288,
+      "operands" : [
+        { "kind" : "IdScope", "name" : "'Execution'" },
+        { "kind" : "IdRef",   "name" : "'Pipe'" },
+        { "kind" : "IdRef",   "name" : "'Reserve Id'" },
+        { "kind" : "IdRef",   "name" : "'Packet Size'" },
+        { "kind" : "IdRef",   "name" : "'Packet Alignment'" }
+      ],
+      "capabilities" : [ "Pipes" ]
+    },
+    {
+      "opname" : "OpEnqueueMarker",
+      "opcode" : 291,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Queue'" },
+        { "kind" : "IdRef",        "name" : "'Num Events'" },
+        { "kind" : "IdRef",        "name" : "'Wait Events'" },
+        { "kind" : "IdRef",        "name" : "'Ret Event'" }
+      ],
+      "capabilities" : [ "DeviceEnqueue" ]
+    },
+    {
+      "opname" : "OpEnqueueKernel",
+      "opcode" : 292,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",                            "name" : "'Queue'" },
+        { "kind" : "IdRef",                            "name" : "'Flags'" },
+        { "kind" : "IdRef",                            "name" : "'ND Range'" },
+        { "kind" : "IdRef",                            "name" : "'Num Events'" },
+        { "kind" : "IdRef",                            "name" : "'Wait Events'" },
+        { "kind" : "IdRef",                            "name" : "'Ret Event'" },
+        { "kind" : "IdRef",                            "name" : "'Invoke'" },
+        { "kind" : "IdRef",                            "name" : "'Param'" },
+        { "kind" : "IdRef",                            "name" : "'Param Size'" },
+        { "kind" : "IdRef",                            "name" : "'Param Align'" },
+        { "kind" : "IdRef",        "quantifier" : "*", "name" : "'Local Size'" }
+      ],
+      "capabilities" : [ "DeviceEnqueue" ]
+    },
+    {
+      "opname" : "OpGetKernelNDrangeSubGroupCount",
+      "opcode" : 293,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'ND Range'" },
+        { "kind" : "IdRef",        "name" : "'Invoke'" },
+        { "kind" : "IdRef",        "name" : "'Param'" },
+        { "kind" : "IdRef",        "name" : "'Param Size'" },
+        { "kind" : "IdRef",        "name" : "'Param Align'" }
+      ],
+      "capabilities" : [ "DeviceEnqueue" ]
+    },
+    {
+      "opname" : "OpGetKernelNDrangeMaxSubGroupSize",
+      "opcode" : 294,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'ND Range'" },
+        { "kind" : "IdRef",        "name" : "'Invoke'" },
+        { "kind" : "IdRef",        "name" : "'Param'" },
+        { "kind" : "IdRef",        "name" : "'Param Size'" },
+        { "kind" : "IdRef",        "name" : "'Param Align'" }
+      ],
+      "capabilities" : [ "DeviceEnqueue" ]
+    },
+    {
+      "opname" : "OpGetKernelWorkGroupSize",
+      "opcode" : 295,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Invoke'" },
+        { "kind" : "IdRef",        "name" : "'Param'" },
+        { "kind" : "IdRef",        "name" : "'Param Size'" },
+        { "kind" : "IdRef",        "name" : "'Param Align'" }
+      ],
+      "capabilities" : [ "DeviceEnqueue" ]
+    },
+    {
+      "opname" : "OpGetKernelPreferredWorkGroupSizeMultiple",
+      "opcode" : 296,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Invoke'" },
+        { "kind" : "IdRef",        "name" : "'Param'" },
+        { "kind" : "IdRef",        "name" : "'Param Size'" },
+        { "kind" : "IdRef",        "name" : "'Param Align'" }
+      ],
+      "capabilities" : [ "DeviceEnqueue" ]
+    },
+    {
+      "opname" : "OpRetainEvent",
+      "opcode" : 297,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'Event'" }
+      ],
+      "capabilities" : [ "DeviceEnqueue" ]
+    },
+    {
+      "opname" : "OpReleaseEvent",
+      "opcode" : 298,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'Event'" }
+      ],
+      "capabilities" : [ "DeviceEnqueue" ]
+    },
+    {
+      "opname" : "OpCreateUserEvent",
+      "opcode" : 299,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" }
+      ],
+      "capabilities" : [ "DeviceEnqueue" ]
+    },
+    {
+      "opname" : "OpIsValidEvent",
+      "opcode" : 300,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Event'" }
+      ],
+      "capabilities" : [ "DeviceEnqueue" ]
+    },
+    {
+      "opname" : "OpSetUserEventStatus",
+      "opcode" : 301,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'Event'" },
+        { "kind" : "IdRef", "name" : "'Status'" }
+      ],
+      "capabilities" : [ "DeviceEnqueue" ]
+    },
+    {
+      "opname" : "OpCaptureEventProfilingInfo",
+      "opcode" : 302,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'Event'" },
+        { "kind" : "IdRef", "name" : "'Profiling Info'" },
+        { "kind" : "IdRef", "name" : "'Value'" }
+      ],
+      "capabilities" : [ "DeviceEnqueue" ]
+    },
+    {
+      "opname" : "OpGetDefaultQueue",
+      "opcode" : 303,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" }
+      ],
+      "capabilities" : [ "DeviceEnqueue" ]
+    },
+    {
+      "opname" : "OpBuildNDRange",
+      "opcode" : 304,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'GlobalWorkSize'" },
+        { "kind" : "IdRef",        "name" : "'LocalWorkSize'" },
+        { "kind" : "IdRef",        "name" : "'GlobalWorkOffset'" }
+      ],
+      "capabilities" : [ "DeviceEnqueue" ]
+    },
+    {
+      "opname" : "OpImageSparseSampleImplicitLod",
+      "opcode" : 305,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",                             "name" : "'Sampled Image'" },
+        { "kind" : "IdRef",                             "name" : "'Coordinate'" },
+        { "kind" : "ImageOperands", "quantifier" : "?" }
+      ],
+      "capabilities" : [ "SparseResidency" ]
+    },
+    {
+      "opname" : "OpImageSparseSampleExplicitLod",
+      "opcode" : 306,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",         "name" : "'Sampled Image'" },
+        { "kind" : "IdRef",         "name" : "'Coordinate'" },
+        { "kind" : "ImageOperands" }
+      ],
+      "capabilities" : [ "SparseResidency" ]
+    },
+    {
+      "opname" : "OpImageSparseSampleDrefImplicitLod",
+      "opcode" : 307,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",                             "name" : "'Sampled Image'" },
+        { "kind" : "IdRef",                             "name" : "'Coordinate'" },
+        { "kind" : "IdRef",                             "name" : "'D~ref~'" },
+        { "kind" : "ImageOperands", "quantifier" : "?" }
+      ],
+      "capabilities" : [ "SparseResidency" ]
+    },
+    {
+      "opname" : "OpImageSparseSampleDrefExplicitLod",
+      "opcode" : 308,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",         "name" : "'Sampled Image'" },
+        { "kind" : "IdRef",         "name" : "'Coordinate'" },
+        { "kind" : "IdRef",         "name" : "'D~ref~'" },
+        { "kind" : "ImageOperands" }
+      ],
+      "capabilities" : [ "SparseResidency" ]
+    },
+    {
+      "opname" : "OpImageSparseSampleProjImplicitLod",
+      "opcode" : 309,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",                             "name" : "'Sampled Image'" },
+        { "kind" : "IdRef",                             "name" : "'Coordinate'" },
+        { "kind" : "ImageOperands", "quantifier" : "?" }
+      ],
+      "capabilities" : [ "SparseResidency" ]
+    },
+    {
+      "opname" : "OpImageSparseSampleProjExplicitLod",
+      "opcode" : 310,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",         "name" : "'Sampled Image'" },
+        { "kind" : "IdRef",         "name" : "'Coordinate'" },
+        { "kind" : "ImageOperands" }
+      ],
+      "capabilities" : [ "SparseResidency" ]
+    },
+    {
+      "opname" : "OpImageSparseSampleProjDrefImplicitLod",
+      "opcode" : 311,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",                             "name" : "'Sampled Image'" },
+        { "kind" : "IdRef",                             "name" : "'Coordinate'" },
+        { "kind" : "IdRef",                             "name" : "'D~ref~'" },
+        { "kind" : "ImageOperands", "quantifier" : "?" }
+      ],
+      "capabilities" : [ "SparseResidency" ]
+    },
+    {
+      "opname" : "OpImageSparseSampleProjDrefExplicitLod",
+      "opcode" : 312,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",         "name" : "'Sampled Image'" },
+        { "kind" : "IdRef",         "name" : "'Coordinate'" },
+        { "kind" : "IdRef",         "name" : "'D~ref~'" },
+        { "kind" : "ImageOperands" }
+      ],
+      "capabilities" : [ "SparseResidency" ]
+    },
+    {
+      "opname" : "OpImageSparseFetch",
+      "opcode" : 313,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",                             "name" : "'Image'" },
+        { "kind" : "IdRef",                             "name" : "'Coordinate'" },
+        { "kind" : "ImageOperands", "quantifier" : "?" }
+      ],
+      "capabilities" : [ "SparseResidency" ]
+    },
+    {
+      "opname" : "OpImageSparseGather",
+      "opcode" : 314,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",                             "name" : "'Sampled Image'" },
+        { "kind" : "IdRef",                             "name" : "'Coordinate'" },
+        { "kind" : "IdRef",                             "name" : "'Component'" },
+        { "kind" : "ImageOperands", "quantifier" : "?" }
+      ],
+      "capabilities" : [ "SparseResidency" ]
+    },
+    {
+      "opname" : "OpImageSparseDrefGather",
+      "opcode" : 315,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",                             "name" : "'Sampled Image'" },
+        { "kind" : "IdRef",                             "name" : "'Coordinate'" },
+        { "kind" : "IdRef",                             "name" : "'D~ref~'" },
+        { "kind" : "ImageOperands", "quantifier" : "?" }
+      ],
+      "capabilities" : [ "SparseResidency" ]
+    },
+    {
+      "opname" : "OpImageSparseTexelsResident",
+      "opcode" : 316,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Resident Code'" }
+      ],
+      "capabilities" : [ "SparseResidency" ]
+    },
+    {
+      "opname" : "OpNoLine",
+      "opcode" : 317
+    },
+    {
+      "opname" : "OpAtomicFlagTestAndSet",
+      "opcode" : 318,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",             "name" : "'Pointer'" },
+        { "kind" : "IdScope",           "name" : "'Scope'" },
+        { "kind" : "IdMemorySemantics", "name" : "'Semantics'" }
+      ],
+      "capabilities" : [ "Kernel" ]
+    },
+    {
+      "opname" : "OpAtomicFlagClear",
+      "opcode" : 319,
+      "operands" : [
+        { "kind" : "IdRef",             "name" : "'Pointer'" },
+        { "kind" : "IdScope",           "name" : "'Scope'" },
+        { "kind" : "IdMemorySemantics", "name" : "'Semantics'" }
+      ],
+      "capabilities" : [ "Kernel" ]
+    },
+    {
+      "opname" : "OpImageSparseRead",
+      "opcode" : 320,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",                             "name" : "'Image'" },
+        { "kind" : "IdRef",                             "name" : "'Coordinate'" },
+        { "kind" : "ImageOperands", "quantifier" : "?" }
+      ],
+      "capabilities" : [ "SparseResidency" ]
+    },
+    {
+      "opname" : "OpDecorateId",
+      "opcode" : 332,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'Target'" },
+        { "kind" : "Decoration" }
+      ],
+      "extensions" : [ "SPV_GOOGLE_hlsl_functionality1" ]
+    },
+    {
+      "opname" : "OpSubgroupBallotKHR",
+      "opcode" : 4421,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Predicate'" }
+      ],
+      "capabilities" : [ "SubgroupBallotKHR" ]
+    },
+    {
+      "opname" : "OpSubgroupFirstInvocationKHR",
+      "opcode" : 4422,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Value'" }
+      ],
+      "capabilities" : [ "SubgroupBallotKHR" ]
+    },
+    {
+      "opname" : "OpSubgroupAllKHR",
+      "opcode" : 4428,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Predicate'" }
+      ],
+      "capabilities" : [ "SubgroupVoteKHR" ]
+    },
+    {
+      "opname" : "OpSubgroupAnyKHR",
+      "opcode" : 4429,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Predicate'" }
+      ],
+      "capabilities" : [ "SubgroupVoteKHR" ]
+    },
+    {
+      "opname" : "OpSubgroupAllEqualKHR",
+      "opcode" : 4430,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Predicate'" }
+      ],
+      "capabilities" : [ "SubgroupVoteKHR" ]
+    },
+    {
+      "opname" : "OpSubgroupReadInvocationKHR",
+      "opcode" : 4432,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Value'" },
+        { "kind" : "IdRef", "name" : "'Index'" }
+      ],
+      "capabilities" : [ "SubgroupBallotKHR" ]
+    },
+    {
+      "opname" : "OpGroupIAddNonUniformAMD",
+      "opcode" : 5000,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdScope",        "name" : "'Execution'" },
+        { "kind" : "GroupOperation", "name" : "'Operation'" },
+        { "kind" : "IdRef",          "name" : "'X'" }
+      ],
+      "capabilities" : [ "Groups" ]
+    },
+    {
+      "opname" : "OpGroupFAddNonUniformAMD",
+      "opcode" : 5001,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdScope",        "name" : "'Execution'" },
+        { "kind" : "GroupOperation", "name" : "'Operation'" },
+        { "kind" : "IdRef",          "name" : "'X'" }
+      ],
+      "capabilities" : [ "Groups" ]
+    },
+    {
+      "opname" : "OpGroupFMinNonUniformAMD",
+      "opcode" : 5002,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdScope",        "name" : "'Execution'" },
+        { "kind" : "GroupOperation", "name" : "'Operation'" },
+        { "kind" : "IdRef",          "name" : "'X'" }
+      ],
+      "capabilities" : [ "Groups" ]
+    },
+    {
+      "opname" : "OpGroupUMinNonUniformAMD",
+      "opcode" : 5003,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdScope",        "name" : "'Execution'" },
+        { "kind" : "GroupOperation", "name" : "'Operation'" },
+        { "kind" : "IdRef",          "name" : "'X'" }
+      ],
+      "capabilities" : [ "Groups" ]
+    },
+    {
+      "opname" : "OpGroupSMinNonUniformAMD",
+      "opcode" : 5004,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdScope",        "name" : "'Execution'" },
+        { "kind" : "GroupOperation", "name" : "'Operation'" },
+        { "kind" : "IdRef",          "name" : "'X'" }
+      ],
+      "capabilities" : [ "Groups" ]
+    },
+    {
+      "opname" : "OpGroupFMaxNonUniformAMD",
+      "opcode" : 5005,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdScope",        "name" : "'Execution'" },
+        { "kind" : "GroupOperation", "name" : "'Operation'" },
+        { "kind" : "IdRef",          "name" : "'X'" }
+      ],
+      "capabilities" : [ "Groups" ]
+    },
+    {
+      "opname" : "OpGroupUMaxNonUniformAMD",
+      "opcode" : 5006,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdScope",        "name" : "'Execution'" },
+        { "kind" : "GroupOperation", "name" : "'Operation'" },
+        { "kind" : "IdRef",          "name" : "'X'" }
+      ],
+      "capabilities" : [ "Groups" ]
+    },
+    {
+      "opname" : "OpGroupSMaxNonUniformAMD",
+      "opcode" : 5007,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdScope",        "name" : "'Execution'" },
+        { "kind" : "GroupOperation", "name" : "'Operation'" },
+        { "kind" : "IdRef",          "name" : "'X'" }
+      ],
+      "capabilities" : [ "Groups" ]
+    },
+    {
+      "opname" : "OpFragmentMaskFetchAMD",
+      "opcode" : 5011,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Image'" },
+        { "kind" : "IdRef", "name" : "'Coordinate'" }
+      ],
+      "capabilities" : [ "FragmentMaskAMD" ]
+    },
+    {
+      "opname" : "OpFragmentFetchAMD",
+      "opcode" : 5012,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Image'" },
+        { "kind" : "IdRef", "name" : "'Coordinate'" },
+        { "kind" : "IdRef", "name" : "'Fragment Index'" }
+      ],
+      "capabilities" : [ "FragmentMaskAMD" ]
+    },
+    {
+      "opname" : "OpSubgroupShuffleINTEL",
+      "opcode" : 5571,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Data'" },
+        { "kind" : "IdRef", "name" : "'InvocationId'" }
+      ],
+      "capabilities" : [ "SubgroupShuffleINTEL" ]
+    },
+    {
+      "opname" : "OpSubgroupShuffleDownINTEL",
+      "opcode" : 5572,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Current'" },
+        { "kind" : "IdRef", "name" : "'Next'" },
+        { "kind" : "IdRef", "name" : "'Delta'" }
+      ],
+      "capabilities" : [ "SubgroupShuffleINTEL" ]
+    },
+    {
+      "opname" : "OpSubgroupShuffleUpINTEL",
+      "opcode" : 5573,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Previous'" },
+        { "kind" : "IdRef", "name" : "'Current'" },
+        { "kind" : "IdRef", "name" : "'Delta'" }
+      ],
+      "capabilities" : [ "SubgroupShuffleINTEL" ]
+    },
+    {
+      "opname" : "OpSubgroupShuffleXorINTEL",
+      "opcode" : 5574,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Data'" },
+        { "kind" : "IdRef", "name" : "'Value'" }
+      ],
+      "capabilities" : [ "SubgroupShuffleINTEL" ]
+    },
+    {
+      "opname" : "OpSubgroupBlockReadINTEL",
+      "opcode" : 5575,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Ptr'" }
+      ],
+      "capabilities" : [ "SubgroupBufferBlockIOINTEL" ]
+    },
+    {
+      "opname" : "OpSubgroupBlockWriteINTEL",
+      "opcode" : 5576,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'Ptr'" },
+        { "kind" : "IdRef", "name" : "'Data'" }
+      ],
+      "capabilities" : [ "SubgroupBufferBlockIOINTEL" ]
+    },
+    {
+      "opname" : "OpSubgroupImageBlockReadINTEL",
+      "opcode" : 5577,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Image'" },
+        { "kind" : "IdRef", "name" : "'Coordinate'" }
+      ],
+      "capabilities" : [ "SubgroupImageBlockIOINTEL" ]
+    },
+    {
+      "opname" : "OpSubgroupImageBlockWriteINTEL",
+      "opcode" : 5578,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'Image'" },
+        { "kind" : "IdRef", "name" : "'Coordinate'" },
+        { "kind" : "IdRef", "name" : "'Data'" }
+      ],
+      "capabilities" : [ "SubgroupImageBlockIOINTEL" ]
+    },
+    {
+      "opname" : "OpDecorateStringGOOGLE",
+      "opcode" : 5632,
+      "operands" : [
+        { "kind" : "IdRef",         "name" : "'Target'" },
+        { "kind" : "Decoration" }
+      ],
+      "extensions" : [ "SPV_GOOGLE_decorate_string" ]
+    },
+    {
+      "opname" : "OpMemberDecorateStringGOOGLE",
+      "opcode" : 5633,
+      "operands" : [
+        { "kind" : "IdRef",          "name" : "'Struct Type'" },
+        { "kind" : "LiteralInteger", "name" : "'Member'" },
+        { "kind" : "Decoration" }
+      ],
+      "extensions" : [ "SPV_GOOGLE_decorate_string" ]
+    }
+  ],
+  "operand_kinds" : [
+    {
+      "category" : "BitEnum",
+      "kind" : "ImageOperands",
+      "enumerants" : [
+        {
+          "enumerant" : "None",
+          "value" : "0x0000"
+        },
+        {
+          "enumerant" : "Bias",
+          "value" : "0x0001",
+          "capabilities" : [ "Shader" ],
+          "parameters" : [
+            { "kind" : "IdRef" }
+          ]
+        },
+        {
+          "enumerant" : "Lod",
+          "value" : "0x0002",
+          "parameters" : [
+            { "kind" : "IdRef" }
+          ]
+        },
+        {
+          "enumerant" : "Grad",
+          "value" : "0x0004",
+          "parameters" : [
+            { "kind" : "IdRef" },
+            { "kind" : "IdRef" }
+          ]
+        },
+        {
+          "enumerant" : "ConstOffset",
+          "value" : "0x0008",
+          "parameters" : [
+            { "kind" : "IdRef" }
+          ]
+        },
+        {
+          "enumerant" : "Offset",
+          "value" : "0x0010",
+          "capabilities" : [ "ImageGatherExtended" ],
+          "parameters" : [
+            { "kind" : "IdRef" }
+          ]
+        },
+        {
+          "enumerant" : "ConstOffsets",
+          "value" : "0x0020",
+          "parameters" : [
+            { "kind" : "IdRef" }
+          ]
+        },
+        {
+          "enumerant" : "Sample",
+          "value" : "0x0040",
+          "parameters" : [
+            { "kind" : "IdRef" }
+          ]
+        },
+        {
+          "enumerant" : "MinLod",
+          "value" : "0x0080",
+          "capabilities" : [ "MinLod" ],
+          "parameters" : [
+            { "kind" : "IdRef" }
+          ]
+        }
+      ]
+    },
+    {
+      "category" : "BitEnum",
+      "kind" : "FPFastMathMode",
+      "enumerants" : [
+        {
+          "enumerant" : "None",
+          "value" : "0x0000"
+        },
+        {
+          "enumerant" : "NotNaN",
+          "value" : "0x0001",
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "NotInf",
+          "value" : "0x0002",
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "NSZ",
+          "value" : "0x0004",
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "AllowRecip",
+          "value" : "0x0008",
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "Fast",
+          "value" : "0x0010",
+          "capabilities" : [ "Kernel" ]
+        }
+      ]
+    },
+    {
+      "category" : "BitEnum",
+      "kind" : "SelectionControl",
+      "enumerants" : [
+        {
+          "enumerant" : "None",
+          "value" : "0x0000"
+        },
+        {
+          "enumerant" : "Flatten",
+          "value" : "0x0001"
+        },
+        {
+          "enumerant" : "DontFlatten",
+          "value" : "0x0002"
+        }
+      ]
+    },
+    {
+      "category" : "BitEnum",
+      "kind" : "LoopControl",
+      "enumerants" : [
+        {
+          "enumerant" : "None",
+          "value" : "0x0000"
+        },
+        {
+          "enumerant" : "Unroll",
+          "value" : "0x0001"
+        },
+        {
+          "enumerant" : "DontUnroll",
+          "value" : "0x0002"
+        }
+      ]
+    },
+    {
+      "category" : "BitEnum",
+      "kind" : "FunctionControl",
+      "enumerants" : [
+        {
+          "enumerant" : "None",
+          "value" : "0x0000"
+        },
+        {
+          "enumerant" : "Inline",
+          "value" : "0x0001"
+        },
+        {
+          "enumerant" : "DontInline",
+          "value" : "0x0002"
+        },
+        {
+          "enumerant" : "Pure",
+          "value" : "0x0004"
+        },
+        {
+          "enumerant" : "Const",
+          "value" : "0x0008"
+        }
+      ]
+    },
+    {
+      "category" : "BitEnum",
+      "kind" : "MemorySemantics",
+      "enumerants" : [
+        {
+          "enumerant" : "Relaxed",
+          "value" : "0x0000"
+        },
+        {
+          "enumerant" : "None",
+          "value" : "0x0000"
+        },
+        {
+          "enumerant" : "Acquire",
+          "value" : "0x0002"
+        },
+        {
+          "enumerant" : "Release",
+          "value" : "0x0004"
+        },
+        {
+          "enumerant" : "AcquireRelease",
+          "value" : "0x0008"
+        },
+        {
+          "enumerant" : "SequentiallyConsistent",
+          "value" : "0x0010"
+        },
+        {
+          "enumerant" : "UniformMemory",
+          "value" : "0x0040",
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "SubgroupMemory",
+          "value" : "0x0080"
+        },
+        {
+          "enumerant" : "WorkgroupMemory",
+          "value" : "0x0100"
+        },
+        {
+          "enumerant" : "CrossWorkgroupMemory",
+          "value" : "0x0200"
+        },
+        {
+          "enumerant" : "AtomicCounterMemory",
+          "value" : "0x0400",
+          "capabilities" : [ "AtomicStorage" ]
+        },
+        {
+          "enumerant" : "ImageMemory",
+          "value" : "0x0800"
+        }
+      ]
+    },
+    {
+      "category" : "BitEnum",
+      "kind" : "MemoryAccess",
+      "enumerants" : [
+        {
+          "enumerant" : "None",
+          "value" : "0x0000"
+        },
+        {
+          "enumerant" : "Volatile",
+          "value" : "0x0001"
+        },
+        {
+          "enumerant" : "Aligned",
+          "value" : "0x0002",
+          "parameters" : [
+            { "kind" : "LiteralInteger" }
+          ]
+        },
+        {
+          "enumerant" : "Nontemporal",
+          "value" : "0x0004"
+        }
+      ]
+    },
+    {
+      "category" : "BitEnum",
+      "kind" : "KernelProfilingInfo",
+      "enumerants" : [
+        {
+          "enumerant" : "None",
+          "value" : "0x0000"
+        },
+        {
+          "enumerant" : "CmdExecTime",
+          "value" : "0x0001",
+          "capabilities" : [ "Kernel" ]
+        }
+      ]
+    },
+    {
+      "category" : "ValueEnum",
+      "kind" : "SourceLanguage",
+      "enumerants" : [
+        {
+          "enumerant" : "Unknown",
+          "value" : 0
+        },
+        {
+          "enumerant" : "ESSL",
+          "value" : 1
+        },
+        {
+          "enumerant" : "GLSL",
+          "value" : 2
+        },
+        {
+          "enumerant" : "OpenCL_C",
+          "value" : 3
+        },
+        {
+          "enumerant" : "OpenCL_CPP",
+          "value" : 4
+        },
+        {
+          "enumerant" : "HLSL",
+          "value" : 5
+        }
+      ]
+    },
+    {
+      "category" : "ValueEnum",
+      "kind" : "ExecutionModel",
+      "enumerants" : [
+        {
+          "enumerant" : "Vertex",
+          "value" : 0,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "TessellationControl",
+          "value" : 1,
+          "capabilities" : [ "Tessellation" ]
+        },
+        {
+          "enumerant" : "TessellationEvaluation",
+          "value" : 2,
+          "capabilities" : [ "Tessellation" ]
+        },
+        {
+          "enumerant" : "Geometry",
+          "value" : 3,
+          "capabilities" : [ "Geometry" ]
+        },
+        {
+          "enumerant" : "Fragment",
+          "value" : 4,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "GLCompute",
+          "value" : 5,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "Kernel",
+          "value" : 6,
+          "capabilities" : [ "Kernel" ]
+        }
+      ]
+    },
+    {
+      "category" : "ValueEnum",
+      "kind" : "AddressingModel",
+      "enumerants" : [
+        {
+          "enumerant" : "Logical",
+          "value" : 0
+        },
+        {
+          "enumerant" : "Physical32",
+          "value" : 1,
+          "capabilities" : [ "Addresses" ]
+        },
+        {
+          "enumerant" : "Physical64",
+          "value" : 2,
+          "capabilities" : [ "Addresses" ]
+        }
+      ]
+    },
+    {
+      "category" : "ValueEnum",
+      "kind" : "MemoryModel",
+      "enumerants" : [
+        {
+          "enumerant" : "Simple",
+          "value" : 0,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "GLSL450",
+          "value" : 1,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "OpenCL",
+          "value" : 2,
+          "capabilities" : [ "Kernel" ]
+        }
+      ]
+    },
+    {
+      "category" : "ValueEnum",
+      "kind" : "ExecutionMode",
+      "enumerants" : [
+        {
+          "enumerant" : "Invocations",
+          "value" : 0,
+          "capabilities" : [ "Geometry" ],
+          "parameters" : [
+            { "kind" : "LiteralInteger", "name" : "'Number of <<Invocation,invocations>>'" }
+          ]
+        },
+        {
+          "enumerant" : "SpacingEqual",
+          "value" : 1,
+          "capabilities" : [ "Tessellation" ]
+        },
+        {
+          "enumerant" : "SpacingFractionalEven",
+          "value" : 2,
+          "capabilities" : [ "Tessellation" ]
+        },
+        {
+          "enumerant" : "SpacingFractionalOdd",
+          "value" : 3,
+          "capabilities" : [ "Tessellation" ]
+        },
+        {
+          "enumerant" : "VertexOrderCw",
+          "value" : 4,
+          "capabilities" : [ "Tessellation" ]
+        },
+        {
+          "enumerant" : "VertexOrderCcw",
+          "value" : 5,
+          "capabilities" : [ "Tessellation" ]
+        },
+        {
+          "enumerant" : "PixelCenterInteger",
+          "value" : 6,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "OriginUpperLeft",
+          "value" : 7,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "OriginLowerLeft",
+          "value" : 8,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "EarlyFragmentTests",
+          "value" : 9,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "PointMode",
+          "value" : 10,
+          "capabilities" : [ "Tessellation" ]
+        },
+        {
+          "enumerant" : "Xfb",
+          "value" : 11,
+          "capabilities" : [ "TransformFeedback" ]
+        },
+        {
+          "enumerant" : "DepthReplacing",
+          "value" : 12,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "DepthGreater",
+          "value" : 14,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "DepthLess",
+          "value" : 15,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "DepthUnchanged",
+          "value" : 16,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "LocalSize",
+          "value" : 17,
+          "parameters" : [
+            { "kind" : "LiteralInteger", "name" : "'x size'" },
+            { "kind" : "LiteralInteger", "name" : "'y size'" },
+            { "kind" : "LiteralInteger", "name" : "'z size'" }
+          ]
+        },
+        {
+          "enumerant" : "LocalSizeHint",
+          "value" : 18,
+          "capabilities" : [ "Kernel" ],
+          "parameters" : [
+            { "kind" : "LiteralInteger", "name" : "'x size'" },
+            { "kind" : "LiteralInteger", "name" : "'y size'" },
+            { "kind" : "LiteralInteger", "name" : "'z size'" }
+          ]
+        },
+        {
+          "enumerant" : "InputPoints",
+          "value" : 19,
+          "capabilities" : [ "Geometry" ]
+        },
+        {
+          "enumerant" : "InputLines",
+          "value" : 20,
+          "capabilities" : [ "Geometry" ]
+        },
+        {
+          "enumerant" : "InputLinesAdjacency",
+          "value" : 21,
+          "capabilities" : [ "Geometry" ]
+        },
+        {
+          "enumerant" : "Triangles",
+          "value" : 22,
+          "capabilities" : [ "Geometry", "Tessellation" ]
+        },
+        {
+          "enumerant" : "InputTrianglesAdjacency",
+          "value" : 23,
+          "capabilities" : [ "Geometry" ]
+        },
+        {
+          "enumerant" : "Quads",
+          "value" : 24,
+          "capabilities" : [ "Tessellation" ]
+        },
+        {
+          "enumerant" : "Isolines",
+          "value" : 25,
+          "capabilities" : [ "Tessellation" ]
+        },
+        {
+          "enumerant" : "OutputVertices",
+          "value" : 26,
+          "capabilities" : [ "Geometry", "Tessellation" ],
+          "parameters" : [
+            { "kind" : "LiteralInteger", "name" : "'Vertex count'" }
+          ]
+        },
+        {
+          "enumerant" : "OutputPoints",
+          "value" : 27,
+          "capabilities" : [ "Geometry" ]
+        },
+        {
+          "enumerant" : "OutputLineStrip",
+          "value" : 28,
+          "capabilities" : [ "Geometry" ]
+        },
+        {
+          "enumerant" : "OutputTriangleStrip",
+          "value" : 29,
+          "capabilities" : [ "Geometry" ]
+        },
+        {
+          "enumerant" : "VecTypeHint",
+          "value" : 30,
+          "capabilities" : [ "Kernel" ],
+          "parameters" : [
+            { "kind" : "LiteralInteger", "name" : "'Vector type'" }
+          ]
+        },
+        {
+          "enumerant" : "ContractionOff",
+          "value" : 31,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "PostDepthCoverage",
+          "value" : 4446,
+          "capabilities" : [ "SampleMaskPostDepthCoverage" ]
+        },
+        {
+          "enumerant" : "StencilRefReplacingEXT",
+          "value" : 5027,
+          "capabilities" : [ "StencilExportEXT" ]
+        }
+      ]
+    },
+    {
+      "category" : "ValueEnum",
+      "kind" : "StorageClass",
+      "enumerants" : [
+        {
+          "enumerant" : "UniformConstant",
+          "value" : 0
+        },
+        {
+          "enumerant" : "Input",
+          "value" : 1
+        },
+        {
+          "enumerant" : "Uniform",
+          "value" : 2,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "Output",
+          "value" : 3,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "Workgroup",
+          "value" : 4
+        },
+        {
+          "enumerant" : "CrossWorkgroup",
+          "value" : 5
+        },
+        {
+          "enumerant" : "Private",
+          "value" : 6,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "Function",
+          "value" : 7
+        },
+        {
+          "enumerant" : "Generic",
+          "value" : 8,
+          "capabilities" : [ "GenericPointer" ]
+        },
+        {
+          "enumerant" : "PushConstant",
+          "value" : 9,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "AtomicCounter",
+          "value" : 10,
+          "capabilities" : [ "AtomicStorage" ]
+        },
+        {
+          "enumerant" : "Image",
+          "value" : 11
+        },
+        {
+          "enumerant" : "StorageBuffer",
+          "value" : 12,
+          "extensions" : [
+            "SPV_KHR_storage_buffer_storage_class",
+            "SPV_KHR_variable_pointers"
+          ],
+          "capabilities" : [ "Shader" ]
+        }
+      ]
+    },
+    {
+      "category" : "ValueEnum",
+      "kind" : "Dim",
+      "enumerants" : [
+        {
+          "enumerant" : "1D",
+          "value" : 0,
+          "capabilities" : [ "Sampled1D" ]
+        },
+        {
+          "enumerant" : "2D",
+          "value" : 1
+        },
+        {
+          "enumerant" : "3D",
+          "value" : 2
+        },
+        {
+          "enumerant" : "Cube",
+          "value" : 3,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "Rect",
+          "value" : 4,
+          "capabilities" : [ "SampledRect" ]
+        },
+        {
+          "enumerant" : "Buffer",
+          "value" : 5,
+          "capabilities" : [ "SampledBuffer" ]
+        },
+        {
+          "enumerant" : "SubpassData",
+          "value" : 6,
+          "capabilities" : [ "InputAttachment" ]
+        }
+      ]
+    },
+    {
+      "category" : "ValueEnum",
+      "kind" : "SamplerAddressingMode",
+      "enumerants" : [
+        {
+          "enumerant" : "None",
+          "value" : 0,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "ClampToEdge",
+          "value" : 1,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "Clamp",
+          "value" : 2,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "Repeat",
+          "value" : 3,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "RepeatMirrored",
+          "value" : 4,
+          "capabilities" : [ "Kernel" ]
+        }
+      ]
+    },
+    {
+      "category" : "ValueEnum",
+      "kind" : "SamplerFilterMode",
+      "enumerants" : [
+        {
+          "enumerant" : "Nearest",
+          "value" : 0,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "Linear",
+          "value" : 1,
+          "capabilities" : [ "Kernel" ]
+        }
+      ]
+    },
+    {
+      "category" : "ValueEnum",
+      "kind" : "ImageFormat",
+      "enumerants" : [
+        {
+          "enumerant" : "Unknown",
+          "value" : 0
+        },
+        {
+          "enumerant" : "Rgba32f",
+          "value" : 1,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "Rgba16f",
+          "value" : 2,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "R32f",
+          "value" : 3,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "Rgba8",
+          "value" : 4,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "Rgba8Snorm",
+          "value" : 5,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "Rg32f",
+          "value" : 6,
+          "capabilities" : [ "StorageImageExtendedFormats" ]
+        },
+        {
+          "enumerant" : "Rg16f",
+          "value" : 7,
+          "capabilities" : [ "StorageImageExtendedFormats" ]
+        },
+        {
+          "enumerant" : "R11fG11fB10f",
+          "value" : 8,
+          "capabilities" : [ "StorageImageExtendedFormats" ]
+        },
+        {
+          "enumerant" : "R16f",
+          "value" : 9,
+          "capabilities" : [ "StorageImageExtendedFormats" ]
+        },
+        {
+          "enumerant" : "Rgba16",
+          "value" : 10,
+          "capabilities" : [ "StorageImageExtendedFormats" ]
+        },
+        {
+          "enumerant" : "Rgb10A2",
+          "value" : 11,
+          "capabilities" : [ "StorageImageExtendedFormats" ]
+        },
+        {
+          "enumerant" : "Rg16",
+          "value" : 12,
+          "capabilities" : [ "StorageImageExtendedFormats" ]
+        },
+        {
+          "enumerant" : "Rg8",
+          "value" : 13,
+          "capabilities" : [ "StorageImageExtendedFormats" ]
+        },
+        {
+          "enumerant" : "R16",
+          "value" : 14,
+          "capabilities" : [ "StorageImageExtendedFormats" ]
+        },
+        {
+          "enumerant" : "R8",
+          "value" : 15,
+          "capabilities" : [ "StorageImageExtendedFormats" ]
+        },
+        {
+          "enumerant" : "Rgba16Snorm",
+          "value" : 16,
+          "capabilities" : [ "StorageImageExtendedFormats" ]
+        },
+        {
+          "enumerant" : "Rg16Snorm",
+          "value" : 17,
+          "capabilities" : [ "StorageImageExtendedFormats" ]
+        },
+        {
+          "enumerant" : "Rg8Snorm",
+          "value" : 18,
+          "capabilities" : [ "StorageImageExtendedFormats" ]
+        },
+        {
+          "enumerant" : "R16Snorm",
+          "value" : 19,
+          "capabilities" : [ "StorageImageExtendedFormats" ]
+        },
+        {
+          "enumerant" : "R8Snorm",
+          "value" : 20,
+          "capabilities" : [ "StorageImageExtendedFormats" ]
+        },
+        {
+          "enumerant" : "Rgba32i",
+          "value" : 21,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "Rgba16i",
+          "value" : 22,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "Rgba8i",
+          "value" : 23,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "R32i",
+          "value" : 24,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "Rg32i",
+          "value" : 25,
+          "capabilities" : [ "StorageImageExtendedFormats" ]
+        },
+        {
+          "enumerant" : "Rg16i",
+          "value" : 26,
+          "capabilities" : [ "StorageImageExtendedFormats" ]
+        },
+        {
+          "enumerant" : "Rg8i",
+          "value" : 27,
+          "capabilities" : [ "StorageImageExtendedFormats" ]
+        },
+        {
+          "enumerant" : "R16i",
+          "value" : 28,
+          "capabilities" : [ "StorageImageExtendedFormats" ]
+        },
+        {
+          "enumerant" : "R8i",
+          "value" : 29,
+          "capabilities" : [ "StorageImageExtendedFormats" ]
+        },
+        {
+          "enumerant" : "Rgba32ui",
+          "value" : 30,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "Rgba16ui",
+          "value" : 31,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "Rgba8ui",
+          "value" : 32,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "R32ui",
+          "value" : 33,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "Rgb10a2ui",
+          "value" : 34,
+          "capabilities" : [ "StorageImageExtendedFormats" ]
+        },
+        {
+          "enumerant" : "Rg32ui",
+          "value" : 35,
+          "capabilities" : [ "StorageImageExtendedFormats" ]
+        },
+        {
+          "enumerant" : "Rg16ui",
+          "value" : 36,
+          "capabilities" : [ "StorageImageExtendedFormats" ]
+        },
+        {
+          "enumerant" : "Rg8ui",
+          "value" : 37,
+          "capabilities" : [ "StorageImageExtendedFormats" ]
+        },
+        {
+          "enumerant" : "R16ui",
+          "value" : 38,
+          "capabilities" : [ "StorageImageExtendedFormats" ]
+        },
+        {
+          "enumerant" : "R8ui",
+          "value" : 39,
+          "capabilities" : [ "StorageImageExtendedFormats" ]
+        }
+      ]
+    },
+    {
+      "category" : "ValueEnum",
+      "kind" : "ImageChannelOrder",
+      "enumerants" : [
+        {
+          "enumerant" : "R",
+          "value" : 0,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "A",
+          "value" : 1,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "RG",
+          "value" : 2,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "RA",
+          "value" : 3,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "RGB",
+          "value" : 4,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "RGBA",
+          "value" : 5,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "BGRA",
+          "value" : 6,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "ARGB",
+          "value" : 7,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "Intensity",
+          "value" : 8,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "Luminance",
+          "value" : 9,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "Rx",
+          "value" : 10,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "RGx",
+          "value" : 11,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "RGBx",
+          "value" : 12,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "Depth",
+          "value" : 13,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "DepthStencil",
+          "value" : 14,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "sRGB",
+          "value" : 15,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "sRGBx",
+          "value" : 16,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "sRGBA",
+          "value" : 17,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "sBGRA",
+          "value" : 18,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "ABGR",
+          "value" : 19,
+          "capabilities" : [ "Kernel" ]
+        }
+      ]
+    },
+    {
+      "category" : "ValueEnum",
+      "kind" : "ImageChannelDataType",
+      "enumerants" : [
+        {
+          "enumerant" : "SnormInt8",
+          "value" : 0,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "SnormInt16",
+          "value" : 1,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "UnormInt8",
+          "value" : 2,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "UnormInt16",
+          "value" : 3,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "UnormShort565",
+          "value" : 4,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "UnormShort555",
+          "value" : 5,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "UnormInt101010",
+          "value" : 6,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "SignedInt8",
+          "value" : 7,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "SignedInt16",
+          "value" : 8,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "SignedInt32",
+          "value" : 9,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "UnsignedInt8",
+          "value" : 10,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "UnsignedInt16",
+          "value" : 11,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "UnsignedInt32",
+          "value" : 12,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "HalfFloat",
+          "value" : 13,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "Float",
+          "value" : 14,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "UnormInt24",
+          "value" : 15,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "UnormInt101010_2",
+          "value" : 16,
+          "capabilities" : [ "Kernel" ]
+        }
+      ]
+    },
+    {
+      "category" : "ValueEnum",
+      "kind" : "FPRoundingMode",
+      "enumerants" : [
+        {
+          "enumerant" : "RTE",
+          "value" : 0,
+          "capabilities" : [
+            "Kernel",
+            "StorageUniformBufferBlock16",
+            "StorageUniform16",
+            "StoragePushConstant16",
+            "StorageInputOutput16"
+          ]
+        },
+        {
+          "enumerant" : "RTZ",
+          "value" : 1,
+          "capabilities" : [
+            "Kernel",
+            "StorageUniformBufferBlock16",
+            "StorageUniform16",
+            "StoragePushConstant16",
+            "StorageInputOutput16"
+          ]
+        },
+        {
+          "enumerant" : "RTP",
+          "value" : 2,
+          "capabilities" : [
+            "Kernel",
+            "StorageUniformBufferBlock16",
+            "StorageUniform16",
+            "StoragePushConstant16",
+            "StorageInputOutput16"
+          ]
+        },
+        {
+          "enumerant" : "RTN",
+          "value" : 3,
+          "capabilities" : [
+            "Kernel",
+            "StorageUniformBufferBlock16",
+            "StorageUniform16",
+            "StoragePushConstant16",
+            "StorageInputOutput16"
+          ]
+        }
+      ]
+    },
+    {
+      "category" : "ValueEnum",
+      "kind" : "LinkageType",
+      "enumerants" : [
+        {
+          "enumerant" : "Export",
+          "value" : 0,
+          "capabilities" : [ "Linkage" ]
+        },
+        {
+          "enumerant" : "Import",
+          "value" : 1,
+          "capabilities" : [ "Linkage" ]
+        }
+      ]
+    },
+    {
+      "category" : "ValueEnum",
+      "kind" : "AccessQualifier",
+      "enumerants" : [
+        {
+          "enumerant" : "ReadOnly",
+          "value" : 0,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "WriteOnly",
+          "value" : 1,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "ReadWrite",
+          "value" : 2,
+          "capabilities" : [ "Kernel" ]
+        }
+      ]
+    },
+    {
+      "category" : "ValueEnum",
+      "kind" : "FunctionParameterAttribute",
+      "enumerants" : [
+        {
+          "enumerant" : "Zext",
+          "value" : 0,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "Sext",
+          "value" : 1,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "ByVal",
+          "value" : 2,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "Sret",
+          "value" : 3,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "NoAlias",
+          "value" : 4,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "NoCapture",
+          "value" : 5,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "NoWrite",
+          "value" : 6,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "NoReadWrite",
+          "value" : 7,
+          "capabilities" : [ "Kernel" ]
+        }
+      ]
+    },
+    {
+      "category" : "ValueEnum",
+      "kind" : "Decoration",
+      "enumerants" : [
+        {
+          "enumerant" : "RelaxedPrecision",
+          "value" : 0,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "SpecId",
+          "value" : 1,
+          "capabilities" : [ "Shader" ],
+          "parameters" : [
+            { "kind" : "LiteralInteger", "name" : "'Specialization Constant ID'" }
+          ]
+        },
+        {
+          "enumerant" : "Block",
+          "value" : 2,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "BufferBlock",
+          "value" : 3,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "RowMajor",
+          "value" : 4,
+          "capabilities" : [ "Matrix" ]
+        },
+        {
+          "enumerant" : "ColMajor",
+          "value" : 5,
+          "capabilities" : [ "Matrix" ]
+        },
+        {
+          "enumerant" : "ArrayStride",
+          "value" : 6,
+          "capabilities" : [ "Shader" ],
+          "parameters" : [
+            { "kind" : "LiteralInteger", "name" : "'Array Stride'" }
+          ]
+        },
+        {
+          "enumerant" : "MatrixStride",
+          "value" : 7,
+          "capabilities" : [ "Matrix" ],
+          "parameters" : [
+            { "kind" : "LiteralInteger", "name" : "'Matrix Stride'" }
+          ]
+        },
+        {
+          "enumerant" : "GLSLShared",
+          "value" : 8,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "GLSLPacked",
+          "value" : 9,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "CPacked",
+          "value" : 10,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "BuiltIn",
+          "value" : 11,
+          "parameters" : [
+            { "kind" : "BuiltIn" }
+          ]
+        },
+        {
+          "enumerant" : "NoPerspective",
+          "value" : 13,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "Flat",
+          "value" : 14,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "Patch",
+          "value" : 15,
+          "capabilities" : [ "Tessellation" ]
+        },
+        {
+          "enumerant" : "Centroid",
+          "value" : 16,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "Sample",
+          "value" : 17,
+          "capabilities" : [ "SampleRateShading" ]
+        },
+        {
+          "enumerant" : "Invariant",
+          "value" : 18,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "Restrict",
+          "value" : 19
+        },
+        {
+          "enumerant" : "Aliased",
+          "value" : 20
+        },
+        {
+          "enumerant" : "Volatile",
+          "value" : 21
+        },
+        {
+          "enumerant" : "Constant",
+          "value" : 22,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "Coherent",
+          "value" : 23
+        },
+        {
+          "enumerant" : "NonWritable",
+          "value" : 24
+        },
+        {
+          "enumerant" : "NonReadable",
+          "value" : 25
+        },
+        {
+          "enumerant" : "Uniform",
+          "value" : 26,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "SaturatedConversion",
+          "value" : 28,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "Stream",
+          "value" : 29,
+          "capabilities" : [ "GeometryStreams" ],
+          "parameters" : [
+            { "kind" : "LiteralInteger", "name" : "'Stream Number'" }
+          ]
+        },
+        {
+          "enumerant" : "Location",
+          "value" : 30,
+          "capabilities" : [ "Shader" ],
+          "parameters" : [
+            { "kind" : "LiteralInteger", "name" : "'Location'" }
+          ]
+        },
+        {
+          "enumerant" : "Component",
+          "value" : 31,
+          "capabilities" : [ "Shader" ],
+          "parameters" : [
+            { "kind" : "LiteralInteger", "name" : "'Component'" }
+          ]
+        },
+        {
+          "enumerant" : "Index",
+          "value" : 32,
+          "capabilities" : [ "Shader" ],
+          "parameters" : [
+            { "kind" : "LiteralInteger", "name" : "'Index'" }
+          ]
+        },
+        {
+          "enumerant" : "Binding",
+          "value" : 33,
+          "capabilities" : [ "Shader" ],
+          "parameters" : [
+            { "kind" : "LiteralInteger", "name" : "'Binding Point'" }
+          ]
+        },
+        {
+          "enumerant" : "DescriptorSet",
+          "value" : 34,
+          "capabilities" : [ "Shader" ],
+          "parameters" : [
+            { "kind" : "LiteralInteger", "name" : "'Descriptor Set'" }
+          ]
+        },
+        {
+          "enumerant" : "Offset",
+          "value" : 35,
+          "capabilities" : [ "Shader" ],
+          "parameters" : [
+            { "kind" : "LiteralInteger", "name" : "'Byte Offset'" }
+          ]
+        },
+        {
+          "enumerant" : "XfbBuffer",
+          "value" : 36,
+          "capabilities" : [ "TransformFeedback" ],
+          "parameters" : [
+            { "kind" : "LiteralInteger", "name" : "'XFB Buffer Number'" }
+          ]
+        },
+        {
+          "enumerant" : "XfbStride",
+          "value" : 37,
+          "capabilities" : [ "TransformFeedback" ],
+          "parameters" : [
+            { "kind" : "LiteralInteger", "name" : "'XFB Stride'" }
+          ]
+        },
+        {
+          "enumerant" : "FuncParamAttr",
+          "value" : 38,
+          "capabilities" : [ "Kernel" ],
+          "parameters" : [
+            { "kind" : "FunctionParameterAttribute", "name" : "'Function Parameter Attribute'" }
+          ]
+        },
+        {
+          "enumerant" : "FPRoundingMode",
+          "value" : 39,
+          "capabilities" : [
+            "Kernel",
+            "StorageUniformBufferBlock16",
+            "StorageUniform16",
+            "StoragePushConstant16",
+            "StorageInputOutput16"
+          ],
+          "parameters" : [
+            { "kind" : "FPRoundingMode", "name" : "'Floating-Point Rounding Mode'" }
+          ]
+        },
+        {
+          "enumerant" : "FPFastMathMode",
+          "value" : 40,
+          "capabilities" : [ "Kernel" ],
+          "parameters" : [
+            { "kind" : "FPFastMathMode", "name" : "'Fast-Math Mode'" }
+          ]
+        },
+        {
+          "enumerant" : "LinkageAttributes",
+          "value" : 41,
+          "capabilities" : [ "Linkage" ],
+          "parameters" : [
+            { "kind" : "LiteralString", "name" : "'Name'" },
+            { "kind" : "LinkageType",   "name" : "'Linkage Type'" }
+          ]
+        },
+        {
+          "enumerant" : "NoContraction",
+          "value" : 42,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "InputAttachmentIndex",
+          "value" : 43,
+          "capabilities" : [ "InputAttachment" ],
+          "parameters" : [
+            { "kind" : "LiteralInteger", "name" : "'Attachment Index'" }
+          ]
+        },
+        {
+          "enumerant" : "Alignment",
+          "value" : 44,
+          "capabilities" : [ "Kernel" ],
+          "parameters" : [
+            { "kind" : "LiteralInteger", "name" : "'Alignment'" }
+          ]
+        },
+        {
+          "enumerant" : "ExplicitInterpAMD",
+          "value" : 4999
+        },
+        {
+          "enumerant" : "OverrideCoverageNV",
+          "value" : 5248,
+          "capabilities" : [ "SampleMaskOverrideCoverageNV" ]
+        },
+        {
+          "enumerant" : "PassthroughNV",
+          "value" : 5250,
+          "capabilities" : [ "GeometryShaderPassthroughNV" ]
+        },
+        {
+          "enumerant" : "ViewportRelativeNV",
+          "value" : 5252,
+          "capabilities" : [ "ShaderViewportMaskNV" ]
+        },
+        {
+          "enumerant" : "SecondaryViewportRelativeNV",
+          "value" : 5256,
+          "capabilities" : [ "ShaderStereoViewNV" ],
+          "parameters" : [
+            { "kind" : "LiteralInteger", "name" : "'Offset'" }
+          ]
+        },
+        {
+          "enumerant" : "HlslCounterBufferGOOGLE",
+          "value" : 5634,
+          "parameters" : [
+            { "kind" : "IdRef", "name" : "'Counter Buffer'" }
+          ],
+          "extensions" : [ "SPV_GOOGLE_hlsl_functionality1" ]
+        },
+        {
+          "enumerant" : "HlslSemanticGOOGLE",
+          "value" : 5635,
+          "parameters" : [
+            { "kind" : "LiteralString", "name" : "'Semantic'" }
+          ],
+          "extensions" : [ "SPV_GOOGLE_hlsl_functionality1" ]
+        }
+      ]
+    },
+    {
+      "category" : "ValueEnum",
+      "kind" : "BuiltIn",
+      "enumerants" : [
+        {
+          "enumerant" : "Position",
+          "value" : 0,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "PointSize",
+          "value" : 1,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "ClipDistance",
+          "value" : 3,
+          "capabilities" : [ "ClipDistance" ]
+        },
+        {
+          "enumerant" : "CullDistance",
+          "value" : 4,
+          "capabilities" : [ "CullDistance" ]
+        },
+        {
+          "enumerant" : "VertexId",
+          "value" : 5,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "InstanceId",
+          "value" : 6,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "PrimitiveId",
+          "value" : 7,
+          "capabilities" : [ "Geometry", "Tessellation" ]
+        },
+        {
+          "enumerant" : "InvocationId",
+          "value" : 8,
+          "capabilities" : [ "Geometry", "Tessellation" ]
+        },
+        {
+          "enumerant" : "Layer",
+          "value" : 9,
+          "capabilities" : [ "Geometry" ]
+        },
+        {
+          "enumerant" : "ViewportIndex",
+          "value" : 10,
+          "capabilities" : [ "MultiViewport" ]
+        },
+        {
+          "enumerant" : "TessLevelOuter",
+          "value" : 11,
+          "capabilities" : [ "Tessellation" ]
+        },
+        {
+          "enumerant" : "TessLevelInner",
+          "value" : 12,
+          "capabilities" : [ "Tessellation" ]
+        },
+        {
+          "enumerant" : "TessCoord",
+          "value" : 13,
+          "capabilities" : [ "Tessellation" ]
+        },
+        {
+          "enumerant" : "PatchVertices",
+          "value" : 14,
+          "capabilities" : [ "Tessellation" ]
+        },
+        {
+          "enumerant" : "FragCoord",
+          "value" : 15,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "PointCoord",
+          "value" : 16,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "FrontFacing",
+          "value" : 17,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "SampleId",
+          "value" : 18,
+          "capabilities" : [ "SampleRateShading" ]
+        },
+        {
+          "enumerant" : "SamplePosition",
+          "value" : 19,
+          "capabilities" : [ "SampleRateShading" ]
+        },
+        {
+          "enumerant" : "SampleMask",
+          "value" : 20,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "FragDepth",
+          "value" : 22,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "HelperInvocation",
+          "value" : 23,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "NumWorkgroups",
+          "value" : 24
+        },
+        {
+          "enumerant" : "WorkgroupSize",
+          "value" : 25
+        },
+        {
+          "enumerant" : "WorkgroupId",
+          "value" : 26
+        },
+        {
+          "enumerant" : "LocalInvocationId",
+          "value" : 27
+        },
+        {
+          "enumerant" : "GlobalInvocationId",
+          "value" : 28
+        },
+        {
+          "enumerant" : "LocalInvocationIndex",
+          "value" : 29
+        },
+        {
+          "enumerant" : "WorkDim",
+          "value" : 30,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "GlobalSize",
+          "value" : 31,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "EnqueuedWorkgroupSize",
+          "value" : 32,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "GlobalOffset",
+          "value" : 33,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "GlobalLinearId",
+          "value" : 34,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "SubgroupSize",
+          "value" : 36,
+          "capabilities" : [ "Kernel", "SubgroupBallotKHR" ]
+        },
+        {
+          "enumerant" : "SubgroupMaxSize",
+          "value" : 37,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "NumSubgroups",
+          "value" : 38,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "NumEnqueuedSubgroups",
+          "value" : 39,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "SubgroupId",
+          "value" : 40,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "SubgroupLocalInvocationId",
+          "value" : 41,
+          "capabilities" : [ "Kernel", "SubgroupBallotKHR" ]
+        },
+        {
+          "enumerant" : "VertexIndex",
+          "value" : 42,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "InstanceIndex",
+          "value" : 43,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "SubgroupEqMaskKHR",
+          "value" : 4416,
+          "capabilities" : [ "SubgroupBallotKHR" ]
+        },
+        {
+          "enumerant" : "SubgroupGeMaskKHR",
+          "value" : 4417,
+          "capabilities" : [ "SubgroupBallotKHR" ]
+        },
+        {
+          "enumerant" : "SubgroupGtMaskKHR",
+          "value" : 4418,
+          "capabilities" : [ "SubgroupBallotKHR" ]
+        },
+        {
+          "enumerant" : "SubgroupLeMaskKHR",
+          "value" : 4419,
+          "capabilities" : [ "SubgroupBallotKHR" ]
+        },
+        {
+          "enumerant" : "SubgroupLtMaskKHR",
+          "value" : 4420,
+          "capabilities" : [ "SubgroupBallotKHR" ]
+        },
+        {
+          "enumerant" : "BaseVertex",
+          "value" : 4424,
+          "capabilities" : [ "DrawParameters" ]
+        },
+        {
+          "enumerant" : "BaseInstance",
+          "value" : 4425,
+          "capabilities" : [ "DrawParameters" ]
+        },
+        {
+          "enumerant" : "DrawIndex",
+          "value" : 4426,
+          "capabilities" : [ "DrawParameters" ]
+        },
+        {
+          "enumerant" : "DeviceIndex",
+          "value" : 4438,
+          "capabilities" : [ "DeviceGroup" ]
+        },
+        {
+          "enumerant" : "ViewIndex",
+          "value" : 4440,
+          "capabilities" : [ "MultiView" ]
+        },
+        {
+          "enumerant" : "BaryCoordNoPerspAMD",
+          "value" : 4992
+        },
+        {
+          "enumerant" : "BaryCoordNoPerspCentroidAMD",
+          "value" : 4993
+        },
+        {
+          "enumerant" : "BaryCoordNoPerspSampleAMD",
+          "value" : 4994
+        },
+        {
+          "enumerant" : "BaryCoordSmoothAMD",
+          "value" : 4995
+        },
+        {
+          "enumerant" : "BaryCoordSmoothCentroidAMD",
+          "value" : 4996
+        },
+        {
+          "enumerant" : "BaryCoordSmoothSampleAMD",
+          "value" : 4997
+        },
+        {
+          "enumerant" : "BaryCoordPullModelAMD",
+          "value" : 4998
+        },
+        {
+          "enumerant" : "FragStencilRefEXT",
+          "value" : 5014,
+          "capabilities" : [ "StencilExportEXT" ]
+        },
+        {
+          "enumerant" : "ViewportMaskNV",
+          "value" : 5253,
+          "capabilities" : [ "ShaderViewportMaskNV" ]
+        },
+        {
+          "enumerant" : "SecondaryPositionNV",
+          "value" : 5257,
+          "capabilities" : [ "ShaderStereoViewNV" ]
+        },
+        {
+          "enumerant" : "SecondaryViewportMaskNV",
+          "value" : 5258,
+          "capabilities" : [ "ShaderStereoViewNV" ]
+        },
+        {
+          "enumerant" : "PositionPerViewNV",
+          "value" : 5261,
+          "capabilities" : [ "PerViewAttributesNV" ]
+        },
+        {
+          "enumerant" : "ViewportMaskPerViewNV",
+          "value" : 5262,
+          "capabilities" : [ "PerViewAttributesNV" ]
+        }
+      ]
+    },
+    {
+      "category" : "ValueEnum",
+      "kind" : "Scope",
+      "enumerants" : [
+        {
+          "enumerant" : "CrossDevice",
+          "value" : 0
+        },
+        {
+          "enumerant" : "Device",
+          "value" : 1
+        },
+        {
+          "enumerant" : "Workgroup",
+          "value" : 2
+        },
+        {
+          "enumerant" : "Subgroup",
+          "value" : 3
+        },
+        {
+          "enumerant" : "Invocation",
+          "value" : 4
+        }
+      ]
+    },
+    {
+      "category" : "ValueEnum",
+      "kind" : "GroupOperation",
+      "enumerants" : [
+        {
+          "enumerant" : "Reduce",
+          "value" : 0,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "InclusiveScan",
+          "value" : 1,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "ExclusiveScan",
+          "value" : 2,
+          "capabilities" : [ "Kernel" ]
+        }
+      ]
+    },
+    {
+      "category" : "ValueEnum",
+      "kind" : "KernelEnqueueFlags",
+      "enumerants" : [
+        {
+          "enumerant" : "NoWait",
+          "value" : 0,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "WaitKernel",
+          "value" : 1,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "WaitWorkGroup",
+          "value" : 2,
+          "capabilities" : [ "Kernel" ]
+        }
+      ]
+    },
+    {
+      "category" : "ValueEnum",
+      "kind" : "Capability",
+      "enumerants" : [
+        {
+          "enumerant" : "Matrix",
+          "value" : 0
+        },
+        {
+          "enumerant" : "Shader",
+          "value" : 1,
+          "capabilities" : [ "Matrix" ]
+        },
+        {
+          "enumerant" : "Geometry",
+          "value" : 2,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "Tessellation",
+          "value" : 3,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "Addresses",
+          "value" : 4
+        },
+        {
+          "enumerant" : "Linkage",
+          "value" : 5
+        },
+        {
+          "enumerant" : "Kernel",
+          "value" : 6
+        },
+        {
+          "enumerant" : "Vector16",
+          "value" : 7,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "Float16Buffer",
+          "value" : 8,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "Float16",
+          "value" : 9
+        },
+        {
+          "enumerant" : "Float64",
+          "value" : 10
+        },
+        {
+          "enumerant" : "Int64",
+          "value" : 11
+        },
+        {
+          "enumerant" : "Int64Atomics",
+          "value" : 12,
+          "capabilities" : [ "Int64" ]
+        },
+        {
+          "enumerant" : "ImageBasic",
+          "value" : 13,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "ImageReadWrite",
+          "value" : 14,
+          "capabilities" : [ "ImageBasic" ]
+        },
+        {
+          "enumerant" : "ImageMipmap",
+          "value" : 15,
+          "capabilities" : [ "ImageBasic" ]
+        },
+        {
+          "enumerant" : "Pipes",
+          "value" : 17,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "Groups",
+          "value" : 18
+        },
+        {
+          "enumerant" : "DeviceEnqueue",
+          "value" : 19,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "LiteralSampler",
+          "value" : 20,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "AtomicStorage",
+          "value" : 21,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "Int16",
+          "value" : 22
+        },
+        {
+          "enumerant" : "TessellationPointSize",
+          "value" : 23,
+          "capabilities" : [ "Tessellation" ]
+        },
+        {
+          "enumerant" : "GeometryPointSize",
+          "value" : 24,
+          "capabilities" : [ "Geometry" ]
+        },
+        {
+          "enumerant" : "ImageGatherExtended",
+          "value" : 25,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "StorageImageMultisample",
+          "value" : 27,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "UniformBufferArrayDynamicIndexing",
+          "value" : 28,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "SampledImageArrayDynamicIndexing",
+          "value" : 29,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "StorageBufferArrayDynamicIndexing",
+          "value" : 30,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "StorageImageArrayDynamicIndexing",
+          "value" : 31,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "ClipDistance",
+          "value" : 32,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "CullDistance",
+          "value" : 33,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "ImageCubeArray",
+          "value" : 34,
+          "capabilities" : [ "SampledCubeArray" ]
+        },
+        {
+          "enumerant" : "SampleRateShading",
+          "value" : 35,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "ImageRect",
+          "value" : 36,
+          "capabilities" : [ "SampledRect" ]
+        },
+        {
+          "enumerant" : "SampledRect",
+          "value" : 37,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "GenericPointer",
+          "value" : 38,
+          "capabilities" : [ "Addresses" ]
+        },
+        {
+          "enumerant" : "Int8",
+          "value" : 39,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "InputAttachment",
+          "value" : 40,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "SparseResidency",
+          "value" : 41,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "MinLod",
+          "value" : 42,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "Sampled1D",
+          "value" : 43
+        },
+        {
+          "enumerant" : "Image1D",
+          "value" : 44,
+          "capabilities" : [ "Sampled1D" ]
+        },
+        {
+          "enumerant" : "SampledCubeArray",
+          "value" : 45,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "SampledBuffer",
+          "value" : 46
+        },
+        {
+          "enumerant" : "ImageBuffer",
+          "value" : 47,
+          "capabilities" : [ "SampledBuffer" ]
+        },
+        {
+          "enumerant" : "ImageMSArray",
+          "value" : 48,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "StorageImageExtendedFormats",
+          "value" : 49,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "ImageQuery",
+          "value" : 50,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "DerivativeControl",
+          "value" : 51,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "InterpolationFunction",
+          "value" : 52,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "TransformFeedback",
+          "value" : 53,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "GeometryStreams",
+          "value" : 54,
+          "capabilities" : [ "Geometry" ]
+        },
+        {
+          "enumerant" : "StorageImageReadWithoutFormat",
+          "value" : 55,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "StorageImageWriteWithoutFormat",
+          "value" : 56,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "MultiViewport",
+          "value" : 57,
+          "capabilities" : [ "Geometry" ]
+        },
+        {
+          "enumerant" : "SubgroupBallotKHR",
+          "value" : 4423,
+          "extensions" : [ "SPV_KHR_shader_ballot" ]
+        },
+        {
+          "enumerant" : "DrawParameters",
+          "value" : 4427,
+          "extensions" : [ "SPV_KHR_shader_draw_parameters" ]
+        },
+        {
+          "enumerant" : "SubgroupVoteKHR",
+          "value" : 4431,
+          "extensions" : [ "SPV_KHR_subgroup_vote" ]
+        },
+        {
+          "enumerant" : "StorageBuffer16BitAccess",
+          "value" : 4433,
+          "extensions" : [ "SPV_KHR_16bit_storage" ]
+        },
+        {
+          "enumerant" : "StorageUniformBufferBlock16",
+          "value" : 4433,
+          "extensions" : [ "SPV_KHR_16bit_storage" ]
+        },
+        {
+          "enumerant" : "UniformAndStorageBuffer16BitAccess",
+          "value" : 4434,
+          "capabilities" : [
+            "StorageBuffer16BitAccess",
+            "StorageUniformBufferBlock16"
+          ],
+          "extensions" : [ "SPV_KHR_16bit_storage" ]
+        },
+        {
+          "enumerant" : "StorageUniform16",
+          "value" : 4434,
+          "capabilities" : [
+            "StorageBuffer16BitAccess",
+            "StorageUniformBufferBlock16"
+          ],
+          "extensions" : [ "SPV_KHR_16bit_storage" ]
+        },
+        {
+          "enumerant" : "StoragePushConstant16",
+          "value" : 4435,
+          "extensions" : [ "SPV_KHR_16bit_storage" ]
+        },
+        {
+          "enumerant" : "StorageInputOutput16",
+          "value" : 4436,
+          "extensions" : [ "SPV_KHR_16bit_storage" ]
+        },
+        {
+          "enumerant" : "DeviceGroup",
+          "value" : 4437,
+          "extensions" : [ "SPV_KHR_device_group" ]
+        },
+        {
+          "enumerant" : "MultiView",
+          "value" : 4439,
+          "capabilities" : [ "Shader" ],
+          "extensions" : [ "SPV_KHR_multiview" ]
+        },
+        {
+          "enumerant" : "VariablePointersStorageBuffer",
+          "value" : 4441,
+          "capabilities" : [ "Shader" ],
+          "extensions" : [ "SPV_KHR_variable_pointers" ]
+        },
+        {
+          "enumerant" : "VariablePointers",
+          "value" : 4442,
+          "capabilities" : [ "VariablePointersStorageBuffer" ],
+          "extensions" : [ "SPV_KHR_variable_pointers" ]
+        },
+        {
+            "enumerant": "AtomicStorageOps",
+            "value": 4445,
+            "extensions": [ "SPV_KHR_shader_atomic_counter_ops" ]
+        },
+        {
+          "enumerant" : "SampleMaskPostDepthCoverage",
+          "value" : 4447,
+          "extensions" : [ "SPV_KHR_post_depth_coverage" ]
+        },
+        {
+          "enumerant" : "ImageGatherBiasLodAMD",
+          "value" : 5009,
+          "capabilities" : [ "Shader" ],
+          "extensions" : [ "SPV_AMD_texture_gather_bias_lod" ]
+        },
+        {
+          "enumerant" : "FragmentMaskAMD",
+          "value" : 5010,
+          "capabilities" : [ "Shader" ],
+          "extensions" : [ "SPV_AMD_shader_fragment_mask" ]
+        },
+        {
+          "enumerant" : "StencilExportEXT",
+          "value" : 5013,
+          "capabilities" : [ "Shader" ],
+          "extensions" : [ "SPV_EXT_shader_stencil_export" ]
+        },
+        {
+          "enumerant" : "ImageReadWriteLodAMD",
+          "value" : 5015,
+          "capabilities" : [ "Shader" ],
+          "extensions" : [ "SPV_AMD_shader_image_load_store_lod" ]
+        },
+        {
+          "enumerant" : "SampleMaskOverrideCoverageNV",
+          "value" : 5249,
+          "capabilities" : [ "SampleRateShading" ],
+          "extensions" : [ "SPV_NV_sample_mask_override_coverage" ]
+        },
+        {
+          "enumerant" : "GeometryShaderPassthroughNV",
+          "value" : 5251,
+          "capabilities" : [ "Geometry" ],
+          "extensions" : [ "SPV_NV_geometry_shader_passthrough" ]
+        },
+        {
+          "enumerant" : "ShaderViewportIndexLayerEXT",
+          "value" : 5254,
+          "capabilities" : [ "MultiViewport" ],
+          "extensions" : [ "SPV_EXT_shader_viewport_index_layer" ]
+        },
+        {
+          "enumerant" : "ShaderViewportIndexLayerNV",
+          "value" : 5254,
+          "capabilities" : [ "MultiViewport" ],
+          "extensions" : [ "SPV_NV_viewport_array2" ]
+        },
+        {
+          "enumerant" : "ShaderViewportMaskNV",
+          "value" : 5255,
+          "capabilities" : [ "ShaderViewportIndexLayerNV" ],
+          "extensions" : [ "SPV_NV_viewport_array2" ]
+        },
+        {
+          "enumerant" : "ShaderStereoViewNV",
+          "value" : 5259,
+          "capabilities" : [ "ShaderViewportMaskNV" ],
+          "extensions" : [ "SPV_NV_stereo_view_rendering" ]
+        },
+        {
+          "enumerant" : "PerViewAttributesNV",
+          "value" : 5260,
+          "capabilities" : [ "MultiView" ],
+          "extensions" : [ "SPV_NVX_multiview_per_view_attributes" ]
+        },
+        {
+          "enumerant" : "SubgroupShuffleINTEL",
+          "value" : 5568,
+          "extensions" : [ "SPV_INTEL_subgroups" ]
+        },
+        {
+          "enumerant" : "SubgroupBufferBlockIOINTEL",
+          "value" : 5569,
+          "extensions" : [ "SPV_INTEL_subgroups" ]
+        },
+        {
+          "enumerant" : "SubgroupImageBlockIOINTEL",
+          "value" : 5570,
+          "extensions" : [ "SPV_INTEL_subgroups" ]
+        }
+      ]
+    },
+    {
+      "category" : "Id",
+      "kind" : "IdResultType",
+      "doc" : "Reference to an <id> representing the result's type of the enclosing instruction"
+    },
+    {
+      "category" : "Id",
+      "kind" : "IdResult",
+      "doc" : "Definition of an <id> representing the result of the enclosing instruction"
+    },
+    {
+      "category" : "Id",
+      "kind" : "IdMemorySemantics",
+      "doc" : "Reference to an <id> representing a 32-bit integer that is a mask from the MemorySemantics operand kind"
+    },
+    {
+      "category" : "Id",
+      "kind" : "IdScope",
+      "doc" : "Reference to an <id> representing a 32-bit integer that is a mask from the Scope operand kind"
+    },
+    {
+      "category" : "Id",
+      "kind" : "IdRef",
+      "doc" : "Reference to an <id>"
+    },
+    {
+      "category" : "Literal",
+      "kind" : "LiteralInteger",
+      "doc" : "An integer consuming one or more words"
+    },
+    {
+      "category" : "Literal",
+      "kind" : "LiteralString",
+      "doc" : "A null-terminated stream of characters consuming an integral number of words"
+    },
+    {
+      "category" : "Literal",
+      "kind" : "LiteralContextDependentNumber",
+      "doc" : "A literal number whose size and format are determined by a previous operand in the enclosing instruction"
+    },
+    {
+      "category" : "Literal",
+      "kind" : "LiteralExtInstInteger",
+      "doc" : "A 32-bit unsigned integer indicating which instruction to use and determining the layout of following operands (for OpExtInst)"
+    },
+    {
+      "category" : "Literal",
+      "kind" : "LiteralSpecConstantOpInteger",
+      "doc" : "An opcode indicating the operation to be performed and determining the layout of following operands (for OpSpecConstantOp)"
+    },
+    {
+      "category" : "Composite",
+      "kind" : "PairLiteralIntegerIdRef",
+      "bases" : [ "LiteralInteger", "IdRef" ]
+    },
+    {
+      "category" : "Composite",
+      "kind" : "PairIdRefLiteralInteger",
+      "bases" : [ "IdRef", "LiteralInteger" ]
+    },
+    {
+      "category" : "Composite",
+      "kind" : "PairIdRefIdRef",
+      "bases" : [ "IdRef", "IdRef" ]
+    }
+  ]
+}
diff --git a/libs/spirv-headers/spirv/1.0/spirv.cs b/libs/spirv-headers/spirv/1.0/spirv.cs
new file mode 100644
index 00000000000..de325cc4aad
--- /dev/null
+++ b/libs/spirv-headers/spirv/1.0/spirv.cs
@@ -0,0 +1,993 @@
+// Copyright (c) 2014-2018 The Khronos Group Inc.
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and/or associated documentation files (the "Materials"),
+// to deal in the Materials without restriction, including without limitation
+// the rights to use, copy, modify, merge, publish, distribute, sublicense,
+// and/or sell copies of the Materials, and to permit persons to whom the
+// Materials are furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Materials.
+// 
+// MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS KHRONOS
+// STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS SPECIFICATIONS AND
+// HEADER INFORMATION ARE LOCATED AT https://www.khronos.org/registry/ 
+// 
+// THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM,OUT OF OR IN CONNECTION WITH THE MATERIALS OR THE USE OR OTHER DEALINGS
+// IN THE MATERIALS.
+
+// This header is automatically generated by the same tool that creates
+// the Binary Section of the SPIR-V specification.
+
+// Enumeration tokens for SPIR-V, in various styles:
+//   C, C++, C++11, JSON, Lua, Python, C#
+// 
+// - C will have tokens with a "Spv" prefix, e.g.: SpvSourceLanguageGLSL
+// - C++ will have tokens in the "spv" name space, e.g.: spv::SourceLanguageGLSL
+// - C++11 will use enum classes in the spv namespace, e.g.: spv::SourceLanguage::GLSL
+// - Lua will use tables, e.g.: spv.SourceLanguage.GLSL
+// - Python will use dictionaries, e.g.: spv['SourceLanguage']['GLSL']
+// - C# will use enum classes in the Specification class located in the "Spv" namespace, e.g.: Spv.Specification.SourceLanguage.GLSL
+// 
+// Some tokens act like mask values, which can be OR'd together,
+// while others are mutually exclusive.  The mask-like ones have
+// "Mask" in their name, and a parallel enum that has the shift
+// amount (1 << x) for each corresponding enumerant.
+
+namespace Spv
+{
+
+    public static class Specification
+    {
+        public const uint MagicNumber = 0x07230203;
+        public const uint Version = 0x00010000;
+        public const uint Revision = 12;
+        public const uint OpCodeMask = 0xffff;
+        public const uint WordCountShift = 16;
+
+        public enum SourceLanguage
+        {
+            Unknown = 0,
+            ESSL = 1,
+            GLSL = 2,
+            OpenCL_C = 3,
+            OpenCL_CPP = 4,
+            HLSL = 5,
+        }
+
+        public enum ExecutionModel
+        {
+            Vertex = 0,
+            TessellationControl = 1,
+            TessellationEvaluation = 2,
+            Geometry = 3,
+            Fragment = 4,
+            GLCompute = 5,
+            Kernel = 6,
+        }
+
+        public enum AddressingModel
+        {
+            Logical = 0,
+            Physical32 = 1,
+            Physical64 = 2,
+        }
+
+        public enum MemoryModel
+        {
+            Simple = 0,
+            GLSL450 = 1,
+            OpenCL = 2,
+        }
+
+        public enum ExecutionMode
+        {
+            Invocations = 0,
+            SpacingEqual = 1,
+            SpacingFractionalEven = 2,
+            SpacingFractionalOdd = 3,
+            VertexOrderCw = 4,
+            VertexOrderCcw = 5,
+            PixelCenterInteger = 6,
+            OriginUpperLeft = 7,
+            OriginLowerLeft = 8,
+            EarlyFragmentTests = 9,
+            PointMode = 10,
+            Xfb = 11,
+            DepthReplacing = 12,
+            DepthGreater = 14,
+            DepthLess = 15,
+            DepthUnchanged = 16,
+            LocalSize = 17,
+            LocalSizeHint = 18,
+            InputPoints = 19,
+            InputLines = 20,
+            InputLinesAdjacency = 21,
+            Triangles = 22,
+            InputTrianglesAdjacency = 23,
+            Quads = 24,
+            Isolines = 25,
+            OutputVertices = 26,
+            OutputPoints = 27,
+            OutputLineStrip = 28,
+            OutputTriangleStrip = 29,
+            VecTypeHint = 30,
+            ContractionOff = 31,
+            PostDepthCoverage = 4446,
+            StencilRefReplacingEXT = 5027,
+        }
+
+        public enum StorageClass
+        {
+            UniformConstant = 0,
+            Input = 1,
+            Uniform = 2,
+            Output = 3,
+            Workgroup = 4,
+            CrossWorkgroup = 5,
+            Private = 6,
+            Function = 7,
+            Generic = 8,
+            PushConstant = 9,
+            AtomicCounter = 10,
+            Image = 11,
+            StorageBuffer = 12,
+        }
+
+        public enum Dim
+        {
+            Dim1D = 0,
+            Dim2D = 1,
+            Dim3D = 2,
+            Cube = 3,
+            Rect = 4,
+            Buffer = 5,
+            SubpassData = 6,
+        }
+
+        public enum SamplerAddressingMode
+        {
+            None = 0,
+            ClampToEdge = 1,
+            Clamp = 2,
+            Repeat = 3,
+            RepeatMirrored = 4,
+        }
+
+        public enum SamplerFilterMode
+        {
+            Nearest = 0,
+            Linear = 1,
+        }
+
+        public enum ImageFormat
+        {
+            Unknown = 0,
+            Rgba32f = 1,
+            Rgba16f = 2,
+            R32f = 3,
+            Rgba8 = 4,
+            Rgba8Snorm = 5,
+            Rg32f = 6,
+            Rg16f = 7,
+            R11fG11fB10f = 8,
+            R16f = 9,
+            Rgba16 = 10,
+            Rgb10A2 = 11,
+            Rg16 = 12,
+            Rg8 = 13,
+            R16 = 14,
+            R8 = 15,
+            Rgba16Snorm = 16,
+            Rg16Snorm = 17,
+            Rg8Snorm = 18,
+            R16Snorm = 19,
+            R8Snorm = 20,
+            Rgba32i = 21,
+            Rgba16i = 22,
+            Rgba8i = 23,
+            R32i = 24,
+            Rg32i = 25,
+            Rg16i = 26,
+            Rg8i = 27,
+            R16i = 28,
+            R8i = 29,
+            Rgba32ui = 30,
+            Rgba16ui = 31,
+            Rgba8ui = 32,
+            R32ui = 33,
+            Rgb10a2ui = 34,
+            Rg32ui = 35,
+            Rg16ui = 36,
+            Rg8ui = 37,
+            R16ui = 38,
+            R8ui = 39,
+        }
+
+        public enum ImageChannelOrder
+        {
+            R = 0,
+            A = 1,
+            RG = 2,
+            RA = 3,
+            RGB = 4,
+            RGBA = 5,
+            BGRA = 6,
+            ARGB = 7,
+            Intensity = 8,
+            Luminance = 9,
+            Rx = 10,
+            RGx = 11,
+            RGBx = 12,
+            Depth = 13,
+            DepthStencil = 14,
+            sRGB = 15,
+            sRGBx = 16,
+            sRGBA = 17,
+            sBGRA = 18,
+            ABGR = 19,
+        }
+
+        public enum ImageChannelDataType
+        {
+            SnormInt8 = 0,
+            SnormInt16 = 1,
+            UnormInt8 = 2,
+            UnormInt16 = 3,
+            UnormShort565 = 4,
+            UnormShort555 = 5,
+            UnormInt101010 = 6,
+            SignedInt8 = 7,
+            SignedInt16 = 8,
+            SignedInt32 = 9,
+            UnsignedInt8 = 10,
+            UnsignedInt16 = 11,
+            UnsignedInt32 = 12,
+            HalfFloat = 13,
+            Float = 14,
+            UnormInt24 = 15,
+            UnormInt101010_2 = 16,
+        }
+
+        public enum ImageOperandsShift
+        {
+            Bias = 0,
+            Lod = 1,
+            Grad = 2,
+            ConstOffset = 3,
+            Offset = 4,
+            ConstOffsets = 5,
+            Sample = 6,
+            MinLod = 7,
+        }
+
+        public enum ImageOperandsMask
+        {
+            MaskNone = 0,
+            Bias = 0x00000001,
+            Lod = 0x00000002,
+            Grad = 0x00000004,
+            ConstOffset = 0x00000008,
+            Offset = 0x00000010,
+            ConstOffsets = 0x00000020,
+            Sample = 0x00000040,
+            MinLod = 0x00000080,
+        }
+
+        public enum FPFastMathModeShift
+        {
+            NotNaN = 0,
+            NotInf = 1,
+            NSZ = 2,
+            AllowRecip = 3,
+            Fast = 4,
+        }
+
+        public enum FPFastMathModeMask
+        {
+            MaskNone = 0,
+            NotNaN = 0x00000001,
+            NotInf = 0x00000002,
+            NSZ = 0x00000004,
+            AllowRecip = 0x00000008,
+            Fast = 0x00000010,
+        }
+
+        public enum FPRoundingMode
+        {
+            RTE = 0,
+            RTZ = 1,
+            RTP = 2,
+            RTN = 3,
+        }
+
+        public enum LinkageType
+        {
+            Export = 0,
+            Import = 1,
+        }
+
+        public enum AccessQualifier
+        {
+            ReadOnly = 0,
+            WriteOnly = 1,
+            ReadWrite = 2,
+        }
+
+        public enum FunctionParameterAttribute
+        {
+            Zext = 0,
+            Sext = 1,
+            ByVal = 2,
+            Sret = 3,
+            NoAlias = 4,
+            NoCapture = 5,
+            NoWrite = 6,
+            NoReadWrite = 7,
+        }
+
+        public enum Decoration
+        {
+            RelaxedPrecision = 0,
+            SpecId = 1,
+            Block = 2,
+            BufferBlock = 3,
+            RowMajor = 4,
+            ColMajor = 5,
+            ArrayStride = 6,
+            MatrixStride = 7,
+            GLSLShared = 8,
+            GLSLPacked = 9,
+            CPacked = 10,
+            BuiltIn = 11,
+            NoPerspective = 13,
+            Flat = 14,
+            Patch = 15,
+            Centroid = 16,
+            Sample = 17,
+            Invariant = 18,
+            Restrict = 19,
+            Aliased = 20,
+            Volatile = 21,
+            Constant = 22,
+            Coherent = 23,
+            NonWritable = 24,
+            NonReadable = 25,
+            Uniform = 26,
+            SaturatedConversion = 28,
+            Stream = 29,
+            Location = 30,
+            Component = 31,
+            Index = 32,
+            Binding = 33,
+            DescriptorSet = 34,
+            Offset = 35,
+            XfbBuffer = 36,
+            XfbStride = 37,
+            FuncParamAttr = 38,
+            FPRoundingMode = 39,
+            FPFastMathMode = 40,
+            LinkageAttributes = 41,
+            NoContraction = 42,
+            InputAttachmentIndex = 43,
+            Alignment = 44,
+            ExplicitInterpAMD = 4999,
+            OverrideCoverageNV = 5248,
+            PassthroughNV = 5250,
+            ViewportRelativeNV = 5252,
+            SecondaryViewportRelativeNV = 5256,
+            HlslCounterBufferGOOGLE = 5634,
+            HlslSemanticGOOGLE = 5635,
+        }
+
+        public enum BuiltIn
+        {
+            Position = 0,
+            PointSize = 1,
+            ClipDistance = 3,
+            CullDistance = 4,
+            VertexId = 5,
+            InstanceId = 6,
+            PrimitiveId = 7,
+            InvocationId = 8,
+            Layer = 9,
+            ViewportIndex = 10,
+            TessLevelOuter = 11,
+            TessLevelInner = 12,
+            TessCoord = 13,
+            PatchVertices = 14,
+            FragCoord = 15,
+            PointCoord = 16,
+            FrontFacing = 17,
+            SampleId = 18,
+            SamplePosition = 19,
+            SampleMask = 20,
+            FragDepth = 22,
+            HelperInvocation = 23,
+            NumWorkgroups = 24,
+            WorkgroupSize = 25,
+            WorkgroupId = 26,
+            LocalInvocationId = 27,
+            GlobalInvocationId = 28,
+            LocalInvocationIndex = 29,
+            WorkDim = 30,
+            GlobalSize = 31,
+            EnqueuedWorkgroupSize = 32,
+            GlobalOffset = 33,
+            GlobalLinearId = 34,
+            SubgroupSize = 36,
+            SubgroupMaxSize = 37,
+            NumSubgroups = 38,
+            NumEnqueuedSubgroups = 39,
+            SubgroupId = 40,
+            SubgroupLocalInvocationId = 41,
+            VertexIndex = 42,
+            InstanceIndex = 43,
+            SubgroupEqMaskKHR = 4416,
+            SubgroupGeMaskKHR = 4417,
+            SubgroupGtMaskKHR = 4418,
+            SubgroupLeMaskKHR = 4419,
+            SubgroupLtMaskKHR = 4420,
+            BaseVertex = 4424,
+            BaseInstance = 4425,
+            DrawIndex = 4426,
+            DeviceIndex = 4438,
+            ViewIndex = 4440,
+            BaryCoordNoPerspAMD = 4992,
+            BaryCoordNoPerspCentroidAMD = 4993,
+            BaryCoordNoPerspSampleAMD = 4994,
+            BaryCoordSmoothAMD = 4995,
+            BaryCoordSmoothCentroidAMD = 4996,
+            BaryCoordSmoothSampleAMD = 4997,
+            BaryCoordPullModelAMD = 4998,
+            FragStencilRefEXT = 5014,
+            ViewportMaskNV = 5253,
+            SecondaryPositionNV = 5257,
+            SecondaryViewportMaskNV = 5258,
+            PositionPerViewNV = 5261,
+            ViewportMaskPerViewNV = 5262,
+        }
+
+        public enum SelectionControlShift
+        {
+            Flatten = 0,
+            DontFlatten = 1,
+        }
+
+        public enum SelectionControlMask
+        {
+            MaskNone = 0,
+            Flatten = 0x00000001,
+            DontFlatten = 0x00000002,
+        }
+
+        public enum LoopControlShift
+        {
+            Unroll = 0,
+            DontUnroll = 1,
+        }
+
+        public enum LoopControlMask
+        {
+            MaskNone = 0,
+            Unroll = 0x00000001,
+            DontUnroll = 0x00000002,
+        }
+
+        public enum FunctionControlShift
+        {
+            Inline = 0,
+            DontInline = 1,
+            Pure = 2,
+            Const = 3,
+        }
+
+        public enum FunctionControlMask
+        {
+            MaskNone = 0,
+            Inline = 0x00000001,
+            DontInline = 0x00000002,
+            Pure = 0x00000004,
+            Const = 0x00000008,
+        }
+
+        public enum MemorySemanticsShift
+        {
+            Acquire = 1,
+            Release = 2,
+            AcquireRelease = 3,
+            SequentiallyConsistent = 4,
+            UniformMemory = 6,
+            SubgroupMemory = 7,
+            WorkgroupMemory = 8,
+            CrossWorkgroupMemory = 9,
+            AtomicCounterMemory = 10,
+            ImageMemory = 11,
+        }
+
+        public enum MemorySemanticsMask
+        {
+            MaskNone = 0,
+            Acquire = 0x00000002,
+            Release = 0x00000004,
+            AcquireRelease = 0x00000008,
+            SequentiallyConsistent = 0x00000010,
+            UniformMemory = 0x00000040,
+            SubgroupMemory = 0x00000080,
+            WorkgroupMemory = 0x00000100,
+            CrossWorkgroupMemory = 0x00000200,
+            AtomicCounterMemory = 0x00000400,
+            ImageMemory = 0x00000800,
+        }
+
+        public enum MemoryAccessShift
+        {
+            Volatile = 0,
+            Aligned = 1,
+            Nontemporal = 2,
+        }
+
+        public enum MemoryAccessMask
+        {
+            MaskNone = 0,
+            Volatile = 0x00000001,
+            Aligned = 0x00000002,
+            Nontemporal = 0x00000004,
+        }
+
+        public enum Scope
+        {
+            CrossDevice = 0,
+            Device = 1,
+            Workgroup = 2,
+            Subgroup = 3,
+            Invocation = 4,
+        }
+
+        public enum GroupOperation
+        {
+            Reduce = 0,
+            InclusiveScan = 1,
+            ExclusiveScan = 2,
+        }
+
+        public enum KernelEnqueueFlags
+        {
+            NoWait = 0,
+            WaitKernel = 1,
+            WaitWorkGroup = 2,
+        }
+
+        public enum KernelProfilingInfoShift
+        {
+            CmdExecTime = 0,
+        }
+
+        public enum KernelProfilingInfoMask
+        {
+            MaskNone = 0,
+            CmdExecTime = 0x00000001,
+        }
+
+        public enum Capability
+        {
+            Matrix = 0,
+            Shader = 1,
+            Geometry = 2,
+            Tessellation = 3,
+            Addresses = 4,
+            Linkage = 5,
+            Kernel = 6,
+            Vector16 = 7,
+            Float16Buffer = 8,
+            Float16 = 9,
+            Float64 = 10,
+            Int64 = 11,
+            Int64Atomics = 12,
+            ImageBasic = 13,
+            ImageReadWrite = 14,
+            ImageMipmap = 15,
+            Pipes = 17,
+            Groups = 18,
+            DeviceEnqueue = 19,
+            LiteralSampler = 20,
+            AtomicStorage = 21,
+            Int16 = 22,
+            TessellationPointSize = 23,
+            GeometryPointSize = 24,
+            ImageGatherExtended = 25,
+            StorageImageMultisample = 27,
+            UniformBufferArrayDynamicIndexing = 28,
+            SampledImageArrayDynamicIndexing = 29,
+            StorageBufferArrayDynamicIndexing = 30,
+            StorageImageArrayDynamicIndexing = 31,
+            ClipDistance = 32,
+            CullDistance = 33,
+            ImageCubeArray = 34,
+            SampleRateShading = 35,
+            ImageRect = 36,
+            SampledRect = 37,
+            GenericPointer = 38,
+            Int8 = 39,
+            InputAttachment = 40,
+            SparseResidency = 41,
+            MinLod = 42,
+            Sampled1D = 43,
+            Image1D = 44,
+            SampledCubeArray = 45,
+            SampledBuffer = 46,
+            ImageBuffer = 47,
+            ImageMSArray = 48,
+            StorageImageExtendedFormats = 49,
+            ImageQuery = 50,
+            DerivativeControl = 51,
+            InterpolationFunction = 52,
+            TransformFeedback = 53,
+            GeometryStreams = 54,
+            StorageImageReadWithoutFormat = 55,
+            StorageImageWriteWithoutFormat = 56,
+            MultiViewport = 57,
+            SubgroupBallotKHR = 4423,
+            DrawParameters = 4427,
+            SubgroupVoteKHR = 4431,
+            StorageBuffer16BitAccess = 4433,
+            StorageUniformBufferBlock16 = 4433,
+            StorageUniform16 = 4434,
+            UniformAndStorageBuffer16BitAccess = 4434,
+            StoragePushConstant16 = 4435,
+            StorageInputOutput16 = 4436,
+            DeviceGroup = 4437,
+            MultiView = 4439,
+            VariablePointersStorageBuffer = 4441,
+            VariablePointers = 4442,
+            AtomicStorageOps = 4445,
+            SampleMaskPostDepthCoverage = 4447,
+            ImageGatherBiasLodAMD = 5009,
+            FragmentMaskAMD = 5010,
+            StencilExportEXT = 5013,
+            ImageReadWriteLodAMD = 5015,
+            SampleMaskOverrideCoverageNV = 5249,
+            GeometryShaderPassthroughNV = 5251,
+            ShaderViewportIndexLayerEXT = 5254,
+            ShaderViewportIndexLayerNV = 5254,
+            ShaderViewportMaskNV = 5255,
+            ShaderStereoViewNV = 5259,
+            PerViewAttributesNV = 5260,
+            SubgroupShuffleINTEL = 5568,
+            SubgroupBufferBlockIOINTEL = 5569,
+            SubgroupImageBlockIOINTEL = 5570,
+        }
+
+        public enum Op
+        {
+            OpNop = 0,
+            OpUndef = 1,
+            OpSourceContinued = 2,
+            OpSource = 3,
+            OpSourceExtension = 4,
+            OpName = 5,
+            OpMemberName = 6,
+            OpString = 7,
+            OpLine = 8,
+            OpExtension = 10,
+            OpExtInstImport = 11,
+            OpExtInst = 12,
+            OpMemoryModel = 14,
+            OpEntryPoint = 15,
+            OpExecutionMode = 16,
+            OpCapability = 17,
+            OpTypeVoid = 19,
+            OpTypeBool = 20,
+            OpTypeInt = 21,
+            OpTypeFloat = 22,
+            OpTypeVector = 23,
+            OpTypeMatrix = 24,
+            OpTypeImage = 25,
+            OpTypeSampler = 26,
+            OpTypeSampledImage = 27,
+            OpTypeArray = 28,
+            OpTypeRuntimeArray = 29,
+            OpTypeStruct = 30,
+            OpTypeOpaque = 31,
+            OpTypePointer = 32,
+            OpTypeFunction = 33,
+            OpTypeEvent = 34,
+            OpTypeDeviceEvent = 35,
+            OpTypeReserveId = 36,
+            OpTypeQueue = 37,
+            OpTypePipe = 38,
+            OpTypeForwardPointer = 39,
+            OpConstantTrue = 41,
+            OpConstantFalse = 42,
+            OpConstant = 43,
+            OpConstantComposite = 44,
+            OpConstantSampler = 45,
+            OpConstantNull = 46,
+            OpSpecConstantTrue = 48,
+            OpSpecConstantFalse = 49,
+            OpSpecConstant = 50,
+            OpSpecConstantComposite = 51,
+            OpSpecConstantOp = 52,
+            OpFunction = 54,
+            OpFunctionParameter = 55,
+            OpFunctionEnd = 56,
+            OpFunctionCall = 57,
+            OpVariable = 59,
+            OpImageTexelPointer = 60,
+            OpLoad = 61,
+            OpStore = 62,
+            OpCopyMemory = 63,
+            OpCopyMemorySized = 64,
+            OpAccessChain = 65,
+            OpInBoundsAccessChain = 66,
+            OpPtrAccessChain = 67,
+            OpArrayLength = 68,
+            OpGenericPtrMemSemantics = 69,
+            OpInBoundsPtrAccessChain = 70,
+            OpDecorate = 71,
+            OpMemberDecorate = 72,
+            OpDecorationGroup = 73,
+            OpGroupDecorate = 74,
+            OpGroupMemberDecorate = 75,
+            OpVectorExtractDynamic = 77,
+            OpVectorInsertDynamic = 78,
+            OpVectorShuffle = 79,
+            OpCompositeConstruct = 80,
+            OpCompositeExtract = 81,
+            OpCompositeInsert = 82,
+            OpCopyObject = 83,
+            OpTranspose = 84,
+            OpSampledImage = 86,
+            OpImageSampleImplicitLod = 87,
+            OpImageSampleExplicitLod = 88,
+            OpImageSampleDrefImplicitLod = 89,
+            OpImageSampleDrefExplicitLod = 90,
+            OpImageSampleProjImplicitLod = 91,
+            OpImageSampleProjExplicitLod = 92,
+            OpImageSampleProjDrefImplicitLod = 93,
+            OpImageSampleProjDrefExplicitLod = 94,
+            OpImageFetch = 95,
+            OpImageGather = 96,
+            OpImageDrefGather = 97,
+            OpImageRead = 98,
+            OpImageWrite = 99,
+            OpImage = 100,
+            OpImageQueryFormat = 101,
+            OpImageQueryOrder = 102,
+            OpImageQuerySizeLod = 103,
+            OpImageQuerySize = 104,
+            OpImageQueryLod = 105,
+            OpImageQueryLevels = 106,
+            OpImageQuerySamples = 107,
+            OpConvertFToU = 109,
+            OpConvertFToS = 110,
+            OpConvertSToF = 111,
+            OpConvertUToF = 112,
+            OpUConvert = 113,
+            OpSConvert = 114,
+            OpFConvert = 115,
+            OpQuantizeToF16 = 116,
+            OpConvertPtrToU = 117,
+            OpSatConvertSToU = 118,
+            OpSatConvertUToS = 119,
+            OpConvertUToPtr = 120,
+            OpPtrCastToGeneric = 121,
+            OpGenericCastToPtr = 122,
+            OpGenericCastToPtrExplicit = 123,
+            OpBitcast = 124,
+            OpSNegate = 126,
+            OpFNegate = 127,
+            OpIAdd = 128,
+            OpFAdd = 129,
+            OpISub = 130,
+            OpFSub = 131,
+            OpIMul = 132,
+            OpFMul = 133,
+            OpUDiv = 134,
+            OpSDiv = 135,
+            OpFDiv = 136,
+            OpUMod = 137,
+            OpSRem = 138,
+            OpSMod = 139,
+            OpFRem = 140,
+            OpFMod = 141,
+            OpVectorTimesScalar = 142,
+            OpMatrixTimesScalar = 143,
+            OpVectorTimesMatrix = 144,
+            OpMatrixTimesVector = 145,
+            OpMatrixTimesMatrix = 146,
+            OpOuterProduct = 147,
+            OpDot = 148,
+            OpIAddCarry = 149,
+            OpISubBorrow = 150,
+            OpUMulExtended = 151,
+            OpSMulExtended = 152,
+            OpAny = 154,
+            OpAll = 155,
+            OpIsNan = 156,
+            OpIsInf = 157,
+            OpIsFinite = 158,
+            OpIsNormal = 159,
+            OpSignBitSet = 160,
+            OpLessOrGreater = 161,
+            OpOrdered = 162,
+            OpUnordered = 163,
+            OpLogicalEqual = 164,
+            OpLogicalNotEqual = 165,
+            OpLogicalOr = 166,
+            OpLogicalAnd = 167,
+            OpLogicalNot = 168,
+            OpSelect = 169,
+            OpIEqual = 170,
+            OpINotEqual = 171,
+            OpUGreaterThan = 172,
+            OpSGreaterThan = 173,
+            OpUGreaterThanEqual = 174,
+            OpSGreaterThanEqual = 175,
+            OpULessThan = 176,
+            OpSLessThan = 177,
+            OpULessThanEqual = 178,
+            OpSLessThanEqual = 179,
+            OpFOrdEqual = 180,
+            OpFUnordEqual = 181,
+            OpFOrdNotEqual = 182,
+            OpFUnordNotEqual = 183,
+            OpFOrdLessThan = 184,
+            OpFUnordLessThan = 185,
+            OpFOrdGreaterThan = 186,
+            OpFUnordGreaterThan = 187,
+            OpFOrdLessThanEqual = 188,
+            OpFUnordLessThanEqual = 189,
+            OpFOrdGreaterThanEqual = 190,
+            OpFUnordGreaterThanEqual = 191,
+            OpShiftRightLogical = 194,
+            OpShiftRightArithmetic = 195,
+            OpShiftLeftLogical = 196,
+            OpBitwiseOr = 197,
+            OpBitwiseXor = 198,
+            OpBitwiseAnd = 199,
+            OpNot = 200,
+            OpBitFieldInsert = 201,
+            OpBitFieldSExtract = 202,
+            OpBitFieldUExtract = 203,
+            OpBitReverse = 204,
+            OpBitCount = 205,
+            OpDPdx = 207,
+            OpDPdy = 208,
+            OpFwidth = 209,
+            OpDPdxFine = 210,
+            OpDPdyFine = 211,
+            OpFwidthFine = 212,
+            OpDPdxCoarse = 213,
+            OpDPdyCoarse = 214,
+            OpFwidthCoarse = 215,
+            OpEmitVertex = 218,
+            OpEndPrimitive = 219,
+            OpEmitStreamVertex = 220,
+            OpEndStreamPrimitive = 221,
+            OpControlBarrier = 224,
+            OpMemoryBarrier = 225,
+            OpAtomicLoad = 227,
+            OpAtomicStore = 228,
+            OpAtomicExchange = 229,
+            OpAtomicCompareExchange = 230,
+            OpAtomicCompareExchangeWeak = 231,
+            OpAtomicIIncrement = 232,
+            OpAtomicIDecrement = 233,
+            OpAtomicIAdd = 234,
+            OpAtomicISub = 235,
+            OpAtomicSMin = 236,
+            OpAtomicUMin = 237,
+            OpAtomicSMax = 238,
+            OpAtomicUMax = 239,
+            OpAtomicAnd = 240,
+            OpAtomicOr = 241,
+            OpAtomicXor = 242,
+            OpPhi = 245,
+            OpLoopMerge = 246,
+            OpSelectionMerge = 247,
+            OpLabel = 248,
+            OpBranch = 249,
+            OpBranchConditional = 250,
+            OpSwitch = 251,
+            OpKill = 252,
+            OpReturn = 253,
+            OpReturnValue = 254,
+            OpUnreachable = 255,
+            OpLifetimeStart = 256,
+            OpLifetimeStop = 257,
+            OpGroupAsyncCopy = 259,
+            OpGroupWaitEvents = 260,
+            OpGroupAll = 261,
+            OpGroupAny = 262,
+            OpGroupBroadcast = 263,
+            OpGroupIAdd = 264,
+            OpGroupFAdd = 265,
+            OpGroupFMin = 266,
+            OpGroupUMin = 267,
+            OpGroupSMin = 268,
+            OpGroupFMax = 269,
+            OpGroupUMax = 270,
+            OpGroupSMax = 271,
+            OpReadPipe = 274,
+            OpWritePipe = 275,
+            OpReservedReadPipe = 276,
+            OpReservedWritePipe = 277,
+            OpReserveReadPipePackets = 278,
+            OpReserveWritePipePackets = 279,
+            OpCommitReadPipe = 280,
+            OpCommitWritePipe = 281,
+            OpIsValidReserveId = 282,
+            OpGetNumPipePackets = 283,
+            OpGetMaxPipePackets = 284,
+            OpGroupReserveReadPipePackets = 285,
+            OpGroupReserveWritePipePackets = 286,
+            OpGroupCommitReadPipe = 287,
+            OpGroupCommitWritePipe = 288,
+            OpEnqueueMarker = 291,
+            OpEnqueueKernel = 292,
+            OpGetKernelNDrangeSubGroupCount = 293,
+            OpGetKernelNDrangeMaxSubGroupSize = 294,
+            OpGetKernelWorkGroupSize = 295,
+            OpGetKernelPreferredWorkGroupSizeMultiple = 296,
+            OpRetainEvent = 297,
+            OpReleaseEvent = 298,
+            OpCreateUserEvent = 299,
+            OpIsValidEvent = 300,
+            OpSetUserEventStatus = 301,
+            OpCaptureEventProfilingInfo = 302,
+            OpGetDefaultQueue = 303,
+            OpBuildNDRange = 304,
+            OpImageSparseSampleImplicitLod = 305,
+            OpImageSparseSampleExplicitLod = 306,
+            OpImageSparseSampleDrefImplicitLod = 307,
+            OpImageSparseSampleDrefExplicitLod = 308,
+            OpImageSparseSampleProjImplicitLod = 309,
+            OpImageSparseSampleProjExplicitLod = 310,
+            OpImageSparseSampleProjDrefImplicitLod = 311,
+            OpImageSparseSampleProjDrefExplicitLod = 312,
+            OpImageSparseFetch = 313,
+            OpImageSparseGather = 314,
+            OpImageSparseDrefGather = 315,
+            OpImageSparseTexelsResident = 316,
+            OpNoLine = 317,
+            OpAtomicFlagTestAndSet = 318,
+            OpAtomicFlagClear = 319,
+            OpImageSparseRead = 320,
+            OpDecorateId = 332,
+            OpSubgroupBallotKHR = 4421,
+            OpSubgroupFirstInvocationKHR = 4422,
+            OpSubgroupAllKHR = 4428,
+            OpSubgroupAnyKHR = 4429,
+            OpSubgroupAllEqualKHR = 4430,
+            OpSubgroupReadInvocationKHR = 4432,
+            OpGroupIAddNonUniformAMD = 5000,
+            OpGroupFAddNonUniformAMD = 5001,
+            OpGroupFMinNonUniformAMD = 5002,
+            OpGroupUMinNonUniformAMD = 5003,
+            OpGroupSMinNonUniformAMD = 5004,
+            OpGroupFMaxNonUniformAMD = 5005,
+            OpGroupUMaxNonUniformAMD = 5006,
+            OpGroupSMaxNonUniformAMD = 5007,
+            OpFragmentMaskFetchAMD = 5011,
+            OpFragmentFetchAMD = 5012,
+            OpSubgroupShuffleINTEL = 5571,
+            OpSubgroupShuffleDownINTEL = 5572,
+            OpSubgroupShuffleUpINTEL = 5573,
+            OpSubgroupShuffleXorINTEL = 5574,
+            OpSubgroupBlockReadINTEL = 5575,
+            OpSubgroupBlockWriteINTEL = 5576,
+            OpSubgroupImageBlockReadINTEL = 5577,
+            OpSubgroupImageBlockWriteINTEL = 5578,
+            OpDecorateStringGOOGLE = 5632,
+            OpMemberDecorateStringGOOGLE = 5633,
+        }
+    }
+}
+
diff --git a/libs/spirv-headers/spirv/1.0/spirv.h b/libs/spirv-headers/spirv/1.0/spirv.h
new file mode 100644
index 00000000000..bd5a9b9593a
--- /dev/null
+++ b/libs/spirv-headers/spirv/1.0/spirv.h
@@ -0,0 +1,993 @@
+/*
+** Copyright (c) 2014-2018 The Khronos Group Inc.
+** 
+** Permission is hereby granted, free of charge, to any person obtaining a copy
+** of this software and/or associated documentation files (the "Materials"),
+** to deal in the Materials without restriction, including without limitation
+** the rights to use, copy, modify, merge, publish, distribute, sublicense,
+** and/or sell copies of the Materials, and to permit persons to whom the
+** Materials are furnished to do so, subject to the following conditions:
+** 
+** The above copyright notice and this permission notice shall be included in
+** all copies or substantial portions of the Materials.
+** 
+** MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS KHRONOS
+** STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS SPECIFICATIONS AND
+** HEADER INFORMATION ARE LOCATED AT https://www.khronos.org/registry/ 
+** 
+** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+** OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+** FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+** THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+** LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+** FROM,OUT OF OR IN CONNECTION WITH THE MATERIALS OR THE USE OR OTHER DEALINGS
+** IN THE MATERIALS.
+*/
+
+/*
+** This header is automatically generated by the same tool that creates
+** the Binary Section of the SPIR-V specification.
+*/
+
+/*
+** Enumeration tokens for SPIR-V, in various styles:
+**   C, C++, C++11, JSON, Lua, Python
+** 
+** - C will have tokens with a "Spv" prefix, e.g.: SpvSourceLanguageGLSL
+** - C++ will have tokens in the "spv" name space, e.g.: spv::SourceLanguageGLSL
+** - C++11 will use enum classes in the spv namespace, e.g.: spv::SourceLanguage::GLSL
+** - Lua will use tables, e.g.: spv.SourceLanguage.GLSL
+** - Python will use dictionaries, e.g.: spv['SourceLanguage']['GLSL']
+** 
+** Some tokens act like mask values, which can be OR'd together,
+** while others are mutually exclusive.  The mask-like ones have
+** "Mask" in their name, and a parallel enum that has the shift
+** amount (1 << x) for each corresponding enumerant.
+*/
+
+#ifndef spirv_H
+#define spirv_H
+
+typedef unsigned int SpvId;
+
+#define SPV_VERSION 0x10000
+#define SPV_REVISION 12
+
+static const unsigned int SpvMagicNumber = 0x07230203;
+static const unsigned int SpvVersion = 0x00010000;
+static const unsigned int SpvRevision = 12;
+static const unsigned int SpvOpCodeMask = 0xffff;
+static const unsigned int SpvWordCountShift = 16;
+
+typedef enum SpvSourceLanguage_ {
+    SpvSourceLanguageUnknown = 0,
+    SpvSourceLanguageESSL = 1,
+    SpvSourceLanguageGLSL = 2,
+    SpvSourceLanguageOpenCL_C = 3,
+    SpvSourceLanguageOpenCL_CPP = 4,
+    SpvSourceLanguageHLSL = 5,
+    SpvSourceLanguageMax = 0x7fffffff,
+} SpvSourceLanguage;
+
+typedef enum SpvExecutionModel_ {
+    SpvExecutionModelVertex = 0,
+    SpvExecutionModelTessellationControl = 1,
+    SpvExecutionModelTessellationEvaluation = 2,
+    SpvExecutionModelGeometry = 3,
+    SpvExecutionModelFragment = 4,
+    SpvExecutionModelGLCompute = 5,
+    SpvExecutionModelKernel = 6,
+    SpvExecutionModelMax = 0x7fffffff,
+} SpvExecutionModel;
+
+typedef enum SpvAddressingModel_ {
+    SpvAddressingModelLogical = 0,
+    SpvAddressingModelPhysical32 = 1,
+    SpvAddressingModelPhysical64 = 2,
+    SpvAddressingModelMax = 0x7fffffff,
+} SpvAddressingModel;
+
+typedef enum SpvMemoryModel_ {
+    SpvMemoryModelSimple = 0,
+    SpvMemoryModelGLSL450 = 1,
+    SpvMemoryModelOpenCL = 2,
+    SpvMemoryModelMax = 0x7fffffff,
+} SpvMemoryModel;
+
+typedef enum SpvExecutionMode_ {
+    SpvExecutionModeInvocations = 0,
+    SpvExecutionModeSpacingEqual = 1,
+    SpvExecutionModeSpacingFractionalEven = 2,
+    SpvExecutionModeSpacingFractionalOdd = 3,
+    SpvExecutionModeVertexOrderCw = 4,
+    SpvExecutionModeVertexOrderCcw = 5,
+    SpvExecutionModePixelCenterInteger = 6,
+    SpvExecutionModeOriginUpperLeft = 7,
+    SpvExecutionModeOriginLowerLeft = 8,
+    SpvExecutionModeEarlyFragmentTests = 9,
+    SpvExecutionModePointMode = 10,
+    SpvExecutionModeXfb = 11,
+    SpvExecutionModeDepthReplacing = 12,
+    SpvExecutionModeDepthGreater = 14,
+    SpvExecutionModeDepthLess = 15,
+    SpvExecutionModeDepthUnchanged = 16,
+    SpvExecutionModeLocalSize = 17,
+    SpvExecutionModeLocalSizeHint = 18,
+    SpvExecutionModeInputPoints = 19,
+    SpvExecutionModeInputLines = 20,
+    SpvExecutionModeInputLinesAdjacency = 21,
+    SpvExecutionModeTriangles = 22,
+    SpvExecutionModeInputTrianglesAdjacency = 23,
+    SpvExecutionModeQuads = 24,
+    SpvExecutionModeIsolines = 25,
+    SpvExecutionModeOutputVertices = 26,
+    SpvExecutionModeOutputPoints = 27,
+    SpvExecutionModeOutputLineStrip = 28,
+    SpvExecutionModeOutputTriangleStrip = 29,
+    SpvExecutionModeVecTypeHint = 30,
+    SpvExecutionModeContractionOff = 31,
+    SpvExecutionModePostDepthCoverage = 4446,
+    SpvExecutionModeStencilRefReplacingEXT = 5027,
+    SpvExecutionModeMax = 0x7fffffff,
+} SpvExecutionMode;
+
+typedef enum SpvStorageClass_ {
+    SpvStorageClassUniformConstant = 0,
+    SpvStorageClassInput = 1,
+    SpvStorageClassUniform = 2,
+    SpvStorageClassOutput = 3,
+    SpvStorageClassWorkgroup = 4,
+    SpvStorageClassCrossWorkgroup = 5,
+    SpvStorageClassPrivate = 6,
+    SpvStorageClassFunction = 7,
+    SpvStorageClassGeneric = 8,
+    SpvStorageClassPushConstant = 9,
+    SpvStorageClassAtomicCounter = 10,
+    SpvStorageClassImage = 11,
+    SpvStorageClassStorageBuffer = 12,
+    SpvStorageClassMax = 0x7fffffff,
+} SpvStorageClass;
+
+typedef enum SpvDim_ {
+    SpvDim1D = 0,
+    SpvDim2D = 1,
+    SpvDim3D = 2,
+    SpvDimCube = 3,
+    SpvDimRect = 4,
+    SpvDimBuffer = 5,
+    SpvDimSubpassData = 6,
+    SpvDimMax = 0x7fffffff,
+} SpvDim;
+
+typedef enum SpvSamplerAddressingMode_ {
+    SpvSamplerAddressingModeNone = 0,
+    SpvSamplerAddressingModeClampToEdge = 1,
+    SpvSamplerAddressingModeClamp = 2,
+    SpvSamplerAddressingModeRepeat = 3,
+    SpvSamplerAddressingModeRepeatMirrored = 4,
+    SpvSamplerAddressingModeMax = 0x7fffffff,
+} SpvSamplerAddressingMode;
+
+typedef enum SpvSamplerFilterMode_ {
+    SpvSamplerFilterModeNearest = 0,
+    SpvSamplerFilterModeLinear = 1,
+    SpvSamplerFilterModeMax = 0x7fffffff,
+} SpvSamplerFilterMode;
+
+typedef enum SpvImageFormat_ {
+    SpvImageFormatUnknown = 0,
+    SpvImageFormatRgba32f = 1,
+    SpvImageFormatRgba16f = 2,
+    SpvImageFormatR32f = 3,
+    SpvImageFormatRgba8 = 4,
+    SpvImageFormatRgba8Snorm = 5,
+    SpvImageFormatRg32f = 6,
+    SpvImageFormatRg16f = 7,
+    SpvImageFormatR11fG11fB10f = 8,
+    SpvImageFormatR16f = 9,
+    SpvImageFormatRgba16 = 10,
+    SpvImageFormatRgb10A2 = 11,
+    SpvImageFormatRg16 = 12,
+    SpvImageFormatRg8 = 13,
+    SpvImageFormatR16 = 14,
+    SpvImageFormatR8 = 15,
+    SpvImageFormatRgba16Snorm = 16,
+    SpvImageFormatRg16Snorm = 17,
+    SpvImageFormatRg8Snorm = 18,
+    SpvImageFormatR16Snorm = 19,
+    SpvImageFormatR8Snorm = 20,
+    SpvImageFormatRgba32i = 21,
+    SpvImageFormatRgba16i = 22,
+    SpvImageFormatRgba8i = 23,
+    SpvImageFormatR32i = 24,
+    SpvImageFormatRg32i = 25,
+    SpvImageFormatRg16i = 26,
+    SpvImageFormatRg8i = 27,
+    SpvImageFormatR16i = 28,
+    SpvImageFormatR8i = 29,
+    SpvImageFormatRgba32ui = 30,
+    SpvImageFormatRgba16ui = 31,
+    SpvImageFormatRgba8ui = 32,
+    SpvImageFormatR32ui = 33,
+    SpvImageFormatRgb10a2ui = 34,
+    SpvImageFormatRg32ui = 35,
+    SpvImageFormatRg16ui = 36,
+    SpvImageFormatRg8ui = 37,
+    SpvImageFormatR16ui = 38,
+    SpvImageFormatR8ui = 39,
+    SpvImageFormatMax = 0x7fffffff,
+} SpvImageFormat;
+
+typedef enum SpvImageChannelOrder_ {
+    SpvImageChannelOrderR = 0,
+    SpvImageChannelOrderA = 1,
+    SpvImageChannelOrderRG = 2,
+    SpvImageChannelOrderRA = 3,
+    SpvImageChannelOrderRGB = 4,
+    SpvImageChannelOrderRGBA = 5,
+    SpvImageChannelOrderBGRA = 6,
+    SpvImageChannelOrderARGB = 7,
+    SpvImageChannelOrderIntensity = 8,
+    SpvImageChannelOrderLuminance = 9,
+    SpvImageChannelOrderRx = 10,
+    SpvImageChannelOrderRGx = 11,
+    SpvImageChannelOrderRGBx = 12,
+    SpvImageChannelOrderDepth = 13,
+    SpvImageChannelOrderDepthStencil = 14,
+    SpvImageChannelOrdersRGB = 15,
+    SpvImageChannelOrdersRGBx = 16,
+    SpvImageChannelOrdersRGBA = 17,
+    SpvImageChannelOrdersBGRA = 18,
+    SpvImageChannelOrderABGR = 19,
+    SpvImageChannelOrderMax = 0x7fffffff,
+} SpvImageChannelOrder;
+
+typedef enum SpvImageChannelDataType_ {
+    SpvImageChannelDataTypeSnormInt8 = 0,
+    SpvImageChannelDataTypeSnormInt16 = 1,
+    SpvImageChannelDataTypeUnormInt8 = 2,
+    SpvImageChannelDataTypeUnormInt16 = 3,
+    SpvImageChannelDataTypeUnormShort565 = 4,
+    SpvImageChannelDataTypeUnormShort555 = 5,
+    SpvImageChannelDataTypeUnormInt101010 = 6,
+    SpvImageChannelDataTypeSignedInt8 = 7,
+    SpvImageChannelDataTypeSignedInt16 = 8,
+    SpvImageChannelDataTypeSignedInt32 = 9,
+    SpvImageChannelDataTypeUnsignedInt8 = 10,
+    SpvImageChannelDataTypeUnsignedInt16 = 11,
+    SpvImageChannelDataTypeUnsignedInt32 = 12,
+    SpvImageChannelDataTypeHalfFloat = 13,
+    SpvImageChannelDataTypeFloat = 14,
+    SpvImageChannelDataTypeUnormInt24 = 15,
+    SpvImageChannelDataTypeUnormInt101010_2 = 16,
+    SpvImageChannelDataTypeMax = 0x7fffffff,
+} SpvImageChannelDataType;
+
+typedef enum SpvImageOperandsShift_ {
+    SpvImageOperandsBiasShift = 0,
+    SpvImageOperandsLodShift = 1,
+    SpvImageOperandsGradShift = 2,
+    SpvImageOperandsConstOffsetShift = 3,
+    SpvImageOperandsOffsetShift = 4,
+    SpvImageOperandsConstOffsetsShift = 5,
+    SpvImageOperandsSampleShift = 6,
+    SpvImageOperandsMinLodShift = 7,
+    SpvImageOperandsMax = 0x7fffffff,
+} SpvImageOperandsShift;
+
+typedef enum SpvImageOperandsMask_ {
+    SpvImageOperandsMaskNone = 0,
+    SpvImageOperandsBiasMask = 0x00000001,
+    SpvImageOperandsLodMask = 0x00000002,
+    SpvImageOperandsGradMask = 0x00000004,
+    SpvImageOperandsConstOffsetMask = 0x00000008,
+    SpvImageOperandsOffsetMask = 0x00000010,
+    SpvImageOperandsConstOffsetsMask = 0x00000020,
+    SpvImageOperandsSampleMask = 0x00000040,
+    SpvImageOperandsMinLodMask = 0x00000080,
+} SpvImageOperandsMask;
+
+typedef enum SpvFPFastMathModeShift_ {
+    SpvFPFastMathModeNotNaNShift = 0,
+    SpvFPFastMathModeNotInfShift = 1,
+    SpvFPFastMathModeNSZShift = 2,
+    SpvFPFastMathModeAllowRecipShift = 3,
+    SpvFPFastMathModeFastShift = 4,
+    SpvFPFastMathModeMax = 0x7fffffff,
+} SpvFPFastMathModeShift;
+
+typedef enum SpvFPFastMathModeMask_ {
+    SpvFPFastMathModeMaskNone = 0,
+    SpvFPFastMathModeNotNaNMask = 0x00000001,
+    SpvFPFastMathModeNotInfMask = 0x00000002,
+    SpvFPFastMathModeNSZMask = 0x00000004,
+    SpvFPFastMathModeAllowRecipMask = 0x00000008,
+    SpvFPFastMathModeFastMask = 0x00000010,
+} SpvFPFastMathModeMask;
+
+typedef enum SpvFPRoundingMode_ {
+    SpvFPRoundingModeRTE = 0,
+    SpvFPRoundingModeRTZ = 1,
+    SpvFPRoundingModeRTP = 2,
+    SpvFPRoundingModeRTN = 3,
+    SpvFPRoundingModeMax = 0x7fffffff,
+} SpvFPRoundingMode;
+
+typedef enum SpvLinkageType_ {
+    SpvLinkageTypeExport = 0,
+    SpvLinkageTypeImport = 1,
+    SpvLinkageTypeMax = 0x7fffffff,
+} SpvLinkageType;
+
+typedef enum SpvAccessQualifier_ {
+    SpvAccessQualifierReadOnly = 0,
+    SpvAccessQualifierWriteOnly = 1,
+    SpvAccessQualifierReadWrite = 2,
+    SpvAccessQualifierMax = 0x7fffffff,
+} SpvAccessQualifier;
+
+typedef enum SpvFunctionParameterAttribute_ {
+    SpvFunctionParameterAttributeZext = 0,
+    SpvFunctionParameterAttributeSext = 1,
+    SpvFunctionParameterAttributeByVal = 2,
+    SpvFunctionParameterAttributeSret = 3,
+    SpvFunctionParameterAttributeNoAlias = 4,
+    SpvFunctionParameterAttributeNoCapture = 5,
+    SpvFunctionParameterAttributeNoWrite = 6,
+    SpvFunctionParameterAttributeNoReadWrite = 7,
+    SpvFunctionParameterAttributeMax = 0x7fffffff,
+} SpvFunctionParameterAttribute;
+
+typedef enum SpvDecoration_ {
+    SpvDecorationRelaxedPrecision = 0,
+    SpvDecorationSpecId = 1,
+    SpvDecorationBlock = 2,
+    SpvDecorationBufferBlock = 3,
+    SpvDecorationRowMajor = 4,
+    SpvDecorationColMajor = 5,
+    SpvDecorationArrayStride = 6,
+    SpvDecorationMatrixStride = 7,
+    SpvDecorationGLSLShared = 8,
+    SpvDecorationGLSLPacked = 9,
+    SpvDecorationCPacked = 10,
+    SpvDecorationBuiltIn = 11,
+    SpvDecorationNoPerspective = 13,
+    SpvDecorationFlat = 14,
+    SpvDecorationPatch = 15,
+    SpvDecorationCentroid = 16,
+    SpvDecorationSample = 17,
+    SpvDecorationInvariant = 18,
+    SpvDecorationRestrict = 19,
+    SpvDecorationAliased = 20,
+    SpvDecorationVolatile = 21,
+    SpvDecorationConstant = 22,
+    SpvDecorationCoherent = 23,
+    SpvDecorationNonWritable = 24,
+    SpvDecorationNonReadable = 25,
+    SpvDecorationUniform = 26,
+    SpvDecorationSaturatedConversion = 28,
+    SpvDecorationStream = 29,
+    SpvDecorationLocation = 30,
+    SpvDecorationComponent = 31,
+    SpvDecorationIndex = 32,
+    SpvDecorationBinding = 33,
+    SpvDecorationDescriptorSet = 34,
+    SpvDecorationOffset = 35,
+    SpvDecorationXfbBuffer = 36,
+    SpvDecorationXfbStride = 37,
+    SpvDecorationFuncParamAttr = 38,
+    SpvDecorationFPRoundingMode = 39,
+    SpvDecorationFPFastMathMode = 40,
+    SpvDecorationLinkageAttributes = 41,
+    SpvDecorationNoContraction = 42,
+    SpvDecorationInputAttachmentIndex = 43,
+    SpvDecorationAlignment = 44,
+    SpvDecorationExplicitInterpAMD = 4999,
+    SpvDecorationOverrideCoverageNV = 5248,
+    SpvDecorationPassthroughNV = 5250,
+    SpvDecorationViewportRelativeNV = 5252,
+    SpvDecorationSecondaryViewportRelativeNV = 5256,
+    SpvDecorationHlslCounterBufferGOOGLE = 5634,
+    SpvDecorationHlslSemanticGOOGLE = 5635,
+    SpvDecorationMax = 0x7fffffff,
+} SpvDecoration;
+
+typedef enum SpvBuiltIn_ {
+    SpvBuiltInPosition = 0,
+    SpvBuiltInPointSize = 1,
+    SpvBuiltInClipDistance = 3,
+    SpvBuiltInCullDistance = 4,
+    SpvBuiltInVertexId = 5,
+    SpvBuiltInInstanceId = 6,
+    SpvBuiltInPrimitiveId = 7,
+    SpvBuiltInInvocationId = 8,
+    SpvBuiltInLayer = 9,
+    SpvBuiltInViewportIndex = 10,
+    SpvBuiltInTessLevelOuter = 11,
+    SpvBuiltInTessLevelInner = 12,
+    SpvBuiltInTessCoord = 13,
+    SpvBuiltInPatchVertices = 14,
+    SpvBuiltInFragCoord = 15,
+    SpvBuiltInPointCoord = 16,
+    SpvBuiltInFrontFacing = 17,
+    SpvBuiltInSampleId = 18,
+    SpvBuiltInSamplePosition = 19,
+    SpvBuiltInSampleMask = 20,
+    SpvBuiltInFragDepth = 22,
+    SpvBuiltInHelperInvocation = 23,
+    SpvBuiltInNumWorkgroups = 24,
+    SpvBuiltInWorkgroupSize = 25,
+    SpvBuiltInWorkgroupId = 26,
+    SpvBuiltInLocalInvocationId = 27,
+    SpvBuiltInGlobalInvocationId = 28,
+    SpvBuiltInLocalInvocationIndex = 29,
+    SpvBuiltInWorkDim = 30,
+    SpvBuiltInGlobalSize = 31,
+    SpvBuiltInEnqueuedWorkgroupSize = 32,
+    SpvBuiltInGlobalOffset = 33,
+    SpvBuiltInGlobalLinearId = 34,
+    SpvBuiltInSubgroupSize = 36,
+    SpvBuiltInSubgroupMaxSize = 37,
+    SpvBuiltInNumSubgroups = 38,
+    SpvBuiltInNumEnqueuedSubgroups = 39,
+    SpvBuiltInSubgroupId = 40,
+    SpvBuiltInSubgroupLocalInvocationId = 41,
+    SpvBuiltInVertexIndex = 42,
+    SpvBuiltInInstanceIndex = 43,
+    SpvBuiltInSubgroupEqMaskKHR = 4416,
+    SpvBuiltInSubgroupGeMaskKHR = 4417,
+    SpvBuiltInSubgroupGtMaskKHR = 4418,
+    SpvBuiltInSubgroupLeMaskKHR = 4419,
+    SpvBuiltInSubgroupLtMaskKHR = 4420,
+    SpvBuiltInBaseVertex = 4424,
+    SpvBuiltInBaseInstance = 4425,
+    SpvBuiltInDrawIndex = 4426,
+    SpvBuiltInDeviceIndex = 4438,
+    SpvBuiltInViewIndex = 4440,
+    SpvBuiltInBaryCoordNoPerspAMD = 4992,
+    SpvBuiltInBaryCoordNoPerspCentroidAMD = 4993,
+    SpvBuiltInBaryCoordNoPerspSampleAMD = 4994,
+    SpvBuiltInBaryCoordSmoothAMD = 4995,
+    SpvBuiltInBaryCoordSmoothCentroidAMD = 4996,
+    SpvBuiltInBaryCoordSmoothSampleAMD = 4997,
+    SpvBuiltInBaryCoordPullModelAMD = 4998,
+    SpvBuiltInFragStencilRefEXT = 5014,
+    SpvBuiltInViewportMaskNV = 5253,
+    SpvBuiltInSecondaryPositionNV = 5257,
+    SpvBuiltInSecondaryViewportMaskNV = 5258,
+    SpvBuiltInPositionPerViewNV = 5261,
+    SpvBuiltInViewportMaskPerViewNV = 5262,
+    SpvBuiltInMax = 0x7fffffff,
+} SpvBuiltIn;
+
+typedef enum SpvSelectionControlShift_ {
+    SpvSelectionControlFlattenShift = 0,
+    SpvSelectionControlDontFlattenShift = 1,
+    SpvSelectionControlMax = 0x7fffffff,
+} SpvSelectionControlShift;
+
+typedef enum SpvSelectionControlMask_ {
+    SpvSelectionControlMaskNone = 0,
+    SpvSelectionControlFlattenMask = 0x00000001,
+    SpvSelectionControlDontFlattenMask = 0x00000002,
+} SpvSelectionControlMask;
+
+typedef enum SpvLoopControlShift_ {
+    SpvLoopControlUnrollShift = 0,
+    SpvLoopControlDontUnrollShift = 1,
+    SpvLoopControlMax = 0x7fffffff,
+} SpvLoopControlShift;
+
+typedef enum SpvLoopControlMask_ {
+    SpvLoopControlMaskNone = 0,
+    SpvLoopControlUnrollMask = 0x00000001,
+    SpvLoopControlDontUnrollMask = 0x00000002,
+} SpvLoopControlMask;
+
+typedef enum SpvFunctionControlShift_ {
+    SpvFunctionControlInlineShift = 0,
+    SpvFunctionControlDontInlineShift = 1,
+    SpvFunctionControlPureShift = 2,
+    SpvFunctionControlConstShift = 3,
+    SpvFunctionControlMax = 0x7fffffff,
+} SpvFunctionControlShift;
+
+typedef enum SpvFunctionControlMask_ {
+    SpvFunctionControlMaskNone = 0,
+    SpvFunctionControlInlineMask = 0x00000001,
+    SpvFunctionControlDontInlineMask = 0x00000002,
+    SpvFunctionControlPureMask = 0x00000004,
+    SpvFunctionControlConstMask = 0x00000008,
+} SpvFunctionControlMask;
+
+typedef enum SpvMemorySemanticsShift_ {
+    SpvMemorySemanticsAcquireShift = 1,
+    SpvMemorySemanticsReleaseShift = 2,
+    SpvMemorySemanticsAcquireReleaseShift = 3,
+    SpvMemorySemanticsSequentiallyConsistentShift = 4,
+    SpvMemorySemanticsUniformMemoryShift = 6,
+    SpvMemorySemanticsSubgroupMemoryShift = 7,
+    SpvMemorySemanticsWorkgroupMemoryShift = 8,
+    SpvMemorySemanticsCrossWorkgroupMemoryShift = 9,
+    SpvMemorySemanticsAtomicCounterMemoryShift = 10,
+    SpvMemorySemanticsImageMemoryShift = 11,
+    SpvMemorySemanticsMax = 0x7fffffff,
+} SpvMemorySemanticsShift;
+
+typedef enum SpvMemorySemanticsMask_ {
+    SpvMemorySemanticsMaskNone = 0,
+    SpvMemorySemanticsAcquireMask = 0x00000002,
+    SpvMemorySemanticsReleaseMask = 0x00000004,
+    SpvMemorySemanticsAcquireReleaseMask = 0x00000008,
+    SpvMemorySemanticsSequentiallyConsistentMask = 0x00000010,
+    SpvMemorySemanticsUniformMemoryMask = 0x00000040,
+    SpvMemorySemanticsSubgroupMemoryMask = 0x00000080,
+    SpvMemorySemanticsWorkgroupMemoryMask = 0x00000100,
+    SpvMemorySemanticsCrossWorkgroupMemoryMask = 0x00000200,
+    SpvMemorySemanticsAtomicCounterMemoryMask = 0x00000400,
+    SpvMemorySemanticsImageMemoryMask = 0x00000800,
+} SpvMemorySemanticsMask;
+
+typedef enum SpvMemoryAccessShift_ {
+    SpvMemoryAccessVolatileShift = 0,
+    SpvMemoryAccessAlignedShift = 1,
+    SpvMemoryAccessNontemporalShift = 2,
+    SpvMemoryAccessMax = 0x7fffffff,
+} SpvMemoryAccessShift;
+
+typedef enum SpvMemoryAccessMask_ {
+    SpvMemoryAccessMaskNone = 0,
+    SpvMemoryAccessVolatileMask = 0x00000001,
+    SpvMemoryAccessAlignedMask = 0x00000002,
+    SpvMemoryAccessNontemporalMask = 0x00000004,
+} SpvMemoryAccessMask;
+
+typedef enum SpvScope_ {
+    SpvScopeCrossDevice = 0,
+    SpvScopeDevice = 1,
+    SpvScopeWorkgroup = 2,
+    SpvScopeSubgroup = 3,
+    SpvScopeInvocation = 4,
+    SpvScopeMax = 0x7fffffff,
+} SpvScope;
+
+typedef enum SpvGroupOperation_ {
+    SpvGroupOperationReduce = 0,
+    SpvGroupOperationInclusiveScan = 1,
+    SpvGroupOperationExclusiveScan = 2,
+    SpvGroupOperationMax = 0x7fffffff,
+} SpvGroupOperation;
+
+typedef enum SpvKernelEnqueueFlags_ {
+    SpvKernelEnqueueFlagsNoWait = 0,
+    SpvKernelEnqueueFlagsWaitKernel = 1,
+    SpvKernelEnqueueFlagsWaitWorkGroup = 2,
+    SpvKernelEnqueueFlagsMax = 0x7fffffff,
+} SpvKernelEnqueueFlags;
+
+typedef enum SpvKernelProfilingInfoShift_ {
+    SpvKernelProfilingInfoCmdExecTimeShift = 0,
+    SpvKernelProfilingInfoMax = 0x7fffffff,
+} SpvKernelProfilingInfoShift;
+
+typedef enum SpvKernelProfilingInfoMask_ {
+    SpvKernelProfilingInfoMaskNone = 0,
+    SpvKernelProfilingInfoCmdExecTimeMask = 0x00000001,
+} SpvKernelProfilingInfoMask;
+
+typedef enum SpvCapability_ {
+    SpvCapabilityMatrix = 0,
+    SpvCapabilityShader = 1,
+    SpvCapabilityGeometry = 2,
+    SpvCapabilityTessellation = 3,
+    SpvCapabilityAddresses = 4,
+    SpvCapabilityLinkage = 5,
+    SpvCapabilityKernel = 6,
+    SpvCapabilityVector16 = 7,
+    SpvCapabilityFloat16Buffer = 8,
+    SpvCapabilityFloat16 = 9,
+    SpvCapabilityFloat64 = 10,
+    SpvCapabilityInt64 = 11,
+    SpvCapabilityInt64Atomics = 12,
+    SpvCapabilityImageBasic = 13,
+    SpvCapabilityImageReadWrite = 14,
+    SpvCapabilityImageMipmap = 15,
+    SpvCapabilityPipes = 17,
+    SpvCapabilityGroups = 18,
+    SpvCapabilityDeviceEnqueue = 19,
+    SpvCapabilityLiteralSampler = 20,
+    SpvCapabilityAtomicStorage = 21,
+    SpvCapabilityInt16 = 22,
+    SpvCapabilityTessellationPointSize = 23,
+    SpvCapabilityGeometryPointSize = 24,
+    SpvCapabilityImageGatherExtended = 25,
+    SpvCapabilityStorageImageMultisample = 27,
+    SpvCapabilityUniformBufferArrayDynamicIndexing = 28,
+    SpvCapabilitySampledImageArrayDynamicIndexing = 29,
+    SpvCapabilityStorageBufferArrayDynamicIndexing = 30,
+    SpvCapabilityStorageImageArrayDynamicIndexing = 31,
+    SpvCapabilityClipDistance = 32,
+    SpvCapabilityCullDistance = 33,
+    SpvCapabilityImageCubeArray = 34,
+    SpvCapabilitySampleRateShading = 35,
+    SpvCapabilityImageRect = 36,
+    SpvCapabilitySampledRect = 37,
+    SpvCapabilityGenericPointer = 38,
+    SpvCapabilityInt8 = 39,
+    SpvCapabilityInputAttachment = 40,
+    SpvCapabilitySparseResidency = 41,
+    SpvCapabilityMinLod = 42,
+    SpvCapabilitySampled1D = 43,
+    SpvCapabilityImage1D = 44,
+    SpvCapabilitySampledCubeArray = 45,
+    SpvCapabilitySampledBuffer = 46,
+    SpvCapabilityImageBuffer = 47,
+    SpvCapabilityImageMSArray = 48,
+    SpvCapabilityStorageImageExtendedFormats = 49,
+    SpvCapabilityImageQuery = 50,
+    SpvCapabilityDerivativeControl = 51,
+    SpvCapabilityInterpolationFunction = 52,
+    SpvCapabilityTransformFeedback = 53,
+    SpvCapabilityGeometryStreams = 54,
+    SpvCapabilityStorageImageReadWithoutFormat = 55,
+    SpvCapabilityStorageImageWriteWithoutFormat = 56,
+    SpvCapabilityMultiViewport = 57,
+    SpvCapabilitySubgroupBallotKHR = 4423,
+    SpvCapabilityDrawParameters = 4427,
+    SpvCapabilitySubgroupVoteKHR = 4431,
+    SpvCapabilityStorageBuffer16BitAccess = 4433,
+    SpvCapabilityStorageUniformBufferBlock16 = 4433,
+    SpvCapabilityStorageUniform16 = 4434,
+    SpvCapabilityUniformAndStorageBuffer16BitAccess = 4434,
+    SpvCapabilityStoragePushConstant16 = 4435,
+    SpvCapabilityStorageInputOutput16 = 4436,
+    SpvCapabilityDeviceGroup = 4437,
+    SpvCapabilityMultiView = 4439,
+    SpvCapabilityVariablePointersStorageBuffer = 4441,
+    SpvCapabilityVariablePointers = 4442,
+    SpvCapabilityAtomicStorageOps = 4445,
+    SpvCapabilitySampleMaskPostDepthCoverage = 4447,
+    SpvCapabilityImageGatherBiasLodAMD = 5009,
+    SpvCapabilityFragmentMaskAMD = 5010,
+    SpvCapabilityStencilExportEXT = 5013,
+    SpvCapabilityImageReadWriteLodAMD = 5015,
+    SpvCapabilitySampleMaskOverrideCoverageNV = 5249,
+    SpvCapabilityGeometryShaderPassthroughNV = 5251,
+    SpvCapabilityShaderViewportIndexLayerEXT = 5254,
+    SpvCapabilityShaderViewportIndexLayerNV = 5254,
+    SpvCapabilityShaderViewportMaskNV = 5255,
+    SpvCapabilityShaderStereoViewNV = 5259,
+    SpvCapabilityPerViewAttributesNV = 5260,
+    SpvCapabilitySubgroupShuffleINTEL = 5568,
+    SpvCapabilitySubgroupBufferBlockIOINTEL = 5569,
+    SpvCapabilitySubgroupImageBlockIOINTEL = 5570,
+    SpvCapabilityMax = 0x7fffffff,
+} SpvCapability;
+
+typedef enum SpvOp_ {
+    SpvOpNop = 0,
+    SpvOpUndef = 1,
+    SpvOpSourceContinued = 2,
+    SpvOpSource = 3,
+    SpvOpSourceExtension = 4,
+    SpvOpName = 5,
+    SpvOpMemberName = 6,
+    SpvOpString = 7,
+    SpvOpLine = 8,
+    SpvOpExtension = 10,
+    SpvOpExtInstImport = 11,
+    SpvOpExtInst = 12,
+    SpvOpMemoryModel = 14,
+    SpvOpEntryPoint = 15,
+    SpvOpExecutionMode = 16,
+    SpvOpCapability = 17,
+    SpvOpTypeVoid = 19,
+    SpvOpTypeBool = 20,
+    SpvOpTypeInt = 21,
+    SpvOpTypeFloat = 22,
+    SpvOpTypeVector = 23,
+    SpvOpTypeMatrix = 24,
+    SpvOpTypeImage = 25,
+    SpvOpTypeSampler = 26,
+    SpvOpTypeSampledImage = 27,
+    SpvOpTypeArray = 28,
+    SpvOpTypeRuntimeArray = 29,
+    SpvOpTypeStruct = 30,
+    SpvOpTypeOpaque = 31,
+    SpvOpTypePointer = 32,
+    SpvOpTypeFunction = 33,
+    SpvOpTypeEvent = 34,
+    SpvOpTypeDeviceEvent = 35,
+    SpvOpTypeReserveId = 36,
+    SpvOpTypeQueue = 37,
+    SpvOpTypePipe = 38,
+    SpvOpTypeForwardPointer = 39,
+    SpvOpConstantTrue = 41,
+    SpvOpConstantFalse = 42,
+    SpvOpConstant = 43,
+    SpvOpConstantComposite = 44,
+    SpvOpConstantSampler = 45,
+    SpvOpConstantNull = 46,
+    SpvOpSpecConstantTrue = 48,
+    SpvOpSpecConstantFalse = 49,
+    SpvOpSpecConstant = 50,
+    SpvOpSpecConstantComposite = 51,
+    SpvOpSpecConstantOp = 52,
+    SpvOpFunction = 54,
+    SpvOpFunctionParameter = 55,
+    SpvOpFunctionEnd = 56,
+    SpvOpFunctionCall = 57,
+    SpvOpVariable = 59,
+    SpvOpImageTexelPointer = 60,
+    SpvOpLoad = 61,
+    SpvOpStore = 62,
+    SpvOpCopyMemory = 63,
+    SpvOpCopyMemorySized = 64,
+    SpvOpAccessChain = 65,
+    SpvOpInBoundsAccessChain = 66,
+    SpvOpPtrAccessChain = 67,
+    SpvOpArrayLength = 68,
+    SpvOpGenericPtrMemSemantics = 69,
+    SpvOpInBoundsPtrAccessChain = 70,
+    SpvOpDecorate = 71,
+    SpvOpMemberDecorate = 72,
+    SpvOpDecorationGroup = 73,
+    SpvOpGroupDecorate = 74,
+    SpvOpGroupMemberDecorate = 75,
+    SpvOpVectorExtractDynamic = 77,
+    SpvOpVectorInsertDynamic = 78,
+    SpvOpVectorShuffle = 79,
+    SpvOpCompositeConstruct = 80,
+    SpvOpCompositeExtract = 81,
+    SpvOpCompositeInsert = 82,
+    SpvOpCopyObject = 83,
+    SpvOpTranspose = 84,
+    SpvOpSampledImage = 86,
+    SpvOpImageSampleImplicitLod = 87,
+    SpvOpImageSampleExplicitLod = 88,
+    SpvOpImageSampleDrefImplicitLod = 89,
+    SpvOpImageSampleDrefExplicitLod = 90,
+    SpvOpImageSampleProjImplicitLod = 91,
+    SpvOpImageSampleProjExplicitLod = 92,
+    SpvOpImageSampleProjDrefImplicitLod = 93,
+    SpvOpImageSampleProjDrefExplicitLod = 94,
+    SpvOpImageFetch = 95,
+    SpvOpImageGather = 96,
+    SpvOpImageDrefGather = 97,
+    SpvOpImageRead = 98,
+    SpvOpImageWrite = 99,
+    SpvOpImage = 100,
+    SpvOpImageQueryFormat = 101,
+    SpvOpImageQueryOrder = 102,
+    SpvOpImageQuerySizeLod = 103,
+    SpvOpImageQuerySize = 104,
+    SpvOpImageQueryLod = 105,
+    SpvOpImageQueryLevels = 106,
+    SpvOpImageQuerySamples = 107,
+    SpvOpConvertFToU = 109,
+    SpvOpConvertFToS = 110,
+    SpvOpConvertSToF = 111,
+    SpvOpConvertUToF = 112,
+    SpvOpUConvert = 113,
+    SpvOpSConvert = 114,
+    SpvOpFConvert = 115,
+    SpvOpQuantizeToF16 = 116,
+    SpvOpConvertPtrToU = 117,
+    SpvOpSatConvertSToU = 118,
+    SpvOpSatConvertUToS = 119,
+    SpvOpConvertUToPtr = 120,
+    SpvOpPtrCastToGeneric = 121,
+    SpvOpGenericCastToPtr = 122,
+    SpvOpGenericCastToPtrExplicit = 123,
+    SpvOpBitcast = 124,
+    SpvOpSNegate = 126,
+    SpvOpFNegate = 127,
+    SpvOpIAdd = 128,
+    SpvOpFAdd = 129,
+    SpvOpISub = 130,
+    SpvOpFSub = 131,
+    SpvOpIMul = 132,
+    SpvOpFMul = 133,
+    SpvOpUDiv = 134,
+    SpvOpSDiv = 135,
+    SpvOpFDiv = 136,
+    SpvOpUMod = 137,
+    SpvOpSRem = 138,
+    SpvOpSMod = 139,
+    SpvOpFRem = 140,
+    SpvOpFMod = 141,
+    SpvOpVectorTimesScalar = 142,
+    SpvOpMatrixTimesScalar = 143,
+    SpvOpVectorTimesMatrix = 144,
+    SpvOpMatrixTimesVector = 145,
+    SpvOpMatrixTimesMatrix = 146,
+    SpvOpOuterProduct = 147,
+    SpvOpDot = 148,
+    SpvOpIAddCarry = 149,
+    SpvOpISubBorrow = 150,
+    SpvOpUMulExtended = 151,
+    SpvOpSMulExtended = 152,
+    SpvOpAny = 154,
+    SpvOpAll = 155,
+    SpvOpIsNan = 156,
+    SpvOpIsInf = 157,
+    SpvOpIsFinite = 158,
+    SpvOpIsNormal = 159,
+    SpvOpSignBitSet = 160,
+    SpvOpLessOrGreater = 161,
+    SpvOpOrdered = 162,
+    SpvOpUnordered = 163,
+    SpvOpLogicalEqual = 164,
+    SpvOpLogicalNotEqual = 165,
+    SpvOpLogicalOr = 166,
+    SpvOpLogicalAnd = 167,
+    SpvOpLogicalNot = 168,
+    SpvOpSelect = 169,
+    SpvOpIEqual = 170,
+    SpvOpINotEqual = 171,
+    SpvOpUGreaterThan = 172,
+    SpvOpSGreaterThan = 173,
+    SpvOpUGreaterThanEqual = 174,
+    SpvOpSGreaterThanEqual = 175,
+    SpvOpULessThan = 176,
+    SpvOpSLessThan = 177,
+    SpvOpULessThanEqual = 178,
+    SpvOpSLessThanEqual = 179,
+    SpvOpFOrdEqual = 180,
+    SpvOpFUnordEqual = 181,
+    SpvOpFOrdNotEqual = 182,
+    SpvOpFUnordNotEqual = 183,
+    SpvOpFOrdLessThan = 184,
+    SpvOpFUnordLessThan = 185,
+    SpvOpFOrdGreaterThan = 186,
+    SpvOpFUnordGreaterThan = 187,
+    SpvOpFOrdLessThanEqual = 188,
+    SpvOpFUnordLessThanEqual = 189,
+    SpvOpFOrdGreaterThanEqual = 190,
+    SpvOpFUnordGreaterThanEqual = 191,
+    SpvOpShiftRightLogical = 194,
+    SpvOpShiftRightArithmetic = 195,
+    SpvOpShiftLeftLogical = 196,
+    SpvOpBitwiseOr = 197,
+    SpvOpBitwiseXor = 198,
+    SpvOpBitwiseAnd = 199,
+    SpvOpNot = 200,
+    SpvOpBitFieldInsert = 201,
+    SpvOpBitFieldSExtract = 202,
+    SpvOpBitFieldUExtract = 203,
+    SpvOpBitReverse = 204,
+    SpvOpBitCount = 205,
+    SpvOpDPdx = 207,
+    SpvOpDPdy = 208,
+    SpvOpFwidth = 209,
+    SpvOpDPdxFine = 210,
+    SpvOpDPdyFine = 211,
+    SpvOpFwidthFine = 212,
+    SpvOpDPdxCoarse = 213,
+    SpvOpDPdyCoarse = 214,
+    SpvOpFwidthCoarse = 215,
+    SpvOpEmitVertex = 218,
+    SpvOpEndPrimitive = 219,
+    SpvOpEmitStreamVertex = 220,
+    SpvOpEndStreamPrimitive = 221,
+    SpvOpControlBarrier = 224,
+    SpvOpMemoryBarrier = 225,
+    SpvOpAtomicLoad = 227,
+    SpvOpAtomicStore = 228,
+    SpvOpAtomicExchange = 229,
+    SpvOpAtomicCompareExchange = 230,
+    SpvOpAtomicCompareExchangeWeak = 231,
+    SpvOpAtomicIIncrement = 232,
+    SpvOpAtomicIDecrement = 233,
+    SpvOpAtomicIAdd = 234,
+    SpvOpAtomicISub = 235,
+    SpvOpAtomicSMin = 236,
+    SpvOpAtomicUMin = 237,
+    SpvOpAtomicSMax = 238,
+    SpvOpAtomicUMax = 239,
+    SpvOpAtomicAnd = 240,
+    SpvOpAtomicOr = 241,
+    SpvOpAtomicXor = 242,
+    SpvOpPhi = 245,
+    SpvOpLoopMerge = 246,
+    SpvOpSelectionMerge = 247,
+    SpvOpLabel = 248,
+    SpvOpBranch = 249,
+    SpvOpBranchConditional = 250,
+    SpvOpSwitch = 251,
+    SpvOpKill = 252,
+    SpvOpReturn = 253,
+    SpvOpReturnValue = 254,
+    SpvOpUnreachable = 255,
+    SpvOpLifetimeStart = 256,
+    SpvOpLifetimeStop = 257,
+    SpvOpGroupAsyncCopy = 259,
+    SpvOpGroupWaitEvents = 260,
+    SpvOpGroupAll = 261,
+    SpvOpGroupAny = 262,
+    SpvOpGroupBroadcast = 263,
+    SpvOpGroupIAdd = 264,
+    SpvOpGroupFAdd = 265,
+    SpvOpGroupFMin = 266,
+    SpvOpGroupUMin = 267,
+    SpvOpGroupSMin = 268,
+    SpvOpGroupFMax = 269,
+    SpvOpGroupUMax = 270,
+    SpvOpGroupSMax = 271,
+    SpvOpReadPipe = 274,
+    SpvOpWritePipe = 275,
+    SpvOpReservedReadPipe = 276,
+    SpvOpReservedWritePipe = 277,
+    SpvOpReserveReadPipePackets = 278,
+    SpvOpReserveWritePipePackets = 279,
+    SpvOpCommitReadPipe = 280,
+    SpvOpCommitWritePipe = 281,
+    SpvOpIsValidReserveId = 282,
+    SpvOpGetNumPipePackets = 283,
+    SpvOpGetMaxPipePackets = 284,
+    SpvOpGroupReserveReadPipePackets = 285,
+    SpvOpGroupReserveWritePipePackets = 286,
+    SpvOpGroupCommitReadPipe = 287,
+    SpvOpGroupCommitWritePipe = 288,
+    SpvOpEnqueueMarker = 291,
+    SpvOpEnqueueKernel = 292,
+    SpvOpGetKernelNDrangeSubGroupCount = 293,
+    SpvOpGetKernelNDrangeMaxSubGroupSize = 294,
+    SpvOpGetKernelWorkGroupSize = 295,
+    SpvOpGetKernelPreferredWorkGroupSizeMultiple = 296,
+    SpvOpRetainEvent = 297,
+    SpvOpReleaseEvent = 298,
+    SpvOpCreateUserEvent = 299,
+    SpvOpIsValidEvent = 300,
+    SpvOpSetUserEventStatus = 301,
+    SpvOpCaptureEventProfilingInfo = 302,
+    SpvOpGetDefaultQueue = 303,
+    SpvOpBuildNDRange = 304,
+    SpvOpImageSparseSampleImplicitLod = 305,
+    SpvOpImageSparseSampleExplicitLod = 306,
+    SpvOpImageSparseSampleDrefImplicitLod = 307,
+    SpvOpImageSparseSampleDrefExplicitLod = 308,
+    SpvOpImageSparseSampleProjImplicitLod = 309,
+    SpvOpImageSparseSampleProjExplicitLod = 310,
+    SpvOpImageSparseSampleProjDrefImplicitLod = 311,
+    SpvOpImageSparseSampleProjDrefExplicitLod = 312,
+    SpvOpImageSparseFetch = 313,
+    SpvOpImageSparseGather = 314,
+    SpvOpImageSparseDrefGather = 315,
+    SpvOpImageSparseTexelsResident = 316,
+    SpvOpNoLine = 317,
+    SpvOpAtomicFlagTestAndSet = 318,
+    SpvOpAtomicFlagClear = 319,
+    SpvOpImageSparseRead = 320,
+    SpvOpDecorateId = 332,
+    SpvOpSubgroupBallotKHR = 4421,
+    SpvOpSubgroupFirstInvocationKHR = 4422,
+    SpvOpSubgroupAllKHR = 4428,
+    SpvOpSubgroupAnyKHR = 4429,
+    SpvOpSubgroupAllEqualKHR = 4430,
+    SpvOpSubgroupReadInvocationKHR = 4432,
+    SpvOpGroupIAddNonUniformAMD = 5000,
+    SpvOpGroupFAddNonUniformAMD = 5001,
+    SpvOpGroupFMinNonUniformAMD = 5002,
+    SpvOpGroupUMinNonUniformAMD = 5003,
+    SpvOpGroupSMinNonUniformAMD = 5004,
+    SpvOpGroupFMaxNonUniformAMD = 5005,
+    SpvOpGroupUMaxNonUniformAMD = 5006,
+    SpvOpGroupSMaxNonUniformAMD = 5007,
+    SpvOpFragmentMaskFetchAMD = 5011,
+    SpvOpFragmentFetchAMD = 5012,
+    SpvOpSubgroupShuffleINTEL = 5571,
+    SpvOpSubgroupShuffleDownINTEL = 5572,
+    SpvOpSubgroupShuffleUpINTEL = 5573,
+    SpvOpSubgroupShuffleXorINTEL = 5574,
+    SpvOpSubgroupBlockReadINTEL = 5575,
+    SpvOpSubgroupBlockWriteINTEL = 5576,
+    SpvOpSubgroupImageBlockReadINTEL = 5577,
+    SpvOpSubgroupImageBlockWriteINTEL = 5578,
+    SpvOpDecorateStringGOOGLE = 5632,
+    SpvOpMemberDecorateStringGOOGLE = 5633,
+    SpvOpMax = 0x7fffffff,
+} SpvOp;
+
+#endif  // #ifndef spirv_H
+
diff --git a/libs/spirv-headers/spirv/1.0/spirv.hpp b/libs/spirv-headers/spirv/1.0/spirv.hpp
new file mode 100644
index 00000000000..e98a89cee74
--- /dev/null
+++ b/libs/spirv-headers/spirv/1.0/spirv.hpp
@@ -0,0 +1,1002 @@
+// Copyright (c) 2014-2018 The Khronos Group Inc.
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and/or associated documentation files (the "Materials"),
+// to deal in the Materials without restriction, including without limitation
+// the rights to use, copy, modify, merge, publish, distribute, sublicense,
+// and/or sell copies of the Materials, and to permit persons to whom the
+// Materials are furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Materials.
+// 
+// MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS KHRONOS
+// STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS SPECIFICATIONS AND
+// HEADER INFORMATION ARE LOCATED AT https://www.khronos.org/registry/ 
+// 
+// THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM,OUT OF OR IN CONNECTION WITH THE MATERIALS OR THE USE OR OTHER DEALINGS
+// IN THE MATERIALS.
+
+// This header is automatically generated by the same tool that creates
+// the Binary Section of the SPIR-V specification.
+
+// Enumeration tokens for SPIR-V, in various styles:
+//   C, C++, C++11, JSON, Lua, Python
+// 
+// - C will have tokens with a "Spv" prefix, e.g.: SpvSourceLanguageGLSL
+// - C++ will have tokens in the "spv" name space, e.g.: spv::SourceLanguageGLSL
+// - C++11 will use enum classes in the spv namespace, e.g.: spv::SourceLanguage::GLSL
+// - Lua will use tables, e.g.: spv.SourceLanguage.GLSL
+// - Python will use dictionaries, e.g.: spv['SourceLanguage']['GLSL']
+// 
+// Some tokens act like mask values, which can be OR'd together,
+// while others are mutually exclusive.  The mask-like ones have
+// "Mask" in their name, and a parallel enum that has the shift
+// amount (1 << x) for each corresponding enumerant.
+
+#ifndef spirv_HPP
+#define spirv_HPP
+
+namespace spv {
+
+typedef unsigned int Id;
+
+#define SPV_VERSION 0x10000
+#define SPV_REVISION 12
+
+static const unsigned int MagicNumber = 0x07230203;
+static const unsigned int Version = 0x00010000;
+static const unsigned int Revision = 12;
+static const unsigned int OpCodeMask = 0xffff;
+static const unsigned int WordCountShift = 16;
+
+enum SourceLanguage {
+    SourceLanguageUnknown = 0,
+    SourceLanguageESSL = 1,
+    SourceLanguageGLSL = 2,
+    SourceLanguageOpenCL_C = 3,
+    SourceLanguageOpenCL_CPP = 4,
+    SourceLanguageHLSL = 5,
+    SourceLanguageMax = 0x7fffffff,
+};
+
+enum ExecutionModel {
+    ExecutionModelVertex = 0,
+    ExecutionModelTessellationControl = 1,
+    ExecutionModelTessellationEvaluation = 2,
+    ExecutionModelGeometry = 3,
+    ExecutionModelFragment = 4,
+    ExecutionModelGLCompute = 5,
+    ExecutionModelKernel = 6,
+    ExecutionModelMax = 0x7fffffff,
+};
+
+enum AddressingModel {
+    AddressingModelLogical = 0,
+    AddressingModelPhysical32 = 1,
+    AddressingModelPhysical64 = 2,
+    AddressingModelMax = 0x7fffffff,
+};
+
+enum MemoryModel {
+    MemoryModelSimple = 0,
+    MemoryModelGLSL450 = 1,
+    MemoryModelOpenCL = 2,
+    MemoryModelMax = 0x7fffffff,
+};
+
+enum ExecutionMode {
+    ExecutionModeInvocations = 0,
+    ExecutionModeSpacingEqual = 1,
+    ExecutionModeSpacingFractionalEven = 2,
+    ExecutionModeSpacingFractionalOdd = 3,
+    ExecutionModeVertexOrderCw = 4,
+    ExecutionModeVertexOrderCcw = 5,
+    ExecutionModePixelCenterInteger = 6,
+    ExecutionModeOriginUpperLeft = 7,
+    ExecutionModeOriginLowerLeft = 8,
+    ExecutionModeEarlyFragmentTests = 9,
+    ExecutionModePointMode = 10,
+    ExecutionModeXfb = 11,
+    ExecutionModeDepthReplacing = 12,
+    ExecutionModeDepthGreater = 14,
+    ExecutionModeDepthLess = 15,
+    ExecutionModeDepthUnchanged = 16,
+    ExecutionModeLocalSize = 17,
+    ExecutionModeLocalSizeHint = 18,
+    ExecutionModeInputPoints = 19,
+    ExecutionModeInputLines = 20,
+    ExecutionModeInputLinesAdjacency = 21,
+    ExecutionModeTriangles = 22,
+    ExecutionModeInputTrianglesAdjacency = 23,
+    ExecutionModeQuads = 24,
+    ExecutionModeIsolines = 25,
+    ExecutionModeOutputVertices = 26,
+    ExecutionModeOutputPoints = 27,
+    ExecutionModeOutputLineStrip = 28,
+    ExecutionModeOutputTriangleStrip = 29,
+    ExecutionModeVecTypeHint = 30,
+    ExecutionModeContractionOff = 31,
+    ExecutionModePostDepthCoverage = 4446,
+    ExecutionModeStencilRefReplacingEXT = 5027,
+    ExecutionModeMax = 0x7fffffff,
+};
+
+enum StorageClass {
+    StorageClassUniformConstant = 0,
+    StorageClassInput = 1,
+    StorageClassUniform = 2,
+    StorageClassOutput = 3,
+    StorageClassWorkgroup = 4,
+    StorageClassCrossWorkgroup = 5,
+    StorageClassPrivate = 6,
+    StorageClassFunction = 7,
+    StorageClassGeneric = 8,
+    StorageClassPushConstant = 9,
+    StorageClassAtomicCounter = 10,
+    StorageClassImage = 11,
+    StorageClassStorageBuffer = 12,
+    StorageClassMax = 0x7fffffff,
+};
+
+enum Dim {
+    Dim1D = 0,
+    Dim2D = 1,
+    Dim3D = 2,
+    DimCube = 3,
+    DimRect = 4,
+    DimBuffer = 5,
+    DimSubpassData = 6,
+    DimMax = 0x7fffffff,
+};
+
+enum SamplerAddressingMode {
+    SamplerAddressingModeNone = 0,
+    SamplerAddressingModeClampToEdge = 1,
+    SamplerAddressingModeClamp = 2,
+    SamplerAddressingModeRepeat = 3,
+    SamplerAddressingModeRepeatMirrored = 4,
+    SamplerAddressingModeMax = 0x7fffffff,
+};
+
+enum SamplerFilterMode {
+    SamplerFilterModeNearest = 0,
+    SamplerFilterModeLinear = 1,
+    SamplerFilterModeMax = 0x7fffffff,
+};
+
+enum ImageFormat {
+    ImageFormatUnknown = 0,
+    ImageFormatRgba32f = 1,
+    ImageFormatRgba16f = 2,
+    ImageFormatR32f = 3,
+    ImageFormatRgba8 = 4,
+    ImageFormatRgba8Snorm = 5,
+    ImageFormatRg32f = 6,
+    ImageFormatRg16f = 7,
+    ImageFormatR11fG11fB10f = 8,
+    ImageFormatR16f = 9,
+    ImageFormatRgba16 = 10,
+    ImageFormatRgb10A2 = 11,
+    ImageFormatRg16 = 12,
+    ImageFormatRg8 = 13,
+    ImageFormatR16 = 14,
+    ImageFormatR8 = 15,
+    ImageFormatRgba16Snorm = 16,
+    ImageFormatRg16Snorm = 17,
+    ImageFormatRg8Snorm = 18,
+    ImageFormatR16Snorm = 19,
+    ImageFormatR8Snorm = 20,
+    ImageFormatRgba32i = 21,
+    ImageFormatRgba16i = 22,
+    ImageFormatRgba8i = 23,
+    ImageFormatR32i = 24,
+    ImageFormatRg32i = 25,
+    ImageFormatRg16i = 26,
+    ImageFormatRg8i = 27,
+    ImageFormatR16i = 28,
+    ImageFormatR8i = 29,
+    ImageFormatRgba32ui = 30,
+    ImageFormatRgba16ui = 31,
+    ImageFormatRgba8ui = 32,
+    ImageFormatR32ui = 33,
+    ImageFormatRgb10a2ui = 34,
+    ImageFormatRg32ui = 35,
+    ImageFormatRg16ui = 36,
+    ImageFormatRg8ui = 37,
+    ImageFormatR16ui = 38,
+    ImageFormatR8ui = 39,
+    ImageFormatMax = 0x7fffffff,
+};
+
+enum ImageChannelOrder {
+    ImageChannelOrderR = 0,
+    ImageChannelOrderA = 1,
+    ImageChannelOrderRG = 2,
+    ImageChannelOrderRA = 3,
+    ImageChannelOrderRGB = 4,
+    ImageChannelOrderRGBA = 5,
+    ImageChannelOrderBGRA = 6,
+    ImageChannelOrderARGB = 7,
+    ImageChannelOrderIntensity = 8,
+    ImageChannelOrderLuminance = 9,
+    ImageChannelOrderRx = 10,
+    ImageChannelOrderRGx = 11,
+    ImageChannelOrderRGBx = 12,
+    ImageChannelOrderDepth = 13,
+    ImageChannelOrderDepthStencil = 14,
+    ImageChannelOrdersRGB = 15,
+    ImageChannelOrdersRGBx = 16,
+    ImageChannelOrdersRGBA = 17,
+    ImageChannelOrdersBGRA = 18,
+    ImageChannelOrderABGR = 19,
+    ImageChannelOrderMax = 0x7fffffff,
+};
+
+enum ImageChannelDataType {
+    ImageChannelDataTypeSnormInt8 = 0,
+    ImageChannelDataTypeSnormInt16 = 1,
+    ImageChannelDataTypeUnormInt8 = 2,
+    ImageChannelDataTypeUnormInt16 = 3,
+    ImageChannelDataTypeUnormShort565 = 4,
+    ImageChannelDataTypeUnormShort555 = 5,
+    ImageChannelDataTypeUnormInt101010 = 6,
+    ImageChannelDataTypeSignedInt8 = 7,
+    ImageChannelDataTypeSignedInt16 = 8,
+    ImageChannelDataTypeSignedInt32 = 9,
+    ImageChannelDataTypeUnsignedInt8 = 10,
+    ImageChannelDataTypeUnsignedInt16 = 11,
+    ImageChannelDataTypeUnsignedInt32 = 12,
+    ImageChannelDataTypeHalfFloat = 13,
+    ImageChannelDataTypeFloat = 14,
+    ImageChannelDataTypeUnormInt24 = 15,
+    ImageChannelDataTypeUnormInt101010_2 = 16,
+    ImageChannelDataTypeMax = 0x7fffffff,
+};
+
+enum ImageOperandsShift {
+    ImageOperandsBiasShift = 0,
+    ImageOperandsLodShift = 1,
+    ImageOperandsGradShift = 2,
+    ImageOperandsConstOffsetShift = 3,
+    ImageOperandsOffsetShift = 4,
+    ImageOperandsConstOffsetsShift = 5,
+    ImageOperandsSampleShift = 6,
+    ImageOperandsMinLodShift = 7,
+    ImageOperandsMax = 0x7fffffff,
+};
+
+enum ImageOperandsMask {
+    ImageOperandsMaskNone = 0,
+    ImageOperandsBiasMask = 0x00000001,
+    ImageOperandsLodMask = 0x00000002,
+    ImageOperandsGradMask = 0x00000004,
+    ImageOperandsConstOffsetMask = 0x00000008,
+    ImageOperandsOffsetMask = 0x00000010,
+    ImageOperandsConstOffsetsMask = 0x00000020,
+    ImageOperandsSampleMask = 0x00000040,
+    ImageOperandsMinLodMask = 0x00000080,
+};
+
+enum FPFastMathModeShift {
+    FPFastMathModeNotNaNShift = 0,
+    FPFastMathModeNotInfShift = 1,
+    FPFastMathModeNSZShift = 2,
+    FPFastMathModeAllowRecipShift = 3,
+    FPFastMathModeFastShift = 4,
+    FPFastMathModeMax = 0x7fffffff,
+};
+
+enum FPFastMathModeMask {
+    FPFastMathModeMaskNone = 0,
+    FPFastMathModeNotNaNMask = 0x00000001,
+    FPFastMathModeNotInfMask = 0x00000002,
+    FPFastMathModeNSZMask = 0x00000004,
+    FPFastMathModeAllowRecipMask = 0x00000008,
+    FPFastMathModeFastMask = 0x00000010,
+};
+
+enum FPRoundingMode {
+    FPRoundingModeRTE = 0,
+    FPRoundingModeRTZ = 1,
+    FPRoundingModeRTP = 2,
+    FPRoundingModeRTN = 3,
+    FPRoundingModeMax = 0x7fffffff,
+};
+
+enum LinkageType {
+    LinkageTypeExport = 0,
+    LinkageTypeImport = 1,
+    LinkageTypeMax = 0x7fffffff,
+};
+
+enum AccessQualifier {
+    AccessQualifierReadOnly = 0,
+    AccessQualifierWriteOnly = 1,
+    AccessQualifierReadWrite = 2,
+    AccessQualifierMax = 0x7fffffff,
+};
+
+enum FunctionParameterAttribute {
+    FunctionParameterAttributeZext = 0,
+    FunctionParameterAttributeSext = 1,
+    FunctionParameterAttributeByVal = 2,
+    FunctionParameterAttributeSret = 3,
+    FunctionParameterAttributeNoAlias = 4,
+    FunctionParameterAttributeNoCapture = 5,
+    FunctionParameterAttributeNoWrite = 6,
+    FunctionParameterAttributeNoReadWrite = 7,
+    FunctionParameterAttributeMax = 0x7fffffff,
+};
+
+enum Decoration {
+    DecorationRelaxedPrecision = 0,
+    DecorationSpecId = 1,
+    DecorationBlock = 2,
+    DecorationBufferBlock = 3,
+    DecorationRowMajor = 4,
+    DecorationColMajor = 5,
+    DecorationArrayStride = 6,
+    DecorationMatrixStride = 7,
+    DecorationGLSLShared = 8,
+    DecorationGLSLPacked = 9,
+    DecorationCPacked = 10,
+    DecorationBuiltIn = 11,
+    DecorationNoPerspective = 13,
+    DecorationFlat = 14,
+    DecorationPatch = 15,
+    DecorationCentroid = 16,
+    DecorationSample = 17,
+    DecorationInvariant = 18,
+    DecorationRestrict = 19,
+    DecorationAliased = 20,
+    DecorationVolatile = 21,
+    DecorationConstant = 22,
+    DecorationCoherent = 23,
+    DecorationNonWritable = 24,
+    DecorationNonReadable = 25,
+    DecorationUniform = 26,
+    DecorationSaturatedConversion = 28,
+    DecorationStream = 29,
+    DecorationLocation = 30,
+    DecorationComponent = 31,
+    DecorationIndex = 32,
+    DecorationBinding = 33,
+    DecorationDescriptorSet = 34,
+    DecorationOffset = 35,
+    DecorationXfbBuffer = 36,
+    DecorationXfbStride = 37,
+    DecorationFuncParamAttr = 38,
+    DecorationFPRoundingMode = 39,
+    DecorationFPFastMathMode = 40,
+    DecorationLinkageAttributes = 41,
+    DecorationNoContraction = 42,
+    DecorationInputAttachmentIndex = 43,
+    DecorationAlignment = 44,
+    DecorationExplicitInterpAMD = 4999,
+    DecorationOverrideCoverageNV = 5248,
+    DecorationPassthroughNV = 5250,
+    DecorationViewportRelativeNV = 5252,
+    DecorationSecondaryViewportRelativeNV = 5256,
+    DecorationHlslCounterBufferGOOGLE = 5634,
+    DecorationHlslSemanticGOOGLE = 5635,
+    DecorationMax = 0x7fffffff,
+};
+
+enum BuiltIn {
+    BuiltInPosition = 0,
+    BuiltInPointSize = 1,
+    BuiltInClipDistance = 3,
+    BuiltInCullDistance = 4,
+    BuiltInVertexId = 5,
+    BuiltInInstanceId = 6,
+    BuiltInPrimitiveId = 7,
+    BuiltInInvocationId = 8,
+    BuiltInLayer = 9,
+    BuiltInViewportIndex = 10,
+    BuiltInTessLevelOuter = 11,
+    BuiltInTessLevelInner = 12,
+    BuiltInTessCoord = 13,
+    BuiltInPatchVertices = 14,
+    BuiltInFragCoord = 15,
+    BuiltInPointCoord = 16,
+    BuiltInFrontFacing = 17,
+    BuiltInSampleId = 18,
+    BuiltInSamplePosition = 19,
+    BuiltInSampleMask = 20,
+    BuiltInFragDepth = 22,
+    BuiltInHelperInvocation = 23,
+    BuiltInNumWorkgroups = 24,
+    BuiltInWorkgroupSize = 25,
+    BuiltInWorkgroupId = 26,
+    BuiltInLocalInvocationId = 27,
+    BuiltInGlobalInvocationId = 28,
+    BuiltInLocalInvocationIndex = 29,
+    BuiltInWorkDim = 30,
+    BuiltInGlobalSize = 31,
+    BuiltInEnqueuedWorkgroupSize = 32,
+    BuiltInGlobalOffset = 33,
+    BuiltInGlobalLinearId = 34,
+    BuiltInSubgroupSize = 36,
+    BuiltInSubgroupMaxSize = 37,
+    BuiltInNumSubgroups = 38,
+    BuiltInNumEnqueuedSubgroups = 39,
+    BuiltInSubgroupId = 40,
+    BuiltInSubgroupLocalInvocationId = 41,
+    BuiltInVertexIndex = 42,
+    BuiltInInstanceIndex = 43,
+    BuiltInSubgroupEqMaskKHR = 4416,
+    BuiltInSubgroupGeMaskKHR = 4417,
+    BuiltInSubgroupGtMaskKHR = 4418,
+    BuiltInSubgroupLeMaskKHR = 4419,
+    BuiltInSubgroupLtMaskKHR = 4420,
+    BuiltInBaseVertex = 4424,
+    BuiltInBaseInstance = 4425,
+    BuiltInDrawIndex = 4426,
+    BuiltInDeviceIndex = 4438,
+    BuiltInViewIndex = 4440,
+    BuiltInBaryCoordNoPerspAMD = 4992,
+    BuiltInBaryCoordNoPerspCentroidAMD = 4993,
+    BuiltInBaryCoordNoPerspSampleAMD = 4994,
+    BuiltInBaryCoordSmoothAMD = 4995,
+    BuiltInBaryCoordSmoothCentroidAMD = 4996,
+    BuiltInBaryCoordSmoothSampleAMD = 4997,
+    BuiltInBaryCoordPullModelAMD = 4998,
+    BuiltInFragStencilRefEXT = 5014,
+    BuiltInViewportMaskNV = 5253,
+    BuiltInSecondaryPositionNV = 5257,
+    BuiltInSecondaryViewportMaskNV = 5258,
+    BuiltInPositionPerViewNV = 5261,
+    BuiltInViewportMaskPerViewNV = 5262,
+    BuiltInMax = 0x7fffffff,
+};
+
+enum SelectionControlShift {
+    SelectionControlFlattenShift = 0,
+    SelectionControlDontFlattenShift = 1,
+    SelectionControlMax = 0x7fffffff,
+};
+
+enum SelectionControlMask {
+    SelectionControlMaskNone = 0,
+    SelectionControlFlattenMask = 0x00000001,
+    SelectionControlDontFlattenMask = 0x00000002,
+};
+
+enum LoopControlShift {
+    LoopControlUnrollShift = 0,
+    LoopControlDontUnrollShift = 1,
+    LoopControlMax = 0x7fffffff,
+};
+
+enum LoopControlMask {
+    LoopControlMaskNone = 0,
+    LoopControlUnrollMask = 0x00000001,
+    LoopControlDontUnrollMask = 0x00000002,
+};
+
+enum FunctionControlShift {
+    FunctionControlInlineShift = 0,
+    FunctionControlDontInlineShift = 1,
+    FunctionControlPureShift = 2,
+    FunctionControlConstShift = 3,
+    FunctionControlMax = 0x7fffffff,
+};
+
+enum FunctionControlMask {
+    FunctionControlMaskNone = 0,
+    FunctionControlInlineMask = 0x00000001,
+    FunctionControlDontInlineMask = 0x00000002,
+    FunctionControlPureMask = 0x00000004,
+    FunctionControlConstMask = 0x00000008,
+};
+
+enum MemorySemanticsShift {
+    MemorySemanticsAcquireShift = 1,
+    MemorySemanticsReleaseShift = 2,
+    MemorySemanticsAcquireReleaseShift = 3,
+    MemorySemanticsSequentiallyConsistentShift = 4,
+    MemorySemanticsUniformMemoryShift = 6,
+    MemorySemanticsSubgroupMemoryShift = 7,
+    MemorySemanticsWorkgroupMemoryShift = 8,
+    MemorySemanticsCrossWorkgroupMemoryShift = 9,
+    MemorySemanticsAtomicCounterMemoryShift = 10,
+    MemorySemanticsImageMemoryShift = 11,
+    MemorySemanticsMax = 0x7fffffff,
+};
+
+enum MemorySemanticsMask {
+    MemorySemanticsMaskNone = 0,
+    MemorySemanticsAcquireMask = 0x00000002,
+    MemorySemanticsReleaseMask = 0x00000004,
+    MemorySemanticsAcquireReleaseMask = 0x00000008,
+    MemorySemanticsSequentiallyConsistentMask = 0x00000010,
+    MemorySemanticsUniformMemoryMask = 0x00000040,
+    MemorySemanticsSubgroupMemoryMask = 0x00000080,
+    MemorySemanticsWorkgroupMemoryMask = 0x00000100,
+    MemorySemanticsCrossWorkgroupMemoryMask = 0x00000200,
+    MemorySemanticsAtomicCounterMemoryMask = 0x00000400,
+    MemorySemanticsImageMemoryMask = 0x00000800,
+};
+
+enum MemoryAccessShift {
+    MemoryAccessVolatileShift = 0,
+    MemoryAccessAlignedShift = 1,
+    MemoryAccessNontemporalShift = 2,
+    MemoryAccessMax = 0x7fffffff,
+};
+
+enum MemoryAccessMask {
+    MemoryAccessMaskNone = 0,
+    MemoryAccessVolatileMask = 0x00000001,
+    MemoryAccessAlignedMask = 0x00000002,
+    MemoryAccessNontemporalMask = 0x00000004,
+};
+
+enum Scope {
+    ScopeCrossDevice = 0,
+    ScopeDevice = 1,
+    ScopeWorkgroup = 2,
+    ScopeSubgroup = 3,
+    ScopeInvocation = 4,
+    ScopeMax = 0x7fffffff,
+};
+
+enum GroupOperation {
+    GroupOperationReduce = 0,
+    GroupOperationInclusiveScan = 1,
+    GroupOperationExclusiveScan = 2,
+    GroupOperationMax = 0x7fffffff,
+};
+
+enum KernelEnqueueFlags {
+    KernelEnqueueFlagsNoWait = 0,
+    KernelEnqueueFlagsWaitKernel = 1,
+    KernelEnqueueFlagsWaitWorkGroup = 2,
+    KernelEnqueueFlagsMax = 0x7fffffff,
+};
+
+enum KernelProfilingInfoShift {
+    KernelProfilingInfoCmdExecTimeShift = 0,
+    KernelProfilingInfoMax = 0x7fffffff,
+};
+
+enum KernelProfilingInfoMask {
+    KernelProfilingInfoMaskNone = 0,
+    KernelProfilingInfoCmdExecTimeMask = 0x00000001,
+};
+
+enum Capability {
+    CapabilityMatrix = 0,
+    CapabilityShader = 1,
+    CapabilityGeometry = 2,
+    CapabilityTessellation = 3,
+    CapabilityAddresses = 4,
+    CapabilityLinkage = 5,
+    CapabilityKernel = 6,
+    CapabilityVector16 = 7,
+    CapabilityFloat16Buffer = 8,
+    CapabilityFloat16 = 9,
+    CapabilityFloat64 = 10,
+    CapabilityInt64 = 11,
+    CapabilityInt64Atomics = 12,
+    CapabilityImageBasic = 13,
+    CapabilityImageReadWrite = 14,
+    CapabilityImageMipmap = 15,
+    CapabilityPipes = 17,
+    CapabilityGroups = 18,
+    CapabilityDeviceEnqueue = 19,
+    CapabilityLiteralSampler = 20,
+    CapabilityAtomicStorage = 21,
+    CapabilityInt16 = 22,
+    CapabilityTessellationPointSize = 23,
+    CapabilityGeometryPointSize = 24,
+    CapabilityImageGatherExtended = 25,
+    CapabilityStorageImageMultisample = 27,
+    CapabilityUniformBufferArrayDynamicIndexing = 28,
+    CapabilitySampledImageArrayDynamicIndexing = 29,
+    CapabilityStorageBufferArrayDynamicIndexing = 30,
+    CapabilityStorageImageArrayDynamicIndexing = 31,
+    CapabilityClipDistance = 32,
+    CapabilityCullDistance = 33,
+    CapabilityImageCubeArray = 34,
+    CapabilitySampleRateShading = 35,
+    CapabilityImageRect = 36,
+    CapabilitySampledRect = 37,
+    CapabilityGenericPointer = 38,
+    CapabilityInt8 = 39,
+    CapabilityInputAttachment = 40,
+    CapabilitySparseResidency = 41,
+    CapabilityMinLod = 42,
+    CapabilitySampled1D = 43,
+    CapabilityImage1D = 44,
+    CapabilitySampledCubeArray = 45,
+    CapabilitySampledBuffer = 46,
+    CapabilityImageBuffer = 47,
+    CapabilityImageMSArray = 48,
+    CapabilityStorageImageExtendedFormats = 49,
+    CapabilityImageQuery = 50,
+    CapabilityDerivativeControl = 51,
+    CapabilityInterpolationFunction = 52,
+    CapabilityTransformFeedback = 53,
+    CapabilityGeometryStreams = 54,
+    CapabilityStorageImageReadWithoutFormat = 55,
+    CapabilityStorageImageWriteWithoutFormat = 56,
+    CapabilityMultiViewport = 57,
+    CapabilitySubgroupBallotKHR = 4423,
+    CapabilityDrawParameters = 4427,
+    CapabilitySubgroupVoteKHR = 4431,
+    CapabilityStorageBuffer16BitAccess = 4433,
+    CapabilityStorageUniformBufferBlock16 = 4433,
+    CapabilityStorageUniform16 = 4434,
+    CapabilityUniformAndStorageBuffer16BitAccess = 4434,
+    CapabilityStoragePushConstant16 = 4435,
+    CapabilityStorageInputOutput16 = 4436,
+    CapabilityDeviceGroup = 4437,
+    CapabilityMultiView = 4439,
+    CapabilityVariablePointersStorageBuffer = 4441,
+    CapabilityVariablePointers = 4442,
+    CapabilityAtomicStorageOps = 4445,
+    CapabilitySampleMaskPostDepthCoverage = 4447,
+    CapabilityImageGatherBiasLodAMD = 5009,
+    CapabilityFragmentMaskAMD = 5010,
+    CapabilityStencilExportEXT = 5013,
+    CapabilityImageReadWriteLodAMD = 5015,
+    CapabilitySampleMaskOverrideCoverageNV = 5249,
+    CapabilityGeometryShaderPassthroughNV = 5251,
+    CapabilityShaderViewportIndexLayerEXT = 5254,
+    CapabilityShaderViewportIndexLayerNV = 5254,
+    CapabilityShaderViewportMaskNV = 5255,
+    CapabilityShaderStereoViewNV = 5259,
+    CapabilityPerViewAttributesNV = 5260,
+    CapabilitySubgroupShuffleINTEL = 5568,
+    CapabilitySubgroupBufferBlockIOINTEL = 5569,
+    CapabilitySubgroupImageBlockIOINTEL = 5570,
+    CapabilityMax = 0x7fffffff,
+};
+
+enum Op {
+    OpNop = 0,
+    OpUndef = 1,
+    OpSourceContinued = 2,
+    OpSource = 3,
+    OpSourceExtension = 4,
+    OpName = 5,
+    OpMemberName = 6,
+    OpString = 7,
+    OpLine = 8,
+    OpExtension = 10,
+    OpExtInstImport = 11,
+    OpExtInst = 12,
+    OpMemoryModel = 14,
+    OpEntryPoint = 15,
+    OpExecutionMode = 16,
+    OpCapability = 17,
+    OpTypeVoid = 19,
+    OpTypeBool = 20,
+    OpTypeInt = 21,
+    OpTypeFloat = 22,
+    OpTypeVector = 23,
+    OpTypeMatrix = 24,
+    OpTypeImage = 25,
+    OpTypeSampler = 26,
+    OpTypeSampledImage = 27,
+    OpTypeArray = 28,
+    OpTypeRuntimeArray = 29,
+    OpTypeStruct = 30,
+    OpTypeOpaque = 31,
+    OpTypePointer = 32,
+    OpTypeFunction = 33,
+    OpTypeEvent = 34,
+    OpTypeDeviceEvent = 35,
+    OpTypeReserveId = 36,
+    OpTypeQueue = 37,
+    OpTypePipe = 38,
+    OpTypeForwardPointer = 39,
+    OpConstantTrue = 41,
+    OpConstantFalse = 42,
+    OpConstant = 43,
+    OpConstantComposite = 44,
+    OpConstantSampler = 45,
+    OpConstantNull = 46,
+    OpSpecConstantTrue = 48,
+    OpSpecConstantFalse = 49,
+    OpSpecConstant = 50,
+    OpSpecConstantComposite = 51,
+    OpSpecConstantOp = 52,
+    OpFunction = 54,
+    OpFunctionParameter = 55,
+    OpFunctionEnd = 56,
+    OpFunctionCall = 57,
+    OpVariable = 59,
+    OpImageTexelPointer = 60,
+    OpLoad = 61,
+    OpStore = 62,
+    OpCopyMemory = 63,
+    OpCopyMemorySized = 64,
+    OpAccessChain = 65,
+    OpInBoundsAccessChain = 66,
+    OpPtrAccessChain = 67,
+    OpArrayLength = 68,
+    OpGenericPtrMemSemantics = 69,
+    OpInBoundsPtrAccessChain = 70,
+    OpDecorate = 71,
+    OpMemberDecorate = 72,
+    OpDecorationGroup = 73,
+    OpGroupDecorate = 74,
+    OpGroupMemberDecorate = 75,
+    OpVectorExtractDynamic = 77,
+    OpVectorInsertDynamic = 78,
+    OpVectorShuffle = 79,
+    OpCompositeConstruct = 80,
+    OpCompositeExtract = 81,
+    OpCompositeInsert = 82,
+    OpCopyObject = 83,
+    OpTranspose = 84,
+    OpSampledImage = 86,
+    OpImageSampleImplicitLod = 87,
+    OpImageSampleExplicitLod = 88,
+    OpImageSampleDrefImplicitLod = 89,
+    OpImageSampleDrefExplicitLod = 90,
+    OpImageSampleProjImplicitLod = 91,
+    OpImageSampleProjExplicitLod = 92,
+    OpImageSampleProjDrefImplicitLod = 93,
+    OpImageSampleProjDrefExplicitLod = 94,
+    OpImageFetch = 95,
+    OpImageGather = 96,
+    OpImageDrefGather = 97,
+    OpImageRead = 98,
+    OpImageWrite = 99,
+    OpImage = 100,
+    OpImageQueryFormat = 101,
+    OpImageQueryOrder = 102,
+    OpImageQuerySizeLod = 103,
+    OpImageQuerySize = 104,
+    OpImageQueryLod = 105,
+    OpImageQueryLevels = 106,
+    OpImageQuerySamples = 107,
+    OpConvertFToU = 109,
+    OpConvertFToS = 110,
+    OpConvertSToF = 111,
+    OpConvertUToF = 112,
+    OpUConvert = 113,
+    OpSConvert = 114,
+    OpFConvert = 115,
+    OpQuantizeToF16 = 116,
+    OpConvertPtrToU = 117,
+    OpSatConvertSToU = 118,
+    OpSatConvertUToS = 119,
+    OpConvertUToPtr = 120,
+    OpPtrCastToGeneric = 121,
+    OpGenericCastToPtr = 122,
+    OpGenericCastToPtrExplicit = 123,
+    OpBitcast = 124,
+    OpSNegate = 126,
+    OpFNegate = 127,
+    OpIAdd = 128,
+    OpFAdd = 129,
+    OpISub = 130,
+    OpFSub = 131,
+    OpIMul = 132,
+    OpFMul = 133,
+    OpUDiv = 134,
+    OpSDiv = 135,
+    OpFDiv = 136,
+    OpUMod = 137,
+    OpSRem = 138,
+    OpSMod = 139,
+    OpFRem = 140,
+    OpFMod = 141,
+    OpVectorTimesScalar = 142,
+    OpMatrixTimesScalar = 143,
+    OpVectorTimesMatrix = 144,
+    OpMatrixTimesVector = 145,
+    OpMatrixTimesMatrix = 146,
+    OpOuterProduct = 147,
+    OpDot = 148,
+    OpIAddCarry = 149,
+    OpISubBorrow = 150,
+    OpUMulExtended = 151,
+    OpSMulExtended = 152,
+    OpAny = 154,
+    OpAll = 155,
+    OpIsNan = 156,
+    OpIsInf = 157,
+    OpIsFinite = 158,
+    OpIsNormal = 159,
+    OpSignBitSet = 160,
+    OpLessOrGreater = 161,
+    OpOrdered = 162,
+    OpUnordered = 163,
+    OpLogicalEqual = 164,
+    OpLogicalNotEqual = 165,
+    OpLogicalOr = 166,
+    OpLogicalAnd = 167,
+    OpLogicalNot = 168,
+    OpSelect = 169,
+    OpIEqual = 170,
+    OpINotEqual = 171,
+    OpUGreaterThan = 172,
+    OpSGreaterThan = 173,
+    OpUGreaterThanEqual = 174,
+    OpSGreaterThanEqual = 175,
+    OpULessThan = 176,
+    OpSLessThan = 177,
+    OpULessThanEqual = 178,
+    OpSLessThanEqual = 179,
+    OpFOrdEqual = 180,
+    OpFUnordEqual = 181,
+    OpFOrdNotEqual = 182,
+    OpFUnordNotEqual = 183,
+    OpFOrdLessThan = 184,
+    OpFUnordLessThan = 185,
+    OpFOrdGreaterThan = 186,
+    OpFUnordGreaterThan = 187,
+    OpFOrdLessThanEqual = 188,
+    OpFUnordLessThanEqual = 189,
+    OpFOrdGreaterThanEqual = 190,
+    OpFUnordGreaterThanEqual = 191,
+    OpShiftRightLogical = 194,
+    OpShiftRightArithmetic = 195,
+    OpShiftLeftLogical = 196,
+    OpBitwiseOr = 197,
+    OpBitwiseXor = 198,
+    OpBitwiseAnd = 199,
+    OpNot = 200,
+    OpBitFieldInsert = 201,
+    OpBitFieldSExtract = 202,
+    OpBitFieldUExtract = 203,
+    OpBitReverse = 204,
+    OpBitCount = 205,
+    OpDPdx = 207,
+    OpDPdy = 208,
+    OpFwidth = 209,
+    OpDPdxFine = 210,
+    OpDPdyFine = 211,
+    OpFwidthFine = 212,
+    OpDPdxCoarse = 213,
+    OpDPdyCoarse = 214,
+    OpFwidthCoarse = 215,
+    OpEmitVertex = 218,
+    OpEndPrimitive = 219,
+    OpEmitStreamVertex = 220,
+    OpEndStreamPrimitive = 221,
+    OpControlBarrier = 224,
+    OpMemoryBarrier = 225,
+    OpAtomicLoad = 227,
+    OpAtomicStore = 228,
+    OpAtomicExchange = 229,
+    OpAtomicCompareExchange = 230,
+    OpAtomicCompareExchangeWeak = 231,
+    OpAtomicIIncrement = 232,
+    OpAtomicIDecrement = 233,
+    OpAtomicIAdd = 234,
+    OpAtomicISub = 235,
+    OpAtomicSMin = 236,
+    OpAtomicUMin = 237,
+    OpAtomicSMax = 238,
+    OpAtomicUMax = 239,
+    OpAtomicAnd = 240,
+    OpAtomicOr = 241,
+    OpAtomicXor = 242,
+    OpPhi = 245,
+    OpLoopMerge = 246,
+    OpSelectionMerge = 247,
+    OpLabel = 248,
+    OpBranch = 249,
+    OpBranchConditional = 250,
+    OpSwitch = 251,
+    OpKill = 252,
+    OpReturn = 253,
+    OpReturnValue = 254,
+    OpUnreachable = 255,
+    OpLifetimeStart = 256,
+    OpLifetimeStop = 257,
+    OpGroupAsyncCopy = 259,
+    OpGroupWaitEvents = 260,
+    OpGroupAll = 261,
+    OpGroupAny = 262,
+    OpGroupBroadcast = 263,
+    OpGroupIAdd = 264,
+    OpGroupFAdd = 265,
+    OpGroupFMin = 266,
+    OpGroupUMin = 267,
+    OpGroupSMin = 268,
+    OpGroupFMax = 269,
+    OpGroupUMax = 270,
+    OpGroupSMax = 271,
+    OpReadPipe = 274,
+    OpWritePipe = 275,
+    OpReservedReadPipe = 276,
+    OpReservedWritePipe = 277,
+    OpReserveReadPipePackets = 278,
+    OpReserveWritePipePackets = 279,
+    OpCommitReadPipe = 280,
+    OpCommitWritePipe = 281,
+    OpIsValidReserveId = 282,
+    OpGetNumPipePackets = 283,
+    OpGetMaxPipePackets = 284,
+    OpGroupReserveReadPipePackets = 285,
+    OpGroupReserveWritePipePackets = 286,
+    OpGroupCommitReadPipe = 287,
+    OpGroupCommitWritePipe = 288,
+    OpEnqueueMarker = 291,
+    OpEnqueueKernel = 292,
+    OpGetKernelNDrangeSubGroupCount = 293,
+    OpGetKernelNDrangeMaxSubGroupSize = 294,
+    OpGetKernelWorkGroupSize = 295,
+    OpGetKernelPreferredWorkGroupSizeMultiple = 296,
+    OpRetainEvent = 297,
+    OpReleaseEvent = 298,
+    OpCreateUserEvent = 299,
+    OpIsValidEvent = 300,
+    OpSetUserEventStatus = 301,
+    OpCaptureEventProfilingInfo = 302,
+    OpGetDefaultQueue = 303,
+    OpBuildNDRange = 304,
+    OpImageSparseSampleImplicitLod = 305,
+    OpImageSparseSampleExplicitLod = 306,
+    OpImageSparseSampleDrefImplicitLod = 307,
+    OpImageSparseSampleDrefExplicitLod = 308,
+    OpImageSparseSampleProjImplicitLod = 309,
+    OpImageSparseSampleProjExplicitLod = 310,
+    OpImageSparseSampleProjDrefImplicitLod = 311,
+    OpImageSparseSampleProjDrefExplicitLod = 312,
+    OpImageSparseFetch = 313,
+    OpImageSparseGather = 314,
+    OpImageSparseDrefGather = 315,
+    OpImageSparseTexelsResident = 316,
+    OpNoLine = 317,
+    OpAtomicFlagTestAndSet = 318,
+    OpAtomicFlagClear = 319,
+    OpImageSparseRead = 320,
+    OpDecorateId = 332,
+    OpSubgroupBallotKHR = 4421,
+    OpSubgroupFirstInvocationKHR = 4422,
+    OpSubgroupAllKHR = 4428,
+    OpSubgroupAnyKHR = 4429,
+    OpSubgroupAllEqualKHR = 4430,
+    OpSubgroupReadInvocationKHR = 4432,
+    OpGroupIAddNonUniformAMD = 5000,
+    OpGroupFAddNonUniformAMD = 5001,
+    OpGroupFMinNonUniformAMD = 5002,
+    OpGroupUMinNonUniformAMD = 5003,
+    OpGroupSMinNonUniformAMD = 5004,
+    OpGroupFMaxNonUniformAMD = 5005,
+    OpGroupUMaxNonUniformAMD = 5006,
+    OpGroupSMaxNonUniformAMD = 5007,
+    OpFragmentMaskFetchAMD = 5011,
+    OpFragmentFetchAMD = 5012,
+    OpSubgroupShuffleINTEL = 5571,
+    OpSubgroupShuffleDownINTEL = 5572,
+    OpSubgroupShuffleUpINTEL = 5573,
+    OpSubgroupShuffleXorINTEL = 5574,
+    OpSubgroupBlockReadINTEL = 5575,
+    OpSubgroupBlockWriteINTEL = 5576,
+    OpSubgroupImageBlockReadINTEL = 5577,
+    OpSubgroupImageBlockWriteINTEL = 5578,
+    OpDecorateStringGOOGLE = 5632,
+    OpMemberDecorateStringGOOGLE = 5633,
+    OpMax = 0x7fffffff,
+};
+
+// Overload operator| for mask bit combining
+
+inline ImageOperandsMask operator|(ImageOperandsMask a, ImageOperandsMask b) { return ImageOperandsMask(unsigned(a) | unsigned(b)); }
+inline FPFastMathModeMask operator|(FPFastMathModeMask a, FPFastMathModeMask b) { return FPFastMathModeMask(unsigned(a) | unsigned(b)); }
+inline SelectionControlMask operator|(SelectionControlMask a, SelectionControlMask b) { return SelectionControlMask(unsigned(a) | unsigned(b)); }
+inline LoopControlMask operator|(LoopControlMask a, LoopControlMask b) { return LoopControlMask(unsigned(a) | unsigned(b)); }
+inline FunctionControlMask operator|(FunctionControlMask a, FunctionControlMask b) { return FunctionControlMask(unsigned(a) | unsigned(b)); }
+inline MemorySemanticsMask operator|(MemorySemanticsMask a, MemorySemanticsMask b) { return MemorySemanticsMask(unsigned(a) | unsigned(b)); }
+inline MemoryAccessMask operator|(MemoryAccessMask a, MemoryAccessMask b) { return MemoryAccessMask(unsigned(a) | unsigned(b)); }
+inline KernelProfilingInfoMask operator|(KernelProfilingInfoMask a, KernelProfilingInfoMask b) { return KernelProfilingInfoMask(unsigned(a) | unsigned(b)); }
+
+}  // end namespace spv
+
+#endif  // #ifndef spirv_HPP
+
diff --git a/libs/spirv-headers/spirv/1.0/spirv.hpp11 b/libs/spirv-headers/spirv/1.0/spirv.hpp11
new file mode 100644
index 00000000000..8896e81b7c4
--- /dev/null
+++ b/libs/spirv-headers/spirv/1.0/spirv.hpp11
@@ -0,0 +1,1002 @@
+// Copyright (c) 2014-2018 The Khronos Group Inc.
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and/or associated documentation files (the "Materials"),
+// to deal in the Materials without restriction, including without limitation
+// the rights to use, copy, modify, merge, publish, distribute, sublicense,
+// and/or sell copies of the Materials, and to permit persons to whom the
+// Materials are furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Materials.
+// 
+// MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS KHRONOS
+// STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS SPECIFICATIONS AND
+// HEADER INFORMATION ARE LOCATED AT https://www.khronos.org/registry/ 
+// 
+// THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM,OUT OF OR IN CONNECTION WITH THE MATERIALS OR THE USE OR OTHER DEALINGS
+// IN THE MATERIALS.
+
+// This header is automatically generated by the same tool that creates
+// the Binary Section of the SPIR-V specification.
+
+// Enumeration tokens for SPIR-V, in various styles:
+//   C, C++, C++11, JSON, Lua, Python
+// 
+// - C will have tokens with a "Spv" prefix, e.g.: SpvSourceLanguageGLSL
+// - C++ will have tokens in the "spv" name space, e.g.: spv::SourceLanguageGLSL
+// - C++11 will use enum classes in the spv namespace, e.g.: spv::SourceLanguage::GLSL
+// - Lua will use tables, e.g.: spv.SourceLanguage.GLSL
+// - Python will use dictionaries, e.g.: spv['SourceLanguage']['GLSL']
+// 
+// Some tokens act like mask values, which can be OR'd together,
+// while others are mutually exclusive.  The mask-like ones have
+// "Mask" in their name, and a parallel enum that has the shift
+// amount (1 << x) for each corresponding enumerant.
+
+#ifndef spirv_HPP
+#define spirv_HPP
+
+namespace spv {
+
+typedef unsigned int Id;
+
+#define SPV_VERSION 0x10000
+#define SPV_REVISION 12
+
+static const unsigned int MagicNumber = 0x07230203;
+static const unsigned int Version = 0x00010000;
+static const unsigned int Revision = 12;
+static const unsigned int OpCodeMask = 0xffff;
+static const unsigned int WordCountShift = 16;
+
+enum class SourceLanguage : unsigned {
+    Unknown = 0,
+    ESSL = 1,
+    GLSL = 2,
+    OpenCL_C = 3,
+    OpenCL_CPP = 4,
+    HLSL = 5,
+    Max = 0x7fffffff,
+};
+
+enum class ExecutionModel : unsigned {
+    Vertex = 0,
+    TessellationControl = 1,
+    TessellationEvaluation = 2,
+    Geometry = 3,
+    Fragment = 4,
+    GLCompute = 5,
+    Kernel = 6,
+    Max = 0x7fffffff,
+};
+
+enum class AddressingModel : unsigned {
+    Logical = 0,
+    Physical32 = 1,
+    Physical64 = 2,
+    Max = 0x7fffffff,
+};
+
+enum class MemoryModel : unsigned {
+    Simple = 0,
+    GLSL450 = 1,
+    OpenCL = 2,
+    Max = 0x7fffffff,
+};
+
+enum class ExecutionMode : unsigned {
+    Invocations = 0,
+    SpacingEqual = 1,
+    SpacingFractionalEven = 2,
+    SpacingFractionalOdd = 3,
+    VertexOrderCw = 4,
+    VertexOrderCcw = 5,
+    PixelCenterInteger = 6,
+    OriginUpperLeft = 7,
+    OriginLowerLeft = 8,
+    EarlyFragmentTests = 9,
+    PointMode = 10,
+    Xfb = 11,
+    DepthReplacing = 12,
+    DepthGreater = 14,
+    DepthLess = 15,
+    DepthUnchanged = 16,
+    LocalSize = 17,
+    LocalSizeHint = 18,
+    InputPoints = 19,
+    InputLines = 20,
+    InputLinesAdjacency = 21,
+    Triangles = 22,
+    InputTrianglesAdjacency = 23,
+    Quads = 24,
+    Isolines = 25,
+    OutputVertices = 26,
+    OutputPoints = 27,
+    OutputLineStrip = 28,
+    OutputTriangleStrip = 29,
+    VecTypeHint = 30,
+    ContractionOff = 31,
+    PostDepthCoverage = 4446,
+    StencilRefReplacingEXT = 5027,
+    Max = 0x7fffffff,
+};
+
+enum class StorageClass : unsigned {
+    UniformConstant = 0,
+    Input = 1,
+    Uniform = 2,
+    Output = 3,
+    Workgroup = 4,
+    CrossWorkgroup = 5,
+    Private = 6,
+    Function = 7,
+    Generic = 8,
+    PushConstant = 9,
+    AtomicCounter = 10,
+    Image = 11,
+    StorageBuffer = 12,
+    Max = 0x7fffffff,
+};
+
+enum class Dim : unsigned {
+    Dim1D = 0,
+    Dim2D = 1,
+    Dim3D = 2,
+    Cube = 3,
+    Rect = 4,
+    Buffer = 5,
+    SubpassData = 6,
+    Max = 0x7fffffff,
+};
+
+enum class SamplerAddressingMode : unsigned {
+    None = 0,
+    ClampToEdge = 1,
+    Clamp = 2,
+    Repeat = 3,
+    RepeatMirrored = 4,
+    Max = 0x7fffffff,
+};
+
+enum class SamplerFilterMode : unsigned {
+    Nearest = 0,
+    Linear = 1,
+    Max = 0x7fffffff,
+};
+
+enum class ImageFormat : unsigned {
+    Unknown = 0,
+    Rgba32f = 1,
+    Rgba16f = 2,
+    R32f = 3,
+    Rgba8 = 4,
+    Rgba8Snorm = 5,
+    Rg32f = 6,
+    Rg16f = 7,
+    R11fG11fB10f = 8,
+    R16f = 9,
+    Rgba16 = 10,
+    Rgb10A2 = 11,
+    Rg16 = 12,
+    Rg8 = 13,
+    R16 = 14,
+    R8 = 15,
+    Rgba16Snorm = 16,
+    Rg16Snorm = 17,
+    Rg8Snorm = 18,
+    R16Snorm = 19,
+    R8Snorm = 20,
+    Rgba32i = 21,
+    Rgba16i = 22,
+    Rgba8i = 23,
+    R32i = 24,
+    Rg32i = 25,
+    Rg16i = 26,
+    Rg8i = 27,
+    R16i = 28,
+    R8i = 29,
+    Rgba32ui = 30,
+    Rgba16ui = 31,
+    Rgba8ui = 32,
+    R32ui = 33,
+    Rgb10a2ui = 34,
+    Rg32ui = 35,
+    Rg16ui = 36,
+    Rg8ui = 37,
+    R16ui = 38,
+    R8ui = 39,
+    Max = 0x7fffffff,
+};
+
+enum class ImageChannelOrder : unsigned {
+    R = 0,
+    A = 1,
+    RG = 2,
+    RA = 3,
+    RGB = 4,
+    RGBA = 5,
+    BGRA = 6,
+    ARGB = 7,
+    Intensity = 8,
+    Luminance = 9,
+    Rx = 10,
+    RGx = 11,
+    RGBx = 12,
+    Depth = 13,
+    DepthStencil = 14,
+    sRGB = 15,
+    sRGBx = 16,
+    sRGBA = 17,
+    sBGRA = 18,
+    ABGR = 19,
+    Max = 0x7fffffff,
+};
+
+enum class ImageChannelDataType : unsigned {
+    SnormInt8 = 0,
+    SnormInt16 = 1,
+    UnormInt8 = 2,
+    UnormInt16 = 3,
+    UnormShort565 = 4,
+    UnormShort555 = 5,
+    UnormInt101010 = 6,
+    SignedInt8 = 7,
+    SignedInt16 = 8,
+    SignedInt32 = 9,
+    UnsignedInt8 = 10,
+    UnsignedInt16 = 11,
+    UnsignedInt32 = 12,
+    HalfFloat = 13,
+    Float = 14,
+    UnormInt24 = 15,
+    UnormInt101010_2 = 16,
+    Max = 0x7fffffff,
+};
+
+enum class ImageOperandsShift : unsigned {
+    Bias = 0,
+    Lod = 1,
+    Grad = 2,
+    ConstOffset = 3,
+    Offset = 4,
+    ConstOffsets = 5,
+    Sample = 6,
+    MinLod = 7,
+    Max = 0x7fffffff,
+};
+
+enum class ImageOperandsMask : unsigned {
+    MaskNone = 0,
+    Bias = 0x00000001,
+    Lod = 0x00000002,
+    Grad = 0x00000004,
+    ConstOffset = 0x00000008,
+    Offset = 0x00000010,
+    ConstOffsets = 0x00000020,
+    Sample = 0x00000040,
+    MinLod = 0x00000080,
+};
+
+enum class FPFastMathModeShift : unsigned {
+    NotNaN = 0,
+    NotInf = 1,
+    NSZ = 2,
+    AllowRecip = 3,
+    Fast = 4,
+    Max = 0x7fffffff,
+};
+
+enum class FPFastMathModeMask : unsigned {
+    MaskNone = 0,
+    NotNaN = 0x00000001,
+    NotInf = 0x00000002,
+    NSZ = 0x00000004,
+    AllowRecip = 0x00000008,
+    Fast = 0x00000010,
+};
+
+enum class FPRoundingMode : unsigned {
+    RTE = 0,
+    RTZ = 1,
+    RTP = 2,
+    RTN = 3,
+    Max = 0x7fffffff,
+};
+
+enum class LinkageType : unsigned {
+    Export = 0,
+    Import = 1,
+    Max = 0x7fffffff,
+};
+
+enum class AccessQualifier : unsigned {
+    ReadOnly = 0,
+    WriteOnly = 1,
+    ReadWrite = 2,
+    Max = 0x7fffffff,
+};
+
+enum class FunctionParameterAttribute : unsigned {
+    Zext = 0,
+    Sext = 1,
+    ByVal = 2,
+    Sret = 3,
+    NoAlias = 4,
+    NoCapture = 5,
+    NoWrite = 6,
+    NoReadWrite = 7,
+    Max = 0x7fffffff,
+};
+
+enum class Decoration : unsigned {
+    RelaxedPrecision = 0,
+    SpecId = 1,
+    Block = 2,
+    BufferBlock = 3,
+    RowMajor = 4,
+    ColMajor = 5,
+    ArrayStride = 6,
+    MatrixStride = 7,
+    GLSLShared = 8,
+    GLSLPacked = 9,
+    CPacked = 10,
+    BuiltIn = 11,
+    NoPerspective = 13,
+    Flat = 14,
+    Patch = 15,
+    Centroid = 16,
+    Sample = 17,
+    Invariant = 18,
+    Restrict = 19,
+    Aliased = 20,
+    Volatile = 21,
+    Constant = 22,
+    Coherent = 23,
+    NonWritable = 24,
+    NonReadable = 25,
+    Uniform = 26,
+    SaturatedConversion = 28,
+    Stream = 29,
+    Location = 30,
+    Component = 31,
+    Index = 32,
+    Binding = 33,
+    DescriptorSet = 34,
+    Offset = 35,
+    XfbBuffer = 36,
+    XfbStride = 37,
+    FuncParamAttr = 38,
+    FPRoundingMode = 39,
+    FPFastMathMode = 40,
+    LinkageAttributes = 41,
+    NoContraction = 42,
+    InputAttachmentIndex = 43,
+    Alignment = 44,
+    ExplicitInterpAMD = 4999,
+    OverrideCoverageNV = 5248,
+    PassthroughNV = 5250,
+    ViewportRelativeNV = 5252,
+    SecondaryViewportRelativeNV = 5256,
+    HlslCounterBufferGOOGLE = 5634,
+    HlslSemanticGOOGLE = 5635,
+    Max = 0x7fffffff,
+};
+
+enum class BuiltIn : unsigned {
+    Position = 0,
+    PointSize = 1,
+    ClipDistance = 3,
+    CullDistance = 4,
+    VertexId = 5,
+    InstanceId = 6,
+    PrimitiveId = 7,
+    InvocationId = 8,
+    Layer = 9,
+    ViewportIndex = 10,
+    TessLevelOuter = 11,
+    TessLevelInner = 12,
+    TessCoord = 13,
+    PatchVertices = 14,
+    FragCoord = 15,
+    PointCoord = 16,
+    FrontFacing = 17,
+    SampleId = 18,
+    SamplePosition = 19,
+    SampleMask = 20,
+    FragDepth = 22,
+    HelperInvocation = 23,
+    NumWorkgroups = 24,
+    WorkgroupSize = 25,
+    WorkgroupId = 26,
+    LocalInvocationId = 27,
+    GlobalInvocationId = 28,
+    LocalInvocationIndex = 29,
+    WorkDim = 30,
+    GlobalSize = 31,
+    EnqueuedWorkgroupSize = 32,
+    GlobalOffset = 33,
+    GlobalLinearId = 34,
+    SubgroupSize = 36,
+    SubgroupMaxSize = 37,
+    NumSubgroups = 38,
+    NumEnqueuedSubgroups = 39,
+    SubgroupId = 40,
+    SubgroupLocalInvocationId = 41,
+    VertexIndex = 42,
+    InstanceIndex = 43,
+    SubgroupEqMaskKHR = 4416,
+    SubgroupGeMaskKHR = 4417,
+    SubgroupGtMaskKHR = 4418,
+    SubgroupLeMaskKHR = 4419,
+    SubgroupLtMaskKHR = 4420,
+    BaseVertex = 4424,
+    BaseInstance = 4425,
+    DrawIndex = 4426,
+    DeviceIndex = 4438,
+    ViewIndex = 4440,
+    BaryCoordNoPerspAMD = 4992,
+    BaryCoordNoPerspCentroidAMD = 4993,
+    BaryCoordNoPerspSampleAMD = 4994,
+    BaryCoordSmoothAMD = 4995,
+    BaryCoordSmoothCentroidAMD = 4996,
+    BaryCoordSmoothSampleAMD = 4997,
+    BaryCoordPullModelAMD = 4998,
+    FragStencilRefEXT = 5014,
+    ViewportMaskNV = 5253,
+    SecondaryPositionNV = 5257,
+    SecondaryViewportMaskNV = 5258,
+    PositionPerViewNV = 5261,
+    ViewportMaskPerViewNV = 5262,
+    Max = 0x7fffffff,
+};
+
+enum class SelectionControlShift : unsigned {
+    Flatten = 0,
+    DontFlatten = 1,
+    Max = 0x7fffffff,
+};
+
+enum class SelectionControlMask : unsigned {
+    MaskNone = 0,
+    Flatten = 0x00000001,
+    DontFlatten = 0x00000002,
+};
+
+enum class LoopControlShift : unsigned {
+    Unroll = 0,
+    DontUnroll = 1,
+    Max = 0x7fffffff,
+};
+
+enum class LoopControlMask : unsigned {
+    MaskNone = 0,
+    Unroll = 0x00000001,
+    DontUnroll = 0x00000002,
+};
+
+enum class FunctionControlShift : unsigned {
+    Inline = 0,
+    DontInline = 1,
+    Pure = 2,
+    Const = 3,
+    Max = 0x7fffffff,
+};
+
+enum class FunctionControlMask : unsigned {
+    MaskNone = 0,
+    Inline = 0x00000001,
+    DontInline = 0x00000002,
+    Pure = 0x00000004,
+    Const = 0x00000008,
+};
+
+enum class MemorySemanticsShift : unsigned {
+    Acquire = 1,
+    Release = 2,
+    AcquireRelease = 3,
+    SequentiallyConsistent = 4,
+    UniformMemory = 6,
+    SubgroupMemory = 7,
+    WorkgroupMemory = 8,
+    CrossWorkgroupMemory = 9,
+    AtomicCounterMemory = 10,
+    ImageMemory = 11,
+    Max = 0x7fffffff,
+};
+
+enum class MemorySemanticsMask : unsigned {
+    MaskNone = 0,
+    Acquire = 0x00000002,
+    Release = 0x00000004,
+    AcquireRelease = 0x00000008,
+    SequentiallyConsistent = 0x00000010,
+    UniformMemory = 0x00000040,
+    SubgroupMemory = 0x00000080,
+    WorkgroupMemory = 0x00000100,
+    CrossWorkgroupMemory = 0x00000200,
+    AtomicCounterMemory = 0x00000400,
+    ImageMemory = 0x00000800,
+};
+
+enum class MemoryAccessShift : unsigned {
+    Volatile = 0,
+    Aligned = 1,
+    Nontemporal = 2,
+    Max = 0x7fffffff,
+};
+
+enum class MemoryAccessMask : unsigned {
+    MaskNone = 0,
+    Volatile = 0x00000001,
+    Aligned = 0x00000002,
+    Nontemporal = 0x00000004,
+};
+
+enum class Scope : unsigned {
+    CrossDevice = 0,
+    Device = 1,
+    Workgroup = 2,
+    Subgroup = 3,
+    Invocation = 4,
+    Max = 0x7fffffff,
+};
+
+enum class GroupOperation : unsigned {
+    Reduce = 0,
+    InclusiveScan = 1,
+    ExclusiveScan = 2,
+    Max = 0x7fffffff,
+};
+
+enum class KernelEnqueueFlags : unsigned {
+    NoWait = 0,
+    WaitKernel = 1,
+    WaitWorkGroup = 2,
+    Max = 0x7fffffff,
+};
+
+enum class KernelProfilingInfoShift : unsigned {
+    CmdExecTime = 0,
+    Max = 0x7fffffff,
+};
+
+enum class KernelProfilingInfoMask : unsigned {
+    MaskNone = 0,
+    CmdExecTime = 0x00000001,
+};
+
+enum class Capability : unsigned {
+    Matrix = 0,
+    Shader = 1,
+    Geometry = 2,
+    Tessellation = 3,
+    Addresses = 4,
+    Linkage = 5,
+    Kernel = 6,
+    Vector16 = 7,
+    Float16Buffer = 8,
+    Float16 = 9,
+    Float64 = 10,
+    Int64 = 11,
+    Int64Atomics = 12,
+    ImageBasic = 13,
+    ImageReadWrite = 14,
+    ImageMipmap = 15,
+    Pipes = 17,
+    Groups = 18,
+    DeviceEnqueue = 19,
+    LiteralSampler = 20,
+    AtomicStorage = 21,
+    Int16 = 22,
+    TessellationPointSize = 23,
+    GeometryPointSize = 24,
+    ImageGatherExtended = 25,
+    StorageImageMultisample = 27,
+    UniformBufferArrayDynamicIndexing = 28,
+    SampledImageArrayDynamicIndexing = 29,
+    StorageBufferArrayDynamicIndexing = 30,
+    StorageImageArrayDynamicIndexing = 31,
+    ClipDistance = 32,
+    CullDistance = 33,
+    ImageCubeArray = 34,
+    SampleRateShading = 35,
+    ImageRect = 36,
+    SampledRect = 37,
+    GenericPointer = 38,
+    Int8 = 39,
+    InputAttachment = 40,
+    SparseResidency = 41,
+    MinLod = 42,
+    Sampled1D = 43,
+    Image1D = 44,
+    SampledCubeArray = 45,
+    SampledBuffer = 46,
+    ImageBuffer = 47,
+    ImageMSArray = 48,
+    StorageImageExtendedFormats = 49,
+    ImageQuery = 50,
+    DerivativeControl = 51,
+    InterpolationFunction = 52,
+    TransformFeedback = 53,
+    GeometryStreams = 54,
+    StorageImageReadWithoutFormat = 55,
+    StorageImageWriteWithoutFormat = 56,
+    MultiViewport = 57,
+    SubgroupBallotKHR = 4423,
+    DrawParameters = 4427,
+    SubgroupVoteKHR = 4431,
+    StorageBuffer16BitAccess = 4433,
+    StorageUniformBufferBlock16 = 4433,
+    StorageUniform16 = 4434,
+    UniformAndStorageBuffer16BitAccess = 4434,
+    StoragePushConstant16 = 4435,
+    StorageInputOutput16 = 4436,
+    DeviceGroup = 4437,
+    MultiView = 4439,
+    VariablePointersStorageBuffer = 4441,
+    VariablePointers = 4442,
+    AtomicStorageOps = 4445,
+    SampleMaskPostDepthCoverage = 4447,
+    ImageGatherBiasLodAMD = 5009,
+    FragmentMaskAMD = 5010,
+    StencilExportEXT = 5013,
+    ImageReadWriteLodAMD = 5015,
+    SampleMaskOverrideCoverageNV = 5249,
+    GeometryShaderPassthroughNV = 5251,
+    ShaderViewportIndexLayerEXT = 5254,
+    ShaderViewportIndexLayerNV = 5254,
+    ShaderViewportMaskNV = 5255,
+    ShaderStereoViewNV = 5259,
+    PerViewAttributesNV = 5260,
+    SubgroupShuffleINTEL = 5568,
+    SubgroupBufferBlockIOINTEL = 5569,
+    SubgroupImageBlockIOINTEL = 5570,
+    Max = 0x7fffffff,
+};
+
+enum class Op : unsigned {
+    OpNop = 0,
+    OpUndef = 1,
+    OpSourceContinued = 2,
+    OpSource = 3,
+    OpSourceExtension = 4,
+    OpName = 5,
+    OpMemberName = 6,
+    OpString = 7,
+    OpLine = 8,
+    OpExtension = 10,
+    OpExtInstImport = 11,
+    OpExtInst = 12,
+    OpMemoryModel = 14,
+    OpEntryPoint = 15,
+    OpExecutionMode = 16,
+    OpCapability = 17,
+    OpTypeVoid = 19,
+    OpTypeBool = 20,
+    OpTypeInt = 21,
+    OpTypeFloat = 22,
+    OpTypeVector = 23,
+    OpTypeMatrix = 24,
+    OpTypeImage = 25,
+    OpTypeSampler = 26,
+    OpTypeSampledImage = 27,
+    OpTypeArray = 28,
+    OpTypeRuntimeArray = 29,
+    OpTypeStruct = 30,
+    OpTypeOpaque = 31,
+    OpTypePointer = 32,
+    OpTypeFunction = 33,
+    OpTypeEvent = 34,
+    OpTypeDeviceEvent = 35,
+    OpTypeReserveId = 36,
+    OpTypeQueue = 37,
+    OpTypePipe = 38,
+    OpTypeForwardPointer = 39,
+    OpConstantTrue = 41,
+    OpConstantFalse = 42,
+    OpConstant = 43,
+    OpConstantComposite = 44,
+    OpConstantSampler = 45,
+    OpConstantNull = 46,
+    OpSpecConstantTrue = 48,
+    OpSpecConstantFalse = 49,
+    OpSpecConstant = 50,
+    OpSpecConstantComposite = 51,
+    OpSpecConstantOp = 52,
+    OpFunction = 54,
+    OpFunctionParameter = 55,
+    OpFunctionEnd = 56,
+    OpFunctionCall = 57,
+    OpVariable = 59,
+    OpImageTexelPointer = 60,
+    OpLoad = 61,
+    OpStore = 62,
+    OpCopyMemory = 63,
+    OpCopyMemorySized = 64,
+    OpAccessChain = 65,
+    OpInBoundsAccessChain = 66,
+    OpPtrAccessChain = 67,
+    OpArrayLength = 68,
+    OpGenericPtrMemSemantics = 69,
+    OpInBoundsPtrAccessChain = 70,
+    OpDecorate = 71,
+    OpMemberDecorate = 72,
+    OpDecorationGroup = 73,
+    OpGroupDecorate = 74,
+    OpGroupMemberDecorate = 75,
+    OpVectorExtractDynamic = 77,
+    OpVectorInsertDynamic = 78,
+    OpVectorShuffle = 79,
+    OpCompositeConstruct = 80,
+    OpCompositeExtract = 81,
+    OpCompositeInsert = 82,
+    OpCopyObject = 83,
+    OpTranspose = 84,
+    OpSampledImage = 86,
+    OpImageSampleImplicitLod = 87,
+    OpImageSampleExplicitLod = 88,
+    OpImageSampleDrefImplicitLod = 89,
+    OpImageSampleDrefExplicitLod = 90,
+    OpImageSampleProjImplicitLod = 91,
+    OpImageSampleProjExplicitLod = 92,
+    OpImageSampleProjDrefImplicitLod = 93,
+    OpImageSampleProjDrefExplicitLod = 94,
+    OpImageFetch = 95,
+    OpImageGather = 96,
+    OpImageDrefGather = 97,
+    OpImageRead = 98,
+    OpImageWrite = 99,
+    OpImage = 100,
+    OpImageQueryFormat = 101,
+    OpImageQueryOrder = 102,
+    OpImageQuerySizeLod = 103,
+    OpImageQuerySize = 104,
+    OpImageQueryLod = 105,
+    OpImageQueryLevels = 106,
+    OpImageQuerySamples = 107,
+    OpConvertFToU = 109,
+    OpConvertFToS = 110,
+    OpConvertSToF = 111,
+    OpConvertUToF = 112,
+    OpUConvert = 113,
+    OpSConvert = 114,
+    OpFConvert = 115,
+    OpQuantizeToF16 = 116,
+    OpConvertPtrToU = 117,
+    OpSatConvertSToU = 118,
+    OpSatConvertUToS = 119,
+    OpConvertUToPtr = 120,
+    OpPtrCastToGeneric = 121,
+    OpGenericCastToPtr = 122,
+    OpGenericCastToPtrExplicit = 123,
+    OpBitcast = 124,
+    OpSNegate = 126,
+    OpFNegate = 127,
+    OpIAdd = 128,
+    OpFAdd = 129,
+    OpISub = 130,
+    OpFSub = 131,
+    OpIMul = 132,
+    OpFMul = 133,
+    OpUDiv = 134,
+    OpSDiv = 135,
+    OpFDiv = 136,
+    OpUMod = 137,
+    OpSRem = 138,
+    OpSMod = 139,
+    OpFRem = 140,
+    OpFMod = 141,
+    OpVectorTimesScalar = 142,
+    OpMatrixTimesScalar = 143,
+    OpVectorTimesMatrix = 144,
+    OpMatrixTimesVector = 145,
+    OpMatrixTimesMatrix = 146,
+    OpOuterProduct = 147,
+    OpDot = 148,
+    OpIAddCarry = 149,
+    OpISubBorrow = 150,
+    OpUMulExtended = 151,
+    OpSMulExtended = 152,
+    OpAny = 154,
+    OpAll = 155,
+    OpIsNan = 156,
+    OpIsInf = 157,
+    OpIsFinite = 158,
+    OpIsNormal = 159,
+    OpSignBitSet = 160,
+    OpLessOrGreater = 161,
+    OpOrdered = 162,
+    OpUnordered = 163,
+    OpLogicalEqual = 164,
+    OpLogicalNotEqual = 165,
+    OpLogicalOr = 166,
+    OpLogicalAnd = 167,
+    OpLogicalNot = 168,
+    OpSelect = 169,
+    OpIEqual = 170,
+    OpINotEqual = 171,
+    OpUGreaterThan = 172,
+    OpSGreaterThan = 173,
+    OpUGreaterThanEqual = 174,
+    OpSGreaterThanEqual = 175,
+    OpULessThan = 176,
+    OpSLessThan = 177,
+    OpULessThanEqual = 178,
+    OpSLessThanEqual = 179,
+    OpFOrdEqual = 180,
+    OpFUnordEqual = 181,
+    OpFOrdNotEqual = 182,
+    OpFUnordNotEqual = 183,
+    OpFOrdLessThan = 184,
+    OpFUnordLessThan = 185,
+    OpFOrdGreaterThan = 186,
+    OpFUnordGreaterThan = 187,
+    OpFOrdLessThanEqual = 188,
+    OpFUnordLessThanEqual = 189,
+    OpFOrdGreaterThanEqual = 190,
+    OpFUnordGreaterThanEqual = 191,
+    OpShiftRightLogical = 194,
+    OpShiftRightArithmetic = 195,
+    OpShiftLeftLogical = 196,
+    OpBitwiseOr = 197,
+    OpBitwiseXor = 198,
+    OpBitwiseAnd = 199,
+    OpNot = 200,
+    OpBitFieldInsert = 201,
+    OpBitFieldSExtract = 202,
+    OpBitFieldUExtract = 203,
+    OpBitReverse = 204,
+    OpBitCount = 205,
+    OpDPdx = 207,
+    OpDPdy = 208,
+    OpFwidth = 209,
+    OpDPdxFine = 210,
+    OpDPdyFine = 211,
+    OpFwidthFine = 212,
+    OpDPdxCoarse = 213,
+    OpDPdyCoarse = 214,
+    OpFwidthCoarse = 215,
+    OpEmitVertex = 218,
+    OpEndPrimitive = 219,
+    OpEmitStreamVertex = 220,
+    OpEndStreamPrimitive = 221,
+    OpControlBarrier = 224,
+    OpMemoryBarrier = 225,
+    OpAtomicLoad = 227,
+    OpAtomicStore = 228,
+    OpAtomicExchange = 229,
+    OpAtomicCompareExchange = 230,
+    OpAtomicCompareExchangeWeak = 231,
+    OpAtomicIIncrement = 232,
+    OpAtomicIDecrement = 233,
+    OpAtomicIAdd = 234,
+    OpAtomicISub = 235,
+    OpAtomicSMin = 236,
+    OpAtomicUMin = 237,
+    OpAtomicSMax = 238,
+    OpAtomicUMax = 239,
+    OpAtomicAnd = 240,
+    OpAtomicOr = 241,
+    OpAtomicXor = 242,
+    OpPhi = 245,
+    OpLoopMerge = 246,
+    OpSelectionMerge = 247,
+    OpLabel = 248,
+    OpBranch = 249,
+    OpBranchConditional = 250,
+    OpSwitch = 251,
+    OpKill = 252,
+    OpReturn = 253,
+    OpReturnValue = 254,
+    OpUnreachable = 255,
+    OpLifetimeStart = 256,
+    OpLifetimeStop = 257,
+    OpGroupAsyncCopy = 259,
+    OpGroupWaitEvents = 260,
+    OpGroupAll = 261,
+    OpGroupAny = 262,
+    OpGroupBroadcast = 263,
+    OpGroupIAdd = 264,
+    OpGroupFAdd = 265,
+    OpGroupFMin = 266,
+    OpGroupUMin = 267,
+    OpGroupSMin = 268,
+    OpGroupFMax = 269,
+    OpGroupUMax = 270,
+    OpGroupSMax = 271,
+    OpReadPipe = 274,
+    OpWritePipe = 275,
+    OpReservedReadPipe = 276,
+    OpReservedWritePipe = 277,
+    OpReserveReadPipePackets = 278,
+    OpReserveWritePipePackets = 279,
+    OpCommitReadPipe = 280,
+    OpCommitWritePipe = 281,
+    OpIsValidReserveId = 282,
+    OpGetNumPipePackets = 283,
+    OpGetMaxPipePackets = 284,
+    OpGroupReserveReadPipePackets = 285,
+    OpGroupReserveWritePipePackets = 286,
+    OpGroupCommitReadPipe = 287,
+    OpGroupCommitWritePipe = 288,
+    OpEnqueueMarker = 291,
+    OpEnqueueKernel = 292,
+    OpGetKernelNDrangeSubGroupCount = 293,
+    OpGetKernelNDrangeMaxSubGroupSize = 294,
+    OpGetKernelWorkGroupSize = 295,
+    OpGetKernelPreferredWorkGroupSizeMultiple = 296,
+    OpRetainEvent = 297,
+    OpReleaseEvent = 298,
+    OpCreateUserEvent = 299,
+    OpIsValidEvent = 300,
+    OpSetUserEventStatus = 301,
+    OpCaptureEventProfilingInfo = 302,
+    OpGetDefaultQueue = 303,
+    OpBuildNDRange = 304,
+    OpImageSparseSampleImplicitLod = 305,
+    OpImageSparseSampleExplicitLod = 306,
+    OpImageSparseSampleDrefImplicitLod = 307,
+    OpImageSparseSampleDrefExplicitLod = 308,
+    OpImageSparseSampleProjImplicitLod = 309,
+    OpImageSparseSampleProjExplicitLod = 310,
+    OpImageSparseSampleProjDrefImplicitLod = 311,
+    OpImageSparseSampleProjDrefExplicitLod = 312,
+    OpImageSparseFetch = 313,
+    OpImageSparseGather = 314,
+    OpImageSparseDrefGather = 315,
+    OpImageSparseTexelsResident = 316,
+    OpNoLine = 317,
+    OpAtomicFlagTestAndSet = 318,
+    OpAtomicFlagClear = 319,
+    OpImageSparseRead = 320,
+    OpDecorateId = 332,
+    OpSubgroupBallotKHR = 4421,
+    OpSubgroupFirstInvocationKHR = 4422,
+    OpSubgroupAllKHR = 4428,
+    OpSubgroupAnyKHR = 4429,
+    OpSubgroupAllEqualKHR = 4430,
+    OpSubgroupReadInvocationKHR = 4432,
+    OpGroupIAddNonUniformAMD = 5000,
+    OpGroupFAddNonUniformAMD = 5001,
+    OpGroupFMinNonUniformAMD = 5002,
+    OpGroupUMinNonUniformAMD = 5003,
+    OpGroupSMinNonUniformAMD = 5004,
+    OpGroupFMaxNonUniformAMD = 5005,
+    OpGroupUMaxNonUniformAMD = 5006,
+    OpGroupSMaxNonUniformAMD = 5007,
+    OpFragmentMaskFetchAMD = 5011,
+    OpFragmentFetchAMD = 5012,
+    OpSubgroupShuffleINTEL = 5571,
+    OpSubgroupShuffleDownINTEL = 5572,
+    OpSubgroupShuffleUpINTEL = 5573,
+    OpSubgroupShuffleXorINTEL = 5574,
+    OpSubgroupBlockReadINTEL = 5575,
+    OpSubgroupBlockWriteINTEL = 5576,
+    OpSubgroupImageBlockReadINTEL = 5577,
+    OpSubgroupImageBlockWriteINTEL = 5578,
+    OpDecorateStringGOOGLE = 5632,
+    OpMemberDecorateStringGOOGLE = 5633,
+    Max = 0x7fffffff,
+};
+
+// Overload operator| for mask bit combining
+
+inline ImageOperandsMask operator|(ImageOperandsMask a, ImageOperandsMask b) { return ImageOperandsMask(unsigned(a) | unsigned(b)); }
+inline FPFastMathModeMask operator|(FPFastMathModeMask a, FPFastMathModeMask b) { return FPFastMathModeMask(unsigned(a) | unsigned(b)); }
+inline SelectionControlMask operator|(SelectionControlMask a, SelectionControlMask b) { return SelectionControlMask(unsigned(a) | unsigned(b)); }
+inline LoopControlMask operator|(LoopControlMask a, LoopControlMask b) { return LoopControlMask(unsigned(a) | unsigned(b)); }
+inline FunctionControlMask operator|(FunctionControlMask a, FunctionControlMask b) { return FunctionControlMask(unsigned(a) | unsigned(b)); }
+inline MemorySemanticsMask operator|(MemorySemanticsMask a, MemorySemanticsMask b) { return MemorySemanticsMask(unsigned(a) | unsigned(b)); }
+inline MemoryAccessMask operator|(MemoryAccessMask a, MemoryAccessMask b) { return MemoryAccessMask(unsigned(a) | unsigned(b)); }
+inline KernelProfilingInfoMask operator|(KernelProfilingInfoMask a, KernelProfilingInfoMask b) { return KernelProfilingInfoMask(unsigned(a) | unsigned(b)); }
+
+}  // end namespace spv
+
+#endif  // #ifndef spirv_HPP
+
diff --git a/libs/spirv-headers/spirv/1.0/spirv.json b/libs/spirv-headers/spirv/1.0/spirv.json
new file mode 100644
index 00000000000..9b0a8f3de28
--- /dev/null
+++ b/libs/spirv-headers/spirv/1.0/spirv.json
@@ -0,0 +1,1020 @@
+{
+    "spv":
+    {
+        "meta":
+        {
+            "Comment":
+            [
+                [
+                    "Copyright (c) 2014-2018 The Khronos Group Inc.",
+                    "",
+                    "Permission is hereby granted, free of charge, to any person obtaining a copy",
+                    "of this software and/or associated documentation files (the \"Materials\"),",
+                    "to deal in the Materials without restriction, including without limitation",
+                    "the rights to use, copy, modify, merge, publish, distribute, sublicense,",
+                    "and/or sell copies of the Materials, and to permit persons to whom the",
+                    "Materials are furnished to do so, subject to the following conditions:",
+                    "",
+                    "The above copyright notice and this permission notice shall be included in",
+                    "all copies or substantial portions of the Materials.",
+                    "",
+                    "MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS KHRONOS",
+                    "STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS SPECIFICATIONS AND",
+                    "HEADER INFORMATION ARE LOCATED AT https://www.khronos.org/registry/ ",
+                    "",
+                    "THE MATERIALS ARE PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS",
+                    "OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,",
+                    "FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL",
+                    "THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER",
+                    "LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING",
+                    "FROM,OUT OF OR IN CONNECTION WITH THE MATERIALS OR THE USE OR OTHER DEALINGS",
+                    "IN THE MATERIALS."
+                ],
+                [
+                    "This header is automatically generated by the same tool that creates",
+                    "the Binary Section of the SPIR-V specification."
+                ],
+                [
+                    "Enumeration tokens for SPIR-V, in various styles:",
+                    "  C, C++, C++11, JSON, Lua, Python",
+                    "",
+                    "- C will have tokens with a \"Spv\" prefix, e.g.: SpvSourceLanguageGLSL",
+                    "- C++ will have tokens in the \"spv\" name space, e.g.: spv::SourceLanguageGLSL",
+                    "- C++11 will use enum classes in the spv namespace, e.g.: spv::SourceLanguage::GLSL",
+                    "- Lua will use tables, e.g.: spv.SourceLanguage.GLSL",
+                    "- Python will use dictionaries, e.g.: spv['SourceLanguage']['GLSL']",
+                    "",
+                    "Some tokens act like mask values, which can be OR'd together,",
+                    "while others are mutually exclusive.  The mask-like ones have",
+                    "\"Mask\" in their name, and a parallel enum that has the shift",
+                    "amount (1 << x) for each corresponding enumerant."
+                ]
+            ],
+            "MagicNumber": 119734787,
+            "Version": 65536,
+            "Revision": 12,
+            "OpCodeMask": 65535,
+            "WordCountShift": 16
+        },
+        "enum":
+        [
+            {
+                "Name": "SourceLanguage",
+                "Type": "Value",
+                "Values":
+                {
+                    "Unknown": 0,
+                    "ESSL": 1,
+                    "GLSL": 2,
+                    "OpenCL_C": 3,
+                    "OpenCL_CPP": 4,
+                    "HLSL": 5
+                }
+            },
+            {
+                "Name": "ExecutionModel",
+                "Type": "Value",
+                "Values":
+                {
+                    "Vertex": 0,
+                    "TessellationControl": 1,
+                    "TessellationEvaluation": 2,
+                    "Geometry": 3,
+                    "Fragment": 4,
+                    "GLCompute": 5,
+                    "Kernel": 6
+                }
+            },
+            {
+                "Name": "AddressingModel",
+                "Type": "Value",
+                "Values":
+                {
+                    "Logical": 0,
+                    "Physical32": 1,
+                    "Physical64": 2
+                }
+            },
+            {
+                "Name": "MemoryModel",
+                "Type": "Value",
+                "Values":
+                {
+                    "Simple": 0,
+                    "GLSL450": 1,
+                    "OpenCL": 2
+                }
+            },
+            {
+                "Name": "ExecutionMode",
+                "Type": "Value",
+                "Values":
+                {
+                    "Invocations": 0,
+                    "SpacingEqual": 1,
+                    "SpacingFractionalEven": 2,
+                    "SpacingFractionalOdd": 3,
+                    "VertexOrderCw": 4,
+                    "VertexOrderCcw": 5,
+                    "PixelCenterInteger": 6,
+                    "OriginUpperLeft": 7,
+                    "OriginLowerLeft": 8,
+                    "EarlyFragmentTests": 9,
+                    "PointMode": 10,
+                    "Xfb": 11,
+                    "DepthReplacing": 12,
+                    "DepthGreater": 14,
+                    "DepthLess": 15,
+                    "DepthUnchanged": 16,
+                    "LocalSize": 17,
+                    "LocalSizeHint": 18,
+                    "InputPoints": 19,
+                    "InputLines": 20,
+                    "InputLinesAdjacency": 21,
+                    "Triangles": 22,
+                    "InputTrianglesAdjacency": 23,
+                    "Quads": 24,
+                    "Isolines": 25,
+                    "OutputVertices": 26,
+                    "OutputPoints": 27,
+                    "OutputLineStrip": 28,
+                    "OutputTriangleStrip": 29,
+                    "VecTypeHint": 30,
+                    "ContractionOff": 31,
+                    "PostDepthCoverage": 4446,
+                    "StencilRefReplacingEXT": 5027
+                }
+            },
+            {
+                "Name": "StorageClass",
+                "Type": "Value",
+                "Values":
+                {
+                    "UniformConstant": 0,
+                    "Input": 1,
+                    "Uniform": 2,
+                    "Output": 3,
+                    "Workgroup": 4,
+                    "CrossWorkgroup": 5,
+                    "Private": 6,
+                    "Function": 7,
+                    "Generic": 8,
+                    "PushConstant": 9,
+                    "AtomicCounter": 10,
+                    "Image": 11,
+                    "StorageBuffer": 12
+                }
+            },
+            {
+                "Name": "Dim",
+                "Type": "Value",
+                "Values":
+                {
+                    "Dim1D": 0,
+                    "Dim2D": 1,
+                    "Dim3D": 2,
+                    "Cube": 3,
+                    "Rect": 4,
+                    "Buffer": 5,
+                    "SubpassData": 6
+                }
+            },
+            {
+                "Name": "SamplerAddressingMode",
+                "Type": "Value",
+                "Values":
+                {
+                    "None": 0,
+                    "ClampToEdge": 1,
+                    "Clamp": 2,
+                    "Repeat": 3,
+                    "RepeatMirrored": 4
+                }
+            },
+            {
+                "Name": "SamplerFilterMode",
+                "Type": "Value",
+                "Values":
+                {
+                    "Nearest": 0,
+                    "Linear": 1
+                }
+            },
+            {
+                "Name": "ImageFormat",
+                "Type": "Value",
+                "Values":
+                {
+                    "Unknown": 0,
+                    "Rgba32f": 1,
+                    "Rgba16f": 2,
+                    "R32f": 3,
+                    "Rgba8": 4,
+                    "Rgba8Snorm": 5,
+                    "Rg32f": 6,
+                    "Rg16f": 7,
+                    "R11fG11fB10f": 8,
+                    "R16f": 9,
+                    "Rgba16": 10,
+                    "Rgb10A2": 11,
+                    "Rg16": 12,
+                    "Rg8": 13,
+                    "R16": 14,
+                    "R8": 15,
+                    "Rgba16Snorm": 16,
+                    "Rg16Snorm": 17,
+                    "Rg8Snorm": 18,
+                    "R16Snorm": 19,
+                    "R8Snorm": 20,
+                    "Rgba32i": 21,
+                    "Rgba16i": 22,
+                    "Rgba8i": 23,
+                    "R32i": 24,
+                    "Rg32i": 25,
+                    "Rg16i": 26,
+                    "Rg8i": 27,
+                    "R16i": 28,
+                    "R8i": 29,
+                    "Rgba32ui": 30,
+                    "Rgba16ui": 31,
+                    "Rgba8ui": 32,
+                    "R32ui": 33,
+                    "Rgb10a2ui": 34,
+                    "Rg32ui": 35,
+                    "Rg16ui": 36,
+                    "Rg8ui": 37,
+                    "R16ui": 38,
+                    "R8ui": 39
+                }
+            },
+            {
+                "Name": "ImageChannelOrder",
+                "Type": "Value",
+                "Values":
+                {
+                    "R": 0,
+                    "A": 1,
+                    "RG": 2,
+                    "RA": 3,
+                    "RGB": 4,
+                    "RGBA": 5,
+                    "BGRA": 6,
+                    "ARGB": 7,
+                    "Intensity": 8,
+                    "Luminance": 9,
+                    "Rx": 10,
+                    "RGx": 11,
+                    "RGBx": 12,
+                    "Depth": 13,
+                    "DepthStencil": 14,
+                    "sRGB": 15,
+                    "sRGBx": 16,
+                    "sRGBA": 17,
+                    "sBGRA": 18,
+                    "ABGR": 19
+                }
+            },
+            {
+                "Name": "ImageChannelDataType",
+                "Type": "Value",
+                "Values":
+                {
+                    "SnormInt8": 0,
+                    "SnormInt16": 1,
+                    "UnormInt8": 2,
+                    "UnormInt16": 3,
+                    "UnormShort565": 4,
+                    "UnormShort555": 5,
+                    "UnormInt101010": 6,
+                    "SignedInt8": 7,
+                    "SignedInt16": 8,
+                    "SignedInt32": 9,
+                    "UnsignedInt8": 10,
+                    "UnsignedInt16": 11,
+                    "UnsignedInt32": 12,
+                    "HalfFloat": 13,
+                    "Float": 14,
+                    "UnormInt24": 15,
+                    "UnormInt101010_2": 16
+                }
+            },
+            {
+                "Name": "ImageOperands",
+                "Type": "Bit",
+                "Values":
+                {
+                    "Bias": 0,
+                    "Lod": 1,
+                    "Grad": 2,
+                    "ConstOffset": 3,
+                    "Offset": 4,
+                    "ConstOffsets": 5,
+                    "Sample": 6,
+                    "MinLod": 7
+                }
+            },
+            {
+                "Name": "FPFastMathMode",
+                "Type": "Bit",
+                "Values":
+                {
+                    "NotNaN": 0,
+                    "NotInf": 1,
+                    "NSZ": 2,
+                    "AllowRecip": 3,
+                    "Fast": 4
+                }
+            },
+            {
+                "Name": "FPRoundingMode",
+                "Type": "Value",
+                "Values":
+                {
+                    "RTE": 0,
+                    "RTZ": 1,
+                    "RTP": 2,
+                    "RTN": 3
+                }
+            },
+            {
+                "Name": "LinkageType",
+                "Type": "Value",
+                "Values":
+                {
+                    "Export": 0,
+                    "Import": 1
+                }
+            },
+            {
+                "Name": "AccessQualifier",
+                "Type": "Value",
+                "Values":
+                {
+                    "ReadOnly": 0,
+                    "WriteOnly": 1,
+                    "ReadWrite": 2
+                }
+            },
+            {
+                "Name": "FunctionParameterAttribute",
+                "Type": "Value",
+                "Values":
+                {
+                    "Zext": 0,
+                    "Sext": 1,
+                    "ByVal": 2,
+                    "Sret": 3,
+                    "NoAlias": 4,
+                    "NoCapture": 5,
+                    "NoWrite": 6,
+                    "NoReadWrite": 7
+                }
+            },
+            {
+                "Name": "Decoration",
+                "Type": "Value",
+                "Values":
+                {
+                    "RelaxedPrecision": 0,
+                    "SpecId": 1,
+                    "Block": 2,
+                    "BufferBlock": 3,
+                    "RowMajor": 4,
+                    "ColMajor": 5,
+                    "ArrayStride": 6,
+                    "MatrixStride": 7,
+                    "GLSLShared": 8,
+                    "GLSLPacked": 9,
+                    "CPacked": 10,
+                    "BuiltIn": 11,
+                    "NoPerspective": 13,
+                    "Flat": 14,
+                    "Patch": 15,
+                    "Centroid": 16,
+                    "Sample": 17,
+                    "Invariant": 18,
+                    "Restrict": 19,
+                    "Aliased": 20,
+                    "Volatile": 21,
+                    "Constant": 22,
+                    "Coherent": 23,
+                    "NonWritable": 24,
+                    "NonReadable": 25,
+                    "Uniform": 26,
+                    "SaturatedConversion": 28,
+                    "Stream": 29,
+                    "Location": 30,
+                    "Component": 31,
+                    "Index": 32,
+                    "Binding": 33,
+                    "DescriptorSet": 34,
+                    "Offset": 35,
+                    "XfbBuffer": 36,
+                    "XfbStride": 37,
+                    "FuncParamAttr": 38,
+                    "FPRoundingMode": 39,
+                    "FPFastMathMode": 40,
+                    "LinkageAttributes": 41,
+                    "NoContraction": 42,
+                    "InputAttachmentIndex": 43,
+                    "Alignment": 44,
+                    "ExplicitInterpAMD": 4999,
+                    "OverrideCoverageNV": 5248,
+                    "PassthroughNV": 5250,
+                    "ViewportRelativeNV": 5252,
+                    "SecondaryViewportRelativeNV": 5256,
+                    "HlslCounterBufferGOOGLE": 5634,
+                    "HlslSemanticGOOGLE": 5635
+                }
+            },
+            {
+                "Name": "BuiltIn",
+                "Type": "Value",
+                "Values":
+                {
+                    "Position": 0,
+                    "PointSize": 1,
+                    "ClipDistance": 3,
+                    "CullDistance": 4,
+                    "VertexId": 5,
+                    "InstanceId": 6,
+                    "PrimitiveId": 7,
+                    "InvocationId": 8,
+                    "Layer": 9,
+                    "ViewportIndex": 10,
+                    "TessLevelOuter": 11,
+                    "TessLevelInner": 12,
+                    "TessCoord": 13,
+                    "PatchVertices": 14,
+                    "FragCoord": 15,
+                    "PointCoord": 16,
+                    "FrontFacing": 17,
+                    "SampleId": 18,
+                    "SamplePosition": 19,
+                    "SampleMask": 20,
+                    "FragDepth": 22,
+                    "HelperInvocation": 23,
+                    "NumWorkgroups": 24,
+                    "WorkgroupSize": 25,
+                    "WorkgroupId": 26,
+                    "LocalInvocationId": 27,
+                    "GlobalInvocationId": 28,
+                    "LocalInvocationIndex": 29,
+                    "WorkDim": 30,
+                    "GlobalSize": 31,
+                    "EnqueuedWorkgroupSize": 32,
+                    "GlobalOffset": 33,
+                    "GlobalLinearId": 34,
+                    "SubgroupSize": 36,
+                    "SubgroupMaxSize": 37,
+                    "NumSubgroups": 38,
+                    "NumEnqueuedSubgroups": 39,
+                    "SubgroupId": 40,
+                    "SubgroupLocalInvocationId": 41,
+                    "VertexIndex": 42,
+                    "InstanceIndex": 43,
+                    "SubgroupEqMaskKHR": 4416,
+                    "SubgroupGeMaskKHR": 4417,
+                    "SubgroupGtMaskKHR": 4418,
+                    "SubgroupLeMaskKHR": 4419,
+                    "SubgroupLtMaskKHR": 4420,
+                    "BaseVertex": 4424,
+                    "BaseInstance": 4425,
+                    "DrawIndex": 4426,
+                    "DeviceIndex": 4438,
+                    "ViewIndex": 4440,
+                    "BaryCoordNoPerspAMD": 4992,
+                    "BaryCoordNoPerspCentroidAMD": 4993,
+                    "BaryCoordNoPerspSampleAMD": 4994,
+                    "BaryCoordSmoothAMD": 4995,
+                    "BaryCoordSmoothCentroidAMD": 4996,
+                    "BaryCoordSmoothSampleAMD": 4997,
+                    "BaryCoordPullModelAMD": 4998,
+                    "FragStencilRefEXT": 5014,
+                    "ViewportMaskNV": 5253,
+                    "SecondaryPositionNV": 5257,
+                    "SecondaryViewportMaskNV": 5258,
+                    "PositionPerViewNV": 5261,
+                    "ViewportMaskPerViewNV": 5262
+                }
+            },
+            {
+                "Name": "SelectionControl",
+                "Type": "Bit",
+                "Values":
+                {
+                    "Flatten": 0,
+                    "DontFlatten": 1
+                }
+            },
+            {
+                "Name": "LoopControl",
+                "Type": "Bit",
+                "Values":
+                {
+                    "Unroll": 0,
+                    "DontUnroll": 1
+                }
+            },
+            {
+                "Name": "FunctionControl",
+                "Type": "Bit",
+                "Values":
+                {
+                    "Inline": 0,
+                    "DontInline": 1,
+                    "Pure": 2,
+                    "Const": 3
+                }
+            },
+            {
+                "Name": "MemorySemantics",
+                "Type": "Bit",
+                "Values":
+                {
+                    "Acquire": 1,
+                    "Release": 2,
+                    "AcquireRelease": 3,
+                    "SequentiallyConsistent": 4,
+                    "UniformMemory": 6,
+                    "SubgroupMemory": 7,
+                    "WorkgroupMemory": 8,
+                    "CrossWorkgroupMemory": 9,
+                    "AtomicCounterMemory": 10,
+                    "ImageMemory": 11
+                }
+            },
+            {
+                "Name": "MemoryAccess",
+                "Type": "Bit",
+                "Values":
+                {
+                    "Volatile": 0,
+                    "Aligned": 1,
+                    "Nontemporal": 2
+                }
+            },
+            {
+                "Name": "Scope",
+                "Type": "Value",
+                "Values":
+                {
+                    "CrossDevice": 0,
+                    "Device": 1,
+                    "Workgroup": 2,
+                    "Subgroup": 3,
+                    "Invocation": 4
+                }
+            },
+            {
+                "Name": "GroupOperation",
+                "Type": "Value",
+                "Values":
+                {
+                    "Reduce": 0,
+                    "InclusiveScan": 1,
+                    "ExclusiveScan": 2
+                }
+            },
+            {
+                "Name": "KernelEnqueueFlags",
+                "Type": "Value",
+                "Values":
+                {
+                    "NoWait": 0,
+                    "WaitKernel": 1,
+                    "WaitWorkGroup": 2
+                }
+            },
+            {
+                "Name": "KernelProfilingInfo",
+                "Type": "Bit",
+                "Values":
+                {
+                    "CmdExecTime": 0
+                }
+            },
+            {
+                "Name": "Capability",
+                "Type": "Value",
+                "Values":
+                {
+                    "Matrix": 0,
+                    "Shader": 1,
+                    "Geometry": 2,
+                    "Tessellation": 3,
+                    "Addresses": 4,
+                    "Linkage": 5,
+                    "Kernel": 6,
+                    "Vector16": 7,
+                    "Float16Buffer": 8,
+                    "Float16": 9,
+                    "Float64": 10,
+                    "Int64": 11,
+                    "Int64Atomics": 12,
+                    "ImageBasic": 13,
+                    "ImageReadWrite": 14,
+                    "ImageMipmap": 15,
+                    "Pipes": 17,
+                    "Groups": 18,
+                    "DeviceEnqueue": 19,
+                    "LiteralSampler": 20,
+                    "AtomicStorage": 21,
+                    "Int16": 22,
+                    "TessellationPointSize": 23,
+                    "GeometryPointSize": 24,
+                    "ImageGatherExtended": 25,
+                    "StorageImageMultisample": 27,
+                    "UniformBufferArrayDynamicIndexing": 28,
+                    "SampledImageArrayDynamicIndexing": 29,
+                    "StorageBufferArrayDynamicIndexing": 30,
+                    "StorageImageArrayDynamicIndexing": 31,
+                    "ClipDistance": 32,
+                    "CullDistance": 33,
+                    "ImageCubeArray": 34,
+                    "SampleRateShading": 35,
+                    "ImageRect": 36,
+                    "SampledRect": 37,
+                    "GenericPointer": 38,
+                    "Int8": 39,
+                    "InputAttachment": 40,
+                    "SparseResidency": 41,
+                    "MinLod": 42,
+                    "Sampled1D": 43,
+                    "Image1D": 44,
+                    "SampledCubeArray": 45,
+                    "SampledBuffer": 46,
+                    "ImageBuffer": 47,
+                    "ImageMSArray": 48,
+                    "StorageImageExtendedFormats": 49,
+                    "ImageQuery": 50,
+                    "DerivativeControl": 51,
+                    "InterpolationFunction": 52,
+                    "TransformFeedback": 53,
+                    "GeometryStreams": 54,
+                    "StorageImageReadWithoutFormat": 55,
+                    "StorageImageWriteWithoutFormat": 56,
+                    "MultiViewport": 57,
+                    "SubgroupBallotKHR": 4423,
+                    "DrawParameters": 4427,
+                    "SubgroupVoteKHR": 4431,
+                    "StorageBuffer16BitAccess": 4433,
+                    "StorageUniformBufferBlock16": 4433,
+                    "StorageUniform16": 4434,
+                    "UniformAndStorageBuffer16BitAccess": 4434,
+                    "StoragePushConstant16": 4435,
+                    "StorageInputOutput16": 4436,
+                    "DeviceGroup": 4437,
+                    "MultiView": 4439,
+                    "VariablePointersStorageBuffer": 4441,
+                    "VariablePointers": 4442,
+                    "AtomicStorageOps": 4445,
+                    "SampleMaskPostDepthCoverage": 4447,
+                    "ImageGatherBiasLodAMD": 5009,
+                    "FragmentMaskAMD": 5010,
+                    "StencilExportEXT": 5013,
+                    "ImageReadWriteLodAMD": 5015,
+                    "SampleMaskOverrideCoverageNV": 5249,
+                    "GeometryShaderPassthroughNV": 5251,
+                    "ShaderViewportIndexLayerEXT": 5254,
+                    "ShaderViewportIndexLayerNV": 5254,
+                    "ShaderViewportMaskNV": 5255,
+                    "ShaderStereoViewNV": 5259,
+                    "PerViewAttributesNV": 5260,
+                    "SubgroupShuffleINTEL": 5568,
+                    "SubgroupBufferBlockIOINTEL": 5569,
+                    "SubgroupImageBlockIOINTEL": 5570
+                }
+            },
+            {
+                "Name": "Op",
+                "Type": "Value",
+                "Values":
+                {
+                    "OpNop": 0,
+                    "OpUndef": 1,
+                    "OpSourceContinued": 2,
+                    "OpSource": 3,
+                    "OpSourceExtension": 4,
+                    "OpName": 5,
+                    "OpMemberName": 6,
+                    "OpString": 7,
+                    "OpLine": 8,
+                    "OpExtension": 10,
+                    "OpExtInstImport": 11,
+                    "OpExtInst": 12,
+                    "OpMemoryModel": 14,
+                    "OpEntryPoint": 15,
+                    "OpExecutionMode": 16,
+                    "OpCapability": 17,
+                    "OpTypeVoid": 19,
+                    "OpTypeBool": 20,
+                    "OpTypeInt": 21,
+                    "OpTypeFloat": 22,
+                    "OpTypeVector": 23,
+                    "OpTypeMatrix": 24,
+                    "OpTypeImage": 25,
+                    "OpTypeSampler": 26,
+                    "OpTypeSampledImage": 27,
+                    "OpTypeArray": 28,
+                    "OpTypeRuntimeArray": 29,
+                    "OpTypeStruct": 30,
+                    "OpTypeOpaque": 31,
+                    "OpTypePointer": 32,
+                    "OpTypeFunction": 33,
+                    "OpTypeEvent": 34,
+                    "OpTypeDeviceEvent": 35,
+                    "OpTypeReserveId": 36,
+                    "OpTypeQueue": 37,
+                    "OpTypePipe": 38,
+                    "OpTypeForwardPointer": 39,
+                    "OpConstantTrue": 41,
+                    "OpConstantFalse": 42,
+                    "OpConstant": 43,
+                    "OpConstantComposite": 44,
+                    "OpConstantSampler": 45,
+                    "OpConstantNull": 46,
+                    "OpSpecConstantTrue": 48,
+                    "OpSpecConstantFalse": 49,
+                    "OpSpecConstant": 50,
+                    "OpSpecConstantComposite": 51,
+                    "OpSpecConstantOp": 52,
+                    "OpFunction": 54,
+                    "OpFunctionParameter": 55,
+                    "OpFunctionEnd": 56,
+                    "OpFunctionCall": 57,
+                    "OpVariable": 59,
+                    "OpImageTexelPointer": 60,
+                    "OpLoad": 61,
+                    "OpStore": 62,
+                    "OpCopyMemory": 63,
+                    "OpCopyMemorySized": 64,
+                    "OpAccessChain": 65,
+                    "OpInBoundsAccessChain": 66,
+                    "OpPtrAccessChain": 67,
+                    "OpArrayLength": 68,
+                    "OpGenericPtrMemSemantics": 69,
+                    "OpInBoundsPtrAccessChain": 70,
+                    "OpDecorate": 71,
+                    "OpMemberDecorate": 72,
+                    "OpDecorationGroup": 73,
+                    "OpGroupDecorate": 74,
+                    "OpGroupMemberDecorate": 75,
+                    "OpVectorExtractDynamic": 77,
+                    "OpVectorInsertDynamic": 78,
+                    "OpVectorShuffle": 79,
+                    "OpCompositeConstruct": 80,
+                    "OpCompositeExtract": 81,
+                    "OpCompositeInsert": 82,
+                    "OpCopyObject": 83,
+                    "OpTranspose": 84,
+                    "OpSampledImage": 86,
+                    "OpImageSampleImplicitLod": 87,
+                    "OpImageSampleExplicitLod": 88,
+                    "OpImageSampleDrefImplicitLod": 89,
+                    "OpImageSampleDrefExplicitLod": 90,
+                    "OpImageSampleProjImplicitLod": 91,
+                    "OpImageSampleProjExplicitLod": 92,
+                    "OpImageSampleProjDrefImplicitLod": 93,
+                    "OpImageSampleProjDrefExplicitLod": 94,
+                    "OpImageFetch": 95,
+                    "OpImageGather": 96,
+                    "OpImageDrefGather": 97,
+                    "OpImageRead": 98,
+                    "OpImageWrite": 99,
+                    "OpImage": 100,
+                    "OpImageQueryFormat": 101,
+                    "OpImageQueryOrder": 102,
+                    "OpImageQuerySizeLod": 103,
+                    "OpImageQuerySize": 104,
+                    "OpImageQueryLod": 105,
+                    "OpImageQueryLevels": 106,
+                    "OpImageQuerySamples": 107,
+                    "OpConvertFToU": 109,
+                    "OpConvertFToS": 110,
+                    "OpConvertSToF": 111,
+                    "OpConvertUToF": 112,
+                    "OpUConvert": 113,
+                    "OpSConvert": 114,
+                    "OpFConvert": 115,
+                    "OpQuantizeToF16": 116,
+                    "OpConvertPtrToU": 117,
+                    "OpSatConvertSToU": 118,
+                    "OpSatConvertUToS": 119,
+                    "OpConvertUToPtr": 120,
+                    "OpPtrCastToGeneric": 121,
+                    "OpGenericCastToPtr": 122,
+                    "OpGenericCastToPtrExplicit": 123,
+                    "OpBitcast": 124,
+                    "OpSNegate": 126,
+                    "OpFNegate": 127,
+                    "OpIAdd": 128,
+                    "OpFAdd": 129,
+                    "OpISub": 130,
+                    "OpFSub": 131,
+                    "OpIMul": 132,
+                    "OpFMul": 133,
+                    "OpUDiv": 134,
+                    "OpSDiv": 135,
+                    "OpFDiv": 136,
+                    "OpUMod": 137,
+                    "OpSRem": 138,
+                    "OpSMod": 139,
+                    "OpFRem": 140,
+                    "OpFMod": 141,
+                    "OpVectorTimesScalar": 142,
+                    "OpMatrixTimesScalar": 143,
+                    "OpVectorTimesMatrix": 144,
+                    "OpMatrixTimesVector": 145,
+                    "OpMatrixTimesMatrix": 146,
+                    "OpOuterProduct": 147,
+                    "OpDot": 148,
+                    "OpIAddCarry": 149,
+                    "OpISubBorrow": 150,
+                    "OpUMulExtended": 151,
+                    "OpSMulExtended": 152,
+                    "OpAny": 154,
+                    "OpAll": 155,
+                    "OpIsNan": 156,
+                    "OpIsInf": 157,
+                    "OpIsFinite": 158,
+                    "OpIsNormal": 159,
+                    "OpSignBitSet": 160,
+                    "OpLessOrGreater": 161,
+                    "OpOrdered": 162,
+                    "OpUnordered": 163,
+                    "OpLogicalEqual": 164,
+                    "OpLogicalNotEqual": 165,
+                    "OpLogicalOr": 166,
+                    "OpLogicalAnd": 167,
+                    "OpLogicalNot": 168,
+                    "OpSelect": 169,
+                    "OpIEqual": 170,
+                    "OpINotEqual": 171,
+                    "OpUGreaterThan": 172,
+                    "OpSGreaterThan": 173,
+                    "OpUGreaterThanEqual": 174,
+                    "OpSGreaterThanEqual": 175,
+                    "OpULessThan": 176,
+                    "OpSLessThan": 177,
+                    "OpULessThanEqual": 178,
+                    "OpSLessThanEqual": 179,
+                    "OpFOrdEqual": 180,
+                    "OpFUnordEqual": 181,
+                    "OpFOrdNotEqual": 182,
+                    "OpFUnordNotEqual": 183,
+                    "OpFOrdLessThan": 184,
+                    "OpFUnordLessThan": 185,
+                    "OpFOrdGreaterThan": 186,
+                    "OpFUnordGreaterThan": 187,
+                    "OpFOrdLessThanEqual": 188,
+                    "OpFUnordLessThanEqual": 189,
+                    "OpFOrdGreaterThanEqual": 190,
+                    "OpFUnordGreaterThanEqual": 191,
+                    "OpShiftRightLogical": 194,
+                    "OpShiftRightArithmetic": 195,
+                    "OpShiftLeftLogical": 196,
+                    "OpBitwiseOr": 197,
+                    "OpBitwiseXor": 198,
+                    "OpBitwiseAnd": 199,
+                    "OpNot": 200,
+                    "OpBitFieldInsert": 201,
+                    "OpBitFieldSExtract": 202,
+                    "OpBitFieldUExtract": 203,
+                    "OpBitReverse": 204,
+                    "OpBitCount": 205,
+                    "OpDPdx": 207,
+                    "OpDPdy": 208,
+                    "OpFwidth": 209,
+                    "OpDPdxFine": 210,
+                    "OpDPdyFine": 211,
+                    "OpFwidthFine": 212,
+                    "OpDPdxCoarse": 213,
+                    "OpDPdyCoarse": 214,
+                    "OpFwidthCoarse": 215,
+                    "OpEmitVertex": 218,
+                    "OpEndPrimitive": 219,
+                    "OpEmitStreamVertex": 220,
+                    "OpEndStreamPrimitive": 221,
+                    "OpControlBarrier": 224,
+                    "OpMemoryBarrier": 225,
+                    "OpAtomicLoad": 227,
+                    "OpAtomicStore": 228,
+                    "OpAtomicExchange": 229,
+                    "OpAtomicCompareExchange": 230,
+                    "OpAtomicCompareExchangeWeak": 231,
+                    "OpAtomicIIncrement": 232,
+                    "OpAtomicIDecrement": 233,
+                    "OpAtomicIAdd": 234,
+                    "OpAtomicISub": 235,
+                    "OpAtomicSMin": 236,
+                    "OpAtomicUMin": 237,
+                    "OpAtomicSMax": 238,
+                    "OpAtomicUMax": 239,
+                    "OpAtomicAnd": 240,
+                    "OpAtomicOr": 241,
+                    "OpAtomicXor": 242,
+                    "OpPhi": 245,
+                    "OpLoopMerge": 246,
+                    "OpSelectionMerge": 247,
+                    "OpLabel": 248,
+                    "OpBranch": 249,
+                    "OpBranchConditional": 250,
+                    "OpSwitch": 251,
+                    "OpKill": 252,
+                    "OpReturn": 253,
+                    "OpReturnValue": 254,
+                    "OpUnreachable": 255,
+                    "OpLifetimeStart": 256,
+                    "OpLifetimeStop": 257,
+                    "OpGroupAsyncCopy": 259,
+                    "OpGroupWaitEvents": 260,
+                    "OpGroupAll": 261,
+                    "OpGroupAny": 262,
+                    "OpGroupBroadcast": 263,
+                    "OpGroupIAdd": 264,
+                    "OpGroupFAdd": 265,
+                    "OpGroupFMin": 266,
+                    "OpGroupUMin": 267,
+                    "OpGroupSMin": 268,
+                    "OpGroupFMax": 269,
+                    "OpGroupUMax": 270,
+                    "OpGroupSMax": 271,
+                    "OpReadPipe": 274,
+                    "OpWritePipe": 275,
+                    "OpReservedReadPipe": 276,
+                    "OpReservedWritePipe": 277,
+                    "OpReserveReadPipePackets": 278,
+                    "OpReserveWritePipePackets": 279,
+                    "OpCommitReadPipe": 280,
+                    "OpCommitWritePipe": 281,
+                    "OpIsValidReserveId": 282,
+                    "OpGetNumPipePackets": 283,
+                    "OpGetMaxPipePackets": 284,
+                    "OpGroupReserveReadPipePackets": 285,
+                    "OpGroupReserveWritePipePackets": 286,
+                    "OpGroupCommitReadPipe": 287,
+                    "OpGroupCommitWritePipe": 288,
+                    "OpEnqueueMarker": 291,
+                    "OpEnqueueKernel": 292,
+                    "OpGetKernelNDrangeSubGroupCount": 293,
+                    "OpGetKernelNDrangeMaxSubGroupSize": 294,
+                    "OpGetKernelWorkGroupSize": 295,
+                    "OpGetKernelPreferredWorkGroupSizeMultiple": 296,
+                    "OpRetainEvent": 297,
+                    "OpReleaseEvent": 298,
+                    "OpCreateUserEvent": 299,
+                    "OpIsValidEvent": 300,
+                    "OpSetUserEventStatus": 301,
+                    "OpCaptureEventProfilingInfo": 302,
+                    "OpGetDefaultQueue": 303,
+                    "OpBuildNDRange": 304,
+                    "OpImageSparseSampleImplicitLod": 305,
+                    "OpImageSparseSampleExplicitLod": 306,
+                    "OpImageSparseSampleDrefImplicitLod": 307,
+                    "OpImageSparseSampleDrefExplicitLod": 308,
+                    "OpImageSparseSampleProjImplicitLod": 309,
+                    "OpImageSparseSampleProjExplicitLod": 310,
+                    "OpImageSparseSampleProjDrefImplicitLod": 311,
+                    "OpImageSparseSampleProjDrefExplicitLod": 312,
+                    "OpImageSparseFetch": 313,
+                    "OpImageSparseGather": 314,
+                    "OpImageSparseDrefGather": 315,
+                    "OpImageSparseTexelsResident": 316,
+                    "OpNoLine": 317,
+                    "OpAtomicFlagTestAndSet": 318,
+                    "OpAtomicFlagClear": 319,
+                    "OpImageSparseRead": 320,
+                    "OpDecorateId": 332,
+                    "OpSubgroupBallotKHR": 4421,
+                    "OpSubgroupFirstInvocationKHR": 4422,
+                    "OpSubgroupAllKHR": 4428,
+                    "OpSubgroupAnyKHR": 4429,
+                    "OpSubgroupAllEqualKHR": 4430,
+                    "OpSubgroupReadInvocationKHR": 4432,
+                    "OpGroupIAddNonUniformAMD": 5000,
+                    "OpGroupFAddNonUniformAMD": 5001,
+                    "OpGroupFMinNonUniformAMD": 5002,
+                    "OpGroupUMinNonUniformAMD": 5003,
+                    "OpGroupSMinNonUniformAMD": 5004,
+                    "OpGroupFMaxNonUniformAMD": 5005,
+                    "OpGroupUMaxNonUniformAMD": 5006,
+                    "OpGroupSMaxNonUniformAMD": 5007,
+                    "OpFragmentMaskFetchAMD": 5011,
+                    "OpFragmentFetchAMD": 5012,
+                    "OpSubgroupShuffleINTEL": 5571,
+                    "OpSubgroupShuffleDownINTEL": 5572,
+                    "OpSubgroupShuffleUpINTEL": 5573,
+                    "OpSubgroupShuffleXorINTEL": 5574,
+                    "OpSubgroupBlockReadINTEL": 5575,
+                    "OpSubgroupBlockWriteINTEL": 5576,
+                    "OpSubgroupImageBlockReadINTEL": 5577,
+                    "OpSubgroupImageBlockWriteINTEL": 5578,
+                    "OpDecorateStringGOOGLE": 5632,
+                    "OpMemberDecorateStringGOOGLE": 5633
+                }
+            }
+        ]
+    }
+}
+
diff --git a/libs/spirv-headers/spirv/1.0/spirv.lua b/libs/spirv-headers/spirv/1.0/spirv.lua
new file mode 100644
index 00000000000..2bd33ba082b
--- /dev/null
+++ b/libs/spirv-headers/spirv/1.0/spirv.lua
@@ -0,0 +1,949 @@
+-- Copyright (c) 2014-2018 The Khronos Group Inc.
+-- 
+-- Permission is hereby granted, free of charge, to any person obtaining a copy
+-- of this software and/or associated documentation files (the "Materials"),
+-- to deal in the Materials without restriction, including without limitation
+-- the rights to use, copy, modify, merge, publish, distribute, sublicense,
+-- and/or sell copies of the Materials, and to permit persons to whom the
+-- Materials are furnished to do so, subject to the following conditions:
+-- 
+-- The above copyright notice and this permission notice shall be included in
+-- all copies or substantial portions of the Materials.
+-- 
+-- MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS KHRONOS
+-- STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS SPECIFICATIONS AND
+-- HEADER INFORMATION ARE LOCATED AT https://www.khronos.org/registry/ 
+-- 
+-- THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+-- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+-- THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+-- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+-- FROM,OUT OF OR IN CONNECTION WITH THE MATERIALS OR THE USE OR OTHER DEALINGS
+-- IN THE MATERIALS.
+
+-- This header is automatically generated by the same tool that creates
+-- the Binary Section of the SPIR-V specification.
+
+-- Enumeration tokens for SPIR-V, in various styles:
+--   C, C++, C++11, JSON, Lua, Python
+-- 
+-- - C will have tokens with a "Spv" prefix, e.g.: SpvSourceLanguageGLSL
+-- - C++ will have tokens in the "spv" name space, e.g.: spv::SourceLanguageGLSL
+-- - C++11 will use enum classes in the spv namespace, e.g.: spv::SourceLanguage::GLSL
+-- - Lua will use tables, e.g.: spv.SourceLanguage.GLSL
+-- - Python will use dictionaries, e.g.: spv['SourceLanguage']['GLSL']
+-- 
+-- Some tokens act like mask values, which can be OR'd together,
+-- while others are mutually exclusive.  The mask-like ones have
+-- "Mask" in their name, and a parallel enum that has the shift
+-- amount (1 << x) for each corresponding enumerant.
+
+spv = {
+    MagicNumber = 0x07230203,
+    Version = 0x00010000,
+    Revision = 12,
+    OpCodeMask = 0xffff,
+    WordCountShift = 16,
+
+    SourceLanguage = {
+        Unknown = 0,
+        ESSL = 1,
+        GLSL = 2,
+        OpenCL_C = 3,
+        OpenCL_CPP = 4,
+        HLSL = 5,
+    },
+
+    ExecutionModel = {
+        Vertex = 0,
+        TessellationControl = 1,
+        TessellationEvaluation = 2,
+        Geometry = 3,
+        Fragment = 4,
+        GLCompute = 5,
+        Kernel = 6,
+    },
+
+    AddressingModel = {
+        Logical = 0,
+        Physical32 = 1,
+        Physical64 = 2,
+    },
+
+    MemoryModel = {
+        Simple = 0,
+        GLSL450 = 1,
+        OpenCL = 2,
+    },
+
+    ExecutionMode = {
+        Invocations = 0,
+        SpacingEqual = 1,
+        SpacingFractionalEven = 2,
+        SpacingFractionalOdd = 3,
+        VertexOrderCw = 4,
+        VertexOrderCcw = 5,
+        PixelCenterInteger = 6,
+        OriginUpperLeft = 7,
+        OriginLowerLeft = 8,
+        EarlyFragmentTests = 9,
+        PointMode = 10,
+        Xfb = 11,
+        DepthReplacing = 12,
+        DepthGreater = 14,
+        DepthLess = 15,
+        DepthUnchanged = 16,
+        LocalSize = 17,
+        LocalSizeHint = 18,
+        InputPoints = 19,
+        InputLines = 20,
+        InputLinesAdjacency = 21,
+        Triangles = 22,
+        InputTrianglesAdjacency = 23,
+        Quads = 24,
+        Isolines = 25,
+        OutputVertices = 26,
+        OutputPoints = 27,
+        OutputLineStrip = 28,
+        OutputTriangleStrip = 29,
+        VecTypeHint = 30,
+        ContractionOff = 31,
+        PostDepthCoverage = 4446,
+        StencilRefReplacingEXT = 5027,
+    },
+
+    StorageClass = {
+        UniformConstant = 0,
+        Input = 1,
+        Uniform = 2,
+        Output = 3,
+        Workgroup = 4,
+        CrossWorkgroup = 5,
+        Private = 6,
+        Function = 7,
+        Generic = 8,
+        PushConstant = 9,
+        AtomicCounter = 10,
+        Image = 11,
+        StorageBuffer = 12,
+    },
+
+    Dim = {
+        Dim1D = 0,
+        Dim2D = 1,
+        Dim3D = 2,
+        Cube = 3,
+        Rect = 4,
+        Buffer = 5,
+        SubpassData = 6,
+    },
+
+    SamplerAddressingMode = {
+        None = 0,
+        ClampToEdge = 1,
+        Clamp = 2,
+        Repeat = 3,
+        RepeatMirrored = 4,
+    },
+
+    SamplerFilterMode = {
+        Nearest = 0,
+        Linear = 1,
+    },
+
+    ImageFormat = {
+        Unknown = 0,
+        Rgba32f = 1,
+        Rgba16f = 2,
+        R32f = 3,
+        Rgba8 = 4,
+        Rgba8Snorm = 5,
+        Rg32f = 6,
+        Rg16f = 7,
+        R11fG11fB10f = 8,
+        R16f = 9,
+        Rgba16 = 10,
+        Rgb10A2 = 11,
+        Rg16 = 12,
+        Rg8 = 13,
+        R16 = 14,
+        R8 = 15,
+        Rgba16Snorm = 16,
+        Rg16Snorm = 17,
+        Rg8Snorm = 18,
+        R16Snorm = 19,
+        R8Snorm = 20,
+        Rgba32i = 21,
+        Rgba16i = 22,
+        Rgba8i = 23,
+        R32i = 24,
+        Rg32i = 25,
+        Rg16i = 26,
+        Rg8i = 27,
+        R16i = 28,
+        R8i = 29,
+        Rgba32ui = 30,
+        Rgba16ui = 31,
+        Rgba8ui = 32,
+        R32ui = 33,
+        Rgb10a2ui = 34,
+        Rg32ui = 35,
+        Rg16ui = 36,
+        Rg8ui = 37,
+        R16ui = 38,
+        R8ui = 39,
+    },
+
+    ImageChannelOrder = {
+        R = 0,
+        A = 1,
+        RG = 2,
+        RA = 3,
+        RGB = 4,
+        RGBA = 5,
+        BGRA = 6,
+        ARGB = 7,
+        Intensity = 8,
+        Luminance = 9,
+        Rx = 10,
+        RGx = 11,
+        RGBx = 12,
+        Depth = 13,
+        DepthStencil = 14,
+        sRGB = 15,
+        sRGBx = 16,
+        sRGBA = 17,
+        sBGRA = 18,
+        ABGR = 19,
+    },
+
+    ImageChannelDataType = {
+        SnormInt8 = 0,
+        SnormInt16 = 1,
+        UnormInt8 = 2,
+        UnormInt16 = 3,
+        UnormShort565 = 4,
+        UnormShort555 = 5,
+        UnormInt101010 = 6,
+        SignedInt8 = 7,
+        SignedInt16 = 8,
+        SignedInt32 = 9,
+        UnsignedInt8 = 10,
+        UnsignedInt16 = 11,
+        UnsignedInt32 = 12,
+        HalfFloat = 13,
+        Float = 14,
+        UnormInt24 = 15,
+        UnormInt101010_2 = 16,
+    },
+
+    ImageOperandsShift = {
+        Bias = 0,
+        Lod = 1,
+        Grad = 2,
+        ConstOffset = 3,
+        Offset = 4,
+        ConstOffsets = 5,
+        Sample = 6,
+        MinLod = 7,
+    },
+
+    ImageOperandsMask = {
+        MaskNone = 0,
+        Bias = 0x00000001,
+        Lod = 0x00000002,
+        Grad = 0x00000004,
+        ConstOffset = 0x00000008,
+        Offset = 0x00000010,
+        ConstOffsets = 0x00000020,
+        Sample = 0x00000040,
+        MinLod = 0x00000080,
+    },
+
+    FPFastMathModeShift = {
+        NotNaN = 0,
+        NotInf = 1,
+        NSZ = 2,
+        AllowRecip = 3,
+        Fast = 4,
+    },
+
+    FPFastMathModeMask = {
+        MaskNone = 0,
+        NotNaN = 0x00000001,
+        NotInf = 0x00000002,
+        NSZ = 0x00000004,
+        AllowRecip = 0x00000008,
+        Fast = 0x00000010,
+    },
+
+    FPRoundingMode = {
+        RTE = 0,
+        RTZ = 1,
+        RTP = 2,
+        RTN = 3,
+    },
+
+    LinkageType = {
+        Export = 0,
+        Import = 1,
+    },
+
+    AccessQualifier = {
+        ReadOnly = 0,
+        WriteOnly = 1,
+        ReadWrite = 2,
+    },
+
+    FunctionParameterAttribute = {
+        Zext = 0,
+        Sext = 1,
+        ByVal = 2,
+        Sret = 3,
+        NoAlias = 4,
+        NoCapture = 5,
+        NoWrite = 6,
+        NoReadWrite = 7,
+    },
+
+    Decoration = {
+        RelaxedPrecision = 0,
+        SpecId = 1,
+        Block = 2,
+        BufferBlock = 3,
+        RowMajor = 4,
+        ColMajor = 5,
+        ArrayStride = 6,
+        MatrixStride = 7,
+        GLSLShared = 8,
+        GLSLPacked = 9,
+        CPacked = 10,
+        BuiltIn = 11,
+        NoPerspective = 13,
+        Flat = 14,
+        Patch = 15,
+        Centroid = 16,
+        Sample = 17,
+        Invariant = 18,
+        Restrict = 19,
+        Aliased = 20,
+        Volatile = 21,
+        Constant = 22,
+        Coherent = 23,
+        NonWritable = 24,
+        NonReadable = 25,
+        Uniform = 26,
+        SaturatedConversion = 28,
+        Stream = 29,
+        Location = 30,
+        Component = 31,
+        Index = 32,
+        Binding = 33,
+        DescriptorSet = 34,
+        Offset = 35,
+        XfbBuffer = 36,
+        XfbStride = 37,
+        FuncParamAttr = 38,
+        FPRoundingMode = 39,
+        FPFastMathMode = 40,
+        LinkageAttributes = 41,
+        NoContraction = 42,
+        InputAttachmentIndex = 43,
+        Alignment = 44,
+        ExplicitInterpAMD = 4999,
+        OverrideCoverageNV = 5248,
+        PassthroughNV = 5250,
+        ViewportRelativeNV = 5252,
+        SecondaryViewportRelativeNV = 5256,
+        HlslCounterBufferGOOGLE = 5634,
+        HlslSemanticGOOGLE = 5635,
+    },
+
+    BuiltIn = {
+        Position = 0,
+        PointSize = 1,
+        ClipDistance = 3,
+        CullDistance = 4,
+        VertexId = 5,
+        InstanceId = 6,
+        PrimitiveId = 7,
+        InvocationId = 8,
+        Layer = 9,
+        ViewportIndex = 10,
+        TessLevelOuter = 11,
+        TessLevelInner = 12,
+        TessCoord = 13,
+        PatchVertices = 14,
+        FragCoord = 15,
+        PointCoord = 16,
+        FrontFacing = 17,
+        SampleId = 18,
+        SamplePosition = 19,
+        SampleMask = 20,
+        FragDepth = 22,
+        HelperInvocation = 23,
+        NumWorkgroups = 24,
+        WorkgroupSize = 25,
+        WorkgroupId = 26,
+        LocalInvocationId = 27,
+        GlobalInvocationId = 28,
+        LocalInvocationIndex = 29,
+        WorkDim = 30,
+        GlobalSize = 31,
+        EnqueuedWorkgroupSize = 32,
+        GlobalOffset = 33,
+        GlobalLinearId = 34,
+        SubgroupSize = 36,
+        SubgroupMaxSize = 37,
+        NumSubgroups = 38,
+        NumEnqueuedSubgroups = 39,
+        SubgroupId = 40,
+        SubgroupLocalInvocationId = 41,
+        VertexIndex = 42,
+        InstanceIndex = 43,
+        SubgroupEqMaskKHR = 4416,
+        SubgroupGeMaskKHR = 4417,
+        SubgroupGtMaskKHR = 4418,
+        SubgroupLeMaskKHR = 4419,
+        SubgroupLtMaskKHR = 4420,
+        BaseVertex = 4424,
+        BaseInstance = 4425,
+        DrawIndex = 4426,
+        DeviceIndex = 4438,
+        ViewIndex = 4440,
+        BaryCoordNoPerspAMD = 4992,
+        BaryCoordNoPerspCentroidAMD = 4993,
+        BaryCoordNoPerspSampleAMD = 4994,
+        BaryCoordSmoothAMD = 4995,
+        BaryCoordSmoothCentroidAMD = 4996,
+        BaryCoordSmoothSampleAMD = 4997,
+        BaryCoordPullModelAMD = 4998,
+        FragStencilRefEXT = 5014,
+        ViewportMaskNV = 5253,
+        SecondaryPositionNV = 5257,
+        SecondaryViewportMaskNV = 5258,
+        PositionPerViewNV = 5261,
+        ViewportMaskPerViewNV = 5262,
+    },
+
+    SelectionControlShift = {
+        Flatten = 0,
+        DontFlatten = 1,
+    },
+
+    SelectionControlMask = {
+        MaskNone = 0,
+        Flatten = 0x00000001,
+        DontFlatten = 0x00000002,
+    },
+
+    LoopControlShift = {
+        Unroll = 0,
+        DontUnroll = 1,
+    },
+
+    LoopControlMask = {
+        MaskNone = 0,
+        Unroll = 0x00000001,
+        DontUnroll = 0x00000002,
+    },
+
+    FunctionControlShift = {
+        Inline = 0,
+        DontInline = 1,
+        Pure = 2,
+        Const = 3,
+    },
+
+    FunctionControlMask = {
+        MaskNone = 0,
+        Inline = 0x00000001,
+        DontInline = 0x00000002,
+        Pure = 0x00000004,
+        Const = 0x00000008,
+    },
+
+    MemorySemanticsShift = {
+        Acquire = 1,
+        Release = 2,
+        AcquireRelease = 3,
+        SequentiallyConsistent = 4,
+        UniformMemory = 6,
+        SubgroupMemory = 7,
+        WorkgroupMemory = 8,
+        CrossWorkgroupMemory = 9,
+        AtomicCounterMemory = 10,
+        ImageMemory = 11,
+    },
+
+    MemorySemanticsMask = {
+        MaskNone = 0,
+        Acquire = 0x00000002,
+        Release = 0x00000004,
+        AcquireRelease = 0x00000008,
+        SequentiallyConsistent = 0x00000010,
+        UniformMemory = 0x00000040,
+        SubgroupMemory = 0x00000080,
+        WorkgroupMemory = 0x00000100,
+        CrossWorkgroupMemory = 0x00000200,
+        AtomicCounterMemory = 0x00000400,
+        ImageMemory = 0x00000800,
+    },
+
+    MemoryAccessShift = {
+        Volatile = 0,
+        Aligned = 1,
+        Nontemporal = 2,
+    },
+
+    MemoryAccessMask = {
+        MaskNone = 0,
+        Volatile = 0x00000001,
+        Aligned = 0x00000002,
+        Nontemporal = 0x00000004,
+    },
+
+    Scope = {
+        CrossDevice = 0,
+        Device = 1,
+        Workgroup = 2,
+        Subgroup = 3,
+        Invocation = 4,
+    },
+
+    GroupOperation = {
+        Reduce = 0,
+        InclusiveScan = 1,
+        ExclusiveScan = 2,
+    },
+
+    KernelEnqueueFlags = {
+        NoWait = 0,
+        WaitKernel = 1,
+        WaitWorkGroup = 2,
+    },
+
+    KernelProfilingInfoShift = {
+        CmdExecTime = 0,
+    },
+
+    KernelProfilingInfoMask = {
+        MaskNone = 0,
+        CmdExecTime = 0x00000001,
+    },
+
+    Capability = {
+        Matrix = 0,
+        Shader = 1,
+        Geometry = 2,
+        Tessellation = 3,
+        Addresses = 4,
+        Linkage = 5,
+        Kernel = 6,
+        Vector16 = 7,
+        Float16Buffer = 8,
+        Float16 = 9,
+        Float64 = 10,
+        Int64 = 11,
+        Int64Atomics = 12,
+        ImageBasic = 13,
+        ImageReadWrite = 14,
+        ImageMipmap = 15,
+        Pipes = 17,
+        Groups = 18,
+        DeviceEnqueue = 19,
+        LiteralSampler = 20,
+        AtomicStorage = 21,
+        Int16 = 22,
+        TessellationPointSize = 23,
+        GeometryPointSize = 24,
+        ImageGatherExtended = 25,
+        StorageImageMultisample = 27,
+        UniformBufferArrayDynamicIndexing = 28,
+        SampledImageArrayDynamicIndexing = 29,
+        StorageBufferArrayDynamicIndexing = 30,
+        StorageImageArrayDynamicIndexing = 31,
+        ClipDistance = 32,
+        CullDistance = 33,
+        ImageCubeArray = 34,
+        SampleRateShading = 35,
+        ImageRect = 36,
+        SampledRect = 37,
+        GenericPointer = 38,
+        Int8 = 39,
+        InputAttachment = 40,
+        SparseResidency = 41,
+        MinLod = 42,
+        Sampled1D = 43,
+        Image1D = 44,
+        SampledCubeArray = 45,
+        SampledBuffer = 46,
+        ImageBuffer = 47,
+        ImageMSArray = 48,
+        StorageImageExtendedFormats = 49,
+        ImageQuery = 50,
+        DerivativeControl = 51,
+        InterpolationFunction = 52,
+        TransformFeedback = 53,
+        GeometryStreams = 54,
+        StorageImageReadWithoutFormat = 55,
+        StorageImageWriteWithoutFormat = 56,
+        MultiViewport = 57,
+        SubgroupBallotKHR = 4423,
+        DrawParameters = 4427,
+        SubgroupVoteKHR = 4431,
+        StorageBuffer16BitAccess = 4433,
+        StorageUniformBufferBlock16 = 4433,
+        StorageUniform16 = 4434,
+        UniformAndStorageBuffer16BitAccess = 4434,
+        StoragePushConstant16 = 4435,
+        StorageInputOutput16 = 4436,
+        DeviceGroup = 4437,
+        MultiView = 4439,
+        VariablePointersStorageBuffer = 4441,
+        VariablePointers = 4442,
+        AtomicStorageOps = 4445,
+        SampleMaskPostDepthCoverage = 4447,
+        ImageGatherBiasLodAMD = 5009,
+        FragmentMaskAMD = 5010,
+        StencilExportEXT = 5013,
+        ImageReadWriteLodAMD = 5015,
+        SampleMaskOverrideCoverageNV = 5249,
+        GeometryShaderPassthroughNV = 5251,
+        ShaderViewportIndexLayerEXT = 5254,
+        ShaderViewportIndexLayerNV = 5254,
+        ShaderViewportMaskNV = 5255,
+        ShaderStereoViewNV = 5259,
+        PerViewAttributesNV = 5260,
+        SubgroupShuffleINTEL = 5568,
+        SubgroupBufferBlockIOINTEL = 5569,
+        SubgroupImageBlockIOINTEL = 5570,
+    },
+
+    Op = {
+        OpNop = 0,
+        OpUndef = 1,
+        OpSourceContinued = 2,
+        OpSource = 3,
+        OpSourceExtension = 4,
+        OpName = 5,
+        OpMemberName = 6,
+        OpString = 7,
+        OpLine = 8,
+        OpExtension = 10,
+        OpExtInstImport = 11,
+        OpExtInst = 12,
+        OpMemoryModel = 14,
+        OpEntryPoint = 15,
+        OpExecutionMode = 16,
+        OpCapability = 17,
+        OpTypeVoid = 19,
+        OpTypeBool = 20,
+        OpTypeInt = 21,
+        OpTypeFloat = 22,
+        OpTypeVector = 23,
+        OpTypeMatrix = 24,
+        OpTypeImage = 25,
+        OpTypeSampler = 26,
+        OpTypeSampledImage = 27,
+        OpTypeArray = 28,
+        OpTypeRuntimeArray = 29,
+        OpTypeStruct = 30,
+        OpTypeOpaque = 31,
+        OpTypePointer = 32,
+        OpTypeFunction = 33,
+        OpTypeEvent = 34,
+        OpTypeDeviceEvent = 35,
+        OpTypeReserveId = 36,
+        OpTypeQueue = 37,
+        OpTypePipe = 38,
+        OpTypeForwardPointer = 39,
+        OpConstantTrue = 41,
+        OpConstantFalse = 42,
+        OpConstant = 43,
+        OpConstantComposite = 44,
+        OpConstantSampler = 45,
+        OpConstantNull = 46,
+        OpSpecConstantTrue = 48,
+        OpSpecConstantFalse = 49,
+        OpSpecConstant = 50,
+        OpSpecConstantComposite = 51,
+        OpSpecConstantOp = 52,
+        OpFunction = 54,
+        OpFunctionParameter = 55,
+        OpFunctionEnd = 56,
+        OpFunctionCall = 57,
+        OpVariable = 59,
+        OpImageTexelPointer = 60,
+        OpLoad = 61,
+        OpStore = 62,
+        OpCopyMemory = 63,
+        OpCopyMemorySized = 64,
+        OpAccessChain = 65,
+        OpInBoundsAccessChain = 66,
+        OpPtrAccessChain = 67,
+        OpArrayLength = 68,
+        OpGenericPtrMemSemantics = 69,
+        OpInBoundsPtrAccessChain = 70,
+        OpDecorate = 71,
+        OpMemberDecorate = 72,
+        OpDecorationGroup = 73,
+        OpGroupDecorate = 74,
+        OpGroupMemberDecorate = 75,
+        OpVectorExtractDynamic = 77,
+        OpVectorInsertDynamic = 78,
+        OpVectorShuffle = 79,
+        OpCompositeConstruct = 80,
+        OpCompositeExtract = 81,
+        OpCompositeInsert = 82,
+        OpCopyObject = 83,
+        OpTranspose = 84,
+        OpSampledImage = 86,
+        OpImageSampleImplicitLod = 87,
+        OpImageSampleExplicitLod = 88,
+        OpImageSampleDrefImplicitLod = 89,
+        OpImageSampleDrefExplicitLod = 90,
+        OpImageSampleProjImplicitLod = 91,
+        OpImageSampleProjExplicitLod = 92,
+        OpImageSampleProjDrefImplicitLod = 93,
+        OpImageSampleProjDrefExplicitLod = 94,
+        OpImageFetch = 95,
+        OpImageGather = 96,
+        OpImageDrefGather = 97,
+        OpImageRead = 98,
+        OpImageWrite = 99,
+        OpImage = 100,
+        OpImageQueryFormat = 101,
+        OpImageQueryOrder = 102,
+        OpImageQuerySizeLod = 103,
+        OpImageQuerySize = 104,
+        OpImageQueryLod = 105,
+        OpImageQueryLevels = 106,
+        OpImageQuerySamples = 107,
+        OpConvertFToU = 109,
+        OpConvertFToS = 110,
+        OpConvertSToF = 111,
+        OpConvertUToF = 112,
+        OpUConvert = 113,
+        OpSConvert = 114,
+        OpFConvert = 115,
+        OpQuantizeToF16 = 116,
+        OpConvertPtrToU = 117,
+        OpSatConvertSToU = 118,
+        OpSatConvertUToS = 119,
+        OpConvertUToPtr = 120,
+        OpPtrCastToGeneric = 121,
+        OpGenericCastToPtr = 122,
+        OpGenericCastToPtrExplicit = 123,
+        OpBitcast = 124,
+        OpSNegate = 126,
+        OpFNegate = 127,
+        OpIAdd = 128,
+        OpFAdd = 129,
+        OpISub = 130,
+        OpFSub = 131,
+        OpIMul = 132,
+        OpFMul = 133,
+        OpUDiv = 134,
+        OpSDiv = 135,
+        OpFDiv = 136,
+        OpUMod = 137,
+        OpSRem = 138,
+        OpSMod = 139,
+        OpFRem = 140,
+        OpFMod = 141,
+        OpVectorTimesScalar = 142,
+        OpMatrixTimesScalar = 143,
+        OpVectorTimesMatrix = 144,
+        OpMatrixTimesVector = 145,
+        OpMatrixTimesMatrix = 146,
+        OpOuterProduct = 147,
+        OpDot = 148,
+        OpIAddCarry = 149,
+        OpISubBorrow = 150,
+        OpUMulExtended = 151,
+        OpSMulExtended = 152,
+        OpAny = 154,
+        OpAll = 155,
+        OpIsNan = 156,
+        OpIsInf = 157,
+        OpIsFinite = 158,
+        OpIsNormal = 159,
+        OpSignBitSet = 160,
+        OpLessOrGreater = 161,
+        OpOrdered = 162,
+        OpUnordered = 163,
+        OpLogicalEqual = 164,
+        OpLogicalNotEqual = 165,
+        OpLogicalOr = 166,
+        OpLogicalAnd = 167,
+        OpLogicalNot = 168,
+        OpSelect = 169,
+        OpIEqual = 170,
+        OpINotEqual = 171,
+        OpUGreaterThan = 172,
+        OpSGreaterThan = 173,
+        OpUGreaterThanEqual = 174,
+        OpSGreaterThanEqual = 175,
+        OpULessThan = 176,
+        OpSLessThan = 177,
+        OpULessThanEqual = 178,
+        OpSLessThanEqual = 179,
+        OpFOrdEqual = 180,
+        OpFUnordEqual = 181,
+        OpFOrdNotEqual = 182,
+        OpFUnordNotEqual = 183,
+        OpFOrdLessThan = 184,
+        OpFUnordLessThan = 185,
+        OpFOrdGreaterThan = 186,
+        OpFUnordGreaterThan = 187,
+        OpFOrdLessThanEqual = 188,
+        OpFUnordLessThanEqual = 189,
+        OpFOrdGreaterThanEqual = 190,
+        OpFUnordGreaterThanEqual = 191,
+        OpShiftRightLogical = 194,
+        OpShiftRightArithmetic = 195,
+        OpShiftLeftLogical = 196,
+        OpBitwiseOr = 197,
+        OpBitwiseXor = 198,
+        OpBitwiseAnd = 199,
+        OpNot = 200,
+        OpBitFieldInsert = 201,
+        OpBitFieldSExtract = 202,
+        OpBitFieldUExtract = 203,
+        OpBitReverse = 204,
+        OpBitCount = 205,
+        OpDPdx = 207,
+        OpDPdy = 208,
+        OpFwidth = 209,
+        OpDPdxFine = 210,
+        OpDPdyFine = 211,
+        OpFwidthFine = 212,
+        OpDPdxCoarse = 213,
+        OpDPdyCoarse = 214,
+        OpFwidthCoarse = 215,
+        OpEmitVertex = 218,
+        OpEndPrimitive = 219,
+        OpEmitStreamVertex = 220,
+        OpEndStreamPrimitive = 221,
+        OpControlBarrier = 224,
+        OpMemoryBarrier = 225,
+        OpAtomicLoad = 227,
+        OpAtomicStore = 228,
+        OpAtomicExchange = 229,
+        OpAtomicCompareExchange = 230,
+        OpAtomicCompareExchangeWeak = 231,
+        OpAtomicIIncrement = 232,
+        OpAtomicIDecrement = 233,
+        OpAtomicIAdd = 234,
+        OpAtomicISub = 235,
+        OpAtomicSMin = 236,
+        OpAtomicUMin = 237,
+        OpAtomicSMax = 238,
+        OpAtomicUMax = 239,
+        OpAtomicAnd = 240,
+        OpAtomicOr = 241,
+        OpAtomicXor = 242,
+        OpPhi = 245,
+        OpLoopMerge = 246,
+        OpSelectionMerge = 247,
+        OpLabel = 248,
+        OpBranch = 249,
+        OpBranchConditional = 250,
+        OpSwitch = 251,
+        OpKill = 252,
+        OpReturn = 253,
+        OpReturnValue = 254,
+        OpUnreachable = 255,
+        OpLifetimeStart = 256,
+        OpLifetimeStop = 257,
+        OpGroupAsyncCopy = 259,
+        OpGroupWaitEvents = 260,
+        OpGroupAll = 261,
+        OpGroupAny = 262,
+        OpGroupBroadcast = 263,
+        OpGroupIAdd = 264,
+        OpGroupFAdd = 265,
+        OpGroupFMin = 266,
+        OpGroupUMin = 267,
+        OpGroupSMin = 268,
+        OpGroupFMax = 269,
+        OpGroupUMax = 270,
+        OpGroupSMax = 271,
+        OpReadPipe = 274,
+        OpWritePipe = 275,
+        OpReservedReadPipe = 276,
+        OpReservedWritePipe = 277,
+        OpReserveReadPipePackets = 278,
+        OpReserveWritePipePackets = 279,
+        OpCommitReadPipe = 280,
+        OpCommitWritePipe = 281,
+        OpIsValidReserveId = 282,
+        OpGetNumPipePackets = 283,
+        OpGetMaxPipePackets = 284,
+        OpGroupReserveReadPipePackets = 285,
+        OpGroupReserveWritePipePackets = 286,
+        OpGroupCommitReadPipe = 287,
+        OpGroupCommitWritePipe = 288,
+        OpEnqueueMarker = 291,
+        OpEnqueueKernel = 292,
+        OpGetKernelNDrangeSubGroupCount = 293,
+        OpGetKernelNDrangeMaxSubGroupSize = 294,
+        OpGetKernelWorkGroupSize = 295,
+        OpGetKernelPreferredWorkGroupSizeMultiple = 296,
+        OpRetainEvent = 297,
+        OpReleaseEvent = 298,
+        OpCreateUserEvent = 299,
+        OpIsValidEvent = 300,
+        OpSetUserEventStatus = 301,
+        OpCaptureEventProfilingInfo = 302,
+        OpGetDefaultQueue = 303,
+        OpBuildNDRange = 304,
+        OpImageSparseSampleImplicitLod = 305,
+        OpImageSparseSampleExplicitLod = 306,
+        OpImageSparseSampleDrefImplicitLod = 307,
+        OpImageSparseSampleDrefExplicitLod = 308,
+        OpImageSparseSampleProjImplicitLod = 309,
+        OpImageSparseSampleProjExplicitLod = 310,
+        OpImageSparseSampleProjDrefImplicitLod = 311,
+        OpImageSparseSampleProjDrefExplicitLod = 312,
+        OpImageSparseFetch = 313,
+        OpImageSparseGather = 314,
+        OpImageSparseDrefGather = 315,
+        OpImageSparseTexelsResident = 316,
+        OpNoLine = 317,
+        OpAtomicFlagTestAndSet = 318,
+        OpAtomicFlagClear = 319,
+        OpImageSparseRead = 320,
+        OpDecorateId = 332,
+        OpSubgroupBallotKHR = 4421,
+        OpSubgroupFirstInvocationKHR = 4422,
+        OpSubgroupAllKHR = 4428,
+        OpSubgroupAnyKHR = 4429,
+        OpSubgroupAllEqualKHR = 4430,
+        OpSubgroupReadInvocationKHR = 4432,
+        OpGroupIAddNonUniformAMD = 5000,
+        OpGroupFAddNonUniformAMD = 5001,
+        OpGroupFMinNonUniformAMD = 5002,
+        OpGroupUMinNonUniformAMD = 5003,
+        OpGroupSMinNonUniformAMD = 5004,
+        OpGroupFMaxNonUniformAMD = 5005,
+        OpGroupUMaxNonUniformAMD = 5006,
+        OpGroupSMaxNonUniformAMD = 5007,
+        OpFragmentMaskFetchAMD = 5011,
+        OpFragmentFetchAMD = 5012,
+        OpSubgroupShuffleINTEL = 5571,
+        OpSubgroupShuffleDownINTEL = 5572,
+        OpSubgroupShuffleUpINTEL = 5573,
+        OpSubgroupShuffleXorINTEL = 5574,
+        OpSubgroupBlockReadINTEL = 5575,
+        OpSubgroupBlockWriteINTEL = 5576,
+        OpSubgroupImageBlockReadINTEL = 5577,
+        OpSubgroupImageBlockWriteINTEL = 5578,
+        OpDecorateStringGOOGLE = 5632,
+        OpMemberDecorateStringGOOGLE = 5633,
+    },
+
+}
+
diff --git a/libs/spirv-headers/spirv/1.0/spirv.py b/libs/spirv-headers/spirv/1.0/spirv.py
new file mode 100644
index 00000000000..8a200e7655f
--- /dev/null
+++ b/libs/spirv-headers/spirv/1.0/spirv.py
@@ -0,0 +1,949 @@
+# Copyright (c) 2014-2018 The Khronos Group Inc.
+# 
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and/or associated documentation files (the "Materials"),
+# to deal in the Materials without restriction, including without limitation
+# the rights to use, copy, modify, merge, publish, distribute, sublicense,
+# and/or sell copies of the Materials, and to permit persons to whom the
+# Materials are furnished to do so, subject to the following conditions:
+# 
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Materials.
+# 
+# MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS KHRONOS
+# STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS SPECIFICATIONS AND
+# HEADER INFORMATION ARE LOCATED AT https://www.khronos.org/registry/ 
+# 
+# THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+# FROM,OUT OF OR IN CONNECTION WITH THE MATERIALS OR THE USE OR OTHER DEALINGS
+# IN THE MATERIALS.
+
+# This header is automatically generated by the same tool that creates
+# the Binary Section of the SPIR-V specification.
+
+# Enumeration tokens for SPIR-V, in various styles:
+#   C, C++, C++11, JSON, Lua, Python
+# 
+# - C will have tokens with a "Spv" prefix, e.g.: SpvSourceLanguageGLSL
+# - C++ will have tokens in the "spv" name space, e.g.: spv::SourceLanguageGLSL
+# - C++11 will use enum classes in the spv namespace, e.g.: spv::SourceLanguage::GLSL
+# - Lua will use tables, e.g.: spv.SourceLanguage.GLSL
+# - Python will use dictionaries, e.g.: spv['SourceLanguage']['GLSL']
+# 
+# Some tokens act like mask values, which can be OR'd together,
+# while others are mutually exclusive.  The mask-like ones have
+# "Mask" in their name, and a parallel enum that has the shift
+# amount (1 << x) for each corresponding enumerant.
+
+spv = {
+    'MagicNumber' : 0x07230203,
+    'Version' : 0x00010000,
+    'Revision' : 12,
+    'OpCodeMask' : 0xffff,
+    'WordCountShift' : 16,
+
+    'SourceLanguage' : {
+        'Unknown' : 0,
+        'ESSL' : 1,
+        'GLSL' : 2,
+        'OpenCL_C' : 3,
+        'OpenCL_CPP' : 4,
+        'HLSL' : 5,
+    },
+
+    'ExecutionModel' : {
+        'Vertex' : 0,
+        'TessellationControl' : 1,
+        'TessellationEvaluation' : 2,
+        'Geometry' : 3,
+        'Fragment' : 4,
+        'GLCompute' : 5,
+        'Kernel' : 6,
+    },
+
+    'AddressingModel' : {
+        'Logical' : 0,
+        'Physical32' : 1,
+        'Physical64' : 2,
+    },
+
+    'MemoryModel' : {
+        'Simple' : 0,
+        'GLSL450' : 1,
+        'OpenCL' : 2,
+    },
+
+    'ExecutionMode' : {
+        'Invocations' : 0,
+        'SpacingEqual' : 1,
+        'SpacingFractionalEven' : 2,
+        'SpacingFractionalOdd' : 3,
+        'VertexOrderCw' : 4,
+        'VertexOrderCcw' : 5,
+        'PixelCenterInteger' : 6,
+        'OriginUpperLeft' : 7,
+        'OriginLowerLeft' : 8,
+        'EarlyFragmentTests' : 9,
+        'PointMode' : 10,
+        'Xfb' : 11,
+        'DepthReplacing' : 12,
+        'DepthGreater' : 14,
+        'DepthLess' : 15,
+        'DepthUnchanged' : 16,
+        'LocalSize' : 17,
+        'LocalSizeHint' : 18,
+        'InputPoints' : 19,
+        'InputLines' : 20,
+        'InputLinesAdjacency' : 21,
+        'Triangles' : 22,
+        'InputTrianglesAdjacency' : 23,
+        'Quads' : 24,
+        'Isolines' : 25,
+        'OutputVertices' : 26,
+        'OutputPoints' : 27,
+        'OutputLineStrip' : 28,
+        'OutputTriangleStrip' : 29,
+        'VecTypeHint' : 30,
+        'ContractionOff' : 31,
+        'PostDepthCoverage' : 4446,
+        'StencilRefReplacingEXT' : 5027,
+    },
+
+    'StorageClass' : {
+        'UniformConstant' : 0,
+        'Input' : 1,
+        'Uniform' : 2,
+        'Output' : 3,
+        'Workgroup' : 4,
+        'CrossWorkgroup' : 5,
+        'Private' : 6,
+        'Function' : 7,
+        'Generic' : 8,
+        'PushConstant' : 9,
+        'AtomicCounter' : 10,
+        'Image' : 11,
+        'StorageBuffer' : 12,
+    },
+
+    'Dim' : {
+        'Dim1D' : 0,
+        'Dim2D' : 1,
+        'Dim3D' : 2,
+        'Cube' : 3,
+        'Rect' : 4,
+        'Buffer' : 5,
+        'SubpassData' : 6,
+    },
+
+    'SamplerAddressingMode' : {
+        'None' : 0,
+        'ClampToEdge' : 1,
+        'Clamp' : 2,
+        'Repeat' : 3,
+        'RepeatMirrored' : 4,
+    },
+
+    'SamplerFilterMode' : {
+        'Nearest' : 0,
+        'Linear' : 1,
+    },
+
+    'ImageFormat' : {
+        'Unknown' : 0,
+        'Rgba32f' : 1,
+        'Rgba16f' : 2,
+        'R32f' : 3,
+        'Rgba8' : 4,
+        'Rgba8Snorm' : 5,
+        'Rg32f' : 6,
+        'Rg16f' : 7,
+        'R11fG11fB10f' : 8,
+        'R16f' : 9,
+        'Rgba16' : 10,
+        'Rgb10A2' : 11,
+        'Rg16' : 12,
+        'Rg8' : 13,
+        'R16' : 14,
+        'R8' : 15,
+        'Rgba16Snorm' : 16,
+        'Rg16Snorm' : 17,
+        'Rg8Snorm' : 18,
+        'R16Snorm' : 19,
+        'R8Snorm' : 20,
+        'Rgba32i' : 21,
+        'Rgba16i' : 22,
+        'Rgba8i' : 23,
+        'R32i' : 24,
+        'Rg32i' : 25,
+        'Rg16i' : 26,
+        'Rg8i' : 27,
+        'R16i' : 28,
+        'R8i' : 29,
+        'Rgba32ui' : 30,
+        'Rgba16ui' : 31,
+        'Rgba8ui' : 32,
+        'R32ui' : 33,
+        'Rgb10a2ui' : 34,
+        'Rg32ui' : 35,
+        'Rg16ui' : 36,
+        'Rg8ui' : 37,
+        'R16ui' : 38,
+        'R8ui' : 39,
+    },
+
+    'ImageChannelOrder' : {
+        'R' : 0,
+        'A' : 1,
+        'RG' : 2,
+        'RA' : 3,
+        'RGB' : 4,
+        'RGBA' : 5,
+        'BGRA' : 6,
+        'ARGB' : 7,
+        'Intensity' : 8,
+        'Luminance' : 9,
+        'Rx' : 10,
+        'RGx' : 11,
+        'RGBx' : 12,
+        'Depth' : 13,
+        'DepthStencil' : 14,
+        'sRGB' : 15,
+        'sRGBx' : 16,
+        'sRGBA' : 17,
+        'sBGRA' : 18,
+        'ABGR' : 19,
+    },
+
+    'ImageChannelDataType' : {
+        'SnormInt8' : 0,
+        'SnormInt16' : 1,
+        'UnormInt8' : 2,
+        'UnormInt16' : 3,
+        'UnormShort565' : 4,
+        'UnormShort555' : 5,
+        'UnormInt101010' : 6,
+        'SignedInt8' : 7,
+        'SignedInt16' : 8,
+        'SignedInt32' : 9,
+        'UnsignedInt8' : 10,
+        'UnsignedInt16' : 11,
+        'UnsignedInt32' : 12,
+        'HalfFloat' : 13,
+        'Float' : 14,
+        'UnormInt24' : 15,
+        'UnormInt101010_2' : 16,
+    },
+
+    'ImageOperandsShift' : {
+        'Bias' : 0,
+        'Lod' : 1,
+        'Grad' : 2,
+        'ConstOffset' : 3,
+        'Offset' : 4,
+        'ConstOffsets' : 5,
+        'Sample' : 6,
+        'MinLod' : 7,
+    },
+
+    'ImageOperandsMask' : {
+        'MaskNone' : 0,
+        'Bias' : 0x00000001,
+        'Lod' : 0x00000002,
+        'Grad' : 0x00000004,
+        'ConstOffset' : 0x00000008,
+        'Offset' : 0x00000010,
+        'ConstOffsets' : 0x00000020,
+        'Sample' : 0x00000040,
+        'MinLod' : 0x00000080,
+    },
+
+    'FPFastMathModeShift' : {
+        'NotNaN' : 0,
+        'NotInf' : 1,
+        'NSZ' : 2,
+        'AllowRecip' : 3,
+        'Fast' : 4,
+    },
+
+    'FPFastMathModeMask' : {
+        'MaskNone' : 0,
+        'NotNaN' : 0x00000001,
+        'NotInf' : 0x00000002,
+        'NSZ' : 0x00000004,
+        'AllowRecip' : 0x00000008,
+        'Fast' : 0x00000010,
+    },
+
+    'FPRoundingMode' : {
+        'RTE' : 0,
+        'RTZ' : 1,
+        'RTP' : 2,
+        'RTN' : 3,
+    },
+
+    'LinkageType' : {
+        'Export' : 0,
+        'Import' : 1,
+    },
+
+    'AccessQualifier' : {
+        'ReadOnly' : 0,
+        'WriteOnly' : 1,
+        'ReadWrite' : 2,
+    },
+
+    'FunctionParameterAttribute' : {
+        'Zext' : 0,
+        'Sext' : 1,
+        'ByVal' : 2,
+        'Sret' : 3,
+        'NoAlias' : 4,
+        'NoCapture' : 5,
+        'NoWrite' : 6,
+        'NoReadWrite' : 7,
+    },
+
+    'Decoration' : {
+        'RelaxedPrecision' : 0,
+        'SpecId' : 1,
+        'Block' : 2,
+        'BufferBlock' : 3,
+        'RowMajor' : 4,
+        'ColMajor' : 5,
+        'ArrayStride' : 6,
+        'MatrixStride' : 7,
+        'GLSLShared' : 8,
+        'GLSLPacked' : 9,
+        'CPacked' : 10,
+        'BuiltIn' : 11,
+        'NoPerspective' : 13,
+        'Flat' : 14,
+        'Patch' : 15,
+        'Centroid' : 16,
+        'Sample' : 17,
+        'Invariant' : 18,
+        'Restrict' : 19,
+        'Aliased' : 20,
+        'Volatile' : 21,
+        'Constant' : 22,
+        'Coherent' : 23,
+        'NonWritable' : 24,
+        'NonReadable' : 25,
+        'Uniform' : 26,
+        'SaturatedConversion' : 28,
+        'Stream' : 29,
+        'Location' : 30,
+        'Component' : 31,
+        'Index' : 32,
+        'Binding' : 33,
+        'DescriptorSet' : 34,
+        'Offset' : 35,
+        'XfbBuffer' : 36,
+        'XfbStride' : 37,
+        'FuncParamAttr' : 38,
+        'FPRoundingMode' : 39,
+        'FPFastMathMode' : 40,
+        'LinkageAttributes' : 41,
+        'NoContraction' : 42,
+        'InputAttachmentIndex' : 43,
+        'Alignment' : 44,
+        'ExplicitInterpAMD' : 4999,
+        'OverrideCoverageNV' : 5248,
+        'PassthroughNV' : 5250,
+        'ViewportRelativeNV' : 5252,
+        'SecondaryViewportRelativeNV' : 5256,
+        'HlslCounterBufferGOOGLE' : 5634,
+        'HlslSemanticGOOGLE' : 5635,
+    },
+
+    'BuiltIn' : {
+        'Position' : 0,
+        'PointSize' : 1,
+        'ClipDistance' : 3,
+        'CullDistance' : 4,
+        'VertexId' : 5,
+        'InstanceId' : 6,
+        'PrimitiveId' : 7,
+        'InvocationId' : 8,
+        'Layer' : 9,
+        'ViewportIndex' : 10,
+        'TessLevelOuter' : 11,
+        'TessLevelInner' : 12,
+        'TessCoord' : 13,
+        'PatchVertices' : 14,
+        'FragCoord' : 15,
+        'PointCoord' : 16,
+        'FrontFacing' : 17,
+        'SampleId' : 18,
+        'SamplePosition' : 19,
+        'SampleMask' : 20,
+        'FragDepth' : 22,
+        'HelperInvocation' : 23,
+        'NumWorkgroups' : 24,
+        'WorkgroupSize' : 25,
+        'WorkgroupId' : 26,
+        'LocalInvocationId' : 27,
+        'GlobalInvocationId' : 28,
+        'LocalInvocationIndex' : 29,
+        'WorkDim' : 30,
+        'GlobalSize' : 31,
+        'EnqueuedWorkgroupSize' : 32,
+        'GlobalOffset' : 33,
+        'GlobalLinearId' : 34,
+        'SubgroupSize' : 36,
+        'SubgroupMaxSize' : 37,
+        'NumSubgroups' : 38,
+        'NumEnqueuedSubgroups' : 39,
+        'SubgroupId' : 40,
+        'SubgroupLocalInvocationId' : 41,
+        'VertexIndex' : 42,
+        'InstanceIndex' : 43,
+        'SubgroupEqMaskKHR' : 4416,
+        'SubgroupGeMaskKHR' : 4417,
+        'SubgroupGtMaskKHR' : 4418,
+        'SubgroupLeMaskKHR' : 4419,
+        'SubgroupLtMaskKHR' : 4420,
+        'BaseVertex' : 4424,
+        'BaseInstance' : 4425,
+        'DrawIndex' : 4426,
+        'DeviceIndex' : 4438,
+        'ViewIndex' : 4440,
+        'BaryCoordNoPerspAMD' : 4992,
+        'BaryCoordNoPerspCentroidAMD' : 4993,
+        'BaryCoordNoPerspSampleAMD' : 4994,
+        'BaryCoordSmoothAMD' : 4995,
+        'BaryCoordSmoothCentroidAMD' : 4996,
+        'BaryCoordSmoothSampleAMD' : 4997,
+        'BaryCoordPullModelAMD' : 4998,
+        'FragStencilRefEXT' : 5014,
+        'ViewportMaskNV' : 5253,
+        'SecondaryPositionNV' : 5257,
+        'SecondaryViewportMaskNV' : 5258,
+        'PositionPerViewNV' : 5261,
+        'ViewportMaskPerViewNV' : 5262,
+    },
+
+    'SelectionControlShift' : {
+        'Flatten' : 0,
+        'DontFlatten' : 1,
+    },
+
+    'SelectionControlMask' : {
+        'MaskNone' : 0,
+        'Flatten' : 0x00000001,
+        'DontFlatten' : 0x00000002,
+    },
+
+    'LoopControlShift' : {
+        'Unroll' : 0,
+        'DontUnroll' : 1,
+    },
+
+    'LoopControlMask' : {
+        'MaskNone' : 0,
+        'Unroll' : 0x00000001,
+        'DontUnroll' : 0x00000002,
+    },
+
+    'FunctionControlShift' : {
+        'Inline' : 0,
+        'DontInline' : 1,
+        'Pure' : 2,
+        'Const' : 3,
+    },
+
+    'FunctionControlMask' : {
+        'MaskNone' : 0,
+        'Inline' : 0x00000001,
+        'DontInline' : 0x00000002,
+        'Pure' : 0x00000004,
+        'Const' : 0x00000008,
+    },
+
+    'MemorySemanticsShift' : {
+        'Acquire' : 1,
+        'Release' : 2,
+        'AcquireRelease' : 3,
+        'SequentiallyConsistent' : 4,
+        'UniformMemory' : 6,
+        'SubgroupMemory' : 7,
+        'WorkgroupMemory' : 8,
+        'CrossWorkgroupMemory' : 9,
+        'AtomicCounterMemory' : 10,
+        'ImageMemory' : 11,
+    },
+
+    'MemorySemanticsMask' : {
+        'MaskNone' : 0,
+        'Acquire' : 0x00000002,
+        'Release' : 0x00000004,
+        'AcquireRelease' : 0x00000008,
+        'SequentiallyConsistent' : 0x00000010,
+        'UniformMemory' : 0x00000040,
+        'SubgroupMemory' : 0x00000080,
+        'WorkgroupMemory' : 0x00000100,
+        'CrossWorkgroupMemory' : 0x00000200,
+        'AtomicCounterMemory' : 0x00000400,
+        'ImageMemory' : 0x00000800,
+    },
+
+    'MemoryAccessShift' : {
+        'Volatile' : 0,
+        'Aligned' : 1,
+        'Nontemporal' : 2,
+    },
+
+    'MemoryAccessMask' : {
+        'MaskNone' : 0,
+        'Volatile' : 0x00000001,
+        'Aligned' : 0x00000002,
+        'Nontemporal' : 0x00000004,
+    },
+
+    'Scope' : {
+        'CrossDevice' : 0,
+        'Device' : 1,
+        'Workgroup' : 2,
+        'Subgroup' : 3,
+        'Invocation' : 4,
+    },
+
+    'GroupOperation' : {
+        'Reduce' : 0,
+        'InclusiveScan' : 1,
+        'ExclusiveScan' : 2,
+    },
+
+    'KernelEnqueueFlags' : {
+        'NoWait' : 0,
+        'WaitKernel' : 1,
+        'WaitWorkGroup' : 2,
+    },
+
+    'KernelProfilingInfoShift' : {
+        'CmdExecTime' : 0,
+    },
+
+    'KernelProfilingInfoMask' : {
+        'MaskNone' : 0,
+        'CmdExecTime' : 0x00000001,
+    },
+
+    'Capability' : {
+        'Matrix' : 0,
+        'Shader' : 1,
+        'Geometry' : 2,
+        'Tessellation' : 3,
+        'Addresses' : 4,
+        'Linkage' : 5,
+        'Kernel' : 6,
+        'Vector16' : 7,
+        'Float16Buffer' : 8,
+        'Float16' : 9,
+        'Float64' : 10,
+        'Int64' : 11,
+        'Int64Atomics' : 12,
+        'ImageBasic' : 13,
+        'ImageReadWrite' : 14,
+        'ImageMipmap' : 15,
+        'Pipes' : 17,
+        'Groups' : 18,
+        'DeviceEnqueue' : 19,
+        'LiteralSampler' : 20,
+        'AtomicStorage' : 21,
+        'Int16' : 22,
+        'TessellationPointSize' : 23,
+        'GeometryPointSize' : 24,
+        'ImageGatherExtended' : 25,
+        'StorageImageMultisample' : 27,
+        'UniformBufferArrayDynamicIndexing' : 28,
+        'SampledImageArrayDynamicIndexing' : 29,
+        'StorageBufferArrayDynamicIndexing' : 30,
+        'StorageImageArrayDynamicIndexing' : 31,
+        'ClipDistance' : 32,
+        'CullDistance' : 33,
+        'ImageCubeArray' : 34,
+        'SampleRateShading' : 35,
+        'ImageRect' : 36,
+        'SampledRect' : 37,
+        'GenericPointer' : 38,
+        'Int8' : 39,
+        'InputAttachment' : 40,
+        'SparseResidency' : 41,
+        'MinLod' : 42,
+        'Sampled1D' : 43,
+        'Image1D' : 44,
+        'SampledCubeArray' : 45,
+        'SampledBuffer' : 46,
+        'ImageBuffer' : 47,
+        'ImageMSArray' : 48,
+        'StorageImageExtendedFormats' : 49,
+        'ImageQuery' : 50,
+        'DerivativeControl' : 51,
+        'InterpolationFunction' : 52,
+        'TransformFeedback' : 53,
+        'GeometryStreams' : 54,
+        'StorageImageReadWithoutFormat' : 55,
+        'StorageImageWriteWithoutFormat' : 56,
+        'MultiViewport' : 57,
+        'SubgroupBallotKHR' : 4423,
+        'DrawParameters' : 4427,
+        'SubgroupVoteKHR' : 4431,
+        'StorageBuffer16BitAccess' : 4433,
+        'StorageUniformBufferBlock16' : 4433,
+        'StorageUniform16' : 4434,
+        'UniformAndStorageBuffer16BitAccess' : 4434,
+        'StoragePushConstant16' : 4435,
+        'StorageInputOutput16' : 4436,
+        'DeviceGroup' : 4437,
+        'MultiView' : 4439,
+        'VariablePointersStorageBuffer' : 4441,
+        'VariablePointers' : 4442,
+        'AtomicStorageOps' : 4445,
+        'SampleMaskPostDepthCoverage' : 4447,
+        'ImageGatherBiasLodAMD' : 5009,
+        'FragmentMaskAMD' : 5010,
+        'StencilExportEXT' : 5013,
+        'ImageReadWriteLodAMD' : 5015,
+        'SampleMaskOverrideCoverageNV' : 5249,
+        'GeometryShaderPassthroughNV' : 5251,
+        'ShaderViewportIndexLayerEXT' : 5254,
+        'ShaderViewportIndexLayerNV' : 5254,
+        'ShaderViewportMaskNV' : 5255,
+        'ShaderStereoViewNV' : 5259,
+        'PerViewAttributesNV' : 5260,
+        'SubgroupShuffleINTEL' : 5568,
+        'SubgroupBufferBlockIOINTEL' : 5569,
+        'SubgroupImageBlockIOINTEL' : 5570,
+    },
+
+    'Op' : {
+        'OpNop' : 0,
+        'OpUndef' : 1,
+        'OpSourceContinued' : 2,
+        'OpSource' : 3,
+        'OpSourceExtension' : 4,
+        'OpName' : 5,
+        'OpMemberName' : 6,
+        'OpString' : 7,
+        'OpLine' : 8,
+        'OpExtension' : 10,
+        'OpExtInstImport' : 11,
+        'OpExtInst' : 12,
+        'OpMemoryModel' : 14,
+        'OpEntryPoint' : 15,
+        'OpExecutionMode' : 16,
+        'OpCapability' : 17,
+        'OpTypeVoid' : 19,
+        'OpTypeBool' : 20,
+        'OpTypeInt' : 21,
+        'OpTypeFloat' : 22,
+        'OpTypeVector' : 23,
+        'OpTypeMatrix' : 24,
+        'OpTypeImage' : 25,
+        'OpTypeSampler' : 26,
+        'OpTypeSampledImage' : 27,
+        'OpTypeArray' : 28,
+        'OpTypeRuntimeArray' : 29,
+        'OpTypeStruct' : 30,
+        'OpTypeOpaque' : 31,
+        'OpTypePointer' : 32,
+        'OpTypeFunction' : 33,
+        'OpTypeEvent' : 34,
+        'OpTypeDeviceEvent' : 35,
+        'OpTypeReserveId' : 36,
+        'OpTypeQueue' : 37,
+        'OpTypePipe' : 38,
+        'OpTypeForwardPointer' : 39,
+        'OpConstantTrue' : 41,
+        'OpConstantFalse' : 42,
+        'OpConstant' : 43,
+        'OpConstantComposite' : 44,
+        'OpConstantSampler' : 45,
+        'OpConstantNull' : 46,
+        'OpSpecConstantTrue' : 48,
+        'OpSpecConstantFalse' : 49,
+        'OpSpecConstant' : 50,
+        'OpSpecConstantComposite' : 51,
+        'OpSpecConstantOp' : 52,
+        'OpFunction' : 54,
+        'OpFunctionParameter' : 55,
+        'OpFunctionEnd' : 56,
+        'OpFunctionCall' : 57,
+        'OpVariable' : 59,
+        'OpImageTexelPointer' : 60,
+        'OpLoad' : 61,
+        'OpStore' : 62,
+        'OpCopyMemory' : 63,
+        'OpCopyMemorySized' : 64,
+        'OpAccessChain' : 65,
+        'OpInBoundsAccessChain' : 66,
+        'OpPtrAccessChain' : 67,
+        'OpArrayLength' : 68,
+        'OpGenericPtrMemSemantics' : 69,
+        'OpInBoundsPtrAccessChain' : 70,
+        'OpDecorate' : 71,
+        'OpMemberDecorate' : 72,
+        'OpDecorationGroup' : 73,
+        'OpGroupDecorate' : 74,
+        'OpGroupMemberDecorate' : 75,
+        'OpVectorExtractDynamic' : 77,
+        'OpVectorInsertDynamic' : 78,
+        'OpVectorShuffle' : 79,
+        'OpCompositeConstruct' : 80,
+        'OpCompositeExtract' : 81,
+        'OpCompositeInsert' : 82,
+        'OpCopyObject' : 83,
+        'OpTranspose' : 84,
+        'OpSampledImage' : 86,
+        'OpImageSampleImplicitLod' : 87,
+        'OpImageSampleExplicitLod' : 88,
+        'OpImageSampleDrefImplicitLod' : 89,
+        'OpImageSampleDrefExplicitLod' : 90,
+        'OpImageSampleProjImplicitLod' : 91,
+        'OpImageSampleProjExplicitLod' : 92,
+        'OpImageSampleProjDrefImplicitLod' : 93,
+        'OpImageSampleProjDrefExplicitLod' : 94,
+        'OpImageFetch' : 95,
+        'OpImageGather' : 96,
+        'OpImageDrefGather' : 97,
+        'OpImageRead' : 98,
+        'OpImageWrite' : 99,
+        'OpImage' : 100,
+        'OpImageQueryFormat' : 101,
+        'OpImageQueryOrder' : 102,
+        'OpImageQuerySizeLod' : 103,
+        'OpImageQuerySize' : 104,
+        'OpImageQueryLod' : 105,
+        'OpImageQueryLevels' : 106,
+        'OpImageQuerySamples' : 107,
+        'OpConvertFToU' : 109,
+        'OpConvertFToS' : 110,
+        'OpConvertSToF' : 111,
+        'OpConvertUToF' : 112,
+        'OpUConvert' : 113,
+        'OpSConvert' : 114,
+        'OpFConvert' : 115,
+        'OpQuantizeToF16' : 116,
+        'OpConvertPtrToU' : 117,
+        'OpSatConvertSToU' : 118,
+        'OpSatConvertUToS' : 119,
+        'OpConvertUToPtr' : 120,
+        'OpPtrCastToGeneric' : 121,
+        'OpGenericCastToPtr' : 122,
+        'OpGenericCastToPtrExplicit' : 123,
+        'OpBitcast' : 124,
+        'OpSNegate' : 126,
+        'OpFNegate' : 127,
+        'OpIAdd' : 128,
+        'OpFAdd' : 129,
+        'OpISub' : 130,
+        'OpFSub' : 131,
+        'OpIMul' : 132,
+        'OpFMul' : 133,
+        'OpUDiv' : 134,
+        'OpSDiv' : 135,
+        'OpFDiv' : 136,
+        'OpUMod' : 137,
+        'OpSRem' : 138,
+        'OpSMod' : 139,
+        'OpFRem' : 140,
+        'OpFMod' : 141,
+        'OpVectorTimesScalar' : 142,
+        'OpMatrixTimesScalar' : 143,
+        'OpVectorTimesMatrix' : 144,
+        'OpMatrixTimesVector' : 145,
+        'OpMatrixTimesMatrix' : 146,
+        'OpOuterProduct' : 147,
+        'OpDot' : 148,
+        'OpIAddCarry' : 149,
+        'OpISubBorrow' : 150,
+        'OpUMulExtended' : 151,
+        'OpSMulExtended' : 152,
+        'OpAny' : 154,
+        'OpAll' : 155,
+        'OpIsNan' : 156,
+        'OpIsInf' : 157,
+        'OpIsFinite' : 158,
+        'OpIsNormal' : 159,
+        'OpSignBitSet' : 160,
+        'OpLessOrGreater' : 161,
+        'OpOrdered' : 162,
+        'OpUnordered' : 163,
+        'OpLogicalEqual' : 164,
+        'OpLogicalNotEqual' : 165,
+        'OpLogicalOr' : 166,
+        'OpLogicalAnd' : 167,
+        'OpLogicalNot' : 168,
+        'OpSelect' : 169,
+        'OpIEqual' : 170,
+        'OpINotEqual' : 171,
+        'OpUGreaterThan' : 172,
+        'OpSGreaterThan' : 173,
+        'OpUGreaterThanEqual' : 174,
+        'OpSGreaterThanEqual' : 175,
+        'OpULessThan' : 176,
+        'OpSLessThan' : 177,
+        'OpULessThanEqual' : 178,
+        'OpSLessThanEqual' : 179,
+        'OpFOrdEqual' : 180,
+        'OpFUnordEqual' : 181,
+        'OpFOrdNotEqual' : 182,
+        'OpFUnordNotEqual' : 183,
+        'OpFOrdLessThan' : 184,
+        'OpFUnordLessThan' : 185,
+        'OpFOrdGreaterThan' : 186,
+        'OpFUnordGreaterThan' : 187,
+        'OpFOrdLessThanEqual' : 188,
+        'OpFUnordLessThanEqual' : 189,
+        'OpFOrdGreaterThanEqual' : 190,
+        'OpFUnordGreaterThanEqual' : 191,
+        'OpShiftRightLogical' : 194,
+        'OpShiftRightArithmetic' : 195,
+        'OpShiftLeftLogical' : 196,
+        'OpBitwiseOr' : 197,
+        'OpBitwiseXor' : 198,
+        'OpBitwiseAnd' : 199,
+        'OpNot' : 200,
+        'OpBitFieldInsert' : 201,
+        'OpBitFieldSExtract' : 202,
+        'OpBitFieldUExtract' : 203,
+        'OpBitReverse' : 204,
+        'OpBitCount' : 205,
+        'OpDPdx' : 207,
+        'OpDPdy' : 208,
+        'OpFwidth' : 209,
+        'OpDPdxFine' : 210,
+        'OpDPdyFine' : 211,
+        'OpFwidthFine' : 212,
+        'OpDPdxCoarse' : 213,
+        'OpDPdyCoarse' : 214,
+        'OpFwidthCoarse' : 215,
+        'OpEmitVertex' : 218,
+        'OpEndPrimitive' : 219,
+        'OpEmitStreamVertex' : 220,
+        'OpEndStreamPrimitive' : 221,
+        'OpControlBarrier' : 224,
+        'OpMemoryBarrier' : 225,
+        'OpAtomicLoad' : 227,
+        'OpAtomicStore' : 228,
+        'OpAtomicExchange' : 229,
+        'OpAtomicCompareExchange' : 230,
+        'OpAtomicCompareExchangeWeak' : 231,
+        'OpAtomicIIncrement' : 232,
+        'OpAtomicIDecrement' : 233,
+        'OpAtomicIAdd' : 234,
+        'OpAtomicISub' : 235,
+        'OpAtomicSMin' : 236,
+        'OpAtomicUMin' : 237,
+        'OpAtomicSMax' : 238,
+        'OpAtomicUMax' : 239,
+        'OpAtomicAnd' : 240,
+        'OpAtomicOr' : 241,
+        'OpAtomicXor' : 242,
+        'OpPhi' : 245,
+        'OpLoopMerge' : 246,
+        'OpSelectionMerge' : 247,
+        'OpLabel' : 248,
+        'OpBranch' : 249,
+        'OpBranchConditional' : 250,
+        'OpSwitch' : 251,
+        'OpKill' : 252,
+        'OpReturn' : 253,
+        'OpReturnValue' : 254,
+        'OpUnreachable' : 255,
+        'OpLifetimeStart' : 256,
+        'OpLifetimeStop' : 257,
+        'OpGroupAsyncCopy' : 259,
+        'OpGroupWaitEvents' : 260,
+        'OpGroupAll' : 261,
+        'OpGroupAny' : 262,
+        'OpGroupBroadcast' : 263,
+        'OpGroupIAdd' : 264,
+        'OpGroupFAdd' : 265,
+        'OpGroupFMin' : 266,
+        'OpGroupUMin' : 267,
+        'OpGroupSMin' : 268,
+        'OpGroupFMax' : 269,
+        'OpGroupUMax' : 270,
+        'OpGroupSMax' : 271,
+        'OpReadPipe' : 274,
+        'OpWritePipe' : 275,
+        'OpReservedReadPipe' : 276,
+        'OpReservedWritePipe' : 277,
+        'OpReserveReadPipePackets' : 278,
+        'OpReserveWritePipePackets' : 279,
+        'OpCommitReadPipe' : 280,
+        'OpCommitWritePipe' : 281,
+        'OpIsValidReserveId' : 282,
+        'OpGetNumPipePackets' : 283,
+        'OpGetMaxPipePackets' : 284,
+        'OpGroupReserveReadPipePackets' : 285,
+        'OpGroupReserveWritePipePackets' : 286,
+        'OpGroupCommitReadPipe' : 287,
+        'OpGroupCommitWritePipe' : 288,
+        'OpEnqueueMarker' : 291,
+        'OpEnqueueKernel' : 292,
+        'OpGetKernelNDrangeSubGroupCount' : 293,
+        'OpGetKernelNDrangeMaxSubGroupSize' : 294,
+        'OpGetKernelWorkGroupSize' : 295,
+        'OpGetKernelPreferredWorkGroupSizeMultiple' : 296,
+        'OpRetainEvent' : 297,
+        'OpReleaseEvent' : 298,
+        'OpCreateUserEvent' : 299,
+        'OpIsValidEvent' : 300,
+        'OpSetUserEventStatus' : 301,
+        'OpCaptureEventProfilingInfo' : 302,
+        'OpGetDefaultQueue' : 303,
+        'OpBuildNDRange' : 304,
+        'OpImageSparseSampleImplicitLod' : 305,
+        'OpImageSparseSampleExplicitLod' : 306,
+        'OpImageSparseSampleDrefImplicitLod' : 307,
+        'OpImageSparseSampleDrefExplicitLod' : 308,
+        'OpImageSparseSampleProjImplicitLod' : 309,
+        'OpImageSparseSampleProjExplicitLod' : 310,
+        'OpImageSparseSampleProjDrefImplicitLod' : 311,
+        'OpImageSparseSampleProjDrefExplicitLod' : 312,
+        'OpImageSparseFetch' : 313,
+        'OpImageSparseGather' : 314,
+        'OpImageSparseDrefGather' : 315,
+        'OpImageSparseTexelsResident' : 316,
+        'OpNoLine' : 317,
+        'OpAtomicFlagTestAndSet' : 318,
+        'OpAtomicFlagClear' : 319,
+        'OpImageSparseRead' : 320,
+        'OpDecorateId' : 332,
+        'OpSubgroupBallotKHR' : 4421,
+        'OpSubgroupFirstInvocationKHR' : 4422,
+        'OpSubgroupAllKHR' : 4428,
+        'OpSubgroupAnyKHR' : 4429,
+        'OpSubgroupAllEqualKHR' : 4430,
+        'OpSubgroupReadInvocationKHR' : 4432,
+        'OpGroupIAddNonUniformAMD' : 5000,
+        'OpGroupFAddNonUniformAMD' : 5001,
+        'OpGroupFMinNonUniformAMD' : 5002,
+        'OpGroupUMinNonUniformAMD' : 5003,
+        'OpGroupSMinNonUniformAMD' : 5004,
+        'OpGroupFMaxNonUniformAMD' : 5005,
+        'OpGroupUMaxNonUniformAMD' : 5006,
+        'OpGroupSMaxNonUniformAMD' : 5007,
+        'OpFragmentMaskFetchAMD' : 5011,
+        'OpFragmentFetchAMD' : 5012,
+        'OpSubgroupShuffleINTEL' : 5571,
+        'OpSubgroupShuffleDownINTEL' : 5572,
+        'OpSubgroupShuffleUpINTEL' : 5573,
+        'OpSubgroupShuffleXorINTEL' : 5574,
+        'OpSubgroupBlockReadINTEL' : 5575,
+        'OpSubgroupBlockWriteINTEL' : 5576,
+        'OpSubgroupImageBlockReadINTEL' : 5577,
+        'OpSubgroupImageBlockWriteINTEL' : 5578,
+        'OpDecorateStringGOOGLE' : 5632,
+        'OpMemberDecorateStringGOOGLE' : 5633,
+    },
+
+}
+
diff --git a/libs/spirv-headers/spirv/1.1/GLSL.std.450.h b/libs/spirv-headers/spirv/1.1/GLSL.std.450.h
new file mode 100644
index 00000000000..54cc00e9a88
--- /dev/null
+++ b/libs/spirv-headers/spirv/1.1/GLSL.std.450.h
@@ -0,0 +1,131 @@
+/*
+** Copyright (c) 2014-2016 The Khronos Group Inc.
+**
+** Permission is hereby granted, free of charge, to any person obtaining a copy
+** of this software and/or associated documentation files (the "Materials"),
+** to deal in the Materials without restriction, including without limitation
+** the rights to use, copy, modify, merge, publish, distribute, sublicense,
+** and/or sell copies of the Materials, and to permit persons to whom the
+** Materials are furnished to do so, subject to the following conditions:
+**
+** The above copyright notice and this permission notice shall be included in
+** all copies or substantial portions of the Materials.
+**
+** MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS KHRONOS
+** STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS SPECIFICATIONS AND
+** HEADER INFORMATION ARE LOCATED AT https://www.khronos.org/registry/ 
+**
+** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+** OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+** FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+** THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+** LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+** FROM,OUT OF OR IN CONNECTION WITH THE MATERIALS OR THE USE OR OTHER DEALINGS
+** IN THE MATERIALS.
+*/
+
+#ifndef GLSLstd450_H
+#define GLSLstd450_H
+
+static const int GLSLstd450Version = 100;
+static const int GLSLstd450Revision = 3;
+
+enum GLSLstd450 {
+    GLSLstd450Bad = 0,              // Don't use
+
+    GLSLstd450Round = 1,
+    GLSLstd450RoundEven = 2,
+    GLSLstd450Trunc = 3,
+    GLSLstd450FAbs = 4,
+    GLSLstd450SAbs = 5,
+    GLSLstd450FSign = 6,
+    GLSLstd450SSign = 7,
+    GLSLstd450Floor = 8,
+    GLSLstd450Ceil = 9,
+    GLSLstd450Fract = 10,
+
+    GLSLstd450Radians = 11,
+    GLSLstd450Degrees = 12,
+    GLSLstd450Sin = 13,
+    GLSLstd450Cos = 14,
+    GLSLstd450Tan = 15,
+    GLSLstd450Asin = 16,
+    GLSLstd450Acos = 17,
+    GLSLstd450Atan = 18,
+    GLSLstd450Sinh = 19,
+    GLSLstd450Cosh = 20,
+    GLSLstd450Tanh = 21,
+    GLSLstd450Asinh = 22,
+    GLSLstd450Acosh = 23,
+    GLSLstd450Atanh = 24,
+    GLSLstd450Atan2 = 25,
+
+    GLSLstd450Pow = 26,
+    GLSLstd450Exp = 27,
+    GLSLstd450Log = 28,
+    GLSLstd450Exp2 = 29,
+    GLSLstd450Log2 = 30,
+    GLSLstd450Sqrt = 31,
+    GLSLstd450InverseSqrt = 32,
+
+    GLSLstd450Determinant = 33,
+    GLSLstd450MatrixInverse = 34,
+
+    GLSLstd450Modf = 35,            // second operand needs an OpVariable to write to
+    GLSLstd450ModfStruct = 36,      // no OpVariable operand
+    GLSLstd450FMin = 37,
+    GLSLstd450UMin = 38,
+    GLSLstd450SMin = 39,
+    GLSLstd450FMax = 40,
+    GLSLstd450UMax = 41,
+    GLSLstd450SMax = 42,
+    GLSLstd450FClamp = 43,
+    GLSLstd450UClamp = 44,
+    GLSLstd450SClamp = 45,
+    GLSLstd450FMix = 46,
+    GLSLstd450IMix = 47,            // Reserved
+    GLSLstd450Step = 48,
+    GLSLstd450SmoothStep = 49,
+
+    GLSLstd450Fma = 50,
+    GLSLstd450Frexp = 51,            // second operand needs an OpVariable to write to
+    GLSLstd450FrexpStruct = 52,      // no OpVariable operand
+    GLSLstd450Ldexp = 53,
+
+    GLSLstd450PackSnorm4x8 = 54,
+    GLSLstd450PackUnorm4x8 = 55,
+    GLSLstd450PackSnorm2x16 = 56,
+    GLSLstd450PackUnorm2x16 = 57,
+    GLSLstd450PackHalf2x16 = 58,
+    GLSLstd450PackDouble2x32 = 59,
+    GLSLstd450UnpackSnorm2x16 = 60,
+    GLSLstd450UnpackUnorm2x16 = 61,
+    GLSLstd450UnpackHalf2x16 = 62,
+    GLSLstd450UnpackSnorm4x8 = 63,
+    GLSLstd450UnpackUnorm4x8 = 64,
+    GLSLstd450UnpackDouble2x32 = 65,
+
+    GLSLstd450Length = 66,
+    GLSLstd450Distance = 67,
+    GLSLstd450Cross = 68,
+    GLSLstd450Normalize = 69,
+    GLSLstd450FaceForward = 70,
+    GLSLstd450Reflect = 71,
+    GLSLstd450Refract = 72,
+
+    GLSLstd450FindILsb = 73,
+    GLSLstd450FindSMsb = 74,
+    GLSLstd450FindUMsb = 75,
+
+    GLSLstd450InterpolateAtCentroid = 76,
+    GLSLstd450InterpolateAtSample = 77,
+    GLSLstd450InterpolateAtOffset = 78,
+
+    GLSLstd450NMin = 79,
+    GLSLstd450NMax = 80,
+    GLSLstd450NClamp = 81,
+
+    GLSLstd450Count
+};
+
+#endif  // #ifndef GLSLstd450_H
diff --git a/libs/spirv-headers/spirv/1.1/OpenCL.std.h b/libs/spirv-headers/spirv/1.1/OpenCL.std.h
new file mode 100644
index 00000000000..19a6688490c
--- /dev/null
+++ b/libs/spirv-headers/spirv/1.1/OpenCL.std.h
@@ -0,0 +1,210 @@
+/*
+** Copyright (c) 2015-2017 The Khronos Group Inc.
+**
+** Permission is hereby granted, free of charge, to any person obtaining a copy
+** of this software and/or associated documentation files (the "Materials"),
+** to deal in the Materials without restriction, including without limitation
+** the rights to use, copy, modify, merge, publish, distribute, sublicense,
+** and/or sell copies of the Materials, and to permit persons to whom the
+** Materials are furnished to do so, subject to the following conditions:
+**
+** The above copyright notice and this permission notice shall be included in
+** all copies or substantial portions of the Materials.
+**
+** MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS KHRONOS
+** STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS SPECIFICATIONS AND
+** HEADER INFORMATION ARE LOCATED AT https://www.khronos.org/registry/ 
+**
+** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+** OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+** FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+** THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+** LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+** FROM,OUT OF OR IN CONNECTION WITH THE MATERIALS OR THE USE OR OTHER DEALINGS
+** IN THE MATERIALS.
+*/
+
+namespace OpenCLLIB {
+
+enum Entrypoints {
+
+    // Section 2.1: Math extended instructions
+    Acos = 0,
+    Acosh = 1,
+    Acospi = 2,
+    Asin = 3,
+    Asinh = 4,
+    Asinpi = 5,
+    Atan = 6,
+    Atan2 = 7,
+    Atanh = 8,
+    Atanpi = 9,
+    Atan2pi = 10,
+    Cbrt = 11,
+    Ceil = 12,
+    Copysign = 13,
+    Cos = 14,
+    Cosh = 15,
+    Cospi = 16,
+    Erfc = 17,
+    Erf = 18,
+    Exp = 19,
+    Exp2 = 20,
+    Exp10 = 21,
+    Expm1 = 22,
+    Fabs = 23,
+    Fdim = 24,
+    Floor = 25,
+    Fma = 26,
+    Fmax = 27,
+    Fmin = 28,
+    Fmod = 29,
+    Fract = 30, 
+    Frexp = 31,
+    Hypot = 32,
+    Ilogb = 33,
+    Ldexp = 34,
+    Lgamma = 35,
+    Lgamma_r = 36,
+    Log = 37,
+    Log2 = 38,
+    Log10 = 39,
+    Log1p = 40,
+    Logb = 41,
+    Mad = 42,
+    Maxmag = 43,
+    Minmag = 44,
+    Modf = 45,
+    Nan = 46,
+    Nextafter = 47,
+    Pow = 48,
+    Pown = 49,
+    Powr = 50,
+    Remainder = 51,
+    Remquo = 52,
+    Rint = 53,
+    Rootn = 54,
+    Round = 55,
+    Rsqrt = 56,
+    Sin = 57,
+    Sincos = 58,
+    Sinh = 59,
+    Sinpi = 60,
+    Sqrt = 61,
+    Tan = 62,
+    Tanh = 63,
+    Tanpi = 64,
+    Tgamma = 65,
+    Trunc = 66,
+    Half_cos = 67,
+    Half_divide = 68,
+    Half_exp = 69,
+    Half_exp2 = 70,
+    Half_exp10 = 71,
+    Half_log = 72,
+    Half_log2 = 73,
+    Half_log10 = 74,
+    Half_powr = 75,
+    Half_recip = 76,
+    Half_rsqrt = 77,
+    Half_sin = 78,
+    Half_sqrt = 79,
+    Half_tan = 80,
+    Native_cos = 81,
+    Native_divide = 82,
+    Native_exp = 83,
+    Native_exp2 = 84,
+    Native_exp10 = 85,
+    Native_log = 86,
+    Native_log2 = 87,
+    Native_log10 = 88,
+    Native_powr = 89,
+    Native_recip = 90,
+    Native_rsqrt = 91,
+    Native_sin = 92,
+    Native_sqrt = 93,
+    Native_tan = 94,
+    
+    // Section 2.2: Integer instructions
+    SAbs = 141,
+    SAbs_diff = 142,
+    SAdd_sat = 143,
+    UAdd_sat = 144,
+    SHadd = 145,
+    UHadd = 146,
+    SRhadd = 147,
+    URhadd = 148,
+    SClamp = 149,
+    UClamp = 150, 
+    Clz = 151,
+    Ctz = 152,    
+    SMad_hi = 153,
+    UMad_sat = 154,
+    SMad_sat = 155,
+    SMax = 156,
+    UMax = 157,
+    SMin = 158,
+    UMin = 159,
+    SMul_hi = 160,
+    Rotate = 161,
+    SSub_sat = 162,
+    USub_sat = 163,
+    U_Upsample = 164,
+    S_Upsample = 165,
+    Popcount = 166,
+    SMad24 = 167,
+    UMad24 = 168,
+    SMul24 = 169,
+    UMul24 = 170,
+    UAbs = 201,
+    UAbs_diff = 202,
+    UMul_hi = 203,
+    UMad_hi = 204,
+
+    // Section 2.3: Common instructions
+    FClamp = 95,
+    Degrees = 96,
+    FMax_common = 97,
+    FMin_common = 98, 
+    Mix = 99,
+    Radians = 100,
+    Step = 101,
+    Smoothstep = 102,
+    Sign = 103,
+
+    // Section 2.4: Geometric instructions
+    Cross = 104,
+    Distance = 105, 
+    Length = 106,
+    Normalize = 107,
+    Fast_distance = 108,
+    Fast_length = 109,
+    Fast_normalize = 110,
+
+    // Section 2.5: Relational instructions
+    Bitselect = 186,
+    Select = 187,
+
+    // Section 2.6: Vector Data Load and Store instructions
+    Vloadn = 171,
+    Vstoren = 172,
+    Vload_half = 173,
+    Vload_halfn = 174,
+    Vstore_half = 175,
+    Vstore_half_r = 176,
+    Vstore_halfn = 177,
+    Vstore_halfn_r = 178,
+    Vloada_halfn = 179,
+    Vstorea_halfn = 180,
+    Vstorea_halfn_r = 181,
+
+    // Section 2.7: Miscellaneous Vector instructions
+    Shuffle = 182,
+    Shuffle2 = 183,
+
+    // Section 2.8: Misc instructions 
+    Printf = 184,
+    Prefetch = 185,
+};
+
+} // end namespace OpenCLLIB
diff --git a/libs/spirv-headers/spirv/1.1/extinst.glsl.std.450.grammar.json b/libs/spirv-headers/spirv/1.1/extinst.glsl.std.450.grammar.json
new file mode 100644
index 00000000000..3d9f39e76c9
--- /dev/null
+++ b/libs/spirv-headers/spirv/1.1/extinst.glsl.std.450.grammar.json
@@ -0,0 +1,642 @@
+{
+  "copyright" : [
+    "Copyright (c) 2014-2016 The Khronos Group Inc.",
+    "",
+    "Permission is hereby granted, free of charge, to any person obtaining a copy",
+    "of this software and/or associated documentation files (the \"Materials\"),",
+    "to deal in the Materials without restriction, including without limitation",
+    "the rights to use, copy, modify, merge, publish, distribute, sublicense,",
+    "and/or sell copies of the Materials, and to permit persons to whom the",
+    "Materials are furnished to do so, subject to the following conditions:",
+    "",
+    "The above copyright notice and this permission notice shall be included in",
+    "all copies or substantial portions of the Materials.",
+    "",
+    "MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS KHRONOS",
+    "STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS SPECIFICATIONS AND",
+    "HEADER INFORMATION ARE LOCATED AT https://www.khronos.org/registry/ ",
+    "",
+    "THE MATERIALS ARE PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS",
+    "OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,",
+    "FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL",
+    "THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER",
+    "LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING",
+    "FROM,OUT OF OR IN CONNECTION WITH THE MATERIALS OR THE USE OR OTHER DEALINGS",
+    "IN THE MATERIALS."
+  ],
+  "version" : 100,
+  "revision" : 2,
+  "instructions" : [
+    {
+      "opname" : "Round",
+      "opcode" : 1,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "RoundEven",
+      "opcode" : 2,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "Trunc",
+      "opcode" : 3,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "FAbs",
+      "opcode" : 4,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "SAbs",
+      "opcode" : 5,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "FSign",
+      "opcode" : 6,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "SSign",
+      "opcode" : 7,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "Floor",
+      "opcode" : 8,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "Ceil",
+      "opcode" : 9,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "Fract",
+      "opcode" : 10,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "Radians",
+      "opcode" : 11,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'degrees'" }
+      ]
+    },
+    {
+      "opname" : "Degrees",
+      "opcode" : 12,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'radians'" }
+      ]
+    },
+    {
+      "opname" : "Sin",
+      "opcode" : 13,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "Cos",
+      "opcode" : 14,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "Tan",
+      "opcode" : 15,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "Asin",
+      "opcode" : 16,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "Acos",
+      "opcode" : 17,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "Atan",
+      "opcode" : 18,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'y_over_x'" }
+      ]
+    },
+    {
+      "opname" : "Sinh",
+      "opcode" : 19,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "Cosh",
+      "opcode" : 20,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "Tanh",
+      "opcode" : 21,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "Asinh",
+      "opcode" : 22,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "Acosh",
+      "opcode" : 23,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "Atanh",
+      "opcode" : 24,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "Atan2",
+      "opcode" : 25,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'y'" },
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "Pow",
+      "opcode" : 26,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "Exp",
+      "opcode" : 27,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "Log",
+      "opcode" : 28,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "Exp2",
+      "opcode" : 29,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "Log2",
+      "opcode" : 30,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "Sqrt",
+      "opcode" : 31,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "InverseSqrt",
+      "opcode" : 32,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "Determinant",
+      "opcode" : 33,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "MatrixInverse",
+      "opcode" : 34,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "Modf",
+      "opcode" : 35,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'i'" }
+      ]
+    },
+    {
+      "opname" : "ModfStruct",
+      "opcode" : 36,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "FMin",
+      "opcode" : 37,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "UMin",
+      "opcode" : 38,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "SMin",
+      "opcode" : 39,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "FMax",
+      "opcode" : 40,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "UMax",
+      "opcode" : 41,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "SMax",
+      "opcode" : 42,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "FClamp",
+      "opcode" : 43,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'minVal'" },
+        { "kind" : "IdRef", "name" : "'maxVal'" }
+      ]
+    },
+    {
+      "opname" : "UClamp",
+      "opcode" : 44,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'minVal'" },
+        { "kind" : "IdRef", "name" : "'maxVal'" }
+      ]
+    },
+    {
+      "opname" : "SClamp",
+      "opcode" : 45,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'minVal'" },
+        { "kind" : "IdRef", "name" : "'maxVal'" }
+      ]
+    },
+    {
+      "opname" : "FMix",
+      "opcode" : 46,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" },
+        { "kind" : "IdRef", "name" : "'a'" }
+      ]
+    },
+    {
+      "opname" : "IMix",
+      "opcode" : 47,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" },
+        { "kind" : "IdRef", "name" : "'a'" }
+      ]
+    },
+    {
+      "opname" : "Step",
+      "opcode" : 48,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'edge'" },
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "SmoothStep",
+      "opcode" : 49,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'edge0'" },
+        { "kind" : "IdRef", "name" : "'edge1'" },
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "Fma",
+      "opcode" : 50,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'a'" },
+        { "kind" : "IdRef", "name" : "'b'" },
+        { "kind" : "IdRef", "name" : "'c'" }
+      ]
+    },
+    {
+      "opname" : "Frexp",
+      "opcode" : 51,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'exp'" }
+      ]
+    },
+    {
+      "opname" : "FrexpStruct",
+      "opcode" : 52,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "Ldexp",
+      "opcode" : 53,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'exp'" }
+      ]
+    },
+    {
+      "opname" : "PackSnorm4x8",
+      "opcode" : 54,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'v'" }
+      ]
+    },
+    {
+      "opname" : "PackUnorm4x8",
+      "opcode" : 55,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'v'" }
+      ]
+    },
+    {
+      "opname" : "PackSnorm2x16",
+      "opcode" : 56,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'v'" }
+      ]
+    },
+    {
+      "opname" : "PackUnorm2x16",
+      "opcode" : 57,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'v'" }
+      ]
+    },
+    {
+      "opname" : "PackHalf2x16",
+      "opcode" : 58,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'v'" }
+      ]
+    },
+    {
+      "opname" : "PackDouble2x32",
+      "opcode" : 59,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'v'" }
+      ],
+      "capabilities" : [ "Float64" ]
+    },
+    {
+      "opname" : "UnpackSnorm2x16",
+      "opcode" : 60,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'p'" }
+      ]
+    },
+    {
+      "opname" : "UnpackUnorm2x16",
+      "opcode" : 61,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'p'" }
+      ]
+    },
+    {
+      "opname" : "UnpackHalf2x16",
+      "opcode" : 62,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'v'" }
+      ]
+    },
+    {
+      "opname" : "UnpackSnorm4x8",
+      "opcode" : 63,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'p'" }
+      ]
+    },
+    {
+      "opname" : "UnpackUnorm4x8",
+      "opcode" : 64,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'p'" }
+      ]
+    },
+    {
+      "opname" : "UnpackDouble2x32",
+      "opcode" : 65,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'v'" }
+      ],
+      "capabilities" : [ "Float64" ]
+    },
+    {
+      "opname" : "Length",
+      "opcode" : 66,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "Distance",
+      "opcode" : 67,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'p0'" },
+        { "kind" : "IdRef", "name" : "'p1'" }
+      ]
+    },
+    {
+      "opname" : "Cross",
+      "opcode" : 68,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "Normalize",
+      "opcode" : 69,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "FaceForward",
+      "opcode" : 70,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'N'" },
+        { "kind" : "IdRef", "name" : "'I'" },
+        { "kind" : "IdRef", "name" : "'Nref'" }
+      ]
+    },
+    {
+      "opname" : "Reflect",
+      "opcode" : 71,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'I'" },
+        { "kind" : "IdRef", "name" : "'N'" }
+      ]
+    },
+    {
+      "opname" : "Refract",
+      "opcode" : 72,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'I'" },
+        { "kind" : "IdRef", "name" : "'N'" },
+        { "kind" : "IdRef", "name" : "'eta'" }
+      ]
+    },
+    {
+      "opname" : "FindILsb",
+      "opcode" : 73,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'Value'" }
+      ]
+    },
+    {
+      "opname" : "FindSMsb",
+      "opcode" : 74,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'Value'" }
+      ]
+    },
+    {
+      "opname" : "FindUMsb",
+      "opcode" : 75,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'Value'" }
+      ]
+    },
+    {
+      "opname" : "InterpolateAtCentroid",
+      "opcode" : 76,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'interpolant'" }
+      ],
+      "capabilities" : [ "InterpolationFunction" ]
+    },
+    {
+      "opname" : "InterpolateAtSample",
+      "opcode" : 77,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'interpolant'" },
+        { "kind" : "IdRef", "name" : "'sample'" }
+      ],
+      "capabilities" : [ "InterpolationFunction" ]
+    },
+    {
+      "opname" : "InterpolateAtOffset",
+      "opcode" : 78,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'interpolant'" },
+        { "kind" : "IdRef", "name" : "'offset'" }
+      ],
+      "capabilities" : [ "InterpolationFunction" ]
+    },
+    {
+      "opname" : "NMin",
+      "opcode" : 79,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "NMax",
+      "opcode" : 80,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "NClamp",
+      "opcode" : 81,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'minVal'" },
+        { "kind" : "IdRef", "name" : "'maxVal'" }
+      ]
+    }
+  ]
+}
diff --git a/libs/spirv-headers/spirv/1.1/extinst.opencl.std.100.grammar.json b/libs/spirv-headers/spirv/1.1/extinst.opencl.std.100.grammar.json
new file mode 100644
index 00000000000..4fe45060bb9
--- /dev/null
+++ b/libs/spirv-headers/spirv/1.1/extinst.opencl.std.100.grammar.json
@@ -0,0 +1,1279 @@
+{
+  "copyright" : [
+    "Copyright (c) 2014-2016 The Khronos Group Inc.",
+    "",
+    "Permission is hereby granted, free of charge, to any person obtaining a copy",
+    "of this software and/or associated documentation files (the \"Materials\"),",
+    "to deal in the Materials without restriction, including without limitation",
+    "the rights to use, copy, modify, merge, publish, distribute, sublicense,",
+    "and/or sell copies of the Materials, and to permit persons to whom the",
+    "Materials are furnished to do so, subject to the following conditions:",
+    "",
+    "The above copyright notice and this permission notice shall be included in",
+    "all copies or substantial portions of the Materials.",
+    "",
+    "MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS KHRONOS",
+    "STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS SPECIFICATIONS AND",
+    "HEADER INFORMATION ARE LOCATED AT https://www.khronos.org/registry/ ",
+    "",
+    "THE MATERIALS ARE PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS",
+    "OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,",
+    "FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL",
+    "THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER",
+    "LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING",
+    "FROM,OUT OF OR IN CONNECTION WITH THE MATERIALS OR THE USE OR OTHER DEALINGS",
+    "IN THE MATERIALS."
+  ],
+  "version" : 100,
+  "revision" : 2,
+  "instructions" : [
+    {
+      "opname" : "acos",
+      "opcode" : 0,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "acosh",
+      "opcode" : 1,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "acospi",
+      "opcode" : 2,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "asin",
+      "opcode" : 3,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "asinh",
+      "opcode" : 4,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "asinpi",
+      "opcode" : 5,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "atan",
+      "opcode" : 6,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "atan2",
+      "opcode" : 7,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'y'" },
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "atanh",
+      "opcode" : 8,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "atanpi",
+      "opcode" : 9,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "atan2pi",
+      "opcode" : 10,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'y'" },
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "cbrt",
+      "opcode" : 11,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "ceil",
+      "opcode" : 12,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "copysign",
+      "opcode" : 13,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "cos",
+      "opcode" : 14,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "cosh",
+      "opcode" : 15,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "cospi",
+      "opcode" : 16,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "erfc",
+      "opcode" : 17,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "erf",
+      "opcode" : 18,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "exp",
+      "opcode" : 19,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "exp2",
+      "opcode" : 20,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "exp10",
+      "opcode" : 21,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "expm1",
+      "opcode" : 22,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "fabs",
+      "opcode" : 23,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "fdim",
+      "opcode" : 24,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "floor",
+      "opcode" : 25,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "fma",
+      "opcode" : 26,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'a'" },
+        { "kind" : "IdRef", "name" : "'b'" },
+        { "kind" : "IdRef", "name" : "'c'" }
+      ]
+    },
+    {
+      "opname" : "fmax",
+      "opcode" : 27,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "fmin",
+      "opcode" : 28,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "fmod",
+      "opcode" : 29,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "fract",
+      "opcode" : 30,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'ptr'" }
+      ]
+    },
+    {
+      "opname" : "frexp",
+      "opcode" : 31,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'exp'" }
+      ]
+    },
+    {
+      "opname" : "hypot",
+      "opcode" : 32,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "ilogb",
+      "opcode" : 33,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "ldexp",
+      "opcode" : 34,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'k'" }
+      ]
+    },
+    {
+      "opname" : "lgamma",
+      "opcode" : 35,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "lgamma_r",
+      "opcode" : 36,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'signp'" }
+      ]
+    },
+    {
+      "opname" : "log",
+      "opcode" : 37,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "log2",
+      "opcode" : 38,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "log10",
+      "opcode" : 39,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "log1p",
+      "opcode" : 40,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "logb",
+      "opcode" : 41,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "mad",
+      "opcode" : 42,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'a'" },
+        { "kind" : "IdRef", "name" : "'b'" },
+        { "kind" : "IdRef", "name" : "'c'" }
+      ]
+    },
+    {
+      "opname" : "maxmag",
+      "opcode" : 43,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "minmag",
+      "opcode" : 44,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "modf",
+      "opcode" : 45,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'iptr'" }
+      ]
+    },
+    {
+      "opname" : "nan",
+      "opcode" : 46,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'nancode'" }
+      ]
+    },
+    {
+      "opname" : "nextafter",
+      "opcode" : 47,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "pow",
+      "opcode" : 48,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y" }
+      ]
+    },
+    {
+      "opname" : "pown",
+      "opcode" : 49,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "powr",
+      "opcode" : 50,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "remainder",
+      "opcode" : 51,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "remquo",
+      "opcode" : 52,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" },
+        { "kind" : "IdRef", "name" : "'quo'" }
+      ]
+    },
+    {
+      "opname" : "rint",
+      "opcode" : 53,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "rootn",
+      "opcode" : 54,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "round",
+      "opcode" : 55,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "rsqrt",
+      "opcode" : 56,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "sin",
+      "opcode" : 57,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "sincos",
+      "opcode" : 58,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'cosval'" }
+      ]
+    },
+    {
+      "opname" : "sinh",
+      "opcode" : 59,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "sinpi",
+      "opcode" : 60,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "sqrt",
+      "opcode" : 61,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "tan",
+      "opcode" : 62,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "tanh",
+      "opcode" : 63,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "tanpi",
+      "opcode" : 64,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "tgamma",
+      "opcode" : 65,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "trunc",
+      "opcode" : 66,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "half_cos",
+      "opcode" : 67,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "half_divide",
+      "opcode" : 68,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "half_exp",
+      "opcode" : 69,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "half_exp2",
+      "opcode" : 70,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "half_exp10",
+      "opcode" : 71,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "half_log",
+      "opcode" : 72,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "half_log2",
+      "opcode" : 73,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "half_log10",
+      "opcode" : 74,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "half_powr",
+      "opcode" : 75,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "half_recip",
+      "opcode" : 76,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "half_rsqrt",
+      "opcode" : 77,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "half_sin",
+      "opcode" : 78,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "half_sqrt",
+      "opcode" : 79,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "half_tan",
+      "opcode" : 80,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "native_cos",
+      "opcode" : 81,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "native_divide",
+      "opcode" : 82,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "native_exp",
+      "opcode" : 83,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "native_exp2",
+      "opcode" : 84,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "native_exp10",
+      "opcode" : 85,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "native_log",
+      "opcode" : 86,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "native_log2",
+      "opcode" : 87,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "native_log10",
+      "opcode" : 88,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "native_powr",
+      "opcode" : 89,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "native_recip",
+      "opcode" : 90,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "native_rsqrt",
+      "opcode" : 91,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "native_sin",
+      "opcode" : 92,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "native_sqrt",
+      "opcode" : 93,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "native_tan",
+      "opcode" : 94,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "s_abs",
+      "opcode" : 141,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "s_abs_diff",
+      "opcode" : 142,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "s_add_sat",
+      "opcode" : 143,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "u_add_sat",
+      "opcode" : 144,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "s_hadd",
+      "opcode" : 145,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "u_hadd",
+      "opcode" : 146,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "s_rhadd",
+      "opcode" : 147,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "u_rhadd",
+      "opcode" : 148,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "s_clamp",
+      "opcode" : 149,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'minval'" },
+        { "kind" : "IdRef", "name" : "'maxval'" }
+      ]
+    },
+    {
+      "opname" : "u_clamp",
+      "opcode" : 150,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'minval'" },
+        { "kind" : "IdRef", "name" : "'maxval'" }
+      ]
+    },
+    {
+      "opname" : "clz",
+      "opcode" : 151,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "ctz",
+      "opcode" : 152,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "s_mad_hi",
+      "opcode" : 153,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'a'" },
+        { "kind" : "IdRef", "name" : "'b'" },
+        { "kind" : "IdRef", "name" : "'c'" }
+      ]
+    },
+    {
+      "opname" : "u_mad_sat",
+      "opcode" : 154,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" },
+        { "kind" : "IdRef", "name" : "'z'" }
+      ]
+    },
+    {
+      "opname" : "s_mad_sat",
+      "opcode" : 155,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" },
+        { "kind" : "IdRef", "name" : "'z'" }
+      ]
+    },
+    {
+      "opname" : "s_max",
+      "opcode" : 156,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "u_max",
+      "opcode" : 157,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "s_min",
+      "opcode" : 158,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "u_min",
+      "opcode" : 159,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "s_mul_hi",
+      "opcode" : 160,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "rotate",
+      "opcode" : 161,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'v'" },
+        { "kind" : "IdRef", "name" : "'i'" }
+      ]
+    },
+    {
+      "opname" : "s_sub_sat",
+      "opcode" : 162,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "u_sub_sat",
+      "opcode" : 163,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "u_upsample",
+      "opcode" : 164,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'hi'" },
+        { "kind" : "IdRef", "name" : "'lo'" }
+      ]
+    },
+    {
+      "opname" : "s_upsample",
+      "opcode" : 165,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'hi'" },
+        { "kind" : "IdRef", "name" : "'lo'" }
+      ]
+    },
+    {
+      "opname" : "popcount",
+      "opcode" : 166,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "s_mad24",
+      "opcode" : 167,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" },
+        { "kind" : "IdRef", "name" : "'z'" }
+      ]
+    },
+    {
+      "opname" : "u_mad24",
+      "opcode" : 168,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" },
+        { "kind" : "IdRef", "name" : "'z'" }
+      ]
+    },
+    {
+      "opname" : "s_mul24",
+      "opcode" : 169,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "u_mul24",
+      "opcode" : 170,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "u_abs",
+      "opcode" : 201,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "u_abs_diff",
+      "opcode" : 202,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "u_mul_hi",
+      "opcode" : 203,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "u_mad_hi",
+      "opcode" : 204,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'a'" },
+        { "kind" : "IdRef", "name" : "'b'" },
+        { "kind" : "IdRef", "name" : "'c'" }
+      ]
+    },
+    {
+      "opname" : "fclamp",
+      "opcode" : 95,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'minval'" },
+        { "kind" : "IdRef", "name" : "'maxval'" }
+      ]
+    },
+    {
+      "opname" : "degrees",
+      "opcode" :96,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'radians'" }
+      ]
+    },
+    {
+      "opname" : "fmax_common",
+      "opcode" : 97,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "fmin_common",
+      "opcode" : 98,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "mix",
+      "opcode" : 99,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" },
+        { "kind" : "IdRef", "name" : "'a'" }
+      ]
+    },
+    {
+      "opname" : "radians",
+      "opcode" : 100,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'degrees'" }
+      ]
+    },
+    {
+      "opname" : "step",
+      "opcode" : 101,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'edge'" },
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "smoothstep",
+      "opcode" : 102,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'edge0'" },
+        { "kind" : "IdRef", "name" : "'edge1'" },
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "sign",
+      "opcode" : 103,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "cross",
+      "opcode" : 104,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'p0'" },
+        { "kind" : "IdRef", "name" : "'p1'" }
+      ]
+    },
+    {
+      "opname" : "distance",
+      "opcode" : 105,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'p0'" },
+        { "kind" : "IdRef", "name" : "'p1'" }
+      ]
+    },
+    {
+      "opname" : "length",
+      "opcode" : 106,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'p'" }
+      ]
+    },
+    {
+      "opname" : "normalize",
+      "opcode" : 107,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'p'" }
+      ]
+    },
+    {
+      "opname" : "fast_distance",
+      "opcode" : 108,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'p0'" },
+        { "kind" : "IdRef", "name" : "'p1'" }
+      ]
+    },
+    {
+      "opname" : "fast_length",
+      "opcode" : 109,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'p'" }
+      ]
+    },
+    {
+      "opname" : "fast_normalize",
+      "opcode" : 110,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'p'" }
+      ]
+    },
+    {
+      "opname" : "bitselect",
+      "opcode" : 186,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'a'" },
+        { "kind" : "IdRef", "name" : "'b'" },
+        { "kind" : "IdRef", "name" : "'c'" }
+      ]
+    },
+    {
+      "opname" : "select",
+      "opcode" : 187,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'a'" },
+        { "kind" : "IdRef", "name" : "'b'" },
+        { "kind" : "IdRef", "name" : "'c'" }
+      ]
+    },
+    {
+      "opname" : "vloadn",
+      "opcode" : 171,
+      "operands" : [
+        { "kind" : "IdRef",          "name" : "'offset'" },
+        { "kind" : "IdRef",          "name" : "'p'" },
+        { "kind" : "LiteralInteger", "name" : "'n'" }
+      ]
+    },
+    {
+      "opname" : "vstoren",
+      "opcode" : 172,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'data'" },
+        { "kind" : "IdRef", "name" : "'offset'" },
+        { "kind" : "IdRef", "name" : "'p'" }
+      ]
+    },
+    {
+      "opname" : "vload_half",
+      "opcode" : 173,
+      "operands" : [
+        { "kind" : "IdRef",          "name" : "'offset'" },
+        { "kind" : "IdRef",          "name" : "'p'" }
+      ]
+    },
+    {
+      "opname" : "vload_halfn",
+      "opcode" : 174,
+      "operands" : [
+        { "kind" : "IdRef",          "name" : "'offset'" },
+        { "kind" : "IdRef",          "name" : "'p'" },
+        { "kind" : "LiteralInteger", "name" : "'n'" }
+      ]
+    },
+    {
+      "opname" : "vstore_half",
+      "opcode" : 175,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'data'" },
+        { "kind" : "IdRef", "name" : "'offset'" },
+        { "kind" : "IdRef", "name" : "'p'" }
+      ]
+    },
+    {
+      "opname" : "vstore_half_r",
+      "opcode" : 176,
+      "operands" : [
+        { "kind" : "IdRef",          "name" : "'data'" },
+        { "kind" : "IdRef",          "name" : "'offset'" },
+        { "kind" : "IdRef",          "name" : "'p'" },
+        { "kind" : "FPRoundingMode", "name" : "'mode'" }
+      ]
+    },
+    {
+      "opname" : "vstore_halfn",
+      "opcode" : 177,
+      "operands" : [
+        { "kind" : "IdRef",          "name" : "'data'" },
+        { "kind" : "IdRef",          "name" : "'offset'" },
+        { "kind" : "IdRef",          "name" : "'p'" }
+      ]
+    },
+    {
+      "opname" : "vstore_halfn_r",
+      "opcode" : 178,
+      "operands" : [
+        { "kind" : "IdRef",          "name" : "'data'" },
+        { "kind" : "IdRef",          "name" : "'offset'" },
+        { "kind" : "IdRef",          "name" : "'p'" },
+        { "kind" : "FPRoundingMode", "name" : "'mode'" }
+      ]
+    },
+    {
+      "opname" : "vloada_halfn",
+      "opcode" : 179,
+      "operands" : [
+        { "kind" : "IdRef",          "name" : "'offset'" },
+        { "kind" : "IdRef",          "name" : "'p'" },
+        { "kind" : "LiteralInteger", "name" : "'n'" }
+      ]
+    },
+    {
+      "opname" : "vstorea_halfn",
+      "opcode" : 180,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'data'" },
+        { "kind" : "IdRef", "name" : "'offset'" },
+        { "kind" : "IdRef", "name" : "'p'" }
+      ]
+    },
+    {
+      "opname" : "vstorea_halfn_r",
+      "opcode" : 181,
+      "operands" : [
+        { "kind" : "IdRef",          "name" : "'data'" },
+        { "kind" : "IdRef",          "name" : "'offset'" },
+        { "kind" : "IdRef",          "name" : "'p'" },
+        { "kind" : "FPRoundingMode", "name" : "'mode'" }
+      ]
+    },
+    {
+      "opname" : "shuffle",
+      "opcode" : 182,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'shuffle mask'" }
+      ]
+    },
+    {
+      "opname" : "shuffle2",
+      "opcode" : 183,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" },
+        { "kind" : "IdRef", "name" : "'shuffle mask'" }
+      ]
+    },
+    {
+      "opname" : "printf",
+      "opcode" : 184,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'format'" },
+        { "kind" : "IdRef", "name" : "'additional arguments'", "quantifier" : "*" }
+      ]
+    },
+    {
+      "opname" : "prefetch",
+      "opcode" : 185,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'ptr'" },
+        { "kind" : "IdRef", "name" : "'num elements'" }
+      ]
+    }
+  ]
+}
diff --git a/libs/spirv-headers/spirv/1.1/spirv.core.grammar.json b/libs/spirv-headers/spirv/1.1/spirv.core.grammar.json
new file mode 100644
index 00000000000..c142e60a175
--- /dev/null
+++ b/libs/spirv-headers/spirv/1.1/spirv.core.grammar.json
@@ -0,0 +1,5938 @@
+{
+  "copyright" : [
+    "Copyright (c) 2014-2016 The Khronos Group Inc.",
+    "",
+    "Permission is hereby granted, free of charge, to any person obtaining a copy",
+    "of this software and/or associated documentation files (the \"Materials\"),",
+    "to deal in the Materials without restriction, including without limitation",
+    "the rights to use, copy, modify, merge, publish, distribute, sublicense,",
+    "and/or sell copies of the Materials, and to permit persons to whom the",
+    "Materials are furnished to do so, subject to the following conditions:",
+    "",
+    "The above copyright notice and this permission notice shall be included in",
+    "all copies or substantial portions of the Materials.",
+    "",
+    "MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS KHRONOS",
+    "STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS SPECIFICATIONS AND",
+    "HEADER INFORMATION ARE LOCATED AT https://www.khronos.org/registry/ ",
+    "",
+    "THE MATERIALS ARE PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS",
+    "OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,",
+    "FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL",
+    "THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER",
+    "LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING",
+    "FROM,OUT OF OR IN CONNECTION WITH THE MATERIALS OR THE USE OR OTHER DEALINGS",
+    "IN THE MATERIALS."
+  ],
+  "magic_number" : "0x07230203",
+  "major_version" : 1,
+  "minor_version" : 1,
+  "revision" : 8,
+  "instructions" : [
+    {
+      "opname" : "OpNop",
+      "opcode" : 0
+    },
+    {
+      "opname" : "OpUndef",
+      "opcode" : 1,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" }
+      ]
+    },
+    {
+      "opname" : "OpSourceContinued",
+      "opcode" : 2,
+      "operands" : [
+        { "kind" : "LiteralString", "name" : "'Continued Source'" }
+      ]
+    },
+    {
+      "opname" : "OpSource",
+      "opcode" : 3,
+      "operands" : [
+        { "kind" : "SourceLanguage" },
+        { "kind" : "LiteralInteger",                     "name" : "'Version'" },
+        { "kind" : "IdRef",          "quantifier" : "?", "name" : "'File'" },
+        { "kind" : "LiteralString",  "quantifier" : "?", "name" : "'Source'" }
+      ]
+    },
+    {
+      "opname" : "OpSourceExtension",
+      "opcode" : 4,
+      "operands" : [
+        { "kind" : "LiteralString", "name" : "'Extension'" }
+      ]
+    },
+    {
+      "opname" : "OpName",
+      "opcode" : 5,
+      "operands" : [
+        { "kind" : "IdRef",         "name" : "'Target'" },
+        { "kind" : "LiteralString", "name" : "'Name'" }
+      ]
+    },
+    {
+      "opname" : "OpMemberName",
+      "opcode" : 6,
+      "operands" : [
+        { "kind" : "IdRef",          "name" : "'Type'" },
+        { "kind" : "LiteralInteger", "name" : "'Member'" },
+        { "kind" : "LiteralString",  "name" : "'Name'" }
+      ]
+    },
+    {
+      "opname" : "OpString",
+      "opcode" : 7,
+      "operands" : [
+        { "kind" : "IdResult" },
+        { "kind" : "LiteralString", "name" : "'String'" }
+      ]
+    },
+    {
+      "opname" : "OpLine",
+      "opcode" : 8,
+      "operands" : [
+        { "kind" : "IdRef",          "name" : "'File'" },
+        { "kind" : "LiteralInteger", "name" : "'Line'" },
+        { "kind" : "LiteralInteger", "name" : "'Column'" }
+      ]
+    },
+    {
+      "opname" : "OpExtension",
+      "opcode" : 10,
+      "operands" : [
+        { "kind" : "LiteralString", "name" : "'Name'" }
+      ]
+    },
+    {
+      "opname" : "OpExtInstImport",
+      "opcode" : 11,
+      "operands" : [
+        { "kind" : "IdResult" },
+        { "kind" : "LiteralString", "name" : "'Name'" }
+      ]
+    },
+    {
+      "opname" : "OpExtInst",
+      "opcode" : 12,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",                                     "name" : "'Set'" },
+        { "kind" : "LiteralExtInstInteger",                     "name" : "'Instruction'" },
+        { "kind" : "IdRef",                 "quantifier" : "*", "name" : "'Operand 1', +\n'Operand 2', +\n..." }
+      ]
+    },
+    {
+      "opname" : "OpMemoryModel",
+      "opcode" : 14,
+      "operands" : [
+        { "kind" : "AddressingModel" },
+        { "kind" : "MemoryModel" }
+      ]
+    },
+    {
+      "opname" : "OpEntryPoint",
+      "opcode" : 15,
+      "operands" : [
+        { "kind" : "ExecutionModel" },
+        { "kind" : "IdRef",                              "name" : "'Entry Point'" },
+        { "kind" : "LiteralString",                      "name" : "'Name'" },
+        { "kind" : "IdRef",          "quantifier" : "*", "name" : "'Interface'" }
+      ]
+    },
+    {
+      "opname" : "OpExecutionMode",
+      "opcode" : 16,
+      "operands" : [
+        { "kind" : "IdRef",         "name" : "'Entry Point'" },
+        { "kind" : "ExecutionMode", "name" : "'Mode'" }
+      ]
+    },
+    {
+      "opname" : "OpCapability",
+      "opcode" : 17,
+      "operands" : [
+        { "kind" : "Capability", "name" : "'Capability'" }
+      ]
+    },
+    {
+      "opname" : "OpTypeVoid",
+      "opcode" : 19,
+      "operands" : [
+        { "kind" : "IdResult" }
+      ]
+    },
+    {
+      "opname" : "OpTypeBool",
+      "opcode" : 20,
+      "operands" : [
+        { "kind" : "IdResult" }
+      ]
+    },
+    {
+      "opname" : "OpTypeInt",
+      "opcode" : 21,
+      "operands" : [
+        { "kind" : "IdResult" },
+        { "kind" : "LiteralInteger", "name" : "'Width'" },
+        { "kind" : "LiteralInteger", "name" : "'Signedness'" }
+      ]
+    },
+    {
+      "opname" : "OpTypeFloat",
+      "opcode" : 22,
+      "operands" : [
+        { "kind" : "IdResult" },
+        { "kind" : "LiteralInteger", "name" : "'Width'" }
+      ]
+    },
+    {
+      "opname" : "OpTypeVector",
+      "opcode" : 23,
+      "operands" : [
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",          "name" : "'Component Type'" },
+        { "kind" : "LiteralInteger", "name" : "'Component Count'" }
+      ]
+    },
+    {
+      "opname" : "OpTypeMatrix",
+      "opcode" : 24,
+      "operands" : [
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",          "name" : "'Column Type'" },
+        { "kind" : "LiteralInteger", "name" : "'Column Count'" }
+      ],
+      "capabilities" : [ "Matrix" ]
+    },
+    {
+      "opname" : "OpTypeImage",
+      "opcode" : 25,
+      "operands" : [
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",                               "name" : "'Sampled Type'" },
+        { "kind" : "Dim" },
+        { "kind" : "LiteralInteger",                      "name" : "'Depth'" },
+        { "kind" : "LiteralInteger",                      "name" : "'Arrayed'" },
+        { "kind" : "LiteralInteger",                      "name" : "'MS'" },
+        { "kind" : "LiteralInteger",                      "name" : "'Sampled'" },
+        { "kind" : "ImageFormat" },
+        { "kind" : "AccessQualifier", "quantifier" : "?" }
+      ]
+    },
+    {
+      "opname" : "OpTypeSampler",
+      "opcode" : 26,
+      "operands" : [
+        { "kind" : "IdResult" }
+      ]
+    },
+    {
+      "opname" : "OpTypeSampledImage",
+      "opcode" : 27,
+      "operands" : [
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",    "name" : "'Image Type'" }
+      ]
+    },
+    {
+      "opname" : "OpTypeArray",
+      "opcode" : 28,
+      "operands" : [
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",    "name" : "'Element Type'" },
+        { "kind" : "IdRef",    "name" : "'Length'" }
+      ]
+    },
+    {
+      "opname" : "OpTypeRuntimeArray",
+      "opcode" : 29,
+      "operands" : [
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",    "name" : "'Element Type'" }
+      ],
+      "capabilities" : [ "Shader" ]
+    },
+    {
+      "opname" : "OpTypeStruct",
+      "opcode" : 30,
+      "operands" : [
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",    "quantifier" : "*", "name" : "'Member 0 type', +\n'member 1 type', +\n..." }
+      ]
+    },
+    {
+      "opname" : "OpTypeOpaque",
+      "opcode" : 31,
+      "operands" : [
+        { "kind" : "IdResult" },
+        { "kind" : "LiteralString", "name" : "The name of the opaque type." }
+      ],
+      "capabilities" : [ "Kernel" ]
+    },
+    {
+      "opname" : "OpTypePointer",
+      "opcode" : 32,
+      "operands" : [
+        { "kind" : "IdResult" },
+        { "kind" : "StorageClass" },
+        { "kind" : "IdRef",        "name" : "'Type'" }
+      ]
+    },
+    {
+      "opname" : "OpTypeFunction",
+      "opcode" : 33,
+      "operands" : [
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",                        "name" : "'Return Type'" },
+        { "kind" : "IdRef",    "quantifier" : "*", "name" : "'Parameter 0 Type', +\n'Parameter 1 Type', +\n..." }
+      ]
+    },
+    {
+      "opname" : "OpTypeEvent",
+      "opcode" : 34,
+      "operands" : [
+        { "kind" : "IdResult" }
+      ],
+      "capabilities" : [ "Kernel" ]
+    },
+    {
+      "opname" : "OpTypeDeviceEvent",
+      "opcode" : 35,
+      "operands" : [
+        { "kind" : "IdResult" }
+      ],
+      "capabilities" : [ "DeviceEnqueue" ]
+    },
+    {
+      "opname" : "OpTypeReserveId",
+      "opcode" : 36,
+      "operands" : [
+        { "kind" : "IdResult" }
+      ],
+      "capabilities" : [ "Pipes" ]
+    },
+    {
+      "opname" : "OpTypeQueue",
+      "opcode" : 37,
+      "operands" : [
+        { "kind" : "IdResult" }
+      ],
+      "capabilities" : [ "DeviceEnqueue" ]
+    },
+    {
+      "opname" : "OpTypePipe",
+      "opcode" : 38,
+      "operands" : [
+        { "kind" : "IdResult" },
+        { "kind" : "AccessQualifier", "name" : "'Qualifier'" }
+      ],
+      "capabilities" : [ "Pipes" ]
+    },
+    {
+      "opname" : "OpTypeForwardPointer",
+      "opcode" : 39,
+      "operands" : [
+        { "kind" : "IdRef",        "name" : "'Pointer Type'" },
+        { "kind" : "StorageClass" }
+      ],
+      "capabilities" : [ "Addresses" ]
+    },
+    {
+      "opname" : "OpConstantTrue",
+      "opcode" : 41,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" }
+      ]
+    },
+    {
+      "opname" : "OpConstantFalse",
+      "opcode" : 42,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" }
+      ]
+    },
+    {
+      "opname" : "OpConstant",
+      "opcode" : 43,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "LiteralContextDependentNumber", "name" : "'Value'" }
+      ]
+    },
+    {
+      "opname" : "OpConstantComposite",
+      "opcode" : 44,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "quantifier" : "*", "name" : "'Constituents'" }
+      ]
+    },
+    {
+      "opname" : "OpConstantSampler",
+      "opcode" : 45,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "SamplerAddressingMode" },
+        { "kind" : "LiteralInteger",        "name" : "'Param'" },
+        { "kind" : "SamplerFilterMode" }
+      ],
+      "capabilities" : [ "LiteralSampler" ]
+    },
+    {
+      "opname" : "OpConstantNull",
+      "opcode" : 46,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" }
+      ]
+    },
+    {
+      "opname" : "OpSpecConstantTrue",
+      "opcode" : 48,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" }
+      ]
+    },
+    {
+      "opname" : "OpSpecConstantFalse",
+      "opcode" : 49,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" }
+      ]
+    },
+    {
+      "opname" : "OpSpecConstant",
+      "opcode" : 50,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "LiteralContextDependentNumber", "name" : "'Value'" }
+      ]
+    },
+    {
+      "opname" : "OpSpecConstantComposite",
+      "opcode" : 51,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "quantifier" : "*", "name" : "'Constituents'" }
+      ]
+    },
+    {
+      "opname" : "OpSpecConstantOp",
+      "opcode" : 52,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "LiteralSpecConstantOpInteger", "name" : "'Opcode'" }
+      ]
+    },
+    {
+      "opname" : "OpFunction",
+      "opcode" : 54,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "FunctionControl" },
+        { "kind" : "IdRef",           "name" : "'Function Type'" }
+      ]
+    },
+    {
+      "opname" : "OpFunctionParameter",
+      "opcode" : 55,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" }
+      ]
+    },
+    {
+      "opname" : "OpFunctionEnd",
+      "opcode" : 56
+    },
+    {
+      "opname" : "OpFunctionCall",
+      "opcode" : 57,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",                            "name" : "'Function'" },
+        { "kind" : "IdRef",        "quantifier" : "*", "name" : "'Argument 0', +\n'Argument 1', +\n..." }
+      ]
+    },
+    {
+      "opname" : "OpVariable",
+      "opcode" : 59,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "StorageClass" },
+        { "kind" : "IdRef",        "quantifier" : "?", "name" : "'Initializer'" }
+      ]
+    },
+    {
+      "opname" : "OpImageTexelPointer",
+      "opcode" : 60,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Image'" },
+        { "kind" : "IdRef",        "name" : "'Coordinate'" },
+        { "kind" : "IdRef",        "name" : "'Sample'" }
+      ]
+    },
+    {
+      "opname" : "OpLoad",
+      "opcode" : 61,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",                            "name" : "'Pointer'" },
+        { "kind" : "MemoryAccess", "quantifier" : "?" }
+      ]
+    },
+    {
+      "opname" : "OpStore",
+      "opcode" : 62,
+      "operands" : [
+        { "kind" : "IdRef",                            "name" : "'Pointer'" },
+        { "kind" : "IdRef",                            "name" : "'Object'" },
+        { "kind" : "MemoryAccess", "quantifier" : "?" }
+      ]
+    },
+    {
+      "opname" : "OpCopyMemory",
+      "opcode" : 63,
+      "operands" : [
+        { "kind" : "IdRef",                            "name" : "'Target'" },
+        { "kind" : "IdRef",                            "name" : "'Source'" },
+        { "kind" : "MemoryAccess", "quantifier" : "?" }
+      ]
+    },
+    {
+      "opname" : "OpCopyMemorySized",
+      "opcode" : 64,
+      "operands" : [
+        { "kind" : "IdRef",                            "name" : "'Target'" },
+        { "kind" : "IdRef",                            "name" : "'Source'" },
+        { "kind" : "IdRef",                            "name" : "'Size'" },
+        { "kind" : "MemoryAccess", "quantifier" : "?" }
+      ],
+      "capabilities" : [ "Addresses" ]
+    },
+    {
+      "opname" : "OpAccessChain",
+      "opcode" : 65,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",                            "name" : "'Base'" },
+        { "kind" : "IdRef",        "quantifier" : "*", "name" : "'Indexes'" }
+      ]
+    },
+    {
+      "opname" : "OpInBoundsAccessChain",
+      "opcode" : 66,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",                            "name" : "'Base'" },
+        { "kind" : "IdRef",        "quantifier" : "*", "name" : "'Indexes'" }
+      ]
+    },
+    {
+      "opname" : "OpPtrAccessChain",
+      "opcode" : 67,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",                            "name" : "'Base'" },
+        { "kind" : "IdRef",                            "name" : "'Element'" },
+        { "kind" : "IdRef",        "quantifier" : "*", "name" : "'Indexes'" }
+      ],
+      "capabilities" : [
+        "Addresses",
+        "VariablePointers",
+        "VariablePointersStorageBuffer"
+      ]
+    },
+    {
+      "opname" : "OpArrayLength",
+      "opcode" : 68,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",          "name" : "'Structure'" },
+        { "kind" : "LiteralInteger", "name" : "'Array member'" }
+      ],
+      "capabilities" : [ "Shader" ]
+    },
+    {
+      "opname" : "OpGenericPtrMemSemantics",
+      "opcode" : 69,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Pointer'" }
+      ],
+      "capabilities" : [ "Kernel" ]
+    },
+    {
+      "opname" : "OpInBoundsPtrAccessChain",
+      "opcode" : 70,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",                            "name" : "'Base'" },
+        { "kind" : "IdRef",                            "name" : "'Element'" },
+        { "kind" : "IdRef",        "quantifier" : "*", "name" : "'Indexes'" }
+      ],
+      "capabilities" : [ "Addresses" ]
+    },
+    {
+      "opname" : "OpDecorate",
+      "opcode" : 71,
+      "operands" : [
+        { "kind" : "IdRef",      "name" : "'Target'" },
+        { "kind" : "Decoration" }
+      ]
+    },
+    {
+      "opname" : "OpMemberDecorate",
+      "opcode" : 72,
+      "operands" : [
+        { "kind" : "IdRef",          "name" : "'Structure Type'" },
+        { "kind" : "LiteralInteger", "name" : "'Member'" },
+        { "kind" : "Decoration" }
+      ]
+    },
+    {
+      "opname" : "OpDecorationGroup",
+      "opcode" : 73,
+      "operands" : [
+        { "kind" : "IdResult" }
+      ]
+    },
+    {
+      "opname" : "OpGroupDecorate",
+      "opcode" : 74,
+      "operands" : [
+        { "kind" : "IdRef",                     "name" : "'Decoration Group'" },
+        { "kind" : "IdRef", "quantifier" : "*", "name" : "'Targets'" }
+      ]
+    },
+    {
+      "opname" : "OpGroupMemberDecorate",
+      "opcode" : 75,
+      "operands" : [
+        { "kind" : "IdRef",                                       "name" : "'Decoration Group'" },
+        { "kind" : "PairIdRefLiteralInteger", "quantifier" : "*", "name" : "'Targets'" }
+      ]
+    },
+    {
+      "opname" : "OpVectorExtractDynamic",
+      "opcode" : 77,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Vector'" },
+        { "kind" : "IdRef",        "name" : "'Index'" }
+      ]
+    },
+    {
+      "opname" : "OpVectorInsertDynamic",
+      "opcode" : 78,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Vector'" },
+        { "kind" : "IdRef",        "name" : "'Component'" },
+        { "kind" : "IdRef",        "name" : "'Index'" }
+      ]
+    },
+    {
+      "opname" : "OpVectorShuffle",
+      "opcode" : 79,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",                              "name" : "'Vector 1'" },
+        { "kind" : "IdRef",                              "name" : "'Vector 2'" },
+        { "kind" : "LiteralInteger", "quantifier" : "*", "name" : "'Components'" }
+      ]
+    },
+    {
+      "opname" : "OpCompositeConstruct",
+      "opcode" : 80,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "quantifier" : "*", "name" : "'Constituents'" }
+      ]
+    },
+    {
+      "opname" : "OpCompositeExtract",
+      "opcode" : 81,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",                              "name" : "'Composite'" },
+        { "kind" : "LiteralInteger", "quantifier" : "*", "name" : "'Indexes'" }
+      ]
+    },
+    {
+      "opname" : "OpCompositeInsert",
+      "opcode" : 82,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",                              "name" : "'Object'" },
+        { "kind" : "IdRef",                              "name" : "'Composite'" },
+        { "kind" : "LiteralInteger", "quantifier" : "*", "name" : "'Indexes'" }
+      ]
+    },
+    {
+      "opname" : "OpCopyObject",
+      "opcode" : 83,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand'" }
+      ]
+    },
+    {
+      "opname" : "OpTranspose",
+      "opcode" : 84,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Matrix'" }
+      ],
+      "capabilities" : [ "Matrix" ]
+    },
+    {
+      "opname" : "OpSampledImage",
+      "opcode" : 86,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Image'" },
+        { "kind" : "IdRef",        "name" : "'Sampler'" }
+      ]
+    },
+    {
+      "opname" : "OpImageSampleImplicitLod",
+      "opcode" : 87,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",                             "name" : "'Sampled Image'" },
+        { "kind" : "IdRef",                             "name" : "'Coordinate'" },
+        { "kind" : "ImageOperands", "quantifier" : "?" }
+      ],
+      "capabilities" : [ "Shader" ]
+    },
+    {
+      "opname" : "OpImageSampleExplicitLod",
+      "opcode" : 88,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",         "name" : "'Sampled Image'" },
+        { "kind" : "IdRef",         "name" : "'Coordinate'" },
+        { "kind" : "ImageOperands" }
+      ]
+    },
+    {
+      "opname" : "OpImageSampleDrefImplicitLod",
+      "opcode" : 89,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",                             "name" : "'Sampled Image'" },
+        { "kind" : "IdRef",                             "name" : "'Coordinate'" },
+        { "kind" : "IdRef",                             "name" : "'D~ref~'" },
+        { "kind" : "ImageOperands", "quantifier" : "?" }
+      ],
+      "capabilities" : [ "Shader" ]
+    },
+    {
+      "opname" : "OpImageSampleDrefExplicitLod",
+      "opcode" : 90,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",         "name" : "'Sampled Image'" },
+        { "kind" : "IdRef",         "name" : "'Coordinate'" },
+        { "kind" : "IdRef",         "name" : "'D~ref~'" },
+        { "kind" : "ImageOperands" }
+      ],
+      "capabilities" : [ "Shader" ]
+    },
+    {
+      "opname" : "OpImageSampleProjImplicitLod",
+      "opcode" : 91,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",                             "name" : "'Sampled Image'" },
+        { "kind" : "IdRef",                             "name" : "'Coordinate'" },
+        { "kind" : "ImageOperands", "quantifier" : "?" }
+      ],
+      "capabilities" : [ "Shader" ]
+    },
+    {
+      "opname" : "OpImageSampleProjExplicitLod",
+      "opcode" : 92,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",         "name" : "'Sampled Image'" },
+        { "kind" : "IdRef",         "name" : "'Coordinate'" },
+        { "kind" : "ImageOperands" }
+      ],
+      "capabilities" : [ "Shader" ]
+    },
+    {
+      "opname" : "OpImageSampleProjDrefImplicitLod",
+      "opcode" : 93,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",                             "name" : "'Sampled Image'" },
+        { "kind" : "IdRef",                             "name" : "'Coordinate'" },
+        { "kind" : "IdRef",                             "name" : "'D~ref~'" },
+        { "kind" : "ImageOperands", "quantifier" : "?" }
+      ],
+      "capabilities" : [ "Shader" ]
+    },
+    {
+      "opname" : "OpImageSampleProjDrefExplicitLod",
+      "opcode" : 94,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",         "name" : "'Sampled Image'" },
+        { "kind" : "IdRef",         "name" : "'Coordinate'" },
+        { "kind" : "IdRef",         "name" : "'D~ref~'" },
+        { "kind" : "ImageOperands" }
+      ],
+      "capabilities" : [ "Shader" ]
+    },
+    {
+      "opname" : "OpImageFetch",
+      "opcode" : 95,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",                             "name" : "'Image'" },
+        { "kind" : "IdRef",                             "name" : "'Coordinate'" },
+        { "kind" : "ImageOperands", "quantifier" : "?" }
+      ]
+    },
+    {
+      "opname" : "OpImageGather",
+      "opcode" : 96,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",                             "name" : "'Sampled Image'" },
+        { "kind" : "IdRef",                             "name" : "'Coordinate'" },
+        { "kind" : "IdRef",                             "name" : "'Component'" },
+        { "kind" : "ImageOperands", "quantifier" : "?" }
+      ],
+      "capabilities" : [ "Shader" ]
+    },
+    {
+      "opname" : "OpImageDrefGather",
+      "opcode" : 97,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",                             "name" : "'Sampled Image'" },
+        { "kind" : "IdRef",                             "name" : "'Coordinate'" },
+        { "kind" : "IdRef",                             "name" : "'D~ref~'" },
+        { "kind" : "ImageOperands", "quantifier" : "?" }
+      ],
+      "capabilities" : [ "Shader" ]
+    },
+    {
+      "opname" : "OpImageRead",
+      "opcode" : 98,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",                             "name" : "'Image'" },
+        { "kind" : "IdRef",                             "name" : "'Coordinate'" },
+        { "kind" : "ImageOperands", "quantifier" : "?" }
+      ]
+    },
+    {
+      "opname" : "OpImageWrite",
+      "opcode" : 99,
+      "operands" : [
+        { "kind" : "IdRef",                             "name" : "'Image'" },
+        { "kind" : "IdRef",                             "name" : "'Coordinate'" },
+        { "kind" : "IdRef",                             "name" : "'Texel'" },
+        { "kind" : "ImageOperands", "quantifier" : "?" }
+      ]
+    },
+    {
+      "opname" : "OpImage",
+      "opcode" : 100,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Sampled Image'" }
+      ]
+    },
+    {
+      "opname" : "OpImageQueryFormat",
+      "opcode" : 101,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Image'" }
+      ],
+      "capabilities" : [ "Kernel" ]
+    },
+    {
+      "opname" : "OpImageQueryOrder",
+      "opcode" : 102,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Image'" }
+      ],
+      "capabilities" : [ "Kernel" ]
+    },
+    {
+      "opname" : "OpImageQuerySizeLod",
+      "opcode" : 103,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Image'" },
+        { "kind" : "IdRef",        "name" : "'Level of Detail'" }
+      ],
+      "capabilities" : [ "Kernel", "ImageQuery" ]
+    },
+    {
+      "opname" : "OpImageQuerySize",
+      "opcode" : 104,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Image'" }
+      ],
+      "capabilities" : [ "Kernel", "ImageQuery" ]
+    },
+    {
+      "opname" : "OpImageQueryLod",
+      "opcode" : 105,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Sampled Image'" },
+        { "kind" : "IdRef",        "name" : "'Coordinate'" }
+      ],
+      "capabilities" : [ "ImageQuery" ]
+    },
+    {
+      "opname" : "OpImageQueryLevels",
+      "opcode" : 106,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Image'" }
+      ],
+      "capabilities" : [ "Kernel", "ImageQuery" ]
+    },
+    {
+      "opname" : "OpImageQuerySamples",
+      "opcode" : 107,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Image'" }
+      ],
+      "capabilities" : [ "Kernel", "ImageQuery" ]
+    },
+    {
+      "opname" : "OpConvertFToU",
+      "opcode" : 109,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Float Value'" }
+      ]
+    },
+    {
+      "opname" : "OpConvertFToS",
+      "opcode" : 110,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Float Value'" }
+      ]
+    },
+    {
+      "opname" : "OpConvertSToF",
+      "opcode" : 111,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Signed Value'" }
+      ]
+    },
+    {
+      "opname" : "OpConvertUToF",
+      "opcode" : 112,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Unsigned Value'" }
+      ]
+    },
+    {
+      "opname" : "OpUConvert",
+      "opcode" : 113,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Unsigned Value'" }
+      ]
+    },
+    {
+      "opname" : "OpSConvert",
+      "opcode" : 114,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Signed Value'" }
+      ]
+    },
+    {
+      "opname" : "OpFConvert",
+      "opcode" : 115,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Float Value'" }
+      ]
+    },
+    {
+      "opname" : "OpQuantizeToF16",
+      "opcode" : 116,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Value'" }
+      ]
+    },
+    {
+      "opname" : "OpConvertPtrToU",
+      "opcode" : 117,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Pointer'" }
+      ],
+      "capabilities" : [ "Addresses" ]
+    },
+    {
+      "opname" : "OpSatConvertSToU",
+      "opcode" : 118,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Signed Value'" }
+      ],
+      "capabilities" : [ "Kernel" ]
+    },
+    {
+      "opname" : "OpSatConvertUToS",
+      "opcode" : 119,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Unsigned Value'" }
+      ],
+      "capabilities" : [ "Kernel" ]
+    },
+    {
+      "opname" : "OpConvertUToPtr",
+      "opcode" : 120,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Integer Value'" }
+      ],
+      "capabilities" : [ "Addresses" ]
+    },
+    {
+      "opname" : "OpPtrCastToGeneric",
+      "opcode" : 121,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Pointer'" }
+      ],
+      "capabilities" : [ "Kernel" ]
+    },
+    {
+      "opname" : "OpGenericCastToPtr",
+      "opcode" : 122,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Pointer'" }
+      ],
+      "capabilities" : [ "Kernel" ]
+    },
+    {
+      "opname" : "OpGenericCastToPtrExplicit",
+      "opcode" : 123,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Pointer'" },
+        { "kind" : "StorageClass", "name" : "'Storage'" }
+      ],
+      "capabilities" : [ "Kernel" ]
+    },
+    {
+      "opname" : "OpBitcast",
+      "opcode" : 124,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand'" }
+      ]
+    },
+    {
+      "opname" : "OpSNegate",
+      "opcode" : 126,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand'" }
+      ]
+    },
+    {
+      "opname" : "OpFNegate",
+      "opcode" : 127,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand'" }
+      ]
+    },
+    {
+      "opname" : "OpIAdd",
+      "opcode" : 128,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpFAdd",
+      "opcode" : 129,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpISub",
+      "opcode" : 130,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpFSub",
+      "opcode" : 131,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpIMul",
+      "opcode" : 132,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpFMul",
+      "opcode" : 133,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpUDiv",
+      "opcode" : 134,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpSDiv",
+      "opcode" : 135,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpFDiv",
+      "opcode" : 136,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpUMod",
+      "opcode" : 137,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpSRem",
+      "opcode" : 138,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpSMod",
+      "opcode" : 139,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpFRem",
+      "opcode" : 140,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpFMod",
+      "opcode" : 141,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpVectorTimesScalar",
+      "opcode" : 142,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Vector'" },
+        { "kind" : "IdRef",        "name" : "'Scalar'" }
+      ]
+    },
+    {
+      "opname" : "OpMatrixTimesScalar",
+      "opcode" : 143,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Matrix'" },
+        { "kind" : "IdRef",        "name" : "'Scalar'" }
+      ],
+      "capabilities" : [ "Matrix" ]
+    },
+    {
+      "opname" : "OpVectorTimesMatrix",
+      "opcode" : 144,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Vector'" },
+        { "kind" : "IdRef",        "name" : "'Matrix'" }
+      ],
+      "capabilities" : [ "Matrix" ]
+    },
+    {
+      "opname" : "OpMatrixTimesVector",
+      "opcode" : 145,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Matrix'" },
+        { "kind" : "IdRef",        "name" : "'Vector'" }
+      ],
+      "capabilities" : [ "Matrix" ]
+    },
+    {
+      "opname" : "OpMatrixTimesMatrix",
+      "opcode" : 146,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'LeftMatrix'" },
+        { "kind" : "IdRef",        "name" : "'RightMatrix'" }
+      ],
+      "capabilities" : [ "Matrix" ]
+    },
+    {
+      "opname" : "OpOuterProduct",
+      "opcode" : 147,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Vector 1'" },
+        { "kind" : "IdRef",        "name" : "'Vector 2'" }
+      ],
+      "capabilities" : [ "Matrix" ]
+    },
+    {
+      "opname" : "OpDot",
+      "opcode" : 148,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Vector 1'" },
+        { "kind" : "IdRef",        "name" : "'Vector 2'" }
+      ]
+    },
+    {
+      "opname" : "OpIAddCarry",
+      "opcode" : 149,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpISubBorrow",
+      "opcode" : 150,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpUMulExtended",
+      "opcode" : 151,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpSMulExtended",
+      "opcode" : 152,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpAny",
+      "opcode" : 154,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Vector'" }
+      ]
+    },
+    {
+      "opname" : "OpAll",
+      "opcode" : 155,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Vector'" }
+      ]
+    },
+    {
+      "opname" : "OpIsNan",
+      "opcode" : 156,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "OpIsInf",
+      "opcode" : 157,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "OpIsFinite",
+      "opcode" : 158,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'x'" }
+      ],
+      "capabilities" : [ "Kernel" ]
+    },
+    {
+      "opname" : "OpIsNormal",
+      "opcode" : 159,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'x'" }
+      ],
+      "capabilities" : [ "Kernel" ]
+    },
+    {
+      "opname" : "OpSignBitSet",
+      "opcode" : 160,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'x'" }
+      ],
+      "capabilities" : [ "Kernel" ]
+    },
+    {
+      "opname" : "OpLessOrGreater",
+      "opcode" : 161,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'x'" },
+        { "kind" : "IdRef",        "name" : "'y'" }
+      ],
+      "capabilities" : [ "Kernel" ]
+    },
+    {
+      "opname" : "OpOrdered",
+      "opcode" : 162,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'x'" },
+        { "kind" : "IdRef",        "name" : "'y'" }
+      ],
+      "capabilities" : [ "Kernel" ]
+    },
+    {
+      "opname" : "OpUnordered",
+      "opcode" : 163,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'x'" },
+        { "kind" : "IdRef",        "name" : "'y'" }
+      ],
+      "capabilities" : [ "Kernel" ]
+    },
+    {
+      "opname" : "OpLogicalEqual",
+      "opcode" : 164,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpLogicalNotEqual",
+      "opcode" : 165,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpLogicalOr",
+      "opcode" : 166,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpLogicalAnd",
+      "opcode" : 167,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpLogicalNot",
+      "opcode" : 168,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand'" }
+      ]
+    },
+    {
+      "opname" : "OpSelect",
+      "opcode" : 169,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Condition'" },
+        { "kind" : "IdRef",        "name" : "'Object 1'" },
+        { "kind" : "IdRef",        "name" : "'Object 2'" }
+      ]
+    },
+    {
+      "opname" : "OpIEqual",
+      "opcode" : 170,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpINotEqual",
+      "opcode" : 171,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpUGreaterThan",
+      "opcode" : 172,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpSGreaterThan",
+      "opcode" : 173,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpUGreaterThanEqual",
+      "opcode" : 174,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpSGreaterThanEqual",
+      "opcode" : 175,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpULessThan",
+      "opcode" : 176,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpSLessThan",
+      "opcode" : 177,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpULessThanEqual",
+      "opcode" : 178,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpSLessThanEqual",
+      "opcode" : 179,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpFOrdEqual",
+      "opcode" : 180,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpFUnordEqual",
+      "opcode" : 181,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpFOrdNotEqual",
+      "opcode" : 182,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpFUnordNotEqual",
+      "opcode" : 183,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpFOrdLessThan",
+      "opcode" : 184,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpFUnordLessThan",
+      "opcode" : 185,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpFOrdGreaterThan",
+      "opcode" : 186,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpFUnordGreaterThan",
+      "opcode" : 187,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpFOrdLessThanEqual",
+      "opcode" : 188,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpFUnordLessThanEqual",
+      "opcode" : 189,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpFOrdGreaterThanEqual",
+      "opcode" : 190,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpFUnordGreaterThanEqual",
+      "opcode" : 191,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpShiftRightLogical",
+      "opcode" : 194,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Base'" },
+        { "kind" : "IdRef",        "name" : "'Shift'" }
+      ]
+    },
+    {
+      "opname" : "OpShiftRightArithmetic",
+      "opcode" : 195,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Base'" },
+        { "kind" : "IdRef",        "name" : "'Shift'" }
+      ]
+    },
+    {
+      "opname" : "OpShiftLeftLogical",
+      "opcode" : 196,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Base'" },
+        { "kind" : "IdRef",        "name" : "'Shift'" }
+      ]
+    },
+    {
+      "opname" : "OpBitwiseOr",
+      "opcode" : 197,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpBitwiseXor",
+      "opcode" : 198,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpBitwiseAnd",
+      "opcode" : 199,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpNot",
+      "opcode" : 200,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand'" }
+      ]
+    },
+    {
+      "opname" : "OpBitFieldInsert",
+      "opcode" : 201,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Base'" },
+        { "kind" : "IdRef",        "name" : "'Insert'" },
+        { "kind" : "IdRef",        "name" : "'Offset'" },
+        { "kind" : "IdRef",        "name" : "'Count'" }
+      ],
+      "capabilities" : [ "Shader" ]
+    },
+    {
+      "opname" : "OpBitFieldSExtract",
+      "opcode" : 202,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Base'" },
+        { "kind" : "IdRef",        "name" : "'Offset'" },
+        { "kind" : "IdRef",        "name" : "'Count'" }
+      ],
+      "capabilities" : [ "Shader" ]
+    },
+    {
+      "opname" : "OpBitFieldUExtract",
+      "opcode" : 203,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Base'" },
+        { "kind" : "IdRef",        "name" : "'Offset'" },
+        { "kind" : "IdRef",        "name" : "'Count'" }
+      ],
+      "capabilities" : [ "Shader" ]
+    },
+    {
+      "opname" : "OpBitReverse",
+      "opcode" : 204,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Base'" }
+      ],
+      "capabilities" : [ "Shader" ]
+    },
+    {
+      "opname" : "OpBitCount",
+      "opcode" : 205,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Base'" }
+      ]
+    },
+    {
+      "opname" : "OpDPdx",
+      "opcode" : 207,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'P'" }
+      ],
+      "capabilities" : [ "Shader" ]
+    },
+    {
+      "opname" : "OpDPdy",
+      "opcode" : 208,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'P'" }
+      ],
+      "capabilities" : [ "Shader" ]
+    },
+    {
+      "opname" : "OpFwidth",
+      "opcode" : 209,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'P'" }
+      ],
+      "capabilities" : [ "Shader" ]
+    },
+    {
+      "opname" : "OpDPdxFine",
+      "opcode" : 210,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'P'" }
+      ],
+      "capabilities" : [ "DerivativeControl" ]
+    },
+    {
+      "opname" : "OpDPdyFine",
+      "opcode" : 211,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'P'" }
+      ],
+      "capabilities" : [ "DerivativeControl" ]
+    },
+    {
+      "opname" : "OpFwidthFine",
+      "opcode" : 212,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'P'" }
+      ],
+      "capabilities" : [ "DerivativeControl" ]
+    },
+    {
+      "opname" : "OpDPdxCoarse",
+      "opcode" : 213,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'P'" }
+      ],
+      "capabilities" : [ "DerivativeControl" ]
+    },
+    {
+      "opname" : "OpDPdyCoarse",
+      "opcode" : 214,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'P'" }
+      ],
+      "capabilities" : [ "DerivativeControl" ]
+    },
+    {
+      "opname" : "OpFwidthCoarse",
+      "opcode" : 215,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'P'" }
+      ],
+      "capabilities" : [ "DerivativeControl" ]
+    },
+    {
+      "opname" : "OpEmitVertex",
+      "opcode" : 218,
+      "capabilities" : [ "Geometry" ]
+    },
+    {
+      "opname" : "OpEndPrimitive",
+      "opcode" : 219,
+      "capabilities" : [ "Geometry" ]
+    },
+    {
+      "opname" : "OpEmitStreamVertex",
+      "opcode" : 220,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'Stream'" }
+      ],
+      "capabilities" : [ "GeometryStreams" ]
+    },
+    {
+      "opname" : "OpEndStreamPrimitive",
+      "opcode" : 221,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'Stream'" }
+      ],
+      "capabilities" : [ "GeometryStreams" ]
+    },
+    {
+      "opname" : "OpControlBarrier",
+      "opcode" : 224,
+      "operands" : [
+        { "kind" : "IdScope",           "name" : "'Execution'" },
+        { "kind" : "IdScope",           "name" : "'Memory'" },
+        { "kind" : "IdMemorySemantics", "name" : "'Semantics'" }
+      ]
+    },
+    {
+      "opname" : "OpMemoryBarrier",
+      "opcode" : 225,
+      "operands" : [
+        { "kind" : "IdScope",           "name" : "'Memory'" },
+        { "kind" : "IdMemorySemantics", "name" : "'Semantics'" }
+      ]
+    },
+    {
+      "opname" : "OpAtomicLoad",
+      "opcode" : 227,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",             "name" : "'Pointer'" },
+        { "kind" : "IdScope",           "name" : "'Scope'" },
+        { "kind" : "IdMemorySemantics", "name" : "'Semantics'" }
+      ]
+    },
+    {
+      "opname" : "OpAtomicStore",
+      "opcode" : 228,
+      "operands" : [
+        { "kind" : "IdRef",             "name" : "'Pointer'" },
+        { "kind" : "IdScope",           "name" : "'Scope'" },
+        { "kind" : "IdMemorySemantics", "name" : "'Semantics'" },
+        { "kind" : "IdRef",             "name" : "'Value'" }
+      ]
+    },
+    {
+      "opname" : "OpAtomicExchange",
+      "opcode" : 229,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",             "name" : "'Pointer'" },
+        { "kind" : "IdScope",           "name" : "'Scope'" },
+        { "kind" : "IdMemorySemantics", "name" : "'Semantics'" },
+        { "kind" : "IdRef",             "name" : "'Value'" }
+      ]
+    },
+    {
+      "opname" : "OpAtomicCompareExchange",
+      "opcode" : 230,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",             "name" : "'Pointer'" },
+        { "kind" : "IdScope",           "name" : "'Scope'" },
+        { "kind" : "IdMemorySemantics", "name" : "'Equal'" },
+        { "kind" : "IdMemorySemantics", "name" : "'Unequal'" },
+        { "kind" : "IdRef",             "name" : "'Value'" },
+        { "kind" : "IdRef",             "name" : "'Comparator'" }
+      ]
+    },
+    {
+      "opname" : "OpAtomicCompareExchangeWeak",
+      "opcode" : 231,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",             "name" : "'Pointer'" },
+        { "kind" : "IdScope",           "name" : "'Scope'" },
+        { "kind" : "IdMemorySemantics", "name" : "'Equal'" },
+        { "kind" : "IdMemorySemantics", "name" : "'Unequal'" },
+        { "kind" : "IdRef",             "name" : "'Value'" },
+        { "kind" : "IdRef",             "name" : "'Comparator'" }
+      ],
+      "capabilities" : [ "Kernel" ]
+    },
+    {
+      "opname" : "OpAtomicIIncrement",
+      "opcode" : 232,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",             "name" : "'Pointer'" },
+        { "kind" : "IdScope",           "name" : "'Scope'" },
+        { "kind" : "IdMemorySemantics", "name" : "'Semantics'" }
+      ]
+    },
+    {
+      "opname" : "OpAtomicIDecrement",
+      "opcode" : 233,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",             "name" : "'Pointer'" },
+        { "kind" : "IdScope",           "name" : "'Scope'" },
+        { "kind" : "IdMemorySemantics", "name" : "'Semantics'" }
+      ]
+    },
+    {
+      "opname" : "OpAtomicIAdd",
+      "opcode" : 234,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",             "name" : "'Pointer'" },
+        { "kind" : "IdScope",           "name" : "'Scope'" },
+        { "kind" : "IdMemorySemantics", "name" : "'Semantics'" },
+        { "kind" : "IdRef",             "name" : "'Value'" }
+      ]
+    },
+    {
+      "opname" : "OpAtomicISub",
+      "opcode" : 235,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",             "name" : "'Pointer'" },
+        { "kind" : "IdScope",           "name" : "'Scope'" },
+        { "kind" : "IdMemorySemantics", "name" : "'Semantics'" },
+        { "kind" : "IdRef",             "name" : "'Value'" }
+      ]
+    },
+    {
+      "opname" : "OpAtomicSMin",
+      "opcode" : 236,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",             "name" : "'Pointer'" },
+        { "kind" : "IdScope",           "name" : "'Scope'" },
+        { "kind" : "IdMemorySemantics", "name" : "'Semantics'" },
+        { "kind" : "IdRef",             "name" : "'Value'" }
+      ]
+    },
+    {
+      "opname" : "OpAtomicUMin",
+      "opcode" : 237,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",             "name" : "'Pointer'" },
+        { "kind" : "IdScope",           "name" : "'Scope'" },
+        { "kind" : "IdMemorySemantics", "name" : "'Semantics'" },
+        { "kind" : "IdRef",             "name" : "'Value'" }
+      ]
+    },
+    {
+      "opname" : "OpAtomicSMax",
+      "opcode" : 238,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",             "name" : "'Pointer'" },
+        { "kind" : "IdScope",           "name" : "'Scope'" },
+        { "kind" : "IdMemorySemantics", "name" : "'Semantics'" },
+        { "kind" : "IdRef",             "name" : "'Value'" }
+      ]
+    },
+    {
+      "opname" : "OpAtomicUMax",
+      "opcode" : 239,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",             "name" : "'Pointer'" },
+        { "kind" : "IdScope",           "name" : "'Scope'" },
+        { "kind" : "IdMemorySemantics", "name" : "'Semantics'" },
+        { "kind" : "IdRef",             "name" : "'Value'" }
+      ]
+    },
+    {
+      "opname" : "OpAtomicAnd",
+      "opcode" : 240,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",             "name" : "'Pointer'" },
+        { "kind" : "IdScope",           "name" : "'Scope'" },
+        { "kind" : "IdMemorySemantics", "name" : "'Semantics'" },
+        { "kind" : "IdRef",             "name" : "'Value'" }
+      ]
+    },
+    {
+      "opname" : "OpAtomicOr",
+      "opcode" : 241,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",             "name" : "'Pointer'" },
+        { "kind" : "IdScope",           "name" : "'Scope'" },
+        { "kind" : "IdMemorySemantics", "name" : "'Semantics'" },
+        { "kind" : "IdRef",             "name" : "'Value'" }
+      ]
+    },
+    {
+      "opname" : "OpAtomicXor",
+      "opcode" : 242,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",             "name" : "'Pointer'" },
+        { "kind" : "IdScope",           "name" : "'Scope'" },
+        { "kind" : "IdMemorySemantics", "name" : "'Semantics'" },
+        { "kind" : "IdRef",             "name" : "'Value'" }
+      ]
+    },
+    {
+      "opname" : "OpPhi",
+      "opcode" : 245,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "PairIdRefIdRef", "quantifier" : "*", "name" : "'Variable, Parent, ...'" }
+      ]
+    },
+    {
+      "opname" : "OpLoopMerge",
+      "opcode" : 246,
+      "operands" : [
+        { "kind" : "IdRef",       "name" : "'Merge Block'" },
+        { "kind" : "IdRef",       "name" : "'Continue Target'" },
+        { "kind" : "LoopControl" }
+      ]
+    },
+    {
+      "opname" : "OpSelectionMerge",
+      "opcode" : 247,
+      "operands" : [
+        { "kind" : "IdRef",            "name" : "'Merge Block'" },
+        { "kind" : "SelectionControl" }
+      ]
+    },
+    {
+      "opname" : "OpLabel",
+      "opcode" : 248,
+      "operands" : [
+        { "kind" : "IdResult" }
+      ]
+    },
+    {
+      "opname" : "OpBranch",
+      "opcode" : 249,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'Target Label'" }
+      ]
+    },
+    {
+      "opname" : "OpBranchConditional",
+      "opcode" : 250,
+      "operands" : [
+        { "kind" : "IdRef",                              "name" : "'Condition'" },
+        { "kind" : "IdRef",                              "name" : "'True Label'" },
+        { "kind" : "IdRef",                              "name" : "'False Label'" },
+        { "kind" : "LiteralInteger", "quantifier" : "*", "name" : "'Branch weights'" }
+      ]
+    },
+    {
+      "opname" : "OpSwitch",
+      "opcode" : 251,
+      "operands" : [
+        { "kind" : "IdRef",                                       "name" : "'Selector'" },
+        { "kind" : "IdRef",                                       "name" : "'Default'" },
+        { "kind" : "PairLiteralIntegerIdRef", "quantifier" : "*", "name" : "'Target'" }
+      ]
+    },
+    {
+      "opname" : "OpKill",
+      "opcode" : 252,
+      "capabilities" : [ "Shader" ]
+    },
+    {
+      "opname" : "OpReturn",
+      "opcode" : 253
+    },
+    {
+      "opname" : "OpReturnValue",
+      "opcode" : 254,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'Value'" }
+      ]
+    },
+    {
+      "opname" : "OpUnreachable",
+      "opcode" : 255
+    },
+    {
+      "opname" : "OpLifetimeStart",
+      "opcode" : 256,
+      "operands" : [
+        { "kind" : "IdRef",          "name" : "'Pointer'" },
+        { "kind" : "LiteralInteger", "name" : "'Size'" }
+      ],
+      "capabilities" : [ "Kernel" ]
+    },
+    {
+      "opname" : "OpLifetimeStop",
+      "opcode" : 257,
+      "operands" : [
+        { "kind" : "IdRef",          "name" : "'Pointer'" },
+        { "kind" : "LiteralInteger", "name" : "'Size'" }
+      ],
+      "capabilities" : [ "Kernel" ]
+    },
+    {
+      "opname" : "OpGroupAsyncCopy",
+      "opcode" : 259,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdScope",      "name" : "'Execution'" },
+        { "kind" : "IdRef",        "name" : "'Destination'" },
+        { "kind" : "IdRef",        "name" : "'Source'" },
+        { "kind" : "IdRef",        "name" : "'Num Elements'" },
+        { "kind" : "IdRef",        "name" : "'Stride'" },
+        { "kind" : "IdRef",        "name" : "'Event'" }
+      ],
+      "capabilities" : [ "Kernel" ]
+    },
+    {
+      "opname" : "OpGroupWaitEvents",
+      "opcode" : 260,
+      "operands" : [
+        { "kind" : "IdScope", "name" : "'Execution'" },
+        { "kind" : "IdRef",   "name" : "'Num Events'" },
+        { "kind" : "IdRef",   "name" : "'Events List'" }
+      ],
+      "capabilities" : [ "Kernel" ]
+    },
+    {
+      "opname" : "OpGroupAll",
+      "opcode" : 261,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdScope",      "name" : "'Execution'" },
+        { "kind" : "IdRef",        "name" : "'Predicate'" }
+      ],
+      "capabilities" : [ "Groups" ]
+    },
+    {
+      "opname" : "OpGroupAny",
+      "opcode" : 262,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdScope",      "name" : "'Execution'" },
+        { "kind" : "IdRef",        "name" : "'Predicate'" }
+      ],
+      "capabilities" : [ "Groups" ]
+    },
+    {
+      "opname" : "OpGroupBroadcast",
+      "opcode" : 263,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdScope",      "name" : "'Execution'" },
+        { "kind" : "IdRef",        "name" : "'Value'" },
+        { "kind" : "IdRef",        "name" : "'LocalId'" }
+      ],
+      "capabilities" : [ "Groups" ]
+    },
+    {
+      "opname" : "OpGroupIAdd",
+      "opcode" : 264,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdScope",        "name" : "'Execution'" },
+        { "kind" : "GroupOperation", "name" : "'Operation'" },
+        { "kind" : "IdRef",          "name" : "'X'" }
+      ],
+      "capabilities" : [ "Groups" ]
+    },
+    {
+      "opname" : "OpGroupFAdd",
+      "opcode" : 265,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdScope",        "name" : "'Execution'" },
+        { "kind" : "GroupOperation", "name" : "'Operation'" },
+        { "kind" : "IdRef",          "name" : "'X'" }
+      ],
+      "capabilities" : [ "Groups" ]
+    },
+    {
+      "opname" : "OpGroupFMin",
+      "opcode" : 266,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdScope",        "name" : "'Execution'" },
+        { "kind" : "GroupOperation", "name" : "'Operation'" },
+        { "kind" : "IdRef",          "name" : "'X'" }
+      ],
+      "capabilities" : [ "Groups" ]
+    },
+    {
+      "opname" : "OpGroupUMin",
+      "opcode" : 267,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdScope",        "name" : "'Execution'" },
+        { "kind" : "GroupOperation", "name" : "'Operation'" },
+        { "kind" : "IdRef",          "name" : "'X'" }
+      ],
+      "capabilities" : [ "Groups" ]
+    },
+    {
+      "opname" : "OpGroupSMin",
+      "opcode" : 268,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdScope",        "name" : "'Execution'" },
+        { "kind" : "GroupOperation", "name" : "'Operation'" },
+        { "kind" : "IdRef",          "name" : "'X'" }
+      ],
+      "capabilities" : [ "Groups" ]
+    },
+    {
+      "opname" : "OpGroupFMax",
+      "opcode" : 269,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdScope",        "name" : "'Execution'" },
+        { "kind" : "GroupOperation", "name" : "'Operation'" },
+        { "kind" : "IdRef",          "name" : "'X'" }
+      ],
+      "capabilities" : [ "Groups" ]
+    },
+    {
+      "opname" : "OpGroupUMax",
+      "opcode" : 270,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdScope",        "name" : "'Execution'" },
+        { "kind" : "GroupOperation", "name" : "'Operation'" },
+        { "kind" : "IdRef",          "name" : "'X'" }
+      ],
+      "capabilities" : [ "Groups" ]
+    },
+    {
+      "opname" : "OpGroupSMax",
+      "opcode" : 271,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdScope",        "name" : "'Execution'" },
+        { "kind" : "GroupOperation", "name" : "'Operation'" },
+        { "kind" : "IdRef",          "name" : "'X'" }
+      ],
+      "capabilities" : [ "Groups" ]
+    },
+    {
+      "opname" : "OpReadPipe",
+      "opcode" : 274,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Pipe'" },
+        { "kind" : "IdRef",        "name" : "'Pointer'" },
+        { "kind" : "IdRef",        "name" : "'Packet Size'" },
+        { "kind" : "IdRef",        "name" : "'Packet Alignment'" }
+      ],
+      "capabilities" : [ "Pipes" ]
+    },
+    {
+      "opname" : "OpWritePipe",
+      "opcode" : 275,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Pipe'" },
+        { "kind" : "IdRef",        "name" : "'Pointer'" },
+        { "kind" : "IdRef",        "name" : "'Packet Size'" },
+        { "kind" : "IdRef",        "name" : "'Packet Alignment'" }
+      ],
+      "capabilities" : [ "Pipes" ]
+    },
+    {
+      "opname" : "OpReservedReadPipe",
+      "opcode" : 276,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Pipe'" },
+        { "kind" : "IdRef",        "name" : "'Reserve Id'" },
+        { "kind" : "IdRef",        "name" : "'Index'" },
+        { "kind" : "IdRef",        "name" : "'Pointer'" },
+        { "kind" : "IdRef",        "name" : "'Packet Size'" },
+        { "kind" : "IdRef",        "name" : "'Packet Alignment'" }
+      ],
+      "capabilities" : [ "Pipes" ]
+    },
+    {
+      "opname" : "OpReservedWritePipe",
+      "opcode" : 277,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Pipe'" },
+        { "kind" : "IdRef",        "name" : "'Reserve Id'" },
+        { "kind" : "IdRef",        "name" : "'Index'" },
+        { "kind" : "IdRef",        "name" : "'Pointer'" },
+        { "kind" : "IdRef",        "name" : "'Packet Size'" },
+        { "kind" : "IdRef",        "name" : "'Packet Alignment'" }
+      ],
+      "capabilities" : [ "Pipes" ]
+    },
+    {
+      "opname" : "OpReserveReadPipePackets",
+      "opcode" : 278,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Pipe'" },
+        { "kind" : "IdRef",        "name" : "'Num Packets'" },
+        { "kind" : "IdRef",        "name" : "'Packet Size'" },
+        { "kind" : "IdRef",        "name" : "'Packet Alignment'" }
+      ],
+      "capabilities" : [ "Pipes" ]
+    },
+    {
+      "opname" : "OpReserveWritePipePackets",
+      "opcode" : 279,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Pipe'" },
+        { "kind" : "IdRef",        "name" : "'Num Packets'" },
+        { "kind" : "IdRef",        "name" : "'Packet Size'" },
+        { "kind" : "IdRef",        "name" : "'Packet Alignment'" }
+      ],
+      "capabilities" : [ "Pipes" ]
+    },
+    {
+      "opname" : "OpCommitReadPipe",
+      "opcode" : 280,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'Pipe'" },
+        { "kind" : "IdRef", "name" : "'Reserve Id'" },
+        { "kind" : "IdRef", "name" : "'Packet Size'" },
+        { "kind" : "IdRef", "name" : "'Packet Alignment'" }
+      ],
+      "capabilities" : [ "Pipes" ]
+    },
+    {
+      "opname" : "OpCommitWritePipe",
+      "opcode" : 281,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'Pipe'" },
+        { "kind" : "IdRef", "name" : "'Reserve Id'" },
+        { "kind" : "IdRef", "name" : "'Packet Size'" },
+        { "kind" : "IdRef", "name" : "'Packet Alignment'" }
+      ],
+      "capabilities" : [ "Pipes" ]
+    },
+    {
+      "opname" : "OpIsValidReserveId",
+      "opcode" : 282,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Reserve Id'" }
+      ],
+      "capabilities" : [ "Pipes" ]
+    },
+    {
+      "opname" : "OpGetNumPipePackets",
+      "opcode" : 283,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Pipe'" },
+        { "kind" : "IdRef",        "name" : "'Packet Size'" },
+        { "kind" : "IdRef",        "name" : "'Packet Alignment'" }
+      ],
+      "capabilities" : [ "Pipes" ]
+    },
+    {
+      "opname" : "OpGetMaxPipePackets",
+      "opcode" : 284,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Pipe'" },
+        { "kind" : "IdRef",        "name" : "'Packet Size'" },
+        { "kind" : "IdRef",        "name" : "'Packet Alignment'" }
+      ],
+      "capabilities" : [ "Pipes" ]
+    },
+    {
+      "opname" : "OpGroupReserveReadPipePackets",
+      "opcode" : 285,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdScope",      "name" : "'Execution'" },
+        { "kind" : "IdRef",        "name" : "'Pipe'" },
+        { "kind" : "IdRef",        "name" : "'Num Packets'" },
+        { "kind" : "IdRef",        "name" : "'Packet Size'" },
+        { "kind" : "IdRef",        "name" : "'Packet Alignment'" }
+      ],
+      "capabilities" : [ "Pipes" ]
+    },
+    {
+      "opname" : "OpGroupReserveWritePipePackets",
+      "opcode" : 286,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdScope",      "name" : "'Execution'" },
+        { "kind" : "IdRef",        "name" : "'Pipe'" },
+        { "kind" : "IdRef",        "name" : "'Num Packets'" },
+        { "kind" : "IdRef",        "name" : "'Packet Size'" },
+        { "kind" : "IdRef",        "name" : "'Packet Alignment'" }
+      ],
+      "capabilities" : [ "Pipes" ]
+    },
+    {
+      "opname" : "OpGroupCommitReadPipe",
+      "opcode" : 287,
+      "operands" : [
+        { "kind" : "IdScope", "name" : "'Execution'" },
+        { "kind" : "IdRef",   "name" : "'Pipe'" },
+        { "kind" : "IdRef",   "name" : "'Reserve Id'" },
+        { "kind" : "IdRef",   "name" : "'Packet Size'" },
+        { "kind" : "IdRef",   "name" : "'Packet Alignment'" }
+      ],
+      "capabilities" : [ "Pipes" ]
+    },
+    {
+      "opname" : "OpGroupCommitWritePipe",
+      "opcode" : 288,
+      "operands" : [
+        { "kind" : "IdScope", "name" : "'Execution'" },
+        { "kind" : "IdRef",   "name" : "'Pipe'" },
+        { "kind" : "IdRef",   "name" : "'Reserve Id'" },
+        { "kind" : "IdRef",   "name" : "'Packet Size'" },
+        { "kind" : "IdRef",   "name" : "'Packet Alignment'" }
+      ],
+      "capabilities" : [ "Pipes" ]
+    },
+    {
+      "opname" : "OpEnqueueMarker",
+      "opcode" : 291,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Queue'" },
+        { "kind" : "IdRef",        "name" : "'Num Events'" },
+        { "kind" : "IdRef",        "name" : "'Wait Events'" },
+        { "kind" : "IdRef",        "name" : "'Ret Event'" }
+      ],
+      "capabilities" : [ "DeviceEnqueue" ]
+    },
+    {
+      "opname" : "OpEnqueueKernel",
+      "opcode" : 292,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",                            "name" : "'Queue'" },
+        { "kind" : "IdRef",                            "name" : "'Flags'" },
+        { "kind" : "IdRef",                            "name" : "'ND Range'" },
+        { "kind" : "IdRef",                            "name" : "'Num Events'" },
+        { "kind" : "IdRef",                            "name" : "'Wait Events'" },
+        { "kind" : "IdRef",                            "name" : "'Ret Event'" },
+        { "kind" : "IdRef",                            "name" : "'Invoke'" },
+        { "kind" : "IdRef",                            "name" : "'Param'" },
+        { "kind" : "IdRef",                            "name" : "'Param Size'" },
+        { "kind" : "IdRef",                            "name" : "'Param Align'" },
+        { "kind" : "IdRef",        "quantifier" : "*", "name" : "'Local Size'" }
+      ],
+      "capabilities" : [ "DeviceEnqueue" ]
+    },
+    {
+      "opname" : "OpGetKernelNDrangeSubGroupCount",
+      "opcode" : 293,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'ND Range'" },
+        { "kind" : "IdRef",        "name" : "'Invoke'" },
+        { "kind" : "IdRef",        "name" : "'Param'" },
+        { "kind" : "IdRef",        "name" : "'Param Size'" },
+        { "kind" : "IdRef",        "name" : "'Param Align'" }
+      ],
+      "capabilities" : [ "DeviceEnqueue" ]
+    },
+    {
+      "opname" : "OpGetKernelNDrangeMaxSubGroupSize",
+      "opcode" : 294,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'ND Range'" },
+        { "kind" : "IdRef",        "name" : "'Invoke'" },
+        { "kind" : "IdRef",        "name" : "'Param'" },
+        { "kind" : "IdRef",        "name" : "'Param Size'" },
+        { "kind" : "IdRef",        "name" : "'Param Align'" }
+      ],
+      "capabilities" : [ "DeviceEnqueue" ]
+    },
+    {
+      "opname" : "OpGetKernelWorkGroupSize",
+      "opcode" : 295,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Invoke'" },
+        { "kind" : "IdRef",        "name" : "'Param'" },
+        { "kind" : "IdRef",        "name" : "'Param Size'" },
+        { "kind" : "IdRef",        "name" : "'Param Align'" }
+      ],
+      "capabilities" : [ "DeviceEnqueue" ]
+    },
+    {
+      "opname" : "OpGetKernelPreferredWorkGroupSizeMultiple",
+      "opcode" : 296,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Invoke'" },
+        { "kind" : "IdRef",        "name" : "'Param'" },
+        { "kind" : "IdRef",        "name" : "'Param Size'" },
+        { "kind" : "IdRef",        "name" : "'Param Align'" }
+      ],
+      "capabilities" : [ "DeviceEnqueue" ]
+    },
+    {
+      "opname" : "OpRetainEvent",
+      "opcode" : 297,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'Event'" }
+      ],
+      "capabilities" : [ "DeviceEnqueue" ]
+    },
+    {
+      "opname" : "OpReleaseEvent",
+      "opcode" : 298,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'Event'" }
+      ],
+      "capabilities" : [ "DeviceEnqueue" ]
+    },
+    {
+      "opname" : "OpCreateUserEvent",
+      "opcode" : 299,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" }
+      ],
+      "capabilities" : [ "DeviceEnqueue" ]
+    },
+    {
+      "opname" : "OpIsValidEvent",
+      "opcode" : 300,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Event'" }
+      ],
+      "capabilities" : [ "DeviceEnqueue" ]
+    },
+    {
+      "opname" : "OpSetUserEventStatus",
+      "opcode" : 301,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'Event'" },
+        { "kind" : "IdRef", "name" : "'Status'" }
+      ],
+      "capabilities" : [ "DeviceEnqueue" ]
+    },
+    {
+      "opname" : "OpCaptureEventProfilingInfo",
+      "opcode" : 302,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'Event'" },
+        { "kind" : "IdRef", "name" : "'Profiling Info'" },
+        { "kind" : "IdRef", "name" : "'Value'" }
+      ],
+      "capabilities" : [ "DeviceEnqueue" ]
+    },
+    {
+      "opname" : "OpGetDefaultQueue",
+      "opcode" : 303,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" }
+      ],
+      "capabilities" : [ "DeviceEnqueue" ]
+    },
+    {
+      "opname" : "OpBuildNDRange",
+      "opcode" : 304,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'GlobalWorkSize'" },
+        { "kind" : "IdRef",        "name" : "'LocalWorkSize'" },
+        { "kind" : "IdRef",        "name" : "'GlobalWorkOffset'" }
+      ],
+      "capabilities" : [ "DeviceEnqueue" ]
+    },
+    {
+      "opname" : "OpImageSparseSampleImplicitLod",
+      "opcode" : 305,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",                             "name" : "'Sampled Image'" },
+        { "kind" : "IdRef",                             "name" : "'Coordinate'" },
+        { "kind" : "ImageOperands", "quantifier" : "?" }
+      ],
+      "capabilities" : [ "SparseResidency" ]
+    },
+    {
+      "opname" : "OpImageSparseSampleExplicitLod",
+      "opcode" : 306,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",         "name" : "'Sampled Image'" },
+        { "kind" : "IdRef",         "name" : "'Coordinate'" },
+        { "kind" : "ImageOperands" }
+      ],
+      "capabilities" : [ "SparseResidency" ]
+    },
+    {
+      "opname" : "OpImageSparseSampleDrefImplicitLod",
+      "opcode" : 307,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",                             "name" : "'Sampled Image'" },
+        { "kind" : "IdRef",                             "name" : "'Coordinate'" },
+        { "kind" : "IdRef",                             "name" : "'D~ref~'" },
+        { "kind" : "ImageOperands", "quantifier" : "?" }
+      ],
+      "capabilities" : [ "SparseResidency" ]
+    },
+    {
+      "opname" : "OpImageSparseSampleDrefExplicitLod",
+      "opcode" : 308,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",         "name" : "'Sampled Image'" },
+        { "kind" : "IdRef",         "name" : "'Coordinate'" },
+        { "kind" : "IdRef",         "name" : "'D~ref~'" },
+        { "kind" : "ImageOperands" }
+      ],
+      "capabilities" : [ "SparseResidency" ]
+    },
+    {
+      "opname" : "OpImageSparseSampleProjImplicitLod",
+      "opcode" : 309,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",                             "name" : "'Sampled Image'" },
+        { "kind" : "IdRef",                             "name" : "'Coordinate'" },
+        { "kind" : "ImageOperands", "quantifier" : "?" }
+      ],
+      "capabilities" : [ "SparseResidency" ]
+    },
+    {
+      "opname" : "OpImageSparseSampleProjExplicitLod",
+      "opcode" : 310,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",         "name" : "'Sampled Image'" },
+        { "kind" : "IdRef",         "name" : "'Coordinate'" },
+        { "kind" : "ImageOperands" }
+      ],
+      "capabilities" : [ "SparseResidency" ]
+    },
+    {
+      "opname" : "OpImageSparseSampleProjDrefImplicitLod",
+      "opcode" : 311,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",                             "name" : "'Sampled Image'" },
+        { "kind" : "IdRef",                             "name" : "'Coordinate'" },
+        { "kind" : "IdRef",                             "name" : "'D~ref~'" },
+        { "kind" : "ImageOperands", "quantifier" : "?" }
+      ],
+      "capabilities" : [ "SparseResidency" ]
+    },
+    {
+      "opname" : "OpImageSparseSampleProjDrefExplicitLod",
+      "opcode" : 312,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",         "name" : "'Sampled Image'" },
+        { "kind" : "IdRef",         "name" : "'Coordinate'" },
+        { "kind" : "IdRef",         "name" : "'D~ref~'" },
+        { "kind" : "ImageOperands" }
+      ],
+      "capabilities" : [ "SparseResidency" ]
+    },
+    {
+      "opname" : "OpImageSparseFetch",
+      "opcode" : 313,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",                             "name" : "'Image'" },
+        { "kind" : "IdRef",                             "name" : "'Coordinate'" },
+        { "kind" : "ImageOperands", "quantifier" : "?" }
+      ],
+      "capabilities" : [ "SparseResidency" ]
+    },
+    {
+      "opname" : "OpImageSparseGather",
+      "opcode" : 314,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",                             "name" : "'Sampled Image'" },
+        { "kind" : "IdRef",                             "name" : "'Coordinate'" },
+        { "kind" : "IdRef",                             "name" : "'Component'" },
+        { "kind" : "ImageOperands", "quantifier" : "?" }
+      ],
+      "capabilities" : [ "SparseResidency" ]
+    },
+    {
+      "opname" : "OpImageSparseDrefGather",
+      "opcode" : 315,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",                             "name" : "'Sampled Image'" },
+        { "kind" : "IdRef",                             "name" : "'Coordinate'" },
+        { "kind" : "IdRef",                             "name" : "'D~ref~'" },
+        { "kind" : "ImageOperands", "quantifier" : "?" }
+      ],
+      "capabilities" : [ "SparseResidency" ]
+    },
+    {
+      "opname" : "OpImageSparseTexelsResident",
+      "opcode" : 316,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Resident Code'" }
+      ],
+      "capabilities" : [ "SparseResidency" ]
+    },
+    {
+      "opname" : "OpNoLine",
+      "opcode" : 317
+    },
+    {
+      "opname" : "OpAtomicFlagTestAndSet",
+      "opcode" : 318,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",             "name" : "'Pointer'" },
+        { "kind" : "IdScope",           "name" : "'Scope'" },
+        { "kind" : "IdMemorySemantics", "name" : "'Semantics'" }
+      ],
+      "capabilities" : [ "Kernel" ]
+    },
+    {
+      "opname" : "OpAtomicFlagClear",
+      "opcode" : 319,
+      "operands" : [
+        { "kind" : "IdRef",             "name" : "'Pointer'" },
+        { "kind" : "IdScope",           "name" : "'Scope'" },
+        { "kind" : "IdMemorySemantics", "name" : "'Semantics'" }
+      ],
+      "capabilities" : [ "Kernel" ]
+    },
+    {
+      "opname" : "OpImageSparseRead",
+      "opcode" : 320,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",                             "name" : "'Image'" },
+        { "kind" : "IdRef",                             "name" : "'Coordinate'" },
+        { "kind" : "ImageOperands", "quantifier" : "?" }
+      ],
+      "capabilities" : [ "SparseResidency" ]
+    },
+    {
+      "opname" : "OpSizeOf",
+      "opcode" : 321,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Pointer'" }
+      ],
+      "capabilities" : [ "Addresses" ]
+    },
+    {
+      "opname" : "OpTypePipeStorage",
+      "opcode" : 322,
+      "operands" : [
+        { "kind" : "IdResult" }
+      ],
+      "capabilities" : [ "PipeStorage" ]
+    },
+    {
+      "opname" : "OpConstantPipeStorage",
+      "opcode" : 323,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "LiteralInteger", "name" : "'Packet Size'" },
+        { "kind" : "LiteralInteger", "name" : "'Packet Alignment'" },
+        { "kind" : "LiteralInteger", "name" : "'Capacity'" }
+      ],
+      "capabilities" : [ "PipeStorage" ]
+    },
+    {
+      "opname" : "OpCreatePipeFromPipeStorage",
+      "opcode" : 324,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Pipe Storage'" }
+      ],
+      "capabilities" : [ "PipeStorage" ]
+    },
+    {
+      "opname" : "OpGetKernelLocalSizeForSubgroupCount",
+      "opcode" : 325,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Subgroup Count'" },
+        { "kind" : "IdRef",        "name" : "'Invoke'" },
+        { "kind" : "IdRef",        "name" : "'Param'" },
+        { "kind" : "IdRef",        "name" : "'Param Size'" },
+        { "kind" : "IdRef",        "name" : "'Param Align'" }
+      ],
+      "capabilities" : [ "SubgroupDispatch" ]
+    },
+    {
+      "opname" : "OpGetKernelMaxNumSubgroups",
+      "opcode" : 326,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Invoke'" },
+        { "kind" : "IdRef",        "name" : "'Param'" },
+        { "kind" : "IdRef",        "name" : "'Param Size'" },
+        { "kind" : "IdRef",        "name" : "'Param Align'" }
+      ],
+      "capabilities" : [ "SubgroupDispatch" ]
+    },
+    {
+      "opname" : "OpTypeNamedBarrier",
+      "opcode" : 327,
+      "operands" : [
+        { "kind" : "IdResult" }
+      ],
+      "capabilities" : [ "NamedBarrier" ]
+    },
+    {
+      "opname" : "OpNamedBarrierInitialize",
+      "opcode" : 328,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Subgroup Count'" }
+      ],
+      "capabilities" : [ "NamedBarrier" ]
+    },
+    {
+      "opname" : "OpMemoryNamedBarrier",
+      "opcode" : 329,
+      "operands" : [
+        { "kind" : "IdRef",             "name" : "'Named Barrier'" },
+        { "kind" : "IdScope",           "name" : "'Memory'" },
+        { "kind" : "IdMemorySemantics", "name" : "'Semantics'" }
+      ],
+      "capabilities" : [ "NamedBarrier" ]
+    },
+    {
+      "opname" : "OpModuleProcessed",
+      "opcode" : 330,
+      "operands" : [
+        { "kind" : "LiteralString", "name" : "'Process'" }
+      ]
+    },
+    {
+      "opname" : "OpDecorateId",
+      "opcode" : 332,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'Target'" },
+        { "kind" : "Decoration" }
+      ],
+      "extensions" : [ "SPV_GOOGLE_hlsl_functionality1" ]
+    },
+    {
+      "opname" : "OpSubgroupBallotKHR",
+      "opcode" : 4421,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Predicate'" }
+      ],
+      "capabilities" : [ "SubgroupBallotKHR" ]
+    },
+    {
+      "opname" : "OpSubgroupFirstInvocationKHR",
+      "opcode" : 4422,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Value'" }
+      ],
+      "capabilities" : [ "SubgroupBallotKHR" ]
+    },
+    {
+      "opname" : "OpSubgroupAllKHR",
+      "opcode" : 4428,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Predicate'" }
+      ],
+      "capabilities" : [ "SubgroupVoteKHR" ]
+    },
+    {
+      "opname" : "OpSubgroupAnyKHR",
+      "opcode" : 4429,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Predicate'" }
+      ],
+      "capabilities" : [ "SubgroupVoteKHR" ]
+    },
+    {
+      "opname" : "OpSubgroupAllEqualKHR",
+      "opcode" : 4430,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Predicate'" }
+      ],
+      "capabilities" : [ "SubgroupVoteKHR" ]
+    },
+    {
+      "opname" : "OpSubgroupReadInvocationKHR",
+      "opcode" : 4432,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Value'" },
+        { "kind" : "IdRef", "name" : "'Index'" }
+      ],
+      "capabilities" : [ "SubgroupBallotKHR" ]
+    },
+    {
+      "opname" : "OpGroupIAddNonUniformAMD",
+      "opcode" : 5000,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdScope",        "name" : "'Execution'" },
+        { "kind" : "GroupOperation", "name" : "'Operation'" },
+        { "kind" : "IdRef",          "name" : "'X'" }
+      ],
+      "capabilities" : [ "Groups" ]
+    },
+    {
+      "opname" : "OpGroupFAddNonUniformAMD",
+      "opcode" : 5001,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdScope",        "name" : "'Execution'" },
+        { "kind" : "GroupOperation", "name" : "'Operation'" },
+        { "kind" : "IdRef",          "name" : "'X'" }
+      ],
+      "capabilities" : [ "Groups" ]
+    },
+    {
+      "opname" : "OpGroupFMinNonUniformAMD",
+      "opcode" : 5002,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdScope",        "name" : "'Execution'" },
+        { "kind" : "GroupOperation", "name" : "'Operation'" },
+        { "kind" : "IdRef",          "name" : "'X'" }
+      ],
+      "capabilities" : [ "Groups" ]
+    },
+    {
+      "opname" : "OpGroupUMinNonUniformAMD",
+      "opcode" : 5003,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdScope",        "name" : "'Execution'" },
+        { "kind" : "GroupOperation", "name" : "'Operation'" },
+        { "kind" : "IdRef",          "name" : "'X'" }
+      ],
+      "capabilities" : [ "Groups" ]
+    },
+    {
+      "opname" : "OpGroupSMinNonUniformAMD",
+      "opcode" : 5004,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdScope",        "name" : "'Execution'" },
+        { "kind" : "GroupOperation", "name" : "'Operation'" },
+        { "kind" : "IdRef",          "name" : "'X'" }
+      ],
+      "capabilities" : [ "Groups" ]
+    },
+    {
+      "opname" : "OpGroupFMaxNonUniformAMD",
+      "opcode" : 5005,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdScope",        "name" : "'Execution'" },
+        { "kind" : "GroupOperation", "name" : "'Operation'" },
+        { "kind" : "IdRef",          "name" : "'X'" }
+      ],
+      "capabilities" : [ "Groups" ]
+    },
+    {
+      "opname" : "OpGroupUMaxNonUniformAMD",
+      "opcode" : 5006,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdScope",        "name" : "'Execution'" },
+        { "kind" : "GroupOperation", "name" : "'Operation'" },
+        { "kind" : "IdRef",          "name" : "'X'" }
+      ],
+      "capabilities" : [ "Groups" ]
+    },
+    {
+      "opname" : "OpGroupSMaxNonUniformAMD",
+      "opcode" : 5007,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdScope",        "name" : "'Execution'" },
+        { "kind" : "GroupOperation", "name" : "'Operation'" },
+        { "kind" : "IdRef",          "name" : "'X'" }
+      ],
+      "capabilities" : [ "Groups" ]
+    },
+    {
+      "opname" : "OpFragmentMaskFetchAMD",
+      "opcode" : 5011,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Image'" },
+        { "kind" : "IdRef", "name" : "'Coordinate'" }
+      ],
+      "capabilities" : [ "FragmentMaskAMD" ]
+    },
+    {
+      "opname" : "OpFragmentFetchAMD",
+      "opcode" : 5012,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Image'" },
+        { "kind" : "IdRef", "name" : "'Coordinate'" },
+        { "kind" : "IdRef", "name" : "'Fragment Index'" }
+      ],
+      "capabilities" : [ "FragmentMaskAMD" ]
+    },
+    {
+      "opname" : "OpSubgroupShuffleINTEL",
+      "opcode" : 5571,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Data'" },
+        { "kind" : "IdRef", "name" : "'InvocationId'" }
+      ],
+      "capabilities" : [ "SubgroupShuffleINTEL" ]
+    },
+    {
+      "opname" : "OpSubgroupShuffleDownINTEL",
+      "opcode" : 5572,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Current'" },
+        { "kind" : "IdRef", "name" : "'Next'" },
+        { "kind" : "IdRef", "name" : "'Delta'" }
+      ],
+      "capabilities" : [ "SubgroupShuffleINTEL" ]
+    },
+    {
+      "opname" : "OpSubgroupShuffleUpINTEL",
+      "opcode" : 5573,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Previous'" },
+        { "kind" : "IdRef", "name" : "'Current'" },
+        { "kind" : "IdRef", "name" : "'Delta'" }
+      ],
+      "capabilities" : [ "SubgroupShuffleINTEL" ]
+    },
+    {
+      "opname" : "OpSubgroupShuffleXorINTEL",
+      "opcode" : 5574,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Data'" },
+        { "kind" : "IdRef", "name" : "'Value'" }
+      ],
+      "capabilities" : [ "SubgroupShuffleINTEL" ]
+    },
+    {
+      "opname" : "OpSubgroupBlockReadINTEL",
+      "opcode" : 5575,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Ptr'" }
+      ],
+      "capabilities" : [ "SubgroupBufferBlockIOINTEL" ]
+    },
+    {
+      "opname" : "OpSubgroupBlockWriteINTEL",
+      "opcode" : 5576,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'Ptr'" },
+        { "kind" : "IdRef", "name" : "'Data'" }
+      ],
+      "capabilities" : [ "SubgroupBufferBlockIOINTEL" ]
+    },
+    {
+      "opname" : "OpSubgroupImageBlockReadINTEL",
+      "opcode" : 5577,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Image'" },
+        { "kind" : "IdRef", "name" : "'Coordinate'" }
+      ],
+      "capabilities" : [ "SubgroupImageBlockIOINTEL" ]
+    },
+    {
+      "opname" : "OpSubgroupImageBlockWriteINTEL",
+      "opcode" : 5578,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'Image'" },
+        { "kind" : "IdRef", "name" : "'Coordinate'" },
+        { "kind" : "IdRef", "name" : "'Data'" }
+      ],
+      "capabilities" : [ "SubgroupImageBlockIOINTEL" ]
+    },
+    {
+      "opname" : "OpDecorateStringGOOGLE",
+      "opcode" : 5632,
+      "operands" : [
+        { "kind" : "IdRef",         "name" : "'Target'" },
+        { "kind" : "Decoration" }
+      ],
+      "extensions" : [ "SPV_GOOGLE_decorate_string" ]
+    },
+    {
+      "opname" : "OpMemberDecorateStringGOOGLE",
+      "opcode" : 5633,
+      "operands" : [
+        { "kind" : "IdRef",          "name" : "'Struct Type'" },
+        { "kind" : "LiteralInteger", "name" : "'Member'" },
+        { "kind" : "Decoration" }
+      ],
+      "extensions" : [ "SPV_GOOGLE_decorate_string" ]
+    }
+  ],
+  "operand_kinds" : [
+    {
+      "category" : "BitEnum",
+      "kind" : "ImageOperands",
+      "enumerants" : [
+        {
+          "enumerant" : "None",
+          "value" : "0x0000"
+        },
+        {
+          "enumerant" : "Bias",
+          "value" : "0x0001",
+          "capabilities" : [ "Shader" ],
+          "parameters" : [
+            { "kind" : "IdRef" }
+          ]
+        },
+        {
+          "enumerant" : "Lod",
+          "value" : "0x0002",
+          "parameters" : [
+            { "kind" : "IdRef" }
+          ]
+        },
+        {
+          "enumerant" : "Grad",
+          "value" : "0x0004",
+          "parameters" : [
+            { "kind" : "IdRef" },
+            { "kind" : "IdRef" }
+          ]
+        },
+        {
+          "enumerant" : "ConstOffset",
+          "value" : "0x0008",
+          "parameters" : [
+            { "kind" : "IdRef" }
+          ]
+        },
+        {
+          "enumerant" : "Offset",
+          "value" : "0x0010",
+          "capabilities" : [ "ImageGatherExtended" ],
+          "parameters" : [
+            { "kind" : "IdRef" }
+          ]
+        },
+        {
+          "enumerant" : "ConstOffsets",
+          "value" : "0x0020",
+          "parameters" : [
+            { "kind" : "IdRef" }
+          ]
+        },
+        {
+          "enumerant" : "Sample",
+          "value" : "0x0040",
+          "parameters" : [
+            { "kind" : "IdRef" }
+          ]
+        },
+        {
+          "enumerant" : "MinLod",
+          "value" : "0x0080",
+          "capabilities" : [ "MinLod" ],
+          "parameters" : [
+            { "kind" : "IdRef" }
+          ]
+        }
+      ]
+    },
+    {
+      "category" : "BitEnum",
+      "kind" : "FPFastMathMode",
+      "enumerants" : [
+        {
+          "enumerant" : "None",
+          "value" : "0x0000"
+        },
+        {
+          "enumerant" : "NotNaN",
+          "value" : "0x0001",
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "NotInf",
+          "value" : "0x0002",
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "NSZ",
+          "value" : "0x0004",
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "AllowRecip",
+          "value" : "0x0008",
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "Fast",
+          "value" : "0x0010",
+          "capabilities" : [ "Kernel" ]
+        }
+      ]
+    },
+    {
+      "category" : "BitEnum",
+      "kind" : "SelectionControl",
+      "enumerants" : [
+        {
+          "enumerant" : "None",
+          "value" : "0x0000"
+        },
+        {
+          "enumerant" : "Flatten",
+          "value" : "0x0001"
+        },
+        {
+          "enumerant" : "DontFlatten",
+          "value" : "0x0002"
+        }
+      ]
+    },
+    {
+      "category" : "BitEnum",
+      "kind" : "LoopControl",
+      "enumerants" : [
+        {
+          "enumerant" : "None",
+          "value" : "0x0000"
+        },
+        {
+          "enumerant" : "Unroll",
+          "value" : "0x0001"
+        },
+        {
+          "enumerant" : "DontUnroll",
+          "value" : "0x0002"
+        },
+        {
+          "enumerant" : "DependencyInfinite",
+          "value" : "0x0004"
+        },
+        {
+          "enumerant" : "DependencyLength",
+          "value" : "0x0008",
+          "parameters" : [
+            { "kind" : "LiteralInteger" }
+          ]
+
+        }
+      ]
+    },
+    {
+      "category" : "BitEnum",
+      "kind" : "FunctionControl",
+      "enumerants" : [
+        {
+          "enumerant" : "None",
+          "value" : "0x0000"
+        },
+        {
+          "enumerant" : "Inline",
+          "value" : "0x0001"
+        },
+        {
+          "enumerant" : "DontInline",
+          "value" : "0x0002"
+        },
+        {
+          "enumerant" : "Pure",
+          "value" : "0x0004"
+        },
+        {
+          "enumerant" : "Const",
+          "value" : "0x0008"
+        }
+      ]
+    },
+    {
+      "category" : "BitEnum",
+      "kind" : "MemorySemantics",
+      "enumerants" : [
+        {
+          "enumerant" : "Relaxed",
+          "value" : "0x0000"
+        },
+        {
+          "enumerant" : "None",
+          "value" : "0x0000"
+        },
+        {
+          "enumerant" : "Acquire",
+          "value" : "0x0002"
+        },
+        {
+          "enumerant" : "Release",
+          "value" : "0x0004"
+        },
+        {
+          "enumerant" : "AcquireRelease",
+          "value" : "0x0008"
+        },
+        {
+          "enumerant" : "SequentiallyConsistent",
+          "value" : "0x0010"
+        },
+        {
+          "enumerant" : "UniformMemory",
+          "value" : "0x0040",
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "SubgroupMemory",
+          "value" : "0x0080"
+        },
+        {
+          "enumerant" : "WorkgroupMemory",
+          "value" : "0x0100"
+        },
+        {
+          "enumerant" : "CrossWorkgroupMemory",
+          "value" : "0x0200"
+        },
+        {
+          "enumerant" : "AtomicCounterMemory",
+          "value" : "0x0400",
+          "capabilities" : [ "AtomicStorage" ]
+        },
+        {
+          "enumerant" : "ImageMemory",
+          "value" : "0x0800"
+        }
+      ]
+    },
+    {
+      "category" : "BitEnum",
+      "kind" : "MemoryAccess",
+      "enumerants" : [
+        {
+          "enumerant" : "None",
+          "value" : "0x0000"
+        },
+        {
+          "enumerant" : "Volatile",
+          "value" : "0x0001"
+        },
+        {
+          "enumerant" : "Aligned",
+          "value" : "0x0002",
+          "parameters" : [
+            { "kind" : "LiteralInteger" }
+          ]
+        },
+        {
+          "enumerant" : "Nontemporal",
+          "value" : "0x0004"
+        }
+      ]
+    },
+    {
+      "category" : "BitEnum",
+      "kind" : "KernelProfilingInfo",
+      "enumerants" : [
+        {
+          "enumerant" : "None",
+          "value" : "0x0000"
+        },
+        {
+          "enumerant" : "CmdExecTime",
+          "value" : "0x0001",
+          "capabilities" : [ "Kernel" ]
+        }
+      ]
+    },
+    {
+      "category" : "ValueEnum",
+      "kind" : "SourceLanguage",
+      "enumerants" : [
+        {
+          "enumerant" : "Unknown",
+          "value" : 0
+        },
+        {
+          "enumerant" : "ESSL",
+          "value" : 1
+        },
+        {
+          "enumerant" : "GLSL",
+          "value" : 2
+        },
+        {
+          "enumerant" : "OpenCL_C",
+          "value" : 3
+        },
+        {
+          "enumerant" : "OpenCL_CPP",
+          "value" : 4
+        },
+        {
+          "enumerant" : "HLSL",
+          "value" : 5
+        }
+      ]
+    },
+    {
+      "category" : "ValueEnum",
+      "kind" : "ExecutionModel",
+      "enumerants" : [
+        {
+          "enumerant" : "Vertex",
+          "value" : 0,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "TessellationControl",
+          "value" : 1,
+          "capabilities" : [ "Tessellation" ]
+        },
+        {
+          "enumerant" : "TessellationEvaluation",
+          "value" : 2,
+          "capabilities" : [ "Tessellation" ]
+        },
+        {
+          "enumerant" : "Geometry",
+          "value" : 3,
+          "capabilities" : [ "Geometry" ]
+        },
+        {
+          "enumerant" : "Fragment",
+          "value" : 4,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "GLCompute",
+          "value" : 5,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "Kernel",
+          "value" : 6,
+          "capabilities" : [ "Kernel" ]
+        }
+      ]
+    },
+    {
+      "category" : "ValueEnum",
+      "kind" : "AddressingModel",
+      "enumerants" : [
+        {
+          "enumerant" : "Logical",
+          "value" : 0
+        },
+        {
+          "enumerant" : "Physical32",
+          "value" : 1,
+          "capabilities" : [ "Addresses" ]
+        },
+        {
+          "enumerant" : "Physical64",
+          "value" : 2,
+          "capabilities" : [ "Addresses" ]
+        }
+      ]
+    },
+    {
+      "category" : "ValueEnum",
+      "kind" : "MemoryModel",
+      "enumerants" : [
+        {
+          "enumerant" : "Simple",
+          "value" : 0,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "GLSL450",
+          "value" : 1,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "OpenCL",
+          "value" : 2,
+          "capabilities" : [ "Kernel" ]
+        }
+      ]
+    },
+    {
+      "category" : "ValueEnum",
+      "kind" : "ExecutionMode",
+      "enumerants" : [
+        {
+          "enumerant" : "Invocations",
+          "value" : 0,
+          "capabilities" : [ "Geometry" ],
+          "parameters" : [
+            { "kind" : "LiteralInteger", "name" : "'Number of <<Invocation,invocations>>'" }
+          ]
+        },
+        {
+          "enumerant" : "SpacingEqual",
+          "value" : 1,
+          "capabilities" : [ "Tessellation" ]
+        },
+        {
+          "enumerant" : "SpacingFractionalEven",
+          "value" : 2,
+          "capabilities" : [ "Tessellation" ]
+        },
+        {
+          "enumerant" : "SpacingFractionalOdd",
+          "value" : 3,
+          "capabilities" : [ "Tessellation" ]
+        },
+        {
+          "enumerant" : "VertexOrderCw",
+          "value" : 4,
+          "capabilities" : [ "Tessellation" ]
+        },
+        {
+          "enumerant" : "VertexOrderCcw",
+          "value" : 5,
+          "capabilities" : [ "Tessellation" ]
+        },
+        {
+          "enumerant" : "PixelCenterInteger",
+          "value" : 6,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "OriginUpperLeft",
+          "value" : 7,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "OriginLowerLeft",
+          "value" : 8,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "EarlyFragmentTests",
+          "value" : 9,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "PointMode",
+          "value" : 10,
+          "capabilities" : [ "Tessellation" ]
+        },
+        {
+          "enumerant" : "Xfb",
+          "value" : 11,
+          "capabilities" : [ "TransformFeedback" ]
+        },
+        {
+          "enumerant" : "DepthReplacing",
+          "value" : 12,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "DepthGreater",
+          "value" : 14,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "DepthLess",
+          "value" : 15,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "DepthUnchanged",
+          "value" : 16,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "LocalSize",
+          "value" : 17,
+          "parameters" : [
+            { "kind" : "LiteralInteger", "name" : "'x size'" },
+            { "kind" : "LiteralInteger", "name" : "'y size'" },
+            { "kind" : "LiteralInteger", "name" : "'z size'" }
+          ]
+        },
+        {
+          "enumerant" : "LocalSizeHint",
+          "value" : 18,
+          "capabilities" : [ "Kernel" ],
+          "parameters" : [
+            { "kind" : "LiteralInteger", "name" : "'x size'" },
+            { "kind" : "LiteralInteger", "name" : "'y size'" },
+            { "kind" : "LiteralInteger", "name" : "'z size'" }
+          ]
+        },
+        {
+          "enumerant" : "InputPoints",
+          "value" : 19,
+          "capabilities" : [ "Geometry" ]
+        },
+        {
+          "enumerant" : "InputLines",
+          "value" : 20,
+          "capabilities" : [ "Geometry" ]
+        },
+        {
+          "enumerant" : "InputLinesAdjacency",
+          "value" : 21,
+          "capabilities" : [ "Geometry" ]
+        },
+        {
+          "enumerant" : "Triangles",
+          "value" : 22,
+          "capabilities" : [ "Geometry", "Tessellation" ]
+        },
+        {
+          "enumerant" : "InputTrianglesAdjacency",
+          "value" : 23,
+          "capabilities" : [ "Geometry" ]
+        },
+        {
+          "enumerant" : "Quads",
+          "value" : 24,
+          "capabilities" : [ "Tessellation" ]
+        },
+        {
+          "enumerant" : "Isolines",
+          "value" : 25,
+          "capabilities" : [ "Tessellation" ]
+        },
+        {
+          "enumerant" : "OutputVertices",
+          "value" : 26,
+          "capabilities" : [ "Geometry", "Tessellation" ],
+          "parameters" : [
+            { "kind" : "LiteralInteger", "name" : "'Vertex count'" }
+          ]
+        },
+        {
+          "enumerant" : "OutputPoints",
+          "value" : 27,
+          "capabilities" : [ "Geometry" ]
+        },
+        {
+          "enumerant" : "OutputLineStrip",
+          "value" : 28,
+          "capabilities" : [ "Geometry" ]
+        },
+        {
+          "enumerant" : "OutputTriangleStrip",
+          "value" : 29,
+          "capabilities" : [ "Geometry" ]
+        },
+        {
+          "enumerant" : "VecTypeHint",
+          "value" : 30,
+          "capabilities" : [ "Kernel" ],
+          "parameters" : [
+            { "kind" : "LiteralInteger", "name" : "'Vector type'" }
+          ]
+        },
+        {
+          "enumerant" : "ContractionOff",
+          "value" : 31,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "Initializer",
+          "value" : 33,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "Finalizer",
+          "value" : 34,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "SubgroupSize",
+          "value" : 35,
+          "capabilities" : [ "SubgroupDispatch" ],
+          "parameters" : [
+            { "kind" : "LiteralInteger", "name" : "'Subgroup Size'" }
+          ]
+        },
+        {
+          "enumerant" : "SubgroupsPerWorkgroup",
+          "value" : 36,
+          "capabilities" : [ "SubgroupDispatch" ],
+          "parameters" : [
+            { "kind" : "LiteralInteger", "name" : "'Subgroups Per Workgroup'" }
+          ]
+        },
+        {
+          "enumerant" : "PostDepthCoverage",
+          "value" : 4446,
+          "capabilities" : [ "SampleMaskPostDepthCoverage" ]
+        },
+        {
+          "enumerant" : "StencilRefReplacingEXT",
+          "value" : 5027,
+          "capabilities" : [ "StencilExportEXT" ]
+        }
+      ]
+    },
+    {
+      "category" : "ValueEnum",
+      "kind" : "StorageClass",
+      "enumerants" : [
+        {
+          "enumerant" : "UniformConstant",
+          "value" : 0
+        },
+        {
+          "enumerant" : "Input",
+          "value" : 1
+        },
+        {
+          "enumerant" : "Uniform",
+          "value" : 2,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "Output",
+          "value" : 3,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "Workgroup",
+          "value" : 4
+        },
+        {
+          "enumerant" : "CrossWorkgroup",
+          "value" : 5
+        },
+        {
+          "enumerant" : "Private",
+          "value" : 6,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "Function",
+          "value" : 7
+        },
+        {
+          "enumerant" : "Generic",
+          "value" : 8,
+          "capabilities" : [ "GenericPointer" ]
+        },
+        {
+          "enumerant" : "PushConstant",
+          "value" : 9,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "AtomicCounter",
+          "value" : 10,
+          "capabilities" : [ "AtomicStorage" ]
+        },
+        {
+          "enumerant" : "Image",
+          "value" : 11
+        },
+        {
+          "enumerant" : "StorageBuffer",
+          "value" : 12,
+          "extensions" : [
+            "SPV_KHR_storage_buffer_storage_class",
+            "SPV_KHR_variable_pointers"
+          ],
+          "capabilities" : [ "Shader" ]
+        }
+      ]
+    },
+    {
+      "category" : "ValueEnum",
+      "kind" : "Dim",
+      "enumerants" : [
+        {
+          "enumerant" : "1D",
+          "value" : 0,
+          "capabilities" : [ "Sampled1D" ]
+        },
+        {
+          "enumerant" : "2D",
+          "value" : 1
+        },
+        {
+          "enumerant" : "3D",
+          "value" : 2
+        },
+        {
+          "enumerant" : "Cube",
+          "value" : 3,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "Rect",
+          "value" : 4,
+          "capabilities" : [ "SampledRect" ]
+        },
+        {
+          "enumerant" : "Buffer",
+          "value" : 5,
+          "capabilities" : [ "SampledBuffer" ]
+        },
+        {
+          "enumerant" : "SubpassData",
+          "value" : 6,
+          "capabilities" : [ "InputAttachment" ]
+        }
+      ]
+    },
+    {
+      "category" : "ValueEnum",
+      "kind" : "SamplerAddressingMode",
+      "enumerants" : [
+        {
+          "enumerant" : "None",
+          "value" : 0,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "ClampToEdge",
+          "value" : 1,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "Clamp",
+          "value" : 2,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "Repeat",
+          "value" : 3,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "RepeatMirrored",
+          "value" : 4,
+          "capabilities" : [ "Kernel" ]
+        }
+      ]
+    },
+    {
+      "category" : "ValueEnum",
+      "kind" : "SamplerFilterMode",
+      "enumerants" : [
+        {
+          "enumerant" : "Nearest",
+          "value" : 0,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "Linear",
+          "value" : 1,
+          "capabilities" : [ "Kernel" ]
+        }
+      ]
+    },
+    {
+      "category" : "ValueEnum",
+      "kind" : "ImageFormat",
+      "enumerants" : [
+        {
+          "enumerant" : "Unknown",
+          "value" : 0
+        },
+        {
+          "enumerant" : "Rgba32f",
+          "value" : 1,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "Rgba16f",
+          "value" : 2,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "R32f",
+          "value" : 3,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "Rgba8",
+          "value" : 4,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "Rgba8Snorm",
+          "value" : 5,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "Rg32f",
+          "value" : 6,
+          "capabilities" : [ "StorageImageExtendedFormats" ]
+        },
+        {
+          "enumerant" : "Rg16f",
+          "value" : 7,
+          "capabilities" : [ "StorageImageExtendedFormats" ]
+        },
+        {
+          "enumerant" : "R11fG11fB10f",
+          "value" : 8,
+          "capabilities" : [ "StorageImageExtendedFormats" ]
+        },
+        {
+          "enumerant" : "R16f",
+          "value" : 9,
+          "capabilities" : [ "StorageImageExtendedFormats" ]
+        },
+        {
+          "enumerant" : "Rgba16",
+          "value" : 10,
+          "capabilities" : [ "StorageImageExtendedFormats" ]
+        },
+        {
+          "enumerant" : "Rgb10A2",
+          "value" : 11,
+          "capabilities" : [ "StorageImageExtendedFormats" ]
+        },
+        {
+          "enumerant" : "Rg16",
+          "value" : 12,
+          "capabilities" : [ "StorageImageExtendedFormats" ]
+        },
+        {
+          "enumerant" : "Rg8",
+          "value" : 13,
+          "capabilities" : [ "StorageImageExtendedFormats" ]
+        },
+        {
+          "enumerant" : "R16",
+          "value" : 14,
+          "capabilities" : [ "StorageImageExtendedFormats" ]
+        },
+        {
+          "enumerant" : "R8",
+          "value" : 15,
+          "capabilities" : [ "StorageImageExtendedFormats" ]
+        },
+        {
+          "enumerant" : "Rgba16Snorm",
+          "value" : 16,
+          "capabilities" : [ "StorageImageExtendedFormats" ]
+        },
+        {
+          "enumerant" : "Rg16Snorm",
+          "value" : 17,
+          "capabilities" : [ "StorageImageExtendedFormats" ]
+        },
+        {
+          "enumerant" : "Rg8Snorm",
+          "value" : 18,
+          "capabilities" : [ "StorageImageExtendedFormats" ]
+        },
+        {
+          "enumerant" : "R16Snorm",
+          "value" : 19,
+          "capabilities" : [ "StorageImageExtendedFormats" ]
+        },
+        {
+          "enumerant" : "R8Snorm",
+          "value" : 20,
+          "capabilities" : [ "StorageImageExtendedFormats" ]
+        },
+        {
+          "enumerant" : "Rgba32i",
+          "value" : 21,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "Rgba16i",
+          "value" : 22,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "Rgba8i",
+          "value" : 23,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "R32i",
+          "value" : 24,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "Rg32i",
+          "value" : 25,
+          "capabilities" : [ "StorageImageExtendedFormats" ]
+        },
+        {
+          "enumerant" : "Rg16i",
+          "value" : 26,
+          "capabilities" : [ "StorageImageExtendedFormats" ]
+        },
+        {
+          "enumerant" : "Rg8i",
+          "value" : 27,
+          "capabilities" : [ "StorageImageExtendedFormats" ]
+        },
+        {
+          "enumerant" : "R16i",
+          "value" : 28,
+          "capabilities" : [ "StorageImageExtendedFormats" ]
+        },
+        {
+          "enumerant" : "R8i",
+          "value" : 29,
+          "capabilities" : [ "StorageImageExtendedFormats" ]
+        },
+        {
+          "enumerant" : "Rgba32ui",
+          "value" : 30,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "Rgba16ui",
+          "value" : 31,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "Rgba8ui",
+          "value" : 32,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "R32ui",
+          "value" : 33,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "Rgb10a2ui",
+          "value" : 34,
+          "capabilities" : [ "StorageImageExtendedFormats" ]
+        },
+        {
+          "enumerant" : "Rg32ui",
+          "value" : 35,
+          "capabilities" : [ "StorageImageExtendedFormats" ]
+        },
+        {
+          "enumerant" : "Rg16ui",
+          "value" : 36,
+          "capabilities" : [ "StorageImageExtendedFormats" ]
+        },
+        {
+          "enumerant" : "Rg8ui",
+          "value" : 37,
+          "capabilities" : [ "StorageImageExtendedFormats" ]
+        },
+        {
+          "enumerant" : "R16ui",
+          "value" : 38,
+          "capabilities" : [ "StorageImageExtendedFormats" ]
+        },
+        {
+          "enumerant" : "R8ui",
+          "value" : 39,
+          "capabilities" : [ "StorageImageExtendedFormats" ]
+        }
+      ]
+    },
+    {
+      "category" : "ValueEnum",
+      "kind" : "ImageChannelOrder",
+      "enumerants" : [
+        {
+          "enumerant" : "R",
+          "value" : 0,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "A",
+          "value" : 1,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "RG",
+          "value" : 2,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "RA",
+          "value" : 3,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "RGB",
+          "value" : 4,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "RGBA",
+          "value" : 5,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "BGRA",
+          "value" : 6,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "ARGB",
+          "value" : 7,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "Intensity",
+          "value" : 8,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "Luminance",
+          "value" : 9,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "Rx",
+          "value" : 10,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "RGx",
+          "value" : 11,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "RGBx",
+          "value" : 12,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "Depth",
+          "value" : 13,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "DepthStencil",
+          "value" : 14,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "sRGB",
+          "value" : 15,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "sRGBx",
+          "value" : 16,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "sRGBA",
+          "value" : 17,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "sBGRA",
+          "value" : 18,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "ABGR",
+          "value" : 19,
+          "capabilities" : [ "Kernel" ]
+        }
+      ]
+    },
+    {
+      "category" : "ValueEnum",
+      "kind" : "ImageChannelDataType",
+      "enumerants" : [
+        {
+          "enumerant" : "SnormInt8",
+          "value" : 0,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "SnormInt16",
+          "value" : 1,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "UnormInt8",
+          "value" : 2,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "UnormInt16",
+          "value" : 3,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "UnormShort565",
+          "value" : 4,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "UnormShort555",
+          "value" : 5,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "UnormInt101010",
+          "value" : 6,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "SignedInt8",
+          "value" : 7,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "SignedInt16",
+          "value" : 8,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "SignedInt32",
+          "value" : 9,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "UnsignedInt8",
+          "value" : 10,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "UnsignedInt16",
+          "value" : 11,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "UnsignedInt32",
+          "value" : 12,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "HalfFloat",
+          "value" : 13,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "Float",
+          "value" : 14,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "UnormInt24",
+          "value" : 15,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "UnormInt101010_2",
+          "value" : 16,
+          "capabilities" : [ "Kernel" ]
+        }
+      ]
+    },
+    {
+      "category" : "ValueEnum",
+      "kind" : "FPRoundingMode",
+      "enumerants" : [
+        {
+          "enumerant" : "RTE",
+          "value" : 0,
+          "capabilities" : [
+            "Kernel",
+            "StorageUniformBufferBlock16",
+            "StorageUniform16",
+            "StoragePushConstant16",
+            "StorageInputOutput16"
+          ]
+        },
+        {
+          "enumerant" : "RTZ",
+          "value" : 1,
+          "capabilities" : [
+            "Kernel",
+            "StorageUniformBufferBlock16",
+            "StorageUniform16",
+            "StoragePushConstant16",
+            "StorageInputOutput16"
+          ]
+        },
+        {
+          "enumerant" : "RTP",
+          "value" : 2,
+          "capabilities" : [
+            "Kernel",
+            "StorageUniformBufferBlock16",
+            "StorageUniform16",
+            "StoragePushConstant16",
+            "StorageInputOutput16"
+          ]
+        },
+        {
+          "enumerant" : "RTN",
+          "value" : 3,
+          "capabilities" : [
+            "Kernel",
+            "StorageUniformBufferBlock16",
+            "StorageUniform16",
+            "StoragePushConstant16",
+            "StorageInputOutput16"
+          ]
+        }
+      ]
+    },
+    {
+      "category" : "ValueEnum",
+      "kind" : "LinkageType",
+      "enumerants" : [
+        {
+          "enumerant" : "Export",
+          "value" : 0,
+          "capabilities" : [ "Linkage" ]
+        },
+        {
+          "enumerant" : "Import",
+          "value" : 1,
+          "capabilities" : [ "Linkage" ]
+        }
+      ]
+    },
+    {
+      "category" : "ValueEnum",
+      "kind" : "AccessQualifier",
+      "enumerants" : [
+        {
+          "enumerant" : "ReadOnly",
+          "value" : 0,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "WriteOnly",
+          "value" : 1,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "ReadWrite",
+          "value" : 2,
+          "capabilities" : [ "Kernel" ]
+        }
+      ]
+    },
+    {
+      "category" : "ValueEnum",
+      "kind" : "FunctionParameterAttribute",
+      "enumerants" : [
+        {
+          "enumerant" : "Zext",
+          "value" : 0,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "Sext",
+          "value" : 1,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "ByVal",
+          "value" : 2,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "Sret",
+          "value" : 3,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "NoAlias",
+          "value" : 4,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "NoCapture",
+          "value" : 5,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "NoWrite",
+          "value" : 6,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "NoReadWrite",
+          "value" : 7,
+          "capabilities" : [ "Kernel" ]
+        }
+      ]
+    },
+    {
+      "category" : "ValueEnum",
+      "kind" : "Decoration",
+      "enumerants" : [
+        {
+          "enumerant" : "RelaxedPrecision",
+          "value" : 0,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "SpecId",
+          "value" : 1,
+          "capabilities" : [ "Shader", "Kernel" ],
+          "parameters" : [
+            { "kind" : "LiteralInteger", "name" : "'Specialization Constant ID'" }
+          ]
+        },
+        {
+          "enumerant" : "Block",
+          "value" : 2,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "BufferBlock",
+          "value" : 3,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "RowMajor",
+          "value" : 4,
+          "capabilities" : [ "Matrix" ]
+        },
+        {
+          "enumerant" : "ColMajor",
+          "value" : 5,
+          "capabilities" : [ "Matrix" ]
+        },
+        {
+          "enumerant" : "ArrayStride",
+          "value" : 6,
+          "capabilities" : [ "Shader" ],
+          "parameters" : [
+            { "kind" : "LiteralInteger", "name" : "'Array Stride'" }
+          ]
+        },
+        {
+          "enumerant" : "MatrixStride",
+          "value" : 7,
+          "capabilities" : [ "Matrix" ],
+          "parameters" : [
+            { "kind" : "LiteralInteger", "name" : "'Matrix Stride'" }
+          ]
+        },
+        {
+          "enumerant" : "GLSLShared",
+          "value" : 8,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "GLSLPacked",
+          "value" : 9,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "CPacked",
+          "value" : 10,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "BuiltIn",
+          "value" : 11,
+          "parameters" : [
+            { "kind" : "BuiltIn" }
+          ]
+        },
+        {
+          "enumerant" : "NoPerspective",
+          "value" : 13,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "Flat",
+          "value" : 14,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "Patch",
+          "value" : 15,
+          "capabilities" : [ "Tessellation" ]
+        },
+        {
+          "enumerant" : "Centroid",
+          "value" : 16,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "Sample",
+          "value" : 17,
+          "capabilities" : [ "SampleRateShading" ]
+        },
+        {
+          "enumerant" : "Invariant",
+          "value" : 18,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "Restrict",
+          "value" : 19
+        },
+        {
+          "enumerant" : "Aliased",
+          "value" : 20
+        },
+        {
+          "enumerant" : "Volatile",
+          "value" : 21
+        },
+        {
+          "enumerant" : "Constant",
+          "value" : 22,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "Coherent",
+          "value" : 23
+        },
+        {
+          "enumerant" : "NonWritable",
+          "value" : 24
+        },
+        {
+          "enumerant" : "NonReadable",
+          "value" : 25
+        },
+        {
+          "enumerant" : "Uniform",
+          "value" : 26,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "SaturatedConversion",
+          "value" : 28,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "Stream",
+          "value" : 29,
+          "capabilities" : [ "GeometryStreams" ],
+          "parameters" : [
+            { "kind" : "LiteralInteger", "name" : "'Stream Number'" }
+          ]
+        },
+        {
+          "enumerant" : "Location",
+          "value" : 30,
+          "capabilities" : [ "Shader" ],
+          "parameters" : [
+            { "kind" : "LiteralInteger", "name" : "'Location'" }
+          ]
+        },
+        {
+          "enumerant" : "Component",
+          "value" : 31,
+          "capabilities" : [ "Shader" ],
+          "parameters" : [
+            { "kind" : "LiteralInteger", "name" : "'Component'" }
+          ]
+        },
+        {
+          "enumerant" : "Index",
+          "value" : 32,
+          "capabilities" : [ "Shader" ],
+          "parameters" : [
+            { "kind" : "LiteralInteger", "name" : "'Index'" }
+          ]
+        },
+        {
+          "enumerant" : "Binding",
+          "value" : 33,
+          "capabilities" : [ "Shader" ],
+          "parameters" : [
+            { "kind" : "LiteralInteger", "name" : "'Binding Point'" }
+          ]
+        },
+        {
+          "enumerant" : "DescriptorSet",
+          "value" : 34,
+          "capabilities" : [ "Shader" ],
+          "parameters" : [
+            { "kind" : "LiteralInteger", "name" : "'Descriptor Set'" }
+          ]
+        },
+        {
+          "enumerant" : "Offset",
+          "value" : 35,
+          "capabilities" : [ "Shader" ],
+          "parameters" : [
+            { "kind" : "LiteralInteger", "name" : "'Byte Offset'" }
+          ]
+        },
+        {
+          "enumerant" : "XfbBuffer",
+          "value" : 36,
+          "capabilities" : [ "TransformFeedback" ],
+          "parameters" : [
+            { "kind" : "LiteralInteger", "name" : "'XFB Buffer Number'" }
+          ]
+        },
+        {
+          "enumerant" : "XfbStride",
+          "value" : 37,
+          "capabilities" : [ "TransformFeedback" ],
+          "parameters" : [
+            { "kind" : "LiteralInteger", "name" : "'XFB Stride'" }
+          ]
+        },
+        {
+          "enumerant" : "FuncParamAttr",
+          "value" : 38,
+          "capabilities" : [ "Kernel" ],
+          "parameters" : [
+            { "kind" : "FunctionParameterAttribute", "name" : "'Function Parameter Attribute'" }
+          ]
+        },
+        {
+          "enumerant" : "FPRoundingMode",
+          "value" : 39,
+          "capabilities" : [
+            "Kernel",
+            "StorageUniformBufferBlock16",
+            "StorageUniform16",
+            "StoragePushConstant16",
+            "StorageInputOutput16"
+          ],
+          "parameters" : [
+            { "kind" : "FPRoundingMode", "name" : "'Floating-Point Rounding Mode'" }
+          ]
+        },
+        {
+          "enumerant" : "FPFastMathMode",
+          "value" : 40,
+          "capabilities" : [ "Kernel" ],
+          "parameters" : [
+            { "kind" : "FPFastMathMode", "name" : "'Fast-Math Mode'" }
+          ]
+        },
+        {
+          "enumerant" : "LinkageAttributes",
+          "value" : 41,
+          "capabilities" : [ "Linkage" ],
+          "parameters" : [
+            { "kind" : "LiteralString", "name" : "'Name'" },
+            { "kind" : "LinkageType",   "name" : "'Linkage Type'" }
+          ]
+        },
+        {
+          "enumerant" : "NoContraction",
+          "value" : 42,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "InputAttachmentIndex",
+          "value" : 43,
+          "capabilities" : [ "InputAttachment" ],
+          "parameters" : [
+            { "kind" : "LiteralInteger", "name" : "'Attachment Index'" }
+          ]
+        },
+        {
+          "enumerant" : "Alignment",
+          "value" : 44,
+          "capabilities" : [ "Kernel" ],
+          "parameters" : [
+            { "kind" : "LiteralInteger", "name" : "'Alignment'" }
+          ]
+        },
+        {
+          "enumerant" : "MaxByteOffset",
+          "value" : 45,
+          "capabilities" : [ "Addresses" ],
+          "parameters" : [
+            { "kind" : "LiteralInteger", "name" : "'Max Byte Offset'" }
+          ]
+        },
+        {
+          "enumerant" : "ExplicitInterpAMD",
+          "value" : 4999
+        },
+        {
+          "enumerant" : "OverrideCoverageNV",
+          "value" : 5248,
+          "capabilities" : [ "SampleMaskOverrideCoverageNV" ]
+        },
+        {
+          "enumerant" : "PassthroughNV",
+          "value" : 5250,
+          "capabilities" : [ "GeometryShaderPassthroughNV" ]
+        },
+        {
+          "enumerant" : "ViewportRelativeNV",
+          "value" : 5252,
+          "capabilities" : [ "ShaderViewportMaskNV" ]
+        },
+        {
+          "enumerant" : "SecondaryViewportRelativeNV",
+          "value" : 5256,
+          "capabilities" : [ "ShaderStereoViewNV" ],
+          "parameters" : [
+            { "kind" : "LiteralInteger", "name" : "'Offset'" }
+          ]
+        },
+        {
+          "enumerant" : "HlslCounterBufferGOOGLE",
+          "value" : 5634,
+          "parameters" : [
+            { "kind" : "IdRef", "name" : "'Counter Buffer'" }
+          ],
+          "extensions" : [ "SPV_GOOGLE_hlsl_functionality1" ]
+        },
+        {
+          "enumerant" : "HlslSemanticGOOGLE",
+          "value" : 5635,
+          "parameters" : [
+            { "kind" : "LiteralString", "name" : "'Semantic'" }
+          ],
+          "extensions" : [ "SPV_GOOGLE_hlsl_functionality1" ]
+        }
+      ]
+    },
+    {
+      "category" : "ValueEnum",
+      "kind" : "BuiltIn",
+      "enumerants" : [
+        {
+          "enumerant" : "Position",
+          "value" : 0,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "PointSize",
+          "value" : 1,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "ClipDistance",
+          "value" : 3,
+          "capabilities" : [ "ClipDistance" ]
+        },
+        {
+          "enumerant" : "CullDistance",
+          "value" : 4,
+          "capabilities" : [ "CullDistance" ]
+        },
+        {
+          "enumerant" : "VertexId",
+          "value" : 5,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "InstanceId",
+          "value" : 6,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "PrimitiveId",
+          "value" : 7,
+          "capabilities" : [ "Geometry", "Tessellation" ]
+        },
+        {
+          "enumerant" : "InvocationId",
+          "value" : 8,
+          "capabilities" : [ "Geometry", "Tessellation" ]
+        },
+        {
+          "enumerant" : "Layer",
+          "value" : 9,
+          "capabilities" : [ "Geometry" ]
+        },
+        {
+          "enumerant" : "ViewportIndex",
+          "value" : 10,
+          "capabilities" : [ "MultiViewport" ]
+        },
+        {
+          "enumerant" : "TessLevelOuter",
+          "value" : 11,
+          "capabilities" : [ "Tessellation" ]
+        },
+        {
+          "enumerant" : "TessLevelInner",
+          "value" : 12,
+          "capabilities" : [ "Tessellation" ]
+        },
+        {
+          "enumerant" : "TessCoord",
+          "value" : 13,
+          "capabilities" : [ "Tessellation" ]
+        },
+        {
+          "enumerant" : "PatchVertices",
+          "value" : 14,
+          "capabilities" : [ "Tessellation" ]
+        },
+        {
+          "enumerant" : "FragCoord",
+          "value" : 15,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "PointCoord",
+          "value" : 16,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "FrontFacing",
+          "value" : 17,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "SampleId",
+          "value" : 18,
+          "capabilities" : [ "SampleRateShading" ]
+        },
+        {
+          "enumerant" : "SamplePosition",
+          "value" : 19,
+          "capabilities" : [ "SampleRateShading" ]
+        },
+        {
+          "enumerant" : "SampleMask",
+          "value" : 20,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "FragDepth",
+          "value" : 22,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "HelperInvocation",
+          "value" : 23,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "NumWorkgroups",
+          "value" : 24
+        },
+        {
+          "enumerant" : "WorkgroupSize",
+          "value" : 25
+        },
+        {
+          "enumerant" : "WorkgroupId",
+          "value" : 26
+        },
+        {
+          "enumerant" : "LocalInvocationId",
+          "value" : 27
+        },
+        {
+          "enumerant" : "GlobalInvocationId",
+          "value" : 28
+        },
+        {
+          "enumerant" : "LocalInvocationIndex",
+          "value" : 29
+        },
+        {
+          "enumerant" : "WorkDim",
+          "value" : 30,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "GlobalSize",
+          "value" : 31,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "EnqueuedWorkgroupSize",
+          "value" : 32,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "GlobalOffset",
+          "value" : 33,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "GlobalLinearId",
+          "value" : 34,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "SubgroupSize",
+          "value" : 36,
+          "capabilities" : [ "Kernel", "SubgroupBallotKHR" ]
+        },
+        {
+          "enumerant" : "SubgroupMaxSize",
+          "value" : 37,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "NumSubgroups",
+          "value" : 38,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "NumEnqueuedSubgroups",
+          "value" : 39,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "SubgroupId",
+          "value" : 40,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "SubgroupLocalInvocationId",
+          "value" : 41,
+          "capabilities" : [ "Kernel", "SubgroupBallotKHR" ]
+        },
+        {
+          "enumerant" : "VertexIndex",
+          "value" : 42,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "InstanceIndex",
+          "value" : 43,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "SubgroupEqMaskKHR",
+          "value" : 4416,
+          "capabilities" : [ "SubgroupBallotKHR" ]
+        },
+        {
+          "enumerant" : "SubgroupGeMaskKHR",
+          "value" : 4417,
+          "capabilities" : [ "SubgroupBallotKHR" ]
+        },
+        {
+          "enumerant" : "SubgroupGtMaskKHR",
+          "value" : 4418,
+          "capabilities" : [ "SubgroupBallotKHR" ]
+        },
+        {
+          "enumerant" : "SubgroupLeMaskKHR",
+          "value" : 4419,
+          "capabilities" : [ "SubgroupBallotKHR" ]
+        },
+        {
+          "enumerant" : "SubgroupLtMaskKHR",
+          "value" : 4420,
+          "capabilities" : [ "SubgroupBallotKHR" ]
+        },
+        {
+          "enumerant" : "BaseVertex",
+          "value" : 4424,
+          "capabilities" : [ "DrawParameters" ]
+        },
+        {
+          "enumerant" : "BaseInstance",
+          "value" : 4425,
+          "capabilities" : [ "DrawParameters" ]
+        },
+        {
+          "enumerant" : "DrawIndex",
+          "value" : 4426,
+          "capabilities" : [ "DrawParameters" ]
+        },
+        {
+          "enumerant" : "DeviceIndex",
+          "value" : 4438,
+          "capabilities" : [ "DeviceGroup" ]
+        },
+        {
+          "enumerant" : "ViewIndex",
+          "value" : 4440,
+          "capabilities" : [ "MultiView" ]
+        },
+        {
+          "enumerant" : "BaryCoordNoPerspAMD",
+          "value" : 4992
+        },
+        {
+          "enumerant" : "BaryCoordNoPerspCentroidAMD",
+          "value" : 4993
+        },
+        {
+          "enumerant" : "BaryCoordNoPerspSampleAMD",
+          "value" : 4994
+        },
+        {
+          "enumerant" : "BaryCoordSmoothAMD",
+          "value" : 4995
+        },
+        {
+          "enumerant" : "BaryCoordSmoothCentroidAMD",
+          "value" : 4996
+        },
+        {
+          "enumerant" : "BaryCoordSmoothSampleAMD",
+          "value" : 4997
+        },
+        {
+          "enumerant" : "BaryCoordPullModelAMD",
+          "value" : 4998
+        },
+        {
+          "enumerant" : "FragStencilRefEXT",
+          "value" : 5014,
+          "capabilities" : [ "StencilExportEXT" ]
+        },
+        {
+          "enumerant" : "ViewportMaskNV",
+          "value" : 5253,
+          "capabilities" : [ "ShaderViewportMaskNV" ]
+        },
+        {
+          "enumerant" : "SecondaryPositionNV",
+          "value" : 5257,
+          "capabilities" : [ "ShaderStereoViewNV" ]
+        },
+        {
+          "enumerant" : "SecondaryViewportMaskNV",
+          "value" : 5258,
+          "capabilities" : [ "ShaderStereoViewNV" ]
+        },
+        {
+          "enumerant" : "PositionPerViewNV",
+          "value" : 5261,
+          "capabilities" : [ "PerViewAttributesNV" ]
+        },
+        {
+          "enumerant" : "ViewportMaskPerViewNV",
+          "value" : 5262,
+          "capabilities" : [ "PerViewAttributesNV" ]
+        }
+      ]
+    },
+    {
+      "category" : "ValueEnum",
+      "kind" : "Scope",
+      "enumerants" : [
+        {
+          "enumerant" : "CrossDevice",
+          "value" : 0
+        },
+        {
+          "enumerant" : "Device",
+          "value" : 1
+        },
+        {
+          "enumerant" : "Workgroup",
+          "value" : 2
+        },
+        {
+          "enumerant" : "Subgroup",
+          "value" : 3
+        },
+        {
+          "enumerant" : "Invocation",
+          "value" : 4
+        }
+      ]
+    },
+    {
+      "category" : "ValueEnum",
+      "kind" : "GroupOperation",
+      "enumerants" : [
+        {
+          "enumerant" : "Reduce",
+          "value" : 0,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "InclusiveScan",
+          "value" : 1,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "ExclusiveScan",
+          "value" : 2,
+          "capabilities" : [ "Kernel" ]
+        }
+      ]
+    },
+    {
+      "category" : "ValueEnum",
+      "kind" : "KernelEnqueueFlags",
+      "enumerants" : [
+        {
+          "enumerant" : "NoWait",
+          "value" : 0,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "WaitKernel",
+          "value" : 1,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "WaitWorkGroup",
+          "value" : 2,
+          "capabilities" : [ "Kernel" ]
+        }
+      ]
+    },
+    {
+      "category" : "ValueEnum",
+      "kind" : "Capability",
+      "enumerants" : [
+        {
+          "enumerant" : "Matrix",
+          "value" : 0
+        },
+        {
+          "enumerant" : "Shader",
+          "value" : 1,
+          "capabilities" : [ "Matrix" ]
+        },
+        {
+          "enumerant" : "Geometry",
+          "value" : 2,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "Tessellation",
+          "value" : 3,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "Addresses",
+          "value" : 4
+        },
+        {
+          "enumerant" : "Linkage",
+          "value" : 5
+        },
+        {
+          "enumerant" : "Kernel",
+          "value" : 6
+        },
+        {
+          "enumerant" : "Vector16",
+          "value" : 7,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "Float16Buffer",
+          "value" : 8,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "Float16",
+          "value" : 9
+        },
+        {
+          "enumerant" : "Float64",
+          "value" : 10
+        },
+        {
+          "enumerant" : "Int64",
+          "value" : 11
+        },
+        {
+          "enumerant" : "Int64Atomics",
+          "value" : 12,
+          "capabilities" : [ "Int64" ]
+        },
+        {
+          "enumerant" : "ImageBasic",
+          "value" : 13,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "ImageReadWrite",
+          "value" : 14,
+          "capabilities" : [ "ImageBasic" ]
+        },
+        {
+          "enumerant" : "ImageMipmap",
+          "value" : 15,
+          "capabilities" : [ "ImageBasic" ]
+        },
+        {
+          "enumerant" : "Pipes",
+          "value" : 17,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "Groups",
+          "value" : 18
+        },
+        {
+          "enumerant" : "DeviceEnqueue",
+          "value" : 19,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "LiteralSampler",
+          "value" : 20,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "AtomicStorage",
+          "value" : 21,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "Int16",
+          "value" : 22
+        },
+        {
+          "enumerant" : "TessellationPointSize",
+          "value" : 23,
+          "capabilities" : [ "Tessellation" ]
+        },
+        {
+          "enumerant" : "GeometryPointSize",
+          "value" : 24,
+          "capabilities" : [ "Geometry" ]
+        },
+        {
+          "enumerant" : "ImageGatherExtended",
+          "value" : 25,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "StorageImageMultisample",
+          "value" : 27,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "UniformBufferArrayDynamicIndexing",
+          "value" : 28,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "SampledImageArrayDynamicIndexing",
+          "value" : 29,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "StorageBufferArrayDynamicIndexing",
+          "value" : 30,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "StorageImageArrayDynamicIndexing",
+          "value" : 31,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "ClipDistance",
+          "value" : 32,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "CullDistance",
+          "value" : 33,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "ImageCubeArray",
+          "value" : 34,
+          "capabilities" : [ "SampledCubeArray" ]
+        },
+        {
+          "enumerant" : "SampleRateShading",
+          "value" : 35,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "ImageRect",
+          "value" : 36,
+          "capabilities" : [ "SampledRect" ]
+        },
+        {
+          "enumerant" : "SampledRect",
+          "value" : 37,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "GenericPointer",
+          "value" : 38,
+          "capabilities" : [ "Addresses" ]
+        },
+        {
+          "enumerant" : "Int8",
+          "value" : 39,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "InputAttachment",
+          "value" : 40,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "SparseResidency",
+          "value" : 41,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "MinLod",
+          "value" : 42,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "Sampled1D",
+          "value" : 43
+        },
+        {
+          "enumerant" : "Image1D",
+          "value" : 44,
+          "capabilities" : [ "Sampled1D" ]
+        },
+        {
+          "enumerant" : "SampledCubeArray",
+          "value" : 45,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "SampledBuffer",
+          "value" : 46
+        },
+        {
+          "enumerant" : "ImageBuffer",
+          "value" : 47,
+          "capabilities" : [ "SampledBuffer" ]
+        },
+        {
+          "enumerant" : "ImageMSArray",
+          "value" : 48,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "StorageImageExtendedFormats",
+          "value" : 49,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "ImageQuery",
+          "value" : 50,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "DerivativeControl",
+          "value" : 51,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "InterpolationFunction",
+          "value" : 52,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "TransformFeedback",
+          "value" : 53,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "GeometryStreams",
+          "value" : 54,
+          "capabilities" : [ "Geometry" ]
+        },
+        {
+          "enumerant" : "StorageImageReadWithoutFormat",
+          "value" : 55,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "StorageImageWriteWithoutFormat",
+          "value" : 56,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "MultiViewport",
+          "value" : 57,
+          "capabilities" : [ "Geometry" ]
+        },
+        {
+          "enumerant" : "SubgroupDispatch",
+          "value" : 58,
+          "capabilities" : [ "DeviceEnqueue" ]
+        },
+        {
+          "enumerant" : "NamedBarrier",
+          "value" : 59,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "PipeStorage",
+          "value" : 60,
+          "capabilities" : [ "Pipes" ]
+        },
+        {
+          "enumerant" : "SubgroupBallotKHR",
+          "value" : 4423,
+          "extensions" : [ "SPV_KHR_shader_ballot" ]
+        },
+        {
+          "enumerant" : "DrawParameters",
+          "value" : 4427,
+          "extensions" : [ "SPV_KHR_shader_draw_parameters" ]
+        },
+        {
+          "enumerant" : "SubgroupVoteKHR",
+          "value" : 4431,
+          "extensions" : [ "SPV_KHR_subgroup_vote" ]
+        },
+        {
+          "enumerant" : "StorageBuffer16BitAccess",
+          "value" : 4433,
+          "extensions" : [ "SPV_KHR_16bit_storage" ]
+        },
+        {
+          "enumerant" : "StorageUniformBufferBlock16",
+          "value" : 4433,
+          "extensions" : [ "SPV_KHR_16bit_storage" ]
+        },
+        {
+          "enumerant" : "UniformAndStorageBuffer16BitAccess",
+          "value" : 4434,
+          "capabilities" : [
+            "StorageBuffer16BitAccess",
+            "StorageUniformBufferBlock16"
+          ],
+          "extensions" : [ "SPV_KHR_16bit_storage" ]
+        },
+        {
+          "enumerant" : "StorageUniform16",
+          "value" : 4434,
+          "capabilities" : [
+            "StorageBuffer16BitAccess",
+            "StorageUniformBufferBlock16"
+          ],
+          "extensions" : [ "SPV_KHR_16bit_storage" ]
+        },
+        {
+          "enumerant" : "StoragePushConstant16",
+          "value" : 4435,
+          "extensions" : [ "SPV_KHR_16bit_storage" ]
+        },
+        {
+          "enumerant" : "StorageInputOutput16",
+          "value" : 4436,
+          "extensions" : [ "SPV_KHR_16bit_storage" ]
+        },
+        {
+          "enumerant" : "DeviceGroup",
+          "value" : 4437,
+          "extensions" : [ "SPV_KHR_device_group" ]
+        },
+        {
+          "enumerant" : "MultiView",
+          "value" : 4439,
+          "capabilities" : [ "Shader" ],
+          "extensions" : [ "SPV_KHR_multiview" ]
+        },
+        {
+          "enumerant" : "VariablePointersStorageBuffer",
+          "value" : 4441,
+          "capabilities" : [ "Shader" ],
+          "extensions" : [ "SPV_KHR_variable_pointers" ]
+        },
+        {
+          "enumerant" : "VariablePointers",
+          "value" : 4442,
+          "capabilities" : [ "VariablePointersStorageBuffer" ],
+          "extensions" : [ "SPV_KHR_variable_pointers" ]
+        },
+        {
+            "enumerant": "AtomicStorageOps",
+            "value": 4445,
+            "extensions": [ "SPV_KHR_shader_atomic_counter_ops" ]
+        },
+        {
+          "enumerant" : "SampleMaskPostDepthCoverage",
+          "value" : 4447,
+          "extensions" : [ "SPV_KHR_post_depth_coverage" ]
+        },
+        {
+          "enumerant" : "ImageGatherBiasLodAMD",
+          "value" : 5009,
+          "capabilities" : [ "Shader" ],
+          "extensions" : [ "SPV_AMD_texture_gather_bias_lod" ]
+        },
+        {
+          "enumerant" : "FragmentMaskAMD",
+          "value" : 5010,
+          "capabilities" : [ "Shader" ],
+          "extensions" : [ "SPV_AMD_shader_fragment_mask" ]
+        },
+        {
+          "enumerant" : "StencilExportEXT",
+          "value" : 5013,
+          "capabilities" : [ "Shader" ],
+          "extensions" : [ "SPV_EXT_shader_stencil_export" ]
+        },
+        {
+          "enumerant" : "ImageReadWriteLodAMD",
+          "value" : 5015,
+          "capabilities" : [ "Shader" ],
+          "extensions" : [ "SPV_AMD_shader_image_load_store_lod" ]
+        },
+        {
+          "enumerant" : "SampleMaskOverrideCoverageNV",
+          "value" : 5249,
+          "capabilities" : [ "SampleRateShading" ],
+          "extensions" : [ "SPV_NV_sample_mask_override_coverage" ]
+        },
+        {
+          "enumerant" : "GeometryShaderPassthroughNV",
+          "value" : 5251,
+          "capabilities" : [ "Geometry" ],
+          "extensions" : [ "SPV_NV_geometry_shader_passthrough" ]
+        },
+        {
+          "enumerant" : "ShaderViewportIndexLayerEXT",
+          "value" : 5254,
+          "capabilities" : [ "MultiViewport" ],
+          "extensions" : [ "SPV_EXT_shader_viewport_index_layer" ]
+        },
+        {
+          "enumerant" : "ShaderViewportIndexLayerNV",
+          "value" : 5254,
+          "capabilities" : [ "MultiViewport" ],
+          "extensions" : [ "SPV_NV_viewport_array2" ]
+        },
+        {
+          "enumerant" : "ShaderViewportMaskNV",
+          "value" : 5255,
+          "capabilities" : [ "ShaderViewportIndexLayerNV" ],
+          "extensions" : [ "SPV_NV_viewport_array2" ]
+        },
+        {
+          "enumerant" : "ShaderStereoViewNV",
+          "value" : 5259,
+          "capabilities" : [ "ShaderViewportMaskNV" ],
+          "extensions" : [ "SPV_NV_stereo_view_rendering" ]
+        },
+        {
+          "enumerant" : "PerViewAttributesNV",
+          "value" : 5260,
+          "capabilities" : [ "MultiView" ],
+          "extensions" : [ "SPV_NVX_multiview_per_view_attributes" ]
+        },
+        {
+          "enumerant" : "SubgroupShuffleINTEL",
+          "value" : 5568,
+          "extensions" : [ "SPV_INTEL_subgroups" ]
+        },
+        {
+          "enumerant" : "SubgroupBufferBlockIOINTEL",
+          "value" : 5569,
+          "extensions" : [ "SPV_INTEL_subgroups" ]
+        },
+        {
+          "enumerant" : "SubgroupImageBlockIOINTEL",
+          "value" : 5570,
+          "extensions" : [ "SPV_INTEL_subgroups" ]
+        }
+      ]
+    },
+    {
+      "category" : "Id",
+      "kind" : "IdResultType",
+      "doc" : "Reference to an <id> representing the result's type of the enclosing instruction"
+    },
+    {
+      "category" : "Id",
+      "kind" : "IdResult",
+      "doc" : "Definition of an <id> representing the result of the enclosing instruction"
+    },
+    {
+      "category" : "Id",
+      "kind" : "IdMemorySemantics",
+      "doc" : "Reference to an <id> representing a 32-bit integer that is a mask from the MemorySemantics operand kind"
+    },
+    {
+      "category" : "Id",
+      "kind" : "IdScope",
+      "doc" : "Reference to an <id> representing a 32-bit integer that is a mask from the Scope operand kind"
+    },
+    {
+      "category" : "Id",
+      "kind" : "IdRef",
+      "doc" : "Reference to an <id>"
+    },
+    {
+      "category" : "Literal",
+      "kind" : "LiteralInteger",
+      "doc" : "An integer consuming one or more words"
+    },
+    {
+      "category" : "Literal",
+      "kind" : "LiteralString",
+      "doc" : "A null-terminated stream of characters consuming an integral number of words"
+    },
+    {
+      "category" : "Literal",
+      "kind" : "LiteralContextDependentNumber",
+      "doc" : "A literal number whose size and format are determined by a previous operand in the enclosing instruction"
+    },
+    {
+      "category" : "Literal",
+      "kind" : "LiteralExtInstInteger",
+      "doc" : "A 32-bit unsigned integer indicating which instruction to use and determining the layout of following operands (for OpExtInst)"
+    },
+    {
+      "category" : "Literal",
+      "kind" : "LiteralSpecConstantOpInteger",
+      "doc" : "An opcode indicating the operation to be performed and determining the layout of following operands (for OpSpecConstantOp)"
+    },
+    {
+      "category" : "Composite",
+      "kind" : "PairLiteralIntegerIdRef",
+      "bases" : [ "LiteralInteger", "IdRef" ]
+    },
+    {
+      "category" : "Composite",
+      "kind" : "PairIdRefLiteralInteger",
+      "bases" : [ "IdRef", "LiteralInteger" ]
+    },
+    {
+      "category" : "Composite",
+      "kind" : "PairIdRefIdRef",
+      "bases" : [ "IdRef", "IdRef" ]
+    }
+  ]
+}
diff --git a/libs/spirv-headers/spirv/1.1/spirv.cs b/libs/spirv-headers/spirv/1.1/spirv.cs
new file mode 100644
index 00000000000..99194e51450
--- /dev/null
+++ b/libs/spirv-headers/spirv/1.1/spirv.cs
@@ -0,0 +1,1015 @@
+// Copyright (c) 2014-2018 The Khronos Group Inc.
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and/or associated documentation files (the "Materials"),
+// to deal in the Materials without restriction, including without limitation
+// the rights to use, copy, modify, merge, publish, distribute, sublicense,
+// and/or sell copies of the Materials, and to permit persons to whom the
+// Materials are furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Materials.
+// 
+// MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS KHRONOS
+// STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS SPECIFICATIONS AND
+// HEADER INFORMATION ARE LOCATED AT https://www.khronos.org/registry/ 
+// 
+// THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM,OUT OF OR IN CONNECTION WITH THE MATERIALS OR THE USE OR OTHER DEALINGS
+// IN THE MATERIALS.
+
+// This header is automatically generated by the same tool that creates
+// the Binary Section of the SPIR-V specification.
+
+// Enumeration tokens for SPIR-V, in various styles:
+//   C, C++, C++11, JSON, Lua, Python, C#
+// 
+// - C will have tokens with a "Spv" prefix, e.g.: SpvSourceLanguageGLSL
+// - C++ will have tokens in the "spv" name space, e.g.: spv::SourceLanguageGLSL
+// - C++11 will use enum classes in the spv namespace, e.g.: spv::SourceLanguage::GLSL
+// - Lua will use tables, e.g.: spv.SourceLanguage.GLSL
+// - Python will use dictionaries, e.g.: spv['SourceLanguage']['GLSL']
+// - C# will use enum classes in the Specification class located in the "Spv" namespace, e.g.: Spv.Specification.SourceLanguage.GLSL
+// 
+// Some tokens act like mask values, which can be OR'd together,
+// while others are mutually exclusive.  The mask-like ones have
+// "Mask" in their name, and a parallel enum that has the shift
+// amount (1 << x) for each corresponding enumerant.
+
+namespace Spv
+{
+
+    public static class Specification
+    {
+        public const uint MagicNumber = 0x07230203;
+        public const uint Version = 0x00010100;
+        public const uint Revision = 8;
+        public const uint OpCodeMask = 0xffff;
+        public const uint WordCountShift = 16;
+
+        public enum SourceLanguage
+        {
+            Unknown = 0,
+            ESSL = 1,
+            GLSL = 2,
+            OpenCL_C = 3,
+            OpenCL_CPP = 4,
+            HLSL = 5,
+        }
+
+        public enum ExecutionModel
+        {
+            Vertex = 0,
+            TessellationControl = 1,
+            TessellationEvaluation = 2,
+            Geometry = 3,
+            Fragment = 4,
+            GLCompute = 5,
+            Kernel = 6,
+        }
+
+        public enum AddressingModel
+        {
+            Logical = 0,
+            Physical32 = 1,
+            Physical64 = 2,
+        }
+
+        public enum MemoryModel
+        {
+            Simple = 0,
+            GLSL450 = 1,
+            OpenCL = 2,
+        }
+
+        public enum ExecutionMode
+        {
+            Invocations = 0,
+            SpacingEqual = 1,
+            SpacingFractionalEven = 2,
+            SpacingFractionalOdd = 3,
+            VertexOrderCw = 4,
+            VertexOrderCcw = 5,
+            PixelCenterInteger = 6,
+            OriginUpperLeft = 7,
+            OriginLowerLeft = 8,
+            EarlyFragmentTests = 9,
+            PointMode = 10,
+            Xfb = 11,
+            DepthReplacing = 12,
+            DepthGreater = 14,
+            DepthLess = 15,
+            DepthUnchanged = 16,
+            LocalSize = 17,
+            LocalSizeHint = 18,
+            InputPoints = 19,
+            InputLines = 20,
+            InputLinesAdjacency = 21,
+            Triangles = 22,
+            InputTrianglesAdjacency = 23,
+            Quads = 24,
+            Isolines = 25,
+            OutputVertices = 26,
+            OutputPoints = 27,
+            OutputLineStrip = 28,
+            OutputTriangleStrip = 29,
+            VecTypeHint = 30,
+            ContractionOff = 31,
+            Initializer = 33,
+            Finalizer = 34,
+            SubgroupSize = 35,
+            SubgroupsPerWorkgroup = 36,
+            PostDepthCoverage = 4446,
+            StencilRefReplacingEXT = 5027,
+        }
+
+        public enum StorageClass
+        {
+            UniformConstant = 0,
+            Input = 1,
+            Uniform = 2,
+            Output = 3,
+            Workgroup = 4,
+            CrossWorkgroup = 5,
+            Private = 6,
+            Function = 7,
+            Generic = 8,
+            PushConstant = 9,
+            AtomicCounter = 10,
+            Image = 11,
+            StorageBuffer = 12,
+        }
+
+        public enum Dim
+        {
+            Dim1D = 0,
+            Dim2D = 1,
+            Dim3D = 2,
+            Cube = 3,
+            Rect = 4,
+            Buffer = 5,
+            SubpassData = 6,
+        }
+
+        public enum SamplerAddressingMode
+        {
+            None = 0,
+            ClampToEdge = 1,
+            Clamp = 2,
+            Repeat = 3,
+            RepeatMirrored = 4,
+        }
+
+        public enum SamplerFilterMode
+        {
+            Nearest = 0,
+            Linear = 1,
+        }
+
+        public enum ImageFormat
+        {
+            Unknown = 0,
+            Rgba32f = 1,
+            Rgba16f = 2,
+            R32f = 3,
+            Rgba8 = 4,
+            Rgba8Snorm = 5,
+            Rg32f = 6,
+            Rg16f = 7,
+            R11fG11fB10f = 8,
+            R16f = 9,
+            Rgba16 = 10,
+            Rgb10A2 = 11,
+            Rg16 = 12,
+            Rg8 = 13,
+            R16 = 14,
+            R8 = 15,
+            Rgba16Snorm = 16,
+            Rg16Snorm = 17,
+            Rg8Snorm = 18,
+            R16Snorm = 19,
+            R8Snorm = 20,
+            Rgba32i = 21,
+            Rgba16i = 22,
+            Rgba8i = 23,
+            R32i = 24,
+            Rg32i = 25,
+            Rg16i = 26,
+            Rg8i = 27,
+            R16i = 28,
+            R8i = 29,
+            Rgba32ui = 30,
+            Rgba16ui = 31,
+            Rgba8ui = 32,
+            R32ui = 33,
+            Rgb10a2ui = 34,
+            Rg32ui = 35,
+            Rg16ui = 36,
+            Rg8ui = 37,
+            R16ui = 38,
+            R8ui = 39,
+        }
+
+        public enum ImageChannelOrder
+        {
+            R = 0,
+            A = 1,
+            RG = 2,
+            RA = 3,
+            RGB = 4,
+            RGBA = 5,
+            BGRA = 6,
+            ARGB = 7,
+            Intensity = 8,
+            Luminance = 9,
+            Rx = 10,
+            RGx = 11,
+            RGBx = 12,
+            Depth = 13,
+            DepthStencil = 14,
+            sRGB = 15,
+            sRGBx = 16,
+            sRGBA = 17,
+            sBGRA = 18,
+            ABGR = 19,
+        }
+
+        public enum ImageChannelDataType
+        {
+            SnormInt8 = 0,
+            SnormInt16 = 1,
+            UnormInt8 = 2,
+            UnormInt16 = 3,
+            UnormShort565 = 4,
+            UnormShort555 = 5,
+            UnormInt101010 = 6,
+            SignedInt8 = 7,
+            SignedInt16 = 8,
+            SignedInt32 = 9,
+            UnsignedInt8 = 10,
+            UnsignedInt16 = 11,
+            UnsignedInt32 = 12,
+            HalfFloat = 13,
+            Float = 14,
+            UnormInt24 = 15,
+            UnormInt101010_2 = 16,
+        }
+
+        public enum ImageOperandsShift
+        {
+            Bias = 0,
+            Lod = 1,
+            Grad = 2,
+            ConstOffset = 3,
+            Offset = 4,
+            ConstOffsets = 5,
+            Sample = 6,
+            MinLod = 7,
+        }
+
+        public enum ImageOperandsMask
+        {
+            MaskNone = 0,
+            Bias = 0x00000001,
+            Lod = 0x00000002,
+            Grad = 0x00000004,
+            ConstOffset = 0x00000008,
+            Offset = 0x00000010,
+            ConstOffsets = 0x00000020,
+            Sample = 0x00000040,
+            MinLod = 0x00000080,
+        }
+
+        public enum FPFastMathModeShift
+        {
+            NotNaN = 0,
+            NotInf = 1,
+            NSZ = 2,
+            AllowRecip = 3,
+            Fast = 4,
+        }
+
+        public enum FPFastMathModeMask
+        {
+            MaskNone = 0,
+            NotNaN = 0x00000001,
+            NotInf = 0x00000002,
+            NSZ = 0x00000004,
+            AllowRecip = 0x00000008,
+            Fast = 0x00000010,
+        }
+
+        public enum FPRoundingMode
+        {
+            RTE = 0,
+            RTZ = 1,
+            RTP = 2,
+            RTN = 3,
+        }
+
+        public enum LinkageType
+        {
+            Export = 0,
+            Import = 1,
+        }
+
+        public enum AccessQualifier
+        {
+            ReadOnly = 0,
+            WriteOnly = 1,
+            ReadWrite = 2,
+        }
+
+        public enum FunctionParameterAttribute
+        {
+            Zext = 0,
+            Sext = 1,
+            ByVal = 2,
+            Sret = 3,
+            NoAlias = 4,
+            NoCapture = 5,
+            NoWrite = 6,
+            NoReadWrite = 7,
+        }
+
+        public enum Decoration
+        {
+            RelaxedPrecision = 0,
+            SpecId = 1,
+            Block = 2,
+            BufferBlock = 3,
+            RowMajor = 4,
+            ColMajor = 5,
+            ArrayStride = 6,
+            MatrixStride = 7,
+            GLSLShared = 8,
+            GLSLPacked = 9,
+            CPacked = 10,
+            BuiltIn = 11,
+            NoPerspective = 13,
+            Flat = 14,
+            Patch = 15,
+            Centroid = 16,
+            Sample = 17,
+            Invariant = 18,
+            Restrict = 19,
+            Aliased = 20,
+            Volatile = 21,
+            Constant = 22,
+            Coherent = 23,
+            NonWritable = 24,
+            NonReadable = 25,
+            Uniform = 26,
+            SaturatedConversion = 28,
+            Stream = 29,
+            Location = 30,
+            Component = 31,
+            Index = 32,
+            Binding = 33,
+            DescriptorSet = 34,
+            Offset = 35,
+            XfbBuffer = 36,
+            XfbStride = 37,
+            FuncParamAttr = 38,
+            FPRoundingMode = 39,
+            FPFastMathMode = 40,
+            LinkageAttributes = 41,
+            NoContraction = 42,
+            InputAttachmentIndex = 43,
+            Alignment = 44,
+            MaxByteOffset = 45,
+            ExplicitInterpAMD = 4999,
+            OverrideCoverageNV = 5248,
+            PassthroughNV = 5250,
+            ViewportRelativeNV = 5252,
+            SecondaryViewportRelativeNV = 5256,
+            HlslCounterBufferGOOGLE = 5634,
+            HlslSemanticGOOGLE = 5635,
+        }
+
+        public enum BuiltIn
+        {
+            Position = 0,
+            PointSize = 1,
+            ClipDistance = 3,
+            CullDistance = 4,
+            VertexId = 5,
+            InstanceId = 6,
+            PrimitiveId = 7,
+            InvocationId = 8,
+            Layer = 9,
+            ViewportIndex = 10,
+            TessLevelOuter = 11,
+            TessLevelInner = 12,
+            TessCoord = 13,
+            PatchVertices = 14,
+            FragCoord = 15,
+            PointCoord = 16,
+            FrontFacing = 17,
+            SampleId = 18,
+            SamplePosition = 19,
+            SampleMask = 20,
+            FragDepth = 22,
+            HelperInvocation = 23,
+            NumWorkgroups = 24,
+            WorkgroupSize = 25,
+            WorkgroupId = 26,
+            LocalInvocationId = 27,
+            GlobalInvocationId = 28,
+            LocalInvocationIndex = 29,
+            WorkDim = 30,
+            GlobalSize = 31,
+            EnqueuedWorkgroupSize = 32,
+            GlobalOffset = 33,
+            GlobalLinearId = 34,
+            SubgroupSize = 36,
+            SubgroupMaxSize = 37,
+            NumSubgroups = 38,
+            NumEnqueuedSubgroups = 39,
+            SubgroupId = 40,
+            SubgroupLocalInvocationId = 41,
+            VertexIndex = 42,
+            InstanceIndex = 43,
+            SubgroupEqMaskKHR = 4416,
+            SubgroupGeMaskKHR = 4417,
+            SubgroupGtMaskKHR = 4418,
+            SubgroupLeMaskKHR = 4419,
+            SubgroupLtMaskKHR = 4420,
+            BaseVertex = 4424,
+            BaseInstance = 4425,
+            DrawIndex = 4426,
+            DeviceIndex = 4438,
+            ViewIndex = 4440,
+            BaryCoordNoPerspAMD = 4992,
+            BaryCoordNoPerspCentroidAMD = 4993,
+            BaryCoordNoPerspSampleAMD = 4994,
+            BaryCoordSmoothAMD = 4995,
+            BaryCoordSmoothCentroidAMD = 4996,
+            BaryCoordSmoothSampleAMD = 4997,
+            BaryCoordPullModelAMD = 4998,
+            FragStencilRefEXT = 5014,
+            ViewportMaskNV = 5253,
+            SecondaryPositionNV = 5257,
+            SecondaryViewportMaskNV = 5258,
+            PositionPerViewNV = 5261,
+            ViewportMaskPerViewNV = 5262,
+        }
+
+        public enum SelectionControlShift
+        {
+            Flatten = 0,
+            DontFlatten = 1,
+        }
+
+        public enum SelectionControlMask
+        {
+            MaskNone = 0,
+            Flatten = 0x00000001,
+            DontFlatten = 0x00000002,
+        }
+
+        public enum LoopControlShift
+        {
+            Unroll = 0,
+            DontUnroll = 1,
+            DependencyInfinite = 2,
+            DependencyLength = 3,
+        }
+
+        public enum LoopControlMask
+        {
+            MaskNone = 0,
+            Unroll = 0x00000001,
+            DontUnroll = 0x00000002,
+            DependencyInfinite = 0x00000004,
+            DependencyLength = 0x00000008,
+        }
+
+        public enum FunctionControlShift
+        {
+            Inline = 0,
+            DontInline = 1,
+            Pure = 2,
+            Const = 3,
+        }
+
+        public enum FunctionControlMask
+        {
+            MaskNone = 0,
+            Inline = 0x00000001,
+            DontInline = 0x00000002,
+            Pure = 0x00000004,
+            Const = 0x00000008,
+        }
+
+        public enum MemorySemanticsShift
+        {
+            Acquire = 1,
+            Release = 2,
+            AcquireRelease = 3,
+            SequentiallyConsistent = 4,
+            UniformMemory = 6,
+            SubgroupMemory = 7,
+            WorkgroupMemory = 8,
+            CrossWorkgroupMemory = 9,
+            AtomicCounterMemory = 10,
+            ImageMemory = 11,
+        }
+
+        public enum MemorySemanticsMask
+        {
+            MaskNone = 0,
+            Acquire = 0x00000002,
+            Release = 0x00000004,
+            AcquireRelease = 0x00000008,
+            SequentiallyConsistent = 0x00000010,
+            UniformMemory = 0x00000040,
+            SubgroupMemory = 0x00000080,
+            WorkgroupMemory = 0x00000100,
+            CrossWorkgroupMemory = 0x00000200,
+            AtomicCounterMemory = 0x00000400,
+            ImageMemory = 0x00000800,
+        }
+
+        public enum MemoryAccessShift
+        {
+            Volatile = 0,
+            Aligned = 1,
+            Nontemporal = 2,
+        }
+
+        public enum MemoryAccessMask
+        {
+            MaskNone = 0,
+            Volatile = 0x00000001,
+            Aligned = 0x00000002,
+            Nontemporal = 0x00000004,
+        }
+
+        public enum Scope
+        {
+            CrossDevice = 0,
+            Device = 1,
+            Workgroup = 2,
+            Subgroup = 3,
+            Invocation = 4,
+        }
+
+        public enum GroupOperation
+        {
+            Reduce = 0,
+            InclusiveScan = 1,
+            ExclusiveScan = 2,
+        }
+
+        public enum KernelEnqueueFlags
+        {
+            NoWait = 0,
+            WaitKernel = 1,
+            WaitWorkGroup = 2,
+        }
+
+        public enum KernelProfilingInfoShift
+        {
+            CmdExecTime = 0,
+        }
+
+        public enum KernelProfilingInfoMask
+        {
+            MaskNone = 0,
+            CmdExecTime = 0x00000001,
+        }
+
+        public enum Capability
+        {
+            Matrix = 0,
+            Shader = 1,
+            Geometry = 2,
+            Tessellation = 3,
+            Addresses = 4,
+            Linkage = 5,
+            Kernel = 6,
+            Vector16 = 7,
+            Float16Buffer = 8,
+            Float16 = 9,
+            Float64 = 10,
+            Int64 = 11,
+            Int64Atomics = 12,
+            ImageBasic = 13,
+            ImageReadWrite = 14,
+            ImageMipmap = 15,
+            Pipes = 17,
+            Groups = 18,
+            DeviceEnqueue = 19,
+            LiteralSampler = 20,
+            AtomicStorage = 21,
+            Int16 = 22,
+            TessellationPointSize = 23,
+            GeometryPointSize = 24,
+            ImageGatherExtended = 25,
+            StorageImageMultisample = 27,
+            UniformBufferArrayDynamicIndexing = 28,
+            SampledImageArrayDynamicIndexing = 29,
+            StorageBufferArrayDynamicIndexing = 30,
+            StorageImageArrayDynamicIndexing = 31,
+            ClipDistance = 32,
+            CullDistance = 33,
+            ImageCubeArray = 34,
+            SampleRateShading = 35,
+            ImageRect = 36,
+            SampledRect = 37,
+            GenericPointer = 38,
+            Int8 = 39,
+            InputAttachment = 40,
+            SparseResidency = 41,
+            MinLod = 42,
+            Sampled1D = 43,
+            Image1D = 44,
+            SampledCubeArray = 45,
+            SampledBuffer = 46,
+            ImageBuffer = 47,
+            ImageMSArray = 48,
+            StorageImageExtendedFormats = 49,
+            ImageQuery = 50,
+            DerivativeControl = 51,
+            InterpolationFunction = 52,
+            TransformFeedback = 53,
+            GeometryStreams = 54,
+            StorageImageReadWithoutFormat = 55,
+            StorageImageWriteWithoutFormat = 56,
+            MultiViewport = 57,
+            SubgroupDispatch = 58,
+            NamedBarrier = 59,
+            PipeStorage = 60,
+            SubgroupBallotKHR = 4423,
+            DrawParameters = 4427,
+            SubgroupVoteKHR = 4431,
+            StorageBuffer16BitAccess = 4433,
+            StorageUniformBufferBlock16 = 4433,
+            StorageUniform16 = 4434,
+            UniformAndStorageBuffer16BitAccess = 4434,
+            StoragePushConstant16 = 4435,
+            StorageInputOutput16 = 4436,
+            DeviceGroup = 4437,
+            MultiView = 4439,
+            VariablePointersStorageBuffer = 4441,
+            VariablePointers = 4442,
+            AtomicStorageOps = 4445,
+            SampleMaskPostDepthCoverage = 4447,
+            ImageGatherBiasLodAMD = 5009,
+            FragmentMaskAMD = 5010,
+            StencilExportEXT = 5013,
+            ImageReadWriteLodAMD = 5015,
+            SampleMaskOverrideCoverageNV = 5249,
+            GeometryShaderPassthroughNV = 5251,
+            ShaderViewportIndexLayerEXT = 5254,
+            ShaderViewportIndexLayerNV = 5254,
+            ShaderViewportMaskNV = 5255,
+            ShaderStereoViewNV = 5259,
+            PerViewAttributesNV = 5260,
+            SubgroupShuffleINTEL = 5568,
+            SubgroupBufferBlockIOINTEL = 5569,
+            SubgroupImageBlockIOINTEL = 5570,
+        }
+
+        public enum Op
+        {
+            OpNop = 0,
+            OpUndef = 1,
+            OpSourceContinued = 2,
+            OpSource = 3,
+            OpSourceExtension = 4,
+            OpName = 5,
+            OpMemberName = 6,
+            OpString = 7,
+            OpLine = 8,
+            OpExtension = 10,
+            OpExtInstImport = 11,
+            OpExtInst = 12,
+            OpMemoryModel = 14,
+            OpEntryPoint = 15,
+            OpExecutionMode = 16,
+            OpCapability = 17,
+            OpTypeVoid = 19,
+            OpTypeBool = 20,
+            OpTypeInt = 21,
+            OpTypeFloat = 22,
+            OpTypeVector = 23,
+            OpTypeMatrix = 24,
+            OpTypeImage = 25,
+            OpTypeSampler = 26,
+            OpTypeSampledImage = 27,
+            OpTypeArray = 28,
+            OpTypeRuntimeArray = 29,
+            OpTypeStruct = 30,
+            OpTypeOpaque = 31,
+            OpTypePointer = 32,
+            OpTypeFunction = 33,
+            OpTypeEvent = 34,
+            OpTypeDeviceEvent = 35,
+            OpTypeReserveId = 36,
+            OpTypeQueue = 37,
+            OpTypePipe = 38,
+            OpTypeForwardPointer = 39,
+            OpConstantTrue = 41,
+            OpConstantFalse = 42,
+            OpConstant = 43,
+            OpConstantComposite = 44,
+            OpConstantSampler = 45,
+            OpConstantNull = 46,
+            OpSpecConstantTrue = 48,
+            OpSpecConstantFalse = 49,
+            OpSpecConstant = 50,
+            OpSpecConstantComposite = 51,
+            OpSpecConstantOp = 52,
+            OpFunction = 54,
+            OpFunctionParameter = 55,
+            OpFunctionEnd = 56,
+            OpFunctionCall = 57,
+            OpVariable = 59,
+            OpImageTexelPointer = 60,
+            OpLoad = 61,
+            OpStore = 62,
+            OpCopyMemory = 63,
+            OpCopyMemorySized = 64,
+            OpAccessChain = 65,
+            OpInBoundsAccessChain = 66,
+            OpPtrAccessChain = 67,
+            OpArrayLength = 68,
+            OpGenericPtrMemSemantics = 69,
+            OpInBoundsPtrAccessChain = 70,
+            OpDecorate = 71,
+            OpMemberDecorate = 72,
+            OpDecorationGroup = 73,
+            OpGroupDecorate = 74,
+            OpGroupMemberDecorate = 75,
+            OpVectorExtractDynamic = 77,
+            OpVectorInsertDynamic = 78,
+            OpVectorShuffle = 79,
+            OpCompositeConstruct = 80,
+            OpCompositeExtract = 81,
+            OpCompositeInsert = 82,
+            OpCopyObject = 83,
+            OpTranspose = 84,
+            OpSampledImage = 86,
+            OpImageSampleImplicitLod = 87,
+            OpImageSampleExplicitLod = 88,
+            OpImageSampleDrefImplicitLod = 89,
+            OpImageSampleDrefExplicitLod = 90,
+            OpImageSampleProjImplicitLod = 91,
+            OpImageSampleProjExplicitLod = 92,
+            OpImageSampleProjDrefImplicitLod = 93,
+            OpImageSampleProjDrefExplicitLod = 94,
+            OpImageFetch = 95,
+            OpImageGather = 96,
+            OpImageDrefGather = 97,
+            OpImageRead = 98,
+            OpImageWrite = 99,
+            OpImage = 100,
+            OpImageQueryFormat = 101,
+            OpImageQueryOrder = 102,
+            OpImageQuerySizeLod = 103,
+            OpImageQuerySize = 104,
+            OpImageQueryLod = 105,
+            OpImageQueryLevels = 106,
+            OpImageQuerySamples = 107,
+            OpConvertFToU = 109,
+            OpConvertFToS = 110,
+            OpConvertSToF = 111,
+            OpConvertUToF = 112,
+            OpUConvert = 113,
+            OpSConvert = 114,
+            OpFConvert = 115,
+            OpQuantizeToF16 = 116,
+            OpConvertPtrToU = 117,
+            OpSatConvertSToU = 118,
+            OpSatConvertUToS = 119,
+            OpConvertUToPtr = 120,
+            OpPtrCastToGeneric = 121,
+            OpGenericCastToPtr = 122,
+            OpGenericCastToPtrExplicit = 123,
+            OpBitcast = 124,
+            OpSNegate = 126,
+            OpFNegate = 127,
+            OpIAdd = 128,
+            OpFAdd = 129,
+            OpISub = 130,
+            OpFSub = 131,
+            OpIMul = 132,
+            OpFMul = 133,
+            OpUDiv = 134,
+            OpSDiv = 135,
+            OpFDiv = 136,
+            OpUMod = 137,
+            OpSRem = 138,
+            OpSMod = 139,
+            OpFRem = 140,
+            OpFMod = 141,
+            OpVectorTimesScalar = 142,
+            OpMatrixTimesScalar = 143,
+            OpVectorTimesMatrix = 144,
+            OpMatrixTimesVector = 145,
+            OpMatrixTimesMatrix = 146,
+            OpOuterProduct = 147,
+            OpDot = 148,
+            OpIAddCarry = 149,
+            OpISubBorrow = 150,
+            OpUMulExtended = 151,
+            OpSMulExtended = 152,
+            OpAny = 154,
+            OpAll = 155,
+            OpIsNan = 156,
+            OpIsInf = 157,
+            OpIsFinite = 158,
+            OpIsNormal = 159,
+            OpSignBitSet = 160,
+            OpLessOrGreater = 161,
+            OpOrdered = 162,
+            OpUnordered = 163,
+            OpLogicalEqual = 164,
+            OpLogicalNotEqual = 165,
+            OpLogicalOr = 166,
+            OpLogicalAnd = 167,
+            OpLogicalNot = 168,
+            OpSelect = 169,
+            OpIEqual = 170,
+            OpINotEqual = 171,
+            OpUGreaterThan = 172,
+            OpSGreaterThan = 173,
+            OpUGreaterThanEqual = 174,
+            OpSGreaterThanEqual = 175,
+            OpULessThan = 176,
+            OpSLessThan = 177,
+            OpULessThanEqual = 178,
+            OpSLessThanEqual = 179,
+            OpFOrdEqual = 180,
+            OpFUnordEqual = 181,
+            OpFOrdNotEqual = 182,
+            OpFUnordNotEqual = 183,
+            OpFOrdLessThan = 184,
+            OpFUnordLessThan = 185,
+            OpFOrdGreaterThan = 186,
+            OpFUnordGreaterThan = 187,
+            OpFOrdLessThanEqual = 188,
+            OpFUnordLessThanEqual = 189,
+            OpFOrdGreaterThanEqual = 190,
+            OpFUnordGreaterThanEqual = 191,
+            OpShiftRightLogical = 194,
+            OpShiftRightArithmetic = 195,
+            OpShiftLeftLogical = 196,
+            OpBitwiseOr = 197,
+            OpBitwiseXor = 198,
+            OpBitwiseAnd = 199,
+            OpNot = 200,
+            OpBitFieldInsert = 201,
+            OpBitFieldSExtract = 202,
+            OpBitFieldUExtract = 203,
+            OpBitReverse = 204,
+            OpBitCount = 205,
+            OpDPdx = 207,
+            OpDPdy = 208,
+            OpFwidth = 209,
+            OpDPdxFine = 210,
+            OpDPdyFine = 211,
+            OpFwidthFine = 212,
+            OpDPdxCoarse = 213,
+            OpDPdyCoarse = 214,
+            OpFwidthCoarse = 215,
+            OpEmitVertex = 218,
+            OpEndPrimitive = 219,
+            OpEmitStreamVertex = 220,
+            OpEndStreamPrimitive = 221,
+            OpControlBarrier = 224,
+            OpMemoryBarrier = 225,
+            OpAtomicLoad = 227,
+            OpAtomicStore = 228,
+            OpAtomicExchange = 229,
+            OpAtomicCompareExchange = 230,
+            OpAtomicCompareExchangeWeak = 231,
+            OpAtomicIIncrement = 232,
+            OpAtomicIDecrement = 233,
+            OpAtomicIAdd = 234,
+            OpAtomicISub = 235,
+            OpAtomicSMin = 236,
+            OpAtomicUMin = 237,
+            OpAtomicSMax = 238,
+            OpAtomicUMax = 239,
+            OpAtomicAnd = 240,
+            OpAtomicOr = 241,
+            OpAtomicXor = 242,
+            OpPhi = 245,
+            OpLoopMerge = 246,
+            OpSelectionMerge = 247,
+            OpLabel = 248,
+            OpBranch = 249,
+            OpBranchConditional = 250,
+            OpSwitch = 251,
+            OpKill = 252,
+            OpReturn = 253,
+            OpReturnValue = 254,
+            OpUnreachable = 255,
+            OpLifetimeStart = 256,
+            OpLifetimeStop = 257,
+            OpGroupAsyncCopy = 259,
+            OpGroupWaitEvents = 260,
+            OpGroupAll = 261,
+            OpGroupAny = 262,
+            OpGroupBroadcast = 263,
+            OpGroupIAdd = 264,
+            OpGroupFAdd = 265,
+            OpGroupFMin = 266,
+            OpGroupUMin = 267,
+            OpGroupSMin = 268,
+            OpGroupFMax = 269,
+            OpGroupUMax = 270,
+            OpGroupSMax = 271,
+            OpReadPipe = 274,
+            OpWritePipe = 275,
+            OpReservedReadPipe = 276,
+            OpReservedWritePipe = 277,
+            OpReserveReadPipePackets = 278,
+            OpReserveWritePipePackets = 279,
+            OpCommitReadPipe = 280,
+            OpCommitWritePipe = 281,
+            OpIsValidReserveId = 282,
+            OpGetNumPipePackets = 283,
+            OpGetMaxPipePackets = 284,
+            OpGroupReserveReadPipePackets = 285,
+            OpGroupReserveWritePipePackets = 286,
+            OpGroupCommitReadPipe = 287,
+            OpGroupCommitWritePipe = 288,
+            OpEnqueueMarker = 291,
+            OpEnqueueKernel = 292,
+            OpGetKernelNDrangeSubGroupCount = 293,
+            OpGetKernelNDrangeMaxSubGroupSize = 294,
+            OpGetKernelWorkGroupSize = 295,
+            OpGetKernelPreferredWorkGroupSizeMultiple = 296,
+            OpRetainEvent = 297,
+            OpReleaseEvent = 298,
+            OpCreateUserEvent = 299,
+            OpIsValidEvent = 300,
+            OpSetUserEventStatus = 301,
+            OpCaptureEventProfilingInfo = 302,
+            OpGetDefaultQueue = 303,
+            OpBuildNDRange = 304,
+            OpImageSparseSampleImplicitLod = 305,
+            OpImageSparseSampleExplicitLod = 306,
+            OpImageSparseSampleDrefImplicitLod = 307,
+            OpImageSparseSampleDrefExplicitLod = 308,
+            OpImageSparseSampleProjImplicitLod = 309,
+            OpImageSparseSampleProjExplicitLod = 310,
+            OpImageSparseSampleProjDrefImplicitLod = 311,
+            OpImageSparseSampleProjDrefExplicitLod = 312,
+            OpImageSparseFetch = 313,
+            OpImageSparseGather = 314,
+            OpImageSparseDrefGather = 315,
+            OpImageSparseTexelsResident = 316,
+            OpNoLine = 317,
+            OpAtomicFlagTestAndSet = 318,
+            OpAtomicFlagClear = 319,
+            OpImageSparseRead = 320,
+            OpSizeOf = 321,
+            OpTypePipeStorage = 322,
+            OpConstantPipeStorage = 323,
+            OpCreatePipeFromPipeStorage = 324,
+            OpGetKernelLocalSizeForSubgroupCount = 325,
+            OpGetKernelMaxNumSubgroups = 326,
+            OpTypeNamedBarrier = 327,
+            OpNamedBarrierInitialize = 328,
+            OpMemoryNamedBarrier = 329,
+            OpModuleProcessed = 330,
+            OpDecorateId = 332,
+            OpSubgroupBallotKHR = 4421,
+            OpSubgroupFirstInvocationKHR = 4422,
+            OpSubgroupAllKHR = 4428,
+            OpSubgroupAnyKHR = 4429,
+            OpSubgroupAllEqualKHR = 4430,
+            OpSubgroupReadInvocationKHR = 4432,
+            OpGroupIAddNonUniformAMD = 5000,
+            OpGroupFAddNonUniformAMD = 5001,
+            OpGroupFMinNonUniformAMD = 5002,
+            OpGroupUMinNonUniformAMD = 5003,
+            OpGroupSMinNonUniformAMD = 5004,
+            OpGroupFMaxNonUniformAMD = 5005,
+            OpGroupUMaxNonUniformAMD = 5006,
+            OpGroupSMaxNonUniformAMD = 5007,
+            OpFragmentMaskFetchAMD = 5011,
+            OpFragmentFetchAMD = 5012,
+            OpSubgroupShuffleINTEL = 5571,
+            OpSubgroupShuffleDownINTEL = 5572,
+            OpSubgroupShuffleUpINTEL = 5573,
+            OpSubgroupShuffleXorINTEL = 5574,
+            OpSubgroupBlockReadINTEL = 5575,
+            OpSubgroupBlockWriteINTEL = 5576,
+            OpSubgroupImageBlockReadINTEL = 5577,
+            OpSubgroupImageBlockWriteINTEL = 5578,
+            OpDecorateStringGOOGLE = 5632,
+            OpMemberDecorateStringGOOGLE = 5633,
+        }
+    }
+}
+
diff --git a/libs/spirv-headers/spirv/1.1/spirv.h b/libs/spirv-headers/spirv/1.1/spirv.h
new file mode 100644
index 00000000000..971c3be6d25
--- /dev/null
+++ b/libs/spirv-headers/spirv/1.1/spirv.h
@@ -0,0 +1,1015 @@
+/*
+** Copyright (c) 2014-2018 The Khronos Group Inc.
+** 
+** Permission is hereby granted, free of charge, to any person obtaining a copy
+** of this software and/or associated documentation files (the "Materials"),
+** to deal in the Materials without restriction, including without limitation
+** the rights to use, copy, modify, merge, publish, distribute, sublicense,
+** and/or sell copies of the Materials, and to permit persons to whom the
+** Materials are furnished to do so, subject to the following conditions:
+** 
+** The above copyright notice and this permission notice shall be included in
+** all copies or substantial portions of the Materials.
+** 
+** MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS KHRONOS
+** STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS SPECIFICATIONS AND
+** HEADER INFORMATION ARE LOCATED AT https://www.khronos.org/registry/ 
+** 
+** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+** OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+** FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+** THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+** LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+** FROM,OUT OF OR IN CONNECTION WITH THE MATERIALS OR THE USE OR OTHER DEALINGS
+** IN THE MATERIALS.
+*/
+
+/*
+** This header is automatically generated by the same tool that creates
+** the Binary Section of the SPIR-V specification.
+*/
+
+/*
+** Enumeration tokens for SPIR-V, in various styles:
+**   C, C++, C++11, JSON, Lua, Python
+** 
+** - C will have tokens with a "Spv" prefix, e.g.: SpvSourceLanguageGLSL
+** - C++ will have tokens in the "spv" name space, e.g.: spv::SourceLanguageGLSL
+** - C++11 will use enum classes in the spv namespace, e.g.: spv::SourceLanguage::GLSL
+** - Lua will use tables, e.g.: spv.SourceLanguage.GLSL
+** - Python will use dictionaries, e.g.: spv['SourceLanguage']['GLSL']
+** 
+** Some tokens act like mask values, which can be OR'd together,
+** while others are mutually exclusive.  The mask-like ones have
+** "Mask" in their name, and a parallel enum that has the shift
+** amount (1 << x) for each corresponding enumerant.
+*/
+
+#ifndef spirv_H
+#define spirv_H
+
+typedef unsigned int SpvId;
+
+#define SPV_VERSION 0x10100
+#define SPV_REVISION 8
+
+static const unsigned int SpvMagicNumber = 0x07230203;
+static const unsigned int SpvVersion = 0x00010100;
+static const unsigned int SpvRevision = 8;
+static const unsigned int SpvOpCodeMask = 0xffff;
+static const unsigned int SpvWordCountShift = 16;
+
+typedef enum SpvSourceLanguage_ {
+    SpvSourceLanguageUnknown = 0,
+    SpvSourceLanguageESSL = 1,
+    SpvSourceLanguageGLSL = 2,
+    SpvSourceLanguageOpenCL_C = 3,
+    SpvSourceLanguageOpenCL_CPP = 4,
+    SpvSourceLanguageHLSL = 5,
+    SpvSourceLanguageMax = 0x7fffffff,
+} SpvSourceLanguage;
+
+typedef enum SpvExecutionModel_ {
+    SpvExecutionModelVertex = 0,
+    SpvExecutionModelTessellationControl = 1,
+    SpvExecutionModelTessellationEvaluation = 2,
+    SpvExecutionModelGeometry = 3,
+    SpvExecutionModelFragment = 4,
+    SpvExecutionModelGLCompute = 5,
+    SpvExecutionModelKernel = 6,
+    SpvExecutionModelMax = 0x7fffffff,
+} SpvExecutionModel;
+
+typedef enum SpvAddressingModel_ {
+    SpvAddressingModelLogical = 0,
+    SpvAddressingModelPhysical32 = 1,
+    SpvAddressingModelPhysical64 = 2,
+    SpvAddressingModelMax = 0x7fffffff,
+} SpvAddressingModel;
+
+typedef enum SpvMemoryModel_ {
+    SpvMemoryModelSimple = 0,
+    SpvMemoryModelGLSL450 = 1,
+    SpvMemoryModelOpenCL = 2,
+    SpvMemoryModelMax = 0x7fffffff,
+} SpvMemoryModel;
+
+typedef enum SpvExecutionMode_ {
+    SpvExecutionModeInvocations = 0,
+    SpvExecutionModeSpacingEqual = 1,
+    SpvExecutionModeSpacingFractionalEven = 2,
+    SpvExecutionModeSpacingFractionalOdd = 3,
+    SpvExecutionModeVertexOrderCw = 4,
+    SpvExecutionModeVertexOrderCcw = 5,
+    SpvExecutionModePixelCenterInteger = 6,
+    SpvExecutionModeOriginUpperLeft = 7,
+    SpvExecutionModeOriginLowerLeft = 8,
+    SpvExecutionModeEarlyFragmentTests = 9,
+    SpvExecutionModePointMode = 10,
+    SpvExecutionModeXfb = 11,
+    SpvExecutionModeDepthReplacing = 12,
+    SpvExecutionModeDepthGreater = 14,
+    SpvExecutionModeDepthLess = 15,
+    SpvExecutionModeDepthUnchanged = 16,
+    SpvExecutionModeLocalSize = 17,
+    SpvExecutionModeLocalSizeHint = 18,
+    SpvExecutionModeInputPoints = 19,
+    SpvExecutionModeInputLines = 20,
+    SpvExecutionModeInputLinesAdjacency = 21,
+    SpvExecutionModeTriangles = 22,
+    SpvExecutionModeInputTrianglesAdjacency = 23,
+    SpvExecutionModeQuads = 24,
+    SpvExecutionModeIsolines = 25,
+    SpvExecutionModeOutputVertices = 26,
+    SpvExecutionModeOutputPoints = 27,
+    SpvExecutionModeOutputLineStrip = 28,
+    SpvExecutionModeOutputTriangleStrip = 29,
+    SpvExecutionModeVecTypeHint = 30,
+    SpvExecutionModeContractionOff = 31,
+    SpvExecutionModeInitializer = 33,
+    SpvExecutionModeFinalizer = 34,
+    SpvExecutionModeSubgroupSize = 35,
+    SpvExecutionModeSubgroupsPerWorkgroup = 36,
+    SpvExecutionModePostDepthCoverage = 4446,
+    SpvExecutionModeStencilRefReplacingEXT = 5027,
+    SpvExecutionModeMax = 0x7fffffff,
+} SpvExecutionMode;
+
+typedef enum SpvStorageClass_ {
+    SpvStorageClassUniformConstant = 0,
+    SpvStorageClassInput = 1,
+    SpvStorageClassUniform = 2,
+    SpvStorageClassOutput = 3,
+    SpvStorageClassWorkgroup = 4,
+    SpvStorageClassCrossWorkgroup = 5,
+    SpvStorageClassPrivate = 6,
+    SpvStorageClassFunction = 7,
+    SpvStorageClassGeneric = 8,
+    SpvStorageClassPushConstant = 9,
+    SpvStorageClassAtomicCounter = 10,
+    SpvStorageClassImage = 11,
+    SpvStorageClassStorageBuffer = 12,
+    SpvStorageClassMax = 0x7fffffff,
+} SpvStorageClass;
+
+typedef enum SpvDim_ {
+    SpvDim1D = 0,
+    SpvDim2D = 1,
+    SpvDim3D = 2,
+    SpvDimCube = 3,
+    SpvDimRect = 4,
+    SpvDimBuffer = 5,
+    SpvDimSubpassData = 6,
+    SpvDimMax = 0x7fffffff,
+} SpvDim;
+
+typedef enum SpvSamplerAddressingMode_ {
+    SpvSamplerAddressingModeNone = 0,
+    SpvSamplerAddressingModeClampToEdge = 1,
+    SpvSamplerAddressingModeClamp = 2,
+    SpvSamplerAddressingModeRepeat = 3,
+    SpvSamplerAddressingModeRepeatMirrored = 4,
+    SpvSamplerAddressingModeMax = 0x7fffffff,
+} SpvSamplerAddressingMode;
+
+typedef enum SpvSamplerFilterMode_ {
+    SpvSamplerFilterModeNearest = 0,
+    SpvSamplerFilterModeLinear = 1,
+    SpvSamplerFilterModeMax = 0x7fffffff,
+} SpvSamplerFilterMode;
+
+typedef enum SpvImageFormat_ {
+    SpvImageFormatUnknown = 0,
+    SpvImageFormatRgba32f = 1,
+    SpvImageFormatRgba16f = 2,
+    SpvImageFormatR32f = 3,
+    SpvImageFormatRgba8 = 4,
+    SpvImageFormatRgba8Snorm = 5,
+    SpvImageFormatRg32f = 6,
+    SpvImageFormatRg16f = 7,
+    SpvImageFormatR11fG11fB10f = 8,
+    SpvImageFormatR16f = 9,
+    SpvImageFormatRgba16 = 10,
+    SpvImageFormatRgb10A2 = 11,
+    SpvImageFormatRg16 = 12,
+    SpvImageFormatRg8 = 13,
+    SpvImageFormatR16 = 14,
+    SpvImageFormatR8 = 15,
+    SpvImageFormatRgba16Snorm = 16,
+    SpvImageFormatRg16Snorm = 17,
+    SpvImageFormatRg8Snorm = 18,
+    SpvImageFormatR16Snorm = 19,
+    SpvImageFormatR8Snorm = 20,
+    SpvImageFormatRgba32i = 21,
+    SpvImageFormatRgba16i = 22,
+    SpvImageFormatRgba8i = 23,
+    SpvImageFormatR32i = 24,
+    SpvImageFormatRg32i = 25,
+    SpvImageFormatRg16i = 26,
+    SpvImageFormatRg8i = 27,
+    SpvImageFormatR16i = 28,
+    SpvImageFormatR8i = 29,
+    SpvImageFormatRgba32ui = 30,
+    SpvImageFormatRgba16ui = 31,
+    SpvImageFormatRgba8ui = 32,
+    SpvImageFormatR32ui = 33,
+    SpvImageFormatRgb10a2ui = 34,
+    SpvImageFormatRg32ui = 35,
+    SpvImageFormatRg16ui = 36,
+    SpvImageFormatRg8ui = 37,
+    SpvImageFormatR16ui = 38,
+    SpvImageFormatR8ui = 39,
+    SpvImageFormatMax = 0x7fffffff,
+} SpvImageFormat;
+
+typedef enum SpvImageChannelOrder_ {
+    SpvImageChannelOrderR = 0,
+    SpvImageChannelOrderA = 1,
+    SpvImageChannelOrderRG = 2,
+    SpvImageChannelOrderRA = 3,
+    SpvImageChannelOrderRGB = 4,
+    SpvImageChannelOrderRGBA = 5,
+    SpvImageChannelOrderBGRA = 6,
+    SpvImageChannelOrderARGB = 7,
+    SpvImageChannelOrderIntensity = 8,
+    SpvImageChannelOrderLuminance = 9,
+    SpvImageChannelOrderRx = 10,
+    SpvImageChannelOrderRGx = 11,
+    SpvImageChannelOrderRGBx = 12,
+    SpvImageChannelOrderDepth = 13,
+    SpvImageChannelOrderDepthStencil = 14,
+    SpvImageChannelOrdersRGB = 15,
+    SpvImageChannelOrdersRGBx = 16,
+    SpvImageChannelOrdersRGBA = 17,
+    SpvImageChannelOrdersBGRA = 18,
+    SpvImageChannelOrderABGR = 19,
+    SpvImageChannelOrderMax = 0x7fffffff,
+} SpvImageChannelOrder;
+
+typedef enum SpvImageChannelDataType_ {
+    SpvImageChannelDataTypeSnormInt8 = 0,
+    SpvImageChannelDataTypeSnormInt16 = 1,
+    SpvImageChannelDataTypeUnormInt8 = 2,
+    SpvImageChannelDataTypeUnormInt16 = 3,
+    SpvImageChannelDataTypeUnormShort565 = 4,
+    SpvImageChannelDataTypeUnormShort555 = 5,
+    SpvImageChannelDataTypeUnormInt101010 = 6,
+    SpvImageChannelDataTypeSignedInt8 = 7,
+    SpvImageChannelDataTypeSignedInt16 = 8,
+    SpvImageChannelDataTypeSignedInt32 = 9,
+    SpvImageChannelDataTypeUnsignedInt8 = 10,
+    SpvImageChannelDataTypeUnsignedInt16 = 11,
+    SpvImageChannelDataTypeUnsignedInt32 = 12,
+    SpvImageChannelDataTypeHalfFloat = 13,
+    SpvImageChannelDataTypeFloat = 14,
+    SpvImageChannelDataTypeUnormInt24 = 15,
+    SpvImageChannelDataTypeUnormInt101010_2 = 16,
+    SpvImageChannelDataTypeMax = 0x7fffffff,
+} SpvImageChannelDataType;
+
+typedef enum SpvImageOperandsShift_ {
+    SpvImageOperandsBiasShift = 0,
+    SpvImageOperandsLodShift = 1,
+    SpvImageOperandsGradShift = 2,
+    SpvImageOperandsConstOffsetShift = 3,
+    SpvImageOperandsOffsetShift = 4,
+    SpvImageOperandsConstOffsetsShift = 5,
+    SpvImageOperandsSampleShift = 6,
+    SpvImageOperandsMinLodShift = 7,
+    SpvImageOperandsMax = 0x7fffffff,
+} SpvImageOperandsShift;
+
+typedef enum SpvImageOperandsMask_ {
+    SpvImageOperandsMaskNone = 0,
+    SpvImageOperandsBiasMask = 0x00000001,
+    SpvImageOperandsLodMask = 0x00000002,
+    SpvImageOperandsGradMask = 0x00000004,
+    SpvImageOperandsConstOffsetMask = 0x00000008,
+    SpvImageOperandsOffsetMask = 0x00000010,
+    SpvImageOperandsConstOffsetsMask = 0x00000020,
+    SpvImageOperandsSampleMask = 0x00000040,
+    SpvImageOperandsMinLodMask = 0x00000080,
+} SpvImageOperandsMask;
+
+typedef enum SpvFPFastMathModeShift_ {
+    SpvFPFastMathModeNotNaNShift = 0,
+    SpvFPFastMathModeNotInfShift = 1,
+    SpvFPFastMathModeNSZShift = 2,
+    SpvFPFastMathModeAllowRecipShift = 3,
+    SpvFPFastMathModeFastShift = 4,
+    SpvFPFastMathModeMax = 0x7fffffff,
+} SpvFPFastMathModeShift;
+
+typedef enum SpvFPFastMathModeMask_ {
+    SpvFPFastMathModeMaskNone = 0,
+    SpvFPFastMathModeNotNaNMask = 0x00000001,
+    SpvFPFastMathModeNotInfMask = 0x00000002,
+    SpvFPFastMathModeNSZMask = 0x00000004,
+    SpvFPFastMathModeAllowRecipMask = 0x00000008,
+    SpvFPFastMathModeFastMask = 0x00000010,
+} SpvFPFastMathModeMask;
+
+typedef enum SpvFPRoundingMode_ {
+    SpvFPRoundingModeRTE = 0,
+    SpvFPRoundingModeRTZ = 1,
+    SpvFPRoundingModeRTP = 2,
+    SpvFPRoundingModeRTN = 3,
+    SpvFPRoundingModeMax = 0x7fffffff,
+} SpvFPRoundingMode;
+
+typedef enum SpvLinkageType_ {
+    SpvLinkageTypeExport = 0,
+    SpvLinkageTypeImport = 1,
+    SpvLinkageTypeMax = 0x7fffffff,
+} SpvLinkageType;
+
+typedef enum SpvAccessQualifier_ {
+    SpvAccessQualifierReadOnly = 0,
+    SpvAccessQualifierWriteOnly = 1,
+    SpvAccessQualifierReadWrite = 2,
+    SpvAccessQualifierMax = 0x7fffffff,
+} SpvAccessQualifier;
+
+typedef enum SpvFunctionParameterAttribute_ {
+    SpvFunctionParameterAttributeZext = 0,
+    SpvFunctionParameterAttributeSext = 1,
+    SpvFunctionParameterAttributeByVal = 2,
+    SpvFunctionParameterAttributeSret = 3,
+    SpvFunctionParameterAttributeNoAlias = 4,
+    SpvFunctionParameterAttributeNoCapture = 5,
+    SpvFunctionParameterAttributeNoWrite = 6,
+    SpvFunctionParameterAttributeNoReadWrite = 7,
+    SpvFunctionParameterAttributeMax = 0x7fffffff,
+} SpvFunctionParameterAttribute;
+
+typedef enum SpvDecoration_ {
+    SpvDecorationRelaxedPrecision = 0,
+    SpvDecorationSpecId = 1,
+    SpvDecorationBlock = 2,
+    SpvDecorationBufferBlock = 3,
+    SpvDecorationRowMajor = 4,
+    SpvDecorationColMajor = 5,
+    SpvDecorationArrayStride = 6,
+    SpvDecorationMatrixStride = 7,
+    SpvDecorationGLSLShared = 8,
+    SpvDecorationGLSLPacked = 9,
+    SpvDecorationCPacked = 10,
+    SpvDecorationBuiltIn = 11,
+    SpvDecorationNoPerspective = 13,
+    SpvDecorationFlat = 14,
+    SpvDecorationPatch = 15,
+    SpvDecorationCentroid = 16,
+    SpvDecorationSample = 17,
+    SpvDecorationInvariant = 18,
+    SpvDecorationRestrict = 19,
+    SpvDecorationAliased = 20,
+    SpvDecorationVolatile = 21,
+    SpvDecorationConstant = 22,
+    SpvDecorationCoherent = 23,
+    SpvDecorationNonWritable = 24,
+    SpvDecorationNonReadable = 25,
+    SpvDecorationUniform = 26,
+    SpvDecorationSaturatedConversion = 28,
+    SpvDecorationStream = 29,
+    SpvDecorationLocation = 30,
+    SpvDecorationComponent = 31,
+    SpvDecorationIndex = 32,
+    SpvDecorationBinding = 33,
+    SpvDecorationDescriptorSet = 34,
+    SpvDecorationOffset = 35,
+    SpvDecorationXfbBuffer = 36,
+    SpvDecorationXfbStride = 37,
+    SpvDecorationFuncParamAttr = 38,
+    SpvDecorationFPRoundingMode = 39,
+    SpvDecorationFPFastMathMode = 40,
+    SpvDecorationLinkageAttributes = 41,
+    SpvDecorationNoContraction = 42,
+    SpvDecorationInputAttachmentIndex = 43,
+    SpvDecorationAlignment = 44,
+    SpvDecorationMaxByteOffset = 45,
+    SpvDecorationExplicitInterpAMD = 4999,
+    SpvDecorationOverrideCoverageNV = 5248,
+    SpvDecorationPassthroughNV = 5250,
+    SpvDecorationViewportRelativeNV = 5252,
+    SpvDecorationSecondaryViewportRelativeNV = 5256,
+    SpvDecorationHlslCounterBufferGOOGLE = 5634,
+    SpvDecorationHlslSemanticGOOGLE = 5635,
+    SpvDecorationMax = 0x7fffffff,
+} SpvDecoration;
+
+typedef enum SpvBuiltIn_ {
+    SpvBuiltInPosition = 0,
+    SpvBuiltInPointSize = 1,
+    SpvBuiltInClipDistance = 3,
+    SpvBuiltInCullDistance = 4,
+    SpvBuiltInVertexId = 5,
+    SpvBuiltInInstanceId = 6,
+    SpvBuiltInPrimitiveId = 7,
+    SpvBuiltInInvocationId = 8,
+    SpvBuiltInLayer = 9,
+    SpvBuiltInViewportIndex = 10,
+    SpvBuiltInTessLevelOuter = 11,
+    SpvBuiltInTessLevelInner = 12,
+    SpvBuiltInTessCoord = 13,
+    SpvBuiltInPatchVertices = 14,
+    SpvBuiltInFragCoord = 15,
+    SpvBuiltInPointCoord = 16,
+    SpvBuiltInFrontFacing = 17,
+    SpvBuiltInSampleId = 18,
+    SpvBuiltInSamplePosition = 19,
+    SpvBuiltInSampleMask = 20,
+    SpvBuiltInFragDepth = 22,
+    SpvBuiltInHelperInvocation = 23,
+    SpvBuiltInNumWorkgroups = 24,
+    SpvBuiltInWorkgroupSize = 25,
+    SpvBuiltInWorkgroupId = 26,
+    SpvBuiltInLocalInvocationId = 27,
+    SpvBuiltInGlobalInvocationId = 28,
+    SpvBuiltInLocalInvocationIndex = 29,
+    SpvBuiltInWorkDim = 30,
+    SpvBuiltInGlobalSize = 31,
+    SpvBuiltInEnqueuedWorkgroupSize = 32,
+    SpvBuiltInGlobalOffset = 33,
+    SpvBuiltInGlobalLinearId = 34,
+    SpvBuiltInSubgroupSize = 36,
+    SpvBuiltInSubgroupMaxSize = 37,
+    SpvBuiltInNumSubgroups = 38,
+    SpvBuiltInNumEnqueuedSubgroups = 39,
+    SpvBuiltInSubgroupId = 40,
+    SpvBuiltInSubgroupLocalInvocationId = 41,
+    SpvBuiltInVertexIndex = 42,
+    SpvBuiltInInstanceIndex = 43,
+    SpvBuiltInSubgroupEqMaskKHR = 4416,
+    SpvBuiltInSubgroupGeMaskKHR = 4417,
+    SpvBuiltInSubgroupGtMaskKHR = 4418,
+    SpvBuiltInSubgroupLeMaskKHR = 4419,
+    SpvBuiltInSubgroupLtMaskKHR = 4420,
+    SpvBuiltInBaseVertex = 4424,
+    SpvBuiltInBaseInstance = 4425,
+    SpvBuiltInDrawIndex = 4426,
+    SpvBuiltInDeviceIndex = 4438,
+    SpvBuiltInViewIndex = 4440,
+    SpvBuiltInBaryCoordNoPerspAMD = 4992,
+    SpvBuiltInBaryCoordNoPerspCentroidAMD = 4993,
+    SpvBuiltInBaryCoordNoPerspSampleAMD = 4994,
+    SpvBuiltInBaryCoordSmoothAMD = 4995,
+    SpvBuiltInBaryCoordSmoothCentroidAMD = 4996,
+    SpvBuiltInBaryCoordSmoothSampleAMD = 4997,
+    SpvBuiltInBaryCoordPullModelAMD = 4998,
+    SpvBuiltInFragStencilRefEXT = 5014,
+    SpvBuiltInViewportMaskNV = 5253,
+    SpvBuiltInSecondaryPositionNV = 5257,
+    SpvBuiltInSecondaryViewportMaskNV = 5258,
+    SpvBuiltInPositionPerViewNV = 5261,
+    SpvBuiltInViewportMaskPerViewNV = 5262,
+    SpvBuiltInMax = 0x7fffffff,
+} SpvBuiltIn;
+
+typedef enum SpvSelectionControlShift_ {
+    SpvSelectionControlFlattenShift = 0,
+    SpvSelectionControlDontFlattenShift = 1,
+    SpvSelectionControlMax = 0x7fffffff,
+} SpvSelectionControlShift;
+
+typedef enum SpvSelectionControlMask_ {
+    SpvSelectionControlMaskNone = 0,
+    SpvSelectionControlFlattenMask = 0x00000001,
+    SpvSelectionControlDontFlattenMask = 0x00000002,
+} SpvSelectionControlMask;
+
+typedef enum SpvLoopControlShift_ {
+    SpvLoopControlUnrollShift = 0,
+    SpvLoopControlDontUnrollShift = 1,
+    SpvLoopControlDependencyInfiniteShift = 2,
+    SpvLoopControlDependencyLengthShift = 3,
+    SpvLoopControlMax = 0x7fffffff,
+} SpvLoopControlShift;
+
+typedef enum SpvLoopControlMask_ {
+    SpvLoopControlMaskNone = 0,
+    SpvLoopControlUnrollMask = 0x00000001,
+    SpvLoopControlDontUnrollMask = 0x00000002,
+    SpvLoopControlDependencyInfiniteMask = 0x00000004,
+    SpvLoopControlDependencyLengthMask = 0x00000008,
+} SpvLoopControlMask;
+
+typedef enum SpvFunctionControlShift_ {
+    SpvFunctionControlInlineShift = 0,
+    SpvFunctionControlDontInlineShift = 1,
+    SpvFunctionControlPureShift = 2,
+    SpvFunctionControlConstShift = 3,
+    SpvFunctionControlMax = 0x7fffffff,
+} SpvFunctionControlShift;
+
+typedef enum SpvFunctionControlMask_ {
+    SpvFunctionControlMaskNone = 0,
+    SpvFunctionControlInlineMask = 0x00000001,
+    SpvFunctionControlDontInlineMask = 0x00000002,
+    SpvFunctionControlPureMask = 0x00000004,
+    SpvFunctionControlConstMask = 0x00000008,
+} SpvFunctionControlMask;
+
+typedef enum SpvMemorySemanticsShift_ {
+    SpvMemorySemanticsAcquireShift = 1,
+    SpvMemorySemanticsReleaseShift = 2,
+    SpvMemorySemanticsAcquireReleaseShift = 3,
+    SpvMemorySemanticsSequentiallyConsistentShift = 4,
+    SpvMemorySemanticsUniformMemoryShift = 6,
+    SpvMemorySemanticsSubgroupMemoryShift = 7,
+    SpvMemorySemanticsWorkgroupMemoryShift = 8,
+    SpvMemorySemanticsCrossWorkgroupMemoryShift = 9,
+    SpvMemorySemanticsAtomicCounterMemoryShift = 10,
+    SpvMemorySemanticsImageMemoryShift = 11,
+    SpvMemorySemanticsMax = 0x7fffffff,
+} SpvMemorySemanticsShift;
+
+typedef enum SpvMemorySemanticsMask_ {
+    SpvMemorySemanticsMaskNone = 0,
+    SpvMemorySemanticsAcquireMask = 0x00000002,
+    SpvMemorySemanticsReleaseMask = 0x00000004,
+    SpvMemorySemanticsAcquireReleaseMask = 0x00000008,
+    SpvMemorySemanticsSequentiallyConsistentMask = 0x00000010,
+    SpvMemorySemanticsUniformMemoryMask = 0x00000040,
+    SpvMemorySemanticsSubgroupMemoryMask = 0x00000080,
+    SpvMemorySemanticsWorkgroupMemoryMask = 0x00000100,
+    SpvMemorySemanticsCrossWorkgroupMemoryMask = 0x00000200,
+    SpvMemorySemanticsAtomicCounterMemoryMask = 0x00000400,
+    SpvMemorySemanticsImageMemoryMask = 0x00000800,
+} SpvMemorySemanticsMask;
+
+typedef enum SpvMemoryAccessShift_ {
+    SpvMemoryAccessVolatileShift = 0,
+    SpvMemoryAccessAlignedShift = 1,
+    SpvMemoryAccessNontemporalShift = 2,
+    SpvMemoryAccessMax = 0x7fffffff,
+} SpvMemoryAccessShift;
+
+typedef enum SpvMemoryAccessMask_ {
+    SpvMemoryAccessMaskNone = 0,
+    SpvMemoryAccessVolatileMask = 0x00000001,
+    SpvMemoryAccessAlignedMask = 0x00000002,
+    SpvMemoryAccessNontemporalMask = 0x00000004,
+} SpvMemoryAccessMask;
+
+typedef enum SpvScope_ {
+    SpvScopeCrossDevice = 0,
+    SpvScopeDevice = 1,
+    SpvScopeWorkgroup = 2,
+    SpvScopeSubgroup = 3,
+    SpvScopeInvocation = 4,
+    SpvScopeMax = 0x7fffffff,
+} SpvScope;
+
+typedef enum SpvGroupOperation_ {
+    SpvGroupOperationReduce = 0,
+    SpvGroupOperationInclusiveScan = 1,
+    SpvGroupOperationExclusiveScan = 2,
+    SpvGroupOperationMax = 0x7fffffff,
+} SpvGroupOperation;
+
+typedef enum SpvKernelEnqueueFlags_ {
+    SpvKernelEnqueueFlagsNoWait = 0,
+    SpvKernelEnqueueFlagsWaitKernel = 1,
+    SpvKernelEnqueueFlagsWaitWorkGroup = 2,
+    SpvKernelEnqueueFlagsMax = 0x7fffffff,
+} SpvKernelEnqueueFlags;
+
+typedef enum SpvKernelProfilingInfoShift_ {
+    SpvKernelProfilingInfoCmdExecTimeShift = 0,
+    SpvKernelProfilingInfoMax = 0x7fffffff,
+} SpvKernelProfilingInfoShift;
+
+typedef enum SpvKernelProfilingInfoMask_ {
+    SpvKernelProfilingInfoMaskNone = 0,
+    SpvKernelProfilingInfoCmdExecTimeMask = 0x00000001,
+} SpvKernelProfilingInfoMask;
+
+typedef enum SpvCapability_ {
+    SpvCapabilityMatrix = 0,
+    SpvCapabilityShader = 1,
+    SpvCapabilityGeometry = 2,
+    SpvCapabilityTessellation = 3,
+    SpvCapabilityAddresses = 4,
+    SpvCapabilityLinkage = 5,
+    SpvCapabilityKernel = 6,
+    SpvCapabilityVector16 = 7,
+    SpvCapabilityFloat16Buffer = 8,
+    SpvCapabilityFloat16 = 9,
+    SpvCapabilityFloat64 = 10,
+    SpvCapabilityInt64 = 11,
+    SpvCapabilityInt64Atomics = 12,
+    SpvCapabilityImageBasic = 13,
+    SpvCapabilityImageReadWrite = 14,
+    SpvCapabilityImageMipmap = 15,
+    SpvCapabilityPipes = 17,
+    SpvCapabilityGroups = 18,
+    SpvCapabilityDeviceEnqueue = 19,
+    SpvCapabilityLiteralSampler = 20,
+    SpvCapabilityAtomicStorage = 21,
+    SpvCapabilityInt16 = 22,
+    SpvCapabilityTessellationPointSize = 23,
+    SpvCapabilityGeometryPointSize = 24,
+    SpvCapabilityImageGatherExtended = 25,
+    SpvCapabilityStorageImageMultisample = 27,
+    SpvCapabilityUniformBufferArrayDynamicIndexing = 28,
+    SpvCapabilitySampledImageArrayDynamicIndexing = 29,
+    SpvCapabilityStorageBufferArrayDynamicIndexing = 30,
+    SpvCapabilityStorageImageArrayDynamicIndexing = 31,
+    SpvCapabilityClipDistance = 32,
+    SpvCapabilityCullDistance = 33,
+    SpvCapabilityImageCubeArray = 34,
+    SpvCapabilitySampleRateShading = 35,
+    SpvCapabilityImageRect = 36,
+    SpvCapabilitySampledRect = 37,
+    SpvCapabilityGenericPointer = 38,
+    SpvCapabilityInt8 = 39,
+    SpvCapabilityInputAttachment = 40,
+    SpvCapabilitySparseResidency = 41,
+    SpvCapabilityMinLod = 42,
+    SpvCapabilitySampled1D = 43,
+    SpvCapabilityImage1D = 44,
+    SpvCapabilitySampledCubeArray = 45,
+    SpvCapabilitySampledBuffer = 46,
+    SpvCapabilityImageBuffer = 47,
+    SpvCapabilityImageMSArray = 48,
+    SpvCapabilityStorageImageExtendedFormats = 49,
+    SpvCapabilityImageQuery = 50,
+    SpvCapabilityDerivativeControl = 51,
+    SpvCapabilityInterpolationFunction = 52,
+    SpvCapabilityTransformFeedback = 53,
+    SpvCapabilityGeometryStreams = 54,
+    SpvCapabilityStorageImageReadWithoutFormat = 55,
+    SpvCapabilityStorageImageWriteWithoutFormat = 56,
+    SpvCapabilityMultiViewport = 57,
+    SpvCapabilitySubgroupDispatch = 58,
+    SpvCapabilityNamedBarrier = 59,
+    SpvCapabilityPipeStorage = 60,
+    SpvCapabilitySubgroupBallotKHR = 4423,
+    SpvCapabilityDrawParameters = 4427,
+    SpvCapabilitySubgroupVoteKHR = 4431,
+    SpvCapabilityStorageBuffer16BitAccess = 4433,
+    SpvCapabilityStorageUniformBufferBlock16 = 4433,
+    SpvCapabilityStorageUniform16 = 4434,
+    SpvCapabilityUniformAndStorageBuffer16BitAccess = 4434,
+    SpvCapabilityStoragePushConstant16 = 4435,
+    SpvCapabilityStorageInputOutput16 = 4436,
+    SpvCapabilityDeviceGroup = 4437,
+    SpvCapabilityMultiView = 4439,
+    SpvCapabilityVariablePointersStorageBuffer = 4441,
+    SpvCapabilityVariablePointers = 4442,
+    SpvCapabilityAtomicStorageOps = 4445,
+    SpvCapabilitySampleMaskPostDepthCoverage = 4447,
+    SpvCapabilityImageGatherBiasLodAMD = 5009,
+    SpvCapabilityFragmentMaskAMD = 5010,
+    SpvCapabilityStencilExportEXT = 5013,
+    SpvCapabilityImageReadWriteLodAMD = 5015,
+    SpvCapabilitySampleMaskOverrideCoverageNV = 5249,
+    SpvCapabilityGeometryShaderPassthroughNV = 5251,
+    SpvCapabilityShaderViewportIndexLayerEXT = 5254,
+    SpvCapabilityShaderViewportIndexLayerNV = 5254,
+    SpvCapabilityShaderViewportMaskNV = 5255,
+    SpvCapabilityShaderStereoViewNV = 5259,
+    SpvCapabilityPerViewAttributesNV = 5260,
+    SpvCapabilitySubgroupShuffleINTEL = 5568,
+    SpvCapabilitySubgroupBufferBlockIOINTEL = 5569,
+    SpvCapabilitySubgroupImageBlockIOINTEL = 5570,
+    SpvCapabilityMax = 0x7fffffff,
+} SpvCapability;
+
+typedef enum SpvOp_ {
+    SpvOpNop = 0,
+    SpvOpUndef = 1,
+    SpvOpSourceContinued = 2,
+    SpvOpSource = 3,
+    SpvOpSourceExtension = 4,
+    SpvOpName = 5,
+    SpvOpMemberName = 6,
+    SpvOpString = 7,
+    SpvOpLine = 8,
+    SpvOpExtension = 10,
+    SpvOpExtInstImport = 11,
+    SpvOpExtInst = 12,
+    SpvOpMemoryModel = 14,
+    SpvOpEntryPoint = 15,
+    SpvOpExecutionMode = 16,
+    SpvOpCapability = 17,
+    SpvOpTypeVoid = 19,
+    SpvOpTypeBool = 20,
+    SpvOpTypeInt = 21,
+    SpvOpTypeFloat = 22,
+    SpvOpTypeVector = 23,
+    SpvOpTypeMatrix = 24,
+    SpvOpTypeImage = 25,
+    SpvOpTypeSampler = 26,
+    SpvOpTypeSampledImage = 27,
+    SpvOpTypeArray = 28,
+    SpvOpTypeRuntimeArray = 29,
+    SpvOpTypeStruct = 30,
+    SpvOpTypeOpaque = 31,
+    SpvOpTypePointer = 32,
+    SpvOpTypeFunction = 33,
+    SpvOpTypeEvent = 34,
+    SpvOpTypeDeviceEvent = 35,
+    SpvOpTypeReserveId = 36,
+    SpvOpTypeQueue = 37,
+    SpvOpTypePipe = 38,
+    SpvOpTypeForwardPointer = 39,
+    SpvOpConstantTrue = 41,
+    SpvOpConstantFalse = 42,
+    SpvOpConstant = 43,
+    SpvOpConstantComposite = 44,
+    SpvOpConstantSampler = 45,
+    SpvOpConstantNull = 46,
+    SpvOpSpecConstantTrue = 48,
+    SpvOpSpecConstantFalse = 49,
+    SpvOpSpecConstant = 50,
+    SpvOpSpecConstantComposite = 51,
+    SpvOpSpecConstantOp = 52,
+    SpvOpFunction = 54,
+    SpvOpFunctionParameter = 55,
+    SpvOpFunctionEnd = 56,
+    SpvOpFunctionCall = 57,
+    SpvOpVariable = 59,
+    SpvOpImageTexelPointer = 60,
+    SpvOpLoad = 61,
+    SpvOpStore = 62,
+    SpvOpCopyMemory = 63,
+    SpvOpCopyMemorySized = 64,
+    SpvOpAccessChain = 65,
+    SpvOpInBoundsAccessChain = 66,
+    SpvOpPtrAccessChain = 67,
+    SpvOpArrayLength = 68,
+    SpvOpGenericPtrMemSemantics = 69,
+    SpvOpInBoundsPtrAccessChain = 70,
+    SpvOpDecorate = 71,
+    SpvOpMemberDecorate = 72,
+    SpvOpDecorationGroup = 73,
+    SpvOpGroupDecorate = 74,
+    SpvOpGroupMemberDecorate = 75,
+    SpvOpVectorExtractDynamic = 77,
+    SpvOpVectorInsertDynamic = 78,
+    SpvOpVectorShuffle = 79,
+    SpvOpCompositeConstruct = 80,
+    SpvOpCompositeExtract = 81,
+    SpvOpCompositeInsert = 82,
+    SpvOpCopyObject = 83,
+    SpvOpTranspose = 84,
+    SpvOpSampledImage = 86,
+    SpvOpImageSampleImplicitLod = 87,
+    SpvOpImageSampleExplicitLod = 88,
+    SpvOpImageSampleDrefImplicitLod = 89,
+    SpvOpImageSampleDrefExplicitLod = 90,
+    SpvOpImageSampleProjImplicitLod = 91,
+    SpvOpImageSampleProjExplicitLod = 92,
+    SpvOpImageSampleProjDrefImplicitLod = 93,
+    SpvOpImageSampleProjDrefExplicitLod = 94,
+    SpvOpImageFetch = 95,
+    SpvOpImageGather = 96,
+    SpvOpImageDrefGather = 97,
+    SpvOpImageRead = 98,
+    SpvOpImageWrite = 99,
+    SpvOpImage = 100,
+    SpvOpImageQueryFormat = 101,
+    SpvOpImageQueryOrder = 102,
+    SpvOpImageQuerySizeLod = 103,
+    SpvOpImageQuerySize = 104,
+    SpvOpImageQueryLod = 105,
+    SpvOpImageQueryLevels = 106,
+    SpvOpImageQuerySamples = 107,
+    SpvOpConvertFToU = 109,
+    SpvOpConvertFToS = 110,
+    SpvOpConvertSToF = 111,
+    SpvOpConvertUToF = 112,
+    SpvOpUConvert = 113,
+    SpvOpSConvert = 114,
+    SpvOpFConvert = 115,
+    SpvOpQuantizeToF16 = 116,
+    SpvOpConvertPtrToU = 117,
+    SpvOpSatConvertSToU = 118,
+    SpvOpSatConvertUToS = 119,
+    SpvOpConvertUToPtr = 120,
+    SpvOpPtrCastToGeneric = 121,
+    SpvOpGenericCastToPtr = 122,
+    SpvOpGenericCastToPtrExplicit = 123,
+    SpvOpBitcast = 124,
+    SpvOpSNegate = 126,
+    SpvOpFNegate = 127,
+    SpvOpIAdd = 128,
+    SpvOpFAdd = 129,
+    SpvOpISub = 130,
+    SpvOpFSub = 131,
+    SpvOpIMul = 132,
+    SpvOpFMul = 133,
+    SpvOpUDiv = 134,
+    SpvOpSDiv = 135,
+    SpvOpFDiv = 136,
+    SpvOpUMod = 137,
+    SpvOpSRem = 138,
+    SpvOpSMod = 139,
+    SpvOpFRem = 140,
+    SpvOpFMod = 141,
+    SpvOpVectorTimesScalar = 142,
+    SpvOpMatrixTimesScalar = 143,
+    SpvOpVectorTimesMatrix = 144,
+    SpvOpMatrixTimesVector = 145,
+    SpvOpMatrixTimesMatrix = 146,
+    SpvOpOuterProduct = 147,
+    SpvOpDot = 148,
+    SpvOpIAddCarry = 149,
+    SpvOpISubBorrow = 150,
+    SpvOpUMulExtended = 151,
+    SpvOpSMulExtended = 152,
+    SpvOpAny = 154,
+    SpvOpAll = 155,
+    SpvOpIsNan = 156,
+    SpvOpIsInf = 157,
+    SpvOpIsFinite = 158,
+    SpvOpIsNormal = 159,
+    SpvOpSignBitSet = 160,
+    SpvOpLessOrGreater = 161,
+    SpvOpOrdered = 162,
+    SpvOpUnordered = 163,
+    SpvOpLogicalEqual = 164,
+    SpvOpLogicalNotEqual = 165,
+    SpvOpLogicalOr = 166,
+    SpvOpLogicalAnd = 167,
+    SpvOpLogicalNot = 168,
+    SpvOpSelect = 169,
+    SpvOpIEqual = 170,
+    SpvOpINotEqual = 171,
+    SpvOpUGreaterThan = 172,
+    SpvOpSGreaterThan = 173,
+    SpvOpUGreaterThanEqual = 174,
+    SpvOpSGreaterThanEqual = 175,
+    SpvOpULessThan = 176,
+    SpvOpSLessThan = 177,
+    SpvOpULessThanEqual = 178,
+    SpvOpSLessThanEqual = 179,
+    SpvOpFOrdEqual = 180,
+    SpvOpFUnordEqual = 181,
+    SpvOpFOrdNotEqual = 182,
+    SpvOpFUnordNotEqual = 183,
+    SpvOpFOrdLessThan = 184,
+    SpvOpFUnordLessThan = 185,
+    SpvOpFOrdGreaterThan = 186,
+    SpvOpFUnordGreaterThan = 187,
+    SpvOpFOrdLessThanEqual = 188,
+    SpvOpFUnordLessThanEqual = 189,
+    SpvOpFOrdGreaterThanEqual = 190,
+    SpvOpFUnordGreaterThanEqual = 191,
+    SpvOpShiftRightLogical = 194,
+    SpvOpShiftRightArithmetic = 195,
+    SpvOpShiftLeftLogical = 196,
+    SpvOpBitwiseOr = 197,
+    SpvOpBitwiseXor = 198,
+    SpvOpBitwiseAnd = 199,
+    SpvOpNot = 200,
+    SpvOpBitFieldInsert = 201,
+    SpvOpBitFieldSExtract = 202,
+    SpvOpBitFieldUExtract = 203,
+    SpvOpBitReverse = 204,
+    SpvOpBitCount = 205,
+    SpvOpDPdx = 207,
+    SpvOpDPdy = 208,
+    SpvOpFwidth = 209,
+    SpvOpDPdxFine = 210,
+    SpvOpDPdyFine = 211,
+    SpvOpFwidthFine = 212,
+    SpvOpDPdxCoarse = 213,
+    SpvOpDPdyCoarse = 214,
+    SpvOpFwidthCoarse = 215,
+    SpvOpEmitVertex = 218,
+    SpvOpEndPrimitive = 219,
+    SpvOpEmitStreamVertex = 220,
+    SpvOpEndStreamPrimitive = 221,
+    SpvOpControlBarrier = 224,
+    SpvOpMemoryBarrier = 225,
+    SpvOpAtomicLoad = 227,
+    SpvOpAtomicStore = 228,
+    SpvOpAtomicExchange = 229,
+    SpvOpAtomicCompareExchange = 230,
+    SpvOpAtomicCompareExchangeWeak = 231,
+    SpvOpAtomicIIncrement = 232,
+    SpvOpAtomicIDecrement = 233,
+    SpvOpAtomicIAdd = 234,
+    SpvOpAtomicISub = 235,
+    SpvOpAtomicSMin = 236,
+    SpvOpAtomicUMin = 237,
+    SpvOpAtomicSMax = 238,
+    SpvOpAtomicUMax = 239,
+    SpvOpAtomicAnd = 240,
+    SpvOpAtomicOr = 241,
+    SpvOpAtomicXor = 242,
+    SpvOpPhi = 245,
+    SpvOpLoopMerge = 246,
+    SpvOpSelectionMerge = 247,
+    SpvOpLabel = 248,
+    SpvOpBranch = 249,
+    SpvOpBranchConditional = 250,
+    SpvOpSwitch = 251,
+    SpvOpKill = 252,
+    SpvOpReturn = 253,
+    SpvOpReturnValue = 254,
+    SpvOpUnreachable = 255,
+    SpvOpLifetimeStart = 256,
+    SpvOpLifetimeStop = 257,
+    SpvOpGroupAsyncCopy = 259,
+    SpvOpGroupWaitEvents = 260,
+    SpvOpGroupAll = 261,
+    SpvOpGroupAny = 262,
+    SpvOpGroupBroadcast = 263,
+    SpvOpGroupIAdd = 264,
+    SpvOpGroupFAdd = 265,
+    SpvOpGroupFMin = 266,
+    SpvOpGroupUMin = 267,
+    SpvOpGroupSMin = 268,
+    SpvOpGroupFMax = 269,
+    SpvOpGroupUMax = 270,
+    SpvOpGroupSMax = 271,
+    SpvOpReadPipe = 274,
+    SpvOpWritePipe = 275,
+    SpvOpReservedReadPipe = 276,
+    SpvOpReservedWritePipe = 277,
+    SpvOpReserveReadPipePackets = 278,
+    SpvOpReserveWritePipePackets = 279,
+    SpvOpCommitReadPipe = 280,
+    SpvOpCommitWritePipe = 281,
+    SpvOpIsValidReserveId = 282,
+    SpvOpGetNumPipePackets = 283,
+    SpvOpGetMaxPipePackets = 284,
+    SpvOpGroupReserveReadPipePackets = 285,
+    SpvOpGroupReserveWritePipePackets = 286,
+    SpvOpGroupCommitReadPipe = 287,
+    SpvOpGroupCommitWritePipe = 288,
+    SpvOpEnqueueMarker = 291,
+    SpvOpEnqueueKernel = 292,
+    SpvOpGetKernelNDrangeSubGroupCount = 293,
+    SpvOpGetKernelNDrangeMaxSubGroupSize = 294,
+    SpvOpGetKernelWorkGroupSize = 295,
+    SpvOpGetKernelPreferredWorkGroupSizeMultiple = 296,
+    SpvOpRetainEvent = 297,
+    SpvOpReleaseEvent = 298,
+    SpvOpCreateUserEvent = 299,
+    SpvOpIsValidEvent = 300,
+    SpvOpSetUserEventStatus = 301,
+    SpvOpCaptureEventProfilingInfo = 302,
+    SpvOpGetDefaultQueue = 303,
+    SpvOpBuildNDRange = 304,
+    SpvOpImageSparseSampleImplicitLod = 305,
+    SpvOpImageSparseSampleExplicitLod = 306,
+    SpvOpImageSparseSampleDrefImplicitLod = 307,
+    SpvOpImageSparseSampleDrefExplicitLod = 308,
+    SpvOpImageSparseSampleProjImplicitLod = 309,
+    SpvOpImageSparseSampleProjExplicitLod = 310,
+    SpvOpImageSparseSampleProjDrefImplicitLod = 311,
+    SpvOpImageSparseSampleProjDrefExplicitLod = 312,
+    SpvOpImageSparseFetch = 313,
+    SpvOpImageSparseGather = 314,
+    SpvOpImageSparseDrefGather = 315,
+    SpvOpImageSparseTexelsResident = 316,
+    SpvOpNoLine = 317,
+    SpvOpAtomicFlagTestAndSet = 318,
+    SpvOpAtomicFlagClear = 319,
+    SpvOpImageSparseRead = 320,
+    SpvOpSizeOf = 321,
+    SpvOpTypePipeStorage = 322,
+    SpvOpConstantPipeStorage = 323,
+    SpvOpCreatePipeFromPipeStorage = 324,
+    SpvOpGetKernelLocalSizeForSubgroupCount = 325,
+    SpvOpGetKernelMaxNumSubgroups = 326,
+    SpvOpTypeNamedBarrier = 327,
+    SpvOpNamedBarrierInitialize = 328,
+    SpvOpMemoryNamedBarrier = 329,
+    SpvOpModuleProcessed = 330,
+    SpvOpDecorateId = 332,
+    SpvOpSubgroupBallotKHR = 4421,
+    SpvOpSubgroupFirstInvocationKHR = 4422,
+    SpvOpSubgroupAllKHR = 4428,
+    SpvOpSubgroupAnyKHR = 4429,
+    SpvOpSubgroupAllEqualKHR = 4430,
+    SpvOpSubgroupReadInvocationKHR = 4432,
+    SpvOpGroupIAddNonUniformAMD = 5000,
+    SpvOpGroupFAddNonUniformAMD = 5001,
+    SpvOpGroupFMinNonUniformAMD = 5002,
+    SpvOpGroupUMinNonUniformAMD = 5003,
+    SpvOpGroupSMinNonUniformAMD = 5004,
+    SpvOpGroupFMaxNonUniformAMD = 5005,
+    SpvOpGroupUMaxNonUniformAMD = 5006,
+    SpvOpGroupSMaxNonUniformAMD = 5007,
+    SpvOpFragmentMaskFetchAMD = 5011,
+    SpvOpFragmentFetchAMD = 5012,
+    SpvOpSubgroupShuffleINTEL = 5571,
+    SpvOpSubgroupShuffleDownINTEL = 5572,
+    SpvOpSubgroupShuffleUpINTEL = 5573,
+    SpvOpSubgroupShuffleXorINTEL = 5574,
+    SpvOpSubgroupBlockReadINTEL = 5575,
+    SpvOpSubgroupBlockWriteINTEL = 5576,
+    SpvOpSubgroupImageBlockReadINTEL = 5577,
+    SpvOpSubgroupImageBlockWriteINTEL = 5578,
+    SpvOpDecorateStringGOOGLE = 5632,
+    SpvOpMemberDecorateStringGOOGLE = 5633,
+    SpvOpMax = 0x7fffffff,
+} SpvOp;
+
+#endif  // #ifndef spirv_H
+
diff --git a/libs/spirv-headers/spirv/1.1/spirv.hpp b/libs/spirv-headers/spirv/1.1/spirv.hpp
new file mode 100644
index 00000000000..c26ac1f26c6
--- /dev/null
+++ b/libs/spirv-headers/spirv/1.1/spirv.hpp
@@ -0,0 +1,1024 @@
+// Copyright (c) 2014-2018 The Khronos Group Inc.
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and/or associated documentation files (the "Materials"),
+// to deal in the Materials without restriction, including without limitation
+// the rights to use, copy, modify, merge, publish, distribute, sublicense,
+// and/or sell copies of the Materials, and to permit persons to whom the
+// Materials are furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Materials.
+// 
+// MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS KHRONOS
+// STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS SPECIFICATIONS AND
+// HEADER INFORMATION ARE LOCATED AT https://www.khronos.org/registry/ 
+// 
+// THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM,OUT OF OR IN CONNECTION WITH THE MATERIALS OR THE USE OR OTHER DEALINGS
+// IN THE MATERIALS.
+
+// This header is automatically generated by the same tool that creates
+// the Binary Section of the SPIR-V specification.
+
+// Enumeration tokens for SPIR-V, in various styles:
+//   C, C++, C++11, JSON, Lua, Python
+// 
+// - C will have tokens with a "Spv" prefix, e.g.: SpvSourceLanguageGLSL
+// - C++ will have tokens in the "spv" name space, e.g.: spv::SourceLanguageGLSL
+// - C++11 will use enum classes in the spv namespace, e.g.: spv::SourceLanguage::GLSL
+// - Lua will use tables, e.g.: spv.SourceLanguage.GLSL
+// - Python will use dictionaries, e.g.: spv['SourceLanguage']['GLSL']
+// 
+// Some tokens act like mask values, which can be OR'd together,
+// while others are mutually exclusive.  The mask-like ones have
+// "Mask" in their name, and a parallel enum that has the shift
+// amount (1 << x) for each corresponding enumerant.
+
+#ifndef spirv_HPP
+#define spirv_HPP
+
+namespace spv {
+
+typedef unsigned int Id;
+
+#define SPV_VERSION 0x10100
+#define SPV_REVISION 8
+
+static const unsigned int MagicNumber = 0x07230203;
+static const unsigned int Version = 0x00010100;
+static const unsigned int Revision = 8;
+static const unsigned int OpCodeMask = 0xffff;
+static const unsigned int WordCountShift = 16;
+
+enum SourceLanguage {
+    SourceLanguageUnknown = 0,
+    SourceLanguageESSL = 1,
+    SourceLanguageGLSL = 2,
+    SourceLanguageOpenCL_C = 3,
+    SourceLanguageOpenCL_CPP = 4,
+    SourceLanguageHLSL = 5,
+    SourceLanguageMax = 0x7fffffff,
+};
+
+enum ExecutionModel {
+    ExecutionModelVertex = 0,
+    ExecutionModelTessellationControl = 1,
+    ExecutionModelTessellationEvaluation = 2,
+    ExecutionModelGeometry = 3,
+    ExecutionModelFragment = 4,
+    ExecutionModelGLCompute = 5,
+    ExecutionModelKernel = 6,
+    ExecutionModelMax = 0x7fffffff,
+};
+
+enum AddressingModel {
+    AddressingModelLogical = 0,
+    AddressingModelPhysical32 = 1,
+    AddressingModelPhysical64 = 2,
+    AddressingModelMax = 0x7fffffff,
+};
+
+enum MemoryModel {
+    MemoryModelSimple = 0,
+    MemoryModelGLSL450 = 1,
+    MemoryModelOpenCL = 2,
+    MemoryModelMax = 0x7fffffff,
+};
+
+enum ExecutionMode {
+    ExecutionModeInvocations = 0,
+    ExecutionModeSpacingEqual = 1,
+    ExecutionModeSpacingFractionalEven = 2,
+    ExecutionModeSpacingFractionalOdd = 3,
+    ExecutionModeVertexOrderCw = 4,
+    ExecutionModeVertexOrderCcw = 5,
+    ExecutionModePixelCenterInteger = 6,
+    ExecutionModeOriginUpperLeft = 7,
+    ExecutionModeOriginLowerLeft = 8,
+    ExecutionModeEarlyFragmentTests = 9,
+    ExecutionModePointMode = 10,
+    ExecutionModeXfb = 11,
+    ExecutionModeDepthReplacing = 12,
+    ExecutionModeDepthGreater = 14,
+    ExecutionModeDepthLess = 15,
+    ExecutionModeDepthUnchanged = 16,
+    ExecutionModeLocalSize = 17,
+    ExecutionModeLocalSizeHint = 18,
+    ExecutionModeInputPoints = 19,
+    ExecutionModeInputLines = 20,
+    ExecutionModeInputLinesAdjacency = 21,
+    ExecutionModeTriangles = 22,
+    ExecutionModeInputTrianglesAdjacency = 23,
+    ExecutionModeQuads = 24,
+    ExecutionModeIsolines = 25,
+    ExecutionModeOutputVertices = 26,
+    ExecutionModeOutputPoints = 27,
+    ExecutionModeOutputLineStrip = 28,
+    ExecutionModeOutputTriangleStrip = 29,
+    ExecutionModeVecTypeHint = 30,
+    ExecutionModeContractionOff = 31,
+    ExecutionModeInitializer = 33,
+    ExecutionModeFinalizer = 34,
+    ExecutionModeSubgroupSize = 35,
+    ExecutionModeSubgroupsPerWorkgroup = 36,
+    ExecutionModePostDepthCoverage = 4446,
+    ExecutionModeStencilRefReplacingEXT = 5027,
+    ExecutionModeMax = 0x7fffffff,
+};
+
+enum StorageClass {
+    StorageClassUniformConstant = 0,
+    StorageClassInput = 1,
+    StorageClassUniform = 2,
+    StorageClassOutput = 3,
+    StorageClassWorkgroup = 4,
+    StorageClassCrossWorkgroup = 5,
+    StorageClassPrivate = 6,
+    StorageClassFunction = 7,
+    StorageClassGeneric = 8,
+    StorageClassPushConstant = 9,
+    StorageClassAtomicCounter = 10,
+    StorageClassImage = 11,
+    StorageClassStorageBuffer = 12,
+    StorageClassMax = 0x7fffffff,
+};
+
+enum Dim {
+    Dim1D = 0,
+    Dim2D = 1,
+    Dim3D = 2,
+    DimCube = 3,
+    DimRect = 4,
+    DimBuffer = 5,
+    DimSubpassData = 6,
+    DimMax = 0x7fffffff,
+};
+
+enum SamplerAddressingMode {
+    SamplerAddressingModeNone = 0,
+    SamplerAddressingModeClampToEdge = 1,
+    SamplerAddressingModeClamp = 2,
+    SamplerAddressingModeRepeat = 3,
+    SamplerAddressingModeRepeatMirrored = 4,
+    SamplerAddressingModeMax = 0x7fffffff,
+};
+
+enum SamplerFilterMode {
+    SamplerFilterModeNearest = 0,
+    SamplerFilterModeLinear = 1,
+    SamplerFilterModeMax = 0x7fffffff,
+};
+
+enum ImageFormat {
+    ImageFormatUnknown = 0,
+    ImageFormatRgba32f = 1,
+    ImageFormatRgba16f = 2,
+    ImageFormatR32f = 3,
+    ImageFormatRgba8 = 4,
+    ImageFormatRgba8Snorm = 5,
+    ImageFormatRg32f = 6,
+    ImageFormatRg16f = 7,
+    ImageFormatR11fG11fB10f = 8,
+    ImageFormatR16f = 9,
+    ImageFormatRgba16 = 10,
+    ImageFormatRgb10A2 = 11,
+    ImageFormatRg16 = 12,
+    ImageFormatRg8 = 13,
+    ImageFormatR16 = 14,
+    ImageFormatR8 = 15,
+    ImageFormatRgba16Snorm = 16,
+    ImageFormatRg16Snorm = 17,
+    ImageFormatRg8Snorm = 18,
+    ImageFormatR16Snorm = 19,
+    ImageFormatR8Snorm = 20,
+    ImageFormatRgba32i = 21,
+    ImageFormatRgba16i = 22,
+    ImageFormatRgba8i = 23,
+    ImageFormatR32i = 24,
+    ImageFormatRg32i = 25,
+    ImageFormatRg16i = 26,
+    ImageFormatRg8i = 27,
+    ImageFormatR16i = 28,
+    ImageFormatR8i = 29,
+    ImageFormatRgba32ui = 30,
+    ImageFormatRgba16ui = 31,
+    ImageFormatRgba8ui = 32,
+    ImageFormatR32ui = 33,
+    ImageFormatRgb10a2ui = 34,
+    ImageFormatRg32ui = 35,
+    ImageFormatRg16ui = 36,
+    ImageFormatRg8ui = 37,
+    ImageFormatR16ui = 38,
+    ImageFormatR8ui = 39,
+    ImageFormatMax = 0x7fffffff,
+};
+
+enum ImageChannelOrder {
+    ImageChannelOrderR = 0,
+    ImageChannelOrderA = 1,
+    ImageChannelOrderRG = 2,
+    ImageChannelOrderRA = 3,
+    ImageChannelOrderRGB = 4,
+    ImageChannelOrderRGBA = 5,
+    ImageChannelOrderBGRA = 6,
+    ImageChannelOrderARGB = 7,
+    ImageChannelOrderIntensity = 8,
+    ImageChannelOrderLuminance = 9,
+    ImageChannelOrderRx = 10,
+    ImageChannelOrderRGx = 11,
+    ImageChannelOrderRGBx = 12,
+    ImageChannelOrderDepth = 13,
+    ImageChannelOrderDepthStencil = 14,
+    ImageChannelOrdersRGB = 15,
+    ImageChannelOrdersRGBx = 16,
+    ImageChannelOrdersRGBA = 17,
+    ImageChannelOrdersBGRA = 18,
+    ImageChannelOrderABGR = 19,
+    ImageChannelOrderMax = 0x7fffffff,
+};
+
+enum ImageChannelDataType {
+    ImageChannelDataTypeSnormInt8 = 0,
+    ImageChannelDataTypeSnormInt16 = 1,
+    ImageChannelDataTypeUnormInt8 = 2,
+    ImageChannelDataTypeUnormInt16 = 3,
+    ImageChannelDataTypeUnormShort565 = 4,
+    ImageChannelDataTypeUnormShort555 = 5,
+    ImageChannelDataTypeUnormInt101010 = 6,
+    ImageChannelDataTypeSignedInt8 = 7,
+    ImageChannelDataTypeSignedInt16 = 8,
+    ImageChannelDataTypeSignedInt32 = 9,
+    ImageChannelDataTypeUnsignedInt8 = 10,
+    ImageChannelDataTypeUnsignedInt16 = 11,
+    ImageChannelDataTypeUnsignedInt32 = 12,
+    ImageChannelDataTypeHalfFloat = 13,
+    ImageChannelDataTypeFloat = 14,
+    ImageChannelDataTypeUnormInt24 = 15,
+    ImageChannelDataTypeUnormInt101010_2 = 16,
+    ImageChannelDataTypeMax = 0x7fffffff,
+};
+
+enum ImageOperandsShift {
+    ImageOperandsBiasShift = 0,
+    ImageOperandsLodShift = 1,
+    ImageOperandsGradShift = 2,
+    ImageOperandsConstOffsetShift = 3,
+    ImageOperandsOffsetShift = 4,
+    ImageOperandsConstOffsetsShift = 5,
+    ImageOperandsSampleShift = 6,
+    ImageOperandsMinLodShift = 7,
+    ImageOperandsMax = 0x7fffffff,
+};
+
+enum ImageOperandsMask {
+    ImageOperandsMaskNone = 0,
+    ImageOperandsBiasMask = 0x00000001,
+    ImageOperandsLodMask = 0x00000002,
+    ImageOperandsGradMask = 0x00000004,
+    ImageOperandsConstOffsetMask = 0x00000008,
+    ImageOperandsOffsetMask = 0x00000010,
+    ImageOperandsConstOffsetsMask = 0x00000020,
+    ImageOperandsSampleMask = 0x00000040,
+    ImageOperandsMinLodMask = 0x00000080,
+};
+
+enum FPFastMathModeShift {
+    FPFastMathModeNotNaNShift = 0,
+    FPFastMathModeNotInfShift = 1,
+    FPFastMathModeNSZShift = 2,
+    FPFastMathModeAllowRecipShift = 3,
+    FPFastMathModeFastShift = 4,
+    FPFastMathModeMax = 0x7fffffff,
+};
+
+enum FPFastMathModeMask {
+    FPFastMathModeMaskNone = 0,
+    FPFastMathModeNotNaNMask = 0x00000001,
+    FPFastMathModeNotInfMask = 0x00000002,
+    FPFastMathModeNSZMask = 0x00000004,
+    FPFastMathModeAllowRecipMask = 0x00000008,
+    FPFastMathModeFastMask = 0x00000010,
+};
+
+enum FPRoundingMode {
+    FPRoundingModeRTE = 0,
+    FPRoundingModeRTZ = 1,
+    FPRoundingModeRTP = 2,
+    FPRoundingModeRTN = 3,
+    FPRoundingModeMax = 0x7fffffff,
+};
+
+enum LinkageType {
+    LinkageTypeExport = 0,
+    LinkageTypeImport = 1,
+    LinkageTypeMax = 0x7fffffff,
+};
+
+enum AccessQualifier {
+    AccessQualifierReadOnly = 0,
+    AccessQualifierWriteOnly = 1,
+    AccessQualifierReadWrite = 2,
+    AccessQualifierMax = 0x7fffffff,
+};
+
+enum FunctionParameterAttribute {
+    FunctionParameterAttributeZext = 0,
+    FunctionParameterAttributeSext = 1,
+    FunctionParameterAttributeByVal = 2,
+    FunctionParameterAttributeSret = 3,
+    FunctionParameterAttributeNoAlias = 4,
+    FunctionParameterAttributeNoCapture = 5,
+    FunctionParameterAttributeNoWrite = 6,
+    FunctionParameterAttributeNoReadWrite = 7,
+    FunctionParameterAttributeMax = 0x7fffffff,
+};
+
+enum Decoration {
+    DecorationRelaxedPrecision = 0,
+    DecorationSpecId = 1,
+    DecorationBlock = 2,
+    DecorationBufferBlock = 3,
+    DecorationRowMajor = 4,
+    DecorationColMajor = 5,
+    DecorationArrayStride = 6,
+    DecorationMatrixStride = 7,
+    DecorationGLSLShared = 8,
+    DecorationGLSLPacked = 9,
+    DecorationCPacked = 10,
+    DecorationBuiltIn = 11,
+    DecorationNoPerspective = 13,
+    DecorationFlat = 14,
+    DecorationPatch = 15,
+    DecorationCentroid = 16,
+    DecorationSample = 17,
+    DecorationInvariant = 18,
+    DecorationRestrict = 19,
+    DecorationAliased = 20,
+    DecorationVolatile = 21,
+    DecorationConstant = 22,
+    DecorationCoherent = 23,
+    DecorationNonWritable = 24,
+    DecorationNonReadable = 25,
+    DecorationUniform = 26,
+    DecorationSaturatedConversion = 28,
+    DecorationStream = 29,
+    DecorationLocation = 30,
+    DecorationComponent = 31,
+    DecorationIndex = 32,
+    DecorationBinding = 33,
+    DecorationDescriptorSet = 34,
+    DecorationOffset = 35,
+    DecorationXfbBuffer = 36,
+    DecorationXfbStride = 37,
+    DecorationFuncParamAttr = 38,
+    DecorationFPRoundingMode = 39,
+    DecorationFPFastMathMode = 40,
+    DecorationLinkageAttributes = 41,
+    DecorationNoContraction = 42,
+    DecorationInputAttachmentIndex = 43,
+    DecorationAlignment = 44,
+    DecorationMaxByteOffset = 45,
+    DecorationExplicitInterpAMD = 4999,
+    DecorationOverrideCoverageNV = 5248,
+    DecorationPassthroughNV = 5250,
+    DecorationViewportRelativeNV = 5252,
+    DecorationSecondaryViewportRelativeNV = 5256,
+    DecorationHlslCounterBufferGOOGLE = 5634,
+    DecorationHlslSemanticGOOGLE = 5635,
+    DecorationMax = 0x7fffffff,
+};
+
+enum BuiltIn {
+    BuiltInPosition = 0,
+    BuiltInPointSize = 1,
+    BuiltInClipDistance = 3,
+    BuiltInCullDistance = 4,
+    BuiltInVertexId = 5,
+    BuiltInInstanceId = 6,
+    BuiltInPrimitiveId = 7,
+    BuiltInInvocationId = 8,
+    BuiltInLayer = 9,
+    BuiltInViewportIndex = 10,
+    BuiltInTessLevelOuter = 11,
+    BuiltInTessLevelInner = 12,
+    BuiltInTessCoord = 13,
+    BuiltInPatchVertices = 14,
+    BuiltInFragCoord = 15,
+    BuiltInPointCoord = 16,
+    BuiltInFrontFacing = 17,
+    BuiltInSampleId = 18,
+    BuiltInSamplePosition = 19,
+    BuiltInSampleMask = 20,
+    BuiltInFragDepth = 22,
+    BuiltInHelperInvocation = 23,
+    BuiltInNumWorkgroups = 24,
+    BuiltInWorkgroupSize = 25,
+    BuiltInWorkgroupId = 26,
+    BuiltInLocalInvocationId = 27,
+    BuiltInGlobalInvocationId = 28,
+    BuiltInLocalInvocationIndex = 29,
+    BuiltInWorkDim = 30,
+    BuiltInGlobalSize = 31,
+    BuiltInEnqueuedWorkgroupSize = 32,
+    BuiltInGlobalOffset = 33,
+    BuiltInGlobalLinearId = 34,
+    BuiltInSubgroupSize = 36,
+    BuiltInSubgroupMaxSize = 37,
+    BuiltInNumSubgroups = 38,
+    BuiltInNumEnqueuedSubgroups = 39,
+    BuiltInSubgroupId = 40,
+    BuiltInSubgroupLocalInvocationId = 41,
+    BuiltInVertexIndex = 42,
+    BuiltInInstanceIndex = 43,
+    BuiltInSubgroupEqMaskKHR = 4416,
+    BuiltInSubgroupGeMaskKHR = 4417,
+    BuiltInSubgroupGtMaskKHR = 4418,
+    BuiltInSubgroupLeMaskKHR = 4419,
+    BuiltInSubgroupLtMaskKHR = 4420,
+    BuiltInBaseVertex = 4424,
+    BuiltInBaseInstance = 4425,
+    BuiltInDrawIndex = 4426,
+    BuiltInDeviceIndex = 4438,
+    BuiltInViewIndex = 4440,
+    BuiltInBaryCoordNoPerspAMD = 4992,
+    BuiltInBaryCoordNoPerspCentroidAMD = 4993,
+    BuiltInBaryCoordNoPerspSampleAMD = 4994,
+    BuiltInBaryCoordSmoothAMD = 4995,
+    BuiltInBaryCoordSmoothCentroidAMD = 4996,
+    BuiltInBaryCoordSmoothSampleAMD = 4997,
+    BuiltInBaryCoordPullModelAMD = 4998,
+    BuiltInFragStencilRefEXT = 5014,
+    BuiltInViewportMaskNV = 5253,
+    BuiltInSecondaryPositionNV = 5257,
+    BuiltInSecondaryViewportMaskNV = 5258,
+    BuiltInPositionPerViewNV = 5261,
+    BuiltInViewportMaskPerViewNV = 5262,
+    BuiltInMax = 0x7fffffff,
+};
+
+enum SelectionControlShift {
+    SelectionControlFlattenShift = 0,
+    SelectionControlDontFlattenShift = 1,
+    SelectionControlMax = 0x7fffffff,
+};
+
+enum SelectionControlMask {
+    SelectionControlMaskNone = 0,
+    SelectionControlFlattenMask = 0x00000001,
+    SelectionControlDontFlattenMask = 0x00000002,
+};
+
+enum LoopControlShift {
+    LoopControlUnrollShift = 0,
+    LoopControlDontUnrollShift = 1,
+    LoopControlDependencyInfiniteShift = 2,
+    LoopControlDependencyLengthShift = 3,
+    LoopControlMax = 0x7fffffff,
+};
+
+enum LoopControlMask {
+    LoopControlMaskNone = 0,
+    LoopControlUnrollMask = 0x00000001,
+    LoopControlDontUnrollMask = 0x00000002,
+    LoopControlDependencyInfiniteMask = 0x00000004,
+    LoopControlDependencyLengthMask = 0x00000008,
+};
+
+enum FunctionControlShift {
+    FunctionControlInlineShift = 0,
+    FunctionControlDontInlineShift = 1,
+    FunctionControlPureShift = 2,
+    FunctionControlConstShift = 3,
+    FunctionControlMax = 0x7fffffff,
+};
+
+enum FunctionControlMask {
+    FunctionControlMaskNone = 0,
+    FunctionControlInlineMask = 0x00000001,
+    FunctionControlDontInlineMask = 0x00000002,
+    FunctionControlPureMask = 0x00000004,
+    FunctionControlConstMask = 0x00000008,
+};
+
+enum MemorySemanticsShift {
+    MemorySemanticsAcquireShift = 1,
+    MemorySemanticsReleaseShift = 2,
+    MemorySemanticsAcquireReleaseShift = 3,
+    MemorySemanticsSequentiallyConsistentShift = 4,
+    MemorySemanticsUniformMemoryShift = 6,
+    MemorySemanticsSubgroupMemoryShift = 7,
+    MemorySemanticsWorkgroupMemoryShift = 8,
+    MemorySemanticsCrossWorkgroupMemoryShift = 9,
+    MemorySemanticsAtomicCounterMemoryShift = 10,
+    MemorySemanticsImageMemoryShift = 11,
+    MemorySemanticsMax = 0x7fffffff,
+};
+
+enum MemorySemanticsMask {
+    MemorySemanticsMaskNone = 0,
+    MemorySemanticsAcquireMask = 0x00000002,
+    MemorySemanticsReleaseMask = 0x00000004,
+    MemorySemanticsAcquireReleaseMask = 0x00000008,
+    MemorySemanticsSequentiallyConsistentMask = 0x00000010,
+    MemorySemanticsUniformMemoryMask = 0x00000040,
+    MemorySemanticsSubgroupMemoryMask = 0x00000080,
+    MemorySemanticsWorkgroupMemoryMask = 0x00000100,
+    MemorySemanticsCrossWorkgroupMemoryMask = 0x00000200,
+    MemorySemanticsAtomicCounterMemoryMask = 0x00000400,
+    MemorySemanticsImageMemoryMask = 0x00000800,
+};
+
+enum MemoryAccessShift {
+    MemoryAccessVolatileShift = 0,
+    MemoryAccessAlignedShift = 1,
+    MemoryAccessNontemporalShift = 2,
+    MemoryAccessMax = 0x7fffffff,
+};
+
+enum MemoryAccessMask {
+    MemoryAccessMaskNone = 0,
+    MemoryAccessVolatileMask = 0x00000001,
+    MemoryAccessAlignedMask = 0x00000002,
+    MemoryAccessNontemporalMask = 0x00000004,
+};
+
+enum Scope {
+    ScopeCrossDevice = 0,
+    ScopeDevice = 1,
+    ScopeWorkgroup = 2,
+    ScopeSubgroup = 3,
+    ScopeInvocation = 4,
+    ScopeMax = 0x7fffffff,
+};
+
+enum GroupOperation {
+    GroupOperationReduce = 0,
+    GroupOperationInclusiveScan = 1,
+    GroupOperationExclusiveScan = 2,
+    GroupOperationMax = 0x7fffffff,
+};
+
+enum KernelEnqueueFlags {
+    KernelEnqueueFlagsNoWait = 0,
+    KernelEnqueueFlagsWaitKernel = 1,
+    KernelEnqueueFlagsWaitWorkGroup = 2,
+    KernelEnqueueFlagsMax = 0x7fffffff,
+};
+
+enum KernelProfilingInfoShift {
+    KernelProfilingInfoCmdExecTimeShift = 0,
+    KernelProfilingInfoMax = 0x7fffffff,
+};
+
+enum KernelProfilingInfoMask {
+    KernelProfilingInfoMaskNone = 0,
+    KernelProfilingInfoCmdExecTimeMask = 0x00000001,
+};
+
+enum Capability {
+    CapabilityMatrix = 0,
+    CapabilityShader = 1,
+    CapabilityGeometry = 2,
+    CapabilityTessellation = 3,
+    CapabilityAddresses = 4,
+    CapabilityLinkage = 5,
+    CapabilityKernel = 6,
+    CapabilityVector16 = 7,
+    CapabilityFloat16Buffer = 8,
+    CapabilityFloat16 = 9,
+    CapabilityFloat64 = 10,
+    CapabilityInt64 = 11,
+    CapabilityInt64Atomics = 12,
+    CapabilityImageBasic = 13,
+    CapabilityImageReadWrite = 14,
+    CapabilityImageMipmap = 15,
+    CapabilityPipes = 17,
+    CapabilityGroups = 18,
+    CapabilityDeviceEnqueue = 19,
+    CapabilityLiteralSampler = 20,
+    CapabilityAtomicStorage = 21,
+    CapabilityInt16 = 22,
+    CapabilityTessellationPointSize = 23,
+    CapabilityGeometryPointSize = 24,
+    CapabilityImageGatherExtended = 25,
+    CapabilityStorageImageMultisample = 27,
+    CapabilityUniformBufferArrayDynamicIndexing = 28,
+    CapabilitySampledImageArrayDynamicIndexing = 29,
+    CapabilityStorageBufferArrayDynamicIndexing = 30,
+    CapabilityStorageImageArrayDynamicIndexing = 31,
+    CapabilityClipDistance = 32,
+    CapabilityCullDistance = 33,
+    CapabilityImageCubeArray = 34,
+    CapabilitySampleRateShading = 35,
+    CapabilityImageRect = 36,
+    CapabilitySampledRect = 37,
+    CapabilityGenericPointer = 38,
+    CapabilityInt8 = 39,
+    CapabilityInputAttachment = 40,
+    CapabilitySparseResidency = 41,
+    CapabilityMinLod = 42,
+    CapabilitySampled1D = 43,
+    CapabilityImage1D = 44,
+    CapabilitySampledCubeArray = 45,
+    CapabilitySampledBuffer = 46,
+    CapabilityImageBuffer = 47,
+    CapabilityImageMSArray = 48,
+    CapabilityStorageImageExtendedFormats = 49,
+    CapabilityImageQuery = 50,
+    CapabilityDerivativeControl = 51,
+    CapabilityInterpolationFunction = 52,
+    CapabilityTransformFeedback = 53,
+    CapabilityGeometryStreams = 54,
+    CapabilityStorageImageReadWithoutFormat = 55,
+    CapabilityStorageImageWriteWithoutFormat = 56,
+    CapabilityMultiViewport = 57,
+    CapabilitySubgroupDispatch = 58,
+    CapabilityNamedBarrier = 59,
+    CapabilityPipeStorage = 60,
+    CapabilitySubgroupBallotKHR = 4423,
+    CapabilityDrawParameters = 4427,
+    CapabilitySubgroupVoteKHR = 4431,
+    CapabilityStorageBuffer16BitAccess = 4433,
+    CapabilityStorageUniformBufferBlock16 = 4433,
+    CapabilityStorageUniform16 = 4434,
+    CapabilityUniformAndStorageBuffer16BitAccess = 4434,
+    CapabilityStoragePushConstant16 = 4435,
+    CapabilityStorageInputOutput16 = 4436,
+    CapabilityDeviceGroup = 4437,
+    CapabilityMultiView = 4439,
+    CapabilityVariablePointersStorageBuffer = 4441,
+    CapabilityVariablePointers = 4442,
+    CapabilityAtomicStorageOps = 4445,
+    CapabilitySampleMaskPostDepthCoverage = 4447,
+    CapabilityImageGatherBiasLodAMD = 5009,
+    CapabilityFragmentMaskAMD = 5010,
+    CapabilityStencilExportEXT = 5013,
+    CapabilityImageReadWriteLodAMD = 5015,
+    CapabilitySampleMaskOverrideCoverageNV = 5249,
+    CapabilityGeometryShaderPassthroughNV = 5251,
+    CapabilityShaderViewportIndexLayerEXT = 5254,
+    CapabilityShaderViewportIndexLayerNV = 5254,
+    CapabilityShaderViewportMaskNV = 5255,
+    CapabilityShaderStereoViewNV = 5259,
+    CapabilityPerViewAttributesNV = 5260,
+    CapabilitySubgroupShuffleINTEL = 5568,
+    CapabilitySubgroupBufferBlockIOINTEL = 5569,
+    CapabilitySubgroupImageBlockIOINTEL = 5570,
+    CapabilityMax = 0x7fffffff,
+};
+
+enum Op {
+    OpNop = 0,
+    OpUndef = 1,
+    OpSourceContinued = 2,
+    OpSource = 3,
+    OpSourceExtension = 4,
+    OpName = 5,
+    OpMemberName = 6,
+    OpString = 7,
+    OpLine = 8,
+    OpExtension = 10,
+    OpExtInstImport = 11,
+    OpExtInst = 12,
+    OpMemoryModel = 14,
+    OpEntryPoint = 15,
+    OpExecutionMode = 16,
+    OpCapability = 17,
+    OpTypeVoid = 19,
+    OpTypeBool = 20,
+    OpTypeInt = 21,
+    OpTypeFloat = 22,
+    OpTypeVector = 23,
+    OpTypeMatrix = 24,
+    OpTypeImage = 25,
+    OpTypeSampler = 26,
+    OpTypeSampledImage = 27,
+    OpTypeArray = 28,
+    OpTypeRuntimeArray = 29,
+    OpTypeStruct = 30,
+    OpTypeOpaque = 31,
+    OpTypePointer = 32,
+    OpTypeFunction = 33,
+    OpTypeEvent = 34,
+    OpTypeDeviceEvent = 35,
+    OpTypeReserveId = 36,
+    OpTypeQueue = 37,
+    OpTypePipe = 38,
+    OpTypeForwardPointer = 39,
+    OpConstantTrue = 41,
+    OpConstantFalse = 42,
+    OpConstant = 43,
+    OpConstantComposite = 44,
+    OpConstantSampler = 45,
+    OpConstantNull = 46,
+    OpSpecConstantTrue = 48,
+    OpSpecConstantFalse = 49,
+    OpSpecConstant = 50,
+    OpSpecConstantComposite = 51,
+    OpSpecConstantOp = 52,
+    OpFunction = 54,
+    OpFunctionParameter = 55,
+    OpFunctionEnd = 56,
+    OpFunctionCall = 57,
+    OpVariable = 59,
+    OpImageTexelPointer = 60,
+    OpLoad = 61,
+    OpStore = 62,
+    OpCopyMemory = 63,
+    OpCopyMemorySized = 64,
+    OpAccessChain = 65,
+    OpInBoundsAccessChain = 66,
+    OpPtrAccessChain = 67,
+    OpArrayLength = 68,
+    OpGenericPtrMemSemantics = 69,
+    OpInBoundsPtrAccessChain = 70,
+    OpDecorate = 71,
+    OpMemberDecorate = 72,
+    OpDecorationGroup = 73,
+    OpGroupDecorate = 74,
+    OpGroupMemberDecorate = 75,
+    OpVectorExtractDynamic = 77,
+    OpVectorInsertDynamic = 78,
+    OpVectorShuffle = 79,
+    OpCompositeConstruct = 80,
+    OpCompositeExtract = 81,
+    OpCompositeInsert = 82,
+    OpCopyObject = 83,
+    OpTranspose = 84,
+    OpSampledImage = 86,
+    OpImageSampleImplicitLod = 87,
+    OpImageSampleExplicitLod = 88,
+    OpImageSampleDrefImplicitLod = 89,
+    OpImageSampleDrefExplicitLod = 90,
+    OpImageSampleProjImplicitLod = 91,
+    OpImageSampleProjExplicitLod = 92,
+    OpImageSampleProjDrefImplicitLod = 93,
+    OpImageSampleProjDrefExplicitLod = 94,
+    OpImageFetch = 95,
+    OpImageGather = 96,
+    OpImageDrefGather = 97,
+    OpImageRead = 98,
+    OpImageWrite = 99,
+    OpImage = 100,
+    OpImageQueryFormat = 101,
+    OpImageQueryOrder = 102,
+    OpImageQuerySizeLod = 103,
+    OpImageQuerySize = 104,
+    OpImageQueryLod = 105,
+    OpImageQueryLevels = 106,
+    OpImageQuerySamples = 107,
+    OpConvertFToU = 109,
+    OpConvertFToS = 110,
+    OpConvertSToF = 111,
+    OpConvertUToF = 112,
+    OpUConvert = 113,
+    OpSConvert = 114,
+    OpFConvert = 115,
+    OpQuantizeToF16 = 116,
+    OpConvertPtrToU = 117,
+    OpSatConvertSToU = 118,
+    OpSatConvertUToS = 119,
+    OpConvertUToPtr = 120,
+    OpPtrCastToGeneric = 121,
+    OpGenericCastToPtr = 122,
+    OpGenericCastToPtrExplicit = 123,
+    OpBitcast = 124,
+    OpSNegate = 126,
+    OpFNegate = 127,
+    OpIAdd = 128,
+    OpFAdd = 129,
+    OpISub = 130,
+    OpFSub = 131,
+    OpIMul = 132,
+    OpFMul = 133,
+    OpUDiv = 134,
+    OpSDiv = 135,
+    OpFDiv = 136,
+    OpUMod = 137,
+    OpSRem = 138,
+    OpSMod = 139,
+    OpFRem = 140,
+    OpFMod = 141,
+    OpVectorTimesScalar = 142,
+    OpMatrixTimesScalar = 143,
+    OpVectorTimesMatrix = 144,
+    OpMatrixTimesVector = 145,
+    OpMatrixTimesMatrix = 146,
+    OpOuterProduct = 147,
+    OpDot = 148,
+    OpIAddCarry = 149,
+    OpISubBorrow = 150,
+    OpUMulExtended = 151,
+    OpSMulExtended = 152,
+    OpAny = 154,
+    OpAll = 155,
+    OpIsNan = 156,
+    OpIsInf = 157,
+    OpIsFinite = 158,
+    OpIsNormal = 159,
+    OpSignBitSet = 160,
+    OpLessOrGreater = 161,
+    OpOrdered = 162,
+    OpUnordered = 163,
+    OpLogicalEqual = 164,
+    OpLogicalNotEqual = 165,
+    OpLogicalOr = 166,
+    OpLogicalAnd = 167,
+    OpLogicalNot = 168,
+    OpSelect = 169,
+    OpIEqual = 170,
+    OpINotEqual = 171,
+    OpUGreaterThan = 172,
+    OpSGreaterThan = 173,
+    OpUGreaterThanEqual = 174,
+    OpSGreaterThanEqual = 175,
+    OpULessThan = 176,
+    OpSLessThan = 177,
+    OpULessThanEqual = 178,
+    OpSLessThanEqual = 179,
+    OpFOrdEqual = 180,
+    OpFUnordEqual = 181,
+    OpFOrdNotEqual = 182,
+    OpFUnordNotEqual = 183,
+    OpFOrdLessThan = 184,
+    OpFUnordLessThan = 185,
+    OpFOrdGreaterThan = 186,
+    OpFUnordGreaterThan = 187,
+    OpFOrdLessThanEqual = 188,
+    OpFUnordLessThanEqual = 189,
+    OpFOrdGreaterThanEqual = 190,
+    OpFUnordGreaterThanEqual = 191,
+    OpShiftRightLogical = 194,
+    OpShiftRightArithmetic = 195,
+    OpShiftLeftLogical = 196,
+    OpBitwiseOr = 197,
+    OpBitwiseXor = 198,
+    OpBitwiseAnd = 199,
+    OpNot = 200,
+    OpBitFieldInsert = 201,
+    OpBitFieldSExtract = 202,
+    OpBitFieldUExtract = 203,
+    OpBitReverse = 204,
+    OpBitCount = 205,
+    OpDPdx = 207,
+    OpDPdy = 208,
+    OpFwidth = 209,
+    OpDPdxFine = 210,
+    OpDPdyFine = 211,
+    OpFwidthFine = 212,
+    OpDPdxCoarse = 213,
+    OpDPdyCoarse = 214,
+    OpFwidthCoarse = 215,
+    OpEmitVertex = 218,
+    OpEndPrimitive = 219,
+    OpEmitStreamVertex = 220,
+    OpEndStreamPrimitive = 221,
+    OpControlBarrier = 224,
+    OpMemoryBarrier = 225,
+    OpAtomicLoad = 227,
+    OpAtomicStore = 228,
+    OpAtomicExchange = 229,
+    OpAtomicCompareExchange = 230,
+    OpAtomicCompareExchangeWeak = 231,
+    OpAtomicIIncrement = 232,
+    OpAtomicIDecrement = 233,
+    OpAtomicIAdd = 234,
+    OpAtomicISub = 235,
+    OpAtomicSMin = 236,
+    OpAtomicUMin = 237,
+    OpAtomicSMax = 238,
+    OpAtomicUMax = 239,
+    OpAtomicAnd = 240,
+    OpAtomicOr = 241,
+    OpAtomicXor = 242,
+    OpPhi = 245,
+    OpLoopMerge = 246,
+    OpSelectionMerge = 247,
+    OpLabel = 248,
+    OpBranch = 249,
+    OpBranchConditional = 250,
+    OpSwitch = 251,
+    OpKill = 252,
+    OpReturn = 253,
+    OpReturnValue = 254,
+    OpUnreachable = 255,
+    OpLifetimeStart = 256,
+    OpLifetimeStop = 257,
+    OpGroupAsyncCopy = 259,
+    OpGroupWaitEvents = 260,
+    OpGroupAll = 261,
+    OpGroupAny = 262,
+    OpGroupBroadcast = 263,
+    OpGroupIAdd = 264,
+    OpGroupFAdd = 265,
+    OpGroupFMin = 266,
+    OpGroupUMin = 267,
+    OpGroupSMin = 268,
+    OpGroupFMax = 269,
+    OpGroupUMax = 270,
+    OpGroupSMax = 271,
+    OpReadPipe = 274,
+    OpWritePipe = 275,
+    OpReservedReadPipe = 276,
+    OpReservedWritePipe = 277,
+    OpReserveReadPipePackets = 278,
+    OpReserveWritePipePackets = 279,
+    OpCommitReadPipe = 280,
+    OpCommitWritePipe = 281,
+    OpIsValidReserveId = 282,
+    OpGetNumPipePackets = 283,
+    OpGetMaxPipePackets = 284,
+    OpGroupReserveReadPipePackets = 285,
+    OpGroupReserveWritePipePackets = 286,
+    OpGroupCommitReadPipe = 287,
+    OpGroupCommitWritePipe = 288,
+    OpEnqueueMarker = 291,
+    OpEnqueueKernel = 292,
+    OpGetKernelNDrangeSubGroupCount = 293,
+    OpGetKernelNDrangeMaxSubGroupSize = 294,
+    OpGetKernelWorkGroupSize = 295,
+    OpGetKernelPreferredWorkGroupSizeMultiple = 296,
+    OpRetainEvent = 297,
+    OpReleaseEvent = 298,
+    OpCreateUserEvent = 299,
+    OpIsValidEvent = 300,
+    OpSetUserEventStatus = 301,
+    OpCaptureEventProfilingInfo = 302,
+    OpGetDefaultQueue = 303,
+    OpBuildNDRange = 304,
+    OpImageSparseSampleImplicitLod = 305,
+    OpImageSparseSampleExplicitLod = 306,
+    OpImageSparseSampleDrefImplicitLod = 307,
+    OpImageSparseSampleDrefExplicitLod = 308,
+    OpImageSparseSampleProjImplicitLod = 309,
+    OpImageSparseSampleProjExplicitLod = 310,
+    OpImageSparseSampleProjDrefImplicitLod = 311,
+    OpImageSparseSampleProjDrefExplicitLod = 312,
+    OpImageSparseFetch = 313,
+    OpImageSparseGather = 314,
+    OpImageSparseDrefGather = 315,
+    OpImageSparseTexelsResident = 316,
+    OpNoLine = 317,
+    OpAtomicFlagTestAndSet = 318,
+    OpAtomicFlagClear = 319,
+    OpImageSparseRead = 320,
+    OpSizeOf = 321,
+    OpTypePipeStorage = 322,
+    OpConstantPipeStorage = 323,
+    OpCreatePipeFromPipeStorage = 324,
+    OpGetKernelLocalSizeForSubgroupCount = 325,
+    OpGetKernelMaxNumSubgroups = 326,
+    OpTypeNamedBarrier = 327,
+    OpNamedBarrierInitialize = 328,
+    OpMemoryNamedBarrier = 329,
+    OpModuleProcessed = 330,
+    OpDecorateId = 332,
+    OpSubgroupBallotKHR = 4421,
+    OpSubgroupFirstInvocationKHR = 4422,
+    OpSubgroupAllKHR = 4428,
+    OpSubgroupAnyKHR = 4429,
+    OpSubgroupAllEqualKHR = 4430,
+    OpSubgroupReadInvocationKHR = 4432,
+    OpGroupIAddNonUniformAMD = 5000,
+    OpGroupFAddNonUniformAMD = 5001,
+    OpGroupFMinNonUniformAMD = 5002,
+    OpGroupUMinNonUniformAMD = 5003,
+    OpGroupSMinNonUniformAMD = 5004,
+    OpGroupFMaxNonUniformAMD = 5005,
+    OpGroupUMaxNonUniformAMD = 5006,
+    OpGroupSMaxNonUniformAMD = 5007,
+    OpFragmentMaskFetchAMD = 5011,
+    OpFragmentFetchAMD = 5012,
+    OpSubgroupShuffleINTEL = 5571,
+    OpSubgroupShuffleDownINTEL = 5572,
+    OpSubgroupShuffleUpINTEL = 5573,
+    OpSubgroupShuffleXorINTEL = 5574,
+    OpSubgroupBlockReadINTEL = 5575,
+    OpSubgroupBlockWriteINTEL = 5576,
+    OpSubgroupImageBlockReadINTEL = 5577,
+    OpSubgroupImageBlockWriteINTEL = 5578,
+    OpDecorateStringGOOGLE = 5632,
+    OpMemberDecorateStringGOOGLE = 5633,
+    OpMax = 0x7fffffff,
+};
+
+// Overload operator| for mask bit combining
+
+inline ImageOperandsMask operator|(ImageOperandsMask a, ImageOperandsMask b) { return ImageOperandsMask(unsigned(a) | unsigned(b)); }
+inline FPFastMathModeMask operator|(FPFastMathModeMask a, FPFastMathModeMask b) { return FPFastMathModeMask(unsigned(a) | unsigned(b)); }
+inline SelectionControlMask operator|(SelectionControlMask a, SelectionControlMask b) { return SelectionControlMask(unsigned(a) | unsigned(b)); }
+inline LoopControlMask operator|(LoopControlMask a, LoopControlMask b) { return LoopControlMask(unsigned(a) | unsigned(b)); }
+inline FunctionControlMask operator|(FunctionControlMask a, FunctionControlMask b) { return FunctionControlMask(unsigned(a) | unsigned(b)); }
+inline MemorySemanticsMask operator|(MemorySemanticsMask a, MemorySemanticsMask b) { return MemorySemanticsMask(unsigned(a) | unsigned(b)); }
+inline MemoryAccessMask operator|(MemoryAccessMask a, MemoryAccessMask b) { return MemoryAccessMask(unsigned(a) | unsigned(b)); }
+inline KernelProfilingInfoMask operator|(KernelProfilingInfoMask a, KernelProfilingInfoMask b) { return KernelProfilingInfoMask(unsigned(a) | unsigned(b)); }
+
+}  // end namespace spv
+
+#endif  // #ifndef spirv_HPP
+
diff --git a/libs/spirv-headers/spirv/1.1/spirv.hpp11 b/libs/spirv-headers/spirv/1.1/spirv.hpp11
new file mode 100644
index 00000000000..992d43b5f54
--- /dev/null
+++ b/libs/spirv-headers/spirv/1.1/spirv.hpp11
@@ -0,0 +1,1024 @@
+// Copyright (c) 2014-2018 The Khronos Group Inc.
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and/or associated documentation files (the "Materials"),
+// to deal in the Materials without restriction, including without limitation
+// the rights to use, copy, modify, merge, publish, distribute, sublicense,
+// and/or sell copies of the Materials, and to permit persons to whom the
+// Materials are furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Materials.
+// 
+// MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS KHRONOS
+// STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS SPECIFICATIONS AND
+// HEADER INFORMATION ARE LOCATED AT https://www.khronos.org/registry/ 
+// 
+// THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM,OUT OF OR IN CONNECTION WITH THE MATERIALS OR THE USE OR OTHER DEALINGS
+// IN THE MATERIALS.
+
+// This header is automatically generated by the same tool that creates
+// the Binary Section of the SPIR-V specification.
+
+// Enumeration tokens for SPIR-V, in various styles:
+//   C, C++, C++11, JSON, Lua, Python
+// 
+// - C will have tokens with a "Spv" prefix, e.g.: SpvSourceLanguageGLSL
+// - C++ will have tokens in the "spv" name space, e.g.: spv::SourceLanguageGLSL
+// - C++11 will use enum classes in the spv namespace, e.g.: spv::SourceLanguage::GLSL
+// - Lua will use tables, e.g.: spv.SourceLanguage.GLSL
+// - Python will use dictionaries, e.g.: spv['SourceLanguage']['GLSL']
+// 
+// Some tokens act like mask values, which can be OR'd together,
+// while others are mutually exclusive.  The mask-like ones have
+// "Mask" in their name, and a parallel enum that has the shift
+// amount (1 << x) for each corresponding enumerant.
+
+#ifndef spirv_HPP
+#define spirv_HPP
+
+namespace spv {
+
+typedef unsigned int Id;
+
+#define SPV_VERSION 0x10100
+#define SPV_REVISION 8
+
+static const unsigned int MagicNumber = 0x07230203;
+static const unsigned int Version = 0x00010100;
+static const unsigned int Revision = 8;
+static const unsigned int OpCodeMask = 0xffff;
+static const unsigned int WordCountShift = 16;
+
+enum class SourceLanguage : unsigned {
+    Unknown = 0,
+    ESSL = 1,
+    GLSL = 2,
+    OpenCL_C = 3,
+    OpenCL_CPP = 4,
+    HLSL = 5,
+    Max = 0x7fffffff,
+};
+
+enum class ExecutionModel : unsigned {
+    Vertex = 0,
+    TessellationControl = 1,
+    TessellationEvaluation = 2,
+    Geometry = 3,
+    Fragment = 4,
+    GLCompute = 5,
+    Kernel = 6,
+    Max = 0x7fffffff,
+};
+
+enum class AddressingModel : unsigned {
+    Logical = 0,
+    Physical32 = 1,
+    Physical64 = 2,
+    Max = 0x7fffffff,
+};
+
+enum class MemoryModel : unsigned {
+    Simple = 0,
+    GLSL450 = 1,
+    OpenCL = 2,
+    Max = 0x7fffffff,
+};
+
+enum class ExecutionMode : unsigned {
+    Invocations = 0,
+    SpacingEqual = 1,
+    SpacingFractionalEven = 2,
+    SpacingFractionalOdd = 3,
+    VertexOrderCw = 4,
+    VertexOrderCcw = 5,
+    PixelCenterInteger = 6,
+    OriginUpperLeft = 7,
+    OriginLowerLeft = 8,
+    EarlyFragmentTests = 9,
+    PointMode = 10,
+    Xfb = 11,
+    DepthReplacing = 12,
+    DepthGreater = 14,
+    DepthLess = 15,
+    DepthUnchanged = 16,
+    LocalSize = 17,
+    LocalSizeHint = 18,
+    InputPoints = 19,
+    InputLines = 20,
+    InputLinesAdjacency = 21,
+    Triangles = 22,
+    InputTrianglesAdjacency = 23,
+    Quads = 24,
+    Isolines = 25,
+    OutputVertices = 26,
+    OutputPoints = 27,
+    OutputLineStrip = 28,
+    OutputTriangleStrip = 29,
+    VecTypeHint = 30,
+    ContractionOff = 31,
+    Initializer = 33,
+    Finalizer = 34,
+    SubgroupSize = 35,
+    SubgroupsPerWorkgroup = 36,
+    PostDepthCoverage = 4446,
+    StencilRefReplacingEXT = 5027,
+    Max = 0x7fffffff,
+};
+
+enum class StorageClass : unsigned {
+    UniformConstant = 0,
+    Input = 1,
+    Uniform = 2,
+    Output = 3,
+    Workgroup = 4,
+    CrossWorkgroup = 5,
+    Private = 6,
+    Function = 7,
+    Generic = 8,
+    PushConstant = 9,
+    AtomicCounter = 10,
+    Image = 11,
+    StorageBuffer = 12,
+    Max = 0x7fffffff,
+};
+
+enum class Dim : unsigned {
+    Dim1D = 0,
+    Dim2D = 1,
+    Dim3D = 2,
+    Cube = 3,
+    Rect = 4,
+    Buffer = 5,
+    SubpassData = 6,
+    Max = 0x7fffffff,
+};
+
+enum class SamplerAddressingMode : unsigned {
+    None = 0,
+    ClampToEdge = 1,
+    Clamp = 2,
+    Repeat = 3,
+    RepeatMirrored = 4,
+    Max = 0x7fffffff,
+};
+
+enum class SamplerFilterMode : unsigned {
+    Nearest = 0,
+    Linear = 1,
+    Max = 0x7fffffff,
+};
+
+enum class ImageFormat : unsigned {
+    Unknown = 0,
+    Rgba32f = 1,
+    Rgba16f = 2,
+    R32f = 3,
+    Rgba8 = 4,
+    Rgba8Snorm = 5,
+    Rg32f = 6,
+    Rg16f = 7,
+    R11fG11fB10f = 8,
+    R16f = 9,
+    Rgba16 = 10,
+    Rgb10A2 = 11,
+    Rg16 = 12,
+    Rg8 = 13,
+    R16 = 14,
+    R8 = 15,
+    Rgba16Snorm = 16,
+    Rg16Snorm = 17,
+    Rg8Snorm = 18,
+    R16Snorm = 19,
+    R8Snorm = 20,
+    Rgba32i = 21,
+    Rgba16i = 22,
+    Rgba8i = 23,
+    R32i = 24,
+    Rg32i = 25,
+    Rg16i = 26,
+    Rg8i = 27,
+    R16i = 28,
+    R8i = 29,
+    Rgba32ui = 30,
+    Rgba16ui = 31,
+    Rgba8ui = 32,
+    R32ui = 33,
+    Rgb10a2ui = 34,
+    Rg32ui = 35,
+    Rg16ui = 36,
+    Rg8ui = 37,
+    R16ui = 38,
+    R8ui = 39,
+    Max = 0x7fffffff,
+};
+
+enum class ImageChannelOrder : unsigned {
+    R = 0,
+    A = 1,
+    RG = 2,
+    RA = 3,
+    RGB = 4,
+    RGBA = 5,
+    BGRA = 6,
+    ARGB = 7,
+    Intensity = 8,
+    Luminance = 9,
+    Rx = 10,
+    RGx = 11,
+    RGBx = 12,
+    Depth = 13,
+    DepthStencil = 14,
+    sRGB = 15,
+    sRGBx = 16,
+    sRGBA = 17,
+    sBGRA = 18,
+    ABGR = 19,
+    Max = 0x7fffffff,
+};
+
+enum class ImageChannelDataType : unsigned {
+    SnormInt8 = 0,
+    SnormInt16 = 1,
+    UnormInt8 = 2,
+    UnormInt16 = 3,
+    UnormShort565 = 4,
+    UnormShort555 = 5,
+    UnormInt101010 = 6,
+    SignedInt8 = 7,
+    SignedInt16 = 8,
+    SignedInt32 = 9,
+    UnsignedInt8 = 10,
+    UnsignedInt16 = 11,
+    UnsignedInt32 = 12,
+    HalfFloat = 13,
+    Float = 14,
+    UnormInt24 = 15,
+    UnormInt101010_2 = 16,
+    Max = 0x7fffffff,
+};
+
+enum class ImageOperandsShift : unsigned {
+    Bias = 0,
+    Lod = 1,
+    Grad = 2,
+    ConstOffset = 3,
+    Offset = 4,
+    ConstOffsets = 5,
+    Sample = 6,
+    MinLod = 7,
+    Max = 0x7fffffff,
+};
+
+enum class ImageOperandsMask : unsigned {
+    MaskNone = 0,
+    Bias = 0x00000001,
+    Lod = 0x00000002,
+    Grad = 0x00000004,
+    ConstOffset = 0x00000008,
+    Offset = 0x00000010,
+    ConstOffsets = 0x00000020,
+    Sample = 0x00000040,
+    MinLod = 0x00000080,
+};
+
+enum class FPFastMathModeShift : unsigned {
+    NotNaN = 0,
+    NotInf = 1,
+    NSZ = 2,
+    AllowRecip = 3,
+    Fast = 4,
+    Max = 0x7fffffff,
+};
+
+enum class FPFastMathModeMask : unsigned {
+    MaskNone = 0,
+    NotNaN = 0x00000001,
+    NotInf = 0x00000002,
+    NSZ = 0x00000004,
+    AllowRecip = 0x00000008,
+    Fast = 0x00000010,
+};
+
+enum class FPRoundingMode : unsigned {
+    RTE = 0,
+    RTZ = 1,
+    RTP = 2,
+    RTN = 3,
+    Max = 0x7fffffff,
+};
+
+enum class LinkageType : unsigned {
+    Export = 0,
+    Import = 1,
+    Max = 0x7fffffff,
+};
+
+enum class AccessQualifier : unsigned {
+    ReadOnly = 0,
+    WriteOnly = 1,
+    ReadWrite = 2,
+    Max = 0x7fffffff,
+};
+
+enum class FunctionParameterAttribute : unsigned {
+    Zext = 0,
+    Sext = 1,
+    ByVal = 2,
+    Sret = 3,
+    NoAlias = 4,
+    NoCapture = 5,
+    NoWrite = 6,
+    NoReadWrite = 7,
+    Max = 0x7fffffff,
+};
+
+enum class Decoration : unsigned {
+    RelaxedPrecision = 0,
+    SpecId = 1,
+    Block = 2,
+    BufferBlock = 3,
+    RowMajor = 4,
+    ColMajor = 5,
+    ArrayStride = 6,
+    MatrixStride = 7,
+    GLSLShared = 8,
+    GLSLPacked = 9,
+    CPacked = 10,
+    BuiltIn = 11,
+    NoPerspective = 13,
+    Flat = 14,
+    Patch = 15,
+    Centroid = 16,
+    Sample = 17,
+    Invariant = 18,
+    Restrict = 19,
+    Aliased = 20,
+    Volatile = 21,
+    Constant = 22,
+    Coherent = 23,
+    NonWritable = 24,
+    NonReadable = 25,
+    Uniform = 26,
+    SaturatedConversion = 28,
+    Stream = 29,
+    Location = 30,
+    Component = 31,
+    Index = 32,
+    Binding = 33,
+    DescriptorSet = 34,
+    Offset = 35,
+    XfbBuffer = 36,
+    XfbStride = 37,
+    FuncParamAttr = 38,
+    FPRoundingMode = 39,
+    FPFastMathMode = 40,
+    LinkageAttributes = 41,
+    NoContraction = 42,
+    InputAttachmentIndex = 43,
+    Alignment = 44,
+    MaxByteOffset = 45,
+    ExplicitInterpAMD = 4999,
+    OverrideCoverageNV = 5248,
+    PassthroughNV = 5250,
+    ViewportRelativeNV = 5252,
+    SecondaryViewportRelativeNV = 5256,
+    HlslCounterBufferGOOGLE = 5634,
+    HlslSemanticGOOGLE = 5635,
+    Max = 0x7fffffff,
+};
+
+enum class BuiltIn : unsigned {
+    Position = 0,
+    PointSize = 1,
+    ClipDistance = 3,
+    CullDistance = 4,
+    VertexId = 5,
+    InstanceId = 6,
+    PrimitiveId = 7,
+    InvocationId = 8,
+    Layer = 9,
+    ViewportIndex = 10,
+    TessLevelOuter = 11,
+    TessLevelInner = 12,
+    TessCoord = 13,
+    PatchVertices = 14,
+    FragCoord = 15,
+    PointCoord = 16,
+    FrontFacing = 17,
+    SampleId = 18,
+    SamplePosition = 19,
+    SampleMask = 20,
+    FragDepth = 22,
+    HelperInvocation = 23,
+    NumWorkgroups = 24,
+    WorkgroupSize = 25,
+    WorkgroupId = 26,
+    LocalInvocationId = 27,
+    GlobalInvocationId = 28,
+    LocalInvocationIndex = 29,
+    WorkDim = 30,
+    GlobalSize = 31,
+    EnqueuedWorkgroupSize = 32,
+    GlobalOffset = 33,
+    GlobalLinearId = 34,
+    SubgroupSize = 36,
+    SubgroupMaxSize = 37,
+    NumSubgroups = 38,
+    NumEnqueuedSubgroups = 39,
+    SubgroupId = 40,
+    SubgroupLocalInvocationId = 41,
+    VertexIndex = 42,
+    InstanceIndex = 43,
+    SubgroupEqMaskKHR = 4416,
+    SubgroupGeMaskKHR = 4417,
+    SubgroupGtMaskKHR = 4418,
+    SubgroupLeMaskKHR = 4419,
+    SubgroupLtMaskKHR = 4420,
+    BaseVertex = 4424,
+    BaseInstance = 4425,
+    DrawIndex = 4426,
+    DeviceIndex = 4438,
+    ViewIndex = 4440,
+    BaryCoordNoPerspAMD = 4992,
+    BaryCoordNoPerspCentroidAMD = 4993,
+    BaryCoordNoPerspSampleAMD = 4994,
+    BaryCoordSmoothAMD = 4995,
+    BaryCoordSmoothCentroidAMD = 4996,
+    BaryCoordSmoothSampleAMD = 4997,
+    BaryCoordPullModelAMD = 4998,
+    FragStencilRefEXT = 5014,
+    ViewportMaskNV = 5253,
+    SecondaryPositionNV = 5257,
+    SecondaryViewportMaskNV = 5258,
+    PositionPerViewNV = 5261,
+    ViewportMaskPerViewNV = 5262,
+    Max = 0x7fffffff,
+};
+
+enum class SelectionControlShift : unsigned {
+    Flatten = 0,
+    DontFlatten = 1,
+    Max = 0x7fffffff,
+};
+
+enum class SelectionControlMask : unsigned {
+    MaskNone = 0,
+    Flatten = 0x00000001,
+    DontFlatten = 0x00000002,
+};
+
+enum class LoopControlShift : unsigned {
+    Unroll = 0,
+    DontUnroll = 1,
+    DependencyInfinite = 2,
+    DependencyLength = 3,
+    Max = 0x7fffffff,
+};
+
+enum class LoopControlMask : unsigned {
+    MaskNone = 0,
+    Unroll = 0x00000001,
+    DontUnroll = 0x00000002,
+    DependencyInfinite = 0x00000004,
+    DependencyLength = 0x00000008,
+};
+
+enum class FunctionControlShift : unsigned {
+    Inline = 0,
+    DontInline = 1,
+    Pure = 2,
+    Const = 3,
+    Max = 0x7fffffff,
+};
+
+enum class FunctionControlMask : unsigned {
+    MaskNone = 0,
+    Inline = 0x00000001,
+    DontInline = 0x00000002,
+    Pure = 0x00000004,
+    Const = 0x00000008,
+};
+
+enum class MemorySemanticsShift : unsigned {
+    Acquire = 1,
+    Release = 2,
+    AcquireRelease = 3,
+    SequentiallyConsistent = 4,
+    UniformMemory = 6,
+    SubgroupMemory = 7,
+    WorkgroupMemory = 8,
+    CrossWorkgroupMemory = 9,
+    AtomicCounterMemory = 10,
+    ImageMemory = 11,
+    Max = 0x7fffffff,
+};
+
+enum class MemorySemanticsMask : unsigned {
+    MaskNone = 0,
+    Acquire = 0x00000002,
+    Release = 0x00000004,
+    AcquireRelease = 0x00000008,
+    SequentiallyConsistent = 0x00000010,
+    UniformMemory = 0x00000040,
+    SubgroupMemory = 0x00000080,
+    WorkgroupMemory = 0x00000100,
+    CrossWorkgroupMemory = 0x00000200,
+    AtomicCounterMemory = 0x00000400,
+    ImageMemory = 0x00000800,
+};
+
+enum class MemoryAccessShift : unsigned {
+    Volatile = 0,
+    Aligned = 1,
+    Nontemporal = 2,
+    Max = 0x7fffffff,
+};
+
+enum class MemoryAccessMask : unsigned {
+    MaskNone = 0,
+    Volatile = 0x00000001,
+    Aligned = 0x00000002,
+    Nontemporal = 0x00000004,
+};
+
+enum class Scope : unsigned {
+    CrossDevice = 0,
+    Device = 1,
+    Workgroup = 2,
+    Subgroup = 3,
+    Invocation = 4,
+    Max = 0x7fffffff,
+};
+
+enum class GroupOperation : unsigned {
+    Reduce = 0,
+    InclusiveScan = 1,
+    ExclusiveScan = 2,
+    Max = 0x7fffffff,
+};
+
+enum class KernelEnqueueFlags : unsigned {
+    NoWait = 0,
+    WaitKernel = 1,
+    WaitWorkGroup = 2,
+    Max = 0x7fffffff,
+};
+
+enum class KernelProfilingInfoShift : unsigned {
+    CmdExecTime = 0,
+    Max = 0x7fffffff,
+};
+
+enum class KernelProfilingInfoMask : unsigned {
+    MaskNone = 0,
+    CmdExecTime = 0x00000001,
+};
+
+enum class Capability : unsigned {
+    Matrix = 0,
+    Shader = 1,
+    Geometry = 2,
+    Tessellation = 3,
+    Addresses = 4,
+    Linkage = 5,
+    Kernel = 6,
+    Vector16 = 7,
+    Float16Buffer = 8,
+    Float16 = 9,
+    Float64 = 10,
+    Int64 = 11,
+    Int64Atomics = 12,
+    ImageBasic = 13,
+    ImageReadWrite = 14,
+    ImageMipmap = 15,
+    Pipes = 17,
+    Groups = 18,
+    DeviceEnqueue = 19,
+    LiteralSampler = 20,
+    AtomicStorage = 21,
+    Int16 = 22,
+    TessellationPointSize = 23,
+    GeometryPointSize = 24,
+    ImageGatherExtended = 25,
+    StorageImageMultisample = 27,
+    UniformBufferArrayDynamicIndexing = 28,
+    SampledImageArrayDynamicIndexing = 29,
+    StorageBufferArrayDynamicIndexing = 30,
+    StorageImageArrayDynamicIndexing = 31,
+    ClipDistance = 32,
+    CullDistance = 33,
+    ImageCubeArray = 34,
+    SampleRateShading = 35,
+    ImageRect = 36,
+    SampledRect = 37,
+    GenericPointer = 38,
+    Int8 = 39,
+    InputAttachment = 40,
+    SparseResidency = 41,
+    MinLod = 42,
+    Sampled1D = 43,
+    Image1D = 44,
+    SampledCubeArray = 45,
+    SampledBuffer = 46,
+    ImageBuffer = 47,
+    ImageMSArray = 48,
+    StorageImageExtendedFormats = 49,
+    ImageQuery = 50,
+    DerivativeControl = 51,
+    InterpolationFunction = 52,
+    TransformFeedback = 53,
+    GeometryStreams = 54,
+    StorageImageReadWithoutFormat = 55,
+    StorageImageWriteWithoutFormat = 56,
+    MultiViewport = 57,
+    SubgroupDispatch = 58,
+    NamedBarrier = 59,
+    PipeStorage = 60,
+    SubgroupBallotKHR = 4423,
+    DrawParameters = 4427,
+    SubgroupVoteKHR = 4431,
+    StorageBuffer16BitAccess = 4433,
+    StorageUniformBufferBlock16 = 4433,
+    StorageUniform16 = 4434,
+    UniformAndStorageBuffer16BitAccess = 4434,
+    StoragePushConstant16 = 4435,
+    StorageInputOutput16 = 4436,
+    DeviceGroup = 4437,
+    MultiView = 4439,
+    VariablePointersStorageBuffer = 4441,
+    VariablePointers = 4442,
+    AtomicStorageOps = 4445,
+    SampleMaskPostDepthCoverage = 4447,
+    ImageGatherBiasLodAMD = 5009,
+    FragmentMaskAMD = 5010,
+    StencilExportEXT = 5013,
+    ImageReadWriteLodAMD = 5015,
+    SampleMaskOverrideCoverageNV = 5249,
+    GeometryShaderPassthroughNV = 5251,
+    ShaderViewportIndexLayerEXT = 5254,
+    ShaderViewportIndexLayerNV = 5254,
+    ShaderViewportMaskNV = 5255,
+    ShaderStereoViewNV = 5259,
+    PerViewAttributesNV = 5260,
+    SubgroupShuffleINTEL = 5568,
+    SubgroupBufferBlockIOINTEL = 5569,
+    SubgroupImageBlockIOINTEL = 5570,
+    Max = 0x7fffffff,
+};
+
+enum class Op : unsigned {
+    OpNop = 0,
+    OpUndef = 1,
+    OpSourceContinued = 2,
+    OpSource = 3,
+    OpSourceExtension = 4,
+    OpName = 5,
+    OpMemberName = 6,
+    OpString = 7,
+    OpLine = 8,
+    OpExtension = 10,
+    OpExtInstImport = 11,
+    OpExtInst = 12,
+    OpMemoryModel = 14,
+    OpEntryPoint = 15,
+    OpExecutionMode = 16,
+    OpCapability = 17,
+    OpTypeVoid = 19,
+    OpTypeBool = 20,
+    OpTypeInt = 21,
+    OpTypeFloat = 22,
+    OpTypeVector = 23,
+    OpTypeMatrix = 24,
+    OpTypeImage = 25,
+    OpTypeSampler = 26,
+    OpTypeSampledImage = 27,
+    OpTypeArray = 28,
+    OpTypeRuntimeArray = 29,
+    OpTypeStruct = 30,
+    OpTypeOpaque = 31,
+    OpTypePointer = 32,
+    OpTypeFunction = 33,
+    OpTypeEvent = 34,
+    OpTypeDeviceEvent = 35,
+    OpTypeReserveId = 36,
+    OpTypeQueue = 37,
+    OpTypePipe = 38,
+    OpTypeForwardPointer = 39,
+    OpConstantTrue = 41,
+    OpConstantFalse = 42,
+    OpConstant = 43,
+    OpConstantComposite = 44,
+    OpConstantSampler = 45,
+    OpConstantNull = 46,
+    OpSpecConstantTrue = 48,
+    OpSpecConstantFalse = 49,
+    OpSpecConstant = 50,
+    OpSpecConstantComposite = 51,
+    OpSpecConstantOp = 52,
+    OpFunction = 54,
+    OpFunctionParameter = 55,
+    OpFunctionEnd = 56,
+    OpFunctionCall = 57,
+    OpVariable = 59,
+    OpImageTexelPointer = 60,
+    OpLoad = 61,
+    OpStore = 62,
+    OpCopyMemory = 63,
+    OpCopyMemorySized = 64,
+    OpAccessChain = 65,
+    OpInBoundsAccessChain = 66,
+    OpPtrAccessChain = 67,
+    OpArrayLength = 68,
+    OpGenericPtrMemSemantics = 69,
+    OpInBoundsPtrAccessChain = 70,
+    OpDecorate = 71,
+    OpMemberDecorate = 72,
+    OpDecorationGroup = 73,
+    OpGroupDecorate = 74,
+    OpGroupMemberDecorate = 75,
+    OpVectorExtractDynamic = 77,
+    OpVectorInsertDynamic = 78,
+    OpVectorShuffle = 79,
+    OpCompositeConstruct = 80,
+    OpCompositeExtract = 81,
+    OpCompositeInsert = 82,
+    OpCopyObject = 83,
+    OpTranspose = 84,
+    OpSampledImage = 86,
+    OpImageSampleImplicitLod = 87,
+    OpImageSampleExplicitLod = 88,
+    OpImageSampleDrefImplicitLod = 89,
+    OpImageSampleDrefExplicitLod = 90,
+    OpImageSampleProjImplicitLod = 91,
+    OpImageSampleProjExplicitLod = 92,
+    OpImageSampleProjDrefImplicitLod = 93,
+    OpImageSampleProjDrefExplicitLod = 94,
+    OpImageFetch = 95,
+    OpImageGather = 96,
+    OpImageDrefGather = 97,
+    OpImageRead = 98,
+    OpImageWrite = 99,
+    OpImage = 100,
+    OpImageQueryFormat = 101,
+    OpImageQueryOrder = 102,
+    OpImageQuerySizeLod = 103,
+    OpImageQuerySize = 104,
+    OpImageQueryLod = 105,
+    OpImageQueryLevels = 106,
+    OpImageQuerySamples = 107,
+    OpConvertFToU = 109,
+    OpConvertFToS = 110,
+    OpConvertSToF = 111,
+    OpConvertUToF = 112,
+    OpUConvert = 113,
+    OpSConvert = 114,
+    OpFConvert = 115,
+    OpQuantizeToF16 = 116,
+    OpConvertPtrToU = 117,
+    OpSatConvertSToU = 118,
+    OpSatConvertUToS = 119,
+    OpConvertUToPtr = 120,
+    OpPtrCastToGeneric = 121,
+    OpGenericCastToPtr = 122,
+    OpGenericCastToPtrExplicit = 123,
+    OpBitcast = 124,
+    OpSNegate = 126,
+    OpFNegate = 127,
+    OpIAdd = 128,
+    OpFAdd = 129,
+    OpISub = 130,
+    OpFSub = 131,
+    OpIMul = 132,
+    OpFMul = 133,
+    OpUDiv = 134,
+    OpSDiv = 135,
+    OpFDiv = 136,
+    OpUMod = 137,
+    OpSRem = 138,
+    OpSMod = 139,
+    OpFRem = 140,
+    OpFMod = 141,
+    OpVectorTimesScalar = 142,
+    OpMatrixTimesScalar = 143,
+    OpVectorTimesMatrix = 144,
+    OpMatrixTimesVector = 145,
+    OpMatrixTimesMatrix = 146,
+    OpOuterProduct = 147,
+    OpDot = 148,
+    OpIAddCarry = 149,
+    OpISubBorrow = 150,
+    OpUMulExtended = 151,
+    OpSMulExtended = 152,
+    OpAny = 154,
+    OpAll = 155,
+    OpIsNan = 156,
+    OpIsInf = 157,
+    OpIsFinite = 158,
+    OpIsNormal = 159,
+    OpSignBitSet = 160,
+    OpLessOrGreater = 161,
+    OpOrdered = 162,
+    OpUnordered = 163,
+    OpLogicalEqual = 164,
+    OpLogicalNotEqual = 165,
+    OpLogicalOr = 166,
+    OpLogicalAnd = 167,
+    OpLogicalNot = 168,
+    OpSelect = 169,
+    OpIEqual = 170,
+    OpINotEqual = 171,
+    OpUGreaterThan = 172,
+    OpSGreaterThan = 173,
+    OpUGreaterThanEqual = 174,
+    OpSGreaterThanEqual = 175,
+    OpULessThan = 176,
+    OpSLessThan = 177,
+    OpULessThanEqual = 178,
+    OpSLessThanEqual = 179,
+    OpFOrdEqual = 180,
+    OpFUnordEqual = 181,
+    OpFOrdNotEqual = 182,
+    OpFUnordNotEqual = 183,
+    OpFOrdLessThan = 184,
+    OpFUnordLessThan = 185,
+    OpFOrdGreaterThan = 186,
+    OpFUnordGreaterThan = 187,
+    OpFOrdLessThanEqual = 188,
+    OpFUnordLessThanEqual = 189,
+    OpFOrdGreaterThanEqual = 190,
+    OpFUnordGreaterThanEqual = 191,
+    OpShiftRightLogical = 194,
+    OpShiftRightArithmetic = 195,
+    OpShiftLeftLogical = 196,
+    OpBitwiseOr = 197,
+    OpBitwiseXor = 198,
+    OpBitwiseAnd = 199,
+    OpNot = 200,
+    OpBitFieldInsert = 201,
+    OpBitFieldSExtract = 202,
+    OpBitFieldUExtract = 203,
+    OpBitReverse = 204,
+    OpBitCount = 205,
+    OpDPdx = 207,
+    OpDPdy = 208,
+    OpFwidth = 209,
+    OpDPdxFine = 210,
+    OpDPdyFine = 211,
+    OpFwidthFine = 212,
+    OpDPdxCoarse = 213,
+    OpDPdyCoarse = 214,
+    OpFwidthCoarse = 215,
+    OpEmitVertex = 218,
+    OpEndPrimitive = 219,
+    OpEmitStreamVertex = 220,
+    OpEndStreamPrimitive = 221,
+    OpControlBarrier = 224,
+    OpMemoryBarrier = 225,
+    OpAtomicLoad = 227,
+    OpAtomicStore = 228,
+    OpAtomicExchange = 229,
+    OpAtomicCompareExchange = 230,
+    OpAtomicCompareExchangeWeak = 231,
+    OpAtomicIIncrement = 232,
+    OpAtomicIDecrement = 233,
+    OpAtomicIAdd = 234,
+    OpAtomicISub = 235,
+    OpAtomicSMin = 236,
+    OpAtomicUMin = 237,
+    OpAtomicSMax = 238,
+    OpAtomicUMax = 239,
+    OpAtomicAnd = 240,
+    OpAtomicOr = 241,
+    OpAtomicXor = 242,
+    OpPhi = 245,
+    OpLoopMerge = 246,
+    OpSelectionMerge = 247,
+    OpLabel = 248,
+    OpBranch = 249,
+    OpBranchConditional = 250,
+    OpSwitch = 251,
+    OpKill = 252,
+    OpReturn = 253,
+    OpReturnValue = 254,
+    OpUnreachable = 255,
+    OpLifetimeStart = 256,
+    OpLifetimeStop = 257,
+    OpGroupAsyncCopy = 259,
+    OpGroupWaitEvents = 260,
+    OpGroupAll = 261,
+    OpGroupAny = 262,
+    OpGroupBroadcast = 263,
+    OpGroupIAdd = 264,
+    OpGroupFAdd = 265,
+    OpGroupFMin = 266,
+    OpGroupUMin = 267,
+    OpGroupSMin = 268,
+    OpGroupFMax = 269,
+    OpGroupUMax = 270,
+    OpGroupSMax = 271,
+    OpReadPipe = 274,
+    OpWritePipe = 275,
+    OpReservedReadPipe = 276,
+    OpReservedWritePipe = 277,
+    OpReserveReadPipePackets = 278,
+    OpReserveWritePipePackets = 279,
+    OpCommitReadPipe = 280,
+    OpCommitWritePipe = 281,
+    OpIsValidReserveId = 282,
+    OpGetNumPipePackets = 283,
+    OpGetMaxPipePackets = 284,
+    OpGroupReserveReadPipePackets = 285,
+    OpGroupReserveWritePipePackets = 286,
+    OpGroupCommitReadPipe = 287,
+    OpGroupCommitWritePipe = 288,
+    OpEnqueueMarker = 291,
+    OpEnqueueKernel = 292,
+    OpGetKernelNDrangeSubGroupCount = 293,
+    OpGetKernelNDrangeMaxSubGroupSize = 294,
+    OpGetKernelWorkGroupSize = 295,
+    OpGetKernelPreferredWorkGroupSizeMultiple = 296,
+    OpRetainEvent = 297,
+    OpReleaseEvent = 298,
+    OpCreateUserEvent = 299,
+    OpIsValidEvent = 300,
+    OpSetUserEventStatus = 301,
+    OpCaptureEventProfilingInfo = 302,
+    OpGetDefaultQueue = 303,
+    OpBuildNDRange = 304,
+    OpImageSparseSampleImplicitLod = 305,
+    OpImageSparseSampleExplicitLod = 306,
+    OpImageSparseSampleDrefImplicitLod = 307,
+    OpImageSparseSampleDrefExplicitLod = 308,
+    OpImageSparseSampleProjImplicitLod = 309,
+    OpImageSparseSampleProjExplicitLod = 310,
+    OpImageSparseSampleProjDrefImplicitLod = 311,
+    OpImageSparseSampleProjDrefExplicitLod = 312,
+    OpImageSparseFetch = 313,
+    OpImageSparseGather = 314,
+    OpImageSparseDrefGather = 315,
+    OpImageSparseTexelsResident = 316,
+    OpNoLine = 317,
+    OpAtomicFlagTestAndSet = 318,
+    OpAtomicFlagClear = 319,
+    OpImageSparseRead = 320,
+    OpSizeOf = 321,
+    OpTypePipeStorage = 322,
+    OpConstantPipeStorage = 323,
+    OpCreatePipeFromPipeStorage = 324,
+    OpGetKernelLocalSizeForSubgroupCount = 325,
+    OpGetKernelMaxNumSubgroups = 326,
+    OpTypeNamedBarrier = 327,
+    OpNamedBarrierInitialize = 328,
+    OpMemoryNamedBarrier = 329,
+    OpModuleProcessed = 330,
+    OpDecorateId = 332,
+    OpSubgroupBallotKHR = 4421,
+    OpSubgroupFirstInvocationKHR = 4422,
+    OpSubgroupAllKHR = 4428,
+    OpSubgroupAnyKHR = 4429,
+    OpSubgroupAllEqualKHR = 4430,
+    OpSubgroupReadInvocationKHR = 4432,
+    OpGroupIAddNonUniformAMD = 5000,
+    OpGroupFAddNonUniformAMD = 5001,
+    OpGroupFMinNonUniformAMD = 5002,
+    OpGroupUMinNonUniformAMD = 5003,
+    OpGroupSMinNonUniformAMD = 5004,
+    OpGroupFMaxNonUniformAMD = 5005,
+    OpGroupUMaxNonUniformAMD = 5006,
+    OpGroupSMaxNonUniformAMD = 5007,
+    OpFragmentMaskFetchAMD = 5011,
+    OpFragmentFetchAMD = 5012,
+    OpSubgroupShuffleINTEL = 5571,
+    OpSubgroupShuffleDownINTEL = 5572,
+    OpSubgroupShuffleUpINTEL = 5573,
+    OpSubgroupShuffleXorINTEL = 5574,
+    OpSubgroupBlockReadINTEL = 5575,
+    OpSubgroupBlockWriteINTEL = 5576,
+    OpSubgroupImageBlockReadINTEL = 5577,
+    OpSubgroupImageBlockWriteINTEL = 5578,
+    OpDecorateStringGOOGLE = 5632,
+    OpMemberDecorateStringGOOGLE = 5633,
+    Max = 0x7fffffff,
+};
+
+// Overload operator| for mask bit combining
+
+inline ImageOperandsMask operator|(ImageOperandsMask a, ImageOperandsMask b) { return ImageOperandsMask(unsigned(a) | unsigned(b)); }
+inline FPFastMathModeMask operator|(FPFastMathModeMask a, FPFastMathModeMask b) { return FPFastMathModeMask(unsigned(a) | unsigned(b)); }
+inline SelectionControlMask operator|(SelectionControlMask a, SelectionControlMask b) { return SelectionControlMask(unsigned(a) | unsigned(b)); }
+inline LoopControlMask operator|(LoopControlMask a, LoopControlMask b) { return LoopControlMask(unsigned(a) | unsigned(b)); }
+inline FunctionControlMask operator|(FunctionControlMask a, FunctionControlMask b) { return FunctionControlMask(unsigned(a) | unsigned(b)); }
+inline MemorySemanticsMask operator|(MemorySemanticsMask a, MemorySemanticsMask b) { return MemorySemanticsMask(unsigned(a) | unsigned(b)); }
+inline MemoryAccessMask operator|(MemoryAccessMask a, MemoryAccessMask b) { return MemoryAccessMask(unsigned(a) | unsigned(b)); }
+inline KernelProfilingInfoMask operator|(KernelProfilingInfoMask a, KernelProfilingInfoMask b) { return KernelProfilingInfoMask(unsigned(a) | unsigned(b)); }
+
+}  // end namespace spv
+
+#endif  // #ifndef spirv_HPP
+
diff --git a/libs/spirv-headers/spirv/1.1/spirv.json b/libs/spirv-headers/spirv/1.1/spirv.json
new file mode 100644
index 00000000000..4c18e0192a3
--- /dev/null
+++ b/libs/spirv-headers/spirv/1.1/spirv.json
@@ -0,0 +1,1040 @@
+{
+    "spv":
+    {
+        "meta":
+        {
+            "Comment":
+            [
+                [
+                    "Copyright (c) 2014-2018 The Khronos Group Inc.",
+                    "",
+                    "Permission is hereby granted, free of charge, to any person obtaining a copy",
+                    "of this software and/or associated documentation files (the \"Materials\"),",
+                    "to deal in the Materials without restriction, including without limitation",
+                    "the rights to use, copy, modify, merge, publish, distribute, sublicense,",
+                    "and/or sell copies of the Materials, and to permit persons to whom the",
+                    "Materials are furnished to do so, subject to the following conditions:",
+                    "",
+                    "The above copyright notice and this permission notice shall be included in",
+                    "all copies or substantial portions of the Materials.",
+                    "",
+                    "MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS KHRONOS",
+                    "STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS SPECIFICATIONS AND",
+                    "HEADER INFORMATION ARE LOCATED AT https://www.khronos.org/registry/ ",
+                    "",
+                    "THE MATERIALS ARE PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS",
+                    "OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,",
+                    "FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL",
+                    "THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER",
+                    "LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING",
+                    "FROM,OUT OF OR IN CONNECTION WITH THE MATERIALS OR THE USE OR OTHER DEALINGS",
+                    "IN THE MATERIALS."
+                ],
+                [
+                    "This header is automatically generated by the same tool that creates",
+                    "the Binary Section of the SPIR-V specification."
+                ],
+                [
+                    "Enumeration tokens for SPIR-V, in various styles:",
+                    "  C, C++, C++11, JSON, Lua, Python",
+                    "",
+                    "- C will have tokens with a \"Spv\" prefix, e.g.: SpvSourceLanguageGLSL",
+                    "- C++ will have tokens in the \"spv\" name space, e.g.: spv::SourceLanguageGLSL",
+                    "- C++11 will use enum classes in the spv namespace, e.g.: spv::SourceLanguage::GLSL",
+                    "- Lua will use tables, e.g.: spv.SourceLanguage.GLSL",
+                    "- Python will use dictionaries, e.g.: spv['SourceLanguage']['GLSL']",
+                    "",
+                    "Some tokens act like mask values, which can be OR'd together,",
+                    "while others are mutually exclusive.  The mask-like ones have",
+                    "\"Mask\" in their name, and a parallel enum that has the shift",
+                    "amount (1 << x) for each corresponding enumerant."
+                ]
+            ],
+            "MagicNumber": 119734787,
+            "Version": 65792,
+            "Revision": 8,
+            "OpCodeMask": 65535,
+            "WordCountShift": 16
+        },
+        "enum":
+        [
+            {
+                "Name": "SourceLanguage",
+                "Type": "Value",
+                "Values":
+                {
+                    "Unknown": 0,
+                    "ESSL": 1,
+                    "GLSL": 2,
+                    "OpenCL_C": 3,
+                    "OpenCL_CPP": 4,
+                    "HLSL": 5
+                }
+            },
+            {
+                "Name": "ExecutionModel",
+                "Type": "Value",
+                "Values":
+                {
+                    "Vertex": 0,
+                    "TessellationControl": 1,
+                    "TessellationEvaluation": 2,
+                    "Geometry": 3,
+                    "Fragment": 4,
+                    "GLCompute": 5,
+                    "Kernel": 6
+                }
+            },
+            {
+                "Name": "AddressingModel",
+                "Type": "Value",
+                "Values":
+                {
+                    "Logical": 0,
+                    "Physical32": 1,
+                    "Physical64": 2
+                }
+            },
+            {
+                "Name": "MemoryModel",
+                "Type": "Value",
+                "Values":
+                {
+                    "Simple": 0,
+                    "GLSL450": 1,
+                    "OpenCL": 2
+                }
+            },
+            {
+                "Name": "ExecutionMode",
+                "Type": "Value",
+                "Values":
+                {
+                    "Invocations": 0,
+                    "SpacingEqual": 1,
+                    "SpacingFractionalEven": 2,
+                    "SpacingFractionalOdd": 3,
+                    "VertexOrderCw": 4,
+                    "VertexOrderCcw": 5,
+                    "PixelCenterInteger": 6,
+                    "OriginUpperLeft": 7,
+                    "OriginLowerLeft": 8,
+                    "EarlyFragmentTests": 9,
+                    "PointMode": 10,
+                    "Xfb": 11,
+                    "DepthReplacing": 12,
+                    "DepthGreater": 14,
+                    "DepthLess": 15,
+                    "DepthUnchanged": 16,
+                    "LocalSize": 17,
+                    "LocalSizeHint": 18,
+                    "InputPoints": 19,
+                    "InputLines": 20,
+                    "InputLinesAdjacency": 21,
+                    "Triangles": 22,
+                    "InputTrianglesAdjacency": 23,
+                    "Quads": 24,
+                    "Isolines": 25,
+                    "OutputVertices": 26,
+                    "OutputPoints": 27,
+                    "OutputLineStrip": 28,
+                    "OutputTriangleStrip": 29,
+                    "VecTypeHint": 30,
+                    "ContractionOff": 31,
+                    "Initializer": 33,
+                    "Finalizer": 34,
+                    "SubgroupSize": 35,
+                    "SubgroupsPerWorkgroup": 36,
+                    "PostDepthCoverage": 4446,
+                    "StencilRefReplacingEXT": 5027
+                }
+            },
+            {
+                "Name": "StorageClass",
+                "Type": "Value",
+                "Values":
+                {
+                    "UniformConstant": 0,
+                    "Input": 1,
+                    "Uniform": 2,
+                    "Output": 3,
+                    "Workgroup": 4,
+                    "CrossWorkgroup": 5,
+                    "Private": 6,
+                    "Function": 7,
+                    "Generic": 8,
+                    "PushConstant": 9,
+                    "AtomicCounter": 10,
+                    "Image": 11,
+                    "StorageBuffer": 12
+                }
+            },
+            {
+                "Name": "Dim",
+                "Type": "Value",
+                "Values":
+                {
+                    "Dim1D": 0,
+                    "Dim2D": 1,
+                    "Dim3D": 2,
+                    "Cube": 3,
+                    "Rect": 4,
+                    "Buffer": 5,
+                    "SubpassData": 6
+                }
+            },
+            {
+                "Name": "SamplerAddressingMode",
+                "Type": "Value",
+                "Values":
+                {
+                    "None": 0,
+                    "ClampToEdge": 1,
+                    "Clamp": 2,
+                    "Repeat": 3,
+                    "RepeatMirrored": 4
+                }
+            },
+            {
+                "Name": "SamplerFilterMode",
+                "Type": "Value",
+                "Values":
+                {
+                    "Nearest": 0,
+                    "Linear": 1
+                }
+            },
+            {
+                "Name": "ImageFormat",
+                "Type": "Value",
+                "Values":
+                {
+                    "Unknown": 0,
+                    "Rgba32f": 1,
+                    "Rgba16f": 2,
+                    "R32f": 3,
+                    "Rgba8": 4,
+                    "Rgba8Snorm": 5,
+                    "Rg32f": 6,
+                    "Rg16f": 7,
+                    "R11fG11fB10f": 8,
+                    "R16f": 9,
+                    "Rgba16": 10,
+                    "Rgb10A2": 11,
+                    "Rg16": 12,
+                    "Rg8": 13,
+                    "R16": 14,
+                    "R8": 15,
+                    "Rgba16Snorm": 16,
+                    "Rg16Snorm": 17,
+                    "Rg8Snorm": 18,
+                    "R16Snorm": 19,
+                    "R8Snorm": 20,
+                    "Rgba32i": 21,
+                    "Rgba16i": 22,
+                    "Rgba8i": 23,
+                    "R32i": 24,
+                    "Rg32i": 25,
+                    "Rg16i": 26,
+                    "Rg8i": 27,
+                    "R16i": 28,
+                    "R8i": 29,
+                    "Rgba32ui": 30,
+                    "Rgba16ui": 31,
+                    "Rgba8ui": 32,
+                    "R32ui": 33,
+                    "Rgb10a2ui": 34,
+                    "Rg32ui": 35,
+                    "Rg16ui": 36,
+                    "Rg8ui": 37,
+                    "R16ui": 38,
+                    "R8ui": 39
+                }
+            },
+            {
+                "Name": "ImageChannelOrder",
+                "Type": "Value",
+                "Values":
+                {
+                    "R": 0,
+                    "A": 1,
+                    "RG": 2,
+                    "RA": 3,
+                    "RGB": 4,
+                    "RGBA": 5,
+                    "BGRA": 6,
+                    "ARGB": 7,
+                    "Intensity": 8,
+                    "Luminance": 9,
+                    "Rx": 10,
+                    "RGx": 11,
+                    "RGBx": 12,
+                    "Depth": 13,
+                    "DepthStencil": 14,
+                    "sRGB": 15,
+                    "sRGBx": 16,
+                    "sRGBA": 17,
+                    "sBGRA": 18,
+                    "ABGR": 19
+                }
+            },
+            {
+                "Name": "ImageChannelDataType",
+                "Type": "Value",
+                "Values":
+                {
+                    "SnormInt8": 0,
+                    "SnormInt16": 1,
+                    "UnormInt8": 2,
+                    "UnormInt16": 3,
+                    "UnormShort565": 4,
+                    "UnormShort555": 5,
+                    "UnormInt101010": 6,
+                    "SignedInt8": 7,
+                    "SignedInt16": 8,
+                    "SignedInt32": 9,
+                    "UnsignedInt8": 10,
+                    "UnsignedInt16": 11,
+                    "UnsignedInt32": 12,
+                    "HalfFloat": 13,
+                    "Float": 14,
+                    "UnormInt24": 15,
+                    "UnormInt101010_2": 16
+                }
+            },
+            {
+                "Name": "ImageOperands",
+                "Type": "Bit",
+                "Values":
+                {
+                    "Bias": 0,
+                    "Lod": 1,
+                    "Grad": 2,
+                    "ConstOffset": 3,
+                    "Offset": 4,
+                    "ConstOffsets": 5,
+                    "Sample": 6,
+                    "MinLod": 7
+                }
+            },
+            {
+                "Name": "FPFastMathMode",
+                "Type": "Bit",
+                "Values":
+                {
+                    "NotNaN": 0,
+                    "NotInf": 1,
+                    "NSZ": 2,
+                    "AllowRecip": 3,
+                    "Fast": 4
+                }
+            },
+            {
+                "Name": "FPRoundingMode",
+                "Type": "Value",
+                "Values":
+                {
+                    "RTE": 0,
+                    "RTZ": 1,
+                    "RTP": 2,
+                    "RTN": 3
+                }
+            },
+            {
+                "Name": "LinkageType",
+                "Type": "Value",
+                "Values":
+                {
+                    "Export": 0,
+                    "Import": 1
+                }
+            },
+            {
+                "Name": "AccessQualifier",
+                "Type": "Value",
+                "Values":
+                {
+                    "ReadOnly": 0,
+                    "WriteOnly": 1,
+                    "ReadWrite": 2
+                }
+            },
+            {
+                "Name": "FunctionParameterAttribute",
+                "Type": "Value",
+                "Values":
+                {
+                    "Zext": 0,
+                    "Sext": 1,
+                    "ByVal": 2,
+                    "Sret": 3,
+                    "NoAlias": 4,
+                    "NoCapture": 5,
+                    "NoWrite": 6,
+                    "NoReadWrite": 7
+                }
+            },
+            {
+                "Name": "Decoration",
+                "Type": "Value",
+                "Values":
+                {
+                    "RelaxedPrecision": 0,
+                    "SpecId": 1,
+                    "Block": 2,
+                    "BufferBlock": 3,
+                    "RowMajor": 4,
+                    "ColMajor": 5,
+                    "ArrayStride": 6,
+                    "MatrixStride": 7,
+                    "GLSLShared": 8,
+                    "GLSLPacked": 9,
+                    "CPacked": 10,
+                    "BuiltIn": 11,
+                    "NoPerspective": 13,
+                    "Flat": 14,
+                    "Patch": 15,
+                    "Centroid": 16,
+                    "Sample": 17,
+                    "Invariant": 18,
+                    "Restrict": 19,
+                    "Aliased": 20,
+                    "Volatile": 21,
+                    "Constant": 22,
+                    "Coherent": 23,
+                    "NonWritable": 24,
+                    "NonReadable": 25,
+                    "Uniform": 26,
+                    "SaturatedConversion": 28,
+                    "Stream": 29,
+                    "Location": 30,
+                    "Component": 31,
+                    "Index": 32,
+                    "Binding": 33,
+                    "DescriptorSet": 34,
+                    "Offset": 35,
+                    "XfbBuffer": 36,
+                    "XfbStride": 37,
+                    "FuncParamAttr": 38,
+                    "FPRoundingMode": 39,
+                    "FPFastMathMode": 40,
+                    "LinkageAttributes": 41,
+                    "NoContraction": 42,
+                    "InputAttachmentIndex": 43,
+                    "Alignment": 44,
+                    "MaxByteOffset": 45,
+                    "ExplicitInterpAMD": 4999,
+                    "OverrideCoverageNV": 5248,
+                    "PassthroughNV": 5250,
+                    "ViewportRelativeNV": 5252,
+                    "SecondaryViewportRelativeNV": 5256,
+                    "HlslCounterBufferGOOGLE": 5634,
+                    "HlslSemanticGOOGLE": 5635
+                }
+            },
+            {
+                "Name": "BuiltIn",
+                "Type": "Value",
+                "Values":
+                {
+                    "Position": 0,
+                    "PointSize": 1,
+                    "ClipDistance": 3,
+                    "CullDistance": 4,
+                    "VertexId": 5,
+                    "InstanceId": 6,
+                    "PrimitiveId": 7,
+                    "InvocationId": 8,
+                    "Layer": 9,
+                    "ViewportIndex": 10,
+                    "TessLevelOuter": 11,
+                    "TessLevelInner": 12,
+                    "TessCoord": 13,
+                    "PatchVertices": 14,
+                    "FragCoord": 15,
+                    "PointCoord": 16,
+                    "FrontFacing": 17,
+                    "SampleId": 18,
+                    "SamplePosition": 19,
+                    "SampleMask": 20,
+                    "FragDepth": 22,
+                    "HelperInvocation": 23,
+                    "NumWorkgroups": 24,
+                    "WorkgroupSize": 25,
+                    "WorkgroupId": 26,
+                    "LocalInvocationId": 27,
+                    "GlobalInvocationId": 28,
+                    "LocalInvocationIndex": 29,
+                    "WorkDim": 30,
+                    "GlobalSize": 31,
+                    "EnqueuedWorkgroupSize": 32,
+                    "GlobalOffset": 33,
+                    "GlobalLinearId": 34,
+                    "SubgroupSize": 36,
+                    "SubgroupMaxSize": 37,
+                    "NumSubgroups": 38,
+                    "NumEnqueuedSubgroups": 39,
+                    "SubgroupId": 40,
+                    "SubgroupLocalInvocationId": 41,
+                    "VertexIndex": 42,
+                    "InstanceIndex": 43,
+                    "SubgroupEqMaskKHR": 4416,
+                    "SubgroupGeMaskKHR": 4417,
+                    "SubgroupGtMaskKHR": 4418,
+                    "SubgroupLeMaskKHR": 4419,
+                    "SubgroupLtMaskKHR": 4420,
+                    "BaseVertex": 4424,
+                    "BaseInstance": 4425,
+                    "DrawIndex": 4426,
+                    "DeviceIndex": 4438,
+                    "ViewIndex": 4440,
+                    "BaryCoordNoPerspAMD": 4992,
+                    "BaryCoordNoPerspCentroidAMD": 4993,
+                    "BaryCoordNoPerspSampleAMD": 4994,
+                    "BaryCoordSmoothAMD": 4995,
+                    "BaryCoordSmoothCentroidAMD": 4996,
+                    "BaryCoordSmoothSampleAMD": 4997,
+                    "BaryCoordPullModelAMD": 4998,
+                    "FragStencilRefEXT": 5014,
+                    "ViewportMaskNV": 5253,
+                    "SecondaryPositionNV": 5257,
+                    "SecondaryViewportMaskNV": 5258,
+                    "PositionPerViewNV": 5261,
+                    "ViewportMaskPerViewNV": 5262
+                }
+            },
+            {
+                "Name": "SelectionControl",
+                "Type": "Bit",
+                "Values":
+                {
+                    "Flatten": 0,
+                    "DontFlatten": 1
+                }
+            },
+            {
+                "Name": "LoopControl",
+                "Type": "Bit",
+                "Values":
+                {
+                    "Unroll": 0,
+                    "DontUnroll": 1,
+                    "DependencyInfinite": 2,
+                    "DependencyLength": 3
+                }
+            },
+            {
+                "Name": "FunctionControl",
+                "Type": "Bit",
+                "Values":
+                {
+                    "Inline": 0,
+                    "DontInline": 1,
+                    "Pure": 2,
+                    "Const": 3
+                }
+            },
+            {
+                "Name": "MemorySemantics",
+                "Type": "Bit",
+                "Values":
+                {
+                    "Acquire": 1,
+                    "Release": 2,
+                    "AcquireRelease": 3,
+                    "SequentiallyConsistent": 4,
+                    "UniformMemory": 6,
+                    "SubgroupMemory": 7,
+                    "WorkgroupMemory": 8,
+                    "CrossWorkgroupMemory": 9,
+                    "AtomicCounterMemory": 10,
+                    "ImageMemory": 11
+                }
+            },
+            {
+                "Name": "MemoryAccess",
+                "Type": "Bit",
+                "Values":
+                {
+                    "Volatile": 0,
+                    "Aligned": 1,
+                    "Nontemporal": 2
+                }
+            },
+            {
+                "Name": "Scope",
+                "Type": "Value",
+                "Values":
+                {
+                    "CrossDevice": 0,
+                    "Device": 1,
+                    "Workgroup": 2,
+                    "Subgroup": 3,
+                    "Invocation": 4
+                }
+            },
+            {
+                "Name": "GroupOperation",
+                "Type": "Value",
+                "Values":
+                {
+                    "Reduce": 0,
+                    "InclusiveScan": 1,
+                    "ExclusiveScan": 2
+                }
+            },
+            {
+                "Name": "KernelEnqueueFlags",
+                "Type": "Value",
+                "Values":
+                {
+                    "NoWait": 0,
+                    "WaitKernel": 1,
+                    "WaitWorkGroup": 2
+                }
+            },
+            {
+                "Name": "KernelProfilingInfo",
+                "Type": "Bit",
+                "Values":
+                {
+                    "CmdExecTime": 0
+                }
+            },
+            {
+                "Name": "Capability",
+                "Type": "Value",
+                "Values":
+                {
+                    "Matrix": 0,
+                    "Shader": 1,
+                    "Geometry": 2,
+                    "Tessellation": 3,
+                    "Addresses": 4,
+                    "Linkage": 5,
+                    "Kernel": 6,
+                    "Vector16": 7,
+                    "Float16Buffer": 8,
+                    "Float16": 9,
+                    "Float64": 10,
+                    "Int64": 11,
+                    "Int64Atomics": 12,
+                    "ImageBasic": 13,
+                    "ImageReadWrite": 14,
+                    "ImageMipmap": 15,
+                    "Pipes": 17,
+                    "Groups": 18,
+                    "DeviceEnqueue": 19,
+                    "LiteralSampler": 20,
+                    "AtomicStorage": 21,
+                    "Int16": 22,
+                    "TessellationPointSize": 23,
+                    "GeometryPointSize": 24,
+                    "ImageGatherExtended": 25,
+                    "StorageImageMultisample": 27,
+                    "UniformBufferArrayDynamicIndexing": 28,
+                    "SampledImageArrayDynamicIndexing": 29,
+                    "StorageBufferArrayDynamicIndexing": 30,
+                    "StorageImageArrayDynamicIndexing": 31,
+                    "ClipDistance": 32,
+                    "CullDistance": 33,
+                    "ImageCubeArray": 34,
+                    "SampleRateShading": 35,
+                    "ImageRect": 36,
+                    "SampledRect": 37,
+                    "GenericPointer": 38,
+                    "Int8": 39,
+                    "InputAttachment": 40,
+                    "SparseResidency": 41,
+                    "MinLod": 42,
+                    "Sampled1D": 43,
+                    "Image1D": 44,
+                    "SampledCubeArray": 45,
+                    "SampledBuffer": 46,
+                    "ImageBuffer": 47,
+                    "ImageMSArray": 48,
+                    "StorageImageExtendedFormats": 49,
+                    "ImageQuery": 50,
+                    "DerivativeControl": 51,
+                    "InterpolationFunction": 52,
+                    "TransformFeedback": 53,
+                    "GeometryStreams": 54,
+                    "StorageImageReadWithoutFormat": 55,
+                    "StorageImageWriteWithoutFormat": 56,
+                    "MultiViewport": 57,
+                    "SubgroupDispatch": 58,
+                    "NamedBarrier": 59,
+                    "PipeStorage": 60,
+                    "SubgroupBallotKHR": 4423,
+                    "DrawParameters": 4427,
+                    "SubgroupVoteKHR": 4431,
+                    "StorageBuffer16BitAccess": 4433,
+                    "StorageUniformBufferBlock16": 4433,
+                    "StorageUniform16": 4434,
+                    "UniformAndStorageBuffer16BitAccess": 4434,
+                    "StoragePushConstant16": 4435,
+                    "StorageInputOutput16": 4436,
+                    "DeviceGroup": 4437,
+                    "MultiView": 4439,
+                    "VariablePointersStorageBuffer": 4441,
+                    "VariablePointers": 4442,
+                    "AtomicStorageOps": 4445,
+                    "SampleMaskPostDepthCoverage": 4447,
+                    "ImageGatherBiasLodAMD": 5009,
+                    "FragmentMaskAMD": 5010,
+                    "StencilExportEXT": 5013,
+                    "ImageReadWriteLodAMD": 5015,
+                    "SampleMaskOverrideCoverageNV": 5249,
+                    "GeometryShaderPassthroughNV": 5251,
+                    "ShaderViewportIndexLayerEXT": 5254,
+                    "ShaderViewportIndexLayerNV": 5254,
+                    "ShaderViewportMaskNV": 5255,
+                    "ShaderStereoViewNV": 5259,
+                    "PerViewAttributesNV": 5260,
+                    "SubgroupShuffleINTEL": 5568,
+                    "SubgroupBufferBlockIOINTEL": 5569,
+                    "SubgroupImageBlockIOINTEL": 5570
+                }
+            },
+            {
+                "Name": "Op",
+                "Type": "Value",
+                "Values":
+                {
+                    "OpNop": 0,
+                    "OpUndef": 1,
+                    "OpSourceContinued": 2,
+                    "OpSource": 3,
+                    "OpSourceExtension": 4,
+                    "OpName": 5,
+                    "OpMemberName": 6,
+                    "OpString": 7,
+                    "OpLine": 8,
+                    "OpExtension": 10,
+                    "OpExtInstImport": 11,
+                    "OpExtInst": 12,
+                    "OpMemoryModel": 14,
+                    "OpEntryPoint": 15,
+                    "OpExecutionMode": 16,
+                    "OpCapability": 17,
+                    "OpTypeVoid": 19,
+                    "OpTypeBool": 20,
+                    "OpTypeInt": 21,
+                    "OpTypeFloat": 22,
+                    "OpTypeVector": 23,
+                    "OpTypeMatrix": 24,
+                    "OpTypeImage": 25,
+                    "OpTypeSampler": 26,
+                    "OpTypeSampledImage": 27,
+                    "OpTypeArray": 28,
+                    "OpTypeRuntimeArray": 29,
+                    "OpTypeStruct": 30,
+                    "OpTypeOpaque": 31,
+                    "OpTypePointer": 32,
+                    "OpTypeFunction": 33,
+                    "OpTypeEvent": 34,
+                    "OpTypeDeviceEvent": 35,
+                    "OpTypeReserveId": 36,
+                    "OpTypeQueue": 37,
+                    "OpTypePipe": 38,
+                    "OpTypeForwardPointer": 39,
+                    "OpConstantTrue": 41,
+                    "OpConstantFalse": 42,
+                    "OpConstant": 43,
+                    "OpConstantComposite": 44,
+                    "OpConstantSampler": 45,
+                    "OpConstantNull": 46,
+                    "OpSpecConstantTrue": 48,
+                    "OpSpecConstantFalse": 49,
+                    "OpSpecConstant": 50,
+                    "OpSpecConstantComposite": 51,
+                    "OpSpecConstantOp": 52,
+                    "OpFunction": 54,
+                    "OpFunctionParameter": 55,
+                    "OpFunctionEnd": 56,
+                    "OpFunctionCall": 57,
+                    "OpVariable": 59,
+                    "OpImageTexelPointer": 60,
+                    "OpLoad": 61,
+                    "OpStore": 62,
+                    "OpCopyMemory": 63,
+                    "OpCopyMemorySized": 64,
+                    "OpAccessChain": 65,
+                    "OpInBoundsAccessChain": 66,
+                    "OpPtrAccessChain": 67,
+                    "OpArrayLength": 68,
+                    "OpGenericPtrMemSemantics": 69,
+                    "OpInBoundsPtrAccessChain": 70,
+                    "OpDecorate": 71,
+                    "OpMemberDecorate": 72,
+                    "OpDecorationGroup": 73,
+                    "OpGroupDecorate": 74,
+                    "OpGroupMemberDecorate": 75,
+                    "OpVectorExtractDynamic": 77,
+                    "OpVectorInsertDynamic": 78,
+                    "OpVectorShuffle": 79,
+                    "OpCompositeConstruct": 80,
+                    "OpCompositeExtract": 81,
+                    "OpCompositeInsert": 82,
+                    "OpCopyObject": 83,
+                    "OpTranspose": 84,
+                    "OpSampledImage": 86,
+                    "OpImageSampleImplicitLod": 87,
+                    "OpImageSampleExplicitLod": 88,
+                    "OpImageSampleDrefImplicitLod": 89,
+                    "OpImageSampleDrefExplicitLod": 90,
+                    "OpImageSampleProjImplicitLod": 91,
+                    "OpImageSampleProjExplicitLod": 92,
+                    "OpImageSampleProjDrefImplicitLod": 93,
+                    "OpImageSampleProjDrefExplicitLod": 94,
+                    "OpImageFetch": 95,
+                    "OpImageGather": 96,
+                    "OpImageDrefGather": 97,
+                    "OpImageRead": 98,
+                    "OpImageWrite": 99,
+                    "OpImage": 100,
+                    "OpImageQueryFormat": 101,
+                    "OpImageQueryOrder": 102,
+                    "OpImageQuerySizeLod": 103,
+                    "OpImageQuerySize": 104,
+                    "OpImageQueryLod": 105,
+                    "OpImageQueryLevels": 106,
+                    "OpImageQuerySamples": 107,
+                    "OpConvertFToU": 109,
+                    "OpConvertFToS": 110,
+                    "OpConvertSToF": 111,
+                    "OpConvertUToF": 112,
+                    "OpUConvert": 113,
+                    "OpSConvert": 114,
+                    "OpFConvert": 115,
+                    "OpQuantizeToF16": 116,
+                    "OpConvertPtrToU": 117,
+                    "OpSatConvertSToU": 118,
+                    "OpSatConvertUToS": 119,
+                    "OpConvertUToPtr": 120,
+                    "OpPtrCastToGeneric": 121,
+                    "OpGenericCastToPtr": 122,
+                    "OpGenericCastToPtrExplicit": 123,
+                    "OpBitcast": 124,
+                    "OpSNegate": 126,
+                    "OpFNegate": 127,
+                    "OpIAdd": 128,
+                    "OpFAdd": 129,
+                    "OpISub": 130,
+                    "OpFSub": 131,
+                    "OpIMul": 132,
+                    "OpFMul": 133,
+                    "OpUDiv": 134,
+                    "OpSDiv": 135,
+                    "OpFDiv": 136,
+                    "OpUMod": 137,
+                    "OpSRem": 138,
+                    "OpSMod": 139,
+                    "OpFRem": 140,
+                    "OpFMod": 141,
+                    "OpVectorTimesScalar": 142,
+                    "OpMatrixTimesScalar": 143,
+                    "OpVectorTimesMatrix": 144,
+                    "OpMatrixTimesVector": 145,
+                    "OpMatrixTimesMatrix": 146,
+                    "OpOuterProduct": 147,
+                    "OpDot": 148,
+                    "OpIAddCarry": 149,
+                    "OpISubBorrow": 150,
+                    "OpUMulExtended": 151,
+                    "OpSMulExtended": 152,
+                    "OpAny": 154,
+                    "OpAll": 155,
+                    "OpIsNan": 156,
+                    "OpIsInf": 157,
+                    "OpIsFinite": 158,
+                    "OpIsNormal": 159,
+                    "OpSignBitSet": 160,
+                    "OpLessOrGreater": 161,
+                    "OpOrdered": 162,
+                    "OpUnordered": 163,
+                    "OpLogicalEqual": 164,
+                    "OpLogicalNotEqual": 165,
+                    "OpLogicalOr": 166,
+                    "OpLogicalAnd": 167,
+                    "OpLogicalNot": 168,
+                    "OpSelect": 169,
+                    "OpIEqual": 170,
+                    "OpINotEqual": 171,
+                    "OpUGreaterThan": 172,
+                    "OpSGreaterThan": 173,
+                    "OpUGreaterThanEqual": 174,
+                    "OpSGreaterThanEqual": 175,
+                    "OpULessThan": 176,
+                    "OpSLessThan": 177,
+                    "OpULessThanEqual": 178,
+                    "OpSLessThanEqual": 179,
+                    "OpFOrdEqual": 180,
+                    "OpFUnordEqual": 181,
+                    "OpFOrdNotEqual": 182,
+                    "OpFUnordNotEqual": 183,
+                    "OpFOrdLessThan": 184,
+                    "OpFUnordLessThan": 185,
+                    "OpFOrdGreaterThan": 186,
+                    "OpFUnordGreaterThan": 187,
+                    "OpFOrdLessThanEqual": 188,
+                    "OpFUnordLessThanEqual": 189,
+                    "OpFOrdGreaterThanEqual": 190,
+                    "OpFUnordGreaterThanEqual": 191,
+                    "OpShiftRightLogical": 194,
+                    "OpShiftRightArithmetic": 195,
+                    "OpShiftLeftLogical": 196,
+                    "OpBitwiseOr": 197,
+                    "OpBitwiseXor": 198,
+                    "OpBitwiseAnd": 199,
+                    "OpNot": 200,
+                    "OpBitFieldInsert": 201,
+                    "OpBitFieldSExtract": 202,
+                    "OpBitFieldUExtract": 203,
+                    "OpBitReverse": 204,
+                    "OpBitCount": 205,
+                    "OpDPdx": 207,
+                    "OpDPdy": 208,
+                    "OpFwidth": 209,
+                    "OpDPdxFine": 210,
+                    "OpDPdyFine": 211,
+                    "OpFwidthFine": 212,
+                    "OpDPdxCoarse": 213,
+                    "OpDPdyCoarse": 214,
+                    "OpFwidthCoarse": 215,
+                    "OpEmitVertex": 218,
+                    "OpEndPrimitive": 219,
+                    "OpEmitStreamVertex": 220,
+                    "OpEndStreamPrimitive": 221,
+                    "OpControlBarrier": 224,
+                    "OpMemoryBarrier": 225,
+                    "OpAtomicLoad": 227,
+                    "OpAtomicStore": 228,
+                    "OpAtomicExchange": 229,
+                    "OpAtomicCompareExchange": 230,
+                    "OpAtomicCompareExchangeWeak": 231,
+                    "OpAtomicIIncrement": 232,
+                    "OpAtomicIDecrement": 233,
+                    "OpAtomicIAdd": 234,
+                    "OpAtomicISub": 235,
+                    "OpAtomicSMin": 236,
+                    "OpAtomicUMin": 237,
+                    "OpAtomicSMax": 238,
+                    "OpAtomicUMax": 239,
+                    "OpAtomicAnd": 240,
+                    "OpAtomicOr": 241,
+                    "OpAtomicXor": 242,
+                    "OpPhi": 245,
+                    "OpLoopMerge": 246,
+                    "OpSelectionMerge": 247,
+                    "OpLabel": 248,
+                    "OpBranch": 249,
+                    "OpBranchConditional": 250,
+                    "OpSwitch": 251,
+                    "OpKill": 252,
+                    "OpReturn": 253,
+                    "OpReturnValue": 254,
+                    "OpUnreachable": 255,
+                    "OpLifetimeStart": 256,
+                    "OpLifetimeStop": 257,
+                    "OpGroupAsyncCopy": 259,
+                    "OpGroupWaitEvents": 260,
+                    "OpGroupAll": 261,
+                    "OpGroupAny": 262,
+                    "OpGroupBroadcast": 263,
+                    "OpGroupIAdd": 264,
+                    "OpGroupFAdd": 265,
+                    "OpGroupFMin": 266,
+                    "OpGroupUMin": 267,
+                    "OpGroupSMin": 268,
+                    "OpGroupFMax": 269,
+                    "OpGroupUMax": 270,
+                    "OpGroupSMax": 271,
+                    "OpReadPipe": 274,
+                    "OpWritePipe": 275,
+                    "OpReservedReadPipe": 276,
+                    "OpReservedWritePipe": 277,
+                    "OpReserveReadPipePackets": 278,
+                    "OpReserveWritePipePackets": 279,
+                    "OpCommitReadPipe": 280,
+                    "OpCommitWritePipe": 281,
+                    "OpIsValidReserveId": 282,
+                    "OpGetNumPipePackets": 283,
+                    "OpGetMaxPipePackets": 284,
+                    "OpGroupReserveReadPipePackets": 285,
+                    "OpGroupReserveWritePipePackets": 286,
+                    "OpGroupCommitReadPipe": 287,
+                    "OpGroupCommitWritePipe": 288,
+                    "OpEnqueueMarker": 291,
+                    "OpEnqueueKernel": 292,
+                    "OpGetKernelNDrangeSubGroupCount": 293,
+                    "OpGetKernelNDrangeMaxSubGroupSize": 294,
+                    "OpGetKernelWorkGroupSize": 295,
+                    "OpGetKernelPreferredWorkGroupSizeMultiple": 296,
+                    "OpRetainEvent": 297,
+                    "OpReleaseEvent": 298,
+                    "OpCreateUserEvent": 299,
+                    "OpIsValidEvent": 300,
+                    "OpSetUserEventStatus": 301,
+                    "OpCaptureEventProfilingInfo": 302,
+                    "OpGetDefaultQueue": 303,
+                    "OpBuildNDRange": 304,
+                    "OpImageSparseSampleImplicitLod": 305,
+                    "OpImageSparseSampleExplicitLod": 306,
+                    "OpImageSparseSampleDrefImplicitLod": 307,
+                    "OpImageSparseSampleDrefExplicitLod": 308,
+                    "OpImageSparseSampleProjImplicitLod": 309,
+                    "OpImageSparseSampleProjExplicitLod": 310,
+                    "OpImageSparseSampleProjDrefImplicitLod": 311,
+                    "OpImageSparseSampleProjDrefExplicitLod": 312,
+                    "OpImageSparseFetch": 313,
+                    "OpImageSparseGather": 314,
+                    "OpImageSparseDrefGather": 315,
+                    "OpImageSparseTexelsResident": 316,
+                    "OpNoLine": 317,
+                    "OpAtomicFlagTestAndSet": 318,
+                    "OpAtomicFlagClear": 319,
+                    "OpImageSparseRead": 320,
+                    "OpSizeOf": 321,
+                    "OpTypePipeStorage": 322,
+                    "OpConstantPipeStorage": 323,
+                    "OpCreatePipeFromPipeStorage": 324,
+                    "OpGetKernelLocalSizeForSubgroupCount": 325,
+                    "OpGetKernelMaxNumSubgroups": 326,
+                    "OpTypeNamedBarrier": 327,
+                    "OpNamedBarrierInitialize": 328,
+                    "OpMemoryNamedBarrier": 329,
+                    "OpModuleProcessed": 330,
+                    "OpDecorateId": 332,
+                    "OpSubgroupBallotKHR": 4421,
+                    "OpSubgroupFirstInvocationKHR": 4422,
+                    "OpSubgroupAllKHR": 4428,
+                    "OpSubgroupAnyKHR": 4429,
+                    "OpSubgroupAllEqualKHR": 4430,
+                    "OpSubgroupReadInvocationKHR": 4432,
+                    "OpGroupIAddNonUniformAMD": 5000,
+                    "OpGroupFAddNonUniformAMD": 5001,
+                    "OpGroupFMinNonUniformAMD": 5002,
+                    "OpGroupUMinNonUniformAMD": 5003,
+                    "OpGroupSMinNonUniformAMD": 5004,
+                    "OpGroupFMaxNonUniformAMD": 5005,
+                    "OpGroupUMaxNonUniformAMD": 5006,
+                    "OpGroupSMaxNonUniformAMD": 5007,
+                    "OpFragmentMaskFetchAMD": 5011,
+                    "OpFragmentFetchAMD": 5012,
+                    "OpSubgroupShuffleINTEL": 5571,
+                    "OpSubgroupShuffleDownINTEL": 5572,
+                    "OpSubgroupShuffleUpINTEL": 5573,
+                    "OpSubgroupShuffleXorINTEL": 5574,
+                    "OpSubgroupBlockReadINTEL": 5575,
+                    "OpSubgroupBlockWriteINTEL": 5576,
+                    "OpSubgroupImageBlockReadINTEL": 5577,
+                    "OpSubgroupImageBlockWriteINTEL": 5578,
+                    "OpDecorateStringGOOGLE": 5632,
+                    "OpMemberDecorateStringGOOGLE": 5633
+                }
+            }
+        ]
+    }
+}
+
diff --git a/libs/spirv-headers/spirv/1.1/spirv.lua b/libs/spirv-headers/spirv/1.1/spirv.lua
new file mode 100644
index 00000000000..ad34e0abe9d
--- /dev/null
+++ b/libs/spirv-headers/spirv/1.1/spirv.lua
@@ -0,0 +1,971 @@
+-- Copyright (c) 2014-2018 The Khronos Group Inc.
+-- 
+-- Permission is hereby granted, free of charge, to any person obtaining a copy
+-- of this software and/or associated documentation files (the "Materials"),
+-- to deal in the Materials without restriction, including without limitation
+-- the rights to use, copy, modify, merge, publish, distribute, sublicense,
+-- and/or sell copies of the Materials, and to permit persons to whom the
+-- Materials are furnished to do so, subject to the following conditions:
+-- 
+-- The above copyright notice and this permission notice shall be included in
+-- all copies or substantial portions of the Materials.
+-- 
+-- MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS KHRONOS
+-- STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS SPECIFICATIONS AND
+-- HEADER INFORMATION ARE LOCATED AT https://www.khronos.org/registry/ 
+-- 
+-- THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+-- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+-- THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+-- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+-- FROM,OUT OF OR IN CONNECTION WITH THE MATERIALS OR THE USE OR OTHER DEALINGS
+-- IN THE MATERIALS.
+
+-- This header is automatically generated by the same tool that creates
+-- the Binary Section of the SPIR-V specification.
+
+-- Enumeration tokens for SPIR-V, in various styles:
+--   C, C++, C++11, JSON, Lua, Python
+-- 
+-- - C will have tokens with a "Spv" prefix, e.g.: SpvSourceLanguageGLSL
+-- - C++ will have tokens in the "spv" name space, e.g.: spv::SourceLanguageGLSL
+-- - C++11 will use enum classes in the spv namespace, e.g.: spv::SourceLanguage::GLSL
+-- - Lua will use tables, e.g.: spv.SourceLanguage.GLSL
+-- - Python will use dictionaries, e.g.: spv['SourceLanguage']['GLSL']
+-- 
+-- Some tokens act like mask values, which can be OR'd together,
+-- while others are mutually exclusive.  The mask-like ones have
+-- "Mask" in their name, and a parallel enum that has the shift
+-- amount (1 << x) for each corresponding enumerant.
+
+spv = {
+    MagicNumber = 0x07230203,
+    Version = 0x00010100,
+    Revision = 8,
+    OpCodeMask = 0xffff,
+    WordCountShift = 16,
+
+    SourceLanguage = {
+        Unknown = 0,
+        ESSL = 1,
+        GLSL = 2,
+        OpenCL_C = 3,
+        OpenCL_CPP = 4,
+        HLSL = 5,
+    },
+
+    ExecutionModel = {
+        Vertex = 0,
+        TessellationControl = 1,
+        TessellationEvaluation = 2,
+        Geometry = 3,
+        Fragment = 4,
+        GLCompute = 5,
+        Kernel = 6,
+    },
+
+    AddressingModel = {
+        Logical = 0,
+        Physical32 = 1,
+        Physical64 = 2,
+    },
+
+    MemoryModel = {
+        Simple = 0,
+        GLSL450 = 1,
+        OpenCL = 2,
+    },
+
+    ExecutionMode = {
+        Invocations = 0,
+        SpacingEqual = 1,
+        SpacingFractionalEven = 2,
+        SpacingFractionalOdd = 3,
+        VertexOrderCw = 4,
+        VertexOrderCcw = 5,
+        PixelCenterInteger = 6,
+        OriginUpperLeft = 7,
+        OriginLowerLeft = 8,
+        EarlyFragmentTests = 9,
+        PointMode = 10,
+        Xfb = 11,
+        DepthReplacing = 12,
+        DepthGreater = 14,
+        DepthLess = 15,
+        DepthUnchanged = 16,
+        LocalSize = 17,
+        LocalSizeHint = 18,
+        InputPoints = 19,
+        InputLines = 20,
+        InputLinesAdjacency = 21,
+        Triangles = 22,
+        InputTrianglesAdjacency = 23,
+        Quads = 24,
+        Isolines = 25,
+        OutputVertices = 26,
+        OutputPoints = 27,
+        OutputLineStrip = 28,
+        OutputTriangleStrip = 29,
+        VecTypeHint = 30,
+        ContractionOff = 31,
+        Initializer = 33,
+        Finalizer = 34,
+        SubgroupSize = 35,
+        SubgroupsPerWorkgroup = 36,
+        PostDepthCoverage = 4446,
+        StencilRefReplacingEXT = 5027,
+    },
+
+    StorageClass = {
+        UniformConstant = 0,
+        Input = 1,
+        Uniform = 2,
+        Output = 3,
+        Workgroup = 4,
+        CrossWorkgroup = 5,
+        Private = 6,
+        Function = 7,
+        Generic = 8,
+        PushConstant = 9,
+        AtomicCounter = 10,
+        Image = 11,
+        StorageBuffer = 12,
+    },
+
+    Dim = {
+        Dim1D = 0,
+        Dim2D = 1,
+        Dim3D = 2,
+        Cube = 3,
+        Rect = 4,
+        Buffer = 5,
+        SubpassData = 6,
+    },
+
+    SamplerAddressingMode = {
+        None = 0,
+        ClampToEdge = 1,
+        Clamp = 2,
+        Repeat = 3,
+        RepeatMirrored = 4,
+    },
+
+    SamplerFilterMode = {
+        Nearest = 0,
+        Linear = 1,
+    },
+
+    ImageFormat = {
+        Unknown = 0,
+        Rgba32f = 1,
+        Rgba16f = 2,
+        R32f = 3,
+        Rgba8 = 4,
+        Rgba8Snorm = 5,
+        Rg32f = 6,
+        Rg16f = 7,
+        R11fG11fB10f = 8,
+        R16f = 9,
+        Rgba16 = 10,
+        Rgb10A2 = 11,
+        Rg16 = 12,
+        Rg8 = 13,
+        R16 = 14,
+        R8 = 15,
+        Rgba16Snorm = 16,
+        Rg16Snorm = 17,
+        Rg8Snorm = 18,
+        R16Snorm = 19,
+        R8Snorm = 20,
+        Rgba32i = 21,
+        Rgba16i = 22,
+        Rgba8i = 23,
+        R32i = 24,
+        Rg32i = 25,
+        Rg16i = 26,
+        Rg8i = 27,
+        R16i = 28,
+        R8i = 29,
+        Rgba32ui = 30,
+        Rgba16ui = 31,
+        Rgba8ui = 32,
+        R32ui = 33,
+        Rgb10a2ui = 34,
+        Rg32ui = 35,
+        Rg16ui = 36,
+        Rg8ui = 37,
+        R16ui = 38,
+        R8ui = 39,
+    },
+
+    ImageChannelOrder = {
+        R = 0,
+        A = 1,
+        RG = 2,
+        RA = 3,
+        RGB = 4,
+        RGBA = 5,
+        BGRA = 6,
+        ARGB = 7,
+        Intensity = 8,
+        Luminance = 9,
+        Rx = 10,
+        RGx = 11,
+        RGBx = 12,
+        Depth = 13,
+        DepthStencil = 14,
+        sRGB = 15,
+        sRGBx = 16,
+        sRGBA = 17,
+        sBGRA = 18,
+        ABGR = 19,
+    },
+
+    ImageChannelDataType = {
+        SnormInt8 = 0,
+        SnormInt16 = 1,
+        UnormInt8 = 2,
+        UnormInt16 = 3,
+        UnormShort565 = 4,
+        UnormShort555 = 5,
+        UnormInt101010 = 6,
+        SignedInt8 = 7,
+        SignedInt16 = 8,
+        SignedInt32 = 9,
+        UnsignedInt8 = 10,
+        UnsignedInt16 = 11,
+        UnsignedInt32 = 12,
+        HalfFloat = 13,
+        Float = 14,
+        UnormInt24 = 15,
+        UnormInt101010_2 = 16,
+    },
+
+    ImageOperandsShift = {
+        Bias = 0,
+        Lod = 1,
+        Grad = 2,
+        ConstOffset = 3,
+        Offset = 4,
+        ConstOffsets = 5,
+        Sample = 6,
+        MinLod = 7,
+    },
+
+    ImageOperandsMask = {
+        MaskNone = 0,
+        Bias = 0x00000001,
+        Lod = 0x00000002,
+        Grad = 0x00000004,
+        ConstOffset = 0x00000008,
+        Offset = 0x00000010,
+        ConstOffsets = 0x00000020,
+        Sample = 0x00000040,
+        MinLod = 0x00000080,
+    },
+
+    FPFastMathModeShift = {
+        NotNaN = 0,
+        NotInf = 1,
+        NSZ = 2,
+        AllowRecip = 3,
+        Fast = 4,
+    },
+
+    FPFastMathModeMask = {
+        MaskNone = 0,
+        NotNaN = 0x00000001,
+        NotInf = 0x00000002,
+        NSZ = 0x00000004,
+        AllowRecip = 0x00000008,
+        Fast = 0x00000010,
+    },
+
+    FPRoundingMode = {
+        RTE = 0,
+        RTZ = 1,
+        RTP = 2,
+        RTN = 3,
+    },
+
+    LinkageType = {
+        Export = 0,
+        Import = 1,
+    },
+
+    AccessQualifier = {
+        ReadOnly = 0,
+        WriteOnly = 1,
+        ReadWrite = 2,
+    },
+
+    FunctionParameterAttribute = {
+        Zext = 0,
+        Sext = 1,
+        ByVal = 2,
+        Sret = 3,
+        NoAlias = 4,
+        NoCapture = 5,
+        NoWrite = 6,
+        NoReadWrite = 7,
+    },
+
+    Decoration = {
+        RelaxedPrecision = 0,
+        SpecId = 1,
+        Block = 2,
+        BufferBlock = 3,
+        RowMajor = 4,
+        ColMajor = 5,
+        ArrayStride = 6,
+        MatrixStride = 7,
+        GLSLShared = 8,
+        GLSLPacked = 9,
+        CPacked = 10,
+        BuiltIn = 11,
+        NoPerspective = 13,
+        Flat = 14,
+        Patch = 15,
+        Centroid = 16,
+        Sample = 17,
+        Invariant = 18,
+        Restrict = 19,
+        Aliased = 20,
+        Volatile = 21,
+        Constant = 22,
+        Coherent = 23,
+        NonWritable = 24,
+        NonReadable = 25,
+        Uniform = 26,
+        SaturatedConversion = 28,
+        Stream = 29,
+        Location = 30,
+        Component = 31,
+        Index = 32,
+        Binding = 33,
+        DescriptorSet = 34,
+        Offset = 35,
+        XfbBuffer = 36,
+        XfbStride = 37,
+        FuncParamAttr = 38,
+        FPRoundingMode = 39,
+        FPFastMathMode = 40,
+        LinkageAttributes = 41,
+        NoContraction = 42,
+        InputAttachmentIndex = 43,
+        Alignment = 44,
+        MaxByteOffset = 45,
+        ExplicitInterpAMD = 4999,
+        OverrideCoverageNV = 5248,
+        PassthroughNV = 5250,
+        ViewportRelativeNV = 5252,
+        SecondaryViewportRelativeNV = 5256,
+        HlslCounterBufferGOOGLE = 5634,
+        HlslSemanticGOOGLE = 5635,
+    },
+
+    BuiltIn = {
+        Position = 0,
+        PointSize = 1,
+        ClipDistance = 3,
+        CullDistance = 4,
+        VertexId = 5,
+        InstanceId = 6,
+        PrimitiveId = 7,
+        InvocationId = 8,
+        Layer = 9,
+        ViewportIndex = 10,
+        TessLevelOuter = 11,
+        TessLevelInner = 12,
+        TessCoord = 13,
+        PatchVertices = 14,
+        FragCoord = 15,
+        PointCoord = 16,
+        FrontFacing = 17,
+        SampleId = 18,
+        SamplePosition = 19,
+        SampleMask = 20,
+        FragDepth = 22,
+        HelperInvocation = 23,
+        NumWorkgroups = 24,
+        WorkgroupSize = 25,
+        WorkgroupId = 26,
+        LocalInvocationId = 27,
+        GlobalInvocationId = 28,
+        LocalInvocationIndex = 29,
+        WorkDim = 30,
+        GlobalSize = 31,
+        EnqueuedWorkgroupSize = 32,
+        GlobalOffset = 33,
+        GlobalLinearId = 34,
+        SubgroupSize = 36,
+        SubgroupMaxSize = 37,
+        NumSubgroups = 38,
+        NumEnqueuedSubgroups = 39,
+        SubgroupId = 40,
+        SubgroupLocalInvocationId = 41,
+        VertexIndex = 42,
+        InstanceIndex = 43,
+        SubgroupEqMaskKHR = 4416,
+        SubgroupGeMaskKHR = 4417,
+        SubgroupGtMaskKHR = 4418,
+        SubgroupLeMaskKHR = 4419,
+        SubgroupLtMaskKHR = 4420,
+        BaseVertex = 4424,
+        BaseInstance = 4425,
+        DrawIndex = 4426,
+        DeviceIndex = 4438,
+        ViewIndex = 4440,
+        BaryCoordNoPerspAMD = 4992,
+        BaryCoordNoPerspCentroidAMD = 4993,
+        BaryCoordNoPerspSampleAMD = 4994,
+        BaryCoordSmoothAMD = 4995,
+        BaryCoordSmoothCentroidAMD = 4996,
+        BaryCoordSmoothSampleAMD = 4997,
+        BaryCoordPullModelAMD = 4998,
+        FragStencilRefEXT = 5014,
+        ViewportMaskNV = 5253,
+        SecondaryPositionNV = 5257,
+        SecondaryViewportMaskNV = 5258,
+        PositionPerViewNV = 5261,
+        ViewportMaskPerViewNV = 5262,
+    },
+
+    SelectionControlShift = {
+        Flatten = 0,
+        DontFlatten = 1,
+    },
+
+    SelectionControlMask = {
+        MaskNone = 0,
+        Flatten = 0x00000001,
+        DontFlatten = 0x00000002,
+    },
+
+    LoopControlShift = {
+        Unroll = 0,
+        DontUnroll = 1,
+        DependencyInfinite = 2,
+        DependencyLength = 3,
+    },
+
+    LoopControlMask = {
+        MaskNone = 0,
+        Unroll = 0x00000001,
+        DontUnroll = 0x00000002,
+        DependencyInfinite = 0x00000004,
+        DependencyLength = 0x00000008,
+    },
+
+    FunctionControlShift = {
+        Inline = 0,
+        DontInline = 1,
+        Pure = 2,
+        Const = 3,
+    },
+
+    FunctionControlMask = {
+        MaskNone = 0,
+        Inline = 0x00000001,
+        DontInline = 0x00000002,
+        Pure = 0x00000004,
+        Const = 0x00000008,
+    },
+
+    MemorySemanticsShift = {
+        Acquire = 1,
+        Release = 2,
+        AcquireRelease = 3,
+        SequentiallyConsistent = 4,
+        UniformMemory = 6,
+        SubgroupMemory = 7,
+        WorkgroupMemory = 8,
+        CrossWorkgroupMemory = 9,
+        AtomicCounterMemory = 10,
+        ImageMemory = 11,
+    },
+
+    MemorySemanticsMask = {
+        MaskNone = 0,
+        Acquire = 0x00000002,
+        Release = 0x00000004,
+        AcquireRelease = 0x00000008,
+        SequentiallyConsistent = 0x00000010,
+        UniformMemory = 0x00000040,
+        SubgroupMemory = 0x00000080,
+        WorkgroupMemory = 0x00000100,
+        CrossWorkgroupMemory = 0x00000200,
+        AtomicCounterMemory = 0x00000400,
+        ImageMemory = 0x00000800,
+    },
+
+    MemoryAccessShift = {
+        Volatile = 0,
+        Aligned = 1,
+        Nontemporal = 2,
+    },
+
+    MemoryAccessMask = {
+        MaskNone = 0,
+        Volatile = 0x00000001,
+        Aligned = 0x00000002,
+        Nontemporal = 0x00000004,
+    },
+
+    Scope = {
+        CrossDevice = 0,
+        Device = 1,
+        Workgroup = 2,
+        Subgroup = 3,
+        Invocation = 4,
+    },
+
+    GroupOperation = {
+        Reduce = 0,
+        InclusiveScan = 1,
+        ExclusiveScan = 2,
+    },
+
+    KernelEnqueueFlags = {
+        NoWait = 0,
+        WaitKernel = 1,
+        WaitWorkGroup = 2,
+    },
+
+    KernelProfilingInfoShift = {
+        CmdExecTime = 0,
+    },
+
+    KernelProfilingInfoMask = {
+        MaskNone = 0,
+        CmdExecTime = 0x00000001,
+    },
+
+    Capability = {
+        Matrix = 0,
+        Shader = 1,
+        Geometry = 2,
+        Tessellation = 3,
+        Addresses = 4,
+        Linkage = 5,
+        Kernel = 6,
+        Vector16 = 7,
+        Float16Buffer = 8,
+        Float16 = 9,
+        Float64 = 10,
+        Int64 = 11,
+        Int64Atomics = 12,
+        ImageBasic = 13,
+        ImageReadWrite = 14,
+        ImageMipmap = 15,
+        Pipes = 17,
+        Groups = 18,
+        DeviceEnqueue = 19,
+        LiteralSampler = 20,
+        AtomicStorage = 21,
+        Int16 = 22,
+        TessellationPointSize = 23,
+        GeometryPointSize = 24,
+        ImageGatherExtended = 25,
+        StorageImageMultisample = 27,
+        UniformBufferArrayDynamicIndexing = 28,
+        SampledImageArrayDynamicIndexing = 29,
+        StorageBufferArrayDynamicIndexing = 30,
+        StorageImageArrayDynamicIndexing = 31,
+        ClipDistance = 32,
+        CullDistance = 33,
+        ImageCubeArray = 34,
+        SampleRateShading = 35,
+        ImageRect = 36,
+        SampledRect = 37,
+        GenericPointer = 38,
+        Int8 = 39,
+        InputAttachment = 40,
+        SparseResidency = 41,
+        MinLod = 42,
+        Sampled1D = 43,
+        Image1D = 44,
+        SampledCubeArray = 45,
+        SampledBuffer = 46,
+        ImageBuffer = 47,
+        ImageMSArray = 48,
+        StorageImageExtendedFormats = 49,
+        ImageQuery = 50,
+        DerivativeControl = 51,
+        InterpolationFunction = 52,
+        TransformFeedback = 53,
+        GeometryStreams = 54,
+        StorageImageReadWithoutFormat = 55,
+        StorageImageWriteWithoutFormat = 56,
+        MultiViewport = 57,
+        SubgroupDispatch = 58,
+        NamedBarrier = 59,
+        PipeStorage = 60,
+        SubgroupBallotKHR = 4423,
+        DrawParameters = 4427,
+        SubgroupVoteKHR = 4431,
+        StorageBuffer16BitAccess = 4433,
+        StorageUniformBufferBlock16 = 4433,
+        StorageUniform16 = 4434,
+        UniformAndStorageBuffer16BitAccess = 4434,
+        StoragePushConstant16 = 4435,
+        StorageInputOutput16 = 4436,
+        DeviceGroup = 4437,
+        MultiView = 4439,
+        VariablePointersStorageBuffer = 4441,
+        VariablePointers = 4442,
+        AtomicStorageOps = 4445,
+        SampleMaskPostDepthCoverage = 4447,
+        ImageGatherBiasLodAMD = 5009,
+        FragmentMaskAMD = 5010,
+        StencilExportEXT = 5013,
+        ImageReadWriteLodAMD = 5015,
+        SampleMaskOverrideCoverageNV = 5249,
+        GeometryShaderPassthroughNV = 5251,
+        ShaderViewportIndexLayerEXT = 5254,
+        ShaderViewportIndexLayerNV = 5254,
+        ShaderViewportMaskNV = 5255,
+        ShaderStereoViewNV = 5259,
+        PerViewAttributesNV = 5260,
+        SubgroupShuffleINTEL = 5568,
+        SubgroupBufferBlockIOINTEL = 5569,
+        SubgroupImageBlockIOINTEL = 5570,
+    },
+
+    Op = {
+        OpNop = 0,
+        OpUndef = 1,
+        OpSourceContinued = 2,
+        OpSource = 3,
+        OpSourceExtension = 4,
+        OpName = 5,
+        OpMemberName = 6,
+        OpString = 7,
+        OpLine = 8,
+        OpExtension = 10,
+        OpExtInstImport = 11,
+        OpExtInst = 12,
+        OpMemoryModel = 14,
+        OpEntryPoint = 15,
+        OpExecutionMode = 16,
+        OpCapability = 17,
+        OpTypeVoid = 19,
+        OpTypeBool = 20,
+        OpTypeInt = 21,
+        OpTypeFloat = 22,
+        OpTypeVector = 23,
+        OpTypeMatrix = 24,
+        OpTypeImage = 25,
+        OpTypeSampler = 26,
+        OpTypeSampledImage = 27,
+        OpTypeArray = 28,
+        OpTypeRuntimeArray = 29,
+        OpTypeStruct = 30,
+        OpTypeOpaque = 31,
+        OpTypePointer = 32,
+        OpTypeFunction = 33,
+        OpTypeEvent = 34,
+        OpTypeDeviceEvent = 35,
+        OpTypeReserveId = 36,
+        OpTypeQueue = 37,
+        OpTypePipe = 38,
+        OpTypeForwardPointer = 39,
+        OpConstantTrue = 41,
+        OpConstantFalse = 42,
+        OpConstant = 43,
+        OpConstantComposite = 44,
+        OpConstantSampler = 45,
+        OpConstantNull = 46,
+        OpSpecConstantTrue = 48,
+        OpSpecConstantFalse = 49,
+        OpSpecConstant = 50,
+        OpSpecConstantComposite = 51,
+        OpSpecConstantOp = 52,
+        OpFunction = 54,
+        OpFunctionParameter = 55,
+        OpFunctionEnd = 56,
+        OpFunctionCall = 57,
+        OpVariable = 59,
+        OpImageTexelPointer = 60,
+        OpLoad = 61,
+        OpStore = 62,
+        OpCopyMemory = 63,
+        OpCopyMemorySized = 64,
+        OpAccessChain = 65,
+        OpInBoundsAccessChain = 66,
+        OpPtrAccessChain = 67,
+        OpArrayLength = 68,
+        OpGenericPtrMemSemantics = 69,
+        OpInBoundsPtrAccessChain = 70,
+        OpDecorate = 71,
+        OpMemberDecorate = 72,
+        OpDecorationGroup = 73,
+        OpGroupDecorate = 74,
+        OpGroupMemberDecorate = 75,
+        OpVectorExtractDynamic = 77,
+        OpVectorInsertDynamic = 78,
+        OpVectorShuffle = 79,
+        OpCompositeConstruct = 80,
+        OpCompositeExtract = 81,
+        OpCompositeInsert = 82,
+        OpCopyObject = 83,
+        OpTranspose = 84,
+        OpSampledImage = 86,
+        OpImageSampleImplicitLod = 87,
+        OpImageSampleExplicitLod = 88,
+        OpImageSampleDrefImplicitLod = 89,
+        OpImageSampleDrefExplicitLod = 90,
+        OpImageSampleProjImplicitLod = 91,
+        OpImageSampleProjExplicitLod = 92,
+        OpImageSampleProjDrefImplicitLod = 93,
+        OpImageSampleProjDrefExplicitLod = 94,
+        OpImageFetch = 95,
+        OpImageGather = 96,
+        OpImageDrefGather = 97,
+        OpImageRead = 98,
+        OpImageWrite = 99,
+        OpImage = 100,
+        OpImageQueryFormat = 101,
+        OpImageQueryOrder = 102,
+        OpImageQuerySizeLod = 103,
+        OpImageQuerySize = 104,
+        OpImageQueryLod = 105,
+        OpImageQueryLevels = 106,
+        OpImageQuerySamples = 107,
+        OpConvertFToU = 109,
+        OpConvertFToS = 110,
+        OpConvertSToF = 111,
+        OpConvertUToF = 112,
+        OpUConvert = 113,
+        OpSConvert = 114,
+        OpFConvert = 115,
+        OpQuantizeToF16 = 116,
+        OpConvertPtrToU = 117,
+        OpSatConvertSToU = 118,
+        OpSatConvertUToS = 119,
+        OpConvertUToPtr = 120,
+        OpPtrCastToGeneric = 121,
+        OpGenericCastToPtr = 122,
+        OpGenericCastToPtrExplicit = 123,
+        OpBitcast = 124,
+        OpSNegate = 126,
+        OpFNegate = 127,
+        OpIAdd = 128,
+        OpFAdd = 129,
+        OpISub = 130,
+        OpFSub = 131,
+        OpIMul = 132,
+        OpFMul = 133,
+        OpUDiv = 134,
+        OpSDiv = 135,
+        OpFDiv = 136,
+        OpUMod = 137,
+        OpSRem = 138,
+        OpSMod = 139,
+        OpFRem = 140,
+        OpFMod = 141,
+        OpVectorTimesScalar = 142,
+        OpMatrixTimesScalar = 143,
+        OpVectorTimesMatrix = 144,
+        OpMatrixTimesVector = 145,
+        OpMatrixTimesMatrix = 146,
+        OpOuterProduct = 147,
+        OpDot = 148,
+        OpIAddCarry = 149,
+        OpISubBorrow = 150,
+        OpUMulExtended = 151,
+        OpSMulExtended = 152,
+        OpAny = 154,
+        OpAll = 155,
+        OpIsNan = 156,
+        OpIsInf = 157,
+        OpIsFinite = 158,
+        OpIsNormal = 159,
+        OpSignBitSet = 160,
+        OpLessOrGreater = 161,
+        OpOrdered = 162,
+        OpUnordered = 163,
+        OpLogicalEqual = 164,
+        OpLogicalNotEqual = 165,
+        OpLogicalOr = 166,
+        OpLogicalAnd = 167,
+        OpLogicalNot = 168,
+        OpSelect = 169,
+        OpIEqual = 170,
+        OpINotEqual = 171,
+        OpUGreaterThan = 172,
+        OpSGreaterThan = 173,
+        OpUGreaterThanEqual = 174,
+        OpSGreaterThanEqual = 175,
+        OpULessThan = 176,
+        OpSLessThan = 177,
+        OpULessThanEqual = 178,
+        OpSLessThanEqual = 179,
+        OpFOrdEqual = 180,
+        OpFUnordEqual = 181,
+        OpFOrdNotEqual = 182,
+        OpFUnordNotEqual = 183,
+        OpFOrdLessThan = 184,
+        OpFUnordLessThan = 185,
+        OpFOrdGreaterThan = 186,
+        OpFUnordGreaterThan = 187,
+        OpFOrdLessThanEqual = 188,
+        OpFUnordLessThanEqual = 189,
+        OpFOrdGreaterThanEqual = 190,
+        OpFUnordGreaterThanEqual = 191,
+        OpShiftRightLogical = 194,
+        OpShiftRightArithmetic = 195,
+        OpShiftLeftLogical = 196,
+        OpBitwiseOr = 197,
+        OpBitwiseXor = 198,
+        OpBitwiseAnd = 199,
+        OpNot = 200,
+        OpBitFieldInsert = 201,
+        OpBitFieldSExtract = 202,
+        OpBitFieldUExtract = 203,
+        OpBitReverse = 204,
+        OpBitCount = 205,
+        OpDPdx = 207,
+        OpDPdy = 208,
+        OpFwidth = 209,
+        OpDPdxFine = 210,
+        OpDPdyFine = 211,
+        OpFwidthFine = 212,
+        OpDPdxCoarse = 213,
+        OpDPdyCoarse = 214,
+        OpFwidthCoarse = 215,
+        OpEmitVertex = 218,
+        OpEndPrimitive = 219,
+        OpEmitStreamVertex = 220,
+        OpEndStreamPrimitive = 221,
+        OpControlBarrier = 224,
+        OpMemoryBarrier = 225,
+        OpAtomicLoad = 227,
+        OpAtomicStore = 228,
+        OpAtomicExchange = 229,
+        OpAtomicCompareExchange = 230,
+        OpAtomicCompareExchangeWeak = 231,
+        OpAtomicIIncrement = 232,
+        OpAtomicIDecrement = 233,
+        OpAtomicIAdd = 234,
+        OpAtomicISub = 235,
+        OpAtomicSMin = 236,
+        OpAtomicUMin = 237,
+        OpAtomicSMax = 238,
+        OpAtomicUMax = 239,
+        OpAtomicAnd = 240,
+        OpAtomicOr = 241,
+        OpAtomicXor = 242,
+        OpPhi = 245,
+        OpLoopMerge = 246,
+        OpSelectionMerge = 247,
+        OpLabel = 248,
+        OpBranch = 249,
+        OpBranchConditional = 250,
+        OpSwitch = 251,
+        OpKill = 252,
+        OpReturn = 253,
+        OpReturnValue = 254,
+        OpUnreachable = 255,
+        OpLifetimeStart = 256,
+        OpLifetimeStop = 257,
+        OpGroupAsyncCopy = 259,
+        OpGroupWaitEvents = 260,
+        OpGroupAll = 261,
+        OpGroupAny = 262,
+        OpGroupBroadcast = 263,
+        OpGroupIAdd = 264,
+        OpGroupFAdd = 265,
+        OpGroupFMin = 266,
+        OpGroupUMin = 267,
+        OpGroupSMin = 268,
+        OpGroupFMax = 269,
+        OpGroupUMax = 270,
+        OpGroupSMax = 271,
+        OpReadPipe = 274,
+        OpWritePipe = 275,
+        OpReservedReadPipe = 276,
+        OpReservedWritePipe = 277,
+        OpReserveReadPipePackets = 278,
+        OpReserveWritePipePackets = 279,
+        OpCommitReadPipe = 280,
+        OpCommitWritePipe = 281,
+        OpIsValidReserveId = 282,
+        OpGetNumPipePackets = 283,
+        OpGetMaxPipePackets = 284,
+        OpGroupReserveReadPipePackets = 285,
+        OpGroupReserveWritePipePackets = 286,
+        OpGroupCommitReadPipe = 287,
+        OpGroupCommitWritePipe = 288,
+        OpEnqueueMarker = 291,
+        OpEnqueueKernel = 292,
+        OpGetKernelNDrangeSubGroupCount = 293,
+        OpGetKernelNDrangeMaxSubGroupSize = 294,
+        OpGetKernelWorkGroupSize = 295,
+        OpGetKernelPreferredWorkGroupSizeMultiple = 296,
+        OpRetainEvent = 297,
+        OpReleaseEvent = 298,
+        OpCreateUserEvent = 299,
+        OpIsValidEvent = 300,
+        OpSetUserEventStatus = 301,
+        OpCaptureEventProfilingInfo = 302,
+        OpGetDefaultQueue = 303,
+        OpBuildNDRange = 304,
+        OpImageSparseSampleImplicitLod = 305,
+        OpImageSparseSampleExplicitLod = 306,
+        OpImageSparseSampleDrefImplicitLod = 307,
+        OpImageSparseSampleDrefExplicitLod = 308,
+        OpImageSparseSampleProjImplicitLod = 309,
+        OpImageSparseSampleProjExplicitLod = 310,
+        OpImageSparseSampleProjDrefImplicitLod = 311,
+        OpImageSparseSampleProjDrefExplicitLod = 312,
+        OpImageSparseFetch = 313,
+        OpImageSparseGather = 314,
+        OpImageSparseDrefGather = 315,
+        OpImageSparseTexelsResident = 316,
+        OpNoLine = 317,
+        OpAtomicFlagTestAndSet = 318,
+        OpAtomicFlagClear = 319,
+        OpImageSparseRead = 320,
+        OpSizeOf = 321,
+        OpTypePipeStorage = 322,
+        OpConstantPipeStorage = 323,
+        OpCreatePipeFromPipeStorage = 324,
+        OpGetKernelLocalSizeForSubgroupCount = 325,
+        OpGetKernelMaxNumSubgroups = 326,
+        OpTypeNamedBarrier = 327,
+        OpNamedBarrierInitialize = 328,
+        OpMemoryNamedBarrier = 329,
+        OpModuleProcessed = 330,
+        OpDecorateId = 332,
+        OpSubgroupBallotKHR = 4421,
+        OpSubgroupFirstInvocationKHR = 4422,
+        OpSubgroupAllKHR = 4428,
+        OpSubgroupAnyKHR = 4429,
+        OpSubgroupAllEqualKHR = 4430,
+        OpSubgroupReadInvocationKHR = 4432,
+        OpGroupIAddNonUniformAMD = 5000,
+        OpGroupFAddNonUniformAMD = 5001,
+        OpGroupFMinNonUniformAMD = 5002,
+        OpGroupUMinNonUniformAMD = 5003,
+        OpGroupSMinNonUniformAMD = 5004,
+        OpGroupFMaxNonUniformAMD = 5005,
+        OpGroupUMaxNonUniformAMD = 5006,
+        OpGroupSMaxNonUniformAMD = 5007,
+        OpFragmentMaskFetchAMD = 5011,
+        OpFragmentFetchAMD = 5012,
+        OpSubgroupShuffleINTEL = 5571,
+        OpSubgroupShuffleDownINTEL = 5572,
+        OpSubgroupShuffleUpINTEL = 5573,
+        OpSubgroupShuffleXorINTEL = 5574,
+        OpSubgroupBlockReadINTEL = 5575,
+        OpSubgroupBlockWriteINTEL = 5576,
+        OpSubgroupImageBlockReadINTEL = 5577,
+        OpSubgroupImageBlockWriteINTEL = 5578,
+        OpDecorateStringGOOGLE = 5632,
+        OpMemberDecorateStringGOOGLE = 5633,
+    },
+
+}
+
diff --git a/libs/spirv-headers/spirv/1.1/spirv.py b/libs/spirv-headers/spirv/1.1/spirv.py
new file mode 100644
index 00000000000..519a59710d1
--- /dev/null
+++ b/libs/spirv-headers/spirv/1.1/spirv.py
@@ -0,0 +1,971 @@
+# Copyright (c) 2014-2018 The Khronos Group Inc.
+# 
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and/or associated documentation files (the "Materials"),
+# to deal in the Materials without restriction, including without limitation
+# the rights to use, copy, modify, merge, publish, distribute, sublicense,
+# and/or sell copies of the Materials, and to permit persons to whom the
+# Materials are furnished to do so, subject to the following conditions:
+# 
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Materials.
+# 
+# MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS KHRONOS
+# STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS SPECIFICATIONS AND
+# HEADER INFORMATION ARE LOCATED AT https://www.khronos.org/registry/ 
+# 
+# THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+# FROM,OUT OF OR IN CONNECTION WITH THE MATERIALS OR THE USE OR OTHER DEALINGS
+# IN THE MATERIALS.
+
+# This header is automatically generated by the same tool that creates
+# the Binary Section of the SPIR-V specification.
+
+# Enumeration tokens for SPIR-V, in various styles:
+#   C, C++, C++11, JSON, Lua, Python
+# 
+# - C will have tokens with a "Spv" prefix, e.g.: SpvSourceLanguageGLSL
+# - C++ will have tokens in the "spv" name space, e.g.: spv::SourceLanguageGLSL
+# - C++11 will use enum classes in the spv namespace, e.g.: spv::SourceLanguage::GLSL
+# - Lua will use tables, e.g.: spv.SourceLanguage.GLSL
+# - Python will use dictionaries, e.g.: spv['SourceLanguage']['GLSL']
+# 
+# Some tokens act like mask values, which can be OR'd together,
+# while others are mutually exclusive.  The mask-like ones have
+# "Mask" in their name, and a parallel enum that has the shift
+# amount (1 << x) for each corresponding enumerant.
+
+spv = {
+    'MagicNumber' : 0x07230203,
+    'Version' : 0x00010100,
+    'Revision' : 8,
+    'OpCodeMask' : 0xffff,
+    'WordCountShift' : 16,
+
+    'SourceLanguage' : {
+        'Unknown' : 0,
+        'ESSL' : 1,
+        'GLSL' : 2,
+        'OpenCL_C' : 3,
+        'OpenCL_CPP' : 4,
+        'HLSL' : 5,
+    },
+
+    'ExecutionModel' : {
+        'Vertex' : 0,
+        'TessellationControl' : 1,
+        'TessellationEvaluation' : 2,
+        'Geometry' : 3,
+        'Fragment' : 4,
+        'GLCompute' : 5,
+        'Kernel' : 6,
+    },
+
+    'AddressingModel' : {
+        'Logical' : 0,
+        'Physical32' : 1,
+        'Physical64' : 2,
+    },
+
+    'MemoryModel' : {
+        'Simple' : 0,
+        'GLSL450' : 1,
+        'OpenCL' : 2,
+    },
+
+    'ExecutionMode' : {
+        'Invocations' : 0,
+        'SpacingEqual' : 1,
+        'SpacingFractionalEven' : 2,
+        'SpacingFractionalOdd' : 3,
+        'VertexOrderCw' : 4,
+        'VertexOrderCcw' : 5,
+        'PixelCenterInteger' : 6,
+        'OriginUpperLeft' : 7,
+        'OriginLowerLeft' : 8,
+        'EarlyFragmentTests' : 9,
+        'PointMode' : 10,
+        'Xfb' : 11,
+        'DepthReplacing' : 12,
+        'DepthGreater' : 14,
+        'DepthLess' : 15,
+        'DepthUnchanged' : 16,
+        'LocalSize' : 17,
+        'LocalSizeHint' : 18,
+        'InputPoints' : 19,
+        'InputLines' : 20,
+        'InputLinesAdjacency' : 21,
+        'Triangles' : 22,
+        'InputTrianglesAdjacency' : 23,
+        'Quads' : 24,
+        'Isolines' : 25,
+        'OutputVertices' : 26,
+        'OutputPoints' : 27,
+        'OutputLineStrip' : 28,
+        'OutputTriangleStrip' : 29,
+        'VecTypeHint' : 30,
+        'ContractionOff' : 31,
+        'Initializer' : 33,
+        'Finalizer' : 34,
+        'SubgroupSize' : 35,
+        'SubgroupsPerWorkgroup' : 36,
+        'PostDepthCoverage' : 4446,
+        'StencilRefReplacingEXT' : 5027,
+    },
+
+    'StorageClass' : {
+        'UniformConstant' : 0,
+        'Input' : 1,
+        'Uniform' : 2,
+        'Output' : 3,
+        'Workgroup' : 4,
+        'CrossWorkgroup' : 5,
+        'Private' : 6,
+        'Function' : 7,
+        'Generic' : 8,
+        'PushConstant' : 9,
+        'AtomicCounter' : 10,
+        'Image' : 11,
+        'StorageBuffer' : 12,
+    },
+
+    'Dim' : {
+        'Dim1D' : 0,
+        'Dim2D' : 1,
+        'Dim3D' : 2,
+        'Cube' : 3,
+        'Rect' : 4,
+        'Buffer' : 5,
+        'SubpassData' : 6,
+    },
+
+    'SamplerAddressingMode' : {
+        'None' : 0,
+        'ClampToEdge' : 1,
+        'Clamp' : 2,
+        'Repeat' : 3,
+        'RepeatMirrored' : 4,
+    },
+
+    'SamplerFilterMode' : {
+        'Nearest' : 0,
+        'Linear' : 1,
+    },
+
+    'ImageFormat' : {
+        'Unknown' : 0,
+        'Rgba32f' : 1,
+        'Rgba16f' : 2,
+        'R32f' : 3,
+        'Rgba8' : 4,
+        'Rgba8Snorm' : 5,
+        'Rg32f' : 6,
+        'Rg16f' : 7,
+        'R11fG11fB10f' : 8,
+        'R16f' : 9,
+        'Rgba16' : 10,
+        'Rgb10A2' : 11,
+        'Rg16' : 12,
+        'Rg8' : 13,
+        'R16' : 14,
+        'R8' : 15,
+        'Rgba16Snorm' : 16,
+        'Rg16Snorm' : 17,
+        'Rg8Snorm' : 18,
+        'R16Snorm' : 19,
+        'R8Snorm' : 20,
+        'Rgba32i' : 21,
+        'Rgba16i' : 22,
+        'Rgba8i' : 23,
+        'R32i' : 24,
+        'Rg32i' : 25,
+        'Rg16i' : 26,
+        'Rg8i' : 27,
+        'R16i' : 28,
+        'R8i' : 29,
+        'Rgba32ui' : 30,
+        'Rgba16ui' : 31,
+        'Rgba8ui' : 32,
+        'R32ui' : 33,
+        'Rgb10a2ui' : 34,
+        'Rg32ui' : 35,
+        'Rg16ui' : 36,
+        'Rg8ui' : 37,
+        'R16ui' : 38,
+        'R8ui' : 39,
+    },
+
+    'ImageChannelOrder' : {
+        'R' : 0,
+        'A' : 1,
+        'RG' : 2,
+        'RA' : 3,
+        'RGB' : 4,
+        'RGBA' : 5,
+        'BGRA' : 6,
+        'ARGB' : 7,
+        'Intensity' : 8,
+        'Luminance' : 9,
+        'Rx' : 10,
+        'RGx' : 11,
+        'RGBx' : 12,
+        'Depth' : 13,
+        'DepthStencil' : 14,
+        'sRGB' : 15,
+        'sRGBx' : 16,
+        'sRGBA' : 17,
+        'sBGRA' : 18,
+        'ABGR' : 19,
+    },
+
+    'ImageChannelDataType' : {
+        'SnormInt8' : 0,
+        'SnormInt16' : 1,
+        'UnormInt8' : 2,
+        'UnormInt16' : 3,
+        'UnormShort565' : 4,
+        'UnormShort555' : 5,
+        'UnormInt101010' : 6,
+        'SignedInt8' : 7,
+        'SignedInt16' : 8,
+        'SignedInt32' : 9,
+        'UnsignedInt8' : 10,
+        'UnsignedInt16' : 11,
+        'UnsignedInt32' : 12,
+        'HalfFloat' : 13,
+        'Float' : 14,
+        'UnormInt24' : 15,
+        'UnormInt101010_2' : 16,
+    },
+
+    'ImageOperandsShift' : {
+        'Bias' : 0,
+        'Lod' : 1,
+        'Grad' : 2,
+        'ConstOffset' : 3,
+        'Offset' : 4,
+        'ConstOffsets' : 5,
+        'Sample' : 6,
+        'MinLod' : 7,
+    },
+
+    'ImageOperandsMask' : {
+        'MaskNone' : 0,
+        'Bias' : 0x00000001,
+        'Lod' : 0x00000002,
+        'Grad' : 0x00000004,
+        'ConstOffset' : 0x00000008,
+        'Offset' : 0x00000010,
+        'ConstOffsets' : 0x00000020,
+        'Sample' : 0x00000040,
+        'MinLod' : 0x00000080,
+    },
+
+    'FPFastMathModeShift' : {
+        'NotNaN' : 0,
+        'NotInf' : 1,
+        'NSZ' : 2,
+        'AllowRecip' : 3,
+        'Fast' : 4,
+    },
+
+    'FPFastMathModeMask' : {
+        'MaskNone' : 0,
+        'NotNaN' : 0x00000001,
+        'NotInf' : 0x00000002,
+        'NSZ' : 0x00000004,
+        'AllowRecip' : 0x00000008,
+        'Fast' : 0x00000010,
+    },
+
+    'FPRoundingMode' : {
+        'RTE' : 0,
+        'RTZ' : 1,
+        'RTP' : 2,
+        'RTN' : 3,
+    },
+
+    'LinkageType' : {
+        'Export' : 0,
+        'Import' : 1,
+    },
+
+    'AccessQualifier' : {
+        'ReadOnly' : 0,
+        'WriteOnly' : 1,
+        'ReadWrite' : 2,
+    },
+
+    'FunctionParameterAttribute' : {
+        'Zext' : 0,
+        'Sext' : 1,
+        'ByVal' : 2,
+        'Sret' : 3,
+        'NoAlias' : 4,
+        'NoCapture' : 5,
+        'NoWrite' : 6,
+        'NoReadWrite' : 7,
+    },
+
+    'Decoration' : {
+        'RelaxedPrecision' : 0,
+        'SpecId' : 1,
+        'Block' : 2,
+        'BufferBlock' : 3,
+        'RowMajor' : 4,
+        'ColMajor' : 5,
+        'ArrayStride' : 6,
+        'MatrixStride' : 7,
+        'GLSLShared' : 8,
+        'GLSLPacked' : 9,
+        'CPacked' : 10,
+        'BuiltIn' : 11,
+        'NoPerspective' : 13,
+        'Flat' : 14,
+        'Patch' : 15,
+        'Centroid' : 16,
+        'Sample' : 17,
+        'Invariant' : 18,
+        'Restrict' : 19,
+        'Aliased' : 20,
+        'Volatile' : 21,
+        'Constant' : 22,
+        'Coherent' : 23,
+        'NonWritable' : 24,
+        'NonReadable' : 25,
+        'Uniform' : 26,
+        'SaturatedConversion' : 28,
+        'Stream' : 29,
+        'Location' : 30,
+        'Component' : 31,
+        'Index' : 32,
+        'Binding' : 33,
+        'DescriptorSet' : 34,
+        'Offset' : 35,
+        'XfbBuffer' : 36,
+        'XfbStride' : 37,
+        'FuncParamAttr' : 38,
+        'FPRoundingMode' : 39,
+        'FPFastMathMode' : 40,
+        'LinkageAttributes' : 41,
+        'NoContraction' : 42,
+        'InputAttachmentIndex' : 43,
+        'Alignment' : 44,
+        'MaxByteOffset' : 45,
+        'ExplicitInterpAMD' : 4999,
+        'OverrideCoverageNV' : 5248,
+        'PassthroughNV' : 5250,
+        'ViewportRelativeNV' : 5252,
+        'SecondaryViewportRelativeNV' : 5256,
+        'HlslCounterBufferGOOGLE' : 5634,
+        'HlslSemanticGOOGLE' : 5635,
+    },
+
+    'BuiltIn' : {
+        'Position' : 0,
+        'PointSize' : 1,
+        'ClipDistance' : 3,
+        'CullDistance' : 4,
+        'VertexId' : 5,
+        'InstanceId' : 6,
+        'PrimitiveId' : 7,
+        'InvocationId' : 8,
+        'Layer' : 9,
+        'ViewportIndex' : 10,
+        'TessLevelOuter' : 11,
+        'TessLevelInner' : 12,
+        'TessCoord' : 13,
+        'PatchVertices' : 14,
+        'FragCoord' : 15,
+        'PointCoord' : 16,
+        'FrontFacing' : 17,
+        'SampleId' : 18,
+        'SamplePosition' : 19,
+        'SampleMask' : 20,
+        'FragDepth' : 22,
+        'HelperInvocation' : 23,
+        'NumWorkgroups' : 24,
+        'WorkgroupSize' : 25,
+        'WorkgroupId' : 26,
+        'LocalInvocationId' : 27,
+        'GlobalInvocationId' : 28,
+        'LocalInvocationIndex' : 29,
+        'WorkDim' : 30,
+        'GlobalSize' : 31,
+        'EnqueuedWorkgroupSize' : 32,
+        'GlobalOffset' : 33,
+        'GlobalLinearId' : 34,
+        'SubgroupSize' : 36,
+        'SubgroupMaxSize' : 37,
+        'NumSubgroups' : 38,
+        'NumEnqueuedSubgroups' : 39,
+        'SubgroupId' : 40,
+        'SubgroupLocalInvocationId' : 41,
+        'VertexIndex' : 42,
+        'InstanceIndex' : 43,
+        'SubgroupEqMaskKHR' : 4416,
+        'SubgroupGeMaskKHR' : 4417,
+        'SubgroupGtMaskKHR' : 4418,
+        'SubgroupLeMaskKHR' : 4419,
+        'SubgroupLtMaskKHR' : 4420,
+        'BaseVertex' : 4424,
+        'BaseInstance' : 4425,
+        'DrawIndex' : 4426,
+        'DeviceIndex' : 4438,
+        'ViewIndex' : 4440,
+        'BaryCoordNoPerspAMD' : 4992,
+        'BaryCoordNoPerspCentroidAMD' : 4993,
+        'BaryCoordNoPerspSampleAMD' : 4994,
+        'BaryCoordSmoothAMD' : 4995,
+        'BaryCoordSmoothCentroidAMD' : 4996,
+        'BaryCoordSmoothSampleAMD' : 4997,
+        'BaryCoordPullModelAMD' : 4998,
+        'FragStencilRefEXT' : 5014,
+        'ViewportMaskNV' : 5253,
+        'SecondaryPositionNV' : 5257,
+        'SecondaryViewportMaskNV' : 5258,
+        'PositionPerViewNV' : 5261,
+        'ViewportMaskPerViewNV' : 5262,
+    },
+
+    'SelectionControlShift' : {
+        'Flatten' : 0,
+        'DontFlatten' : 1,
+    },
+
+    'SelectionControlMask' : {
+        'MaskNone' : 0,
+        'Flatten' : 0x00000001,
+        'DontFlatten' : 0x00000002,
+    },
+
+    'LoopControlShift' : {
+        'Unroll' : 0,
+        'DontUnroll' : 1,
+        'DependencyInfinite' : 2,
+        'DependencyLength' : 3,
+    },
+
+    'LoopControlMask' : {
+        'MaskNone' : 0,
+        'Unroll' : 0x00000001,
+        'DontUnroll' : 0x00000002,
+        'DependencyInfinite' : 0x00000004,
+        'DependencyLength' : 0x00000008,
+    },
+
+    'FunctionControlShift' : {
+        'Inline' : 0,
+        'DontInline' : 1,
+        'Pure' : 2,
+        'Const' : 3,
+    },
+
+    'FunctionControlMask' : {
+        'MaskNone' : 0,
+        'Inline' : 0x00000001,
+        'DontInline' : 0x00000002,
+        'Pure' : 0x00000004,
+        'Const' : 0x00000008,
+    },
+
+    'MemorySemanticsShift' : {
+        'Acquire' : 1,
+        'Release' : 2,
+        'AcquireRelease' : 3,
+        'SequentiallyConsistent' : 4,
+        'UniformMemory' : 6,
+        'SubgroupMemory' : 7,
+        'WorkgroupMemory' : 8,
+        'CrossWorkgroupMemory' : 9,
+        'AtomicCounterMemory' : 10,
+        'ImageMemory' : 11,
+    },
+
+    'MemorySemanticsMask' : {
+        'MaskNone' : 0,
+        'Acquire' : 0x00000002,
+        'Release' : 0x00000004,
+        'AcquireRelease' : 0x00000008,
+        'SequentiallyConsistent' : 0x00000010,
+        'UniformMemory' : 0x00000040,
+        'SubgroupMemory' : 0x00000080,
+        'WorkgroupMemory' : 0x00000100,
+        'CrossWorkgroupMemory' : 0x00000200,
+        'AtomicCounterMemory' : 0x00000400,
+        'ImageMemory' : 0x00000800,
+    },
+
+    'MemoryAccessShift' : {
+        'Volatile' : 0,
+        'Aligned' : 1,
+        'Nontemporal' : 2,
+    },
+
+    'MemoryAccessMask' : {
+        'MaskNone' : 0,
+        'Volatile' : 0x00000001,
+        'Aligned' : 0x00000002,
+        'Nontemporal' : 0x00000004,
+    },
+
+    'Scope' : {
+        'CrossDevice' : 0,
+        'Device' : 1,
+        'Workgroup' : 2,
+        'Subgroup' : 3,
+        'Invocation' : 4,
+    },
+
+    'GroupOperation' : {
+        'Reduce' : 0,
+        'InclusiveScan' : 1,
+        'ExclusiveScan' : 2,
+    },
+
+    'KernelEnqueueFlags' : {
+        'NoWait' : 0,
+        'WaitKernel' : 1,
+        'WaitWorkGroup' : 2,
+    },
+
+    'KernelProfilingInfoShift' : {
+        'CmdExecTime' : 0,
+    },
+
+    'KernelProfilingInfoMask' : {
+        'MaskNone' : 0,
+        'CmdExecTime' : 0x00000001,
+    },
+
+    'Capability' : {
+        'Matrix' : 0,
+        'Shader' : 1,
+        'Geometry' : 2,
+        'Tessellation' : 3,
+        'Addresses' : 4,
+        'Linkage' : 5,
+        'Kernel' : 6,
+        'Vector16' : 7,
+        'Float16Buffer' : 8,
+        'Float16' : 9,
+        'Float64' : 10,
+        'Int64' : 11,
+        'Int64Atomics' : 12,
+        'ImageBasic' : 13,
+        'ImageReadWrite' : 14,
+        'ImageMipmap' : 15,
+        'Pipes' : 17,
+        'Groups' : 18,
+        'DeviceEnqueue' : 19,
+        'LiteralSampler' : 20,
+        'AtomicStorage' : 21,
+        'Int16' : 22,
+        'TessellationPointSize' : 23,
+        'GeometryPointSize' : 24,
+        'ImageGatherExtended' : 25,
+        'StorageImageMultisample' : 27,
+        'UniformBufferArrayDynamicIndexing' : 28,
+        'SampledImageArrayDynamicIndexing' : 29,
+        'StorageBufferArrayDynamicIndexing' : 30,
+        'StorageImageArrayDynamicIndexing' : 31,
+        'ClipDistance' : 32,
+        'CullDistance' : 33,
+        'ImageCubeArray' : 34,
+        'SampleRateShading' : 35,
+        'ImageRect' : 36,
+        'SampledRect' : 37,
+        'GenericPointer' : 38,
+        'Int8' : 39,
+        'InputAttachment' : 40,
+        'SparseResidency' : 41,
+        'MinLod' : 42,
+        'Sampled1D' : 43,
+        'Image1D' : 44,
+        'SampledCubeArray' : 45,
+        'SampledBuffer' : 46,
+        'ImageBuffer' : 47,
+        'ImageMSArray' : 48,
+        'StorageImageExtendedFormats' : 49,
+        'ImageQuery' : 50,
+        'DerivativeControl' : 51,
+        'InterpolationFunction' : 52,
+        'TransformFeedback' : 53,
+        'GeometryStreams' : 54,
+        'StorageImageReadWithoutFormat' : 55,
+        'StorageImageWriteWithoutFormat' : 56,
+        'MultiViewport' : 57,
+        'SubgroupDispatch' : 58,
+        'NamedBarrier' : 59,
+        'PipeStorage' : 60,
+        'SubgroupBallotKHR' : 4423,
+        'DrawParameters' : 4427,
+        'SubgroupVoteKHR' : 4431,
+        'StorageBuffer16BitAccess' : 4433,
+        'StorageUniformBufferBlock16' : 4433,
+        'StorageUniform16' : 4434,
+        'UniformAndStorageBuffer16BitAccess' : 4434,
+        'StoragePushConstant16' : 4435,
+        'StorageInputOutput16' : 4436,
+        'DeviceGroup' : 4437,
+        'MultiView' : 4439,
+        'VariablePointersStorageBuffer' : 4441,
+        'VariablePointers' : 4442,
+        'AtomicStorageOps' : 4445,
+        'SampleMaskPostDepthCoverage' : 4447,
+        'ImageGatherBiasLodAMD' : 5009,
+        'FragmentMaskAMD' : 5010,
+        'StencilExportEXT' : 5013,
+        'ImageReadWriteLodAMD' : 5015,
+        'SampleMaskOverrideCoverageNV' : 5249,
+        'GeometryShaderPassthroughNV' : 5251,
+        'ShaderViewportIndexLayerEXT' : 5254,
+        'ShaderViewportIndexLayerNV' : 5254,
+        'ShaderViewportMaskNV' : 5255,
+        'ShaderStereoViewNV' : 5259,
+        'PerViewAttributesNV' : 5260,
+        'SubgroupShuffleINTEL' : 5568,
+        'SubgroupBufferBlockIOINTEL' : 5569,
+        'SubgroupImageBlockIOINTEL' : 5570,
+    },
+
+    'Op' : {
+        'OpNop' : 0,
+        'OpUndef' : 1,
+        'OpSourceContinued' : 2,
+        'OpSource' : 3,
+        'OpSourceExtension' : 4,
+        'OpName' : 5,
+        'OpMemberName' : 6,
+        'OpString' : 7,
+        'OpLine' : 8,
+        'OpExtension' : 10,
+        'OpExtInstImport' : 11,
+        'OpExtInst' : 12,
+        'OpMemoryModel' : 14,
+        'OpEntryPoint' : 15,
+        'OpExecutionMode' : 16,
+        'OpCapability' : 17,
+        'OpTypeVoid' : 19,
+        'OpTypeBool' : 20,
+        'OpTypeInt' : 21,
+        'OpTypeFloat' : 22,
+        'OpTypeVector' : 23,
+        'OpTypeMatrix' : 24,
+        'OpTypeImage' : 25,
+        'OpTypeSampler' : 26,
+        'OpTypeSampledImage' : 27,
+        'OpTypeArray' : 28,
+        'OpTypeRuntimeArray' : 29,
+        'OpTypeStruct' : 30,
+        'OpTypeOpaque' : 31,
+        'OpTypePointer' : 32,
+        'OpTypeFunction' : 33,
+        'OpTypeEvent' : 34,
+        'OpTypeDeviceEvent' : 35,
+        'OpTypeReserveId' : 36,
+        'OpTypeQueue' : 37,
+        'OpTypePipe' : 38,
+        'OpTypeForwardPointer' : 39,
+        'OpConstantTrue' : 41,
+        'OpConstantFalse' : 42,
+        'OpConstant' : 43,
+        'OpConstantComposite' : 44,
+        'OpConstantSampler' : 45,
+        'OpConstantNull' : 46,
+        'OpSpecConstantTrue' : 48,
+        'OpSpecConstantFalse' : 49,
+        'OpSpecConstant' : 50,
+        'OpSpecConstantComposite' : 51,
+        'OpSpecConstantOp' : 52,
+        'OpFunction' : 54,
+        'OpFunctionParameter' : 55,
+        'OpFunctionEnd' : 56,
+        'OpFunctionCall' : 57,
+        'OpVariable' : 59,
+        'OpImageTexelPointer' : 60,
+        'OpLoad' : 61,
+        'OpStore' : 62,
+        'OpCopyMemory' : 63,
+        'OpCopyMemorySized' : 64,
+        'OpAccessChain' : 65,
+        'OpInBoundsAccessChain' : 66,
+        'OpPtrAccessChain' : 67,
+        'OpArrayLength' : 68,
+        'OpGenericPtrMemSemantics' : 69,
+        'OpInBoundsPtrAccessChain' : 70,
+        'OpDecorate' : 71,
+        'OpMemberDecorate' : 72,
+        'OpDecorationGroup' : 73,
+        'OpGroupDecorate' : 74,
+        'OpGroupMemberDecorate' : 75,
+        'OpVectorExtractDynamic' : 77,
+        'OpVectorInsertDynamic' : 78,
+        'OpVectorShuffle' : 79,
+        'OpCompositeConstruct' : 80,
+        'OpCompositeExtract' : 81,
+        'OpCompositeInsert' : 82,
+        'OpCopyObject' : 83,
+        'OpTranspose' : 84,
+        'OpSampledImage' : 86,
+        'OpImageSampleImplicitLod' : 87,
+        'OpImageSampleExplicitLod' : 88,
+        'OpImageSampleDrefImplicitLod' : 89,
+        'OpImageSampleDrefExplicitLod' : 90,
+        'OpImageSampleProjImplicitLod' : 91,
+        'OpImageSampleProjExplicitLod' : 92,
+        'OpImageSampleProjDrefImplicitLod' : 93,
+        'OpImageSampleProjDrefExplicitLod' : 94,
+        'OpImageFetch' : 95,
+        'OpImageGather' : 96,
+        'OpImageDrefGather' : 97,
+        'OpImageRead' : 98,
+        'OpImageWrite' : 99,
+        'OpImage' : 100,
+        'OpImageQueryFormat' : 101,
+        'OpImageQueryOrder' : 102,
+        'OpImageQuerySizeLod' : 103,
+        'OpImageQuerySize' : 104,
+        'OpImageQueryLod' : 105,
+        'OpImageQueryLevels' : 106,
+        'OpImageQuerySamples' : 107,
+        'OpConvertFToU' : 109,
+        'OpConvertFToS' : 110,
+        'OpConvertSToF' : 111,
+        'OpConvertUToF' : 112,
+        'OpUConvert' : 113,
+        'OpSConvert' : 114,
+        'OpFConvert' : 115,
+        'OpQuantizeToF16' : 116,
+        'OpConvertPtrToU' : 117,
+        'OpSatConvertSToU' : 118,
+        'OpSatConvertUToS' : 119,
+        'OpConvertUToPtr' : 120,
+        'OpPtrCastToGeneric' : 121,
+        'OpGenericCastToPtr' : 122,
+        'OpGenericCastToPtrExplicit' : 123,
+        'OpBitcast' : 124,
+        'OpSNegate' : 126,
+        'OpFNegate' : 127,
+        'OpIAdd' : 128,
+        'OpFAdd' : 129,
+        'OpISub' : 130,
+        'OpFSub' : 131,
+        'OpIMul' : 132,
+        'OpFMul' : 133,
+        'OpUDiv' : 134,
+        'OpSDiv' : 135,
+        'OpFDiv' : 136,
+        'OpUMod' : 137,
+        'OpSRem' : 138,
+        'OpSMod' : 139,
+        'OpFRem' : 140,
+        'OpFMod' : 141,
+        'OpVectorTimesScalar' : 142,
+        'OpMatrixTimesScalar' : 143,
+        'OpVectorTimesMatrix' : 144,
+        'OpMatrixTimesVector' : 145,
+        'OpMatrixTimesMatrix' : 146,
+        'OpOuterProduct' : 147,
+        'OpDot' : 148,
+        'OpIAddCarry' : 149,
+        'OpISubBorrow' : 150,
+        'OpUMulExtended' : 151,
+        'OpSMulExtended' : 152,
+        'OpAny' : 154,
+        'OpAll' : 155,
+        'OpIsNan' : 156,
+        'OpIsInf' : 157,
+        'OpIsFinite' : 158,
+        'OpIsNormal' : 159,
+        'OpSignBitSet' : 160,
+        'OpLessOrGreater' : 161,
+        'OpOrdered' : 162,
+        'OpUnordered' : 163,
+        'OpLogicalEqual' : 164,
+        'OpLogicalNotEqual' : 165,
+        'OpLogicalOr' : 166,
+        'OpLogicalAnd' : 167,
+        'OpLogicalNot' : 168,
+        'OpSelect' : 169,
+        'OpIEqual' : 170,
+        'OpINotEqual' : 171,
+        'OpUGreaterThan' : 172,
+        'OpSGreaterThan' : 173,
+        'OpUGreaterThanEqual' : 174,
+        'OpSGreaterThanEqual' : 175,
+        'OpULessThan' : 176,
+        'OpSLessThan' : 177,
+        'OpULessThanEqual' : 178,
+        'OpSLessThanEqual' : 179,
+        'OpFOrdEqual' : 180,
+        'OpFUnordEqual' : 181,
+        'OpFOrdNotEqual' : 182,
+        'OpFUnordNotEqual' : 183,
+        'OpFOrdLessThan' : 184,
+        'OpFUnordLessThan' : 185,
+        'OpFOrdGreaterThan' : 186,
+        'OpFUnordGreaterThan' : 187,
+        'OpFOrdLessThanEqual' : 188,
+        'OpFUnordLessThanEqual' : 189,
+        'OpFOrdGreaterThanEqual' : 190,
+        'OpFUnordGreaterThanEqual' : 191,
+        'OpShiftRightLogical' : 194,
+        'OpShiftRightArithmetic' : 195,
+        'OpShiftLeftLogical' : 196,
+        'OpBitwiseOr' : 197,
+        'OpBitwiseXor' : 198,
+        'OpBitwiseAnd' : 199,
+        'OpNot' : 200,
+        'OpBitFieldInsert' : 201,
+        'OpBitFieldSExtract' : 202,
+        'OpBitFieldUExtract' : 203,
+        'OpBitReverse' : 204,
+        'OpBitCount' : 205,
+        'OpDPdx' : 207,
+        'OpDPdy' : 208,
+        'OpFwidth' : 209,
+        'OpDPdxFine' : 210,
+        'OpDPdyFine' : 211,
+        'OpFwidthFine' : 212,
+        'OpDPdxCoarse' : 213,
+        'OpDPdyCoarse' : 214,
+        'OpFwidthCoarse' : 215,
+        'OpEmitVertex' : 218,
+        'OpEndPrimitive' : 219,
+        'OpEmitStreamVertex' : 220,
+        'OpEndStreamPrimitive' : 221,
+        'OpControlBarrier' : 224,
+        'OpMemoryBarrier' : 225,
+        'OpAtomicLoad' : 227,
+        'OpAtomicStore' : 228,
+        'OpAtomicExchange' : 229,
+        'OpAtomicCompareExchange' : 230,
+        'OpAtomicCompareExchangeWeak' : 231,
+        'OpAtomicIIncrement' : 232,
+        'OpAtomicIDecrement' : 233,
+        'OpAtomicIAdd' : 234,
+        'OpAtomicISub' : 235,
+        'OpAtomicSMin' : 236,
+        'OpAtomicUMin' : 237,
+        'OpAtomicSMax' : 238,
+        'OpAtomicUMax' : 239,
+        'OpAtomicAnd' : 240,
+        'OpAtomicOr' : 241,
+        'OpAtomicXor' : 242,
+        'OpPhi' : 245,
+        'OpLoopMerge' : 246,
+        'OpSelectionMerge' : 247,
+        'OpLabel' : 248,
+        'OpBranch' : 249,
+        'OpBranchConditional' : 250,
+        'OpSwitch' : 251,
+        'OpKill' : 252,
+        'OpReturn' : 253,
+        'OpReturnValue' : 254,
+        'OpUnreachable' : 255,
+        'OpLifetimeStart' : 256,
+        'OpLifetimeStop' : 257,
+        'OpGroupAsyncCopy' : 259,
+        'OpGroupWaitEvents' : 260,
+        'OpGroupAll' : 261,
+        'OpGroupAny' : 262,
+        'OpGroupBroadcast' : 263,
+        'OpGroupIAdd' : 264,
+        'OpGroupFAdd' : 265,
+        'OpGroupFMin' : 266,
+        'OpGroupUMin' : 267,
+        'OpGroupSMin' : 268,
+        'OpGroupFMax' : 269,
+        'OpGroupUMax' : 270,
+        'OpGroupSMax' : 271,
+        'OpReadPipe' : 274,
+        'OpWritePipe' : 275,
+        'OpReservedReadPipe' : 276,
+        'OpReservedWritePipe' : 277,
+        'OpReserveReadPipePackets' : 278,
+        'OpReserveWritePipePackets' : 279,
+        'OpCommitReadPipe' : 280,
+        'OpCommitWritePipe' : 281,
+        'OpIsValidReserveId' : 282,
+        'OpGetNumPipePackets' : 283,
+        'OpGetMaxPipePackets' : 284,
+        'OpGroupReserveReadPipePackets' : 285,
+        'OpGroupReserveWritePipePackets' : 286,
+        'OpGroupCommitReadPipe' : 287,
+        'OpGroupCommitWritePipe' : 288,
+        'OpEnqueueMarker' : 291,
+        'OpEnqueueKernel' : 292,
+        'OpGetKernelNDrangeSubGroupCount' : 293,
+        'OpGetKernelNDrangeMaxSubGroupSize' : 294,
+        'OpGetKernelWorkGroupSize' : 295,
+        'OpGetKernelPreferredWorkGroupSizeMultiple' : 296,
+        'OpRetainEvent' : 297,
+        'OpReleaseEvent' : 298,
+        'OpCreateUserEvent' : 299,
+        'OpIsValidEvent' : 300,
+        'OpSetUserEventStatus' : 301,
+        'OpCaptureEventProfilingInfo' : 302,
+        'OpGetDefaultQueue' : 303,
+        'OpBuildNDRange' : 304,
+        'OpImageSparseSampleImplicitLod' : 305,
+        'OpImageSparseSampleExplicitLod' : 306,
+        'OpImageSparseSampleDrefImplicitLod' : 307,
+        'OpImageSparseSampleDrefExplicitLod' : 308,
+        'OpImageSparseSampleProjImplicitLod' : 309,
+        'OpImageSparseSampleProjExplicitLod' : 310,
+        'OpImageSparseSampleProjDrefImplicitLod' : 311,
+        'OpImageSparseSampleProjDrefExplicitLod' : 312,
+        'OpImageSparseFetch' : 313,
+        'OpImageSparseGather' : 314,
+        'OpImageSparseDrefGather' : 315,
+        'OpImageSparseTexelsResident' : 316,
+        'OpNoLine' : 317,
+        'OpAtomicFlagTestAndSet' : 318,
+        'OpAtomicFlagClear' : 319,
+        'OpImageSparseRead' : 320,
+        'OpSizeOf' : 321,
+        'OpTypePipeStorage' : 322,
+        'OpConstantPipeStorage' : 323,
+        'OpCreatePipeFromPipeStorage' : 324,
+        'OpGetKernelLocalSizeForSubgroupCount' : 325,
+        'OpGetKernelMaxNumSubgroups' : 326,
+        'OpTypeNamedBarrier' : 327,
+        'OpNamedBarrierInitialize' : 328,
+        'OpMemoryNamedBarrier' : 329,
+        'OpModuleProcessed' : 330,
+        'OpDecorateId' : 332,
+        'OpSubgroupBallotKHR' : 4421,
+        'OpSubgroupFirstInvocationKHR' : 4422,
+        'OpSubgroupAllKHR' : 4428,
+        'OpSubgroupAnyKHR' : 4429,
+        'OpSubgroupAllEqualKHR' : 4430,
+        'OpSubgroupReadInvocationKHR' : 4432,
+        'OpGroupIAddNonUniformAMD' : 5000,
+        'OpGroupFAddNonUniformAMD' : 5001,
+        'OpGroupFMinNonUniformAMD' : 5002,
+        'OpGroupUMinNonUniformAMD' : 5003,
+        'OpGroupSMinNonUniformAMD' : 5004,
+        'OpGroupFMaxNonUniformAMD' : 5005,
+        'OpGroupUMaxNonUniformAMD' : 5006,
+        'OpGroupSMaxNonUniformAMD' : 5007,
+        'OpFragmentMaskFetchAMD' : 5011,
+        'OpFragmentFetchAMD' : 5012,
+        'OpSubgroupShuffleINTEL' : 5571,
+        'OpSubgroupShuffleDownINTEL' : 5572,
+        'OpSubgroupShuffleUpINTEL' : 5573,
+        'OpSubgroupShuffleXorINTEL' : 5574,
+        'OpSubgroupBlockReadINTEL' : 5575,
+        'OpSubgroupBlockWriteINTEL' : 5576,
+        'OpSubgroupImageBlockReadINTEL' : 5577,
+        'OpSubgroupImageBlockWriteINTEL' : 5578,
+        'OpDecorateStringGOOGLE' : 5632,
+        'OpMemberDecorateStringGOOGLE' : 5633,
+    },
+
+}
+
diff --git a/libs/spirv-headers/spirv/1.2/GLSL.std.450.h b/libs/spirv-headers/spirv/1.2/GLSL.std.450.h
new file mode 100644
index 00000000000..54cc00e9a88
--- /dev/null
+++ b/libs/spirv-headers/spirv/1.2/GLSL.std.450.h
@@ -0,0 +1,131 @@
+/*
+** Copyright (c) 2014-2016 The Khronos Group Inc.
+**
+** Permission is hereby granted, free of charge, to any person obtaining a copy
+** of this software and/or associated documentation files (the "Materials"),
+** to deal in the Materials without restriction, including without limitation
+** the rights to use, copy, modify, merge, publish, distribute, sublicense,
+** and/or sell copies of the Materials, and to permit persons to whom the
+** Materials are furnished to do so, subject to the following conditions:
+**
+** The above copyright notice and this permission notice shall be included in
+** all copies or substantial portions of the Materials.
+**
+** MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS KHRONOS
+** STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS SPECIFICATIONS AND
+** HEADER INFORMATION ARE LOCATED AT https://www.khronos.org/registry/ 
+**
+** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+** OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+** FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+** THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+** LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+** FROM,OUT OF OR IN CONNECTION WITH THE MATERIALS OR THE USE OR OTHER DEALINGS
+** IN THE MATERIALS.
+*/
+
+#ifndef GLSLstd450_H
+#define GLSLstd450_H
+
+static const int GLSLstd450Version = 100;
+static const int GLSLstd450Revision = 3;
+
+enum GLSLstd450 {
+    GLSLstd450Bad = 0,              // Don't use
+
+    GLSLstd450Round = 1,
+    GLSLstd450RoundEven = 2,
+    GLSLstd450Trunc = 3,
+    GLSLstd450FAbs = 4,
+    GLSLstd450SAbs = 5,
+    GLSLstd450FSign = 6,
+    GLSLstd450SSign = 7,
+    GLSLstd450Floor = 8,
+    GLSLstd450Ceil = 9,
+    GLSLstd450Fract = 10,
+
+    GLSLstd450Radians = 11,
+    GLSLstd450Degrees = 12,
+    GLSLstd450Sin = 13,
+    GLSLstd450Cos = 14,
+    GLSLstd450Tan = 15,
+    GLSLstd450Asin = 16,
+    GLSLstd450Acos = 17,
+    GLSLstd450Atan = 18,
+    GLSLstd450Sinh = 19,
+    GLSLstd450Cosh = 20,
+    GLSLstd450Tanh = 21,
+    GLSLstd450Asinh = 22,
+    GLSLstd450Acosh = 23,
+    GLSLstd450Atanh = 24,
+    GLSLstd450Atan2 = 25,
+
+    GLSLstd450Pow = 26,
+    GLSLstd450Exp = 27,
+    GLSLstd450Log = 28,
+    GLSLstd450Exp2 = 29,
+    GLSLstd450Log2 = 30,
+    GLSLstd450Sqrt = 31,
+    GLSLstd450InverseSqrt = 32,
+
+    GLSLstd450Determinant = 33,
+    GLSLstd450MatrixInverse = 34,
+
+    GLSLstd450Modf = 35,            // second operand needs an OpVariable to write to
+    GLSLstd450ModfStruct = 36,      // no OpVariable operand
+    GLSLstd450FMin = 37,
+    GLSLstd450UMin = 38,
+    GLSLstd450SMin = 39,
+    GLSLstd450FMax = 40,
+    GLSLstd450UMax = 41,
+    GLSLstd450SMax = 42,
+    GLSLstd450FClamp = 43,
+    GLSLstd450UClamp = 44,
+    GLSLstd450SClamp = 45,
+    GLSLstd450FMix = 46,
+    GLSLstd450IMix = 47,            // Reserved
+    GLSLstd450Step = 48,
+    GLSLstd450SmoothStep = 49,
+
+    GLSLstd450Fma = 50,
+    GLSLstd450Frexp = 51,            // second operand needs an OpVariable to write to
+    GLSLstd450FrexpStruct = 52,      // no OpVariable operand
+    GLSLstd450Ldexp = 53,
+
+    GLSLstd450PackSnorm4x8 = 54,
+    GLSLstd450PackUnorm4x8 = 55,
+    GLSLstd450PackSnorm2x16 = 56,
+    GLSLstd450PackUnorm2x16 = 57,
+    GLSLstd450PackHalf2x16 = 58,
+    GLSLstd450PackDouble2x32 = 59,
+    GLSLstd450UnpackSnorm2x16 = 60,
+    GLSLstd450UnpackUnorm2x16 = 61,
+    GLSLstd450UnpackHalf2x16 = 62,
+    GLSLstd450UnpackSnorm4x8 = 63,
+    GLSLstd450UnpackUnorm4x8 = 64,
+    GLSLstd450UnpackDouble2x32 = 65,
+
+    GLSLstd450Length = 66,
+    GLSLstd450Distance = 67,
+    GLSLstd450Cross = 68,
+    GLSLstd450Normalize = 69,
+    GLSLstd450FaceForward = 70,
+    GLSLstd450Reflect = 71,
+    GLSLstd450Refract = 72,
+
+    GLSLstd450FindILsb = 73,
+    GLSLstd450FindSMsb = 74,
+    GLSLstd450FindUMsb = 75,
+
+    GLSLstd450InterpolateAtCentroid = 76,
+    GLSLstd450InterpolateAtSample = 77,
+    GLSLstd450InterpolateAtOffset = 78,
+
+    GLSLstd450NMin = 79,
+    GLSLstd450NMax = 80,
+    GLSLstd450NClamp = 81,
+
+    GLSLstd450Count
+};
+
+#endif  // #ifndef GLSLstd450_H
diff --git a/libs/spirv-headers/spirv/1.2/OpenCL.std.h b/libs/spirv-headers/spirv/1.2/OpenCL.std.h
new file mode 100644
index 00000000000..19a6688490c
--- /dev/null
+++ b/libs/spirv-headers/spirv/1.2/OpenCL.std.h
@@ -0,0 +1,210 @@
+/*
+** Copyright (c) 2015-2017 The Khronos Group Inc.
+**
+** Permission is hereby granted, free of charge, to any person obtaining a copy
+** of this software and/or associated documentation files (the "Materials"),
+** to deal in the Materials without restriction, including without limitation
+** the rights to use, copy, modify, merge, publish, distribute, sublicense,
+** and/or sell copies of the Materials, and to permit persons to whom the
+** Materials are furnished to do so, subject to the following conditions:
+**
+** The above copyright notice and this permission notice shall be included in
+** all copies or substantial portions of the Materials.
+**
+** MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS KHRONOS
+** STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS SPECIFICATIONS AND
+** HEADER INFORMATION ARE LOCATED AT https://www.khronos.org/registry/ 
+**
+** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+** OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+** FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+** THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+** LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+** FROM,OUT OF OR IN CONNECTION WITH THE MATERIALS OR THE USE OR OTHER DEALINGS
+** IN THE MATERIALS.
+*/
+
+namespace OpenCLLIB {
+
+enum Entrypoints {
+
+    // Section 2.1: Math extended instructions
+    Acos = 0,
+    Acosh = 1,
+    Acospi = 2,
+    Asin = 3,
+    Asinh = 4,
+    Asinpi = 5,
+    Atan = 6,
+    Atan2 = 7,
+    Atanh = 8,
+    Atanpi = 9,
+    Atan2pi = 10,
+    Cbrt = 11,
+    Ceil = 12,
+    Copysign = 13,
+    Cos = 14,
+    Cosh = 15,
+    Cospi = 16,
+    Erfc = 17,
+    Erf = 18,
+    Exp = 19,
+    Exp2 = 20,
+    Exp10 = 21,
+    Expm1 = 22,
+    Fabs = 23,
+    Fdim = 24,
+    Floor = 25,
+    Fma = 26,
+    Fmax = 27,
+    Fmin = 28,
+    Fmod = 29,
+    Fract = 30, 
+    Frexp = 31,
+    Hypot = 32,
+    Ilogb = 33,
+    Ldexp = 34,
+    Lgamma = 35,
+    Lgamma_r = 36,
+    Log = 37,
+    Log2 = 38,
+    Log10 = 39,
+    Log1p = 40,
+    Logb = 41,
+    Mad = 42,
+    Maxmag = 43,
+    Minmag = 44,
+    Modf = 45,
+    Nan = 46,
+    Nextafter = 47,
+    Pow = 48,
+    Pown = 49,
+    Powr = 50,
+    Remainder = 51,
+    Remquo = 52,
+    Rint = 53,
+    Rootn = 54,
+    Round = 55,
+    Rsqrt = 56,
+    Sin = 57,
+    Sincos = 58,
+    Sinh = 59,
+    Sinpi = 60,
+    Sqrt = 61,
+    Tan = 62,
+    Tanh = 63,
+    Tanpi = 64,
+    Tgamma = 65,
+    Trunc = 66,
+    Half_cos = 67,
+    Half_divide = 68,
+    Half_exp = 69,
+    Half_exp2 = 70,
+    Half_exp10 = 71,
+    Half_log = 72,
+    Half_log2 = 73,
+    Half_log10 = 74,
+    Half_powr = 75,
+    Half_recip = 76,
+    Half_rsqrt = 77,
+    Half_sin = 78,
+    Half_sqrt = 79,
+    Half_tan = 80,
+    Native_cos = 81,
+    Native_divide = 82,
+    Native_exp = 83,
+    Native_exp2 = 84,
+    Native_exp10 = 85,
+    Native_log = 86,
+    Native_log2 = 87,
+    Native_log10 = 88,
+    Native_powr = 89,
+    Native_recip = 90,
+    Native_rsqrt = 91,
+    Native_sin = 92,
+    Native_sqrt = 93,
+    Native_tan = 94,
+    
+    // Section 2.2: Integer instructions
+    SAbs = 141,
+    SAbs_diff = 142,
+    SAdd_sat = 143,
+    UAdd_sat = 144,
+    SHadd = 145,
+    UHadd = 146,
+    SRhadd = 147,
+    URhadd = 148,
+    SClamp = 149,
+    UClamp = 150, 
+    Clz = 151,
+    Ctz = 152,    
+    SMad_hi = 153,
+    UMad_sat = 154,
+    SMad_sat = 155,
+    SMax = 156,
+    UMax = 157,
+    SMin = 158,
+    UMin = 159,
+    SMul_hi = 160,
+    Rotate = 161,
+    SSub_sat = 162,
+    USub_sat = 163,
+    U_Upsample = 164,
+    S_Upsample = 165,
+    Popcount = 166,
+    SMad24 = 167,
+    UMad24 = 168,
+    SMul24 = 169,
+    UMul24 = 170,
+    UAbs = 201,
+    UAbs_diff = 202,
+    UMul_hi = 203,
+    UMad_hi = 204,
+
+    // Section 2.3: Common instructions
+    FClamp = 95,
+    Degrees = 96,
+    FMax_common = 97,
+    FMin_common = 98, 
+    Mix = 99,
+    Radians = 100,
+    Step = 101,
+    Smoothstep = 102,
+    Sign = 103,
+
+    // Section 2.4: Geometric instructions
+    Cross = 104,
+    Distance = 105, 
+    Length = 106,
+    Normalize = 107,
+    Fast_distance = 108,
+    Fast_length = 109,
+    Fast_normalize = 110,
+
+    // Section 2.5: Relational instructions
+    Bitselect = 186,
+    Select = 187,
+
+    // Section 2.6: Vector Data Load and Store instructions
+    Vloadn = 171,
+    Vstoren = 172,
+    Vload_half = 173,
+    Vload_halfn = 174,
+    Vstore_half = 175,
+    Vstore_half_r = 176,
+    Vstore_halfn = 177,
+    Vstore_halfn_r = 178,
+    Vloada_halfn = 179,
+    Vstorea_halfn = 180,
+    Vstorea_halfn_r = 181,
+
+    // Section 2.7: Miscellaneous Vector instructions
+    Shuffle = 182,
+    Shuffle2 = 183,
+
+    // Section 2.8: Misc instructions 
+    Printf = 184,
+    Prefetch = 185,
+};
+
+} // end namespace OpenCLLIB
diff --git a/libs/spirv-headers/spirv/1.2/extinst.glsl.std.450.grammar.json b/libs/spirv-headers/spirv/1.2/extinst.glsl.std.450.grammar.json
new file mode 100644
index 00000000000..3d9f39e76c9
--- /dev/null
+++ b/libs/spirv-headers/spirv/1.2/extinst.glsl.std.450.grammar.json
@@ -0,0 +1,642 @@
+{
+  "copyright" : [
+    "Copyright (c) 2014-2016 The Khronos Group Inc.",
+    "",
+    "Permission is hereby granted, free of charge, to any person obtaining a copy",
+    "of this software and/or associated documentation files (the \"Materials\"),",
+    "to deal in the Materials without restriction, including without limitation",
+    "the rights to use, copy, modify, merge, publish, distribute, sublicense,",
+    "and/or sell copies of the Materials, and to permit persons to whom the",
+    "Materials are furnished to do so, subject to the following conditions:",
+    "",
+    "The above copyright notice and this permission notice shall be included in",
+    "all copies or substantial portions of the Materials.",
+    "",
+    "MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS KHRONOS",
+    "STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS SPECIFICATIONS AND",
+    "HEADER INFORMATION ARE LOCATED AT https://www.khronos.org/registry/ ",
+    "",
+    "THE MATERIALS ARE PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS",
+    "OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,",
+    "FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL",
+    "THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER",
+    "LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING",
+    "FROM,OUT OF OR IN CONNECTION WITH THE MATERIALS OR THE USE OR OTHER DEALINGS",
+    "IN THE MATERIALS."
+  ],
+  "version" : 100,
+  "revision" : 2,
+  "instructions" : [
+    {
+      "opname" : "Round",
+      "opcode" : 1,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "RoundEven",
+      "opcode" : 2,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "Trunc",
+      "opcode" : 3,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "FAbs",
+      "opcode" : 4,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "SAbs",
+      "opcode" : 5,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "FSign",
+      "opcode" : 6,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "SSign",
+      "opcode" : 7,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "Floor",
+      "opcode" : 8,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "Ceil",
+      "opcode" : 9,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "Fract",
+      "opcode" : 10,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "Radians",
+      "opcode" : 11,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'degrees'" }
+      ]
+    },
+    {
+      "opname" : "Degrees",
+      "opcode" : 12,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'radians'" }
+      ]
+    },
+    {
+      "opname" : "Sin",
+      "opcode" : 13,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "Cos",
+      "opcode" : 14,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "Tan",
+      "opcode" : 15,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "Asin",
+      "opcode" : 16,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "Acos",
+      "opcode" : 17,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "Atan",
+      "opcode" : 18,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'y_over_x'" }
+      ]
+    },
+    {
+      "opname" : "Sinh",
+      "opcode" : 19,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "Cosh",
+      "opcode" : 20,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "Tanh",
+      "opcode" : 21,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "Asinh",
+      "opcode" : 22,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "Acosh",
+      "opcode" : 23,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "Atanh",
+      "opcode" : 24,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "Atan2",
+      "opcode" : 25,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'y'" },
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "Pow",
+      "opcode" : 26,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "Exp",
+      "opcode" : 27,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "Log",
+      "opcode" : 28,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "Exp2",
+      "opcode" : 29,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "Log2",
+      "opcode" : 30,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "Sqrt",
+      "opcode" : 31,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "InverseSqrt",
+      "opcode" : 32,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "Determinant",
+      "opcode" : 33,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "MatrixInverse",
+      "opcode" : 34,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "Modf",
+      "opcode" : 35,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'i'" }
+      ]
+    },
+    {
+      "opname" : "ModfStruct",
+      "opcode" : 36,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "FMin",
+      "opcode" : 37,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "UMin",
+      "opcode" : 38,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "SMin",
+      "opcode" : 39,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "FMax",
+      "opcode" : 40,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "UMax",
+      "opcode" : 41,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "SMax",
+      "opcode" : 42,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "FClamp",
+      "opcode" : 43,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'minVal'" },
+        { "kind" : "IdRef", "name" : "'maxVal'" }
+      ]
+    },
+    {
+      "opname" : "UClamp",
+      "opcode" : 44,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'minVal'" },
+        { "kind" : "IdRef", "name" : "'maxVal'" }
+      ]
+    },
+    {
+      "opname" : "SClamp",
+      "opcode" : 45,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'minVal'" },
+        { "kind" : "IdRef", "name" : "'maxVal'" }
+      ]
+    },
+    {
+      "opname" : "FMix",
+      "opcode" : 46,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" },
+        { "kind" : "IdRef", "name" : "'a'" }
+      ]
+    },
+    {
+      "opname" : "IMix",
+      "opcode" : 47,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" },
+        { "kind" : "IdRef", "name" : "'a'" }
+      ]
+    },
+    {
+      "opname" : "Step",
+      "opcode" : 48,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'edge'" },
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "SmoothStep",
+      "opcode" : 49,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'edge0'" },
+        { "kind" : "IdRef", "name" : "'edge1'" },
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "Fma",
+      "opcode" : 50,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'a'" },
+        { "kind" : "IdRef", "name" : "'b'" },
+        { "kind" : "IdRef", "name" : "'c'" }
+      ]
+    },
+    {
+      "opname" : "Frexp",
+      "opcode" : 51,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'exp'" }
+      ]
+    },
+    {
+      "opname" : "FrexpStruct",
+      "opcode" : 52,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "Ldexp",
+      "opcode" : 53,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'exp'" }
+      ]
+    },
+    {
+      "opname" : "PackSnorm4x8",
+      "opcode" : 54,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'v'" }
+      ]
+    },
+    {
+      "opname" : "PackUnorm4x8",
+      "opcode" : 55,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'v'" }
+      ]
+    },
+    {
+      "opname" : "PackSnorm2x16",
+      "opcode" : 56,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'v'" }
+      ]
+    },
+    {
+      "opname" : "PackUnorm2x16",
+      "opcode" : 57,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'v'" }
+      ]
+    },
+    {
+      "opname" : "PackHalf2x16",
+      "opcode" : 58,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'v'" }
+      ]
+    },
+    {
+      "opname" : "PackDouble2x32",
+      "opcode" : 59,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'v'" }
+      ],
+      "capabilities" : [ "Float64" ]
+    },
+    {
+      "opname" : "UnpackSnorm2x16",
+      "opcode" : 60,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'p'" }
+      ]
+    },
+    {
+      "opname" : "UnpackUnorm2x16",
+      "opcode" : 61,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'p'" }
+      ]
+    },
+    {
+      "opname" : "UnpackHalf2x16",
+      "opcode" : 62,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'v'" }
+      ]
+    },
+    {
+      "opname" : "UnpackSnorm4x8",
+      "opcode" : 63,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'p'" }
+      ]
+    },
+    {
+      "opname" : "UnpackUnorm4x8",
+      "opcode" : 64,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'p'" }
+      ]
+    },
+    {
+      "opname" : "UnpackDouble2x32",
+      "opcode" : 65,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'v'" }
+      ],
+      "capabilities" : [ "Float64" ]
+    },
+    {
+      "opname" : "Length",
+      "opcode" : 66,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "Distance",
+      "opcode" : 67,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'p0'" },
+        { "kind" : "IdRef", "name" : "'p1'" }
+      ]
+    },
+    {
+      "opname" : "Cross",
+      "opcode" : 68,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "Normalize",
+      "opcode" : 69,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "FaceForward",
+      "opcode" : 70,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'N'" },
+        { "kind" : "IdRef", "name" : "'I'" },
+        { "kind" : "IdRef", "name" : "'Nref'" }
+      ]
+    },
+    {
+      "opname" : "Reflect",
+      "opcode" : 71,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'I'" },
+        { "kind" : "IdRef", "name" : "'N'" }
+      ]
+    },
+    {
+      "opname" : "Refract",
+      "opcode" : 72,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'I'" },
+        { "kind" : "IdRef", "name" : "'N'" },
+        { "kind" : "IdRef", "name" : "'eta'" }
+      ]
+    },
+    {
+      "opname" : "FindILsb",
+      "opcode" : 73,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'Value'" }
+      ]
+    },
+    {
+      "opname" : "FindSMsb",
+      "opcode" : 74,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'Value'" }
+      ]
+    },
+    {
+      "opname" : "FindUMsb",
+      "opcode" : 75,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'Value'" }
+      ]
+    },
+    {
+      "opname" : "InterpolateAtCentroid",
+      "opcode" : 76,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'interpolant'" }
+      ],
+      "capabilities" : [ "InterpolationFunction" ]
+    },
+    {
+      "opname" : "InterpolateAtSample",
+      "opcode" : 77,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'interpolant'" },
+        { "kind" : "IdRef", "name" : "'sample'" }
+      ],
+      "capabilities" : [ "InterpolationFunction" ]
+    },
+    {
+      "opname" : "InterpolateAtOffset",
+      "opcode" : 78,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'interpolant'" },
+        { "kind" : "IdRef", "name" : "'offset'" }
+      ],
+      "capabilities" : [ "InterpolationFunction" ]
+    },
+    {
+      "opname" : "NMin",
+      "opcode" : 79,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "NMax",
+      "opcode" : 80,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "NClamp",
+      "opcode" : 81,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'minVal'" },
+        { "kind" : "IdRef", "name" : "'maxVal'" }
+      ]
+    }
+  ]
+}
diff --git a/libs/spirv-headers/spirv/1.2/extinst.opencl.std.100.grammar.json b/libs/spirv-headers/spirv/1.2/extinst.opencl.std.100.grammar.json
new file mode 100644
index 00000000000..4fe45060bb9
--- /dev/null
+++ b/libs/spirv-headers/spirv/1.2/extinst.opencl.std.100.grammar.json
@@ -0,0 +1,1279 @@
+{
+  "copyright" : [
+    "Copyright (c) 2014-2016 The Khronos Group Inc.",
+    "",
+    "Permission is hereby granted, free of charge, to any person obtaining a copy",
+    "of this software and/or associated documentation files (the \"Materials\"),",
+    "to deal in the Materials without restriction, including without limitation",
+    "the rights to use, copy, modify, merge, publish, distribute, sublicense,",
+    "and/or sell copies of the Materials, and to permit persons to whom the",
+    "Materials are furnished to do so, subject to the following conditions:",
+    "",
+    "The above copyright notice and this permission notice shall be included in",
+    "all copies or substantial portions of the Materials.",
+    "",
+    "MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS KHRONOS",
+    "STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS SPECIFICATIONS AND",
+    "HEADER INFORMATION ARE LOCATED AT https://www.khronos.org/registry/ ",
+    "",
+    "THE MATERIALS ARE PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS",
+    "OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,",
+    "FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL",
+    "THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER",
+    "LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING",
+    "FROM,OUT OF OR IN CONNECTION WITH THE MATERIALS OR THE USE OR OTHER DEALINGS",
+    "IN THE MATERIALS."
+  ],
+  "version" : 100,
+  "revision" : 2,
+  "instructions" : [
+    {
+      "opname" : "acos",
+      "opcode" : 0,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "acosh",
+      "opcode" : 1,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "acospi",
+      "opcode" : 2,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "asin",
+      "opcode" : 3,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "asinh",
+      "opcode" : 4,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "asinpi",
+      "opcode" : 5,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "atan",
+      "opcode" : 6,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "atan2",
+      "opcode" : 7,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'y'" },
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "atanh",
+      "opcode" : 8,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "atanpi",
+      "opcode" : 9,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "atan2pi",
+      "opcode" : 10,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'y'" },
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "cbrt",
+      "opcode" : 11,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "ceil",
+      "opcode" : 12,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "copysign",
+      "opcode" : 13,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "cos",
+      "opcode" : 14,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "cosh",
+      "opcode" : 15,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "cospi",
+      "opcode" : 16,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "erfc",
+      "opcode" : 17,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "erf",
+      "opcode" : 18,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "exp",
+      "opcode" : 19,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "exp2",
+      "opcode" : 20,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "exp10",
+      "opcode" : 21,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "expm1",
+      "opcode" : 22,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "fabs",
+      "opcode" : 23,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "fdim",
+      "opcode" : 24,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "floor",
+      "opcode" : 25,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "fma",
+      "opcode" : 26,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'a'" },
+        { "kind" : "IdRef", "name" : "'b'" },
+        { "kind" : "IdRef", "name" : "'c'" }
+      ]
+    },
+    {
+      "opname" : "fmax",
+      "opcode" : 27,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "fmin",
+      "opcode" : 28,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "fmod",
+      "opcode" : 29,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "fract",
+      "opcode" : 30,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'ptr'" }
+      ]
+    },
+    {
+      "opname" : "frexp",
+      "opcode" : 31,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'exp'" }
+      ]
+    },
+    {
+      "opname" : "hypot",
+      "opcode" : 32,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "ilogb",
+      "opcode" : 33,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "ldexp",
+      "opcode" : 34,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'k'" }
+      ]
+    },
+    {
+      "opname" : "lgamma",
+      "opcode" : 35,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "lgamma_r",
+      "opcode" : 36,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'signp'" }
+      ]
+    },
+    {
+      "opname" : "log",
+      "opcode" : 37,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "log2",
+      "opcode" : 38,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "log10",
+      "opcode" : 39,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "log1p",
+      "opcode" : 40,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "logb",
+      "opcode" : 41,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "mad",
+      "opcode" : 42,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'a'" },
+        { "kind" : "IdRef", "name" : "'b'" },
+        { "kind" : "IdRef", "name" : "'c'" }
+      ]
+    },
+    {
+      "opname" : "maxmag",
+      "opcode" : 43,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "minmag",
+      "opcode" : 44,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "modf",
+      "opcode" : 45,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'iptr'" }
+      ]
+    },
+    {
+      "opname" : "nan",
+      "opcode" : 46,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'nancode'" }
+      ]
+    },
+    {
+      "opname" : "nextafter",
+      "opcode" : 47,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "pow",
+      "opcode" : 48,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y" }
+      ]
+    },
+    {
+      "opname" : "pown",
+      "opcode" : 49,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "powr",
+      "opcode" : 50,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "remainder",
+      "opcode" : 51,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "remquo",
+      "opcode" : 52,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" },
+        { "kind" : "IdRef", "name" : "'quo'" }
+      ]
+    },
+    {
+      "opname" : "rint",
+      "opcode" : 53,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "rootn",
+      "opcode" : 54,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "round",
+      "opcode" : 55,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "rsqrt",
+      "opcode" : 56,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "sin",
+      "opcode" : 57,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "sincos",
+      "opcode" : 58,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'cosval'" }
+      ]
+    },
+    {
+      "opname" : "sinh",
+      "opcode" : 59,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "sinpi",
+      "opcode" : 60,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "sqrt",
+      "opcode" : 61,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "tan",
+      "opcode" : 62,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "tanh",
+      "opcode" : 63,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "tanpi",
+      "opcode" : 64,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "tgamma",
+      "opcode" : 65,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "trunc",
+      "opcode" : 66,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "half_cos",
+      "opcode" : 67,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "half_divide",
+      "opcode" : 68,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "half_exp",
+      "opcode" : 69,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "half_exp2",
+      "opcode" : 70,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "half_exp10",
+      "opcode" : 71,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "half_log",
+      "opcode" : 72,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "half_log2",
+      "opcode" : 73,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "half_log10",
+      "opcode" : 74,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "half_powr",
+      "opcode" : 75,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "half_recip",
+      "opcode" : 76,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "half_rsqrt",
+      "opcode" : 77,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "half_sin",
+      "opcode" : 78,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "half_sqrt",
+      "opcode" : 79,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "half_tan",
+      "opcode" : 80,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "native_cos",
+      "opcode" : 81,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "native_divide",
+      "opcode" : 82,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "native_exp",
+      "opcode" : 83,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "native_exp2",
+      "opcode" : 84,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "native_exp10",
+      "opcode" : 85,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "native_log",
+      "opcode" : 86,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "native_log2",
+      "opcode" : 87,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "native_log10",
+      "opcode" : 88,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "native_powr",
+      "opcode" : 89,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "native_recip",
+      "opcode" : 90,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "native_rsqrt",
+      "opcode" : 91,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "native_sin",
+      "opcode" : 92,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "native_sqrt",
+      "opcode" : 93,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "native_tan",
+      "opcode" : 94,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "s_abs",
+      "opcode" : 141,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "s_abs_diff",
+      "opcode" : 142,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "s_add_sat",
+      "opcode" : 143,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "u_add_sat",
+      "opcode" : 144,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "s_hadd",
+      "opcode" : 145,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "u_hadd",
+      "opcode" : 146,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "s_rhadd",
+      "opcode" : 147,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "u_rhadd",
+      "opcode" : 148,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "s_clamp",
+      "opcode" : 149,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'minval'" },
+        { "kind" : "IdRef", "name" : "'maxval'" }
+      ]
+    },
+    {
+      "opname" : "u_clamp",
+      "opcode" : 150,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'minval'" },
+        { "kind" : "IdRef", "name" : "'maxval'" }
+      ]
+    },
+    {
+      "opname" : "clz",
+      "opcode" : 151,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "ctz",
+      "opcode" : 152,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "s_mad_hi",
+      "opcode" : 153,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'a'" },
+        { "kind" : "IdRef", "name" : "'b'" },
+        { "kind" : "IdRef", "name" : "'c'" }
+      ]
+    },
+    {
+      "opname" : "u_mad_sat",
+      "opcode" : 154,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" },
+        { "kind" : "IdRef", "name" : "'z'" }
+      ]
+    },
+    {
+      "opname" : "s_mad_sat",
+      "opcode" : 155,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" },
+        { "kind" : "IdRef", "name" : "'z'" }
+      ]
+    },
+    {
+      "opname" : "s_max",
+      "opcode" : 156,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "u_max",
+      "opcode" : 157,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "s_min",
+      "opcode" : 158,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "u_min",
+      "opcode" : 159,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "s_mul_hi",
+      "opcode" : 160,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "rotate",
+      "opcode" : 161,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'v'" },
+        { "kind" : "IdRef", "name" : "'i'" }
+      ]
+    },
+    {
+      "opname" : "s_sub_sat",
+      "opcode" : 162,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "u_sub_sat",
+      "opcode" : 163,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "u_upsample",
+      "opcode" : 164,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'hi'" },
+        { "kind" : "IdRef", "name" : "'lo'" }
+      ]
+    },
+    {
+      "opname" : "s_upsample",
+      "opcode" : 165,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'hi'" },
+        { "kind" : "IdRef", "name" : "'lo'" }
+      ]
+    },
+    {
+      "opname" : "popcount",
+      "opcode" : 166,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "s_mad24",
+      "opcode" : 167,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" },
+        { "kind" : "IdRef", "name" : "'z'" }
+      ]
+    },
+    {
+      "opname" : "u_mad24",
+      "opcode" : 168,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" },
+        { "kind" : "IdRef", "name" : "'z'" }
+      ]
+    },
+    {
+      "opname" : "s_mul24",
+      "opcode" : 169,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "u_mul24",
+      "opcode" : 170,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "u_abs",
+      "opcode" : 201,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "u_abs_diff",
+      "opcode" : 202,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "u_mul_hi",
+      "opcode" : 203,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "u_mad_hi",
+      "opcode" : 204,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'a'" },
+        { "kind" : "IdRef", "name" : "'b'" },
+        { "kind" : "IdRef", "name" : "'c'" }
+      ]
+    },
+    {
+      "opname" : "fclamp",
+      "opcode" : 95,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'minval'" },
+        { "kind" : "IdRef", "name" : "'maxval'" }
+      ]
+    },
+    {
+      "opname" : "degrees",
+      "opcode" :96,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'radians'" }
+      ]
+    },
+    {
+      "opname" : "fmax_common",
+      "opcode" : 97,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "fmin_common",
+      "opcode" : 98,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "mix",
+      "opcode" : 99,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" },
+        { "kind" : "IdRef", "name" : "'a'" }
+      ]
+    },
+    {
+      "opname" : "radians",
+      "opcode" : 100,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'degrees'" }
+      ]
+    },
+    {
+      "opname" : "step",
+      "opcode" : 101,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'edge'" },
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "smoothstep",
+      "opcode" : 102,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'edge0'" },
+        { "kind" : "IdRef", "name" : "'edge1'" },
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "sign",
+      "opcode" : 103,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "cross",
+      "opcode" : 104,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'p0'" },
+        { "kind" : "IdRef", "name" : "'p1'" }
+      ]
+    },
+    {
+      "opname" : "distance",
+      "opcode" : 105,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'p0'" },
+        { "kind" : "IdRef", "name" : "'p1'" }
+      ]
+    },
+    {
+      "opname" : "length",
+      "opcode" : 106,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'p'" }
+      ]
+    },
+    {
+      "opname" : "normalize",
+      "opcode" : 107,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'p'" }
+      ]
+    },
+    {
+      "opname" : "fast_distance",
+      "opcode" : 108,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'p0'" },
+        { "kind" : "IdRef", "name" : "'p1'" }
+      ]
+    },
+    {
+      "opname" : "fast_length",
+      "opcode" : 109,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'p'" }
+      ]
+    },
+    {
+      "opname" : "fast_normalize",
+      "opcode" : 110,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'p'" }
+      ]
+    },
+    {
+      "opname" : "bitselect",
+      "opcode" : 186,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'a'" },
+        { "kind" : "IdRef", "name" : "'b'" },
+        { "kind" : "IdRef", "name" : "'c'" }
+      ]
+    },
+    {
+      "opname" : "select",
+      "opcode" : 187,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'a'" },
+        { "kind" : "IdRef", "name" : "'b'" },
+        { "kind" : "IdRef", "name" : "'c'" }
+      ]
+    },
+    {
+      "opname" : "vloadn",
+      "opcode" : 171,
+      "operands" : [
+        { "kind" : "IdRef",          "name" : "'offset'" },
+        { "kind" : "IdRef",          "name" : "'p'" },
+        { "kind" : "LiteralInteger", "name" : "'n'" }
+      ]
+    },
+    {
+      "opname" : "vstoren",
+      "opcode" : 172,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'data'" },
+        { "kind" : "IdRef", "name" : "'offset'" },
+        { "kind" : "IdRef", "name" : "'p'" }
+      ]
+    },
+    {
+      "opname" : "vload_half",
+      "opcode" : 173,
+      "operands" : [
+        { "kind" : "IdRef",          "name" : "'offset'" },
+        { "kind" : "IdRef",          "name" : "'p'" }
+      ]
+    },
+    {
+      "opname" : "vload_halfn",
+      "opcode" : 174,
+      "operands" : [
+        { "kind" : "IdRef",          "name" : "'offset'" },
+        { "kind" : "IdRef",          "name" : "'p'" },
+        { "kind" : "LiteralInteger", "name" : "'n'" }
+      ]
+    },
+    {
+      "opname" : "vstore_half",
+      "opcode" : 175,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'data'" },
+        { "kind" : "IdRef", "name" : "'offset'" },
+        { "kind" : "IdRef", "name" : "'p'" }
+      ]
+    },
+    {
+      "opname" : "vstore_half_r",
+      "opcode" : 176,
+      "operands" : [
+        { "kind" : "IdRef",          "name" : "'data'" },
+        { "kind" : "IdRef",          "name" : "'offset'" },
+        { "kind" : "IdRef",          "name" : "'p'" },
+        { "kind" : "FPRoundingMode", "name" : "'mode'" }
+      ]
+    },
+    {
+      "opname" : "vstore_halfn",
+      "opcode" : 177,
+      "operands" : [
+        { "kind" : "IdRef",          "name" : "'data'" },
+        { "kind" : "IdRef",          "name" : "'offset'" },
+        { "kind" : "IdRef",          "name" : "'p'" }
+      ]
+    },
+    {
+      "opname" : "vstore_halfn_r",
+      "opcode" : 178,
+      "operands" : [
+        { "kind" : "IdRef",          "name" : "'data'" },
+        { "kind" : "IdRef",          "name" : "'offset'" },
+        { "kind" : "IdRef",          "name" : "'p'" },
+        { "kind" : "FPRoundingMode", "name" : "'mode'" }
+      ]
+    },
+    {
+      "opname" : "vloada_halfn",
+      "opcode" : 179,
+      "operands" : [
+        { "kind" : "IdRef",          "name" : "'offset'" },
+        { "kind" : "IdRef",          "name" : "'p'" },
+        { "kind" : "LiteralInteger", "name" : "'n'" }
+      ]
+    },
+    {
+      "opname" : "vstorea_halfn",
+      "opcode" : 180,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'data'" },
+        { "kind" : "IdRef", "name" : "'offset'" },
+        { "kind" : "IdRef", "name" : "'p'" }
+      ]
+    },
+    {
+      "opname" : "vstorea_halfn_r",
+      "opcode" : 181,
+      "operands" : [
+        { "kind" : "IdRef",          "name" : "'data'" },
+        { "kind" : "IdRef",          "name" : "'offset'" },
+        { "kind" : "IdRef",          "name" : "'p'" },
+        { "kind" : "FPRoundingMode", "name" : "'mode'" }
+      ]
+    },
+    {
+      "opname" : "shuffle",
+      "opcode" : 182,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'shuffle mask'" }
+      ]
+    },
+    {
+      "opname" : "shuffle2",
+      "opcode" : 183,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" },
+        { "kind" : "IdRef", "name" : "'shuffle mask'" }
+      ]
+    },
+    {
+      "opname" : "printf",
+      "opcode" : 184,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'format'" },
+        { "kind" : "IdRef", "name" : "'additional arguments'", "quantifier" : "*" }
+      ]
+    },
+    {
+      "opname" : "prefetch",
+      "opcode" : 185,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'ptr'" },
+        { "kind" : "IdRef", "name" : "'num elements'" }
+      ]
+    }
+  ]
+}
diff --git a/libs/spirv-headers/spirv/1.2/spirv.core.grammar.json b/libs/spirv-headers/spirv/1.2/spirv.core.grammar.json
new file mode 100644
index 00000000000..393ee3c8497
--- /dev/null
+++ b/libs/spirv-headers/spirv/1.2/spirv.core.grammar.json
@@ -0,0 +1,5986 @@
+{
+  "copyright" : [
+    "Copyright (c) 2014-2016 The Khronos Group Inc.",
+    "",
+    "Permission is hereby granted, free of charge, to any person obtaining a copy",
+    "of this software and/or associated documentation files (the \"Materials\"),",
+    "to deal in the Materials without restriction, including without limitation",
+    "the rights to use, copy, modify, merge, publish, distribute, sublicense,",
+    "and/or sell copies of the Materials, and to permit persons to whom the",
+    "Materials are furnished to do so, subject to the following conditions:",
+    "",
+    "The above copyright notice and this permission notice shall be included in",
+    "all copies or substantial portions of the Materials.",
+    "",
+    "MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS KHRONOS",
+    "STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS SPECIFICATIONS AND",
+    "HEADER INFORMATION ARE LOCATED AT https://www.khronos.org/registry/ ",
+    "",
+    "THE MATERIALS ARE PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS",
+    "OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,",
+    "FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL",
+    "THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER",
+    "LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING",
+    "FROM,OUT OF OR IN CONNECTION WITH THE MATERIALS OR THE USE OR OTHER DEALINGS",
+    "IN THE MATERIALS."
+  ],
+  "magic_number" : "0x07230203",
+  "major_version" : 1,
+  "minor_version" : 2,
+  "revision" : 2,
+  "instructions" : [
+    {
+      "opname" : "OpNop",
+      "opcode" : 0
+    },
+    {
+      "opname" : "OpUndef",
+      "opcode" : 1,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" }
+      ]
+    },
+    {
+      "opname" : "OpSourceContinued",
+      "opcode" : 2,
+      "operands" : [
+        { "kind" : "LiteralString", "name" : "'Continued Source'" }
+      ]
+    },
+    {
+      "opname" : "OpSource",
+      "opcode" : 3,
+      "operands" : [
+        { "kind" : "SourceLanguage" },
+        { "kind" : "LiteralInteger",                     "name" : "'Version'" },
+        { "kind" : "IdRef",          "quantifier" : "?", "name" : "'File'" },
+        { "kind" : "LiteralString",  "quantifier" : "?", "name" : "'Source'" }
+      ]
+    },
+    {
+      "opname" : "OpSourceExtension",
+      "opcode" : 4,
+      "operands" : [
+        { "kind" : "LiteralString", "name" : "'Extension'" }
+      ]
+    },
+    {
+      "opname" : "OpName",
+      "opcode" : 5,
+      "operands" : [
+        { "kind" : "IdRef",         "name" : "'Target'" },
+        { "kind" : "LiteralString", "name" : "'Name'" }
+      ]
+    },
+    {
+      "opname" : "OpMemberName",
+      "opcode" : 6,
+      "operands" : [
+        { "kind" : "IdRef",          "name" : "'Type'" },
+        { "kind" : "LiteralInteger", "name" : "'Member'" },
+        { "kind" : "LiteralString",  "name" : "'Name'" }
+      ]
+    },
+    {
+      "opname" : "OpString",
+      "opcode" : 7,
+      "operands" : [
+        { "kind" : "IdResult" },
+        { "kind" : "LiteralString", "name" : "'String'" }
+      ]
+    },
+    {
+      "opname" : "OpLine",
+      "opcode" : 8,
+      "operands" : [
+        { "kind" : "IdRef",          "name" : "'File'" },
+        { "kind" : "LiteralInteger", "name" : "'Line'" },
+        { "kind" : "LiteralInteger", "name" : "'Column'" }
+      ]
+    },
+    {
+      "opname" : "OpExtension",
+      "opcode" : 10,
+      "operands" : [
+        { "kind" : "LiteralString", "name" : "'Name'" }
+      ]
+    },
+    {
+      "opname" : "OpExtInstImport",
+      "opcode" : 11,
+      "operands" : [
+        { "kind" : "IdResult" },
+        { "kind" : "LiteralString", "name" : "'Name'" }
+      ]
+    },
+    {
+      "opname" : "OpExtInst",
+      "opcode" : 12,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",                                     "name" : "'Set'" },
+        { "kind" : "LiteralExtInstInteger",                     "name" : "'Instruction'" },
+        { "kind" : "IdRef",                 "quantifier" : "*", "name" : "'Operand 1', +\n'Operand 2', +\n..." }
+      ]
+    },
+    {
+      "opname" : "OpMemoryModel",
+      "opcode" : 14,
+      "operands" : [
+        { "kind" : "AddressingModel" },
+        { "kind" : "MemoryModel" }
+      ]
+    },
+    {
+      "opname" : "OpEntryPoint",
+      "opcode" : 15,
+      "operands" : [
+        { "kind" : "ExecutionModel" },
+        { "kind" : "IdRef",                              "name" : "'Entry Point'" },
+        { "kind" : "LiteralString",                      "name" : "'Name'" },
+        { "kind" : "IdRef",          "quantifier" : "*", "name" : "'Interface'" }
+      ]
+    },
+    {
+      "opname" : "OpExecutionMode",
+      "opcode" : 16,
+      "operands" : [
+        { "kind" : "IdRef",         "name" : "'Entry Point'" },
+        { "kind" : "ExecutionMode", "name" : "'Mode'" }
+      ]
+    },
+    {
+      "opname" : "OpCapability",
+      "opcode" : 17,
+      "operands" : [
+        { "kind" : "Capability", "name" : "'Capability'" }
+      ]
+    },
+    {
+      "opname" : "OpTypeVoid",
+      "opcode" : 19,
+      "operands" : [
+        { "kind" : "IdResult" }
+      ]
+    },
+    {
+      "opname" : "OpTypeBool",
+      "opcode" : 20,
+      "operands" : [
+        { "kind" : "IdResult" }
+      ]
+    },
+    {
+      "opname" : "OpTypeInt",
+      "opcode" : 21,
+      "operands" : [
+        { "kind" : "IdResult" },
+        { "kind" : "LiteralInteger", "name" : "'Width'" },
+        { "kind" : "LiteralInteger", "name" : "'Signedness'" }
+      ]
+    },
+    {
+      "opname" : "OpTypeFloat",
+      "opcode" : 22,
+      "operands" : [
+        { "kind" : "IdResult" },
+        { "kind" : "LiteralInteger", "name" : "'Width'" }
+      ]
+    },
+    {
+      "opname" : "OpTypeVector",
+      "opcode" : 23,
+      "operands" : [
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",          "name" : "'Component Type'" },
+        { "kind" : "LiteralInteger", "name" : "'Component Count'" }
+      ]
+    },
+    {
+      "opname" : "OpTypeMatrix",
+      "opcode" : 24,
+      "operands" : [
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",          "name" : "'Column Type'" },
+        { "kind" : "LiteralInteger", "name" : "'Column Count'" }
+      ],
+      "capabilities" : [ "Matrix" ]
+    },
+    {
+      "opname" : "OpTypeImage",
+      "opcode" : 25,
+      "operands" : [
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",                               "name" : "'Sampled Type'" },
+        { "kind" : "Dim" },
+        { "kind" : "LiteralInteger",                      "name" : "'Depth'" },
+        { "kind" : "LiteralInteger",                      "name" : "'Arrayed'" },
+        { "kind" : "LiteralInteger",                      "name" : "'MS'" },
+        { "kind" : "LiteralInteger",                      "name" : "'Sampled'" },
+        { "kind" : "ImageFormat" },
+        { "kind" : "AccessQualifier", "quantifier" : "?" }
+      ]
+    },
+    {
+      "opname" : "OpTypeSampler",
+      "opcode" : 26,
+      "operands" : [
+        { "kind" : "IdResult" }
+      ]
+    },
+    {
+      "opname" : "OpTypeSampledImage",
+      "opcode" : 27,
+      "operands" : [
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",    "name" : "'Image Type'" }
+      ]
+    },
+    {
+      "opname" : "OpTypeArray",
+      "opcode" : 28,
+      "operands" : [
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",    "name" : "'Element Type'" },
+        { "kind" : "IdRef",    "name" : "'Length'" }
+      ]
+    },
+    {
+      "opname" : "OpTypeRuntimeArray",
+      "opcode" : 29,
+      "operands" : [
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",    "name" : "'Element Type'" }
+      ],
+      "capabilities" : [ "Shader" ]
+    },
+    {
+      "opname" : "OpTypeStruct",
+      "opcode" : 30,
+      "operands" : [
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",    "quantifier" : "*", "name" : "'Member 0 type', +\n'member 1 type', +\n..." }
+      ]
+    },
+    {
+      "opname" : "OpTypeOpaque",
+      "opcode" : 31,
+      "operands" : [
+        { "kind" : "IdResult" },
+        { "kind" : "LiteralString", "name" : "The name of the opaque type." }
+      ],
+      "capabilities" : [ "Kernel" ]
+    },
+    {
+      "opname" : "OpTypePointer",
+      "opcode" : 32,
+      "operands" : [
+        { "kind" : "IdResult" },
+        { "kind" : "StorageClass" },
+        { "kind" : "IdRef",        "name" : "'Type'" }
+      ]
+    },
+    {
+      "opname" : "OpTypeFunction",
+      "opcode" : 33,
+      "operands" : [
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",                        "name" : "'Return Type'" },
+        { "kind" : "IdRef",    "quantifier" : "*", "name" : "'Parameter 0 Type', +\n'Parameter 1 Type', +\n..." }
+      ]
+    },
+    {
+      "opname" : "OpTypeEvent",
+      "opcode" : 34,
+      "operands" : [
+        { "kind" : "IdResult" }
+      ],
+      "capabilities" : [ "Kernel" ]
+    },
+    {
+      "opname" : "OpTypeDeviceEvent",
+      "opcode" : 35,
+      "operands" : [
+        { "kind" : "IdResult" }
+      ],
+      "capabilities" : [ "DeviceEnqueue" ]
+    },
+    {
+      "opname" : "OpTypeReserveId",
+      "opcode" : 36,
+      "operands" : [
+        { "kind" : "IdResult" }
+      ],
+      "capabilities" : [ "Pipes" ]
+    },
+    {
+      "opname" : "OpTypeQueue",
+      "opcode" : 37,
+      "operands" : [
+        { "kind" : "IdResult" }
+      ],
+      "capabilities" : [ "DeviceEnqueue" ]
+    },
+    {
+      "opname" : "OpTypePipe",
+      "opcode" : 38,
+      "operands" : [
+        { "kind" : "IdResult" },
+        { "kind" : "AccessQualifier", "name" : "'Qualifier'" }
+      ],
+      "capabilities" : [ "Pipes" ]
+    },
+    {
+      "opname" : "OpTypeForwardPointer",
+      "opcode" : 39,
+      "operands" : [
+        { "kind" : "IdRef",        "name" : "'Pointer Type'" },
+        { "kind" : "StorageClass" }
+      ],
+      "capabilities" : [ "Addresses" ]
+    },
+    {
+      "opname" : "OpConstantTrue",
+      "opcode" : 41,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" }
+      ]
+    },
+    {
+      "opname" : "OpConstantFalse",
+      "opcode" : 42,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" }
+      ]
+    },
+    {
+      "opname" : "OpConstant",
+      "opcode" : 43,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "LiteralContextDependentNumber", "name" : "'Value'" }
+      ]
+    },
+    {
+      "opname" : "OpConstantComposite",
+      "opcode" : 44,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "quantifier" : "*", "name" : "'Constituents'" }
+      ]
+    },
+    {
+      "opname" : "OpConstantSampler",
+      "opcode" : 45,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "SamplerAddressingMode" },
+        { "kind" : "LiteralInteger",        "name" : "'Param'" },
+        { "kind" : "SamplerFilterMode" }
+      ],
+      "capabilities" : [ "LiteralSampler" ]
+    },
+    {
+      "opname" : "OpConstantNull",
+      "opcode" : 46,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" }
+      ]
+    },
+    {
+      "opname" : "OpSpecConstantTrue",
+      "opcode" : 48,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" }
+      ]
+    },
+    {
+      "opname" : "OpSpecConstantFalse",
+      "opcode" : 49,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" }
+      ]
+    },
+    {
+      "opname" : "OpSpecConstant",
+      "opcode" : 50,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "LiteralContextDependentNumber", "name" : "'Value'" }
+      ]
+    },
+    {
+      "opname" : "OpSpecConstantComposite",
+      "opcode" : 51,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "quantifier" : "*", "name" : "'Constituents'" }
+      ]
+    },
+    {
+      "opname" : "OpSpecConstantOp",
+      "opcode" : 52,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "LiteralSpecConstantOpInteger", "name" : "'Opcode'" }
+      ]
+    },
+    {
+      "opname" : "OpFunction",
+      "opcode" : 54,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "FunctionControl" },
+        { "kind" : "IdRef",           "name" : "'Function Type'" }
+      ]
+    },
+    {
+      "opname" : "OpFunctionParameter",
+      "opcode" : 55,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" }
+      ]
+    },
+    {
+      "opname" : "OpFunctionEnd",
+      "opcode" : 56
+    },
+    {
+      "opname" : "OpFunctionCall",
+      "opcode" : 57,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",                            "name" : "'Function'" },
+        { "kind" : "IdRef",        "quantifier" : "*", "name" : "'Argument 0', +\n'Argument 1', +\n..." }
+      ]
+    },
+    {
+      "opname" : "OpVariable",
+      "opcode" : 59,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "StorageClass" },
+        { "kind" : "IdRef",        "quantifier" : "?", "name" : "'Initializer'" }
+      ]
+    },
+    {
+      "opname" : "OpImageTexelPointer",
+      "opcode" : 60,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Image'" },
+        { "kind" : "IdRef",        "name" : "'Coordinate'" },
+        { "kind" : "IdRef",        "name" : "'Sample'" }
+      ]
+    },
+    {
+      "opname" : "OpLoad",
+      "opcode" : 61,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",                            "name" : "'Pointer'" },
+        { "kind" : "MemoryAccess", "quantifier" : "?" }
+      ]
+    },
+    {
+      "opname" : "OpStore",
+      "opcode" : 62,
+      "operands" : [
+        { "kind" : "IdRef",                            "name" : "'Pointer'" },
+        { "kind" : "IdRef",                            "name" : "'Object'" },
+        { "kind" : "MemoryAccess", "quantifier" : "?" }
+      ]
+    },
+    {
+      "opname" : "OpCopyMemory",
+      "opcode" : 63,
+      "operands" : [
+        { "kind" : "IdRef",                            "name" : "'Target'" },
+        { "kind" : "IdRef",                            "name" : "'Source'" },
+        { "kind" : "MemoryAccess", "quantifier" : "?" }
+      ]
+    },
+    {
+      "opname" : "OpCopyMemorySized",
+      "opcode" : 64,
+      "operands" : [
+        { "kind" : "IdRef",                            "name" : "'Target'" },
+        { "kind" : "IdRef",                            "name" : "'Source'" },
+        { "kind" : "IdRef",                            "name" : "'Size'" },
+        { "kind" : "MemoryAccess", "quantifier" : "?" }
+      ],
+      "capabilities" : [ "Addresses" ]
+    },
+    {
+      "opname" : "OpAccessChain",
+      "opcode" : 65,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",                            "name" : "'Base'" },
+        { "kind" : "IdRef",        "quantifier" : "*", "name" : "'Indexes'" }
+      ]
+    },
+    {
+      "opname" : "OpInBoundsAccessChain",
+      "opcode" : 66,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",                            "name" : "'Base'" },
+        { "kind" : "IdRef",        "quantifier" : "*", "name" : "'Indexes'" }
+      ]
+    },
+    {
+      "opname" : "OpPtrAccessChain",
+      "opcode" : 67,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",                            "name" : "'Base'" },
+        { "kind" : "IdRef",                            "name" : "'Element'" },
+        { "kind" : "IdRef",        "quantifier" : "*", "name" : "'Indexes'" }
+      ],
+      "capabilities" : [
+        "Addresses",
+        "VariablePointers",
+        "VariablePointersStorageBuffer"
+      ]
+    },
+    {
+      "opname" : "OpArrayLength",
+      "opcode" : 68,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",          "name" : "'Structure'" },
+        { "kind" : "LiteralInteger", "name" : "'Array member'" }
+      ],
+      "capabilities" : [ "Shader" ]
+    },
+    {
+      "opname" : "OpGenericPtrMemSemantics",
+      "opcode" : 69,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Pointer'" }
+      ],
+      "capabilities" : [ "Kernel" ]
+    },
+    {
+      "opname" : "OpInBoundsPtrAccessChain",
+      "opcode" : 70,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",                            "name" : "'Base'" },
+        { "kind" : "IdRef",                            "name" : "'Element'" },
+        { "kind" : "IdRef",        "quantifier" : "*", "name" : "'Indexes'" }
+      ],
+      "capabilities" : [ "Addresses" ]
+    },
+    {
+      "opname" : "OpDecorate",
+      "opcode" : 71,
+      "operands" : [
+        { "kind" : "IdRef",      "name" : "'Target'" },
+        { "kind" : "Decoration" }
+      ]
+    },
+    {
+      "opname" : "OpMemberDecorate",
+      "opcode" : 72,
+      "operands" : [
+        { "kind" : "IdRef",          "name" : "'Structure Type'" },
+        { "kind" : "LiteralInteger", "name" : "'Member'" },
+        { "kind" : "Decoration" }
+      ]
+    },
+    {
+      "opname" : "OpDecorationGroup",
+      "opcode" : 73,
+      "operands" : [
+        { "kind" : "IdResult" }
+      ]
+    },
+    {
+      "opname" : "OpGroupDecorate",
+      "opcode" : 74,
+      "operands" : [
+        { "kind" : "IdRef",                     "name" : "'Decoration Group'" },
+        { "kind" : "IdRef", "quantifier" : "*", "name" : "'Targets'" }
+      ]
+    },
+    {
+      "opname" : "OpGroupMemberDecorate",
+      "opcode" : 75,
+      "operands" : [
+        { "kind" : "IdRef",                                       "name" : "'Decoration Group'" },
+        { "kind" : "PairIdRefLiteralInteger", "quantifier" : "*", "name" : "'Targets'" }
+      ]
+    },
+    {
+      "opname" : "OpVectorExtractDynamic",
+      "opcode" : 77,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Vector'" },
+        { "kind" : "IdRef",        "name" : "'Index'" }
+      ]
+    },
+    {
+      "opname" : "OpVectorInsertDynamic",
+      "opcode" : 78,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Vector'" },
+        { "kind" : "IdRef",        "name" : "'Component'" },
+        { "kind" : "IdRef",        "name" : "'Index'" }
+      ]
+    },
+    {
+      "opname" : "OpVectorShuffle",
+      "opcode" : 79,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",                              "name" : "'Vector 1'" },
+        { "kind" : "IdRef",                              "name" : "'Vector 2'" },
+        { "kind" : "LiteralInteger", "quantifier" : "*", "name" : "'Components'" }
+      ]
+    },
+    {
+      "opname" : "OpCompositeConstruct",
+      "opcode" : 80,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "quantifier" : "*", "name" : "'Constituents'" }
+      ]
+    },
+    {
+      "opname" : "OpCompositeExtract",
+      "opcode" : 81,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",                              "name" : "'Composite'" },
+        { "kind" : "LiteralInteger", "quantifier" : "*", "name" : "'Indexes'" }
+      ]
+    },
+    {
+      "opname" : "OpCompositeInsert",
+      "opcode" : 82,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",                              "name" : "'Object'" },
+        { "kind" : "IdRef",                              "name" : "'Composite'" },
+        { "kind" : "LiteralInteger", "quantifier" : "*", "name" : "'Indexes'" }
+      ]
+    },
+    {
+      "opname" : "OpCopyObject",
+      "opcode" : 83,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand'" }
+      ]
+    },
+    {
+      "opname" : "OpTranspose",
+      "opcode" : 84,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Matrix'" }
+      ],
+      "capabilities" : [ "Matrix" ]
+    },
+    {
+      "opname" : "OpSampledImage",
+      "opcode" : 86,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Image'" },
+        { "kind" : "IdRef",        "name" : "'Sampler'" }
+      ]
+    },
+    {
+      "opname" : "OpImageSampleImplicitLod",
+      "opcode" : 87,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",                             "name" : "'Sampled Image'" },
+        { "kind" : "IdRef",                             "name" : "'Coordinate'" },
+        { "kind" : "ImageOperands", "quantifier" : "?" }
+      ],
+      "capabilities" : [ "Shader" ]
+    },
+    {
+      "opname" : "OpImageSampleExplicitLod",
+      "opcode" : 88,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",         "name" : "'Sampled Image'" },
+        { "kind" : "IdRef",         "name" : "'Coordinate'" },
+        { "kind" : "ImageOperands" }
+      ]
+    },
+    {
+      "opname" : "OpImageSampleDrefImplicitLod",
+      "opcode" : 89,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",                             "name" : "'Sampled Image'" },
+        { "kind" : "IdRef",                             "name" : "'Coordinate'" },
+        { "kind" : "IdRef",                             "name" : "'D~ref~'" },
+        { "kind" : "ImageOperands", "quantifier" : "?" }
+      ],
+      "capabilities" : [ "Shader" ]
+    },
+    {
+      "opname" : "OpImageSampleDrefExplicitLod",
+      "opcode" : 90,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",         "name" : "'Sampled Image'" },
+        { "kind" : "IdRef",         "name" : "'Coordinate'" },
+        { "kind" : "IdRef",         "name" : "'D~ref~'" },
+        { "kind" : "ImageOperands" }
+      ],
+      "capabilities" : [ "Shader" ]
+    },
+    {
+      "opname" : "OpImageSampleProjImplicitLod",
+      "opcode" : 91,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",                             "name" : "'Sampled Image'" },
+        { "kind" : "IdRef",                             "name" : "'Coordinate'" },
+        { "kind" : "ImageOperands", "quantifier" : "?" }
+      ],
+      "capabilities" : [ "Shader" ]
+    },
+    {
+      "opname" : "OpImageSampleProjExplicitLod",
+      "opcode" : 92,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",         "name" : "'Sampled Image'" },
+        { "kind" : "IdRef",         "name" : "'Coordinate'" },
+        { "kind" : "ImageOperands" }
+      ],
+      "capabilities" : [ "Shader" ]
+    },
+    {
+      "opname" : "OpImageSampleProjDrefImplicitLod",
+      "opcode" : 93,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",                             "name" : "'Sampled Image'" },
+        { "kind" : "IdRef",                             "name" : "'Coordinate'" },
+        { "kind" : "IdRef",                             "name" : "'D~ref~'" },
+        { "kind" : "ImageOperands", "quantifier" : "?" }
+      ],
+      "capabilities" : [ "Shader" ]
+    },
+    {
+      "opname" : "OpImageSampleProjDrefExplicitLod",
+      "opcode" : 94,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",         "name" : "'Sampled Image'" },
+        { "kind" : "IdRef",         "name" : "'Coordinate'" },
+        { "kind" : "IdRef",         "name" : "'D~ref~'" },
+        { "kind" : "ImageOperands" }
+      ],
+      "capabilities" : [ "Shader" ]
+    },
+    {
+      "opname" : "OpImageFetch",
+      "opcode" : 95,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",                             "name" : "'Image'" },
+        { "kind" : "IdRef",                             "name" : "'Coordinate'" },
+        { "kind" : "ImageOperands", "quantifier" : "?" }
+      ]
+    },
+    {
+      "opname" : "OpImageGather",
+      "opcode" : 96,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",                             "name" : "'Sampled Image'" },
+        { "kind" : "IdRef",                             "name" : "'Coordinate'" },
+        { "kind" : "IdRef",                             "name" : "'Component'" },
+        { "kind" : "ImageOperands", "quantifier" : "?" }
+      ],
+      "capabilities" : [ "Shader" ]
+    },
+    {
+      "opname" : "OpImageDrefGather",
+      "opcode" : 97,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",                             "name" : "'Sampled Image'" },
+        { "kind" : "IdRef",                             "name" : "'Coordinate'" },
+        { "kind" : "IdRef",                             "name" : "'D~ref~'" },
+        { "kind" : "ImageOperands", "quantifier" : "?" }
+      ],
+      "capabilities" : [ "Shader" ]
+    },
+    {
+      "opname" : "OpImageRead",
+      "opcode" : 98,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",                             "name" : "'Image'" },
+        { "kind" : "IdRef",                             "name" : "'Coordinate'" },
+        { "kind" : "ImageOperands", "quantifier" : "?" }
+      ]
+    },
+    {
+      "opname" : "OpImageWrite",
+      "opcode" : 99,
+      "operands" : [
+        { "kind" : "IdRef",                             "name" : "'Image'" },
+        { "kind" : "IdRef",                             "name" : "'Coordinate'" },
+        { "kind" : "IdRef",                             "name" : "'Texel'" },
+        { "kind" : "ImageOperands", "quantifier" : "?" }
+      ]
+    },
+    {
+      "opname" : "OpImage",
+      "opcode" : 100,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Sampled Image'" }
+      ]
+    },
+    {
+      "opname" : "OpImageQueryFormat",
+      "opcode" : 101,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Image'" }
+      ],
+      "capabilities" : [ "Kernel" ]
+    },
+    {
+      "opname" : "OpImageQueryOrder",
+      "opcode" : 102,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Image'" }
+      ],
+      "capabilities" : [ "Kernel" ]
+    },
+    {
+      "opname" : "OpImageQuerySizeLod",
+      "opcode" : 103,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Image'" },
+        { "kind" : "IdRef",        "name" : "'Level of Detail'" }
+      ],
+      "capabilities" : [ "Kernel", "ImageQuery" ]
+    },
+    {
+      "opname" : "OpImageQuerySize",
+      "opcode" : 104,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Image'" }
+      ],
+      "capabilities" : [ "Kernel", "ImageQuery" ]
+    },
+    {
+      "opname" : "OpImageQueryLod",
+      "opcode" : 105,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Sampled Image'" },
+        { "kind" : "IdRef",        "name" : "'Coordinate'" }
+      ],
+      "capabilities" : [ "ImageQuery" ]
+    },
+    {
+      "opname" : "OpImageQueryLevels",
+      "opcode" : 106,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Image'" }
+      ],
+      "capabilities" : [ "Kernel", "ImageQuery" ]
+    },
+    {
+      "opname" : "OpImageQuerySamples",
+      "opcode" : 107,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Image'" }
+      ],
+      "capabilities" : [ "Kernel", "ImageQuery" ]
+    },
+    {
+      "opname" : "OpConvertFToU",
+      "opcode" : 109,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Float Value'" }
+      ]
+    },
+    {
+      "opname" : "OpConvertFToS",
+      "opcode" : 110,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Float Value'" }
+      ]
+    },
+    {
+      "opname" : "OpConvertSToF",
+      "opcode" : 111,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Signed Value'" }
+      ]
+    },
+    {
+      "opname" : "OpConvertUToF",
+      "opcode" : 112,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Unsigned Value'" }
+      ]
+    },
+    {
+      "opname" : "OpUConvert",
+      "opcode" : 113,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Unsigned Value'" }
+      ]
+    },
+    {
+      "opname" : "OpSConvert",
+      "opcode" : 114,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Signed Value'" }
+      ]
+    },
+    {
+      "opname" : "OpFConvert",
+      "opcode" : 115,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Float Value'" }
+      ]
+    },
+    {
+      "opname" : "OpQuantizeToF16",
+      "opcode" : 116,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Value'" }
+      ]
+    },
+    {
+      "opname" : "OpConvertPtrToU",
+      "opcode" : 117,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Pointer'" }
+      ],
+      "capabilities" : [ "Addresses" ]
+    },
+    {
+      "opname" : "OpSatConvertSToU",
+      "opcode" : 118,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Signed Value'" }
+      ],
+      "capabilities" : [ "Kernel" ]
+    },
+    {
+      "opname" : "OpSatConvertUToS",
+      "opcode" : 119,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Unsigned Value'" }
+      ],
+      "capabilities" : [ "Kernel" ]
+    },
+    {
+      "opname" : "OpConvertUToPtr",
+      "opcode" : 120,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Integer Value'" }
+      ],
+      "capabilities" : [ "Addresses" ]
+    },
+    {
+      "opname" : "OpPtrCastToGeneric",
+      "opcode" : 121,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Pointer'" }
+      ],
+      "capabilities" : [ "Kernel" ]
+    },
+    {
+      "opname" : "OpGenericCastToPtr",
+      "opcode" : 122,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Pointer'" }
+      ],
+      "capabilities" : [ "Kernel" ]
+    },
+    {
+      "opname" : "OpGenericCastToPtrExplicit",
+      "opcode" : 123,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Pointer'" },
+        { "kind" : "StorageClass", "name" : "'Storage'" }
+      ],
+      "capabilities" : [ "Kernel" ]
+    },
+    {
+      "opname" : "OpBitcast",
+      "opcode" : 124,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand'" }
+      ]
+    },
+    {
+      "opname" : "OpSNegate",
+      "opcode" : 126,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand'" }
+      ]
+    },
+    {
+      "opname" : "OpFNegate",
+      "opcode" : 127,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand'" }
+      ]
+    },
+    {
+      "opname" : "OpIAdd",
+      "opcode" : 128,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpFAdd",
+      "opcode" : 129,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpISub",
+      "opcode" : 130,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpFSub",
+      "opcode" : 131,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpIMul",
+      "opcode" : 132,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpFMul",
+      "opcode" : 133,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpUDiv",
+      "opcode" : 134,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpSDiv",
+      "opcode" : 135,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpFDiv",
+      "opcode" : 136,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpUMod",
+      "opcode" : 137,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpSRem",
+      "opcode" : 138,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpSMod",
+      "opcode" : 139,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpFRem",
+      "opcode" : 140,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpFMod",
+      "opcode" : 141,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpVectorTimesScalar",
+      "opcode" : 142,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Vector'" },
+        { "kind" : "IdRef",        "name" : "'Scalar'" }
+      ]
+    },
+    {
+      "opname" : "OpMatrixTimesScalar",
+      "opcode" : 143,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Matrix'" },
+        { "kind" : "IdRef",        "name" : "'Scalar'" }
+      ],
+      "capabilities" : [ "Matrix" ]
+    },
+    {
+      "opname" : "OpVectorTimesMatrix",
+      "opcode" : 144,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Vector'" },
+        { "kind" : "IdRef",        "name" : "'Matrix'" }
+      ],
+      "capabilities" : [ "Matrix" ]
+    },
+    {
+      "opname" : "OpMatrixTimesVector",
+      "opcode" : 145,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Matrix'" },
+        { "kind" : "IdRef",        "name" : "'Vector'" }
+      ],
+      "capabilities" : [ "Matrix" ]
+    },
+    {
+      "opname" : "OpMatrixTimesMatrix",
+      "opcode" : 146,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'LeftMatrix'" },
+        { "kind" : "IdRef",        "name" : "'RightMatrix'" }
+      ],
+      "capabilities" : [ "Matrix" ]
+    },
+    {
+      "opname" : "OpOuterProduct",
+      "opcode" : 147,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Vector 1'" },
+        { "kind" : "IdRef",        "name" : "'Vector 2'" }
+      ],
+      "capabilities" : [ "Matrix" ]
+    },
+    {
+      "opname" : "OpDot",
+      "opcode" : 148,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Vector 1'" },
+        { "kind" : "IdRef",        "name" : "'Vector 2'" }
+      ]
+    },
+    {
+      "opname" : "OpIAddCarry",
+      "opcode" : 149,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpISubBorrow",
+      "opcode" : 150,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpUMulExtended",
+      "opcode" : 151,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpSMulExtended",
+      "opcode" : 152,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpAny",
+      "opcode" : 154,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Vector'" }
+      ]
+    },
+    {
+      "opname" : "OpAll",
+      "opcode" : 155,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Vector'" }
+      ]
+    },
+    {
+      "opname" : "OpIsNan",
+      "opcode" : 156,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "OpIsInf",
+      "opcode" : 157,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "OpIsFinite",
+      "opcode" : 158,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'x'" }
+      ],
+      "capabilities" : [ "Kernel" ]
+    },
+    {
+      "opname" : "OpIsNormal",
+      "opcode" : 159,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'x'" }
+      ],
+      "capabilities" : [ "Kernel" ]
+    },
+    {
+      "opname" : "OpSignBitSet",
+      "opcode" : 160,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'x'" }
+      ],
+      "capabilities" : [ "Kernel" ]
+    },
+    {
+      "opname" : "OpLessOrGreater",
+      "opcode" : 161,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'x'" },
+        { "kind" : "IdRef",        "name" : "'y'" }
+      ],
+      "capabilities" : [ "Kernel" ]
+    },
+    {
+      "opname" : "OpOrdered",
+      "opcode" : 162,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'x'" },
+        { "kind" : "IdRef",        "name" : "'y'" }
+      ],
+      "capabilities" : [ "Kernel" ]
+    },
+    {
+      "opname" : "OpUnordered",
+      "opcode" : 163,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'x'" },
+        { "kind" : "IdRef",        "name" : "'y'" }
+      ],
+      "capabilities" : [ "Kernel" ]
+    },
+    {
+      "opname" : "OpLogicalEqual",
+      "opcode" : 164,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpLogicalNotEqual",
+      "opcode" : 165,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpLogicalOr",
+      "opcode" : 166,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpLogicalAnd",
+      "opcode" : 167,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpLogicalNot",
+      "opcode" : 168,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand'" }
+      ]
+    },
+    {
+      "opname" : "OpSelect",
+      "opcode" : 169,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Condition'" },
+        { "kind" : "IdRef",        "name" : "'Object 1'" },
+        { "kind" : "IdRef",        "name" : "'Object 2'" }
+      ]
+    },
+    {
+      "opname" : "OpIEqual",
+      "opcode" : 170,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpINotEqual",
+      "opcode" : 171,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpUGreaterThan",
+      "opcode" : 172,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpSGreaterThan",
+      "opcode" : 173,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpUGreaterThanEqual",
+      "opcode" : 174,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpSGreaterThanEqual",
+      "opcode" : 175,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpULessThan",
+      "opcode" : 176,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpSLessThan",
+      "opcode" : 177,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpULessThanEqual",
+      "opcode" : 178,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpSLessThanEqual",
+      "opcode" : 179,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpFOrdEqual",
+      "opcode" : 180,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpFUnordEqual",
+      "opcode" : 181,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpFOrdNotEqual",
+      "opcode" : 182,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpFUnordNotEqual",
+      "opcode" : 183,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpFOrdLessThan",
+      "opcode" : 184,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpFUnordLessThan",
+      "opcode" : 185,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpFOrdGreaterThan",
+      "opcode" : 186,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpFUnordGreaterThan",
+      "opcode" : 187,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpFOrdLessThanEqual",
+      "opcode" : 188,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpFUnordLessThanEqual",
+      "opcode" : 189,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpFOrdGreaterThanEqual",
+      "opcode" : 190,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpFUnordGreaterThanEqual",
+      "opcode" : 191,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpShiftRightLogical",
+      "opcode" : 194,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Base'" },
+        { "kind" : "IdRef",        "name" : "'Shift'" }
+      ]
+    },
+    {
+      "opname" : "OpShiftRightArithmetic",
+      "opcode" : 195,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Base'" },
+        { "kind" : "IdRef",        "name" : "'Shift'" }
+      ]
+    },
+    {
+      "opname" : "OpShiftLeftLogical",
+      "opcode" : 196,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Base'" },
+        { "kind" : "IdRef",        "name" : "'Shift'" }
+      ]
+    },
+    {
+      "opname" : "OpBitwiseOr",
+      "opcode" : 197,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpBitwiseXor",
+      "opcode" : 198,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpBitwiseAnd",
+      "opcode" : 199,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpNot",
+      "opcode" : 200,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand'" }
+      ]
+    },
+    {
+      "opname" : "OpBitFieldInsert",
+      "opcode" : 201,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Base'" },
+        { "kind" : "IdRef",        "name" : "'Insert'" },
+        { "kind" : "IdRef",        "name" : "'Offset'" },
+        { "kind" : "IdRef",        "name" : "'Count'" }
+      ],
+      "capabilities" : [ "Shader" ]
+    },
+    {
+      "opname" : "OpBitFieldSExtract",
+      "opcode" : 202,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Base'" },
+        { "kind" : "IdRef",        "name" : "'Offset'" },
+        { "kind" : "IdRef",        "name" : "'Count'" }
+      ],
+      "capabilities" : [ "Shader" ]
+    },
+    {
+      "opname" : "OpBitFieldUExtract",
+      "opcode" : 203,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Base'" },
+        { "kind" : "IdRef",        "name" : "'Offset'" },
+        { "kind" : "IdRef",        "name" : "'Count'" }
+      ],
+      "capabilities" : [ "Shader" ]
+    },
+    {
+      "opname" : "OpBitReverse",
+      "opcode" : 204,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Base'" }
+      ],
+      "capabilities" : [ "Shader" ]
+    },
+    {
+      "opname" : "OpBitCount",
+      "opcode" : 205,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Base'" }
+      ]
+    },
+    {
+      "opname" : "OpDPdx",
+      "opcode" : 207,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'P'" }
+      ],
+      "capabilities" : [ "Shader" ]
+    },
+    {
+      "opname" : "OpDPdy",
+      "opcode" : 208,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'P'" }
+      ],
+      "capabilities" : [ "Shader" ]
+    },
+    {
+      "opname" : "OpFwidth",
+      "opcode" : 209,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'P'" }
+      ],
+      "capabilities" : [ "Shader" ]
+    },
+    {
+      "opname" : "OpDPdxFine",
+      "opcode" : 210,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'P'" }
+      ],
+      "capabilities" : [ "DerivativeControl" ]
+    },
+    {
+      "opname" : "OpDPdyFine",
+      "opcode" : 211,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'P'" }
+      ],
+      "capabilities" : [ "DerivativeControl" ]
+    },
+    {
+      "opname" : "OpFwidthFine",
+      "opcode" : 212,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'P'" }
+      ],
+      "capabilities" : [ "DerivativeControl" ]
+    },
+    {
+      "opname" : "OpDPdxCoarse",
+      "opcode" : 213,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'P'" }
+      ],
+      "capabilities" : [ "DerivativeControl" ]
+    },
+    {
+      "opname" : "OpDPdyCoarse",
+      "opcode" : 214,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'P'" }
+      ],
+      "capabilities" : [ "DerivativeControl" ]
+    },
+    {
+      "opname" : "OpFwidthCoarse",
+      "opcode" : 215,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'P'" }
+      ],
+      "capabilities" : [ "DerivativeControl" ]
+    },
+    {
+      "opname" : "OpEmitVertex",
+      "opcode" : 218,
+      "capabilities" : [ "Geometry" ]
+    },
+    {
+      "opname" : "OpEndPrimitive",
+      "opcode" : 219,
+      "capabilities" : [ "Geometry" ]
+    },
+    {
+      "opname" : "OpEmitStreamVertex",
+      "opcode" : 220,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'Stream'" }
+      ],
+      "capabilities" : [ "GeometryStreams" ]
+    },
+    {
+      "opname" : "OpEndStreamPrimitive",
+      "opcode" : 221,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'Stream'" }
+      ],
+      "capabilities" : [ "GeometryStreams" ]
+    },
+    {
+      "opname" : "OpControlBarrier",
+      "opcode" : 224,
+      "operands" : [
+        { "kind" : "IdScope",           "name" : "'Execution'" },
+        { "kind" : "IdScope",           "name" : "'Memory'" },
+        { "kind" : "IdMemorySemantics", "name" : "'Semantics'" }
+      ]
+    },
+    {
+      "opname" : "OpMemoryBarrier",
+      "opcode" : 225,
+      "operands" : [
+        { "kind" : "IdScope",           "name" : "'Memory'" },
+        { "kind" : "IdMemorySemantics", "name" : "'Semantics'" }
+      ]
+    },
+    {
+      "opname" : "OpAtomicLoad",
+      "opcode" : 227,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",             "name" : "'Pointer'" },
+        { "kind" : "IdScope",           "name" : "'Scope'" },
+        { "kind" : "IdMemorySemantics", "name" : "'Semantics'" }
+      ]
+    },
+    {
+      "opname" : "OpAtomicStore",
+      "opcode" : 228,
+      "operands" : [
+        { "kind" : "IdRef",             "name" : "'Pointer'" },
+        { "kind" : "IdScope",           "name" : "'Scope'" },
+        { "kind" : "IdMemorySemantics", "name" : "'Semantics'" },
+        { "kind" : "IdRef",             "name" : "'Value'" }
+      ]
+    },
+    {
+      "opname" : "OpAtomicExchange",
+      "opcode" : 229,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",             "name" : "'Pointer'" },
+        { "kind" : "IdScope",           "name" : "'Scope'" },
+        { "kind" : "IdMemorySemantics", "name" : "'Semantics'" },
+        { "kind" : "IdRef",             "name" : "'Value'" }
+      ]
+    },
+    {
+      "opname" : "OpAtomicCompareExchange",
+      "opcode" : 230,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",             "name" : "'Pointer'" },
+        { "kind" : "IdScope",           "name" : "'Scope'" },
+        { "kind" : "IdMemorySemantics", "name" : "'Equal'" },
+        { "kind" : "IdMemorySemantics", "name" : "'Unequal'" },
+        { "kind" : "IdRef",             "name" : "'Value'" },
+        { "kind" : "IdRef",             "name" : "'Comparator'" }
+      ]
+    },
+    {
+      "opname" : "OpAtomicCompareExchangeWeak",
+      "opcode" : 231,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",             "name" : "'Pointer'" },
+        { "kind" : "IdScope",           "name" : "'Scope'" },
+        { "kind" : "IdMemorySemantics", "name" : "'Equal'" },
+        { "kind" : "IdMemorySemantics", "name" : "'Unequal'" },
+        { "kind" : "IdRef",             "name" : "'Value'" },
+        { "kind" : "IdRef",             "name" : "'Comparator'" }
+      ],
+      "capabilities" : [ "Kernel" ]
+    },
+    {
+      "opname" : "OpAtomicIIncrement",
+      "opcode" : 232,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",             "name" : "'Pointer'" },
+        { "kind" : "IdScope",           "name" : "'Scope'" },
+        { "kind" : "IdMemorySemantics", "name" : "'Semantics'" }
+      ]
+    },
+    {
+      "opname" : "OpAtomicIDecrement",
+      "opcode" : 233,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",             "name" : "'Pointer'" },
+        { "kind" : "IdScope",           "name" : "'Scope'" },
+        { "kind" : "IdMemorySemantics", "name" : "'Semantics'" }
+      ]
+    },
+    {
+      "opname" : "OpAtomicIAdd",
+      "opcode" : 234,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",             "name" : "'Pointer'" },
+        { "kind" : "IdScope",           "name" : "'Scope'" },
+        { "kind" : "IdMemorySemantics", "name" : "'Semantics'" },
+        { "kind" : "IdRef",             "name" : "'Value'" }
+      ]
+    },
+    {
+      "opname" : "OpAtomicISub",
+      "opcode" : 235,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",             "name" : "'Pointer'" },
+        { "kind" : "IdScope",           "name" : "'Scope'" },
+        { "kind" : "IdMemorySemantics", "name" : "'Semantics'" },
+        { "kind" : "IdRef",             "name" : "'Value'" }
+      ]
+    },
+    {
+      "opname" : "OpAtomicSMin",
+      "opcode" : 236,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",             "name" : "'Pointer'" },
+        { "kind" : "IdScope",           "name" : "'Scope'" },
+        { "kind" : "IdMemorySemantics", "name" : "'Semantics'" },
+        { "kind" : "IdRef",             "name" : "'Value'" }
+      ]
+    },
+    {
+      "opname" : "OpAtomicUMin",
+      "opcode" : 237,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",             "name" : "'Pointer'" },
+        { "kind" : "IdScope",           "name" : "'Scope'" },
+        { "kind" : "IdMemorySemantics", "name" : "'Semantics'" },
+        { "kind" : "IdRef",             "name" : "'Value'" }
+      ]
+    },
+    {
+      "opname" : "OpAtomicSMax",
+      "opcode" : 238,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",             "name" : "'Pointer'" },
+        { "kind" : "IdScope",           "name" : "'Scope'" },
+        { "kind" : "IdMemorySemantics", "name" : "'Semantics'" },
+        { "kind" : "IdRef",             "name" : "'Value'" }
+      ]
+    },
+    {
+      "opname" : "OpAtomicUMax",
+      "opcode" : 239,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",             "name" : "'Pointer'" },
+        { "kind" : "IdScope",           "name" : "'Scope'" },
+        { "kind" : "IdMemorySemantics", "name" : "'Semantics'" },
+        { "kind" : "IdRef",             "name" : "'Value'" }
+      ]
+    },
+    {
+      "opname" : "OpAtomicAnd",
+      "opcode" : 240,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",             "name" : "'Pointer'" },
+        { "kind" : "IdScope",           "name" : "'Scope'" },
+        { "kind" : "IdMemorySemantics", "name" : "'Semantics'" },
+        { "kind" : "IdRef",             "name" : "'Value'" }
+      ]
+    },
+    {
+      "opname" : "OpAtomicOr",
+      "opcode" : 241,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",             "name" : "'Pointer'" },
+        { "kind" : "IdScope",           "name" : "'Scope'" },
+        { "kind" : "IdMemorySemantics", "name" : "'Semantics'" },
+        { "kind" : "IdRef",             "name" : "'Value'" }
+      ]
+    },
+    {
+      "opname" : "OpAtomicXor",
+      "opcode" : 242,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",             "name" : "'Pointer'" },
+        { "kind" : "IdScope",           "name" : "'Scope'" },
+        { "kind" : "IdMemorySemantics", "name" : "'Semantics'" },
+        { "kind" : "IdRef",             "name" : "'Value'" }
+      ]
+    },
+    {
+      "opname" : "OpPhi",
+      "opcode" : 245,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "PairIdRefIdRef", "quantifier" : "*", "name" : "'Variable, Parent, ...'" }
+      ]
+    },
+    {
+      "opname" : "OpLoopMerge",
+      "opcode" : 246,
+      "operands" : [
+        { "kind" : "IdRef",       "name" : "'Merge Block'" },
+        { "kind" : "IdRef",       "name" : "'Continue Target'" },
+        { "kind" : "LoopControl" }
+      ]
+    },
+    {
+      "opname" : "OpSelectionMerge",
+      "opcode" : 247,
+      "operands" : [
+        { "kind" : "IdRef",            "name" : "'Merge Block'" },
+        { "kind" : "SelectionControl" }
+      ]
+    },
+    {
+      "opname" : "OpLabel",
+      "opcode" : 248,
+      "operands" : [
+        { "kind" : "IdResult" }
+      ]
+    },
+    {
+      "opname" : "OpBranch",
+      "opcode" : 249,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'Target Label'" }
+      ]
+    },
+    {
+      "opname" : "OpBranchConditional",
+      "opcode" : 250,
+      "operands" : [
+        { "kind" : "IdRef",                              "name" : "'Condition'" },
+        { "kind" : "IdRef",                              "name" : "'True Label'" },
+        { "kind" : "IdRef",                              "name" : "'False Label'" },
+        { "kind" : "LiteralInteger", "quantifier" : "*", "name" : "'Branch weights'" }
+      ]
+    },
+    {
+      "opname" : "OpSwitch",
+      "opcode" : 251,
+      "operands" : [
+        { "kind" : "IdRef",                                       "name" : "'Selector'" },
+        { "kind" : "IdRef",                                       "name" : "'Default'" },
+        { "kind" : "PairLiteralIntegerIdRef", "quantifier" : "*", "name" : "'Target'" }
+      ]
+    },
+    {
+      "opname" : "OpKill",
+      "opcode" : 252,
+      "capabilities" : [ "Shader" ]
+    },
+    {
+      "opname" : "OpReturn",
+      "opcode" : 253
+    },
+    {
+      "opname" : "OpReturnValue",
+      "opcode" : 254,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'Value'" }
+      ]
+    },
+    {
+      "opname" : "OpUnreachable",
+      "opcode" : 255
+    },
+    {
+      "opname" : "OpLifetimeStart",
+      "opcode" : 256,
+      "operands" : [
+        { "kind" : "IdRef",          "name" : "'Pointer'" },
+        { "kind" : "LiteralInteger", "name" : "'Size'" }
+      ],
+      "capabilities" : [ "Kernel" ]
+    },
+    {
+      "opname" : "OpLifetimeStop",
+      "opcode" : 257,
+      "operands" : [
+        { "kind" : "IdRef",          "name" : "'Pointer'" },
+        { "kind" : "LiteralInteger", "name" : "'Size'" }
+      ],
+      "capabilities" : [ "Kernel" ]
+    },
+    {
+      "opname" : "OpGroupAsyncCopy",
+      "opcode" : 259,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdScope",      "name" : "'Execution'" },
+        { "kind" : "IdRef",        "name" : "'Destination'" },
+        { "kind" : "IdRef",        "name" : "'Source'" },
+        { "kind" : "IdRef",        "name" : "'Num Elements'" },
+        { "kind" : "IdRef",        "name" : "'Stride'" },
+        { "kind" : "IdRef",        "name" : "'Event'" }
+      ],
+      "capabilities" : [ "Kernel" ]
+    },
+    {
+      "opname" : "OpGroupWaitEvents",
+      "opcode" : 260,
+      "operands" : [
+        { "kind" : "IdScope", "name" : "'Execution'" },
+        { "kind" : "IdRef",   "name" : "'Num Events'" },
+        { "kind" : "IdRef",   "name" : "'Events List'" }
+      ],
+      "capabilities" : [ "Kernel" ]
+    },
+    {
+      "opname" : "OpGroupAll",
+      "opcode" : 261,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdScope",      "name" : "'Execution'" },
+        { "kind" : "IdRef",        "name" : "'Predicate'" }
+      ],
+      "capabilities" : [ "Groups" ]
+    },
+    {
+      "opname" : "OpGroupAny",
+      "opcode" : 262,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdScope",      "name" : "'Execution'" },
+        { "kind" : "IdRef",        "name" : "'Predicate'" }
+      ],
+      "capabilities" : [ "Groups" ]
+    },
+    {
+      "opname" : "OpGroupBroadcast",
+      "opcode" : 263,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdScope",      "name" : "'Execution'" },
+        { "kind" : "IdRef",        "name" : "'Value'" },
+        { "kind" : "IdRef",        "name" : "'LocalId'" }
+      ],
+      "capabilities" : [ "Groups" ]
+    },
+    {
+      "opname" : "OpGroupIAdd",
+      "opcode" : 264,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdScope",        "name" : "'Execution'" },
+        { "kind" : "GroupOperation", "name" : "'Operation'" },
+        { "kind" : "IdRef",          "name" : "'X'" }
+      ],
+      "capabilities" : [ "Groups" ]
+    },
+    {
+      "opname" : "OpGroupFAdd",
+      "opcode" : 265,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdScope",        "name" : "'Execution'" },
+        { "kind" : "GroupOperation", "name" : "'Operation'" },
+        { "kind" : "IdRef",          "name" : "'X'" }
+      ],
+      "capabilities" : [ "Groups" ]
+    },
+    {
+      "opname" : "OpGroupFMin",
+      "opcode" : 266,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdScope",        "name" : "'Execution'" },
+        { "kind" : "GroupOperation", "name" : "'Operation'" },
+        { "kind" : "IdRef",          "name" : "'X'" }
+      ],
+      "capabilities" : [ "Groups" ]
+    },
+    {
+      "opname" : "OpGroupUMin",
+      "opcode" : 267,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdScope",        "name" : "'Execution'" },
+        { "kind" : "GroupOperation", "name" : "'Operation'" },
+        { "kind" : "IdRef",          "name" : "'X'" }
+      ],
+      "capabilities" : [ "Groups" ]
+    },
+    {
+      "opname" : "OpGroupSMin",
+      "opcode" : 268,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdScope",        "name" : "'Execution'" },
+        { "kind" : "GroupOperation", "name" : "'Operation'" },
+        { "kind" : "IdRef",          "name" : "'X'" }
+      ],
+      "capabilities" : [ "Groups" ]
+    },
+    {
+      "opname" : "OpGroupFMax",
+      "opcode" : 269,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdScope",        "name" : "'Execution'" },
+        { "kind" : "GroupOperation", "name" : "'Operation'" },
+        { "kind" : "IdRef",          "name" : "'X'" }
+      ],
+      "capabilities" : [ "Groups" ]
+    },
+    {
+      "opname" : "OpGroupUMax",
+      "opcode" : 270,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdScope",        "name" : "'Execution'" },
+        { "kind" : "GroupOperation", "name" : "'Operation'" },
+        { "kind" : "IdRef",          "name" : "'X'" }
+      ],
+      "capabilities" : [ "Groups" ]
+    },
+    {
+      "opname" : "OpGroupSMax",
+      "opcode" : 271,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdScope",        "name" : "'Execution'" },
+        { "kind" : "GroupOperation", "name" : "'Operation'" },
+        { "kind" : "IdRef",          "name" : "'X'" }
+      ],
+      "capabilities" : [ "Groups" ]
+    },
+    {
+      "opname" : "OpReadPipe",
+      "opcode" : 274,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Pipe'" },
+        { "kind" : "IdRef",        "name" : "'Pointer'" },
+        { "kind" : "IdRef",        "name" : "'Packet Size'" },
+        { "kind" : "IdRef",        "name" : "'Packet Alignment'" }
+      ],
+      "capabilities" : [ "Pipes" ]
+    },
+    {
+      "opname" : "OpWritePipe",
+      "opcode" : 275,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Pipe'" },
+        { "kind" : "IdRef",        "name" : "'Pointer'" },
+        { "kind" : "IdRef",        "name" : "'Packet Size'" },
+        { "kind" : "IdRef",        "name" : "'Packet Alignment'" }
+      ],
+      "capabilities" : [ "Pipes" ]
+    },
+    {
+      "opname" : "OpReservedReadPipe",
+      "opcode" : 276,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Pipe'" },
+        { "kind" : "IdRef",        "name" : "'Reserve Id'" },
+        { "kind" : "IdRef",        "name" : "'Index'" },
+        { "kind" : "IdRef",        "name" : "'Pointer'" },
+        { "kind" : "IdRef",        "name" : "'Packet Size'" },
+        { "kind" : "IdRef",        "name" : "'Packet Alignment'" }
+      ],
+      "capabilities" : [ "Pipes" ]
+    },
+    {
+      "opname" : "OpReservedWritePipe",
+      "opcode" : 277,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Pipe'" },
+        { "kind" : "IdRef",        "name" : "'Reserve Id'" },
+        { "kind" : "IdRef",        "name" : "'Index'" },
+        { "kind" : "IdRef",        "name" : "'Pointer'" },
+        { "kind" : "IdRef",        "name" : "'Packet Size'" },
+        { "kind" : "IdRef",        "name" : "'Packet Alignment'" }
+      ],
+      "capabilities" : [ "Pipes" ]
+    },
+    {
+      "opname" : "OpReserveReadPipePackets",
+      "opcode" : 278,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Pipe'" },
+        { "kind" : "IdRef",        "name" : "'Num Packets'" },
+        { "kind" : "IdRef",        "name" : "'Packet Size'" },
+        { "kind" : "IdRef",        "name" : "'Packet Alignment'" }
+      ],
+      "capabilities" : [ "Pipes" ]
+    },
+    {
+      "opname" : "OpReserveWritePipePackets",
+      "opcode" : 279,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Pipe'" },
+        { "kind" : "IdRef",        "name" : "'Num Packets'" },
+        { "kind" : "IdRef",        "name" : "'Packet Size'" },
+        { "kind" : "IdRef",        "name" : "'Packet Alignment'" }
+      ],
+      "capabilities" : [ "Pipes" ]
+    },
+    {
+      "opname" : "OpCommitReadPipe",
+      "opcode" : 280,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'Pipe'" },
+        { "kind" : "IdRef", "name" : "'Reserve Id'" },
+        { "kind" : "IdRef", "name" : "'Packet Size'" },
+        { "kind" : "IdRef", "name" : "'Packet Alignment'" }
+      ],
+      "capabilities" : [ "Pipes" ]
+    },
+    {
+      "opname" : "OpCommitWritePipe",
+      "opcode" : 281,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'Pipe'" },
+        { "kind" : "IdRef", "name" : "'Reserve Id'" },
+        { "kind" : "IdRef", "name" : "'Packet Size'" },
+        { "kind" : "IdRef", "name" : "'Packet Alignment'" }
+      ],
+      "capabilities" : [ "Pipes" ]
+    },
+    {
+      "opname" : "OpIsValidReserveId",
+      "opcode" : 282,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Reserve Id'" }
+      ],
+      "capabilities" : [ "Pipes" ]
+    },
+    {
+      "opname" : "OpGetNumPipePackets",
+      "opcode" : 283,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Pipe'" },
+        { "kind" : "IdRef",        "name" : "'Packet Size'" },
+        { "kind" : "IdRef",        "name" : "'Packet Alignment'" }
+      ],
+      "capabilities" : [ "Pipes" ]
+    },
+    {
+      "opname" : "OpGetMaxPipePackets",
+      "opcode" : 284,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Pipe'" },
+        { "kind" : "IdRef",        "name" : "'Packet Size'" },
+        { "kind" : "IdRef",        "name" : "'Packet Alignment'" }
+      ],
+      "capabilities" : [ "Pipes" ]
+    },
+    {
+      "opname" : "OpGroupReserveReadPipePackets",
+      "opcode" : 285,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdScope",      "name" : "'Execution'" },
+        { "kind" : "IdRef",        "name" : "'Pipe'" },
+        { "kind" : "IdRef",        "name" : "'Num Packets'" },
+        { "kind" : "IdRef",        "name" : "'Packet Size'" },
+        { "kind" : "IdRef",        "name" : "'Packet Alignment'" }
+      ],
+      "capabilities" : [ "Pipes" ]
+    },
+    {
+      "opname" : "OpGroupReserveWritePipePackets",
+      "opcode" : 286,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdScope",      "name" : "'Execution'" },
+        { "kind" : "IdRef",        "name" : "'Pipe'" },
+        { "kind" : "IdRef",        "name" : "'Num Packets'" },
+        { "kind" : "IdRef",        "name" : "'Packet Size'" },
+        { "kind" : "IdRef",        "name" : "'Packet Alignment'" }
+      ],
+      "capabilities" : [ "Pipes" ]
+    },
+    {
+      "opname" : "OpGroupCommitReadPipe",
+      "opcode" : 287,
+      "operands" : [
+        { "kind" : "IdScope", "name" : "'Execution'" },
+        { "kind" : "IdRef",   "name" : "'Pipe'" },
+        { "kind" : "IdRef",   "name" : "'Reserve Id'" },
+        { "kind" : "IdRef",   "name" : "'Packet Size'" },
+        { "kind" : "IdRef",   "name" : "'Packet Alignment'" }
+      ],
+      "capabilities" : [ "Pipes" ]
+    },
+    {
+      "opname" : "OpGroupCommitWritePipe",
+      "opcode" : 288,
+      "operands" : [
+        { "kind" : "IdScope", "name" : "'Execution'" },
+        { "kind" : "IdRef",   "name" : "'Pipe'" },
+        { "kind" : "IdRef",   "name" : "'Reserve Id'" },
+        { "kind" : "IdRef",   "name" : "'Packet Size'" },
+        { "kind" : "IdRef",   "name" : "'Packet Alignment'" }
+      ],
+      "capabilities" : [ "Pipes" ]
+    },
+    {
+      "opname" : "OpEnqueueMarker",
+      "opcode" : 291,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Queue'" },
+        { "kind" : "IdRef",        "name" : "'Num Events'" },
+        { "kind" : "IdRef",        "name" : "'Wait Events'" },
+        { "kind" : "IdRef",        "name" : "'Ret Event'" }
+      ],
+      "capabilities" : [ "DeviceEnqueue" ]
+    },
+    {
+      "opname" : "OpEnqueueKernel",
+      "opcode" : 292,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",                            "name" : "'Queue'" },
+        { "kind" : "IdRef",                            "name" : "'Flags'" },
+        { "kind" : "IdRef",                            "name" : "'ND Range'" },
+        { "kind" : "IdRef",                            "name" : "'Num Events'" },
+        { "kind" : "IdRef",                            "name" : "'Wait Events'" },
+        { "kind" : "IdRef",                            "name" : "'Ret Event'" },
+        { "kind" : "IdRef",                            "name" : "'Invoke'" },
+        { "kind" : "IdRef",                            "name" : "'Param'" },
+        { "kind" : "IdRef",                            "name" : "'Param Size'" },
+        { "kind" : "IdRef",                            "name" : "'Param Align'" },
+        { "kind" : "IdRef",        "quantifier" : "*", "name" : "'Local Size'" }
+      ],
+      "capabilities" : [ "DeviceEnqueue" ]
+    },
+    {
+      "opname" : "OpGetKernelNDrangeSubGroupCount",
+      "opcode" : 293,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'ND Range'" },
+        { "kind" : "IdRef",        "name" : "'Invoke'" },
+        { "kind" : "IdRef",        "name" : "'Param'" },
+        { "kind" : "IdRef",        "name" : "'Param Size'" },
+        { "kind" : "IdRef",        "name" : "'Param Align'" }
+      ],
+      "capabilities" : [ "DeviceEnqueue" ]
+    },
+    {
+      "opname" : "OpGetKernelNDrangeMaxSubGroupSize",
+      "opcode" : 294,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'ND Range'" },
+        { "kind" : "IdRef",        "name" : "'Invoke'" },
+        { "kind" : "IdRef",        "name" : "'Param'" },
+        { "kind" : "IdRef",        "name" : "'Param Size'" },
+        { "kind" : "IdRef",        "name" : "'Param Align'" }
+      ],
+      "capabilities" : [ "DeviceEnqueue" ]
+    },
+    {
+      "opname" : "OpGetKernelWorkGroupSize",
+      "opcode" : 295,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Invoke'" },
+        { "kind" : "IdRef",        "name" : "'Param'" },
+        { "kind" : "IdRef",        "name" : "'Param Size'" },
+        { "kind" : "IdRef",        "name" : "'Param Align'" }
+      ],
+      "capabilities" : [ "DeviceEnqueue" ]
+    },
+    {
+      "opname" : "OpGetKernelPreferredWorkGroupSizeMultiple",
+      "opcode" : 296,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Invoke'" },
+        { "kind" : "IdRef",        "name" : "'Param'" },
+        { "kind" : "IdRef",        "name" : "'Param Size'" },
+        { "kind" : "IdRef",        "name" : "'Param Align'" }
+      ],
+      "capabilities" : [ "DeviceEnqueue" ]
+    },
+    {
+      "opname" : "OpRetainEvent",
+      "opcode" : 297,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'Event'" }
+      ],
+      "capabilities" : [ "DeviceEnqueue" ]
+    },
+    {
+      "opname" : "OpReleaseEvent",
+      "opcode" : 298,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'Event'" }
+      ],
+      "capabilities" : [ "DeviceEnqueue" ]
+    },
+    {
+      "opname" : "OpCreateUserEvent",
+      "opcode" : 299,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" }
+      ],
+      "capabilities" : [ "DeviceEnqueue" ]
+    },
+    {
+      "opname" : "OpIsValidEvent",
+      "opcode" : 300,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Event'" }
+      ],
+      "capabilities" : [ "DeviceEnqueue" ]
+    },
+    {
+      "opname" : "OpSetUserEventStatus",
+      "opcode" : 301,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'Event'" },
+        { "kind" : "IdRef", "name" : "'Status'" }
+      ],
+      "capabilities" : [ "DeviceEnqueue" ]
+    },
+    {
+      "opname" : "OpCaptureEventProfilingInfo",
+      "opcode" : 302,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'Event'" },
+        { "kind" : "IdRef", "name" : "'Profiling Info'" },
+        { "kind" : "IdRef", "name" : "'Value'" }
+      ],
+      "capabilities" : [ "DeviceEnqueue" ]
+    },
+    {
+      "opname" : "OpGetDefaultQueue",
+      "opcode" : 303,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" }
+      ],
+      "capabilities" : [ "DeviceEnqueue" ]
+    },
+    {
+      "opname" : "OpBuildNDRange",
+      "opcode" : 304,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'GlobalWorkSize'" },
+        { "kind" : "IdRef",        "name" : "'LocalWorkSize'" },
+        { "kind" : "IdRef",        "name" : "'GlobalWorkOffset'" }
+      ],
+      "capabilities" : [ "DeviceEnqueue" ]
+    },
+    {
+      "opname" : "OpImageSparseSampleImplicitLod",
+      "opcode" : 305,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",                             "name" : "'Sampled Image'" },
+        { "kind" : "IdRef",                             "name" : "'Coordinate'" },
+        { "kind" : "ImageOperands", "quantifier" : "?" }
+      ],
+      "capabilities" : [ "SparseResidency" ]
+    },
+    {
+      "opname" : "OpImageSparseSampleExplicitLod",
+      "opcode" : 306,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",         "name" : "'Sampled Image'" },
+        { "kind" : "IdRef",         "name" : "'Coordinate'" },
+        { "kind" : "ImageOperands" }
+      ],
+      "capabilities" : [ "SparseResidency" ]
+    },
+    {
+      "opname" : "OpImageSparseSampleDrefImplicitLod",
+      "opcode" : 307,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",                             "name" : "'Sampled Image'" },
+        { "kind" : "IdRef",                             "name" : "'Coordinate'" },
+        { "kind" : "IdRef",                             "name" : "'D~ref~'" },
+        { "kind" : "ImageOperands", "quantifier" : "?" }
+      ],
+      "capabilities" : [ "SparseResidency" ]
+    },
+    {
+      "opname" : "OpImageSparseSampleDrefExplicitLod",
+      "opcode" : 308,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",         "name" : "'Sampled Image'" },
+        { "kind" : "IdRef",         "name" : "'Coordinate'" },
+        { "kind" : "IdRef",         "name" : "'D~ref~'" },
+        { "kind" : "ImageOperands" }
+      ],
+      "capabilities" : [ "SparseResidency" ]
+    },
+    {
+      "opname" : "OpImageSparseSampleProjImplicitLod",
+      "opcode" : 309,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",                             "name" : "'Sampled Image'" },
+        { "kind" : "IdRef",                             "name" : "'Coordinate'" },
+        { "kind" : "ImageOperands", "quantifier" : "?" }
+      ],
+      "capabilities" : [ "SparseResidency" ]
+    },
+    {
+      "opname" : "OpImageSparseSampleProjExplicitLod",
+      "opcode" : 310,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",         "name" : "'Sampled Image'" },
+        { "kind" : "IdRef",         "name" : "'Coordinate'" },
+        { "kind" : "ImageOperands" }
+      ],
+      "capabilities" : [ "SparseResidency" ]
+    },
+    {
+      "opname" : "OpImageSparseSampleProjDrefImplicitLod",
+      "opcode" : 311,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",                             "name" : "'Sampled Image'" },
+        { "kind" : "IdRef",                             "name" : "'Coordinate'" },
+        { "kind" : "IdRef",                             "name" : "'D~ref~'" },
+        { "kind" : "ImageOperands", "quantifier" : "?" }
+      ],
+      "capabilities" : [ "SparseResidency" ]
+    },
+    {
+      "opname" : "OpImageSparseSampleProjDrefExplicitLod",
+      "opcode" : 312,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",         "name" : "'Sampled Image'" },
+        { "kind" : "IdRef",         "name" : "'Coordinate'" },
+        { "kind" : "IdRef",         "name" : "'D~ref~'" },
+        { "kind" : "ImageOperands" }
+      ],
+      "capabilities" : [ "SparseResidency" ]
+    },
+    {
+      "opname" : "OpImageSparseFetch",
+      "opcode" : 313,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",                             "name" : "'Image'" },
+        { "kind" : "IdRef",                             "name" : "'Coordinate'" },
+        { "kind" : "ImageOperands", "quantifier" : "?" }
+      ],
+      "capabilities" : [ "SparseResidency" ]
+    },
+    {
+      "opname" : "OpImageSparseGather",
+      "opcode" : 314,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",                             "name" : "'Sampled Image'" },
+        { "kind" : "IdRef",                             "name" : "'Coordinate'" },
+        { "kind" : "IdRef",                             "name" : "'Component'" },
+        { "kind" : "ImageOperands", "quantifier" : "?" }
+      ],
+      "capabilities" : [ "SparseResidency" ]
+    },
+    {
+      "opname" : "OpImageSparseDrefGather",
+      "opcode" : 315,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",                             "name" : "'Sampled Image'" },
+        { "kind" : "IdRef",                             "name" : "'Coordinate'" },
+        { "kind" : "IdRef",                             "name" : "'D~ref~'" },
+        { "kind" : "ImageOperands", "quantifier" : "?" }
+      ],
+      "capabilities" : [ "SparseResidency" ]
+    },
+    {
+      "opname" : "OpImageSparseTexelsResident",
+      "opcode" : 316,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Resident Code'" }
+      ],
+      "capabilities" : [ "SparseResidency" ]
+    },
+    {
+      "opname" : "OpNoLine",
+      "opcode" : 317
+    },
+    {
+      "opname" : "OpAtomicFlagTestAndSet",
+      "opcode" : 318,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",             "name" : "'Pointer'" },
+        { "kind" : "IdScope",           "name" : "'Scope'" },
+        { "kind" : "IdMemorySemantics", "name" : "'Semantics'" }
+      ],
+      "capabilities" : [ "Kernel" ]
+    },
+    {
+      "opname" : "OpAtomicFlagClear",
+      "opcode" : 319,
+      "operands" : [
+        { "kind" : "IdRef",             "name" : "'Pointer'" },
+        { "kind" : "IdScope",           "name" : "'Scope'" },
+        { "kind" : "IdMemorySemantics", "name" : "'Semantics'" }
+      ],
+      "capabilities" : [ "Kernel" ]
+    },
+    {
+      "opname" : "OpImageSparseRead",
+      "opcode" : 320,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",                             "name" : "'Image'" },
+        { "kind" : "IdRef",                             "name" : "'Coordinate'" },
+        { "kind" : "ImageOperands", "quantifier" : "?" }
+      ],
+      "capabilities" : [ "SparseResidency" ]
+    },
+    {
+      "opname" : "OpSizeOf",
+      "opcode" : 321,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Pointer'" }
+      ],
+      "capabilities" : [ "Addresses" ]
+    },
+    {
+      "opname" : "OpTypePipeStorage",
+      "opcode" : 322,
+      "operands" : [
+        { "kind" : "IdResult" }
+      ],
+      "capabilities" : [ "PipeStorage" ]
+    },
+    {
+      "opname" : "OpConstantPipeStorage",
+      "opcode" : 323,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "LiteralInteger", "name" : "'Packet Size'" },
+        { "kind" : "LiteralInteger", "name" : "'Packet Alignment'" },
+        { "kind" : "LiteralInteger", "name" : "'Capacity'" }
+      ],
+      "capabilities" : [ "PipeStorage" ]
+    },
+    {
+      "opname" : "OpCreatePipeFromPipeStorage",
+      "opcode" : 324,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Pipe Storage'" }
+      ],
+      "capabilities" : [ "PipeStorage" ]
+    },
+    {
+      "opname" : "OpGetKernelLocalSizeForSubgroupCount",
+      "opcode" : 325,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Subgroup Count'" },
+        { "kind" : "IdRef",        "name" : "'Invoke'" },
+        { "kind" : "IdRef",        "name" : "'Param'" },
+        { "kind" : "IdRef",        "name" : "'Param Size'" },
+        { "kind" : "IdRef",        "name" : "'Param Align'" }
+      ],
+      "capabilities" : [ "SubgroupDispatch" ]
+    },
+    {
+      "opname" : "OpGetKernelMaxNumSubgroups",
+      "opcode" : 326,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Invoke'" },
+        { "kind" : "IdRef",        "name" : "'Param'" },
+        { "kind" : "IdRef",        "name" : "'Param Size'" },
+        { "kind" : "IdRef",        "name" : "'Param Align'" }
+      ],
+      "capabilities" : [ "SubgroupDispatch" ]
+    },
+    {
+      "opname" : "OpTypeNamedBarrier",
+      "opcode" : 327,
+      "operands" : [
+        { "kind" : "IdResult" }
+      ],
+      "capabilities" : [ "NamedBarrier" ]
+    },
+    {
+      "opname" : "OpNamedBarrierInitialize",
+      "opcode" : 328,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Subgroup Count'" }
+      ],
+      "capabilities" : [ "NamedBarrier" ]
+    },
+    {
+      "opname" : "OpMemoryNamedBarrier",
+      "opcode" : 329,
+      "operands" : [
+        { "kind" : "IdRef",             "name" : "'Named Barrier'" },
+        { "kind" : "IdScope",           "name" : "'Memory'" },
+        { "kind" : "IdMemorySemantics", "name" : "'Semantics'" }
+      ],
+      "capabilities" : [ "NamedBarrier" ]
+    },
+    {
+      "opname" : "OpModuleProcessed",
+      "opcode" : 330,
+      "operands" : [
+        { "kind" : "LiteralString", "name" : "'Process'" }
+      ]
+    },
+    {
+      "opname" : "OpExecutionModeId",
+      "opcode" : 331,
+      "operands" : [
+        { "kind" : "IdRef",           "name" : "'Entry Point'" },
+        { "kind" : "ExecutionMode",   "name" : "'Mode'" }
+      ]
+    },
+    {
+      "opname" : "OpDecorateId",
+      "opcode" : 332,
+      "operands" : [
+        { "kind" : "IdRef",      "name" : "'Target'" },
+        { "kind" : "Decoration" }
+      ]
+    },
+    {
+      "opname" : "OpSubgroupBallotKHR",
+      "opcode" : 4421,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Predicate'" }
+      ],
+      "capabilities" : [ "SubgroupBallotKHR" ]
+    },
+    {
+      "opname" : "OpSubgroupFirstInvocationKHR",
+      "opcode" : 4422,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Value'" }
+      ],
+      "capabilities" : [ "SubgroupBallotKHR" ]
+    },
+    {
+      "opname" : "OpSubgroupAllKHR",
+      "opcode" : 4428,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Predicate'" }
+      ],
+      "capabilities" : [ "SubgroupVoteKHR" ]
+    },
+    {
+      "opname" : "OpSubgroupAnyKHR",
+      "opcode" : 4429,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Predicate'" }
+      ],
+      "capabilities" : [ "SubgroupVoteKHR" ]
+    },
+    {
+      "opname" : "OpSubgroupAllEqualKHR",
+      "opcode" : 4430,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Predicate'" }
+      ],
+      "capabilities" : [ "SubgroupVoteKHR" ]
+    },
+    {
+      "opname" : "OpSubgroupReadInvocationKHR",
+      "opcode" : 4432,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Value'" },
+        { "kind" : "IdRef", "name" : "'Index'" }
+      ],
+      "capabilities" : [ "SubgroupBallotKHR" ]
+    },
+    {
+      "opname" : "OpGroupIAddNonUniformAMD",
+      "opcode" : 5000,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdScope",        "name" : "'Execution'" },
+        { "kind" : "GroupOperation", "name" : "'Operation'" },
+        { "kind" : "IdRef",          "name" : "'X'" }
+      ],
+      "capabilities" : [ "Groups" ]
+    },
+    {
+      "opname" : "OpGroupFAddNonUniformAMD",
+      "opcode" : 5001,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdScope",        "name" : "'Execution'" },
+        { "kind" : "GroupOperation", "name" : "'Operation'" },
+        { "kind" : "IdRef",          "name" : "'X'" }
+      ],
+      "capabilities" : [ "Groups" ]
+    },
+    {
+      "opname" : "OpGroupFMinNonUniformAMD",
+      "opcode" : 5002,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdScope",        "name" : "'Execution'" },
+        { "kind" : "GroupOperation", "name" : "'Operation'" },
+        { "kind" : "IdRef",          "name" : "'X'" }
+      ],
+      "capabilities" : [ "Groups" ]
+    },
+    {
+      "opname" : "OpGroupUMinNonUniformAMD",
+      "opcode" : 5003,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdScope",        "name" : "'Execution'" },
+        { "kind" : "GroupOperation", "name" : "'Operation'" },
+        { "kind" : "IdRef",          "name" : "'X'" }
+      ],
+      "capabilities" : [ "Groups" ]
+    },
+    {
+      "opname" : "OpGroupSMinNonUniformAMD",
+      "opcode" : 5004,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdScope",        "name" : "'Execution'" },
+        { "kind" : "GroupOperation", "name" : "'Operation'" },
+        { "kind" : "IdRef",          "name" : "'X'" }
+      ],
+      "capabilities" : [ "Groups" ]
+    },
+    {
+      "opname" : "OpGroupFMaxNonUniformAMD",
+      "opcode" : 5005,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdScope",        "name" : "'Execution'" },
+        { "kind" : "GroupOperation", "name" : "'Operation'" },
+        { "kind" : "IdRef",          "name" : "'X'" }
+      ],
+      "capabilities" : [ "Groups" ]
+    },
+    {
+      "opname" : "OpGroupUMaxNonUniformAMD",
+      "opcode" : 5006,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdScope",        "name" : "'Execution'" },
+        { "kind" : "GroupOperation", "name" : "'Operation'" },
+        { "kind" : "IdRef",          "name" : "'X'" }
+      ],
+      "capabilities" : [ "Groups" ]
+    },
+    {
+      "opname" : "OpGroupSMaxNonUniformAMD",
+      "opcode" : 5007,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdScope",        "name" : "'Execution'" },
+        { "kind" : "GroupOperation", "name" : "'Operation'" },
+        { "kind" : "IdRef",          "name" : "'X'" }
+      ],
+      "capabilities" : [ "Groups" ]
+    },
+    {
+      "opname" : "OpFragmentMaskFetchAMD",
+      "opcode" : 5011,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Image'" },
+        { "kind" : "IdRef", "name" : "'Coordinate'" }
+      ],
+      "capabilities" : [ "FragmentMaskAMD" ]
+    },
+    {
+      "opname" : "OpFragmentFetchAMD",
+      "opcode" : 5012,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Image'" },
+        { "kind" : "IdRef", "name" : "'Coordinate'" },
+        { "kind" : "IdRef", "name" : "'Fragment Index'" }
+      ],
+      "capabilities" : [ "FragmentMaskAMD" ]
+    },
+    {
+      "opname" : "OpSubgroupShuffleINTEL",
+      "opcode" : 5571,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Data'" },
+        { "kind" : "IdRef", "name" : "'InvocationId'" }
+      ],
+      "capabilities" : [ "SubgroupShuffleINTEL" ]
+    },
+    {
+      "opname" : "OpSubgroupShuffleDownINTEL",
+      "opcode" : 5572,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Current'" },
+        { "kind" : "IdRef", "name" : "'Next'" },
+        { "kind" : "IdRef", "name" : "'Delta'" }
+      ],
+      "capabilities" : [ "SubgroupShuffleINTEL" ]
+    },
+    {
+      "opname" : "OpSubgroupShuffleUpINTEL",
+      "opcode" : 5573,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Previous'" },
+        { "kind" : "IdRef", "name" : "'Current'" },
+        { "kind" : "IdRef", "name" : "'Delta'" }
+      ],
+      "capabilities" : [ "SubgroupShuffleINTEL" ]
+    },
+    {
+      "opname" : "OpSubgroupShuffleXorINTEL",
+      "opcode" : 5574,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Data'" },
+        { "kind" : "IdRef", "name" : "'Value'" }
+      ],
+      "capabilities" : [ "SubgroupShuffleINTEL" ]
+    },
+    {
+      "opname" : "OpSubgroupBlockReadINTEL",
+      "opcode" : 5575,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Ptr'" }
+      ],
+      "capabilities" : [ "SubgroupBufferBlockIOINTEL" ]
+    },
+    {
+      "opname" : "OpSubgroupBlockWriteINTEL",
+      "opcode" : 5576,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'Ptr'" },
+        { "kind" : "IdRef", "name" : "'Data'" }
+      ],
+      "capabilities" : [ "SubgroupBufferBlockIOINTEL" ]
+    },
+    {
+      "opname" : "OpSubgroupImageBlockReadINTEL",
+      "opcode" : 5577,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Image'" },
+        { "kind" : "IdRef", "name" : "'Coordinate'" }
+      ],
+      "capabilities" : [ "SubgroupImageBlockIOINTEL" ]
+    },
+    {
+      "opname" : "OpSubgroupImageBlockWriteINTEL",
+      "opcode" : 5578,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'Image'" },
+        { "kind" : "IdRef", "name" : "'Coordinate'" },
+        { "kind" : "IdRef", "name" : "'Data'" }
+      ],
+      "capabilities" : [ "SubgroupImageBlockIOINTEL" ]
+    },
+    {
+      "opname" : "OpDecorateStringGOOGLE",
+      "opcode" : 5632,
+      "operands" : [
+        { "kind" : "IdRef",         "name" : "'Target'" },
+        { "kind" : "Decoration" }
+      ],
+      "extensions" : [ "SPV_GOOGLE_decorate_string" ]
+    },
+    {
+      "opname" : "OpMemberDecorateStringGOOGLE",
+      "opcode" : 5633,
+      "operands" : [
+        { "kind" : "IdRef",          "name" : "'Struct Type'" },
+        { "kind" : "LiteralInteger", "name" : "'Member'" },
+        { "kind" : "Decoration" }
+      ],
+      "extensions" : [ "SPV_GOOGLE_decorate_string" ]
+    }
+  ],
+  "operand_kinds" : [
+    {
+      "category" : "BitEnum",
+      "kind" : "ImageOperands",
+      "enumerants" : [
+        {
+          "enumerant" : "None",
+          "value" : "0x0000"
+        },
+        {
+          "enumerant" : "Bias",
+          "value" : "0x0001",
+          "capabilities" : [ "Shader" ],
+          "parameters" : [
+            { "kind" : "IdRef" }
+          ]
+        },
+        {
+          "enumerant" : "Lod",
+          "value" : "0x0002",
+          "parameters" : [
+            { "kind" : "IdRef" }
+          ]
+        },
+        {
+          "enumerant" : "Grad",
+          "value" : "0x0004",
+          "parameters" : [
+            { "kind" : "IdRef" },
+            { "kind" : "IdRef" }
+          ]
+        },
+        {
+          "enumerant" : "ConstOffset",
+          "value" : "0x0008",
+          "parameters" : [
+            { "kind" : "IdRef" }
+          ]
+        },
+        {
+          "enumerant" : "Offset",
+          "value" : "0x0010",
+          "capabilities" : [ "ImageGatherExtended" ],
+          "parameters" : [
+            { "kind" : "IdRef" }
+          ]
+        },
+        {
+          "enumerant" : "ConstOffsets",
+          "value" : "0x0020",
+          "parameters" : [
+            { "kind" : "IdRef" }
+          ]
+        },
+        {
+          "enumerant" : "Sample",
+          "value" : "0x0040",
+          "parameters" : [
+            { "kind" : "IdRef" }
+          ]
+        },
+        {
+          "enumerant" : "MinLod",
+          "value" : "0x0080",
+          "capabilities" : [ "MinLod" ],
+          "parameters" : [
+            { "kind" : "IdRef" }
+          ]
+        }
+      ]
+    },
+    {
+      "category" : "BitEnum",
+      "kind" : "FPFastMathMode",
+      "enumerants" : [
+        {
+          "enumerant" : "None",
+          "value" : "0x0000"
+        },
+        {
+          "enumerant" : "NotNaN",
+          "value" : "0x0001",
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "NotInf",
+          "value" : "0x0002",
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "NSZ",
+          "value" : "0x0004",
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "AllowRecip",
+          "value" : "0x0008",
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "Fast",
+          "value" : "0x0010",
+          "capabilities" : [ "Kernel" ]
+        }
+      ]
+    },
+    {
+      "category" : "BitEnum",
+      "kind" : "SelectionControl",
+      "enumerants" : [
+        {
+          "enumerant" : "None",
+          "value" : "0x0000"
+        },
+        {
+          "enumerant" : "Flatten",
+          "value" : "0x0001"
+        },
+        {
+          "enumerant" : "DontFlatten",
+          "value" : "0x0002"
+        }
+      ]
+    },
+    {
+      "category" : "BitEnum",
+      "kind" : "LoopControl",
+      "enumerants" : [
+        {
+          "enumerant" : "None",
+          "value" : "0x0000"
+        },
+        {
+          "enumerant" : "Unroll",
+          "value" : "0x0001"
+        },
+        {
+          "enumerant" : "DontUnroll",
+          "value" : "0x0002"
+        },
+        {
+          "enumerant" : "DependencyInfinite",
+          "value" : "0x0004"
+        },
+        {
+          "enumerant" : "DependencyLength",
+          "value" : "0x0008",
+          "parameters" : [
+            { "kind" : "LiteralInteger" }
+          ]
+
+        }
+      ]
+    },
+    {
+      "category" : "BitEnum",
+      "kind" : "FunctionControl",
+      "enumerants" : [
+        {
+          "enumerant" : "None",
+          "value" : "0x0000"
+        },
+        {
+          "enumerant" : "Inline",
+          "value" : "0x0001"
+        },
+        {
+          "enumerant" : "DontInline",
+          "value" : "0x0002"
+        },
+        {
+          "enumerant" : "Pure",
+          "value" : "0x0004"
+        },
+        {
+          "enumerant" : "Const",
+          "value" : "0x0008"
+        }
+      ]
+    },
+    {
+      "category" : "BitEnum",
+      "kind" : "MemorySemantics",
+      "enumerants" : [
+        {
+          "enumerant" : "Relaxed",
+          "value" : "0x0000"
+        },
+        {
+          "enumerant" : "None",
+          "value" : "0x0000"
+        },
+        {
+          "enumerant" : "Acquire",
+          "value" : "0x0002"
+        },
+        {
+          "enumerant" : "Release",
+          "value" : "0x0004"
+        },
+        {
+          "enumerant" : "AcquireRelease",
+          "value" : "0x0008"
+        },
+        {
+          "enumerant" : "SequentiallyConsistent",
+          "value" : "0x0010"
+        },
+        {
+          "enumerant" : "UniformMemory",
+          "value" : "0x0040",
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "SubgroupMemory",
+          "value" : "0x0080"
+        },
+        {
+          "enumerant" : "WorkgroupMemory",
+          "value" : "0x0100"
+        },
+        {
+          "enumerant" : "CrossWorkgroupMemory",
+          "value" : "0x0200"
+        },
+        {
+          "enumerant" : "AtomicCounterMemory",
+          "value" : "0x0400",
+          "capabilities" : [ "AtomicStorage" ]
+        },
+        {
+          "enumerant" : "ImageMemory",
+          "value" : "0x0800"
+        }
+      ]
+    },
+    {
+      "category" : "BitEnum",
+      "kind" : "MemoryAccess",
+      "enumerants" : [
+        {
+          "enumerant" : "None",
+          "value" : "0x0000"
+        },
+        {
+          "enumerant" : "Volatile",
+          "value" : "0x0001"
+        },
+        {
+          "enumerant" : "Aligned",
+          "value" : "0x0002",
+          "parameters" : [
+            { "kind" : "LiteralInteger" }
+          ]
+        },
+        {
+          "enumerant" : "Nontemporal",
+          "value" : "0x0004"
+        }
+      ]
+    },
+    {
+      "category" : "BitEnum",
+      "kind" : "KernelProfilingInfo",
+      "enumerants" : [
+        {
+          "enumerant" : "None",
+          "value" : "0x0000"
+        },
+        {
+          "enumerant" : "CmdExecTime",
+          "value" : "0x0001",
+          "capabilities" : [ "Kernel" ]
+        }
+      ]
+    },
+    {
+      "category" : "ValueEnum",
+      "kind" : "SourceLanguage",
+      "enumerants" : [
+        {
+          "enumerant" : "Unknown",
+          "value" : 0
+        },
+        {
+          "enumerant" : "ESSL",
+          "value" : 1
+        },
+        {
+          "enumerant" : "GLSL",
+          "value" : 2
+        },
+        {
+          "enumerant" : "OpenCL_C",
+          "value" : 3
+        },
+        {
+          "enumerant" : "OpenCL_CPP",
+          "value" : 4
+        },
+        {
+          "enumerant" : "HLSL",
+          "value" : 5
+        }
+      ]
+    },
+    {
+      "category" : "ValueEnum",
+      "kind" : "ExecutionModel",
+      "enumerants" : [
+        {
+          "enumerant" : "Vertex",
+          "value" : 0,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "TessellationControl",
+          "value" : 1,
+          "capabilities" : [ "Tessellation" ]
+        },
+        {
+          "enumerant" : "TessellationEvaluation",
+          "value" : 2,
+          "capabilities" : [ "Tessellation" ]
+        },
+        {
+          "enumerant" : "Geometry",
+          "value" : 3,
+          "capabilities" : [ "Geometry" ]
+        },
+        {
+          "enumerant" : "Fragment",
+          "value" : 4,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "GLCompute",
+          "value" : 5,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "Kernel",
+          "value" : 6,
+          "capabilities" : [ "Kernel" ]
+        }
+      ]
+    },
+    {
+      "category" : "ValueEnum",
+      "kind" : "AddressingModel",
+      "enumerants" : [
+        {
+          "enumerant" : "Logical",
+          "value" : 0
+        },
+        {
+          "enumerant" : "Physical32",
+          "value" : 1,
+          "capabilities" : [ "Addresses" ]
+        },
+        {
+          "enumerant" : "Physical64",
+          "value" : 2,
+          "capabilities" : [ "Addresses" ]
+        }
+      ]
+    },
+    {
+      "category" : "ValueEnum",
+      "kind" : "MemoryModel",
+      "enumerants" : [
+        {
+          "enumerant" : "Simple",
+          "value" : 0,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "GLSL450",
+          "value" : 1,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "OpenCL",
+          "value" : 2,
+          "capabilities" : [ "Kernel" ]
+        }
+      ]
+    },
+    {
+      "category" : "ValueEnum",
+      "kind" : "ExecutionMode",
+      "enumerants" : [
+        {
+          "enumerant" : "Invocations",
+          "value" : 0,
+          "capabilities" : [ "Geometry" ],
+          "parameters" : [
+            { "kind" : "LiteralInteger", "name" : "'Number of <<Invocation,invocations>>'" }
+          ]
+        },
+        {
+          "enumerant" : "SpacingEqual",
+          "value" : 1,
+          "capabilities" : [ "Tessellation" ]
+        },
+        {
+          "enumerant" : "SpacingFractionalEven",
+          "value" : 2,
+          "capabilities" : [ "Tessellation" ]
+        },
+        {
+          "enumerant" : "SpacingFractionalOdd",
+          "value" : 3,
+          "capabilities" : [ "Tessellation" ]
+        },
+        {
+          "enumerant" : "VertexOrderCw",
+          "value" : 4,
+          "capabilities" : [ "Tessellation" ]
+        },
+        {
+          "enumerant" : "VertexOrderCcw",
+          "value" : 5,
+          "capabilities" : [ "Tessellation" ]
+        },
+        {
+          "enumerant" : "PixelCenterInteger",
+          "value" : 6,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "OriginUpperLeft",
+          "value" : 7,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "OriginLowerLeft",
+          "value" : 8,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "EarlyFragmentTests",
+          "value" : 9,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "PointMode",
+          "value" : 10,
+          "capabilities" : [ "Tessellation" ]
+        },
+        {
+          "enumerant" : "Xfb",
+          "value" : 11,
+          "capabilities" : [ "TransformFeedback" ]
+        },
+        {
+          "enumerant" : "DepthReplacing",
+          "value" : 12,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "DepthGreater",
+          "value" : 14,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "DepthLess",
+          "value" : 15,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "DepthUnchanged",
+          "value" : 16,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "LocalSize",
+          "value" : 17,
+          "parameters" : [
+            { "kind" : "LiteralInteger", "name" : "'x size'" },
+            { "kind" : "LiteralInteger", "name" : "'y size'" },
+            { "kind" : "LiteralInteger", "name" : "'z size'" }
+          ]
+        },
+        {
+          "enumerant" : "LocalSizeHint",
+          "value" : 18,
+          "capabilities" : [ "Kernel" ],
+          "parameters" : [
+            { "kind" : "LiteralInteger", "name" : "'x size'" },
+            { "kind" : "LiteralInteger", "name" : "'y size'" },
+            { "kind" : "LiteralInteger", "name" : "'z size'" }
+          ]
+        },
+        {
+          "enumerant" : "InputPoints",
+          "value" : 19,
+          "capabilities" : [ "Geometry" ]
+        },
+        {
+          "enumerant" : "InputLines",
+          "value" : 20,
+          "capabilities" : [ "Geometry" ]
+        },
+        {
+          "enumerant" : "InputLinesAdjacency",
+          "value" : 21,
+          "capabilities" : [ "Geometry" ]
+        },
+        {
+          "enumerant" : "Triangles",
+          "value" : 22,
+          "capabilities" : [ "Geometry", "Tessellation" ]
+        },
+        {
+          "enumerant" : "InputTrianglesAdjacency",
+          "value" : 23,
+          "capabilities" : [ "Geometry" ]
+        },
+        {
+          "enumerant" : "Quads",
+          "value" : 24,
+          "capabilities" : [ "Tessellation" ]
+        },
+        {
+          "enumerant" : "Isolines",
+          "value" : 25,
+          "capabilities" : [ "Tessellation" ]
+        },
+        {
+          "enumerant" : "OutputVertices",
+          "value" : 26,
+          "capabilities" : [ "Geometry", "Tessellation" ],
+          "parameters" : [
+            { "kind" : "LiteralInteger", "name" : "'Vertex count'" }
+          ]
+        },
+        {
+          "enumerant" : "OutputPoints",
+          "value" : 27,
+          "capabilities" : [ "Geometry" ]
+        },
+        {
+          "enumerant" : "OutputLineStrip",
+          "value" : 28,
+          "capabilities" : [ "Geometry" ]
+        },
+        {
+          "enumerant" : "OutputTriangleStrip",
+          "value" : 29,
+          "capabilities" : [ "Geometry" ]
+        },
+        {
+          "enumerant" : "VecTypeHint",
+          "value" : 30,
+          "capabilities" : [ "Kernel" ],
+          "parameters" : [
+            { "kind" : "LiteralInteger", "name" : "'Vector type'" }
+          ]
+        },
+        {
+          "enumerant" : "ContractionOff",
+          "value" : 31,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "Initializer",
+          "value" : 33,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "Finalizer",
+          "value" : 34,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "SubgroupSize",
+          "value" : 35,
+          "capabilities" : [ "SubgroupDispatch" ],
+          "parameters" : [
+            { "kind" : "LiteralInteger", "name" : "'Subgroup Size'" }
+          ]
+        },
+        {
+          "enumerant" : "SubgroupsPerWorkgroup",
+          "value" : 36,
+          "capabilities" : [ "SubgroupDispatch" ],
+          "parameters" : [
+            { "kind" : "LiteralInteger", "name" : "'Subgroups Per Workgroup'" }
+          ]
+        },
+        {
+          "enumerant" : "SubgroupsPerWorkgroupId",
+          "value" : 37,
+          "capabilities" : [ "SubgroupDispatch" ],
+          "parameters" : [
+            { "kind" : "IdRef", "name" : "'Subgroups Per Workgroup'" }
+          ]
+        },
+        {
+          "enumerant" : "LocalSizeId",
+          "value" : 38,
+          "parameters" : [
+            { "kind" : "IdRef", "name" : "'x size'" },
+            { "kind" : "IdRef", "name" : "'y size'" },
+            { "kind" : "IdRef", "name" : "'z size'" }
+          ]
+        },
+        {
+          "enumerant" : "LocalSizeHintId",
+          "value" : 39,
+          "capabilities" : [ "Kernel" ],
+          "parameters" : [
+            { "kind" : "IdRef", "name" : "'Local Size Hint'" }
+          ]
+        },
+        {
+          "enumerant" : "PostDepthCoverage",
+          "value" : 4446,
+          "capabilities" : [ "SampleMaskPostDepthCoverage" ]
+        },
+        {
+          "enumerant" : "StencilRefReplacingEXT",
+          "value" : 5027,
+          "capabilities" : [ "StencilExportEXT" ]
+        }
+      ]
+    },
+    {
+      "category" : "ValueEnum",
+      "kind" : "StorageClass",
+      "enumerants" : [
+        {
+          "enumerant" : "UniformConstant",
+          "value" : 0
+        },
+        {
+          "enumerant" : "Input",
+          "value" : 1
+        },
+        {
+          "enumerant" : "Uniform",
+          "value" : 2,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "Output",
+          "value" : 3,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "Workgroup",
+          "value" : 4
+        },
+        {
+          "enumerant" : "CrossWorkgroup",
+          "value" : 5
+        },
+        {
+          "enumerant" : "Private",
+          "value" : 6,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "Function",
+          "value" : 7
+        },
+        {
+          "enumerant" : "Generic",
+          "value" : 8,
+          "capabilities" : [ "GenericPointer" ]
+        },
+        {
+          "enumerant" : "PushConstant",
+          "value" : 9,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "AtomicCounter",
+          "value" : 10,
+          "capabilities" : [ "AtomicStorage" ]
+        },
+        {
+          "enumerant" : "Image",
+          "value" : 11
+        },
+        {
+          "enumerant" : "StorageBuffer",
+          "value" : 12,
+          "extensions" : [
+            "SPV_KHR_storage_buffer_storage_class",
+            "SPV_KHR_variable_pointers"
+          ],
+          "capabilities" : [ "Shader" ]
+        }
+      ]
+    },
+    {
+      "category" : "ValueEnum",
+      "kind" : "Dim",
+      "enumerants" : [
+        {
+          "enumerant" : "1D",
+          "value" : 0,
+          "capabilities" : [ "Sampled1D" ]
+        },
+        {
+          "enumerant" : "2D",
+          "value" : 1
+        },
+        {
+          "enumerant" : "3D",
+          "value" : 2
+        },
+        {
+          "enumerant" : "Cube",
+          "value" : 3,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "Rect",
+          "value" : 4,
+          "capabilities" : [ "SampledRect" ]
+        },
+        {
+          "enumerant" : "Buffer",
+          "value" : 5,
+          "capabilities" : [ "SampledBuffer" ]
+        },
+        {
+          "enumerant" : "SubpassData",
+          "value" : 6,
+          "capabilities" : [ "InputAttachment" ]
+        }
+      ]
+    },
+    {
+      "category" : "ValueEnum",
+      "kind" : "SamplerAddressingMode",
+      "enumerants" : [
+        {
+          "enumerant" : "None",
+          "value" : 0,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "ClampToEdge",
+          "value" : 1,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "Clamp",
+          "value" : 2,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "Repeat",
+          "value" : 3,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "RepeatMirrored",
+          "value" : 4,
+          "capabilities" : [ "Kernel" ]
+        }
+      ]
+    },
+    {
+      "category" : "ValueEnum",
+      "kind" : "SamplerFilterMode",
+      "enumerants" : [
+        {
+          "enumerant" : "Nearest",
+          "value" : 0,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "Linear",
+          "value" : 1,
+          "capabilities" : [ "Kernel" ]
+        }
+      ]
+    },
+    {
+      "category" : "ValueEnum",
+      "kind" : "ImageFormat",
+      "enumerants" : [
+        {
+          "enumerant" : "Unknown",
+          "value" : 0
+        },
+        {
+          "enumerant" : "Rgba32f",
+          "value" : 1,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "Rgba16f",
+          "value" : 2,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "R32f",
+          "value" : 3,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "Rgba8",
+          "value" : 4,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "Rgba8Snorm",
+          "value" : 5,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "Rg32f",
+          "value" : 6,
+          "capabilities" : [ "StorageImageExtendedFormats" ]
+        },
+        {
+          "enumerant" : "Rg16f",
+          "value" : 7,
+          "capabilities" : [ "StorageImageExtendedFormats" ]
+        },
+        {
+          "enumerant" : "R11fG11fB10f",
+          "value" : 8,
+          "capabilities" : [ "StorageImageExtendedFormats" ]
+        },
+        {
+          "enumerant" : "R16f",
+          "value" : 9,
+          "capabilities" : [ "StorageImageExtendedFormats" ]
+        },
+        {
+          "enumerant" : "Rgba16",
+          "value" : 10,
+          "capabilities" : [ "StorageImageExtendedFormats" ]
+        },
+        {
+          "enumerant" : "Rgb10A2",
+          "value" : 11,
+          "capabilities" : [ "StorageImageExtendedFormats" ]
+        },
+        {
+          "enumerant" : "Rg16",
+          "value" : 12,
+          "capabilities" : [ "StorageImageExtendedFormats" ]
+        },
+        {
+          "enumerant" : "Rg8",
+          "value" : 13,
+          "capabilities" : [ "StorageImageExtendedFormats" ]
+        },
+        {
+          "enumerant" : "R16",
+          "value" : 14,
+          "capabilities" : [ "StorageImageExtendedFormats" ]
+        },
+        {
+          "enumerant" : "R8",
+          "value" : 15,
+          "capabilities" : [ "StorageImageExtendedFormats" ]
+        },
+        {
+          "enumerant" : "Rgba16Snorm",
+          "value" : 16,
+          "capabilities" : [ "StorageImageExtendedFormats" ]
+        },
+        {
+          "enumerant" : "Rg16Snorm",
+          "value" : 17,
+          "capabilities" : [ "StorageImageExtendedFormats" ]
+        },
+        {
+          "enumerant" : "Rg8Snorm",
+          "value" : 18,
+          "capabilities" : [ "StorageImageExtendedFormats" ]
+        },
+        {
+          "enumerant" : "R16Snorm",
+          "value" : 19,
+          "capabilities" : [ "StorageImageExtendedFormats" ]
+        },
+        {
+          "enumerant" : "R8Snorm",
+          "value" : 20,
+          "capabilities" : [ "StorageImageExtendedFormats" ]
+        },
+        {
+          "enumerant" : "Rgba32i",
+          "value" : 21,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "Rgba16i",
+          "value" : 22,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "Rgba8i",
+          "value" : 23,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "R32i",
+          "value" : 24,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "Rg32i",
+          "value" : 25,
+          "capabilities" : [ "StorageImageExtendedFormats" ]
+        },
+        {
+          "enumerant" : "Rg16i",
+          "value" : 26,
+          "capabilities" : [ "StorageImageExtendedFormats" ]
+        },
+        {
+          "enumerant" : "Rg8i",
+          "value" : 27,
+          "capabilities" : [ "StorageImageExtendedFormats" ]
+        },
+        {
+          "enumerant" : "R16i",
+          "value" : 28,
+          "capabilities" : [ "StorageImageExtendedFormats" ]
+        },
+        {
+          "enumerant" : "R8i",
+          "value" : 29,
+          "capabilities" : [ "StorageImageExtendedFormats" ]
+        },
+        {
+          "enumerant" : "Rgba32ui",
+          "value" : 30,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "Rgba16ui",
+          "value" : 31,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "Rgba8ui",
+          "value" : 32,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "R32ui",
+          "value" : 33,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "Rgb10a2ui",
+          "value" : 34,
+          "capabilities" : [ "StorageImageExtendedFormats" ]
+        },
+        {
+          "enumerant" : "Rg32ui",
+          "value" : 35,
+          "capabilities" : [ "StorageImageExtendedFormats" ]
+        },
+        {
+          "enumerant" : "Rg16ui",
+          "value" : 36,
+          "capabilities" : [ "StorageImageExtendedFormats" ]
+        },
+        {
+          "enumerant" : "Rg8ui",
+          "value" : 37,
+          "capabilities" : [ "StorageImageExtendedFormats" ]
+        },
+        {
+          "enumerant" : "R16ui",
+          "value" : 38,
+          "capabilities" : [ "StorageImageExtendedFormats" ]
+        },
+        {
+          "enumerant" : "R8ui",
+          "value" : 39,
+          "capabilities" : [ "StorageImageExtendedFormats" ]
+        }
+      ]
+    },
+    {
+      "category" : "ValueEnum",
+      "kind" : "ImageChannelOrder",
+      "enumerants" : [
+        {
+          "enumerant" : "R",
+          "value" : 0,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "A",
+          "value" : 1,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "RG",
+          "value" : 2,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "RA",
+          "value" : 3,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "RGB",
+          "value" : 4,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "RGBA",
+          "value" : 5,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "BGRA",
+          "value" : 6,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "ARGB",
+          "value" : 7,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "Intensity",
+          "value" : 8,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "Luminance",
+          "value" : 9,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "Rx",
+          "value" : 10,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "RGx",
+          "value" : 11,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "RGBx",
+          "value" : 12,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "Depth",
+          "value" : 13,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "DepthStencil",
+          "value" : 14,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "sRGB",
+          "value" : 15,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "sRGBx",
+          "value" : 16,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "sRGBA",
+          "value" : 17,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "sBGRA",
+          "value" : 18,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "ABGR",
+          "value" : 19,
+          "capabilities" : [ "Kernel" ]
+        }
+      ]
+    },
+    {
+      "category" : "ValueEnum",
+      "kind" : "ImageChannelDataType",
+      "enumerants" : [
+        {
+          "enumerant" : "SnormInt8",
+          "value" : 0,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "SnormInt16",
+          "value" : 1,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "UnormInt8",
+          "value" : 2,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "UnormInt16",
+          "value" : 3,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "UnormShort565",
+          "value" : 4,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "UnormShort555",
+          "value" : 5,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "UnormInt101010",
+          "value" : 6,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "SignedInt8",
+          "value" : 7,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "SignedInt16",
+          "value" : 8,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "SignedInt32",
+          "value" : 9,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "UnsignedInt8",
+          "value" : 10,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "UnsignedInt16",
+          "value" : 11,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "UnsignedInt32",
+          "value" : 12,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "HalfFloat",
+          "value" : 13,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "Float",
+          "value" : 14,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "UnormInt24",
+          "value" : 15,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "UnormInt101010_2",
+          "value" : 16,
+          "capabilities" : [ "Kernel" ]
+        }
+      ]
+    },
+    {
+      "category" : "ValueEnum",
+      "kind" : "FPRoundingMode",
+      "enumerants" : [
+        {
+          "enumerant" : "RTE",
+          "value" : 0,
+          "capabilities" : [
+            "Kernel",
+            "StorageUniformBufferBlock16",
+            "StorageUniform16",
+            "StoragePushConstant16",
+            "StorageInputOutput16"
+          ]
+        },
+        {
+          "enumerant" : "RTZ",
+          "value" : 1,
+          "capabilities" : [
+            "Kernel",
+            "StorageUniformBufferBlock16",
+            "StorageUniform16",
+            "StoragePushConstant16",
+            "StorageInputOutput16"
+          ]
+        },
+        {
+          "enumerant" : "RTP",
+          "value" : 2,
+          "capabilities" : [
+            "Kernel",
+            "StorageUniformBufferBlock16",
+            "StorageUniform16",
+            "StoragePushConstant16",
+            "StorageInputOutput16"
+          ]
+        },
+        {
+          "enumerant" : "RTN",
+          "value" : 3,
+          "capabilities" : [
+            "Kernel",
+            "StorageUniformBufferBlock16",
+            "StorageUniform16",
+            "StoragePushConstant16",
+            "StorageInputOutput16"
+          ]
+        }
+      ]
+    },
+    {
+      "category" : "ValueEnum",
+      "kind" : "LinkageType",
+      "enumerants" : [
+        {
+          "enumerant" : "Export",
+          "value" : 0,
+          "capabilities" : [ "Linkage" ]
+        },
+        {
+          "enumerant" : "Import",
+          "value" : 1,
+          "capabilities" : [ "Linkage" ]
+        }
+      ]
+    },
+    {
+      "category" : "ValueEnum",
+      "kind" : "AccessQualifier",
+      "enumerants" : [
+        {
+          "enumerant" : "ReadOnly",
+          "value" : 0,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "WriteOnly",
+          "value" : 1,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "ReadWrite",
+          "value" : 2,
+          "capabilities" : [ "Kernel" ]
+        }
+      ]
+    },
+    {
+      "category" : "ValueEnum",
+      "kind" : "FunctionParameterAttribute",
+      "enumerants" : [
+        {
+          "enumerant" : "Zext",
+          "value" : 0,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "Sext",
+          "value" : 1,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "ByVal",
+          "value" : 2,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "Sret",
+          "value" : 3,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "NoAlias",
+          "value" : 4,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "NoCapture",
+          "value" : 5,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "NoWrite",
+          "value" : 6,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "NoReadWrite",
+          "value" : 7,
+          "capabilities" : [ "Kernel" ]
+        }
+      ]
+    },
+    {
+      "category" : "ValueEnum",
+      "kind" : "Decoration",
+      "enumerants" : [
+        {
+          "enumerant" : "RelaxedPrecision",
+          "value" : 0,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "SpecId",
+          "value" : 1,
+          "capabilities" : [ "Shader", "Kernel" ],
+          "parameters" : [
+            { "kind" : "LiteralInteger", "name" : "'Specialization Constant ID'" }
+          ]
+        },
+        {
+          "enumerant" : "Block",
+          "value" : 2,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "BufferBlock",
+          "value" : 3,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "RowMajor",
+          "value" : 4,
+          "capabilities" : [ "Matrix" ]
+        },
+        {
+          "enumerant" : "ColMajor",
+          "value" : 5,
+          "capabilities" : [ "Matrix" ]
+        },
+        {
+          "enumerant" : "ArrayStride",
+          "value" : 6,
+          "capabilities" : [ "Shader" ],
+          "parameters" : [
+            { "kind" : "LiteralInteger", "name" : "'Array Stride'" }
+          ]
+        },
+        {
+          "enumerant" : "MatrixStride",
+          "value" : 7,
+          "capabilities" : [ "Matrix" ],
+          "parameters" : [
+            { "kind" : "LiteralInteger", "name" : "'Matrix Stride'" }
+          ]
+        },
+        {
+          "enumerant" : "GLSLShared",
+          "value" : 8,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "GLSLPacked",
+          "value" : 9,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "CPacked",
+          "value" : 10,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "BuiltIn",
+          "value" : 11,
+          "parameters" : [
+            { "kind" : "BuiltIn" }
+          ]
+        },
+        {
+          "enumerant" : "NoPerspective",
+          "value" : 13,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "Flat",
+          "value" : 14,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "Patch",
+          "value" : 15,
+          "capabilities" : [ "Tessellation" ]
+        },
+        {
+          "enumerant" : "Centroid",
+          "value" : 16,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "Sample",
+          "value" : 17,
+          "capabilities" : [ "SampleRateShading" ]
+        },
+        {
+          "enumerant" : "Invariant",
+          "value" : 18,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "Restrict",
+          "value" : 19
+        },
+        {
+          "enumerant" : "Aliased",
+          "value" : 20
+        },
+        {
+          "enumerant" : "Volatile",
+          "value" : 21
+        },
+        {
+          "enumerant" : "Constant",
+          "value" : 22,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "Coherent",
+          "value" : 23
+        },
+        {
+          "enumerant" : "NonWritable",
+          "value" : 24
+        },
+        {
+          "enumerant" : "NonReadable",
+          "value" : 25
+        },
+        {
+          "enumerant" : "Uniform",
+          "value" : 26,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "SaturatedConversion",
+          "value" : 28,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "Stream",
+          "value" : 29,
+          "capabilities" : [ "GeometryStreams" ],
+          "parameters" : [
+            { "kind" : "LiteralInteger", "name" : "'Stream Number'" }
+          ]
+        },
+        {
+          "enumerant" : "Location",
+          "value" : 30,
+          "capabilities" : [ "Shader" ],
+          "parameters" : [
+            { "kind" : "LiteralInteger", "name" : "'Location'" }
+          ]
+        },
+        {
+          "enumerant" : "Component",
+          "value" : 31,
+          "capabilities" : [ "Shader" ],
+          "parameters" : [
+            { "kind" : "LiteralInteger", "name" : "'Component'" }
+          ]
+        },
+        {
+          "enumerant" : "Index",
+          "value" : 32,
+          "capabilities" : [ "Shader" ],
+          "parameters" : [
+            { "kind" : "LiteralInteger", "name" : "'Index'" }
+          ]
+        },
+        {
+          "enumerant" : "Binding",
+          "value" : 33,
+          "capabilities" : [ "Shader" ],
+          "parameters" : [
+            { "kind" : "LiteralInteger", "name" : "'Binding Point'" }
+          ]
+        },
+        {
+          "enumerant" : "DescriptorSet",
+          "value" : 34,
+          "capabilities" : [ "Shader" ],
+          "parameters" : [
+            { "kind" : "LiteralInteger", "name" : "'Descriptor Set'" }
+          ]
+        },
+        {
+          "enumerant" : "Offset",
+          "value" : 35,
+          "capabilities" : [ "Shader" ],
+          "parameters" : [
+            { "kind" : "LiteralInteger", "name" : "'Byte Offset'" }
+          ]
+        },
+        {
+          "enumerant" : "XfbBuffer",
+          "value" : 36,
+          "capabilities" : [ "TransformFeedback" ],
+          "parameters" : [
+            { "kind" : "LiteralInteger", "name" : "'XFB Buffer Number'" }
+          ]
+        },
+        {
+          "enumerant" : "XfbStride",
+          "value" : 37,
+          "capabilities" : [ "TransformFeedback" ],
+          "parameters" : [
+            { "kind" : "LiteralInteger", "name" : "'XFB Stride'" }
+          ]
+        },
+        {
+          "enumerant" : "FuncParamAttr",
+          "value" : 38,
+          "capabilities" : [ "Kernel" ],
+          "parameters" : [
+            { "kind" : "FunctionParameterAttribute", "name" : "'Function Parameter Attribute'" }
+          ]
+        },
+        {
+          "enumerant" : "FPRoundingMode",
+          "value" : 39,
+          "capabilities" : [
+            "Kernel",
+            "StorageUniformBufferBlock16",
+            "StorageUniform16",
+            "StoragePushConstant16",
+            "StorageInputOutput16"
+          ],
+          "parameters" : [
+            { "kind" : "FPRoundingMode", "name" : "'Floating-Point Rounding Mode'" }
+          ]
+        },
+        {
+          "enumerant" : "FPFastMathMode",
+          "value" : 40,
+          "capabilities" : [ "Kernel" ],
+          "parameters" : [
+            { "kind" : "FPFastMathMode", "name" : "'Fast-Math Mode'" }
+          ]
+        },
+        {
+          "enumerant" : "LinkageAttributes",
+          "value" : 41,
+          "capabilities" : [ "Linkage" ],
+          "parameters" : [
+            { "kind" : "LiteralString", "name" : "'Name'" },
+            { "kind" : "LinkageType",   "name" : "'Linkage Type'" }
+          ]
+        },
+        {
+          "enumerant" : "NoContraction",
+          "value" : 42,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "InputAttachmentIndex",
+          "value" : 43,
+          "capabilities" : [ "InputAttachment" ],
+          "parameters" : [
+            { "kind" : "LiteralInteger", "name" : "'Attachment Index'" }
+          ]
+        },
+        {
+          "enumerant" : "Alignment",
+          "value" : 44,
+          "capabilities" : [ "Kernel" ],
+          "parameters" : [
+            { "kind" : "LiteralInteger", "name" : "'Alignment'" }
+          ]
+        },
+        {
+          "enumerant" : "MaxByteOffset",
+          "value" : 45,
+          "capabilities" : [ "Addresses" ],
+          "parameters" : [
+            { "kind" : "LiteralInteger", "name" : "'Max Byte Offset'" }
+          ]
+        },
+        {
+          "enumerant" : "AlignmentId",
+          "value" : 46,
+          "capabilities" : [ "Kernel" ],
+          "parameters" : [
+            { "kind" : "IdRef", "name" : "'Alignment'" }
+          ]
+        },
+        {
+          "enumerant" : "MaxByteOffsetId",
+          "value" : 47,
+          "capabilities" : [ "Addresses" ],
+          "parameters" : [
+            { "kind" : "IdRef", "name" : "'Max Byte Offset'" }
+          ]
+        },
+        {
+          "enumerant" : "ExplicitInterpAMD",
+          "value" : 4999
+        },
+        {
+          "enumerant" : "OverrideCoverageNV",
+          "value" : 5248,
+          "capabilities" : [ "SampleMaskOverrideCoverageNV" ]
+        },
+        {
+          "enumerant" : "PassthroughNV",
+          "value" : 5250,
+          "capabilities" : [ "GeometryShaderPassthroughNV" ]
+        },
+        {
+          "enumerant" : "ViewportRelativeNV",
+          "value" : 5252,
+          "capabilities" : [ "ShaderViewportMaskNV" ]
+        },
+        {
+          "enumerant" : "SecondaryViewportRelativeNV",
+          "value" : 5256,
+          "capabilities" : [ "ShaderStereoViewNV" ],
+          "parameters" : [
+            { "kind" : "LiteralInteger", "name" : "'Offset'" }
+          ]
+        },
+        {
+          "enumerant" : "HlslCounterBufferGOOGLE",
+          "value" : 5634,
+          "parameters" : [
+            { "kind" : "IdRef", "name" : "'Counter Buffer'" }
+          ],
+          "extensions" : [ "SPV_GOOGLE_hlsl_functionality1" ]
+        },
+        {
+          "enumerant" : "HlslSemanticGOOGLE",
+          "value" : 5635,
+          "parameters" : [
+            { "kind" : "LiteralString", "name" : "'Semantic'" }
+          ],
+          "extensions" : [ "SPV_GOOGLE_hlsl_functionality1" ]
+        }
+      ]
+    },
+    {
+      "category" : "ValueEnum",
+      "kind" : "BuiltIn",
+      "enumerants" : [
+        {
+          "enumerant" : "Position",
+          "value" : 0,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "PointSize",
+          "value" : 1,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "ClipDistance",
+          "value" : 3,
+          "capabilities" : [ "ClipDistance" ]
+        },
+        {
+          "enumerant" : "CullDistance",
+          "value" : 4,
+          "capabilities" : [ "CullDistance" ]
+        },
+        {
+          "enumerant" : "VertexId",
+          "value" : 5,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "InstanceId",
+          "value" : 6,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "PrimitiveId",
+          "value" : 7,
+          "capabilities" : [ "Geometry", "Tessellation" ]
+        },
+        {
+          "enumerant" : "InvocationId",
+          "value" : 8,
+          "capabilities" : [ "Geometry", "Tessellation" ]
+        },
+        {
+          "enumerant" : "Layer",
+          "value" : 9,
+          "capabilities" : [ "Geometry" ]
+        },
+        {
+          "enumerant" : "ViewportIndex",
+          "value" : 10,
+          "capabilities" : [ "MultiViewport" ]
+        },
+        {
+          "enumerant" : "TessLevelOuter",
+          "value" : 11,
+          "capabilities" : [ "Tessellation" ]
+        },
+        {
+          "enumerant" : "TessLevelInner",
+          "value" : 12,
+          "capabilities" : [ "Tessellation" ]
+        },
+        {
+          "enumerant" : "TessCoord",
+          "value" : 13,
+          "capabilities" : [ "Tessellation" ]
+        },
+        {
+          "enumerant" : "PatchVertices",
+          "value" : 14,
+          "capabilities" : [ "Tessellation" ]
+        },
+        {
+          "enumerant" : "FragCoord",
+          "value" : 15,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "PointCoord",
+          "value" : 16,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "FrontFacing",
+          "value" : 17,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "SampleId",
+          "value" : 18,
+          "capabilities" : [ "SampleRateShading" ]
+        },
+        {
+          "enumerant" : "SamplePosition",
+          "value" : 19,
+          "capabilities" : [ "SampleRateShading" ]
+        },
+        {
+          "enumerant" : "SampleMask",
+          "value" : 20,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "FragDepth",
+          "value" : 22,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "HelperInvocation",
+          "value" : 23,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "NumWorkgroups",
+          "value" : 24
+        },
+        {
+          "enumerant" : "WorkgroupSize",
+          "value" : 25
+        },
+        {
+          "enumerant" : "WorkgroupId",
+          "value" : 26
+        },
+        {
+          "enumerant" : "LocalInvocationId",
+          "value" : 27
+        },
+        {
+          "enumerant" : "GlobalInvocationId",
+          "value" : 28
+        },
+        {
+          "enumerant" : "LocalInvocationIndex",
+          "value" : 29
+        },
+        {
+          "enumerant" : "WorkDim",
+          "value" : 30,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "GlobalSize",
+          "value" : 31,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "EnqueuedWorkgroupSize",
+          "value" : 32,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "GlobalOffset",
+          "value" : 33,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "GlobalLinearId",
+          "value" : 34,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "SubgroupSize",
+          "value" : 36,
+          "capabilities" : [ "Kernel", "SubgroupBallotKHR" ]
+        },
+        {
+          "enumerant" : "SubgroupMaxSize",
+          "value" : 37,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "NumSubgroups",
+          "value" : 38,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "NumEnqueuedSubgroups",
+          "value" : 39,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "SubgroupId",
+          "value" : 40,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "SubgroupLocalInvocationId",
+          "value" : 41,
+          "capabilities" : [ "Kernel", "SubgroupBallotKHR" ]
+        },
+        {
+          "enumerant" : "VertexIndex",
+          "value" : 42,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "InstanceIndex",
+          "value" : 43,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "SubgroupEqMaskKHR",
+          "value" : 4416,
+          "capabilities" : [ "SubgroupBallotKHR" ]
+        },
+        {
+          "enumerant" : "SubgroupGeMaskKHR",
+          "value" : 4417,
+          "capabilities" : [ "SubgroupBallotKHR" ]
+        },
+        {
+          "enumerant" : "SubgroupGtMaskKHR",
+          "value" : 4418,
+          "capabilities" : [ "SubgroupBallotKHR" ]
+        },
+        {
+          "enumerant" : "SubgroupLeMaskKHR",
+          "value" : 4419,
+          "capabilities" : [ "SubgroupBallotKHR" ]
+        },
+        {
+          "enumerant" : "SubgroupLtMaskKHR",
+          "value" : 4420,
+          "capabilities" : [ "SubgroupBallotKHR" ]
+        },
+        {
+          "enumerant" : "BaseVertex",
+          "value" : 4424,
+          "capabilities" : [ "DrawParameters" ]
+        },
+        {
+          "enumerant" : "BaseInstance",
+          "value" : 4425,
+          "capabilities" : [ "DrawParameters" ]
+        },
+        {
+          "enumerant" : "DrawIndex",
+          "value" : 4426,
+          "capabilities" : [ "DrawParameters" ]
+        },
+        {
+          "enumerant" : "DeviceIndex",
+          "value" : 4438,
+          "capabilities" : [ "DeviceGroup" ]
+        },
+        {
+          "enumerant" : "ViewIndex",
+          "value" : 4440,
+          "capabilities" : [ "MultiView" ]
+        },
+        {
+          "enumerant" : "BaryCoordNoPerspAMD",
+          "value" : 4992
+        },
+        {
+          "enumerant" : "BaryCoordNoPerspCentroidAMD",
+          "value" : 4993
+        },
+        {
+          "enumerant" : "BaryCoordNoPerspSampleAMD",
+          "value" : 4994
+        },
+        {
+          "enumerant" : "BaryCoordSmoothAMD",
+          "value" : 4995
+        },
+        {
+          "enumerant" : "BaryCoordSmoothCentroidAMD",
+          "value" : 4996
+        },
+        {
+          "enumerant" : "BaryCoordSmoothSampleAMD",
+          "value" : 4997
+        },
+        {
+          "enumerant" : "BaryCoordPullModelAMD",
+          "value" : 4998
+        },
+        {
+          "enumerant" : "FragStencilRefEXT",
+          "value" : 5014,
+          "capabilities" : [ "StencilExportEXT" ]
+        },
+        {
+          "enumerant" : "ViewportMaskNV",
+          "value" : 5253,
+          "capabilities" : [ "ShaderViewportMaskNV" ]
+        },
+        {
+          "enumerant" : "SecondaryPositionNV",
+          "value" : 5257,
+          "capabilities" : [ "ShaderStereoViewNV" ]
+        },
+        {
+          "enumerant" : "SecondaryViewportMaskNV",
+          "value" : 5258,
+          "capabilities" : [ "ShaderStereoViewNV" ]
+        },
+        {
+          "enumerant" : "PositionPerViewNV",
+          "value" : 5261,
+          "capabilities" : [ "PerViewAttributesNV" ]
+        },
+        {
+          "enumerant" : "ViewportMaskPerViewNV",
+          "value" : 5262,
+          "capabilities" : [ "PerViewAttributesNV" ]
+        }
+      ]
+    },
+    {
+      "category" : "ValueEnum",
+      "kind" : "Scope",
+      "enumerants" : [
+        {
+          "enumerant" : "CrossDevice",
+          "value" : 0
+        },
+        {
+          "enumerant" : "Device",
+          "value" : 1
+        },
+        {
+          "enumerant" : "Workgroup",
+          "value" : 2
+        },
+        {
+          "enumerant" : "Subgroup",
+          "value" : 3
+        },
+        {
+          "enumerant" : "Invocation",
+          "value" : 4
+        }
+      ]
+    },
+    {
+      "category" : "ValueEnum",
+      "kind" : "GroupOperation",
+      "enumerants" : [
+        {
+          "enumerant" : "Reduce",
+          "value" : 0,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "InclusiveScan",
+          "value" : 1,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "ExclusiveScan",
+          "value" : 2,
+          "capabilities" : [ "Kernel" ]
+        }
+      ]
+    },
+    {
+      "category" : "ValueEnum",
+      "kind" : "KernelEnqueueFlags",
+      "enumerants" : [
+        {
+          "enumerant" : "NoWait",
+          "value" : 0,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "WaitKernel",
+          "value" : 1,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "WaitWorkGroup",
+          "value" : 2,
+          "capabilities" : [ "Kernel" ]
+        }
+      ]
+    },
+    {
+      "category" : "ValueEnum",
+      "kind" : "Capability",
+      "enumerants" : [
+        {
+          "enumerant" : "Matrix",
+          "value" : 0
+        },
+        {
+          "enumerant" : "Shader",
+          "value" : 1,
+          "capabilities" : [ "Matrix" ]
+        },
+        {
+          "enumerant" : "Geometry",
+          "value" : 2,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "Tessellation",
+          "value" : 3,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "Addresses",
+          "value" : 4
+        },
+        {
+          "enumerant" : "Linkage",
+          "value" : 5
+        },
+        {
+          "enumerant" : "Kernel",
+          "value" : 6
+        },
+        {
+          "enumerant" : "Vector16",
+          "value" : 7,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "Float16Buffer",
+          "value" : 8,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "Float16",
+          "value" : 9
+        },
+        {
+          "enumerant" : "Float64",
+          "value" : 10
+        },
+        {
+          "enumerant" : "Int64",
+          "value" : 11
+        },
+        {
+          "enumerant" : "Int64Atomics",
+          "value" : 12,
+          "capabilities" : [ "Int64" ]
+        },
+        {
+          "enumerant" : "ImageBasic",
+          "value" : 13,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "ImageReadWrite",
+          "value" : 14,
+          "capabilities" : [ "ImageBasic" ]
+        },
+        {
+          "enumerant" : "ImageMipmap",
+          "value" : 15,
+          "capabilities" : [ "ImageBasic" ]
+        },
+        {
+          "enumerant" : "Pipes",
+          "value" : 17,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "Groups",
+          "value" : 18
+        },
+        {
+          "enumerant" : "DeviceEnqueue",
+          "value" : 19,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "LiteralSampler",
+          "value" : 20,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "AtomicStorage",
+          "value" : 21,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "Int16",
+          "value" : 22
+        },
+        {
+          "enumerant" : "TessellationPointSize",
+          "value" : 23,
+          "capabilities" : [ "Tessellation" ]
+        },
+        {
+          "enumerant" : "GeometryPointSize",
+          "value" : 24,
+          "capabilities" : [ "Geometry" ]
+        },
+        {
+          "enumerant" : "ImageGatherExtended",
+          "value" : 25,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "StorageImageMultisample",
+          "value" : 27,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "UniformBufferArrayDynamicIndexing",
+          "value" : 28,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "SampledImageArrayDynamicIndexing",
+          "value" : 29,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "StorageBufferArrayDynamicIndexing",
+          "value" : 30,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "StorageImageArrayDynamicIndexing",
+          "value" : 31,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "ClipDistance",
+          "value" : 32,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "CullDistance",
+          "value" : 33,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "ImageCubeArray",
+          "value" : 34,
+          "capabilities" : [ "SampledCubeArray" ]
+        },
+        {
+          "enumerant" : "SampleRateShading",
+          "value" : 35,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "ImageRect",
+          "value" : 36,
+          "capabilities" : [ "SampledRect" ]
+        },
+        {
+          "enumerant" : "SampledRect",
+          "value" : 37,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "GenericPointer",
+          "value" : 38,
+          "capabilities" : [ "Addresses" ]
+        },
+        {
+          "enumerant" : "Int8",
+          "value" : 39,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "InputAttachment",
+          "value" : 40,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "SparseResidency",
+          "value" : 41,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "MinLod",
+          "value" : 42,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "Sampled1D",
+          "value" : 43
+        },
+        {
+          "enumerant" : "Image1D",
+          "value" : 44,
+          "capabilities" : [ "Sampled1D" ]
+        },
+        {
+          "enumerant" : "SampledCubeArray",
+          "value" : 45,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "SampledBuffer",
+          "value" : 46
+        },
+        {
+          "enumerant" : "ImageBuffer",
+          "value" : 47,
+          "capabilities" : [ "SampledBuffer" ]
+        },
+        {
+          "enumerant" : "ImageMSArray",
+          "value" : 48,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "StorageImageExtendedFormats",
+          "value" : 49,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "ImageQuery",
+          "value" : 50,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "DerivativeControl",
+          "value" : 51,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "InterpolationFunction",
+          "value" : 52,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "TransformFeedback",
+          "value" : 53,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "GeometryStreams",
+          "value" : 54,
+          "capabilities" : [ "Geometry" ]
+        },
+        {
+          "enumerant" : "StorageImageReadWithoutFormat",
+          "value" : 55,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "StorageImageWriteWithoutFormat",
+          "value" : 56,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "MultiViewport",
+          "value" : 57,
+          "capabilities" : [ "Geometry" ]
+        },
+        {
+          "enumerant" : "SubgroupDispatch",
+          "value" : 58,
+          "capabilities" : [ "DeviceEnqueue" ]
+        },
+        {
+          "enumerant" : "NamedBarrier",
+          "value" : 59,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "PipeStorage",
+          "value" : 60,
+          "capabilities" : [ "Pipes" ]
+        },
+        {
+          "enumerant" : "SubgroupBallotKHR",
+          "value" : 4423,
+          "extensions" : [ "SPV_KHR_shader_ballot" ]
+        },
+        {
+          "enumerant" : "DrawParameters",
+          "value" : 4427,
+          "extensions" : [ "SPV_KHR_shader_draw_parameters" ]
+        },
+        {
+          "enumerant" : "SubgroupVoteKHR",
+          "value" : 4431,
+          "extensions" : [ "SPV_KHR_subgroup_vote" ]
+        },
+        {
+          "enumerant" : "StorageBuffer16BitAccess",
+          "value" : 4433,
+          "extensions" : [ "SPV_KHR_16bit_storage" ]
+        },
+        {
+          "enumerant" : "StorageUniformBufferBlock16",
+          "value" : 4433,
+          "extensions" : [ "SPV_KHR_16bit_storage" ]
+        },
+        {
+          "enumerant" : "UniformAndStorageBuffer16BitAccess",
+          "value" : 4434,
+          "capabilities" : [
+            "StorageBuffer16BitAccess",
+            "StorageUniformBufferBlock16"
+          ],
+          "extensions" : [ "SPV_KHR_16bit_storage" ]
+        },
+        {
+          "enumerant" : "StorageUniform16",
+          "value" : 4434,
+          "capabilities" : [
+            "StorageBuffer16BitAccess",
+            "StorageUniformBufferBlock16"
+          ],
+          "extensions" : [ "SPV_KHR_16bit_storage" ]
+        },
+        {
+          "enumerant" : "StoragePushConstant16",
+          "value" : 4435,
+          "extensions" : [ "SPV_KHR_16bit_storage" ]
+        },
+        {
+          "enumerant" : "StorageInputOutput16",
+          "value" : 4436,
+          "extensions" : [ "SPV_KHR_16bit_storage" ]
+        },
+        {
+          "enumerant" : "DeviceGroup",
+          "value" : 4437,
+          "extensions" : [ "SPV_KHR_device_group" ]
+        },
+        {
+          "enumerant" : "MultiView",
+          "value" : 4439,
+          "capabilities" : [ "Shader" ],
+          "extensions" : [ "SPV_KHR_multiview" ]
+        },
+        {
+          "enumerant" : "VariablePointersStorageBuffer",
+          "value" : 4441,
+          "capabilities" : [ "Shader" ],
+          "extensions" : [ "SPV_KHR_variable_pointers" ]
+        },
+        {
+          "enumerant" : "VariablePointers",
+          "value" : 4442,
+          "capabilities" : [ "VariablePointersStorageBuffer" ],
+          "extensions" : [ "SPV_KHR_variable_pointers" ]
+        },
+        {
+            "enumerant": "AtomicStorageOps",
+            "value": 4445,
+            "extensions": [ "SPV_KHR_shader_atomic_counter_ops" ]
+        },
+        {
+          "enumerant" : "SampleMaskPostDepthCoverage",
+          "value" : 4447,
+          "extensions" : [ "SPV_KHR_post_depth_coverage" ]
+        },
+        {
+          "enumerant" : "ImageGatherBiasLodAMD",
+          "value" : 5009,
+          "capabilities" : [ "Shader" ],
+          "extensions" : [ "SPV_AMD_texture_gather_bias_lod" ]
+        },
+        {
+          "enumerant" : "FragmentMaskAMD",
+          "value" : 5010,
+          "capabilities" : [ "Shader" ],
+          "extensions" : [ "SPV_AMD_shader_fragment_mask" ]
+        },
+        {
+          "enumerant" : "StencilExportEXT",
+          "value" : 5013,
+          "capabilities" : [ "Shader" ],
+          "extensions" : [ "SPV_EXT_shader_stencil_export" ]
+        },
+        {
+          "enumerant" : "ImageReadWriteLodAMD",
+          "value" : 5015,
+          "capabilities" : [ "Shader" ],
+          "extensions" : [ "SPV_AMD_shader_image_load_store_lod" ]
+        },
+        {
+          "enumerant" : "SampleMaskOverrideCoverageNV",
+          "value" : 5249,
+          "capabilities" : [ "SampleRateShading" ],
+          "extensions" : [ "SPV_NV_sample_mask_override_coverage" ]
+        },
+        {
+          "enumerant" : "GeometryShaderPassthroughNV",
+          "value" : 5251,
+          "capabilities" : [ "Geometry" ],
+          "extensions" : [ "SPV_NV_geometry_shader_passthrough" ]
+        },
+        {
+          "enumerant" : "ShaderViewportIndexLayerEXT",
+          "value" : 5254,
+          "capabilities" : [ "MultiViewport" ],
+          "extensions" : [ "SPV_EXT_shader_viewport_index_layer" ]
+        },
+        {
+          "enumerant" : "ShaderViewportIndexLayerNV",
+          "value" : 5254,
+          "capabilities" : [ "MultiViewport" ],
+          "extensions" : [ "SPV_NV_viewport_array2" ]
+        },
+        {
+          "enumerant" : "ShaderViewportMaskNV",
+          "value" : 5255,
+          "capabilities" : [ "ShaderViewportIndexLayerNV" ],
+          "extensions" : [ "SPV_NV_viewport_array2" ]
+        },
+        {
+          "enumerant" : "ShaderStereoViewNV",
+          "value" : 5259,
+          "capabilities" : [ "ShaderViewportMaskNV" ],
+          "extensions" : [ "SPV_NV_stereo_view_rendering" ]
+        },
+        {
+          "enumerant" : "PerViewAttributesNV",
+          "value" : 5260,
+          "capabilities" : [ "MultiView" ],
+          "extensions" : [ "SPV_NVX_multiview_per_view_attributes" ]
+        },
+        {
+          "enumerant" : "SubgroupShuffleINTEL",
+          "value" : 5568,
+          "extensions" : [ "SPV_INTEL_subgroups" ]
+        },
+        {
+          "enumerant" : "SubgroupBufferBlockIOINTEL",
+          "value" : 5569,
+          "extensions" : [ "SPV_INTEL_subgroups" ]
+        },
+        {
+          "enumerant" : "SubgroupImageBlockIOINTEL",
+          "value" : 5570,
+          "extensions" : [ "SPV_INTEL_subgroups" ]
+        }
+      ]
+    },
+    {
+      "category" : "Id",
+      "kind" : "IdResultType",
+      "doc" : "Reference to an <id> representing the result's type of the enclosing instruction"
+    },
+    {
+      "category" : "Id",
+      "kind" : "IdResult",
+      "doc" : "Definition of an <id> representing the result of the enclosing instruction"
+    },
+    {
+      "category" : "Id",
+      "kind" : "IdMemorySemantics",
+      "doc" : "Reference to an <id> representing a 32-bit integer that is a mask from the MemorySemantics operand kind"
+    },
+    {
+      "category" : "Id",
+      "kind" : "IdScope",
+      "doc" : "Reference to an <id> representing a 32-bit integer that is a mask from the Scope operand kind"
+    },
+    {
+      "category" : "Id",
+      "kind" : "IdRef",
+      "doc" : "Reference to an <id>"
+    },
+    {
+      "category" : "Literal",
+      "kind" : "LiteralInteger",
+      "doc" : "An integer consuming one or more words"
+    },
+    {
+      "category" : "Literal",
+      "kind" : "LiteralString",
+      "doc" : "A null-terminated stream of characters consuming an integral number of words"
+    },
+    {
+      "category" : "Literal",
+      "kind" : "LiteralContextDependentNumber",
+      "doc" : "A literal number whose size and format are determined by a previous operand in the enclosing instruction"
+    },
+    {
+      "category" : "Literal",
+      "kind" : "LiteralExtInstInteger",
+      "doc" : "A 32-bit unsigned integer indicating which instruction to use and determining the layout of following operands (for OpExtInst)"
+    },
+    {
+      "category" : "Literal",
+      "kind" : "LiteralSpecConstantOpInteger",
+      "doc" : "An opcode indicating the operation to be performed and determining the layout of following operands (for OpSpecConstantOp)"
+    },
+    {
+      "category" : "Composite",
+      "kind" : "PairLiteralIntegerIdRef",
+      "bases" : [ "LiteralInteger", "IdRef" ]
+    },
+    {
+      "category" : "Composite",
+      "kind" : "PairIdRefLiteralInteger",
+      "bases" : [ "IdRef", "LiteralInteger" ]
+    },
+    {
+      "category" : "Composite",
+      "kind" : "PairIdRefIdRef",
+      "bases" : [ "IdRef", "IdRef" ]
+    }
+  ]
+}
diff --git a/libs/spirv-headers/spirv/1.2/spirv.cs b/libs/spirv-headers/spirv/1.2/spirv.cs
new file mode 100644
index 00000000000..493303d6ab0
--- /dev/null
+++ b/libs/spirv-headers/spirv/1.2/spirv.cs
@@ -0,0 +1,1021 @@
+// Copyright (c) 2014-2018 The Khronos Group Inc.
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and/or associated documentation files (the "Materials"),
+// to deal in the Materials without restriction, including without limitation
+// the rights to use, copy, modify, merge, publish, distribute, sublicense,
+// and/or sell copies of the Materials, and to permit persons to whom the
+// Materials are furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Materials.
+// 
+// MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS KHRONOS
+// STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS SPECIFICATIONS AND
+// HEADER INFORMATION ARE LOCATED AT https://www.khronos.org/registry/ 
+// 
+// THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM,OUT OF OR IN CONNECTION WITH THE MATERIALS OR THE USE OR OTHER DEALINGS
+// IN THE MATERIALS.
+
+// This header is automatically generated by the same tool that creates
+// the Binary Section of the SPIR-V specification.
+
+// Enumeration tokens for SPIR-V, in various styles:
+//   C, C++, C++11, JSON, Lua, Python, C#
+// 
+// - C will have tokens with a "Spv" prefix, e.g.: SpvSourceLanguageGLSL
+// - C++ will have tokens in the "spv" name space, e.g.: spv::SourceLanguageGLSL
+// - C++11 will use enum classes in the spv namespace, e.g.: spv::SourceLanguage::GLSL
+// - Lua will use tables, e.g.: spv.SourceLanguage.GLSL
+// - Python will use dictionaries, e.g.: spv['SourceLanguage']['GLSL']
+// - C# will use enum classes in the Specification class located in the "Spv" namespace, e.g.: Spv.Specification.SourceLanguage.GLSL
+// 
+// Some tokens act like mask values, which can be OR'd together,
+// while others are mutually exclusive.  The mask-like ones have
+// "Mask" in their name, and a parallel enum that has the shift
+// amount (1 << x) for each corresponding enumerant.
+
+namespace Spv
+{
+
+    public static class Specification
+    {
+        public const uint MagicNumber = 0x07230203;
+        public const uint Version = 0x00010200;
+        public const uint Revision = 2;
+        public const uint OpCodeMask = 0xffff;
+        public const uint WordCountShift = 16;
+
+        public enum SourceLanguage
+        {
+            Unknown = 0,
+            ESSL = 1,
+            GLSL = 2,
+            OpenCL_C = 3,
+            OpenCL_CPP = 4,
+            HLSL = 5,
+        }
+
+        public enum ExecutionModel
+        {
+            Vertex = 0,
+            TessellationControl = 1,
+            TessellationEvaluation = 2,
+            Geometry = 3,
+            Fragment = 4,
+            GLCompute = 5,
+            Kernel = 6,
+        }
+
+        public enum AddressingModel
+        {
+            Logical = 0,
+            Physical32 = 1,
+            Physical64 = 2,
+        }
+
+        public enum MemoryModel
+        {
+            Simple = 0,
+            GLSL450 = 1,
+            OpenCL = 2,
+        }
+
+        public enum ExecutionMode
+        {
+            Invocations = 0,
+            SpacingEqual = 1,
+            SpacingFractionalEven = 2,
+            SpacingFractionalOdd = 3,
+            VertexOrderCw = 4,
+            VertexOrderCcw = 5,
+            PixelCenterInteger = 6,
+            OriginUpperLeft = 7,
+            OriginLowerLeft = 8,
+            EarlyFragmentTests = 9,
+            PointMode = 10,
+            Xfb = 11,
+            DepthReplacing = 12,
+            DepthGreater = 14,
+            DepthLess = 15,
+            DepthUnchanged = 16,
+            LocalSize = 17,
+            LocalSizeHint = 18,
+            InputPoints = 19,
+            InputLines = 20,
+            InputLinesAdjacency = 21,
+            Triangles = 22,
+            InputTrianglesAdjacency = 23,
+            Quads = 24,
+            Isolines = 25,
+            OutputVertices = 26,
+            OutputPoints = 27,
+            OutputLineStrip = 28,
+            OutputTriangleStrip = 29,
+            VecTypeHint = 30,
+            ContractionOff = 31,
+            Initializer = 33,
+            Finalizer = 34,
+            SubgroupSize = 35,
+            SubgroupsPerWorkgroup = 36,
+            SubgroupsPerWorkgroupId = 37,
+            LocalSizeId = 38,
+            LocalSizeHintId = 39,
+            PostDepthCoverage = 4446,
+            StencilRefReplacingEXT = 5027,
+        }
+
+        public enum StorageClass
+        {
+            UniformConstant = 0,
+            Input = 1,
+            Uniform = 2,
+            Output = 3,
+            Workgroup = 4,
+            CrossWorkgroup = 5,
+            Private = 6,
+            Function = 7,
+            Generic = 8,
+            PushConstant = 9,
+            AtomicCounter = 10,
+            Image = 11,
+            StorageBuffer = 12,
+        }
+
+        public enum Dim
+        {
+            Dim1D = 0,
+            Dim2D = 1,
+            Dim3D = 2,
+            Cube = 3,
+            Rect = 4,
+            Buffer = 5,
+            SubpassData = 6,
+        }
+
+        public enum SamplerAddressingMode
+        {
+            None = 0,
+            ClampToEdge = 1,
+            Clamp = 2,
+            Repeat = 3,
+            RepeatMirrored = 4,
+        }
+
+        public enum SamplerFilterMode
+        {
+            Nearest = 0,
+            Linear = 1,
+        }
+
+        public enum ImageFormat
+        {
+            Unknown = 0,
+            Rgba32f = 1,
+            Rgba16f = 2,
+            R32f = 3,
+            Rgba8 = 4,
+            Rgba8Snorm = 5,
+            Rg32f = 6,
+            Rg16f = 7,
+            R11fG11fB10f = 8,
+            R16f = 9,
+            Rgba16 = 10,
+            Rgb10A2 = 11,
+            Rg16 = 12,
+            Rg8 = 13,
+            R16 = 14,
+            R8 = 15,
+            Rgba16Snorm = 16,
+            Rg16Snorm = 17,
+            Rg8Snorm = 18,
+            R16Snorm = 19,
+            R8Snorm = 20,
+            Rgba32i = 21,
+            Rgba16i = 22,
+            Rgba8i = 23,
+            R32i = 24,
+            Rg32i = 25,
+            Rg16i = 26,
+            Rg8i = 27,
+            R16i = 28,
+            R8i = 29,
+            Rgba32ui = 30,
+            Rgba16ui = 31,
+            Rgba8ui = 32,
+            R32ui = 33,
+            Rgb10a2ui = 34,
+            Rg32ui = 35,
+            Rg16ui = 36,
+            Rg8ui = 37,
+            R16ui = 38,
+            R8ui = 39,
+        }
+
+        public enum ImageChannelOrder
+        {
+            R = 0,
+            A = 1,
+            RG = 2,
+            RA = 3,
+            RGB = 4,
+            RGBA = 5,
+            BGRA = 6,
+            ARGB = 7,
+            Intensity = 8,
+            Luminance = 9,
+            Rx = 10,
+            RGx = 11,
+            RGBx = 12,
+            Depth = 13,
+            DepthStencil = 14,
+            sRGB = 15,
+            sRGBx = 16,
+            sRGBA = 17,
+            sBGRA = 18,
+            ABGR = 19,
+        }
+
+        public enum ImageChannelDataType
+        {
+            SnormInt8 = 0,
+            SnormInt16 = 1,
+            UnormInt8 = 2,
+            UnormInt16 = 3,
+            UnormShort565 = 4,
+            UnormShort555 = 5,
+            UnormInt101010 = 6,
+            SignedInt8 = 7,
+            SignedInt16 = 8,
+            SignedInt32 = 9,
+            UnsignedInt8 = 10,
+            UnsignedInt16 = 11,
+            UnsignedInt32 = 12,
+            HalfFloat = 13,
+            Float = 14,
+            UnormInt24 = 15,
+            UnormInt101010_2 = 16,
+        }
+
+        public enum ImageOperandsShift
+        {
+            Bias = 0,
+            Lod = 1,
+            Grad = 2,
+            ConstOffset = 3,
+            Offset = 4,
+            ConstOffsets = 5,
+            Sample = 6,
+            MinLod = 7,
+        }
+
+        public enum ImageOperandsMask
+        {
+            MaskNone = 0,
+            Bias = 0x00000001,
+            Lod = 0x00000002,
+            Grad = 0x00000004,
+            ConstOffset = 0x00000008,
+            Offset = 0x00000010,
+            ConstOffsets = 0x00000020,
+            Sample = 0x00000040,
+            MinLod = 0x00000080,
+        }
+
+        public enum FPFastMathModeShift
+        {
+            NotNaN = 0,
+            NotInf = 1,
+            NSZ = 2,
+            AllowRecip = 3,
+            Fast = 4,
+        }
+
+        public enum FPFastMathModeMask
+        {
+            MaskNone = 0,
+            NotNaN = 0x00000001,
+            NotInf = 0x00000002,
+            NSZ = 0x00000004,
+            AllowRecip = 0x00000008,
+            Fast = 0x00000010,
+        }
+
+        public enum FPRoundingMode
+        {
+            RTE = 0,
+            RTZ = 1,
+            RTP = 2,
+            RTN = 3,
+        }
+
+        public enum LinkageType
+        {
+            Export = 0,
+            Import = 1,
+        }
+
+        public enum AccessQualifier
+        {
+            ReadOnly = 0,
+            WriteOnly = 1,
+            ReadWrite = 2,
+        }
+
+        public enum FunctionParameterAttribute
+        {
+            Zext = 0,
+            Sext = 1,
+            ByVal = 2,
+            Sret = 3,
+            NoAlias = 4,
+            NoCapture = 5,
+            NoWrite = 6,
+            NoReadWrite = 7,
+        }
+
+        public enum Decoration
+        {
+            RelaxedPrecision = 0,
+            SpecId = 1,
+            Block = 2,
+            BufferBlock = 3,
+            RowMajor = 4,
+            ColMajor = 5,
+            ArrayStride = 6,
+            MatrixStride = 7,
+            GLSLShared = 8,
+            GLSLPacked = 9,
+            CPacked = 10,
+            BuiltIn = 11,
+            NoPerspective = 13,
+            Flat = 14,
+            Patch = 15,
+            Centroid = 16,
+            Sample = 17,
+            Invariant = 18,
+            Restrict = 19,
+            Aliased = 20,
+            Volatile = 21,
+            Constant = 22,
+            Coherent = 23,
+            NonWritable = 24,
+            NonReadable = 25,
+            Uniform = 26,
+            SaturatedConversion = 28,
+            Stream = 29,
+            Location = 30,
+            Component = 31,
+            Index = 32,
+            Binding = 33,
+            DescriptorSet = 34,
+            Offset = 35,
+            XfbBuffer = 36,
+            XfbStride = 37,
+            FuncParamAttr = 38,
+            FPRoundingMode = 39,
+            FPFastMathMode = 40,
+            LinkageAttributes = 41,
+            NoContraction = 42,
+            InputAttachmentIndex = 43,
+            Alignment = 44,
+            MaxByteOffset = 45,
+            AlignmentId = 46,
+            MaxByteOffsetId = 47,
+            ExplicitInterpAMD = 4999,
+            OverrideCoverageNV = 5248,
+            PassthroughNV = 5250,
+            ViewportRelativeNV = 5252,
+            SecondaryViewportRelativeNV = 5256,
+            HlslCounterBufferGOOGLE = 5634,
+            HlslSemanticGOOGLE = 5635,
+        }
+
+        public enum BuiltIn
+        {
+            Position = 0,
+            PointSize = 1,
+            ClipDistance = 3,
+            CullDistance = 4,
+            VertexId = 5,
+            InstanceId = 6,
+            PrimitiveId = 7,
+            InvocationId = 8,
+            Layer = 9,
+            ViewportIndex = 10,
+            TessLevelOuter = 11,
+            TessLevelInner = 12,
+            TessCoord = 13,
+            PatchVertices = 14,
+            FragCoord = 15,
+            PointCoord = 16,
+            FrontFacing = 17,
+            SampleId = 18,
+            SamplePosition = 19,
+            SampleMask = 20,
+            FragDepth = 22,
+            HelperInvocation = 23,
+            NumWorkgroups = 24,
+            WorkgroupSize = 25,
+            WorkgroupId = 26,
+            LocalInvocationId = 27,
+            GlobalInvocationId = 28,
+            LocalInvocationIndex = 29,
+            WorkDim = 30,
+            GlobalSize = 31,
+            EnqueuedWorkgroupSize = 32,
+            GlobalOffset = 33,
+            GlobalLinearId = 34,
+            SubgroupSize = 36,
+            SubgroupMaxSize = 37,
+            NumSubgroups = 38,
+            NumEnqueuedSubgroups = 39,
+            SubgroupId = 40,
+            SubgroupLocalInvocationId = 41,
+            VertexIndex = 42,
+            InstanceIndex = 43,
+            SubgroupEqMaskKHR = 4416,
+            SubgroupGeMaskKHR = 4417,
+            SubgroupGtMaskKHR = 4418,
+            SubgroupLeMaskKHR = 4419,
+            SubgroupLtMaskKHR = 4420,
+            BaseVertex = 4424,
+            BaseInstance = 4425,
+            DrawIndex = 4426,
+            DeviceIndex = 4438,
+            ViewIndex = 4440,
+            BaryCoordNoPerspAMD = 4992,
+            BaryCoordNoPerspCentroidAMD = 4993,
+            BaryCoordNoPerspSampleAMD = 4994,
+            BaryCoordSmoothAMD = 4995,
+            BaryCoordSmoothCentroidAMD = 4996,
+            BaryCoordSmoothSampleAMD = 4997,
+            BaryCoordPullModelAMD = 4998,
+            FragStencilRefEXT = 5014,
+            ViewportMaskNV = 5253,
+            SecondaryPositionNV = 5257,
+            SecondaryViewportMaskNV = 5258,
+            PositionPerViewNV = 5261,
+            ViewportMaskPerViewNV = 5262,
+        }
+
+        public enum SelectionControlShift
+        {
+            Flatten = 0,
+            DontFlatten = 1,
+        }
+
+        public enum SelectionControlMask
+        {
+            MaskNone = 0,
+            Flatten = 0x00000001,
+            DontFlatten = 0x00000002,
+        }
+
+        public enum LoopControlShift
+        {
+            Unroll = 0,
+            DontUnroll = 1,
+            DependencyInfinite = 2,
+            DependencyLength = 3,
+        }
+
+        public enum LoopControlMask
+        {
+            MaskNone = 0,
+            Unroll = 0x00000001,
+            DontUnroll = 0x00000002,
+            DependencyInfinite = 0x00000004,
+            DependencyLength = 0x00000008,
+        }
+
+        public enum FunctionControlShift
+        {
+            Inline = 0,
+            DontInline = 1,
+            Pure = 2,
+            Const = 3,
+        }
+
+        public enum FunctionControlMask
+        {
+            MaskNone = 0,
+            Inline = 0x00000001,
+            DontInline = 0x00000002,
+            Pure = 0x00000004,
+            Const = 0x00000008,
+        }
+
+        public enum MemorySemanticsShift
+        {
+            Acquire = 1,
+            Release = 2,
+            AcquireRelease = 3,
+            SequentiallyConsistent = 4,
+            UniformMemory = 6,
+            SubgroupMemory = 7,
+            WorkgroupMemory = 8,
+            CrossWorkgroupMemory = 9,
+            AtomicCounterMemory = 10,
+            ImageMemory = 11,
+        }
+
+        public enum MemorySemanticsMask
+        {
+            MaskNone = 0,
+            Acquire = 0x00000002,
+            Release = 0x00000004,
+            AcquireRelease = 0x00000008,
+            SequentiallyConsistent = 0x00000010,
+            UniformMemory = 0x00000040,
+            SubgroupMemory = 0x00000080,
+            WorkgroupMemory = 0x00000100,
+            CrossWorkgroupMemory = 0x00000200,
+            AtomicCounterMemory = 0x00000400,
+            ImageMemory = 0x00000800,
+        }
+
+        public enum MemoryAccessShift
+        {
+            Volatile = 0,
+            Aligned = 1,
+            Nontemporal = 2,
+        }
+
+        public enum MemoryAccessMask
+        {
+            MaskNone = 0,
+            Volatile = 0x00000001,
+            Aligned = 0x00000002,
+            Nontemporal = 0x00000004,
+        }
+
+        public enum Scope
+        {
+            CrossDevice = 0,
+            Device = 1,
+            Workgroup = 2,
+            Subgroup = 3,
+            Invocation = 4,
+        }
+
+        public enum GroupOperation
+        {
+            Reduce = 0,
+            InclusiveScan = 1,
+            ExclusiveScan = 2,
+        }
+
+        public enum KernelEnqueueFlags
+        {
+            NoWait = 0,
+            WaitKernel = 1,
+            WaitWorkGroup = 2,
+        }
+
+        public enum KernelProfilingInfoShift
+        {
+            CmdExecTime = 0,
+        }
+
+        public enum KernelProfilingInfoMask
+        {
+            MaskNone = 0,
+            CmdExecTime = 0x00000001,
+        }
+
+        public enum Capability
+        {
+            Matrix = 0,
+            Shader = 1,
+            Geometry = 2,
+            Tessellation = 3,
+            Addresses = 4,
+            Linkage = 5,
+            Kernel = 6,
+            Vector16 = 7,
+            Float16Buffer = 8,
+            Float16 = 9,
+            Float64 = 10,
+            Int64 = 11,
+            Int64Atomics = 12,
+            ImageBasic = 13,
+            ImageReadWrite = 14,
+            ImageMipmap = 15,
+            Pipes = 17,
+            Groups = 18,
+            DeviceEnqueue = 19,
+            LiteralSampler = 20,
+            AtomicStorage = 21,
+            Int16 = 22,
+            TessellationPointSize = 23,
+            GeometryPointSize = 24,
+            ImageGatherExtended = 25,
+            StorageImageMultisample = 27,
+            UniformBufferArrayDynamicIndexing = 28,
+            SampledImageArrayDynamicIndexing = 29,
+            StorageBufferArrayDynamicIndexing = 30,
+            StorageImageArrayDynamicIndexing = 31,
+            ClipDistance = 32,
+            CullDistance = 33,
+            ImageCubeArray = 34,
+            SampleRateShading = 35,
+            ImageRect = 36,
+            SampledRect = 37,
+            GenericPointer = 38,
+            Int8 = 39,
+            InputAttachment = 40,
+            SparseResidency = 41,
+            MinLod = 42,
+            Sampled1D = 43,
+            Image1D = 44,
+            SampledCubeArray = 45,
+            SampledBuffer = 46,
+            ImageBuffer = 47,
+            ImageMSArray = 48,
+            StorageImageExtendedFormats = 49,
+            ImageQuery = 50,
+            DerivativeControl = 51,
+            InterpolationFunction = 52,
+            TransformFeedback = 53,
+            GeometryStreams = 54,
+            StorageImageReadWithoutFormat = 55,
+            StorageImageWriteWithoutFormat = 56,
+            MultiViewport = 57,
+            SubgroupDispatch = 58,
+            NamedBarrier = 59,
+            PipeStorage = 60,
+            SubgroupBallotKHR = 4423,
+            DrawParameters = 4427,
+            SubgroupVoteKHR = 4431,
+            StorageBuffer16BitAccess = 4433,
+            StorageUniformBufferBlock16 = 4433,
+            StorageUniform16 = 4434,
+            UniformAndStorageBuffer16BitAccess = 4434,
+            StoragePushConstant16 = 4435,
+            StorageInputOutput16 = 4436,
+            DeviceGroup = 4437,
+            MultiView = 4439,
+            VariablePointersStorageBuffer = 4441,
+            VariablePointers = 4442,
+            AtomicStorageOps = 4445,
+            SampleMaskPostDepthCoverage = 4447,
+            ImageGatherBiasLodAMD = 5009,
+            FragmentMaskAMD = 5010,
+            StencilExportEXT = 5013,
+            ImageReadWriteLodAMD = 5015,
+            SampleMaskOverrideCoverageNV = 5249,
+            GeometryShaderPassthroughNV = 5251,
+            ShaderViewportIndexLayerEXT = 5254,
+            ShaderViewportIndexLayerNV = 5254,
+            ShaderViewportMaskNV = 5255,
+            ShaderStereoViewNV = 5259,
+            PerViewAttributesNV = 5260,
+            SubgroupShuffleINTEL = 5568,
+            SubgroupBufferBlockIOINTEL = 5569,
+            SubgroupImageBlockIOINTEL = 5570,
+        }
+
+        public enum Op
+        {
+            OpNop = 0,
+            OpUndef = 1,
+            OpSourceContinued = 2,
+            OpSource = 3,
+            OpSourceExtension = 4,
+            OpName = 5,
+            OpMemberName = 6,
+            OpString = 7,
+            OpLine = 8,
+            OpExtension = 10,
+            OpExtInstImport = 11,
+            OpExtInst = 12,
+            OpMemoryModel = 14,
+            OpEntryPoint = 15,
+            OpExecutionMode = 16,
+            OpCapability = 17,
+            OpTypeVoid = 19,
+            OpTypeBool = 20,
+            OpTypeInt = 21,
+            OpTypeFloat = 22,
+            OpTypeVector = 23,
+            OpTypeMatrix = 24,
+            OpTypeImage = 25,
+            OpTypeSampler = 26,
+            OpTypeSampledImage = 27,
+            OpTypeArray = 28,
+            OpTypeRuntimeArray = 29,
+            OpTypeStruct = 30,
+            OpTypeOpaque = 31,
+            OpTypePointer = 32,
+            OpTypeFunction = 33,
+            OpTypeEvent = 34,
+            OpTypeDeviceEvent = 35,
+            OpTypeReserveId = 36,
+            OpTypeQueue = 37,
+            OpTypePipe = 38,
+            OpTypeForwardPointer = 39,
+            OpConstantTrue = 41,
+            OpConstantFalse = 42,
+            OpConstant = 43,
+            OpConstantComposite = 44,
+            OpConstantSampler = 45,
+            OpConstantNull = 46,
+            OpSpecConstantTrue = 48,
+            OpSpecConstantFalse = 49,
+            OpSpecConstant = 50,
+            OpSpecConstantComposite = 51,
+            OpSpecConstantOp = 52,
+            OpFunction = 54,
+            OpFunctionParameter = 55,
+            OpFunctionEnd = 56,
+            OpFunctionCall = 57,
+            OpVariable = 59,
+            OpImageTexelPointer = 60,
+            OpLoad = 61,
+            OpStore = 62,
+            OpCopyMemory = 63,
+            OpCopyMemorySized = 64,
+            OpAccessChain = 65,
+            OpInBoundsAccessChain = 66,
+            OpPtrAccessChain = 67,
+            OpArrayLength = 68,
+            OpGenericPtrMemSemantics = 69,
+            OpInBoundsPtrAccessChain = 70,
+            OpDecorate = 71,
+            OpMemberDecorate = 72,
+            OpDecorationGroup = 73,
+            OpGroupDecorate = 74,
+            OpGroupMemberDecorate = 75,
+            OpVectorExtractDynamic = 77,
+            OpVectorInsertDynamic = 78,
+            OpVectorShuffle = 79,
+            OpCompositeConstruct = 80,
+            OpCompositeExtract = 81,
+            OpCompositeInsert = 82,
+            OpCopyObject = 83,
+            OpTranspose = 84,
+            OpSampledImage = 86,
+            OpImageSampleImplicitLod = 87,
+            OpImageSampleExplicitLod = 88,
+            OpImageSampleDrefImplicitLod = 89,
+            OpImageSampleDrefExplicitLod = 90,
+            OpImageSampleProjImplicitLod = 91,
+            OpImageSampleProjExplicitLod = 92,
+            OpImageSampleProjDrefImplicitLod = 93,
+            OpImageSampleProjDrefExplicitLod = 94,
+            OpImageFetch = 95,
+            OpImageGather = 96,
+            OpImageDrefGather = 97,
+            OpImageRead = 98,
+            OpImageWrite = 99,
+            OpImage = 100,
+            OpImageQueryFormat = 101,
+            OpImageQueryOrder = 102,
+            OpImageQuerySizeLod = 103,
+            OpImageQuerySize = 104,
+            OpImageQueryLod = 105,
+            OpImageQueryLevels = 106,
+            OpImageQuerySamples = 107,
+            OpConvertFToU = 109,
+            OpConvertFToS = 110,
+            OpConvertSToF = 111,
+            OpConvertUToF = 112,
+            OpUConvert = 113,
+            OpSConvert = 114,
+            OpFConvert = 115,
+            OpQuantizeToF16 = 116,
+            OpConvertPtrToU = 117,
+            OpSatConvertSToU = 118,
+            OpSatConvertUToS = 119,
+            OpConvertUToPtr = 120,
+            OpPtrCastToGeneric = 121,
+            OpGenericCastToPtr = 122,
+            OpGenericCastToPtrExplicit = 123,
+            OpBitcast = 124,
+            OpSNegate = 126,
+            OpFNegate = 127,
+            OpIAdd = 128,
+            OpFAdd = 129,
+            OpISub = 130,
+            OpFSub = 131,
+            OpIMul = 132,
+            OpFMul = 133,
+            OpUDiv = 134,
+            OpSDiv = 135,
+            OpFDiv = 136,
+            OpUMod = 137,
+            OpSRem = 138,
+            OpSMod = 139,
+            OpFRem = 140,
+            OpFMod = 141,
+            OpVectorTimesScalar = 142,
+            OpMatrixTimesScalar = 143,
+            OpVectorTimesMatrix = 144,
+            OpMatrixTimesVector = 145,
+            OpMatrixTimesMatrix = 146,
+            OpOuterProduct = 147,
+            OpDot = 148,
+            OpIAddCarry = 149,
+            OpISubBorrow = 150,
+            OpUMulExtended = 151,
+            OpSMulExtended = 152,
+            OpAny = 154,
+            OpAll = 155,
+            OpIsNan = 156,
+            OpIsInf = 157,
+            OpIsFinite = 158,
+            OpIsNormal = 159,
+            OpSignBitSet = 160,
+            OpLessOrGreater = 161,
+            OpOrdered = 162,
+            OpUnordered = 163,
+            OpLogicalEqual = 164,
+            OpLogicalNotEqual = 165,
+            OpLogicalOr = 166,
+            OpLogicalAnd = 167,
+            OpLogicalNot = 168,
+            OpSelect = 169,
+            OpIEqual = 170,
+            OpINotEqual = 171,
+            OpUGreaterThan = 172,
+            OpSGreaterThan = 173,
+            OpUGreaterThanEqual = 174,
+            OpSGreaterThanEqual = 175,
+            OpULessThan = 176,
+            OpSLessThan = 177,
+            OpULessThanEqual = 178,
+            OpSLessThanEqual = 179,
+            OpFOrdEqual = 180,
+            OpFUnordEqual = 181,
+            OpFOrdNotEqual = 182,
+            OpFUnordNotEqual = 183,
+            OpFOrdLessThan = 184,
+            OpFUnordLessThan = 185,
+            OpFOrdGreaterThan = 186,
+            OpFUnordGreaterThan = 187,
+            OpFOrdLessThanEqual = 188,
+            OpFUnordLessThanEqual = 189,
+            OpFOrdGreaterThanEqual = 190,
+            OpFUnordGreaterThanEqual = 191,
+            OpShiftRightLogical = 194,
+            OpShiftRightArithmetic = 195,
+            OpShiftLeftLogical = 196,
+            OpBitwiseOr = 197,
+            OpBitwiseXor = 198,
+            OpBitwiseAnd = 199,
+            OpNot = 200,
+            OpBitFieldInsert = 201,
+            OpBitFieldSExtract = 202,
+            OpBitFieldUExtract = 203,
+            OpBitReverse = 204,
+            OpBitCount = 205,
+            OpDPdx = 207,
+            OpDPdy = 208,
+            OpFwidth = 209,
+            OpDPdxFine = 210,
+            OpDPdyFine = 211,
+            OpFwidthFine = 212,
+            OpDPdxCoarse = 213,
+            OpDPdyCoarse = 214,
+            OpFwidthCoarse = 215,
+            OpEmitVertex = 218,
+            OpEndPrimitive = 219,
+            OpEmitStreamVertex = 220,
+            OpEndStreamPrimitive = 221,
+            OpControlBarrier = 224,
+            OpMemoryBarrier = 225,
+            OpAtomicLoad = 227,
+            OpAtomicStore = 228,
+            OpAtomicExchange = 229,
+            OpAtomicCompareExchange = 230,
+            OpAtomicCompareExchangeWeak = 231,
+            OpAtomicIIncrement = 232,
+            OpAtomicIDecrement = 233,
+            OpAtomicIAdd = 234,
+            OpAtomicISub = 235,
+            OpAtomicSMin = 236,
+            OpAtomicUMin = 237,
+            OpAtomicSMax = 238,
+            OpAtomicUMax = 239,
+            OpAtomicAnd = 240,
+            OpAtomicOr = 241,
+            OpAtomicXor = 242,
+            OpPhi = 245,
+            OpLoopMerge = 246,
+            OpSelectionMerge = 247,
+            OpLabel = 248,
+            OpBranch = 249,
+            OpBranchConditional = 250,
+            OpSwitch = 251,
+            OpKill = 252,
+            OpReturn = 253,
+            OpReturnValue = 254,
+            OpUnreachable = 255,
+            OpLifetimeStart = 256,
+            OpLifetimeStop = 257,
+            OpGroupAsyncCopy = 259,
+            OpGroupWaitEvents = 260,
+            OpGroupAll = 261,
+            OpGroupAny = 262,
+            OpGroupBroadcast = 263,
+            OpGroupIAdd = 264,
+            OpGroupFAdd = 265,
+            OpGroupFMin = 266,
+            OpGroupUMin = 267,
+            OpGroupSMin = 268,
+            OpGroupFMax = 269,
+            OpGroupUMax = 270,
+            OpGroupSMax = 271,
+            OpReadPipe = 274,
+            OpWritePipe = 275,
+            OpReservedReadPipe = 276,
+            OpReservedWritePipe = 277,
+            OpReserveReadPipePackets = 278,
+            OpReserveWritePipePackets = 279,
+            OpCommitReadPipe = 280,
+            OpCommitWritePipe = 281,
+            OpIsValidReserveId = 282,
+            OpGetNumPipePackets = 283,
+            OpGetMaxPipePackets = 284,
+            OpGroupReserveReadPipePackets = 285,
+            OpGroupReserveWritePipePackets = 286,
+            OpGroupCommitReadPipe = 287,
+            OpGroupCommitWritePipe = 288,
+            OpEnqueueMarker = 291,
+            OpEnqueueKernel = 292,
+            OpGetKernelNDrangeSubGroupCount = 293,
+            OpGetKernelNDrangeMaxSubGroupSize = 294,
+            OpGetKernelWorkGroupSize = 295,
+            OpGetKernelPreferredWorkGroupSizeMultiple = 296,
+            OpRetainEvent = 297,
+            OpReleaseEvent = 298,
+            OpCreateUserEvent = 299,
+            OpIsValidEvent = 300,
+            OpSetUserEventStatus = 301,
+            OpCaptureEventProfilingInfo = 302,
+            OpGetDefaultQueue = 303,
+            OpBuildNDRange = 304,
+            OpImageSparseSampleImplicitLod = 305,
+            OpImageSparseSampleExplicitLod = 306,
+            OpImageSparseSampleDrefImplicitLod = 307,
+            OpImageSparseSampleDrefExplicitLod = 308,
+            OpImageSparseSampleProjImplicitLod = 309,
+            OpImageSparseSampleProjExplicitLod = 310,
+            OpImageSparseSampleProjDrefImplicitLod = 311,
+            OpImageSparseSampleProjDrefExplicitLod = 312,
+            OpImageSparseFetch = 313,
+            OpImageSparseGather = 314,
+            OpImageSparseDrefGather = 315,
+            OpImageSparseTexelsResident = 316,
+            OpNoLine = 317,
+            OpAtomicFlagTestAndSet = 318,
+            OpAtomicFlagClear = 319,
+            OpImageSparseRead = 320,
+            OpSizeOf = 321,
+            OpTypePipeStorage = 322,
+            OpConstantPipeStorage = 323,
+            OpCreatePipeFromPipeStorage = 324,
+            OpGetKernelLocalSizeForSubgroupCount = 325,
+            OpGetKernelMaxNumSubgroups = 326,
+            OpTypeNamedBarrier = 327,
+            OpNamedBarrierInitialize = 328,
+            OpMemoryNamedBarrier = 329,
+            OpModuleProcessed = 330,
+            OpExecutionModeId = 331,
+            OpDecorateId = 332,
+            OpSubgroupBallotKHR = 4421,
+            OpSubgroupFirstInvocationKHR = 4422,
+            OpSubgroupAllKHR = 4428,
+            OpSubgroupAnyKHR = 4429,
+            OpSubgroupAllEqualKHR = 4430,
+            OpSubgroupReadInvocationKHR = 4432,
+            OpGroupIAddNonUniformAMD = 5000,
+            OpGroupFAddNonUniformAMD = 5001,
+            OpGroupFMinNonUniformAMD = 5002,
+            OpGroupUMinNonUniformAMD = 5003,
+            OpGroupSMinNonUniformAMD = 5004,
+            OpGroupFMaxNonUniformAMD = 5005,
+            OpGroupUMaxNonUniformAMD = 5006,
+            OpGroupSMaxNonUniformAMD = 5007,
+            OpFragmentMaskFetchAMD = 5011,
+            OpFragmentFetchAMD = 5012,
+            OpSubgroupShuffleINTEL = 5571,
+            OpSubgroupShuffleDownINTEL = 5572,
+            OpSubgroupShuffleUpINTEL = 5573,
+            OpSubgroupShuffleXorINTEL = 5574,
+            OpSubgroupBlockReadINTEL = 5575,
+            OpSubgroupBlockWriteINTEL = 5576,
+            OpSubgroupImageBlockReadINTEL = 5577,
+            OpSubgroupImageBlockWriteINTEL = 5578,
+            OpDecorateStringGOOGLE = 5632,
+            OpMemberDecorateStringGOOGLE = 5633,
+        }
+    }
+}
+
diff --git a/libs/spirv-headers/spirv/1.2/spirv.h b/libs/spirv-headers/spirv/1.2/spirv.h
new file mode 100644
index 00000000000..7c6d884d8e4
--- /dev/null
+++ b/libs/spirv-headers/spirv/1.2/spirv.h
@@ -0,0 +1,1021 @@
+/*
+** Copyright (c) 2014-2018 The Khronos Group Inc.
+** 
+** Permission is hereby granted, free of charge, to any person obtaining a copy
+** of this software and/or associated documentation files (the "Materials"),
+** to deal in the Materials without restriction, including without limitation
+** the rights to use, copy, modify, merge, publish, distribute, sublicense,
+** and/or sell copies of the Materials, and to permit persons to whom the
+** Materials are furnished to do so, subject to the following conditions:
+** 
+** The above copyright notice and this permission notice shall be included in
+** all copies or substantial portions of the Materials.
+** 
+** MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS KHRONOS
+** STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS SPECIFICATIONS AND
+** HEADER INFORMATION ARE LOCATED AT https://www.khronos.org/registry/ 
+** 
+** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+** OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+** FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+** THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+** LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+** FROM,OUT OF OR IN CONNECTION WITH THE MATERIALS OR THE USE OR OTHER DEALINGS
+** IN THE MATERIALS.
+*/
+
+/*
+** This header is automatically generated by the same tool that creates
+** the Binary Section of the SPIR-V specification.
+*/
+
+/*
+** Enumeration tokens for SPIR-V, in various styles:
+**   C, C++, C++11, JSON, Lua, Python
+** 
+** - C will have tokens with a "Spv" prefix, e.g.: SpvSourceLanguageGLSL
+** - C++ will have tokens in the "spv" name space, e.g.: spv::SourceLanguageGLSL
+** - C++11 will use enum classes in the spv namespace, e.g.: spv::SourceLanguage::GLSL
+** - Lua will use tables, e.g.: spv.SourceLanguage.GLSL
+** - Python will use dictionaries, e.g.: spv['SourceLanguage']['GLSL']
+** 
+** Some tokens act like mask values, which can be OR'd together,
+** while others are mutually exclusive.  The mask-like ones have
+** "Mask" in their name, and a parallel enum that has the shift
+** amount (1 << x) for each corresponding enumerant.
+*/
+
+#ifndef spirv_H
+#define spirv_H
+
+typedef unsigned int SpvId;
+
+#define SPV_VERSION 0x10200
+#define SPV_REVISION 2
+
+static const unsigned int SpvMagicNumber = 0x07230203;
+static const unsigned int SpvVersion = 0x00010200;
+static const unsigned int SpvRevision = 2;
+static const unsigned int SpvOpCodeMask = 0xffff;
+static const unsigned int SpvWordCountShift = 16;
+
+typedef enum SpvSourceLanguage_ {
+    SpvSourceLanguageUnknown = 0,
+    SpvSourceLanguageESSL = 1,
+    SpvSourceLanguageGLSL = 2,
+    SpvSourceLanguageOpenCL_C = 3,
+    SpvSourceLanguageOpenCL_CPP = 4,
+    SpvSourceLanguageHLSL = 5,
+    SpvSourceLanguageMax = 0x7fffffff,
+} SpvSourceLanguage;
+
+typedef enum SpvExecutionModel_ {
+    SpvExecutionModelVertex = 0,
+    SpvExecutionModelTessellationControl = 1,
+    SpvExecutionModelTessellationEvaluation = 2,
+    SpvExecutionModelGeometry = 3,
+    SpvExecutionModelFragment = 4,
+    SpvExecutionModelGLCompute = 5,
+    SpvExecutionModelKernel = 6,
+    SpvExecutionModelMax = 0x7fffffff,
+} SpvExecutionModel;
+
+typedef enum SpvAddressingModel_ {
+    SpvAddressingModelLogical = 0,
+    SpvAddressingModelPhysical32 = 1,
+    SpvAddressingModelPhysical64 = 2,
+    SpvAddressingModelMax = 0x7fffffff,
+} SpvAddressingModel;
+
+typedef enum SpvMemoryModel_ {
+    SpvMemoryModelSimple = 0,
+    SpvMemoryModelGLSL450 = 1,
+    SpvMemoryModelOpenCL = 2,
+    SpvMemoryModelMax = 0x7fffffff,
+} SpvMemoryModel;
+
+typedef enum SpvExecutionMode_ {
+    SpvExecutionModeInvocations = 0,
+    SpvExecutionModeSpacingEqual = 1,
+    SpvExecutionModeSpacingFractionalEven = 2,
+    SpvExecutionModeSpacingFractionalOdd = 3,
+    SpvExecutionModeVertexOrderCw = 4,
+    SpvExecutionModeVertexOrderCcw = 5,
+    SpvExecutionModePixelCenterInteger = 6,
+    SpvExecutionModeOriginUpperLeft = 7,
+    SpvExecutionModeOriginLowerLeft = 8,
+    SpvExecutionModeEarlyFragmentTests = 9,
+    SpvExecutionModePointMode = 10,
+    SpvExecutionModeXfb = 11,
+    SpvExecutionModeDepthReplacing = 12,
+    SpvExecutionModeDepthGreater = 14,
+    SpvExecutionModeDepthLess = 15,
+    SpvExecutionModeDepthUnchanged = 16,
+    SpvExecutionModeLocalSize = 17,
+    SpvExecutionModeLocalSizeHint = 18,
+    SpvExecutionModeInputPoints = 19,
+    SpvExecutionModeInputLines = 20,
+    SpvExecutionModeInputLinesAdjacency = 21,
+    SpvExecutionModeTriangles = 22,
+    SpvExecutionModeInputTrianglesAdjacency = 23,
+    SpvExecutionModeQuads = 24,
+    SpvExecutionModeIsolines = 25,
+    SpvExecutionModeOutputVertices = 26,
+    SpvExecutionModeOutputPoints = 27,
+    SpvExecutionModeOutputLineStrip = 28,
+    SpvExecutionModeOutputTriangleStrip = 29,
+    SpvExecutionModeVecTypeHint = 30,
+    SpvExecutionModeContractionOff = 31,
+    SpvExecutionModeInitializer = 33,
+    SpvExecutionModeFinalizer = 34,
+    SpvExecutionModeSubgroupSize = 35,
+    SpvExecutionModeSubgroupsPerWorkgroup = 36,
+    SpvExecutionModeSubgroupsPerWorkgroupId = 37,
+    SpvExecutionModeLocalSizeId = 38,
+    SpvExecutionModeLocalSizeHintId = 39,
+    SpvExecutionModePostDepthCoverage = 4446,
+    SpvExecutionModeStencilRefReplacingEXT = 5027,
+    SpvExecutionModeMax = 0x7fffffff,
+} SpvExecutionMode;
+
+typedef enum SpvStorageClass_ {
+    SpvStorageClassUniformConstant = 0,
+    SpvStorageClassInput = 1,
+    SpvStorageClassUniform = 2,
+    SpvStorageClassOutput = 3,
+    SpvStorageClassWorkgroup = 4,
+    SpvStorageClassCrossWorkgroup = 5,
+    SpvStorageClassPrivate = 6,
+    SpvStorageClassFunction = 7,
+    SpvStorageClassGeneric = 8,
+    SpvStorageClassPushConstant = 9,
+    SpvStorageClassAtomicCounter = 10,
+    SpvStorageClassImage = 11,
+    SpvStorageClassStorageBuffer = 12,
+    SpvStorageClassMax = 0x7fffffff,
+} SpvStorageClass;
+
+typedef enum SpvDim_ {
+    SpvDim1D = 0,
+    SpvDim2D = 1,
+    SpvDim3D = 2,
+    SpvDimCube = 3,
+    SpvDimRect = 4,
+    SpvDimBuffer = 5,
+    SpvDimSubpassData = 6,
+    SpvDimMax = 0x7fffffff,
+} SpvDim;
+
+typedef enum SpvSamplerAddressingMode_ {
+    SpvSamplerAddressingModeNone = 0,
+    SpvSamplerAddressingModeClampToEdge = 1,
+    SpvSamplerAddressingModeClamp = 2,
+    SpvSamplerAddressingModeRepeat = 3,
+    SpvSamplerAddressingModeRepeatMirrored = 4,
+    SpvSamplerAddressingModeMax = 0x7fffffff,
+} SpvSamplerAddressingMode;
+
+typedef enum SpvSamplerFilterMode_ {
+    SpvSamplerFilterModeNearest = 0,
+    SpvSamplerFilterModeLinear = 1,
+    SpvSamplerFilterModeMax = 0x7fffffff,
+} SpvSamplerFilterMode;
+
+typedef enum SpvImageFormat_ {
+    SpvImageFormatUnknown = 0,
+    SpvImageFormatRgba32f = 1,
+    SpvImageFormatRgba16f = 2,
+    SpvImageFormatR32f = 3,
+    SpvImageFormatRgba8 = 4,
+    SpvImageFormatRgba8Snorm = 5,
+    SpvImageFormatRg32f = 6,
+    SpvImageFormatRg16f = 7,
+    SpvImageFormatR11fG11fB10f = 8,
+    SpvImageFormatR16f = 9,
+    SpvImageFormatRgba16 = 10,
+    SpvImageFormatRgb10A2 = 11,
+    SpvImageFormatRg16 = 12,
+    SpvImageFormatRg8 = 13,
+    SpvImageFormatR16 = 14,
+    SpvImageFormatR8 = 15,
+    SpvImageFormatRgba16Snorm = 16,
+    SpvImageFormatRg16Snorm = 17,
+    SpvImageFormatRg8Snorm = 18,
+    SpvImageFormatR16Snorm = 19,
+    SpvImageFormatR8Snorm = 20,
+    SpvImageFormatRgba32i = 21,
+    SpvImageFormatRgba16i = 22,
+    SpvImageFormatRgba8i = 23,
+    SpvImageFormatR32i = 24,
+    SpvImageFormatRg32i = 25,
+    SpvImageFormatRg16i = 26,
+    SpvImageFormatRg8i = 27,
+    SpvImageFormatR16i = 28,
+    SpvImageFormatR8i = 29,
+    SpvImageFormatRgba32ui = 30,
+    SpvImageFormatRgba16ui = 31,
+    SpvImageFormatRgba8ui = 32,
+    SpvImageFormatR32ui = 33,
+    SpvImageFormatRgb10a2ui = 34,
+    SpvImageFormatRg32ui = 35,
+    SpvImageFormatRg16ui = 36,
+    SpvImageFormatRg8ui = 37,
+    SpvImageFormatR16ui = 38,
+    SpvImageFormatR8ui = 39,
+    SpvImageFormatMax = 0x7fffffff,
+} SpvImageFormat;
+
+typedef enum SpvImageChannelOrder_ {
+    SpvImageChannelOrderR = 0,
+    SpvImageChannelOrderA = 1,
+    SpvImageChannelOrderRG = 2,
+    SpvImageChannelOrderRA = 3,
+    SpvImageChannelOrderRGB = 4,
+    SpvImageChannelOrderRGBA = 5,
+    SpvImageChannelOrderBGRA = 6,
+    SpvImageChannelOrderARGB = 7,
+    SpvImageChannelOrderIntensity = 8,
+    SpvImageChannelOrderLuminance = 9,
+    SpvImageChannelOrderRx = 10,
+    SpvImageChannelOrderRGx = 11,
+    SpvImageChannelOrderRGBx = 12,
+    SpvImageChannelOrderDepth = 13,
+    SpvImageChannelOrderDepthStencil = 14,
+    SpvImageChannelOrdersRGB = 15,
+    SpvImageChannelOrdersRGBx = 16,
+    SpvImageChannelOrdersRGBA = 17,
+    SpvImageChannelOrdersBGRA = 18,
+    SpvImageChannelOrderABGR = 19,
+    SpvImageChannelOrderMax = 0x7fffffff,
+} SpvImageChannelOrder;
+
+typedef enum SpvImageChannelDataType_ {
+    SpvImageChannelDataTypeSnormInt8 = 0,
+    SpvImageChannelDataTypeSnormInt16 = 1,
+    SpvImageChannelDataTypeUnormInt8 = 2,
+    SpvImageChannelDataTypeUnormInt16 = 3,
+    SpvImageChannelDataTypeUnormShort565 = 4,
+    SpvImageChannelDataTypeUnormShort555 = 5,
+    SpvImageChannelDataTypeUnormInt101010 = 6,
+    SpvImageChannelDataTypeSignedInt8 = 7,
+    SpvImageChannelDataTypeSignedInt16 = 8,
+    SpvImageChannelDataTypeSignedInt32 = 9,
+    SpvImageChannelDataTypeUnsignedInt8 = 10,
+    SpvImageChannelDataTypeUnsignedInt16 = 11,
+    SpvImageChannelDataTypeUnsignedInt32 = 12,
+    SpvImageChannelDataTypeHalfFloat = 13,
+    SpvImageChannelDataTypeFloat = 14,
+    SpvImageChannelDataTypeUnormInt24 = 15,
+    SpvImageChannelDataTypeUnormInt101010_2 = 16,
+    SpvImageChannelDataTypeMax = 0x7fffffff,
+} SpvImageChannelDataType;
+
+typedef enum SpvImageOperandsShift_ {
+    SpvImageOperandsBiasShift = 0,
+    SpvImageOperandsLodShift = 1,
+    SpvImageOperandsGradShift = 2,
+    SpvImageOperandsConstOffsetShift = 3,
+    SpvImageOperandsOffsetShift = 4,
+    SpvImageOperandsConstOffsetsShift = 5,
+    SpvImageOperandsSampleShift = 6,
+    SpvImageOperandsMinLodShift = 7,
+    SpvImageOperandsMax = 0x7fffffff,
+} SpvImageOperandsShift;
+
+typedef enum SpvImageOperandsMask_ {
+    SpvImageOperandsMaskNone = 0,
+    SpvImageOperandsBiasMask = 0x00000001,
+    SpvImageOperandsLodMask = 0x00000002,
+    SpvImageOperandsGradMask = 0x00000004,
+    SpvImageOperandsConstOffsetMask = 0x00000008,
+    SpvImageOperandsOffsetMask = 0x00000010,
+    SpvImageOperandsConstOffsetsMask = 0x00000020,
+    SpvImageOperandsSampleMask = 0x00000040,
+    SpvImageOperandsMinLodMask = 0x00000080,
+} SpvImageOperandsMask;
+
+typedef enum SpvFPFastMathModeShift_ {
+    SpvFPFastMathModeNotNaNShift = 0,
+    SpvFPFastMathModeNotInfShift = 1,
+    SpvFPFastMathModeNSZShift = 2,
+    SpvFPFastMathModeAllowRecipShift = 3,
+    SpvFPFastMathModeFastShift = 4,
+    SpvFPFastMathModeMax = 0x7fffffff,
+} SpvFPFastMathModeShift;
+
+typedef enum SpvFPFastMathModeMask_ {
+    SpvFPFastMathModeMaskNone = 0,
+    SpvFPFastMathModeNotNaNMask = 0x00000001,
+    SpvFPFastMathModeNotInfMask = 0x00000002,
+    SpvFPFastMathModeNSZMask = 0x00000004,
+    SpvFPFastMathModeAllowRecipMask = 0x00000008,
+    SpvFPFastMathModeFastMask = 0x00000010,
+} SpvFPFastMathModeMask;
+
+typedef enum SpvFPRoundingMode_ {
+    SpvFPRoundingModeRTE = 0,
+    SpvFPRoundingModeRTZ = 1,
+    SpvFPRoundingModeRTP = 2,
+    SpvFPRoundingModeRTN = 3,
+    SpvFPRoundingModeMax = 0x7fffffff,
+} SpvFPRoundingMode;
+
+typedef enum SpvLinkageType_ {
+    SpvLinkageTypeExport = 0,
+    SpvLinkageTypeImport = 1,
+    SpvLinkageTypeMax = 0x7fffffff,
+} SpvLinkageType;
+
+typedef enum SpvAccessQualifier_ {
+    SpvAccessQualifierReadOnly = 0,
+    SpvAccessQualifierWriteOnly = 1,
+    SpvAccessQualifierReadWrite = 2,
+    SpvAccessQualifierMax = 0x7fffffff,
+} SpvAccessQualifier;
+
+typedef enum SpvFunctionParameterAttribute_ {
+    SpvFunctionParameterAttributeZext = 0,
+    SpvFunctionParameterAttributeSext = 1,
+    SpvFunctionParameterAttributeByVal = 2,
+    SpvFunctionParameterAttributeSret = 3,
+    SpvFunctionParameterAttributeNoAlias = 4,
+    SpvFunctionParameterAttributeNoCapture = 5,
+    SpvFunctionParameterAttributeNoWrite = 6,
+    SpvFunctionParameterAttributeNoReadWrite = 7,
+    SpvFunctionParameterAttributeMax = 0x7fffffff,
+} SpvFunctionParameterAttribute;
+
+typedef enum SpvDecoration_ {
+    SpvDecorationRelaxedPrecision = 0,
+    SpvDecorationSpecId = 1,
+    SpvDecorationBlock = 2,
+    SpvDecorationBufferBlock = 3,
+    SpvDecorationRowMajor = 4,
+    SpvDecorationColMajor = 5,
+    SpvDecorationArrayStride = 6,
+    SpvDecorationMatrixStride = 7,
+    SpvDecorationGLSLShared = 8,
+    SpvDecorationGLSLPacked = 9,
+    SpvDecorationCPacked = 10,
+    SpvDecorationBuiltIn = 11,
+    SpvDecorationNoPerspective = 13,
+    SpvDecorationFlat = 14,
+    SpvDecorationPatch = 15,
+    SpvDecorationCentroid = 16,
+    SpvDecorationSample = 17,
+    SpvDecorationInvariant = 18,
+    SpvDecorationRestrict = 19,
+    SpvDecorationAliased = 20,
+    SpvDecorationVolatile = 21,
+    SpvDecorationConstant = 22,
+    SpvDecorationCoherent = 23,
+    SpvDecorationNonWritable = 24,
+    SpvDecorationNonReadable = 25,
+    SpvDecorationUniform = 26,
+    SpvDecorationSaturatedConversion = 28,
+    SpvDecorationStream = 29,
+    SpvDecorationLocation = 30,
+    SpvDecorationComponent = 31,
+    SpvDecorationIndex = 32,
+    SpvDecorationBinding = 33,
+    SpvDecorationDescriptorSet = 34,
+    SpvDecorationOffset = 35,
+    SpvDecorationXfbBuffer = 36,
+    SpvDecorationXfbStride = 37,
+    SpvDecorationFuncParamAttr = 38,
+    SpvDecorationFPRoundingMode = 39,
+    SpvDecorationFPFastMathMode = 40,
+    SpvDecorationLinkageAttributes = 41,
+    SpvDecorationNoContraction = 42,
+    SpvDecorationInputAttachmentIndex = 43,
+    SpvDecorationAlignment = 44,
+    SpvDecorationMaxByteOffset = 45,
+    SpvDecorationAlignmentId = 46,
+    SpvDecorationMaxByteOffsetId = 47,
+    SpvDecorationExplicitInterpAMD = 4999,
+    SpvDecorationOverrideCoverageNV = 5248,
+    SpvDecorationPassthroughNV = 5250,
+    SpvDecorationViewportRelativeNV = 5252,
+    SpvDecorationSecondaryViewportRelativeNV = 5256,
+    SpvDecorationHlslCounterBufferGOOGLE = 5634,
+    SpvDecorationHlslSemanticGOOGLE = 5635,
+    SpvDecorationMax = 0x7fffffff,
+} SpvDecoration;
+
+typedef enum SpvBuiltIn_ {
+    SpvBuiltInPosition = 0,
+    SpvBuiltInPointSize = 1,
+    SpvBuiltInClipDistance = 3,
+    SpvBuiltInCullDistance = 4,
+    SpvBuiltInVertexId = 5,
+    SpvBuiltInInstanceId = 6,
+    SpvBuiltInPrimitiveId = 7,
+    SpvBuiltInInvocationId = 8,
+    SpvBuiltInLayer = 9,
+    SpvBuiltInViewportIndex = 10,
+    SpvBuiltInTessLevelOuter = 11,
+    SpvBuiltInTessLevelInner = 12,
+    SpvBuiltInTessCoord = 13,
+    SpvBuiltInPatchVertices = 14,
+    SpvBuiltInFragCoord = 15,
+    SpvBuiltInPointCoord = 16,
+    SpvBuiltInFrontFacing = 17,
+    SpvBuiltInSampleId = 18,
+    SpvBuiltInSamplePosition = 19,
+    SpvBuiltInSampleMask = 20,
+    SpvBuiltInFragDepth = 22,
+    SpvBuiltInHelperInvocation = 23,
+    SpvBuiltInNumWorkgroups = 24,
+    SpvBuiltInWorkgroupSize = 25,
+    SpvBuiltInWorkgroupId = 26,
+    SpvBuiltInLocalInvocationId = 27,
+    SpvBuiltInGlobalInvocationId = 28,
+    SpvBuiltInLocalInvocationIndex = 29,
+    SpvBuiltInWorkDim = 30,
+    SpvBuiltInGlobalSize = 31,
+    SpvBuiltInEnqueuedWorkgroupSize = 32,
+    SpvBuiltInGlobalOffset = 33,
+    SpvBuiltInGlobalLinearId = 34,
+    SpvBuiltInSubgroupSize = 36,
+    SpvBuiltInSubgroupMaxSize = 37,
+    SpvBuiltInNumSubgroups = 38,
+    SpvBuiltInNumEnqueuedSubgroups = 39,
+    SpvBuiltInSubgroupId = 40,
+    SpvBuiltInSubgroupLocalInvocationId = 41,
+    SpvBuiltInVertexIndex = 42,
+    SpvBuiltInInstanceIndex = 43,
+    SpvBuiltInSubgroupEqMaskKHR = 4416,
+    SpvBuiltInSubgroupGeMaskKHR = 4417,
+    SpvBuiltInSubgroupGtMaskKHR = 4418,
+    SpvBuiltInSubgroupLeMaskKHR = 4419,
+    SpvBuiltInSubgroupLtMaskKHR = 4420,
+    SpvBuiltInBaseVertex = 4424,
+    SpvBuiltInBaseInstance = 4425,
+    SpvBuiltInDrawIndex = 4426,
+    SpvBuiltInDeviceIndex = 4438,
+    SpvBuiltInViewIndex = 4440,
+    SpvBuiltInBaryCoordNoPerspAMD = 4992,
+    SpvBuiltInBaryCoordNoPerspCentroidAMD = 4993,
+    SpvBuiltInBaryCoordNoPerspSampleAMD = 4994,
+    SpvBuiltInBaryCoordSmoothAMD = 4995,
+    SpvBuiltInBaryCoordSmoothCentroidAMD = 4996,
+    SpvBuiltInBaryCoordSmoothSampleAMD = 4997,
+    SpvBuiltInBaryCoordPullModelAMD = 4998,
+    SpvBuiltInFragStencilRefEXT = 5014,
+    SpvBuiltInViewportMaskNV = 5253,
+    SpvBuiltInSecondaryPositionNV = 5257,
+    SpvBuiltInSecondaryViewportMaskNV = 5258,
+    SpvBuiltInPositionPerViewNV = 5261,
+    SpvBuiltInViewportMaskPerViewNV = 5262,
+    SpvBuiltInMax = 0x7fffffff,
+} SpvBuiltIn;
+
+typedef enum SpvSelectionControlShift_ {
+    SpvSelectionControlFlattenShift = 0,
+    SpvSelectionControlDontFlattenShift = 1,
+    SpvSelectionControlMax = 0x7fffffff,
+} SpvSelectionControlShift;
+
+typedef enum SpvSelectionControlMask_ {
+    SpvSelectionControlMaskNone = 0,
+    SpvSelectionControlFlattenMask = 0x00000001,
+    SpvSelectionControlDontFlattenMask = 0x00000002,
+} SpvSelectionControlMask;
+
+typedef enum SpvLoopControlShift_ {
+    SpvLoopControlUnrollShift = 0,
+    SpvLoopControlDontUnrollShift = 1,
+    SpvLoopControlDependencyInfiniteShift = 2,
+    SpvLoopControlDependencyLengthShift = 3,
+    SpvLoopControlMax = 0x7fffffff,
+} SpvLoopControlShift;
+
+typedef enum SpvLoopControlMask_ {
+    SpvLoopControlMaskNone = 0,
+    SpvLoopControlUnrollMask = 0x00000001,
+    SpvLoopControlDontUnrollMask = 0x00000002,
+    SpvLoopControlDependencyInfiniteMask = 0x00000004,
+    SpvLoopControlDependencyLengthMask = 0x00000008,
+} SpvLoopControlMask;
+
+typedef enum SpvFunctionControlShift_ {
+    SpvFunctionControlInlineShift = 0,
+    SpvFunctionControlDontInlineShift = 1,
+    SpvFunctionControlPureShift = 2,
+    SpvFunctionControlConstShift = 3,
+    SpvFunctionControlMax = 0x7fffffff,
+} SpvFunctionControlShift;
+
+typedef enum SpvFunctionControlMask_ {
+    SpvFunctionControlMaskNone = 0,
+    SpvFunctionControlInlineMask = 0x00000001,
+    SpvFunctionControlDontInlineMask = 0x00000002,
+    SpvFunctionControlPureMask = 0x00000004,
+    SpvFunctionControlConstMask = 0x00000008,
+} SpvFunctionControlMask;
+
+typedef enum SpvMemorySemanticsShift_ {
+    SpvMemorySemanticsAcquireShift = 1,
+    SpvMemorySemanticsReleaseShift = 2,
+    SpvMemorySemanticsAcquireReleaseShift = 3,
+    SpvMemorySemanticsSequentiallyConsistentShift = 4,
+    SpvMemorySemanticsUniformMemoryShift = 6,
+    SpvMemorySemanticsSubgroupMemoryShift = 7,
+    SpvMemorySemanticsWorkgroupMemoryShift = 8,
+    SpvMemorySemanticsCrossWorkgroupMemoryShift = 9,
+    SpvMemorySemanticsAtomicCounterMemoryShift = 10,
+    SpvMemorySemanticsImageMemoryShift = 11,
+    SpvMemorySemanticsMax = 0x7fffffff,
+} SpvMemorySemanticsShift;
+
+typedef enum SpvMemorySemanticsMask_ {
+    SpvMemorySemanticsMaskNone = 0,
+    SpvMemorySemanticsAcquireMask = 0x00000002,
+    SpvMemorySemanticsReleaseMask = 0x00000004,
+    SpvMemorySemanticsAcquireReleaseMask = 0x00000008,
+    SpvMemorySemanticsSequentiallyConsistentMask = 0x00000010,
+    SpvMemorySemanticsUniformMemoryMask = 0x00000040,
+    SpvMemorySemanticsSubgroupMemoryMask = 0x00000080,
+    SpvMemorySemanticsWorkgroupMemoryMask = 0x00000100,
+    SpvMemorySemanticsCrossWorkgroupMemoryMask = 0x00000200,
+    SpvMemorySemanticsAtomicCounterMemoryMask = 0x00000400,
+    SpvMemorySemanticsImageMemoryMask = 0x00000800,
+} SpvMemorySemanticsMask;
+
+typedef enum SpvMemoryAccessShift_ {
+    SpvMemoryAccessVolatileShift = 0,
+    SpvMemoryAccessAlignedShift = 1,
+    SpvMemoryAccessNontemporalShift = 2,
+    SpvMemoryAccessMax = 0x7fffffff,
+} SpvMemoryAccessShift;
+
+typedef enum SpvMemoryAccessMask_ {
+    SpvMemoryAccessMaskNone = 0,
+    SpvMemoryAccessVolatileMask = 0x00000001,
+    SpvMemoryAccessAlignedMask = 0x00000002,
+    SpvMemoryAccessNontemporalMask = 0x00000004,
+} SpvMemoryAccessMask;
+
+typedef enum SpvScope_ {
+    SpvScopeCrossDevice = 0,
+    SpvScopeDevice = 1,
+    SpvScopeWorkgroup = 2,
+    SpvScopeSubgroup = 3,
+    SpvScopeInvocation = 4,
+    SpvScopeMax = 0x7fffffff,
+} SpvScope;
+
+typedef enum SpvGroupOperation_ {
+    SpvGroupOperationReduce = 0,
+    SpvGroupOperationInclusiveScan = 1,
+    SpvGroupOperationExclusiveScan = 2,
+    SpvGroupOperationMax = 0x7fffffff,
+} SpvGroupOperation;
+
+typedef enum SpvKernelEnqueueFlags_ {
+    SpvKernelEnqueueFlagsNoWait = 0,
+    SpvKernelEnqueueFlagsWaitKernel = 1,
+    SpvKernelEnqueueFlagsWaitWorkGroup = 2,
+    SpvKernelEnqueueFlagsMax = 0x7fffffff,
+} SpvKernelEnqueueFlags;
+
+typedef enum SpvKernelProfilingInfoShift_ {
+    SpvKernelProfilingInfoCmdExecTimeShift = 0,
+    SpvKernelProfilingInfoMax = 0x7fffffff,
+} SpvKernelProfilingInfoShift;
+
+typedef enum SpvKernelProfilingInfoMask_ {
+    SpvKernelProfilingInfoMaskNone = 0,
+    SpvKernelProfilingInfoCmdExecTimeMask = 0x00000001,
+} SpvKernelProfilingInfoMask;
+
+typedef enum SpvCapability_ {
+    SpvCapabilityMatrix = 0,
+    SpvCapabilityShader = 1,
+    SpvCapabilityGeometry = 2,
+    SpvCapabilityTessellation = 3,
+    SpvCapabilityAddresses = 4,
+    SpvCapabilityLinkage = 5,
+    SpvCapabilityKernel = 6,
+    SpvCapabilityVector16 = 7,
+    SpvCapabilityFloat16Buffer = 8,
+    SpvCapabilityFloat16 = 9,
+    SpvCapabilityFloat64 = 10,
+    SpvCapabilityInt64 = 11,
+    SpvCapabilityInt64Atomics = 12,
+    SpvCapabilityImageBasic = 13,
+    SpvCapabilityImageReadWrite = 14,
+    SpvCapabilityImageMipmap = 15,
+    SpvCapabilityPipes = 17,
+    SpvCapabilityGroups = 18,
+    SpvCapabilityDeviceEnqueue = 19,
+    SpvCapabilityLiteralSampler = 20,
+    SpvCapabilityAtomicStorage = 21,
+    SpvCapabilityInt16 = 22,
+    SpvCapabilityTessellationPointSize = 23,
+    SpvCapabilityGeometryPointSize = 24,
+    SpvCapabilityImageGatherExtended = 25,
+    SpvCapabilityStorageImageMultisample = 27,
+    SpvCapabilityUniformBufferArrayDynamicIndexing = 28,
+    SpvCapabilitySampledImageArrayDynamicIndexing = 29,
+    SpvCapabilityStorageBufferArrayDynamicIndexing = 30,
+    SpvCapabilityStorageImageArrayDynamicIndexing = 31,
+    SpvCapabilityClipDistance = 32,
+    SpvCapabilityCullDistance = 33,
+    SpvCapabilityImageCubeArray = 34,
+    SpvCapabilitySampleRateShading = 35,
+    SpvCapabilityImageRect = 36,
+    SpvCapabilitySampledRect = 37,
+    SpvCapabilityGenericPointer = 38,
+    SpvCapabilityInt8 = 39,
+    SpvCapabilityInputAttachment = 40,
+    SpvCapabilitySparseResidency = 41,
+    SpvCapabilityMinLod = 42,
+    SpvCapabilitySampled1D = 43,
+    SpvCapabilityImage1D = 44,
+    SpvCapabilitySampledCubeArray = 45,
+    SpvCapabilitySampledBuffer = 46,
+    SpvCapabilityImageBuffer = 47,
+    SpvCapabilityImageMSArray = 48,
+    SpvCapabilityStorageImageExtendedFormats = 49,
+    SpvCapabilityImageQuery = 50,
+    SpvCapabilityDerivativeControl = 51,
+    SpvCapabilityInterpolationFunction = 52,
+    SpvCapabilityTransformFeedback = 53,
+    SpvCapabilityGeometryStreams = 54,
+    SpvCapabilityStorageImageReadWithoutFormat = 55,
+    SpvCapabilityStorageImageWriteWithoutFormat = 56,
+    SpvCapabilityMultiViewport = 57,
+    SpvCapabilitySubgroupDispatch = 58,
+    SpvCapabilityNamedBarrier = 59,
+    SpvCapabilityPipeStorage = 60,
+    SpvCapabilitySubgroupBallotKHR = 4423,
+    SpvCapabilityDrawParameters = 4427,
+    SpvCapabilitySubgroupVoteKHR = 4431,
+    SpvCapabilityStorageBuffer16BitAccess = 4433,
+    SpvCapabilityStorageUniformBufferBlock16 = 4433,
+    SpvCapabilityStorageUniform16 = 4434,
+    SpvCapabilityUniformAndStorageBuffer16BitAccess = 4434,
+    SpvCapabilityStoragePushConstant16 = 4435,
+    SpvCapabilityStorageInputOutput16 = 4436,
+    SpvCapabilityDeviceGroup = 4437,
+    SpvCapabilityMultiView = 4439,
+    SpvCapabilityVariablePointersStorageBuffer = 4441,
+    SpvCapabilityVariablePointers = 4442,
+    SpvCapabilityAtomicStorageOps = 4445,
+    SpvCapabilitySampleMaskPostDepthCoverage = 4447,
+    SpvCapabilityImageGatherBiasLodAMD = 5009,
+    SpvCapabilityFragmentMaskAMD = 5010,
+    SpvCapabilityStencilExportEXT = 5013,
+    SpvCapabilityImageReadWriteLodAMD = 5015,
+    SpvCapabilitySampleMaskOverrideCoverageNV = 5249,
+    SpvCapabilityGeometryShaderPassthroughNV = 5251,
+    SpvCapabilityShaderViewportIndexLayerEXT = 5254,
+    SpvCapabilityShaderViewportIndexLayerNV = 5254,
+    SpvCapabilityShaderViewportMaskNV = 5255,
+    SpvCapabilityShaderStereoViewNV = 5259,
+    SpvCapabilityPerViewAttributesNV = 5260,
+    SpvCapabilitySubgroupShuffleINTEL = 5568,
+    SpvCapabilitySubgroupBufferBlockIOINTEL = 5569,
+    SpvCapabilitySubgroupImageBlockIOINTEL = 5570,
+    SpvCapabilityMax = 0x7fffffff,
+} SpvCapability;
+
+typedef enum SpvOp_ {
+    SpvOpNop = 0,
+    SpvOpUndef = 1,
+    SpvOpSourceContinued = 2,
+    SpvOpSource = 3,
+    SpvOpSourceExtension = 4,
+    SpvOpName = 5,
+    SpvOpMemberName = 6,
+    SpvOpString = 7,
+    SpvOpLine = 8,
+    SpvOpExtension = 10,
+    SpvOpExtInstImport = 11,
+    SpvOpExtInst = 12,
+    SpvOpMemoryModel = 14,
+    SpvOpEntryPoint = 15,
+    SpvOpExecutionMode = 16,
+    SpvOpCapability = 17,
+    SpvOpTypeVoid = 19,
+    SpvOpTypeBool = 20,
+    SpvOpTypeInt = 21,
+    SpvOpTypeFloat = 22,
+    SpvOpTypeVector = 23,
+    SpvOpTypeMatrix = 24,
+    SpvOpTypeImage = 25,
+    SpvOpTypeSampler = 26,
+    SpvOpTypeSampledImage = 27,
+    SpvOpTypeArray = 28,
+    SpvOpTypeRuntimeArray = 29,
+    SpvOpTypeStruct = 30,
+    SpvOpTypeOpaque = 31,
+    SpvOpTypePointer = 32,
+    SpvOpTypeFunction = 33,
+    SpvOpTypeEvent = 34,
+    SpvOpTypeDeviceEvent = 35,
+    SpvOpTypeReserveId = 36,
+    SpvOpTypeQueue = 37,
+    SpvOpTypePipe = 38,
+    SpvOpTypeForwardPointer = 39,
+    SpvOpConstantTrue = 41,
+    SpvOpConstantFalse = 42,
+    SpvOpConstant = 43,
+    SpvOpConstantComposite = 44,
+    SpvOpConstantSampler = 45,
+    SpvOpConstantNull = 46,
+    SpvOpSpecConstantTrue = 48,
+    SpvOpSpecConstantFalse = 49,
+    SpvOpSpecConstant = 50,
+    SpvOpSpecConstantComposite = 51,
+    SpvOpSpecConstantOp = 52,
+    SpvOpFunction = 54,
+    SpvOpFunctionParameter = 55,
+    SpvOpFunctionEnd = 56,
+    SpvOpFunctionCall = 57,
+    SpvOpVariable = 59,
+    SpvOpImageTexelPointer = 60,
+    SpvOpLoad = 61,
+    SpvOpStore = 62,
+    SpvOpCopyMemory = 63,
+    SpvOpCopyMemorySized = 64,
+    SpvOpAccessChain = 65,
+    SpvOpInBoundsAccessChain = 66,
+    SpvOpPtrAccessChain = 67,
+    SpvOpArrayLength = 68,
+    SpvOpGenericPtrMemSemantics = 69,
+    SpvOpInBoundsPtrAccessChain = 70,
+    SpvOpDecorate = 71,
+    SpvOpMemberDecorate = 72,
+    SpvOpDecorationGroup = 73,
+    SpvOpGroupDecorate = 74,
+    SpvOpGroupMemberDecorate = 75,
+    SpvOpVectorExtractDynamic = 77,
+    SpvOpVectorInsertDynamic = 78,
+    SpvOpVectorShuffle = 79,
+    SpvOpCompositeConstruct = 80,
+    SpvOpCompositeExtract = 81,
+    SpvOpCompositeInsert = 82,
+    SpvOpCopyObject = 83,
+    SpvOpTranspose = 84,
+    SpvOpSampledImage = 86,
+    SpvOpImageSampleImplicitLod = 87,
+    SpvOpImageSampleExplicitLod = 88,
+    SpvOpImageSampleDrefImplicitLod = 89,
+    SpvOpImageSampleDrefExplicitLod = 90,
+    SpvOpImageSampleProjImplicitLod = 91,
+    SpvOpImageSampleProjExplicitLod = 92,
+    SpvOpImageSampleProjDrefImplicitLod = 93,
+    SpvOpImageSampleProjDrefExplicitLod = 94,
+    SpvOpImageFetch = 95,
+    SpvOpImageGather = 96,
+    SpvOpImageDrefGather = 97,
+    SpvOpImageRead = 98,
+    SpvOpImageWrite = 99,
+    SpvOpImage = 100,
+    SpvOpImageQueryFormat = 101,
+    SpvOpImageQueryOrder = 102,
+    SpvOpImageQuerySizeLod = 103,
+    SpvOpImageQuerySize = 104,
+    SpvOpImageQueryLod = 105,
+    SpvOpImageQueryLevels = 106,
+    SpvOpImageQuerySamples = 107,
+    SpvOpConvertFToU = 109,
+    SpvOpConvertFToS = 110,
+    SpvOpConvertSToF = 111,
+    SpvOpConvertUToF = 112,
+    SpvOpUConvert = 113,
+    SpvOpSConvert = 114,
+    SpvOpFConvert = 115,
+    SpvOpQuantizeToF16 = 116,
+    SpvOpConvertPtrToU = 117,
+    SpvOpSatConvertSToU = 118,
+    SpvOpSatConvertUToS = 119,
+    SpvOpConvertUToPtr = 120,
+    SpvOpPtrCastToGeneric = 121,
+    SpvOpGenericCastToPtr = 122,
+    SpvOpGenericCastToPtrExplicit = 123,
+    SpvOpBitcast = 124,
+    SpvOpSNegate = 126,
+    SpvOpFNegate = 127,
+    SpvOpIAdd = 128,
+    SpvOpFAdd = 129,
+    SpvOpISub = 130,
+    SpvOpFSub = 131,
+    SpvOpIMul = 132,
+    SpvOpFMul = 133,
+    SpvOpUDiv = 134,
+    SpvOpSDiv = 135,
+    SpvOpFDiv = 136,
+    SpvOpUMod = 137,
+    SpvOpSRem = 138,
+    SpvOpSMod = 139,
+    SpvOpFRem = 140,
+    SpvOpFMod = 141,
+    SpvOpVectorTimesScalar = 142,
+    SpvOpMatrixTimesScalar = 143,
+    SpvOpVectorTimesMatrix = 144,
+    SpvOpMatrixTimesVector = 145,
+    SpvOpMatrixTimesMatrix = 146,
+    SpvOpOuterProduct = 147,
+    SpvOpDot = 148,
+    SpvOpIAddCarry = 149,
+    SpvOpISubBorrow = 150,
+    SpvOpUMulExtended = 151,
+    SpvOpSMulExtended = 152,
+    SpvOpAny = 154,
+    SpvOpAll = 155,
+    SpvOpIsNan = 156,
+    SpvOpIsInf = 157,
+    SpvOpIsFinite = 158,
+    SpvOpIsNormal = 159,
+    SpvOpSignBitSet = 160,
+    SpvOpLessOrGreater = 161,
+    SpvOpOrdered = 162,
+    SpvOpUnordered = 163,
+    SpvOpLogicalEqual = 164,
+    SpvOpLogicalNotEqual = 165,
+    SpvOpLogicalOr = 166,
+    SpvOpLogicalAnd = 167,
+    SpvOpLogicalNot = 168,
+    SpvOpSelect = 169,
+    SpvOpIEqual = 170,
+    SpvOpINotEqual = 171,
+    SpvOpUGreaterThan = 172,
+    SpvOpSGreaterThan = 173,
+    SpvOpUGreaterThanEqual = 174,
+    SpvOpSGreaterThanEqual = 175,
+    SpvOpULessThan = 176,
+    SpvOpSLessThan = 177,
+    SpvOpULessThanEqual = 178,
+    SpvOpSLessThanEqual = 179,
+    SpvOpFOrdEqual = 180,
+    SpvOpFUnordEqual = 181,
+    SpvOpFOrdNotEqual = 182,
+    SpvOpFUnordNotEqual = 183,
+    SpvOpFOrdLessThan = 184,
+    SpvOpFUnordLessThan = 185,
+    SpvOpFOrdGreaterThan = 186,
+    SpvOpFUnordGreaterThan = 187,
+    SpvOpFOrdLessThanEqual = 188,
+    SpvOpFUnordLessThanEqual = 189,
+    SpvOpFOrdGreaterThanEqual = 190,
+    SpvOpFUnordGreaterThanEqual = 191,
+    SpvOpShiftRightLogical = 194,
+    SpvOpShiftRightArithmetic = 195,
+    SpvOpShiftLeftLogical = 196,
+    SpvOpBitwiseOr = 197,
+    SpvOpBitwiseXor = 198,
+    SpvOpBitwiseAnd = 199,
+    SpvOpNot = 200,
+    SpvOpBitFieldInsert = 201,
+    SpvOpBitFieldSExtract = 202,
+    SpvOpBitFieldUExtract = 203,
+    SpvOpBitReverse = 204,
+    SpvOpBitCount = 205,
+    SpvOpDPdx = 207,
+    SpvOpDPdy = 208,
+    SpvOpFwidth = 209,
+    SpvOpDPdxFine = 210,
+    SpvOpDPdyFine = 211,
+    SpvOpFwidthFine = 212,
+    SpvOpDPdxCoarse = 213,
+    SpvOpDPdyCoarse = 214,
+    SpvOpFwidthCoarse = 215,
+    SpvOpEmitVertex = 218,
+    SpvOpEndPrimitive = 219,
+    SpvOpEmitStreamVertex = 220,
+    SpvOpEndStreamPrimitive = 221,
+    SpvOpControlBarrier = 224,
+    SpvOpMemoryBarrier = 225,
+    SpvOpAtomicLoad = 227,
+    SpvOpAtomicStore = 228,
+    SpvOpAtomicExchange = 229,
+    SpvOpAtomicCompareExchange = 230,
+    SpvOpAtomicCompareExchangeWeak = 231,
+    SpvOpAtomicIIncrement = 232,
+    SpvOpAtomicIDecrement = 233,
+    SpvOpAtomicIAdd = 234,
+    SpvOpAtomicISub = 235,
+    SpvOpAtomicSMin = 236,
+    SpvOpAtomicUMin = 237,
+    SpvOpAtomicSMax = 238,
+    SpvOpAtomicUMax = 239,
+    SpvOpAtomicAnd = 240,
+    SpvOpAtomicOr = 241,
+    SpvOpAtomicXor = 242,
+    SpvOpPhi = 245,
+    SpvOpLoopMerge = 246,
+    SpvOpSelectionMerge = 247,
+    SpvOpLabel = 248,
+    SpvOpBranch = 249,
+    SpvOpBranchConditional = 250,
+    SpvOpSwitch = 251,
+    SpvOpKill = 252,
+    SpvOpReturn = 253,
+    SpvOpReturnValue = 254,
+    SpvOpUnreachable = 255,
+    SpvOpLifetimeStart = 256,
+    SpvOpLifetimeStop = 257,
+    SpvOpGroupAsyncCopy = 259,
+    SpvOpGroupWaitEvents = 260,
+    SpvOpGroupAll = 261,
+    SpvOpGroupAny = 262,
+    SpvOpGroupBroadcast = 263,
+    SpvOpGroupIAdd = 264,
+    SpvOpGroupFAdd = 265,
+    SpvOpGroupFMin = 266,
+    SpvOpGroupUMin = 267,
+    SpvOpGroupSMin = 268,
+    SpvOpGroupFMax = 269,
+    SpvOpGroupUMax = 270,
+    SpvOpGroupSMax = 271,
+    SpvOpReadPipe = 274,
+    SpvOpWritePipe = 275,
+    SpvOpReservedReadPipe = 276,
+    SpvOpReservedWritePipe = 277,
+    SpvOpReserveReadPipePackets = 278,
+    SpvOpReserveWritePipePackets = 279,
+    SpvOpCommitReadPipe = 280,
+    SpvOpCommitWritePipe = 281,
+    SpvOpIsValidReserveId = 282,
+    SpvOpGetNumPipePackets = 283,
+    SpvOpGetMaxPipePackets = 284,
+    SpvOpGroupReserveReadPipePackets = 285,
+    SpvOpGroupReserveWritePipePackets = 286,
+    SpvOpGroupCommitReadPipe = 287,
+    SpvOpGroupCommitWritePipe = 288,
+    SpvOpEnqueueMarker = 291,
+    SpvOpEnqueueKernel = 292,
+    SpvOpGetKernelNDrangeSubGroupCount = 293,
+    SpvOpGetKernelNDrangeMaxSubGroupSize = 294,
+    SpvOpGetKernelWorkGroupSize = 295,
+    SpvOpGetKernelPreferredWorkGroupSizeMultiple = 296,
+    SpvOpRetainEvent = 297,
+    SpvOpReleaseEvent = 298,
+    SpvOpCreateUserEvent = 299,
+    SpvOpIsValidEvent = 300,
+    SpvOpSetUserEventStatus = 301,
+    SpvOpCaptureEventProfilingInfo = 302,
+    SpvOpGetDefaultQueue = 303,
+    SpvOpBuildNDRange = 304,
+    SpvOpImageSparseSampleImplicitLod = 305,
+    SpvOpImageSparseSampleExplicitLod = 306,
+    SpvOpImageSparseSampleDrefImplicitLod = 307,
+    SpvOpImageSparseSampleDrefExplicitLod = 308,
+    SpvOpImageSparseSampleProjImplicitLod = 309,
+    SpvOpImageSparseSampleProjExplicitLod = 310,
+    SpvOpImageSparseSampleProjDrefImplicitLod = 311,
+    SpvOpImageSparseSampleProjDrefExplicitLod = 312,
+    SpvOpImageSparseFetch = 313,
+    SpvOpImageSparseGather = 314,
+    SpvOpImageSparseDrefGather = 315,
+    SpvOpImageSparseTexelsResident = 316,
+    SpvOpNoLine = 317,
+    SpvOpAtomicFlagTestAndSet = 318,
+    SpvOpAtomicFlagClear = 319,
+    SpvOpImageSparseRead = 320,
+    SpvOpSizeOf = 321,
+    SpvOpTypePipeStorage = 322,
+    SpvOpConstantPipeStorage = 323,
+    SpvOpCreatePipeFromPipeStorage = 324,
+    SpvOpGetKernelLocalSizeForSubgroupCount = 325,
+    SpvOpGetKernelMaxNumSubgroups = 326,
+    SpvOpTypeNamedBarrier = 327,
+    SpvOpNamedBarrierInitialize = 328,
+    SpvOpMemoryNamedBarrier = 329,
+    SpvOpModuleProcessed = 330,
+    SpvOpExecutionModeId = 331,
+    SpvOpDecorateId = 332,
+    SpvOpSubgroupBallotKHR = 4421,
+    SpvOpSubgroupFirstInvocationKHR = 4422,
+    SpvOpSubgroupAllKHR = 4428,
+    SpvOpSubgroupAnyKHR = 4429,
+    SpvOpSubgroupAllEqualKHR = 4430,
+    SpvOpSubgroupReadInvocationKHR = 4432,
+    SpvOpGroupIAddNonUniformAMD = 5000,
+    SpvOpGroupFAddNonUniformAMD = 5001,
+    SpvOpGroupFMinNonUniformAMD = 5002,
+    SpvOpGroupUMinNonUniformAMD = 5003,
+    SpvOpGroupSMinNonUniformAMD = 5004,
+    SpvOpGroupFMaxNonUniformAMD = 5005,
+    SpvOpGroupUMaxNonUniformAMD = 5006,
+    SpvOpGroupSMaxNonUniformAMD = 5007,
+    SpvOpFragmentMaskFetchAMD = 5011,
+    SpvOpFragmentFetchAMD = 5012,
+    SpvOpSubgroupShuffleINTEL = 5571,
+    SpvOpSubgroupShuffleDownINTEL = 5572,
+    SpvOpSubgroupShuffleUpINTEL = 5573,
+    SpvOpSubgroupShuffleXorINTEL = 5574,
+    SpvOpSubgroupBlockReadINTEL = 5575,
+    SpvOpSubgroupBlockWriteINTEL = 5576,
+    SpvOpSubgroupImageBlockReadINTEL = 5577,
+    SpvOpSubgroupImageBlockWriteINTEL = 5578,
+    SpvOpDecorateStringGOOGLE = 5632,
+    SpvOpMemberDecorateStringGOOGLE = 5633,
+    SpvOpMax = 0x7fffffff,
+} SpvOp;
+
+#endif  // #ifndef spirv_H
+
diff --git a/libs/spirv-headers/spirv/1.2/spirv.hpp b/libs/spirv-headers/spirv/1.2/spirv.hpp
new file mode 100644
index 00000000000..57bd97a0210
--- /dev/null
+++ b/libs/spirv-headers/spirv/1.2/spirv.hpp
@@ -0,0 +1,1030 @@
+// Copyright (c) 2014-2018 The Khronos Group Inc.
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and/or associated documentation files (the "Materials"),
+// to deal in the Materials without restriction, including without limitation
+// the rights to use, copy, modify, merge, publish, distribute, sublicense,
+// and/or sell copies of the Materials, and to permit persons to whom the
+// Materials are furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Materials.
+// 
+// MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS KHRONOS
+// STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS SPECIFICATIONS AND
+// HEADER INFORMATION ARE LOCATED AT https://www.khronos.org/registry/ 
+// 
+// THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM,OUT OF OR IN CONNECTION WITH THE MATERIALS OR THE USE OR OTHER DEALINGS
+// IN THE MATERIALS.
+
+// This header is automatically generated by the same tool that creates
+// the Binary Section of the SPIR-V specification.
+
+// Enumeration tokens for SPIR-V, in various styles:
+//   C, C++, C++11, JSON, Lua, Python
+// 
+// - C will have tokens with a "Spv" prefix, e.g.: SpvSourceLanguageGLSL
+// - C++ will have tokens in the "spv" name space, e.g.: spv::SourceLanguageGLSL
+// - C++11 will use enum classes in the spv namespace, e.g.: spv::SourceLanguage::GLSL
+// - Lua will use tables, e.g.: spv.SourceLanguage.GLSL
+// - Python will use dictionaries, e.g.: spv['SourceLanguage']['GLSL']
+// 
+// Some tokens act like mask values, which can be OR'd together,
+// while others are mutually exclusive.  The mask-like ones have
+// "Mask" in their name, and a parallel enum that has the shift
+// amount (1 << x) for each corresponding enumerant.
+
+#ifndef spirv_HPP
+#define spirv_HPP
+
+namespace spv {
+
+typedef unsigned int Id;
+
+#define SPV_VERSION 0x10200
+#define SPV_REVISION 2
+
+static const unsigned int MagicNumber = 0x07230203;
+static const unsigned int Version = 0x00010200;
+static const unsigned int Revision = 2;
+static const unsigned int OpCodeMask = 0xffff;
+static const unsigned int WordCountShift = 16;
+
+enum SourceLanguage {
+    SourceLanguageUnknown = 0,
+    SourceLanguageESSL = 1,
+    SourceLanguageGLSL = 2,
+    SourceLanguageOpenCL_C = 3,
+    SourceLanguageOpenCL_CPP = 4,
+    SourceLanguageHLSL = 5,
+    SourceLanguageMax = 0x7fffffff,
+};
+
+enum ExecutionModel {
+    ExecutionModelVertex = 0,
+    ExecutionModelTessellationControl = 1,
+    ExecutionModelTessellationEvaluation = 2,
+    ExecutionModelGeometry = 3,
+    ExecutionModelFragment = 4,
+    ExecutionModelGLCompute = 5,
+    ExecutionModelKernel = 6,
+    ExecutionModelMax = 0x7fffffff,
+};
+
+enum AddressingModel {
+    AddressingModelLogical = 0,
+    AddressingModelPhysical32 = 1,
+    AddressingModelPhysical64 = 2,
+    AddressingModelMax = 0x7fffffff,
+};
+
+enum MemoryModel {
+    MemoryModelSimple = 0,
+    MemoryModelGLSL450 = 1,
+    MemoryModelOpenCL = 2,
+    MemoryModelMax = 0x7fffffff,
+};
+
+enum ExecutionMode {
+    ExecutionModeInvocations = 0,
+    ExecutionModeSpacingEqual = 1,
+    ExecutionModeSpacingFractionalEven = 2,
+    ExecutionModeSpacingFractionalOdd = 3,
+    ExecutionModeVertexOrderCw = 4,
+    ExecutionModeVertexOrderCcw = 5,
+    ExecutionModePixelCenterInteger = 6,
+    ExecutionModeOriginUpperLeft = 7,
+    ExecutionModeOriginLowerLeft = 8,
+    ExecutionModeEarlyFragmentTests = 9,
+    ExecutionModePointMode = 10,
+    ExecutionModeXfb = 11,
+    ExecutionModeDepthReplacing = 12,
+    ExecutionModeDepthGreater = 14,
+    ExecutionModeDepthLess = 15,
+    ExecutionModeDepthUnchanged = 16,
+    ExecutionModeLocalSize = 17,
+    ExecutionModeLocalSizeHint = 18,
+    ExecutionModeInputPoints = 19,
+    ExecutionModeInputLines = 20,
+    ExecutionModeInputLinesAdjacency = 21,
+    ExecutionModeTriangles = 22,
+    ExecutionModeInputTrianglesAdjacency = 23,
+    ExecutionModeQuads = 24,
+    ExecutionModeIsolines = 25,
+    ExecutionModeOutputVertices = 26,
+    ExecutionModeOutputPoints = 27,
+    ExecutionModeOutputLineStrip = 28,
+    ExecutionModeOutputTriangleStrip = 29,
+    ExecutionModeVecTypeHint = 30,
+    ExecutionModeContractionOff = 31,
+    ExecutionModeInitializer = 33,
+    ExecutionModeFinalizer = 34,
+    ExecutionModeSubgroupSize = 35,
+    ExecutionModeSubgroupsPerWorkgroup = 36,
+    ExecutionModeSubgroupsPerWorkgroupId = 37,
+    ExecutionModeLocalSizeId = 38,
+    ExecutionModeLocalSizeHintId = 39,
+    ExecutionModePostDepthCoverage = 4446,
+    ExecutionModeStencilRefReplacingEXT = 5027,
+    ExecutionModeMax = 0x7fffffff,
+};
+
+enum StorageClass {
+    StorageClassUniformConstant = 0,
+    StorageClassInput = 1,
+    StorageClassUniform = 2,
+    StorageClassOutput = 3,
+    StorageClassWorkgroup = 4,
+    StorageClassCrossWorkgroup = 5,
+    StorageClassPrivate = 6,
+    StorageClassFunction = 7,
+    StorageClassGeneric = 8,
+    StorageClassPushConstant = 9,
+    StorageClassAtomicCounter = 10,
+    StorageClassImage = 11,
+    StorageClassStorageBuffer = 12,
+    StorageClassMax = 0x7fffffff,
+};
+
+enum Dim {
+    Dim1D = 0,
+    Dim2D = 1,
+    Dim3D = 2,
+    DimCube = 3,
+    DimRect = 4,
+    DimBuffer = 5,
+    DimSubpassData = 6,
+    DimMax = 0x7fffffff,
+};
+
+enum SamplerAddressingMode {
+    SamplerAddressingModeNone = 0,
+    SamplerAddressingModeClampToEdge = 1,
+    SamplerAddressingModeClamp = 2,
+    SamplerAddressingModeRepeat = 3,
+    SamplerAddressingModeRepeatMirrored = 4,
+    SamplerAddressingModeMax = 0x7fffffff,
+};
+
+enum SamplerFilterMode {
+    SamplerFilterModeNearest = 0,
+    SamplerFilterModeLinear = 1,
+    SamplerFilterModeMax = 0x7fffffff,
+};
+
+enum ImageFormat {
+    ImageFormatUnknown = 0,
+    ImageFormatRgba32f = 1,
+    ImageFormatRgba16f = 2,
+    ImageFormatR32f = 3,
+    ImageFormatRgba8 = 4,
+    ImageFormatRgba8Snorm = 5,
+    ImageFormatRg32f = 6,
+    ImageFormatRg16f = 7,
+    ImageFormatR11fG11fB10f = 8,
+    ImageFormatR16f = 9,
+    ImageFormatRgba16 = 10,
+    ImageFormatRgb10A2 = 11,
+    ImageFormatRg16 = 12,
+    ImageFormatRg8 = 13,
+    ImageFormatR16 = 14,
+    ImageFormatR8 = 15,
+    ImageFormatRgba16Snorm = 16,
+    ImageFormatRg16Snorm = 17,
+    ImageFormatRg8Snorm = 18,
+    ImageFormatR16Snorm = 19,
+    ImageFormatR8Snorm = 20,
+    ImageFormatRgba32i = 21,
+    ImageFormatRgba16i = 22,
+    ImageFormatRgba8i = 23,
+    ImageFormatR32i = 24,
+    ImageFormatRg32i = 25,
+    ImageFormatRg16i = 26,
+    ImageFormatRg8i = 27,
+    ImageFormatR16i = 28,
+    ImageFormatR8i = 29,
+    ImageFormatRgba32ui = 30,
+    ImageFormatRgba16ui = 31,
+    ImageFormatRgba8ui = 32,
+    ImageFormatR32ui = 33,
+    ImageFormatRgb10a2ui = 34,
+    ImageFormatRg32ui = 35,
+    ImageFormatRg16ui = 36,
+    ImageFormatRg8ui = 37,
+    ImageFormatR16ui = 38,
+    ImageFormatR8ui = 39,
+    ImageFormatMax = 0x7fffffff,
+};
+
+enum ImageChannelOrder {
+    ImageChannelOrderR = 0,
+    ImageChannelOrderA = 1,
+    ImageChannelOrderRG = 2,
+    ImageChannelOrderRA = 3,
+    ImageChannelOrderRGB = 4,
+    ImageChannelOrderRGBA = 5,
+    ImageChannelOrderBGRA = 6,
+    ImageChannelOrderARGB = 7,
+    ImageChannelOrderIntensity = 8,
+    ImageChannelOrderLuminance = 9,
+    ImageChannelOrderRx = 10,
+    ImageChannelOrderRGx = 11,
+    ImageChannelOrderRGBx = 12,
+    ImageChannelOrderDepth = 13,
+    ImageChannelOrderDepthStencil = 14,
+    ImageChannelOrdersRGB = 15,
+    ImageChannelOrdersRGBx = 16,
+    ImageChannelOrdersRGBA = 17,
+    ImageChannelOrdersBGRA = 18,
+    ImageChannelOrderABGR = 19,
+    ImageChannelOrderMax = 0x7fffffff,
+};
+
+enum ImageChannelDataType {
+    ImageChannelDataTypeSnormInt8 = 0,
+    ImageChannelDataTypeSnormInt16 = 1,
+    ImageChannelDataTypeUnormInt8 = 2,
+    ImageChannelDataTypeUnormInt16 = 3,
+    ImageChannelDataTypeUnormShort565 = 4,
+    ImageChannelDataTypeUnormShort555 = 5,
+    ImageChannelDataTypeUnormInt101010 = 6,
+    ImageChannelDataTypeSignedInt8 = 7,
+    ImageChannelDataTypeSignedInt16 = 8,
+    ImageChannelDataTypeSignedInt32 = 9,
+    ImageChannelDataTypeUnsignedInt8 = 10,
+    ImageChannelDataTypeUnsignedInt16 = 11,
+    ImageChannelDataTypeUnsignedInt32 = 12,
+    ImageChannelDataTypeHalfFloat = 13,
+    ImageChannelDataTypeFloat = 14,
+    ImageChannelDataTypeUnormInt24 = 15,
+    ImageChannelDataTypeUnormInt101010_2 = 16,
+    ImageChannelDataTypeMax = 0x7fffffff,
+};
+
+enum ImageOperandsShift {
+    ImageOperandsBiasShift = 0,
+    ImageOperandsLodShift = 1,
+    ImageOperandsGradShift = 2,
+    ImageOperandsConstOffsetShift = 3,
+    ImageOperandsOffsetShift = 4,
+    ImageOperandsConstOffsetsShift = 5,
+    ImageOperandsSampleShift = 6,
+    ImageOperandsMinLodShift = 7,
+    ImageOperandsMax = 0x7fffffff,
+};
+
+enum ImageOperandsMask {
+    ImageOperandsMaskNone = 0,
+    ImageOperandsBiasMask = 0x00000001,
+    ImageOperandsLodMask = 0x00000002,
+    ImageOperandsGradMask = 0x00000004,
+    ImageOperandsConstOffsetMask = 0x00000008,
+    ImageOperandsOffsetMask = 0x00000010,
+    ImageOperandsConstOffsetsMask = 0x00000020,
+    ImageOperandsSampleMask = 0x00000040,
+    ImageOperandsMinLodMask = 0x00000080,
+};
+
+enum FPFastMathModeShift {
+    FPFastMathModeNotNaNShift = 0,
+    FPFastMathModeNotInfShift = 1,
+    FPFastMathModeNSZShift = 2,
+    FPFastMathModeAllowRecipShift = 3,
+    FPFastMathModeFastShift = 4,
+    FPFastMathModeMax = 0x7fffffff,
+};
+
+enum FPFastMathModeMask {
+    FPFastMathModeMaskNone = 0,
+    FPFastMathModeNotNaNMask = 0x00000001,
+    FPFastMathModeNotInfMask = 0x00000002,
+    FPFastMathModeNSZMask = 0x00000004,
+    FPFastMathModeAllowRecipMask = 0x00000008,
+    FPFastMathModeFastMask = 0x00000010,
+};
+
+enum FPRoundingMode {
+    FPRoundingModeRTE = 0,
+    FPRoundingModeRTZ = 1,
+    FPRoundingModeRTP = 2,
+    FPRoundingModeRTN = 3,
+    FPRoundingModeMax = 0x7fffffff,
+};
+
+enum LinkageType {
+    LinkageTypeExport = 0,
+    LinkageTypeImport = 1,
+    LinkageTypeMax = 0x7fffffff,
+};
+
+enum AccessQualifier {
+    AccessQualifierReadOnly = 0,
+    AccessQualifierWriteOnly = 1,
+    AccessQualifierReadWrite = 2,
+    AccessQualifierMax = 0x7fffffff,
+};
+
+enum FunctionParameterAttribute {
+    FunctionParameterAttributeZext = 0,
+    FunctionParameterAttributeSext = 1,
+    FunctionParameterAttributeByVal = 2,
+    FunctionParameterAttributeSret = 3,
+    FunctionParameterAttributeNoAlias = 4,
+    FunctionParameterAttributeNoCapture = 5,
+    FunctionParameterAttributeNoWrite = 6,
+    FunctionParameterAttributeNoReadWrite = 7,
+    FunctionParameterAttributeMax = 0x7fffffff,
+};
+
+enum Decoration {
+    DecorationRelaxedPrecision = 0,
+    DecorationSpecId = 1,
+    DecorationBlock = 2,
+    DecorationBufferBlock = 3,
+    DecorationRowMajor = 4,
+    DecorationColMajor = 5,
+    DecorationArrayStride = 6,
+    DecorationMatrixStride = 7,
+    DecorationGLSLShared = 8,
+    DecorationGLSLPacked = 9,
+    DecorationCPacked = 10,
+    DecorationBuiltIn = 11,
+    DecorationNoPerspective = 13,
+    DecorationFlat = 14,
+    DecorationPatch = 15,
+    DecorationCentroid = 16,
+    DecorationSample = 17,
+    DecorationInvariant = 18,
+    DecorationRestrict = 19,
+    DecorationAliased = 20,
+    DecorationVolatile = 21,
+    DecorationConstant = 22,
+    DecorationCoherent = 23,
+    DecorationNonWritable = 24,
+    DecorationNonReadable = 25,
+    DecorationUniform = 26,
+    DecorationSaturatedConversion = 28,
+    DecorationStream = 29,
+    DecorationLocation = 30,
+    DecorationComponent = 31,
+    DecorationIndex = 32,
+    DecorationBinding = 33,
+    DecorationDescriptorSet = 34,
+    DecorationOffset = 35,
+    DecorationXfbBuffer = 36,
+    DecorationXfbStride = 37,
+    DecorationFuncParamAttr = 38,
+    DecorationFPRoundingMode = 39,
+    DecorationFPFastMathMode = 40,
+    DecorationLinkageAttributes = 41,
+    DecorationNoContraction = 42,
+    DecorationInputAttachmentIndex = 43,
+    DecorationAlignment = 44,
+    DecorationMaxByteOffset = 45,
+    DecorationAlignmentId = 46,
+    DecorationMaxByteOffsetId = 47,
+    DecorationExplicitInterpAMD = 4999,
+    DecorationOverrideCoverageNV = 5248,
+    DecorationPassthroughNV = 5250,
+    DecorationViewportRelativeNV = 5252,
+    DecorationSecondaryViewportRelativeNV = 5256,
+    DecorationHlslCounterBufferGOOGLE = 5634,
+    DecorationHlslSemanticGOOGLE = 5635,
+    DecorationMax = 0x7fffffff,
+};
+
+enum BuiltIn {
+    BuiltInPosition = 0,
+    BuiltInPointSize = 1,
+    BuiltInClipDistance = 3,
+    BuiltInCullDistance = 4,
+    BuiltInVertexId = 5,
+    BuiltInInstanceId = 6,
+    BuiltInPrimitiveId = 7,
+    BuiltInInvocationId = 8,
+    BuiltInLayer = 9,
+    BuiltInViewportIndex = 10,
+    BuiltInTessLevelOuter = 11,
+    BuiltInTessLevelInner = 12,
+    BuiltInTessCoord = 13,
+    BuiltInPatchVertices = 14,
+    BuiltInFragCoord = 15,
+    BuiltInPointCoord = 16,
+    BuiltInFrontFacing = 17,
+    BuiltInSampleId = 18,
+    BuiltInSamplePosition = 19,
+    BuiltInSampleMask = 20,
+    BuiltInFragDepth = 22,
+    BuiltInHelperInvocation = 23,
+    BuiltInNumWorkgroups = 24,
+    BuiltInWorkgroupSize = 25,
+    BuiltInWorkgroupId = 26,
+    BuiltInLocalInvocationId = 27,
+    BuiltInGlobalInvocationId = 28,
+    BuiltInLocalInvocationIndex = 29,
+    BuiltInWorkDim = 30,
+    BuiltInGlobalSize = 31,
+    BuiltInEnqueuedWorkgroupSize = 32,
+    BuiltInGlobalOffset = 33,
+    BuiltInGlobalLinearId = 34,
+    BuiltInSubgroupSize = 36,
+    BuiltInSubgroupMaxSize = 37,
+    BuiltInNumSubgroups = 38,
+    BuiltInNumEnqueuedSubgroups = 39,
+    BuiltInSubgroupId = 40,
+    BuiltInSubgroupLocalInvocationId = 41,
+    BuiltInVertexIndex = 42,
+    BuiltInInstanceIndex = 43,
+    BuiltInSubgroupEqMaskKHR = 4416,
+    BuiltInSubgroupGeMaskKHR = 4417,
+    BuiltInSubgroupGtMaskKHR = 4418,
+    BuiltInSubgroupLeMaskKHR = 4419,
+    BuiltInSubgroupLtMaskKHR = 4420,
+    BuiltInBaseVertex = 4424,
+    BuiltInBaseInstance = 4425,
+    BuiltInDrawIndex = 4426,
+    BuiltInDeviceIndex = 4438,
+    BuiltInViewIndex = 4440,
+    BuiltInBaryCoordNoPerspAMD = 4992,
+    BuiltInBaryCoordNoPerspCentroidAMD = 4993,
+    BuiltInBaryCoordNoPerspSampleAMD = 4994,
+    BuiltInBaryCoordSmoothAMD = 4995,
+    BuiltInBaryCoordSmoothCentroidAMD = 4996,
+    BuiltInBaryCoordSmoothSampleAMD = 4997,
+    BuiltInBaryCoordPullModelAMD = 4998,
+    BuiltInFragStencilRefEXT = 5014,
+    BuiltInViewportMaskNV = 5253,
+    BuiltInSecondaryPositionNV = 5257,
+    BuiltInSecondaryViewportMaskNV = 5258,
+    BuiltInPositionPerViewNV = 5261,
+    BuiltInViewportMaskPerViewNV = 5262,
+    BuiltInMax = 0x7fffffff,
+};
+
+enum SelectionControlShift {
+    SelectionControlFlattenShift = 0,
+    SelectionControlDontFlattenShift = 1,
+    SelectionControlMax = 0x7fffffff,
+};
+
+enum SelectionControlMask {
+    SelectionControlMaskNone = 0,
+    SelectionControlFlattenMask = 0x00000001,
+    SelectionControlDontFlattenMask = 0x00000002,
+};
+
+enum LoopControlShift {
+    LoopControlUnrollShift = 0,
+    LoopControlDontUnrollShift = 1,
+    LoopControlDependencyInfiniteShift = 2,
+    LoopControlDependencyLengthShift = 3,
+    LoopControlMax = 0x7fffffff,
+};
+
+enum LoopControlMask {
+    LoopControlMaskNone = 0,
+    LoopControlUnrollMask = 0x00000001,
+    LoopControlDontUnrollMask = 0x00000002,
+    LoopControlDependencyInfiniteMask = 0x00000004,
+    LoopControlDependencyLengthMask = 0x00000008,
+};
+
+enum FunctionControlShift {
+    FunctionControlInlineShift = 0,
+    FunctionControlDontInlineShift = 1,
+    FunctionControlPureShift = 2,
+    FunctionControlConstShift = 3,
+    FunctionControlMax = 0x7fffffff,
+};
+
+enum FunctionControlMask {
+    FunctionControlMaskNone = 0,
+    FunctionControlInlineMask = 0x00000001,
+    FunctionControlDontInlineMask = 0x00000002,
+    FunctionControlPureMask = 0x00000004,
+    FunctionControlConstMask = 0x00000008,
+};
+
+enum MemorySemanticsShift {
+    MemorySemanticsAcquireShift = 1,
+    MemorySemanticsReleaseShift = 2,
+    MemorySemanticsAcquireReleaseShift = 3,
+    MemorySemanticsSequentiallyConsistentShift = 4,
+    MemorySemanticsUniformMemoryShift = 6,
+    MemorySemanticsSubgroupMemoryShift = 7,
+    MemorySemanticsWorkgroupMemoryShift = 8,
+    MemorySemanticsCrossWorkgroupMemoryShift = 9,
+    MemorySemanticsAtomicCounterMemoryShift = 10,
+    MemorySemanticsImageMemoryShift = 11,
+    MemorySemanticsMax = 0x7fffffff,
+};
+
+enum MemorySemanticsMask {
+    MemorySemanticsMaskNone = 0,
+    MemorySemanticsAcquireMask = 0x00000002,
+    MemorySemanticsReleaseMask = 0x00000004,
+    MemorySemanticsAcquireReleaseMask = 0x00000008,
+    MemorySemanticsSequentiallyConsistentMask = 0x00000010,
+    MemorySemanticsUniformMemoryMask = 0x00000040,
+    MemorySemanticsSubgroupMemoryMask = 0x00000080,
+    MemorySemanticsWorkgroupMemoryMask = 0x00000100,
+    MemorySemanticsCrossWorkgroupMemoryMask = 0x00000200,
+    MemorySemanticsAtomicCounterMemoryMask = 0x00000400,
+    MemorySemanticsImageMemoryMask = 0x00000800,
+};
+
+enum MemoryAccessShift {
+    MemoryAccessVolatileShift = 0,
+    MemoryAccessAlignedShift = 1,
+    MemoryAccessNontemporalShift = 2,
+    MemoryAccessMax = 0x7fffffff,
+};
+
+enum MemoryAccessMask {
+    MemoryAccessMaskNone = 0,
+    MemoryAccessVolatileMask = 0x00000001,
+    MemoryAccessAlignedMask = 0x00000002,
+    MemoryAccessNontemporalMask = 0x00000004,
+};
+
+enum Scope {
+    ScopeCrossDevice = 0,
+    ScopeDevice = 1,
+    ScopeWorkgroup = 2,
+    ScopeSubgroup = 3,
+    ScopeInvocation = 4,
+    ScopeMax = 0x7fffffff,
+};
+
+enum GroupOperation {
+    GroupOperationReduce = 0,
+    GroupOperationInclusiveScan = 1,
+    GroupOperationExclusiveScan = 2,
+    GroupOperationMax = 0x7fffffff,
+};
+
+enum KernelEnqueueFlags {
+    KernelEnqueueFlagsNoWait = 0,
+    KernelEnqueueFlagsWaitKernel = 1,
+    KernelEnqueueFlagsWaitWorkGroup = 2,
+    KernelEnqueueFlagsMax = 0x7fffffff,
+};
+
+enum KernelProfilingInfoShift {
+    KernelProfilingInfoCmdExecTimeShift = 0,
+    KernelProfilingInfoMax = 0x7fffffff,
+};
+
+enum KernelProfilingInfoMask {
+    KernelProfilingInfoMaskNone = 0,
+    KernelProfilingInfoCmdExecTimeMask = 0x00000001,
+};
+
+enum Capability {
+    CapabilityMatrix = 0,
+    CapabilityShader = 1,
+    CapabilityGeometry = 2,
+    CapabilityTessellation = 3,
+    CapabilityAddresses = 4,
+    CapabilityLinkage = 5,
+    CapabilityKernel = 6,
+    CapabilityVector16 = 7,
+    CapabilityFloat16Buffer = 8,
+    CapabilityFloat16 = 9,
+    CapabilityFloat64 = 10,
+    CapabilityInt64 = 11,
+    CapabilityInt64Atomics = 12,
+    CapabilityImageBasic = 13,
+    CapabilityImageReadWrite = 14,
+    CapabilityImageMipmap = 15,
+    CapabilityPipes = 17,
+    CapabilityGroups = 18,
+    CapabilityDeviceEnqueue = 19,
+    CapabilityLiteralSampler = 20,
+    CapabilityAtomicStorage = 21,
+    CapabilityInt16 = 22,
+    CapabilityTessellationPointSize = 23,
+    CapabilityGeometryPointSize = 24,
+    CapabilityImageGatherExtended = 25,
+    CapabilityStorageImageMultisample = 27,
+    CapabilityUniformBufferArrayDynamicIndexing = 28,
+    CapabilitySampledImageArrayDynamicIndexing = 29,
+    CapabilityStorageBufferArrayDynamicIndexing = 30,
+    CapabilityStorageImageArrayDynamicIndexing = 31,
+    CapabilityClipDistance = 32,
+    CapabilityCullDistance = 33,
+    CapabilityImageCubeArray = 34,
+    CapabilitySampleRateShading = 35,
+    CapabilityImageRect = 36,
+    CapabilitySampledRect = 37,
+    CapabilityGenericPointer = 38,
+    CapabilityInt8 = 39,
+    CapabilityInputAttachment = 40,
+    CapabilitySparseResidency = 41,
+    CapabilityMinLod = 42,
+    CapabilitySampled1D = 43,
+    CapabilityImage1D = 44,
+    CapabilitySampledCubeArray = 45,
+    CapabilitySampledBuffer = 46,
+    CapabilityImageBuffer = 47,
+    CapabilityImageMSArray = 48,
+    CapabilityStorageImageExtendedFormats = 49,
+    CapabilityImageQuery = 50,
+    CapabilityDerivativeControl = 51,
+    CapabilityInterpolationFunction = 52,
+    CapabilityTransformFeedback = 53,
+    CapabilityGeometryStreams = 54,
+    CapabilityStorageImageReadWithoutFormat = 55,
+    CapabilityStorageImageWriteWithoutFormat = 56,
+    CapabilityMultiViewport = 57,
+    CapabilitySubgroupDispatch = 58,
+    CapabilityNamedBarrier = 59,
+    CapabilityPipeStorage = 60,
+    CapabilitySubgroupBallotKHR = 4423,
+    CapabilityDrawParameters = 4427,
+    CapabilitySubgroupVoteKHR = 4431,
+    CapabilityStorageBuffer16BitAccess = 4433,
+    CapabilityStorageUniformBufferBlock16 = 4433,
+    CapabilityStorageUniform16 = 4434,
+    CapabilityUniformAndStorageBuffer16BitAccess = 4434,
+    CapabilityStoragePushConstant16 = 4435,
+    CapabilityStorageInputOutput16 = 4436,
+    CapabilityDeviceGroup = 4437,
+    CapabilityMultiView = 4439,
+    CapabilityVariablePointersStorageBuffer = 4441,
+    CapabilityVariablePointers = 4442,
+    CapabilityAtomicStorageOps = 4445,
+    CapabilitySampleMaskPostDepthCoverage = 4447,
+    CapabilityImageGatherBiasLodAMD = 5009,
+    CapabilityFragmentMaskAMD = 5010,
+    CapabilityStencilExportEXT = 5013,
+    CapabilityImageReadWriteLodAMD = 5015,
+    CapabilitySampleMaskOverrideCoverageNV = 5249,
+    CapabilityGeometryShaderPassthroughNV = 5251,
+    CapabilityShaderViewportIndexLayerEXT = 5254,
+    CapabilityShaderViewportIndexLayerNV = 5254,
+    CapabilityShaderViewportMaskNV = 5255,
+    CapabilityShaderStereoViewNV = 5259,
+    CapabilityPerViewAttributesNV = 5260,
+    CapabilitySubgroupShuffleINTEL = 5568,
+    CapabilitySubgroupBufferBlockIOINTEL = 5569,
+    CapabilitySubgroupImageBlockIOINTEL = 5570,
+    CapabilityMax = 0x7fffffff,
+};
+
+enum Op {
+    OpNop = 0,
+    OpUndef = 1,
+    OpSourceContinued = 2,
+    OpSource = 3,
+    OpSourceExtension = 4,
+    OpName = 5,
+    OpMemberName = 6,
+    OpString = 7,
+    OpLine = 8,
+    OpExtension = 10,
+    OpExtInstImport = 11,
+    OpExtInst = 12,
+    OpMemoryModel = 14,
+    OpEntryPoint = 15,
+    OpExecutionMode = 16,
+    OpCapability = 17,
+    OpTypeVoid = 19,
+    OpTypeBool = 20,
+    OpTypeInt = 21,
+    OpTypeFloat = 22,
+    OpTypeVector = 23,
+    OpTypeMatrix = 24,
+    OpTypeImage = 25,
+    OpTypeSampler = 26,
+    OpTypeSampledImage = 27,
+    OpTypeArray = 28,
+    OpTypeRuntimeArray = 29,
+    OpTypeStruct = 30,
+    OpTypeOpaque = 31,
+    OpTypePointer = 32,
+    OpTypeFunction = 33,
+    OpTypeEvent = 34,
+    OpTypeDeviceEvent = 35,
+    OpTypeReserveId = 36,
+    OpTypeQueue = 37,
+    OpTypePipe = 38,
+    OpTypeForwardPointer = 39,
+    OpConstantTrue = 41,
+    OpConstantFalse = 42,
+    OpConstant = 43,
+    OpConstantComposite = 44,
+    OpConstantSampler = 45,
+    OpConstantNull = 46,
+    OpSpecConstantTrue = 48,
+    OpSpecConstantFalse = 49,
+    OpSpecConstant = 50,
+    OpSpecConstantComposite = 51,
+    OpSpecConstantOp = 52,
+    OpFunction = 54,
+    OpFunctionParameter = 55,
+    OpFunctionEnd = 56,
+    OpFunctionCall = 57,
+    OpVariable = 59,
+    OpImageTexelPointer = 60,
+    OpLoad = 61,
+    OpStore = 62,
+    OpCopyMemory = 63,
+    OpCopyMemorySized = 64,
+    OpAccessChain = 65,
+    OpInBoundsAccessChain = 66,
+    OpPtrAccessChain = 67,
+    OpArrayLength = 68,
+    OpGenericPtrMemSemantics = 69,
+    OpInBoundsPtrAccessChain = 70,
+    OpDecorate = 71,
+    OpMemberDecorate = 72,
+    OpDecorationGroup = 73,
+    OpGroupDecorate = 74,
+    OpGroupMemberDecorate = 75,
+    OpVectorExtractDynamic = 77,
+    OpVectorInsertDynamic = 78,
+    OpVectorShuffle = 79,
+    OpCompositeConstruct = 80,
+    OpCompositeExtract = 81,
+    OpCompositeInsert = 82,
+    OpCopyObject = 83,
+    OpTranspose = 84,
+    OpSampledImage = 86,
+    OpImageSampleImplicitLod = 87,
+    OpImageSampleExplicitLod = 88,
+    OpImageSampleDrefImplicitLod = 89,
+    OpImageSampleDrefExplicitLod = 90,
+    OpImageSampleProjImplicitLod = 91,
+    OpImageSampleProjExplicitLod = 92,
+    OpImageSampleProjDrefImplicitLod = 93,
+    OpImageSampleProjDrefExplicitLod = 94,
+    OpImageFetch = 95,
+    OpImageGather = 96,
+    OpImageDrefGather = 97,
+    OpImageRead = 98,
+    OpImageWrite = 99,
+    OpImage = 100,
+    OpImageQueryFormat = 101,
+    OpImageQueryOrder = 102,
+    OpImageQuerySizeLod = 103,
+    OpImageQuerySize = 104,
+    OpImageQueryLod = 105,
+    OpImageQueryLevels = 106,
+    OpImageQuerySamples = 107,
+    OpConvertFToU = 109,
+    OpConvertFToS = 110,
+    OpConvertSToF = 111,
+    OpConvertUToF = 112,
+    OpUConvert = 113,
+    OpSConvert = 114,
+    OpFConvert = 115,
+    OpQuantizeToF16 = 116,
+    OpConvertPtrToU = 117,
+    OpSatConvertSToU = 118,
+    OpSatConvertUToS = 119,
+    OpConvertUToPtr = 120,
+    OpPtrCastToGeneric = 121,
+    OpGenericCastToPtr = 122,
+    OpGenericCastToPtrExplicit = 123,
+    OpBitcast = 124,
+    OpSNegate = 126,
+    OpFNegate = 127,
+    OpIAdd = 128,
+    OpFAdd = 129,
+    OpISub = 130,
+    OpFSub = 131,
+    OpIMul = 132,
+    OpFMul = 133,
+    OpUDiv = 134,
+    OpSDiv = 135,
+    OpFDiv = 136,
+    OpUMod = 137,
+    OpSRem = 138,
+    OpSMod = 139,
+    OpFRem = 140,
+    OpFMod = 141,
+    OpVectorTimesScalar = 142,
+    OpMatrixTimesScalar = 143,
+    OpVectorTimesMatrix = 144,
+    OpMatrixTimesVector = 145,
+    OpMatrixTimesMatrix = 146,
+    OpOuterProduct = 147,
+    OpDot = 148,
+    OpIAddCarry = 149,
+    OpISubBorrow = 150,
+    OpUMulExtended = 151,
+    OpSMulExtended = 152,
+    OpAny = 154,
+    OpAll = 155,
+    OpIsNan = 156,
+    OpIsInf = 157,
+    OpIsFinite = 158,
+    OpIsNormal = 159,
+    OpSignBitSet = 160,
+    OpLessOrGreater = 161,
+    OpOrdered = 162,
+    OpUnordered = 163,
+    OpLogicalEqual = 164,
+    OpLogicalNotEqual = 165,
+    OpLogicalOr = 166,
+    OpLogicalAnd = 167,
+    OpLogicalNot = 168,
+    OpSelect = 169,
+    OpIEqual = 170,
+    OpINotEqual = 171,
+    OpUGreaterThan = 172,
+    OpSGreaterThan = 173,
+    OpUGreaterThanEqual = 174,
+    OpSGreaterThanEqual = 175,
+    OpULessThan = 176,
+    OpSLessThan = 177,
+    OpULessThanEqual = 178,
+    OpSLessThanEqual = 179,
+    OpFOrdEqual = 180,
+    OpFUnordEqual = 181,
+    OpFOrdNotEqual = 182,
+    OpFUnordNotEqual = 183,
+    OpFOrdLessThan = 184,
+    OpFUnordLessThan = 185,
+    OpFOrdGreaterThan = 186,
+    OpFUnordGreaterThan = 187,
+    OpFOrdLessThanEqual = 188,
+    OpFUnordLessThanEqual = 189,
+    OpFOrdGreaterThanEqual = 190,
+    OpFUnordGreaterThanEqual = 191,
+    OpShiftRightLogical = 194,
+    OpShiftRightArithmetic = 195,
+    OpShiftLeftLogical = 196,
+    OpBitwiseOr = 197,
+    OpBitwiseXor = 198,
+    OpBitwiseAnd = 199,
+    OpNot = 200,
+    OpBitFieldInsert = 201,
+    OpBitFieldSExtract = 202,
+    OpBitFieldUExtract = 203,
+    OpBitReverse = 204,
+    OpBitCount = 205,
+    OpDPdx = 207,
+    OpDPdy = 208,
+    OpFwidth = 209,
+    OpDPdxFine = 210,
+    OpDPdyFine = 211,
+    OpFwidthFine = 212,
+    OpDPdxCoarse = 213,
+    OpDPdyCoarse = 214,
+    OpFwidthCoarse = 215,
+    OpEmitVertex = 218,
+    OpEndPrimitive = 219,
+    OpEmitStreamVertex = 220,
+    OpEndStreamPrimitive = 221,
+    OpControlBarrier = 224,
+    OpMemoryBarrier = 225,
+    OpAtomicLoad = 227,
+    OpAtomicStore = 228,
+    OpAtomicExchange = 229,
+    OpAtomicCompareExchange = 230,
+    OpAtomicCompareExchangeWeak = 231,
+    OpAtomicIIncrement = 232,
+    OpAtomicIDecrement = 233,
+    OpAtomicIAdd = 234,
+    OpAtomicISub = 235,
+    OpAtomicSMin = 236,
+    OpAtomicUMin = 237,
+    OpAtomicSMax = 238,
+    OpAtomicUMax = 239,
+    OpAtomicAnd = 240,
+    OpAtomicOr = 241,
+    OpAtomicXor = 242,
+    OpPhi = 245,
+    OpLoopMerge = 246,
+    OpSelectionMerge = 247,
+    OpLabel = 248,
+    OpBranch = 249,
+    OpBranchConditional = 250,
+    OpSwitch = 251,
+    OpKill = 252,
+    OpReturn = 253,
+    OpReturnValue = 254,
+    OpUnreachable = 255,
+    OpLifetimeStart = 256,
+    OpLifetimeStop = 257,
+    OpGroupAsyncCopy = 259,
+    OpGroupWaitEvents = 260,
+    OpGroupAll = 261,
+    OpGroupAny = 262,
+    OpGroupBroadcast = 263,
+    OpGroupIAdd = 264,
+    OpGroupFAdd = 265,
+    OpGroupFMin = 266,
+    OpGroupUMin = 267,
+    OpGroupSMin = 268,
+    OpGroupFMax = 269,
+    OpGroupUMax = 270,
+    OpGroupSMax = 271,
+    OpReadPipe = 274,
+    OpWritePipe = 275,
+    OpReservedReadPipe = 276,
+    OpReservedWritePipe = 277,
+    OpReserveReadPipePackets = 278,
+    OpReserveWritePipePackets = 279,
+    OpCommitReadPipe = 280,
+    OpCommitWritePipe = 281,
+    OpIsValidReserveId = 282,
+    OpGetNumPipePackets = 283,
+    OpGetMaxPipePackets = 284,
+    OpGroupReserveReadPipePackets = 285,
+    OpGroupReserveWritePipePackets = 286,
+    OpGroupCommitReadPipe = 287,
+    OpGroupCommitWritePipe = 288,
+    OpEnqueueMarker = 291,
+    OpEnqueueKernel = 292,
+    OpGetKernelNDrangeSubGroupCount = 293,
+    OpGetKernelNDrangeMaxSubGroupSize = 294,
+    OpGetKernelWorkGroupSize = 295,
+    OpGetKernelPreferredWorkGroupSizeMultiple = 296,
+    OpRetainEvent = 297,
+    OpReleaseEvent = 298,
+    OpCreateUserEvent = 299,
+    OpIsValidEvent = 300,
+    OpSetUserEventStatus = 301,
+    OpCaptureEventProfilingInfo = 302,
+    OpGetDefaultQueue = 303,
+    OpBuildNDRange = 304,
+    OpImageSparseSampleImplicitLod = 305,
+    OpImageSparseSampleExplicitLod = 306,
+    OpImageSparseSampleDrefImplicitLod = 307,
+    OpImageSparseSampleDrefExplicitLod = 308,
+    OpImageSparseSampleProjImplicitLod = 309,
+    OpImageSparseSampleProjExplicitLod = 310,
+    OpImageSparseSampleProjDrefImplicitLod = 311,
+    OpImageSparseSampleProjDrefExplicitLod = 312,
+    OpImageSparseFetch = 313,
+    OpImageSparseGather = 314,
+    OpImageSparseDrefGather = 315,
+    OpImageSparseTexelsResident = 316,
+    OpNoLine = 317,
+    OpAtomicFlagTestAndSet = 318,
+    OpAtomicFlagClear = 319,
+    OpImageSparseRead = 320,
+    OpSizeOf = 321,
+    OpTypePipeStorage = 322,
+    OpConstantPipeStorage = 323,
+    OpCreatePipeFromPipeStorage = 324,
+    OpGetKernelLocalSizeForSubgroupCount = 325,
+    OpGetKernelMaxNumSubgroups = 326,
+    OpTypeNamedBarrier = 327,
+    OpNamedBarrierInitialize = 328,
+    OpMemoryNamedBarrier = 329,
+    OpModuleProcessed = 330,
+    OpExecutionModeId = 331,
+    OpDecorateId = 332,
+    OpSubgroupBallotKHR = 4421,
+    OpSubgroupFirstInvocationKHR = 4422,
+    OpSubgroupAllKHR = 4428,
+    OpSubgroupAnyKHR = 4429,
+    OpSubgroupAllEqualKHR = 4430,
+    OpSubgroupReadInvocationKHR = 4432,
+    OpGroupIAddNonUniformAMD = 5000,
+    OpGroupFAddNonUniformAMD = 5001,
+    OpGroupFMinNonUniformAMD = 5002,
+    OpGroupUMinNonUniformAMD = 5003,
+    OpGroupSMinNonUniformAMD = 5004,
+    OpGroupFMaxNonUniformAMD = 5005,
+    OpGroupUMaxNonUniformAMD = 5006,
+    OpGroupSMaxNonUniformAMD = 5007,
+    OpFragmentMaskFetchAMD = 5011,
+    OpFragmentFetchAMD = 5012,
+    OpSubgroupShuffleINTEL = 5571,
+    OpSubgroupShuffleDownINTEL = 5572,
+    OpSubgroupShuffleUpINTEL = 5573,
+    OpSubgroupShuffleXorINTEL = 5574,
+    OpSubgroupBlockReadINTEL = 5575,
+    OpSubgroupBlockWriteINTEL = 5576,
+    OpSubgroupImageBlockReadINTEL = 5577,
+    OpSubgroupImageBlockWriteINTEL = 5578,
+    OpDecorateStringGOOGLE = 5632,
+    OpMemberDecorateStringGOOGLE = 5633,
+    OpMax = 0x7fffffff,
+};
+
+// Overload operator| for mask bit combining
+
+inline ImageOperandsMask operator|(ImageOperandsMask a, ImageOperandsMask b) { return ImageOperandsMask(unsigned(a) | unsigned(b)); }
+inline FPFastMathModeMask operator|(FPFastMathModeMask a, FPFastMathModeMask b) { return FPFastMathModeMask(unsigned(a) | unsigned(b)); }
+inline SelectionControlMask operator|(SelectionControlMask a, SelectionControlMask b) { return SelectionControlMask(unsigned(a) | unsigned(b)); }
+inline LoopControlMask operator|(LoopControlMask a, LoopControlMask b) { return LoopControlMask(unsigned(a) | unsigned(b)); }
+inline FunctionControlMask operator|(FunctionControlMask a, FunctionControlMask b) { return FunctionControlMask(unsigned(a) | unsigned(b)); }
+inline MemorySemanticsMask operator|(MemorySemanticsMask a, MemorySemanticsMask b) { return MemorySemanticsMask(unsigned(a) | unsigned(b)); }
+inline MemoryAccessMask operator|(MemoryAccessMask a, MemoryAccessMask b) { return MemoryAccessMask(unsigned(a) | unsigned(b)); }
+inline KernelProfilingInfoMask operator|(KernelProfilingInfoMask a, KernelProfilingInfoMask b) { return KernelProfilingInfoMask(unsigned(a) | unsigned(b)); }
+
+}  // end namespace spv
+
+#endif  // #ifndef spirv_HPP
+
diff --git a/libs/spirv-headers/spirv/1.2/spirv.hpp11 b/libs/spirv-headers/spirv/1.2/spirv.hpp11
new file mode 100644
index 00000000000..7a875fdb166
--- /dev/null
+++ b/libs/spirv-headers/spirv/1.2/spirv.hpp11
@@ -0,0 +1,1030 @@
+// Copyright (c) 2014-2018 The Khronos Group Inc.
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and/or associated documentation files (the "Materials"),
+// to deal in the Materials without restriction, including without limitation
+// the rights to use, copy, modify, merge, publish, distribute, sublicense,
+// and/or sell copies of the Materials, and to permit persons to whom the
+// Materials are furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Materials.
+// 
+// MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS KHRONOS
+// STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS SPECIFICATIONS AND
+// HEADER INFORMATION ARE LOCATED AT https://www.khronos.org/registry/ 
+// 
+// THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM,OUT OF OR IN CONNECTION WITH THE MATERIALS OR THE USE OR OTHER DEALINGS
+// IN THE MATERIALS.
+
+// This header is automatically generated by the same tool that creates
+// the Binary Section of the SPIR-V specification.
+
+// Enumeration tokens for SPIR-V, in various styles:
+//   C, C++, C++11, JSON, Lua, Python
+// 
+// - C will have tokens with a "Spv" prefix, e.g.: SpvSourceLanguageGLSL
+// - C++ will have tokens in the "spv" name space, e.g.: spv::SourceLanguageGLSL
+// - C++11 will use enum classes in the spv namespace, e.g.: spv::SourceLanguage::GLSL
+// - Lua will use tables, e.g.: spv.SourceLanguage.GLSL
+// - Python will use dictionaries, e.g.: spv['SourceLanguage']['GLSL']
+// 
+// Some tokens act like mask values, which can be OR'd together,
+// while others are mutually exclusive.  The mask-like ones have
+// "Mask" in their name, and a parallel enum that has the shift
+// amount (1 << x) for each corresponding enumerant.
+
+#ifndef spirv_HPP
+#define spirv_HPP
+
+namespace spv {
+
+typedef unsigned int Id;
+
+#define SPV_VERSION 0x10200
+#define SPV_REVISION 2
+
+static const unsigned int MagicNumber = 0x07230203;
+static const unsigned int Version = 0x00010200;
+static const unsigned int Revision = 2;
+static const unsigned int OpCodeMask = 0xffff;
+static const unsigned int WordCountShift = 16;
+
+enum class SourceLanguage : unsigned {
+    Unknown = 0,
+    ESSL = 1,
+    GLSL = 2,
+    OpenCL_C = 3,
+    OpenCL_CPP = 4,
+    HLSL = 5,
+    Max = 0x7fffffff,
+};
+
+enum class ExecutionModel : unsigned {
+    Vertex = 0,
+    TessellationControl = 1,
+    TessellationEvaluation = 2,
+    Geometry = 3,
+    Fragment = 4,
+    GLCompute = 5,
+    Kernel = 6,
+    Max = 0x7fffffff,
+};
+
+enum class AddressingModel : unsigned {
+    Logical = 0,
+    Physical32 = 1,
+    Physical64 = 2,
+    Max = 0x7fffffff,
+};
+
+enum class MemoryModel : unsigned {
+    Simple = 0,
+    GLSL450 = 1,
+    OpenCL = 2,
+    Max = 0x7fffffff,
+};
+
+enum class ExecutionMode : unsigned {
+    Invocations = 0,
+    SpacingEqual = 1,
+    SpacingFractionalEven = 2,
+    SpacingFractionalOdd = 3,
+    VertexOrderCw = 4,
+    VertexOrderCcw = 5,
+    PixelCenterInteger = 6,
+    OriginUpperLeft = 7,
+    OriginLowerLeft = 8,
+    EarlyFragmentTests = 9,
+    PointMode = 10,
+    Xfb = 11,
+    DepthReplacing = 12,
+    DepthGreater = 14,
+    DepthLess = 15,
+    DepthUnchanged = 16,
+    LocalSize = 17,
+    LocalSizeHint = 18,
+    InputPoints = 19,
+    InputLines = 20,
+    InputLinesAdjacency = 21,
+    Triangles = 22,
+    InputTrianglesAdjacency = 23,
+    Quads = 24,
+    Isolines = 25,
+    OutputVertices = 26,
+    OutputPoints = 27,
+    OutputLineStrip = 28,
+    OutputTriangleStrip = 29,
+    VecTypeHint = 30,
+    ContractionOff = 31,
+    Initializer = 33,
+    Finalizer = 34,
+    SubgroupSize = 35,
+    SubgroupsPerWorkgroup = 36,
+    SubgroupsPerWorkgroupId = 37,
+    LocalSizeId = 38,
+    LocalSizeHintId = 39,
+    PostDepthCoverage = 4446,
+    StencilRefReplacingEXT = 5027,
+    Max = 0x7fffffff,
+};
+
+enum class StorageClass : unsigned {
+    UniformConstant = 0,
+    Input = 1,
+    Uniform = 2,
+    Output = 3,
+    Workgroup = 4,
+    CrossWorkgroup = 5,
+    Private = 6,
+    Function = 7,
+    Generic = 8,
+    PushConstant = 9,
+    AtomicCounter = 10,
+    Image = 11,
+    StorageBuffer = 12,
+    Max = 0x7fffffff,
+};
+
+enum class Dim : unsigned {
+    Dim1D = 0,
+    Dim2D = 1,
+    Dim3D = 2,
+    Cube = 3,
+    Rect = 4,
+    Buffer = 5,
+    SubpassData = 6,
+    Max = 0x7fffffff,
+};
+
+enum class SamplerAddressingMode : unsigned {
+    None = 0,
+    ClampToEdge = 1,
+    Clamp = 2,
+    Repeat = 3,
+    RepeatMirrored = 4,
+    Max = 0x7fffffff,
+};
+
+enum class SamplerFilterMode : unsigned {
+    Nearest = 0,
+    Linear = 1,
+    Max = 0x7fffffff,
+};
+
+enum class ImageFormat : unsigned {
+    Unknown = 0,
+    Rgba32f = 1,
+    Rgba16f = 2,
+    R32f = 3,
+    Rgba8 = 4,
+    Rgba8Snorm = 5,
+    Rg32f = 6,
+    Rg16f = 7,
+    R11fG11fB10f = 8,
+    R16f = 9,
+    Rgba16 = 10,
+    Rgb10A2 = 11,
+    Rg16 = 12,
+    Rg8 = 13,
+    R16 = 14,
+    R8 = 15,
+    Rgba16Snorm = 16,
+    Rg16Snorm = 17,
+    Rg8Snorm = 18,
+    R16Snorm = 19,
+    R8Snorm = 20,
+    Rgba32i = 21,
+    Rgba16i = 22,
+    Rgba8i = 23,
+    R32i = 24,
+    Rg32i = 25,
+    Rg16i = 26,
+    Rg8i = 27,
+    R16i = 28,
+    R8i = 29,
+    Rgba32ui = 30,
+    Rgba16ui = 31,
+    Rgba8ui = 32,
+    R32ui = 33,
+    Rgb10a2ui = 34,
+    Rg32ui = 35,
+    Rg16ui = 36,
+    Rg8ui = 37,
+    R16ui = 38,
+    R8ui = 39,
+    Max = 0x7fffffff,
+};
+
+enum class ImageChannelOrder : unsigned {
+    R = 0,
+    A = 1,
+    RG = 2,
+    RA = 3,
+    RGB = 4,
+    RGBA = 5,
+    BGRA = 6,
+    ARGB = 7,
+    Intensity = 8,
+    Luminance = 9,
+    Rx = 10,
+    RGx = 11,
+    RGBx = 12,
+    Depth = 13,
+    DepthStencil = 14,
+    sRGB = 15,
+    sRGBx = 16,
+    sRGBA = 17,
+    sBGRA = 18,
+    ABGR = 19,
+    Max = 0x7fffffff,
+};
+
+enum class ImageChannelDataType : unsigned {
+    SnormInt8 = 0,
+    SnormInt16 = 1,
+    UnormInt8 = 2,
+    UnormInt16 = 3,
+    UnormShort565 = 4,
+    UnormShort555 = 5,
+    UnormInt101010 = 6,
+    SignedInt8 = 7,
+    SignedInt16 = 8,
+    SignedInt32 = 9,
+    UnsignedInt8 = 10,
+    UnsignedInt16 = 11,
+    UnsignedInt32 = 12,
+    HalfFloat = 13,
+    Float = 14,
+    UnormInt24 = 15,
+    UnormInt101010_2 = 16,
+    Max = 0x7fffffff,
+};
+
+enum class ImageOperandsShift : unsigned {
+    Bias = 0,
+    Lod = 1,
+    Grad = 2,
+    ConstOffset = 3,
+    Offset = 4,
+    ConstOffsets = 5,
+    Sample = 6,
+    MinLod = 7,
+    Max = 0x7fffffff,
+};
+
+enum class ImageOperandsMask : unsigned {
+    MaskNone = 0,
+    Bias = 0x00000001,
+    Lod = 0x00000002,
+    Grad = 0x00000004,
+    ConstOffset = 0x00000008,
+    Offset = 0x00000010,
+    ConstOffsets = 0x00000020,
+    Sample = 0x00000040,
+    MinLod = 0x00000080,
+};
+
+enum class FPFastMathModeShift : unsigned {
+    NotNaN = 0,
+    NotInf = 1,
+    NSZ = 2,
+    AllowRecip = 3,
+    Fast = 4,
+    Max = 0x7fffffff,
+};
+
+enum class FPFastMathModeMask : unsigned {
+    MaskNone = 0,
+    NotNaN = 0x00000001,
+    NotInf = 0x00000002,
+    NSZ = 0x00000004,
+    AllowRecip = 0x00000008,
+    Fast = 0x00000010,
+};
+
+enum class FPRoundingMode : unsigned {
+    RTE = 0,
+    RTZ = 1,
+    RTP = 2,
+    RTN = 3,
+    Max = 0x7fffffff,
+};
+
+enum class LinkageType : unsigned {
+    Export = 0,
+    Import = 1,
+    Max = 0x7fffffff,
+};
+
+enum class AccessQualifier : unsigned {
+    ReadOnly = 0,
+    WriteOnly = 1,
+    ReadWrite = 2,
+    Max = 0x7fffffff,
+};
+
+enum class FunctionParameterAttribute : unsigned {
+    Zext = 0,
+    Sext = 1,
+    ByVal = 2,
+    Sret = 3,
+    NoAlias = 4,
+    NoCapture = 5,
+    NoWrite = 6,
+    NoReadWrite = 7,
+    Max = 0x7fffffff,
+};
+
+enum class Decoration : unsigned {
+    RelaxedPrecision = 0,
+    SpecId = 1,
+    Block = 2,
+    BufferBlock = 3,
+    RowMajor = 4,
+    ColMajor = 5,
+    ArrayStride = 6,
+    MatrixStride = 7,
+    GLSLShared = 8,
+    GLSLPacked = 9,
+    CPacked = 10,
+    BuiltIn = 11,
+    NoPerspective = 13,
+    Flat = 14,
+    Patch = 15,
+    Centroid = 16,
+    Sample = 17,
+    Invariant = 18,
+    Restrict = 19,
+    Aliased = 20,
+    Volatile = 21,
+    Constant = 22,
+    Coherent = 23,
+    NonWritable = 24,
+    NonReadable = 25,
+    Uniform = 26,
+    SaturatedConversion = 28,
+    Stream = 29,
+    Location = 30,
+    Component = 31,
+    Index = 32,
+    Binding = 33,
+    DescriptorSet = 34,
+    Offset = 35,
+    XfbBuffer = 36,
+    XfbStride = 37,
+    FuncParamAttr = 38,
+    FPRoundingMode = 39,
+    FPFastMathMode = 40,
+    LinkageAttributes = 41,
+    NoContraction = 42,
+    InputAttachmentIndex = 43,
+    Alignment = 44,
+    MaxByteOffset = 45,
+    AlignmentId = 46,
+    MaxByteOffsetId = 47,
+    ExplicitInterpAMD = 4999,
+    OverrideCoverageNV = 5248,
+    PassthroughNV = 5250,
+    ViewportRelativeNV = 5252,
+    SecondaryViewportRelativeNV = 5256,
+    HlslCounterBufferGOOGLE = 5634,
+    HlslSemanticGOOGLE = 5635,
+    Max = 0x7fffffff,
+};
+
+enum class BuiltIn : unsigned {
+    Position = 0,
+    PointSize = 1,
+    ClipDistance = 3,
+    CullDistance = 4,
+    VertexId = 5,
+    InstanceId = 6,
+    PrimitiveId = 7,
+    InvocationId = 8,
+    Layer = 9,
+    ViewportIndex = 10,
+    TessLevelOuter = 11,
+    TessLevelInner = 12,
+    TessCoord = 13,
+    PatchVertices = 14,
+    FragCoord = 15,
+    PointCoord = 16,
+    FrontFacing = 17,
+    SampleId = 18,
+    SamplePosition = 19,
+    SampleMask = 20,
+    FragDepth = 22,
+    HelperInvocation = 23,
+    NumWorkgroups = 24,
+    WorkgroupSize = 25,
+    WorkgroupId = 26,
+    LocalInvocationId = 27,
+    GlobalInvocationId = 28,
+    LocalInvocationIndex = 29,
+    WorkDim = 30,
+    GlobalSize = 31,
+    EnqueuedWorkgroupSize = 32,
+    GlobalOffset = 33,
+    GlobalLinearId = 34,
+    SubgroupSize = 36,
+    SubgroupMaxSize = 37,
+    NumSubgroups = 38,
+    NumEnqueuedSubgroups = 39,
+    SubgroupId = 40,
+    SubgroupLocalInvocationId = 41,
+    VertexIndex = 42,
+    InstanceIndex = 43,
+    SubgroupEqMaskKHR = 4416,
+    SubgroupGeMaskKHR = 4417,
+    SubgroupGtMaskKHR = 4418,
+    SubgroupLeMaskKHR = 4419,
+    SubgroupLtMaskKHR = 4420,
+    BaseVertex = 4424,
+    BaseInstance = 4425,
+    DrawIndex = 4426,
+    DeviceIndex = 4438,
+    ViewIndex = 4440,
+    BaryCoordNoPerspAMD = 4992,
+    BaryCoordNoPerspCentroidAMD = 4993,
+    BaryCoordNoPerspSampleAMD = 4994,
+    BaryCoordSmoothAMD = 4995,
+    BaryCoordSmoothCentroidAMD = 4996,
+    BaryCoordSmoothSampleAMD = 4997,
+    BaryCoordPullModelAMD = 4998,
+    FragStencilRefEXT = 5014,
+    ViewportMaskNV = 5253,
+    SecondaryPositionNV = 5257,
+    SecondaryViewportMaskNV = 5258,
+    PositionPerViewNV = 5261,
+    ViewportMaskPerViewNV = 5262,
+    Max = 0x7fffffff,
+};
+
+enum class SelectionControlShift : unsigned {
+    Flatten = 0,
+    DontFlatten = 1,
+    Max = 0x7fffffff,
+};
+
+enum class SelectionControlMask : unsigned {
+    MaskNone = 0,
+    Flatten = 0x00000001,
+    DontFlatten = 0x00000002,
+};
+
+enum class LoopControlShift : unsigned {
+    Unroll = 0,
+    DontUnroll = 1,
+    DependencyInfinite = 2,
+    DependencyLength = 3,
+    Max = 0x7fffffff,
+};
+
+enum class LoopControlMask : unsigned {
+    MaskNone = 0,
+    Unroll = 0x00000001,
+    DontUnroll = 0x00000002,
+    DependencyInfinite = 0x00000004,
+    DependencyLength = 0x00000008,
+};
+
+enum class FunctionControlShift : unsigned {
+    Inline = 0,
+    DontInline = 1,
+    Pure = 2,
+    Const = 3,
+    Max = 0x7fffffff,
+};
+
+enum class FunctionControlMask : unsigned {
+    MaskNone = 0,
+    Inline = 0x00000001,
+    DontInline = 0x00000002,
+    Pure = 0x00000004,
+    Const = 0x00000008,
+};
+
+enum class MemorySemanticsShift : unsigned {
+    Acquire = 1,
+    Release = 2,
+    AcquireRelease = 3,
+    SequentiallyConsistent = 4,
+    UniformMemory = 6,
+    SubgroupMemory = 7,
+    WorkgroupMemory = 8,
+    CrossWorkgroupMemory = 9,
+    AtomicCounterMemory = 10,
+    ImageMemory = 11,
+    Max = 0x7fffffff,
+};
+
+enum class MemorySemanticsMask : unsigned {
+    MaskNone = 0,
+    Acquire = 0x00000002,
+    Release = 0x00000004,
+    AcquireRelease = 0x00000008,
+    SequentiallyConsistent = 0x00000010,
+    UniformMemory = 0x00000040,
+    SubgroupMemory = 0x00000080,
+    WorkgroupMemory = 0x00000100,
+    CrossWorkgroupMemory = 0x00000200,
+    AtomicCounterMemory = 0x00000400,
+    ImageMemory = 0x00000800,
+};
+
+enum class MemoryAccessShift : unsigned {
+    Volatile = 0,
+    Aligned = 1,
+    Nontemporal = 2,
+    Max = 0x7fffffff,
+};
+
+enum class MemoryAccessMask : unsigned {
+    MaskNone = 0,
+    Volatile = 0x00000001,
+    Aligned = 0x00000002,
+    Nontemporal = 0x00000004,
+};
+
+enum class Scope : unsigned {
+    CrossDevice = 0,
+    Device = 1,
+    Workgroup = 2,
+    Subgroup = 3,
+    Invocation = 4,
+    Max = 0x7fffffff,
+};
+
+enum class GroupOperation : unsigned {
+    Reduce = 0,
+    InclusiveScan = 1,
+    ExclusiveScan = 2,
+    Max = 0x7fffffff,
+};
+
+enum class KernelEnqueueFlags : unsigned {
+    NoWait = 0,
+    WaitKernel = 1,
+    WaitWorkGroup = 2,
+    Max = 0x7fffffff,
+};
+
+enum class KernelProfilingInfoShift : unsigned {
+    CmdExecTime = 0,
+    Max = 0x7fffffff,
+};
+
+enum class KernelProfilingInfoMask : unsigned {
+    MaskNone = 0,
+    CmdExecTime = 0x00000001,
+};
+
+enum class Capability : unsigned {
+    Matrix = 0,
+    Shader = 1,
+    Geometry = 2,
+    Tessellation = 3,
+    Addresses = 4,
+    Linkage = 5,
+    Kernel = 6,
+    Vector16 = 7,
+    Float16Buffer = 8,
+    Float16 = 9,
+    Float64 = 10,
+    Int64 = 11,
+    Int64Atomics = 12,
+    ImageBasic = 13,
+    ImageReadWrite = 14,
+    ImageMipmap = 15,
+    Pipes = 17,
+    Groups = 18,
+    DeviceEnqueue = 19,
+    LiteralSampler = 20,
+    AtomicStorage = 21,
+    Int16 = 22,
+    TessellationPointSize = 23,
+    GeometryPointSize = 24,
+    ImageGatherExtended = 25,
+    StorageImageMultisample = 27,
+    UniformBufferArrayDynamicIndexing = 28,
+    SampledImageArrayDynamicIndexing = 29,
+    StorageBufferArrayDynamicIndexing = 30,
+    StorageImageArrayDynamicIndexing = 31,
+    ClipDistance = 32,
+    CullDistance = 33,
+    ImageCubeArray = 34,
+    SampleRateShading = 35,
+    ImageRect = 36,
+    SampledRect = 37,
+    GenericPointer = 38,
+    Int8 = 39,
+    InputAttachment = 40,
+    SparseResidency = 41,
+    MinLod = 42,
+    Sampled1D = 43,
+    Image1D = 44,
+    SampledCubeArray = 45,
+    SampledBuffer = 46,
+    ImageBuffer = 47,
+    ImageMSArray = 48,
+    StorageImageExtendedFormats = 49,
+    ImageQuery = 50,
+    DerivativeControl = 51,
+    InterpolationFunction = 52,
+    TransformFeedback = 53,
+    GeometryStreams = 54,
+    StorageImageReadWithoutFormat = 55,
+    StorageImageWriteWithoutFormat = 56,
+    MultiViewport = 57,
+    SubgroupDispatch = 58,
+    NamedBarrier = 59,
+    PipeStorage = 60,
+    SubgroupBallotKHR = 4423,
+    DrawParameters = 4427,
+    SubgroupVoteKHR = 4431,
+    StorageBuffer16BitAccess = 4433,
+    StorageUniformBufferBlock16 = 4433,
+    StorageUniform16 = 4434,
+    UniformAndStorageBuffer16BitAccess = 4434,
+    StoragePushConstant16 = 4435,
+    StorageInputOutput16 = 4436,
+    DeviceGroup = 4437,
+    MultiView = 4439,
+    VariablePointersStorageBuffer = 4441,
+    VariablePointers = 4442,
+    AtomicStorageOps = 4445,
+    SampleMaskPostDepthCoverage = 4447,
+    ImageGatherBiasLodAMD = 5009,
+    FragmentMaskAMD = 5010,
+    StencilExportEXT = 5013,
+    ImageReadWriteLodAMD = 5015,
+    SampleMaskOverrideCoverageNV = 5249,
+    GeometryShaderPassthroughNV = 5251,
+    ShaderViewportIndexLayerEXT = 5254,
+    ShaderViewportIndexLayerNV = 5254,
+    ShaderViewportMaskNV = 5255,
+    ShaderStereoViewNV = 5259,
+    PerViewAttributesNV = 5260,
+    SubgroupShuffleINTEL = 5568,
+    SubgroupBufferBlockIOINTEL = 5569,
+    SubgroupImageBlockIOINTEL = 5570,
+    Max = 0x7fffffff,
+};
+
+enum class Op : unsigned {
+    OpNop = 0,
+    OpUndef = 1,
+    OpSourceContinued = 2,
+    OpSource = 3,
+    OpSourceExtension = 4,
+    OpName = 5,
+    OpMemberName = 6,
+    OpString = 7,
+    OpLine = 8,
+    OpExtension = 10,
+    OpExtInstImport = 11,
+    OpExtInst = 12,
+    OpMemoryModel = 14,
+    OpEntryPoint = 15,
+    OpExecutionMode = 16,
+    OpCapability = 17,
+    OpTypeVoid = 19,
+    OpTypeBool = 20,
+    OpTypeInt = 21,
+    OpTypeFloat = 22,
+    OpTypeVector = 23,
+    OpTypeMatrix = 24,
+    OpTypeImage = 25,
+    OpTypeSampler = 26,
+    OpTypeSampledImage = 27,
+    OpTypeArray = 28,
+    OpTypeRuntimeArray = 29,
+    OpTypeStruct = 30,
+    OpTypeOpaque = 31,
+    OpTypePointer = 32,
+    OpTypeFunction = 33,
+    OpTypeEvent = 34,
+    OpTypeDeviceEvent = 35,
+    OpTypeReserveId = 36,
+    OpTypeQueue = 37,
+    OpTypePipe = 38,
+    OpTypeForwardPointer = 39,
+    OpConstantTrue = 41,
+    OpConstantFalse = 42,
+    OpConstant = 43,
+    OpConstantComposite = 44,
+    OpConstantSampler = 45,
+    OpConstantNull = 46,
+    OpSpecConstantTrue = 48,
+    OpSpecConstantFalse = 49,
+    OpSpecConstant = 50,
+    OpSpecConstantComposite = 51,
+    OpSpecConstantOp = 52,
+    OpFunction = 54,
+    OpFunctionParameter = 55,
+    OpFunctionEnd = 56,
+    OpFunctionCall = 57,
+    OpVariable = 59,
+    OpImageTexelPointer = 60,
+    OpLoad = 61,
+    OpStore = 62,
+    OpCopyMemory = 63,
+    OpCopyMemorySized = 64,
+    OpAccessChain = 65,
+    OpInBoundsAccessChain = 66,
+    OpPtrAccessChain = 67,
+    OpArrayLength = 68,
+    OpGenericPtrMemSemantics = 69,
+    OpInBoundsPtrAccessChain = 70,
+    OpDecorate = 71,
+    OpMemberDecorate = 72,
+    OpDecorationGroup = 73,
+    OpGroupDecorate = 74,
+    OpGroupMemberDecorate = 75,
+    OpVectorExtractDynamic = 77,
+    OpVectorInsertDynamic = 78,
+    OpVectorShuffle = 79,
+    OpCompositeConstruct = 80,
+    OpCompositeExtract = 81,
+    OpCompositeInsert = 82,
+    OpCopyObject = 83,
+    OpTranspose = 84,
+    OpSampledImage = 86,
+    OpImageSampleImplicitLod = 87,
+    OpImageSampleExplicitLod = 88,
+    OpImageSampleDrefImplicitLod = 89,
+    OpImageSampleDrefExplicitLod = 90,
+    OpImageSampleProjImplicitLod = 91,
+    OpImageSampleProjExplicitLod = 92,
+    OpImageSampleProjDrefImplicitLod = 93,
+    OpImageSampleProjDrefExplicitLod = 94,
+    OpImageFetch = 95,
+    OpImageGather = 96,
+    OpImageDrefGather = 97,
+    OpImageRead = 98,
+    OpImageWrite = 99,
+    OpImage = 100,
+    OpImageQueryFormat = 101,
+    OpImageQueryOrder = 102,
+    OpImageQuerySizeLod = 103,
+    OpImageQuerySize = 104,
+    OpImageQueryLod = 105,
+    OpImageQueryLevels = 106,
+    OpImageQuerySamples = 107,
+    OpConvertFToU = 109,
+    OpConvertFToS = 110,
+    OpConvertSToF = 111,
+    OpConvertUToF = 112,
+    OpUConvert = 113,
+    OpSConvert = 114,
+    OpFConvert = 115,
+    OpQuantizeToF16 = 116,
+    OpConvertPtrToU = 117,
+    OpSatConvertSToU = 118,
+    OpSatConvertUToS = 119,
+    OpConvertUToPtr = 120,
+    OpPtrCastToGeneric = 121,
+    OpGenericCastToPtr = 122,
+    OpGenericCastToPtrExplicit = 123,
+    OpBitcast = 124,
+    OpSNegate = 126,
+    OpFNegate = 127,
+    OpIAdd = 128,
+    OpFAdd = 129,
+    OpISub = 130,
+    OpFSub = 131,
+    OpIMul = 132,
+    OpFMul = 133,
+    OpUDiv = 134,
+    OpSDiv = 135,
+    OpFDiv = 136,
+    OpUMod = 137,
+    OpSRem = 138,
+    OpSMod = 139,
+    OpFRem = 140,
+    OpFMod = 141,
+    OpVectorTimesScalar = 142,
+    OpMatrixTimesScalar = 143,
+    OpVectorTimesMatrix = 144,
+    OpMatrixTimesVector = 145,
+    OpMatrixTimesMatrix = 146,
+    OpOuterProduct = 147,
+    OpDot = 148,
+    OpIAddCarry = 149,
+    OpISubBorrow = 150,
+    OpUMulExtended = 151,
+    OpSMulExtended = 152,
+    OpAny = 154,
+    OpAll = 155,
+    OpIsNan = 156,
+    OpIsInf = 157,
+    OpIsFinite = 158,
+    OpIsNormal = 159,
+    OpSignBitSet = 160,
+    OpLessOrGreater = 161,
+    OpOrdered = 162,
+    OpUnordered = 163,
+    OpLogicalEqual = 164,
+    OpLogicalNotEqual = 165,
+    OpLogicalOr = 166,
+    OpLogicalAnd = 167,
+    OpLogicalNot = 168,
+    OpSelect = 169,
+    OpIEqual = 170,
+    OpINotEqual = 171,
+    OpUGreaterThan = 172,
+    OpSGreaterThan = 173,
+    OpUGreaterThanEqual = 174,
+    OpSGreaterThanEqual = 175,
+    OpULessThan = 176,
+    OpSLessThan = 177,
+    OpULessThanEqual = 178,
+    OpSLessThanEqual = 179,
+    OpFOrdEqual = 180,
+    OpFUnordEqual = 181,
+    OpFOrdNotEqual = 182,
+    OpFUnordNotEqual = 183,
+    OpFOrdLessThan = 184,
+    OpFUnordLessThan = 185,
+    OpFOrdGreaterThan = 186,
+    OpFUnordGreaterThan = 187,
+    OpFOrdLessThanEqual = 188,
+    OpFUnordLessThanEqual = 189,
+    OpFOrdGreaterThanEqual = 190,
+    OpFUnordGreaterThanEqual = 191,
+    OpShiftRightLogical = 194,
+    OpShiftRightArithmetic = 195,
+    OpShiftLeftLogical = 196,
+    OpBitwiseOr = 197,
+    OpBitwiseXor = 198,
+    OpBitwiseAnd = 199,
+    OpNot = 200,
+    OpBitFieldInsert = 201,
+    OpBitFieldSExtract = 202,
+    OpBitFieldUExtract = 203,
+    OpBitReverse = 204,
+    OpBitCount = 205,
+    OpDPdx = 207,
+    OpDPdy = 208,
+    OpFwidth = 209,
+    OpDPdxFine = 210,
+    OpDPdyFine = 211,
+    OpFwidthFine = 212,
+    OpDPdxCoarse = 213,
+    OpDPdyCoarse = 214,
+    OpFwidthCoarse = 215,
+    OpEmitVertex = 218,
+    OpEndPrimitive = 219,
+    OpEmitStreamVertex = 220,
+    OpEndStreamPrimitive = 221,
+    OpControlBarrier = 224,
+    OpMemoryBarrier = 225,
+    OpAtomicLoad = 227,
+    OpAtomicStore = 228,
+    OpAtomicExchange = 229,
+    OpAtomicCompareExchange = 230,
+    OpAtomicCompareExchangeWeak = 231,
+    OpAtomicIIncrement = 232,
+    OpAtomicIDecrement = 233,
+    OpAtomicIAdd = 234,
+    OpAtomicISub = 235,
+    OpAtomicSMin = 236,
+    OpAtomicUMin = 237,
+    OpAtomicSMax = 238,
+    OpAtomicUMax = 239,
+    OpAtomicAnd = 240,
+    OpAtomicOr = 241,
+    OpAtomicXor = 242,
+    OpPhi = 245,
+    OpLoopMerge = 246,
+    OpSelectionMerge = 247,
+    OpLabel = 248,
+    OpBranch = 249,
+    OpBranchConditional = 250,
+    OpSwitch = 251,
+    OpKill = 252,
+    OpReturn = 253,
+    OpReturnValue = 254,
+    OpUnreachable = 255,
+    OpLifetimeStart = 256,
+    OpLifetimeStop = 257,
+    OpGroupAsyncCopy = 259,
+    OpGroupWaitEvents = 260,
+    OpGroupAll = 261,
+    OpGroupAny = 262,
+    OpGroupBroadcast = 263,
+    OpGroupIAdd = 264,
+    OpGroupFAdd = 265,
+    OpGroupFMin = 266,
+    OpGroupUMin = 267,
+    OpGroupSMin = 268,
+    OpGroupFMax = 269,
+    OpGroupUMax = 270,
+    OpGroupSMax = 271,
+    OpReadPipe = 274,
+    OpWritePipe = 275,
+    OpReservedReadPipe = 276,
+    OpReservedWritePipe = 277,
+    OpReserveReadPipePackets = 278,
+    OpReserveWritePipePackets = 279,
+    OpCommitReadPipe = 280,
+    OpCommitWritePipe = 281,
+    OpIsValidReserveId = 282,
+    OpGetNumPipePackets = 283,
+    OpGetMaxPipePackets = 284,
+    OpGroupReserveReadPipePackets = 285,
+    OpGroupReserveWritePipePackets = 286,
+    OpGroupCommitReadPipe = 287,
+    OpGroupCommitWritePipe = 288,
+    OpEnqueueMarker = 291,
+    OpEnqueueKernel = 292,
+    OpGetKernelNDrangeSubGroupCount = 293,
+    OpGetKernelNDrangeMaxSubGroupSize = 294,
+    OpGetKernelWorkGroupSize = 295,
+    OpGetKernelPreferredWorkGroupSizeMultiple = 296,
+    OpRetainEvent = 297,
+    OpReleaseEvent = 298,
+    OpCreateUserEvent = 299,
+    OpIsValidEvent = 300,
+    OpSetUserEventStatus = 301,
+    OpCaptureEventProfilingInfo = 302,
+    OpGetDefaultQueue = 303,
+    OpBuildNDRange = 304,
+    OpImageSparseSampleImplicitLod = 305,
+    OpImageSparseSampleExplicitLod = 306,
+    OpImageSparseSampleDrefImplicitLod = 307,
+    OpImageSparseSampleDrefExplicitLod = 308,
+    OpImageSparseSampleProjImplicitLod = 309,
+    OpImageSparseSampleProjExplicitLod = 310,
+    OpImageSparseSampleProjDrefImplicitLod = 311,
+    OpImageSparseSampleProjDrefExplicitLod = 312,
+    OpImageSparseFetch = 313,
+    OpImageSparseGather = 314,
+    OpImageSparseDrefGather = 315,
+    OpImageSparseTexelsResident = 316,
+    OpNoLine = 317,
+    OpAtomicFlagTestAndSet = 318,
+    OpAtomicFlagClear = 319,
+    OpImageSparseRead = 320,
+    OpSizeOf = 321,
+    OpTypePipeStorage = 322,
+    OpConstantPipeStorage = 323,
+    OpCreatePipeFromPipeStorage = 324,
+    OpGetKernelLocalSizeForSubgroupCount = 325,
+    OpGetKernelMaxNumSubgroups = 326,
+    OpTypeNamedBarrier = 327,
+    OpNamedBarrierInitialize = 328,
+    OpMemoryNamedBarrier = 329,
+    OpModuleProcessed = 330,
+    OpExecutionModeId = 331,
+    OpDecorateId = 332,
+    OpSubgroupBallotKHR = 4421,
+    OpSubgroupFirstInvocationKHR = 4422,
+    OpSubgroupAllKHR = 4428,
+    OpSubgroupAnyKHR = 4429,
+    OpSubgroupAllEqualKHR = 4430,
+    OpSubgroupReadInvocationKHR = 4432,
+    OpGroupIAddNonUniformAMD = 5000,
+    OpGroupFAddNonUniformAMD = 5001,
+    OpGroupFMinNonUniformAMD = 5002,
+    OpGroupUMinNonUniformAMD = 5003,
+    OpGroupSMinNonUniformAMD = 5004,
+    OpGroupFMaxNonUniformAMD = 5005,
+    OpGroupUMaxNonUniformAMD = 5006,
+    OpGroupSMaxNonUniformAMD = 5007,
+    OpFragmentMaskFetchAMD = 5011,
+    OpFragmentFetchAMD = 5012,
+    OpSubgroupShuffleINTEL = 5571,
+    OpSubgroupShuffleDownINTEL = 5572,
+    OpSubgroupShuffleUpINTEL = 5573,
+    OpSubgroupShuffleXorINTEL = 5574,
+    OpSubgroupBlockReadINTEL = 5575,
+    OpSubgroupBlockWriteINTEL = 5576,
+    OpSubgroupImageBlockReadINTEL = 5577,
+    OpSubgroupImageBlockWriteINTEL = 5578,
+    OpDecorateStringGOOGLE = 5632,
+    OpMemberDecorateStringGOOGLE = 5633,
+    Max = 0x7fffffff,
+};
+
+// Overload operator| for mask bit combining
+
+inline ImageOperandsMask operator|(ImageOperandsMask a, ImageOperandsMask b) { return ImageOperandsMask(unsigned(a) | unsigned(b)); }
+inline FPFastMathModeMask operator|(FPFastMathModeMask a, FPFastMathModeMask b) { return FPFastMathModeMask(unsigned(a) | unsigned(b)); }
+inline SelectionControlMask operator|(SelectionControlMask a, SelectionControlMask b) { return SelectionControlMask(unsigned(a) | unsigned(b)); }
+inline LoopControlMask operator|(LoopControlMask a, LoopControlMask b) { return LoopControlMask(unsigned(a) | unsigned(b)); }
+inline FunctionControlMask operator|(FunctionControlMask a, FunctionControlMask b) { return FunctionControlMask(unsigned(a) | unsigned(b)); }
+inline MemorySemanticsMask operator|(MemorySemanticsMask a, MemorySemanticsMask b) { return MemorySemanticsMask(unsigned(a) | unsigned(b)); }
+inline MemoryAccessMask operator|(MemoryAccessMask a, MemoryAccessMask b) { return MemoryAccessMask(unsigned(a) | unsigned(b)); }
+inline KernelProfilingInfoMask operator|(KernelProfilingInfoMask a, KernelProfilingInfoMask b) { return KernelProfilingInfoMask(unsigned(a) | unsigned(b)); }
+
+}  // end namespace spv
+
+#endif  // #ifndef spirv_HPP
+
diff --git a/libs/spirv-headers/spirv/1.2/spirv.json b/libs/spirv-headers/spirv/1.2/spirv.json
new file mode 100644
index 00000000000..9c0ff0a43e3
--- /dev/null
+++ b/libs/spirv-headers/spirv/1.2/spirv.json
@@ -0,0 +1,1046 @@
+{
+    "spv":
+    {
+        "meta":
+        {
+            "Comment":
+            [
+                [
+                    "Copyright (c) 2014-2018 The Khronos Group Inc.",
+                    "",
+                    "Permission is hereby granted, free of charge, to any person obtaining a copy",
+                    "of this software and/or associated documentation files (the \"Materials\"),",
+                    "to deal in the Materials without restriction, including without limitation",
+                    "the rights to use, copy, modify, merge, publish, distribute, sublicense,",
+                    "and/or sell copies of the Materials, and to permit persons to whom the",
+                    "Materials are furnished to do so, subject to the following conditions:",
+                    "",
+                    "The above copyright notice and this permission notice shall be included in",
+                    "all copies or substantial portions of the Materials.",
+                    "",
+                    "MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS KHRONOS",
+                    "STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS SPECIFICATIONS AND",
+                    "HEADER INFORMATION ARE LOCATED AT https://www.khronos.org/registry/ ",
+                    "",
+                    "THE MATERIALS ARE PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS",
+                    "OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,",
+                    "FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL",
+                    "THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER",
+                    "LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING",
+                    "FROM,OUT OF OR IN CONNECTION WITH THE MATERIALS OR THE USE OR OTHER DEALINGS",
+                    "IN THE MATERIALS."
+                ],
+                [
+                    "This header is automatically generated by the same tool that creates",
+                    "the Binary Section of the SPIR-V specification."
+                ],
+                [
+                    "Enumeration tokens for SPIR-V, in various styles:",
+                    "  C, C++, C++11, JSON, Lua, Python",
+                    "",
+                    "- C will have tokens with a \"Spv\" prefix, e.g.: SpvSourceLanguageGLSL",
+                    "- C++ will have tokens in the \"spv\" name space, e.g.: spv::SourceLanguageGLSL",
+                    "- C++11 will use enum classes in the spv namespace, e.g.: spv::SourceLanguage::GLSL",
+                    "- Lua will use tables, e.g.: spv.SourceLanguage.GLSL",
+                    "- Python will use dictionaries, e.g.: spv['SourceLanguage']['GLSL']",
+                    "",
+                    "Some tokens act like mask values, which can be OR'd together,",
+                    "while others are mutually exclusive.  The mask-like ones have",
+                    "\"Mask\" in their name, and a parallel enum that has the shift",
+                    "amount (1 << x) for each corresponding enumerant."
+                ]
+            ],
+            "MagicNumber": 119734787,
+            "Version": 66048,
+            "Revision": 2,
+            "OpCodeMask": 65535,
+            "WordCountShift": 16
+        },
+        "enum":
+        [
+            {
+                "Name": "SourceLanguage",
+                "Type": "Value",
+                "Values":
+                {
+                    "Unknown": 0,
+                    "ESSL": 1,
+                    "GLSL": 2,
+                    "OpenCL_C": 3,
+                    "OpenCL_CPP": 4,
+                    "HLSL": 5
+                }
+            },
+            {
+                "Name": "ExecutionModel",
+                "Type": "Value",
+                "Values":
+                {
+                    "Vertex": 0,
+                    "TessellationControl": 1,
+                    "TessellationEvaluation": 2,
+                    "Geometry": 3,
+                    "Fragment": 4,
+                    "GLCompute": 5,
+                    "Kernel": 6
+                }
+            },
+            {
+                "Name": "AddressingModel",
+                "Type": "Value",
+                "Values":
+                {
+                    "Logical": 0,
+                    "Physical32": 1,
+                    "Physical64": 2
+                }
+            },
+            {
+                "Name": "MemoryModel",
+                "Type": "Value",
+                "Values":
+                {
+                    "Simple": 0,
+                    "GLSL450": 1,
+                    "OpenCL": 2
+                }
+            },
+            {
+                "Name": "ExecutionMode",
+                "Type": "Value",
+                "Values":
+                {
+                    "Invocations": 0,
+                    "SpacingEqual": 1,
+                    "SpacingFractionalEven": 2,
+                    "SpacingFractionalOdd": 3,
+                    "VertexOrderCw": 4,
+                    "VertexOrderCcw": 5,
+                    "PixelCenterInteger": 6,
+                    "OriginUpperLeft": 7,
+                    "OriginLowerLeft": 8,
+                    "EarlyFragmentTests": 9,
+                    "PointMode": 10,
+                    "Xfb": 11,
+                    "DepthReplacing": 12,
+                    "DepthGreater": 14,
+                    "DepthLess": 15,
+                    "DepthUnchanged": 16,
+                    "LocalSize": 17,
+                    "LocalSizeHint": 18,
+                    "InputPoints": 19,
+                    "InputLines": 20,
+                    "InputLinesAdjacency": 21,
+                    "Triangles": 22,
+                    "InputTrianglesAdjacency": 23,
+                    "Quads": 24,
+                    "Isolines": 25,
+                    "OutputVertices": 26,
+                    "OutputPoints": 27,
+                    "OutputLineStrip": 28,
+                    "OutputTriangleStrip": 29,
+                    "VecTypeHint": 30,
+                    "ContractionOff": 31,
+                    "Initializer": 33,
+                    "Finalizer": 34,
+                    "SubgroupSize": 35,
+                    "SubgroupsPerWorkgroup": 36,
+                    "SubgroupsPerWorkgroupId": 37,
+                    "LocalSizeId": 38,
+                    "LocalSizeHintId": 39,
+                    "PostDepthCoverage": 4446,
+                    "StencilRefReplacingEXT": 5027
+                }
+            },
+            {
+                "Name": "StorageClass",
+                "Type": "Value",
+                "Values":
+                {
+                    "UniformConstant": 0,
+                    "Input": 1,
+                    "Uniform": 2,
+                    "Output": 3,
+                    "Workgroup": 4,
+                    "CrossWorkgroup": 5,
+                    "Private": 6,
+                    "Function": 7,
+                    "Generic": 8,
+                    "PushConstant": 9,
+                    "AtomicCounter": 10,
+                    "Image": 11,
+                    "StorageBuffer": 12
+                }
+            },
+            {
+                "Name": "Dim",
+                "Type": "Value",
+                "Values":
+                {
+                    "Dim1D": 0,
+                    "Dim2D": 1,
+                    "Dim3D": 2,
+                    "Cube": 3,
+                    "Rect": 4,
+                    "Buffer": 5,
+                    "SubpassData": 6
+                }
+            },
+            {
+                "Name": "SamplerAddressingMode",
+                "Type": "Value",
+                "Values":
+                {
+                    "None": 0,
+                    "ClampToEdge": 1,
+                    "Clamp": 2,
+                    "Repeat": 3,
+                    "RepeatMirrored": 4
+                }
+            },
+            {
+                "Name": "SamplerFilterMode",
+                "Type": "Value",
+                "Values":
+                {
+                    "Nearest": 0,
+                    "Linear": 1
+                }
+            },
+            {
+                "Name": "ImageFormat",
+                "Type": "Value",
+                "Values":
+                {
+                    "Unknown": 0,
+                    "Rgba32f": 1,
+                    "Rgba16f": 2,
+                    "R32f": 3,
+                    "Rgba8": 4,
+                    "Rgba8Snorm": 5,
+                    "Rg32f": 6,
+                    "Rg16f": 7,
+                    "R11fG11fB10f": 8,
+                    "R16f": 9,
+                    "Rgba16": 10,
+                    "Rgb10A2": 11,
+                    "Rg16": 12,
+                    "Rg8": 13,
+                    "R16": 14,
+                    "R8": 15,
+                    "Rgba16Snorm": 16,
+                    "Rg16Snorm": 17,
+                    "Rg8Snorm": 18,
+                    "R16Snorm": 19,
+                    "R8Snorm": 20,
+                    "Rgba32i": 21,
+                    "Rgba16i": 22,
+                    "Rgba8i": 23,
+                    "R32i": 24,
+                    "Rg32i": 25,
+                    "Rg16i": 26,
+                    "Rg8i": 27,
+                    "R16i": 28,
+                    "R8i": 29,
+                    "Rgba32ui": 30,
+                    "Rgba16ui": 31,
+                    "Rgba8ui": 32,
+                    "R32ui": 33,
+                    "Rgb10a2ui": 34,
+                    "Rg32ui": 35,
+                    "Rg16ui": 36,
+                    "Rg8ui": 37,
+                    "R16ui": 38,
+                    "R8ui": 39
+                }
+            },
+            {
+                "Name": "ImageChannelOrder",
+                "Type": "Value",
+                "Values":
+                {
+                    "R": 0,
+                    "A": 1,
+                    "RG": 2,
+                    "RA": 3,
+                    "RGB": 4,
+                    "RGBA": 5,
+                    "BGRA": 6,
+                    "ARGB": 7,
+                    "Intensity": 8,
+                    "Luminance": 9,
+                    "Rx": 10,
+                    "RGx": 11,
+                    "RGBx": 12,
+                    "Depth": 13,
+                    "DepthStencil": 14,
+                    "sRGB": 15,
+                    "sRGBx": 16,
+                    "sRGBA": 17,
+                    "sBGRA": 18,
+                    "ABGR": 19
+                }
+            },
+            {
+                "Name": "ImageChannelDataType",
+                "Type": "Value",
+                "Values":
+                {
+                    "SnormInt8": 0,
+                    "SnormInt16": 1,
+                    "UnormInt8": 2,
+                    "UnormInt16": 3,
+                    "UnormShort565": 4,
+                    "UnormShort555": 5,
+                    "UnormInt101010": 6,
+                    "SignedInt8": 7,
+                    "SignedInt16": 8,
+                    "SignedInt32": 9,
+                    "UnsignedInt8": 10,
+                    "UnsignedInt16": 11,
+                    "UnsignedInt32": 12,
+                    "HalfFloat": 13,
+                    "Float": 14,
+                    "UnormInt24": 15,
+                    "UnormInt101010_2": 16
+                }
+            },
+            {
+                "Name": "ImageOperands",
+                "Type": "Bit",
+                "Values":
+                {
+                    "Bias": 0,
+                    "Lod": 1,
+                    "Grad": 2,
+                    "ConstOffset": 3,
+                    "Offset": 4,
+                    "ConstOffsets": 5,
+                    "Sample": 6,
+                    "MinLod": 7
+                }
+            },
+            {
+                "Name": "FPFastMathMode",
+                "Type": "Bit",
+                "Values":
+                {
+                    "NotNaN": 0,
+                    "NotInf": 1,
+                    "NSZ": 2,
+                    "AllowRecip": 3,
+                    "Fast": 4
+                }
+            },
+            {
+                "Name": "FPRoundingMode",
+                "Type": "Value",
+                "Values":
+                {
+                    "RTE": 0,
+                    "RTZ": 1,
+                    "RTP": 2,
+                    "RTN": 3
+                }
+            },
+            {
+                "Name": "LinkageType",
+                "Type": "Value",
+                "Values":
+                {
+                    "Export": 0,
+                    "Import": 1
+                }
+            },
+            {
+                "Name": "AccessQualifier",
+                "Type": "Value",
+                "Values":
+                {
+                    "ReadOnly": 0,
+                    "WriteOnly": 1,
+                    "ReadWrite": 2
+                }
+            },
+            {
+                "Name": "FunctionParameterAttribute",
+                "Type": "Value",
+                "Values":
+                {
+                    "Zext": 0,
+                    "Sext": 1,
+                    "ByVal": 2,
+                    "Sret": 3,
+                    "NoAlias": 4,
+                    "NoCapture": 5,
+                    "NoWrite": 6,
+                    "NoReadWrite": 7
+                }
+            },
+            {
+                "Name": "Decoration",
+                "Type": "Value",
+                "Values":
+                {
+                    "RelaxedPrecision": 0,
+                    "SpecId": 1,
+                    "Block": 2,
+                    "BufferBlock": 3,
+                    "RowMajor": 4,
+                    "ColMajor": 5,
+                    "ArrayStride": 6,
+                    "MatrixStride": 7,
+                    "GLSLShared": 8,
+                    "GLSLPacked": 9,
+                    "CPacked": 10,
+                    "BuiltIn": 11,
+                    "NoPerspective": 13,
+                    "Flat": 14,
+                    "Patch": 15,
+                    "Centroid": 16,
+                    "Sample": 17,
+                    "Invariant": 18,
+                    "Restrict": 19,
+                    "Aliased": 20,
+                    "Volatile": 21,
+                    "Constant": 22,
+                    "Coherent": 23,
+                    "NonWritable": 24,
+                    "NonReadable": 25,
+                    "Uniform": 26,
+                    "SaturatedConversion": 28,
+                    "Stream": 29,
+                    "Location": 30,
+                    "Component": 31,
+                    "Index": 32,
+                    "Binding": 33,
+                    "DescriptorSet": 34,
+                    "Offset": 35,
+                    "XfbBuffer": 36,
+                    "XfbStride": 37,
+                    "FuncParamAttr": 38,
+                    "FPRoundingMode": 39,
+                    "FPFastMathMode": 40,
+                    "LinkageAttributes": 41,
+                    "NoContraction": 42,
+                    "InputAttachmentIndex": 43,
+                    "Alignment": 44,
+                    "MaxByteOffset": 45,
+                    "AlignmentId": 46,
+                    "MaxByteOffsetId": 47,
+                    "ExplicitInterpAMD": 4999,
+                    "OverrideCoverageNV": 5248,
+                    "PassthroughNV": 5250,
+                    "ViewportRelativeNV": 5252,
+                    "SecondaryViewportRelativeNV": 5256,
+                    "HlslCounterBufferGOOGLE": 5634,
+                    "HlslSemanticGOOGLE": 5635
+                }
+            },
+            {
+                "Name": "BuiltIn",
+                "Type": "Value",
+                "Values":
+                {
+                    "Position": 0,
+                    "PointSize": 1,
+                    "ClipDistance": 3,
+                    "CullDistance": 4,
+                    "VertexId": 5,
+                    "InstanceId": 6,
+                    "PrimitiveId": 7,
+                    "InvocationId": 8,
+                    "Layer": 9,
+                    "ViewportIndex": 10,
+                    "TessLevelOuter": 11,
+                    "TessLevelInner": 12,
+                    "TessCoord": 13,
+                    "PatchVertices": 14,
+                    "FragCoord": 15,
+                    "PointCoord": 16,
+                    "FrontFacing": 17,
+                    "SampleId": 18,
+                    "SamplePosition": 19,
+                    "SampleMask": 20,
+                    "FragDepth": 22,
+                    "HelperInvocation": 23,
+                    "NumWorkgroups": 24,
+                    "WorkgroupSize": 25,
+                    "WorkgroupId": 26,
+                    "LocalInvocationId": 27,
+                    "GlobalInvocationId": 28,
+                    "LocalInvocationIndex": 29,
+                    "WorkDim": 30,
+                    "GlobalSize": 31,
+                    "EnqueuedWorkgroupSize": 32,
+                    "GlobalOffset": 33,
+                    "GlobalLinearId": 34,
+                    "SubgroupSize": 36,
+                    "SubgroupMaxSize": 37,
+                    "NumSubgroups": 38,
+                    "NumEnqueuedSubgroups": 39,
+                    "SubgroupId": 40,
+                    "SubgroupLocalInvocationId": 41,
+                    "VertexIndex": 42,
+                    "InstanceIndex": 43,
+                    "SubgroupEqMaskKHR": 4416,
+                    "SubgroupGeMaskKHR": 4417,
+                    "SubgroupGtMaskKHR": 4418,
+                    "SubgroupLeMaskKHR": 4419,
+                    "SubgroupLtMaskKHR": 4420,
+                    "BaseVertex": 4424,
+                    "BaseInstance": 4425,
+                    "DrawIndex": 4426,
+                    "DeviceIndex": 4438,
+                    "ViewIndex": 4440,
+                    "BaryCoordNoPerspAMD": 4992,
+                    "BaryCoordNoPerspCentroidAMD": 4993,
+                    "BaryCoordNoPerspSampleAMD": 4994,
+                    "BaryCoordSmoothAMD": 4995,
+                    "BaryCoordSmoothCentroidAMD": 4996,
+                    "BaryCoordSmoothSampleAMD": 4997,
+                    "BaryCoordPullModelAMD": 4998,
+                    "FragStencilRefEXT": 5014,
+                    "ViewportMaskNV": 5253,
+                    "SecondaryPositionNV": 5257,
+                    "SecondaryViewportMaskNV": 5258,
+                    "PositionPerViewNV": 5261,
+                    "ViewportMaskPerViewNV": 5262
+                }
+            },
+            {
+                "Name": "SelectionControl",
+                "Type": "Bit",
+                "Values":
+                {
+                    "Flatten": 0,
+                    "DontFlatten": 1
+                }
+            },
+            {
+                "Name": "LoopControl",
+                "Type": "Bit",
+                "Values":
+                {
+                    "Unroll": 0,
+                    "DontUnroll": 1,
+                    "DependencyInfinite": 2,
+                    "DependencyLength": 3
+                }
+            },
+            {
+                "Name": "FunctionControl",
+                "Type": "Bit",
+                "Values":
+                {
+                    "Inline": 0,
+                    "DontInline": 1,
+                    "Pure": 2,
+                    "Const": 3
+                }
+            },
+            {
+                "Name": "MemorySemantics",
+                "Type": "Bit",
+                "Values":
+                {
+                    "Acquire": 1,
+                    "Release": 2,
+                    "AcquireRelease": 3,
+                    "SequentiallyConsistent": 4,
+                    "UniformMemory": 6,
+                    "SubgroupMemory": 7,
+                    "WorkgroupMemory": 8,
+                    "CrossWorkgroupMemory": 9,
+                    "AtomicCounterMemory": 10,
+                    "ImageMemory": 11
+                }
+            },
+            {
+                "Name": "MemoryAccess",
+                "Type": "Bit",
+                "Values":
+                {
+                    "Volatile": 0,
+                    "Aligned": 1,
+                    "Nontemporal": 2
+                }
+            },
+            {
+                "Name": "Scope",
+                "Type": "Value",
+                "Values":
+                {
+                    "CrossDevice": 0,
+                    "Device": 1,
+                    "Workgroup": 2,
+                    "Subgroup": 3,
+                    "Invocation": 4
+                }
+            },
+            {
+                "Name": "GroupOperation",
+                "Type": "Value",
+                "Values":
+                {
+                    "Reduce": 0,
+                    "InclusiveScan": 1,
+                    "ExclusiveScan": 2
+                }
+            },
+            {
+                "Name": "KernelEnqueueFlags",
+                "Type": "Value",
+                "Values":
+                {
+                    "NoWait": 0,
+                    "WaitKernel": 1,
+                    "WaitWorkGroup": 2
+                }
+            },
+            {
+                "Name": "KernelProfilingInfo",
+                "Type": "Bit",
+                "Values":
+                {
+                    "CmdExecTime": 0
+                }
+            },
+            {
+                "Name": "Capability",
+                "Type": "Value",
+                "Values":
+                {
+                    "Matrix": 0,
+                    "Shader": 1,
+                    "Geometry": 2,
+                    "Tessellation": 3,
+                    "Addresses": 4,
+                    "Linkage": 5,
+                    "Kernel": 6,
+                    "Vector16": 7,
+                    "Float16Buffer": 8,
+                    "Float16": 9,
+                    "Float64": 10,
+                    "Int64": 11,
+                    "Int64Atomics": 12,
+                    "ImageBasic": 13,
+                    "ImageReadWrite": 14,
+                    "ImageMipmap": 15,
+                    "Pipes": 17,
+                    "Groups": 18,
+                    "DeviceEnqueue": 19,
+                    "LiteralSampler": 20,
+                    "AtomicStorage": 21,
+                    "Int16": 22,
+                    "TessellationPointSize": 23,
+                    "GeometryPointSize": 24,
+                    "ImageGatherExtended": 25,
+                    "StorageImageMultisample": 27,
+                    "UniformBufferArrayDynamicIndexing": 28,
+                    "SampledImageArrayDynamicIndexing": 29,
+                    "StorageBufferArrayDynamicIndexing": 30,
+                    "StorageImageArrayDynamicIndexing": 31,
+                    "ClipDistance": 32,
+                    "CullDistance": 33,
+                    "ImageCubeArray": 34,
+                    "SampleRateShading": 35,
+                    "ImageRect": 36,
+                    "SampledRect": 37,
+                    "GenericPointer": 38,
+                    "Int8": 39,
+                    "InputAttachment": 40,
+                    "SparseResidency": 41,
+                    "MinLod": 42,
+                    "Sampled1D": 43,
+                    "Image1D": 44,
+                    "SampledCubeArray": 45,
+                    "SampledBuffer": 46,
+                    "ImageBuffer": 47,
+                    "ImageMSArray": 48,
+                    "StorageImageExtendedFormats": 49,
+                    "ImageQuery": 50,
+                    "DerivativeControl": 51,
+                    "InterpolationFunction": 52,
+                    "TransformFeedback": 53,
+                    "GeometryStreams": 54,
+                    "StorageImageReadWithoutFormat": 55,
+                    "StorageImageWriteWithoutFormat": 56,
+                    "MultiViewport": 57,
+                    "SubgroupDispatch": 58,
+                    "NamedBarrier": 59,
+                    "PipeStorage": 60,
+                    "SubgroupBallotKHR": 4423,
+                    "DrawParameters": 4427,
+                    "SubgroupVoteKHR": 4431,
+                    "StorageBuffer16BitAccess": 4433,
+                    "StorageUniformBufferBlock16": 4433,
+                    "StorageUniform16": 4434,
+                    "UniformAndStorageBuffer16BitAccess": 4434,
+                    "StoragePushConstant16": 4435,
+                    "StorageInputOutput16": 4436,
+                    "DeviceGroup": 4437,
+                    "MultiView": 4439,
+                    "VariablePointersStorageBuffer": 4441,
+                    "VariablePointers": 4442,
+                    "AtomicStorageOps": 4445,
+                    "SampleMaskPostDepthCoverage": 4447,
+                    "ImageGatherBiasLodAMD": 5009,
+                    "FragmentMaskAMD": 5010,
+                    "StencilExportEXT": 5013,
+                    "ImageReadWriteLodAMD": 5015,
+                    "SampleMaskOverrideCoverageNV": 5249,
+                    "GeometryShaderPassthroughNV": 5251,
+                    "ShaderViewportIndexLayerEXT": 5254,
+                    "ShaderViewportIndexLayerNV": 5254,
+                    "ShaderViewportMaskNV": 5255,
+                    "ShaderStereoViewNV": 5259,
+                    "PerViewAttributesNV": 5260,
+                    "SubgroupShuffleINTEL": 5568,
+                    "SubgroupBufferBlockIOINTEL": 5569,
+                    "SubgroupImageBlockIOINTEL": 5570
+                }
+            },
+            {
+                "Name": "Op",
+                "Type": "Value",
+                "Values":
+                {
+                    "OpNop": 0,
+                    "OpUndef": 1,
+                    "OpSourceContinued": 2,
+                    "OpSource": 3,
+                    "OpSourceExtension": 4,
+                    "OpName": 5,
+                    "OpMemberName": 6,
+                    "OpString": 7,
+                    "OpLine": 8,
+                    "OpExtension": 10,
+                    "OpExtInstImport": 11,
+                    "OpExtInst": 12,
+                    "OpMemoryModel": 14,
+                    "OpEntryPoint": 15,
+                    "OpExecutionMode": 16,
+                    "OpCapability": 17,
+                    "OpTypeVoid": 19,
+                    "OpTypeBool": 20,
+                    "OpTypeInt": 21,
+                    "OpTypeFloat": 22,
+                    "OpTypeVector": 23,
+                    "OpTypeMatrix": 24,
+                    "OpTypeImage": 25,
+                    "OpTypeSampler": 26,
+                    "OpTypeSampledImage": 27,
+                    "OpTypeArray": 28,
+                    "OpTypeRuntimeArray": 29,
+                    "OpTypeStruct": 30,
+                    "OpTypeOpaque": 31,
+                    "OpTypePointer": 32,
+                    "OpTypeFunction": 33,
+                    "OpTypeEvent": 34,
+                    "OpTypeDeviceEvent": 35,
+                    "OpTypeReserveId": 36,
+                    "OpTypeQueue": 37,
+                    "OpTypePipe": 38,
+                    "OpTypeForwardPointer": 39,
+                    "OpConstantTrue": 41,
+                    "OpConstantFalse": 42,
+                    "OpConstant": 43,
+                    "OpConstantComposite": 44,
+                    "OpConstantSampler": 45,
+                    "OpConstantNull": 46,
+                    "OpSpecConstantTrue": 48,
+                    "OpSpecConstantFalse": 49,
+                    "OpSpecConstant": 50,
+                    "OpSpecConstantComposite": 51,
+                    "OpSpecConstantOp": 52,
+                    "OpFunction": 54,
+                    "OpFunctionParameter": 55,
+                    "OpFunctionEnd": 56,
+                    "OpFunctionCall": 57,
+                    "OpVariable": 59,
+                    "OpImageTexelPointer": 60,
+                    "OpLoad": 61,
+                    "OpStore": 62,
+                    "OpCopyMemory": 63,
+                    "OpCopyMemorySized": 64,
+                    "OpAccessChain": 65,
+                    "OpInBoundsAccessChain": 66,
+                    "OpPtrAccessChain": 67,
+                    "OpArrayLength": 68,
+                    "OpGenericPtrMemSemantics": 69,
+                    "OpInBoundsPtrAccessChain": 70,
+                    "OpDecorate": 71,
+                    "OpMemberDecorate": 72,
+                    "OpDecorationGroup": 73,
+                    "OpGroupDecorate": 74,
+                    "OpGroupMemberDecorate": 75,
+                    "OpVectorExtractDynamic": 77,
+                    "OpVectorInsertDynamic": 78,
+                    "OpVectorShuffle": 79,
+                    "OpCompositeConstruct": 80,
+                    "OpCompositeExtract": 81,
+                    "OpCompositeInsert": 82,
+                    "OpCopyObject": 83,
+                    "OpTranspose": 84,
+                    "OpSampledImage": 86,
+                    "OpImageSampleImplicitLod": 87,
+                    "OpImageSampleExplicitLod": 88,
+                    "OpImageSampleDrefImplicitLod": 89,
+                    "OpImageSampleDrefExplicitLod": 90,
+                    "OpImageSampleProjImplicitLod": 91,
+                    "OpImageSampleProjExplicitLod": 92,
+                    "OpImageSampleProjDrefImplicitLod": 93,
+                    "OpImageSampleProjDrefExplicitLod": 94,
+                    "OpImageFetch": 95,
+                    "OpImageGather": 96,
+                    "OpImageDrefGather": 97,
+                    "OpImageRead": 98,
+                    "OpImageWrite": 99,
+                    "OpImage": 100,
+                    "OpImageQueryFormat": 101,
+                    "OpImageQueryOrder": 102,
+                    "OpImageQuerySizeLod": 103,
+                    "OpImageQuerySize": 104,
+                    "OpImageQueryLod": 105,
+                    "OpImageQueryLevels": 106,
+                    "OpImageQuerySamples": 107,
+                    "OpConvertFToU": 109,
+                    "OpConvertFToS": 110,
+                    "OpConvertSToF": 111,
+                    "OpConvertUToF": 112,
+                    "OpUConvert": 113,
+                    "OpSConvert": 114,
+                    "OpFConvert": 115,
+                    "OpQuantizeToF16": 116,
+                    "OpConvertPtrToU": 117,
+                    "OpSatConvertSToU": 118,
+                    "OpSatConvertUToS": 119,
+                    "OpConvertUToPtr": 120,
+                    "OpPtrCastToGeneric": 121,
+                    "OpGenericCastToPtr": 122,
+                    "OpGenericCastToPtrExplicit": 123,
+                    "OpBitcast": 124,
+                    "OpSNegate": 126,
+                    "OpFNegate": 127,
+                    "OpIAdd": 128,
+                    "OpFAdd": 129,
+                    "OpISub": 130,
+                    "OpFSub": 131,
+                    "OpIMul": 132,
+                    "OpFMul": 133,
+                    "OpUDiv": 134,
+                    "OpSDiv": 135,
+                    "OpFDiv": 136,
+                    "OpUMod": 137,
+                    "OpSRem": 138,
+                    "OpSMod": 139,
+                    "OpFRem": 140,
+                    "OpFMod": 141,
+                    "OpVectorTimesScalar": 142,
+                    "OpMatrixTimesScalar": 143,
+                    "OpVectorTimesMatrix": 144,
+                    "OpMatrixTimesVector": 145,
+                    "OpMatrixTimesMatrix": 146,
+                    "OpOuterProduct": 147,
+                    "OpDot": 148,
+                    "OpIAddCarry": 149,
+                    "OpISubBorrow": 150,
+                    "OpUMulExtended": 151,
+                    "OpSMulExtended": 152,
+                    "OpAny": 154,
+                    "OpAll": 155,
+                    "OpIsNan": 156,
+                    "OpIsInf": 157,
+                    "OpIsFinite": 158,
+                    "OpIsNormal": 159,
+                    "OpSignBitSet": 160,
+                    "OpLessOrGreater": 161,
+                    "OpOrdered": 162,
+                    "OpUnordered": 163,
+                    "OpLogicalEqual": 164,
+                    "OpLogicalNotEqual": 165,
+                    "OpLogicalOr": 166,
+                    "OpLogicalAnd": 167,
+                    "OpLogicalNot": 168,
+                    "OpSelect": 169,
+                    "OpIEqual": 170,
+                    "OpINotEqual": 171,
+                    "OpUGreaterThan": 172,
+                    "OpSGreaterThan": 173,
+                    "OpUGreaterThanEqual": 174,
+                    "OpSGreaterThanEqual": 175,
+                    "OpULessThan": 176,
+                    "OpSLessThan": 177,
+                    "OpULessThanEqual": 178,
+                    "OpSLessThanEqual": 179,
+                    "OpFOrdEqual": 180,
+                    "OpFUnordEqual": 181,
+                    "OpFOrdNotEqual": 182,
+                    "OpFUnordNotEqual": 183,
+                    "OpFOrdLessThan": 184,
+                    "OpFUnordLessThan": 185,
+                    "OpFOrdGreaterThan": 186,
+                    "OpFUnordGreaterThan": 187,
+                    "OpFOrdLessThanEqual": 188,
+                    "OpFUnordLessThanEqual": 189,
+                    "OpFOrdGreaterThanEqual": 190,
+                    "OpFUnordGreaterThanEqual": 191,
+                    "OpShiftRightLogical": 194,
+                    "OpShiftRightArithmetic": 195,
+                    "OpShiftLeftLogical": 196,
+                    "OpBitwiseOr": 197,
+                    "OpBitwiseXor": 198,
+                    "OpBitwiseAnd": 199,
+                    "OpNot": 200,
+                    "OpBitFieldInsert": 201,
+                    "OpBitFieldSExtract": 202,
+                    "OpBitFieldUExtract": 203,
+                    "OpBitReverse": 204,
+                    "OpBitCount": 205,
+                    "OpDPdx": 207,
+                    "OpDPdy": 208,
+                    "OpFwidth": 209,
+                    "OpDPdxFine": 210,
+                    "OpDPdyFine": 211,
+                    "OpFwidthFine": 212,
+                    "OpDPdxCoarse": 213,
+                    "OpDPdyCoarse": 214,
+                    "OpFwidthCoarse": 215,
+                    "OpEmitVertex": 218,
+                    "OpEndPrimitive": 219,
+                    "OpEmitStreamVertex": 220,
+                    "OpEndStreamPrimitive": 221,
+                    "OpControlBarrier": 224,
+                    "OpMemoryBarrier": 225,
+                    "OpAtomicLoad": 227,
+                    "OpAtomicStore": 228,
+                    "OpAtomicExchange": 229,
+                    "OpAtomicCompareExchange": 230,
+                    "OpAtomicCompareExchangeWeak": 231,
+                    "OpAtomicIIncrement": 232,
+                    "OpAtomicIDecrement": 233,
+                    "OpAtomicIAdd": 234,
+                    "OpAtomicISub": 235,
+                    "OpAtomicSMin": 236,
+                    "OpAtomicUMin": 237,
+                    "OpAtomicSMax": 238,
+                    "OpAtomicUMax": 239,
+                    "OpAtomicAnd": 240,
+                    "OpAtomicOr": 241,
+                    "OpAtomicXor": 242,
+                    "OpPhi": 245,
+                    "OpLoopMerge": 246,
+                    "OpSelectionMerge": 247,
+                    "OpLabel": 248,
+                    "OpBranch": 249,
+                    "OpBranchConditional": 250,
+                    "OpSwitch": 251,
+                    "OpKill": 252,
+                    "OpReturn": 253,
+                    "OpReturnValue": 254,
+                    "OpUnreachable": 255,
+                    "OpLifetimeStart": 256,
+                    "OpLifetimeStop": 257,
+                    "OpGroupAsyncCopy": 259,
+                    "OpGroupWaitEvents": 260,
+                    "OpGroupAll": 261,
+                    "OpGroupAny": 262,
+                    "OpGroupBroadcast": 263,
+                    "OpGroupIAdd": 264,
+                    "OpGroupFAdd": 265,
+                    "OpGroupFMin": 266,
+                    "OpGroupUMin": 267,
+                    "OpGroupSMin": 268,
+                    "OpGroupFMax": 269,
+                    "OpGroupUMax": 270,
+                    "OpGroupSMax": 271,
+                    "OpReadPipe": 274,
+                    "OpWritePipe": 275,
+                    "OpReservedReadPipe": 276,
+                    "OpReservedWritePipe": 277,
+                    "OpReserveReadPipePackets": 278,
+                    "OpReserveWritePipePackets": 279,
+                    "OpCommitReadPipe": 280,
+                    "OpCommitWritePipe": 281,
+                    "OpIsValidReserveId": 282,
+                    "OpGetNumPipePackets": 283,
+                    "OpGetMaxPipePackets": 284,
+                    "OpGroupReserveReadPipePackets": 285,
+                    "OpGroupReserveWritePipePackets": 286,
+                    "OpGroupCommitReadPipe": 287,
+                    "OpGroupCommitWritePipe": 288,
+                    "OpEnqueueMarker": 291,
+                    "OpEnqueueKernel": 292,
+                    "OpGetKernelNDrangeSubGroupCount": 293,
+                    "OpGetKernelNDrangeMaxSubGroupSize": 294,
+                    "OpGetKernelWorkGroupSize": 295,
+                    "OpGetKernelPreferredWorkGroupSizeMultiple": 296,
+                    "OpRetainEvent": 297,
+                    "OpReleaseEvent": 298,
+                    "OpCreateUserEvent": 299,
+                    "OpIsValidEvent": 300,
+                    "OpSetUserEventStatus": 301,
+                    "OpCaptureEventProfilingInfo": 302,
+                    "OpGetDefaultQueue": 303,
+                    "OpBuildNDRange": 304,
+                    "OpImageSparseSampleImplicitLod": 305,
+                    "OpImageSparseSampleExplicitLod": 306,
+                    "OpImageSparseSampleDrefImplicitLod": 307,
+                    "OpImageSparseSampleDrefExplicitLod": 308,
+                    "OpImageSparseSampleProjImplicitLod": 309,
+                    "OpImageSparseSampleProjExplicitLod": 310,
+                    "OpImageSparseSampleProjDrefImplicitLod": 311,
+                    "OpImageSparseSampleProjDrefExplicitLod": 312,
+                    "OpImageSparseFetch": 313,
+                    "OpImageSparseGather": 314,
+                    "OpImageSparseDrefGather": 315,
+                    "OpImageSparseTexelsResident": 316,
+                    "OpNoLine": 317,
+                    "OpAtomicFlagTestAndSet": 318,
+                    "OpAtomicFlagClear": 319,
+                    "OpImageSparseRead": 320,
+                    "OpSizeOf": 321,
+                    "OpTypePipeStorage": 322,
+                    "OpConstantPipeStorage": 323,
+                    "OpCreatePipeFromPipeStorage": 324,
+                    "OpGetKernelLocalSizeForSubgroupCount": 325,
+                    "OpGetKernelMaxNumSubgroups": 326,
+                    "OpTypeNamedBarrier": 327,
+                    "OpNamedBarrierInitialize": 328,
+                    "OpMemoryNamedBarrier": 329,
+                    "OpModuleProcessed": 330,
+                    "OpExecutionModeId": 331,
+                    "OpDecorateId": 332,
+                    "OpSubgroupBallotKHR": 4421,
+                    "OpSubgroupFirstInvocationKHR": 4422,
+                    "OpSubgroupAllKHR": 4428,
+                    "OpSubgroupAnyKHR": 4429,
+                    "OpSubgroupAllEqualKHR": 4430,
+                    "OpSubgroupReadInvocationKHR": 4432,
+                    "OpGroupIAddNonUniformAMD": 5000,
+                    "OpGroupFAddNonUniformAMD": 5001,
+                    "OpGroupFMinNonUniformAMD": 5002,
+                    "OpGroupUMinNonUniformAMD": 5003,
+                    "OpGroupSMinNonUniformAMD": 5004,
+                    "OpGroupFMaxNonUniformAMD": 5005,
+                    "OpGroupUMaxNonUniformAMD": 5006,
+                    "OpGroupSMaxNonUniformAMD": 5007,
+                    "OpFragmentMaskFetchAMD": 5011,
+                    "OpFragmentFetchAMD": 5012,
+                    "OpSubgroupShuffleINTEL": 5571,
+                    "OpSubgroupShuffleDownINTEL": 5572,
+                    "OpSubgroupShuffleUpINTEL": 5573,
+                    "OpSubgroupShuffleXorINTEL": 5574,
+                    "OpSubgroupBlockReadINTEL": 5575,
+                    "OpSubgroupBlockWriteINTEL": 5576,
+                    "OpSubgroupImageBlockReadINTEL": 5577,
+                    "OpSubgroupImageBlockWriteINTEL": 5578,
+                    "OpDecorateStringGOOGLE": 5632,
+                    "OpMemberDecorateStringGOOGLE": 5633
+                }
+            }
+        ]
+    }
+}
+
diff --git a/libs/spirv-headers/spirv/1.2/spirv.lua b/libs/spirv-headers/spirv/1.2/spirv.lua
new file mode 100644
index 00000000000..0de507d5c91
--- /dev/null
+++ b/libs/spirv-headers/spirv/1.2/spirv.lua
@@ -0,0 +1,977 @@
+-- Copyright (c) 2014-2018 The Khronos Group Inc.
+-- 
+-- Permission is hereby granted, free of charge, to any person obtaining a copy
+-- of this software and/or associated documentation files (the "Materials"),
+-- to deal in the Materials without restriction, including without limitation
+-- the rights to use, copy, modify, merge, publish, distribute, sublicense,
+-- and/or sell copies of the Materials, and to permit persons to whom the
+-- Materials are furnished to do so, subject to the following conditions:
+-- 
+-- The above copyright notice and this permission notice shall be included in
+-- all copies or substantial portions of the Materials.
+-- 
+-- MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS KHRONOS
+-- STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS SPECIFICATIONS AND
+-- HEADER INFORMATION ARE LOCATED AT https://www.khronos.org/registry/ 
+-- 
+-- THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+-- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+-- THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+-- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+-- FROM,OUT OF OR IN CONNECTION WITH THE MATERIALS OR THE USE OR OTHER DEALINGS
+-- IN THE MATERIALS.
+
+-- This header is automatically generated by the same tool that creates
+-- the Binary Section of the SPIR-V specification.
+
+-- Enumeration tokens for SPIR-V, in various styles:
+--   C, C++, C++11, JSON, Lua, Python
+-- 
+-- - C will have tokens with a "Spv" prefix, e.g.: SpvSourceLanguageGLSL
+-- - C++ will have tokens in the "spv" name space, e.g.: spv::SourceLanguageGLSL
+-- - C++11 will use enum classes in the spv namespace, e.g.: spv::SourceLanguage::GLSL
+-- - Lua will use tables, e.g.: spv.SourceLanguage.GLSL
+-- - Python will use dictionaries, e.g.: spv['SourceLanguage']['GLSL']
+-- 
+-- Some tokens act like mask values, which can be OR'd together,
+-- while others are mutually exclusive.  The mask-like ones have
+-- "Mask" in their name, and a parallel enum that has the shift
+-- amount (1 << x) for each corresponding enumerant.
+
+spv = {
+    MagicNumber = 0x07230203,
+    Version = 0x00010200,
+    Revision = 2,
+    OpCodeMask = 0xffff,
+    WordCountShift = 16,
+
+    SourceLanguage = {
+        Unknown = 0,
+        ESSL = 1,
+        GLSL = 2,
+        OpenCL_C = 3,
+        OpenCL_CPP = 4,
+        HLSL = 5,
+    },
+
+    ExecutionModel = {
+        Vertex = 0,
+        TessellationControl = 1,
+        TessellationEvaluation = 2,
+        Geometry = 3,
+        Fragment = 4,
+        GLCompute = 5,
+        Kernel = 6,
+    },
+
+    AddressingModel = {
+        Logical = 0,
+        Physical32 = 1,
+        Physical64 = 2,
+    },
+
+    MemoryModel = {
+        Simple = 0,
+        GLSL450 = 1,
+        OpenCL = 2,
+    },
+
+    ExecutionMode = {
+        Invocations = 0,
+        SpacingEqual = 1,
+        SpacingFractionalEven = 2,
+        SpacingFractionalOdd = 3,
+        VertexOrderCw = 4,
+        VertexOrderCcw = 5,
+        PixelCenterInteger = 6,
+        OriginUpperLeft = 7,
+        OriginLowerLeft = 8,
+        EarlyFragmentTests = 9,
+        PointMode = 10,
+        Xfb = 11,
+        DepthReplacing = 12,
+        DepthGreater = 14,
+        DepthLess = 15,
+        DepthUnchanged = 16,
+        LocalSize = 17,
+        LocalSizeHint = 18,
+        InputPoints = 19,
+        InputLines = 20,
+        InputLinesAdjacency = 21,
+        Triangles = 22,
+        InputTrianglesAdjacency = 23,
+        Quads = 24,
+        Isolines = 25,
+        OutputVertices = 26,
+        OutputPoints = 27,
+        OutputLineStrip = 28,
+        OutputTriangleStrip = 29,
+        VecTypeHint = 30,
+        ContractionOff = 31,
+        Initializer = 33,
+        Finalizer = 34,
+        SubgroupSize = 35,
+        SubgroupsPerWorkgroup = 36,
+        SubgroupsPerWorkgroupId = 37,
+        LocalSizeId = 38,
+        LocalSizeHintId = 39,
+        PostDepthCoverage = 4446,
+        StencilRefReplacingEXT = 5027,
+    },
+
+    StorageClass = {
+        UniformConstant = 0,
+        Input = 1,
+        Uniform = 2,
+        Output = 3,
+        Workgroup = 4,
+        CrossWorkgroup = 5,
+        Private = 6,
+        Function = 7,
+        Generic = 8,
+        PushConstant = 9,
+        AtomicCounter = 10,
+        Image = 11,
+        StorageBuffer = 12,
+    },
+
+    Dim = {
+        Dim1D = 0,
+        Dim2D = 1,
+        Dim3D = 2,
+        Cube = 3,
+        Rect = 4,
+        Buffer = 5,
+        SubpassData = 6,
+    },
+
+    SamplerAddressingMode = {
+        None = 0,
+        ClampToEdge = 1,
+        Clamp = 2,
+        Repeat = 3,
+        RepeatMirrored = 4,
+    },
+
+    SamplerFilterMode = {
+        Nearest = 0,
+        Linear = 1,
+    },
+
+    ImageFormat = {
+        Unknown = 0,
+        Rgba32f = 1,
+        Rgba16f = 2,
+        R32f = 3,
+        Rgba8 = 4,
+        Rgba8Snorm = 5,
+        Rg32f = 6,
+        Rg16f = 7,
+        R11fG11fB10f = 8,
+        R16f = 9,
+        Rgba16 = 10,
+        Rgb10A2 = 11,
+        Rg16 = 12,
+        Rg8 = 13,
+        R16 = 14,
+        R8 = 15,
+        Rgba16Snorm = 16,
+        Rg16Snorm = 17,
+        Rg8Snorm = 18,
+        R16Snorm = 19,
+        R8Snorm = 20,
+        Rgba32i = 21,
+        Rgba16i = 22,
+        Rgba8i = 23,
+        R32i = 24,
+        Rg32i = 25,
+        Rg16i = 26,
+        Rg8i = 27,
+        R16i = 28,
+        R8i = 29,
+        Rgba32ui = 30,
+        Rgba16ui = 31,
+        Rgba8ui = 32,
+        R32ui = 33,
+        Rgb10a2ui = 34,
+        Rg32ui = 35,
+        Rg16ui = 36,
+        Rg8ui = 37,
+        R16ui = 38,
+        R8ui = 39,
+    },
+
+    ImageChannelOrder = {
+        R = 0,
+        A = 1,
+        RG = 2,
+        RA = 3,
+        RGB = 4,
+        RGBA = 5,
+        BGRA = 6,
+        ARGB = 7,
+        Intensity = 8,
+        Luminance = 9,
+        Rx = 10,
+        RGx = 11,
+        RGBx = 12,
+        Depth = 13,
+        DepthStencil = 14,
+        sRGB = 15,
+        sRGBx = 16,
+        sRGBA = 17,
+        sBGRA = 18,
+        ABGR = 19,
+    },
+
+    ImageChannelDataType = {
+        SnormInt8 = 0,
+        SnormInt16 = 1,
+        UnormInt8 = 2,
+        UnormInt16 = 3,
+        UnormShort565 = 4,
+        UnormShort555 = 5,
+        UnormInt101010 = 6,
+        SignedInt8 = 7,
+        SignedInt16 = 8,
+        SignedInt32 = 9,
+        UnsignedInt8 = 10,
+        UnsignedInt16 = 11,
+        UnsignedInt32 = 12,
+        HalfFloat = 13,
+        Float = 14,
+        UnormInt24 = 15,
+        UnormInt101010_2 = 16,
+    },
+
+    ImageOperandsShift = {
+        Bias = 0,
+        Lod = 1,
+        Grad = 2,
+        ConstOffset = 3,
+        Offset = 4,
+        ConstOffsets = 5,
+        Sample = 6,
+        MinLod = 7,
+    },
+
+    ImageOperandsMask = {
+        MaskNone = 0,
+        Bias = 0x00000001,
+        Lod = 0x00000002,
+        Grad = 0x00000004,
+        ConstOffset = 0x00000008,
+        Offset = 0x00000010,
+        ConstOffsets = 0x00000020,
+        Sample = 0x00000040,
+        MinLod = 0x00000080,
+    },
+
+    FPFastMathModeShift = {
+        NotNaN = 0,
+        NotInf = 1,
+        NSZ = 2,
+        AllowRecip = 3,
+        Fast = 4,
+    },
+
+    FPFastMathModeMask = {
+        MaskNone = 0,
+        NotNaN = 0x00000001,
+        NotInf = 0x00000002,
+        NSZ = 0x00000004,
+        AllowRecip = 0x00000008,
+        Fast = 0x00000010,
+    },
+
+    FPRoundingMode = {
+        RTE = 0,
+        RTZ = 1,
+        RTP = 2,
+        RTN = 3,
+    },
+
+    LinkageType = {
+        Export = 0,
+        Import = 1,
+    },
+
+    AccessQualifier = {
+        ReadOnly = 0,
+        WriteOnly = 1,
+        ReadWrite = 2,
+    },
+
+    FunctionParameterAttribute = {
+        Zext = 0,
+        Sext = 1,
+        ByVal = 2,
+        Sret = 3,
+        NoAlias = 4,
+        NoCapture = 5,
+        NoWrite = 6,
+        NoReadWrite = 7,
+    },
+
+    Decoration = {
+        RelaxedPrecision = 0,
+        SpecId = 1,
+        Block = 2,
+        BufferBlock = 3,
+        RowMajor = 4,
+        ColMajor = 5,
+        ArrayStride = 6,
+        MatrixStride = 7,
+        GLSLShared = 8,
+        GLSLPacked = 9,
+        CPacked = 10,
+        BuiltIn = 11,
+        NoPerspective = 13,
+        Flat = 14,
+        Patch = 15,
+        Centroid = 16,
+        Sample = 17,
+        Invariant = 18,
+        Restrict = 19,
+        Aliased = 20,
+        Volatile = 21,
+        Constant = 22,
+        Coherent = 23,
+        NonWritable = 24,
+        NonReadable = 25,
+        Uniform = 26,
+        SaturatedConversion = 28,
+        Stream = 29,
+        Location = 30,
+        Component = 31,
+        Index = 32,
+        Binding = 33,
+        DescriptorSet = 34,
+        Offset = 35,
+        XfbBuffer = 36,
+        XfbStride = 37,
+        FuncParamAttr = 38,
+        FPRoundingMode = 39,
+        FPFastMathMode = 40,
+        LinkageAttributes = 41,
+        NoContraction = 42,
+        InputAttachmentIndex = 43,
+        Alignment = 44,
+        MaxByteOffset = 45,
+        AlignmentId = 46,
+        MaxByteOffsetId = 47,
+        ExplicitInterpAMD = 4999,
+        OverrideCoverageNV = 5248,
+        PassthroughNV = 5250,
+        ViewportRelativeNV = 5252,
+        SecondaryViewportRelativeNV = 5256,
+        HlslCounterBufferGOOGLE = 5634,
+        HlslSemanticGOOGLE = 5635,
+    },
+
+    BuiltIn = {
+        Position = 0,
+        PointSize = 1,
+        ClipDistance = 3,
+        CullDistance = 4,
+        VertexId = 5,
+        InstanceId = 6,
+        PrimitiveId = 7,
+        InvocationId = 8,
+        Layer = 9,
+        ViewportIndex = 10,
+        TessLevelOuter = 11,
+        TessLevelInner = 12,
+        TessCoord = 13,
+        PatchVertices = 14,
+        FragCoord = 15,
+        PointCoord = 16,
+        FrontFacing = 17,
+        SampleId = 18,
+        SamplePosition = 19,
+        SampleMask = 20,
+        FragDepth = 22,
+        HelperInvocation = 23,
+        NumWorkgroups = 24,
+        WorkgroupSize = 25,
+        WorkgroupId = 26,
+        LocalInvocationId = 27,
+        GlobalInvocationId = 28,
+        LocalInvocationIndex = 29,
+        WorkDim = 30,
+        GlobalSize = 31,
+        EnqueuedWorkgroupSize = 32,
+        GlobalOffset = 33,
+        GlobalLinearId = 34,
+        SubgroupSize = 36,
+        SubgroupMaxSize = 37,
+        NumSubgroups = 38,
+        NumEnqueuedSubgroups = 39,
+        SubgroupId = 40,
+        SubgroupLocalInvocationId = 41,
+        VertexIndex = 42,
+        InstanceIndex = 43,
+        SubgroupEqMaskKHR = 4416,
+        SubgroupGeMaskKHR = 4417,
+        SubgroupGtMaskKHR = 4418,
+        SubgroupLeMaskKHR = 4419,
+        SubgroupLtMaskKHR = 4420,
+        BaseVertex = 4424,
+        BaseInstance = 4425,
+        DrawIndex = 4426,
+        DeviceIndex = 4438,
+        ViewIndex = 4440,
+        BaryCoordNoPerspAMD = 4992,
+        BaryCoordNoPerspCentroidAMD = 4993,
+        BaryCoordNoPerspSampleAMD = 4994,
+        BaryCoordSmoothAMD = 4995,
+        BaryCoordSmoothCentroidAMD = 4996,
+        BaryCoordSmoothSampleAMD = 4997,
+        BaryCoordPullModelAMD = 4998,
+        FragStencilRefEXT = 5014,
+        ViewportMaskNV = 5253,
+        SecondaryPositionNV = 5257,
+        SecondaryViewportMaskNV = 5258,
+        PositionPerViewNV = 5261,
+        ViewportMaskPerViewNV = 5262,
+    },
+
+    SelectionControlShift = {
+        Flatten = 0,
+        DontFlatten = 1,
+    },
+
+    SelectionControlMask = {
+        MaskNone = 0,
+        Flatten = 0x00000001,
+        DontFlatten = 0x00000002,
+    },
+
+    LoopControlShift = {
+        Unroll = 0,
+        DontUnroll = 1,
+        DependencyInfinite = 2,
+        DependencyLength = 3,
+    },
+
+    LoopControlMask = {
+        MaskNone = 0,
+        Unroll = 0x00000001,
+        DontUnroll = 0x00000002,
+        DependencyInfinite = 0x00000004,
+        DependencyLength = 0x00000008,
+    },
+
+    FunctionControlShift = {
+        Inline = 0,
+        DontInline = 1,
+        Pure = 2,
+        Const = 3,
+    },
+
+    FunctionControlMask = {
+        MaskNone = 0,
+        Inline = 0x00000001,
+        DontInline = 0x00000002,
+        Pure = 0x00000004,
+        Const = 0x00000008,
+    },
+
+    MemorySemanticsShift = {
+        Acquire = 1,
+        Release = 2,
+        AcquireRelease = 3,
+        SequentiallyConsistent = 4,
+        UniformMemory = 6,
+        SubgroupMemory = 7,
+        WorkgroupMemory = 8,
+        CrossWorkgroupMemory = 9,
+        AtomicCounterMemory = 10,
+        ImageMemory = 11,
+    },
+
+    MemorySemanticsMask = {
+        MaskNone = 0,
+        Acquire = 0x00000002,
+        Release = 0x00000004,
+        AcquireRelease = 0x00000008,
+        SequentiallyConsistent = 0x00000010,
+        UniformMemory = 0x00000040,
+        SubgroupMemory = 0x00000080,
+        WorkgroupMemory = 0x00000100,
+        CrossWorkgroupMemory = 0x00000200,
+        AtomicCounterMemory = 0x00000400,
+        ImageMemory = 0x00000800,
+    },
+
+    MemoryAccessShift = {
+        Volatile = 0,
+        Aligned = 1,
+        Nontemporal = 2,
+    },
+
+    MemoryAccessMask = {
+        MaskNone = 0,
+        Volatile = 0x00000001,
+        Aligned = 0x00000002,
+        Nontemporal = 0x00000004,
+    },
+
+    Scope = {
+        CrossDevice = 0,
+        Device = 1,
+        Workgroup = 2,
+        Subgroup = 3,
+        Invocation = 4,
+    },
+
+    GroupOperation = {
+        Reduce = 0,
+        InclusiveScan = 1,
+        ExclusiveScan = 2,
+    },
+
+    KernelEnqueueFlags = {
+        NoWait = 0,
+        WaitKernel = 1,
+        WaitWorkGroup = 2,
+    },
+
+    KernelProfilingInfoShift = {
+        CmdExecTime = 0,
+    },
+
+    KernelProfilingInfoMask = {
+        MaskNone = 0,
+        CmdExecTime = 0x00000001,
+    },
+
+    Capability = {
+        Matrix = 0,
+        Shader = 1,
+        Geometry = 2,
+        Tessellation = 3,
+        Addresses = 4,
+        Linkage = 5,
+        Kernel = 6,
+        Vector16 = 7,
+        Float16Buffer = 8,
+        Float16 = 9,
+        Float64 = 10,
+        Int64 = 11,
+        Int64Atomics = 12,
+        ImageBasic = 13,
+        ImageReadWrite = 14,
+        ImageMipmap = 15,
+        Pipes = 17,
+        Groups = 18,
+        DeviceEnqueue = 19,
+        LiteralSampler = 20,
+        AtomicStorage = 21,
+        Int16 = 22,
+        TessellationPointSize = 23,
+        GeometryPointSize = 24,
+        ImageGatherExtended = 25,
+        StorageImageMultisample = 27,
+        UniformBufferArrayDynamicIndexing = 28,
+        SampledImageArrayDynamicIndexing = 29,
+        StorageBufferArrayDynamicIndexing = 30,
+        StorageImageArrayDynamicIndexing = 31,
+        ClipDistance = 32,
+        CullDistance = 33,
+        ImageCubeArray = 34,
+        SampleRateShading = 35,
+        ImageRect = 36,
+        SampledRect = 37,
+        GenericPointer = 38,
+        Int8 = 39,
+        InputAttachment = 40,
+        SparseResidency = 41,
+        MinLod = 42,
+        Sampled1D = 43,
+        Image1D = 44,
+        SampledCubeArray = 45,
+        SampledBuffer = 46,
+        ImageBuffer = 47,
+        ImageMSArray = 48,
+        StorageImageExtendedFormats = 49,
+        ImageQuery = 50,
+        DerivativeControl = 51,
+        InterpolationFunction = 52,
+        TransformFeedback = 53,
+        GeometryStreams = 54,
+        StorageImageReadWithoutFormat = 55,
+        StorageImageWriteWithoutFormat = 56,
+        MultiViewport = 57,
+        SubgroupDispatch = 58,
+        NamedBarrier = 59,
+        PipeStorage = 60,
+        SubgroupBallotKHR = 4423,
+        DrawParameters = 4427,
+        SubgroupVoteKHR = 4431,
+        StorageBuffer16BitAccess = 4433,
+        StorageUniformBufferBlock16 = 4433,
+        StorageUniform16 = 4434,
+        UniformAndStorageBuffer16BitAccess = 4434,
+        StoragePushConstant16 = 4435,
+        StorageInputOutput16 = 4436,
+        DeviceGroup = 4437,
+        MultiView = 4439,
+        VariablePointersStorageBuffer = 4441,
+        VariablePointers = 4442,
+        AtomicStorageOps = 4445,
+        SampleMaskPostDepthCoverage = 4447,
+        ImageGatherBiasLodAMD = 5009,
+        FragmentMaskAMD = 5010,
+        StencilExportEXT = 5013,
+        ImageReadWriteLodAMD = 5015,
+        SampleMaskOverrideCoverageNV = 5249,
+        GeometryShaderPassthroughNV = 5251,
+        ShaderViewportIndexLayerEXT = 5254,
+        ShaderViewportIndexLayerNV = 5254,
+        ShaderViewportMaskNV = 5255,
+        ShaderStereoViewNV = 5259,
+        PerViewAttributesNV = 5260,
+        SubgroupShuffleINTEL = 5568,
+        SubgroupBufferBlockIOINTEL = 5569,
+        SubgroupImageBlockIOINTEL = 5570,
+    },
+
+    Op = {
+        OpNop = 0,
+        OpUndef = 1,
+        OpSourceContinued = 2,
+        OpSource = 3,
+        OpSourceExtension = 4,
+        OpName = 5,
+        OpMemberName = 6,
+        OpString = 7,
+        OpLine = 8,
+        OpExtension = 10,
+        OpExtInstImport = 11,
+        OpExtInst = 12,
+        OpMemoryModel = 14,
+        OpEntryPoint = 15,
+        OpExecutionMode = 16,
+        OpCapability = 17,
+        OpTypeVoid = 19,
+        OpTypeBool = 20,
+        OpTypeInt = 21,
+        OpTypeFloat = 22,
+        OpTypeVector = 23,
+        OpTypeMatrix = 24,
+        OpTypeImage = 25,
+        OpTypeSampler = 26,
+        OpTypeSampledImage = 27,
+        OpTypeArray = 28,
+        OpTypeRuntimeArray = 29,
+        OpTypeStruct = 30,
+        OpTypeOpaque = 31,
+        OpTypePointer = 32,
+        OpTypeFunction = 33,
+        OpTypeEvent = 34,
+        OpTypeDeviceEvent = 35,
+        OpTypeReserveId = 36,
+        OpTypeQueue = 37,
+        OpTypePipe = 38,
+        OpTypeForwardPointer = 39,
+        OpConstantTrue = 41,
+        OpConstantFalse = 42,
+        OpConstant = 43,
+        OpConstantComposite = 44,
+        OpConstantSampler = 45,
+        OpConstantNull = 46,
+        OpSpecConstantTrue = 48,
+        OpSpecConstantFalse = 49,
+        OpSpecConstant = 50,
+        OpSpecConstantComposite = 51,
+        OpSpecConstantOp = 52,
+        OpFunction = 54,
+        OpFunctionParameter = 55,
+        OpFunctionEnd = 56,
+        OpFunctionCall = 57,
+        OpVariable = 59,
+        OpImageTexelPointer = 60,
+        OpLoad = 61,
+        OpStore = 62,
+        OpCopyMemory = 63,
+        OpCopyMemorySized = 64,
+        OpAccessChain = 65,
+        OpInBoundsAccessChain = 66,
+        OpPtrAccessChain = 67,
+        OpArrayLength = 68,
+        OpGenericPtrMemSemantics = 69,
+        OpInBoundsPtrAccessChain = 70,
+        OpDecorate = 71,
+        OpMemberDecorate = 72,
+        OpDecorationGroup = 73,
+        OpGroupDecorate = 74,
+        OpGroupMemberDecorate = 75,
+        OpVectorExtractDynamic = 77,
+        OpVectorInsertDynamic = 78,
+        OpVectorShuffle = 79,
+        OpCompositeConstruct = 80,
+        OpCompositeExtract = 81,
+        OpCompositeInsert = 82,
+        OpCopyObject = 83,
+        OpTranspose = 84,
+        OpSampledImage = 86,
+        OpImageSampleImplicitLod = 87,
+        OpImageSampleExplicitLod = 88,
+        OpImageSampleDrefImplicitLod = 89,
+        OpImageSampleDrefExplicitLod = 90,
+        OpImageSampleProjImplicitLod = 91,
+        OpImageSampleProjExplicitLod = 92,
+        OpImageSampleProjDrefImplicitLod = 93,
+        OpImageSampleProjDrefExplicitLod = 94,
+        OpImageFetch = 95,
+        OpImageGather = 96,
+        OpImageDrefGather = 97,
+        OpImageRead = 98,
+        OpImageWrite = 99,
+        OpImage = 100,
+        OpImageQueryFormat = 101,
+        OpImageQueryOrder = 102,
+        OpImageQuerySizeLod = 103,
+        OpImageQuerySize = 104,
+        OpImageQueryLod = 105,
+        OpImageQueryLevels = 106,
+        OpImageQuerySamples = 107,
+        OpConvertFToU = 109,
+        OpConvertFToS = 110,
+        OpConvertSToF = 111,
+        OpConvertUToF = 112,
+        OpUConvert = 113,
+        OpSConvert = 114,
+        OpFConvert = 115,
+        OpQuantizeToF16 = 116,
+        OpConvertPtrToU = 117,
+        OpSatConvertSToU = 118,
+        OpSatConvertUToS = 119,
+        OpConvertUToPtr = 120,
+        OpPtrCastToGeneric = 121,
+        OpGenericCastToPtr = 122,
+        OpGenericCastToPtrExplicit = 123,
+        OpBitcast = 124,
+        OpSNegate = 126,
+        OpFNegate = 127,
+        OpIAdd = 128,
+        OpFAdd = 129,
+        OpISub = 130,
+        OpFSub = 131,
+        OpIMul = 132,
+        OpFMul = 133,
+        OpUDiv = 134,
+        OpSDiv = 135,
+        OpFDiv = 136,
+        OpUMod = 137,
+        OpSRem = 138,
+        OpSMod = 139,
+        OpFRem = 140,
+        OpFMod = 141,
+        OpVectorTimesScalar = 142,
+        OpMatrixTimesScalar = 143,
+        OpVectorTimesMatrix = 144,
+        OpMatrixTimesVector = 145,
+        OpMatrixTimesMatrix = 146,
+        OpOuterProduct = 147,
+        OpDot = 148,
+        OpIAddCarry = 149,
+        OpISubBorrow = 150,
+        OpUMulExtended = 151,
+        OpSMulExtended = 152,
+        OpAny = 154,
+        OpAll = 155,
+        OpIsNan = 156,
+        OpIsInf = 157,
+        OpIsFinite = 158,
+        OpIsNormal = 159,
+        OpSignBitSet = 160,
+        OpLessOrGreater = 161,
+        OpOrdered = 162,
+        OpUnordered = 163,
+        OpLogicalEqual = 164,
+        OpLogicalNotEqual = 165,
+        OpLogicalOr = 166,
+        OpLogicalAnd = 167,
+        OpLogicalNot = 168,
+        OpSelect = 169,
+        OpIEqual = 170,
+        OpINotEqual = 171,
+        OpUGreaterThan = 172,
+        OpSGreaterThan = 173,
+        OpUGreaterThanEqual = 174,
+        OpSGreaterThanEqual = 175,
+        OpULessThan = 176,
+        OpSLessThan = 177,
+        OpULessThanEqual = 178,
+        OpSLessThanEqual = 179,
+        OpFOrdEqual = 180,
+        OpFUnordEqual = 181,
+        OpFOrdNotEqual = 182,
+        OpFUnordNotEqual = 183,
+        OpFOrdLessThan = 184,
+        OpFUnordLessThan = 185,
+        OpFOrdGreaterThan = 186,
+        OpFUnordGreaterThan = 187,
+        OpFOrdLessThanEqual = 188,
+        OpFUnordLessThanEqual = 189,
+        OpFOrdGreaterThanEqual = 190,
+        OpFUnordGreaterThanEqual = 191,
+        OpShiftRightLogical = 194,
+        OpShiftRightArithmetic = 195,
+        OpShiftLeftLogical = 196,
+        OpBitwiseOr = 197,
+        OpBitwiseXor = 198,
+        OpBitwiseAnd = 199,
+        OpNot = 200,
+        OpBitFieldInsert = 201,
+        OpBitFieldSExtract = 202,
+        OpBitFieldUExtract = 203,
+        OpBitReverse = 204,
+        OpBitCount = 205,
+        OpDPdx = 207,
+        OpDPdy = 208,
+        OpFwidth = 209,
+        OpDPdxFine = 210,
+        OpDPdyFine = 211,
+        OpFwidthFine = 212,
+        OpDPdxCoarse = 213,
+        OpDPdyCoarse = 214,
+        OpFwidthCoarse = 215,
+        OpEmitVertex = 218,
+        OpEndPrimitive = 219,
+        OpEmitStreamVertex = 220,
+        OpEndStreamPrimitive = 221,
+        OpControlBarrier = 224,
+        OpMemoryBarrier = 225,
+        OpAtomicLoad = 227,
+        OpAtomicStore = 228,
+        OpAtomicExchange = 229,
+        OpAtomicCompareExchange = 230,
+        OpAtomicCompareExchangeWeak = 231,
+        OpAtomicIIncrement = 232,
+        OpAtomicIDecrement = 233,
+        OpAtomicIAdd = 234,
+        OpAtomicISub = 235,
+        OpAtomicSMin = 236,
+        OpAtomicUMin = 237,
+        OpAtomicSMax = 238,
+        OpAtomicUMax = 239,
+        OpAtomicAnd = 240,
+        OpAtomicOr = 241,
+        OpAtomicXor = 242,
+        OpPhi = 245,
+        OpLoopMerge = 246,
+        OpSelectionMerge = 247,
+        OpLabel = 248,
+        OpBranch = 249,
+        OpBranchConditional = 250,
+        OpSwitch = 251,
+        OpKill = 252,
+        OpReturn = 253,
+        OpReturnValue = 254,
+        OpUnreachable = 255,
+        OpLifetimeStart = 256,
+        OpLifetimeStop = 257,
+        OpGroupAsyncCopy = 259,
+        OpGroupWaitEvents = 260,
+        OpGroupAll = 261,
+        OpGroupAny = 262,
+        OpGroupBroadcast = 263,
+        OpGroupIAdd = 264,
+        OpGroupFAdd = 265,
+        OpGroupFMin = 266,
+        OpGroupUMin = 267,
+        OpGroupSMin = 268,
+        OpGroupFMax = 269,
+        OpGroupUMax = 270,
+        OpGroupSMax = 271,
+        OpReadPipe = 274,
+        OpWritePipe = 275,
+        OpReservedReadPipe = 276,
+        OpReservedWritePipe = 277,
+        OpReserveReadPipePackets = 278,
+        OpReserveWritePipePackets = 279,
+        OpCommitReadPipe = 280,
+        OpCommitWritePipe = 281,
+        OpIsValidReserveId = 282,
+        OpGetNumPipePackets = 283,
+        OpGetMaxPipePackets = 284,
+        OpGroupReserveReadPipePackets = 285,
+        OpGroupReserveWritePipePackets = 286,
+        OpGroupCommitReadPipe = 287,
+        OpGroupCommitWritePipe = 288,
+        OpEnqueueMarker = 291,
+        OpEnqueueKernel = 292,
+        OpGetKernelNDrangeSubGroupCount = 293,
+        OpGetKernelNDrangeMaxSubGroupSize = 294,
+        OpGetKernelWorkGroupSize = 295,
+        OpGetKernelPreferredWorkGroupSizeMultiple = 296,
+        OpRetainEvent = 297,
+        OpReleaseEvent = 298,
+        OpCreateUserEvent = 299,
+        OpIsValidEvent = 300,
+        OpSetUserEventStatus = 301,
+        OpCaptureEventProfilingInfo = 302,
+        OpGetDefaultQueue = 303,
+        OpBuildNDRange = 304,
+        OpImageSparseSampleImplicitLod = 305,
+        OpImageSparseSampleExplicitLod = 306,
+        OpImageSparseSampleDrefImplicitLod = 307,
+        OpImageSparseSampleDrefExplicitLod = 308,
+        OpImageSparseSampleProjImplicitLod = 309,
+        OpImageSparseSampleProjExplicitLod = 310,
+        OpImageSparseSampleProjDrefImplicitLod = 311,
+        OpImageSparseSampleProjDrefExplicitLod = 312,
+        OpImageSparseFetch = 313,
+        OpImageSparseGather = 314,
+        OpImageSparseDrefGather = 315,
+        OpImageSparseTexelsResident = 316,
+        OpNoLine = 317,
+        OpAtomicFlagTestAndSet = 318,
+        OpAtomicFlagClear = 319,
+        OpImageSparseRead = 320,
+        OpSizeOf = 321,
+        OpTypePipeStorage = 322,
+        OpConstantPipeStorage = 323,
+        OpCreatePipeFromPipeStorage = 324,
+        OpGetKernelLocalSizeForSubgroupCount = 325,
+        OpGetKernelMaxNumSubgroups = 326,
+        OpTypeNamedBarrier = 327,
+        OpNamedBarrierInitialize = 328,
+        OpMemoryNamedBarrier = 329,
+        OpModuleProcessed = 330,
+        OpExecutionModeId = 331,
+        OpDecorateId = 332,
+        OpSubgroupBallotKHR = 4421,
+        OpSubgroupFirstInvocationKHR = 4422,
+        OpSubgroupAllKHR = 4428,
+        OpSubgroupAnyKHR = 4429,
+        OpSubgroupAllEqualKHR = 4430,
+        OpSubgroupReadInvocationKHR = 4432,
+        OpGroupIAddNonUniformAMD = 5000,
+        OpGroupFAddNonUniformAMD = 5001,
+        OpGroupFMinNonUniformAMD = 5002,
+        OpGroupUMinNonUniformAMD = 5003,
+        OpGroupSMinNonUniformAMD = 5004,
+        OpGroupFMaxNonUniformAMD = 5005,
+        OpGroupUMaxNonUniformAMD = 5006,
+        OpGroupSMaxNonUniformAMD = 5007,
+        OpFragmentMaskFetchAMD = 5011,
+        OpFragmentFetchAMD = 5012,
+        OpSubgroupShuffleINTEL = 5571,
+        OpSubgroupShuffleDownINTEL = 5572,
+        OpSubgroupShuffleUpINTEL = 5573,
+        OpSubgroupShuffleXorINTEL = 5574,
+        OpSubgroupBlockReadINTEL = 5575,
+        OpSubgroupBlockWriteINTEL = 5576,
+        OpSubgroupImageBlockReadINTEL = 5577,
+        OpSubgroupImageBlockWriteINTEL = 5578,
+        OpDecorateStringGOOGLE = 5632,
+        OpMemberDecorateStringGOOGLE = 5633,
+    },
+
+}
+
diff --git a/libs/spirv-headers/spirv/1.2/spirv.py b/libs/spirv-headers/spirv/1.2/spirv.py
new file mode 100644
index 00000000000..cefee4d66ac
--- /dev/null
+++ b/libs/spirv-headers/spirv/1.2/spirv.py
@@ -0,0 +1,977 @@
+# Copyright (c) 2014-2018 The Khronos Group Inc.
+# 
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and/or associated documentation files (the "Materials"),
+# to deal in the Materials without restriction, including without limitation
+# the rights to use, copy, modify, merge, publish, distribute, sublicense,
+# and/or sell copies of the Materials, and to permit persons to whom the
+# Materials are furnished to do so, subject to the following conditions:
+# 
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Materials.
+# 
+# MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS KHRONOS
+# STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS SPECIFICATIONS AND
+# HEADER INFORMATION ARE LOCATED AT https://www.khronos.org/registry/ 
+# 
+# THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+# FROM,OUT OF OR IN CONNECTION WITH THE MATERIALS OR THE USE OR OTHER DEALINGS
+# IN THE MATERIALS.
+
+# This header is automatically generated by the same tool that creates
+# the Binary Section of the SPIR-V specification.
+
+# Enumeration tokens for SPIR-V, in various styles:
+#   C, C++, C++11, JSON, Lua, Python
+# 
+# - C will have tokens with a "Spv" prefix, e.g.: SpvSourceLanguageGLSL
+# - C++ will have tokens in the "spv" name space, e.g.: spv::SourceLanguageGLSL
+# - C++11 will use enum classes in the spv namespace, e.g.: spv::SourceLanguage::GLSL
+# - Lua will use tables, e.g.: spv.SourceLanguage.GLSL
+# - Python will use dictionaries, e.g.: spv['SourceLanguage']['GLSL']
+# 
+# Some tokens act like mask values, which can be OR'd together,
+# while others are mutually exclusive.  The mask-like ones have
+# "Mask" in their name, and a parallel enum that has the shift
+# amount (1 << x) for each corresponding enumerant.
+
+spv = {
+    'MagicNumber' : 0x07230203,
+    'Version' : 0x00010200,
+    'Revision' : 2,
+    'OpCodeMask' : 0xffff,
+    'WordCountShift' : 16,
+
+    'SourceLanguage' : {
+        'Unknown' : 0,
+        'ESSL' : 1,
+        'GLSL' : 2,
+        'OpenCL_C' : 3,
+        'OpenCL_CPP' : 4,
+        'HLSL' : 5,
+    },
+
+    'ExecutionModel' : {
+        'Vertex' : 0,
+        'TessellationControl' : 1,
+        'TessellationEvaluation' : 2,
+        'Geometry' : 3,
+        'Fragment' : 4,
+        'GLCompute' : 5,
+        'Kernel' : 6,
+    },
+
+    'AddressingModel' : {
+        'Logical' : 0,
+        'Physical32' : 1,
+        'Physical64' : 2,
+    },
+
+    'MemoryModel' : {
+        'Simple' : 0,
+        'GLSL450' : 1,
+        'OpenCL' : 2,
+    },
+
+    'ExecutionMode' : {
+        'Invocations' : 0,
+        'SpacingEqual' : 1,
+        'SpacingFractionalEven' : 2,
+        'SpacingFractionalOdd' : 3,
+        'VertexOrderCw' : 4,
+        'VertexOrderCcw' : 5,
+        'PixelCenterInteger' : 6,
+        'OriginUpperLeft' : 7,
+        'OriginLowerLeft' : 8,
+        'EarlyFragmentTests' : 9,
+        'PointMode' : 10,
+        'Xfb' : 11,
+        'DepthReplacing' : 12,
+        'DepthGreater' : 14,
+        'DepthLess' : 15,
+        'DepthUnchanged' : 16,
+        'LocalSize' : 17,
+        'LocalSizeHint' : 18,
+        'InputPoints' : 19,
+        'InputLines' : 20,
+        'InputLinesAdjacency' : 21,
+        'Triangles' : 22,
+        'InputTrianglesAdjacency' : 23,
+        'Quads' : 24,
+        'Isolines' : 25,
+        'OutputVertices' : 26,
+        'OutputPoints' : 27,
+        'OutputLineStrip' : 28,
+        'OutputTriangleStrip' : 29,
+        'VecTypeHint' : 30,
+        'ContractionOff' : 31,
+        'Initializer' : 33,
+        'Finalizer' : 34,
+        'SubgroupSize' : 35,
+        'SubgroupsPerWorkgroup' : 36,
+        'SubgroupsPerWorkgroupId' : 37,
+        'LocalSizeId' : 38,
+        'LocalSizeHintId' : 39,
+        'PostDepthCoverage' : 4446,
+        'StencilRefReplacingEXT' : 5027,
+    },
+
+    'StorageClass' : {
+        'UniformConstant' : 0,
+        'Input' : 1,
+        'Uniform' : 2,
+        'Output' : 3,
+        'Workgroup' : 4,
+        'CrossWorkgroup' : 5,
+        'Private' : 6,
+        'Function' : 7,
+        'Generic' : 8,
+        'PushConstant' : 9,
+        'AtomicCounter' : 10,
+        'Image' : 11,
+        'StorageBuffer' : 12,
+    },
+
+    'Dim' : {
+        'Dim1D' : 0,
+        'Dim2D' : 1,
+        'Dim3D' : 2,
+        'Cube' : 3,
+        'Rect' : 4,
+        'Buffer' : 5,
+        'SubpassData' : 6,
+    },
+
+    'SamplerAddressingMode' : {
+        'None' : 0,
+        'ClampToEdge' : 1,
+        'Clamp' : 2,
+        'Repeat' : 3,
+        'RepeatMirrored' : 4,
+    },
+
+    'SamplerFilterMode' : {
+        'Nearest' : 0,
+        'Linear' : 1,
+    },
+
+    'ImageFormat' : {
+        'Unknown' : 0,
+        'Rgba32f' : 1,
+        'Rgba16f' : 2,
+        'R32f' : 3,
+        'Rgba8' : 4,
+        'Rgba8Snorm' : 5,
+        'Rg32f' : 6,
+        'Rg16f' : 7,
+        'R11fG11fB10f' : 8,
+        'R16f' : 9,
+        'Rgba16' : 10,
+        'Rgb10A2' : 11,
+        'Rg16' : 12,
+        'Rg8' : 13,
+        'R16' : 14,
+        'R8' : 15,
+        'Rgba16Snorm' : 16,
+        'Rg16Snorm' : 17,
+        'Rg8Snorm' : 18,
+        'R16Snorm' : 19,
+        'R8Snorm' : 20,
+        'Rgba32i' : 21,
+        'Rgba16i' : 22,
+        'Rgba8i' : 23,
+        'R32i' : 24,
+        'Rg32i' : 25,
+        'Rg16i' : 26,
+        'Rg8i' : 27,
+        'R16i' : 28,
+        'R8i' : 29,
+        'Rgba32ui' : 30,
+        'Rgba16ui' : 31,
+        'Rgba8ui' : 32,
+        'R32ui' : 33,
+        'Rgb10a2ui' : 34,
+        'Rg32ui' : 35,
+        'Rg16ui' : 36,
+        'Rg8ui' : 37,
+        'R16ui' : 38,
+        'R8ui' : 39,
+    },
+
+    'ImageChannelOrder' : {
+        'R' : 0,
+        'A' : 1,
+        'RG' : 2,
+        'RA' : 3,
+        'RGB' : 4,
+        'RGBA' : 5,
+        'BGRA' : 6,
+        'ARGB' : 7,
+        'Intensity' : 8,
+        'Luminance' : 9,
+        'Rx' : 10,
+        'RGx' : 11,
+        'RGBx' : 12,
+        'Depth' : 13,
+        'DepthStencil' : 14,
+        'sRGB' : 15,
+        'sRGBx' : 16,
+        'sRGBA' : 17,
+        'sBGRA' : 18,
+        'ABGR' : 19,
+    },
+
+    'ImageChannelDataType' : {
+        'SnormInt8' : 0,
+        'SnormInt16' : 1,
+        'UnormInt8' : 2,
+        'UnormInt16' : 3,
+        'UnormShort565' : 4,
+        'UnormShort555' : 5,
+        'UnormInt101010' : 6,
+        'SignedInt8' : 7,
+        'SignedInt16' : 8,
+        'SignedInt32' : 9,
+        'UnsignedInt8' : 10,
+        'UnsignedInt16' : 11,
+        'UnsignedInt32' : 12,
+        'HalfFloat' : 13,
+        'Float' : 14,
+        'UnormInt24' : 15,
+        'UnormInt101010_2' : 16,
+    },
+
+    'ImageOperandsShift' : {
+        'Bias' : 0,
+        'Lod' : 1,
+        'Grad' : 2,
+        'ConstOffset' : 3,
+        'Offset' : 4,
+        'ConstOffsets' : 5,
+        'Sample' : 6,
+        'MinLod' : 7,
+    },
+
+    'ImageOperandsMask' : {
+        'MaskNone' : 0,
+        'Bias' : 0x00000001,
+        'Lod' : 0x00000002,
+        'Grad' : 0x00000004,
+        'ConstOffset' : 0x00000008,
+        'Offset' : 0x00000010,
+        'ConstOffsets' : 0x00000020,
+        'Sample' : 0x00000040,
+        'MinLod' : 0x00000080,
+    },
+
+    'FPFastMathModeShift' : {
+        'NotNaN' : 0,
+        'NotInf' : 1,
+        'NSZ' : 2,
+        'AllowRecip' : 3,
+        'Fast' : 4,
+    },
+
+    'FPFastMathModeMask' : {
+        'MaskNone' : 0,
+        'NotNaN' : 0x00000001,
+        'NotInf' : 0x00000002,
+        'NSZ' : 0x00000004,
+        'AllowRecip' : 0x00000008,
+        'Fast' : 0x00000010,
+    },
+
+    'FPRoundingMode' : {
+        'RTE' : 0,
+        'RTZ' : 1,
+        'RTP' : 2,
+        'RTN' : 3,
+    },
+
+    'LinkageType' : {
+        'Export' : 0,
+        'Import' : 1,
+    },
+
+    'AccessQualifier' : {
+        'ReadOnly' : 0,
+        'WriteOnly' : 1,
+        'ReadWrite' : 2,
+    },
+
+    'FunctionParameterAttribute' : {
+        'Zext' : 0,
+        'Sext' : 1,
+        'ByVal' : 2,
+        'Sret' : 3,
+        'NoAlias' : 4,
+        'NoCapture' : 5,
+        'NoWrite' : 6,
+        'NoReadWrite' : 7,
+    },
+
+    'Decoration' : {
+        'RelaxedPrecision' : 0,
+        'SpecId' : 1,
+        'Block' : 2,
+        'BufferBlock' : 3,
+        'RowMajor' : 4,
+        'ColMajor' : 5,
+        'ArrayStride' : 6,
+        'MatrixStride' : 7,
+        'GLSLShared' : 8,
+        'GLSLPacked' : 9,
+        'CPacked' : 10,
+        'BuiltIn' : 11,
+        'NoPerspective' : 13,
+        'Flat' : 14,
+        'Patch' : 15,
+        'Centroid' : 16,
+        'Sample' : 17,
+        'Invariant' : 18,
+        'Restrict' : 19,
+        'Aliased' : 20,
+        'Volatile' : 21,
+        'Constant' : 22,
+        'Coherent' : 23,
+        'NonWritable' : 24,
+        'NonReadable' : 25,
+        'Uniform' : 26,
+        'SaturatedConversion' : 28,
+        'Stream' : 29,
+        'Location' : 30,
+        'Component' : 31,
+        'Index' : 32,
+        'Binding' : 33,
+        'DescriptorSet' : 34,
+        'Offset' : 35,
+        'XfbBuffer' : 36,
+        'XfbStride' : 37,
+        'FuncParamAttr' : 38,
+        'FPRoundingMode' : 39,
+        'FPFastMathMode' : 40,
+        'LinkageAttributes' : 41,
+        'NoContraction' : 42,
+        'InputAttachmentIndex' : 43,
+        'Alignment' : 44,
+        'MaxByteOffset' : 45,
+        'AlignmentId' : 46,
+        'MaxByteOffsetId' : 47,
+        'ExplicitInterpAMD' : 4999,
+        'OverrideCoverageNV' : 5248,
+        'PassthroughNV' : 5250,
+        'ViewportRelativeNV' : 5252,
+        'SecondaryViewportRelativeNV' : 5256,
+        'HlslCounterBufferGOOGLE' : 5634,
+        'HlslSemanticGOOGLE' : 5635,
+    },
+
+    'BuiltIn' : {
+        'Position' : 0,
+        'PointSize' : 1,
+        'ClipDistance' : 3,
+        'CullDistance' : 4,
+        'VertexId' : 5,
+        'InstanceId' : 6,
+        'PrimitiveId' : 7,
+        'InvocationId' : 8,
+        'Layer' : 9,
+        'ViewportIndex' : 10,
+        'TessLevelOuter' : 11,
+        'TessLevelInner' : 12,
+        'TessCoord' : 13,
+        'PatchVertices' : 14,
+        'FragCoord' : 15,
+        'PointCoord' : 16,
+        'FrontFacing' : 17,
+        'SampleId' : 18,
+        'SamplePosition' : 19,
+        'SampleMask' : 20,
+        'FragDepth' : 22,
+        'HelperInvocation' : 23,
+        'NumWorkgroups' : 24,
+        'WorkgroupSize' : 25,
+        'WorkgroupId' : 26,
+        'LocalInvocationId' : 27,
+        'GlobalInvocationId' : 28,
+        'LocalInvocationIndex' : 29,
+        'WorkDim' : 30,
+        'GlobalSize' : 31,
+        'EnqueuedWorkgroupSize' : 32,
+        'GlobalOffset' : 33,
+        'GlobalLinearId' : 34,
+        'SubgroupSize' : 36,
+        'SubgroupMaxSize' : 37,
+        'NumSubgroups' : 38,
+        'NumEnqueuedSubgroups' : 39,
+        'SubgroupId' : 40,
+        'SubgroupLocalInvocationId' : 41,
+        'VertexIndex' : 42,
+        'InstanceIndex' : 43,
+        'SubgroupEqMaskKHR' : 4416,
+        'SubgroupGeMaskKHR' : 4417,
+        'SubgroupGtMaskKHR' : 4418,
+        'SubgroupLeMaskKHR' : 4419,
+        'SubgroupLtMaskKHR' : 4420,
+        'BaseVertex' : 4424,
+        'BaseInstance' : 4425,
+        'DrawIndex' : 4426,
+        'DeviceIndex' : 4438,
+        'ViewIndex' : 4440,
+        'BaryCoordNoPerspAMD' : 4992,
+        'BaryCoordNoPerspCentroidAMD' : 4993,
+        'BaryCoordNoPerspSampleAMD' : 4994,
+        'BaryCoordSmoothAMD' : 4995,
+        'BaryCoordSmoothCentroidAMD' : 4996,
+        'BaryCoordSmoothSampleAMD' : 4997,
+        'BaryCoordPullModelAMD' : 4998,
+        'FragStencilRefEXT' : 5014,
+        'ViewportMaskNV' : 5253,
+        'SecondaryPositionNV' : 5257,
+        'SecondaryViewportMaskNV' : 5258,
+        'PositionPerViewNV' : 5261,
+        'ViewportMaskPerViewNV' : 5262,
+    },
+
+    'SelectionControlShift' : {
+        'Flatten' : 0,
+        'DontFlatten' : 1,
+    },
+
+    'SelectionControlMask' : {
+        'MaskNone' : 0,
+        'Flatten' : 0x00000001,
+        'DontFlatten' : 0x00000002,
+    },
+
+    'LoopControlShift' : {
+        'Unroll' : 0,
+        'DontUnroll' : 1,
+        'DependencyInfinite' : 2,
+        'DependencyLength' : 3,
+    },
+
+    'LoopControlMask' : {
+        'MaskNone' : 0,
+        'Unroll' : 0x00000001,
+        'DontUnroll' : 0x00000002,
+        'DependencyInfinite' : 0x00000004,
+        'DependencyLength' : 0x00000008,
+    },
+
+    'FunctionControlShift' : {
+        'Inline' : 0,
+        'DontInline' : 1,
+        'Pure' : 2,
+        'Const' : 3,
+    },
+
+    'FunctionControlMask' : {
+        'MaskNone' : 0,
+        'Inline' : 0x00000001,
+        'DontInline' : 0x00000002,
+        'Pure' : 0x00000004,
+        'Const' : 0x00000008,
+    },
+
+    'MemorySemanticsShift' : {
+        'Acquire' : 1,
+        'Release' : 2,
+        'AcquireRelease' : 3,
+        'SequentiallyConsistent' : 4,
+        'UniformMemory' : 6,
+        'SubgroupMemory' : 7,
+        'WorkgroupMemory' : 8,
+        'CrossWorkgroupMemory' : 9,
+        'AtomicCounterMemory' : 10,
+        'ImageMemory' : 11,
+    },
+
+    'MemorySemanticsMask' : {
+        'MaskNone' : 0,
+        'Acquire' : 0x00000002,
+        'Release' : 0x00000004,
+        'AcquireRelease' : 0x00000008,
+        'SequentiallyConsistent' : 0x00000010,
+        'UniformMemory' : 0x00000040,
+        'SubgroupMemory' : 0x00000080,
+        'WorkgroupMemory' : 0x00000100,
+        'CrossWorkgroupMemory' : 0x00000200,
+        'AtomicCounterMemory' : 0x00000400,
+        'ImageMemory' : 0x00000800,
+    },
+
+    'MemoryAccessShift' : {
+        'Volatile' : 0,
+        'Aligned' : 1,
+        'Nontemporal' : 2,
+    },
+
+    'MemoryAccessMask' : {
+        'MaskNone' : 0,
+        'Volatile' : 0x00000001,
+        'Aligned' : 0x00000002,
+        'Nontemporal' : 0x00000004,
+    },
+
+    'Scope' : {
+        'CrossDevice' : 0,
+        'Device' : 1,
+        'Workgroup' : 2,
+        'Subgroup' : 3,
+        'Invocation' : 4,
+    },
+
+    'GroupOperation' : {
+        'Reduce' : 0,
+        'InclusiveScan' : 1,
+        'ExclusiveScan' : 2,
+    },
+
+    'KernelEnqueueFlags' : {
+        'NoWait' : 0,
+        'WaitKernel' : 1,
+        'WaitWorkGroup' : 2,
+    },
+
+    'KernelProfilingInfoShift' : {
+        'CmdExecTime' : 0,
+    },
+
+    'KernelProfilingInfoMask' : {
+        'MaskNone' : 0,
+        'CmdExecTime' : 0x00000001,
+    },
+
+    'Capability' : {
+        'Matrix' : 0,
+        'Shader' : 1,
+        'Geometry' : 2,
+        'Tessellation' : 3,
+        'Addresses' : 4,
+        'Linkage' : 5,
+        'Kernel' : 6,
+        'Vector16' : 7,
+        'Float16Buffer' : 8,
+        'Float16' : 9,
+        'Float64' : 10,
+        'Int64' : 11,
+        'Int64Atomics' : 12,
+        'ImageBasic' : 13,
+        'ImageReadWrite' : 14,
+        'ImageMipmap' : 15,
+        'Pipes' : 17,
+        'Groups' : 18,
+        'DeviceEnqueue' : 19,
+        'LiteralSampler' : 20,
+        'AtomicStorage' : 21,
+        'Int16' : 22,
+        'TessellationPointSize' : 23,
+        'GeometryPointSize' : 24,
+        'ImageGatherExtended' : 25,
+        'StorageImageMultisample' : 27,
+        'UniformBufferArrayDynamicIndexing' : 28,
+        'SampledImageArrayDynamicIndexing' : 29,
+        'StorageBufferArrayDynamicIndexing' : 30,
+        'StorageImageArrayDynamicIndexing' : 31,
+        'ClipDistance' : 32,
+        'CullDistance' : 33,
+        'ImageCubeArray' : 34,
+        'SampleRateShading' : 35,
+        'ImageRect' : 36,
+        'SampledRect' : 37,
+        'GenericPointer' : 38,
+        'Int8' : 39,
+        'InputAttachment' : 40,
+        'SparseResidency' : 41,
+        'MinLod' : 42,
+        'Sampled1D' : 43,
+        'Image1D' : 44,
+        'SampledCubeArray' : 45,
+        'SampledBuffer' : 46,
+        'ImageBuffer' : 47,
+        'ImageMSArray' : 48,
+        'StorageImageExtendedFormats' : 49,
+        'ImageQuery' : 50,
+        'DerivativeControl' : 51,
+        'InterpolationFunction' : 52,
+        'TransformFeedback' : 53,
+        'GeometryStreams' : 54,
+        'StorageImageReadWithoutFormat' : 55,
+        'StorageImageWriteWithoutFormat' : 56,
+        'MultiViewport' : 57,
+        'SubgroupDispatch' : 58,
+        'NamedBarrier' : 59,
+        'PipeStorage' : 60,
+        'SubgroupBallotKHR' : 4423,
+        'DrawParameters' : 4427,
+        'SubgroupVoteKHR' : 4431,
+        'StorageBuffer16BitAccess' : 4433,
+        'StorageUniformBufferBlock16' : 4433,
+        'StorageUniform16' : 4434,
+        'UniformAndStorageBuffer16BitAccess' : 4434,
+        'StoragePushConstant16' : 4435,
+        'StorageInputOutput16' : 4436,
+        'DeviceGroup' : 4437,
+        'MultiView' : 4439,
+        'VariablePointersStorageBuffer' : 4441,
+        'VariablePointers' : 4442,
+        'AtomicStorageOps' : 4445,
+        'SampleMaskPostDepthCoverage' : 4447,
+        'ImageGatherBiasLodAMD' : 5009,
+        'FragmentMaskAMD' : 5010,
+        'StencilExportEXT' : 5013,
+        'ImageReadWriteLodAMD' : 5015,
+        'SampleMaskOverrideCoverageNV' : 5249,
+        'GeometryShaderPassthroughNV' : 5251,
+        'ShaderViewportIndexLayerEXT' : 5254,
+        'ShaderViewportIndexLayerNV' : 5254,
+        'ShaderViewportMaskNV' : 5255,
+        'ShaderStereoViewNV' : 5259,
+        'PerViewAttributesNV' : 5260,
+        'SubgroupShuffleINTEL' : 5568,
+        'SubgroupBufferBlockIOINTEL' : 5569,
+        'SubgroupImageBlockIOINTEL' : 5570,
+    },
+
+    'Op' : {
+        'OpNop' : 0,
+        'OpUndef' : 1,
+        'OpSourceContinued' : 2,
+        'OpSource' : 3,
+        'OpSourceExtension' : 4,
+        'OpName' : 5,
+        'OpMemberName' : 6,
+        'OpString' : 7,
+        'OpLine' : 8,
+        'OpExtension' : 10,
+        'OpExtInstImport' : 11,
+        'OpExtInst' : 12,
+        'OpMemoryModel' : 14,
+        'OpEntryPoint' : 15,
+        'OpExecutionMode' : 16,
+        'OpCapability' : 17,
+        'OpTypeVoid' : 19,
+        'OpTypeBool' : 20,
+        'OpTypeInt' : 21,
+        'OpTypeFloat' : 22,
+        'OpTypeVector' : 23,
+        'OpTypeMatrix' : 24,
+        'OpTypeImage' : 25,
+        'OpTypeSampler' : 26,
+        'OpTypeSampledImage' : 27,
+        'OpTypeArray' : 28,
+        'OpTypeRuntimeArray' : 29,
+        'OpTypeStruct' : 30,
+        'OpTypeOpaque' : 31,
+        'OpTypePointer' : 32,
+        'OpTypeFunction' : 33,
+        'OpTypeEvent' : 34,
+        'OpTypeDeviceEvent' : 35,
+        'OpTypeReserveId' : 36,
+        'OpTypeQueue' : 37,
+        'OpTypePipe' : 38,
+        'OpTypeForwardPointer' : 39,
+        'OpConstantTrue' : 41,
+        'OpConstantFalse' : 42,
+        'OpConstant' : 43,
+        'OpConstantComposite' : 44,
+        'OpConstantSampler' : 45,
+        'OpConstantNull' : 46,
+        'OpSpecConstantTrue' : 48,
+        'OpSpecConstantFalse' : 49,
+        'OpSpecConstant' : 50,
+        'OpSpecConstantComposite' : 51,
+        'OpSpecConstantOp' : 52,
+        'OpFunction' : 54,
+        'OpFunctionParameter' : 55,
+        'OpFunctionEnd' : 56,
+        'OpFunctionCall' : 57,
+        'OpVariable' : 59,
+        'OpImageTexelPointer' : 60,
+        'OpLoad' : 61,
+        'OpStore' : 62,
+        'OpCopyMemory' : 63,
+        'OpCopyMemorySized' : 64,
+        'OpAccessChain' : 65,
+        'OpInBoundsAccessChain' : 66,
+        'OpPtrAccessChain' : 67,
+        'OpArrayLength' : 68,
+        'OpGenericPtrMemSemantics' : 69,
+        'OpInBoundsPtrAccessChain' : 70,
+        'OpDecorate' : 71,
+        'OpMemberDecorate' : 72,
+        'OpDecorationGroup' : 73,
+        'OpGroupDecorate' : 74,
+        'OpGroupMemberDecorate' : 75,
+        'OpVectorExtractDynamic' : 77,
+        'OpVectorInsertDynamic' : 78,
+        'OpVectorShuffle' : 79,
+        'OpCompositeConstruct' : 80,
+        'OpCompositeExtract' : 81,
+        'OpCompositeInsert' : 82,
+        'OpCopyObject' : 83,
+        'OpTranspose' : 84,
+        'OpSampledImage' : 86,
+        'OpImageSampleImplicitLod' : 87,
+        'OpImageSampleExplicitLod' : 88,
+        'OpImageSampleDrefImplicitLod' : 89,
+        'OpImageSampleDrefExplicitLod' : 90,
+        'OpImageSampleProjImplicitLod' : 91,
+        'OpImageSampleProjExplicitLod' : 92,
+        'OpImageSampleProjDrefImplicitLod' : 93,
+        'OpImageSampleProjDrefExplicitLod' : 94,
+        'OpImageFetch' : 95,
+        'OpImageGather' : 96,
+        'OpImageDrefGather' : 97,
+        'OpImageRead' : 98,
+        'OpImageWrite' : 99,
+        'OpImage' : 100,
+        'OpImageQueryFormat' : 101,
+        'OpImageQueryOrder' : 102,
+        'OpImageQuerySizeLod' : 103,
+        'OpImageQuerySize' : 104,
+        'OpImageQueryLod' : 105,
+        'OpImageQueryLevels' : 106,
+        'OpImageQuerySamples' : 107,
+        'OpConvertFToU' : 109,
+        'OpConvertFToS' : 110,
+        'OpConvertSToF' : 111,
+        'OpConvertUToF' : 112,
+        'OpUConvert' : 113,
+        'OpSConvert' : 114,
+        'OpFConvert' : 115,
+        'OpQuantizeToF16' : 116,
+        'OpConvertPtrToU' : 117,
+        'OpSatConvertSToU' : 118,
+        'OpSatConvertUToS' : 119,
+        'OpConvertUToPtr' : 120,
+        'OpPtrCastToGeneric' : 121,
+        'OpGenericCastToPtr' : 122,
+        'OpGenericCastToPtrExplicit' : 123,
+        'OpBitcast' : 124,
+        'OpSNegate' : 126,
+        'OpFNegate' : 127,
+        'OpIAdd' : 128,
+        'OpFAdd' : 129,
+        'OpISub' : 130,
+        'OpFSub' : 131,
+        'OpIMul' : 132,
+        'OpFMul' : 133,
+        'OpUDiv' : 134,
+        'OpSDiv' : 135,
+        'OpFDiv' : 136,
+        'OpUMod' : 137,
+        'OpSRem' : 138,
+        'OpSMod' : 139,
+        'OpFRem' : 140,
+        'OpFMod' : 141,
+        'OpVectorTimesScalar' : 142,
+        'OpMatrixTimesScalar' : 143,
+        'OpVectorTimesMatrix' : 144,
+        'OpMatrixTimesVector' : 145,
+        'OpMatrixTimesMatrix' : 146,
+        'OpOuterProduct' : 147,
+        'OpDot' : 148,
+        'OpIAddCarry' : 149,
+        'OpISubBorrow' : 150,
+        'OpUMulExtended' : 151,
+        'OpSMulExtended' : 152,
+        'OpAny' : 154,
+        'OpAll' : 155,
+        'OpIsNan' : 156,
+        'OpIsInf' : 157,
+        'OpIsFinite' : 158,
+        'OpIsNormal' : 159,
+        'OpSignBitSet' : 160,
+        'OpLessOrGreater' : 161,
+        'OpOrdered' : 162,
+        'OpUnordered' : 163,
+        'OpLogicalEqual' : 164,
+        'OpLogicalNotEqual' : 165,
+        'OpLogicalOr' : 166,
+        'OpLogicalAnd' : 167,
+        'OpLogicalNot' : 168,
+        'OpSelect' : 169,
+        'OpIEqual' : 170,
+        'OpINotEqual' : 171,
+        'OpUGreaterThan' : 172,
+        'OpSGreaterThan' : 173,
+        'OpUGreaterThanEqual' : 174,
+        'OpSGreaterThanEqual' : 175,
+        'OpULessThan' : 176,
+        'OpSLessThan' : 177,
+        'OpULessThanEqual' : 178,
+        'OpSLessThanEqual' : 179,
+        'OpFOrdEqual' : 180,
+        'OpFUnordEqual' : 181,
+        'OpFOrdNotEqual' : 182,
+        'OpFUnordNotEqual' : 183,
+        'OpFOrdLessThan' : 184,
+        'OpFUnordLessThan' : 185,
+        'OpFOrdGreaterThan' : 186,
+        'OpFUnordGreaterThan' : 187,
+        'OpFOrdLessThanEqual' : 188,
+        'OpFUnordLessThanEqual' : 189,
+        'OpFOrdGreaterThanEqual' : 190,
+        'OpFUnordGreaterThanEqual' : 191,
+        'OpShiftRightLogical' : 194,
+        'OpShiftRightArithmetic' : 195,
+        'OpShiftLeftLogical' : 196,
+        'OpBitwiseOr' : 197,
+        'OpBitwiseXor' : 198,
+        'OpBitwiseAnd' : 199,
+        'OpNot' : 200,
+        'OpBitFieldInsert' : 201,
+        'OpBitFieldSExtract' : 202,
+        'OpBitFieldUExtract' : 203,
+        'OpBitReverse' : 204,
+        'OpBitCount' : 205,
+        'OpDPdx' : 207,
+        'OpDPdy' : 208,
+        'OpFwidth' : 209,
+        'OpDPdxFine' : 210,
+        'OpDPdyFine' : 211,
+        'OpFwidthFine' : 212,
+        'OpDPdxCoarse' : 213,
+        'OpDPdyCoarse' : 214,
+        'OpFwidthCoarse' : 215,
+        'OpEmitVertex' : 218,
+        'OpEndPrimitive' : 219,
+        'OpEmitStreamVertex' : 220,
+        'OpEndStreamPrimitive' : 221,
+        'OpControlBarrier' : 224,
+        'OpMemoryBarrier' : 225,
+        'OpAtomicLoad' : 227,
+        'OpAtomicStore' : 228,
+        'OpAtomicExchange' : 229,
+        'OpAtomicCompareExchange' : 230,
+        'OpAtomicCompareExchangeWeak' : 231,
+        'OpAtomicIIncrement' : 232,
+        'OpAtomicIDecrement' : 233,
+        'OpAtomicIAdd' : 234,
+        'OpAtomicISub' : 235,
+        'OpAtomicSMin' : 236,
+        'OpAtomicUMin' : 237,
+        'OpAtomicSMax' : 238,
+        'OpAtomicUMax' : 239,
+        'OpAtomicAnd' : 240,
+        'OpAtomicOr' : 241,
+        'OpAtomicXor' : 242,
+        'OpPhi' : 245,
+        'OpLoopMerge' : 246,
+        'OpSelectionMerge' : 247,
+        'OpLabel' : 248,
+        'OpBranch' : 249,
+        'OpBranchConditional' : 250,
+        'OpSwitch' : 251,
+        'OpKill' : 252,
+        'OpReturn' : 253,
+        'OpReturnValue' : 254,
+        'OpUnreachable' : 255,
+        'OpLifetimeStart' : 256,
+        'OpLifetimeStop' : 257,
+        'OpGroupAsyncCopy' : 259,
+        'OpGroupWaitEvents' : 260,
+        'OpGroupAll' : 261,
+        'OpGroupAny' : 262,
+        'OpGroupBroadcast' : 263,
+        'OpGroupIAdd' : 264,
+        'OpGroupFAdd' : 265,
+        'OpGroupFMin' : 266,
+        'OpGroupUMin' : 267,
+        'OpGroupSMin' : 268,
+        'OpGroupFMax' : 269,
+        'OpGroupUMax' : 270,
+        'OpGroupSMax' : 271,
+        'OpReadPipe' : 274,
+        'OpWritePipe' : 275,
+        'OpReservedReadPipe' : 276,
+        'OpReservedWritePipe' : 277,
+        'OpReserveReadPipePackets' : 278,
+        'OpReserveWritePipePackets' : 279,
+        'OpCommitReadPipe' : 280,
+        'OpCommitWritePipe' : 281,
+        'OpIsValidReserveId' : 282,
+        'OpGetNumPipePackets' : 283,
+        'OpGetMaxPipePackets' : 284,
+        'OpGroupReserveReadPipePackets' : 285,
+        'OpGroupReserveWritePipePackets' : 286,
+        'OpGroupCommitReadPipe' : 287,
+        'OpGroupCommitWritePipe' : 288,
+        'OpEnqueueMarker' : 291,
+        'OpEnqueueKernel' : 292,
+        'OpGetKernelNDrangeSubGroupCount' : 293,
+        'OpGetKernelNDrangeMaxSubGroupSize' : 294,
+        'OpGetKernelWorkGroupSize' : 295,
+        'OpGetKernelPreferredWorkGroupSizeMultiple' : 296,
+        'OpRetainEvent' : 297,
+        'OpReleaseEvent' : 298,
+        'OpCreateUserEvent' : 299,
+        'OpIsValidEvent' : 300,
+        'OpSetUserEventStatus' : 301,
+        'OpCaptureEventProfilingInfo' : 302,
+        'OpGetDefaultQueue' : 303,
+        'OpBuildNDRange' : 304,
+        'OpImageSparseSampleImplicitLod' : 305,
+        'OpImageSparseSampleExplicitLod' : 306,
+        'OpImageSparseSampleDrefImplicitLod' : 307,
+        'OpImageSparseSampleDrefExplicitLod' : 308,
+        'OpImageSparseSampleProjImplicitLod' : 309,
+        'OpImageSparseSampleProjExplicitLod' : 310,
+        'OpImageSparseSampleProjDrefImplicitLod' : 311,
+        'OpImageSparseSampleProjDrefExplicitLod' : 312,
+        'OpImageSparseFetch' : 313,
+        'OpImageSparseGather' : 314,
+        'OpImageSparseDrefGather' : 315,
+        'OpImageSparseTexelsResident' : 316,
+        'OpNoLine' : 317,
+        'OpAtomicFlagTestAndSet' : 318,
+        'OpAtomicFlagClear' : 319,
+        'OpImageSparseRead' : 320,
+        'OpSizeOf' : 321,
+        'OpTypePipeStorage' : 322,
+        'OpConstantPipeStorage' : 323,
+        'OpCreatePipeFromPipeStorage' : 324,
+        'OpGetKernelLocalSizeForSubgroupCount' : 325,
+        'OpGetKernelMaxNumSubgroups' : 326,
+        'OpTypeNamedBarrier' : 327,
+        'OpNamedBarrierInitialize' : 328,
+        'OpMemoryNamedBarrier' : 329,
+        'OpModuleProcessed' : 330,
+        'OpExecutionModeId' : 331,
+        'OpDecorateId' : 332,
+        'OpSubgroupBallotKHR' : 4421,
+        'OpSubgroupFirstInvocationKHR' : 4422,
+        'OpSubgroupAllKHR' : 4428,
+        'OpSubgroupAnyKHR' : 4429,
+        'OpSubgroupAllEqualKHR' : 4430,
+        'OpSubgroupReadInvocationKHR' : 4432,
+        'OpGroupIAddNonUniformAMD' : 5000,
+        'OpGroupFAddNonUniformAMD' : 5001,
+        'OpGroupFMinNonUniformAMD' : 5002,
+        'OpGroupUMinNonUniformAMD' : 5003,
+        'OpGroupSMinNonUniformAMD' : 5004,
+        'OpGroupFMaxNonUniformAMD' : 5005,
+        'OpGroupUMaxNonUniformAMD' : 5006,
+        'OpGroupSMaxNonUniformAMD' : 5007,
+        'OpFragmentMaskFetchAMD' : 5011,
+        'OpFragmentFetchAMD' : 5012,
+        'OpSubgroupShuffleINTEL' : 5571,
+        'OpSubgroupShuffleDownINTEL' : 5572,
+        'OpSubgroupShuffleUpINTEL' : 5573,
+        'OpSubgroupShuffleXorINTEL' : 5574,
+        'OpSubgroupBlockReadINTEL' : 5575,
+        'OpSubgroupBlockWriteINTEL' : 5576,
+        'OpSubgroupImageBlockReadINTEL' : 5577,
+        'OpSubgroupImageBlockWriteINTEL' : 5578,
+        'OpDecorateStringGOOGLE' : 5632,
+        'OpMemberDecorateStringGOOGLE' : 5633,
+    },
+
+}
+
diff --git a/libs/spirv-headers/spirv/spir-v.xml b/libs/spirv-headers/spirv/spir-v.xml
new file mode 100644
index 00000000000..1298052d42c
--- /dev/null
+++ b/libs/spirv-headers/spirv/spir-v.xml
@@ -0,0 +1,204 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<registry>
+    <!--
+    Copyright (c) 2015 The Khronos Group Inc.
+
+    Permission is hereby granted, free of charge, to any person obtaining a
+    copy of this software and/or associated documentation files (the
+    "Materials"), to deal in the Materials without restriction, including
+    without limitation the rights to use, copy, modify, merge, publish,
+    distribute, sublicense, and/or sell copies of the Materials, and to
+    permit persons to whom the Materials are furnished to do so, subject to
+    the following conditions:
+
+    The above copyright notice and this permission notice shall be included
+    in all copies or substantial portions of the Materials.
+
+    THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+    EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+    MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+    IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+    CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+    TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+    MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
+    -->
+    <!--
+    This file, spir-v.xml, is the SPIR-V Tool ID, opcode and enumerant registry.
+    The canonical version of the registry, together with related schema and
+    documentation, can be found in the Khronos Registry at
+    include/spirv/spir-v.xml in the master branch at
+    https://github.com/KhronosGroup/SPIRV-Headers
+    -->
+
+    <!-- SECTION: SPIR-V Tool ID Definitions  -->
+
+    <!-- A SPIR-V Generator Magic Number is a 32 bit word: The high order 16
+         bits are a tool ID, which should be unique across all SPIR-V
+         generators. The low order 16 bits are reserved for use as a tool
+         version number, or any other purpose the tool supplier chooses.
+         Only the tool IDs are reserved with Khronos.
+
+         Add new tool ID reservations contiguously with the first available
+         number (the "start" attribute of the <unused> tag below), and
+         modify that <unused> tag accordingly. Please add a vendor/tool
+         supplier name in a 'vendor="name"' attribute; a tool name in a
+         'tool="name"' attribute; and a contact person/address in a
+         'comment' attribute. Remember that this value is the high 16 bits
+         of a 32-bit word.
+
+         Note: a single vendor/tool supplier may have multiple tool IDs
+         reserved for different SPIR-V generators -->
+
+    <ids type="vendor" start="0" end="0xFFFF" comment="SPIR-V Tool IDs">
+        <id value="0"   vendor="Khronos"    comment="Reserved by Khronos"/>
+        <id value="1"   vendor="LunarG"     comment="Contact TBD"/>
+        <id value="2"   vendor="Valve"      comment="Contact TBD"/>
+        <id value="3"   vendor="Codeplay"   comment="Contact Victor Lomuller, victor at codeplay.com"/>
+        <id value="4"   vendor="NVIDIA"     comment="Contact Kerch Holt, kholt at nvidia.com"/>
+        <id value="5"   vendor="ARM"        comment="Contact Alexander Galazin, alexander.galazin at arm.com"/>
+        <id value="6"   vendor="Khronos" tool="LLVM/SPIR-V Translator" comment="Contact Yaxun (Sam) Liu, yaxun.liu at amd.com"/>
+        <id value="7"   vendor="Khronos" tool="SPIR-V Tools Assembler" comment="Contact David Neto, dneto at google.com"/>
+        <id value="8"   vendor="Khronos" tool="Glslang Reference Front End" comment="Contact John Kessenich, johnkessenich at google.com"/>
+        <id value="9"   vendor="Qualcomm"   comment="Contact weifengz at qti.qualcomm.com"/>
+        <id value="10"  vendor="AMD"        comment="Contact Daniel Rakos, daniel.rakos at amd.com"/>
+        <id value="11"  vendor="Intel"      comment="Contact Alexey, alexey.bader at intel.com"/>
+        <id value="12"  vendor="Imagination" comment="Contact James Jones"/>
+        <id value="13"  vendor="Google" tool="Shaderc over Glslang" comment="Contact David Neto, dneto at google.com"/>
+        <id value="14"  vendor="Google" tool="spiregg" comment="Contact Lei Zhang, antiagainst at google.com"/>
+        <id value="15"  vendor="Google" tool="rspirv" comment="Contact Lei Zhang, antiagainst at gmail.com"/>
+        <id value="16"  vendor="X-LEGEND"   tool="Mesa-IR/SPIR-V Translator" comment="Contact Metora Wang, github:metora/MesaGLSLCompiler"/>
+        <id value="17"  vendor="Khronos" tool="SPIR-V Tools Linker" comment="Contact David Neto, dneto at google.com"/>
+        <id value="18"  vendor="Wine" tool="VKD3D Shader Compiler" comment="Contact wine-devel at winehq.org"/>
+        <id value="19"  vendor="Clay" tool="Clay Shader Compiler" comment="Contact info at clayengine.com"/>
+        <id value="20"  vendor="W3C WebGPU Group" tool="WHLSL Shader Translator" comment="https://github.com/gpuweb/WHLSL"/>
+        <id value="21"  vendor="Google" tool="Clspv" comment="Contact David Neto, dneto at google.com"/>
+        <id value="22"  vendor="Google" tool="MLIR SPIR-V Serializer" comment="Contact Lei Zhang, antiagainst at google.com"/>
+        <id value="23"  vendor="Google" tool="Tint Compiler" comment="Contact David Neto, dneto at google.com"/>
+        <id value="24"  vendor="Google" tool="ANGLE Shader Compiler" comment="Contact Shahbaz Youssefi, syoussefi at google.com"/>
+        <id value="25"  vendor="Netease Games" tool="Messiah Shader Compiler" comment="Contact Yuwen Wu, atyuwen at gmail.com"/>
+        <id value="26"  vendor="Xenia" tool="Xenia Emulator Microcode Translator" comment="Contact Vitaliy Kuzmin, triang3l at yandex.ru, https://github.com/xenia-project/xenia"/>
+        <unused start="27" end="0xFFFF" comment="Tool ID range reservable for future use by vendors"/>
+    </ids>
+
+    <!-- SECTION: SPIR-V Opcodes and Enumerants -->
+
+    <!-- Vendors reserve new ranges of:
+           - opcode enumerants in the "opcode" list below, and
+           - non-opcode enumerants in the non-opcodes "enumerant" list below.
+         Both are reserved by contiguous blocks of 64, preceding the given
+         "Future use" blocks.
+
+         SPIR-V background:
+           - SPIR-V currently has well over 30 enums, including the opcode enum
+           - each enum has its own name space, allowing reuse of enumerants
+           - SPIR-V restricts opcode enumerants to 16 bits
+           - all other enums use 32-bit enumerants
+
+         Reservation rules:
+           - opcode reservations ("opcode") are only valid for opcodes
+           - non-opcode reservations ("enumerant") are not valid for opcodes
+           - reservations in the enumerant list are valid for all non-opcode enums
+           - it is simpler to use each non-opcode enumerant for only one purpose
+             but this is left to the discretion of the vendor
+           - all enumerants in a range should be used before allocating a new range
+             (several extensions can use enumerants from the same range)
+
+         Each vendor determines the use of enumerants in the ranges they
+         reserve. Vendors are not required to disclose those uses.  If the use
+         of an enumerant is included in an extension that is adopted by a Khronos
+         extension or specification, then that enumerant's use may be permanently
+         fixed as if originally reserved in a Khronos range.
+
+         -->
+
+    <!-- Begin reservations of opcode enumerants -->
+    <ids type="opcode" start="0" end="4095" vendor="Khronos" comment="Reserved opcodes, not available to vendors - see the SPIR-V Specification"/>
+    <ids type="opcode" start="4096" end="4159" vendor="Mesa" comment="Contact TBD"/>
+    <ids type="opcode" start="4160" end="4415" vendor="ARM"/>
+    <ids type="opcode" start="4416" end="4479" vendor="Khronos" comment="SPV_ARB_shader_ballot - contact Neil Henning, neil.henning at amd.com"/>
+    <ids type="opcode" start="4480" end="4991" vendor="Qualcomm" comment="Contact weifengz at qti.qualcomm.com"/>
+    <ids type="opcode" start="4992" end="5247" vendor="AMD"/>
+    <ids type="opcode" start="5248" end="5503" vendor="NVIDIA"/>
+    <ids type="opcode" start="5504" end="5567" vendor="Imagination"/>
+    <ids type="opcode" start="5568" end="5631" vendor="Intel" comment="Contact ben.ashbaugh at intel.com"/>
+    <ids type="opcode" start="5632" end="5695" vendor="Google" comment="Contact dneto at google.com"/>
+    <ids type="opcode" start="5696" end="5823" vendor="Intel" comment="Contact ben.ashbaugh at intel.com"/>
+    <ids type="opcode" start="5824" end="5951" vendor="Intel" comment="Contact michael.kinsner at intel.com"/>
+    <ids type="opcode" start="5952" end="6015" vendor="Codeplay" comment="Contact victor at codeplay.com"/>
+    <ids type="opcode" start="6016" end="6079" vendor="Khronos" comment="Contact @tobski"/>
+    <ids type="opcode" start="6080" end="6143" vendor="Intel" comment="Contact mariusz.merecki at intel.com"/>
+    <!-- Opcode enumerants to reserve for future use. To get a block, allocate
+         multiples of 64 starting at the lowest available point in this
+         block and add a corresponding <ids> tag immediately above. Make
+         sure to fill in the vendor attribute, and preferably add a contact
+         person/address in a comment attribute. -->
+    <!-- Example new block: <ids type="opcode" start="XXXX" end="XXXX+64n-1" vendor="Add vendor" comment="Contact TBD"/> -->
+    <ids type="opcode" start="6144" end="65535" comment="Opcode range reservable for future use by vendors"/>
+    <!-- End reservations of opcodes -->
+
+
+    <!-- Begin reservations of non-opcode enumerants -->
+    <ids type="enumerant" start="0" end="4095" vendor="Khronos" comment="Reserved enumerants, not available to vendors - see the SPIR-V Specification"/>
+    <ids type="enumerant" start="4096" end="4159" vendor="Mesa" comment="Contact TBD"/>
+    <ids type="enumerant" start="4160" end="4415" vendor="ARM"/>
+    <ids type="enumerant" start="4416" end="4479" vendor="Khronos" comment="SPV_ARB_shader_ballot - contact Neil Henning, neil.henning at amd.com"/>
+    <ids type="enumerant" start="4480" end="4991" vendor="Qualcomm" comment="Contact weifengz at qti.qualcomm.com"/>
+    <ids type="enumerant" start="4992" end="5247" vendor="AMD"/>
+    <ids type="enumerant" start="5248" end="5503" vendor="NVIDIA"/>
+    <ids type="enumerant" start="5504" end="5567" vendor="Imagination"/>
+    <ids type="enumerant" start="5568" end="5631" vendor="Intel" comment="Contact ben.ashbaugh at intel.com"/>
+    <ids type="enumerant" start="5632" end="5695" vendor="Google" comment="Contact dneto at google.com"/>
+    <ids type="enumerant" start="5696" end="5823" vendor="Intel" comment="Contact ben.ashbaugh at intel.com"/>
+    <ids type="enumerant" start="5824" end="5951" vendor="Intel" comment="Contact michael.kinsner at intel.com"/>
+    <ids type="enumerant" start="5952" end="6015" vendor="Codeplay" comment="Contact victor at codeplay.com"/>
+    <ids type="enumerant" start="6016" end="6079" vendor="Khronos" comment="Contact @tobski"/>
+    <ids type="enumerant" start="6080" end="6143" vendor="Intel" comment="Contact mariusz.merecki at intel.com"/>
+    <!-- Enumerants to reserve for future use. To get a block, allocate
+         multiples of 64 starting at the lowest available point in this
+         block and add a corresponding <ids> tag immediately above. Make
+         sure to fill in the vendor attribute, and preferably add a contact
+         person/address in a comment attribute. -->
+    <!-- Example new block: <ids type="enumerant" start="XXXX" end="XXXX+64n-1" vendor="Add vendor" comment="Contact TBD"/> -->
+    <ids type="enumerant" start="6144" end="4294967295" comment="Enumerant range reservable for future use by vendors"/>
+    <!-- End reservations of enumerants -->
+
+
+    <!-- SECTION: SPIR-V Loop Control Bit Reservations -->
+    <!-- Reserve ranges of bits in the loop control bitfield.
+
+         Each vendor determines the use of values in their own ranges.
+         Vendors are not required to disclose those uses.  If the use of a
+         value is included in an extension that is adopted by a Khronos
+         extension or specification, then that value's use may be permanently
+         fixed as if originally reserved in a Khronos range.
+
+         The SPIR Working Group strongly recommends:
+         - Each value is used for only one purpose.
+         - All values in a range should be used before allocating a new range.
+         -->
+
+    <!-- Reserved loop control bits -->
+    <ids type="LoopControl" start="0" end="15" vendor="Khronos" comment="Reserved LoopControl bits, not available to vendors - see the SPIR-V Specification"/>
+    <ids type="LoopControl" start="16" end="22" vendor="Intel" comment="Contact michael.kinsner at intel.com"/>
+    <ids type="LoopControl" start="23" end="30" comment="Unreserved bits reservable for use by vendors"/>
+    <ids type="LoopControl" start="31" end="31" vendor="Khronos" comment="Reserved LoopControl bit, not available to vendors"/>
+
+
+    <!-- SECTION: SPIR-V FP Fast Math Mode Bit Reservations -->
+    <!-- Reserve ranges of bits in the "FP Fast Math Mode" bitfield.
+         Each vendor determines the use of values in their own ranges.
+         Vendors are not required to disclose those uses.  If the use of a
+         value is included in an extension that is adopted by a Khronos
+         extension or specification, then that value's use may be permanently
+         fixed as if originally reserved in a Khronos range.
+         The SPIR Working Group strongly recommends:
+         - Each value is used for only one purpose.
+         - All values in a range should be used before allocating a new range.
+         -->
+
+    <!-- Reserved FP fast math mode bits -->
+    <ids type="FPFastMathMode" start="0" end="15" vendor="Khronos" comment="Reserved FPFastMathMode bits, not available to vendors - see the SPIR-V Specification"/>
+    <ids type="FPFastMathMode" start="16" end="17" vendor="Intel" comment="Contact michael.kinsner at intel.com"/>
+    <ids type="FPFastMathMode" start="18" end="31" comment="Unreserved bits reservable for use by vendors"/>
+
+</registry>
diff --git a/libs/spirv-headers/spirv/unified1/AMD_gcn_shader.h b/libs/spirv-headers/spirv/unified1/AMD_gcn_shader.h
new file mode 100644
index 00000000000..80165ae5c0a
--- /dev/null
+++ b/libs/spirv-headers/spirv/unified1/AMD_gcn_shader.h
@@ -0,0 +1,52 @@
+// Copyright (c) 2020 The Khronos Group Inc.
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a
+// copy of this software and/or associated documentation files (the
+// "Materials"), to deal in the Materials without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Materials, and to
+// permit persons to whom the Materials are furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included
+// in all copies or substantial portions of the Materials.
+// 
+// MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS
+// KHRONOS STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS
+// SPECIFICATIONS AND HEADER INFORMATION ARE LOCATED AT
+//    https://www.khronos.org/registry/
+// 
+// THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+// MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
+// 
+
+#ifndef SPIRV_UNIFIED1_AMD_gcn_shader_H_
+#define SPIRV_UNIFIED1_AMD_gcn_shader_H_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+enum {
+    AMD_gcn_shaderRevision = 2,
+    AMD_gcn_shaderRevision_BitWidthPadding = 0x7fffffff
+};
+
+enum AMD_gcn_shaderInstructions {
+    AMD_gcn_shaderCubeFaceIndexAMD = 1,
+    AMD_gcn_shaderCubeFaceCoordAMD = 2,
+    AMD_gcn_shaderTimeAMD = 3,
+    AMD_gcn_shaderInstructionsMax = 0x7fffffff
+};
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // SPIRV_UNIFIED1_AMD_gcn_shader_H_
diff --git a/libs/spirv-headers/spirv/unified1/AMD_shader_ballot.h b/libs/spirv-headers/spirv/unified1/AMD_shader_ballot.h
new file mode 100644
index 00000000000..8a8bb6eced8
--- /dev/null
+++ b/libs/spirv-headers/spirv/unified1/AMD_shader_ballot.h
@@ -0,0 +1,53 @@
+// Copyright (c) 2020 The Khronos Group Inc.
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a
+// copy of this software and/or associated documentation files (the
+// "Materials"), to deal in the Materials without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Materials, and to
+// permit persons to whom the Materials are furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included
+// in all copies or substantial portions of the Materials.
+// 
+// MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS
+// KHRONOS STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS
+// SPECIFICATIONS AND HEADER INFORMATION ARE LOCATED AT
+//    https://www.khronos.org/registry/
+// 
+// THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+// MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
+// 
+
+#ifndef SPIRV_UNIFIED1_AMD_shader_ballot_H_
+#define SPIRV_UNIFIED1_AMD_shader_ballot_H_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+enum {
+    AMD_shader_ballotRevision = 5,
+    AMD_shader_ballotRevision_BitWidthPadding = 0x7fffffff
+};
+
+enum AMD_shader_ballotInstructions {
+    AMD_shader_ballotSwizzleInvocationsAMD = 1,
+    AMD_shader_ballotSwizzleInvocationsMaskedAMD = 2,
+    AMD_shader_ballotWriteInvocationAMD = 3,
+    AMD_shader_ballotMbcntAMD = 4,
+    AMD_shader_ballotInstructionsMax = 0x7fffffff
+};
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // SPIRV_UNIFIED1_AMD_shader_ballot_H_
diff --git a/libs/spirv-headers/spirv/unified1/AMD_shader_explicit_vertex_parameter.h b/libs/spirv-headers/spirv/unified1/AMD_shader_explicit_vertex_parameter.h
new file mode 100644
index 00000000000..12b6480f13c
--- /dev/null
+++ b/libs/spirv-headers/spirv/unified1/AMD_shader_explicit_vertex_parameter.h
@@ -0,0 +1,50 @@
+// Copyright (c) 2020 The Khronos Group Inc.
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a
+// copy of this software and/or associated documentation files (the
+// "Materials"), to deal in the Materials without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Materials, and to
+// permit persons to whom the Materials are furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included
+// in all copies or substantial portions of the Materials.
+// 
+// MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS
+// KHRONOS STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS
+// SPECIFICATIONS AND HEADER INFORMATION ARE LOCATED AT
+//    https://www.khronos.org/registry/
+// 
+// THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+// MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
+// 
+
+#ifndef SPIRV_UNIFIED1_AMD_shader_explicit_vertex_parameter_H_
+#define SPIRV_UNIFIED1_AMD_shader_explicit_vertex_parameter_H_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+enum {
+    AMD_shader_explicit_vertex_parameterRevision = 4,
+    AMD_shader_explicit_vertex_parameterRevision_BitWidthPadding = 0x7fffffff
+};
+
+enum AMD_shader_explicit_vertex_parameterInstructions {
+    AMD_shader_explicit_vertex_parameterInterpolateAtVertexAMD = 1,
+    AMD_shader_explicit_vertex_parameterInstructionsMax = 0x7fffffff
+};
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // SPIRV_UNIFIED1_AMD_shader_explicit_vertex_parameter_H_
diff --git a/libs/spirv-headers/spirv/unified1/AMD_shader_trinary_minmax.h b/libs/spirv-headers/spirv/unified1/AMD_shader_trinary_minmax.h
new file mode 100644
index 00000000000..1b14997d27b
--- /dev/null
+++ b/libs/spirv-headers/spirv/unified1/AMD_shader_trinary_minmax.h
@@ -0,0 +1,58 @@
+// Copyright (c) 2020 The Khronos Group Inc.
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a
+// copy of this software and/or associated documentation files (the
+// "Materials"), to deal in the Materials without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Materials, and to
+// permit persons to whom the Materials are furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included
+// in all copies or substantial portions of the Materials.
+// 
+// MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS
+// KHRONOS STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS
+// SPECIFICATIONS AND HEADER INFORMATION ARE LOCATED AT
+//    https://www.khronos.org/registry/
+// 
+// THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+// MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
+// 
+
+#ifndef SPIRV_UNIFIED1_AMD_shader_trinary_minmax_H_
+#define SPIRV_UNIFIED1_AMD_shader_trinary_minmax_H_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+enum {
+    AMD_shader_trinary_minmaxRevision = 4,
+    AMD_shader_trinary_minmaxRevision_BitWidthPadding = 0x7fffffff
+};
+
+enum AMD_shader_trinary_minmaxInstructions {
+    AMD_shader_trinary_minmaxFMin3AMD = 1,
+    AMD_shader_trinary_minmaxUMin3AMD = 2,
+    AMD_shader_trinary_minmaxSMin3AMD = 3,
+    AMD_shader_trinary_minmaxFMax3AMD = 4,
+    AMD_shader_trinary_minmaxUMax3AMD = 5,
+    AMD_shader_trinary_minmaxSMax3AMD = 6,
+    AMD_shader_trinary_minmaxFMid3AMD = 7,
+    AMD_shader_trinary_minmaxUMid3AMD = 8,
+    AMD_shader_trinary_minmaxSMid3AMD = 9,
+    AMD_shader_trinary_minmaxInstructionsMax = 0x7fffffff
+};
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // SPIRV_UNIFIED1_AMD_shader_trinary_minmax_H_
diff --git a/libs/spirv-headers/spirv/unified1/DebugInfo.h b/libs/spirv-headers/spirv/unified1/DebugInfo.h
new file mode 100644
index 00000000000..c50a1318b1e
--- /dev/null
+++ b/libs/spirv-headers/spirv/unified1/DebugInfo.h
@@ -0,0 +1,143 @@
+// Copyright (c) 2017 The Khronos Group Inc.
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and/or associated documentation files (the "Materials"),
+// to deal in the Materials without restriction, including without limitation
+// the rights to use, copy, modify, merge, publish, distribute, sublicense,
+// and/or sell copies of the Materials, and to permit persons to whom the
+// Materials are furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Materials.
+// 
+// MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS KHRONOS
+// STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS SPECIFICATIONS AND
+// HEADER INFORMATION ARE LOCATED AT https://www.khronos.org/registry/ 
+// 
+// THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM,OUT OF OR IN CONNECTION WITH THE MATERIALS OR THE USE OR OTHER DEALINGS
+// IN THE MATERIALS.
+
+#ifndef SPIRV_UNIFIED1_DebugInfo_H_
+#define SPIRV_UNIFIED1_DebugInfo_H_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+enum {
+    DebugInfoVersion = 100,
+    DebugInfoVersion_BitWidthPadding = 0x7fffffff
+};
+enum {
+    DebugInfoRevision = 1,
+    DebugInfoRevision_BitWidthPadding = 0x7fffffff
+};
+
+enum DebugInfoInstructions {
+    DebugInfoDebugInfoNone = 0,
+    DebugInfoDebugCompilationUnit = 1,
+    DebugInfoDebugTypeBasic = 2,
+    DebugInfoDebugTypePointer = 3,
+    DebugInfoDebugTypeQualifier = 4,
+    DebugInfoDebugTypeArray = 5,
+    DebugInfoDebugTypeVector = 6,
+    DebugInfoDebugTypedef = 7,
+    DebugInfoDebugTypeFunction = 8,
+    DebugInfoDebugTypeEnum = 9,
+    DebugInfoDebugTypeComposite = 10,
+    DebugInfoDebugTypeMember = 11,
+    DebugInfoDebugTypeInheritance = 12,
+    DebugInfoDebugTypePtrToMember = 13,
+    DebugInfoDebugTypeTemplate = 14,
+    DebugInfoDebugTypeTemplateParameter = 15,
+    DebugInfoDebugTypeTemplateTemplateParameter = 16,
+    DebugInfoDebugTypeTemplateParameterPack = 17,
+    DebugInfoDebugGlobalVariable = 18,
+    DebugInfoDebugFunctionDeclaration = 19,
+    DebugInfoDebugFunction = 20,
+    DebugInfoDebugLexicalBlock = 21,
+    DebugInfoDebugLexicalBlockDiscriminator = 22,
+    DebugInfoDebugScope = 23,
+    DebugInfoDebugNoScope = 24,
+    DebugInfoDebugInlinedAt = 25,
+    DebugInfoDebugLocalVariable = 26,
+    DebugInfoDebugInlinedVariable = 27,
+    DebugInfoDebugDeclare = 28,
+    DebugInfoDebugValue = 29,
+    DebugInfoDebugOperation = 30,
+    DebugInfoDebugExpression = 31,
+    DebugInfoDebugMacroDef = 32,
+    DebugInfoDebugMacroUndef = 33,
+    DebugInfoInstructionsMax = 0x7fffffff
+};
+
+
+enum DebugInfoDebugInfoFlags {
+    DebugInfoFlagIsProtected = 0x01,
+    DebugInfoFlagIsPrivate = 0x02,
+    DebugInfoFlagIsPublic = 0x03,
+    DebugInfoFlagIsLocal = 0x04,
+    DebugInfoFlagIsDefinition = 0x08,
+    DebugInfoFlagFwdDecl = 0x10,
+    DebugInfoFlagArtificial = 0x20,
+    DebugInfoFlagExplicit = 0x40,
+    DebugInfoFlagPrototyped = 0x80,
+    DebugInfoFlagObjectPointer = 0x100,
+    DebugInfoFlagStaticMember = 0x200,
+    DebugInfoFlagIndirectVariable = 0x400,
+    DebugInfoFlagLValueReference = 0x800,
+    DebugInfoFlagRValueReference = 0x1000,
+    DebugInfoFlagIsOptimized = 0x2000,
+    DebugInfoDebugInfoFlagsMax = 0x7fffffff
+};
+
+enum DebugInfoDebugBaseTypeAttributeEncoding {
+    DebugInfoUnspecified = 0,
+    DebugInfoAddress = 1,
+    DebugInfoBoolean = 2,
+    DebugInfoFloat = 4,
+    DebugInfoSigned = 5,
+    DebugInfoSignedChar = 6,
+    DebugInfoUnsigned = 7,
+    DebugInfoUnsignedChar = 8,
+    DebugInfoDebugBaseTypeAttributeEncodingMax = 0x7fffffff
+};
+
+enum DebugInfoDebugCompositeType {
+    DebugInfoClass = 0,
+    DebugInfoStructure = 1,
+    DebugInfoUnion = 2,
+    DebugInfoDebugCompositeTypeMax = 0x7fffffff
+};
+
+enum DebugInfoDebugTypeQualifier {
+    DebugInfoConstType = 0,
+    DebugInfoVolatileType = 1,
+    DebugInfoRestrictType = 2,
+    DebugInfoDebugTypeQualifierMax = 0x7fffffff
+};
+
+enum DebugInfoDebugOperation {
+    DebugInfoDeref = 0,
+    DebugInfoPlus = 1,
+    DebugInfoMinus = 2,
+    DebugInfoPlusUconst = 3,
+    DebugInfoBitPiece = 4,
+    DebugInfoSwap = 5,
+    DebugInfoXderef = 6,
+    DebugInfoStackValue = 7,
+    DebugInfoConstu = 8,
+    DebugInfoDebugOperationMax = 0x7fffffff
+};
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // SPIRV_UNIFIED1_DebugInfo_H_
diff --git a/libs/spirv-headers/spirv/unified1/GLSL.std.450.h b/libs/spirv-headers/spirv/unified1/GLSL.std.450.h
new file mode 100644
index 00000000000..54cc00e9a88
--- /dev/null
+++ b/libs/spirv-headers/spirv/unified1/GLSL.std.450.h
@@ -0,0 +1,131 @@
+/*
+** Copyright (c) 2014-2016 The Khronos Group Inc.
+**
+** Permission is hereby granted, free of charge, to any person obtaining a copy
+** of this software and/or associated documentation files (the "Materials"),
+** to deal in the Materials without restriction, including without limitation
+** the rights to use, copy, modify, merge, publish, distribute, sublicense,
+** and/or sell copies of the Materials, and to permit persons to whom the
+** Materials are furnished to do so, subject to the following conditions:
+**
+** The above copyright notice and this permission notice shall be included in
+** all copies or substantial portions of the Materials.
+**
+** MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS KHRONOS
+** STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS SPECIFICATIONS AND
+** HEADER INFORMATION ARE LOCATED AT https://www.khronos.org/registry/ 
+**
+** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+** OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+** FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+** THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+** LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+** FROM,OUT OF OR IN CONNECTION WITH THE MATERIALS OR THE USE OR OTHER DEALINGS
+** IN THE MATERIALS.
+*/
+
+#ifndef GLSLstd450_H
+#define GLSLstd450_H
+
+static const int GLSLstd450Version = 100;
+static const int GLSLstd450Revision = 3;
+
+enum GLSLstd450 {
+    GLSLstd450Bad = 0,              // Don't use
+
+    GLSLstd450Round = 1,
+    GLSLstd450RoundEven = 2,
+    GLSLstd450Trunc = 3,
+    GLSLstd450FAbs = 4,
+    GLSLstd450SAbs = 5,
+    GLSLstd450FSign = 6,
+    GLSLstd450SSign = 7,
+    GLSLstd450Floor = 8,
+    GLSLstd450Ceil = 9,
+    GLSLstd450Fract = 10,
+
+    GLSLstd450Radians = 11,
+    GLSLstd450Degrees = 12,
+    GLSLstd450Sin = 13,
+    GLSLstd450Cos = 14,
+    GLSLstd450Tan = 15,
+    GLSLstd450Asin = 16,
+    GLSLstd450Acos = 17,
+    GLSLstd450Atan = 18,
+    GLSLstd450Sinh = 19,
+    GLSLstd450Cosh = 20,
+    GLSLstd450Tanh = 21,
+    GLSLstd450Asinh = 22,
+    GLSLstd450Acosh = 23,
+    GLSLstd450Atanh = 24,
+    GLSLstd450Atan2 = 25,
+
+    GLSLstd450Pow = 26,
+    GLSLstd450Exp = 27,
+    GLSLstd450Log = 28,
+    GLSLstd450Exp2 = 29,
+    GLSLstd450Log2 = 30,
+    GLSLstd450Sqrt = 31,
+    GLSLstd450InverseSqrt = 32,
+
+    GLSLstd450Determinant = 33,
+    GLSLstd450MatrixInverse = 34,
+
+    GLSLstd450Modf = 35,            // second operand needs an OpVariable to write to
+    GLSLstd450ModfStruct = 36,      // no OpVariable operand
+    GLSLstd450FMin = 37,
+    GLSLstd450UMin = 38,
+    GLSLstd450SMin = 39,
+    GLSLstd450FMax = 40,
+    GLSLstd450UMax = 41,
+    GLSLstd450SMax = 42,
+    GLSLstd450FClamp = 43,
+    GLSLstd450UClamp = 44,
+    GLSLstd450SClamp = 45,
+    GLSLstd450FMix = 46,
+    GLSLstd450IMix = 47,            // Reserved
+    GLSLstd450Step = 48,
+    GLSLstd450SmoothStep = 49,
+
+    GLSLstd450Fma = 50,
+    GLSLstd450Frexp = 51,            // second operand needs an OpVariable to write to
+    GLSLstd450FrexpStruct = 52,      // no OpVariable operand
+    GLSLstd450Ldexp = 53,
+
+    GLSLstd450PackSnorm4x8 = 54,
+    GLSLstd450PackUnorm4x8 = 55,
+    GLSLstd450PackSnorm2x16 = 56,
+    GLSLstd450PackUnorm2x16 = 57,
+    GLSLstd450PackHalf2x16 = 58,
+    GLSLstd450PackDouble2x32 = 59,
+    GLSLstd450UnpackSnorm2x16 = 60,
+    GLSLstd450UnpackUnorm2x16 = 61,
+    GLSLstd450UnpackHalf2x16 = 62,
+    GLSLstd450UnpackSnorm4x8 = 63,
+    GLSLstd450UnpackUnorm4x8 = 64,
+    GLSLstd450UnpackDouble2x32 = 65,
+
+    GLSLstd450Length = 66,
+    GLSLstd450Distance = 67,
+    GLSLstd450Cross = 68,
+    GLSLstd450Normalize = 69,
+    GLSLstd450FaceForward = 70,
+    GLSLstd450Reflect = 71,
+    GLSLstd450Refract = 72,
+
+    GLSLstd450FindILsb = 73,
+    GLSLstd450FindSMsb = 74,
+    GLSLstd450FindUMsb = 75,
+
+    GLSLstd450InterpolateAtCentroid = 76,
+    GLSLstd450InterpolateAtSample = 77,
+    GLSLstd450InterpolateAtOffset = 78,
+
+    GLSLstd450NMin = 79,
+    GLSLstd450NMax = 80,
+    GLSLstd450NClamp = 81,
+
+    GLSLstd450Count
+};
+
+#endif  // #ifndef GLSLstd450_H
diff --git a/libs/spirv-headers/spirv/unified1/NonSemanticClspvReflection.h b/libs/spirv-headers/spirv/unified1/NonSemanticClspvReflection.h
new file mode 100644
index 00000000000..fa7061d8454
--- /dev/null
+++ b/libs/spirv-headers/spirv/unified1/NonSemanticClspvReflection.h
@@ -0,0 +1,73 @@
+// Copyright (c) 2020 The Khronos Group Inc.
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a
+// copy of this software and/or associated documentation files (the
+// "Materials"), to deal in the Materials without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Materials, and to
+// permit persons to whom the Materials are furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included
+// in all copies or substantial portions of the Materials.
+// 
+// MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS
+// KHRONOS STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS
+// SPECIFICATIONS AND HEADER INFORMATION ARE LOCATED AT
+//    https://www.khronos.org/registry/
+// 
+// THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+// MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
+// 
+
+#ifndef SPIRV_UNIFIED1_NonSemanticClspvReflection_H_
+#define SPIRV_UNIFIED1_NonSemanticClspvReflection_H_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+enum {
+    NonSemanticClspvReflectionRevision = 1,
+    NonSemanticClspvReflectionRevision_BitWidthPadding = 0x7fffffff
+};
+
+enum NonSemanticClspvReflectionInstructions {
+    NonSemanticClspvReflectionKernel = 1,
+    NonSemanticClspvReflectionArgumentInfo = 2,
+    NonSemanticClspvReflectionArgumentStorageBuffer = 3,
+    NonSemanticClspvReflectionArgumentUniform = 4,
+    NonSemanticClspvReflectionArgumentPodStorageBuffer = 5,
+    NonSemanticClspvReflectionArgumentPodUniform = 6,
+    NonSemanticClspvReflectionArgumentPodPushConstant = 7,
+    NonSemanticClspvReflectionArgumentSampledImage = 8,
+    NonSemanticClspvReflectionArgumentStorageImage = 9,
+    NonSemanticClspvReflectionArgumentSampler = 10,
+    NonSemanticClspvReflectionArgumentWorkgroup = 11,
+    NonSemanticClspvReflectionSpecConstantWorkgroupSize = 12,
+    NonSemanticClspvReflectionSpecConstantGlobalOffset = 13,
+    NonSemanticClspvReflectionSpecConstantWorkDim = 14,
+    NonSemanticClspvReflectionPushConstantGlobalOffset = 15,
+    NonSemanticClspvReflectionPushConstantEnqueuedLocalSize = 16,
+    NonSemanticClspvReflectionPushConstantGlobalSize = 17,
+    NonSemanticClspvReflectionPushConstantRegionOffset = 18,
+    NonSemanticClspvReflectionPushConstantNumWorkgroups = 19,
+    NonSemanticClspvReflectionPushConstantRegionGroupOffset = 20,
+    NonSemanticClspvReflectionConstantDataStorageBuffer = 21,
+    NonSemanticClspvReflectionConstantDataUniform = 22,
+    NonSemanticClspvReflectionLiteralSampler = 23,
+    NonSemanticClspvReflectionPropertyRequiredWorkgroupSize = 24,
+    NonSemanticClspvReflectionInstructionsMax = 0x7fffffff
+};
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // SPIRV_UNIFIED1_NonSemanticClspvReflection_H_
diff --git a/libs/spirv-headers/spirv/unified1/NonSemanticDebugPrintf.h b/libs/spirv-headers/spirv/unified1/NonSemanticDebugPrintf.h
new file mode 100644
index 00000000000..83796d75e56
--- /dev/null
+++ b/libs/spirv-headers/spirv/unified1/NonSemanticDebugPrintf.h
@@ -0,0 +1,50 @@
+// Copyright (c) 2020 The Khronos Group Inc.
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a
+// copy of this software and/or associated documentation files (the
+// "Materials"), to deal in the Materials without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Materials, and to
+// permit persons to whom the Materials are furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included
+// in all copies or substantial portions of the Materials.
+// 
+// MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS
+// KHRONOS STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS
+// SPECIFICATIONS AND HEADER INFORMATION ARE LOCATED AT
+//    https://www.khronos.org/registry/
+// 
+// THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+// MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
+// 
+
+#ifndef SPIRV_UNIFIED1_NonSemanticDebugPrintf_H_
+#define SPIRV_UNIFIED1_NonSemanticDebugPrintf_H_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+enum {
+    NonSemanticDebugPrintfRevision = 1,
+    NonSemanticDebugPrintfRevision_BitWidthPadding = 0x7fffffff
+};
+
+enum NonSemanticDebugPrintfInstructions {
+    NonSemanticDebugPrintfDebugPrintf = 1,
+    NonSemanticDebugPrintfInstructionsMax = 0x7fffffff
+};
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // SPIRV_UNIFIED1_NonSemanticDebugPrintf_H_
diff --git a/libs/spirv-headers/spirv/unified1/OpenCL.std.h b/libs/spirv-headers/spirv/unified1/OpenCL.std.h
new file mode 100644
index 00000000000..2745e30df3b
--- /dev/null
+++ b/libs/spirv-headers/spirv/unified1/OpenCL.std.h
@@ -0,0 +1,401 @@
+/*
+** Copyright (c) 2015-2019 The Khronos Group Inc.
+**
+** Permission is hereby granted, free of charge, to any person obtaining a copy
+** of this software and/or associated documentation files (the "Materials"),
+** to deal in the Materials without restriction, including without limitation
+** the rights to use, copy, modify, merge, publish, distribute, sublicense,
+** and/or sell copies of the Materials, and to permit persons to whom the
+** Materials are furnished to do so, subject to the following conditions:
+**
+** The above copyright notice and this permission notice shall be included in
+** all copies or substantial portions of the Materials.
+**
+** MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS KHRONOS
+** STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS SPECIFICATIONS AND
+** HEADER INFORMATION ARE LOCATED AT https://www.khronos.org/registry/ 
+**
+** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+** OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+** FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+** THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+** LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+** FROM,OUT OF OR IN CONNECTION WITH THE MATERIALS OR THE USE OR OTHER DEALINGS
+** IN THE MATERIALS.
+*/
+
+#ifndef OPENCLstd_H
+#define OPENCLstd_H
+
+#ifdef __cplusplus
+namespace OpenCLLIB {
+
+enum Entrypoints {
+
+    // Section 2.1: Math extended instructions
+    Acos = 0,
+    Acosh = 1,
+    Acospi = 2,
+    Asin = 3,
+    Asinh = 4,
+    Asinpi = 5,
+    Atan = 6,
+    Atan2 = 7,
+    Atanh = 8,
+    Atanpi = 9,
+    Atan2pi = 10,
+    Cbrt = 11,
+    Ceil = 12,
+    Copysign = 13,
+    Cos = 14,
+    Cosh = 15,
+    Cospi = 16,
+    Erfc = 17,
+    Erf = 18,
+    Exp = 19,
+    Exp2 = 20,
+    Exp10 = 21,
+    Expm1 = 22,
+    Fabs = 23,
+    Fdim = 24,
+    Floor = 25,
+    Fma = 26,
+    Fmax = 27,
+    Fmin = 28,
+    Fmod = 29,
+    Fract = 30, 
+    Frexp = 31,
+    Hypot = 32,
+    Ilogb = 33,
+    Ldexp = 34,
+    Lgamma = 35,
+    Lgamma_r = 36,
+    Log = 37,
+    Log2 = 38,
+    Log10 = 39,
+    Log1p = 40,
+    Logb = 41,
+    Mad = 42,
+    Maxmag = 43,
+    Minmag = 44,
+    Modf = 45,
+    Nan = 46,
+    Nextafter = 47,
+    Pow = 48,
+    Pown = 49,
+    Powr = 50,
+    Remainder = 51,
+    Remquo = 52,
+    Rint = 53,
+    Rootn = 54,
+    Round = 55,
+    Rsqrt = 56,
+    Sin = 57,
+    Sincos = 58,
+    Sinh = 59,
+    Sinpi = 60,
+    Sqrt = 61,
+    Tan = 62,
+    Tanh = 63,
+    Tanpi = 64,
+    Tgamma = 65,
+    Trunc = 66,
+    Half_cos = 67,
+    Half_divide = 68,
+    Half_exp = 69,
+    Half_exp2 = 70,
+    Half_exp10 = 71,
+    Half_log = 72,
+    Half_log2 = 73,
+    Half_log10 = 74,
+    Half_powr = 75,
+    Half_recip = 76,
+    Half_rsqrt = 77,
+    Half_sin = 78,
+    Half_sqrt = 79,
+    Half_tan = 80,
+    Native_cos = 81,
+    Native_divide = 82,
+    Native_exp = 83,
+    Native_exp2 = 84,
+    Native_exp10 = 85,
+    Native_log = 86,
+    Native_log2 = 87,
+    Native_log10 = 88,
+    Native_powr = 89,
+    Native_recip = 90,
+    Native_rsqrt = 91,
+    Native_sin = 92,
+    Native_sqrt = 93,
+    Native_tan = 94,
+    
+    // Section 2.2: Integer instructions
+    SAbs = 141,
+    SAbs_diff = 142,
+    SAdd_sat = 143,
+    UAdd_sat = 144,
+    SHadd = 145,
+    UHadd = 146,
+    SRhadd = 147,
+    URhadd = 148,
+    SClamp = 149,
+    UClamp = 150, 
+    Clz = 151,
+    Ctz = 152,    
+    SMad_hi = 153,
+    UMad_sat = 154,
+    SMad_sat = 155,
+    SMax = 156,
+    UMax = 157,
+    SMin = 158,
+    UMin = 159,
+    SMul_hi = 160,
+    Rotate = 161,
+    SSub_sat = 162,
+    USub_sat = 163,
+    U_Upsample = 164,
+    S_Upsample = 165,
+    Popcount = 166,
+    SMad24 = 167,
+    UMad24 = 168,
+    SMul24 = 169,
+    UMul24 = 170,
+    UAbs = 201,
+    UAbs_diff = 202,
+    UMul_hi = 203,
+    UMad_hi = 204,
+
+    // Section 2.3: Common instructions
+    FClamp = 95,
+    Degrees = 96,
+    FMax_common = 97,
+    FMin_common = 98, 
+    Mix = 99,
+    Radians = 100,
+    Step = 101,
+    Smoothstep = 102,
+    Sign = 103,
+
+    // Section 2.4: Geometric instructions
+    Cross = 104,
+    Distance = 105, 
+    Length = 106,
+    Normalize = 107,
+    Fast_distance = 108,
+    Fast_length = 109,
+    Fast_normalize = 110,
+
+    // Section 2.5: Relational instructions
+    Bitselect = 186,
+    Select = 187,
+
+    // Section 2.6: Vector Data Load and Store instructions
+    Vloadn = 171,
+    Vstoren = 172,
+    Vload_half = 173,
+    Vload_halfn = 174,
+    Vstore_half = 175,
+    Vstore_half_r = 176,
+    Vstore_halfn = 177,
+    Vstore_halfn_r = 178,
+    Vloada_halfn = 179,
+    Vstorea_halfn = 180,
+    Vstorea_halfn_r = 181,
+
+    // Section 2.7: Miscellaneous Vector instructions
+    Shuffle = 182,
+    Shuffle2 = 183,
+
+    // Section 2.8: Misc instructions 
+    Printf = 184,
+    Prefetch = 185,
+};
+
+} // end namespace OpenCLLIB
+
+#else
+
+enum OpenCLstd_Entrypoints {
+
+    // Section 2.1: Math extended instructions
+    OpenCLstd_Acos = 0,
+    OpenCLstd_Acosh = 1,
+    OpenCLstd_Acospi = 2,
+    OpenCLstd_Asin = 3,
+    OpenCLstd_Asinh = 4,
+    OpenCLstd_Asinpi = 5,
+    OpenCLstd_Atan = 6,
+    OpenCLstd_Atan2 = 7,
+    OpenCLstd_Atanh = 8,
+    OpenCLstd_Atanpi = 9,
+    OpenCLstd_Atan2pi = 10,
+    OpenCLstd_Cbrt = 11,
+    OpenCLstd_Ceil = 12,
+    OpenCLstd_Copysign = 13,
+    OpenCLstd_Cos = 14,
+    OpenCLstd_Cosh = 15,
+    OpenCLstd_Cospi = 16,
+    OpenCLstd_Erfc = 17,
+    OpenCLstd_Erf = 18,
+    OpenCLstd_Exp = 19,
+    OpenCLstd_Exp2 = 20,
+    OpenCLstd_Exp10 = 21,
+    OpenCLstd_Expm1 = 22,
+    OpenCLstd_Fabs = 23,
+    OpenCLstd_Fdim = 24,
+    OpenCLstd_Floor = 25,
+    OpenCLstd_Fma = 26,
+    OpenCLstd_Fmax = 27,
+    OpenCLstd_Fmin = 28,
+    OpenCLstd_Fmod = 29,
+    OpenCLstd_Fract = 30, 
+    OpenCLstd_Frexp = 31,
+    OpenCLstd_Hypot = 32,
+    OpenCLstd_Ilogb = 33,
+    OpenCLstd_Ldexp = 34,
+    OpenCLstd_Lgamma = 35,
+    OpenCLstd_Lgamma_r = 36,
+    OpenCLstd_Log = 37,
+    OpenCLstd_Log2 = 38,
+    OpenCLstd_Log10 = 39,
+    OpenCLstd_Log1p = 40,
+    OpenCLstd_Logb = 41,
+    OpenCLstd_Mad = 42,
+    OpenCLstd_Maxmag = 43,
+    OpenCLstd_Minmag = 44,
+    OpenCLstd_Modf = 45,
+    OpenCLstd_Nan = 46,
+    OpenCLstd_Nextafter = 47,
+    OpenCLstd_Pow = 48,
+    OpenCLstd_Pown = 49,
+    OpenCLstd_Powr = 50,
+    OpenCLstd_Remainder = 51,
+    OpenCLstd_Remquo = 52,
+    OpenCLstd_Rint = 53,
+    OpenCLstd_Rootn = 54,
+    OpenCLstd_Round = 55,
+    OpenCLstd_Rsqrt = 56,
+    OpenCLstd_Sin = 57,
+    OpenCLstd_Sincos = 58,
+    OpenCLstd_Sinh = 59,
+    OpenCLstd_Sinpi = 60,
+    OpenCLstd_Sqrt = 61,
+    OpenCLstd_Tan = 62,
+    OpenCLstd_Tanh = 63,
+    OpenCLstd_Tanpi = 64,
+    OpenCLstd_Tgamma = 65,
+    OpenCLstd_Trunc = 66,
+    OpenCLstd_Half_cos = 67,
+    OpenCLstd_Half_divide = 68,
+    OpenCLstd_Half_exp = 69,
+    OpenCLstd_Half_exp2 = 70,
+    OpenCLstd_Half_exp10 = 71,
+    OpenCLstd_Half_log = 72,
+    OpenCLstd_Half_log2 = 73,
+    OpenCLstd_Half_log10 = 74,
+    OpenCLstd_Half_powr = 75,
+    OpenCLstd_Half_recip = 76,
+    OpenCLstd_Half_rsqrt = 77,
+    OpenCLstd_Half_sin = 78,
+    OpenCLstd_Half_sqrt = 79,
+    OpenCLstd_Half_tan = 80,
+    OpenCLstd_Native_cos = 81,
+    OpenCLstd_Native_divide = 82,
+    OpenCLstd_Native_exp = 83,
+    OpenCLstd_Native_exp2 = 84,
+    OpenCLstd_Native_exp10 = 85,
+    OpenCLstd_Native_log = 86,
+    OpenCLstd_Native_log2 = 87,
+    OpenCLstd_Native_log10 = 88,
+    OpenCLstd_Native_powr = 89,
+    OpenCLstd_Native_recip = 90,
+    OpenCLstd_Native_rsqrt = 91,
+    OpenCLstd_Native_sin = 92,
+    OpenCLstd_Native_sqrt = 93,
+    OpenCLstd_Native_tan = 94,
+    
+    // Section 2.2: Integer instructions
+    OpenCLstd_SAbs = 141,
+    OpenCLstd_SAbs_diff = 142,
+    OpenCLstd_SAdd_sat = 143,
+    OpenCLstd_UAdd_sat = 144,
+    OpenCLstd_SHadd = 145,
+    OpenCLstd_UHadd = 146,
+    OpenCLstd_SRhadd = 147,
+    OpenCLstd_URhadd = 148,
+    OpenCLstd_SClamp = 149,
+    OpenCLstd_UClamp = 150, 
+    OpenCLstd_Clz = 151,
+    OpenCLstd_Ctz = 152,    
+    OpenCLstd_SMad_hi = 153,
+    OpenCLstd_UMad_sat = 154,
+    OpenCLstd_SMad_sat = 155,
+    OpenCLstd_SMax = 156,
+    OpenCLstd_UMax = 157,
+    OpenCLstd_SMin = 158,
+    OpenCLstd_UMin = 159,
+    OpenCLstd_SMul_hi = 160,
+    OpenCLstd_Rotate = 161,
+    OpenCLstd_SSub_sat = 162,
+    OpenCLstd_USub_sat = 163,
+    OpenCLstd_U_Upsample = 164,
+    OpenCLstd_S_Upsample = 165,
+    OpenCLstd_Popcount = 166,
+    OpenCLstd_SMad24 = 167,
+    OpenCLstd_UMad24 = 168,
+    OpenCLstd_SMul24 = 169,
+    OpenCLstd_UMul24 = 170,
+    OpenCLstd_UAbs = 201,
+    OpenCLstd_UAbs_diff = 202,
+    OpenCLstd_UMul_hi = 203,
+    OpenCLstd_UMad_hi = 204,
+
+    // Section 2.3: Common instructions
+    OpenCLstd_FClamp = 95,
+    OpenCLstd_Degrees = 96,
+    OpenCLstd_FMax_common = 97,
+    OpenCLstd_FMin_common = 98, 
+    OpenCLstd_Mix = 99,
+    OpenCLstd_Radians = 100,
+    OpenCLstd_Step = 101,
+    OpenCLstd_Smoothstep = 102,
+    OpenCLstd_Sign = 103,
+
+    // Section 2.4: Geometric instructions
+    OpenCLstd_Cross = 104,
+    OpenCLstd_Distance = 105, 
+    OpenCLstd_Length = 106,
+    OpenCLstd_Normalize = 107,
+    OpenCLstd_Fast_distance = 108,
+    OpenCLstd_Fast_length = 109,
+    OpenCLstd_Fast_normalize = 110,
+
+    // Section 2.5: Relational instructions
+    OpenCLstd_Bitselect = 186,
+    OpenCLstd_Select = 187,
+
+    // Section 2.6: Vector Data Load and Store instructions
+    OpenCLstd_Vloadn = 171,
+    OpenCLstd_Vstoren = 172,
+    OpenCLstd_Vload_half = 173,
+    OpenCLstd_Vload_halfn = 174,
+    OpenCLstd_Vstore_half = 175,
+    OpenCLstd_Vstore_half_r = 176,
+    OpenCLstd_Vstore_halfn = 177,
+    OpenCLstd_Vstore_halfn_r = 178,
+    OpenCLstd_Vloada_halfn = 179,
+    OpenCLstd_Vstorea_halfn = 180,
+    OpenCLstd_Vstorea_halfn_r = 181,
+
+    // Section 2.7: Miscellaneous Vector instructions
+    OpenCLstd_Shuffle = 182,
+    OpenCLstd_Shuffle2 = 183,
+
+    // Section 2.8: Misc instructions 
+    OpenCLstd_Printf = 184,
+    OpenCLstd_Prefetch = 185,
+};
+
+#endif
+
+#endif  // #ifndef OPENCLstd_H
diff --git a/libs/spirv-headers/spirv/unified1/OpenCLDebugInfo100.h b/libs/spirv-headers/spirv/unified1/OpenCLDebugInfo100.h
new file mode 100644
index 00000000000..1149980ffbc
--- /dev/null
+++ b/libs/spirv-headers/spirv/unified1/OpenCLDebugInfo100.h
@@ -0,0 +1,156 @@
+// Copyright (c) 2018 The Khronos Group Inc.
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and/or associated documentation files (the "Materials"),
+// to deal in the Materials without restriction, including without limitation
+// the rights to use, copy, modify, merge, publish, distribute, sublicense,
+// and/or sell copies of the Materials, and to permit persons to whom the
+// Materials are furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Materials.
+// 
+// MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS KHRONOS
+// STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS SPECIFICATIONS AND
+// HEADER INFORMATION ARE LOCATED AT https://www.khronos.org/registry/ 
+// 
+// THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM,OUT OF OR IN CONNECTION WITH THE MATERIALS OR THE USE OR OTHER DEALINGS
+// IN THE MATERIALS.
+
+#ifndef SPIRV_UNIFIED1_OpenCLDebugInfo100_H_
+#define SPIRV_UNIFIED1_OpenCLDebugInfo100_H_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+enum {
+    OpenCLDebugInfo100Version = 200,
+    OpenCLDebugInfo100Version_BitWidthPadding = 0x7fffffff
+};
+enum {
+    OpenCLDebugInfo100Revision = 2,
+    OpenCLDebugInfo100Revision_BitWidthPadding = 0x7fffffff
+};
+
+enum OpenCLDebugInfo100Instructions {
+    OpenCLDebugInfo100DebugInfoNone = 0,
+    OpenCLDebugInfo100DebugCompilationUnit = 1,
+    OpenCLDebugInfo100DebugTypeBasic = 2,
+    OpenCLDebugInfo100DebugTypePointer = 3,
+    OpenCLDebugInfo100DebugTypeQualifier = 4,
+    OpenCLDebugInfo100DebugTypeArray = 5,
+    OpenCLDebugInfo100DebugTypeVector = 6,
+    OpenCLDebugInfo100DebugTypedef = 7,
+    OpenCLDebugInfo100DebugTypeFunction = 8,
+    OpenCLDebugInfo100DebugTypeEnum = 9,
+    OpenCLDebugInfo100DebugTypeComposite = 10,
+    OpenCLDebugInfo100DebugTypeMember = 11,
+    OpenCLDebugInfo100DebugTypeInheritance = 12,
+    OpenCLDebugInfo100DebugTypePtrToMember = 13,
+    OpenCLDebugInfo100DebugTypeTemplate = 14,
+    OpenCLDebugInfo100DebugTypeTemplateParameter = 15,
+    OpenCLDebugInfo100DebugTypeTemplateTemplateParameter = 16,
+    OpenCLDebugInfo100DebugTypeTemplateParameterPack = 17,
+    OpenCLDebugInfo100DebugGlobalVariable = 18,
+    OpenCLDebugInfo100DebugFunctionDeclaration = 19,
+    OpenCLDebugInfo100DebugFunction = 20,
+    OpenCLDebugInfo100DebugLexicalBlock = 21,
+    OpenCLDebugInfo100DebugLexicalBlockDiscriminator = 22,
+    OpenCLDebugInfo100DebugScope = 23,
+    OpenCLDebugInfo100DebugNoScope = 24,
+    OpenCLDebugInfo100DebugInlinedAt = 25,
+    OpenCLDebugInfo100DebugLocalVariable = 26,
+    OpenCLDebugInfo100DebugInlinedVariable = 27,
+    OpenCLDebugInfo100DebugDeclare = 28,
+    OpenCLDebugInfo100DebugValue = 29,
+    OpenCLDebugInfo100DebugOperation = 30,
+    OpenCLDebugInfo100DebugExpression = 31,
+    OpenCLDebugInfo100DebugMacroDef = 32,
+    OpenCLDebugInfo100DebugMacroUndef = 33,
+    OpenCLDebugInfo100DebugImportedEntity = 34,
+    OpenCLDebugInfo100DebugSource = 35,
+    OpenCLDebugInfo100InstructionsMax = 0x7fffffff
+};
+
+
+enum OpenCLDebugInfo100DebugInfoFlags {
+    OpenCLDebugInfo100FlagIsProtected = 0x01,
+    OpenCLDebugInfo100FlagIsPrivate = 0x02,
+    OpenCLDebugInfo100FlagIsPublic = 0x03,
+    OpenCLDebugInfo100FlagIsLocal = 0x04,
+    OpenCLDebugInfo100FlagIsDefinition = 0x08,
+    OpenCLDebugInfo100FlagFwdDecl = 0x10,
+    OpenCLDebugInfo100FlagArtificial = 0x20,
+    OpenCLDebugInfo100FlagExplicit = 0x40,
+    OpenCLDebugInfo100FlagPrototyped = 0x80,
+    OpenCLDebugInfo100FlagObjectPointer = 0x100,
+    OpenCLDebugInfo100FlagStaticMember = 0x200,
+    OpenCLDebugInfo100FlagIndirectVariable = 0x400,
+    OpenCLDebugInfo100FlagLValueReference = 0x800,
+    OpenCLDebugInfo100FlagRValueReference = 0x1000,
+    OpenCLDebugInfo100FlagIsOptimized = 0x2000,
+    OpenCLDebugInfo100FlagIsEnumClass = 0x4000,
+    OpenCLDebugInfo100FlagTypePassByValue = 0x8000,
+    OpenCLDebugInfo100FlagTypePassByReference = 0x10000,
+    OpenCLDebugInfo100DebugInfoFlagsMax = 0x7fffffff
+};
+
+enum OpenCLDebugInfo100DebugBaseTypeAttributeEncoding {
+    OpenCLDebugInfo100Unspecified = 0,
+    OpenCLDebugInfo100Address = 1,
+    OpenCLDebugInfo100Boolean = 2,
+    OpenCLDebugInfo100Float = 3,
+    OpenCLDebugInfo100Signed = 4,
+    OpenCLDebugInfo100SignedChar = 5,
+    OpenCLDebugInfo100Unsigned = 6,
+    OpenCLDebugInfo100UnsignedChar = 7,
+    OpenCLDebugInfo100DebugBaseTypeAttributeEncodingMax = 0x7fffffff
+};
+
+enum OpenCLDebugInfo100DebugCompositeType {
+    OpenCLDebugInfo100Class = 0,
+    OpenCLDebugInfo100Structure = 1,
+    OpenCLDebugInfo100Union = 2,
+    OpenCLDebugInfo100DebugCompositeTypeMax = 0x7fffffff
+};
+
+enum OpenCLDebugInfo100DebugTypeQualifier {
+    OpenCLDebugInfo100ConstType = 0,
+    OpenCLDebugInfo100VolatileType = 1,
+    OpenCLDebugInfo100RestrictType = 2,
+    OpenCLDebugInfo100AtomicType = 3,
+    OpenCLDebugInfo100DebugTypeQualifierMax = 0x7fffffff
+};
+
+enum OpenCLDebugInfo100DebugOperation {
+    OpenCLDebugInfo100Deref = 0,
+    OpenCLDebugInfo100Plus = 1,
+    OpenCLDebugInfo100Minus = 2,
+    OpenCLDebugInfo100PlusUconst = 3,
+    OpenCLDebugInfo100BitPiece = 4,
+    OpenCLDebugInfo100Swap = 5,
+    OpenCLDebugInfo100Xderef = 6,
+    OpenCLDebugInfo100StackValue = 7,
+    OpenCLDebugInfo100Constu = 8,
+    OpenCLDebugInfo100Fragment = 9,
+    OpenCLDebugInfo100DebugOperationMax = 0x7fffffff
+};
+
+enum OpenCLDebugInfo100DebugImportedEntity {
+    OpenCLDebugInfo100ImportedModule = 0,
+    OpenCLDebugInfo100ImportedDeclaration = 1,
+    OpenCLDebugInfo100DebugImportedEntityMax = 0x7fffffff
+};
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // SPIRV_UNIFIED1_OpenCLDebugInfo100_H_
diff --git a/libs/spirv-headers/spirv/unified1/extinst.debuginfo.grammar.json b/libs/spirv-headers/spirv/unified1/extinst.debuginfo.grammar.json
new file mode 100644
index 00000000000..9212f6f48c5
--- /dev/null
+++ b/libs/spirv-headers/spirv/unified1/extinst.debuginfo.grammar.json
@@ -0,0 +1,568 @@
+{
+  "copyright" : [
+    "Copyright (c) 2017 The Khronos Group Inc.",
+    "",
+    "Permission is hereby granted, free of charge, to any person obtaining a copy",
+    "of this software and/or associated documentation files (the \"Materials\"),",
+    "to deal in the Materials without restriction, including without limitation",
+    "the rights to use, copy, modify, merge, publish, distribute, sublicense,",
+    "and/or sell copies of the Materials, and to permit persons to whom the",
+    "Materials are furnished to do so, subject to the following conditions:",
+    "",
+    "The above copyright notice and this permission notice shall be included in",
+    "all copies or substantial portions of the Materials.",
+    "",
+    "MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS KHRONOS",
+    "STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS SPECIFICATIONS AND",
+    "HEADER INFORMATION ARE LOCATED AT https://www.khronos.org/registry/ ",
+    "",
+    "THE MATERIALS ARE PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS",
+    "OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,",
+    "FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL",
+    "THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER",
+    "LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING",
+    "FROM,OUT OF OR IN CONNECTION WITH THE MATERIALS OR THE USE OR OTHER DEALINGS",
+    "IN THE MATERIALS."
+  ],
+  "version" : 100,
+  "revision" : 1,
+  "instructions" : [
+    {
+      "opname" : "DebugInfoNone",
+      "opcode" : 0
+    },
+    {
+      "opname" : "DebugCompilationUnit",
+      "opcode" : 1,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'Source'" },
+        { "kind" : "LiteralInteger", "name" : "'Version'" },
+        { "kind" : "LiteralInteger", "name" : "'DWARF Version'" }
+      ]
+    },
+    {
+      "opname" : "DebugTypeBasic",
+      "opcode" : 2,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'Name'" },
+        { "kind" : "IdRef", "name" : "'Size'" },
+        { "kind" : "DebugBaseTypeAttributeEncoding", "name" : "'Encoding'" }
+      ]
+    },
+    {
+      "opname" : "DebugTypePointer",
+      "opcode" : 3,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'Base Type'" },
+        { "kind" : "StorageClass", "name" : "'Storage Class'" },
+        { "kind" : "DebugInfoFlags", "name" : "'Literal Flags'" }
+      ]
+    },
+    {
+      "opname" : "DebugTypeQualifier",
+      "opcode" : 4,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'Base Type'" },
+        { "kind" : "DebugTypeQualifier", "name" : "'Type Qualifier'" }
+      ]
+    },
+    {
+      "opname" : "DebugTypeArray",
+      "opcode" : 5,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'Base Type'" },
+        { "kind" : "IdRef", "name" : "'Component Counts'", "quantifier" : "*" }
+      ]
+    },
+    {
+      "opname" : "DebugTypeVector",
+      "opcode" : 6,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'Base Type'" },
+        { "kind" : "LiteralInteger", "name" : "'Component Count'" }
+      ]
+    },
+    {
+      "opname" : "DebugTypedef",
+      "opcode" : 7,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'Name'" },
+        { "kind" : "IdRef", "name" : "'Base Type'" },
+        { "kind" : "IdRef", "name" : "'Source'" },
+        { "kind" : "LiteralInteger", "name" : "'Line'" },
+        { "kind" : "LiteralInteger", "name" : "'Column'" },
+        { "kind" : "IdRef", "name" : "'Parent'" }
+      ]
+    },
+    {
+      "opname" : "DebugTypeFunction",
+      "opcode" : 8,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'Return Type'" },
+        { "kind" : "IdRef", "name" : "'Paramter Types'", "quantifier" : "*" }
+      ]
+    },
+    {
+      "opname" : "DebugTypeEnum",
+      "opcode" : 9,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'Name'" },
+        { "kind" : "IdRef", "name" : "'Underlying Type'" },
+        { "kind" : "IdRef", "name" : "'Source'" },
+        { "kind" : "LiteralInteger", "name" : "'Line'" },
+        { "kind" : "LiteralInteger", "name" : "'Column'" },
+        { "kind" : "IdRef", "name" : "'Parent'" },
+        { "kind" : "IdRef", "name" : "'Size'" },
+        { "kind" : "DebugInfoFlags", "name" : "'Flags'" },
+        { "kind" : "PairIdRefIdRef", "name" : "'Value, Name, Value, Name, ...'", "quantifier" : "*" }
+      ]
+    },
+    {
+      "opname" : "DebugTypeComposite",
+      "opcode" : 10,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'Name'" },
+        { "kind" : "DebugCompositeType", "name" : "'Tag'" },
+        { "kind" : "IdRef", "name" : "'Source'" },
+        { "kind" : "LiteralInteger", "name" : "'Line'" },
+        { "kind" : "LiteralInteger", "name" : "'Column'" },
+        { "kind" : "IdRef", "name" : "'Parent'" },
+        { "kind" : "IdRef", "name" : "'Size'" },
+        { "kind" : "DebugInfoFlags", "name" : "'Flags'" },
+        { "kind" : "IdRef", "name" : "'Members'", "quantifier" : "*" }
+      ]
+    },
+    {
+      "opname" : "DebugTypeMember",
+      "opcode" : 11,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'Name'" },
+        { "kind" : "IdRef", "name" : "'Type'" },
+        { "kind" : "IdRef", "name" : "'Source'" },
+        { "kind" : "LiteralInteger", "name" : "'Line'" },
+        { "kind" : "LiteralInteger", "name" : "'Column'" },
+        { "kind" : "IdRef", "name" : "'Parent'" },
+        { "kind" : "IdRef", "name" : "'Offset'" },
+        { "kind" : "IdRef", "name" : "'Size'" },
+        { "kind" : "DebugInfoFlags", "name" : "'Flags'" },
+        { "kind" : "IdRef", "name" : "'Value'", "quantifier" : "?" }
+      ]
+    },
+    {
+      "opname" : "DebugTypeInheritance",
+      "opcode" : 12,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'Child'" },
+        { "kind" : "IdRef", "name" : "'Parent'" },
+        { "kind" : "IdRef", "name" : "'Offset'" },
+        { "kind" : "IdRef", "name" : "'Size'" },
+        { "kind" : "DebugInfoFlags", "name" : "'Flags'" }
+      ]
+    },
+    {
+      "opname" : "DebugTypePtrToMember",
+      "opcode" : 13,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'Member Type'" },
+        { "kind" : "IdRef", "name" : "'Parent'" }
+      ]
+    },
+    {
+      "opname" : "DebugTypeTemplate",
+      "opcode" : 14,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'Target'" },
+        { "kind" : "IdRef", "name" : "'Parameters'", "quantifier" : "*" }
+      ]
+    },
+    {
+      "opname" : "DebugTypeTemplateParameter",
+      "opcode" : 15,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'Name'" },
+        { "kind" : "IdRef", "name" : "'Actual Type'" },
+        { "kind" : "IdRef", "name" : "'Value'" },
+        { "kind" : "IdRef", "name" : "'Source'" },
+        { "kind" : "LiteralInteger", "name" : "'Line'" },
+        { "kind" : "LiteralInteger", "name" : "'Column'" }
+      ]
+    },
+    {
+      "opname" : "DebugTypeTemplateTemplateParameter",
+      "opcode" : 16,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'Name'" },
+        { "kind" : "IdRef", "name" : "'Template Name'" },
+        { "kind" : "IdRef", "name" : "'Source'" },
+        { "kind" : "LiteralInteger", "name" : "'Line'" },
+        { "kind" : "LiteralInteger", "name" : "'Column'" }
+      ]
+    },
+    {
+      "opname" : "DebugTypeTemplateParameterPack",
+      "opcode" : 17,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'Name'" },
+        { "kind" : "IdRef", "name" : "'Source'" },
+        { "kind" : "LiteralInteger", "name" : "'Line'" },
+        { "kind" : "LiteralInteger", "name" : "'Column'" },
+        { "kind" : "IdRef", "name" : "'Template Parameters'", "quantifier" : "*" }
+      ]
+    },
+    {
+      "opname" : "DebugGlobalVariable",
+      "opcode" : 18,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'Name'" },
+        { "kind" : "IdRef", "name" : "'Type'" },
+        { "kind" : "IdRef", "name" : "'Source'" },
+        { "kind" : "LiteralInteger", "name" : "'Line'" },
+        { "kind" : "LiteralInteger", "name" : "'Column'" },
+        { "kind" : "IdRef", "name" : "'Parent'" },
+        { "kind" : "IdRef", "name" : "'Linkage Name'" },
+        { "kind" : "IdRef", "name" : "'Variable'" },
+        { "kind" : "DebugInfoFlags", "name" : "'Flags'" },
+        { "kind" : "IdRef", "name" : "'Static Member Declaration'", "quantifier" : "?" }
+      ]
+    },
+    {
+      "opname" : "DebugFunctionDeclaration",
+      "opcode" : 19,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'Name'" },
+        { "kind" : "IdRef", "name" : "'Type'" },
+        { "kind" : "IdRef", "name" : "'Source'" },
+        { "kind" : "LiteralInteger", "name" : "'Line'" },
+        { "kind" : "LiteralInteger", "name" : "'Column'" },
+        { "kind" : "IdRef", "name" : "'Parent'" },
+        { "kind" : "IdRef", "name" : "'Linkage Name'" },
+        { "kind" : "DebugInfoFlags", "name" : "'Flags'" }
+      ]
+    },
+    {
+      "opname" : "DebugFunction",
+      "opcode" : 20,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'Name'" },
+        { "kind" : "IdRef", "name" : "'Type'" },
+        { "kind" : "IdRef", "name" : "'Source'" },
+        { "kind" : "LiteralInteger", "name" : "'Line'" },
+        { "kind" : "LiteralInteger", "name" : "'Column'" },
+        { "kind" : "IdRef", "name" : "'Parent'" },
+        { "kind" : "IdRef", "name" : "'Linkage Name'" },
+        { "kind" : "DebugInfoFlags", "name" : "'Flags'" },
+        { "kind" : "LiteralInteger", "name" : "'Scope Line'" },
+        { "kind" : "IdRef", "name" : "'Function'" },
+        { "kind" : "IdRef", "name" : "'Declaration'", "quantifier" : "?" }
+      ]
+    },
+    {
+      "opname" : "DebugLexicalBlock",
+      "opcode" : 21,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'Source'" },
+        { "kind" : "LiteralInteger", "name" : "'Line'" },
+        { "kind" : "LiteralInteger", "name" : "'Column'" },
+        { "kind" : "IdRef", "name" : "'Parent'" },
+        { "kind" : "IdRef", "name" : "'Name'", "quantifier" : "?" }
+      ]
+    },
+    {
+      "opname" : "DebugLexicalBlockDiscriminator",
+      "opcode" : 22,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'Scope'" },
+        { "kind" : "LiteralInteger", "name" : "'Discriminator'" },
+        { "kind" : "IdRef", "name" : "'Parent'" }
+      ]
+    },
+    {
+      "opname" : "DebugScope",
+      "opcode" : 23,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'Scope'" },
+        { "kind" : "IdRef", "name" : "'Inlined At'", "quantifier" : "?" }
+      ]
+    },
+    {
+      "opname" : "DebugNoScope",
+      "opcode" : 24
+    },
+    {
+      "opname" : "DebugInlinedAt",
+      "opcode" : 25,
+      "operands" : [
+        { "kind" : "LiteralInteger", "name" : "'Line'" },
+        { "kind" : "IdRef", "name" : "'Scope'" },
+        { "kind" : "IdRef", "name" : "'Inlined'", "quantifier" : "?" }
+      ]
+    },
+    {
+      "opname" : "DebugLocalVariable",
+      "opcode" : 26,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'Name'" },
+        { "kind" : "IdRef", "name" : "'Type'" },
+        { "kind" : "IdRef", "name" : "'Source'" },
+        { "kind" : "LiteralInteger", "name" : "'Line'" },
+        { "kind" : "LiteralInteger", "name" : "'Column'" },
+        { "kind" : "IdRef", "name" : "'Parent'" },
+        { "kind" : "LiteralInteger", "name" : "'Arg Number'", "quantifier" : "?" }
+      ]
+    },
+    {
+      "opname" : "DebugInlinedVariable",
+      "opcode" : 27,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'Variable'" },
+        { "kind" : "IdRef", "name" : "'Inlined'" }
+      ]
+    },
+    {
+      "opname" : "DebugDeclare",
+      "opcode" : 28,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'Local Variable'" },
+        { "kind" : "IdRef", "name" : "'Variable'" },
+        { "kind" : "IdRef", "name" : "'Expression'" }
+      ]
+    },
+    {
+      "opname" : "DebugValue",
+      "opcode" : 29,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'Value'" },
+        { "kind" : "IdRef", "name" : "'Expression'" },
+        { "kind" : "IdRef", "name" : "'Indexes'", "quantifier" : "*" }
+      ]
+    },
+    {
+      "opname" : "DebugOperation",
+      "opcode" : 30,
+      "operands" : [
+        { "kind" : "DebugOperation", "name" : "'OpCode'" },
+        { "kind" : "LiteralInteger", "name" : "'Operands ...'", "quantifier" : "*" }
+      ]
+    },
+    {
+      "opname" : "DebugExpression",
+      "opcode" : 31,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'Operands ...'", "quantifier" : "*" }
+      ]
+    },
+    {
+      "opname" : "DebugMacroDef",
+      "opcode" : 32,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'Source'" },
+        { "kind" : "LiteralInteger", "name" : "'Line'" },
+        { "kind" : "IdRef", "name" : "'Name'" },
+        { "kind" : "IdRef", "name" : "'Value'", "quantifier" : "?" }
+      ]
+    },
+    {
+      "opname" : "DebugMacroUndef",
+      "opcode" : 33,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'Source'" },
+        { "kind" : "LiteralInteger", "name" : "'Line'" },
+        { "kind" : "IdRef", "name" : "'Macro'" }
+      ]
+    }
+  ],
+  "operand_kinds" : [
+    {
+      "category" : "BitEnum",
+      "kind" : "DebugInfoFlags",
+      "enumerants" : [
+        {
+          "enumerant" : "FlagIsProtected",
+          "value" : "0x01"
+        },
+        {
+          "enumerant" : "FlagIsPrivate",
+          "value" : "0x02"
+        },
+        {
+          "enumerant" : "FlagIsPublic",
+          "value" : "0x03"
+        },
+        {
+          "enumerant" : "FlagIsLocal",
+          "value" : "0x04"
+        },
+        {
+          "enumerant" : "FlagIsDefinition",
+          "value" : "0x08"
+        },
+        {
+          "enumerant" : "FlagFwdDecl",
+          "value" : "0x10"
+        },
+        {
+          "enumerant" : "FlagArtificial",
+          "value" : "0x20"
+        },
+        {
+          "enumerant" : "FlagExplicit",
+          "value" : "0x40"
+        },
+        {
+          "enumerant" : "FlagPrototyped",
+          "value" : "0x80"
+        },
+        {
+          "enumerant" : "FlagObjectPointer",
+          "value" : "0x100"
+        },
+        {
+          "enumerant" : "FlagStaticMember",
+          "value" : "0x200"
+        },
+        {
+          "enumerant" : "FlagIndirectVariable",
+          "value" : "0x400"
+        },
+        {
+          "enumerant" : "FlagLValueReference",
+          "value" : "0x800"
+        },
+        {
+          "enumerant" : "FlagRValueReference",
+          "value" : "0x1000"
+        },
+        {
+          "enumerant" : "FlagIsOptimized",
+          "value" : "0x2000"
+        }
+      ]
+    },
+    {
+      "category" : "ValueEnum",
+      "kind" : "DebugBaseTypeAttributeEncoding",
+      "enumerants" : [
+        {
+          "enumerant" : "Unspecified",
+          "value" : "0"
+        },
+        {
+          "enumerant" : "Address",
+          "value" : "1"
+        },
+        {
+          "enumerant" : "Boolean",
+          "value" : "2"
+        },
+        {
+          "enumerant" : "Float",
+          "value" : "4"
+        },
+        {
+          "enumerant" : "Signed",
+          "value" : "5"
+        },
+        {
+          "enumerant" : "SignedChar",
+          "value" : "6"
+        },
+        {
+          "enumerant" : "Unsigned",
+          "value" : "7"
+        },
+        {
+          "enumerant" : "UnsignedChar",
+          "value" : "8"
+        }
+      ]
+    },
+    {
+      "category" : "ValueEnum",
+      "kind" : "DebugCompositeType",
+      "enumerants" : [
+        {
+          "enumerant" : "Class",
+          "value" : "0"
+        },
+        {
+          "enumerant" : "Structure",
+          "value" : "1"
+        },
+        {
+          "enumerant" : "Union",
+          "value" : "2"
+        }
+      ]
+    },
+    {
+      "category" : "ValueEnum",
+      "kind" : "DebugTypeQualifier",
+      "enumerants" : [
+        {
+          "enumerant" : "ConstType",
+          "value" : "0"
+        },
+        {
+          "enumerant" : "VolatileType",
+          "value" : "1"
+        },
+        {
+          "enumerant" : "RestrictType",
+          "value" : "2"
+        }
+      ]
+    },
+    {
+      "category" : "ValueEnum",
+      "kind" : "DebugOperation",
+      "enumerants" : [
+        {
+          "enumerant" : "Deref",
+          "value" : "0"
+        },
+        {
+          "enumerant" : "Plus",
+          "value" : "1"
+        },
+        {
+          "enumerant" : "Minus",
+          "value" : "2"
+        },
+        {
+          "enumerant" : "PlusUconst",
+          "value" : "3",
+          "parameters" : [
+             { "kind" : "LiteralInteger" }
+          ]
+        },
+        {
+          "enumerant" : "BitPiece",
+          "value" : "4",
+          "parameters" : [
+             { "kind" : "LiteralInteger" },
+             { "kind" : "LiteralInteger" }
+          ]
+        },
+        {
+          "enumerant" : "Swap",
+          "value" : "5"
+        },
+        {
+          "enumerant" : "Xderef",
+          "value" : "6"
+        },
+        {
+          "enumerant" : "StackValue",
+          "value" : "7"
+        },
+        {
+          "enumerant" : "Constu",
+          "value" : "8",
+          "parameters" : [
+             { "kind" : "LiteralInteger" }
+          ]
+        }
+      ]
+    }
+  ]
+}
diff --git a/libs/spirv-headers/spirv/unified1/extinst.glsl.std.450.grammar.json b/libs/spirv-headers/spirv/unified1/extinst.glsl.std.450.grammar.json
new file mode 100644
index 00000000000..3d9f39e76c9
--- /dev/null
+++ b/libs/spirv-headers/spirv/unified1/extinst.glsl.std.450.grammar.json
@@ -0,0 +1,642 @@
+{
+  "copyright" : [
+    "Copyright (c) 2014-2016 The Khronos Group Inc.",
+    "",
+    "Permission is hereby granted, free of charge, to any person obtaining a copy",
+    "of this software and/or associated documentation files (the \"Materials\"),",
+    "to deal in the Materials without restriction, including without limitation",
+    "the rights to use, copy, modify, merge, publish, distribute, sublicense,",
+    "and/or sell copies of the Materials, and to permit persons to whom the",
+    "Materials are furnished to do so, subject to the following conditions:",
+    "",
+    "The above copyright notice and this permission notice shall be included in",
+    "all copies or substantial portions of the Materials.",
+    "",
+    "MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS KHRONOS",
+    "STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS SPECIFICATIONS AND",
+    "HEADER INFORMATION ARE LOCATED AT https://www.khronos.org/registry/ ",
+    "",
+    "THE MATERIALS ARE PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS",
+    "OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,",
+    "FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL",
+    "THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER",
+    "LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING",
+    "FROM,OUT OF OR IN CONNECTION WITH THE MATERIALS OR THE USE OR OTHER DEALINGS",
+    "IN THE MATERIALS."
+  ],
+  "version" : 100,
+  "revision" : 2,
+  "instructions" : [
+    {
+      "opname" : "Round",
+      "opcode" : 1,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "RoundEven",
+      "opcode" : 2,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "Trunc",
+      "opcode" : 3,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "FAbs",
+      "opcode" : 4,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "SAbs",
+      "opcode" : 5,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "FSign",
+      "opcode" : 6,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "SSign",
+      "opcode" : 7,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "Floor",
+      "opcode" : 8,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "Ceil",
+      "opcode" : 9,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "Fract",
+      "opcode" : 10,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "Radians",
+      "opcode" : 11,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'degrees'" }
+      ]
+    },
+    {
+      "opname" : "Degrees",
+      "opcode" : 12,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'radians'" }
+      ]
+    },
+    {
+      "opname" : "Sin",
+      "opcode" : 13,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "Cos",
+      "opcode" : 14,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "Tan",
+      "opcode" : 15,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "Asin",
+      "opcode" : 16,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "Acos",
+      "opcode" : 17,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "Atan",
+      "opcode" : 18,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'y_over_x'" }
+      ]
+    },
+    {
+      "opname" : "Sinh",
+      "opcode" : 19,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "Cosh",
+      "opcode" : 20,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "Tanh",
+      "opcode" : 21,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "Asinh",
+      "opcode" : 22,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "Acosh",
+      "opcode" : 23,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "Atanh",
+      "opcode" : 24,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "Atan2",
+      "opcode" : 25,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'y'" },
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "Pow",
+      "opcode" : 26,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "Exp",
+      "opcode" : 27,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "Log",
+      "opcode" : 28,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "Exp2",
+      "opcode" : 29,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "Log2",
+      "opcode" : 30,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "Sqrt",
+      "opcode" : 31,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "InverseSqrt",
+      "opcode" : 32,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "Determinant",
+      "opcode" : 33,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "MatrixInverse",
+      "opcode" : 34,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "Modf",
+      "opcode" : 35,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'i'" }
+      ]
+    },
+    {
+      "opname" : "ModfStruct",
+      "opcode" : 36,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "FMin",
+      "opcode" : 37,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "UMin",
+      "opcode" : 38,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "SMin",
+      "opcode" : 39,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "FMax",
+      "opcode" : 40,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "UMax",
+      "opcode" : 41,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "SMax",
+      "opcode" : 42,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "FClamp",
+      "opcode" : 43,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'minVal'" },
+        { "kind" : "IdRef", "name" : "'maxVal'" }
+      ]
+    },
+    {
+      "opname" : "UClamp",
+      "opcode" : 44,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'minVal'" },
+        { "kind" : "IdRef", "name" : "'maxVal'" }
+      ]
+    },
+    {
+      "opname" : "SClamp",
+      "opcode" : 45,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'minVal'" },
+        { "kind" : "IdRef", "name" : "'maxVal'" }
+      ]
+    },
+    {
+      "opname" : "FMix",
+      "opcode" : 46,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" },
+        { "kind" : "IdRef", "name" : "'a'" }
+      ]
+    },
+    {
+      "opname" : "IMix",
+      "opcode" : 47,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" },
+        { "kind" : "IdRef", "name" : "'a'" }
+      ]
+    },
+    {
+      "opname" : "Step",
+      "opcode" : 48,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'edge'" },
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "SmoothStep",
+      "opcode" : 49,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'edge0'" },
+        { "kind" : "IdRef", "name" : "'edge1'" },
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "Fma",
+      "opcode" : 50,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'a'" },
+        { "kind" : "IdRef", "name" : "'b'" },
+        { "kind" : "IdRef", "name" : "'c'" }
+      ]
+    },
+    {
+      "opname" : "Frexp",
+      "opcode" : 51,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'exp'" }
+      ]
+    },
+    {
+      "opname" : "FrexpStruct",
+      "opcode" : 52,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "Ldexp",
+      "opcode" : 53,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'exp'" }
+      ]
+    },
+    {
+      "opname" : "PackSnorm4x8",
+      "opcode" : 54,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'v'" }
+      ]
+    },
+    {
+      "opname" : "PackUnorm4x8",
+      "opcode" : 55,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'v'" }
+      ]
+    },
+    {
+      "opname" : "PackSnorm2x16",
+      "opcode" : 56,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'v'" }
+      ]
+    },
+    {
+      "opname" : "PackUnorm2x16",
+      "opcode" : 57,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'v'" }
+      ]
+    },
+    {
+      "opname" : "PackHalf2x16",
+      "opcode" : 58,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'v'" }
+      ]
+    },
+    {
+      "opname" : "PackDouble2x32",
+      "opcode" : 59,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'v'" }
+      ],
+      "capabilities" : [ "Float64" ]
+    },
+    {
+      "opname" : "UnpackSnorm2x16",
+      "opcode" : 60,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'p'" }
+      ]
+    },
+    {
+      "opname" : "UnpackUnorm2x16",
+      "opcode" : 61,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'p'" }
+      ]
+    },
+    {
+      "opname" : "UnpackHalf2x16",
+      "opcode" : 62,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'v'" }
+      ]
+    },
+    {
+      "opname" : "UnpackSnorm4x8",
+      "opcode" : 63,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'p'" }
+      ]
+    },
+    {
+      "opname" : "UnpackUnorm4x8",
+      "opcode" : 64,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'p'" }
+      ]
+    },
+    {
+      "opname" : "UnpackDouble2x32",
+      "opcode" : 65,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'v'" }
+      ],
+      "capabilities" : [ "Float64" ]
+    },
+    {
+      "opname" : "Length",
+      "opcode" : 66,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "Distance",
+      "opcode" : 67,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'p0'" },
+        { "kind" : "IdRef", "name" : "'p1'" }
+      ]
+    },
+    {
+      "opname" : "Cross",
+      "opcode" : 68,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "Normalize",
+      "opcode" : 69,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "FaceForward",
+      "opcode" : 70,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'N'" },
+        { "kind" : "IdRef", "name" : "'I'" },
+        { "kind" : "IdRef", "name" : "'Nref'" }
+      ]
+    },
+    {
+      "opname" : "Reflect",
+      "opcode" : 71,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'I'" },
+        { "kind" : "IdRef", "name" : "'N'" }
+      ]
+    },
+    {
+      "opname" : "Refract",
+      "opcode" : 72,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'I'" },
+        { "kind" : "IdRef", "name" : "'N'" },
+        { "kind" : "IdRef", "name" : "'eta'" }
+      ]
+    },
+    {
+      "opname" : "FindILsb",
+      "opcode" : 73,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'Value'" }
+      ]
+    },
+    {
+      "opname" : "FindSMsb",
+      "opcode" : 74,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'Value'" }
+      ]
+    },
+    {
+      "opname" : "FindUMsb",
+      "opcode" : 75,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'Value'" }
+      ]
+    },
+    {
+      "opname" : "InterpolateAtCentroid",
+      "opcode" : 76,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'interpolant'" }
+      ],
+      "capabilities" : [ "InterpolationFunction" ]
+    },
+    {
+      "opname" : "InterpolateAtSample",
+      "opcode" : 77,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'interpolant'" },
+        { "kind" : "IdRef", "name" : "'sample'" }
+      ],
+      "capabilities" : [ "InterpolationFunction" ]
+    },
+    {
+      "opname" : "InterpolateAtOffset",
+      "opcode" : 78,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'interpolant'" },
+        { "kind" : "IdRef", "name" : "'offset'" }
+      ],
+      "capabilities" : [ "InterpolationFunction" ]
+    },
+    {
+      "opname" : "NMin",
+      "opcode" : 79,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "NMax",
+      "opcode" : 80,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "NClamp",
+      "opcode" : 81,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'minVal'" },
+        { "kind" : "IdRef", "name" : "'maxVal'" }
+      ]
+    }
+  ]
+}
diff --git a/libs/spirv-headers/spirv/unified1/extinst.nonsemantic.clspvreflection.grammar.json b/libs/spirv-headers/spirv/unified1/extinst.nonsemantic.clspvreflection.grammar.json
new file mode 100644
index 00000000000..15e56990a15
--- /dev/null
+++ b/libs/spirv-headers/spirv/unified1/extinst.nonsemantic.clspvreflection.grammar.json
@@ -0,0 +1,237 @@
+{
+  "revision" : 1,
+  "instructions" : [
+    {
+      "opname" : "Kernel",
+      "opcode" : 1,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "Kernel" },
+        { "kind" : "IdRef", "name" : "Name" }
+      ]
+    },
+    {
+      "opname" : "ArgumentInfo",
+      "opcode" : 2,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "Name" },
+        { "kind" : "IdRef", "name" : "Type Name", "quantifier" : "?" },
+        { "kind" : "IdRef", "name" : "Address Qualifier", "quantifier" : "?" },
+        { "kind" : "IdRef", "name" : "Access Qualifier", "quantifier" : "?" },
+        { "kind" : "IdRef", "name" : "Type Qualifier", "quantifier" : "?" }
+      ]
+    },
+    {
+      "opname" : "ArgumentStorageBuffer",
+      "opcode" : 3,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "Decl" },
+        { "kind" : "IdRef", "name" : "Ordinal" },
+        { "kind" : "IdRef", "name" : "DescriptorSet" },
+        { "kind" : "IdRef", "name" : "Binding" },
+        { "kind" : "IdRef", "name" : "ArgInfo", "quantifier" : "?" }
+      ]
+    },
+    {
+      "opname" : "ArgumentUniform",
+      "opcode" : 4,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "Decl" },
+        { "kind" : "IdRef", "name" : "Ordinal" },
+        { "kind" : "IdRef", "name" : "DescriptorSet" },
+        { "kind" : "IdRef", "name" : "Binding" },
+        { "kind" : "IdRef", "name" : "ArgInfo", "quantifier" : "?" }
+      ]
+    },
+    {
+      "opname" : "ArgumentPodStorageBuffer",
+      "opcode" : 5,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "Decl" },
+        { "kind" : "IdRef", "name" : "Ordinal" },
+        { "kind" : "IdRef", "name" : "DescriptorSet" },
+        { "kind" : "IdRef", "name" : "Binding" },
+        { "kind" : "IdRef", "name" : "Offset" },
+        { "kind" : "IdRef", "name" : "Size" },
+        { "kind" : "IdRef", "name" : "ArgInfo", "quantifier" : "?" }
+      ]
+    },
+    {
+      "opname" : "ArgumentPodUniform",
+      "opcode" : 6,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "Decl" },
+        { "kind" : "IdRef", "name" : "Ordinal" },
+        { "kind" : "IdRef", "name" : "DescriptorSet" },
+        { "kind" : "IdRef", "name" : "Binding" },
+        { "kind" : "IdRef", "name" : "Offset" },
+        { "kind" : "IdRef", "name" : "Size" },
+        { "kind" : "IdRef", "name" : "ArgInfo", "quantifier" : "?" }
+      ]
+    },
+    {
+      "opname" : "ArgumentPodPushConstant",
+      "opcode" : 7,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "Decl" },
+        { "kind" : "IdRef", "name" : "Ordinal" },
+        { "kind" : "IdRef", "name" : "Offset" },
+        { "kind" : "IdRef", "name" : "Size" },
+        { "kind" : "IdRef", "name" : "ArgInfo", "quantifier" : "?" }
+      ]
+    },
+    {
+      "opname" : "ArgumentSampledImage",
+      "opcode" : 8,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "Decl" },
+        { "kind" : "IdRef", "name" : "Ordinal" },
+        { "kind" : "IdRef", "name" : "DescriptorSet" },
+        { "kind" : "IdRef", "name" : "Binding" },
+        { "kind" : "IdRef", "name" : "ArgInfo", "quantifier" : "?" }
+      ]
+    },
+    {
+      "opname" : "ArgumentStorageImage",
+      "opcode" : 9,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "Decl" },
+        { "kind" : "IdRef", "name" : "Ordinal" },
+        { "kind" : "IdRef", "name" : "DescriptorSet" },
+        { "kind" : "IdRef", "name" : "Binding" },
+        { "kind" : "IdRef", "name" : "ArgInfo", "quantifier" : "?" }
+      ]
+    },
+    {
+      "opname" : "ArgumentSampler",
+      "opcode" : 10,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "Decl" },
+        { "kind" : "IdRef", "name" : "Ordinal" },
+        { "kind" : "IdRef", "name" : "DescriptorSet" },
+        { "kind" : "IdRef", "name" : "Binding" },
+        { "kind" : "IdRef", "name" : "ArgInfo", "quantifier" : "?" }
+      ]
+    },
+    {
+      "opname" : "ArgumentWorkgroup",
+      "opcode" : 11,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "Decl" },
+        { "kind" : "IdRef", "name" : "Ordinal" },
+        { "kind" : "IdRef", "name" : "SpecId" },
+        { "kind" : "IdRef", "name" : "ElemSize" },
+        { "kind" : "IdRef", "name" : "ArgInfo", "quantifier" : "?" }
+      ]
+    },
+    {
+      "opname" : "SpecConstantWorkgroupSize",
+      "opcode" : 12,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "X" },
+        { "kind" : "IdRef", "name" : "Y" },
+        { "kind" : "IdRef", "name" : "Z" }
+      ]
+    },
+    {
+      "opname" : "SpecConstantGlobalOffset",
+      "opcode" : 13,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "X" },
+        { "kind" : "IdRef", "name" : "Y" },
+        { "kind" : "IdRef", "name" : "Z" }
+      ]
+    },
+    {
+      "opname" : "SpecConstantWorkDim",
+      "opcode" : 14,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "Dim" }
+      ]
+    },
+    {
+      "opname" : "PushConstantGlobalOffset",
+      "opcode" : 15,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "Offset" },
+        { "kind" : "IdRef", "name" : "Size" }
+      ]
+    },
+    {
+      "opname" : "PushConstantEnqueuedLocalSize",
+      "opcode" : 16,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "Offset" },
+        { "kind" : "IdRef", "name" : "Size" }
+      ]
+    },
+    {
+      "opname" : "PushConstantGlobalSize",
+      "opcode" : 17,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "Offset" },
+        { "kind" : "IdRef", "name" : "Size" }
+      ]
+    },
+    {
+      "opname" : "PushConstantRegionOffset",
+      "opcode" : 18,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "Offset" },
+        { "kind" : "IdRef", "name" : "Size" }
+      ]
+    },
+    {
+      "opname" : "PushConstantNumWorkgroups",
+      "opcode" : 19,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "Offset" },
+        { "kind" : "IdRef", "name" : "Size" }
+      ]
+    },
+    {
+      "opname" : "PushConstantRegionGroupOffset",
+      "opcode" : 20,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "Offset" },
+        { "kind" : "IdRef", "name" : "Size" }
+      ]
+    },
+    {
+      "opname" : "ConstantDataStorageBuffer",
+      "opcode" : 21,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "DescriptorSet" },
+        { "kind" : "IdRef", "name" : "Binding" },
+        { "kind" : "IdRef", "name" : "Data" }
+      ]
+    },
+    {
+      "opname" : "ConstantDataUniform",
+      "opcode" : 22,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "DescriptorSet" },
+        { "kind" : "IdRef", "name" : "Binding" },
+        { "kind" : "IdRef", "name" : "Data" }
+      ]
+    },
+    {
+      "opname" : "LiteralSampler",
+      "opcode" : 23,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "DescriptorSet" },
+        { "kind" : "IdRef", "name" : "Binding" },
+        { "kind" : "IdRef", "name" : "Mask" }
+      ]
+    },
+    {
+      "opname" : "PropertyRequiredWorkgroupSize",
+      "opcode" : 24,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "Kernel" },
+        { "kind" : "IdRef", "name" : "X" },
+        { "kind" : "IdRef", "name" : "Y" },
+        { "kind" : "IdRef", "name" : "Z" }
+      ]
+    }
+  ]
+}
diff --git a/libs/spirv-headers/spirv/unified1/extinst.nonsemantic.debugprintf.grammar.json b/libs/spirv-headers/spirv/unified1/extinst.nonsemantic.debugprintf.grammar.json
new file mode 100644
index 00000000000..71fa7112cfe
--- /dev/null
+++ b/libs/spirv-headers/spirv/unified1/extinst.nonsemantic.debugprintf.grammar.json
@@ -0,0 +1,13 @@
+{
+  "revision" : 1,
+  "instructions" : [
+    {
+      "opname" : "DebugPrintf",
+      "opcode" : 1,
+      "operands" : [
+        { "kind" : "IdRef",        "name" : "'Format'" },
+        { "kind" : "IdRef",        "quantifier" : "*" }
+      ]
+    }
+  ]
+}
diff --git a/libs/spirv-headers/spirv/unified1/extinst.opencl.debuginfo.100.grammar.json b/libs/spirv-headers/spirv/unified1/extinst.opencl.debuginfo.100.grammar.json
new file mode 100644
index 00000000000..08062be4f6f
--- /dev/null
+++ b/libs/spirv-headers/spirv/unified1/extinst.opencl.debuginfo.100.grammar.json
@@ -0,0 +1,632 @@
+{
+  "copyright" : [
+    "Copyright (c) 2018 The Khronos Group Inc.",
+    "",
+    "Permission is hereby granted, free of charge, to any person obtaining a copy",
+    "of this software and/or associated documentation files (the \"Materials\"),",
+    "to deal in the Materials without restriction, including without limitation",
+    "the rights to use, copy, modify, merge, publish, distribute, sublicense,",
+    "and/or sell copies of the Materials, and to permit persons to whom the",
+    "Materials are furnished to do so, subject to the following conditions:",
+    "",
+    "The above copyright notice and this permission notice shall be included in",
+    "all copies or substantial portions of the Materials.",
+    "",
+    "MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS KHRONOS",
+    "STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS SPECIFICATIONS AND",
+    "HEADER INFORMATION ARE LOCATED AT https://www.khronos.org/registry/ ",
+    "",
+    "THE MATERIALS ARE PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS",
+    "OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,",
+    "FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL",
+    "THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER",
+    "LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING",
+    "FROM,OUT OF OR IN CONNECTION WITH THE MATERIALS OR THE USE OR OTHER DEALINGS",
+    "IN THE MATERIALS."
+  ],
+  "version" : 200,
+  "revision" : 2,
+  "instructions" : [
+    {
+      "opname" : "DebugInfoNone",
+      "opcode" : 0
+    },
+    {
+      "opname" : "DebugCompilationUnit",
+      "opcode" : 1,
+      "operands" : [
+        { "kind" : "LiteralInteger", "name" : "'Version'" },
+        { "kind" : "LiteralInteger", "name" : "'DWARF Version'" },
+        { "kind" : "IdRef", "name" : "'Source'" },
+        { "kind" : "SourceLanguage", "name" : "'Language'" }
+      ]
+    },
+    {
+      "opname" : "DebugTypeBasic",
+      "opcode" : 2,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'Name'" },
+        { "kind" : "IdRef", "name" : "'Size'" },
+        { "kind" : "DebugBaseTypeAttributeEncoding", "name" : "'Encoding'" }
+      ]
+    },
+    {
+      "opname" : "DebugTypePointer",
+      "opcode" : 3,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'Base Type'" },
+        { "kind" : "StorageClass", "name" : "'Storage Class'" },
+        { "kind" : "DebugInfoFlags", "name" : "'Flags'" }
+      ]
+    },
+    {
+      "opname" : "DebugTypeQualifier",
+      "opcode" : 4,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'Base Type'" },
+        { "kind" : "DebugTypeQualifier", "name" : "'Type Qualifier'" }
+      ]
+    },
+    {
+      "opname" : "DebugTypeArray",
+      "opcode" : 5,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'Base Type'" },
+        { "kind" : "IdRef", "name" : "'Component Counts'", "quantifier" : "*" }
+      ]
+    },
+    {
+      "opname" : "DebugTypeVector",
+      "opcode" : 6,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'Base Type'" },
+        { "kind" : "LiteralInteger", "name" : "'Component Count'" }
+      ]
+    },
+    {
+      "opname" : "DebugTypedef",
+      "opcode" : 7,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'Name'" },
+        { "kind" : "IdRef", "name" : "'Base Type'" },
+        { "kind" : "IdRef", "name" : "'Source'" },
+        { "kind" : "LiteralInteger", "name" : "'Line'" },
+        { "kind" : "LiteralInteger", "name" : "'Column'" },
+        { "kind" : "IdRef", "name" : "'Parent'" }
+      ]
+    },
+    {
+      "opname" : "DebugTypeFunction",
+      "opcode" : 8,
+      "operands" : [
+        { "kind" : "DebugInfoFlags", "name" : "'Flags'" },
+        { "kind" : "IdRef", "name" : "'Return Type'" },
+        { "kind" : "IdRef", "name" : "'Parameter Types'", "quantifier" : "*" }
+      ]
+    },
+    {
+      "opname" : "DebugTypeEnum",
+      "opcode" : 9,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'Name'" },
+        { "kind" : "IdRef", "name" : "'Underlying Type'" },
+        { "kind" : "IdRef", "name" : "'Source'" },
+        { "kind" : "LiteralInteger", "name" : "'Line'" },
+        { "kind" : "LiteralInteger", "name" : "'Column'" },
+        { "kind" : "IdRef", "name" : "'Parent'" },
+        { "kind" : "IdRef", "name" : "'Size'" },
+        { "kind" : "DebugInfoFlags", "name" : "'Flags'" },
+        { "kind" : "PairIdRefIdRef", "name" : "'Value, Name, Value, Name, ...'", "quantifier" : "*" }
+      ]
+    },
+    {
+      "opname" : "DebugTypeComposite",
+      "opcode" : 10,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'Name'" },
+        { "kind" : "DebugCompositeType", "name" : "'Tag'" },
+        { "kind" : "IdRef", "name" : "'Source'" },
+        { "kind" : "LiteralInteger", "name" : "'Line'" },
+        { "kind" : "LiteralInteger", "name" : "'Column'" },
+        { "kind" : "IdRef", "name" : "'Parent'" },
+        { "kind" : "IdRef", "name" : "'Linkage Name'" },
+        { "kind" : "IdRef", "name" : "'Size'" },
+        { "kind" : "DebugInfoFlags", "name" : "'Flags'" },
+        { "kind" : "IdRef", "name" : "'Members'", "quantifier" : "*" }
+      ]
+    },
+    {
+      "opname" : "DebugTypeMember",
+      "opcode" : 11,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'Name'" },
+        { "kind" : "IdRef", "name" : "'Type'" },
+        { "kind" : "IdRef", "name" : "'Source'" },
+        { "kind" : "LiteralInteger", "name" : "'Line'" },
+        { "kind" : "LiteralInteger", "name" : "'Column'" },
+        { "kind" : "IdRef", "name" : "'Parent'" },
+        { "kind" : "IdRef", "name" : "'Offset'" },
+        { "kind" : "IdRef", "name" : "'Size'" },
+        { "kind" : "DebugInfoFlags", "name" : "'Flags'" },
+        { "kind" : "IdRef", "name" : "'Value'", "quantifier" : "?" }
+      ]
+    },
+    {
+      "opname" : "DebugTypeInheritance",
+      "opcode" : 12,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'Child'" },
+        { "kind" : "IdRef", "name" : "'Parent'" },
+        { "kind" : "IdRef", "name" : "'Offset'" },
+        { "kind" : "IdRef", "name" : "'Size'" },
+        { "kind" : "DebugInfoFlags", "name" : "'Flags'" }
+      ]
+    },
+    {
+      "opname" : "DebugTypePtrToMember",
+      "opcode" : 13,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'Member Type'" },
+        { "kind" : "IdRef", "name" : "'Parent'" }
+      ]
+    },
+    {
+      "opname" : "DebugTypeTemplate",
+      "opcode" : 14,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'Target'" },
+        { "kind" : "IdRef", "name" : "'Parameters'", "quantifier" : "*" }
+      ]
+    },
+    {
+      "opname" : "DebugTypeTemplateParameter",
+      "opcode" : 15,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'Name'" },
+        { "kind" : "IdRef", "name" : "'Actual Type'" },
+        { "kind" : "IdRef", "name" : "'Value'" },
+        { "kind" : "IdRef", "name" : "'Source'" },
+        { "kind" : "LiteralInteger", "name" : "'Line'" },
+        { "kind" : "LiteralInteger", "name" : "'Column'" }
+      ]
+    },
+    {
+      "opname" : "DebugTypeTemplateTemplateParameter",
+      "opcode" : 16,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'Name'" },
+        { "kind" : "IdRef", "name" : "'Template Name'" },
+        { "kind" : "IdRef", "name" : "'Source'" },
+        { "kind" : "LiteralInteger", "name" : "'Line'" },
+        { "kind" : "LiteralInteger", "name" : "'Column'" }
+      ]
+    },
+    {
+      "opname" : "DebugTypeTemplateParameterPack",
+      "opcode" : 17,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'Name'" },
+        { "kind" : "IdRef", "name" : "'Source'" },
+        { "kind" : "LiteralInteger", "name" : "'Line'" },
+        { "kind" : "LiteralInteger", "name" : "'Column'" },
+        { "kind" : "IdRef", "name" : "'Template Parameters'", "quantifier" : "*" }
+      ]
+    },
+    {
+      "opname" : "DebugGlobalVariable",
+      "opcode" : 18,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'Name'" },
+        { "kind" : "IdRef", "name" : "'Type'" },
+        { "kind" : "IdRef", "name" : "'Source'" },
+        { "kind" : "LiteralInteger", "name" : "'Line'" },
+        { "kind" : "LiteralInteger", "name" : "'Column'" },
+        { "kind" : "IdRef", "name" : "'Parent'" },
+        { "kind" : "IdRef", "name" : "'Linkage Name'" },
+        { "kind" : "IdRef", "name" : "'Variable'" },
+        { "kind" : "DebugInfoFlags", "name" : "'Flags'" },
+        { "kind" : "IdRef", "name" : "'Static Member Declaration'", "quantifier" : "?" }
+      ]
+    },
+    {
+      "opname" : "DebugFunctionDeclaration",
+      "opcode" : 19,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'Name'" },
+        { "kind" : "IdRef", "name" : "'Type'" },
+        { "kind" : "IdRef", "name" : "'Source'" },
+        { "kind" : "LiteralInteger", "name" : "'Line'" },
+        { "kind" : "LiteralInteger", "name" : "'Column'" },
+        { "kind" : "IdRef", "name" : "'Parent'" },
+        { "kind" : "IdRef", "name" : "'Linkage Name'" },
+        { "kind" : "DebugInfoFlags", "name" : "'Flags'" }
+      ]
+    },
+    {
+      "opname" : "DebugFunction",
+      "opcode" : 20,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'Name'" },
+        { "kind" : "IdRef", "name" : "'Type'" },
+        { "kind" : "IdRef", "name" : "'Source'" },
+        { "kind" : "LiteralInteger", "name" : "'Line'" },
+        { "kind" : "LiteralInteger", "name" : "'Column'" },
+        { "kind" : "IdRef", "name" : "'Parent'" },
+        { "kind" : "IdRef", "name" : "'Linkage Name'" },
+        { "kind" : "DebugInfoFlags", "name" : "'Flags'" },
+        { "kind" : "LiteralInteger", "name" : "'Scope Line'" },
+        { "kind" : "IdRef", "name" : "'Function'" },
+        { "kind" : "IdRef", "name" : "'Declaration'", "quantifier" : "?" }
+      ]
+    },
+    {
+      "opname" : "DebugLexicalBlock",
+      "opcode" : 21,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'Source'" },
+        { "kind" : "LiteralInteger", "name" : "'Line'" },
+        { "kind" : "LiteralInteger", "name" : "'Column'" },
+        { "kind" : "IdRef", "name" : "'Parent'" },
+        { "kind" : "IdRef", "name" : "'Name'", "quantifier" : "?" }
+      ]
+    },
+    {
+      "opname" : "DebugLexicalBlockDiscriminator",
+      "opcode" : 22,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'Source'" },
+        { "kind" : "LiteralInteger", "name" : "'Discriminator'" },
+        { "kind" : "IdRef", "name" : "'Parent'" }
+      ]
+    },
+    {
+      "opname" : "DebugScope",
+      "opcode" : 23,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'Scope'" },
+        { "kind" : "IdRef", "name" : "'Inlined At'", "quantifier" : "?" }
+      ]
+    },
+    {
+      "opname" : "DebugNoScope",
+      "opcode" : 24
+    },
+    {
+      "opname" : "DebugInlinedAt",
+      "opcode" : 25,
+      "operands" : [
+        { "kind" : "LiteralInteger", "name" : "'Line'" },
+        { "kind" : "IdRef", "name" : "'Scope'" },
+        { "kind" : "IdRef", "name" : "'Inlined'", "quantifier" : "?" }
+      ]
+    },
+    {
+      "opname" : "DebugLocalVariable",
+      "opcode" : 26,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'Name'" },
+        { "kind" : "IdRef", "name" : "'Type'" },
+        { "kind" : "IdRef", "name" : "'Source'" },
+        { "kind" : "LiteralInteger", "name" : "'Line'" },
+        { "kind" : "LiteralInteger", "name" : "'Column'" },
+        { "kind" : "IdRef", "name" : "'Parent'" },
+        { "kind" : "DebugInfoFlags", "name" : "'Flags'" },
+        { "kind" : "LiteralInteger", "name" : "'Arg Number'", "quantifier" : "?" }
+      ]
+    },
+    {
+      "opname" : "DebugInlinedVariable",
+      "opcode" : 27,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'Variable'" },
+        { "kind" : "IdRef", "name" : "'Inlined'" }
+      ]
+    },
+    {
+      "opname" : "DebugDeclare",
+      "opcode" : 28,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'Local Variable'" },
+        { "kind" : "IdRef", "name" : "'Variable'" },
+        { "kind" : "IdRef", "name" : "'Expression'" }
+      ]
+    },
+    {
+      "opname" : "DebugValue",
+      "opcode" : 29,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'Local Variable'" },
+        { "kind" : "IdRef", "name" : "'Value'" },
+        { "kind" : "IdRef", "name" : "'Expression'" },
+        { "kind" : "IdRef", "name" : "'Indexes'", "quantifier" : "*" }
+      ]
+    },
+    {
+      "opname" : "DebugOperation",
+      "opcode" : 30,
+      "operands" : [
+        { "kind" : "DebugOperation", "name" : "'OpCode'" },
+        { "kind" : "LiteralInteger", "name" : "'Operands ...'", "quantifier" : "*" }
+      ]
+    },
+    {
+      "opname" : "DebugExpression",
+      "opcode" : 31,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'Operands ...'", "quantifier" : "*" }
+      ]
+    },
+    {
+      "opname" : "DebugMacroDef",
+      "opcode" : 32,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'Source'" },
+        { "kind" : "LiteralInteger", "name" : "'Line'" },
+        { "kind" : "IdRef", "name" : "'Name'" },
+        { "kind" : "IdRef", "name" : "'Value'", "quantifier" : "?" }
+      ]
+    },
+    {
+      "opname" : "DebugMacroUndef",
+      "opcode" : 33,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'Source'" },
+        { "kind" : "LiteralInteger", "name" : "'Line'" },
+        { "kind" : "IdRef", "name" : "'Macro'" }
+      ]
+    },
+    {
+      "opname" : "DebugImportedEntity",
+      "opcode" : 34,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'Name'" },
+        { "kind" : "DebugImportedEntity", "name" : "'Tag'" },
+        { "kind" : "IdRef", "name" : "'Source'" },
+        { "kind" : "IdRef", "name" : "'Entity'" },
+        { "kind" : "LiteralInteger", "name" : "'Line'" },
+        { "kind" : "LiteralInteger", "name" : "'Column'" },
+        { "kind" : "IdRef", "name" : "'Parent'" }
+      ]
+    },
+    {
+      "opname" : "DebugSource",
+      "opcode" : 35,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'File'" },
+        { "kind" : "IdRef", "name" : "'Text'", "quantifier" : "?" }
+      ]
+    }
+  ],
+  "operand_kinds" : [
+    {
+      "category" : "BitEnum",
+      "kind" : "DebugInfoFlags",
+      "enumerants" : [
+        {
+          "enumerant" : "FlagIsProtected",
+          "value" : "0x01"
+        },
+        {
+          "enumerant" : "FlagIsPrivate",
+          "value" : "0x02"
+        },
+        {
+          "enumerant" : "FlagIsPublic",
+          "value" : "0x03"
+        },
+        {
+          "enumerant" : "FlagIsLocal",
+          "value" : "0x04"
+        },
+        {
+          "enumerant" : "FlagIsDefinition",
+          "value" : "0x08"
+        },
+        {
+          "enumerant" : "FlagFwdDecl",
+          "value" : "0x10"
+        },
+        {
+          "enumerant" : "FlagArtificial",
+          "value" : "0x20"
+        },
+        {
+          "enumerant" : "FlagExplicit",
+          "value" : "0x40"
+        },
+        {
+          "enumerant" : "FlagPrototyped",
+          "value" : "0x80"
+        },
+        {
+          "enumerant" : "FlagObjectPointer",
+          "value" : "0x100"
+        },
+        {
+          "enumerant" : "FlagStaticMember",
+          "value" : "0x200"
+        },
+        {
+          "enumerant" : "FlagIndirectVariable",
+          "value" : "0x400"
+        },
+        {
+          "enumerant" : "FlagLValueReference",
+          "value" : "0x800"
+        },
+        {
+          "enumerant" : "FlagRValueReference",
+          "value" : "0x1000"
+        },
+        {
+          "enumerant" : "FlagIsOptimized",
+          "value" : "0x2000"
+        },
+        {
+          "enumerant" : "FlagIsEnumClass",
+          "value" : "0x4000"
+        },
+        {
+          "enumerant" : "FlagTypePassByValue",
+          "value" : "0x8000"
+        },
+        {
+          "enumerant" : "FlagTypePassByReference",
+          "value" : "0x10000"
+        }
+      ]
+    },
+    {
+      "category" : "ValueEnum",
+      "kind" : "DebugBaseTypeAttributeEncoding",
+      "enumerants" : [
+        {
+          "enumerant" : "Unspecified",
+          "value" : "0"
+        },
+        {
+          "enumerant" : "Address",
+          "value" : "1"
+        },
+        {
+          "enumerant" : "Boolean",
+          "value" : "2"
+        },
+        {
+          "enumerant" : "Float",
+          "value" : "3"
+        },
+        {
+          "enumerant" : "Signed",
+          "value" : "4"
+        },
+        {
+          "enumerant" : "SignedChar",
+          "value" : "5"
+        },
+        {
+          "enumerant" : "Unsigned",
+          "value" : "6"
+        },
+        {
+          "enumerant" : "UnsignedChar",
+          "value" : "7"
+        }
+      ]
+    },
+    {
+      "category" : "ValueEnum",
+      "kind" : "DebugCompositeType",
+      "enumerants" : [
+        {
+          "enumerant" : "Class",
+          "value" : "0"
+        },
+        {
+          "enumerant" : "Structure",
+          "value" : "1"
+        },
+        {
+          "enumerant" : "Union",
+          "value" : "2"
+        }
+      ]
+    },
+    {
+      "category" : "ValueEnum",
+      "kind" : "DebugTypeQualifier",
+      "enumerants" : [
+        {
+          "enumerant" : "ConstType",
+          "value" : "0"
+        },
+        {
+          "enumerant" : "VolatileType",
+          "value" : "1"
+        },
+        {
+          "enumerant" : "RestrictType",
+          "value" : "2"
+        },
+        {
+          "enumerant" : "AtomicType",
+          "value" : "3"
+        }
+      ]
+    },
+    {
+      "category" : "ValueEnum",
+      "kind" : "DebugOperation",
+      "enumerants" : [
+        {
+          "enumerant" : "Deref",
+          "value" : "0"
+        },
+        {
+          "enumerant" : "Plus",
+          "value" : "1"
+        },
+        {
+          "enumerant" : "Minus",
+          "value" : "2"
+        },
+        {
+          "enumerant" : "PlusUconst",
+          "value" : "3",
+          "parameters" : [
+             { "kind" : "LiteralInteger" }
+          ]
+        },
+        {
+          "enumerant" : "BitPiece",
+          "value" : "4",
+          "parameters" : [
+             { "kind" : "LiteralInteger" },
+             { "kind" : "LiteralInteger" }
+          ]
+        },
+        {
+          "enumerant" : "Swap",
+          "value" : "5"
+        },
+        {
+          "enumerant" : "Xderef",
+          "value" : "6"
+        },
+        {
+          "enumerant" : "StackValue",
+          "value" : "7"
+        },
+        {
+          "enumerant" : "Constu",
+          "value" : "8",
+          "parameters" : [
+             { "kind" : "LiteralInteger" }
+          ]
+        },
+        {
+          "enumerant" : "Fragment",
+          "value" : "9",
+          "parameters" : [
+             { "kind" : "LiteralInteger" },
+             { "kind" : "LiteralInteger" }
+          ]
+        }
+      ]
+    },
+    {
+      "category" : "ValueEnum",
+      "kind" : "DebugImportedEntity",
+      "enumerants" : [
+        {
+          "enumerant" : "ImportedModule",
+          "value" : "0"
+        },
+        {
+          "enumerant" : "ImportedDeclaration",
+          "value" : "1"
+	}
+      ]
+    }
+  ]
+}
diff --git a/libs/spirv-headers/spirv/unified1/extinst.opencl.std.100.grammar.json b/libs/spirv-headers/spirv/unified1/extinst.opencl.std.100.grammar.json
new file mode 100644
index 00000000000..4fe45060bb9
--- /dev/null
+++ b/libs/spirv-headers/spirv/unified1/extinst.opencl.std.100.grammar.json
@@ -0,0 +1,1279 @@
+{
+  "copyright" : [
+    "Copyright (c) 2014-2016 The Khronos Group Inc.",
+    "",
+    "Permission is hereby granted, free of charge, to any person obtaining a copy",
+    "of this software and/or associated documentation files (the \"Materials\"),",
+    "to deal in the Materials without restriction, including without limitation",
+    "the rights to use, copy, modify, merge, publish, distribute, sublicense,",
+    "and/or sell copies of the Materials, and to permit persons to whom the",
+    "Materials are furnished to do so, subject to the following conditions:",
+    "",
+    "The above copyright notice and this permission notice shall be included in",
+    "all copies or substantial portions of the Materials.",
+    "",
+    "MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS KHRONOS",
+    "STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS SPECIFICATIONS AND",
+    "HEADER INFORMATION ARE LOCATED AT https://www.khronos.org/registry/ ",
+    "",
+    "THE MATERIALS ARE PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS",
+    "OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,",
+    "FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL",
+    "THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER",
+    "LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING",
+    "FROM,OUT OF OR IN CONNECTION WITH THE MATERIALS OR THE USE OR OTHER DEALINGS",
+    "IN THE MATERIALS."
+  ],
+  "version" : 100,
+  "revision" : 2,
+  "instructions" : [
+    {
+      "opname" : "acos",
+      "opcode" : 0,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "acosh",
+      "opcode" : 1,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "acospi",
+      "opcode" : 2,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "asin",
+      "opcode" : 3,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "asinh",
+      "opcode" : 4,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "asinpi",
+      "opcode" : 5,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "atan",
+      "opcode" : 6,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "atan2",
+      "opcode" : 7,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'y'" },
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "atanh",
+      "opcode" : 8,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "atanpi",
+      "opcode" : 9,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "atan2pi",
+      "opcode" : 10,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'y'" },
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "cbrt",
+      "opcode" : 11,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "ceil",
+      "opcode" : 12,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "copysign",
+      "opcode" : 13,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "cos",
+      "opcode" : 14,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "cosh",
+      "opcode" : 15,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "cospi",
+      "opcode" : 16,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "erfc",
+      "opcode" : 17,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "erf",
+      "opcode" : 18,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "exp",
+      "opcode" : 19,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "exp2",
+      "opcode" : 20,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "exp10",
+      "opcode" : 21,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "expm1",
+      "opcode" : 22,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "fabs",
+      "opcode" : 23,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "fdim",
+      "opcode" : 24,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "floor",
+      "opcode" : 25,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "fma",
+      "opcode" : 26,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'a'" },
+        { "kind" : "IdRef", "name" : "'b'" },
+        { "kind" : "IdRef", "name" : "'c'" }
+      ]
+    },
+    {
+      "opname" : "fmax",
+      "opcode" : 27,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "fmin",
+      "opcode" : 28,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "fmod",
+      "opcode" : 29,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "fract",
+      "opcode" : 30,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'ptr'" }
+      ]
+    },
+    {
+      "opname" : "frexp",
+      "opcode" : 31,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'exp'" }
+      ]
+    },
+    {
+      "opname" : "hypot",
+      "opcode" : 32,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "ilogb",
+      "opcode" : 33,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "ldexp",
+      "opcode" : 34,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'k'" }
+      ]
+    },
+    {
+      "opname" : "lgamma",
+      "opcode" : 35,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "lgamma_r",
+      "opcode" : 36,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'signp'" }
+      ]
+    },
+    {
+      "opname" : "log",
+      "opcode" : 37,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "log2",
+      "opcode" : 38,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "log10",
+      "opcode" : 39,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "log1p",
+      "opcode" : 40,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "logb",
+      "opcode" : 41,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "mad",
+      "opcode" : 42,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'a'" },
+        { "kind" : "IdRef", "name" : "'b'" },
+        { "kind" : "IdRef", "name" : "'c'" }
+      ]
+    },
+    {
+      "opname" : "maxmag",
+      "opcode" : 43,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "minmag",
+      "opcode" : 44,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "modf",
+      "opcode" : 45,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'iptr'" }
+      ]
+    },
+    {
+      "opname" : "nan",
+      "opcode" : 46,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'nancode'" }
+      ]
+    },
+    {
+      "opname" : "nextafter",
+      "opcode" : 47,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "pow",
+      "opcode" : 48,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y" }
+      ]
+    },
+    {
+      "opname" : "pown",
+      "opcode" : 49,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "powr",
+      "opcode" : 50,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "remainder",
+      "opcode" : 51,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "remquo",
+      "opcode" : 52,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" },
+        { "kind" : "IdRef", "name" : "'quo'" }
+      ]
+    },
+    {
+      "opname" : "rint",
+      "opcode" : 53,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "rootn",
+      "opcode" : 54,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "round",
+      "opcode" : 55,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "rsqrt",
+      "opcode" : 56,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "sin",
+      "opcode" : 57,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "sincos",
+      "opcode" : 58,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'cosval'" }
+      ]
+    },
+    {
+      "opname" : "sinh",
+      "opcode" : 59,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "sinpi",
+      "opcode" : 60,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "sqrt",
+      "opcode" : 61,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "tan",
+      "opcode" : 62,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "tanh",
+      "opcode" : 63,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "tanpi",
+      "opcode" : 64,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "tgamma",
+      "opcode" : 65,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "trunc",
+      "opcode" : 66,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "half_cos",
+      "opcode" : 67,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "half_divide",
+      "opcode" : 68,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "half_exp",
+      "opcode" : 69,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "half_exp2",
+      "opcode" : 70,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "half_exp10",
+      "opcode" : 71,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "half_log",
+      "opcode" : 72,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "half_log2",
+      "opcode" : 73,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "half_log10",
+      "opcode" : 74,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "half_powr",
+      "opcode" : 75,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "half_recip",
+      "opcode" : 76,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "half_rsqrt",
+      "opcode" : 77,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "half_sin",
+      "opcode" : 78,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "half_sqrt",
+      "opcode" : 79,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "half_tan",
+      "opcode" : 80,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "native_cos",
+      "opcode" : 81,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "native_divide",
+      "opcode" : 82,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "native_exp",
+      "opcode" : 83,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "native_exp2",
+      "opcode" : 84,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "native_exp10",
+      "opcode" : 85,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "native_log",
+      "opcode" : 86,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "native_log2",
+      "opcode" : 87,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "native_log10",
+      "opcode" : 88,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "native_powr",
+      "opcode" : 89,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "native_recip",
+      "opcode" : 90,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "native_rsqrt",
+      "opcode" : 91,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "native_sin",
+      "opcode" : 92,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "native_sqrt",
+      "opcode" : 93,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "native_tan",
+      "opcode" : 94,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "s_abs",
+      "opcode" : 141,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "s_abs_diff",
+      "opcode" : 142,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "s_add_sat",
+      "opcode" : 143,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "u_add_sat",
+      "opcode" : 144,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "s_hadd",
+      "opcode" : 145,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "u_hadd",
+      "opcode" : 146,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "s_rhadd",
+      "opcode" : 147,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "u_rhadd",
+      "opcode" : 148,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "s_clamp",
+      "opcode" : 149,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'minval'" },
+        { "kind" : "IdRef", "name" : "'maxval'" }
+      ]
+    },
+    {
+      "opname" : "u_clamp",
+      "opcode" : 150,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'minval'" },
+        { "kind" : "IdRef", "name" : "'maxval'" }
+      ]
+    },
+    {
+      "opname" : "clz",
+      "opcode" : 151,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "ctz",
+      "opcode" : 152,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "s_mad_hi",
+      "opcode" : 153,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'a'" },
+        { "kind" : "IdRef", "name" : "'b'" },
+        { "kind" : "IdRef", "name" : "'c'" }
+      ]
+    },
+    {
+      "opname" : "u_mad_sat",
+      "opcode" : 154,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" },
+        { "kind" : "IdRef", "name" : "'z'" }
+      ]
+    },
+    {
+      "opname" : "s_mad_sat",
+      "opcode" : 155,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" },
+        { "kind" : "IdRef", "name" : "'z'" }
+      ]
+    },
+    {
+      "opname" : "s_max",
+      "opcode" : 156,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "u_max",
+      "opcode" : 157,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "s_min",
+      "opcode" : 158,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "u_min",
+      "opcode" : 159,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "s_mul_hi",
+      "opcode" : 160,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "rotate",
+      "opcode" : 161,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'v'" },
+        { "kind" : "IdRef", "name" : "'i'" }
+      ]
+    },
+    {
+      "opname" : "s_sub_sat",
+      "opcode" : 162,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "u_sub_sat",
+      "opcode" : 163,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "u_upsample",
+      "opcode" : 164,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'hi'" },
+        { "kind" : "IdRef", "name" : "'lo'" }
+      ]
+    },
+    {
+      "opname" : "s_upsample",
+      "opcode" : 165,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'hi'" },
+        { "kind" : "IdRef", "name" : "'lo'" }
+      ]
+    },
+    {
+      "opname" : "popcount",
+      "opcode" : 166,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "s_mad24",
+      "opcode" : 167,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" },
+        { "kind" : "IdRef", "name" : "'z'" }
+      ]
+    },
+    {
+      "opname" : "u_mad24",
+      "opcode" : 168,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" },
+        { "kind" : "IdRef", "name" : "'z'" }
+      ]
+    },
+    {
+      "opname" : "s_mul24",
+      "opcode" : 169,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "u_mul24",
+      "opcode" : 170,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "u_abs",
+      "opcode" : 201,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "u_abs_diff",
+      "opcode" : 202,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "u_mul_hi",
+      "opcode" : 203,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "u_mad_hi",
+      "opcode" : 204,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'a'" },
+        { "kind" : "IdRef", "name" : "'b'" },
+        { "kind" : "IdRef", "name" : "'c'" }
+      ]
+    },
+    {
+      "opname" : "fclamp",
+      "opcode" : 95,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'minval'" },
+        { "kind" : "IdRef", "name" : "'maxval'" }
+      ]
+    },
+    {
+      "opname" : "degrees",
+      "opcode" :96,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'radians'" }
+      ]
+    },
+    {
+      "opname" : "fmax_common",
+      "opcode" : 97,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "fmin_common",
+      "opcode" : 98,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" }
+      ]
+    },
+    {
+      "opname" : "mix",
+      "opcode" : 99,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" },
+        { "kind" : "IdRef", "name" : "'a'" }
+      ]
+    },
+    {
+      "opname" : "radians",
+      "opcode" : 100,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'degrees'" }
+      ]
+    },
+    {
+      "opname" : "step",
+      "opcode" : 101,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'edge'" },
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "smoothstep",
+      "opcode" : 102,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'edge0'" },
+        { "kind" : "IdRef", "name" : "'edge1'" },
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "sign",
+      "opcode" : 103,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "cross",
+      "opcode" : 104,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'p0'" },
+        { "kind" : "IdRef", "name" : "'p1'" }
+      ]
+    },
+    {
+      "opname" : "distance",
+      "opcode" : 105,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'p0'" },
+        { "kind" : "IdRef", "name" : "'p1'" }
+      ]
+    },
+    {
+      "opname" : "length",
+      "opcode" : 106,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'p'" }
+      ]
+    },
+    {
+      "opname" : "normalize",
+      "opcode" : 107,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'p'" }
+      ]
+    },
+    {
+      "opname" : "fast_distance",
+      "opcode" : 108,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'p0'" },
+        { "kind" : "IdRef", "name" : "'p1'" }
+      ]
+    },
+    {
+      "opname" : "fast_length",
+      "opcode" : 109,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'p'" }
+      ]
+    },
+    {
+      "opname" : "fast_normalize",
+      "opcode" : 110,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'p'" }
+      ]
+    },
+    {
+      "opname" : "bitselect",
+      "opcode" : 186,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'a'" },
+        { "kind" : "IdRef", "name" : "'b'" },
+        { "kind" : "IdRef", "name" : "'c'" }
+      ]
+    },
+    {
+      "opname" : "select",
+      "opcode" : 187,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'a'" },
+        { "kind" : "IdRef", "name" : "'b'" },
+        { "kind" : "IdRef", "name" : "'c'" }
+      ]
+    },
+    {
+      "opname" : "vloadn",
+      "opcode" : 171,
+      "operands" : [
+        { "kind" : "IdRef",          "name" : "'offset'" },
+        { "kind" : "IdRef",          "name" : "'p'" },
+        { "kind" : "LiteralInteger", "name" : "'n'" }
+      ]
+    },
+    {
+      "opname" : "vstoren",
+      "opcode" : 172,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'data'" },
+        { "kind" : "IdRef", "name" : "'offset'" },
+        { "kind" : "IdRef", "name" : "'p'" }
+      ]
+    },
+    {
+      "opname" : "vload_half",
+      "opcode" : 173,
+      "operands" : [
+        { "kind" : "IdRef",          "name" : "'offset'" },
+        { "kind" : "IdRef",          "name" : "'p'" }
+      ]
+    },
+    {
+      "opname" : "vload_halfn",
+      "opcode" : 174,
+      "operands" : [
+        { "kind" : "IdRef",          "name" : "'offset'" },
+        { "kind" : "IdRef",          "name" : "'p'" },
+        { "kind" : "LiteralInteger", "name" : "'n'" }
+      ]
+    },
+    {
+      "opname" : "vstore_half",
+      "opcode" : 175,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'data'" },
+        { "kind" : "IdRef", "name" : "'offset'" },
+        { "kind" : "IdRef", "name" : "'p'" }
+      ]
+    },
+    {
+      "opname" : "vstore_half_r",
+      "opcode" : 176,
+      "operands" : [
+        { "kind" : "IdRef",          "name" : "'data'" },
+        { "kind" : "IdRef",          "name" : "'offset'" },
+        { "kind" : "IdRef",          "name" : "'p'" },
+        { "kind" : "FPRoundingMode", "name" : "'mode'" }
+      ]
+    },
+    {
+      "opname" : "vstore_halfn",
+      "opcode" : 177,
+      "operands" : [
+        { "kind" : "IdRef",          "name" : "'data'" },
+        { "kind" : "IdRef",          "name" : "'offset'" },
+        { "kind" : "IdRef",          "name" : "'p'" }
+      ]
+    },
+    {
+      "opname" : "vstore_halfn_r",
+      "opcode" : 178,
+      "operands" : [
+        { "kind" : "IdRef",          "name" : "'data'" },
+        { "kind" : "IdRef",          "name" : "'offset'" },
+        { "kind" : "IdRef",          "name" : "'p'" },
+        { "kind" : "FPRoundingMode", "name" : "'mode'" }
+      ]
+    },
+    {
+      "opname" : "vloada_halfn",
+      "opcode" : 179,
+      "operands" : [
+        { "kind" : "IdRef",          "name" : "'offset'" },
+        { "kind" : "IdRef",          "name" : "'p'" },
+        { "kind" : "LiteralInteger", "name" : "'n'" }
+      ]
+    },
+    {
+      "opname" : "vstorea_halfn",
+      "opcode" : 180,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'data'" },
+        { "kind" : "IdRef", "name" : "'offset'" },
+        { "kind" : "IdRef", "name" : "'p'" }
+      ]
+    },
+    {
+      "opname" : "vstorea_halfn_r",
+      "opcode" : 181,
+      "operands" : [
+        { "kind" : "IdRef",          "name" : "'data'" },
+        { "kind" : "IdRef",          "name" : "'offset'" },
+        { "kind" : "IdRef",          "name" : "'p'" },
+        { "kind" : "FPRoundingMode", "name" : "'mode'" }
+      ]
+    },
+    {
+      "opname" : "shuffle",
+      "opcode" : 182,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'shuffle mask'" }
+      ]
+    },
+    {
+      "opname" : "shuffle2",
+      "opcode" : 183,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" },
+        { "kind" : "IdRef", "name" : "'shuffle mask'" }
+      ]
+    },
+    {
+      "opname" : "printf",
+      "opcode" : 184,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'format'" },
+        { "kind" : "IdRef", "name" : "'additional arguments'", "quantifier" : "*" }
+      ]
+    },
+    {
+      "opname" : "prefetch",
+      "opcode" : 185,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'ptr'" },
+        { "kind" : "IdRef", "name" : "'num elements'" }
+      ]
+    }
+  ]
+}
diff --git a/libs/spirv-headers/spirv/unified1/extinst.spv-amd-gcn-shader.grammar.json b/libs/spirv-headers/spirv/unified1/extinst.spv-amd-gcn-shader.grammar.json
new file mode 100644
index 00000000000..e18251bba1b
--- /dev/null
+++ b/libs/spirv-headers/spirv/unified1/extinst.spv-amd-gcn-shader.grammar.json
@@ -0,0 +1,26 @@
+{
+  "revision" : 2,
+  "instructions" : [
+    {
+      "opname" : "CubeFaceIndexAMD",
+      "opcode" : 1,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'P'" }
+      ],
+      "extensions" : [ "SPV_AMD_gcn_shader" ]
+    },
+    {
+      "opname" : "CubeFaceCoordAMD",
+      "opcode" : 2,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'P'" }
+      ],
+      "extensions" : [ "SPV_AMD_gcn_shader" ]
+    },
+    {
+      "opname" : "TimeAMD",
+      "opcode" : 3,
+      "extensions" : [ "SPV_AMD_gcn_shader" ]
+    }
+  ]
+}
diff --git a/libs/spirv-headers/spirv/unified1/extinst.spv-amd-shader-ballot.grammar.json b/libs/spirv-headers/spirv/unified1/extinst.spv-amd-shader-ballot.grammar.json
new file mode 100644
index 00000000000..62a470eeb65
--- /dev/null
+++ b/libs/spirv-headers/spirv/unified1/extinst.spv-amd-shader-ballot.grammar.json
@@ -0,0 +1,41 @@
+{
+  "revision" : 5,
+  "instructions" : [
+    {
+      "opname" : "SwizzleInvocationsAMD",
+      "opcode" : 1,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'data'" },
+        { "kind" : "IdRef", "name" : "'offset'" }
+      ],
+      "extensions" : [ "SPV_AMD_shader_ballot" ]
+    },
+    {
+      "opname" : "SwizzleInvocationsMaskedAMD",
+      "opcode" : 2,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'data'" },
+        { "kind" : "IdRef", "name" : "'mask'" }
+      ],
+      "extensions" : [ "SPV_AMD_shader_ballot" ]
+    },
+    {
+      "opname" : "WriteInvocationAMD",
+      "opcode" : 3,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'inputValue'" },
+        { "kind" : "IdRef", "name" : "'writeValue'" },
+        { "kind" : "IdRef", "name" : "'invocationIndex'" }
+      ],
+      "extensions" : [ "SPV_AMD_shader_ballot" ]
+    },
+    {
+      "opname" : "MbcntAMD",
+      "opcode" : 4,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'mask'" }
+      ],
+      "extensions" : [ "SPV_AMD_shader_ballot" ]
+    }
+  ]
+}
diff --git a/libs/spirv-headers/spirv/unified1/extinst.spv-amd-shader-explicit-vertex-parameter.grammar.json b/libs/spirv-headers/spirv/unified1/extinst.spv-amd-shader-explicit-vertex-parameter.grammar.json
new file mode 100644
index 00000000000..e156b1b6f81
--- /dev/null
+++ b/libs/spirv-headers/spirv/unified1/extinst.spv-amd-shader-explicit-vertex-parameter.grammar.json
@@ -0,0 +1,14 @@
+{
+  "revision" : 4,
+  "instructions" : [
+    {
+      "opname" : "InterpolateAtVertexAMD",
+      "opcode" : 1,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'interpolant'" },
+        { "kind" : "IdRef", "name" : "'vertexIdx'" }
+      ],
+      "extensions" : [ "SPV_AMD_shader_explicit_vertex_parameter" ]
+    }
+  ]
+}
diff --git a/libs/spirv-headers/spirv/unified1/extinst.spv-amd-shader-trinary-minmax.grammar.json b/libs/spirv-headers/spirv/unified1/extinst.spv-amd-shader-trinary-minmax.grammar.json
new file mode 100644
index 00000000000..c681976fe92
--- /dev/null
+++ b/libs/spirv-headers/spirv/unified1/extinst.spv-amd-shader-trinary-minmax.grammar.json
@@ -0,0 +1,95 @@
+{
+  "revision" : 4,
+  "instructions" : [
+    {
+      "opname" : "FMin3AMD",
+      "opcode" : 1,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" },
+        { "kind" : "IdRef", "name" : "'z'" }
+      ],
+      "extensions" : [ "SPV_AMD_shader_trinary_minmax" ]
+    },
+    {
+      "opname" : "UMin3AMD",
+      "opcode" : 2,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" },
+        { "kind" : "IdRef", "name" : "'z'" }
+      ],
+      "extensions" : [ "SPV_AMD_shader_trinary_minmax" ]
+    },
+    {
+      "opname" : "SMin3AMD",
+      "opcode" : 3,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" },
+        { "kind" : "IdRef", "name" : "'z'" }
+      ],
+      "extensions" : [ "SPV_AMD_shader_trinary_minmax" ]
+    },
+    {
+      "opname" : "FMax3AMD",
+      "opcode" : 4,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" },
+        { "kind" : "IdRef", "name" : "'z'" }
+      ],
+      "extensions" : [ "SPV_AMD_shader_trinary_minmax" ]
+    },
+    {
+      "opname" : "UMax3AMD",
+      "opcode" : 5,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" },
+        { "kind" : "IdRef", "name" : "'z'" }
+      ],
+      "extensions" : [ "SPV_AMD_shader_trinary_minmax" ]
+    },
+    {
+      "opname" : "SMax3AMD",
+      "opcode" : 6,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" },
+        { "kind" : "IdRef", "name" : "'z'" }
+      ],
+      "extensions" : [ "SPV_AMD_shader_trinary_minmax" ]
+    },
+    {
+      "opname" : "FMid3AMD",
+      "opcode" : 7,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" },
+        { "kind" : "IdRef", "name" : "'z'" }
+      ],
+      "extensions" : [ "SPV_AMD_shader_trinary_minmax" ]
+    },
+    {
+      "opname" : "UMid3AMD",
+      "opcode" : 8,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" },
+        { "kind" : "IdRef", "name" : "'z'" }
+      ],
+      "extensions" : [ "SPV_AMD_shader_trinary_minmax" ]
+    },
+    {
+      "opname" : "SMid3AMD",
+      "opcode" : 9,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'x'" },
+        { "kind" : "IdRef", "name" : "'y'" },
+        { "kind" : "IdRef", "name" : "'z'" }
+      ],
+      "extensions" : [ "SPV_AMD_shader_trinary_minmax" ]
+    }
+  ]
+}
diff --git a/libs/spirv-headers/spirv/unified1/spirv.core.grammar.json b/libs/spirv-headers/spirv/unified1/spirv.core.grammar.json
new file mode 100644
index 00000000000..18901cd16d5
--- /dev/null
+++ b/libs/spirv-headers/spirv/unified1/spirv.core.grammar.json
@@ -0,0 +1,11779 @@
+{
+  "copyright" : [
+    "Copyright (c) 2014-2020 The Khronos Group Inc.",
+    "",
+    "Permission is hereby granted, free of charge, to any person obtaining a copy",
+    "of this software and/or associated documentation files (the \"Materials\"),",
+    "to deal in the Materials without restriction, including without limitation",
+    "the rights to use, copy, modify, merge, publish, distribute, sublicense,",
+    "and/or sell copies of the Materials, and to permit persons to whom the",
+    "Materials are furnished to do so, subject to the following conditions:",
+    "",
+    "The above copyright notice and this permission notice shall be included in",
+    "all copies or substantial portions of the Materials.",
+    "",
+    "MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS KHRONOS",
+    "STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS SPECIFICATIONS AND",
+    "HEADER INFORMATION ARE LOCATED AT https://www.khronos.org/registry/ ",
+    "",
+    "THE MATERIALS ARE PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS",
+    "OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,",
+    "FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL",
+    "THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER",
+    "LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING",
+    "FROM,OUT OF OR IN CONNECTION WITH THE MATERIALS OR THE USE OR OTHER DEALINGS",
+    "IN THE MATERIALS."
+  ],
+  "magic_number" : "0x07230203",
+  "major_version" : 1,
+  "minor_version" : 5,
+  "revision" : 4,
+  "instruction_printing_class" : [
+    {
+      "tag"     : "@exclude"
+    },
+    {
+      "tag"     : "Miscellaneous",
+      "heading" : "Miscellaneous Instructions"
+    },
+    {
+      "tag"     : "Debug",
+      "heading" : "Debug Instructions"
+    },
+    {
+      "tag"     : "Annotation",
+      "heading" : "Annotation Instructions"
+    },
+    {
+      "tag"     : "Extension",
+      "heading" : "Extension Instructions"
+    },
+    {
+      "tag"     : "Mode-Setting",
+      "heading" : "Mode-Setting Instructions"
+    },
+    {
+      "tag"     : "Type-Declaration",
+      "heading" : "Type-Declaration Instructions"
+    },
+    {
+      "tag"     : "Constant-Creation",
+      "heading" : "Constant-Creation Instructions"
+    },
+    {
+      "tag"     : "Memory",
+      "heading" : "Memory Instructions"
+    },
+    {
+      "tag"     : "Function",
+      "heading" : "Function Instructions"
+    },
+    {
+      "tag"     : "Image",
+      "heading" : "Image Instructions"
+    },
+    {
+      "tag"     : "Conversion",
+      "heading" : "Conversion Instructions"
+    },
+    {
+      "tag"     : "Composite",
+      "heading" : "Composite Instructions"
+    },
+    {
+      "tag"     : "Arithmetic",
+      "heading" : "Arithmetic Instructions"
+    },
+    {
+      "tag"     : "Bit",
+      "heading" : "Bit Instructions"
+    },
+    {
+      "tag"     : "Relational_and_Logical",
+      "heading" : "Relational and Logical Instructions"
+    },
+    {
+      "tag"     : "Derivative",
+      "heading" : "Derivative Instructions"
+    },
+    {
+      "tag"     : "Control-Flow",
+      "heading" : "Control-Flow Instructions"
+    },
+    {
+      "tag"     : "Atomic",
+      "heading" : "Atomic Instructions"
+    },
+    {
+      "tag"     : "Primitive",
+      "heading" : "Primitive Instructions"
+    },
+    {
+      "tag"     : "Barrier",
+      "heading" : "Barrier Instructions"
+    },
+    {
+      "tag"     : "Group",
+      "heading" : "Group and Subgroup Instructions"
+    },
+    {
+      "tag"     : "Device-Side_Enqueue",
+      "heading" : "Device-Side Enqueue Instructions"
+    },
+    {
+      "tag"     : "Pipe",
+      "heading" : "Pipe Instructions"
+    },
+    {
+      "tag"     : "Non-Uniform",
+      "heading" : "Non-Uniform Instructions"
+    },
+    {
+      "tag"     : "Reserved",
+      "heading" : "Reserved Instructions"
+    }
+  ],
+  "instructions" : [
+    {
+      "opname" : "OpNop",
+      "class"  : "Miscellaneous",
+      "opcode" : 0
+    },
+    {
+      "opname" : "OpUndef",
+      "class"  : "Miscellaneous",
+      "opcode" : 1,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" }
+      ]
+    },
+    {
+      "opname" : "OpSourceContinued",
+      "class"  : "Debug",
+      "opcode" : 2,
+      "operands" : [
+        { "kind" : "LiteralString", "name" : "'Continued Source'" }
+      ]
+    },
+    {
+      "opname" : "OpSource",
+      "class"  : "Debug",
+      "opcode" : 3,
+      "operands" : [
+        { "kind" : "SourceLanguage" },
+        { "kind" : "LiteralInteger",                     "name" : "'Version'" },
+        { "kind" : "IdRef",          "quantifier" : "?", "name" : "'File'" },
+        { "kind" : "LiteralString",  "quantifier" : "?", "name" : "'Source'" }
+      ]
+    },
+    {
+      "opname" : "OpSourceExtension",
+      "class"  : "Debug",
+      "opcode" : 4,
+      "operands" : [
+        { "kind" : "LiteralString", "name" : "'Extension'" }
+      ]
+    },
+    {
+      "opname" : "OpName",
+      "class"  : "Debug",
+      "opcode" : 5,
+      "operands" : [
+        { "kind" : "IdRef",         "name" : "'Target'" },
+        { "kind" : "LiteralString", "name" : "'Name'" }
+      ]
+    },
+    {
+      "opname" : "OpMemberName",
+      "class"  : "Debug",
+      "opcode" : 6,
+      "operands" : [
+        { "kind" : "IdRef",          "name" : "'Type'" },
+        { "kind" : "LiteralInteger", "name" : "'Member'" },
+        { "kind" : "LiteralString",  "name" : "'Name'" }
+      ]
+    },
+    {
+      "opname" : "OpString",
+      "class"  : "Debug",
+      "opcode" : 7,
+      "operands" : [
+        { "kind" : "IdResult" },
+        { "kind" : "LiteralString", "name" : "'String'" }
+      ]
+    },
+    {
+      "opname" : "OpLine",
+      "class"  : "Debug",
+      "opcode" : 8,
+      "operands" : [
+        { "kind" : "IdRef",          "name" : "'File'" },
+        { "kind" : "LiteralInteger", "name" : "'Line'" },
+        { "kind" : "LiteralInteger", "name" : "'Column'" }
+      ]
+    },
+    {
+      "opname" : "OpExtension",
+      "class"  : "Extension",
+      "opcode" : 10,
+      "operands" : [
+        { "kind" : "LiteralString", "name" : "'Name'" }
+      ]
+    },
+    {
+      "opname" : "OpExtInstImport",
+      "class"  : "Extension",
+      "opcode" : 11,
+      "operands" : [
+        { "kind" : "IdResult" },
+        { "kind" : "LiteralString", "name" : "'Name'" }
+      ]
+    },
+    {
+      "opname" : "OpExtInst",
+      "class"  : "Extension",
+      "opcode" : 12,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",                                     "name" : "'Set'" },
+        { "kind" : "LiteralExtInstInteger",                     "name" : "'Instruction'" },
+        { "kind" : "IdRef",                 "quantifier" : "*", "name" : "'Operand 1', +\n'Operand 2', +\n..." }
+      ]
+    },
+    {
+      "opname" : "OpMemoryModel",
+      "class"  : "Mode-Setting",
+      "opcode" : 14,
+      "operands" : [
+        { "kind" : "AddressingModel" },
+        { "kind" : "MemoryModel" }
+      ]
+    },
+    {
+      "opname" : "OpEntryPoint",
+      "class"  : "Mode-Setting",
+      "opcode" : 15,
+      "operands" : [
+        { "kind" : "ExecutionModel" },
+        { "kind" : "IdRef",                              "name" : "'Entry Point'" },
+        { "kind" : "LiteralString",                      "name" : "'Name'" },
+        { "kind" : "IdRef",          "quantifier" : "*", "name" : "'Interface'" }
+      ]
+    },
+    {
+      "opname" : "OpExecutionMode",
+      "class"  : "Mode-Setting",
+      "opcode" : 16,
+      "operands" : [
+        { "kind" : "IdRef",         "name" : "'Entry Point'" },
+        { "kind" : "ExecutionMode", "name" : "'Mode'" }
+      ]
+    },
+    {
+      "opname" : "OpCapability",
+      "class"  : "Mode-Setting",
+      "opcode" : 17,
+      "operands" : [
+        { "kind" : "Capability", "name" : "'Capability'" }
+      ]
+    },
+    {
+      "opname" : "OpTypeVoid",
+      "class"  : "Type-Declaration",
+      "opcode" : 19,
+      "operands" : [
+        { "kind" : "IdResult" }
+      ]
+    },
+    {
+      "opname" : "OpTypeBool",
+      "class"  : "Type-Declaration",
+      "opcode" : 20,
+      "operands" : [
+        { "kind" : "IdResult" }
+      ]
+    },
+    {
+      "opname" : "OpTypeInt",
+      "class"  : "Type-Declaration",
+      "opcode" : 21,
+      "operands" : [
+        { "kind" : "IdResult" },
+        { "kind" : "LiteralInteger", "name" : "'Width'" },
+        { "kind" : "LiteralInteger", "name" : "'Signedness'" }
+      ]
+    },
+    {
+      "opname" : "OpTypeFloat",
+      "class"  : "Type-Declaration",
+      "opcode" : 22,
+      "operands" : [
+        { "kind" : "IdResult" },
+        { "kind" : "LiteralInteger", "name" : "'Width'" }
+      ]
+    },
+    {
+      "opname" : "OpTypeVector",
+      "class"  : "Type-Declaration",
+      "opcode" : 23,
+      "operands" : [
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",          "name" : "'Component Type'" },
+        { "kind" : "LiteralInteger", "name" : "'Component Count'" }
+      ]
+    },
+    {
+      "opname" : "OpTypeMatrix",
+      "class"  : "Type-Declaration",
+      "opcode" : 24,
+      "operands" : [
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",          "name" : "'Column Type'" },
+        { "kind" : "LiteralInteger", "name" : "'Column Count'" }
+      ],
+      "capabilities" : [ "Matrix" ]
+    },
+    {
+      "opname" : "OpTypeImage",
+      "class"  : "Type-Declaration",
+      "opcode" : 25,
+      "operands" : [
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",                               "name" : "'Sampled Type'" },
+        { "kind" : "Dim" },
+        { "kind" : "LiteralInteger",                      "name" : "'Depth'" },
+        { "kind" : "LiteralInteger",                      "name" : "'Arrayed'" },
+        { "kind" : "LiteralInteger",                      "name" : "'MS'" },
+        { "kind" : "LiteralInteger",                      "name" : "'Sampled'" },
+        { "kind" : "ImageFormat" },
+        { "kind" : "AccessQualifier", "quantifier" : "?" }
+      ]
+    },
+    {
+      "opname" : "OpTypeSampler",
+      "class"  : "Type-Declaration",
+      "opcode" : 26,
+      "operands" : [
+        { "kind" : "IdResult" }
+      ]
+    },
+    {
+      "opname" : "OpTypeSampledImage",
+      "class"  : "Type-Declaration",
+      "opcode" : 27,
+      "operands" : [
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",    "name" : "'Image Type'" }
+      ]
+    },
+    {
+      "opname" : "OpTypeArray",
+      "class"  : "Type-Declaration",
+      "opcode" : 28,
+      "operands" : [
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",    "name" : "'Element Type'" },
+        { "kind" : "IdRef",    "name" : "'Length'" }
+      ]
+    },
+    {
+      "opname" : "OpTypeRuntimeArray",
+      "class"  : "Type-Declaration",
+      "opcode" : 29,
+      "operands" : [
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",    "name" : "'Element Type'" }
+      ],
+      "capabilities" : [ "Shader" ]
+    },
+    {
+      "opname" : "OpTypeStruct",
+      "class"  : "Type-Declaration",
+      "opcode" : 30,
+      "operands" : [
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",    "quantifier" : "*", "name" : "'Member 0 type', +\n'member 1 type', +\n..." }
+      ]
+    },
+    {
+      "opname" : "OpTypeOpaque",
+      "class"  : "Type-Declaration",
+      "opcode" : 31,
+      "operands" : [
+        { "kind" : "IdResult" },
+        { "kind" : "LiteralString", "name" : "The name of the opaque type." }
+      ],
+      "capabilities" : [ "Kernel" ]
+    },
+    {
+      "opname" : "OpTypePointer",
+      "class"  : "Type-Declaration",
+      "opcode" : 32,
+      "operands" : [
+        { "kind" : "IdResult" },
+        { "kind" : "StorageClass" },
+        { "kind" : "IdRef",        "name" : "'Type'" }
+      ]
+    },
+    {
+      "opname" : "OpTypeFunction",
+      "class"  : "Type-Declaration",
+      "opcode" : 33,
+      "operands" : [
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",                        "name" : "'Return Type'" },
+        { "kind" : "IdRef",    "quantifier" : "*", "name" : "'Parameter 0 Type', +\n'Parameter 1 Type', +\n..." }
+      ]
+    },
+    {
+      "opname" : "OpTypeEvent",
+      "class"  : "Type-Declaration",
+      "opcode" : 34,
+      "operands" : [
+        { "kind" : "IdResult" }
+      ],
+      "capabilities" : [ "Kernel" ]
+    },
+    {
+      "opname" : "OpTypeDeviceEvent",
+      "class"  : "Type-Declaration",
+      "opcode" : 35,
+      "operands" : [
+        { "kind" : "IdResult" }
+      ],
+      "capabilities" : [ "DeviceEnqueue" ]
+    },
+    {
+      "opname" : "OpTypeReserveId",
+      "class"  : "Type-Declaration",
+      "opcode" : 36,
+      "operands" : [
+        { "kind" : "IdResult" }
+      ],
+      "capabilities" : [ "Pipes" ]
+    },
+    {
+      "opname" : "OpTypeQueue",
+      "class"  : "Type-Declaration",
+      "opcode" : 37,
+      "operands" : [
+        { "kind" : "IdResult" }
+      ],
+      "capabilities" : [ "DeviceEnqueue" ]
+    },
+    {
+      "opname" : "OpTypePipe",
+      "class"  : "Type-Declaration",
+      "opcode" : 38,
+      "operands" : [
+        { "kind" : "IdResult" },
+        { "kind" : "AccessQualifier", "name" : "'Qualifier'" }
+      ],
+      "capabilities" : [ "Pipes" ]
+    },
+    {
+      "opname" : "OpTypeForwardPointer",
+      "class"  : "Type-Declaration",
+      "opcode" : 39,
+      "operands" : [
+        { "kind" : "IdRef",        "name" : "'Pointer Type'" },
+        { "kind" : "StorageClass" }
+      ],
+      "capabilities" : [
+        "Addresses",
+        "PhysicalStorageBufferAddresses"
+      ]
+    },
+    {
+      "opname" : "OpConstantTrue",
+      "class"  : "Constant-Creation",
+      "opcode" : 41,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" }
+      ]
+    },
+    {
+      "opname" : "OpConstantFalse",
+      "class"  : "Constant-Creation",
+      "opcode" : 42,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" }
+      ]
+    },
+    {
+      "opname" : "OpConstant",
+      "class"  : "Constant-Creation",
+      "opcode" : 43,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "LiteralContextDependentNumber", "name" : "'Value'" }
+      ]
+    },
+    {
+      "opname" : "OpConstantComposite",
+      "class"  : "Constant-Creation",
+      "opcode" : 44,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "quantifier" : "*", "name" : "'Constituents'" }
+      ]
+    },
+    {
+      "opname" : "OpConstantSampler",
+      "class"  : "Constant-Creation",
+      "opcode" : 45,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "SamplerAddressingMode" },
+        { "kind" : "LiteralInteger",        "name" : "'Param'" },
+        { "kind" : "SamplerFilterMode" }
+      ],
+      "capabilities" : [ "LiteralSampler" ]
+    },
+    {
+      "opname" : "OpConstantNull",
+      "class"  : "Constant-Creation",
+      "opcode" : 46,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" }
+      ]
+    },
+    {
+      "opname" : "OpSpecConstantTrue",
+      "class"  : "Constant-Creation",
+      "opcode" : 48,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" }
+      ]
+    },
+    {
+      "opname" : "OpSpecConstantFalse",
+      "class"  : "Constant-Creation",
+      "opcode" : 49,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" }
+      ]
+    },
+    {
+      "opname" : "OpSpecConstant",
+      "class"  : "Constant-Creation",
+      "opcode" : 50,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "LiteralContextDependentNumber", "name" : "'Value'" }
+      ]
+    },
+    {
+      "opname" : "OpSpecConstantComposite",
+      "class"  : "Constant-Creation",
+      "opcode" : 51,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "quantifier" : "*", "name" : "'Constituents'" }
+      ]
+    },
+    {
+      "opname" : "OpSpecConstantOp",
+      "class"  : "Constant-Creation",
+      "opcode" : 52,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "LiteralSpecConstantOpInteger", "name" : "'Opcode'" }
+      ]
+    },
+    {
+      "opname" : "OpFunction",
+      "class"  : "Function",
+      "opcode" : 54,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "FunctionControl" },
+        { "kind" : "IdRef",           "name" : "'Function Type'" }
+      ]
+    },
+    {
+      "opname" : "OpFunctionParameter",
+      "class"  : "Function",
+      "opcode" : 55,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" }
+      ]
+    },
+    {
+      "opname" : "OpFunctionEnd",
+      "class"  : "Function",
+      "opcode" : 56
+    },
+    {
+      "opname" : "OpFunctionCall",
+      "class"  : "Function",
+      "opcode" : 57,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",                            "name" : "'Function'" },
+        { "kind" : "IdRef",        "quantifier" : "*", "name" : "'Argument 0', +\n'Argument 1', +\n..." }
+      ]
+    },
+    {
+      "opname" : "OpVariable",
+      "class"  : "Memory",
+      "opcode" : 59,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "StorageClass" },
+        { "kind" : "IdRef",        "quantifier" : "?", "name" : "'Initializer'" }
+      ]
+    },
+    {
+      "opname" : "OpImageTexelPointer",
+      "class"  : "Memory",
+      "opcode" : 60,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Image'" },
+        { "kind" : "IdRef",        "name" : "'Coordinate'" },
+        { "kind" : "IdRef",        "name" : "'Sample'" }
+      ]
+    },
+    {
+      "opname" : "OpLoad",
+      "class"  : "Memory",
+      "opcode" : 61,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",                            "name" : "'Pointer'" },
+        { "kind" : "MemoryAccess", "quantifier" : "?" }
+      ]
+    },
+    {
+      "opname" : "OpStore",
+      "class"  : "Memory",
+      "opcode" : 62,
+      "operands" : [
+        { "kind" : "IdRef",                            "name" : "'Pointer'" },
+        { "kind" : "IdRef",                            "name" : "'Object'" },
+        { "kind" : "MemoryAccess", "quantifier" : "?" }
+      ]
+    },
+    {
+      "opname" : "OpCopyMemory",
+      "class"  : "Memory",
+      "opcode" : 63,
+      "operands" : [
+        { "kind" : "IdRef",                            "name" : "'Target'" },
+        { "kind" : "IdRef",                            "name" : "'Source'" },
+        { "kind" : "MemoryAccess", "quantifier" : "?" },
+        { "kind" : "MemoryAccess", "quantifier" : "?" }
+      ]
+    },
+    {
+      "opname" : "OpCopyMemorySized",
+      "class"  : "Memory",
+      "opcode" : 64,
+      "operands" : [
+        { "kind" : "IdRef",                            "name" : "'Target'" },
+        { "kind" : "IdRef",                            "name" : "'Source'" },
+        { "kind" : "IdRef",                            "name" : "'Size'" },
+        { "kind" : "MemoryAccess", "quantifier" : "?" },
+        { "kind" : "MemoryAccess", "quantifier" : "?" }
+      ],
+      "capabilities" : [ "Addresses" ]
+    },
+    {
+      "opname" : "OpAccessChain",
+      "class"  : "Memory",
+      "opcode" : 65,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",                            "name" : "'Base'" },
+        { "kind" : "IdRef",        "quantifier" : "*", "name" : "'Indexes'" }
+      ]
+    },
+    {
+      "opname" : "OpInBoundsAccessChain",
+      "class"  : "Memory",
+      "opcode" : 66,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",                            "name" : "'Base'" },
+        { "kind" : "IdRef",        "quantifier" : "*", "name" : "'Indexes'" }
+      ]
+    },
+    {
+      "opname" : "OpPtrAccessChain",
+      "class"  : "Memory",
+      "opcode" : 67,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",                            "name" : "'Base'" },
+        { "kind" : "IdRef",                            "name" : "'Element'" },
+        { "kind" : "IdRef",        "quantifier" : "*", "name" : "'Indexes'" }
+      ],
+      "capabilities" : [
+        "Addresses",
+        "VariablePointers",
+        "VariablePointersStorageBuffer",
+        "PhysicalStorageBufferAddresses"
+      ]
+    },
+    {
+      "opname" : "OpArrayLength",
+      "class"  : "Memory",
+      "opcode" : 68,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",          "name" : "'Structure'" },
+        { "kind" : "LiteralInteger", "name" : "'Array member'" }
+      ],
+      "capabilities" : [ "Shader" ]
+    },
+    {
+      "opname" : "OpGenericPtrMemSemantics",
+      "class"  : "Memory",
+      "opcode" : 69,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Pointer'" }
+      ],
+      "capabilities" : [ "Kernel" ]
+    },
+    {
+      "opname" : "OpInBoundsPtrAccessChain",
+      "class"  : "Memory",
+      "opcode" : 70,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",                            "name" : "'Base'" },
+        { "kind" : "IdRef",                            "name" : "'Element'" },
+        { "kind" : "IdRef",        "quantifier" : "*", "name" : "'Indexes'" }
+      ],
+      "capabilities" : [ "Addresses" ]
+    },
+    {
+      "opname" : "OpDecorate",
+      "class"  : "Annotation",
+      "opcode" : 71,
+      "operands" : [
+        { "kind" : "IdRef",      "name" : "'Target'" },
+        { "kind" : "Decoration" }
+      ]
+    },
+    {
+      "opname" : "OpMemberDecorate",
+      "class"  : "Annotation",
+      "opcode" : 72,
+      "operands" : [
+        { "kind" : "IdRef",          "name" : "'Structure Type'" },
+        { "kind" : "LiteralInteger", "name" : "'Member'" },
+        { "kind" : "Decoration" }
+      ]
+    },
+    {
+      "opname" : "OpDecorationGroup",
+      "class"  : "Annotation",
+      "opcode" : 73,
+      "operands" : [
+        { "kind" : "IdResult" }
+      ]
+    },
+    {
+      "opname" : "OpGroupDecorate",
+      "class"  : "Annotation",
+      "opcode" : 74,
+      "operands" : [
+        { "kind" : "IdRef",                     "name" : "'Decoration Group'" },
+        { "kind" : "IdRef", "quantifier" : "*", "name" : "'Targets'" }
+      ]
+    },
+    {
+      "opname" : "OpGroupMemberDecorate",
+      "class"  : "Annotation",
+      "opcode" : 75,
+      "operands" : [
+        { "kind" : "IdRef",                                       "name" : "'Decoration Group'" },
+        { "kind" : "PairIdRefLiteralInteger", "quantifier" : "*", "name" : "'Targets'" }
+      ]
+    },
+    {
+      "opname" : "OpVectorExtractDynamic",
+      "class"  : "Composite",
+      "opcode" : 77,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Vector'" },
+        { "kind" : "IdRef",        "name" : "'Index'" }
+      ]
+    },
+    {
+      "opname" : "OpVectorInsertDynamic",
+      "class"  : "Composite",
+      "opcode" : 78,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Vector'" },
+        { "kind" : "IdRef",        "name" : "'Component'" },
+        { "kind" : "IdRef",        "name" : "'Index'" }
+      ]
+    },
+    {
+      "opname" : "OpVectorShuffle",
+      "class"  : "Composite",
+      "opcode" : 79,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",                              "name" : "'Vector 1'" },
+        { "kind" : "IdRef",                              "name" : "'Vector 2'" },
+        { "kind" : "LiteralInteger", "quantifier" : "*", "name" : "'Components'" }
+      ]
+    },
+    {
+      "opname" : "OpCompositeConstruct",
+      "class"  : "Composite",
+      "opcode" : 80,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "quantifier" : "*", "name" : "'Constituents'" }
+      ]
+    },
+    {
+      "opname" : "OpCompositeExtract",
+      "class"  : "Composite",
+      "opcode" : 81,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",                              "name" : "'Composite'" },
+        { "kind" : "LiteralInteger", "quantifier" : "*", "name" : "'Indexes'" }
+      ]
+    },
+    {
+      "opname" : "OpCompositeInsert",
+      "class"  : "Composite",
+      "opcode" : 82,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",                              "name" : "'Object'" },
+        { "kind" : "IdRef",                              "name" : "'Composite'" },
+        { "kind" : "LiteralInteger", "quantifier" : "*", "name" : "'Indexes'" }
+      ]
+    },
+    {
+      "opname" : "OpCopyObject",
+      "class"  : "Composite",
+      "opcode" : 83,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand'" }
+      ]
+    },
+    {
+      "opname" : "OpTranspose",
+      "class"  : "Composite",
+      "opcode" : 84,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Matrix'" }
+      ],
+      "capabilities" : [ "Matrix" ]
+    },
+    {
+      "opname" : "OpSampledImage",
+      "class"  : "Image",
+      "opcode" : 86,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Image'" },
+        { "kind" : "IdRef",        "name" : "'Sampler'" }
+      ]
+    },
+    {
+      "opname" : "OpImageSampleImplicitLod",
+      "class"  : "Image",
+      "opcode" : 87,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",                             "name" : "'Sampled Image'" },
+        { "kind" : "IdRef",                             "name" : "'Coordinate'" },
+        { "kind" : "ImageOperands", "quantifier" : "?" }
+      ],
+      "capabilities" : [ "Shader" ]
+    },
+    {
+      "opname" : "OpImageSampleExplicitLod",
+      "class"  : "Image",
+      "opcode" : 88,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",         "name" : "'Sampled Image'" },
+        { "kind" : "IdRef",         "name" : "'Coordinate'" },
+        { "kind" : "ImageOperands" }
+      ]
+    },
+    {
+      "opname" : "OpImageSampleDrefImplicitLod",
+      "class"  : "Image",
+      "opcode" : 89,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",                             "name" : "'Sampled Image'" },
+        { "kind" : "IdRef",                             "name" : "'Coordinate'" },
+        { "kind" : "IdRef",                             "name" : "'D~ref~'" },
+        { "kind" : "ImageOperands", "quantifier" : "?" }
+      ],
+      "capabilities" : [ "Shader" ]
+    },
+    {
+      "opname" : "OpImageSampleDrefExplicitLod",
+      "class"  : "Image",
+      "opcode" : 90,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",         "name" : "'Sampled Image'" },
+        { "kind" : "IdRef",         "name" : "'Coordinate'" },
+        { "kind" : "IdRef",         "name" : "'D~ref~'" },
+        { "kind" : "ImageOperands" }
+      ],
+      "capabilities" : [ "Shader" ]
+    },
+    {
+      "opname" : "OpImageSampleProjImplicitLod",
+      "class"  : "Image",
+      "opcode" : 91,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",                             "name" : "'Sampled Image'" },
+        { "kind" : "IdRef",                             "name" : "'Coordinate'" },
+        { "kind" : "ImageOperands", "quantifier" : "?" }
+      ],
+      "capabilities" : [ "Shader" ]
+    },
+    {
+      "opname" : "OpImageSampleProjExplicitLod",
+      "class"  : "Image",
+      "opcode" : 92,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",         "name" : "'Sampled Image'" },
+        { "kind" : "IdRef",         "name" : "'Coordinate'" },
+        { "kind" : "ImageOperands" }
+      ],
+      "capabilities" : [ "Shader" ]
+    },
+    {
+      "opname" : "OpImageSampleProjDrefImplicitLod",
+      "class"  : "Image",
+      "opcode" : 93,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",                             "name" : "'Sampled Image'" },
+        { "kind" : "IdRef",                             "name" : "'Coordinate'" },
+        { "kind" : "IdRef",                             "name" : "'D~ref~'" },
+        { "kind" : "ImageOperands", "quantifier" : "?" }
+      ],
+      "capabilities" : [ "Shader" ]
+    },
+    {
+      "opname" : "OpImageSampleProjDrefExplicitLod",
+      "class"  : "Image",
+      "opcode" : 94,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",         "name" : "'Sampled Image'" },
+        { "kind" : "IdRef",         "name" : "'Coordinate'" },
+        { "kind" : "IdRef",         "name" : "'D~ref~'" },
+        { "kind" : "ImageOperands" }
+      ],
+      "capabilities" : [ "Shader" ]
+    },
+    {
+      "opname" : "OpImageFetch",
+      "class"  : "Image",
+      "opcode" : 95,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",                             "name" : "'Image'" },
+        { "kind" : "IdRef",                             "name" : "'Coordinate'" },
+        { "kind" : "ImageOperands", "quantifier" : "?" }
+      ]
+    },
+    {
+      "opname" : "OpImageGather",
+      "class"  : "Image",
+      "opcode" : 96,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",                             "name" : "'Sampled Image'" },
+        { "kind" : "IdRef",                             "name" : "'Coordinate'" },
+        { "kind" : "IdRef",                             "name" : "'Component'" },
+        { "kind" : "ImageOperands", "quantifier" : "?" }
+      ],
+      "capabilities" : [ "Shader" ]
+    },
+    {
+      "opname" : "OpImageDrefGather",
+      "class"  : "Image",
+      "opcode" : 97,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",                             "name" : "'Sampled Image'" },
+        { "kind" : "IdRef",                             "name" : "'Coordinate'" },
+        { "kind" : "IdRef",                             "name" : "'D~ref~'" },
+        { "kind" : "ImageOperands", "quantifier" : "?" }
+      ],
+      "capabilities" : [ "Shader" ]
+    },
+    {
+      "opname" : "OpImageRead",
+      "class"  : "Image",
+      "opcode" : 98,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",                             "name" : "'Image'" },
+        { "kind" : "IdRef",                             "name" : "'Coordinate'" },
+        { "kind" : "ImageOperands", "quantifier" : "?" }
+      ]
+    },
+    {
+      "opname" : "OpImageWrite",
+      "class"  : "Image",
+      "opcode" : 99,
+      "operands" : [
+        { "kind" : "IdRef",                             "name" : "'Image'" },
+        { "kind" : "IdRef",                             "name" : "'Coordinate'" },
+        { "kind" : "IdRef",                             "name" : "'Texel'" },
+        { "kind" : "ImageOperands", "quantifier" : "?" }
+      ]
+    },
+    {
+      "opname" : "OpImage",
+      "class"  : "Image",
+      "opcode" : 100,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Sampled Image'" }
+      ]
+    },
+    {
+      "opname" : "OpImageQueryFormat",
+      "class"  : "Image",
+      "opcode" : 101,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Image'" }
+      ],
+      "capabilities" : [ "Kernel" ]
+    },
+    {
+      "opname" : "OpImageQueryOrder",
+      "class"  : "Image",
+      "opcode" : 102,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Image'" }
+      ],
+      "capabilities" : [ "Kernel" ]
+    },
+    {
+      "opname" : "OpImageQuerySizeLod",
+      "class"  : "Image",
+      "opcode" : 103,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Image'" },
+        { "kind" : "IdRef",        "name" : "'Level of Detail'" }
+      ],
+      "capabilities" : [ "Kernel", "ImageQuery" ]
+    },
+    {
+      "opname" : "OpImageQuerySize",
+      "class"  : "Image",
+      "opcode" : 104,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Image'" }
+      ],
+      "capabilities" : [ "Kernel", "ImageQuery" ]
+    },
+    {
+      "opname" : "OpImageQueryLod",
+      "class"  : "Image",
+      "opcode" : 105,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Sampled Image'" },
+        { "kind" : "IdRef",        "name" : "'Coordinate'" }
+      ],
+      "capabilities" : [ "ImageQuery" ]
+    },
+    {
+      "opname" : "OpImageQueryLevels",
+      "class"  : "Image",
+      "opcode" : 106,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Image'" }
+      ],
+      "capabilities" : [ "Kernel", "ImageQuery" ]
+    },
+    {
+      "opname" : "OpImageQuerySamples",
+      "class"  : "Image",
+      "opcode" : 107,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Image'" }
+      ],
+      "capabilities" : [ "Kernel", "ImageQuery" ]
+    },
+    {
+      "opname" : "OpConvertFToU",
+      "class"  : "Conversion",
+      "opcode" : 109,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Float Value'" }
+      ]
+    },
+    {
+      "opname" : "OpConvertFToS",
+      "class"  : "Conversion",
+      "opcode" : 110,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Float Value'" }
+      ]
+    },
+    {
+      "opname" : "OpConvertSToF",
+      "class"  : "Conversion",
+      "opcode" : 111,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Signed Value'" }
+      ]
+    },
+    {
+      "opname" : "OpConvertUToF",
+      "class"  : "Conversion",
+      "opcode" : 112,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Unsigned Value'" }
+      ]
+    },
+    {
+      "opname" : "OpUConvert",
+      "class"  : "Conversion",
+      "opcode" : 113,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Unsigned Value'" }
+      ]
+    },
+    {
+      "opname" : "OpSConvert",
+      "class"  : "Conversion",
+      "opcode" : 114,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Signed Value'" }
+      ]
+    },
+    {
+      "opname" : "OpFConvert",
+      "class"  : "Conversion",
+      "opcode" : 115,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Float Value'" }
+      ]
+    },
+    {
+      "opname" : "OpQuantizeToF16",
+      "class"  : "Conversion",
+      "opcode" : 116,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Value'" }
+      ]
+    },
+    {
+      "opname" : "OpConvertPtrToU",
+      "class"  : "Conversion",
+      "opcode" : 117,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Pointer'" }
+      ],
+      "capabilities" : [
+        "Addresses",
+        "PhysicalStorageBufferAddresses"
+      ]
+    },
+    {
+      "opname" : "OpSatConvertSToU",
+      "class"  : "Conversion",
+      "opcode" : 118,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Signed Value'" }
+      ],
+      "capabilities" : [ "Kernel" ]
+    },
+    {
+      "opname" : "OpSatConvertUToS",
+      "class"  : "Conversion",
+      "opcode" : 119,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Unsigned Value'" }
+      ],
+      "capabilities" : [ "Kernel" ]
+    },
+    {
+      "opname" : "OpConvertUToPtr",
+      "class"  : "Conversion",
+      "opcode" : 120,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Integer Value'" }
+      ],
+      "capabilities" : [
+        "Addresses",
+        "PhysicalStorageBufferAddresses"
+      ]
+    },
+    {
+      "opname" : "OpPtrCastToGeneric",
+      "class"  : "Conversion",
+      "opcode" : 121,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Pointer'" }
+      ],
+      "capabilities" : [ "Kernel" ]
+    },
+    {
+      "opname" : "OpGenericCastToPtr",
+      "class"  : "Conversion",
+      "opcode" : 122,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Pointer'" }
+      ],
+      "capabilities" : [ "Kernel" ]
+    },
+    {
+      "opname" : "OpGenericCastToPtrExplicit",
+      "class"  : "Conversion",
+      "opcode" : 123,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Pointer'" },
+        { "kind" : "StorageClass", "name" : "'Storage'" }
+      ],
+      "capabilities" : [ "Kernel" ]
+    },
+    {
+      "opname" : "OpBitcast",
+      "class"  : "Conversion",
+      "opcode" : 124,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand'" }
+      ]
+    },
+    {
+      "opname" : "OpSNegate",
+      "class"  : "Arithmetic",
+      "opcode" : 126,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand'" }
+      ]
+    },
+    {
+      "opname" : "OpFNegate",
+      "class"  : "Arithmetic",
+      "opcode" : 127,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand'" }
+      ]
+    },
+    {
+      "opname" : "OpIAdd",
+      "class"  : "Arithmetic",
+      "opcode" : 128,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpFAdd",
+      "class"  : "Arithmetic",
+      "opcode" : 129,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpISub",
+      "class"  : "Arithmetic",
+      "opcode" : 130,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpFSub",
+      "class"  : "Arithmetic",
+      "opcode" : 131,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpIMul",
+      "class"  : "Arithmetic",
+      "opcode" : 132,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpFMul",
+      "class"  : "Arithmetic",
+      "opcode" : 133,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpUDiv",
+      "class"  : "Arithmetic",
+      "opcode" : 134,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpSDiv",
+      "class"  : "Arithmetic",
+      "opcode" : 135,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpFDiv",
+      "class"  : "Arithmetic",
+      "opcode" : 136,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpUMod",
+      "class"  : "Arithmetic",
+      "opcode" : 137,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpSRem",
+      "class"  : "Arithmetic",
+      "opcode" : 138,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpSMod",
+      "class"  : "Arithmetic",
+      "opcode" : 139,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpFRem",
+      "class"  : "Arithmetic",
+      "opcode" : 140,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpFMod",
+      "class"  : "Arithmetic",
+      "opcode" : 141,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpVectorTimesScalar",
+      "class"  : "Arithmetic",
+      "opcode" : 142,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Vector'" },
+        { "kind" : "IdRef",        "name" : "'Scalar'" }
+      ]
+    },
+    {
+      "opname" : "OpMatrixTimesScalar",
+      "class"  : "Arithmetic",
+      "opcode" : 143,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Matrix'" },
+        { "kind" : "IdRef",        "name" : "'Scalar'" }
+      ],
+      "capabilities" : [ "Matrix" ]
+    },
+    {
+      "opname" : "OpVectorTimesMatrix",
+      "class"  : "Arithmetic",
+      "opcode" : 144,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Vector'" },
+        { "kind" : "IdRef",        "name" : "'Matrix'" }
+      ],
+      "capabilities" : [ "Matrix" ]
+    },
+    {
+      "opname" : "OpMatrixTimesVector",
+      "class"  : "Arithmetic",
+      "opcode" : 145,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Matrix'" },
+        { "kind" : "IdRef",        "name" : "'Vector'" }
+      ],
+      "capabilities" : [ "Matrix" ]
+    },
+    {
+      "opname" : "OpMatrixTimesMatrix",
+      "class"  : "Arithmetic",
+      "opcode" : 146,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'LeftMatrix'" },
+        { "kind" : "IdRef",        "name" : "'RightMatrix'" }
+      ],
+      "capabilities" : [ "Matrix" ]
+    },
+    {
+      "opname" : "OpOuterProduct",
+      "class"  : "Arithmetic",
+      "opcode" : 147,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Vector 1'" },
+        { "kind" : "IdRef",        "name" : "'Vector 2'" }
+      ],
+      "capabilities" : [ "Matrix" ]
+    },
+    {
+      "opname" : "OpDot",
+      "class"  : "Arithmetic",
+      "opcode" : 148,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Vector 1'" },
+        { "kind" : "IdRef",        "name" : "'Vector 2'" }
+      ]
+    },
+    {
+      "opname" : "OpIAddCarry",
+      "class"  : "Arithmetic",
+      "opcode" : 149,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpISubBorrow",
+      "class"  : "Arithmetic",
+      "opcode" : 150,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpUMulExtended",
+      "class"  : "Arithmetic",
+      "opcode" : 151,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpSMulExtended",
+      "class"  : "Arithmetic",
+      "opcode" : 152,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpAny",
+      "class"  : "Relational_and_Logical",
+      "opcode" : 154,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Vector'" }
+      ]
+    },
+    {
+      "opname" : "OpAll",
+      "class"  : "Relational_and_Logical",
+      "opcode" : 155,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Vector'" }
+      ]
+    },
+    {
+      "opname" : "OpIsNan",
+      "class"  : "Relational_and_Logical",
+      "opcode" : 156,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "OpIsInf",
+      "class"  : "Relational_and_Logical",
+      "opcode" : 157,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'x'" }
+      ]
+    },
+    {
+      "opname" : "OpIsFinite",
+      "class"  : "Relational_and_Logical",
+      "opcode" : 158,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'x'" }
+      ],
+      "capabilities" : [ "Kernel" ]
+    },
+    {
+      "opname" : "OpIsNormal",
+      "class"  : "Relational_and_Logical",
+      "opcode" : 159,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'x'" }
+      ],
+      "capabilities" : [ "Kernel" ]
+    },
+    {
+      "opname" : "OpSignBitSet",
+      "class"  : "Relational_and_Logical",
+      "opcode" : 160,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'x'" }
+      ],
+      "capabilities" : [ "Kernel" ]
+    },
+    {
+      "opname" : "OpLessOrGreater",
+      "class"  : "Relational_and_Logical",
+      "opcode" : 161,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'x'" },
+        { "kind" : "IdRef",        "name" : "'y'" }
+      ],
+      "capabilities" : [ "Kernel" ]
+    },
+    {
+      "opname" : "OpOrdered",
+      "class"  : "Relational_and_Logical",
+      "opcode" : 162,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'x'" },
+        { "kind" : "IdRef",        "name" : "'y'" }
+      ],
+      "capabilities" : [ "Kernel" ]
+    },
+    {
+      "opname" : "OpUnordered",
+      "class"  : "Relational_and_Logical",
+      "opcode" : 163,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'x'" },
+        { "kind" : "IdRef",        "name" : "'y'" }
+      ],
+      "capabilities" : [ "Kernel" ]
+    },
+    {
+      "opname" : "OpLogicalEqual",
+      "class"  : "Relational_and_Logical",
+      "opcode" : 164,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpLogicalNotEqual",
+      "class"  : "Relational_and_Logical",
+      "opcode" : 165,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpLogicalOr",
+      "class"  : "Relational_and_Logical",
+      "opcode" : 166,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpLogicalAnd",
+      "class"  : "Relational_and_Logical",
+      "opcode" : 167,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpLogicalNot",
+      "class"  : "Relational_and_Logical",
+      "opcode" : 168,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand'" }
+      ]
+    },
+    {
+      "opname" : "OpSelect",
+      "class"  : "Relational_and_Logical",
+      "opcode" : 169,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Condition'" },
+        { "kind" : "IdRef",        "name" : "'Object 1'" },
+        { "kind" : "IdRef",        "name" : "'Object 2'" }
+      ]
+    },
+    {
+      "opname" : "OpIEqual",
+      "class"  : "Relational_and_Logical",
+      "opcode" : 170,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpINotEqual",
+      "class"  : "Relational_and_Logical",
+      "opcode" : 171,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpUGreaterThan",
+      "class"  : "Relational_and_Logical",
+      "opcode" : 172,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpSGreaterThan",
+      "class"  : "Relational_and_Logical",
+      "opcode" : 173,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpUGreaterThanEqual",
+      "class"  : "Relational_and_Logical",
+      "opcode" : 174,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpSGreaterThanEqual",
+      "class"  : "Relational_and_Logical",
+      "opcode" : 175,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpULessThan",
+      "class"  : "Relational_and_Logical",
+      "opcode" : 176,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpSLessThan",
+      "class"  : "Relational_and_Logical",
+      "opcode" : 177,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpULessThanEqual",
+      "class"  : "Relational_and_Logical",
+      "opcode" : 178,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpSLessThanEqual",
+      "class"  : "Relational_and_Logical",
+      "opcode" : 179,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpFOrdEqual",
+      "class"  : "Relational_and_Logical",
+      "opcode" : 180,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpFUnordEqual",
+      "class"  : "Relational_and_Logical",
+      "opcode" : 181,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpFOrdNotEqual",
+      "class"  : "Relational_and_Logical",
+      "opcode" : 182,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpFUnordNotEqual",
+      "class"  : "Relational_and_Logical",
+      "opcode" : 183,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpFOrdLessThan",
+      "class"  : "Relational_and_Logical",
+      "opcode" : 184,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpFUnordLessThan",
+      "class"  : "Relational_and_Logical",
+      "opcode" : 185,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpFOrdGreaterThan",
+      "class"  : "Relational_and_Logical",
+      "opcode" : 186,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpFUnordGreaterThan",
+      "class"  : "Relational_and_Logical",
+      "opcode" : 187,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpFOrdLessThanEqual",
+      "class"  : "Relational_and_Logical",
+      "opcode" : 188,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpFUnordLessThanEqual",
+      "class"  : "Relational_and_Logical",
+      "opcode" : 189,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpFOrdGreaterThanEqual",
+      "class"  : "Relational_and_Logical",
+      "opcode" : 190,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpFUnordGreaterThanEqual",
+      "class"  : "Relational_and_Logical",
+      "opcode" : 191,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpShiftRightLogical",
+      "class"  : "Bit",
+      "opcode" : 194,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Base'" },
+        { "kind" : "IdRef",        "name" : "'Shift'" }
+      ]
+    },
+    {
+      "opname" : "OpShiftRightArithmetic",
+      "class"  : "Bit",
+      "opcode" : 195,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Base'" },
+        { "kind" : "IdRef",        "name" : "'Shift'" }
+      ]
+    },
+    {
+      "opname" : "OpShiftLeftLogical",
+      "class"  : "Bit",
+      "opcode" : 196,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Base'" },
+        { "kind" : "IdRef",        "name" : "'Shift'" }
+      ]
+    },
+    {
+      "opname" : "OpBitwiseOr",
+      "class"  : "Bit",
+      "opcode" : 197,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpBitwiseXor",
+      "class"  : "Bit",
+      "opcode" : 198,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpBitwiseAnd",
+      "class"  : "Bit",
+      "opcode" : 199,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ]
+    },
+    {
+      "opname" : "OpNot",
+      "class"  : "Bit",
+      "opcode" : 200,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand'" }
+      ]
+    },
+    {
+      "opname" : "OpBitFieldInsert",
+      "class"  : "Bit",
+      "opcode" : 201,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Base'" },
+        { "kind" : "IdRef",        "name" : "'Insert'" },
+        { "kind" : "IdRef",        "name" : "'Offset'" },
+        { "kind" : "IdRef",        "name" : "'Count'" }
+      ],
+      "capabilities" : [ "Shader" ]
+    },
+    {
+      "opname" : "OpBitFieldSExtract",
+      "class"  : "Bit",
+      "opcode" : 202,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Base'" },
+        { "kind" : "IdRef",        "name" : "'Offset'" },
+        { "kind" : "IdRef",        "name" : "'Count'" }
+      ],
+      "capabilities" : [ "Shader" ]
+    },
+    {
+      "opname" : "OpBitFieldUExtract",
+      "class"  : "Bit",
+      "opcode" : 203,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Base'" },
+        { "kind" : "IdRef",        "name" : "'Offset'" },
+        { "kind" : "IdRef",        "name" : "'Count'" }
+      ],
+      "capabilities" : [ "Shader" ]
+    },
+    {
+      "opname" : "OpBitReverse",
+      "class"  : "Bit",
+      "opcode" : 204,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Base'" }
+      ],
+      "capabilities" : [ "Shader" ]
+    },
+    {
+      "opname" : "OpBitCount",
+      "class"  : "Bit",
+      "opcode" : 205,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Base'" }
+      ]
+    },
+    {
+      "opname" : "OpDPdx",
+      "class"  : "Derivative",
+      "opcode" : 207,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'P'" }
+      ],
+      "capabilities" : [ "Shader" ]
+    },
+    {
+      "opname" : "OpDPdy",
+      "class"  : "Derivative",
+      "opcode" : 208,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'P'" }
+      ],
+      "capabilities" : [ "Shader" ]
+    },
+    {
+      "opname" : "OpFwidth",
+      "class"  : "Derivative",
+      "opcode" : 209,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'P'" }
+      ],
+      "capabilities" : [ "Shader" ]
+    },
+    {
+      "opname" : "OpDPdxFine",
+      "class"  : "Derivative",
+      "opcode" : 210,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'P'" }
+      ],
+      "capabilities" : [ "DerivativeControl" ]
+    },
+    {
+      "opname" : "OpDPdyFine",
+      "class"  : "Derivative",
+      "opcode" : 211,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'P'" }
+      ],
+      "capabilities" : [ "DerivativeControl" ]
+    },
+    {
+      "opname" : "OpFwidthFine",
+      "class"  : "Derivative",
+      "opcode" : 212,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'P'" }
+      ],
+      "capabilities" : [ "DerivativeControl" ]
+    },
+    {
+      "opname" : "OpDPdxCoarse",
+      "class"  : "Derivative",
+      "opcode" : 213,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'P'" }
+      ],
+      "capabilities" : [ "DerivativeControl" ]
+    },
+    {
+      "opname" : "OpDPdyCoarse",
+      "class"  : "Derivative",
+      "opcode" : 214,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'P'" }
+      ],
+      "capabilities" : [ "DerivativeControl" ]
+    },
+    {
+      "opname" : "OpFwidthCoarse",
+      "class"  : "Derivative",
+      "opcode" : 215,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'P'" }
+      ],
+      "capabilities" : [ "DerivativeControl" ]
+    },
+    {
+      "opname" : "OpEmitVertex",
+      "class"  : "Primitive",
+      "opcode" : 218,
+      "capabilities" : [ "Geometry" ]
+    },
+    {
+      "opname" : "OpEndPrimitive",
+      "class"  : "Primitive",
+      "opcode" : 219,
+      "capabilities" : [ "Geometry" ]
+    },
+    {
+      "opname" : "OpEmitStreamVertex",
+      "class"  : "Primitive",
+      "opcode" : 220,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'Stream'" }
+      ],
+      "capabilities" : [ "GeometryStreams" ]
+    },
+    {
+      "opname" : "OpEndStreamPrimitive",
+      "class"  : "Primitive",
+      "opcode" : 221,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'Stream'" }
+      ],
+      "capabilities" : [ "GeometryStreams" ]
+    },
+    {
+      "opname" : "OpControlBarrier",
+      "class"  : "Barrier",
+      "opcode" : 224,
+      "operands" : [
+        { "kind" : "IdScope",           "name" : "'Execution'" },
+        { "kind" : "IdScope",           "name" : "'Memory'" },
+        { "kind" : "IdMemorySemantics", "name" : "'Semantics'" }
+      ]
+    },
+    {
+      "opname" : "OpMemoryBarrier",
+      "class"  : "Barrier",
+      "opcode" : 225,
+      "operands" : [
+        { "kind" : "IdScope",           "name" : "'Memory'" },
+        { "kind" : "IdMemorySemantics", "name" : "'Semantics'" }
+      ]
+    },
+    {
+      "opname" : "OpAtomicLoad",
+      "class"  : "Atomic",
+      "opcode" : 227,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",             "name" : "'Pointer'" },
+        { "kind" : "IdScope",           "name" : "'Memory'" },
+        { "kind" : "IdMemorySemantics", "name" : "'Semantics'" }
+      ]
+    },
+    {
+      "opname" : "OpAtomicStore",
+      "class"  : "Atomic",
+      "opcode" : 228,
+      "operands" : [
+        { "kind" : "IdRef",             "name" : "'Pointer'" },
+        { "kind" : "IdScope",           "name" : "'Memory'" },
+        { "kind" : "IdMemorySemantics", "name" : "'Semantics'" },
+        { "kind" : "IdRef",             "name" : "'Value'" }
+      ]
+    },
+    {
+      "opname" : "OpAtomicExchange",
+      "class"  : "Atomic",
+      "opcode" : 229,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",             "name" : "'Pointer'" },
+        { "kind" : "IdScope",           "name" : "'Memory'" },
+        { "kind" : "IdMemorySemantics", "name" : "'Semantics'" },
+        { "kind" : "IdRef",             "name" : "'Value'" }
+      ]
+    },
+    {
+      "opname" : "OpAtomicCompareExchange",
+      "class"  : "Atomic",
+      "opcode" : 230,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",             "name" : "'Pointer'" },
+        { "kind" : "IdScope",           "name" : "'Memory'" },
+        { "kind" : "IdMemorySemantics", "name" : "'Equal'" },
+        { "kind" : "IdMemorySemantics", "name" : "'Unequal'" },
+        { "kind" : "IdRef",             "name" : "'Value'" },
+        { "kind" : "IdRef",             "name" : "'Comparator'" }
+      ]
+    },
+    {
+      "opname" : "OpAtomicCompareExchangeWeak",
+      "class"  : "Atomic",
+      "opcode" : 231,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",             "name" : "'Pointer'" },
+        { "kind" : "IdScope",           "name" : "'Memory'" },
+        { "kind" : "IdMemorySemantics", "name" : "'Equal'" },
+        { "kind" : "IdMemorySemantics", "name" : "'Unequal'" },
+        { "kind" : "IdRef",             "name" : "'Value'" },
+        { "kind" : "IdRef",             "name" : "'Comparator'" }
+      ],
+      "capabilities" : [ "Kernel" ],
+      "lastVersion" : "1.3"
+    },
+    {
+      "opname" : "OpAtomicIIncrement",
+      "class"  : "Atomic",
+      "opcode" : 232,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",             "name" : "'Pointer'" },
+        { "kind" : "IdScope",           "name" : "'Memory'" },
+        { "kind" : "IdMemorySemantics", "name" : "'Semantics'" }
+      ]
+    },
+    {
+      "opname" : "OpAtomicIDecrement",
+      "class"  : "Atomic",
+      "opcode" : 233,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",             "name" : "'Pointer'" },
+        { "kind" : "IdScope",           "name" : "'Memory'" },
+        { "kind" : "IdMemorySemantics", "name" : "'Semantics'" }
+      ]
+    },
+    {
+      "opname" : "OpAtomicIAdd",
+      "class"  : "Atomic",
+      "opcode" : 234,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",             "name" : "'Pointer'" },
+        { "kind" : "IdScope",           "name" : "'Memory'" },
+        { "kind" : "IdMemorySemantics", "name" : "'Semantics'" },
+        { "kind" : "IdRef",             "name" : "'Value'" }
+      ]
+    },
+    {
+      "opname" : "OpAtomicISub",
+      "class"  : "Atomic",
+      "opcode" : 235,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",             "name" : "'Pointer'" },
+        { "kind" : "IdScope",           "name" : "'Memory'" },
+        { "kind" : "IdMemorySemantics", "name" : "'Semantics'" },
+        { "kind" : "IdRef",             "name" : "'Value'" }
+      ]
+    },
+    {
+      "opname" : "OpAtomicSMin",
+      "class"  : "Atomic",
+      "opcode" : 236,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",             "name" : "'Pointer'" },
+        { "kind" : "IdScope",           "name" : "'Memory'" },
+        { "kind" : "IdMemorySemantics", "name" : "'Semantics'" },
+        { "kind" : "IdRef",             "name" : "'Value'" }
+      ]
+    },
+    {
+      "opname" : "OpAtomicUMin",
+      "class"  : "Atomic",
+      "opcode" : 237,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",             "name" : "'Pointer'" },
+        { "kind" : "IdScope",           "name" : "'Memory'" },
+        { "kind" : "IdMemorySemantics", "name" : "'Semantics'" },
+        { "kind" : "IdRef",             "name" : "'Value'" }
+      ]
+    },
+    {
+      "opname" : "OpAtomicSMax",
+      "class"  : "Atomic",
+      "opcode" : 238,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",             "name" : "'Pointer'" },
+        { "kind" : "IdScope",           "name" : "'Memory'" },
+        { "kind" : "IdMemorySemantics", "name" : "'Semantics'" },
+        { "kind" : "IdRef",             "name" : "'Value'" }
+      ]
+    },
+    {
+      "opname" : "OpAtomicUMax",
+      "class"  : "Atomic",
+      "opcode" : 239,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",             "name" : "'Pointer'" },
+        { "kind" : "IdScope",           "name" : "'Memory'" },
+        { "kind" : "IdMemorySemantics", "name" : "'Semantics'" },
+        { "kind" : "IdRef",             "name" : "'Value'" }
+      ]
+    },
+    {
+      "opname" : "OpAtomicAnd",
+      "class"  : "Atomic",
+      "opcode" : 240,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",             "name" : "'Pointer'" },
+        { "kind" : "IdScope",           "name" : "'Memory'" },
+        { "kind" : "IdMemorySemantics", "name" : "'Semantics'" },
+        { "kind" : "IdRef",             "name" : "'Value'" }
+      ]
+    },
+    {
+      "opname" : "OpAtomicOr",
+      "class"  : "Atomic",
+      "opcode" : 241,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",             "name" : "'Pointer'" },
+        { "kind" : "IdScope",           "name" : "'Memory'" },
+        { "kind" : "IdMemorySemantics", "name" : "'Semantics'" },
+        { "kind" : "IdRef",             "name" : "'Value'" }
+      ]
+    },
+    {
+      "opname" : "OpAtomicXor",
+      "class"  : "Atomic",
+      "opcode" : 242,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",             "name" : "'Pointer'" },
+        { "kind" : "IdScope",           "name" : "'Memory'" },
+        { "kind" : "IdMemorySemantics", "name" : "'Semantics'" },
+        { "kind" : "IdRef",             "name" : "'Value'" }
+      ]
+    },
+    {
+      "opname" : "OpPhi",
+      "class"  : "Control-Flow",
+      "opcode" : 245,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "PairIdRefIdRef", "quantifier" : "*", "name" : "'Variable, Parent, ...'" }
+      ]
+    },
+    {
+      "opname" : "OpLoopMerge",
+      "class"  : "Control-Flow",
+      "opcode" : 246,
+      "operands" : [
+        { "kind" : "IdRef",       "name" : "'Merge Block'" },
+        { "kind" : "IdRef",       "name" : "'Continue Target'" },
+        { "kind" : "LoopControl" }
+      ]
+    },
+    {
+      "opname" : "OpSelectionMerge",
+      "class"  : "Control-Flow",
+      "opcode" : 247,
+      "operands" : [
+        { "kind" : "IdRef",            "name" : "'Merge Block'" },
+        { "kind" : "SelectionControl" }
+      ]
+    },
+    {
+      "opname" : "OpLabel",
+      "class"  : "Control-Flow",
+      "opcode" : 248,
+      "operands" : [
+        { "kind" : "IdResult" }
+      ]
+    },
+    {
+      "opname" : "OpBranch",
+      "class"  : "Control-Flow",
+      "opcode" : 249,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'Target Label'" }
+      ]
+    },
+    {
+      "opname" : "OpBranchConditional",
+      "class"  : "Control-Flow",
+      "opcode" : 250,
+      "operands" : [
+        { "kind" : "IdRef",                              "name" : "'Condition'" },
+        { "kind" : "IdRef",                              "name" : "'True Label'" },
+        { "kind" : "IdRef",                              "name" : "'False Label'" },
+        { "kind" : "LiteralInteger", "quantifier" : "*", "name" : "'Branch weights'" }
+      ]
+    },
+    {
+      "opname" : "OpSwitch",
+      "class"  : "Control-Flow",
+      "opcode" : 251,
+      "operands" : [
+        { "kind" : "IdRef",                                       "name" : "'Selector'" },
+        { "kind" : "IdRef",                                       "name" : "'Default'" },
+        { "kind" : "PairLiteralIntegerIdRef", "quantifier" : "*", "name" : "'Target'" }
+      ]
+    },
+    {
+      "opname" : "OpKill",
+      "class"  : "Control-Flow",
+      "opcode" : 252,
+      "capabilities" : [ "Shader" ]
+    },
+    {
+      "opname" : "OpReturn",
+      "class"  : "Control-Flow",
+      "opcode" : 253
+    },
+    {
+      "opname" : "OpReturnValue",
+      "class"  : "Control-Flow",
+      "opcode" : 254,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'Value'" }
+      ]
+    },
+    {
+      "opname" : "OpUnreachable",
+      "class"  : "Control-Flow",
+      "opcode" : 255
+    },
+    {
+      "opname" : "OpLifetimeStart",
+      "class"  : "Control-Flow",
+      "opcode" : 256,
+      "operands" : [
+        { "kind" : "IdRef",          "name" : "'Pointer'" },
+        { "kind" : "LiteralInteger", "name" : "'Size'" }
+      ],
+      "capabilities" : [ "Kernel" ]
+    },
+    {
+      "opname" : "OpLifetimeStop",
+      "class"  : "Control-Flow",
+      "opcode" : 257,
+      "operands" : [
+        { "kind" : "IdRef",          "name" : "'Pointer'" },
+        { "kind" : "LiteralInteger", "name" : "'Size'" }
+      ],
+      "capabilities" : [ "Kernel" ]
+    },
+    {
+      "opname" : "OpGroupAsyncCopy",
+      "class"  : "Group",
+      "opcode" : 259,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdScope",      "name" : "'Execution'" },
+        { "kind" : "IdRef",        "name" : "'Destination'" },
+        { "kind" : "IdRef",        "name" : "'Source'" },
+        { "kind" : "IdRef",        "name" : "'Num Elements'" },
+        { "kind" : "IdRef",        "name" : "'Stride'" },
+        { "kind" : "IdRef",        "name" : "'Event'" }
+      ],
+      "capabilities" : [ "Kernel" ]
+    },
+    {
+      "opname" : "OpGroupWaitEvents",
+      "class"  : "Group",
+      "opcode" : 260,
+      "operands" : [
+        { "kind" : "IdScope", "name" : "'Execution'" },
+        { "kind" : "IdRef",   "name" : "'Num Events'" },
+        { "kind" : "IdRef",   "name" : "'Events List'" }
+      ],
+      "capabilities" : [ "Kernel" ]
+    },
+    {
+      "opname" : "OpGroupAll",
+      "class"  : "Group",
+      "opcode" : 261,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdScope",      "name" : "'Execution'" },
+        { "kind" : "IdRef",        "name" : "'Predicate'" }
+      ],
+      "capabilities" : [ "Groups" ]
+    },
+    {
+      "opname" : "OpGroupAny",
+      "class"  : "Group",
+      "opcode" : 262,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdScope",      "name" : "'Execution'" },
+        { "kind" : "IdRef",        "name" : "'Predicate'" }
+      ],
+      "capabilities" : [ "Groups" ]
+    },
+    {
+      "opname" : "OpGroupBroadcast",
+      "class"  : "Group",
+      "opcode" : 263,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdScope",      "name" : "'Execution'" },
+        { "kind" : "IdRef",        "name" : "'Value'" },
+        { "kind" : "IdRef",        "name" : "'LocalId'" }
+      ],
+      "capabilities" : [ "Groups" ]
+    },
+    {
+      "opname" : "OpGroupIAdd",
+      "class"  : "Group",
+      "opcode" : 264,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdScope",        "name" : "'Execution'" },
+        { "kind" : "GroupOperation", "name" : "'Operation'" },
+        { "kind" : "IdRef",          "name" : "'X'" }
+      ],
+      "capabilities" : [ "Groups" ]
+    },
+    {
+      "opname" : "OpGroupFAdd",
+      "class"  : "Group",
+      "opcode" : 265,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdScope",        "name" : "'Execution'" },
+        { "kind" : "GroupOperation", "name" : "'Operation'" },
+        { "kind" : "IdRef",          "name" : "'X'" }
+      ],
+      "capabilities" : [ "Groups" ]
+    },
+    {
+      "opname" : "OpGroupFMin",
+      "class"  : "Group",
+      "opcode" : 266,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdScope",        "name" : "'Execution'" },
+        { "kind" : "GroupOperation", "name" : "'Operation'" },
+        { "kind" : "IdRef",          "name" : "'X'" }
+      ],
+      "capabilities" : [ "Groups" ]
+    },
+    {
+      "opname" : "OpGroupUMin",
+      "class"  : "Group",
+      "opcode" : 267,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdScope",        "name" : "'Execution'" },
+        { "kind" : "GroupOperation", "name" : "'Operation'" },
+        { "kind" : "IdRef",          "name" : "'X'" }
+      ],
+      "capabilities" : [ "Groups" ]
+    },
+    {
+      "opname" : "OpGroupSMin",
+      "class"  : "Group",
+      "opcode" : 268,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdScope",        "name" : "'Execution'" },
+        { "kind" : "GroupOperation", "name" : "'Operation'" },
+        { "kind" : "IdRef",          "name" : "'X'" }
+      ],
+      "capabilities" : [ "Groups" ]
+    },
+    {
+      "opname" : "OpGroupFMax",
+      "class"  : "Group",
+      "opcode" : 269,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdScope",        "name" : "'Execution'" },
+        { "kind" : "GroupOperation", "name" : "'Operation'" },
+        { "kind" : "IdRef",          "name" : "'X'" }
+      ],
+      "capabilities" : [ "Groups" ]
+    },
+    {
+      "opname" : "OpGroupUMax",
+      "class"  : "Group",
+      "opcode" : 270,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdScope",        "name" : "'Execution'" },
+        { "kind" : "GroupOperation", "name" : "'Operation'" },
+        { "kind" : "IdRef",          "name" : "'X'" }
+      ],
+      "capabilities" : [ "Groups" ]
+    },
+    {
+      "opname" : "OpGroupSMax",
+      "class"  : "Group",
+      "opcode" : 271,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdScope",        "name" : "'Execution'" },
+        { "kind" : "GroupOperation", "name" : "'Operation'" },
+        { "kind" : "IdRef",          "name" : "'X'" }
+      ],
+      "capabilities" : [ "Groups" ]
+    },
+    {
+      "opname" : "OpReadPipe",
+      "class"  : "Pipe",
+      "opcode" : 274,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Pipe'" },
+        { "kind" : "IdRef",        "name" : "'Pointer'" },
+        { "kind" : "IdRef",        "name" : "'Packet Size'" },
+        { "kind" : "IdRef",        "name" : "'Packet Alignment'" }
+      ],
+      "capabilities" : [ "Pipes" ]
+    },
+    {
+      "opname" : "OpWritePipe",
+      "class"  : "Pipe",
+      "opcode" : 275,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Pipe'" },
+        { "kind" : "IdRef",        "name" : "'Pointer'" },
+        { "kind" : "IdRef",        "name" : "'Packet Size'" },
+        { "kind" : "IdRef",        "name" : "'Packet Alignment'" }
+      ],
+      "capabilities" : [ "Pipes" ]
+    },
+    {
+      "opname" : "OpReservedReadPipe",
+      "class"  : "Pipe",
+      "opcode" : 276,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Pipe'" },
+        { "kind" : "IdRef",        "name" : "'Reserve Id'" },
+        { "kind" : "IdRef",        "name" : "'Index'" },
+        { "kind" : "IdRef",        "name" : "'Pointer'" },
+        { "kind" : "IdRef",        "name" : "'Packet Size'" },
+        { "kind" : "IdRef",        "name" : "'Packet Alignment'" }
+      ],
+      "capabilities" : [ "Pipes" ]
+    },
+    {
+      "opname" : "OpReservedWritePipe",
+      "class"  : "Pipe",
+      "opcode" : 277,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Pipe'" },
+        { "kind" : "IdRef",        "name" : "'Reserve Id'" },
+        { "kind" : "IdRef",        "name" : "'Index'" },
+        { "kind" : "IdRef",        "name" : "'Pointer'" },
+        { "kind" : "IdRef",        "name" : "'Packet Size'" },
+        { "kind" : "IdRef",        "name" : "'Packet Alignment'" }
+      ],
+      "capabilities" : [ "Pipes" ]
+    },
+    {
+      "opname" : "OpReserveReadPipePackets",
+      "class"  : "Pipe",
+      "opcode" : 278,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Pipe'" },
+        { "kind" : "IdRef",        "name" : "'Num Packets'" },
+        { "kind" : "IdRef",        "name" : "'Packet Size'" },
+        { "kind" : "IdRef",        "name" : "'Packet Alignment'" }
+      ],
+      "capabilities" : [ "Pipes" ]
+    },
+    {
+      "opname" : "OpReserveWritePipePackets",
+      "class"  : "Pipe",
+      "opcode" : 279,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Pipe'" },
+        { "kind" : "IdRef",        "name" : "'Num Packets'" },
+        { "kind" : "IdRef",        "name" : "'Packet Size'" },
+        { "kind" : "IdRef",        "name" : "'Packet Alignment'" }
+      ],
+      "capabilities" : [ "Pipes" ]
+    },
+    {
+      "opname" : "OpCommitReadPipe",
+      "class"  : "Pipe",
+      "opcode" : 280,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'Pipe'" },
+        { "kind" : "IdRef", "name" : "'Reserve Id'" },
+        { "kind" : "IdRef", "name" : "'Packet Size'" },
+        { "kind" : "IdRef", "name" : "'Packet Alignment'" }
+      ],
+      "capabilities" : [ "Pipes" ]
+    },
+    {
+      "opname" : "OpCommitWritePipe",
+      "class"  : "Pipe",
+      "opcode" : 281,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'Pipe'" },
+        { "kind" : "IdRef", "name" : "'Reserve Id'" },
+        { "kind" : "IdRef", "name" : "'Packet Size'" },
+        { "kind" : "IdRef", "name" : "'Packet Alignment'" }
+      ],
+      "capabilities" : [ "Pipes" ]
+    },
+    {
+      "opname" : "OpIsValidReserveId",
+      "class"  : "Pipe",
+      "opcode" : 282,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Reserve Id'" }
+      ],
+      "capabilities" : [ "Pipes" ]
+    },
+    {
+      "opname" : "OpGetNumPipePackets",
+      "class"  : "Pipe",
+      "opcode" : 283,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Pipe'" },
+        { "kind" : "IdRef",        "name" : "'Packet Size'" },
+        { "kind" : "IdRef",        "name" : "'Packet Alignment'" }
+      ],
+      "capabilities" : [ "Pipes" ]
+    },
+    {
+      "opname" : "OpGetMaxPipePackets",
+      "class"  : "Pipe",
+      "opcode" : 284,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Pipe'" },
+        { "kind" : "IdRef",        "name" : "'Packet Size'" },
+        { "kind" : "IdRef",        "name" : "'Packet Alignment'" }
+      ],
+      "capabilities" : [ "Pipes" ]
+    },
+    {
+      "opname" : "OpGroupReserveReadPipePackets",
+      "class"  : "Pipe",
+      "opcode" : 285,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdScope",      "name" : "'Execution'" },
+        { "kind" : "IdRef",        "name" : "'Pipe'" },
+        { "kind" : "IdRef",        "name" : "'Num Packets'" },
+        { "kind" : "IdRef",        "name" : "'Packet Size'" },
+        { "kind" : "IdRef",        "name" : "'Packet Alignment'" }
+      ],
+      "capabilities" : [ "Pipes" ]
+    },
+    {
+      "opname" : "OpGroupReserveWritePipePackets",
+      "class"  : "Pipe",
+      "opcode" : 286,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdScope",      "name" : "'Execution'" },
+        { "kind" : "IdRef",        "name" : "'Pipe'" },
+        { "kind" : "IdRef",        "name" : "'Num Packets'" },
+        { "kind" : "IdRef",        "name" : "'Packet Size'" },
+        { "kind" : "IdRef",        "name" : "'Packet Alignment'" }
+      ],
+      "capabilities" : [ "Pipes" ]
+    },
+    {
+      "opname" : "OpGroupCommitReadPipe",
+      "class"  : "Pipe",
+      "opcode" : 287,
+      "operands" : [
+        { "kind" : "IdScope", "name" : "'Execution'" },
+        { "kind" : "IdRef",   "name" : "'Pipe'" },
+        { "kind" : "IdRef",   "name" : "'Reserve Id'" },
+        { "kind" : "IdRef",   "name" : "'Packet Size'" },
+        { "kind" : "IdRef",   "name" : "'Packet Alignment'" }
+      ],
+      "capabilities" : [ "Pipes" ]
+    },
+    {
+      "opname" : "OpGroupCommitWritePipe",
+      "class"  : "Pipe",
+      "opcode" : 288,
+      "operands" : [
+        { "kind" : "IdScope", "name" : "'Execution'" },
+        { "kind" : "IdRef",   "name" : "'Pipe'" },
+        { "kind" : "IdRef",   "name" : "'Reserve Id'" },
+        { "kind" : "IdRef",   "name" : "'Packet Size'" },
+        { "kind" : "IdRef",   "name" : "'Packet Alignment'" }
+      ],
+      "capabilities" : [ "Pipes" ]
+    },
+    {
+      "opname" : "OpEnqueueMarker",
+      "class"  : "Device-Side_Enqueue",
+      "opcode" : 291,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Queue'" },
+        { "kind" : "IdRef",        "name" : "'Num Events'" },
+        { "kind" : "IdRef",        "name" : "'Wait Events'" },
+        { "kind" : "IdRef",        "name" : "'Ret Event'" }
+      ],
+      "capabilities" : [ "DeviceEnqueue" ]
+    },
+    {
+      "opname" : "OpEnqueueKernel",
+      "class"  : "Device-Side_Enqueue",
+      "opcode" : 292,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",                            "name" : "'Queue'" },
+        { "kind" : "IdRef",                            "name" : "'Flags'" },
+        { "kind" : "IdRef",                            "name" : "'ND Range'" },
+        { "kind" : "IdRef",                            "name" : "'Num Events'" },
+        { "kind" : "IdRef",                            "name" : "'Wait Events'" },
+        { "kind" : "IdRef",                            "name" : "'Ret Event'" },
+        { "kind" : "IdRef",                            "name" : "'Invoke'" },
+        { "kind" : "IdRef",                            "name" : "'Param'" },
+        { "kind" : "IdRef",                            "name" : "'Param Size'" },
+        { "kind" : "IdRef",                            "name" : "'Param Align'" },
+        { "kind" : "IdRef",        "quantifier" : "*", "name" : "'Local Size'" }
+      ],
+      "capabilities" : [ "DeviceEnqueue" ]
+    },
+    {
+      "opname" : "OpGetKernelNDrangeSubGroupCount",
+      "class"  : "Device-Side_Enqueue",
+      "opcode" : 293,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'ND Range'" },
+        { "kind" : "IdRef",        "name" : "'Invoke'" },
+        { "kind" : "IdRef",        "name" : "'Param'" },
+        { "kind" : "IdRef",        "name" : "'Param Size'" },
+        { "kind" : "IdRef",        "name" : "'Param Align'" }
+      ],
+      "capabilities" : [ "DeviceEnqueue" ]
+    },
+    {
+      "opname" : "OpGetKernelNDrangeMaxSubGroupSize",
+      "class"  : "Device-Side_Enqueue",
+      "opcode" : 294,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'ND Range'" },
+        { "kind" : "IdRef",        "name" : "'Invoke'" },
+        { "kind" : "IdRef",        "name" : "'Param'" },
+        { "kind" : "IdRef",        "name" : "'Param Size'" },
+        { "kind" : "IdRef",        "name" : "'Param Align'" }
+      ],
+      "capabilities" : [ "DeviceEnqueue" ]
+    },
+    {
+      "opname" : "OpGetKernelWorkGroupSize",
+      "class"  : "Device-Side_Enqueue",
+      "opcode" : 295,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Invoke'" },
+        { "kind" : "IdRef",        "name" : "'Param'" },
+        { "kind" : "IdRef",        "name" : "'Param Size'" },
+        { "kind" : "IdRef",        "name" : "'Param Align'" }
+      ],
+      "capabilities" : [ "DeviceEnqueue" ]
+    },
+    {
+      "opname" : "OpGetKernelPreferredWorkGroupSizeMultiple",
+      "class"  : "Device-Side_Enqueue",
+      "opcode" : 296,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Invoke'" },
+        { "kind" : "IdRef",        "name" : "'Param'" },
+        { "kind" : "IdRef",        "name" : "'Param Size'" },
+        { "kind" : "IdRef",        "name" : "'Param Align'" }
+      ],
+      "capabilities" : [ "DeviceEnqueue" ]
+    },
+    {
+      "opname" : "OpRetainEvent",
+      "class"  : "Device-Side_Enqueue",
+      "opcode" : 297,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'Event'" }
+      ],
+      "capabilities" : [ "DeviceEnqueue" ]
+    },
+    {
+      "opname" : "OpReleaseEvent",
+      "class"  : "Device-Side_Enqueue",
+      "opcode" : 298,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'Event'" }
+      ],
+      "capabilities" : [ "DeviceEnqueue" ]
+    },
+    {
+      "opname" : "OpCreateUserEvent",
+      "class"  : "Device-Side_Enqueue",
+      "opcode" : 299,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" }
+      ],
+      "capabilities" : [ "DeviceEnqueue" ]
+    },
+    {
+      "opname" : "OpIsValidEvent",
+      "class"  : "Device-Side_Enqueue",
+      "opcode" : 300,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Event'" }
+      ],
+      "capabilities" : [ "DeviceEnqueue" ]
+    },
+    {
+      "opname" : "OpSetUserEventStatus",
+      "class"  : "Device-Side_Enqueue",
+      "opcode" : 301,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'Event'" },
+        { "kind" : "IdRef", "name" : "'Status'" }
+      ],
+      "capabilities" : [ "DeviceEnqueue" ]
+    },
+    {
+      "opname" : "OpCaptureEventProfilingInfo",
+      "class"  : "Device-Side_Enqueue",
+      "opcode" : 302,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'Event'" },
+        { "kind" : "IdRef", "name" : "'Profiling Info'" },
+        { "kind" : "IdRef", "name" : "'Value'" }
+      ],
+      "capabilities" : [ "DeviceEnqueue" ]
+    },
+    {
+      "opname" : "OpGetDefaultQueue",
+      "class"  : "Device-Side_Enqueue",
+      "opcode" : 303,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" }
+      ],
+      "capabilities" : [ "DeviceEnqueue" ]
+    },
+    {
+      "opname" : "OpBuildNDRange",
+      "class"  : "Device-Side_Enqueue",
+      "opcode" : 304,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'GlobalWorkSize'" },
+        { "kind" : "IdRef",        "name" : "'LocalWorkSize'" },
+        { "kind" : "IdRef",        "name" : "'GlobalWorkOffset'" }
+      ],
+      "capabilities" : [ "DeviceEnqueue" ]
+    },
+    {
+      "opname" : "OpImageSparseSampleImplicitLod",
+      "class"  : "Image",
+      "opcode" : 305,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",                             "name" : "'Sampled Image'" },
+        { "kind" : "IdRef",                             "name" : "'Coordinate'" },
+        { "kind" : "ImageOperands", "quantifier" : "?" }
+      ],
+      "capabilities" : [ "SparseResidency" ]
+    },
+    {
+      "opname" : "OpImageSparseSampleExplicitLod",
+      "class"  : "Image",
+      "opcode" : 306,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",         "name" : "'Sampled Image'" },
+        { "kind" : "IdRef",         "name" : "'Coordinate'" },
+        { "kind" : "ImageOperands" }
+      ],
+      "capabilities" : [ "SparseResidency" ]
+    },
+    {
+      "opname" : "OpImageSparseSampleDrefImplicitLod",
+      "class"  : "Image",
+      "opcode" : 307,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",                             "name" : "'Sampled Image'" },
+        { "kind" : "IdRef",                             "name" : "'Coordinate'" },
+        { "kind" : "IdRef",                             "name" : "'D~ref~'" },
+        { "kind" : "ImageOperands", "quantifier" : "?" }
+      ],
+      "capabilities" : [ "SparseResidency" ]
+    },
+    {
+      "opname" : "OpImageSparseSampleDrefExplicitLod",
+      "class"  : "Image",
+      "opcode" : 308,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",         "name" : "'Sampled Image'" },
+        { "kind" : "IdRef",         "name" : "'Coordinate'" },
+        { "kind" : "IdRef",         "name" : "'D~ref~'" },
+        { "kind" : "ImageOperands" }
+      ],
+      "capabilities" : [ "SparseResidency" ]
+    },
+    {
+      "opname" : "OpImageSparseSampleProjImplicitLod",
+      "class"  : "Image",
+      "opcode" : 309,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",                             "name" : "'Sampled Image'" },
+        { "kind" : "IdRef",                             "name" : "'Coordinate'" },
+        { "kind" : "ImageOperands", "quantifier" : "?" }
+      ],
+      "capabilities" : [ "SparseResidency" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpImageSparseSampleProjExplicitLod",
+      "class"  : "Image",
+      "opcode" : 310,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",         "name" : "'Sampled Image'" },
+        { "kind" : "IdRef",         "name" : "'Coordinate'" },
+        { "kind" : "ImageOperands" }
+      ],
+      "capabilities" : [ "SparseResidency" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpImageSparseSampleProjDrefImplicitLod",
+      "class"  : "Image",
+      "opcode" : 311,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",                             "name" : "'Sampled Image'" },
+        { "kind" : "IdRef",                             "name" : "'Coordinate'" },
+        { "kind" : "IdRef",                             "name" : "'D~ref~'" },
+        { "kind" : "ImageOperands", "quantifier" : "?" }
+      ],
+      "capabilities" : [ "SparseResidency" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpImageSparseSampleProjDrefExplicitLod",
+      "class"  : "Image",
+      "opcode" : 312,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",         "name" : "'Sampled Image'" },
+        { "kind" : "IdRef",         "name" : "'Coordinate'" },
+        { "kind" : "IdRef",         "name" : "'D~ref~'" },
+        { "kind" : "ImageOperands" }
+      ],
+      "capabilities" : [ "SparseResidency" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpImageSparseFetch",
+      "class"  : "Image",
+      "opcode" : 313,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",                             "name" : "'Image'" },
+        { "kind" : "IdRef",                             "name" : "'Coordinate'" },
+        { "kind" : "ImageOperands", "quantifier" : "?" }
+      ],
+      "capabilities" : [ "SparseResidency" ]
+    },
+    {
+      "opname" : "OpImageSparseGather",
+      "class"  : "Image",
+      "opcode" : 314,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",                             "name" : "'Sampled Image'" },
+        { "kind" : "IdRef",                             "name" : "'Coordinate'" },
+        { "kind" : "IdRef",                             "name" : "'Component'" },
+        { "kind" : "ImageOperands", "quantifier" : "?" }
+      ],
+      "capabilities" : [ "SparseResidency" ]
+    },
+    {
+      "opname" : "OpImageSparseDrefGather",
+      "class"  : "Image",
+      "opcode" : 315,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",                             "name" : "'Sampled Image'" },
+        { "kind" : "IdRef",                             "name" : "'Coordinate'" },
+        { "kind" : "IdRef",                             "name" : "'D~ref~'" },
+        { "kind" : "ImageOperands", "quantifier" : "?" }
+      ],
+      "capabilities" : [ "SparseResidency" ]
+    },
+    {
+      "opname" : "OpImageSparseTexelsResident",
+      "class"  : "Image",
+      "opcode" : 316,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Resident Code'" }
+      ],
+      "capabilities" : [ "SparseResidency" ]
+    },
+    {
+      "opname" : "OpNoLine",
+      "class"  : "Debug",
+      "opcode" : 317
+    },
+    {
+      "opname" : "OpAtomicFlagTestAndSet",
+      "class"  : "Atomic",
+      "opcode" : 318,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",             "name" : "'Pointer'" },
+        { "kind" : "IdScope",           "name" : "'Memory'" },
+        { "kind" : "IdMemorySemantics", "name" : "'Semantics'" }
+      ],
+      "capabilities" : [ "Kernel" ]
+    },
+    {
+      "opname" : "OpAtomicFlagClear",
+      "class"  : "Atomic",
+      "opcode" : 319,
+      "operands" : [
+        { "kind" : "IdRef",             "name" : "'Pointer'" },
+        { "kind" : "IdScope",           "name" : "'Memory'" },
+        { "kind" : "IdMemorySemantics", "name" : "'Semantics'" }
+      ],
+      "capabilities" : [ "Kernel" ]
+    },
+    {
+      "opname" : "OpImageSparseRead",
+      "class"  : "Image",
+      "opcode" : 320,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",                             "name" : "'Image'" },
+        { "kind" : "IdRef",                             "name" : "'Coordinate'" },
+        { "kind" : "ImageOperands", "quantifier" : "?" }
+      ],
+      "capabilities" : [ "SparseResidency" ]
+    },
+    {
+      "opname" : "OpSizeOf",
+      "class"  : "Miscellaneous",
+      "opcode" : 321,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Pointer'" }
+      ],
+      "capabilities" : [ "Addresses" ],
+      "version" : "1.1"
+    },
+    {
+      "opname" : "OpTypePipeStorage",
+      "class"  : "Type-Declaration",
+      "opcode" : 322,
+      "operands" : [
+        { "kind" : "IdResult" }
+      ],
+      "capabilities" : [ "PipeStorage" ],
+      "version" : "1.1"
+    },
+    {
+      "opname" : "OpConstantPipeStorage",
+      "class"  : "Pipe",
+      "opcode" : 323,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "LiteralInteger", "name" : "'Packet Size'" },
+        { "kind" : "LiteralInteger", "name" : "'Packet Alignment'" },
+        { "kind" : "LiteralInteger", "name" : "'Capacity'" }
+      ],
+      "capabilities" : [ "PipeStorage" ],
+      "version" : "1.1"
+    },
+    {
+      "opname" : "OpCreatePipeFromPipeStorage",
+      "class"  : "Pipe",
+      "opcode" : 324,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Pipe Storage'" }
+      ],
+      "capabilities" : [ "PipeStorage" ],
+      "version" : "1.1"
+    },
+    {
+      "opname" : "OpGetKernelLocalSizeForSubgroupCount",
+      "class"  : "Device-Side_Enqueue",
+      "opcode" : 325,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Subgroup Count'" },
+        { "kind" : "IdRef", "name" : "'Invoke'" },
+        { "kind" : "IdRef", "name" : "'Param'" },
+        { "kind" : "IdRef", "name" : "'Param Size'" },
+        { "kind" : "IdRef", "name" : "'Param Align'" }
+      ],
+      "capabilities" : [ "SubgroupDispatch" ],
+      "version" : "1.1"
+    },
+    {
+      "opname" : "OpGetKernelMaxNumSubgroups",
+      "class"  : "Device-Side_Enqueue",
+      "opcode" : 326,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Invoke'" },
+        { "kind" : "IdRef", "name" : "'Param'" },
+        { "kind" : "IdRef", "name" : "'Param Size'" },
+        { "kind" : "IdRef", "name" : "'Param Align'" }
+      ],
+      "capabilities" : [ "SubgroupDispatch" ],
+      "version" : "1.1"
+    },
+    {
+      "opname" : "OpTypeNamedBarrier",
+      "class"  : "Type-Declaration",
+      "opcode" : 327,
+      "operands" : [
+        { "kind" : "IdResult" }
+      ],
+      "capabilities" : [ "NamedBarrier" ],
+      "version" : "1.1"
+    },
+    {
+      "opname" : "OpNamedBarrierInitialize",
+      "class"  : "Barrier",
+      "opcode" : 328,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Subgroup Count'" }
+      ],
+      "capabilities" : [ "NamedBarrier" ],
+      "version" : "1.1"
+    },
+    {
+      "opname" : "OpMemoryNamedBarrier",
+      "class"  : "Barrier",
+      "opcode" : 329,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'Named Barrier'" },
+        { "kind" : "IdScope", "name" : "'Memory'" },
+        { "kind" : "IdMemorySemantics", "name" : "'Semantics'" }
+      ],
+      "capabilities" : [ "NamedBarrier" ],
+      "version" : "1.1"
+    },
+    {
+      "opname" : "OpModuleProcessed",
+      "class"  : "Debug",
+      "opcode" : 330,
+      "operands" : [
+        { "kind" : "LiteralString", "name" : "'Process'" }
+      ],
+      "version" : "1.1"
+    },
+    {
+      "opname" : "OpExecutionModeId",
+      "class"  : "Mode-Setting",
+      "opcode" : 331,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'Entry Point'" },
+        { "kind" : "ExecutionMode", "name" : "'Mode'" }
+      ],
+      "version" : "1.2"
+    },
+    {
+      "opname" : "OpDecorateId",
+      "class"  : "Annotation",
+      "opcode" : 332,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'Target'" },
+        { "kind" : "Decoration" }
+      ],
+      "extensions" : [ "SPV_GOOGLE_hlsl_functionality1" ],
+      "version" : "1.2"
+    },
+    {
+      "opname" : "OpGroupNonUniformElect",
+      "class"  : "Non-Uniform",
+      "opcode" : 333,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdScope", "name" : "'Execution'" }
+      ],
+      "capabilities" : [ "GroupNonUniform" ],
+      "version" : "1.3"
+    },
+    {
+      "opname" : "OpGroupNonUniformAll",
+      "class"  : "Non-Uniform",
+      "opcode" : 334,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdScope", "name" : "'Execution'" },
+        { "kind" : "IdRef", "name" : "'Predicate'" }
+      ],
+      "capabilities" : [ "GroupNonUniformVote" ],
+      "version" : "1.3"
+    },
+    {
+      "opname" : "OpGroupNonUniformAny",
+      "class"  : "Non-Uniform",
+      "opcode" : 335,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdScope", "name" : "'Execution'" },
+        { "kind" : "IdRef", "name" : "'Predicate'" }
+      ],
+      "capabilities" : [ "GroupNonUniformVote" ],
+      "version" : "1.3"
+    },
+    {
+      "opname" : "OpGroupNonUniformAllEqual",
+      "class"  : "Non-Uniform",
+      "opcode" : 336,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdScope", "name" : "'Execution'" },
+        { "kind" : "IdRef", "name" : "'Value'" }
+      ],
+      "capabilities" : [ "GroupNonUniformVote" ],
+      "version" : "1.3"
+    },
+    {
+      "opname" : "OpGroupNonUniformBroadcast",
+      "class"  : "Non-Uniform",
+      "opcode" : 337,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdScope", "name" : "'Execution'" },
+        { "kind" : "IdRef", "name" : "'Value'" },
+        { "kind" : "IdRef", "name" : "'Id'" }
+      ],
+      "capabilities" : [ "GroupNonUniformBallot" ],
+      "version" : "1.3"
+    },
+    {
+      "opname" : "OpGroupNonUniformBroadcastFirst",
+      "class"  : "Non-Uniform",
+      "opcode" : 338,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdScope", "name" : "'Execution'" },
+        { "kind" : "IdRef", "name" : "'Value'" }
+      ],
+      "capabilities" : [ "GroupNonUniformBallot" ],
+      "version" : "1.3"
+    },
+    {
+      "opname" : "OpGroupNonUniformBallot",
+      "class"  : "Non-Uniform",
+      "opcode" : 339,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdScope", "name" : "'Execution'" },
+        { "kind" : "IdRef", "name" : "'Predicate'" }
+      ],
+      "capabilities" : [ "GroupNonUniformBallot" ],
+      "version" : "1.3"
+    },
+    {
+      "opname" : "OpGroupNonUniformInverseBallot",
+      "class"  : "Non-Uniform",
+      "opcode" : 340,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdScope", "name" : "'Execution'" },
+        { "kind" : "IdRef", "name" : "'Value'" }
+      ],
+      "capabilities" : [ "GroupNonUniformBallot" ],
+      "version" : "1.3"
+    },
+    {
+      "opname" : "OpGroupNonUniformBallotBitExtract",
+      "class"  : "Non-Uniform",
+      "opcode" : 341,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdScope", "name" : "'Execution'" },
+        { "kind" : "IdRef", "name" : "'Value'" },
+        { "kind" : "IdRef", "name" : "'Index'" }
+      ],
+      "capabilities" : [ "GroupNonUniformBallot" ],
+      "version" : "1.3"
+    },
+    {
+      "opname" : "OpGroupNonUniformBallotBitCount",
+      "class"  : "Non-Uniform",
+      "opcode" : 342,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdScope", "name" : "'Execution'" },
+        { "kind" : "GroupOperation", "name" : "'Operation'" },
+        { "kind" : "IdRef", "name" : "'Value'" }
+      ],
+      "capabilities" : [ "GroupNonUniformBallot" ],
+      "version" : "1.3"
+    },
+    {
+      "opname" : "OpGroupNonUniformBallotFindLSB",
+      "class"  : "Non-Uniform",
+      "opcode" : 343,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdScope", "name" : "'Execution'" },
+        { "kind" : "IdRef", "name" : "'Value'" }
+      ],
+      "capabilities" : [ "GroupNonUniformBallot" ],
+      "version" : "1.3"
+    },
+    {
+      "opname" : "OpGroupNonUniformBallotFindMSB",
+      "class"  : "Non-Uniform",
+      "opcode" : 344,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdScope", "name" : "'Execution'" },
+        { "kind" : "IdRef", "name" : "'Value'" }
+      ],
+      "capabilities" : [ "GroupNonUniformBallot" ],
+      "version" : "1.3"
+    },
+    {
+      "opname" : "OpGroupNonUniformShuffle",
+      "class"  : "Non-Uniform",
+      "opcode" : 345,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdScope", "name" : "'Execution'" },
+        { "kind" : "IdRef", "name" : "'Value'" },
+        { "kind" : "IdRef", "name" : "'Id'" }
+      ],
+      "capabilities" : [ "GroupNonUniformShuffle" ],
+      "version" : "1.3"
+    },
+    {
+      "opname" : "OpGroupNonUniformShuffleXor",
+      "class"  : "Non-Uniform",
+      "opcode" : 346,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdScope", "name" : "'Execution'" },
+        { "kind" : "IdRef", "name" : "'Value'" },
+        { "kind" : "IdRef", "name" : "'Mask'" }
+      ],
+      "capabilities" : [ "GroupNonUniformShuffle" ],
+      "version" : "1.3"
+    },
+    {
+      "opname" : "OpGroupNonUniformShuffleUp",
+      "class"  : "Non-Uniform",
+      "opcode" : 347,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdScope", "name" : "'Execution'" },
+        { "kind" : "IdRef", "name" : "'Value'" },
+        { "kind" : "IdRef", "name" : "'Delta'" }
+      ],
+      "capabilities" : [ "GroupNonUniformShuffleRelative" ],
+      "version" : "1.3"
+    },
+    {
+      "opname" : "OpGroupNonUniformShuffleDown",
+      "class"  : "Non-Uniform",
+      "opcode" : 348,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdScope", "name" : "'Execution'" },
+        { "kind" : "IdRef", "name" : "'Value'" },
+        { "kind" : "IdRef", "name" : "'Delta'" }
+      ],
+      "capabilities" : [ "GroupNonUniformShuffleRelative" ],
+      "version" : "1.3"
+    },
+    {
+      "opname" : "OpGroupNonUniformIAdd",
+      "class"  : "Non-Uniform",
+      "opcode" : 349,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdScope", "name" : "'Execution'" },
+        { "kind" : "GroupOperation", "name" : "'Operation'" },
+        { "kind" : "IdRef", "name" : "'Value'" },
+        { "kind" : "IdRef", "name" : "'ClusterSize'", "quantifier" : "?" }
+      ],
+      "capabilities" : [ "GroupNonUniformArithmetic", "GroupNonUniformClustered", "GroupNonUniformPartitionedNV" ],
+      "version" : "1.3"
+    },
+    {
+      "opname" : "OpGroupNonUniformFAdd",
+      "class"  : "Non-Uniform",
+      "opcode" : 350,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdScope", "name" : "'Execution'" },
+        { "kind" : "GroupOperation", "name" : "'Operation'" },
+        { "kind" : "IdRef", "name" : "'Value'" },
+        { "kind" : "IdRef", "name" : "'ClusterSize'", "quantifier" : "?" }
+      ],
+      "capabilities" : [ "GroupNonUniformArithmetic", "GroupNonUniformClustered", "GroupNonUniformPartitionedNV" ],
+      "version" : "1.3"
+    },
+    {
+      "opname" : "OpGroupNonUniformIMul",
+      "class"  : "Non-Uniform",
+      "opcode" : 351,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdScope", "name" : "'Execution'" },
+        { "kind" : "GroupOperation", "name" : "'Operation'" },
+        { "kind" : "IdRef", "name" : "'Value'" },
+        { "kind" : "IdRef", "name" : "'ClusterSize'", "quantifier" : "?" }
+      ],
+      "capabilities" : [ "GroupNonUniformArithmetic", "GroupNonUniformClustered", "GroupNonUniformPartitionedNV" ],
+      "version" : "1.3"
+    },
+    {
+      "opname" : "OpGroupNonUniformFMul",
+      "class"  : "Non-Uniform",
+      "opcode" : 352,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdScope", "name" : "'Execution'" },
+        { "kind" : "GroupOperation", "name" : "'Operation'" },
+        { "kind" : "IdRef", "name" : "'Value'" },
+        { "kind" : "IdRef", "name" : "'ClusterSize'", "quantifier" : "?" }
+      ],
+      "capabilities" : [ "GroupNonUniformArithmetic", "GroupNonUniformClustered", "GroupNonUniformPartitionedNV" ],
+      "version" : "1.3"
+    },
+    {
+      "opname" : "OpGroupNonUniformSMin",
+      "class"  : "Non-Uniform",
+      "opcode" : 353,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdScope", "name" : "'Execution'" },
+        { "kind" : "GroupOperation", "name" : "'Operation'" },
+        { "kind" : "IdRef", "name" : "'Value'" },
+        { "kind" : "IdRef", "name" : "'ClusterSize'", "quantifier" : "?" }
+      ],
+      "capabilities" : [ "GroupNonUniformArithmetic", "GroupNonUniformClustered", "GroupNonUniformPartitionedNV" ],
+      "version" : "1.3"
+    },
+    {
+      "opname" : "OpGroupNonUniformUMin",
+      "class"  : "Non-Uniform",
+      "opcode" : 354,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdScope", "name" : "'Execution'" },
+        { "kind" : "GroupOperation", "name" : "'Operation'" },
+        { "kind" : "IdRef", "name" : "'Value'" },
+        { "kind" : "IdRef", "name" : "'ClusterSize'", "quantifier" : "?" }
+      ],
+      "capabilities" : [ "GroupNonUniformArithmetic", "GroupNonUniformClustered", "GroupNonUniformPartitionedNV" ],
+      "version" : "1.3"
+    },
+    {
+      "opname" : "OpGroupNonUniformFMin",
+      "class"  : "Non-Uniform",
+      "opcode" : 355,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdScope", "name" : "'Execution'" },
+        { "kind" : "GroupOperation", "name" : "'Operation'" },
+        { "kind" : "IdRef", "name" : "'Value'" },
+        { "kind" : "IdRef", "name" : "'ClusterSize'", "quantifier" : "?" }
+      ],
+      "capabilities" : [ "GroupNonUniformArithmetic", "GroupNonUniformClustered", "GroupNonUniformPartitionedNV" ],
+      "version" : "1.3"
+    },
+    {
+      "opname" : "OpGroupNonUniformSMax",
+      "class"  : "Non-Uniform",
+      "opcode" : 356,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdScope", "name" : "'Execution'" },
+        { "kind" : "GroupOperation", "name" : "'Operation'" },
+        { "kind" : "IdRef", "name" : "'Value'" },
+        { "kind" : "IdRef", "name" : "'ClusterSize'", "quantifier" : "?" }
+      ],
+      "capabilities" : [ "GroupNonUniformArithmetic", "GroupNonUniformClustered", "GroupNonUniformPartitionedNV" ],
+      "version" : "1.3"
+    },
+    {
+      "opname" : "OpGroupNonUniformUMax",
+      "class"  : "Non-Uniform",
+      "opcode" : 357,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdScope", "name" : "'Execution'" },
+        { "kind" : "GroupOperation", "name" : "'Operation'" },
+        { "kind" : "IdRef", "name" : "'Value'" },
+        { "kind" : "IdRef", "name" : "'ClusterSize'", "quantifier" : "?" }
+      ],
+      "capabilities" : [ "GroupNonUniformArithmetic", "GroupNonUniformClustered", "GroupNonUniformPartitionedNV" ],
+      "version" : "1.3"
+    },
+    {
+      "opname" : "OpGroupNonUniformFMax",
+      "class"  : "Non-Uniform",
+      "opcode" : 358,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdScope", "name" : "'Execution'" },
+        { "kind" : "GroupOperation", "name" : "'Operation'" },
+        { "kind" : "IdRef", "name" : "'Value'" },
+        { "kind" : "IdRef", "name" : "'ClusterSize'", "quantifier" : "?" }
+      ],
+      "capabilities" : [ "GroupNonUniformArithmetic", "GroupNonUniformClustered", "GroupNonUniformPartitionedNV" ],
+      "version" : "1.3"
+    },
+    {
+      "opname" : "OpGroupNonUniformBitwiseAnd",
+      "class"  : "Non-Uniform",
+      "opcode" : 359,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdScope", "name" : "'Execution'" },
+        { "kind" : "GroupOperation", "name" : "'Operation'" },
+        { "kind" : "IdRef", "name" : "'Value'" },
+        { "kind" : "IdRef", "name" : "'ClusterSize'", "quantifier" : "?" }
+      ],
+      "capabilities" : [ "GroupNonUniformArithmetic", "GroupNonUniformClustered", "GroupNonUniformPartitionedNV" ],
+      "version" : "1.3"
+    },
+    {
+      "opname" : "OpGroupNonUniformBitwiseOr",
+      "class"  : "Non-Uniform",
+      "opcode" : 360,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdScope", "name" : "'Execution'" },
+        { "kind" : "GroupOperation", "name" : "'Operation'" },
+        { "kind" : "IdRef", "name" : "'Value'" },
+        { "kind" : "IdRef", "name" : "'ClusterSize'", "quantifier" : "?" }
+      ],
+      "capabilities" : [ "GroupNonUniformArithmetic", "GroupNonUniformClustered", "GroupNonUniformPartitionedNV" ],
+      "version" : "1.3"
+    },
+    {
+      "opname" : "OpGroupNonUniformBitwiseXor",
+      "class"  : "Non-Uniform",
+      "opcode" : 361,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdScope", "name" : "'Execution'" },
+        { "kind" : "GroupOperation", "name" : "'Operation'" },
+        { "kind" : "IdRef", "name" : "'Value'" },
+        { "kind" : "IdRef", "name" : "'ClusterSize'", "quantifier" : "?" }
+      ],
+      "capabilities" : [ "GroupNonUniformArithmetic", "GroupNonUniformClustered", "GroupNonUniformPartitionedNV" ],
+      "version" : "1.3"
+    },
+    {
+      "opname" : "OpGroupNonUniformLogicalAnd",
+      "class"  : "Non-Uniform",
+      "opcode" : 362,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdScope", "name" : "'Execution'" },
+        { "kind" : "GroupOperation", "name" : "'Operation'" },
+        { "kind" : "IdRef", "name" : "'Value'" },
+        { "kind" : "IdRef", "name" : "'ClusterSize'", "quantifier" : "?" }
+      ],
+      "capabilities" : [ "GroupNonUniformArithmetic", "GroupNonUniformClustered", "GroupNonUniformPartitionedNV" ],
+      "version" : "1.3"
+    },
+    {
+      "opname" : "OpGroupNonUniformLogicalOr",
+      "class"  : "Non-Uniform",
+      "opcode" : 363,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdScope", "name" : "'Execution'" },
+        { "kind" : "GroupOperation", "name" : "'Operation'" },
+        { "kind" : "IdRef", "name" : "'Value'" },
+        { "kind" : "IdRef", "name" : "'ClusterSize'", "quantifier" : "?" }
+      ],
+      "capabilities" : [ "GroupNonUniformArithmetic", "GroupNonUniformClustered", "GroupNonUniformPartitionedNV" ],
+      "version" : "1.3"
+    },
+    {
+      "opname" : "OpGroupNonUniformLogicalXor",
+      "class"  : "Non-Uniform",
+      "opcode" : 364,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdScope", "name" : "'Execution'" },
+        { "kind" : "GroupOperation", "name" : "'Operation'" },
+        { "kind" : "IdRef", "name" : "'Value'" },
+        { "kind" : "IdRef", "name" : "'ClusterSize'", "quantifier" : "?" }
+      ],
+      "capabilities" : [ "GroupNonUniformArithmetic", "GroupNonUniformClustered", "GroupNonUniformPartitionedNV" ],
+      "version" : "1.3"
+    },
+    {
+      "opname" : "OpGroupNonUniformQuadBroadcast",
+      "class"  : "Non-Uniform",
+      "opcode" : 365,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdScope", "name" : "'Execution'" },
+        { "kind" : "IdRef", "name" : "'Value'" },
+        { "kind" : "IdRef", "name" : "'Index'" }
+      ],
+      "capabilities" : [ "GroupNonUniformQuad" ],
+      "version" : "1.3"
+    },
+    {
+      "opname" : "OpGroupNonUniformQuadSwap",
+      "class"  : "Non-Uniform",
+      "opcode" : 366,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdScope", "name" : "'Execution'" },
+        { "kind" : "IdRef", "name" : "'Value'" },
+        { "kind" : "IdRef", "name" : "'Direction'" }
+      ],
+      "capabilities" : [ "GroupNonUniformQuad" ],
+      "version" : "1.3"
+    },
+    {
+      "opname" : "OpCopyLogical",
+      "class"  : "Composite",
+      "opcode" : 400,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand'" }
+      ],
+      "version" : "1.4"
+    },
+    {
+      "opname" : "OpPtrEqual",
+      "class"  : "Memory",
+      "opcode" : 401,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ],
+      "version" : "1.4"
+    },
+    {
+      "opname" : "OpPtrNotEqual",
+      "class"  : "Memory",
+      "opcode" : 402,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ],
+      "version" : "1.4"
+    },
+    {
+      "opname" : "OpPtrDiff",
+      "class"  : "Memory",
+      "opcode" : 403,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ],
+      "capabilities" : [ "Addresses", "VariablePointers", "VariablePointersStorageBuffer" ],
+      "version" : "1.4"
+    },
+    {
+      "opname" : "OpTerminateInvocation",
+      "class"  : "Control-Flow",
+      "opcode" : 4416,
+      "extensions" : [
+        "SPV_KHR_terminate_invocation"
+      ],
+      "capabilities" : [ "Shader" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpSubgroupBallotKHR",
+      "class"  : "Group",
+      "opcode" : 4421,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Predicate'" }
+      ],
+      "capabilities" : [ "SubgroupBallotKHR" ],
+      "extensions" : [ "SPV_KHR_shader_ballot" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpSubgroupFirstInvocationKHR",
+      "class"  : "Group",
+      "opcode" : 4422,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Value'" }
+      ],
+      "capabilities" : [ "SubgroupBallotKHR" ],
+      "extensions" : [ "SPV_KHR_shader_ballot" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpSubgroupAllKHR",
+      "class"  : "Group",
+      "opcode" : 4428,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Predicate'" }
+      ],
+      "extensions" : [
+        "SPV_KHR_subgroup_vote"
+      ],
+      "capabilities" : [ "SubgroupVoteKHR" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpSubgroupAnyKHR",
+      "class"  : "Group",
+      "opcode" : 4429,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Predicate'" }
+      ],
+      "extensions" : [
+        "SPV_KHR_subgroup_vote"
+      ],
+      "capabilities" : [ "SubgroupVoteKHR" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpSubgroupAllEqualKHR",
+      "class"  : "Group",
+      "opcode" : 4430,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Predicate'" }
+      ],
+      "extensions" : [
+        "SPV_KHR_subgroup_vote"
+      ],
+      "capabilities" : [ "SubgroupVoteKHR" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpSubgroupReadInvocationKHR",
+      "class"  : "Group",
+      "opcode" : 4432,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Value'" },
+        { "kind" : "IdRef", "name" : "'Index'" }
+      ],
+      "capabilities" : [ "SubgroupBallotKHR" ],
+      "extensions" : [ "SPV_KHR_shader_ballot" ],
+      "version" : "None"
+    },
+    {
+        "opname" : "OpTypeRayQueryProvisionalKHR",
+        "class" : "Reserved",
+        "opcode" : 4472,
+        "operands" : [
+            { "kind" : "IdResult" }
+        ],
+        "capabilities" : [ "RayQueryProvisionalKHR" ],
+        "extensions" : [ "SPV_KHR_ray_query" ],
+        "version" : "None"
+    },
+    {
+        "opname" : "OpRayQueryInitializeKHR",
+        "class" : "Reserved",
+        "opcode" : 4473,
+        "operands" : [
+            {
+                "kind" : "IdRef",
+                "name" : "'RayQuery'"
+            },
+            {
+                "kind" : "IdRef",
+                "name" : "'Accel'"
+            },
+            {
+                "kind" : "IdRef",
+                "name" : "'RayFlags'"
+            },
+            {
+                "kind" : "IdRef",
+                "name" : "'CullMask'"
+            },
+            {
+                "kind" : "IdRef",
+                "name" : "'RayOrigin'"
+            },
+            {
+                "kind" : "IdRef",
+                "name" : "'RayTMin'"
+            },
+            {
+                "kind" : "IdRef",
+                "name" : "'RayDirection'"
+            },
+            {
+                "kind" : "IdRef",
+                "name" : "'RayTMax'"
+            }
+
+        ],
+        "capabilities" : [ "RayQueryProvisionalKHR" ],
+        "extensions" : [ "SPV_KHR_ray_query" ],
+        "version" : "None"
+    },
+    {
+        "opname" : "OpRayQueryTerminateKHR",
+        "class" : "Reserved",
+        "opcode" : 4474,
+        "operands" : [
+            {
+                "kind" : "IdRef",
+                "name" : "'RayQuery'"
+            }
+        ],
+        "capabilities" : [ "RayQueryProvisionalKHR" ],
+        "extensions" : [ "SPV_KHR_ray_query" ],
+        "version" : "None"
+    },
+    {
+        "opname" : "OpRayQueryGenerateIntersectionKHR",
+        "class" : "Reserved",
+        "opcode" : 4475,
+        "operands" : [
+            {
+                "kind" : "IdRef",
+                "name" : "'RayQuery'"
+            },
+            {
+                "kind" : "IdRef",
+                "name" : "'HitT'"
+            }
+        ],
+        "capabilities" : [ "RayQueryProvisionalKHR" ],
+        "extensions" : [ "SPV_KHR_ray_query" ],
+        "version" : "None"
+    },
+    {
+        "opname" : "OpRayQueryConfirmIntersectionKHR",
+        "class" : "Reserved",
+        "opcode" : 4476,
+        "operands" : [
+            {
+                "kind" : "IdRef",
+                "name" : "'RayQuery'"
+            }
+        ],
+        "capabilities" : [ "RayQueryProvisionalKHR" ],
+        "extensions" : [ "SPV_KHR_ray_query" ],
+        "version" : "None"
+    },
+    {
+        "opname" : "OpRayQueryProceedKHR",
+        "class" : "Reserved",
+        "opcode" : 4477,
+        "operands" : [
+            { "kind" : "IdResultType" },
+            { "kind" : "IdResult" },
+            {
+                "kind" : "IdRef",
+                "name" : "'RayQuery'"
+            }
+        ],
+        "capabilities" : [ "RayQueryProvisionalKHR" ],
+        "extensions" : [ "SPV_KHR_ray_query" ],
+        "version" : "None"
+    },
+    {
+        "opname" : "OpRayQueryGetIntersectionTypeKHR",
+        "class" : "Reserved",
+        "opcode" : 4479,
+        "operands" : [
+            { "kind" : "IdResultType" },
+            { "kind" : "IdResult" },
+            {
+                "kind" : "IdRef",
+                "name" : "'RayQuery'"
+            },
+            {
+                "kind" : "IdRef",
+                "name" : "'Intersection'"
+            }
+        ],
+        "capabilities" : [ "RayQueryProvisionalKHR" ],
+        "extensions" : [ "SPV_KHR_ray_query" ],
+        "version" : "None"
+    },
+    {
+      "opname" : "OpGroupIAddNonUniformAMD",
+      "class"  : "Group",
+      "opcode" : 5000,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdScope",        "name" : "'Execution'" },
+        { "kind" : "GroupOperation", "name" : "'Operation'" },
+        { "kind" : "IdRef",          "name" : "'X'" }
+      ],
+      "capabilities" : [ "Groups" ],
+      "extensions" : [ "SPV_AMD_shader_ballot" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpGroupFAddNonUniformAMD",
+      "class"  : "Group",
+      "opcode" : 5001,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdScope",        "name" : "'Execution'" },
+        { "kind" : "GroupOperation", "name" : "'Operation'" },
+        { "kind" : "IdRef",          "name" : "'X'" }
+      ],
+      "capabilities" : [ "Groups" ],
+      "extensions" : [ "SPV_AMD_shader_ballot" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpGroupFMinNonUniformAMD",
+      "class"  : "Group",
+      "opcode" : 5002,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdScope",        "name" : "'Execution'" },
+        { "kind" : "GroupOperation", "name" : "'Operation'" },
+        { "kind" : "IdRef",          "name" : "'X'" }
+      ],
+      "capabilities" : [ "Groups" ],
+      "extensions" : [ "SPV_AMD_shader_ballot" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpGroupUMinNonUniformAMD",
+      "class"  : "Group",
+      "opcode" : 5003,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdScope",        "name" : "'Execution'" },
+        { "kind" : "GroupOperation", "name" : "'Operation'" },
+        { "kind" : "IdRef",          "name" : "'X'" }
+      ],
+      "capabilities" : [ "Groups" ],
+      "extensions" : [ "SPV_AMD_shader_ballot" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpGroupSMinNonUniformAMD",
+      "class"  : "Group",
+      "opcode" : 5004,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdScope",        "name" : "'Execution'" },
+        { "kind" : "GroupOperation", "name" : "'Operation'" },
+        { "kind" : "IdRef",          "name" : "'X'" }
+      ],
+      "capabilities" : [ "Groups" ],
+      "extensions" : [ "SPV_AMD_shader_ballot" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpGroupFMaxNonUniformAMD",
+      "class"  : "Group",
+      "opcode" : 5005,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdScope",        "name" : "'Execution'" },
+        { "kind" : "GroupOperation", "name" : "'Operation'" },
+        { "kind" : "IdRef",          "name" : "'X'" }
+      ],
+      "capabilities" : [ "Groups" ],
+      "extensions" : [ "SPV_AMD_shader_ballot" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpGroupUMaxNonUniformAMD",
+      "class"  : "Group",
+      "opcode" : 5006,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdScope",        "name" : "'Execution'" },
+        { "kind" : "GroupOperation", "name" : "'Operation'" },
+        { "kind" : "IdRef",          "name" : "'X'" }
+      ],
+      "capabilities" : [ "Groups" ],
+      "extensions" : [ "SPV_AMD_shader_ballot" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpGroupSMaxNonUniformAMD",
+      "class"  : "Group",
+      "opcode" : 5007,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdScope",        "name" : "'Execution'" },
+        { "kind" : "GroupOperation", "name" : "'Operation'" },
+        { "kind" : "IdRef",          "name" : "'X'" }
+      ],
+      "capabilities" : [ "Groups" ],
+      "extensions" : [ "SPV_AMD_shader_ballot" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpFragmentMaskFetchAMD",
+      "class"  : "Reserved",
+      "opcode" : 5011,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Image'" },
+        { "kind" : "IdRef", "name" : "'Coordinate'" }
+      ],
+      "capabilities" : [ "FragmentMaskAMD" ],
+      "extensions" : [ "SPV_AMD_shader_fragment_mask" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpFragmentFetchAMD",
+      "class"  : "Reserved",
+      "opcode" : 5012,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Image'" },
+        { "kind" : "IdRef", "name" : "'Coordinate'" },
+        { "kind" : "IdRef", "name" : "'Fragment Index'" }
+      ],
+      "capabilities" : [ "FragmentMaskAMD" ],
+      "extensions" : [ "SPV_AMD_shader_fragment_mask" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpReadClockKHR",
+      "class"  : "Reserved",
+      "opcode" : 5056,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdScope", "name" : "'Execution'" }
+      ],
+      "capabilities" : [ "ShaderClockKHR" ],
+      "extensions" : [ "SPV_KHR_shader_clock" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpImageSampleFootprintNV",
+      "class"  : "Image",
+      "opcode" : 5283,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Sampled Image'" },
+        { "kind" : "IdRef", "name" : "'Coordinate'" },
+        { "kind" : "IdRef", "name" : "'Granularity'" },
+        { "kind" : "IdRef", "name" : "'Coarse'" },
+        { "kind" : "ImageOperands", "quantifier" : "?" }
+      ],
+      "capabilities" : [ "ImageFootprintNV" ],
+      "extensions" : [ "SPV_NV_shader_image_footprint" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpGroupNonUniformPartitionNV",
+      "class"  : "Non-Uniform",
+      "opcode" : 5296,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Value'" }
+      ],
+      "capabilities" : [ "GroupNonUniformPartitionedNV" ],
+      "extensions" : [ "SPV_NV_shader_subgroup_partitioned" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpWritePackedPrimitiveIndices4x8NV",
+      "class"  : "Reserved",
+      "opcode" : 5299,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'Index Offset'" },
+        { "kind" : "IdRef", "name" : "'Packed Indices'" }
+      ],
+      "capabilities" : [ "MeshShadingNV" ],
+      "extensions" : [ "SPV_NV_mesh_shader" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpReportIntersectionNV",
+      "class"  : "Reserved",
+      "opcode" : 5334,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Hit'" },
+        { "kind" : "IdRef", "name" : "'HitKind'" }
+      ],
+      "capabilities" : [ "RayTracingNV" , "RayTracingProvisionalKHR" ],
+      "extensions" : [ "SPV_NV_ray_tracing" , "SPV_KHR_ray_tracing" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpReportIntersectionKHR",
+      "class"  : "Reserved",
+      "opcode" : 5334,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Hit'" },
+        { "kind" : "IdRef", "name" : "'HitKind'" }
+      ],
+      "capabilities" : [ "RayTracingNV" , "RayTracingProvisionalKHR" ],
+      "extensions" : [ "SPV_NV_ray_tracing" , "SPV_KHR_ray_tracing" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpIgnoreIntersectionNV",
+      "class"  : "Reserved",
+      "opcode" : 5335,
+      "capabilities" : [ "RayTracingNV" , "RayTracingProvisionalKHR" ],
+      "extensions" : [ "SPV_NV_ray_tracing" , "SPV_KHR_ray_tracing" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpIgnoreIntersectionKHR",
+      "class"  : "Reserved",
+      "opcode" : 5335,
+      "capabilities" : [ "RayTracingNV" , "RayTracingProvisionalKHR" ],
+      "extensions" : [ "SPV_NV_ray_tracing" , "SPV_KHR_ray_tracing" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpTerminateRayNV",
+      "class"  : "Reserved",
+      "opcode" : 5336,
+      "capabilities" : [ "RayTracingNV" , "RayTracingProvisionalKHR" ],
+      "extensions" : [ "SPV_NV_ray_tracing" , "SPV_KHR_ray_tracing" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpTerminateRayKHR",
+      "class"  : "Reserved",
+      "opcode" : 5336,
+      "capabilities" : [ "RayTracingNV" , "RayTracingProvisionalKHR" ],
+      "extensions" : [ "SPV_NV_ray_tracing" , "SPV_KHR_ray_tracing" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpTraceNV",
+      "class"  : "Reserved",
+      "opcode" : 5337,
+      "operands" : [
+
+        { "kind" : "IdRef", "name" : "'Accel'" },
+        { "kind" : "IdRef", "name" : "'Ray Flags'" },
+        { "kind" : "IdRef", "name" : "'Cull Mask'" },
+        { "kind" : "IdRef", "name" : "'SBT Offset'" },
+        { "kind" : "IdRef", "name" : "'SBT Stride'" },
+        { "kind" : "IdRef", "name" : "'Miss Index'" },
+        { "kind" : "IdRef", "name" : "'Ray Origin'" },
+        { "kind" : "IdRef", "name" : "'Ray Tmin'" },
+        { "kind" : "IdRef", "name" : "'Ray Direction'" },
+        { "kind" : "IdRef", "name" : "'Ray Tmax'" },
+        { "kind" : "IdRef", "name" : "'PayloadId'" }
+      ],
+      "capabilities" : [ "RayTracingNV" , "RayTracingProvisionalKHR" ],
+      "extensions" : [ "SPV_NV_ray_tracing" , "SPV_KHR_ray_tracing" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpTraceRayKHR",
+      "class"  : "Reserved",
+      "opcode" : 5337,
+      "operands" : [
+
+        { "kind" : "IdRef", "name" : "'Accel'" },
+        { "kind" : "IdRef", "name" : "'Ray Flags'" },
+        { "kind" : "IdRef", "name" : "'Cull Mask'" },
+        { "kind" : "IdRef", "name" : "'SBT Offset'" },
+        { "kind" : "IdRef", "name" : "'SBT Stride'" },
+        { "kind" : "IdRef", "name" : "'Miss Index'" },
+        { "kind" : "IdRef", "name" : "'Ray Origin'" },
+        { "kind" : "IdRef", "name" : "'Ray Tmin'" },
+        { "kind" : "IdRef", "name" : "'Ray Direction'" },
+        { "kind" : "IdRef", "name" : "'Ray Tmax'" },
+        { "kind" : "IdRef", "name" : "'PayloadId'" }
+      ],
+      "capabilities" : [ "RayTracingNV" , "RayTracingProvisionalKHR" ],
+      "extensions" : [ "SPV_NV_ray_tracing" , "SPV_KHR_ray_tracing" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpTypeAccelerationStructureNV",
+      "class"  : "Reserved",
+      "opcode" : 5341,
+      "operands" : [
+        { "kind" : "IdResult" }
+      ],
+      "capabilities" : [ "RayTracingNV" , "RayTracingProvisionalKHR", "RayQueryProvisionalKHR" ],
+      "extensions" : [ "SPV_NV_ray_tracing" , "SPV_KHR_ray_tracing", "SPV_KHR_ray_query" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpTypeAccelerationStructureKHR",
+      "class"  : "Reserved",
+      "opcode" : 5341,
+      "operands" : [
+        { "kind" : "IdResult" }
+      ],
+      "capabilities" : [ "RayTracingNV" , "RayTracingProvisionalKHR", "RayQueryProvisionalKHR" ],
+      "extensions" : [ "SPV_NV_ray_tracing" , "SPV_KHR_ray_tracing", "SPV_KHR_ray_query" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpExecuteCallableNV",
+      "class"  : "Reserved",
+      "opcode" : 5344,
+      "operands" : [
+
+        { "kind" : "IdRef", "name" : "'SBT Index'" },
+        { "kind" : "IdRef", "name" : "'Callable DataId'" }
+      ],
+      "capabilities" : [ "RayTracingNV" , "RayTracingProvisionalKHR" ],
+      "extensions" : [ "SPV_NV_ray_tracing" , "SPV_KHR_ray_tracing" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpExecuteCallableKHR",
+      "class"  : "Reserved",
+      "opcode" : 5344,
+      "operands" : [
+
+        { "kind" : "IdRef", "name" : "'SBT Index'" },
+        { "kind" : "IdRef", "name" : "'Callable DataId'" }
+      ],
+      "capabilities" : [ "RayTracingNV" , "RayTracingProvisionalKHR" ],
+      "extensions" : [ "SPV_NV_ray_tracing" , "SPV_KHR_ray_tracing" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpTypeCooperativeMatrixNV",
+      "class"  : "Reserved",
+      "opcode" : 5358,
+      "operands" : [
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Component Type'" },
+        { "kind" : "IdScope",      "name" : "'Execution'" },
+        { "kind" : "IdRef",        "name" : "'Rows'" },
+        { "kind" : "IdRef",        "name" : "'Columns'" }
+      ],
+      "capabilities" : [ "CooperativeMatrixNV" ],
+      "extensions" : [ "SPV_NV_cooperative_matrix" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpCooperativeMatrixLoadNV",
+      "class"  : "Reserved",
+      "opcode" : 5359,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",             "name" : "'Pointer'" },
+        { "kind" : "IdRef",             "name" : "'Stride'" },
+        { "kind" : "IdRef",             "name" : "'Column Major'" },
+        { "kind" : "MemoryAccess",      "quantifier" : "?" }
+      ],
+      "capabilities" : [ "CooperativeMatrixNV" ],
+      "extensions" : [ "SPV_NV_cooperative_matrix" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpCooperativeMatrixStoreNV",
+      "class"  : "Reserved",
+      "opcode" : 5360,
+      "operands" : [
+        { "kind" : "IdRef",             "name" : "'Pointer'" },
+        { "kind" : "IdRef",             "name" : "'Object'" },
+        { "kind" : "IdRef",             "name" : "'Stride'" },
+        { "kind" : "IdRef",             "name" : "'Column Major'" },
+        { "kind" : "MemoryAccess",      "quantifier" : "?" }
+      ],
+      "capabilities" : [ "CooperativeMatrixNV" ],
+      "extensions" : [ "SPV_NV_cooperative_matrix" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpCooperativeMatrixMulAddNV",
+      "class"  : "Reserved",
+      "opcode" : 5361,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",             "name" : "'A'" },
+        { "kind" : "IdRef",             "name" : "'B'" },
+        { "kind" : "IdRef",             "name" : "'C'" }
+      ],
+      "capabilities" : [ "CooperativeMatrixNV" ],
+      "extensions" : [ "SPV_NV_cooperative_matrix" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpCooperativeMatrixLengthNV",
+      "class"  : "Reserved",
+      "opcode" : 5362,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Type'" }
+      ],
+      "capabilities" : [ "CooperativeMatrixNV" ],
+      "extensions" : [ "SPV_NV_cooperative_matrix" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpBeginInvocationInterlockEXT",
+      "class"  : "Reserved",
+      "opcode" : 5364,
+      "capabilities" : [ "FragmentShaderSampleInterlockEXT", "FragmentShaderPixelInterlockEXT", "FragmentShaderShadingRateInterlockEXT" ],
+      "extensions" : [ "SPV_EXT_fragment_shader_interlock" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpEndInvocationInterlockEXT",
+      "class"  : "Reserved",
+      "opcode" : 5365,
+      "capabilities" : [ "FragmentShaderSampleInterlockEXT", "FragmentShaderPixelInterlockEXT", "FragmentShaderShadingRateInterlockEXT" ],
+      "extensions" : [ "SPV_EXT_fragment_shader_interlock" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpDemoteToHelperInvocationEXT",
+      "class"  : "Reserved",
+      "opcode" : 5380,
+      "capabilities" : [ "DemoteToHelperInvocationEXT" ],
+      "extensions" : [ "SPV_EXT_demote_to_helper_invocation" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpIsHelperInvocationEXT",
+      "class"  : "Reserved",
+      "opcode" : 5381,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" }
+      ],
+      "capabilities" : [ "DemoteToHelperInvocationEXT" ],
+      "extensions" : [ "SPV_EXT_demote_to_helper_invocation" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpSubgroupShuffleINTEL",
+      "class"  : "Group",
+      "opcode" : 5571,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Data'" },
+        { "kind" : "IdRef", "name" : "'InvocationId'" }
+      ],
+      "capabilities" : [ "SubgroupShuffleINTEL" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpSubgroupShuffleDownINTEL",
+      "class"  : "Group",
+      "opcode" : 5572,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Current'" },
+        { "kind" : "IdRef", "name" : "'Next'" },
+        { "kind" : "IdRef", "name" : "'Delta'" }
+      ],
+      "capabilities" : [ "SubgroupShuffleINTEL" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpSubgroupShuffleUpINTEL",
+      "class"  : "Group",
+      "opcode" : 5573,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Previous'" },
+        { "kind" : "IdRef", "name" : "'Current'" },
+        { "kind" : "IdRef", "name" : "'Delta'" }
+      ],
+      "capabilities" : [ "SubgroupShuffleINTEL" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpSubgroupShuffleXorINTEL",
+      "class"  : "Group",
+      "opcode" : 5574,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Data'" },
+        { "kind" : "IdRef", "name" : "'Value'" }
+      ],
+      "capabilities" : [ "SubgroupShuffleINTEL" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpSubgroupBlockReadINTEL",
+      "class"  : "Group",
+      "opcode" : 5575,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Ptr'" }
+      ],
+      "capabilities" : [ "SubgroupBufferBlockIOINTEL" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpSubgroupBlockWriteINTEL",
+      "class"  : "Group",
+      "opcode" : 5576,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'Ptr'" },
+        { "kind" : "IdRef", "name" : "'Data'" }
+      ],
+      "capabilities" : [ "SubgroupBufferBlockIOINTEL" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpSubgroupImageBlockReadINTEL",
+      "class"  : "Group",
+      "opcode" : 5577,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Image'" },
+        { "kind" : "IdRef", "name" : "'Coordinate'" }
+      ],
+      "capabilities" : [ "SubgroupImageBlockIOINTEL" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpSubgroupImageBlockWriteINTEL",
+      "class"  : "Group",
+      "opcode" : 5578,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'Image'" },
+        { "kind" : "IdRef", "name" : "'Coordinate'" },
+        { "kind" : "IdRef", "name" : "'Data'" }
+      ],
+      "capabilities" : [ "SubgroupImageBlockIOINTEL" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpSubgroupImageMediaBlockReadINTEL",
+      "class"  : "Group",
+      "opcode" : 5580,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Image'" },
+        { "kind" : "IdRef", "name" : "'Coordinate'" },
+        { "kind" : "IdRef", "name" : "'Width'" },
+        { "kind" : "IdRef", "name" : "'Height'" }
+      ],
+      "capabilities" : [ "SubgroupImageMediaBlockIOINTEL" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpSubgroupImageMediaBlockWriteINTEL",
+      "class"  : "Group",
+      "opcode" : 5581,
+      "operands" : [
+        { "kind" : "IdRef", "name" : "'Image'" },
+        { "kind" : "IdRef", "name" : "'Coordinate'" },
+        { "kind" : "IdRef", "name" : "'Width'" },
+        { "kind" : "IdRef", "name" : "'Height'" },
+        { "kind" : "IdRef", "name" : "'Data'" }
+      ],
+      "capabilities" : [ "SubgroupImageMediaBlockIOINTEL" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpUCountLeadingZerosINTEL",
+      "class"  : "Reserved",
+      "opcode" : 5585,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand'" }
+      ],
+      "capabilities" : [ "IntegerFunctions2INTEL" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpUCountTrailingZerosINTEL",
+      "class"  : "Reserved",
+      "opcode" : 5586,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand'" }
+      ],
+      "capabilities" : [ "IntegerFunctions2INTEL" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpAbsISubINTEL",
+      "class"  : "Reserved",
+      "opcode" : 5587,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ],
+      "capabilities" : [ "IntegerFunctions2INTEL" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpAbsUSubINTEL",
+      "class"  : "Reserved",
+      "opcode" : 5588,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ],
+      "capabilities" : [ "IntegerFunctions2INTEL" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpIAddSatINTEL",
+      "class"  : "Reserved",
+      "opcode" : 5589,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ],
+      "capabilities" : [ "IntegerFunctions2INTEL" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpUAddSatINTEL",
+      "class"  : "Reserved",
+      "opcode" : 5590,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ],
+      "capabilities" : [ "IntegerFunctions2INTEL" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpIAverageINTEL",
+      "class"  : "Reserved",
+      "opcode" : 5591,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ],
+      "capabilities" : [ "IntegerFunctions2INTEL" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpUAverageINTEL",
+      "class"  : "Reserved",
+      "opcode" : 5592,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ],
+      "capabilities" : [ "IntegerFunctions2INTEL" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpIAverageRoundedINTEL",
+      "class"  : "Reserved",
+      "opcode" : 5593,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ],
+      "capabilities" : [ "IntegerFunctions2INTEL" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpUAverageRoundedINTEL",
+      "class"  : "Reserved",
+      "opcode" : 5594,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ],
+      "capabilities" : [ "IntegerFunctions2INTEL" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpISubSatINTEL",
+      "class"  : "Reserved",
+      "opcode" : 5595,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ],
+      "capabilities" : [ "IntegerFunctions2INTEL" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpUSubSatINTEL",
+      "class"  : "Reserved",
+      "opcode" : 5596,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ],
+      "capabilities" : [ "IntegerFunctions2INTEL" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpIMul32x16INTEL",
+      "class"  : "Reserved",
+      "opcode" : 5597,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ],
+      "capabilities" : [ "IntegerFunctions2INTEL" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpUMul32x16INTEL",
+      "class"  : "Reserved",
+      "opcode" : 5598,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Operand 1'" },
+        { "kind" : "IdRef",        "name" : "'Operand 2'" }
+      ],
+      "capabilities" : [ "IntegerFunctions2INTEL" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpFunctionPointerINTEL",
+      "class"  : "@exclude",
+      "opcode" : 5600,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Function'" }
+      ],
+      "capabilities" : [ "FunctionPointersINTEL" ],
+      "extensions" : [ "SPV_INTEL_function_pointers" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpFunctionPointerCallINTEL",
+      "class"  : "@exclude",
+      "opcode" : 5601,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "quantifier" : "*", "name" : "'Operand 1'" }
+      ],
+      "capabilities" : [ "FunctionPointersINTEL" ],
+      "extensions" : [ "SPV_INTEL_function_pointers" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpDecorateString",
+      "class"  : "Annotation",
+      "opcode" : 5632,
+      "operands" : [
+        { "kind" : "IdRef",         "name" : "'Target'" },
+        { "kind" : "Decoration" }
+      ],
+      "extensions" : [ "SPV_GOOGLE_decorate_string", "SPV_GOOGLE_hlsl_functionality1" ],
+      "version" : "1.4"
+    },
+    {
+      "opname" : "OpDecorateStringGOOGLE",
+      "class"  : "Annotation",
+      "opcode" : 5632,
+      "operands" : [
+        { "kind" : "IdRef",         "name" : "'Target'" },
+        { "kind" : "Decoration" }
+      ],
+      "extensions" : [ "SPV_GOOGLE_decorate_string", "SPV_GOOGLE_hlsl_functionality1" ],
+      "version" : "1.4"
+    },
+    {
+      "opname" : "OpMemberDecorateString",
+      "class"  : "Annotation",
+      "opcode" : 5633,
+      "operands" : [
+        { "kind" : "IdRef",          "name" : "'Struct Type'" },
+        { "kind" : "LiteralInteger", "name" : "'Member'" },
+        { "kind" : "Decoration" }
+      ],
+      "extensions" : [ "SPV_GOOGLE_decorate_string", "SPV_GOOGLE_hlsl_functionality1" ],
+      "version" : "1.4"
+    },
+    {
+      "opname" : "OpMemberDecorateStringGOOGLE",
+      "class"  : "Annotation",
+      "opcode" : 5633,
+      "operands" : [
+        { "kind" : "IdRef",          "name" : "'Struct Type'" },
+        { "kind" : "LiteralInteger", "name" : "'Member'" },
+        { "kind" : "Decoration" }
+      ],
+      "extensions" : [ "SPV_GOOGLE_decorate_string", "SPV_GOOGLE_hlsl_functionality1" ],
+      "version" : "1.4"
+    },
+    {
+      "opname" : "OpVmeImageINTEL",
+      "class"  : "@exclude",
+      "opcode" : 5699,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Image Type'" },
+        { "kind" : "IdRef", "name" : "'Sampler'" }
+      ],
+      "capabilities" : [ "SubgroupAvcMotionEstimationINTEL" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpTypeVmeImageINTEL",
+      "class"  : "@exclude",
+      "opcode" : 5700,
+      "operands" : [
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Image Type'" }
+      ],
+      "capabilities" : [ "SubgroupAvcMotionEstimationINTEL" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpTypeAvcImePayloadINTEL",
+      "class"  : "@exclude",
+      "opcode" : 5701,
+      "operands" : [
+        { "kind" : "IdResult" }
+      ],
+      "capabilities" : [ "SubgroupAvcMotionEstimationINTEL" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpTypeAvcRefPayloadINTEL",
+      "class"  : "@exclude",
+      "opcode" : 5702,
+      "operands" : [
+        { "kind" : "IdResult" }
+      ],
+      "capabilities" : [ "SubgroupAvcMotionEstimationINTEL" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpTypeAvcSicPayloadINTEL",
+      "class"  : "@exclude",
+      "opcode" : 5703,
+      "operands" : [
+        { "kind" : "IdResult" }
+      ],
+      "capabilities" : [ "SubgroupAvcMotionEstimationINTEL" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpTypeAvcMcePayloadINTEL",
+      "class"  : "@exclude",
+      "opcode" : 5704,
+      "operands" : [
+        { "kind" : "IdResult" }
+      ],
+      "capabilities" : [ "SubgroupAvcMotionEstimationINTEL" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpTypeAvcMceResultINTEL",
+      "class"  : "@exclude",
+      "opcode" : 5705,
+      "operands" : [
+        { "kind" : "IdResult" }
+      ],
+      "capabilities" : [ "SubgroupAvcMotionEstimationINTEL" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpTypeAvcImeResultINTEL",
+      "class"  : "@exclude",
+      "opcode" : 5706,
+      "operands" : [
+        { "kind" : "IdResult" }
+      ],
+      "capabilities" : [ "SubgroupAvcMotionEstimationINTEL" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpTypeAvcImeResultSingleReferenceStreamoutINTEL",
+      "class"  : "@exclude",
+      "opcode" : 5707,
+      "operands" : [
+        { "kind" : "IdResult" }
+      ],
+      "capabilities" : [ "SubgroupAvcMotionEstimationINTEL" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpTypeAvcImeResultDualReferenceStreamoutINTEL",
+      "class"  : "@exclude",
+      "opcode" : 5708,
+      "operands" : [
+        { "kind" : "IdResult" }
+      ],
+      "capabilities" : [ "SubgroupAvcMotionEstimationINTEL" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpTypeAvcImeSingleReferenceStreaminINTEL",
+      "class"  : "@exclude",
+      "opcode" : 5709,
+      "operands" : [
+        { "kind" : "IdResult" }
+      ],
+      "capabilities" : [ "SubgroupAvcMotionEstimationINTEL" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpTypeAvcImeDualReferenceStreaminINTEL",
+      "class"  : "@exclude",
+      "opcode" : 5710,
+      "operands" : [
+        { "kind" : "IdResult" }
+      ],
+      "capabilities" : [ "SubgroupAvcMotionEstimationINTEL" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpTypeAvcRefResultINTEL",
+      "class"  : "@exclude",
+      "opcode" : 5711,
+      "operands" : [
+        { "kind" : "IdResult" }
+      ],
+      "capabilities" : [ "SubgroupAvcMotionEstimationINTEL" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpTypeAvcSicResultINTEL",
+      "class"  : "@exclude",
+      "opcode" : 5712,
+      "operands" : [
+        { "kind" : "IdResult" }
+      ],
+      "capabilities" : [ "SubgroupAvcMotionEstimationINTEL" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpSubgroupAvcMceGetDefaultInterBaseMultiReferencePenaltyINTEL",
+      "class"  : "@exclude",
+      "opcode" : 5713,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Slice Type'" },
+        { "kind" : "IdRef", "name" : "'Qp'" }
+      ],
+      "capabilities" : [ "SubgroupAvcMotionEstimationINTEL" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpSubgroupAvcMceSetInterBaseMultiReferencePenaltyINTEL",
+      "class"  : "@exclude",
+      "opcode" : 5714,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Reference Base Penalty'" },
+        { "kind" : "IdRef", "name" : "'Payload'" }
+      ],
+      "capabilities" : [ "SubgroupAvcMotionEstimationINTEL" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpSubgroupAvcMceGetDefaultInterShapePenaltyINTEL",
+      "class"  : "@exclude",
+      "opcode" : 5715,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Slice Type'" },
+        { "kind" : "IdRef", "name" : "'Qp'" }
+      ],
+      "capabilities" : [ "SubgroupAvcMotionEstimationINTEL" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpSubgroupAvcMceSetInterShapePenaltyINTEL",
+      "class"  : "@exclude",
+      "opcode" : 5716,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Packed Shape Penalty'" },
+        { "kind" : "IdRef", "name" : "'Payload'" }
+      ],
+      "capabilities" : [ "SubgroupAvcMotionEstimationINTEL" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpSubgroupAvcMceGetDefaultInterDirectionPenaltyINTEL",
+      "class"  : "@exclude",
+      "opcode" : 5717,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Slice Type'" },
+        { "kind" : "IdRef", "name" : "'Qp'" }
+      ],
+      "capabilities" : [ "SubgroupAvcMotionEstimationINTEL" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpSubgroupAvcMceSetInterDirectionPenaltyINTEL",
+      "class"  : "@exclude",
+      "opcode" : 5718,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Direction Cost'" },
+        { "kind" : "IdRef", "name" : "'Payload'" }
+      ],
+      "capabilities" : [ "SubgroupAvcMotionEstimationINTEL" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpSubgroupAvcMceGetDefaultIntraLumaShapePenaltyINTEL",
+      "class"  : "@exclude",
+      "opcode" : 5719,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Slice Type'" },
+        { "kind" : "IdRef", "name" : "'Qp'" }
+      ],
+      "capabilities" : [ "SubgroupAvcMotionEstimationINTEL", "SubgroupAvcMotionEstimationIntraINTEL" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpSubgroupAvcMceGetDefaultInterMotionVectorCostTableINTEL",
+      "class"  : "@exclude",
+      "opcode" : 5720,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Slice Type'" },
+        { "kind" : "IdRef", "name" : "'Qp'" }
+      ],
+      "capabilities" : [ "SubgroupAvcMotionEstimationINTEL" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpSubgroupAvcMceGetDefaultHighPenaltyCostTableINTEL",
+      "class"  : "@exclude",
+      "opcode" : 5721,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" }
+      ],
+      "capabilities" : [ "SubgroupAvcMotionEstimationINTEL" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpSubgroupAvcMceGetDefaultMediumPenaltyCostTableINTEL",
+      "class"  : "@exclude",
+      "opcode" : 5722,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" }
+      ],
+      "capabilities" : [ "SubgroupAvcMotionEstimationINTEL" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpSubgroupAvcMceGetDefaultLowPenaltyCostTableINTEL",
+      "class"  : "@exclude",
+      "opcode" : 5723,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" }
+      ],
+      "capabilities" : [ "SubgroupAvcMotionEstimationINTEL" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpSubgroupAvcMceSetMotionVectorCostFunctionINTEL",
+      "class"  : "@exclude",
+      "opcode" : 5724,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Packed Cost Center Delta'" },
+        { "kind" : "IdRef", "name" : "'Packed Cost Table'" },
+        { "kind" : "IdRef", "name" : "'Cost Precision'" },
+        { "kind" : "IdRef", "name" : "'Payload'" }
+      ],
+      "capabilities" : [ "SubgroupAvcMotionEstimationINTEL" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpSubgroupAvcMceGetDefaultIntraLumaModePenaltyINTEL",
+      "class"  : "@exclude",
+      "opcode" : 5725,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Slice Type'" },
+        { "kind" : "IdRef", "name" : "'Qp'" }
+      ],
+      "capabilities" : [ "SubgroupAvcMotionEstimationINTEL", "SubgroupAvcMotionEstimationIntraINTEL" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpSubgroupAvcMceGetDefaultNonDcLumaIntraPenaltyINTEL",
+      "class"  : "@exclude",
+      "opcode" : 5726,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" }
+      ],
+      "capabilities" : [ "SubgroupAvcMotionEstimationINTEL", "SubgroupAvcMotionEstimationIntraINTEL" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpSubgroupAvcMceGetDefaultIntraChromaModeBasePenaltyINTEL",
+      "class"  : "@exclude",
+      "opcode" : 5727,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" }
+      ],
+      "capabilities" : [ "SubgroupAvcMotionEstimationINTEL", "SubgroupAvcMotionEstimationChromaINTEL" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpSubgroupAvcMceSetAcOnlyHaarINTEL",
+      "class"  : "@exclude",
+      "opcode" : 5728,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Payload'" }
+      ],
+      "capabilities" : [ "SubgroupAvcMotionEstimationINTEL" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpSubgroupAvcMceSetSourceInterlacedFieldPolarityINTEL",
+      "class"  : "@exclude",
+      "opcode" : 5729,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Source Field Polarity'" },
+        { "kind" : "IdRef", "name" : "'Payload'" }
+      ],
+      "capabilities" : [ "SubgroupAvcMotionEstimationINTEL" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpSubgroupAvcMceSetSingleReferenceInterlacedFieldPolarityINTEL",
+      "class"  : "@exclude",
+      "opcode" : 5730,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Reference Field Polarity'" },
+        { "kind" : "IdRef", "name" : "'Payload'" }
+      ],
+      "capabilities" : [ "SubgroupAvcMotionEstimationINTEL" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpSubgroupAvcMceSetDualReferenceInterlacedFieldPolaritiesINTEL",
+      "class"  : "@exclude",
+      "opcode" : 5731,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Forward Reference Field Polarity'" },
+        { "kind" : "IdRef", "name" : "'Backward Reference Field Polarity'" },
+        { "kind" : "IdRef", "name" : "'Payload'" }
+      ],
+      "capabilities" : [ "SubgroupAvcMotionEstimationINTEL" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpSubgroupAvcMceConvertToImePayloadINTEL",
+      "class"  : "@exclude",
+      "opcode" : 5732,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Payload'" }
+      ],
+      "capabilities" : [ "SubgroupAvcMotionEstimationINTEL" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpSubgroupAvcMceConvertToImeResultINTEL",
+      "class"  : "@exclude",
+      "opcode" : 5733,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Payload'" }
+      ],
+      "capabilities" : [ "SubgroupAvcMotionEstimationINTEL" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpSubgroupAvcMceConvertToRefPayloadINTEL",
+      "class"  : "@exclude",
+      "opcode" : 5734,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Payload'" }
+      ],
+      "capabilities" : [ "SubgroupAvcMotionEstimationINTEL" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpSubgroupAvcMceConvertToRefResultINTEL",
+      "class"  : "@exclude",
+      "opcode" : 5735,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Payload'" }
+      ],
+      "capabilities" : [ "SubgroupAvcMotionEstimationINTEL" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpSubgroupAvcMceConvertToSicPayloadINTEL",
+      "class"  : "@exclude",
+      "opcode" : 5736,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Payload'" }
+      ],
+      "capabilities" : [ "SubgroupAvcMotionEstimationINTEL" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpSubgroupAvcMceConvertToSicResultINTEL",
+      "class"  : "@exclude",
+      "opcode" : 5737,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Payload'" }
+      ],
+      "capabilities" : [ "SubgroupAvcMotionEstimationINTEL" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpSubgroupAvcMceGetMotionVectorsINTEL",
+      "class"  : "@exclude",
+      "opcode" : 5738,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Payload'" }
+      ],
+      "capabilities" : [ "SubgroupAvcMotionEstimationINTEL" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpSubgroupAvcMceGetInterDistortionsINTEL",
+      "class"  : "@exclude",
+      "opcode" : 5739,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Payload'" }
+      ],
+      "capabilities" : [ "SubgroupAvcMotionEstimationINTEL" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpSubgroupAvcMceGetBestInterDistortionsINTEL",
+      "class"  : "@exclude",
+      "opcode" : 5740,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Payload'" }
+      ],
+      "capabilities" : [ "SubgroupAvcMotionEstimationINTEL" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpSubgroupAvcMceGetInterMajorShapeINTEL",
+      "class"  : "@exclude",
+      "opcode" : 5741,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Payload'" }
+      ],
+      "capabilities" : [ "SubgroupAvcMotionEstimationINTEL" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpSubgroupAvcMceGetInterMinorShapeINTEL",
+      "class"  : "@exclude",
+      "opcode" : 5742,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Payload'" }
+      ],
+      "capabilities" : [ "SubgroupAvcMotionEstimationINTEL" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpSubgroupAvcMceGetInterDirectionsINTEL",
+      "class"  : "@exclude",
+      "opcode" : 5743,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Payload'" }
+      ],
+      "capabilities" : [ "SubgroupAvcMotionEstimationINTEL" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpSubgroupAvcMceGetInterMotionVectorCountINTEL",
+      "class"  : "@exclude",
+      "opcode" : 5744,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Payload'" }
+      ],
+      "capabilities" : [ "SubgroupAvcMotionEstimationINTEL" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpSubgroupAvcMceGetInterReferenceIdsINTEL",
+      "class"  : "@exclude",
+      "opcode" : 5745,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Payload'" }
+      ],
+      "capabilities" : [ "SubgroupAvcMotionEstimationINTEL" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpSubgroupAvcMceGetInterReferenceInterlacedFieldPolaritiesINTEL",
+      "class"  : "@exclude",
+      "opcode" : 5746,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Packed Reference Ids'" },
+        { "kind" : "IdRef", "name" : "'Packed Reference Parameter Field Polarities'" },
+        { "kind" : "IdRef", "name" : "'Payload'" }
+      ],
+      "capabilities" : [ "SubgroupAvcMotionEstimationINTEL" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpSubgroupAvcImeInitializeINTEL",
+      "class"  : "@exclude",
+      "opcode" : 5747,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Src Coord'" },
+        { "kind" : "IdRef", "name" : "'Partition Mask'" },
+        { "kind" : "IdRef", "name" : "'SAD Adjustment'" }
+      ],
+      "capabilities" : [ "SubgroupAvcMotionEstimationINTEL" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpSubgroupAvcImeSetSingleReferenceINTEL",
+      "class"  : "@exclude",
+      "opcode" : 5748,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Ref Offset'" },
+        { "kind" : "IdRef", "name" : "'Search Window Config'" },
+        { "kind" : "IdRef", "name" : "'Payload'" }
+      ],
+      "capabilities" : [ "SubgroupAvcMotionEstimationINTEL" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpSubgroupAvcImeSetDualReferenceINTEL",
+      "class"  : "@exclude",
+      "opcode" : 5749,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Fwd Ref Offset'" },
+        { "kind" : "IdRef", "name" : "'Bwd Ref Offset'" },
+        { "kind" : "IdRef", "name" : "'id> Search Window Config'" },
+        { "kind" : "IdRef", "name" : "'Payload'" }
+      ],
+      "capabilities" : [ "SubgroupAvcMotionEstimationINTEL" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpSubgroupAvcImeRefWindowSizeINTEL",
+      "class"  : "@exclude",
+      "opcode" : 5750,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Search Window Config'" },
+        { "kind" : "IdRef", "name" : "'Dual Ref'" }
+      ],
+      "capabilities" : [ "SubgroupAvcMotionEstimationINTEL" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpSubgroupAvcImeAdjustRefOffsetINTEL",
+      "class"  : "@exclude",
+      "opcode" : 5751,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Ref Offset'" },
+        { "kind" : "IdRef", "name" : "'Src Coord'" },
+        { "kind" : "IdRef", "name" : "'Ref Window Size'" },
+        { "kind" : "IdRef", "name" : "'Image Size'" }
+      ],
+      "capabilities" : [ "SubgroupAvcMotionEstimationINTEL" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpSubgroupAvcImeConvertToMcePayloadINTEL",
+      "class"  : "@exclude",
+      "opcode" : 5752,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Payload'" }
+      ],
+      "capabilities" : [ "SubgroupAvcMotionEstimationINTEL" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpSubgroupAvcImeSetMaxMotionVectorCountINTEL",
+      "class"  : "@exclude",
+      "opcode" : 5753,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Max Motion Vector Count'" },
+        { "kind" : "IdRef", "name" : "'Payload'" }
+      ],
+      "capabilities" : [ "SubgroupAvcMotionEstimationINTEL" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpSubgroupAvcImeSetUnidirectionalMixDisableINTEL",
+      "class"  : "@exclude",
+      "opcode" : 5754,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Payload'" }
+      ],
+      "capabilities" : [ "SubgroupAvcMotionEstimationINTEL" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpSubgroupAvcImeSetEarlySearchTerminationThresholdINTEL",
+      "class"  : "@exclude",
+      "opcode" : 5755,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Threshold'" },
+        { "kind" : "IdRef", "name" : "'Payload'" }
+      ],
+      "capabilities" : [ "SubgroupAvcMotionEstimationINTEL" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpSubgroupAvcImeSetWeightedSadINTEL",
+      "class"  : "@exclude",
+      "opcode" : 5756,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Packed Sad Weights'" },
+        { "kind" : "IdRef", "name" : "'Payload'" }
+      ],
+      "capabilities" : [ "SubgroupAvcMotionEstimationINTEL" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpSubgroupAvcImeEvaluateWithSingleReferenceINTEL",
+      "class"  : "@exclude",
+      "opcode" : 5757,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Src Image'" },
+        { "kind" : "IdRef", "name" : "'Ref Image'" },
+        { "kind" : "IdRef", "name" : "'Payload'" }
+      ],
+      "capabilities" : [ "SubgroupAvcMotionEstimationINTEL" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpSubgroupAvcImeEvaluateWithDualReferenceINTEL",
+      "class"  : "@exclude",
+      "opcode" : 5758,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Src Image'" },
+        { "kind" : "IdRef", "name" : "'Fwd Ref Image'" },
+        { "kind" : "IdRef", "name" : "'Bwd Ref Image'" },
+        { "kind" : "IdRef", "name" : "'Payload'" }
+      ],
+      "capabilities" : [ "SubgroupAvcMotionEstimationINTEL" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpSubgroupAvcImeEvaluateWithSingleReferenceStreaminINTEL",
+      "class"  : "@exclude",
+      "opcode" : 5759,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Src Image'" },
+        { "kind" : "IdRef", "name" : "'Ref Image'" },
+        { "kind" : "IdRef", "name" : "'Payload'" },
+        { "kind" : "IdRef", "name" : "'Streamin Components'" }
+      ],
+      "capabilities" : [ "SubgroupAvcMotionEstimationINTEL" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpSubgroupAvcImeEvaluateWithDualReferenceStreaminINTEL",
+      "class"  : "@exclude",
+      "opcode" : 5760,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Src Image'" },
+        { "kind" : "IdRef", "name" : "'Fwd Ref Image'" },
+        { "kind" : "IdRef", "name" : "'Bwd Ref Image'" },
+        { "kind" : "IdRef", "name" : "'Payload'" },
+        { "kind" : "IdRef", "name" : "'Streamin Components'" }
+      ],
+      "capabilities" : [ "SubgroupAvcMotionEstimationINTEL" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpSubgroupAvcImeEvaluateWithSingleReferenceStreamoutINTEL",
+      "class"  : "@exclude",
+      "opcode" : 5761,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Src Image'" },
+        { "kind" : "IdRef", "name" : "'Ref Image'" },
+        { "kind" : "IdRef", "name" : "'Payload'" }
+      ],
+      "capabilities" : [ "SubgroupAvcMotionEstimationINTEL" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpSubgroupAvcImeEvaluateWithDualReferenceStreamoutINTEL",
+      "class"  : "@exclude",
+      "opcode" : 5762,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Src Image'" },
+        { "kind" : "IdRef", "name" : "'Fwd Ref Image'" },
+        { "kind" : "IdRef", "name" : "'Bwd Ref Image'" },
+        { "kind" : "IdRef", "name" : "'Payload'" }
+      ],
+      "capabilities" : [ "SubgroupAvcMotionEstimationINTEL" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpSubgroupAvcImeEvaluateWithSingleReferenceStreaminoutINTEL",
+      "class"  : "@exclude",
+      "opcode" : 5763,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Src Image'" },
+        { "kind" : "IdRef", "name" : "'Ref Image'" },
+        { "kind" : "IdRef", "name" : "'Payload'" },
+        { "kind" : "IdRef", "name" : "'Streamin Components'" }
+      ],
+      "capabilities" : [ "SubgroupAvcMotionEstimationINTEL" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpSubgroupAvcImeEvaluateWithDualReferenceStreaminoutINTEL",
+      "class"  : "@exclude",
+      "opcode" : 5764,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Src Image'" },
+        { "kind" : "IdRef", "name" : "'Fwd Ref Image'" },
+        { "kind" : "IdRef", "name" : "'Bwd Ref Image'" },
+        { "kind" : "IdRef", "name" : "'Payload'" },
+        { "kind" : "IdRef", "name" : "'Streamin Components'" }
+      ],
+      "capabilities" : [ "SubgroupAvcMotionEstimationINTEL" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpSubgroupAvcImeConvertToMceResultINTEL",
+      "class"  : "@exclude",
+      "opcode" : 5765,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Payload'" }
+      ],
+      "capabilities" : [ "SubgroupAvcMotionEstimationINTEL" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpSubgroupAvcImeGetSingleReferenceStreaminINTEL",
+      "class"  : "@exclude",
+      "opcode" : 5766,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Payload'" }
+      ],
+      "capabilities" : [ "SubgroupAvcMotionEstimationINTEL" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpSubgroupAvcImeGetDualReferenceStreaminINTEL",
+      "class"  : "@exclude",
+      "opcode" : 5767,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Payload'" }
+      ],
+      "capabilities" : [ "SubgroupAvcMotionEstimationINTEL" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpSubgroupAvcImeStripSingleReferenceStreamoutINTEL",
+      "class"  : "@exclude",
+      "opcode" : 5768,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Payload'" }
+      ],
+      "capabilities" : [ "SubgroupAvcMotionEstimationINTEL" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpSubgroupAvcImeStripDualReferenceStreamoutINTEL",
+      "class"  : "@exclude",
+      "opcode" : 5769,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Payload'" }
+      ],
+      "capabilities" : [ "SubgroupAvcMotionEstimationINTEL" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeMotionVectorsINTEL",
+      "class"  : "@exclude",
+      "opcode" : 5770,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Payload'" },
+        { "kind" : "IdRef", "name" : "'Major Shape'" }
+      ],
+      "capabilities" : [ "SubgroupAvcMotionEstimationINTEL" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeDistortionsINTEL",
+      "class"  : "@exclude",
+      "opcode" : 5771,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Payload'" },
+        { "kind" : "IdRef", "name" : "'Major Shape'" }
+      ],
+      "capabilities" : [ "SubgroupAvcMotionEstimationINTEL" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeReferenceIdsINTEL",
+      "class"  : "@exclude",
+      "opcode" : 5772,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Payload'" },
+        { "kind" : "IdRef", "name" : "'Major Shape'" }
+      ],
+      "capabilities" : [ "SubgroupAvcMotionEstimationINTEL" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeMotionVectorsINTEL",
+      "class"  : "@exclude",
+      "opcode" : 5773,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Payload'" },
+        { "kind" : "IdRef", "name" : "'Major Shape'" },
+        { "kind" : "IdRef", "name" : "'Direction'" }
+      ],
+      "capabilities" : [ "SubgroupAvcMotionEstimationINTEL" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeDistortionsINTEL",
+      "class"  : "@exclude",
+      "opcode" : 5774,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Payload'" },
+        { "kind" : "IdRef", "name" : "'Major Shape'" },
+        { "kind" : "IdRef", "name" : "'Direction'" }
+      ],
+      "capabilities" : [ "SubgroupAvcMotionEstimationINTEL" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeReferenceIdsINTEL",
+      "class"  : "@exclude",
+      "opcode" : 5775,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Payload'" },
+        { "kind" : "IdRef", "name" : "'Major Shape'" },
+        { "kind" : "IdRef", "name" : "'Direction'" }
+      ],
+      "capabilities" : [ "SubgroupAvcMotionEstimationINTEL" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpSubgroupAvcImeGetBorderReachedINTEL",
+      "class"  : "@exclude",
+      "opcode" : 5776,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Image Select'" },
+        { "kind" : "IdRef", "name" : "'Payload'" }
+      ],
+      "capabilities" : [ "SubgroupAvcMotionEstimationINTEL" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpSubgroupAvcImeGetTruncatedSearchIndicationINTEL",
+      "class"  : "@exclude",
+      "opcode" : 5777,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Payload'" }
+      ],
+      "capabilities" : [ "SubgroupAvcMotionEstimationINTEL" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpSubgroupAvcImeGetUnidirectionalEarlySearchTerminationINTEL",
+      "class"  : "@exclude",
+      "opcode" : 5778,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Payload'" }
+      ],
+      "capabilities" : [ "SubgroupAvcMotionEstimationINTEL" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpSubgroupAvcImeGetWeightingPatternMinimumMotionVectorINTEL",
+      "class"  : "@exclude",
+      "opcode" : 5779,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Payload'" }
+      ],
+      "capabilities" : [ "SubgroupAvcMotionEstimationINTEL" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpSubgroupAvcImeGetWeightingPatternMinimumDistortionINTEL",
+      "class"  : "@exclude",
+      "opcode" : 5780,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Payload'" }
+      ],
+      "capabilities" : [ "SubgroupAvcMotionEstimationINTEL" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpSubgroupAvcFmeInitializeINTEL",
+      "class"  : "@exclude",
+      "opcode" : 5781,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Src Coord'" },
+        { "kind" : "IdRef", "name" : "'Motion Vectors'" },
+        { "kind" : "IdRef", "name" : "'Major Shapes'" },
+        { "kind" : "IdRef", "name" : "'Minor Shapes'" },
+        { "kind" : "IdRef", "name" : "'Direction'" },
+        { "kind" : "IdRef", "name" : "'Pixel Resolution'" },
+        { "kind" : "IdRef", "name" : "'Sad Adjustment'" }
+      ],
+      "capabilities" : [ "SubgroupAvcMotionEstimationINTEL" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpSubgroupAvcBmeInitializeINTEL",
+      "class"  : "@exclude",
+      "opcode" : 5782,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Src Coord'" },
+        { "kind" : "IdRef", "name" : "'Motion Vectors'" },
+        { "kind" : "IdRef", "name" : "'Major Shapes'" },
+        { "kind" : "IdRef", "name" : "'Minor Shapes'" },
+        { "kind" : "IdRef", "name" : "'Direction'" },
+        { "kind" : "IdRef", "name" : "'Pixel Resolution'" },
+        { "kind" : "IdRef", "name" : "'Bidirectional Weight'" },
+        { "kind" : "IdRef", "name" : "'Sad Adjustment'" }
+      ],
+      "capabilities" : [ "SubgroupAvcMotionEstimationINTEL" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpSubgroupAvcRefConvertToMcePayloadINTEL",
+      "class"  : "@exclude",
+      "opcode" : 5783,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Payload'" }
+      ],
+      "capabilities" : [ "SubgroupAvcMotionEstimationINTEL" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpSubgroupAvcRefSetBidirectionalMixDisableINTEL",
+      "class"  : "@exclude",
+      "opcode" : 5784,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Payload'" }
+      ],
+      "capabilities" : [ "SubgroupAvcMotionEstimationINTEL" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpSubgroupAvcRefSetBilinearFilterEnableINTEL",
+      "class"  : "@exclude",
+      "opcode" : 5785,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Payload'" }
+      ],
+      "capabilities" : [ "SubgroupAvcMotionEstimationINTEL" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpSubgroupAvcRefEvaluateWithSingleReferenceINTEL",
+      "class"  : "@exclude",
+      "opcode" : 5786,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Src Image'" },
+        { "kind" : "IdRef", "name" : "'Ref Image'" },
+        { "kind" : "IdRef", "name" : "'Payload'" }
+      ],
+      "capabilities" : [ "SubgroupAvcMotionEstimationINTEL" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpSubgroupAvcRefEvaluateWithDualReferenceINTEL",
+      "class"  : "@exclude",
+      "opcode" : 5787,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Src Image'" },
+        { "kind" : "IdRef", "name" : "'Fwd Ref Image'" },
+        { "kind" : "IdRef", "name" : "'Bwd Ref Image'" },
+        { "kind" : "IdRef", "name" : "'Payload'" }
+      ],
+      "capabilities" : [ "SubgroupAvcMotionEstimationINTEL" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpSubgroupAvcRefEvaluateWithMultiReferenceINTEL",
+      "class"  : "@exclude",
+      "opcode" : 5788,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Src Image'" },
+        { "kind" : "IdRef", "name" : "'Packed Reference Ids'" },
+        { "kind" : "IdRef", "name" : "'Payload'" }
+      ],
+      "capabilities" : [ "SubgroupAvcMotionEstimationINTEL" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpSubgroupAvcRefEvaluateWithMultiReferenceInterlacedINTEL",
+      "class"  : "@exclude",
+      "opcode" : 5789,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Src Image'" },
+        { "kind" : "IdRef", "name" : "'Packed Reference Ids'" },
+        { "kind" : "IdRef", "name" : "'Packed Reference Field Polarities'" },
+        { "kind" : "IdRef", "name" : "'Payload'" }
+      ],
+      "capabilities" : [ "SubgroupAvcMotionEstimationINTEL" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpSubgroupAvcRefConvertToMceResultINTEL",
+      "class"  : "@exclude",
+      "opcode" : 5790,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Payload'" }
+      ],
+      "capabilities" : [ "SubgroupAvcMotionEstimationINTEL" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpSubgroupAvcSicInitializeINTEL",
+      "class"  : "@exclude",
+      "opcode" : 5791,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Src Coord'" }
+      ],
+      "capabilities" : [ "SubgroupAvcMotionEstimationINTEL" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpSubgroupAvcSicConfigureSkcINTEL",
+      "class"  : "@exclude",
+      "opcode" : 5792,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Skip Block Partition Type'" },
+        { "kind" : "IdRef", "name" : "'Skip Motion Vector Mask'" },
+        { "kind" : "IdRef", "name" : "'Motion Vectors'" },
+        { "kind" : "IdRef", "name" : "'Bidirectional Weight'" },
+        { "kind" : "IdRef", "name" : "'Sad Adjustment'" },
+        { "kind" : "IdRef", "name" : "'Payload'" }
+      ],
+      "capabilities" : [ "SubgroupAvcMotionEstimationINTEL" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpSubgroupAvcSicConfigureIpeLumaINTEL",
+      "class"  : "@exclude",
+      "opcode" : 5793,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Luma Intra Partition Mask'" },
+        { "kind" : "IdRef", "name" : "'Intra Neighbour Availabilty'" },
+        { "kind" : "IdRef", "name" : "'Left Edge Luma Pixels'" },
+        { "kind" : "IdRef", "name" : "'Upper Left Corner Luma Pixel'" },
+        { "kind" : "IdRef", "name" : "'Upper Edge Luma Pixels'" },
+        { "kind" : "IdRef", "name" : "'Upper Right Edge Luma Pixels'" },
+        { "kind" : "IdRef", "name" : "'Sad Adjustment'" },
+        { "kind" : "IdRef", "name" : "'Payload'" }
+      ],
+      "capabilities" : [ "SubgroupAvcMotionEstimationINTEL", "SubgroupAvcMotionEstimationIntraINTEL" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpSubgroupAvcSicConfigureIpeLumaChromaINTEL",
+      "class"  : "@exclude",
+      "opcode" : 5794,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Luma Intra Partition Mask'" },
+        { "kind" : "IdRef", "name" : "'Intra Neighbour Availabilty'" },
+        { "kind" : "IdRef", "name" : "'Left Edge Luma Pixels'" },
+        { "kind" : "IdRef", "name" : "'Upper Left Corner Luma Pixel'" },
+        { "kind" : "IdRef", "name" : "'Upper Edge Luma Pixels'" },
+        { "kind" : "IdRef", "name" : "'Upper Right Edge Luma Pixels'" },
+        { "kind" : "IdRef", "name" : "'Left Edge Chroma Pixels'" },
+        { "kind" : "IdRef", "name" : "'Upper Left Corner Chroma Pixel'" },
+        { "kind" : "IdRef", "name" : "'Upper Edge Chroma Pixels'" },
+        { "kind" : "IdRef", "name" : "'Sad Adjustment'" },
+        { "kind" : "IdRef", "name" : "'Payload'" }
+      ],
+      "capabilities" : [ "SubgroupAvcMotionEstimationINTEL", "SubgroupAvcMotionEstimationChromaINTEL" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpSubgroupAvcSicGetMotionVectorMaskINTEL",
+      "class"  : "@exclude",
+      "opcode" : 5795,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Skip Block Partition Type'" },
+        { "kind" : "IdRef", "name" : "'Direction'" }
+      ],
+      "capabilities" : [ "SubgroupAvcMotionEstimationINTEL" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpSubgroupAvcSicConvertToMcePayloadINTEL",
+      "class"  : "@exclude",
+      "opcode" : 5796,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Payload'" }
+      ],
+      "capabilities" : [ "SubgroupAvcMotionEstimationINTEL" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpSubgroupAvcSicSetIntraLumaShapePenaltyINTEL",
+      "class"  : "@exclude",
+      "opcode" : 5797,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Packed Shape Penalty'" },
+        { "kind" : "IdRef", "name" : "'Payload'" }
+      ],
+      "capabilities" : [ "SubgroupAvcMotionEstimationINTEL" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpSubgroupAvcSicSetIntraLumaModeCostFunctionINTEL",
+      "class"  : "@exclude",
+      "opcode" : 5798,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Luma Mode Penalty'" },
+        { "kind" : "IdRef", "name" : "'Luma Packed Neighbor Modes'" },
+        { "kind" : "IdRef", "name" : "'Luma Packed Non Dc Penalty'" },
+        { "kind" : "IdRef", "name" : "'Payload'" }
+      ],
+      "capabilities" : [ "SubgroupAvcMotionEstimationINTEL", "SubgroupAvcMotionEstimationIntraINTEL" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpSubgroupAvcSicSetIntraChromaModeCostFunctionINTEL",
+      "class"  : "@exclude",
+      "opcode" : 5799,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Chroma Mode Base Penalty'" },
+        { "kind" : "IdRef", "name" : "'Payload'" }
+      ],
+      "capabilities" : [ "SubgroupAvcMotionEstimationINTEL", "SubgroupAvcMotionEstimationChromaINTEL" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpSubgroupAvcSicSetBilinearFilterEnableINTEL",
+      "class"  : "@exclude",
+      "opcode" : 5800,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Payload'" }
+      ],
+      "capabilities" : [ "SubgroupAvcMotionEstimationINTEL" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpSubgroupAvcSicSetSkcForwardTransformEnableINTEL",
+      "class"  : "@exclude",
+      "opcode" : 5801,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Packed Sad Coefficients'" },
+        { "kind" : "IdRef", "name" : "'Payload'" }
+      ],
+      "capabilities" : [ "SubgroupAvcMotionEstimationINTEL" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpSubgroupAvcSicSetBlockBasedRawSkipSadINTEL",
+      "class"  : "@exclude",
+      "opcode" : 5802,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Block Based Skip Type'" },
+        { "kind" : "IdRef", "name" : "'Payload'" }
+      ],
+      "capabilities" : [ "SubgroupAvcMotionEstimationINTEL" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpSubgroupAvcSicEvaluateIpeINTEL",
+      "class"  : "@exclude",
+      "opcode" : 5803,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Src Image'" },
+        { "kind" : "IdRef", "name" : "'Payload'" }
+      ],
+      "capabilities" : [ "SubgroupAvcMotionEstimationINTEL", "SubgroupAvcMotionEstimationIntraINTEL" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpSubgroupAvcSicEvaluateWithSingleReferenceINTEL",
+      "class"  : "@exclude",
+      "opcode" : 5804,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Src Image'" },
+        { "kind" : "IdRef", "name" : "'Ref Image'" },
+        { "kind" : "IdRef", "name" : "'Payload'" }
+      ],
+      "capabilities" : [ "SubgroupAvcMotionEstimationINTEL" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpSubgroupAvcSicEvaluateWithDualReferenceINTEL",
+      "class"  : "@exclude",
+      "opcode" : 5805,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Src Image'" },
+        { "kind" : "IdRef", "name" : "'Fwd Ref Image'" },
+        { "kind" : "IdRef", "name" : "'Bwd Ref Image'" },
+        { "kind" : "IdRef", "name" : "'Payload'" }
+      ],
+      "capabilities" : [ "SubgroupAvcMotionEstimationINTEL" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpSubgroupAvcSicEvaluateWithMultiReferenceINTEL",
+      "class"  : "@exclude",
+      "opcode" : 5806,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Src Image'" },
+        { "kind" : "IdRef", "name" : "'Packed Reference Ids'" },
+        { "kind" : "IdRef", "name" : "'Payload'" }
+      ],
+      "capabilities" : [ "SubgroupAvcMotionEstimationINTEL" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpSubgroupAvcSicEvaluateWithMultiReferenceInterlacedINTEL",
+      "class"  : "@exclude",
+      "opcode" : 5807,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Src Image'" },
+        { "kind" : "IdRef", "name" : "'Packed Reference Ids'" },
+        { "kind" : "IdRef", "name" : "'Packed Reference Field Polarities'" },
+        { "kind" : "IdRef", "name" : "'Payload'" }
+      ],
+      "capabilities" : [ "SubgroupAvcMotionEstimationINTEL" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpSubgroupAvcSicConvertToMceResultINTEL",
+      "class"  : "@exclude",
+      "opcode" : 5808,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Payload'" }
+      ],
+      "capabilities" : [ "SubgroupAvcMotionEstimationINTEL" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpSubgroupAvcSicGetIpeLumaShapeINTEL",
+      "class"  : "@exclude",
+      "opcode" : 5809,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Payload'" }
+      ],
+      "capabilities" : [ "SubgroupAvcMotionEstimationINTEL", "SubgroupAvcMotionEstimationIntraINTEL" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpSubgroupAvcSicGetBestIpeLumaDistortionINTEL",
+      "class"  : "@exclude",
+      "opcode" : 5810,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Payload'" }
+      ],
+      "capabilities" : [ "SubgroupAvcMotionEstimationINTEL", "SubgroupAvcMotionEstimationIntraINTEL" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpSubgroupAvcSicGetBestIpeChromaDistortionINTEL",
+      "class"  : "@exclude",
+      "opcode" : 5811,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Payload'" }
+      ],
+      "capabilities" : [ "SubgroupAvcMotionEstimationINTEL" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpSubgroupAvcSicGetPackedIpeLumaModesINTEL",
+      "class"  : "@exclude",
+      "opcode" : 5812,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Payload'" }
+      ],
+      "capabilities" : [ "SubgroupAvcMotionEstimationINTEL", "SubgroupAvcMotionEstimationIntraINTEL" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpSubgroupAvcSicGetIpeChromaModeINTEL",
+      "class"  : "@exclude",
+      "opcode" : 5813,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Payload'" }
+      ],
+      "capabilities" : [ "SubgroupAvcMotionEstimationINTEL", "SubgroupAvcMotionEstimationChromaINTEL" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpSubgroupAvcSicGetPackedSkcLumaCountThresholdINTEL",
+      "class"  : "@exclude",
+      "opcode" : 5814,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Payload'" }
+      ],
+      "capabilities" : [ "SubgroupAvcMotionEstimationINTEL", "SubgroupAvcMotionEstimationIntraINTEL" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpSubgroupAvcSicGetPackedSkcLumaSumThresholdINTEL",
+      "class"  : "@exclude",
+      "opcode" : 5815,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Payload'" }
+      ],
+      "capabilities" : [ "SubgroupAvcMotionEstimationINTEL", "SubgroupAvcMotionEstimationIntraINTEL" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpSubgroupAvcSicGetInterRawSadsINTEL",
+      "class"  : "@exclude",
+      "opcode" : 5816,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Payload'" }
+      ],
+      "capabilities" : [ "SubgroupAvcMotionEstimationINTEL" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpLoopControlINTEL",
+      "class"  : "Reserved",
+      "opcode" : 5887,
+      "operands" : [
+        { "kind" : "LiteralInteger", "quantifier" : "*", "name" : "'Loop Control Parameters'" }
+      ],
+      "capabilities" : [ "UnstructuredLoopControlsINTEL" ],
+      "extensions" : [ "SPV_INTEL_unstructured_loop_controls" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpReadPipeBlockingINTEL",
+      "class"  : "Pipe",
+      "opcode" : 5946,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Packet Size'" },
+        { "kind" : "IdRef", "name" : "'Packet Alignment'" }
+      ],
+      "capabilities" : [ "BlockingPipesINTEL" ],
+      "extensions" : [ "SPV_INTEL_blocking_pipes" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpWritePipeBlockingINTEL",
+      "class"  : "Pipe",
+      "opcode" : 5947,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Packet Size'" },
+        { "kind" : "IdRef", "name" : "'Packet Alignment'" }
+      ],
+      "capabilities" : [ "BlockingPipesINTEL" ],
+      "extensions" : [ "SPV_INTEL_blocking_pipes" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpFPGARegINTEL",
+      "class"  : "Reserved",
+      "opcode" : 5949,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Result'" },
+        { "kind" : "IdRef", "name" : "'Input'" }
+      ],
+      "capabilities" : [ "FPGARegINTEL" ],
+      "extensions" : [ "SPV_INTEL_fpga_reg" ],
+      "version" : "None"
+    },
+    {
+        "opname" : "OpRayQueryGetRayTMinKHR",
+        "class" : "Reserved",
+        "opcode" : 6016,
+        "operands" : [
+            { "kind" : "IdResultType" },
+            { "kind" : "IdResult" },
+            {
+                "kind" : "IdRef",
+                "name" : "'RayQuery'"
+            }
+        ],
+        "capabilities" : [ "RayQueryProvisionalKHR" ],
+        "extensions" : [ "SPV_KHR_ray_query" ],
+        "version" : "None"
+    },
+    {
+        "opname" : "OpRayQueryGetRayFlagsKHR",
+        "class" : "Reserved",
+        "opcode" : 6017,
+        "operands" : [
+            { "kind" : "IdResultType" },
+            { "kind" : "IdResult" },
+            {
+                "kind" : "IdRef",
+                "name" : "'RayQuery'"
+            }
+        ],
+        "capabilities" : [ "RayQueryProvisionalKHR" ],
+        "extensions" : [ "SPV_KHR_ray_query" ],
+        "version" : "None"
+    },
+    {
+        "opname" : "OpRayQueryGetIntersectionTKHR",
+        "class" : "Reserved",
+        "opcode" : 6018,
+        "operands" : [
+            { "kind" : "IdResultType" },
+            { "kind" : "IdResult" },
+            {
+                "kind" : "IdRef",
+                "name" : "'RayQuery'"
+            },
+            {
+                "kind" : "IdRef",
+                "name" : "'Intersection'"
+            }
+        ],
+        "capabilities" : [ "RayQueryProvisionalKHR" ],
+        "extensions" : [ "SPV_KHR_ray_query" ],
+        "version" : "None"
+    },
+    {
+        "opname" : "OpRayQueryGetIntersectionInstanceCustomIndexKHR",
+        "class" : "Reserved",
+        "opcode" : 6019,
+        "operands" : [
+            { "kind" : "IdResultType" },
+            { "kind" : "IdResult" },
+            {
+                "kind" : "IdRef",
+                "name" : "'RayQuery'"
+            },
+            {
+                "kind" : "IdRef",
+                "name" : "'Intersection'"
+            }
+        ],
+        "capabilities" : [ "RayQueryProvisionalKHR" ],
+        "extensions" : [ "SPV_KHR_ray_query" ],
+        "version" : "None"
+    },
+    {
+        "opname" : "OpRayQueryGetIntersectionInstanceIdKHR",
+        "class" : "Reserved",
+        "opcode" : 6020,
+        "operands" : [
+            { "kind" : "IdResultType" },
+            { "kind" : "IdResult" },
+            {
+                "kind" : "IdRef",
+                "name" : "'RayQuery'"
+            },
+            {
+                "kind" : "IdRef",
+                "name" : "'Intersection'"
+            }
+        ],
+        "capabilities" : [ "RayQueryProvisionalKHR" ],
+        "extensions" : [ "SPV_KHR_ray_query" ],
+        "version" : "None"
+    },
+    {
+        "opname" : "OpRayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR",
+        "class" : "Reserved",
+        "opcode" : 6021,
+        "operands" : [
+            { "kind" : "IdResultType" },
+            { "kind" : "IdResult" },
+            {
+                "kind" : "IdRef",
+                "name" : "'RayQuery'"
+            },
+            {
+                "kind" : "IdRef",
+                "name" : "'Intersection'"
+            }
+        ],
+        "capabilities" : [ "RayQueryProvisionalKHR" ],
+        "extensions" : [ "SPV_KHR_ray_query" ],
+        "version" : "None"
+    },
+    {
+        "opname" : "OpRayQueryGetIntersectionGeometryIndexKHR",
+        "class" : "Reserved",
+        "opcode" : 6022,
+        "operands" : [
+            { "kind" : "IdResultType" },
+            { "kind" : "IdResult" },
+            {
+                "kind" : "IdRef",
+                "name" : "'RayQuery'"
+            },
+            {
+                "kind" : "IdRef",
+                "name" : "'Intersection'"
+            }
+        ],
+        "capabilities" : [ "RayQueryProvisionalKHR" ],
+        "extensions" : [ "SPV_KHR_ray_query" ],
+        "version" : "None"
+    },
+    {
+        "opname" : "OpRayQueryGetIntersectionPrimitiveIndexKHR",
+        "class" : "Reserved",
+        "opcode" : 6023,
+        "operands" : [
+            { "kind" : "IdResultType" },
+            { "kind" : "IdResult" },
+            {
+                "kind" : "IdRef",
+                "name" : "'RayQuery'"
+            },
+            {
+                "kind" : "IdRef",
+                "name" : "'Intersection'"
+            }
+        ],
+        "capabilities" : [ "RayQueryProvisionalKHR" ],
+        "extensions" : [ "SPV_KHR_ray_query" ],
+        "version" : "None"
+    },
+    {
+        "opname" : "OpRayQueryGetIntersectionBarycentricsKHR",
+        "class" : "Reserved",
+        "opcode" : 6024,
+        "operands" : [
+            { "kind" : "IdResultType" },
+            { "kind" : "IdResult" },
+            {
+                "kind" : "IdRef",
+                "name" : "'RayQuery'"
+            },
+            {
+                "kind" : "IdRef",
+                "name" : "'Intersection'"
+            }
+        ],
+        "capabilities" : [ "RayQueryProvisionalKHR" ],
+        "extensions" : [ "SPV_KHR_ray_query" ],
+        "version" : "None"
+    },
+    {
+        "opname" : "OpRayQueryGetIntersectionFrontFaceKHR",
+        "class" : "Reserved",
+        "opcode" : 6025,
+        "operands" : [
+            { "kind" : "IdResultType" },
+            { "kind" : "IdResult" },
+            {
+                "kind" : "IdRef",
+                "name" : "'RayQuery'"
+            },
+            {
+                "kind" : "IdRef",
+                "name" : "'Intersection'"
+            }
+        ],
+        "capabilities" : [ "RayQueryProvisionalKHR" ],
+        "extensions" : [ "SPV_KHR_ray_query" ],
+        "version" : "None"
+    },
+    {
+        "opname" : "OpRayQueryGetIntersectionCandidateAABBOpaqueKHR",
+        "class" : "Reserved",
+        "opcode" : 6026,
+        "operands" : [
+            { "kind" : "IdResultType" },
+            { "kind" : "IdResult" },
+            {
+                "kind" : "IdRef",
+                "name" : "'RayQuery'"
+            }
+        ],
+        "capabilities" : [ "RayQueryProvisionalKHR" ],
+        "extensions" : [ "SPV_KHR_ray_query" ],
+        "version" : "None"
+    },
+    {
+        "opname" : "OpRayQueryGetIntersectionObjectRayDirectionKHR",
+        "class" : "Reserved",
+        "opcode" : 6027,
+        "operands" : [
+            { "kind" : "IdResultType" },
+            { "kind" : "IdResult" },
+            {
+                "kind" : "IdRef",
+                "name" : "'RayQuery'"
+            },
+            {
+                "kind" : "IdRef",
+                "name" : "'Intersection'"
+            }
+        ],
+        "capabilities" : [ "RayQueryProvisionalKHR" ],
+        "extensions" : [ "SPV_KHR_ray_query" ],
+        "version" : "None"
+    },
+    {
+        "opname" : "OpRayQueryGetIntersectionObjectRayOriginKHR",
+        "class" : "Reserved",
+        "opcode" : 6028,
+        "operands" : [
+            { "kind" : "IdResultType" },
+            { "kind" : "IdResult" },
+            {
+                "kind" : "IdRef",
+                "name" : "'RayQuery'"
+            },
+            {
+                "kind" : "IdRef",
+                "name" : "'Intersection'"
+            }
+        ],
+        "capabilities" : [ "RayQueryProvisionalKHR" ],
+        "extensions" : [ "SPV_KHR_ray_query" ],
+        "version" : "None"
+    },
+    {
+        "opname" : "OpRayQueryGetWorldRayDirectionKHR",
+        "class" : "Reserved",
+        "opcode" : 6029,
+        "operands" : [
+            { "kind" : "IdResultType" },
+            { "kind" : "IdResult" },
+            {
+                "kind" : "IdRef",
+                "name" : "'RayQuery'"
+            }
+        ],
+        "capabilities" : [ "RayQueryProvisionalKHR" ],
+        "extensions" : [ "SPV_KHR_ray_query" ],
+        "version" : "None"
+    },
+    {
+        "opname" : "OpRayQueryGetWorldRayOriginKHR",
+        "class" : "Reserved",
+        "opcode" : 6030,
+        "operands" : [
+            { "kind" : "IdResultType" },
+            { "kind" : "IdResult" },
+            {
+                "kind" : "IdRef",
+                "name" : "'RayQuery'"
+            }
+        ],
+        "capabilities" : [ "RayQueryProvisionalKHR" ],
+        "extensions" : [ "SPV_KHR_ray_query" ],
+        "version" : "None"
+    },
+    {
+        "opname" : "OpRayQueryGetIntersectionObjectToWorldKHR",
+        "class" : "Reserved",
+        "opcode" : 6031,
+        "operands" : [
+            { "kind" : "IdResultType" },
+            { "kind" : "IdResult" },
+            {
+                "kind" : "IdRef",
+                "name" : "'RayQuery'"
+            },
+            {
+                "kind" : "IdRef",
+                "name" : "'Intersection'"
+            }
+        ],
+        "capabilities" : [ "RayQueryProvisionalKHR" ],
+        "extensions" : [ "SPV_KHR_ray_query" ],
+        "version" : "None"
+    },
+    {
+        "opname" : "OpRayQueryGetIntersectionWorldToObjectKHR",
+        "class" : "Reserved",
+        "opcode" : 6032,
+        "operands" : [
+            { "kind" : "IdResultType" },
+            { "kind" : "IdResult" },
+            {
+                "kind" : "IdRef",
+                "name" : "'RayQuery'"
+            },
+             {
+                "kind" : "IdRef",
+                "name" : "'Intersection'"
+            }
+        ],
+        "capabilities" : [ "RayQueryProvisionalKHR" ],
+        "extensions" : [ "SPV_KHR_ray_query" ],
+        "version" : "None"
+    },
+    {
+      "opname" : "OpAtomicFAddEXT",
+      "class"  : "Atomic",
+      "opcode" : 6035,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",             "name" : "'Pointer'" },
+        { "kind" : "IdScope",           "name" : "'Memory'" },
+        { "kind" : "IdMemorySemantics", "name" : "'Semantics'" },
+        { "kind" : "IdRef",             "name" : "'Value'" }
+      ],
+      "capabilities" : [ "AtomicFloat32AddEXT", "AtomicFloat64AddEXT" ],
+      "extensions" : [ "SPV_EXT_shader_atomic_float_add" ],
+      "version" : "None"
+    }
+  ],
+  "operand_kinds" : [
+    {
+      "category" : "BitEnum",
+      "kind" : "ImageOperands",
+      "enumerants" : [
+        {
+          "enumerant" : "None",
+          "value" : "0x0000"
+        },
+        {
+          "enumerant" : "Bias",
+          "value" : "0x0001",
+          "capabilities" : [ "Shader" ],
+          "parameters" : [
+            { "kind" : "IdRef" }
+          ]
+        },
+        {
+          "enumerant" : "Lod",
+          "value" : "0x0002",
+          "parameters" : [
+            { "kind" : "IdRef" }
+          ]
+        },
+        {
+          "enumerant" : "Grad",
+          "value" : "0x0004",
+          "parameters" : [
+            { "kind" : "IdRef" },
+            { "kind" : "IdRef" }
+          ]
+        },
+        {
+          "enumerant" : "ConstOffset",
+          "value" : "0x0008",
+          "parameters" : [
+            { "kind" : "IdRef" }
+          ]
+        },
+        {
+          "enumerant" : "Offset",
+          "value" : "0x0010",
+          "capabilities" : [ "ImageGatherExtended" ],
+          "parameters" : [
+            { "kind" : "IdRef" }
+          ]
+        },
+        {
+          "enumerant" : "ConstOffsets",
+          "value" : "0x0020",
+          "capabilities" : [ "ImageGatherExtended" ],
+          "parameters" : [
+            { "kind" : "IdRef" }
+          ]
+        },
+        {
+          "enumerant" : "Sample",
+          "value" : "0x0040",
+          "parameters" : [
+            { "kind" : "IdRef" }
+          ]
+        },
+        {
+          "enumerant" : "MinLod",
+          "value" : "0x0080",
+          "capabilities" : [ "MinLod" ],
+          "parameters" : [
+            { "kind" : "IdRef" }
+          ]
+        },
+        {
+          "enumerant" : "MakeTexelAvailable",
+          "value" : "0x0100",
+          "capabilities" : [ "VulkanMemoryModel" ],
+          "parameters" : [
+            { "kind" : "IdScope" }
+          ],
+          "version" : "1.5"
+        },
+        {
+          "enumerant" : "MakeTexelAvailableKHR",
+          "value" : "0x0100",
+          "capabilities" : [ "VulkanMemoryModel" ],
+          "parameters" : [
+            { "kind" : "IdScope" }
+          ],
+          "extensions" : [ "SPV_KHR_vulkan_memory_model" ],
+          "version" : "1.5"
+        },
+        {
+          "enumerant" : "MakeTexelVisible",
+          "value" : "0x0200",
+          "capabilities" : [ "VulkanMemoryModel" ],
+          "parameters" : [
+            { "kind" : "IdScope" }
+          ],
+          "version" : "1.5"
+        },
+        {
+          "enumerant" : "MakeTexelVisibleKHR",
+          "value" : "0x0200",
+          "capabilities" : [ "VulkanMemoryModel" ],
+          "parameters" : [
+            { "kind" : "IdScope" }
+          ],
+          "extensions" : [ "SPV_KHR_vulkan_memory_model" ],
+          "version" : "1.5"
+        },
+        {
+          "enumerant" : "NonPrivateTexel",
+          "value" : "0x0400",
+          "capabilities" : [ "VulkanMemoryModel" ],
+          "version" : "1.5"
+        },
+        {
+          "enumerant" : "NonPrivateTexelKHR",
+          "value" : "0x0400",
+          "capabilities" : [ "VulkanMemoryModel" ],
+          "extensions" : [ "SPV_KHR_vulkan_memory_model" ],
+          "version" : "1.5"
+        },
+        {
+          "enumerant" : "VolatileTexel",
+          "value" : "0x0800",
+          "capabilities" : [ "VulkanMemoryModel" ],
+          "version" : "1.5"
+        },
+        {
+          "enumerant" : "VolatileTexelKHR",
+          "value" : "0x0800",
+          "capabilities" : [ "VulkanMemoryModel" ],
+          "extensions" : [ "SPV_KHR_vulkan_memory_model" ],
+          "version" : "1.5"
+        },
+        {
+          "enumerant" : "SignExtend",
+          "value" : "0x1000",
+          "version" : "1.4"
+        },
+        {
+          "enumerant" : "ZeroExtend",
+          "value" : "0x2000",
+          "version" : "1.4"
+        }
+      ]
+    },
+    {
+      "category" : "BitEnum",
+      "kind" : "FPFastMathMode",
+      "enumerants" : [
+        {
+          "enumerant" : "None",
+          "value" : "0x0000"
+        },
+        {
+          "enumerant" : "NotNaN",
+          "value" : "0x0001",
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "NotInf",
+          "value" : "0x0002",
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "NSZ",
+          "value" : "0x0004",
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "AllowRecip",
+          "value" : "0x0008",
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "Fast",
+          "value" : "0x0010",
+          "capabilities" : [ "Kernel" ]
+        }
+      ]
+    },
+    {
+      "category" : "BitEnum",
+      "kind" : "SelectionControl",
+      "enumerants" : [
+        {
+          "enumerant" : "None",
+          "value" : "0x0000"
+        },
+        {
+          "enumerant" : "Flatten",
+          "value" : "0x0001"
+        },
+        {
+          "enumerant" : "DontFlatten",
+          "value" : "0x0002"
+        }
+      ]
+    },
+    {
+      "category" : "BitEnum",
+      "kind" : "LoopControl",
+      "enumerants" : [
+        {
+          "enumerant" : "None",
+          "value" : "0x0000"
+        },
+        {
+          "enumerant" : "Unroll",
+          "value" : "0x0001"
+        },
+        {
+          "enumerant" : "DontUnroll",
+          "value" : "0x0002"
+        },
+        {
+          "enumerant" : "DependencyInfinite",
+          "value" : "0x0004",
+          "version" : "1.1"
+        },
+        {
+          "enumerant" : "DependencyLength",
+          "value" : "0x0008",
+          "parameters" : [
+            { "kind" : "LiteralInteger" }
+          ],
+          "version" : "1.1"
+        },
+        {
+          "enumerant" : "MinIterations",
+          "value" : "0x0010",
+          "parameters" : [
+            { "kind" : "LiteralInteger" }
+          ],
+          "version" : "1.4"
+        },
+        {
+          "enumerant" : "MaxIterations",
+          "value" : "0x0020",
+          "parameters" : [
+            { "kind" : "LiteralInteger" }
+          ],
+          "version" : "1.4"
+        },
+        {
+          "enumerant" : "IterationMultiple",
+          "value" : "0x0040",
+          "parameters" : [
+            { "kind" : "LiteralInteger" }
+          ],
+          "version" : "1.4"
+        },
+        {
+          "enumerant" : "PeelCount",
+          "value" : "0x0080",
+          "parameters" : [
+            { "kind" : "LiteralInteger" }
+          ],
+          "version" : "1.4"
+        },
+        {
+          "enumerant" : "PartialCount",
+          "value" : "0x0100",
+          "parameters" : [
+            { "kind" : "LiteralInteger" }
+          ],
+          "version" : "1.4"
+        },
+        {
+          "enumerant" : "InitiationIntervalINTEL",
+          "value" : "0x10000",
+          "parameters" : [
+            { "kind" : "LiteralInteger" }
+          ],
+          "capabilities" : [ "FPGALoopControlsINTEL" ],
+          "extensions" : [ "SPV_INTEL_fpga_loop_controls" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "MaxConcurrencyINTEL",
+          "value" : "0x20000",
+          "parameters" : [
+            { "kind" : "LiteralInteger" }
+          ],
+          "capabilities" : [ "FPGALoopControlsINTEL" ],
+          "extensions" : [ "SPV_INTEL_fpga_loop_controls" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "DependencyArrayINTEL",
+          "value" : "0x40000",
+          "parameters" : [
+            { "kind" : "LiteralInteger" }
+          ],
+          "capabilities" : [ "FPGALoopControlsINTEL" ],
+          "extensions" : [ "SPV_INTEL_fpga_loop_controls" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "PipelineEnableINTEL",
+          "value" : "0x80000",
+          "parameters" : [
+            { "kind" : "LiteralInteger" }
+          ],
+          "capabilities" : [ "FPGALoopControlsINTEL" ],
+          "extensions" : [ "SPV_INTEL_fpga_loop_controls" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "LoopCoalesceINTEL",
+          "value" : "0x100000",
+          "parameters" : [
+            { "kind" : "LiteralInteger" }
+          ],
+          "capabilities" : [ "FPGALoopControlsINTEL" ],
+          "extensions" : [ "SPV_INTEL_fpga_loop_controls" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "MaxInterleavingINTEL",
+          "value" : "0x200000",
+          "parameters" : [
+            { "kind" : "LiteralInteger" }
+          ],
+          "capabilities" : [ "FPGALoopControlsINTEL" ],
+          "extensions" : [ "SPV_INTEL_fpga_loop_controls" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "SpeculatedIterationsINTEL",
+          "value" : "0x400000",
+          "parameters" : [
+            { "kind" : "LiteralInteger" }
+          ],
+          "capabilities" : [ "FPGALoopControlsINTEL" ],
+          "extensions" : [ "SPV_INTEL_fpga_loop_controls" ],
+          "version" : "None"
+        }
+      ]
+    },
+    {
+      "category" : "BitEnum",
+      "kind" : "FunctionControl",
+      "enumerants" : [
+        {
+          "enumerant" : "None",
+          "value" : "0x0000"
+        },
+        {
+          "enumerant" : "Inline",
+          "value" : "0x0001"
+        },
+        {
+          "enumerant" : "DontInline",
+          "value" : "0x0002"
+        },
+        {
+          "enumerant" : "Pure",
+          "value" : "0x0004"
+        },
+        {
+          "enumerant" : "Const",
+          "value" : "0x0008"
+        }
+      ]
+    },
+    {
+      "category" : "BitEnum",
+      "kind" : "MemorySemantics",
+      "enumerants" : [
+        {
+          "enumerant" : "Relaxed",
+          "value" : "0x0000"
+        },
+        {
+          "enumerant" : "None",
+          "value" : "0x0000"
+        },
+        {
+          "enumerant" : "Acquire",
+          "value" : "0x0002"
+        },
+        {
+          "enumerant" : "Release",
+          "value" : "0x0004"
+        },
+        {
+          "enumerant" : "AcquireRelease",
+          "value" : "0x0008"
+        },
+        {
+          "enumerant" : "SequentiallyConsistent",
+          "value" : "0x0010"
+        },
+        {
+          "enumerant" : "UniformMemory",
+          "value" : "0x0040",
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "SubgroupMemory",
+          "value" : "0x0080"
+        },
+        {
+          "enumerant" : "WorkgroupMemory",
+          "value" : "0x0100"
+        },
+        {
+          "enumerant" : "CrossWorkgroupMemory",
+          "value" : "0x0200"
+        },
+        {
+          "enumerant" : "AtomicCounterMemory",
+          "value" : "0x0400",
+          "capabilities" : [ "AtomicStorage" ]
+        },
+        {
+          "enumerant" : "ImageMemory",
+          "value" : "0x0800"
+        },
+        {
+          "enumerant" : "OutputMemory",
+          "value" : "0x1000",
+          "capabilities" : [ "VulkanMemoryModel" ],
+          "version" : "1.5"
+        },
+        {
+          "enumerant" : "OutputMemoryKHR",
+          "value" : "0x1000",
+          "capabilities" : [ "VulkanMemoryModel" ],
+          "extensions" : [ "SPV_KHR_vulkan_memory_model" ],
+          "version" : "1.5"
+        },
+        {
+          "enumerant" : "MakeAvailable",
+          "value" : "0x2000",
+          "capabilities" : [ "VulkanMemoryModel" ],
+          "version" : "1.5"
+        },
+        {
+          "enumerant" : "MakeAvailableKHR",
+          "value" : "0x2000",
+          "capabilities" : [ "VulkanMemoryModel" ],
+          "extensions" : [ "SPV_KHR_vulkan_memory_model" ],
+          "version" : "1.5"
+        },
+        {
+          "enumerant" : "MakeVisible",
+          "value" : "0x4000",
+          "capabilities" : [ "VulkanMemoryModel" ],
+          "version" : "1.5"
+        },
+        {
+          "enumerant" : "MakeVisibleKHR",
+          "value" : "0x4000",
+          "capabilities" : [ "VulkanMemoryModel" ],
+          "extensions" : [ "SPV_KHR_vulkan_memory_model" ],
+          "version" : "1.5"
+        },
+        {
+          "enumerant" : "Volatile",
+          "value" : "0x8000",
+          "capabilities" : [ "VulkanMemoryModel" ],
+          "extensions" : [ "SPV_KHR_vulkan_memory_model" ],
+          "version" : "1.5"
+        }
+      ]
+    },
+    {
+      "category" : "BitEnum",
+      "kind" : "MemoryAccess",
+      "enumerants" : [
+        {
+          "enumerant" : "None",
+          "value" : "0x0000"
+        },
+        {
+          "enumerant" : "Volatile",
+          "value" : "0x0001"
+        },
+        {
+          "enumerant" : "Aligned",
+          "value" : "0x0002",
+          "parameters" : [
+            { "kind" : "LiteralInteger" }
+          ]
+        },
+        {
+          "enumerant" : "Nontemporal",
+          "value" : "0x0004"
+        },
+        {
+          "enumerant" : "MakePointerAvailable",
+          "value" : "0x0008",
+          "parameters" : [
+            { "kind" : "IdScope" }
+          ],
+          "capabilities" : [ "VulkanMemoryModel" ],
+          "version" : "1.5"
+        },
+        {
+          "enumerant" : "MakePointerAvailableKHR",
+          "value" : "0x0008",
+          "parameters" : [
+            { "kind" : "IdScope" }
+          ],
+          "capabilities" : [ "VulkanMemoryModel" ],
+          "extensions" : [ "SPV_KHR_vulkan_memory_model" ],
+          "version" : "1.5"
+        },
+        {
+          "enumerant" : "MakePointerVisible",
+          "value" : "0x0010",
+          "parameters" : [
+            { "kind" : "IdScope" }
+          ],
+          "capabilities" : [ "VulkanMemoryModel" ],
+          "version" : "1.5"
+        },
+        {
+          "enumerant" : "MakePointerVisibleKHR",
+          "value" : "0x0010",
+          "parameters" : [
+            { "kind" : "IdScope" }
+          ],
+          "capabilities" : [ "VulkanMemoryModel" ],
+          "extensions" : [ "SPV_KHR_vulkan_memory_model" ],
+          "version" : "1.5"
+        },
+        {
+          "enumerant" : "NonPrivatePointer",
+          "value" : "0x0020",
+          "capabilities" : [ "VulkanMemoryModel" ],
+          "version" : "1.5"
+        },
+        {
+          "enumerant" : "NonPrivatePointerKHR",
+          "value" : "0x0020",
+          "capabilities" : [ "VulkanMemoryModel" ],
+          "extensions" : [ "SPV_KHR_vulkan_memory_model" ],
+          "version" : "1.5"
+        }
+      ]
+    },
+    {
+      "category" : "BitEnum",
+      "kind" : "KernelProfilingInfo",
+      "enumerants" : [
+        {
+          "enumerant" : "None",
+          "value" : "0x0000"
+        },
+        {
+          "enumerant" : "CmdExecTime",
+          "value" : "0x0001",
+          "capabilities" : [ "Kernel" ]
+        }
+      ]
+    },
+    {
+      "category" : "BitEnum",
+      "kind" : "RayFlags",
+      "enumerants" : [
+        {
+          "enumerant" : "NoneKHR",
+          "value" : "0x0000",
+          "capabilities" : [ "RayQueryProvisionalKHR","RayTracingProvisionalKHR" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "OpaqueKHR",
+          "value" : "0x0001",
+          "capabilities" : [ "RayQueryProvisionalKHR","RayTracingProvisionalKHR" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "NoOpaqueKHR",
+          "value" : "0x0002",
+          "capabilities" : [ "RayQueryProvisionalKHR","RayTracingProvisionalKHR" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "TerminateOnFirstHitKHR",
+          "value" : "0x0004",
+          "capabilities" : [ "RayQueryProvisionalKHR","RayTracingProvisionalKHR" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "SkipClosestHitShaderKHR",
+          "value" : "0x0008",
+          "capabilities" : [ "RayQueryProvisionalKHR","RayTracingProvisionalKHR" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "CullBackFacingTrianglesKHR",
+          "value" : "0x0010",
+          "capabilities" : [ "RayQueryProvisionalKHR","RayTracingProvisionalKHR" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "CullFrontFacingTrianglesKHR",
+          "value" : "0x0020",
+          "capabilities" : [ "RayQueryProvisionalKHR","RayTracingProvisionalKHR" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "CullOpaqueKHR",
+          "value" : "0x0040",
+          "capabilities" : [ "RayQueryProvisionalKHR","RayTracingProvisionalKHR" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "CullNoOpaqueKHR",
+          "value" : "0x0080",
+          "capabilities" : [ "RayQueryProvisionalKHR","RayTracingProvisionalKHR" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "SkipTrianglesKHR",
+          "value" : "0x0100",
+          "capabilities" : [ "RayTraversalPrimitiveCullingProvisionalKHR" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "SkipAABBsKHR",
+          "value" : "0x0200",
+          "capabilities" : [ "RayTraversalPrimitiveCullingProvisionalKHR" ],
+          "version" : "None"
+        }
+      ]
+    },
+    {
+      "category" : "BitEnum",
+      "kind" : "FragmentShadingRate",
+      "enumerants" : [
+        {
+          "enumerant" : "Vertical2Pixels",
+          "value" : "0x0001",
+          "capabilities" : [ "FragmentShadingRateKHR" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "Vertical4Pixels",
+          "value" : "0x0002",
+          "capabilities" : [ "FragmentShadingRateKHR" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "Horizontal2Pixels",
+          "value" : "0x0004",
+          "capabilities" : [ "FragmentShadingRateKHR" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "Horizontal4Pixels",
+          "value" : "0x0008",
+          "capabilities" : [ "FragmentShadingRateKHR" ],
+          "version" : "None"
+        }
+      ]
+    },
+    {
+      "category" : "ValueEnum",
+      "kind" : "SourceLanguage",
+      "enumerants" : [
+        {
+          "enumerant" : "Unknown",
+          "value" : 0
+        },
+        {
+          "enumerant" : "ESSL",
+          "value" : 1
+        },
+        {
+          "enumerant" : "GLSL",
+          "value" : 2
+        },
+        {
+          "enumerant" : "OpenCL_C",
+          "value" : 3
+        },
+        {
+          "enumerant" : "OpenCL_CPP",
+          "value" : 4
+        },
+        {
+          "enumerant" : "HLSL",
+          "value" : 5
+        }
+      ]
+    },
+    {
+      "category" : "ValueEnum",
+      "kind" : "ExecutionModel",
+      "enumerants" : [
+        {
+          "enumerant" : "Vertex",
+          "value" : 0,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "TessellationControl",
+          "value" : 1,
+          "capabilities" : [ "Tessellation" ]
+        },
+        {
+          "enumerant" : "TessellationEvaluation",
+          "value" : 2,
+          "capabilities" : [ "Tessellation" ]
+        },
+        {
+          "enumerant" : "Geometry",
+          "value" : 3,
+          "capabilities" : [ "Geometry" ]
+        },
+        {
+          "enumerant" : "Fragment",
+          "value" : 4,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "GLCompute",
+          "value" : 5,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "Kernel",
+          "value" : 6,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "TaskNV",
+          "value" : 5267,
+          "capabilities" : [ "MeshShadingNV" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "MeshNV",
+          "value" : 5268,
+          "capabilities" : [ "MeshShadingNV" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "RayGenerationNV",
+          "value" : 5313,
+          "capabilities" : [ "RayTracingNV" , "RayTracingProvisionalKHR" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "RayGenerationKHR",
+          "value" : 5313,
+          "capabilities" : [ "RayTracingNV" , "RayTracingProvisionalKHR" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "IntersectionNV",
+          "value" : 5314,
+          "capabilities" : [ "RayTracingNV" , "RayTracingProvisionalKHR" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "IntersectionKHR",
+          "value" : 5314,
+          "capabilities" : [ "RayTracingNV" , "RayTracingProvisionalKHR" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "AnyHitNV",
+          "value" : 5315,
+          "capabilities" : [ "RayTracingNV" , "RayTracingProvisionalKHR" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "AnyHitKHR",
+          "value" : 5315,
+          "capabilities" : [ "RayTracingNV" , "RayTracingProvisionalKHR" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "ClosestHitNV",
+          "value" : 5316,
+          "capabilities" : [ "RayTracingNV" , "RayTracingProvisionalKHR" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "ClosestHitKHR",
+          "value" : 5316,
+          "capabilities" : [ "RayTracingNV" , "RayTracingProvisionalKHR" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "MissNV",
+          "value" : 5317,
+          "capabilities" : [ "RayTracingNV" , "RayTracingProvisionalKHR" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "MissKHR",
+          "value" : 5317,
+          "capabilities" : [ "RayTracingNV" , "RayTracingProvisionalKHR" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "CallableNV",
+          "value" : 5318,
+          "capabilities" : [ "RayTracingNV" , "RayTracingProvisionalKHR" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "CallableKHR",
+          "value" : 5318,
+          "capabilities" : [ "RayTracingNV" , "RayTracingProvisionalKHR" ],
+          "version" : "None"
+        }
+      ]
+    },
+    {
+      "category" : "ValueEnum",
+      "kind" : "AddressingModel",
+      "enumerants" : [
+        {
+          "enumerant" : "Logical",
+          "value" : 0
+        },
+        {
+          "enumerant" : "Physical32",
+          "value" : 1,
+          "capabilities" : [ "Addresses" ]
+        },
+        {
+          "enumerant" : "Physical64",
+          "value" : 2,
+          "capabilities" : [ "Addresses" ]
+        },
+        {
+          "enumerant" : "PhysicalStorageBuffer64",
+          "value" : 5348,
+          "extensions" : [ "SPV_EXT_physical_storage_buffer", "SPV_KHR_physical_storage_buffer" ],
+          "capabilities" : [ "PhysicalStorageBufferAddresses" ],
+          "version" : "1.5"
+        },
+        {
+          "enumerant" : "PhysicalStorageBuffer64EXT",
+          "value" : 5348,
+          "extensions" : [ "SPV_EXT_physical_storage_buffer" ],
+          "capabilities" : [ "PhysicalStorageBufferAddresses" ],
+          "version" : "1.5"
+        }
+      ]
+    },
+    {
+      "category" : "ValueEnum",
+      "kind" : "MemoryModel",
+      "enumerants" : [
+        {
+          "enumerant" : "Simple",
+          "value" : 0,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "GLSL450",
+          "value" : 1,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "OpenCL",
+          "value" : 2,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "Vulkan",
+          "value" : 3,
+          "capabilities" : [ "VulkanMemoryModel" ],
+          "version" : "1.5"
+        },
+        {
+          "enumerant" : "VulkanKHR",
+          "value" : 3,
+          "capabilities" : [ "VulkanMemoryModel" ],
+          "extensions" : [ "SPV_KHR_vulkan_memory_model" ],
+          "version" : "1.5"
+        }
+      ]
+    },
+    {
+      "category" : "ValueEnum",
+      "kind" : "ExecutionMode",
+      "enumerants" : [
+        {
+          "enumerant" : "Invocations",
+          "value" : 0,
+          "capabilities" : [ "Geometry" ],
+          "parameters" : [
+            { "kind" : "LiteralInteger", "name" : "'Number of <<Invocation,invocations>>'" }
+          ]
+        },
+        {
+          "enumerant" : "SpacingEqual",
+          "value" : 1,
+          "capabilities" : [ "Tessellation" ]
+        },
+        {
+          "enumerant" : "SpacingFractionalEven",
+          "value" : 2,
+          "capabilities" : [ "Tessellation" ]
+        },
+        {
+          "enumerant" : "SpacingFractionalOdd",
+          "value" : 3,
+          "capabilities" : [ "Tessellation" ]
+        },
+        {
+          "enumerant" : "VertexOrderCw",
+          "value" : 4,
+          "capabilities" : [ "Tessellation" ]
+        },
+        {
+          "enumerant" : "VertexOrderCcw",
+          "value" : 5,
+          "capabilities" : [ "Tessellation" ]
+        },
+        {
+          "enumerant" : "PixelCenterInteger",
+          "value" : 6,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "OriginUpperLeft",
+          "value" : 7,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "OriginLowerLeft",
+          "value" : 8,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "EarlyFragmentTests",
+          "value" : 9,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "PointMode",
+          "value" : 10,
+          "capabilities" : [ "Tessellation" ]
+        },
+        {
+          "enumerant" : "Xfb",
+          "value" : 11,
+          "capabilities" : [ "TransformFeedback" ]
+        },
+        {
+          "enumerant" : "DepthReplacing",
+          "value" : 12,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "DepthGreater",
+          "value" : 14,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "DepthLess",
+          "value" : 15,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "DepthUnchanged",
+          "value" : 16,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "LocalSize",
+          "value" : 17,
+          "parameters" : [
+            { "kind" : "LiteralInteger", "name" : "'x size'" },
+            { "kind" : "LiteralInteger", "name" : "'y size'" },
+            { "kind" : "LiteralInteger", "name" : "'z size'" }
+          ]
+        },
+        {
+          "enumerant" : "LocalSizeHint",
+          "value" : 18,
+          "capabilities" : [ "Kernel" ],
+          "parameters" : [
+            { "kind" : "LiteralInteger", "name" : "'x size'" },
+            { "kind" : "LiteralInteger", "name" : "'y size'" },
+            { "kind" : "LiteralInteger", "name" : "'z size'" }
+          ]
+        },
+        {
+          "enumerant" : "InputPoints",
+          "value" : 19,
+          "capabilities" : [ "Geometry" ]
+        },
+        {
+          "enumerant" : "InputLines",
+          "value" : 20,
+          "capabilities" : [ "Geometry" ]
+        },
+        {
+          "enumerant" : "InputLinesAdjacency",
+          "value" : 21,
+          "capabilities" : [ "Geometry" ]
+        },
+        {
+          "enumerant" : "Triangles",
+          "value" : 22,
+          "capabilities" : [ "Geometry", "Tessellation" ]
+        },
+        {
+          "enumerant" : "InputTrianglesAdjacency",
+          "value" : 23,
+          "capabilities" : [ "Geometry" ]
+        },
+        {
+          "enumerant" : "Quads",
+          "value" : 24,
+          "capabilities" : [ "Tessellation" ]
+        },
+        {
+          "enumerant" : "Isolines",
+          "value" : 25,
+          "capabilities" : [ "Tessellation" ]
+        },
+        {
+          "enumerant" : "OutputVertices",
+          "value" : 26,
+          "capabilities" : [ "Geometry", "Tessellation", "MeshShadingNV" ],
+          "parameters" : [
+            { "kind" : "LiteralInteger", "name" : "'Vertex count'" }
+          ]
+        },
+        {
+          "enumerant" : "OutputPoints",
+          "value" : 27,
+          "capabilities" : [ "Geometry", "MeshShadingNV" ]
+        },
+        {
+          "enumerant" : "OutputLineStrip",
+          "value" : 28,
+          "capabilities" : [ "Geometry" ]
+        },
+        {
+          "enumerant" : "OutputTriangleStrip",
+          "value" : 29,
+          "capabilities" : [ "Geometry" ]
+        },
+        {
+          "enumerant" : "VecTypeHint",
+          "value" : 30,
+          "capabilities" : [ "Kernel" ],
+          "parameters" : [
+            { "kind" : "LiteralInteger", "name" : "'Vector type'" }
+          ]
+        },
+        {
+          "enumerant" : "ContractionOff",
+          "value" : 31,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "Initializer",
+          "value" : 33,
+          "capabilities" : [ "Kernel" ],
+          "version" : "1.1"
+        },
+        {
+          "enumerant" : "Finalizer",
+          "value" : 34,
+          "capabilities" : [ "Kernel" ],
+          "version" : "1.1"
+        },
+        {
+          "enumerant" : "SubgroupSize",
+          "value" : 35,
+          "capabilities" : [ "SubgroupDispatch" ],
+          "parameters" : [
+            { "kind" : "LiteralInteger", "name" : "'Subgroup Size'" }
+          ],
+          "version" : "1.1"
+        },
+        {
+          "enumerant" : "SubgroupsPerWorkgroup",
+          "value" : 36,
+          "capabilities" : [ "SubgroupDispatch" ],
+          "parameters" : [
+            { "kind" : "LiteralInteger", "name" : "'Subgroups Per Workgroup'" }
+          ],
+          "version" : "1.1"
+        },
+        {
+          "enumerant" : "SubgroupsPerWorkgroupId",
+          "value" : 37,
+          "capabilities" : [ "SubgroupDispatch" ],
+          "parameters" : [
+            { "kind" : "IdRef", "name" : "'Subgroups Per Workgroup'" }
+          ],
+          "version" : "1.2"
+        },
+        {
+          "enumerant" : "LocalSizeId",
+          "value" : 38,
+          "parameters" : [
+            { "kind" : "IdRef", "name" : "'x size'" },
+            { "kind" : "IdRef", "name" : "'y size'" },
+            { "kind" : "IdRef", "name" : "'z size'" }
+          ],
+          "version" : "1.2"
+        },
+        {
+          "enumerant" : "LocalSizeHintId",
+          "value" : 39,
+          "capabilities" : [ "Kernel" ],
+          "parameters" : [
+            { "kind" : "IdRef", "name" : "'Local Size Hint'" }
+          ],
+          "version" : "1.2"
+        },
+        {
+          "enumerant" : "PostDepthCoverage",
+          "value" : 4446,
+          "capabilities" : [ "SampleMaskPostDepthCoverage" ],
+          "extensions" : [ "SPV_KHR_post_depth_coverage" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "DenormPreserve",
+          "value" : 4459,
+          "capabilities" : [ "DenormPreserve" ],
+          "extensions" : [ "SPV_KHR_float_controls" ],
+          "parameters" : [
+            { "kind" : "LiteralInteger", "name" : "'Target Width'" }
+          ],
+          "version" : "1.4"
+        },
+        {
+          "enumerant" : "DenormFlushToZero",
+          "value" : 4460,
+          "capabilities" : [ "DenormFlushToZero" ],
+          "extensions" : [ "SPV_KHR_float_controls" ],
+          "parameters" : [
+            { "kind" : "LiteralInteger", "name" : "'Target Width'" }
+          ],
+          "version" : "1.4"
+        },
+        {
+          "enumerant" : "SignedZeroInfNanPreserve",
+          "value" : 4461,
+          "capabilities" : [ "SignedZeroInfNanPreserve" ],
+          "extensions" : [ "SPV_KHR_float_controls" ],
+          "parameters" : [
+            { "kind" : "LiteralInteger", "name" : "'Target Width'" }
+          ],
+          "version" : "1.4"
+        },
+        {
+          "enumerant" : "RoundingModeRTE",
+          "value" : 4462,
+          "capabilities" : [ "RoundingModeRTE" ],
+          "extensions" : [ "SPV_KHR_float_controls" ],
+          "parameters" : [
+            { "kind" : "LiteralInteger", "name" : "'Target Width'" }
+          ],
+          "version" : "1.4"
+        },
+        {
+          "enumerant" : "RoundingModeRTZ",
+          "value" : 4463,
+          "capabilities" : [ "RoundingModeRTZ" ],
+          "extensions" : [ "SPV_KHR_float_controls" ],
+          "parameters" : [
+            { "kind" : "LiteralInteger", "name" : "'Target Width'" }
+          ],
+          "version" : "1.4"
+        },
+        {
+          "enumerant" : "StencilRefReplacingEXT",
+          "value" : 5027,
+          "capabilities" : [ "StencilExportEXT" ],
+          "extensions" : [ "SPV_EXT_shader_stencil_export" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "OutputLinesNV",
+          "value" : 5269,
+          "capabilities" : [ "MeshShadingNV" ],
+          "extensions" : [ "SPV_NV_mesh_shader" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "OutputPrimitivesNV",
+          "value" : 5270,
+          "capabilities" : [ "MeshShadingNV" ],
+          "parameters" : [
+            { "kind" : "LiteralInteger", "name" : "'Primitive count'" }
+          ],
+          "extensions" : [ "SPV_NV_mesh_shader" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "DerivativeGroupQuadsNV",
+          "value" : 5289,
+          "capabilities" : [ "ComputeDerivativeGroupQuadsNV" ],
+          "extensions" : [ "SPV_NV_compute_shader_derivatives" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "DerivativeGroupLinearNV",
+          "value" : 5290,
+          "capabilities" : [ "ComputeDerivativeGroupLinearNV" ],
+          "extensions" : [ "SPV_NV_compute_shader_derivatives" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "OutputTrianglesNV",
+          "value" : 5298,
+          "capabilities" : [ "MeshShadingNV" ],
+          "extensions" : [ "SPV_NV_mesh_shader" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "PixelInterlockOrderedEXT",
+          "value" : 5366,
+          "capabilities" : [ "FragmentShaderPixelInterlockEXT" ],
+          "extensions" : [ "SPV_EXT_fragment_shader_interlock" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "PixelInterlockUnorderedEXT",
+          "value" : 5367,
+          "capabilities" : [ "FragmentShaderPixelInterlockEXT" ],
+          "extensions" : [ "SPV_EXT_fragment_shader_interlock" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "SampleInterlockOrderedEXT",
+          "value" : 5368,
+          "capabilities" : [ "FragmentShaderSampleInterlockEXT" ],
+          "extensions" : [ "SPV_EXT_fragment_shader_interlock" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "SampleInterlockUnorderedEXT",
+          "value" : 5369,
+          "capabilities" : [ "FragmentShaderSampleInterlockEXT" ],
+          "extensions" : [ "SPV_EXT_fragment_shader_interlock" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "ShadingRateInterlockOrderedEXT",
+          "value" : 5370,
+          "capabilities" : [ "FragmentShaderShadingRateInterlockEXT" ],
+          "extensions" : [ "SPV_EXT_fragment_shader_interlock" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "ShadingRateInterlockUnorderedEXT",
+          "value" : 5371,
+          "capabilities" : [ "FragmentShaderShadingRateInterlockEXT" ],
+          "extensions" : [ "SPV_EXT_fragment_shader_interlock" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "MaxWorkgroupSizeINTEL",
+          "value" : 5893,
+          "parameters" : [
+            { "kind" : "LiteralInteger", "name" : "'max_x_size'" },
+            { "kind" : "LiteralInteger", "name" : "'max_y_size'" },
+            { "kind" : "LiteralInteger", "name" : "'max_z_size'" }
+          ],
+          "capabilities" : [ "KernelAttributesINTEL" ],
+          "extensions" : [ "SPV_INTEL_kernel_attributes" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "MaxWorkDimINTEL",
+          "value" : 5894,
+          "parameters" : [
+            { "kind" : "LiteralInteger", "name" : "'max_dimensions'" }
+          ],
+          "capabilities" : [ "KernelAttributesINTEL" ],
+          "extensions" : [ "SPV_INTEL_kernel_attributes" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "NoGlobalOffsetINTEL",
+          "value" : 5895,
+          "capabilities" : [ "KernelAttributesINTEL" ],
+          "extensions" : [ "SPV_INTEL_kernel_attributes" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "NumSIMDWorkitemsINTEL",
+          "value" : 5896,
+          "parameters" : [
+            { "kind" : "LiteralInteger", "name" : "'vector_width'" }
+          ],
+          "capabilities" : [ "FPGAKernelAttributesINTEL" ],
+          "extensions" : [ "SPV_INTEL_kernel_attributes" ],
+          "version" : "None"
+        }
+      ]
+    },
+    {
+      "category" : "ValueEnum",
+      "kind" : "StorageClass",
+      "enumerants" : [
+        {
+          "enumerant" : "UniformConstant",
+          "value" : 0
+        },
+        {
+          "enumerant" : "Input",
+          "value" : 1
+        },
+        {
+          "enumerant" : "Uniform",
+          "value" : 2,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "Output",
+          "value" : 3,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "Workgroup",
+          "value" : 4
+        },
+        {
+          "enumerant" : "CrossWorkgroup",
+          "value" : 5
+        },
+        {
+          "enumerant" : "Private",
+          "value" : 6,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "Function",
+          "value" : 7
+        },
+        {
+          "enumerant" : "Generic",
+          "value" : 8,
+          "capabilities" : [ "GenericPointer" ]
+        },
+        {
+          "enumerant" : "PushConstant",
+          "value" : 9,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "AtomicCounter",
+          "value" : 10,
+          "capabilities" : [ "AtomicStorage" ]
+        },
+        {
+          "enumerant" : "Image",
+          "value" : 11
+        },
+        {
+          "enumerant" : "StorageBuffer",
+          "value" : 12,
+          "extensions" : [
+            "SPV_KHR_storage_buffer_storage_class",
+            "SPV_KHR_variable_pointers"
+          ],
+          "capabilities" : [ "Shader" ],
+          "version" : "1.3"
+        },
+        {
+          "enumerant" : "CallableDataNV",
+          "value" : 5328,
+          "extensions" : [ "SPV_NV_ray_tracing" , "SPV_KHR_ray_tracing" ],
+          "capabilities" : [ "RayTracingNV" , "RayTracingProvisionalKHR" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "CallableDataKHR",
+          "value" : 5328,
+          "extensions" : [ "SPV_NV_ray_tracing" , "SPV_KHR_ray_tracing" ],
+          "capabilities" : [ "RayTracingNV" , "RayTracingProvisionalKHR" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "IncomingCallableDataNV",
+          "value" : 5329,
+          "extensions" : [ "SPV_NV_ray_tracing" , "SPV_KHR_ray_tracing" ],
+          "capabilities" : [ "RayTracingNV" , "RayTracingProvisionalKHR" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "IncomingCallableDataKHR",
+          "value" : 5329,
+          "extensions" : [ "SPV_NV_ray_tracing" , "SPV_KHR_ray_tracing" ],
+          "capabilities" : [ "RayTracingNV" , "RayTracingProvisionalKHR" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "RayPayloadNV",
+          "value" : 5338,
+          "extensions" : [ "SPV_NV_ray_tracing" , "SPV_KHR_ray_tracing" ],
+          "capabilities" : [ "RayTracingNV" , "RayTracingProvisionalKHR" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "RayPayloadKHR",
+          "value" : 5338,
+          "extensions" : [ "SPV_NV_ray_tracing" , "SPV_KHR_ray_tracing" ],
+          "capabilities" : [ "RayTracingNV" , "RayTracingProvisionalKHR" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "HitAttributeNV",
+          "value" : 5339,
+          "extensions" : [ "SPV_NV_ray_tracing" , "SPV_KHR_ray_tracing" ],
+          "capabilities" : [ "RayTracingNV" , "RayTracingProvisionalKHR" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "HitAttributeKHR",
+          "value" : 5339,
+          "extensions" : [ "SPV_NV_ray_tracing" , "SPV_KHR_ray_tracing" ],
+          "capabilities" : [ "RayTracingNV" , "RayTracingProvisionalKHR" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "IncomingRayPayloadNV",
+          "value" : 5342,
+          "extensions" : [ "SPV_NV_ray_tracing" , "SPV_KHR_ray_tracing" ],
+          "capabilities" : [ "RayTracingNV" , "RayTracingProvisionalKHR" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "IncomingRayPayloadKHR",
+          "value" : 5342,
+          "extensions" : [ "SPV_NV_ray_tracing" , "SPV_KHR_ray_tracing" ],
+          "capabilities" : [ "RayTracingNV" , "RayTracingProvisionalKHR" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "ShaderRecordBufferNV",
+          "value" : 5343,
+          "extensions" : [ "SPV_NV_ray_tracing" , "SPV_KHR_ray_tracing" ],
+          "capabilities" : [ "RayTracingNV" , "RayTracingProvisionalKHR" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "ShaderRecordBufferKHR",
+          "value" : 5343,
+          "extensions" : [ "SPV_NV_ray_tracing" , "SPV_KHR_ray_tracing" ],
+          "capabilities" : [ "RayTracingNV" , "RayTracingProvisionalKHR" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "PhysicalStorageBuffer",
+          "value" : 5349,
+          "extensions" : [ "SPV_EXT_physical_storage_buffer", "SPV_KHR_physical_storage_buffer" ],
+          "capabilities" : [ "PhysicalStorageBufferAddresses" ],
+          "version" : "1.5"
+        },
+        {
+          "enumerant" : "PhysicalStorageBufferEXT",
+          "value" : 5349,
+          "extensions" : [ "SPV_EXT_physical_storage_buffer" ],
+          "capabilities" : [ "PhysicalStorageBufferAddresses" ],
+          "version" : "1.5"
+        },
+        {
+          "enumerant" : "CodeSectionINTEL",
+          "value" : 5605,
+          "extensions" : [ "SPV_INTEL_function_pointers" ],
+          "capabilities" : [ "FunctionPointersINTEL" ],
+          "version" : "None"
+        }
+      ]
+    },
+    {
+      "category" : "ValueEnum",
+      "kind" : "Dim",
+      "enumerants" : [
+        {
+          "enumerant" : "1D",
+          "value" : 0,
+          "capabilities" : [ "Sampled1D", "Image1D" ]
+        },
+        {
+          "enumerant" : "2D",
+          "value" : 1,
+          "capabilities" : [ "Shader", "Kernel", "ImageMSArray" ]
+        },
+        {
+          "enumerant" : "3D",
+          "value" : 2
+        },
+        {
+          "enumerant" : "Cube",
+          "value" : 3,
+          "capabilities" : [ "Shader", "ImageCubeArray" ]
+        },
+        {
+          "enumerant" : "Rect",
+          "value" : 4,
+          "capabilities" : [ "SampledRect", "ImageRect" ]
+        },
+        {
+          "enumerant" : "Buffer",
+          "value" : 5,
+          "capabilities" : [ "SampledBuffer", "ImageBuffer" ]
+        },
+        {
+          "enumerant" : "SubpassData",
+          "value" : 6,
+          "capabilities" : [ "InputAttachment" ]
+        }
+      ]
+    },
+    {
+      "category" : "ValueEnum",
+      "kind" : "SamplerAddressingMode",
+      "enumerants" : [
+        {
+          "enumerant" : "None",
+          "value" : 0,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "ClampToEdge",
+          "value" : 1,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "Clamp",
+          "value" : 2,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "Repeat",
+          "value" : 3,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "RepeatMirrored",
+          "value" : 4,
+          "capabilities" : [ "Kernel" ]
+        }
+      ]
+    },
+    {
+      "category" : "ValueEnum",
+      "kind" : "SamplerFilterMode",
+      "enumerants" : [
+        {
+          "enumerant" : "Nearest",
+          "value" : 0,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "Linear",
+          "value" : 1,
+          "capabilities" : [ "Kernel" ]
+        }
+      ]
+    },
+    {
+      "category" : "ValueEnum",
+      "kind" : "ImageFormat",
+      "enumerants" : [
+        {
+          "enumerant" : "Unknown",
+          "value" : 0
+        },
+        {
+          "enumerant" : "Rgba32f",
+          "value" : 1,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "Rgba16f",
+          "value" : 2,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "R32f",
+          "value" : 3,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "Rgba8",
+          "value" : 4,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "Rgba8Snorm",
+          "value" : 5,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "Rg32f",
+          "value" : 6,
+          "capabilities" : [ "StorageImageExtendedFormats" ]
+        },
+        {
+          "enumerant" : "Rg16f",
+          "value" : 7,
+          "capabilities" : [ "StorageImageExtendedFormats" ]
+        },
+        {
+          "enumerant" : "R11fG11fB10f",
+          "value" : 8,
+          "capabilities" : [ "StorageImageExtendedFormats" ]
+        },
+        {
+          "enumerant" : "R16f",
+          "value" : 9,
+          "capabilities" : [ "StorageImageExtendedFormats" ]
+        },
+        {
+          "enumerant" : "Rgba16",
+          "value" : 10,
+          "capabilities" : [ "StorageImageExtendedFormats" ]
+        },
+        {
+          "enumerant" : "Rgb10A2",
+          "value" : 11,
+          "capabilities" : [ "StorageImageExtendedFormats" ]
+        },
+        {
+          "enumerant" : "Rg16",
+          "value" : 12,
+          "capabilities" : [ "StorageImageExtendedFormats" ]
+        },
+        {
+          "enumerant" : "Rg8",
+          "value" : 13,
+          "capabilities" : [ "StorageImageExtendedFormats" ]
+        },
+        {
+          "enumerant" : "R16",
+          "value" : 14,
+          "capabilities" : [ "StorageImageExtendedFormats" ]
+        },
+        {
+          "enumerant" : "R8",
+          "value" : 15,
+          "capabilities" : [ "StorageImageExtendedFormats" ]
+        },
+        {
+          "enumerant" : "Rgba16Snorm",
+          "value" : 16,
+          "capabilities" : [ "StorageImageExtendedFormats" ]
+        },
+        {
+          "enumerant" : "Rg16Snorm",
+          "value" : 17,
+          "capabilities" : [ "StorageImageExtendedFormats" ]
+        },
+        {
+          "enumerant" : "Rg8Snorm",
+          "value" : 18,
+          "capabilities" : [ "StorageImageExtendedFormats" ]
+        },
+        {
+          "enumerant" : "R16Snorm",
+          "value" : 19,
+          "capabilities" : [ "StorageImageExtendedFormats" ]
+        },
+        {
+          "enumerant" : "R8Snorm",
+          "value" : 20,
+          "capabilities" : [ "StorageImageExtendedFormats" ]
+        },
+        {
+          "enumerant" : "Rgba32i",
+          "value" : 21,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "Rgba16i",
+          "value" : 22,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "Rgba8i",
+          "value" : 23,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "R32i",
+          "value" : 24,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "Rg32i",
+          "value" : 25,
+          "capabilities" : [ "StorageImageExtendedFormats" ]
+        },
+        {
+          "enumerant" : "Rg16i",
+          "value" : 26,
+          "capabilities" : [ "StorageImageExtendedFormats" ]
+        },
+        {
+          "enumerant" : "Rg8i",
+          "value" : 27,
+          "capabilities" : [ "StorageImageExtendedFormats" ]
+        },
+        {
+          "enumerant" : "R16i",
+          "value" : 28,
+          "capabilities" : [ "StorageImageExtendedFormats" ]
+        },
+        {
+          "enumerant" : "R8i",
+          "value" : 29,
+          "capabilities" : [ "StorageImageExtendedFormats" ]
+        },
+        {
+          "enumerant" : "Rgba32ui",
+          "value" : 30,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "Rgba16ui",
+          "value" : 31,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "Rgba8ui",
+          "value" : 32,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "R32ui",
+          "value" : 33,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "Rgb10a2ui",
+          "value" : 34,
+          "capabilities" : [ "StorageImageExtendedFormats" ]
+        },
+        {
+          "enumerant" : "Rg32ui",
+          "value" : 35,
+          "capabilities" : [ "StorageImageExtendedFormats" ]
+        },
+        {
+          "enumerant" : "Rg16ui",
+          "value" : 36,
+          "capabilities" : [ "StorageImageExtendedFormats" ]
+        },
+        {
+          "enumerant" : "Rg8ui",
+          "value" : 37,
+          "capabilities" : [ "StorageImageExtendedFormats" ]
+        },
+        {
+          "enumerant" : "R16ui",
+          "value" : 38,
+          "capabilities" : [ "StorageImageExtendedFormats" ]
+        },
+        {
+          "enumerant" : "R8ui",
+          "value" : 39,
+          "capabilities" : [ "StorageImageExtendedFormats" ]
+        },
+	{
+          "enumerant" : "R64ui",
+          "value" : 40,
+          "capabilities" : [ "Int64ImageEXT" ]
+        },
+        {
+          "enumerant" : "R64i",
+          "value" : 41,
+          "capabilities" : [ "Int64ImageEXT" ]
+        }
+      ]
+    },
+    {
+      "category" : "ValueEnum",
+      "kind" : "ImageChannelOrder",
+      "enumerants" : [
+        {
+          "enumerant" : "R",
+          "value" : 0,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "A",
+          "value" : 1,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "RG",
+          "value" : 2,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "RA",
+          "value" : 3,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "RGB",
+          "value" : 4,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "RGBA",
+          "value" : 5,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "BGRA",
+          "value" : 6,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "ARGB",
+          "value" : 7,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "Intensity",
+          "value" : 8,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "Luminance",
+          "value" : 9,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "Rx",
+          "value" : 10,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "RGx",
+          "value" : 11,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "RGBx",
+          "value" : 12,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "Depth",
+          "value" : 13,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "DepthStencil",
+          "value" : 14,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "sRGB",
+          "value" : 15,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "sRGBx",
+          "value" : 16,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "sRGBA",
+          "value" : 17,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "sBGRA",
+          "value" : 18,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "ABGR",
+          "value" : 19,
+          "capabilities" : [ "Kernel" ]
+        }
+      ]
+    },
+    {
+      "category" : "ValueEnum",
+      "kind" : "ImageChannelDataType",
+      "enumerants" : [
+        {
+          "enumerant" : "SnormInt8",
+          "value" : 0,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "SnormInt16",
+          "value" : 1,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "UnormInt8",
+          "value" : 2,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "UnormInt16",
+          "value" : 3,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "UnormShort565",
+          "value" : 4,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "UnormShort555",
+          "value" : 5,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "UnormInt101010",
+          "value" : 6,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "SignedInt8",
+          "value" : 7,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "SignedInt16",
+          "value" : 8,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "SignedInt32",
+          "value" : 9,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "UnsignedInt8",
+          "value" : 10,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "UnsignedInt16",
+          "value" : 11,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "UnsignedInt32",
+          "value" : 12,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "HalfFloat",
+          "value" : 13,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "Float",
+          "value" : 14,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "UnormInt24",
+          "value" : 15,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "UnormInt101010_2",
+          "value" : 16,
+          "capabilities" : [ "Kernel" ]
+        }
+      ]
+    },
+    {
+      "category" : "ValueEnum",
+      "kind" : "FPRoundingMode",
+      "enumerants" : [
+        {
+          "enumerant" : "RTE",
+          "value" : 0
+        },
+        {
+          "enumerant" : "RTZ",
+          "value" : 1
+        },
+        {
+          "enumerant" : "RTP",
+          "value" : 2
+        },
+        {
+          "enumerant" : "RTN",
+          "value" : 3
+        }
+      ]
+    },
+    {
+      "category" : "ValueEnum",
+      "kind" : "LinkageType",
+      "enumerants" : [
+        {
+          "enumerant" : "Export",
+          "value" : 0,
+          "capabilities" : [ "Linkage" ]
+        },
+        {
+          "enumerant" : "Import",
+          "value" : 1,
+          "capabilities" : [ "Linkage" ]
+        }
+      ]
+    },
+    {
+      "category" : "ValueEnum",
+      "kind" : "AccessQualifier",
+      "enumerants" : [
+        {
+          "enumerant" : "ReadOnly",
+          "value" : 0,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "WriteOnly",
+          "value" : 1,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "ReadWrite",
+          "value" : 2,
+          "capabilities" : [ "Kernel" ]
+        }
+      ]
+    },
+    {
+      "category" : "ValueEnum",
+      "kind" : "FunctionParameterAttribute",
+      "enumerants" : [
+        {
+          "enumerant" : "Zext",
+          "value" : 0,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "Sext",
+          "value" : 1,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "ByVal",
+          "value" : 2,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "Sret",
+          "value" : 3,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "NoAlias",
+          "value" : 4,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "NoCapture",
+          "value" : 5,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "NoWrite",
+          "value" : 6,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "NoReadWrite",
+          "value" : 7,
+          "capabilities" : [ "Kernel" ]
+        }
+      ]
+    },
+    {
+      "category" : "ValueEnum",
+      "kind" : "Decoration",
+      "enumerants" : [
+        {
+          "enumerant" : "RelaxedPrecision",
+          "value" : 0,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "SpecId",
+          "value" : 1,
+          "capabilities" : [ "Shader", "Kernel" ],
+          "parameters" : [
+            { "kind" : "LiteralInteger", "name" : "'Specialization Constant ID'" }
+          ]
+        },
+        {
+          "enumerant" : "Block",
+          "value" : 2,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "BufferBlock",
+          "value" : 3,
+          "capabilities" : [ "Shader" ],
+          "lastVersion" : "1.3"
+        },
+        {
+          "enumerant" : "RowMajor",
+          "value" : 4,
+          "capabilities" : [ "Matrix" ]
+        },
+        {
+          "enumerant" : "ColMajor",
+          "value" : 5,
+          "capabilities" : [ "Matrix" ]
+        },
+        {
+          "enumerant" : "ArrayStride",
+          "value" : 6,
+          "capabilities" : [ "Shader" ],
+          "parameters" : [
+            { "kind" : "LiteralInteger", "name" : "'Array Stride'" }
+          ]
+        },
+        {
+          "enumerant" : "MatrixStride",
+          "value" : 7,
+          "capabilities" : [ "Matrix" ],
+          "parameters" : [
+            { "kind" : "LiteralInteger", "name" : "'Matrix Stride'" }
+          ]
+        },
+        {
+          "enumerant" : "GLSLShared",
+          "value" : 8,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "GLSLPacked",
+          "value" : 9,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "CPacked",
+          "value" : 10,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "BuiltIn",
+          "value" : 11,
+          "parameters" : [
+            { "kind" : "BuiltIn" }
+          ]
+        },
+        {
+          "enumerant" : "NoPerspective",
+          "value" : 13,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "Flat",
+          "value" : 14,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "Patch",
+          "value" : 15,
+          "capabilities" : [ "Tessellation" ]
+        },
+        {
+          "enumerant" : "Centroid",
+          "value" : 16,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "Sample",
+          "value" : 17,
+          "capabilities" : [ "SampleRateShading" ]
+        },
+        {
+          "enumerant" : "Invariant",
+          "value" : 18,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "Restrict",
+          "value" : 19
+        },
+        {
+          "enumerant" : "Aliased",
+          "value" : 20
+        },
+        {
+          "enumerant" : "Volatile",
+          "value" : 21
+        },
+        {
+          "enumerant" : "Constant",
+          "value" : 22,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "Coherent",
+          "value" : 23
+        },
+        {
+          "enumerant" : "NonWritable",
+          "value" : 24
+        },
+        {
+          "enumerant" : "NonReadable",
+          "value" : 25
+        },
+        {
+          "enumerant" : "Uniform",
+          "value" : 26,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "UniformId",
+          "value" : 27,
+          "capabilities" : [ "Shader" ],
+          "parameters" : [
+            { "kind" : "IdScope",           "name" : "'Execution'" }
+          ],
+          "version" : "1.4"
+        },
+        {
+          "enumerant" : "SaturatedConversion",
+          "value" : 28,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "Stream",
+          "value" : 29,
+          "capabilities" : [ "GeometryStreams" ],
+          "parameters" : [
+            { "kind" : "LiteralInteger", "name" : "'Stream Number'" }
+          ]
+        },
+        {
+          "enumerant" : "Location",
+          "value" : 30,
+          "capabilities" : [ "Shader" ],
+          "parameters" : [
+            { "kind" : "LiteralInteger", "name" : "'Location'" }
+          ]
+        },
+        {
+          "enumerant" : "Component",
+          "value" : 31,
+          "capabilities" : [ "Shader" ],
+          "parameters" : [
+            { "kind" : "LiteralInteger", "name" : "'Component'" }
+          ]
+        },
+        {
+          "enumerant" : "Index",
+          "value" : 32,
+          "capabilities" : [ "Shader" ],
+          "parameters" : [
+            { "kind" : "LiteralInteger", "name" : "'Index'" }
+          ]
+        },
+        {
+          "enumerant" : "Binding",
+          "value" : 33,
+          "capabilities" : [ "Shader" ],
+          "parameters" : [
+            { "kind" : "LiteralInteger", "name" : "'Binding Point'" }
+          ]
+        },
+        {
+          "enumerant" : "DescriptorSet",
+          "value" : 34,
+          "capabilities" : [ "Shader" ],
+          "parameters" : [
+            { "kind" : "LiteralInteger", "name" : "'Descriptor Set'" }
+          ]
+        },
+        {
+          "enumerant" : "Offset",
+          "value" : 35,
+          "capabilities" : [ "Shader" ],
+          "parameters" : [
+            { "kind" : "LiteralInteger", "name" : "'Byte Offset'" }
+          ]
+        },
+        {
+          "enumerant" : "XfbBuffer",
+          "value" : 36,
+          "capabilities" : [ "TransformFeedback" ],
+          "parameters" : [
+            { "kind" : "LiteralInteger", "name" : "'XFB Buffer Number'" }
+          ]
+        },
+        {
+          "enumerant" : "XfbStride",
+          "value" : 37,
+          "capabilities" : [ "TransformFeedback" ],
+          "parameters" : [
+            { "kind" : "LiteralInteger", "name" : "'XFB Stride'" }
+          ]
+        },
+        {
+          "enumerant" : "FuncParamAttr",
+          "value" : 38,
+          "capabilities" : [ "Kernel" ],
+          "parameters" : [
+            { "kind" : "FunctionParameterAttribute", "name" : "'Function Parameter Attribute'" }
+          ]
+        },
+        {
+          "enumerant" : "FPRoundingMode",
+          "value" : 39,
+          "parameters" : [
+            { "kind" : "FPRoundingMode", "name" : "'Floating-Point Rounding Mode'" }
+          ]
+        },
+        {
+          "enumerant" : "FPFastMathMode",
+          "value" : 40,
+          "capabilities" : [ "Kernel" ],
+          "parameters" : [
+            { "kind" : "FPFastMathMode", "name" : "'Fast-Math Mode'" }
+          ]
+        },
+        {
+          "enumerant" : "LinkageAttributes",
+          "value" : 41,
+          "capabilities" : [ "Linkage" ],
+          "parameters" : [
+            { "kind" : "LiteralString", "name" : "'Name'" },
+            { "kind" : "LinkageType",   "name" : "'Linkage Type'" }
+          ]
+        },
+        {
+          "enumerant" : "NoContraction",
+          "value" : 42,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "InputAttachmentIndex",
+          "value" : 43,
+          "capabilities" : [ "InputAttachment" ],
+          "parameters" : [
+            { "kind" : "LiteralInteger", "name" : "'Attachment Index'" }
+          ]
+        },
+        {
+          "enumerant" : "Alignment",
+          "value" : 44,
+          "capabilities" : [ "Kernel" ],
+          "parameters" : [
+            { "kind" : "LiteralInteger", "name" : "'Alignment'" }
+          ]
+        },
+        {
+          "enumerant" : "MaxByteOffset",
+          "value" : 45,
+          "capabilities" : [ "Addresses" ],
+          "parameters" : [
+            { "kind" : "LiteralInteger", "name" : "'Max Byte Offset'" }
+          ],
+          "version" : "1.1"
+        },
+        {
+          "enumerant" : "AlignmentId",
+          "value" : 46,
+          "capabilities" : [ "Kernel" ],
+          "parameters" : [
+            { "kind" : "IdRef", "name" : "'Alignment'" }
+          ],
+          "version" : "1.2"
+        },
+        {
+          "enumerant" : "MaxByteOffsetId",
+          "value" : 47,
+          "capabilities" : [ "Addresses" ],
+          "parameters" : [
+            { "kind" : "IdRef", "name" : "'Max Byte Offset'" }
+          ],
+          "version" : "1.2"
+        },
+        {
+          "enumerant" : "NoSignedWrap",
+          "value" : 4469,
+          "extensions" : [ "SPV_KHR_no_integer_wrap_decoration" ],
+          "version" : "1.4"
+        },
+        {
+          "enumerant" : "NoUnsignedWrap",
+          "value" : 4470,
+          "extensions" : [ "SPV_KHR_no_integer_wrap_decoration" ],
+          "version" : "1.4"
+        },
+        {
+          "enumerant" : "ExplicitInterpAMD",
+          "value" : 4999,
+          "extensions" : [ "SPV_AMD_shader_explicit_vertex_parameter" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "OverrideCoverageNV",
+          "value" : 5248,
+          "capabilities" : [ "SampleMaskOverrideCoverageNV" ],
+          "extensions" : [ "SPV_NV_sample_mask_override_coverage" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "PassthroughNV",
+          "value" : 5250,
+          "capabilities" : [ "GeometryShaderPassthroughNV" ],
+          "extensions" : [ "SPV_NV_geometry_shader_passthrough" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "ViewportRelativeNV",
+          "value" : 5252,
+          "capabilities" : [ "ShaderViewportMaskNV" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "SecondaryViewportRelativeNV",
+          "value" : 5256,
+          "capabilities" : [ "ShaderStereoViewNV" ],
+          "extensions" : [ "SPV_NV_stereo_view_rendering" ],
+          "version" : "None",
+          "parameters" : [
+            { "kind" : "LiteralInteger", "name" : "'Offset'" }
+          ]
+        },
+        {
+          "enumerant" : "PerPrimitiveNV",
+          "value" : 5271,
+          "capabilities" : [ "MeshShadingNV" ],
+          "extensions" : [ "SPV_NV_mesh_shader" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "PerViewNV",
+          "value" : 5272,
+          "capabilities" : [ "MeshShadingNV" ],
+          "extensions" : [ "SPV_NV_mesh_shader" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "PerTaskNV",
+          "value" : 5273,
+          "capabilities" : [ "MeshShadingNV" ],
+          "extensions" : [ "SPV_NV_mesh_shader" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "PerVertexNV",
+          "value" : 5285,
+          "capabilities" : [ "FragmentBarycentricNV" ],
+          "extensions" : [ "SPV_NV_fragment_shader_barycentric" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "NonUniform",
+          "value" : 5300,
+          "capabilities" : [ "ShaderNonUniform" ],
+          "version" : "1.5"
+        },
+        {
+          "enumerant" : "NonUniformEXT",
+          "value" : 5300,
+          "capabilities" : [ "ShaderNonUniform" ],
+          "extensions" : [ "SPV_EXT_descriptor_indexing" ],
+          "version" : "1.5"
+        },
+        {
+          "enumerant" : "RestrictPointer",
+          "value" : 5355,
+          "capabilities" : [ "PhysicalStorageBufferAddresses" ],
+          "extensions" : [ "SPV_EXT_physical_storage_buffer", "SPV_KHR_physical_storage_buffer" ],
+          "version" : "1.5"
+        },
+        {
+          "enumerant" : "RestrictPointerEXT",
+          "value" : 5355,
+          "capabilities" : [ "PhysicalStorageBufferAddresses" ],
+          "extensions" : [ "SPV_EXT_physical_storage_buffer" ],
+          "version" : "1.5"
+        },
+        {
+          "enumerant" : "AliasedPointer",
+          "value" : 5356,
+          "capabilities" : [ "PhysicalStorageBufferAddresses" ],
+          "extensions" : [ "SPV_EXT_physical_storage_buffer", "SPV_KHR_physical_storage_buffer" ],
+          "version" : "1.5"
+        },
+        {
+          "enumerant" : "AliasedPointerEXT",
+          "value" : 5356,
+          "capabilities" : [ "PhysicalStorageBufferAddresses" ],
+          "extensions" : [ "SPV_EXT_physical_storage_buffer" ],
+          "version" : "1.5"
+        },
+        {
+          "enumerant" : "ReferencedIndirectlyINTEL",
+          "value" : 5602,
+          "capabilities" : [ "IndirectReferencesINTEL" ],
+          "extensions" : [ "SPV_INTEL_function_pointers" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "CounterBuffer",
+          "value" : 5634,
+          "parameters" : [
+            { "kind" : "IdRef", "name" : "'Counter Buffer'" }
+          ],
+          "version" : "1.4"
+        },
+        {
+          "enumerant" : "HlslCounterBufferGOOGLE",
+          "value" : 5634,
+          "parameters" : [
+            { "kind" : "IdRef", "name" : "'Counter Buffer'" }
+          ],
+          "extensions" : [ "SPV_GOOGLE_hlsl_functionality1" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "UserSemantic",
+          "value" : 5635,
+          "parameters" : [
+            { "kind" : "LiteralString", "name" : "'Semantic'" }
+          ],
+          "version" : "1.4"
+        },
+        {
+          "enumerant" : "HlslSemanticGOOGLE",
+          "value" : 5635,
+          "parameters" : [
+            { "kind" : "LiteralString", "name" : "'Semantic'" }
+          ],
+          "extensions" : [ "SPV_GOOGLE_hlsl_functionality1" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "UserTypeGOOGLE",
+          "value" : 5636,
+          "parameters" : [
+            { "kind" : "LiteralString", "name" : "'User Type'" }
+          ],
+          "extensions" : [ "SPV_GOOGLE_user_type" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "RegisterINTEL",
+          "value" : 5825,
+          "capabilities" : [ "FPGAMemoryAttributesINTEL" ],
+          "extensions" : [ "SPV_INTEL_fpga_memory_attributes" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "MemoryINTEL",
+          "value" : 5826,
+          "parameters" : [
+            { "kind" : "LiteralString", "name" : "'Memory Type'" }
+          ],
+          "capabilities" : [ "FPGAMemoryAttributesINTEL" ],
+          "extensions" : [ "SPV_INTEL_fpga_memory_attributes" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "NumbanksINTEL",
+          "value" : 5827,
+          "parameters" : [
+            { "kind" : "LiteralInteger", "name" : "'Banks'" }
+          ],
+          "capabilities" : [ "FPGAMemoryAttributesINTEL" ],
+          "extensions" : [ "SPV_INTEL_fpga_memory_attributes" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "BankwidthINTEL",
+          "value" : 5828,
+          "parameters" : [
+            { "kind" : "LiteralInteger", "name" : "'Bank Width'" }
+          ],
+          "capabilities" : [ "FPGAMemoryAttributesINTEL" ],
+          "extensions" : [ "SPV_INTEL_fpga_memory_attributes" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "MaxPrivateCopiesINTEL",
+          "value" : 5829,
+          "parameters" : [
+            { "kind" : "LiteralInteger", "name" : "'Maximum Copies'" }
+          ],
+          "capabilities" : [ "FPGAMemoryAttributesINTEL" ],
+          "extensions" : [ "SPV_INTEL_fpga_memory_attributes" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "SinglepumpINTEL",
+          "value" : 5830,
+          "capabilities" : [ "FPGAMemoryAttributesINTEL" ],
+          "extensions" : [ "SPV_INTEL_fpga_memory_attributes" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "DoublepumpINTEL",
+          "value" : 5831,
+          "capabilities" : [ "FPGAMemoryAttributesINTEL" ],
+          "extensions" : [ "SPV_INTEL_fpga_memory_attributes" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "MaxReplicatesINTEL",
+          "value" : 5832,
+          "parameters" : [
+            { "kind" : "LiteralInteger", "name" : "'Maximum Replicates'" }
+          ],
+          "capabilities" : [ "FPGAMemoryAttributesINTEL" ],
+          "extensions" : [ "SPV_INTEL_fpga_memory_attributes" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "SimpleDualPortINTEL",
+          "value" : 5833,
+          "capabilities" : [ "FPGAMemoryAttributesINTEL" ],
+          "extensions" : [ "SPV_INTEL_fpga_memory_attributes" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "MergeINTEL",
+          "value" : 5834,
+          "parameters" : [
+            { "kind" : "LiteralString", "name" : "'Merge Key'" },
+            { "kind" : "LiteralString", "name" : "'Merge Type'" }
+          ],
+          "capabilities" : [ "FPGAMemoryAttributesINTEL" ],
+          "extensions" : [ "SPV_INTEL_fpga_memory_attributes" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "BankBitsINTEL",
+          "value" : 5835,
+          "parameters" : [
+            { "kind" : "LiteralInteger", "quantifier" : "*", "name" : "'Bank Bits'" }
+          ],
+          "capabilities" : [ "FPGAMemoryAttributesINTEL" ],
+          "extensions" : [ "SPV_INTEL_fpga_memory_attributes" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "ForcePow2DepthINTEL",
+          "value" : 5836,
+          "parameters" : [
+            { "kind" : "LiteralInteger", "name" : "'Force Key'" }
+          ],
+          "capabilities" : [ "FPGAMemoryAttributesINTEL" ],
+          "extensions" : [ "SPV_INTEL_fpga_memory_attributes" ],
+          "version" : "None"
+        }
+      ]
+    },
+    {
+      "category" : "ValueEnum",
+      "kind" : "BuiltIn",
+      "enumerants" : [
+        {
+          "enumerant" : "Position",
+          "value" : 0,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "PointSize",
+          "value" : 1,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "ClipDistance",
+          "value" : 3,
+          "capabilities" : [ "ClipDistance" ]
+        },
+        {
+          "enumerant" : "CullDistance",
+          "value" : 4,
+          "capabilities" : [ "CullDistance" ]
+        },
+        {
+          "enumerant" : "VertexId",
+          "value" : 5,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "InstanceId",
+          "value" : 6,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "PrimitiveId",
+          "value" : 7,
+          "capabilities" : [ "Geometry", "Tessellation", "RayTracingNV", "RayTracingProvisionalKHR" ]
+        },
+        {
+          "enumerant" : "InvocationId",
+          "value" : 8,
+          "capabilities" : [ "Geometry", "Tessellation" ]
+        },
+        {
+          "enumerant" : "Layer",
+          "value" : 9,
+          "capabilities" : [ "Geometry", "ShaderLayer", "ShaderViewportIndexLayerEXT" ]
+        },
+        {
+          "enumerant" : "ViewportIndex",
+          "value" : 10,
+          "capabilities" : [ "MultiViewport", "ShaderViewportIndex", "ShaderViewportIndexLayerEXT" ]
+        },
+        {
+          "enumerant" : "TessLevelOuter",
+          "value" : 11,
+          "capabilities" : [ "Tessellation" ]
+        },
+        {
+          "enumerant" : "TessLevelInner",
+          "value" : 12,
+          "capabilities" : [ "Tessellation" ]
+        },
+        {
+          "enumerant" : "TessCoord",
+          "value" : 13,
+          "capabilities" : [ "Tessellation" ]
+        },
+        {
+          "enumerant" : "PatchVertices",
+          "value" : 14,
+          "capabilities" : [ "Tessellation" ]
+        },
+        {
+          "enumerant" : "FragCoord",
+          "value" : 15,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "PointCoord",
+          "value" : 16,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "FrontFacing",
+          "value" : 17,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "SampleId",
+          "value" : 18,
+          "capabilities" : [ "SampleRateShading" ]
+        },
+        {
+          "enumerant" : "SamplePosition",
+          "value" : 19,
+          "capabilities" : [ "SampleRateShading" ]
+        },
+        {
+          "enumerant" : "SampleMask",
+          "value" : 20,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "FragDepth",
+          "value" : 22,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "HelperInvocation",
+          "value" : 23,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "NumWorkgroups",
+          "value" : 24
+        },
+        {
+          "enumerant" : "WorkgroupSize",
+          "value" : 25
+        },
+        {
+          "enumerant" : "WorkgroupId",
+          "value" : 26
+        },
+        {
+          "enumerant" : "LocalInvocationId",
+          "value" : 27
+        },
+        {
+          "enumerant" : "GlobalInvocationId",
+          "value" : 28
+        },
+        {
+          "enumerant" : "LocalInvocationIndex",
+          "value" : 29
+        },
+        {
+          "enumerant" : "WorkDim",
+          "value" : 30,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "GlobalSize",
+          "value" : 31,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "EnqueuedWorkgroupSize",
+          "value" : 32,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "GlobalOffset",
+          "value" : 33,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "GlobalLinearId",
+          "value" : 34,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "SubgroupSize",
+          "value" : 36,
+          "capabilities" : [ "Kernel", "GroupNonUniform", "SubgroupBallotKHR" ]
+        },
+        {
+          "enumerant" : "SubgroupMaxSize",
+          "value" : 37,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "NumSubgroups",
+          "value" : 38,
+          "capabilities" : [ "Kernel", "GroupNonUniform" ]
+        },
+        {
+          "enumerant" : "NumEnqueuedSubgroups",
+          "value" : 39,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "SubgroupId",
+          "value" : 40,
+          "capabilities" : [ "Kernel", "GroupNonUniform" ]
+        },
+        {
+          "enumerant" : "SubgroupLocalInvocationId",
+          "value" : 41,
+          "capabilities" : [ "Kernel", "GroupNonUniform", "SubgroupBallotKHR" ]
+        },
+        {
+          "enumerant" : "VertexIndex",
+          "value" : 42,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "InstanceIndex",
+          "value" : 43,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "SubgroupEqMask",
+          "value" : 4416,
+          "capabilities" : [ "SubgroupBallotKHR", "GroupNonUniformBallot" ],
+          "version" : "1.3"
+        },
+        {
+          "enumerant" : "SubgroupGeMask",
+          "value" : 4417,
+          "capabilities" : [ "SubgroupBallotKHR", "GroupNonUniformBallot" ],
+          "version" : "1.3"
+        },
+        {
+          "enumerant" : "SubgroupGtMask",
+          "value" : 4418,
+          "capabilities" : [ "SubgroupBallotKHR", "GroupNonUniformBallot" ],
+          "version" : "1.3"
+        },
+        {
+          "enumerant" : "SubgroupLeMask",
+          "value" : 4419,
+          "capabilities" : [ "SubgroupBallotKHR", "GroupNonUniformBallot" ],
+          "version" : "1.3"
+        },
+        {
+          "enumerant" : "SubgroupLtMask",
+          "value" : 4420,
+          "capabilities" : [ "SubgroupBallotKHR", "GroupNonUniformBallot" ],
+          "version" : "1.3"
+        },
+        {
+          "enumerant" : "SubgroupEqMaskKHR",
+          "value" : 4416,
+          "capabilities" : [ "SubgroupBallotKHR", "GroupNonUniformBallot" ],
+          "extensions" : [ "SPV_KHR_shader_ballot" ],
+          "version" : "1.3"
+        },
+        {
+          "enumerant" : "SubgroupGeMaskKHR",
+          "value" : 4417,
+          "capabilities" : [ "SubgroupBallotKHR", "GroupNonUniformBallot" ],
+          "extensions" : [ "SPV_KHR_shader_ballot" ],
+          "version" : "1.3"
+        },
+        {
+          "enumerant" : "SubgroupGtMaskKHR",
+          "value" : 4418,
+          "capabilities" : [ "SubgroupBallotKHR", "GroupNonUniformBallot" ],
+          "extensions" : [ "SPV_KHR_shader_ballot" ],
+          "version" : "1.3"
+        },
+        {
+          "enumerant" : "SubgroupLeMaskKHR",
+          "value" : 4419,
+          "capabilities" : [ "SubgroupBallotKHR", "GroupNonUniformBallot" ],
+          "extensions" : [ "SPV_KHR_shader_ballot" ],
+          "version" : "1.3"
+        },
+        {
+          "enumerant" : "SubgroupLtMaskKHR",
+          "value" : 4420,
+          "capabilities" : [ "SubgroupBallotKHR", "GroupNonUniformBallot" ],
+          "extensions" : [ "SPV_KHR_shader_ballot" ],
+          "version" : "1.3"
+        },
+        {
+          "enumerant" : "BaseVertex",
+          "value" : 4424,
+          "capabilities" : [ "DrawParameters" ],
+          "extensions" : [ "SPV_KHR_shader_draw_parameters" ],
+          "version" : "1.3"
+        },
+        {
+          "enumerant" : "BaseInstance",
+          "value" : 4425,
+          "capabilities" : [ "DrawParameters" ],
+          "extensions" : [ "SPV_KHR_shader_draw_parameters" ],
+          "version" : "1.3"
+        },
+        {
+          "enumerant" : "DrawIndex",
+          "value" : 4426,
+          "capabilities" : [ "DrawParameters", "MeshShadingNV" ],
+          "extensions" : [ "SPV_KHR_shader_draw_parameters", "SPV_NV_mesh_shader" ],
+          "version" : "1.3"
+        },
+        {
+          "enumerant" : "PrimitiveShadingRateKHR",
+          "value" : 4432,
+          "capabilities" : [ "FragmentShadingRateKHR" ],
+          "extensions" : [ "SPV_KHR_fragment_shading_rate" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "DeviceIndex",
+          "value" : 4438,
+          "capabilities" : [ "DeviceGroup" ],
+          "extensions" : [ "SPV_KHR_device_group" ],
+          "version" : "1.3"
+        },
+        {
+          "enumerant" : "ViewIndex",
+          "value" : 4440,
+          "capabilities" : [ "MultiView" ],
+          "extensions" : [ "SPV_KHR_multiview" ],
+          "version" : "1.3"
+        },
+        {
+          "enumerant" : "ShadingRateKHR",
+          "value" : 4444,
+          "capabilities" : [ "FragmentShadingRateKHR" ],
+          "extensions" : [ "SPV_KHR_fragment_shading_rate" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "BaryCoordNoPerspAMD",
+          "value" : 4992,
+          "extensions" : [ "SPV_AMD_shader_explicit_vertex_parameter" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "BaryCoordNoPerspCentroidAMD",
+          "value" : 4993,
+          "extensions" : [ "SPV_AMD_shader_explicit_vertex_parameter" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "BaryCoordNoPerspSampleAMD",
+          "value" : 4994,
+          "extensions" : [ "SPV_AMD_shader_explicit_vertex_parameter" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "BaryCoordSmoothAMD",
+          "value" : 4995,
+          "extensions" : [ "SPV_AMD_shader_explicit_vertex_parameter" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "BaryCoordSmoothCentroidAMD",
+          "value" : 4996,
+          "extensions" : [ "SPV_AMD_shader_explicit_vertex_parameter" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "BaryCoordSmoothSampleAMD",
+          "value" : 4997,
+          "extensions" : [ "SPV_AMD_shader_explicit_vertex_parameter" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "BaryCoordPullModelAMD",
+          "value" : 4998,
+          "extensions" : [ "SPV_AMD_shader_explicit_vertex_parameter" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "FragStencilRefEXT",
+          "value" : 5014,
+          "capabilities" : [ "StencilExportEXT" ],
+          "extensions" : [ "SPV_EXT_shader_stencil_export" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "ViewportMaskNV",
+          "value" : 5253,
+          "capabilities" : [ "ShaderViewportMaskNV", "MeshShadingNV" ],
+          "extensions" : [ "SPV_NV_viewport_array2", "SPV_NV_mesh_shader" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "SecondaryPositionNV",
+          "value" : 5257,
+          "capabilities" : [ "ShaderStereoViewNV" ],
+          "extensions" : [ "SPV_NV_stereo_view_rendering" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "SecondaryViewportMaskNV",
+          "value" : 5258,
+          "capabilities" : [ "ShaderStereoViewNV" ],
+          "extensions" : [ "SPV_NV_stereo_view_rendering" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "PositionPerViewNV",
+          "value" : 5261,
+          "capabilities" : [ "PerViewAttributesNV", "MeshShadingNV" ],
+          "extensions" : [ "SPV_NVX_multiview_per_view_attributes", "SPV_NV_mesh_shader" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "ViewportMaskPerViewNV",
+          "value" : 5262,
+          "capabilities" : [ "PerViewAttributesNV", "MeshShadingNV" ],
+          "extensions" : [ "SPV_NVX_multiview_per_view_attributes", "SPV_NV_mesh_shader" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "FullyCoveredEXT",
+          "value" : 5264,
+          "capabilities" : [ "FragmentFullyCoveredEXT" ],
+          "extensions" : [ "SPV_EXT_fragment_fully_covered" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "TaskCountNV",
+          "value" : 5274,
+          "capabilities" : [ "MeshShadingNV" ],
+          "extensions" : [ "SPV_NV_mesh_shader" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "PrimitiveCountNV",
+          "value" : 5275,
+          "capabilities" : [ "MeshShadingNV" ],
+          "extensions" : [ "SPV_NV_mesh_shader" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "PrimitiveIndicesNV",
+          "value" : 5276,
+          "capabilities" : [ "MeshShadingNV" ],
+          "extensions" : [ "SPV_NV_mesh_shader" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "ClipDistancePerViewNV",
+          "value" : 5277,
+          "capabilities" : [ "MeshShadingNV" ],
+          "extensions" : [ "SPV_NV_mesh_shader" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "CullDistancePerViewNV",
+          "value" : 5278,
+          "capabilities" : [ "MeshShadingNV" ],
+          "extensions" : [ "SPV_NV_mesh_shader" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "LayerPerViewNV",
+          "value" : 5279,
+          "capabilities" : [ "MeshShadingNV" ],
+          "extensions" : [ "SPV_NV_mesh_shader" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "MeshViewCountNV",
+          "value" : 5280,
+          "capabilities" : [ "MeshShadingNV" ],
+          "extensions" : [ "SPV_NV_mesh_shader" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "MeshViewIndicesNV",
+          "value" : 5281,
+          "capabilities" : [ "MeshShadingNV" ],
+          "extensions" : [ "SPV_NV_mesh_shader" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "BaryCoordNV",
+          "value" : 5286,
+          "capabilities" : [ "FragmentBarycentricNV" ],
+          "extensions" : [ "SPV_NV_fragment_shader_barycentric" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "BaryCoordNoPerspNV",
+          "value" : 5287,
+          "capabilities" : [ "FragmentBarycentricNV" ],
+          "extensions" : [ "SPV_NV_fragment_shader_barycentric" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "FragSizeEXT",
+          "value" : 5292 ,
+          "capabilities" : [ "FragmentDensityEXT", "ShadingRateNV" ],
+          "extensions" : [ "SPV_EXT_fragment_invocation_density", "SPV_NV_shading_rate" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "FragmentSizeNV",
+          "value" : 5292 ,
+          "capabilities" : [ "ShadingRateNV", "FragmentDensityEXT" ],
+          "extensions" : [ "SPV_NV_shading_rate", "SPV_EXT_fragment_invocation_density" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "FragInvocationCountEXT",
+          "value" : 5293,
+          "capabilities" : [ "FragmentDensityEXT", "ShadingRateNV" ],
+          "extensions" : [ "SPV_EXT_fragment_invocation_density", "SPV_NV_shading_rate" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "InvocationsPerPixelNV",
+          "value" : 5293,
+          "capabilities" : [ "ShadingRateNV", "FragmentDensityEXT" ],
+          "extensions" : [ "SPV_NV_shading_rate", "SPV_EXT_fragment_invocation_density" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "LaunchIdNV",
+          "value" : 5319,
+          "capabilities" : [ "RayTracingNV" , "RayTracingProvisionalKHR" ],
+          "extensions" : [ "SPV_NV_ray_tracing" , "SPV_KHR_ray_tracing" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "LaunchIdKHR",
+          "value" : 5319,
+          "capabilities" : [ "RayTracingNV" , "RayTracingProvisionalKHR" ],
+          "extensions" : [ "SPV_NV_ray_tracing" , "SPV_KHR_ray_tracing" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "LaunchSizeNV",
+          "value" : 5320,
+          "capabilities" : [ "RayTracingNV" , "RayTracingProvisionalKHR" ],
+          "extensions" : [ "SPV_NV_ray_tracing" , "SPV_KHR_ray_tracing" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "LaunchSizeKHR",
+          "value" : 5320,
+          "capabilities" : [ "RayTracingNV" , "RayTracingProvisionalKHR" ],
+          "extensions" : [ "SPV_NV_ray_tracing" , "SPV_KHR_ray_tracing" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "WorldRayOriginNV",
+          "value" : 5321,
+          "capabilities" : [ "RayTracingNV" , "RayTracingProvisionalKHR" ],
+          "extensions" : [ "SPV_NV_ray_tracing" , "SPV_KHR_ray_tracing" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "WorldRayOriginKHR",
+          "value" : 5321,
+          "capabilities" : [ "RayTracingNV" , "RayTracingProvisionalKHR" ],
+          "extensions" : [ "SPV_NV_ray_tracing" , "SPV_KHR_ray_tracing" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "WorldRayDirectionNV",
+          "value" : 5322,
+          "capabilities" : [ "RayTracingNV" , "RayTracingProvisionalKHR" ],
+          "extensions" : [ "SPV_NV_ray_tracing" , "SPV_KHR_ray_tracing" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "WorldRayDirectionKHR",
+          "value" : 5322,
+          "capabilities" : [ "RayTracingNV" , "RayTracingProvisionalKHR" ],
+          "extensions" : [ "SPV_NV_ray_tracing" , "SPV_KHR_ray_tracing" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "ObjectRayOriginNV",
+          "value" : 5323,
+          "capabilities" : [ "RayTracingNV" , "RayTracingProvisionalKHR" ],
+          "extensions" : [ "SPV_NV_ray_tracing" , "SPV_KHR_ray_tracing" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "ObjectRayOriginKHR",
+          "value" : 5323,
+          "capabilities" : [ "RayTracingNV" , "RayTracingProvisionalKHR" ],
+          "extensions" : [ "SPV_NV_ray_tracing" , "SPV_KHR_ray_tracing" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "ObjectRayDirectionNV",
+          "value" : 5324,
+          "capabilities" : [ "RayTracingNV" , "RayTracingProvisionalKHR" ],
+          "extensions" : [ "SPV_NV_ray_tracing" , "SPV_KHR_ray_tracing" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "ObjectRayDirectionKHR",
+          "value" : 5324,
+          "capabilities" : [ "RayTracingNV" , "RayTracingProvisionalKHR" ],
+          "extensions" : [ "SPV_NV_ray_tracing" , "SPV_KHR_ray_tracing" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "RayTminNV",
+          "value" : 5325,
+          "capabilities" : [ "RayTracingNV" , "RayTracingProvisionalKHR" ],
+          "extensions" : [ "SPV_NV_ray_tracing" , "SPV_KHR_ray_tracing" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "RayTminKHR",
+          "value" : 5325,
+          "capabilities" : [ "RayTracingNV" , "RayTracingProvisionalKHR" ],
+          "extensions" : [ "SPV_NV_ray_tracing" , "SPV_KHR_ray_tracing" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "RayTmaxNV",
+          "value" : 5326,
+          "capabilities" : [ "RayTracingNV" , "RayTracingProvisionalKHR" ],
+          "extensions" : [ "SPV_NV_ray_tracing" , "SPV_KHR_ray_tracing" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "RayTmaxKHR",
+          "value" : 5326,
+          "capabilities" : [ "RayTracingNV" , "RayTracingProvisionalKHR" ],
+          "extensions" : [ "SPV_NV_ray_tracing" , "SPV_KHR_ray_tracing" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "InstanceCustomIndexNV",
+          "value" : 5327,
+          "capabilities" : [ "RayTracingNV" , "RayTracingProvisionalKHR" ],
+          "extensions" : [ "SPV_NV_ray_tracing" , "SPV_KHR_ray_tracing" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "InstanceCustomIndexKHR",
+          "value" : 5327,
+          "capabilities" : [ "RayTracingNV" , "RayTracingProvisionalKHR" ],
+          "extensions" : [ "SPV_NV_ray_tracing" , "SPV_KHR_ray_tracing" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "ObjectToWorldNV",
+          "value" : 5330,
+          "capabilities" : [ "RayTracingNV" , "RayTracingProvisionalKHR" ],
+          "extensions" : [ "SPV_NV_ray_tracing" , "SPV_KHR_ray_tracing" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "ObjectToWorldKHR",
+          "value" : 5330,
+          "capabilities" : [ "RayTracingNV" , "RayTracingProvisionalKHR" ],
+          "extensions" : [ "SPV_NV_ray_tracing" , "SPV_KHR_ray_tracing" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "WorldToObjectNV",
+          "value" : 5331,
+          "capabilities" : [ "RayTracingNV" , "RayTracingProvisionalKHR" ],
+          "extensions" : [ "SPV_NV_ray_tracing" , "SPV_KHR_ray_tracing" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "WorldToObjectKHR",
+          "value" : 5331,
+          "capabilities" : [ "RayTracingNV" , "RayTracingProvisionalKHR" ],
+          "extensions" : [ "SPV_NV_ray_tracing" , "SPV_KHR_ray_tracing" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "HitTNV",
+          "value" : 5332,
+          "capabilities" : [ "RayTracingNV" , "RayTracingProvisionalKHR" ],
+          "extensions" : [ "SPV_NV_ray_tracing" , "SPV_KHR_ray_tracing" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "HitTKHR",
+          "value" : 5332,
+          "capabilities" : [ "RayTracingNV" , "RayTracingProvisionalKHR" ],
+          "extensions" : [ "SPV_NV_ray_tracing" , "SPV_KHR_ray_tracing" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "HitKindNV",
+          "value" : 5333,
+          "capabilities" : [ "RayTracingNV" , "RayTracingProvisionalKHR" ],
+          "extensions" : [ "SPV_NV_ray_tracing" , "SPV_KHR_ray_tracing" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "HitKindKHR",
+          "value" : 5333,
+          "capabilities" : [ "RayTracingNV" , "RayTracingProvisionalKHR" ],
+          "extensions" : [ "SPV_NV_ray_tracing" , "SPV_KHR_ray_tracing" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "IncomingRayFlagsNV",
+          "value" : 5351,
+          "capabilities" : [ "RayTracingNV" , "RayTracingProvisionalKHR" ],
+          "extensions" : [ "SPV_NV_ray_tracing" , "SPV_KHR_ray_tracing" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "IncomingRayFlagsKHR",
+          "value" : 5351,
+          "capabilities" : [ "RayTracingNV" , "RayTracingProvisionalKHR" ],
+          "extensions" : [ "SPV_NV_ray_tracing" , "SPV_KHR_ray_tracing" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "RayGeometryIndexKHR",
+          "value" : 5352,
+          "capabilities" : [ "RayTracingProvisionalKHR" ],
+          "extensions" : [ "SPV_KHR_ray_tracing" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "WarpsPerSMNV",
+          "value" : 5374,
+          "capabilities" : [ "ShaderSMBuiltinsNV" ],
+          "extensions" : [ "SPV_NV_shader_sm_builtins" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "SMCountNV",
+          "value" : 5375,
+          "capabilities" : [ "ShaderSMBuiltinsNV" ],
+          "extensions" : [ "SPV_NV_shader_sm_builtins" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "WarpIDNV",
+          "value" : 5376,
+          "capabilities" : [ "ShaderSMBuiltinsNV" ],
+          "extensions" : [ "SPV_NV_shader_sm_builtins" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "SMIDNV",
+          "value" : 5377,
+          "capabilities" : [ "ShaderSMBuiltinsNV" ],
+          "extensions" : [ "SPV_NV_shader_sm_builtins" ],
+          "version" : "None"
+        }
+      ]
+    },
+    {
+      "category" : "ValueEnum",
+      "kind" : "Scope",
+      "enumerants" : [
+        {
+          "enumerant" : "CrossDevice",
+          "value" : 0
+        },
+        {
+          "enumerant" : "Device",
+          "value" : 1
+        },
+        {
+          "enumerant" : "Workgroup",
+          "value" : 2
+        },
+        {
+          "enumerant" : "Subgroup",
+          "value" : 3
+        },
+        {
+          "enumerant" : "Invocation",
+          "value" : 4
+        },
+        {
+          "enumerant" : "QueueFamily",
+          "value" : 5,
+          "capabilities" : [ "VulkanMemoryModel" ],
+          "version" : "1.5"
+        },
+        {
+          "enumerant" : "QueueFamilyKHR",
+          "value" : 5,
+          "capabilities" : [ "VulkanMemoryModel" ],
+          "version" : "1.5"
+        },
+        {
+          "enumerant" : "ShaderCallKHR",
+          "value" : 6,
+          "capabilities" : [ "RayTracingProvisionalKHR" ],
+          "version" : "None"
+        }
+      ]
+    },
+    {
+      "category" : "ValueEnum",
+      "kind" : "GroupOperation",
+      "enumerants" : [
+        {
+          "enumerant" : "Reduce",
+          "value" : 0,
+          "capabilities" : [ "Kernel", "GroupNonUniformArithmetic", "GroupNonUniformBallot" ]
+        },
+        {
+          "enumerant" : "InclusiveScan",
+          "value" : 1,
+          "capabilities" : [ "Kernel", "GroupNonUniformArithmetic", "GroupNonUniformBallot" ]
+        },
+        {
+          "enumerant" : "ExclusiveScan",
+          "value" : 2,
+          "capabilities" : [ "Kernel", "GroupNonUniformArithmetic", "GroupNonUniformBallot" ]
+        },
+        {
+          "enumerant" : "ClusteredReduce",
+          "value" : 3,
+          "capabilities" : [ "GroupNonUniformClustered" ],
+          "version" : "1.3"
+        },
+        {
+          "enumerant" : "PartitionedReduceNV",
+          "value" : 6,
+          "capabilities" : [ "GroupNonUniformPartitionedNV" ],
+          "extensions" : [ "SPV_NV_shader_subgroup_partitioned" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "PartitionedInclusiveScanNV",
+          "value" : 7,
+          "capabilities" : [ "GroupNonUniformPartitionedNV" ],
+          "extensions" : [ "SPV_NV_shader_subgroup_partitioned" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "PartitionedExclusiveScanNV",
+          "value" : 8,
+          "capabilities" : [ "GroupNonUniformPartitionedNV" ],
+          "extensions" : [ "SPV_NV_shader_subgroup_partitioned" ],
+          "version" : "None"
+        }
+      ]
+    },
+    {
+      "category" : "ValueEnum",
+      "kind" : "KernelEnqueueFlags",
+      "enumerants" : [
+        {
+          "enumerant" : "NoWait",
+          "value" : 0,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "WaitKernel",
+          "value" : 1,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "WaitWorkGroup",
+          "value" : 2,
+          "capabilities" : [ "Kernel" ]
+        }
+      ]
+    },
+    {
+      "category" : "ValueEnum",
+      "kind" : "Capability",
+      "enumerants" : [
+        {
+          "enumerant" : "Matrix",
+          "value" : 0
+        },
+        {
+          "enumerant" : "Shader",
+          "value" : 1,
+          "capabilities" : [ "Matrix" ]
+        },
+        {
+          "enumerant" : "Geometry",
+          "value" : 2,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "Tessellation",
+          "value" : 3,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "Addresses",
+          "value" : 4
+        },
+        {
+          "enumerant" : "Linkage",
+          "value" : 5
+        },
+        {
+          "enumerant" : "Kernel",
+          "value" : 6
+        },
+        {
+          "enumerant" : "Vector16",
+          "value" : 7,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "Float16Buffer",
+          "value" : 8,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "Float16",
+          "value" : 9
+        },
+        {
+          "enumerant" : "Float64",
+          "value" : 10
+        },
+        {
+          "enumerant" : "Int64",
+          "value" : 11
+        },
+        {
+          "enumerant" : "Int64Atomics",
+          "value" : 12,
+          "capabilities" : [ "Int64" ]
+        },
+        {
+          "enumerant" : "ImageBasic",
+          "value" : 13,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "ImageReadWrite",
+          "value" : 14,
+          "capabilities" : [ "ImageBasic" ]
+        },
+        {
+          "enumerant" : "ImageMipmap",
+          "value" : 15,
+          "capabilities" : [ "ImageBasic" ]
+        },
+        {
+          "enumerant" : "Pipes",
+          "value" : 17,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "Groups",
+          "value" : 18,
+          "extensions" : [ "SPV_AMD_shader_ballot" ]
+        },
+        {
+          "enumerant" : "DeviceEnqueue",
+          "value" : 19,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "LiteralSampler",
+          "value" : 20,
+          "capabilities" : [ "Kernel" ]
+        },
+        {
+          "enumerant" : "AtomicStorage",
+          "value" : 21,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "Int16",
+          "value" : 22
+        },
+        {
+          "enumerant" : "TessellationPointSize",
+          "value" : 23,
+          "capabilities" : [ "Tessellation" ]
+        },
+        {
+          "enumerant" : "GeometryPointSize",
+          "value" : 24,
+          "capabilities" : [ "Geometry" ]
+        },
+        {
+          "enumerant" : "ImageGatherExtended",
+          "value" : 25,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "StorageImageMultisample",
+          "value" : 27,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "UniformBufferArrayDynamicIndexing",
+          "value" : 28,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "SampledImageArrayDynamicIndexing",
+          "value" : 29,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "StorageBufferArrayDynamicIndexing",
+          "value" : 30,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "StorageImageArrayDynamicIndexing",
+          "value" : 31,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "ClipDistance",
+          "value" : 32,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "CullDistance",
+          "value" : 33,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "ImageCubeArray",
+          "value" : 34,
+          "capabilities" : [ "SampledCubeArray" ]
+        },
+        {
+          "enumerant" : "SampleRateShading",
+          "value" : 35,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "ImageRect",
+          "value" : 36,
+          "capabilities" : [ "SampledRect" ]
+        },
+        {
+          "enumerant" : "SampledRect",
+          "value" : 37,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "GenericPointer",
+          "value" : 38,
+          "capabilities" : [ "Addresses" ]
+        },
+        {
+          "enumerant" : "Int8",
+          "value" : 39
+        },
+        {
+          "enumerant" : "InputAttachment",
+          "value" : 40,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "SparseResidency",
+          "value" : 41,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "MinLod",
+          "value" : 42,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "Sampled1D",
+          "value" : 43
+        },
+        {
+          "enumerant" : "Image1D",
+          "value" : 44,
+          "capabilities" : [ "Sampled1D" ]
+        },
+        {
+          "enumerant" : "SampledCubeArray",
+          "value" : 45,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "SampledBuffer",
+          "value" : 46
+        },
+        {
+          "enumerant" : "ImageBuffer",
+          "value" : 47,
+          "capabilities" : [ "SampledBuffer" ]
+        },
+        {
+          "enumerant" : "ImageMSArray",
+          "value" : 48,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "StorageImageExtendedFormats",
+          "value" : 49,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "ImageQuery",
+          "value" : 50,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "DerivativeControl",
+          "value" : 51,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "InterpolationFunction",
+          "value" : 52,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "TransformFeedback",
+          "value" : 53,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "GeometryStreams",
+          "value" : 54,
+          "capabilities" : [ "Geometry" ]
+        },
+        {
+          "enumerant" : "StorageImageReadWithoutFormat",
+          "value" : 55,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "StorageImageWriteWithoutFormat",
+          "value" : 56,
+          "capabilities" : [ "Shader" ]
+        },
+        {
+          "enumerant" : "MultiViewport",
+          "value" : 57,
+          "capabilities" : [ "Geometry" ]
+        },
+        {
+          "enumerant" : "SubgroupDispatch",
+          "value" : 58,
+          "capabilities" : [ "DeviceEnqueue" ],
+          "version" : "1.1"
+        },
+        {
+          "enumerant" : "NamedBarrier",
+          "value" : 59,
+          "capabilities" : [ "Kernel" ],
+          "version" : "1.1"
+        },
+        {
+          "enumerant" : "PipeStorage",
+          "value" : 60,
+          "capabilities" : [ "Pipes" ],
+          "version" : "1.1"
+        },
+        {
+          "enumerant" : "GroupNonUniform",
+          "value" : 61,
+          "version" : "1.3"
+        },
+        {
+          "enumerant" : "GroupNonUniformVote",
+          "value" : 62,
+          "capabilities" : [ "GroupNonUniform" ],
+          "version" : "1.3"
+        },
+        {
+          "enumerant" : "GroupNonUniformArithmetic",
+          "value" : 63,
+          "capabilities" : [ "GroupNonUniform" ],
+          "version" : "1.3"
+        },
+        {
+          "enumerant" : "GroupNonUniformBallot",
+          "value" : 64,
+          "capabilities" : [ "GroupNonUniform" ],
+          "version" : "1.3"
+        },
+        {
+          "enumerant" : "GroupNonUniformShuffle",
+          "value" : 65,
+          "capabilities" : [ "GroupNonUniform" ],
+          "version" : "1.3"
+        },
+        {
+          "enumerant" : "GroupNonUniformShuffleRelative",
+          "value" : 66,
+          "capabilities" : [ "GroupNonUniform" ],
+          "version" : "1.3"
+        },
+        {
+          "enumerant" : "GroupNonUniformClustered",
+          "value" : 67,
+          "capabilities" : [ "GroupNonUniform" ],
+          "version" : "1.3"
+        },
+        {
+          "enumerant" : "GroupNonUniformQuad",
+          "value" : 68,
+          "capabilities" : [ "GroupNonUniform" ],
+          "version" : "1.3"
+        },
+        {
+          "enumerant" : "ShaderLayer",
+          "value" : 69,
+          "version" : "1.5"
+        },
+        {
+          "enumerant" : "ShaderViewportIndex",
+          "value" : 70,
+          "version" : "1.5"
+        },
+        {
+          "enumerant" : "FragmentShadingRateKHR",
+          "value" : 4422,
+          "capabilities" : [ "Shader" ],
+          "extensions" : [ "SPV_KHR_fragment_shading_rate" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "SubgroupBallotKHR",
+          "value" : 4423,
+          "extensions" : [ "SPV_KHR_shader_ballot" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "DrawParameters",
+          "value" : 4427,
+          "capabilities" : [ "Shader" ],
+          "extensions" : [ "SPV_KHR_shader_draw_parameters" ],
+          "version" : "1.3"
+        },
+        {
+          "enumerant" : "SubgroupVoteKHR",
+          "value" : 4431,
+          "extensions" : [ "SPV_KHR_subgroup_vote" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "StorageBuffer16BitAccess",
+          "value" : 4433,
+          "extensions" : [ "SPV_KHR_16bit_storage" ],
+          "version" : "1.3"
+        },
+        {
+          "enumerant" : "StorageUniformBufferBlock16",
+          "value" : 4433,
+          "extensions" : [ "SPV_KHR_16bit_storage" ],
+          "version" : "1.3"
+        },
+        {
+          "enumerant" : "UniformAndStorageBuffer16BitAccess",
+          "value" : 4434,
+          "capabilities" : [
+            "StorageBuffer16BitAccess",
+            "StorageUniformBufferBlock16"
+          ],
+          "extensions" : [ "SPV_KHR_16bit_storage" ],
+          "version" : "1.3"
+        },
+        {
+          "enumerant" : "StorageUniform16",
+          "value" : 4434,
+          "capabilities" : [
+            "StorageBuffer16BitAccess",
+            "StorageUniformBufferBlock16"
+          ],
+          "extensions" : [ "SPV_KHR_16bit_storage" ],
+          "version" : "1.3"
+        },
+        {
+          "enumerant" : "StoragePushConstant16",
+          "value" : 4435,
+          "extensions" : [ "SPV_KHR_16bit_storage" ],
+          "version" : "1.3"
+        },
+        {
+          "enumerant" : "StorageInputOutput16",
+          "value" : 4436,
+          "extensions" : [ "SPV_KHR_16bit_storage" ],
+          "version" : "1.3"
+        },
+        {
+          "enumerant" : "DeviceGroup",
+          "value" : 4437,
+          "extensions" : [ "SPV_KHR_device_group" ],
+          "version" : "1.3"
+        },
+        {
+          "enumerant" : "MultiView",
+          "value" : 4439,
+          "capabilities" : [ "Shader" ],
+          "extensions" : [ "SPV_KHR_multiview" ],
+          "version" : "1.3"
+        },
+        {
+          "enumerant" : "VariablePointersStorageBuffer",
+          "value" : 4441,
+          "capabilities" : [ "Shader" ],
+          "extensions" : [ "SPV_KHR_variable_pointers" ],
+          "version" : "1.3"
+        },
+        {
+          "enumerant" : "VariablePointers",
+          "value" : 4442,
+          "capabilities" : [ "VariablePointersStorageBuffer" ],
+          "extensions" : [ "SPV_KHR_variable_pointers" ],
+          "version" : "1.3"
+        },
+        {
+          "enumerant" : "AtomicStorageOps",
+          "value" : 4445,
+          "extensions" : [ "SPV_KHR_shader_atomic_counter_ops" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "SampleMaskPostDepthCoverage",
+          "value" : 4447,
+          "extensions" : [ "SPV_KHR_post_depth_coverage" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "StorageBuffer8BitAccess",
+          "value" : 4448,
+          "extensions" : [ "SPV_KHR_8bit_storage" ],
+          "version" : "1.5"
+        },
+        {
+          "enumerant" : "UniformAndStorageBuffer8BitAccess",
+          "value" : 4449,
+          "capabilities" : [ "StorageBuffer8BitAccess" ],
+          "extensions" : [ "SPV_KHR_8bit_storage" ],
+          "version" : "1.5"
+        },
+        {
+          "enumerant" : "StoragePushConstant8",
+          "value" : 4450,
+          "extensions" : [ "SPV_KHR_8bit_storage" ],
+          "version" : "1.5"
+        },
+        {
+          "enumerant" : "DenormPreserve",
+          "value" : 4464,
+          "extensions" : [ "SPV_KHR_float_controls" ],
+          "version" : "1.4"
+        },
+        {
+          "enumerant" : "DenormFlushToZero",
+          "value" : 4465,
+          "extensions" : [ "SPV_KHR_float_controls" ],
+          "version" : "1.4"
+        },
+        {
+          "enumerant" : "SignedZeroInfNanPreserve",
+          "value" : 4466,
+          "extensions" : [ "SPV_KHR_float_controls" ],
+          "version" : "1.4"
+        },
+        {
+          "enumerant" : "RoundingModeRTE",
+          "value" : 4467,
+          "extensions" : [ "SPV_KHR_float_controls" ],
+          "version" : "1.4"
+        },
+        {
+          "enumerant" : "RoundingModeRTZ",
+          "value" : 4468,
+          "extensions" : [ "SPV_KHR_float_controls" ],
+          "version" : "1.4"
+        },
+        {
+          "enumerant" : "RayQueryProvisionalKHR",
+          "value" : 4471,
+          "capabilities" : [ "Shader" ],
+          "extensions" : [ "SPV_KHR_ray_query" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "RayTraversalPrimitiveCullingProvisionalKHR",
+          "value" : 4478,
+          "capabilities" : [ "RayQueryProvisionalKHR","RayTracingProvisionalKHR" ],
+          "extensions" : [ "SPV_KHR_ray_query","SPV_KHR_ray_tracing" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "Float16ImageAMD",
+          "value" : 5008,
+          "capabilities" : [ "Shader" ],
+          "extensions" : [ "SPV_AMD_gpu_shader_half_float_fetch" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "ImageGatherBiasLodAMD",
+          "value" : 5009,
+          "capabilities" : [ "Shader" ],
+          "extensions" : [ "SPV_AMD_texture_gather_bias_lod" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "FragmentMaskAMD",
+          "value" : 5010,
+          "capabilities" : [ "Shader" ],
+          "extensions" : [ "SPV_AMD_shader_fragment_mask" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "StencilExportEXT",
+          "value" : 5013,
+          "capabilities" : [ "Shader" ],
+          "extensions" : [ "SPV_EXT_shader_stencil_export" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "ImageReadWriteLodAMD",
+          "value" : 5015,
+          "capabilities" : [ "Shader" ],
+          "extensions" : [ "SPV_AMD_shader_image_load_store_lod" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "Int64ImageEXT",
+          "value" : 5016,
+          "capabilities" : [ "Shader" ],
+          "extensions" : [ "SPV_EXT_shader_image_int64" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "ShaderClockKHR",
+          "value" : 5055,
+          "capabilities" : [ "Shader" ],
+          "extensions" : [ "SPV_KHR_shader_clock" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "SampleMaskOverrideCoverageNV",
+          "value" : 5249,
+          "capabilities" : [ "SampleRateShading" ],
+          "extensions" : [ "SPV_NV_sample_mask_override_coverage" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "GeometryShaderPassthroughNV",
+          "value" : 5251,
+          "capabilities" : [ "Geometry" ],
+          "extensions" : [ "SPV_NV_geometry_shader_passthrough" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "ShaderViewportIndexLayerEXT",
+          "value" : 5254,
+          "capabilities" : [ "MultiViewport" ],
+          "extensions" : [ "SPV_EXT_shader_viewport_index_layer" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "ShaderViewportIndexLayerNV",
+          "value" : 5254,
+          "capabilities" : [ "MultiViewport" ],
+          "extensions" : [ "SPV_NV_viewport_array2" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "ShaderViewportMaskNV",
+          "value" : 5255,
+          "capabilities" : [ "ShaderViewportIndexLayerNV" ],
+          "extensions" : [ "SPV_NV_viewport_array2" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "ShaderStereoViewNV",
+          "value" : 5259,
+          "capabilities" : [ "ShaderViewportMaskNV" ],
+          "extensions" : [ "SPV_NV_stereo_view_rendering" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "PerViewAttributesNV",
+          "value" : 5260,
+          "capabilities" : [ "MultiView" ],
+          "extensions" : [ "SPV_NVX_multiview_per_view_attributes" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "FragmentFullyCoveredEXT",
+          "value" : 5265,
+          "capabilities" : [ "Shader" ],
+          "extensions" : [ "SPV_EXT_fragment_fully_covered" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "MeshShadingNV",
+          "value" : 5266,
+          "capabilities" : [ "Shader" ],
+          "extensions" : [ "SPV_NV_mesh_shader" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "ImageFootprintNV",
+          "value" : 5282,
+          "extensions" : [ "SPV_NV_shader_image_footprint" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "FragmentBarycentricNV",
+          "value" : 5284,
+          "extensions" : [ "SPV_NV_fragment_shader_barycentric" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "ComputeDerivativeGroupQuadsNV",
+          "value" : 5288,
+          "extensions" : [ "SPV_NV_compute_shader_derivatives" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "FragmentDensityEXT",
+          "value" : 5291,
+          "capabilities" : [ "Shader" ],
+          "extensions" : [ "SPV_EXT_fragment_invocation_density", "SPV_NV_shading_rate" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "ShadingRateNV",
+          "value" : 5291,
+          "capabilities" : [ "Shader" ],
+          "extensions" : [ "SPV_NV_shading_rate", "SPV_EXT_fragment_invocation_density" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "GroupNonUniformPartitionedNV",
+          "value" : 5297,
+          "extensions" : [ "SPV_NV_shader_subgroup_partitioned" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "ShaderNonUniform",
+          "value" : 5301,
+          "capabilities" : [ "Shader" ],
+          "version" : "1.5"
+        },
+        {
+          "enumerant" : "ShaderNonUniformEXT",
+          "value" : 5301,
+          "capabilities" : [ "Shader" ],
+          "extensions" : [ "SPV_EXT_descriptor_indexing" ],
+          "version" : "1.5"
+        },
+        {
+          "enumerant" : "RuntimeDescriptorArray",
+          "value" : 5302,
+          "capabilities" : [ "Shader" ],
+          "version" : "1.5"
+        },
+        {
+          "enumerant" : "RuntimeDescriptorArrayEXT",
+          "value" : 5302,
+          "capabilities" : [ "Shader" ],
+          "extensions" : [ "SPV_EXT_descriptor_indexing" ],
+          "version" : "1.5"
+        },
+        {
+          "enumerant" : "InputAttachmentArrayDynamicIndexing",
+          "value" : 5303,
+          "capabilities" : [ "InputAttachment" ],
+          "version" : "1.5"
+        },
+        {
+          "enumerant" : "InputAttachmentArrayDynamicIndexingEXT",
+          "value" : 5303,
+          "capabilities" : [ "InputAttachment" ],
+          "extensions" : [ "SPV_EXT_descriptor_indexing" ],
+          "version" : "1.5"
+        },
+        {
+          "enumerant" : "UniformTexelBufferArrayDynamicIndexing",
+          "value" : 5304,
+          "capabilities" : [ "SampledBuffer" ],
+          "version" : "1.5"
+        },
+        {
+          "enumerant" : "UniformTexelBufferArrayDynamicIndexingEXT",
+          "value" : 5304,
+          "capabilities" : [ "SampledBuffer" ],
+          "extensions" : [ "SPV_EXT_descriptor_indexing" ],
+          "version" : "1.5"
+        },
+        {
+          "enumerant" : "StorageTexelBufferArrayDynamicIndexing",
+          "value" : 5305,
+          "capabilities" : [ "ImageBuffer" ],
+          "version" : "1.5"
+        },
+        {
+          "enumerant" : "StorageTexelBufferArrayDynamicIndexingEXT",
+          "value" : 5305,
+          "capabilities" : [ "ImageBuffer" ],
+          "extensions" : [ "SPV_EXT_descriptor_indexing" ],
+          "version" : "1.5"
+        },
+        {
+          "enumerant" : "UniformBufferArrayNonUniformIndexing",
+          "value" : 5306,
+          "capabilities" : [ "ShaderNonUniform" ],
+          "version" : "1.5"
+        },
+        {
+          "enumerant" : "UniformBufferArrayNonUniformIndexingEXT",
+          "value" : 5306,
+          "capabilities" : [ "ShaderNonUniform" ],
+          "extensions" : [ "SPV_EXT_descriptor_indexing" ],
+          "version" : "1.5"
+        },
+        {
+          "enumerant" : "SampledImageArrayNonUniformIndexing",
+          "value" : 5307,
+          "capabilities" : [ "ShaderNonUniform" ],
+          "version" : "1.5"
+        },
+        {
+          "enumerant" : "SampledImageArrayNonUniformIndexingEXT",
+          "value" : 5307,
+          "capabilities" : [ "ShaderNonUniform" ],
+          "extensions" : [ "SPV_EXT_descriptor_indexing" ],
+          "version" : "1.5"
+        },
+        {
+          "enumerant" : "StorageBufferArrayNonUniformIndexing",
+          "value" : 5308,
+          "capabilities" : [ "ShaderNonUniform" ],
+          "version" : "1.5"
+        },
+        {
+          "enumerant" : "StorageBufferArrayNonUniformIndexingEXT",
+          "value" : 5308,
+          "capabilities" : [ "ShaderNonUniform" ],
+          "extensions" : [ "SPV_EXT_descriptor_indexing" ],
+          "version" : "1.5"
+        },
+        {
+          "enumerant" : "StorageImageArrayNonUniformIndexing",
+          "value" : 5309,
+          "capabilities" : [ "ShaderNonUniform" ],
+          "version" : "1.5"
+        },
+        {
+          "enumerant" : "StorageImageArrayNonUniformIndexingEXT",
+          "value" : 5309,
+          "capabilities" : [ "ShaderNonUniform" ],
+          "extensions" : [ "SPV_EXT_descriptor_indexing" ],
+          "version" : "1.5"
+        },
+        {
+          "enumerant" : "InputAttachmentArrayNonUniformIndexing",
+          "value" : 5310,
+          "capabilities" : [ "InputAttachment", "ShaderNonUniform" ],
+          "version" : "1.5"
+        },
+        {
+          "enumerant" : "InputAttachmentArrayNonUniformIndexingEXT",
+          "value" : 5310,
+          "capabilities" : [ "InputAttachment", "ShaderNonUniform" ],
+          "extensions" : [ "SPV_EXT_descriptor_indexing" ],
+          "version" : "1.5"
+        },
+        {
+          "enumerant" : "UniformTexelBufferArrayNonUniformIndexing",
+          "value" : 5311,
+          "capabilities" : [ "SampledBuffer", "ShaderNonUniform" ],
+          "version" : "1.5"
+        },
+        {
+          "enumerant" : "UniformTexelBufferArrayNonUniformIndexingEXT",
+          "value" : 5311,
+          "capabilities" : [ "SampledBuffer", "ShaderNonUniform" ],
+          "extensions" : [ "SPV_EXT_descriptor_indexing" ],
+          "version" : "1.5"
+        },
+        {
+          "enumerant" : "StorageTexelBufferArrayNonUniformIndexing",
+          "value" : 5312,
+          "capabilities" : [ "ImageBuffer", "ShaderNonUniform" ],
+          "version" : "1.5"
+        },
+        {
+          "enumerant" : "StorageTexelBufferArrayNonUniformIndexingEXT",
+          "value" : 5312,
+          "capabilities" : [ "ImageBuffer", "ShaderNonUniform" ],
+          "extensions" : [ "SPV_EXT_descriptor_indexing" ],
+          "version" : "1.5"
+        },
+        {
+          "enumerant" : "RayTracingNV",
+          "value" : 5340,
+          "capabilities" : [ "Shader" ],
+          "extensions" : [ "SPV_NV_ray_tracing" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "VulkanMemoryModel",
+          "value" : 5345,
+          "version" : "1.5"
+        },
+        {
+          "enumerant" : "VulkanMemoryModelKHR",
+          "value" : 5345,
+          "extensions" : [ "SPV_KHR_vulkan_memory_model" ],
+          "version" : "1.5"
+        },
+        {
+          "enumerant" : "VulkanMemoryModelDeviceScope",
+          "value" : 5346,
+          "version" : "1.5"
+        },
+        {
+          "enumerant" : "VulkanMemoryModelDeviceScopeKHR",
+          "value" : 5346,
+          "extensions" : [ "SPV_KHR_vulkan_memory_model" ],
+          "version" : "1.5"
+        },
+        {
+          "enumerant" : "PhysicalStorageBufferAddresses",
+          "value" : 5347,
+          "capabilities" : [ "Shader" ],
+          "extensions" : [ "SPV_EXT_physical_storage_buffer", "SPV_KHR_physical_storage_buffer" ],
+          "version" : "1.5"
+        },
+        {
+          "enumerant" : "PhysicalStorageBufferAddressesEXT",
+          "value" : 5347,
+          "capabilities" : [ "Shader" ],
+          "extensions" : [ "SPV_EXT_physical_storage_buffer" ],
+          "version" : "1.5"
+        },
+        {
+          "enumerant" : "ComputeDerivativeGroupLinearNV",
+          "value" : 5350,
+          "extensions" : [ "SPV_NV_compute_shader_derivatives" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "RayTracingProvisionalKHR",
+          "value" : 5353,
+          "capabilities" : [ "Shader" ],
+          "extensions" : [ "SPV_KHR_ray_tracing" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "CooperativeMatrixNV",
+          "value" : 5357,
+          "capabilities" : [ "Shader" ],
+          "extensions" : [ "SPV_NV_cooperative_matrix" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "FragmentShaderSampleInterlockEXT",
+          "value" : 5363,
+          "capabilities" : [ "Shader" ],
+          "extensions" : [ "SPV_EXT_fragment_shader_interlock" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "FragmentShaderShadingRateInterlockEXT",
+          "value" : 5372,
+          "capabilities" : [ "Shader" ],
+          "extensions" : [ "SPV_EXT_fragment_shader_interlock" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "ShaderSMBuiltinsNV",
+          "value" : 5373,
+          "capabilities" : [ "Shader" ],
+          "extensions" : [ "SPV_NV_shader_sm_builtins" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "FragmentShaderPixelInterlockEXT",
+          "value" : 5378,
+          "capabilities" : [ "Shader" ],
+          "extensions" : [ "SPV_EXT_fragment_shader_interlock" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "DemoteToHelperInvocationEXT",
+          "value" : 5379,
+          "capabilities" : [ "Shader" ],
+          "extensions" : [ "SPV_EXT_demote_to_helper_invocation" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "SubgroupShuffleINTEL",
+          "value" : 5568,
+          "extensions" : [ "SPV_INTEL_subgroups" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "SubgroupBufferBlockIOINTEL",
+          "value" : 5569,
+          "extensions" : [ "SPV_INTEL_subgroups" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "SubgroupImageBlockIOINTEL",
+          "value" : 5570,
+          "extensions" : [ "SPV_INTEL_subgroups" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "SubgroupImageMediaBlockIOINTEL",
+          "value" : 5579,
+          "extensions" : [ "SPV_INTEL_media_block_io" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "IntegerFunctions2INTEL",
+          "value" : 5584,
+          "capabilities" : [ "Shader" ],
+          "extensions" : [ "SPV_INTEL_shader_integer_functions2" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "FunctionPointersINTEL",
+          "value" : 5603,
+          "extensions" : [ "SPV_INTEL_function_pointers" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "IndirectReferencesINTEL",
+          "value" : 5604,
+          "extensions" : [ "SPV_INTEL_function_pointers" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "SubgroupAvcMotionEstimationINTEL",
+          "value" : 5696,
+          "extensions" : [ "SPV_INTEL_device_side_avc_motion_estimation" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "SubgroupAvcMotionEstimationIntraINTEL",
+          "value" : 5697,
+          "extensions" : [ "SPV_INTEL_device_side_avc_motion_estimation" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "SubgroupAvcMotionEstimationChromaINTEL",
+          "value" : 5698,
+          "extensions" : [ "SPV_INTEL_device_side_avc_motion_estimation" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "FPGAMemoryAttributesINTEL",
+          "value" : 5824,
+          "extensions" : [ "SPV_INTEL_fpga_memory_attributes" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "UnstructuredLoopControlsINTEL",
+          "value" : 5886,
+          "extensions" : [ "SPV_INTEL_unstructured_loop_controls" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "FPGALoopControlsINTEL",
+          "value" : 5888,
+          "extensions" : [ "SPV_INTEL_fpga_loop_controls" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "KernelAttributesINTEL",
+          "value" : 5892,
+          "extensions" : [ "SPV_INTEL_kernel_attributes" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "FPGAKernelAttributesINTEL",
+          "value" : 5897,
+          "extensions" : [ "SPV_INTEL_kernel_attributes" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "BlockingPipesINTEL",
+          "value" : 5945,
+          "extensions" : [ "SPV_INTEL_blocking_pipes" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "FPGARegINTEL",
+          "value" : 5948,
+          "extensions" : [ "SPV_INTEL_fpga_reg" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "AtomicFloat32AddEXT",
+          "value" : 6033,
+          "capabilities" : [ "Shader" ],
+          "extensions" : [ "SPV_EXT_shader_atomic_float_add" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "AtomicFloat64AddEXT",
+          "value" : 6034,
+          "capabilities" : [ "Shader" ],
+          "extensions" : [ "SPV_EXT_shader_atomic_float_add" ],
+          "version" : "None"
+        }
+      ]
+    },
+    {
+      "category" : "ValueEnum",
+      "kind" : "RayQueryIntersection",
+      "enumerants" : [
+        {
+          "enumerant" : "RayQueryCandidateIntersectionKHR",
+          "value" : 0,
+          "capabilities" : [ "RayQueryProvisionalKHR" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "RayQueryCommittedIntersectionKHR",
+          "value" : 1,
+          "capabilities" : [ "RayQueryProvisionalKHR" ],
+          "version" : "None"
+        }
+      ]
+    },
+    {
+      "category" : "ValueEnum",
+      "kind" : "RayQueryCommittedIntersectionType",
+      "enumerants" : [
+        {
+          "enumerant" : "RayQueryCommittedIntersectionNoneKHR",
+          "value" : 0,
+          "capabilities" : [ "RayQueryProvisionalKHR" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "RayQueryCommittedIntersectionTriangleKHR",
+          "value" : 1,
+          "capabilities" : [ "RayQueryProvisionalKHR" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "RayQueryCommittedIntersectionGeneratedKHR",
+          "value" : 2,
+          "capabilities" : [ "RayQueryProvisionalKHR" ],
+          "version" : "None"
+        }
+      ]
+    },
+    {
+      "category" : "ValueEnum",
+      "kind" : "RayQueryCandidateIntersectionType",
+      "enumerants" : [
+        {
+          "enumerant" : "RayQueryCandidateIntersectionTriangleKHR",
+          "value" : 0,
+          "capabilities" : [ "RayQueryProvisionalKHR" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "RayQueryCandidateIntersectionAABBKHR",
+          "value" : 1,
+          "capabilities" : [ "RayQueryProvisionalKHR" ],
+          "version" : "None"
+        }
+      ]
+    },
+    {
+      "category" : "Id",
+      "kind" : "IdResultType",
+      "doc" : "Reference to an <id> representing the result's type of the enclosing instruction"
+    },
+    {
+      "category" : "Id",
+      "kind" : "IdResult",
+      "doc" : "Definition of an <id> representing the result of the enclosing instruction"
+    },
+    {
+      "category" : "Id",
+      "kind" : "IdMemorySemantics",
+      "doc" : "Reference to an <id> representing a 32-bit integer that is a mask from the MemorySemantics operand kind"
+    },
+    {
+      "category" : "Id",
+      "kind" : "IdScope",
+      "doc" : "Reference to an <id> representing a 32-bit integer that is a mask from the Scope operand kind"
+    },
+    {
+      "category" : "Id",
+      "kind" : "IdRef",
+      "doc" : "Reference to an <id>"
+    },
+    {
+      "category" : "Literal",
+      "kind" : "LiteralInteger",
+      "doc" : "An integer consuming one or more words"
+    },
+    {
+      "category" : "Literal",
+      "kind" : "LiteralString",
+      "doc" : "A null-terminated stream of characters consuming an integral number of words"
+    },
+    {
+      "category" : "Literal",
+      "kind" : "LiteralContextDependentNumber",
+      "doc" : "A literal number whose size and format are determined by a previous operand in the enclosing instruction"
+    },
+    {
+      "category" : "Literal",
+      "kind" : "LiteralExtInstInteger",
+      "doc" : "A 32-bit unsigned integer indicating which instruction to use and determining the layout of following operands (for OpExtInst)"
+    },
+    {
+      "category" : "Literal",
+      "kind" : "LiteralSpecConstantOpInteger",
+      "doc" : "An opcode indicating the operation to be performed and determining the layout of following operands (for OpSpecConstantOp)"
+    },
+    {
+      "category" : "Composite",
+      "kind" : "PairLiteralIntegerIdRef",
+      "bases" : [ "LiteralInteger", "IdRef" ]
+    },
+    {
+      "category" : "Composite",
+      "kind" : "PairIdRefLiteralInteger",
+      "bases" : [ "IdRef", "LiteralInteger" ]
+    },
+    {
+      "category" : "Composite",
+      "kind" : "PairIdRefIdRef",
+      "bases" : [ "IdRef", "IdRef" ]
+    }
+  ]
+}
diff --git a/libs/spirv-headers/spirv/unified1/spirv.cs b/libs/spirv-headers/spirv/unified1/spirv.cs
new file mode 100644
index 00000000000..0419c0f7d09
--- /dev/null
+++ b/libs/spirv-headers/spirv/unified1/spirv.cs
@@ -0,0 +1,1622 @@
+// Copyright (c) 2014-2020 The Khronos Group Inc.
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and/or associated documentation files (the "Materials"),
+// to deal in the Materials without restriction, including without limitation
+// the rights to use, copy, modify, merge, publish, distribute, sublicense,
+// and/or sell copies of the Materials, and to permit persons to whom the
+// Materials are furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Materials.
+// 
+// MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS KHRONOS
+// STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS SPECIFICATIONS AND
+// HEADER INFORMATION ARE LOCATED AT https://www.khronos.org/registry/ 
+// 
+// THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM,OUT OF OR IN CONNECTION WITH THE MATERIALS OR THE USE OR OTHER DEALINGS
+// IN THE MATERIALS.
+
+// This header is automatically generated by the same tool that creates
+// the Binary Section of the SPIR-V specification.
+
+// Enumeration tokens for SPIR-V, in various styles:
+//   C, C++, C++11, JSON, Lua, Python, C#, D
+// 
+// - C will have tokens with a "Spv" prefix, e.g.: SpvSourceLanguageGLSL
+// - C++ will have tokens in the "spv" name space, e.g.: spv::SourceLanguageGLSL
+// - C++11 will use enum classes in the spv namespace, e.g.: spv::SourceLanguage::GLSL
+// - Lua will use tables, e.g.: spv.SourceLanguage.GLSL
+// - Python will use dictionaries, e.g.: spv['SourceLanguage']['GLSL']
+// - C# will use enum classes in the Specification class located in the "Spv" namespace,
+//     e.g.: Spv.Specification.SourceLanguage.GLSL
+// - D will have tokens under the "spv" module, e.g: spv.SourceLanguage.GLSL
+// 
+// Some tokens act like mask values, which can be OR'd together,
+// while others are mutually exclusive.  The mask-like ones have
+// "Mask" in their name, and a parallel enum that has the shift
+// amount (1 << x) for each corresponding enumerant.
+
+namespace Spv
+{
+
+    public static class Specification
+    {
+        public const uint MagicNumber = 0x07230203;
+        public const uint Version = 0x00010500;
+        public const uint Revision = 4;
+        public const uint OpCodeMask = 0xffff;
+        public const uint WordCountShift = 16;
+
+        public enum SourceLanguage
+        {
+            Unknown = 0,
+            ESSL = 1,
+            GLSL = 2,
+            OpenCL_C = 3,
+            OpenCL_CPP = 4,
+            HLSL = 5,
+        }
+
+        public enum ExecutionModel
+        {
+            Vertex = 0,
+            TessellationControl = 1,
+            TessellationEvaluation = 2,
+            Geometry = 3,
+            Fragment = 4,
+            GLCompute = 5,
+            Kernel = 6,
+            TaskNV = 5267,
+            MeshNV = 5268,
+            RayGenerationKHR = 5313,
+            RayGenerationNV = 5313,
+            IntersectionKHR = 5314,
+            IntersectionNV = 5314,
+            AnyHitKHR = 5315,
+            AnyHitNV = 5315,
+            ClosestHitKHR = 5316,
+            ClosestHitNV = 5316,
+            MissKHR = 5317,
+            MissNV = 5317,
+            CallableKHR = 5318,
+            CallableNV = 5318,
+        }
+
+        public enum AddressingModel
+        {
+            Logical = 0,
+            Physical32 = 1,
+            Physical64 = 2,
+            PhysicalStorageBuffer64 = 5348,
+            PhysicalStorageBuffer64EXT = 5348,
+        }
+
+        public enum MemoryModel
+        {
+            Simple = 0,
+            GLSL450 = 1,
+            OpenCL = 2,
+            Vulkan = 3,
+            VulkanKHR = 3,
+        }
+
+        public enum ExecutionMode
+        {
+            Invocations = 0,
+            SpacingEqual = 1,
+            SpacingFractionalEven = 2,
+            SpacingFractionalOdd = 3,
+            VertexOrderCw = 4,
+            VertexOrderCcw = 5,
+            PixelCenterInteger = 6,
+            OriginUpperLeft = 7,
+            OriginLowerLeft = 8,
+            EarlyFragmentTests = 9,
+            PointMode = 10,
+            Xfb = 11,
+            DepthReplacing = 12,
+            DepthGreater = 14,
+            DepthLess = 15,
+            DepthUnchanged = 16,
+            LocalSize = 17,
+            LocalSizeHint = 18,
+            InputPoints = 19,
+            InputLines = 20,
+            InputLinesAdjacency = 21,
+            Triangles = 22,
+            InputTrianglesAdjacency = 23,
+            Quads = 24,
+            Isolines = 25,
+            OutputVertices = 26,
+            OutputPoints = 27,
+            OutputLineStrip = 28,
+            OutputTriangleStrip = 29,
+            VecTypeHint = 30,
+            ContractionOff = 31,
+            Initializer = 33,
+            Finalizer = 34,
+            SubgroupSize = 35,
+            SubgroupsPerWorkgroup = 36,
+            SubgroupsPerWorkgroupId = 37,
+            LocalSizeId = 38,
+            LocalSizeHintId = 39,
+            PostDepthCoverage = 4446,
+            DenormPreserve = 4459,
+            DenormFlushToZero = 4460,
+            SignedZeroInfNanPreserve = 4461,
+            RoundingModeRTE = 4462,
+            RoundingModeRTZ = 4463,
+            StencilRefReplacingEXT = 5027,
+            OutputLinesNV = 5269,
+            OutputPrimitivesNV = 5270,
+            DerivativeGroupQuadsNV = 5289,
+            DerivativeGroupLinearNV = 5290,
+            OutputTrianglesNV = 5298,
+            PixelInterlockOrderedEXT = 5366,
+            PixelInterlockUnorderedEXT = 5367,
+            SampleInterlockOrderedEXT = 5368,
+            SampleInterlockUnorderedEXT = 5369,
+            ShadingRateInterlockOrderedEXT = 5370,
+            ShadingRateInterlockUnorderedEXT = 5371,
+            MaxWorkgroupSizeINTEL = 5893,
+            MaxWorkDimINTEL = 5894,
+            NoGlobalOffsetINTEL = 5895,
+            NumSIMDWorkitemsINTEL = 5896,
+        }
+
+        public enum StorageClass
+        {
+            UniformConstant = 0,
+            Input = 1,
+            Uniform = 2,
+            Output = 3,
+            Workgroup = 4,
+            CrossWorkgroup = 5,
+            Private = 6,
+            Function = 7,
+            Generic = 8,
+            PushConstant = 9,
+            AtomicCounter = 10,
+            Image = 11,
+            StorageBuffer = 12,
+            CallableDataKHR = 5328,
+            CallableDataNV = 5328,
+            IncomingCallableDataKHR = 5329,
+            IncomingCallableDataNV = 5329,
+            RayPayloadKHR = 5338,
+            RayPayloadNV = 5338,
+            HitAttributeKHR = 5339,
+            HitAttributeNV = 5339,
+            IncomingRayPayloadKHR = 5342,
+            IncomingRayPayloadNV = 5342,
+            ShaderRecordBufferKHR = 5343,
+            ShaderRecordBufferNV = 5343,
+            PhysicalStorageBuffer = 5349,
+            PhysicalStorageBufferEXT = 5349,
+            CodeSectionINTEL = 5605,
+        }
+
+        public enum Dim
+        {
+            Dim1D = 0,
+            Dim2D = 1,
+            Dim3D = 2,
+            Cube = 3,
+            Rect = 4,
+            Buffer = 5,
+            SubpassData = 6,
+        }
+
+        public enum SamplerAddressingMode
+        {
+            None = 0,
+            ClampToEdge = 1,
+            Clamp = 2,
+            Repeat = 3,
+            RepeatMirrored = 4,
+        }
+
+        public enum SamplerFilterMode
+        {
+            Nearest = 0,
+            Linear = 1,
+        }
+
+        public enum ImageFormat
+        {
+            Unknown = 0,
+            Rgba32f = 1,
+            Rgba16f = 2,
+            R32f = 3,
+            Rgba8 = 4,
+            Rgba8Snorm = 5,
+            Rg32f = 6,
+            Rg16f = 7,
+            R11fG11fB10f = 8,
+            R16f = 9,
+            Rgba16 = 10,
+            Rgb10A2 = 11,
+            Rg16 = 12,
+            Rg8 = 13,
+            R16 = 14,
+            R8 = 15,
+            Rgba16Snorm = 16,
+            Rg16Snorm = 17,
+            Rg8Snorm = 18,
+            R16Snorm = 19,
+            R8Snorm = 20,
+            Rgba32i = 21,
+            Rgba16i = 22,
+            Rgba8i = 23,
+            R32i = 24,
+            Rg32i = 25,
+            Rg16i = 26,
+            Rg8i = 27,
+            R16i = 28,
+            R8i = 29,
+            Rgba32ui = 30,
+            Rgba16ui = 31,
+            Rgba8ui = 32,
+            R32ui = 33,
+            Rgb10a2ui = 34,
+            Rg32ui = 35,
+            Rg16ui = 36,
+            Rg8ui = 37,
+            R16ui = 38,
+            R8ui = 39,
+            R64ui = 40,
+            R64i = 41,
+        }
+
+        public enum ImageChannelOrder
+        {
+            R = 0,
+            A = 1,
+            RG = 2,
+            RA = 3,
+            RGB = 4,
+            RGBA = 5,
+            BGRA = 6,
+            ARGB = 7,
+            Intensity = 8,
+            Luminance = 9,
+            Rx = 10,
+            RGx = 11,
+            RGBx = 12,
+            Depth = 13,
+            DepthStencil = 14,
+            sRGB = 15,
+            sRGBx = 16,
+            sRGBA = 17,
+            sBGRA = 18,
+            ABGR = 19,
+        }
+
+        public enum ImageChannelDataType
+        {
+            SnormInt8 = 0,
+            SnormInt16 = 1,
+            UnormInt8 = 2,
+            UnormInt16 = 3,
+            UnormShort565 = 4,
+            UnormShort555 = 5,
+            UnormInt101010 = 6,
+            SignedInt8 = 7,
+            SignedInt16 = 8,
+            SignedInt32 = 9,
+            UnsignedInt8 = 10,
+            UnsignedInt16 = 11,
+            UnsignedInt32 = 12,
+            HalfFloat = 13,
+            Float = 14,
+            UnormInt24 = 15,
+            UnormInt101010_2 = 16,
+        }
+
+        public enum ImageOperandsShift
+        {
+            Bias = 0,
+            Lod = 1,
+            Grad = 2,
+            ConstOffset = 3,
+            Offset = 4,
+            ConstOffsets = 5,
+            Sample = 6,
+            MinLod = 7,
+            MakeTexelAvailable = 8,
+            MakeTexelAvailableKHR = 8,
+            MakeTexelVisible = 9,
+            MakeTexelVisibleKHR = 9,
+            NonPrivateTexel = 10,
+            NonPrivateTexelKHR = 10,
+            VolatileTexel = 11,
+            VolatileTexelKHR = 11,
+            SignExtend = 12,
+            ZeroExtend = 13,
+        }
+
+        public enum ImageOperandsMask
+        {
+            MaskNone = 0,
+            Bias = 0x00000001,
+            Lod = 0x00000002,
+            Grad = 0x00000004,
+            ConstOffset = 0x00000008,
+            Offset = 0x00000010,
+            ConstOffsets = 0x00000020,
+            Sample = 0x00000040,
+            MinLod = 0x00000080,
+            MakeTexelAvailable = 0x00000100,
+            MakeTexelAvailableKHR = 0x00000100,
+            MakeTexelVisible = 0x00000200,
+            MakeTexelVisibleKHR = 0x00000200,
+            NonPrivateTexel = 0x00000400,
+            NonPrivateTexelKHR = 0x00000400,
+            VolatileTexel = 0x00000800,
+            VolatileTexelKHR = 0x00000800,
+            SignExtend = 0x00001000,
+            ZeroExtend = 0x00002000,
+        }
+
+        public enum FPFastMathModeShift
+        {
+            NotNaN = 0,
+            NotInf = 1,
+            NSZ = 2,
+            AllowRecip = 3,
+            Fast = 4,
+        }
+
+        public enum FPFastMathModeMask
+        {
+            MaskNone = 0,
+            NotNaN = 0x00000001,
+            NotInf = 0x00000002,
+            NSZ = 0x00000004,
+            AllowRecip = 0x00000008,
+            Fast = 0x00000010,
+        }
+
+        public enum FPRoundingMode
+        {
+            RTE = 0,
+            RTZ = 1,
+            RTP = 2,
+            RTN = 3,
+        }
+
+        public enum LinkageType
+        {
+            Export = 0,
+            Import = 1,
+        }
+
+        public enum AccessQualifier
+        {
+            ReadOnly = 0,
+            WriteOnly = 1,
+            ReadWrite = 2,
+        }
+
+        public enum FunctionParameterAttribute
+        {
+            Zext = 0,
+            Sext = 1,
+            ByVal = 2,
+            Sret = 3,
+            NoAlias = 4,
+            NoCapture = 5,
+            NoWrite = 6,
+            NoReadWrite = 7,
+        }
+
+        public enum Decoration
+        {
+            RelaxedPrecision = 0,
+            SpecId = 1,
+            Block = 2,
+            BufferBlock = 3,
+            RowMajor = 4,
+            ColMajor = 5,
+            ArrayStride = 6,
+            MatrixStride = 7,
+            GLSLShared = 8,
+            GLSLPacked = 9,
+            CPacked = 10,
+            BuiltIn = 11,
+            NoPerspective = 13,
+            Flat = 14,
+            Patch = 15,
+            Centroid = 16,
+            Sample = 17,
+            Invariant = 18,
+            Restrict = 19,
+            Aliased = 20,
+            Volatile = 21,
+            Constant = 22,
+            Coherent = 23,
+            NonWritable = 24,
+            NonReadable = 25,
+            Uniform = 26,
+            UniformId = 27,
+            SaturatedConversion = 28,
+            Stream = 29,
+            Location = 30,
+            Component = 31,
+            Index = 32,
+            Binding = 33,
+            DescriptorSet = 34,
+            Offset = 35,
+            XfbBuffer = 36,
+            XfbStride = 37,
+            FuncParamAttr = 38,
+            FPRoundingMode = 39,
+            FPFastMathMode = 40,
+            LinkageAttributes = 41,
+            NoContraction = 42,
+            InputAttachmentIndex = 43,
+            Alignment = 44,
+            MaxByteOffset = 45,
+            AlignmentId = 46,
+            MaxByteOffsetId = 47,
+            NoSignedWrap = 4469,
+            NoUnsignedWrap = 4470,
+            ExplicitInterpAMD = 4999,
+            OverrideCoverageNV = 5248,
+            PassthroughNV = 5250,
+            ViewportRelativeNV = 5252,
+            SecondaryViewportRelativeNV = 5256,
+            PerPrimitiveNV = 5271,
+            PerViewNV = 5272,
+            PerTaskNV = 5273,
+            PerVertexNV = 5285,
+            NonUniform = 5300,
+            NonUniformEXT = 5300,
+            RestrictPointer = 5355,
+            RestrictPointerEXT = 5355,
+            AliasedPointer = 5356,
+            AliasedPointerEXT = 5356,
+            ReferencedIndirectlyINTEL = 5602,
+            CounterBuffer = 5634,
+            HlslCounterBufferGOOGLE = 5634,
+            HlslSemanticGOOGLE = 5635,
+            UserSemantic = 5635,
+            UserTypeGOOGLE = 5636,
+            RegisterINTEL = 5825,
+            MemoryINTEL = 5826,
+            NumbanksINTEL = 5827,
+            BankwidthINTEL = 5828,
+            MaxPrivateCopiesINTEL = 5829,
+            SinglepumpINTEL = 5830,
+            DoublepumpINTEL = 5831,
+            MaxReplicatesINTEL = 5832,
+            SimpleDualPortINTEL = 5833,
+            MergeINTEL = 5834,
+            BankBitsINTEL = 5835,
+            ForcePow2DepthINTEL = 5836,
+        }
+
+        public enum BuiltIn
+        {
+            Position = 0,
+            PointSize = 1,
+            ClipDistance = 3,
+            CullDistance = 4,
+            VertexId = 5,
+            InstanceId = 6,
+            PrimitiveId = 7,
+            InvocationId = 8,
+            Layer = 9,
+            ViewportIndex = 10,
+            TessLevelOuter = 11,
+            TessLevelInner = 12,
+            TessCoord = 13,
+            PatchVertices = 14,
+            FragCoord = 15,
+            PointCoord = 16,
+            FrontFacing = 17,
+            SampleId = 18,
+            SamplePosition = 19,
+            SampleMask = 20,
+            FragDepth = 22,
+            HelperInvocation = 23,
+            NumWorkgroups = 24,
+            WorkgroupSize = 25,
+            WorkgroupId = 26,
+            LocalInvocationId = 27,
+            GlobalInvocationId = 28,
+            LocalInvocationIndex = 29,
+            WorkDim = 30,
+            GlobalSize = 31,
+            EnqueuedWorkgroupSize = 32,
+            GlobalOffset = 33,
+            GlobalLinearId = 34,
+            SubgroupSize = 36,
+            SubgroupMaxSize = 37,
+            NumSubgroups = 38,
+            NumEnqueuedSubgroups = 39,
+            SubgroupId = 40,
+            SubgroupLocalInvocationId = 41,
+            VertexIndex = 42,
+            InstanceIndex = 43,
+            SubgroupEqMask = 4416,
+            SubgroupEqMaskKHR = 4416,
+            SubgroupGeMask = 4417,
+            SubgroupGeMaskKHR = 4417,
+            SubgroupGtMask = 4418,
+            SubgroupGtMaskKHR = 4418,
+            SubgroupLeMask = 4419,
+            SubgroupLeMaskKHR = 4419,
+            SubgroupLtMask = 4420,
+            SubgroupLtMaskKHR = 4420,
+            BaseVertex = 4424,
+            BaseInstance = 4425,
+            DrawIndex = 4426,
+            PrimitiveShadingRateKHR = 4432,
+            DeviceIndex = 4438,
+            ViewIndex = 4440,
+            ShadingRateKHR = 4444,
+            BaryCoordNoPerspAMD = 4992,
+            BaryCoordNoPerspCentroidAMD = 4993,
+            BaryCoordNoPerspSampleAMD = 4994,
+            BaryCoordSmoothAMD = 4995,
+            BaryCoordSmoothCentroidAMD = 4996,
+            BaryCoordSmoothSampleAMD = 4997,
+            BaryCoordPullModelAMD = 4998,
+            FragStencilRefEXT = 5014,
+            ViewportMaskNV = 5253,
+            SecondaryPositionNV = 5257,
+            SecondaryViewportMaskNV = 5258,
+            PositionPerViewNV = 5261,
+            ViewportMaskPerViewNV = 5262,
+            FullyCoveredEXT = 5264,
+            TaskCountNV = 5274,
+            PrimitiveCountNV = 5275,
+            PrimitiveIndicesNV = 5276,
+            ClipDistancePerViewNV = 5277,
+            CullDistancePerViewNV = 5278,
+            LayerPerViewNV = 5279,
+            MeshViewCountNV = 5280,
+            MeshViewIndicesNV = 5281,
+            BaryCoordNV = 5286,
+            BaryCoordNoPerspNV = 5287,
+            FragSizeEXT = 5292,
+            FragmentSizeNV = 5292,
+            FragInvocationCountEXT = 5293,
+            InvocationsPerPixelNV = 5293,
+            LaunchIdKHR = 5319,
+            LaunchIdNV = 5319,
+            LaunchSizeKHR = 5320,
+            LaunchSizeNV = 5320,
+            WorldRayOriginKHR = 5321,
+            WorldRayOriginNV = 5321,
+            WorldRayDirectionKHR = 5322,
+            WorldRayDirectionNV = 5322,
+            ObjectRayOriginKHR = 5323,
+            ObjectRayOriginNV = 5323,
+            ObjectRayDirectionKHR = 5324,
+            ObjectRayDirectionNV = 5324,
+            RayTminKHR = 5325,
+            RayTminNV = 5325,
+            RayTmaxKHR = 5326,
+            RayTmaxNV = 5326,
+            InstanceCustomIndexKHR = 5327,
+            InstanceCustomIndexNV = 5327,
+            ObjectToWorldKHR = 5330,
+            ObjectToWorldNV = 5330,
+            WorldToObjectKHR = 5331,
+            WorldToObjectNV = 5331,
+            HitTKHR = 5332,
+            HitTNV = 5332,
+            HitKindKHR = 5333,
+            HitKindNV = 5333,
+            IncomingRayFlagsKHR = 5351,
+            IncomingRayFlagsNV = 5351,
+            RayGeometryIndexKHR = 5352,
+            WarpsPerSMNV = 5374,
+            SMCountNV = 5375,
+            WarpIDNV = 5376,
+            SMIDNV = 5377,
+        }
+
+        public enum SelectionControlShift
+        {
+            Flatten = 0,
+            DontFlatten = 1,
+        }
+
+        public enum SelectionControlMask
+        {
+            MaskNone = 0,
+            Flatten = 0x00000001,
+            DontFlatten = 0x00000002,
+        }
+
+        public enum LoopControlShift
+        {
+            Unroll = 0,
+            DontUnroll = 1,
+            DependencyInfinite = 2,
+            DependencyLength = 3,
+            MinIterations = 4,
+            MaxIterations = 5,
+            IterationMultiple = 6,
+            PeelCount = 7,
+            PartialCount = 8,
+            InitiationIntervalINTEL = 16,
+            MaxConcurrencyINTEL = 17,
+            DependencyArrayINTEL = 18,
+            PipelineEnableINTEL = 19,
+            LoopCoalesceINTEL = 20,
+            MaxInterleavingINTEL = 21,
+            SpeculatedIterationsINTEL = 22,
+        }
+
+        public enum LoopControlMask
+        {
+            MaskNone = 0,
+            Unroll = 0x00000001,
+            DontUnroll = 0x00000002,
+            DependencyInfinite = 0x00000004,
+            DependencyLength = 0x00000008,
+            MinIterations = 0x00000010,
+            MaxIterations = 0x00000020,
+            IterationMultiple = 0x00000040,
+            PeelCount = 0x00000080,
+            PartialCount = 0x00000100,
+            InitiationIntervalINTEL = 0x00010000,
+            MaxConcurrencyINTEL = 0x00020000,
+            DependencyArrayINTEL = 0x00040000,
+            PipelineEnableINTEL = 0x00080000,
+            LoopCoalesceINTEL = 0x00100000,
+            MaxInterleavingINTEL = 0x00200000,
+            SpeculatedIterationsINTEL = 0x00400000,
+        }
+
+        public enum FunctionControlShift
+        {
+            Inline = 0,
+            DontInline = 1,
+            Pure = 2,
+            Const = 3,
+        }
+
+        public enum FunctionControlMask
+        {
+            MaskNone = 0,
+            Inline = 0x00000001,
+            DontInline = 0x00000002,
+            Pure = 0x00000004,
+            Const = 0x00000008,
+        }
+
+        public enum MemorySemanticsShift
+        {
+            Acquire = 1,
+            Release = 2,
+            AcquireRelease = 3,
+            SequentiallyConsistent = 4,
+            UniformMemory = 6,
+            SubgroupMemory = 7,
+            WorkgroupMemory = 8,
+            CrossWorkgroupMemory = 9,
+            AtomicCounterMemory = 10,
+            ImageMemory = 11,
+            OutputMemory = 12,
+            OutputMemoryKHR = 12,
+            MakeAvailable = 13,
+            MakeAvailableKHR = 13,
+            MakeVisible = 14,
+            MakeVisibleKHR = 14,
+            Volatile = 15,
+        }
+
+        public enum MemorySemanticsMask
+        {
+            MaskNone = 0,
+            Acquire = 0x00000002,
+            Release = 0x00000004,
+            AcquireRelease = 0x00000008,
+            SequentiallyConsistent = 0x00000010,
+            UniformMemory = 0x00000040,
+            SubgroupMemory = 0x00000080,
+            WorkgroupMemory = 0x00000100,
+            CrossWorkgroupMemory = 0x00000200,
+            AtomicCounterMemory = 0x00000400,
+            ImageMemory = 0x00000800,
+            OutputMemory = 0x00001000,
+            OutputMemoryKHR = 0x00001000,
+            MakeAvailable = 0x00002000,
+            MakeAvailableKHR = 0x00002000,
+            MakeVisible = 0x00004000,
+            MakeVisibleKHR = 0x00004000,
+            Volatile = 0x00008000,
+        }
+
+        public enum MemoryAccessShift
+        {
+            Volatile = 0,
+            Aligned = 1,
+            Nontemporal = 2,
+            MakePointerAvailable = 3,
+            MakePointerAvailableKHR = 3,
+            MakePointerVisible = 4,
+            MakePointerVisibleKHR = 4,
+            NonPrivatePointer = 5,
+            NonPrivatePointerKHR = 5,
+        }
+
+        public enum MemoryAccessMask
+        {
+            MaskNone = 0,
+            Volatile = 0x00000001,
+            Aligned = 0x00000002,
+            Nontemporal = 0x00000004,
+            MakePointerAvailable = 0x00000008,
+            MakePointerAvailableKHR = 0x00000008,
+            MakePointerVisible = 0x00000010,
+            MakePointerVisibleKHR = 0x00000010,
+            NonPrivatePointer = 0x00000020,
+            NonPrivatePointerKHR = 0x00000020,
+        }
+
+        public enum Scope
+        {
+            CrossDevice = 0,
+            Device = 1,
+            Workgroup = 2,
+            Subgroup = 3,
+            Invocation = 4,
+            QueueFamily = 5,
+            QueueFamilyKHR = 5,
+            ShaderCallKHR = 6,
+        }
+
+        public enum GroupOperation
+        {
+            Reduce = 0,
+            InclusiveScan = 1,
+            ExclusiveScan = 2,
+            ClusteredReduce = 3,
+            PartitionedReduceNV = 6,
+            PartitionedInclusiveScanNV = 7,
+            PartitionedExclusiveScanNV = 8,
+        }
+
+        public enum KernelEnqueueFlags
+        {
+            NoWait = 0,
+            WaitKernel = 1,
+            WaitWorkGroup = 2,
+        }
+
+        public enum KernelProfilingInfoShift
+        {
+            CmdExecTime = 0,
+        }
+
+        public enum KernelProfilingInfoMask
+        {
+            MaskNone = 0,
+            CmdExecTime = 0x00000001,
+        }
+
+        public enum Capability
+        {
+            Matrix = 0,
+            Shader = 1,
+            Geometry = 2,
+            Tessellation = 3,
+            Addresses = 4,
+            Linkage = 5,
+            Kernel = 6,
+            Vector16 = 7,
+            Float16Buffer = 8,
+            Float16 = 9,
+            Float64 = 10,
+            Int64 = 11,
+            Int64Atomics = 12,
+            ImageBasic = 13,
+            ImageReadWrite = 14,
+            ImageMipmap = 15,
+            Pipes = 17,
+            Groups = 18,
+            DeviceEnqueue = 19,
+            LiteralSampler = 20,
+            AtomicStorage = 21,
+            Int16 = 22,
+            TessellationPointSize = 23,
+            GeometryPointSize = 24,
+            ImageGatherExtended = 25,
+            StorageImageMultisample = 27,
+            UniformBufferArrayDynamicIndexing = 28,
+            SampledImageArrayDynamicIndexing = 29,
+            StorageBufferArrayDynamicIndexing = 30,
+            StorageImageArrayDynamicIndexing = 31,
+            ClipDistance = 32,
+            CullDistance = 33,
+            ImageCubeArray = 34,
+            SampleRateShading = 35,
+            ImageRect = 36,
+            SampledRect = 37,
+            GenericPointer = 38,
+            Int8 = 39,
+            InputAttachment = 40,
+            SparseResidency = 41,
+            MinLod = 42,
+            Sampled1D = 43,
+            Image1D = 44,
+            SampledCubeArray = 45,
+            SampledBuffer = 46,
+            ImageBuffer = 47,
+            ImageMSArray = 48,
+            StorageImageExtendedFormats = 49,
+            ImageQuery = 50,
+            DerivativeControl = 51,
+            InterpolationFunction = 52,
+            TransformFeedback = 53,
+            GeometryStreams = 54,
+            StorageImageReadWithoutFormat = 55,
+            StorageImageWriteWithoutFormat = 56,
+            MultiViewport = 57,
+            SubgroupDispatch = 58,
+            NamedBarrier = 59,
+            PipeStorage = 60,
+            GroupNonUniform = 61,
+            GroupNonUniformVote = 62,
+            GroupNonUniformArithmetic = 63,
+            GroupNonUniformBallot = 64,
+            GroupNonUniformShuffle = 65,
+            GroupNonUniformShuffleRelative = 66,
+            GroupNonUniformClustered = 67,
+            GroupNonUniformQuad = 68,
+            ShaderLayer = 69,
+            ShaderViewportIndex = 70,
+            FragmentShadingRateKHR = 4422,
+            SubgroupBallotKHR = 4423,
+            DrawParameters = 4427,
+            SubgroupVoteKHR = 4431,
+            StorageBuffer16BitAccess = 4433,
+            StorageUniformBufferBlock16 = 4433,
+            StorageUniform16 = 4434,
+            UniformAndStorageBuffer16BitAccess = 4434,
+            StoragePushConstant16 = 4435,
+            StorageInputOutput16 = 4436,
+            DeviceGroup = 4437,
+            MultiView = 4439,
+            VariablePointersStorageBuffer = 4441,
+            VariablePointers = 4442,
+            AtomicStorageOps = 4445,
+            SampleMaskPostDepthCoverage = 4447,
+            StorageBuffer8BitAccess = 4448,
+            UniformAndStorageBuffer8BitAccess = 4449,
+            StoragePushConstant8 = 4450,
+            DenormPreserve = 4464,
+            DenormFlushToZero = 4465,
+            SignedZeroInfNanPreserve = 4466,
+            RoundingModeRTE = 4467,
+            RoundingModeRTZ = 4468,
+            RayQueryProvisionalKHR = 4471,
+            RayTraversalPrimitiveCullingProvisionalKHR = 4478,
+            Float16ImageAMD = 5008,
+            ImageGatherBiasLodAMD = 5009,
+            FragmentMaskAMD = 5010,
+            StencilExportEXT = 5013,
+            ImageReadWriteLodAMD = 5015,
+            Int64ImageEXT = 5016,
+            ShaderClockKHR = 5055,
+            SampleMaskOverrideCoverageNV = 5249,
+            GeometryShaderPassthroughNV = 5251,
+            ShaderViewportIndexLayerEXT = 5254,
+            ShaderViewportIndexLayerNV = 5254,
+            ShaderViewportMaskNV = 5255,
+            ShaderStereoViewNV = 5259,
+            PerViewAttributesNV = 5260,
+            FragmentFullyCoveredEXT = 5265,
+            MeshShadingNV = 5266,
+            ImageFootprintNV = 5282,
+            FragmentBarycentricNV = 5284,
+            ComputeDerivativeGroupQuadsNV = 5288,
+            FragmentDensityEXT = 5291,
+            ShadingRateNV = 5291,
+            GroupNonUniformPartitionedNV = 5297,
+            ShaderNonUniform = 5301,
+            ShaderNonUniformEXT = 5301,
+            RuntimeDescriptorArray = 5302,
+            RuntimeDescriptorArrayEXT = 5302,
+            InputAttachmentArrayDynamicIndexing = 5303,
+            InputAttachmentArrayDynamicIndexingEXT = 5303,
+            UniformTexelBufferArrayDynamicIndexing = 5304,
+            UniformTexelBufferArrayDynamicIndexingEXT = 5304,
+            StorageTexelBufferArrayDynamicIndexing = 5305,
+            StorageTexelBufferArrayDynamicIndexingEXT = 5305,
+            UniformBufferArrayNonUniformIndexing = 5306,
+            UniformBufferArrayNonUniformIndexingEXT = 5306,
+            SampledImageArrayNonUniformIndexing = 5307,
+            SampledImageArrayNonUniformIndexingEXT = 5307,
+            StorageBufferArrayNonUniformIndexing = 5308,
+            StorageBufferArrayNonUniformIndexingEXT = 5308,
+            StorageImageArrayNonUniformIndexing = 5309,
+            StorageImageArrayNonUniformIndexingEXT = 5309,
+            InputAttachmentArrayNonUniformIndexing = 5310,
+            InputAttachmentArrayNonUniformIndexingEXT = 5310,
+            UniformTexelBufferArrayNonUniformIndexing = 5311,
+            UniformTexelBufferArrayNonUniformIndexingEXT = 5311,
+            StorageTexelBufferArrayNonUniformIndexing = 5312,
+            StorageTexelBufferArrayNonUniformIndexingEXT = 5312,
+            RayTracingNV = 5340,
+            VulkanMemoryModel = 5345,
+            VulkanMemoryModelKHR = 5345,
+            VulkanMemoryModelDeviceScope = 5346,
+            VulkanMemoryModelDeviceScopeKHR = 5346,
+            PhysicalStorageBufferAddresses = 5347,
+            PhysicalStorageBufferAddressesEXT = 5347,
+            ComputeDerivativeGroupLinearNV = 5350,
+            RayTracingProvisionalKHR = 5353,
+            CooperativeMatrixNV = 5357,
+            FragmentShaderSampleInterlockEXT = 5363,
+            FragmentShaderShadingRateInterlockEXT = 5372,
+            ShaderSMBuiltinsNV = 5373,
+            FragmentShaderPixelInterlockEXT = 5378,
+            DemoteToHelperInvocationEXT = 5379,
+            SubgroupShuffleINTEL = 5568,
+            SubgroupBufferBlockIOINTEL = 5569,
+            SubgroupImageBlockIOINTEL = 5570,
+            SubgroupImageMediaBlockIOINTEL = 5579,
+            IntegerFunctions2INTEL = 5584,
+            FunctionPointersINTEL = 5603,
+            IndirectReferencesINTEL = 5604,
+            SubgroupAvcMotionEstimationINTEL = 5696,
+            SubgroupAvcMotionEstimationIntraINTEL = 5697,
+            SubgroupAvcMotionEstimationChromaINTEL = 5698,
+            FPGAMemoryAttributesINTEL = 5824,
+            UnstructuredLoopControlsINTEL = 5886,
+            FPGALoopControlsINTEL = 5888,
+            KernelAttributesINTEL = 5892,
+            FPGAKernelAttributesINTEL = 5897,
+            BlockingPipesINTEL = 5945,
+            FPGARegINTEL = 5948,
+            AtomicFloat32AddEXT = 6033,
+            AtomicFloat64AddEXT = 6034,
+        }
+
+        public enum RayFlagsShift
+        {
+            OpaqueKHR = 0,
+            NoOpaqueKHR = 1,
+            TerminateOnFirstHitKHR = 2,
+            SkipClosestHitShaderKHR = 3,
+            CullBackFacingTrianglesKHR = 4,
+            CullFrontFacingTrianglesKHR = 5,
+            CullOpaqueKHR = 6,
+            CullNoOpaqueKHR = 7,
+            SkipTrianglesKHR = 8,
+            SkipAABBsKHR = 9,
+        }
+
+        public enum RayFlagsMask
+        {
+            MaskNone = 0,
+            OpaqueKHR = 0x00000001,
+            NoOpaqueKHR = 0x00000002,
+            TerminateOnFirstHitKHR = 0x00000004,
+            SkipClosestHitShaderKHR = 0x00000008,
+            CullBackFacingTrianglesKHR = 0x00000010,
+            CullFrontFacingTrianglesKHR = 0x00000020,
+            CullOpaqueKHR = 0x00000040,
+            CullNoOpaqueKHR = 0x00000080,
+            SkipTrianglesKHR = 0x00000100,
+            SkipAABBsKHR = 0x00000200,
+        }
+
+        public enum RayQueryIntersection
+        {
+            RayQueryCandidateIntersectionKHR = 0,
+            RayQueryCommittedIntersectionKHR = 1,
+        }
+
+        public enum RayQueryCommittedIntersectionType
+        {
+            RayQueryCommittedIntersectionNoneKHR = 0,
+            RayQueryCommittedIntersectionTriangleKHR = 1,
+            RayQueryCommittedIntersectionGeneratedKHR = 2,
+        }
+
+        public enum RayQueryCandidateIntersectionType
+        {
+            RayQueryCandidateIntersectionTriangleKHR = 0,
+            RayQueryCandidateIntersectionAABBKHR = 1,
+        }
+
+        public enum FragmentShadingRateShift
+        {
+            Vertical2Pixels = 0,
+            Vertical4Pixels = 1,
+            Horizontal2Pixels = 2,
+            Horizontal4Pixels = 3,
+        }
+
+        public enum FragmentShadingRateMask
+        {
+            MaskNone = 0,
+            Vertical2Pixels = 0x00000001,
+            Vertical4Pixels = 0x00000002,
+            Horizontal2Pixels = 0x00000004,
+            Horizontal4Pixels = 0x00000008,
+        }
+
+        public enum Op
+        {
+            OpNop = 0,
+            OpUndef = 1,
+            OpSourceContinued = 2,
+            OpSource = 3,
+            OpSourceExtension = 4,
+            OpName = 5,
+            OpMemberName = 6,
+            OpString = 7,
+            OpLine = 8,
+            OpExtension = 10,
+            OpExtInstImport = 11,
+            OpExtInst = 12,
+            OpMemoryModel = 14,
+            OpEntryPoint = 15,
+            OpExecutionMode = 16,
+            OpCapability = 17,
+            OpTypeVoid = 19,
+            OpTypeBool = 20,
+            OpTypeInt = 21,
+            OpTypeFloat = 22,
+            OpTypeVector = 23,
+            OpTypeMatrix = 24,
+            OpTypeImage = 25,
+            OpTypeSampler = 26,
+            OpTypeSampledImage = 27,
+            OpTypeArray = 28,
+            OpTypeRuntimeArray = 29,
+            OpTypeStruct = 30,
+            OpTypeOpaque = 31,
+            OpTypePointer = 32,
+            OpTypeFunction = 33,
+            OpTypeEvent = 34,
+            OpTypeDeviceEvent = 35,
+            OpTypeReserveId = 36,
+            OpTypeQueue = 37,
+            OpTypePipe = 38,
+            OpTypeForwardPointer = 39,
+            OpConstantTrue = 41,
+            OpConstantFalse = 42,
+            OpConstant = 43,
+            OpConstantComposite = 44,
+            OpConstantSampler = 45,
+            OpConstantNull = 46,
+            OpSpecConstantTrue = 48,
+            OpSpecConstantFalse = 49,
+            OpSpecConstant = 50,
+            OpSpecConstantComposite = 51,
+            OpSpecConstantOp = 52,
+            OpFunction = 54,
+            OpFunctionParameter = 55,
+            OpFunctionEnd = 56,
+            OpFunctionCall = 57,
+            OpVariable = 59,
+            OpImageTexelPointer = 60,
+            OpLoad = 61,
+            OpStore = 62,
+            OpCopyMemory = 63,
+            OpCopyMemorySized = 64,
+            OpAccessChain = 65,
+            OpInBoundsAccessChain = 66,
+            OpPtrAccessChain = 67,
+            OpArrayLength = 68,
+            OpGenericPtrMemSemantics = 69,
+            OpInBoundsPtrAccessChain = 70,
+            OpDecorate = 71,
+            OpMemberDecorate = 72,
+            OpDecorationGroup = 73,
+            OpGroupDecorate = 74,
+            OpGroupMemberDecorate = 75,
+            OpVectorExtractDynamic = 77,
+            OpVectorInsertDynamic = 78,
+            OpVectorShuffle = 79,
+            OpCompositeConstruct = 80,
+            OpCompositeExtract = 81,
+            OpCompositeInsert = 82,
+            OpCopyObject = 83,
+            OpTranspose = 84,
+            OpSampledImage = 86,
+            OpImageSampleImplicitLod = 87,
+            OpImageSampleExplicitLod = 88,
+            OpImageSampleDrefImplicitLod = 89,
+            OpImageSampleDrefExplicitLod = 90,
+            OpImageSampleProjImplicitLod = 91,
+            OpImageSampleProjExplicitLod = 92,
+            OpImageSampleProjDrefImplicitLod = 93,
+            OpImageSampleProjDrefExplicitLod = 94,
+            OpImageFetch = 95,
+            OpImageGather = 96,
+            OpImageDrefGather = 97,
+            OpImageRead = 98,
+            OpImageWrite = 99,
+            OpImage = 100,
+            OpImageQueryFormat = 101,
+            OpImageQueryOrder = 102,
+            OpImageQuerySizeLod = 103,
+            OpImageQuerySize = 104,
+            OpImageQueryLod = 105,
+            OpImageQueryLevels = 106,
+            OpImageQuerySamples = 107,
+            OpConvertFToU = 109,
+            OpConvertFToS = 110,
+            OpConvertSToF = 111,
+            OpConvertUToF = 112,
+            OpUConvert = 113,
+            OpSConvert = 114,
+            OpFConvert = 115,
+            OpQuantizeToF16 = 116,
+            OpConvertPtrToU = 117,
+            OpSatConvertSToU = 118,
+            OpSatConvertUToS = 119,
+            OpConvertUToPtr = 120,
+            OpPtrCastToGeneric = 121,
+            OpGenericCastToPtr = 122,
+            OpGenericCastToPtrExplicit = 123,
+            OpBitcast = 124,
+            OpSNegate = 126,
+            OpFNegate = 127,
+            OpIAdd = 128,
+            OpFAdd = 129,
+            OpISub = 130,
+            OpFSub = 131,
+            OpIMul = 132,
+            OpFMul = 133,
+            OpUDiv = 134,
+            OpSDiv = 135,
+            OpFDiv = 136,
+            OpUMod = 137,
+            OpSRem = 138,
+            OpSMod = 139,
+            OpFRem = 140,
+            OpFMod = 141,
+            OpVectorTimesScalar = 142,
+            OpMatrixTimesScalar = 143,
+            OpVectorTimesMatrix = 144,
+            OpMatrixTimesVector = 145,
+            OpMatrixTimesMatrix = 146,
+            OpOuterProduct = 147,
+            OpDot = 148,
+            OpIAddCarry = 149,
+            OpISubBorrow = 150,
+            OpUMulExtended = 151,
+            OpSMulExtended = 152,
+            OpAny = 154,
+            OpAll = 155,
+            OpIsNan = 156,
+            OpIsInf = 157,
+            OpIsFinite = 158,
+            OpIsNormal = 159,
+            OpSignBitSet = 160,
+            OpLessOrGreater = 161,
+            OpOrdered = 162,
+            OpUnordered = 163,
+            OpLogicalEqual = 164,
+            OpLogicalNotEqual = 165,
+            OpLogicalOr = 166,
+            OpLogicalAnd = 167,
+            OpLogicalNot = 168,
+            OpSelect = 169,
+            OpIEqual = 170,
+            OpINotEqual = 171,
+            OpUGreaterThan = 172,
+            OpSGreaterThan = 173,
+            OpUGreaterThanEqual = 174,
+            OpSGreaterThanEqual = 175,
+            OpULessThan = 176,
+            OpSLessThan = 177,
+            OpULessThanEqual = 178,
+            OpSLessThanEqual = 179,
+            OpFOrdEqual = 180,
+            OpFUnordEqual = 181,
+            OpFOrdNotEqual = 182,
+            OpFUnordNotEqual = 183,
+            OpFOrdLessThan = 184,
+            OpFUnordLessThan = 185,
+            OpFOrdGreaterThan = 186,
+            OpFUnordGreaterThan = 187,
+            OpFOrdLessThanEqual = 188,
+            OpFUnordLessThanEqual = 189,
+            OpFOrdGreaterThanEqual = 190,
+            OpFUnordGreaterThanEqual = 191,
+            OpShiftRightLogical = 194,
+            OpShiftRightArithmetic = 195,
+            OpShiftLeftLogical = 196,
+            OpBitwiseOr = 197,
+            OpBitwiseXor = 198,
+            OpBitwiseAnd = 199,
+            OpNot = 200,
+            OpBitFieldInsert = 201,
+            OpBitFieldSExtract = 202,
+            OpBitFieldUExtract = 203,
+            OpBitReverse = 204,
+            OpBitCount = 205,
+            OpDPdx = 207,
+            OpDPdy = 208,
+            OpFwidth = 209,
+            OpDPdxFine = 210,
+            OpDPdyFine = 211,
+            OpFwidthFine = 212,
+            OpDPdxCoarse = 213,
+            OpDPdyCoarse = 214,
+            OpFwidthCoarse = 215,
+            OpEmitVertex = 218,
+            OpEndPrimitive = 219,
+            OpEmitStreamVertex = 220,
+            OpEndStreamPrimitive = 221,
+            OpControlBarrier = 224,
+            OpMemoryBarrier = 225,
+            OpAtomicLoad = 227,
+            OpAtomicStore = 228,
+            OpAtomicExchange = 229,
+            OpAtomicCompareExchange = 230,
+            OpAtomicCompareExchangeWeak = 231,
+            OpAtomicIIncrement = 232,
+            OpAtomicIDecrement = 233,
+            OpAtomicIAdd = 234,
+            OpAtomicISub = 235,
+            OpAtomicSMin = 236,
+            OpAtomicUMin = 237,
+            OpAtomicSMax = 238,
+            OpAtomicUMax = 239,
+            OpAtomicAnd = 240,
+            OpAtomicOr = 241,
+            OpAtomicXor = 242,
+            OpPhi = 245,
+            OpLoopMerge = 246,
+            OpSelectionMerge = 247,
+            OpLabel = 248,
+            OpBranch = 249,
+            OpBranchConditional = 250,
+            OpSwitch = 251,
+            OpKill = 252,
+            OpReturn = 253,
+            OpReturnValue = 254,
+            OpUnreachable = 255,
+            OpLifetimeStart = 256,
+            OpLifetimeStop = 257,
+            OpGroupAsyncCopy = 259,
+            OpGroupWaitEvents = 260,
+            OpGroupAll = 261,
+            OpGroupAny = 262,
+            OpGroupBroadcast = 263,
+            OpGroupIAdd = 264,
+            OpGroupFAdd = 265,
+            OpGroupFMin = 266,
+            OpGroupUMin = 267,
+            OpGroupSMin = 268,
+            OpGroupFMax = 269,
+            OpGroupUMax = 270,
+            OpGroupSMax = 271,
+            OpReadPipe = 274,
+            OpWritePipe = 275,
+            OpReservedReadPipe = 276,
+            OpReservedWritePipe = 277,
+            OpReserveReadPipePackets = 278,
+            OpReserveWritePipePackets = 279,
+            OpCommitReadPipe = 280,
+            OpCommitWritePipe = 281,
+            OpIsValidReserveId = 282,
+            OpGetNumPipePackets = 283,
+            OpGetMaxPipePackets = 284,
+            OpGroupReserveReadPipePackets = 285,
+            OpGroupReserveWritePipePackets = 286,
+            OpGroupCommitReadPipe = 287,
+            OpGroupCommitWritePipe = 288,
+            OpEnqueueMarker = 291,
+            OpEnqueueKernel = 292,
+            OpGetKernelNDrangeSubGroupCount = 293,
+            OpGetKernelNDrangeMaxSubGroupSize = 294,
+            OpGetKernelWorkGroupSize = 295,
+            OpGetKernelPreferredWorkGroupSizeMultiple = 296,
+            OpRetainEvent = 297,
+            OpReleaseEvent = 298,
+            OpCreateUserEvent = 299,
+            OpIsValidEvent = 300,
+            OpSetUserEventStatus = 301,
+            OpCaptureEventProfilingInfo = 302,
+            OpGetDefaultQueue = 303,
+            OpBuildNDRange = 304,
+            OpImageSparseSampleImplicitLod = 305,
+            OpImageSparseSampleExplicitLod = 306,
+            OpImageSparseSampleDrefImplicitLod = 307,
+            OpImageSparseSampleDrefExplicitLod = 308,
+            OpImageSparseSampleProjImplicitLod = 309,
+            OpImageSparseSampleProjExplicitLod = 310,
+            OpImageSparseSampleProjDrefImplicitLod = 311,
+            OpImageSparseSampleProjDrefExplicitLod = 312,
+            OpImageSparseFetch = 313,
+            OpImageSparseGather = 314,
+            OpImageSparseDrefGather = 315,
+            OpImageSparseTexelsResident = 316,
+            OpNoLine = 317,
+            OpAtomicFlagTestAndSet = 318,
+            OpAtomicFlagClear = 319,
+            OpImageSparseRead = 320,
+            OpSizeOf = 321,
+            OpTypePipeStorage = 322,
+            OpConstantPipeStorage = 323,
+            OpCreatePipeFromPipeStorage = 324,
+            OpGetKernelLocalSizeForSubgroupCount = 325,
+            OpGetKernelMaxNumSubgroups = 326,
+            OpTypeNamedBarrier = 327,
+            OpNamedBarrierInitialize = 328,
+            OpMemoryNamedBarrier = 329,
+            OpModuleProcessed = 330,
+            OpExecutionModeId = 331,
+            OpDecorateId = 332,
+            OpGroupNonUniformElect = 333,
+            OpGroupNonUniformAll = 334,
+            OpGroupNonUniformAny = 335,
+            OpGroupNonUniformAllEqual = 336,
+            OpGroupNonUniformBroadcast = 337,
+            OpGroupNonUniformBroadcastFirst = 338,
+            OpGroupNonUniformBallot = 339,
+            OpGroupNonUniformInverseBallot = 340,
+            OpGroupNonUniformBallotBitExtract = 341,
+            OpGroupNonUniformBallotBitCount = 342,
+            OpGroupNonUniformBallotFindLSB = 343,
+            OpGroupNonUniformBallotFindMSB = 344,
+            OpGroupNonUniformShuffle = 345,
+            OpGroupNonUniformShuffleXor = 346,
+            OpGroupNonUniformShuffleUp = 347,
+            OpGroupNonUniformShuffleDown = 348,
+            OpGroupNonUniformIAdd = 349,
+            OpGroupNonUniformFAdd = 350,
+            OpGroupNonUniformIMul = 351,
+            OpGroupNonUniformFMul = 352,
+            OpGroupNonUniformSMin = 353,
+            OpGroupNonUniformUMin = 354,
+            OpGroupNonUniformFMin = 355,
+            OpGroupNonUniformSMax = 356,
+            OpGroupNonUniformUMax = 357,
+            OpGroupNonUniformFMax = 358,
+            OpGroupNonUniformBitwiseAnd = 359,
+            OpGroupNonUniformBitwiseOr = 360,
+            OpGroupNonUniformBitwiseXor = 361,
+            OpGroupNonUniformLogicalAnd = 362,
+            OpGroupNonUniformLogicalOr = 363,
+            OpGroupNonUniformLogicalXor = 364,
+            OpGroupNonUniformQuadBroadcast = 365,
+            OpGroupNonUniformQuadSwap = 366,
+            OpCopyLogical = 400,
+            OpPtrEqual = 401,
+            OpPtrNotEqual = 402,
+            OpPtrDiff = 403,
+            OpTerminateInvocation = 4416,
+            OpSubgroupBallotKHR = 4421,
+            OpSubgroupFirstInvocationKHR = 4422,
+            OpSubgroupAllKHR = 4428,
+            OpSubgroupAnyKHR = 4429,
+            OpSubgroupAllEqualKHR = 4430,
+            OpSubgroupReadInvocationKHR = 4432,
+            OpTypeRayQueryProvisionalKHR = 4472,
+            OpRayQueryInitializeKHR = 4473,
+            OpRayQueryTerminateKHR = 4474,
+            OpRayQueryGenerateIntersectionKHR = 4475,
+            OpRayQueryConfirmIntersectionKHR = 4476,
+            OpRayQueryProceedKHR = 4477,
+            OpRayQueryGetIntersectionTypeKHR = 4479,
+            OpGroupIAddNonUniformAMD = 5000,
+            OpGroupFAddNonUniformAMD = 5001,
+            OpGroupFMinNonUniformAMD = 5002,
+            OpGroupUMinNonUniformAMD = 5003,
+            OpGroupSMinNonUniformAMD = 5004,
+            OpGroupFMaxNonUniformAMD = 5005,
+            OpGroupUMaxNonUniformAMD = 5006,
+            OpGroupSMaxNonUniformAMD = 5007,
+            OpFragmentMaskFetchAMD = 5011,
+            OpFragmentFetchAMD = 5012,
+            OpReadClockKHR = 5056,
+            OpImageSampleFootprintNV = 5283,
+            OpGroupNonUniformPartitionNV = 5296,
+            OpWritePackedPrimitiveIndices4x8NV = 5299,
+            OpReportIntersectionKHR = 5334,
+            OpReportIntersectionNV = 5334,
+            OpIgnoreIntersectionKHR = 5335,
+            OpIgnoreIntersectionNV = 5335,
+            OpTerminateRayKHR = 5336,
+            OpTerminateRayNV = 5336,
+            OpTraceNV = 5337,
+            OpTraceRayKHR = 5337,
+            OpTypeAccelerationStructureKHR = 5341,
+            OpTypeAccelerationStructureNV = 5341,
+            OpExecuteCallableKHR = 5344,
+            OpExecuteCallableNV = 5344,
+            OpTypeCooperativeMatrixNV = 5358,
+            OpCooperativeMatrixLoadNV = 5359,
+            OpCooperativeMatrixStoreNV = 5360,
+            OpCooperativeMatrixMulAddNV = 5361,
+            OpCooperativeMatrixLengthNV = 5362,
+            OpBeginInvocationInterlockEXT = 5364,
+            OpEndInvocationInterlockEXT = 5365,
+            OpDemoteToHelperInvocationEXT = 5380,
+            OpIsHelperInvocationEXT = 5381,
+            OpSubgroupShuffleINTEL = 5571,
+            OpSubgroupShuffleDownINTEL = 5572,
+            OpSubgroupShuffleUpINTEL = 5573,
+            OpSubgroupShuffleXorINTEL = 5574,
+            OpSubgroupBlockReadINTEL = 5575,
+            OpSubgroupBlockWriteINTEL = 5576,
+            OpSubgroupImageBlockReadINTEL = 5577,
+            OpSubgroupImageBlockWriteINTEL = 5578,
+            OpSubgroupImageMediaBlockReadINTEL = 5580,
+            OpSubgroupImageMediaBlockWriteINTEL = 5581,
+            OpUCountLeadingZerosINTEL = 5585,
+            OpUCountTrailingZerosINTEL = 5586,
+            OpAbsISubINTEL = 5587,
+            OpAbsUSubINTEL = 5588,
+            OpIAddSatINTEL = 5589,
+            OpUAddSatINTEL = 5590,
+            OpIAverageINTEL = 5591,
+            OpUAverageINTEL = 5592,
+            OpIAverageRoundedINTEL = 5593,
+            OpUAverageRoundedINTEL = 5594,
+            OpISubSatINTEL = 5595,
+            OpUSubSatINTEL = 5596,
+            OpIMul32x16INTEL = 5597,
+            OpUMul32x16INTEL = 5598,
+            OpFunctionPointerINTEL = 5600,
+            OpFunctionPointerCallINTEL = 5601,
+            OpDecorateString = 5632,
+            OpDecorateStringGOOGLE = 5632,
+            OpMemberDecorateString = 5633,
+            OpMemberDecorateStringGOOGLE = 5633,
+            OpVmeImageINTEL = 5699,
+            OpTypeVmeImageINTEL = 5700,
+            OpTypeAvcImePayloadINTEL = 5701,
+            OpTypeAvcRefPayloadINTEL = 5702,
+            OpTypeAvcSicPayloadINTEL = 5703,
+            OpTypeAvcMcePayloadINTEL = 5704,
+            OpTypeAvcMceResultINTEL = 5705,
+            OpTypeAvcImeResultINTEL = 5706,
+            OpTypeAvcImeResultSingleReferenceStreamoutINTEL = 5707,
+            OpTypeAvcImeResultDualReferenceStreamoutINTEL = 5708,
+            OpTypeAvcImeSingleReferenceStreaminINTEL = 5709,
+            OpTypeAvcImeDualReferenceStreaminINTEL = 5710,
+            OpTypeAvcRefResultINTEL = 5711,
+            OpTypeAvcSicResultINTEL = 5712,
+            OpSubgroupAvcMceGetDefaultInterBaseMultiReferencePenaltyINTEL = 5713,
+            OpSubgroupAvcMceSetInterBaseMultiReferencePenaltyINTEL = 5714,
+            OpSubgroupAvcMceGetDefaultInterShapePenaltyINTEL = 5715,
+            OpSubgroupAvcMceSetInterShapePenaltyINTEL = 5716,
+            OpSubgroupAvcMceGetDefaultInterDirectionPenaltyINTEL = 5717,
+            OpSubgroupAvcMceSetInterDirectionPenaltyINTEL = 5718,
+            OpSubgroupAvcMceGetDefaultIntraLumaShapePenaltyINTEL = 5719,
+            OpSubgroupAvcMceGetDefaultInterMotionVectorCostTableINTEL = 5720,
+            OpSubgroupAvcMceGetDefaultHighPenaltyCostTableINTEL = 5721,
+            OpSubgroupAvcMceGetDefaultMediumPenaltyCostTableINTEL = 5722,
+            OpSubgroupAvcMceGetDefaultLowPenaltyCostTableINTEL = 5723,
+            OpSubgroupAvcMceSetMotionVectorCostFunctionINTEL = 5724,
+            OpSubgroupAvcMceGetDefaultIntraLumaModePenaltyINTEL = 5725,
+            OpSubgroupAvcMceGetDefaultNonDcLumaIntraPenaltyINTEL = 5726,
+            OpSubgroupAvcMceGetDefaultIntraChromaModeBasePenaltyINTEL = 5727,
+            OpSubgroupAvcMceSetAcOnlyHaarINTEL = 5728,
+            OpSubgroupAvcMceSetSourceInterlacedFieldPolarityINTEL = 5729,
+            OpSubgroupAvcMceSetSingleReferenceInterlacedFieldPolarityINTEL = 5730,
+            OpSubgroupAvcMceSetDualReferenceInterlacedFieldPolaritiesINTEL = 5731,
+            OpSubgroupAvcMceConvertToImePayloadINTEL = 5732,
+            OpSubgroupAvcMceConvertToImeResultINTEL = 5733,
+            OpSubgroupAvcMceConvertToRefPayloadINTEL = 5734,
+            OpSubgroupAvcMceConvertToRefResultINTEL = 5735,
+            OpSubgroupAvcMceConvertToSicPayloadINTEL = 5736,
+            OpSubgroupAvcMceConvertToSicResultINTEL = 5737,
+            OpSubgroupAvcMceGetMotionVectorsINTEL = 5738,
+            OpSubgroupAvcMceGetInterDistortionsINTEL = 5739,
+            OpSubgroupAvcMceGetBestInterDistortionsINTEL = 5740,
+            OpSubgroupAvcMceGetInterMajorShapeINTEL = 5741,
+            OpSubgroupAvcMceGetInterMinorShapeINTEL = 5742,
+            OpSubgroupAvcMceGetInterDirectionsINTEL = 5743,
+            OpSubgroupAvcMceGetInterMotionVectorCountINTEL = 5744,
+            OpSubgroupAvcMceGetInterReferenceIdsINTEL = 5745,
+            OpSubgroupAvcMceGetInterReferenceInterlacedFieldPolaritiesINTEL = 5746,
+            OpSubgroupAvcImeInitializeINTEL = 5747,
+            OpSubgroupAvcImeSetSingleReferenceINTEL = 5748,
+            OpSubgroupAvcImeSetDualReferenceINTEL = 5749,
+            OpSubgroupAvcImeRefWindowSizeINTEL = 5750,
+            OpSubgroupAvcImeAdjustRefOffsetINTEL = 5751,
+            OpSubgroupAvcImeConvertToMcePayloadINTEL = 5752,
+            OpSubgroupAvcImeSetMaxMotionVectorCountINTEL = 5753,
+            OpSubgroupAvcImeSetUnidirectionalMixDisableINTEL = 5754,
+            OpSubgroupAvcImeSetEarlySearchTerminationThresholdINTEL = 5755,
+            OpSubgroupAvcImeSetWeightedSadINTEL = 5756,
+            OpSubgroupAvcImeEvaluateWithSingleReferenceINTEL = 5757,
+            OpSubgroupAvcImeEvaluateWithDualReferenceINTEL = 5758,
+            OpSubgroupAvcImeEvaluateWithSingleReferenceStreaminINTEL = 5759,
+            OpSubgroupAvcImeEvaluateWithDualReferenceStreaminINTEL = 5760,
+            OpSubgroupAvcImeEvaluateWithSingleReferenceStreamoutINTEL = 5761,
+            OpSubgroupAvcImeEvaluateWithDualReferenceStreamoutINTEL = 5762,
+            OpSubgroupAvcImeEvaluateWithSingleReferenceStreaminoutINTEL = 5763,
+            OpSubgroupAvcImeEvaluateWithDualReferenceStreaminoutINTEL = 5764,
+            OpSubgroupAvcImeConvertToMceResultINTEL = 5765,
+            OpSubgroupAvcImeGetSingleReferenceStreaminINTEL = 5766,
+            OpSubgroupAvcImeGetDualReferenceStreaminINTEL = 5767,
+            OpSubgroupAvcImeStripSingleReferenceStreamoutINTEL = 5768,
+            OpSubgroupAvcImeStripDualReferenceStreamoutINTEL = 5769,
+            OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeMotionVectorsINTEL = 5770,
+            OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeDistortionsINTEL = 5771,
+            OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeReferenceIdsINTEL = 5772,
+            OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeMotionVectorsINTEL = 5773,
+            OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeDistortionsINTEL = 5774,
+            OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeReferenceIdsINTEL = 5775,
+            OpSubgroupAvcImeGetBorderReachedINTEL = 5776,
+            OpSubgroupAvcImeGetTruncatedSearchIndicationINTEL = 5777,
+            OpSubgroupAvcImeGetUnidirectionalEarlySearchTerminationINTEL = 5778,
+            OpSubgroupAvcImeGetWeightingPatternMinimumMotionVectorINTEL = 5779,
+            OpSubgroupAvcImeGetWeightingPatternMinimumDistortionINTEL = 5780,
+            OpSubgroupAvcFmeInitializeINTEL = 5781,
+            OpSubgroupAvcBmeInitializeINTEL = 5782,
+            OpSubgroupAvcRefConvertToMcePayloadINTEL = 5783,
+            OpSubgroupAvcRefSetBidirectionalMixDisableINTEL = 5784,
+            OpSubgroupAvcRefSetBilinearFilterEnableINTEL = 5785,
+            OpSubgroupAvcRefEvaluateWithSingleReferenceINTEL = 5786,
+            OpSubgroupAvcRefEvaluateWithDualReferenceINTEL = 5787,
+            OpSubgroupAvcRefEvaluateWithMultiReferenceINTEL = 5788,
+            OpSubgroupAvcRefEvaluateWithMultiReferenceInterlacedINTEL = 5789,
+            OpSubgroupAvcRefConvertToMceResultINTEL = 5790,
+            OpSubgroupAvcSicInitializeINTEL = 5791,
+            OpSubgroupAvcSicConfigureSkcINTEL = 5792,
+            OpSubgroupAvcSicConfigureIpeLumaINTEL = 5793,
+            OpSubgroupAvcSicConfigureIpeLumaChromaINTEL = 5794,
+            OpSubgroupAvcSicGetMotionVectorMaskINTEL = 5795,
+            OpSubgroupAvcSicConvertToMcePayloadINTEL = 5796,
+            OpSubgroupAvcSicSetIntraLumaShapePenaltyINTEL = 5797,
+            OpSubgroupAvcSicSetIntraLumaModeCostFunctionINTEL = 5798,
+            OpSubgroupAvcSicSetIntraChromaModeCostFunctionINTEL = 5799,
+            OpSubgroupAvcSicSetBilinearFilterEnableINTEL = 5800,
+            OpSubgroupAvcSicSetSkcForwardTransformEnableINTEL = 5801,
+            OpSubgroupAvcSicSetBlockBasedRawSkipSadINTEL = 5802,
+            OpSubgroupAvcSicEvaluateIpeINTEL = 5803,
+            OpSubgroupAvcSicEvaluateWithSingleReferenceINTEL = 5804,
+            OpSubgroupAvcSicEvaluateWithDualReferenceINTEL = 5805,
+            OpSubgroupAvcSicEvaluateWithMultiReferenceINTEL = 5806,
+            OpSubgroupAvcSicEvaluateWithMultiReferenceInterlacedINTEL = 5807,
+            OpSubgroupAvcSicConvertToMceResultINTEL = 5808,
+            OpSubgroupAvcSicGetIpeLumaShapeINTEL = 5809,
+            OpSubgroupAvcSicGetBestIpeLumaDistortionINTEL = 5810,
+            OpSubgroupAvcSicGetBestIpeChromaDistortionINTEL = 5811,
+            OpSubgroupAvcSicGetPackedIpeLumaModesINTEL = 5812,
+            OpSubgroupAvcSicGetIpeChromaModeINTEL = 5813,
+            OpSubgroupAvcSicGetPackedSkcLumaCountThresholdINTEL = 5814,
+            OpSubgroupAvcSicGetPackedSkcLumaSumThresholdINTEL = 5815,
+            OpSubgroupAvcSicGetInterRawSadsINTEL = 5816,
+            OpLoopControlINTEL = 5887,
+            OpReadPipeBlockingINTEL = 5946,
+            OpWritePipeBlockingINTEL = 5947,
+            OpFPGARegINTEL = 5949,
+            OpRayQueryGetRayTMinKHR = 6016,
+            OpRayQueryGetRayFlagsKHR = 6017,
+            OpRayQueryGetIntersectionTKHR = 6018,
+            OpRayQueryGetIntersectionInstanceCustomIndexKHR = 6019,
+            OpRayQueryGetIntersectionInstanceIdKHR = 6020,
+            OpRayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR = 6021,
+            OpRayQueryGetIntersectionGeometryIndexKHR = 6022,
+            OpRayQueryGetIntersectionPrimitiveIndexKHR = 6023,
+            OpRayQueryGetIntersectionBarycentricsKHR = 6024,
+            OpRayQueryGetIntersectionFrontFaceKHR = 6025,
+            OpRayQueryGetIntersectionCandidateAABBOpaqueKHR = 6026,
+            OpRayQueryGetIntersectionObjectRayDirectionKHR = 6027,
+            OpRayQueryGetIntersectionObjectRayOriginKHR = 6028,
+            OpRayQueryGetWorldRayDirectionKHR = 6029,
+            OpRayQueryGetWorldRayOriginKHR = 6030,
+            OpRayQueryGetIntersectionObjectToWorldKHR = 6031,
+            OpRayQueryGetIntersectionWorldToObjectKHR = 6032,
+            OpAtomicFAddEXT = 6035,
+        }
+    }
+}
+
diff --git a/libs/spirv-headers/spirv/unified1/spirv.h b/libs/spirv-headers/spirv/unified1/spirv.h
new file mode 100644
index 00000000000..4e36b3a4c45
--- /dev/null
+++ b/libs/spirv-headers/spirv/unified1/spirv.h
@@ -0,0 +1,2185 @@
+/*
+** Copyright (c) 2014-2020 The Khronos Group Inc.
+** 
+** Permission is hereby granted, free of charge, to any person obtaining a copy
+** of this software and/or associated documentation files (the "Materials"),
+** to deal in the Materials without restriction, including without limitation
+** the rights to use, copy, modify, merge, publish, distribute, sublicense,
+** and/or sell copies of the Materials, and to permit persons to whom the
+** Materials are furnished to do so, subject to the following conditions:
+** 
+** The above copyright notice and this permission notice shall be included in
+** all copies or substantial portions of the Materials.
+** 
+** MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS KHRONOS
+** STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS SPECIFICATIONS AND
+** HEADER INFORMATION ARE LOCATED AT https://www.khronos.org/registry/ 
+** 
+** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+** OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+** FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+** THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+** LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+** FROM,OUT OF OR IN CONNECTION WITH THE MATERIALS OR THE USE OR OTHER DEALINGS
+** IN THE MATERIALS.
+*/
+
+/*
+** This header is automatically generated by the same tool that creates
+** the Binary Section of the SPIR-V specification.
+*/
+
+/*
+** Enumeration tokens for SPIR-V, in various styles:
+**   C, C++, C++11, JSON, Lua, Python, C#, D
+** 
+** - C will have tokens with a "Spv" prefix, e.g.: SpvSourceLanguageGLSL
+** - C++ will have tokens in the "spv" name space, e.g.: spv::SourceLanguageGLSL
+** - C++11 will use enum classes in the spv namespace, e.g.: spv::SourceLanguage::GLSL
+** - Lua will use tables, e.g.: spv.SourceLanguage.GLSL
+** - Python will use dictionaries, e.g.: spv['SourceLanguage']['GLSL']
+** - C# will use enum classes in the Specification class located in the "Spv" namespace,
+**     e.g.: Spv.Specification.SourceLanguage.GLSL
+** - D will have tokens under the "spv" module, e.g: spv.SourceLanguage.GLSL
+** 
+** Some tokens act like mask values, which can be OR'd together,
+** while others are mutually exclusive.  The mask-like ones have
+** "Mask" in their name, and a parallel enum that has the shift
+** amount (1 << x) for each corresponding enumerant.
+*/
+
+#ifndef spirv_H
+#define spirv_H
+
+typedef unsigned int SpvId;
+
+#define SPV_VERSION 0x10500
+#define SPV_REVISION 4
+
+static const unsigned int SpvMagicNumber = 0x07230203;
+static const unsigned int SpvVersion = 0x00010500;
+static const unsigned int SpvRevision = 4;
+static const unsigned int SpvOpCodeMask = 0xffff;
+static const unsigned int SpvWordCountShift = 16;
+
+typedef enum SpvSourceLanguage_ {
+    SpvSourceLanguageUnknown = 0,
+    SpvSourceLanguageESSL = 1,
+    SpvSourceLanguageGLSL = 2,
+    SpvSourceLanguageOpenCL_C = 3,
+    SpvSourceLanguageOpenCL_CPP = 4,
+    SpvSourceLanguageHLSL = 5,
+    SpvSourceLanguageMax = 0x7fffffff,
+} SpvSourceLanguage;
+
+typedef enum SpvExecutionModel_ {
+    SpvExecutionModelVertex = 0,
+    SpvExecutionModelTessellationControl = 1,
+    SpvExecutionModelTessellationEvaluation = 2,
+    SpvExecutionModelGeometry = 3,
+    SpvExecutionModelFragment = 4,
+    SpvExecutionModelGLCompute = 5,
+    SpvExecutionModelKernel = 6,
+    SpvExecutionModelTaskNV = 5267,
+    SpvExecutionModelMeshNV = 5268,
+    SpvExecutionModelRayGenerationKHR = 5313,
+    SpvExecutionModelRayGenerationNV = 5313,
+    SpvExecutionModelIntersectionKHR = 5314,
+    SpvExecutionModelIntersectionNV = 5314,
+    SpvExecutionModelAnyHitKHR = 5315,
+    SpvExecutionModelAnyHitNV = 5315,
+    SpvExecutionModelClosestHitKHR = 5316,
+    SpvExecutionModelClosestHitNV = 5316,
+    SpvExecutionModelMissKHR = 5317,
+    SpvExecutionModelMissNV = 5317,
+    SpvExecutionModelCallableKHR = 5318,
+    SpvExecutionModelCallableNV = 5318,
+    SpvExecutionModelMax = 0x7fffffff,
+} SpvExecutionModel;
+
+typedef enum SpvAddressingModel_ {
+    SpvAddressingModelLogical = 0,
+    SpvAddressingModelPhysical32 = 1,
+    SpvAddressingModelPhysical64 = 2,
+    SpvAddressingModelPhysicalStorageBuffer64 = 5348,
+    SpvAddressingModelPhysicalStorageBuffer64EXT = 5348,
+    SpvAddressingModelMax = 0x7fffffff,
+} SpvAddressingModel;
+
+typedef enum SpvMemoryModel_ {
+    SpvMemoryModelSimple = 0,
+    SpvMemoryModelGLSL450 = 1,
+    SpvMemoryModelOpenCL = 2,
+    SpvMemoryModelVulkan = 3,
+    SpvMemoryModelVulkanKHR = 3,
+    SpvMemoryModelMax = 0x7fffffff,
+} SpvMemoryModel;
+
+typedef enum SpvExecutionMode_ {
+    SpvExecutionModeInvocations = 0,
+    SpvExecutionModeSpacingEqual = 1,
+    SpvExecutionModeSpacingFractionalEven = 2,
+    SpvExecutionModeSpacingFractionalOdd = 3,
+    SpvExecutionModeVertexOrderCw = 4,
+    SpvExecutionModeVertexOrderCcw = 5,
+    SpvExecutionModePixelCenterInteger = 6,
+    SpvExecutionModeOriginUpperLeft = 7,
+    SpvExecutionModeOriginLowerLeft = 8,
+    SpvExecutionModeEarlyFragmentTests = 9,
+    SpvExecutionModePointMode = 10,
+    SpvExecutionModeXfb = 11,
+    SpvExecutionModeDepthReplacing = 12,
+    SpvExecutionModeDepthGreater = 14,
+    SpvExecutionModeDepthLess = 15,
+    SpvExecutionModeDepthUnchanged = 16,
+    SpvExecutionModeLocalSize = 17,
+    SpvExecutionModeLocalSizeHint = 18,
+    SpvExecutionModeInputPoints = 19,
+    SpvExecutionModeInputLines = 20,
+    SpvExecutionModeInputLinesAdjacency = 21,
+    SpvExecutionModeTriangles = 22,
+    SpvExecutionModeInputTrianglesAdjacency = 23,
+    SpvExecutionModeQuads = 24,
+    SpvExecutionModeIsolines = 25,
+    SpvExecutionModeOutputVertices = 26,
+    SpvExecutionModeOutputPoints = 27,
+    SpvExecutionModeOutputLineStrip = 28,
+    SpvExecutionModeOutputTriangleStrip = 29,
+    SpvExecutionModeVecTypeHint = 30,
+    SpvExecutionModeContractionOff = 31,
+    SpvExecutionModeInitializer = 33,
+    SpvExecutionModeFinalizer = 34,
+    SpvExecutionModeSubgroupSize = 35,
+    SpvExecutionModeSubgroupsPerWorkgroup = 36,
+    SpvExecutionModeSubgroupsPerWorkgroupId = 37,
+    SpvExecutionModeLocalSizeId = 38,
+    SpvExecutionModeLocalSizeHintId = 39,
+    SpvExecutionModePostDepthCoverage = 4446,
+    SpvExecutionModeDenormPreserve = 4459,
+    SpvExecutionModeDenormFlushToZero = 4460,
+    SpvExecutionModeSignedZeroInfNanPreserve = 4461,
+    SpvExecutionModeRoundingModeRTE = 4462,
+    SpvExecutionModeRoundingModeRTZ = 4463,
+    SpvExecutionModeStencilRefReplacingEXT = 5027,
+    SpvExecutionModeOutputLinesNV = 5269,
+    SpvExecutionModeOutputPrimitivesNV = 5270,
+    SpvExecutionModeDerivativeGroupQuadsNV = 5289,
+    SpvExecutionModeDerivativeGroupLinearNV = 5290,
+    SpvExecutionModeOutputTrianglesNV = 5298,
+    SpvExecutionModePixelInterlockOrderedEXT = 5366,
+    SpvExecutionModePixelInterlockUnorderedEXT = 5367,
+    SpvExecutionModeSampleInterlockOrderedEXT = 5368,
+    SpvExecutionModeSampleInterlockUnorderedEXT = 5369,
+    SpvExecutionModeShadingRateInterlockOrderedEXT = 5370,
+    SpvExecutionModeShadingRateInterlockUnorderedEXT = 5371,
+    SpvExecutionModeMaxWorkgroupSizeINTEL = 5893,
+    SpvExecutionModeMaxWorkDimINTEL = 5894,
+    SpvExecutionModeNoGlobalOffsetINTEL = 5895,
+    SpvExecutionModeNumSIMDWorkitemsINTEL = 5896,
+    SpvExecutionModeMax = 0x7fffffff,
+} SpvExecutionMode;
+
+typedef enum SpvStorageClass_ {
+    SpvStorageClassUniformConstant = 0,
+    SpvStorageClassInput = 1,
+    SpvStorageClassUniform = 2,
+    SpvStorageClassOutput = 3,
+    SpvStorageClassWorkgroup = 4,
+    SpvStorageClassCrossWorkgroup = 5,
+    SpvStorageClassPrivate = 6,
+    SpvStorageClassFunction = 7,
+    SpvStorageClassGeneric = 8,
+    SpvStorageClassPushConstant = 9,
+    SpvStorageClassAtomicCounter = 10,
+    SpvStorageClassImage = 11,
+    SpvStorageClassStorageBuffer = 12,
+    SpvStorageClassCallableDataKHR = 5328,
+    SpvStorageClassCallableDataNV = 5328,
+    SpvStorageClassIncomingCallableDataKHR = 5329,
+    SpvStorageClassIncomingCallableDataNV = 5329,
+    SpvStorageClassRayPayloadKHR = 5338,
+    SpvStorageClassRayPayloadNV = 5338,
+    SpvStorageClassHitAttributeKHR = 5339,
+    SpvStorageClassHitAttributeNV = 5339,
+    SpvStorageClassIncomingRayPayloadKHR = 5342,
+    SpvStorageClassIncomingRayPayloadNV = 5342,
+    SpvStorageClassShaderRecordBufferKHR = 5343,
+    SpvStorageClassShaderRecordBufferNV = 5343,
+    SpvStorageClassPhysicalStorageBuffer = 5349,
+    SpvStorageClassPhysicalStorageBufferEXT = 5349,
+    SpvStorageClassCodeSectionINTEL = 5605,
+    SpvStorageClassMax = 0x7fffffff,
+} SpvStorageClass;
+
+typedef enum SpvDim_ {
+    SpvDim1D = 0,
+    SpvDim2D = 1,
+    SpvDim3D = 2,
+    SpvDimCube = 3,
+    SpvDimRect = 4,
+    SpvDimBuffer = 5,
+    SpvDimSubpassData = 6,
+    SpvDimMax = 0x7fffffff,
+} SpvDim;
+
+typedef enum SpvSamplerAddressingMode_ {
+    SpvSamplerAddressingModeNone = 0,
+    SpvSamplerAddressingModeClampToEdge = 1,
+    SpvSamplerAddressingModeClamp = 2,
+    SpvSamplerAddressingModeRepeat = 3,
+    SpvSamplerAddressingModeRepeatMirrored = 4,
+    SpvSamplerAddressingModeMax = 0x7fffffff,
+} SpvSamplerAddressingMode;
+
+typedef enum SpvSamplerFilterMode_ {
+    SpvSamplerFilterModeNearest = 0,
+    SpvSamplerFilterModeLinear = 1,
+    SpvSamplerFilterModeMax = 0x7fffffff,
+} SpvSamplerFilterMode;
+
+typedef enum SpvImageFormat_ {
+    SpvImageFormatUnknown = 0,
+    SpvImageFormatRgba32f = 1,
+    SpvImageFormatRgba16f = 2,
+    SpvImageFormatR32f = 3,
+    SpvImageFormatRgba8 = 4,
+    SpvImageFormatRgba8Snorm = 5,
+    SpvImageFormatRg32f = 6,
+    SpvImageFormatRg16f = 7,
+    SpvImageFormatR11fG11fB10f = 8,
+    SpvImageFormatR16f = 9,
+    SpvImageFormatRgba16 = 10,
+    SpvImageFormatRgb10A2 = 11,
+    SpvImageFormatRg16 = 12,
+    SpvImageFormatRg8 = 13,
+    SpvImageFormatR16 = 14,
+    SpvImageFormatR8 = 15,
+    SpvImageFormatRgba16Snorm = 16,
+    SpvImageFormatRg16Snorm = 17,
+    SpvImageFormatRg8Snorm = 18,
+    SpvImageFormatR16Snorm = 19,
+    SpvImageFormatR8Snorm = 20,
+    SpvImageFormatRgba32i = 21,
+    SpvImageFormatRgba16i = 22,
+    SpvImageFormatRgba8i = 23,
+    SpvImageFormatR32i = 24,
+    SpvImageFormatRg32i = 25,
+    SpvImageFormatRg16i = 26,
+    SpvImageFormatRg8i = 27,
+    SpvImageFormatR16i = 28,
+    SpvImageFormatR8i = 29,
+    SpvImageFormatRgba32ui = 30,
+    SpvImageFormatRgba16ui = 31,
+    SpvImageFormatRgba8ui = 32,
+    SpvImageFormatR32ui = 33,
+    SpvImageFormatRgb10a2ui = 34,
+    SpvImageFormatRg32ui = 35,
+    SpvImageFormatRg16ui = 36,
+    SpvImageFormatRg8ui = 37,
+    SpvImageFormatR16ui = 38,
+    SpvImageFormatR8ui = 39,
+    SpvImageFormatR64ui = 40,
+    SpvImageFormatR64i = 41,
+    SpvImageFormatMax = 0x7fffffff,
+} SpvImageFormat;
+
+typedef enum SpvImageChannelOrder_ {
+    SpvImageChannelOrderR = 0,
+    SpvImageChannelOrderA = 1,
+    SpvImageChannelOrderRG = 2,
+    SpvImageChannelOrderRA = 3,
+    SpvImageChannelOrderRGB = 4,
+    SpvImageChannelOrderRGBA = 5,
+    SpvImageChannelOrderBGRA = 6,
+    SpvImageChannelOrderARGB = 7,
+    SpvImageChannelOrderIntensity = 8,
+    SpvImageChannelOrderLuminance = 9,
+    SpvImageChannelOrderRx = 10,
+    SpvImageChannelOrderRGx = 11,
+    SpvImageChannelOrderRGBx = 12,
+    SpvImageChannelOrderDepth = 13,
+    SpvImageChannelOrderDepthStencil = 14,
+    SpvImageChannelOrdersRGB = 15,
+    SpvImageChannelOrdersRGBx = 16,
+    SpvImageChannelOrdersRGBA = 17,
+    SpvImageChannelOrdersBGRA = 18,
+    SpvImageChannelOrderABGR = 19,
+    SpvImageChannelOrderMax = 0x7fffffff,
+} SpvImageChannelOrder;
+
+typedef enum SpvImageChannelDataType_ {
+    SpvImageChannelDataTypeSnormInt8 = 0,
+    SpvImageChannelDataTypeSnormInt16 = 1,
+    SpvImageChannelDataTypeUnormInt8 = 2,
+    SpvImageChannelDataTypeUnormInt16 = 3,
+    SpvImageChannelDataTypeUnormShort565 = 4,
+    SpvImageChannelDataTypeUnormShort555 = 5,
+    SpvImageChannelDataTypeUnormInt101010 = 6,
+    SpvImageChannelDataTypeSignedInt8 = 7,
+    SpvImageChannelDataTypeSignedInt16 = 8,
+    SpvImageChannelDataTypeSignedInt32 = 9,
+    SpvImageChannelDataTypeUnsignedInt8 = 10,
+    SpvImageChannelDataTypeUnsignedInt16 = 11,
+    SpvImageChannelDataTypeUnsignedInt32 = 12,
+    SpvImageChannelDataTypeHalfFloat = 13,
+    SpvImageChannelDataTypeFloat = 14,
+    SpvImageChannelDataTypeUnormInt24 = 15,
+    SpvImageChannelDataTypeUnormInt101010_2 = 16,
+    SpvImageChannelDataTypeMax = 0x7fffffff,
+} SpvImageChannelDataType;
+
+typedef enum SpvImageOperandsShift_ {
+    SpvImageOperandsBiasShift = 0,
+    SpvImageOperandsLodShift = 1,
+    SpvImageOperandsGradShift = 2,
+    SpvImageOperandsConstOffsetShift = 3,
+    SpvImageOperandsOffsetShift = 4,
+    SpvImageOperandsConstOffsetsShift = 5,
+    SpvImageOperandsSampleShift = 6,
+    SpvImageOperandsMinLodShift = 7,
+    SpvImageOperandsMakeTexelAvailableShift = 8,
+    SpvImageOperandsMakeTexelAvailableKHRShift = 8,
+    SpvImageOperandsMakeTexelVisibleShift = 9,
+    SpvImageOperandsMakeTexelVisibleKHRShift = 9,
+    SpvImageOperandsNonPrivateTexelShift = 10,
+    SpvImageOperandsNonPrivateTexelKHRShift = 10,
+    SpvImageOperandsVolatileTexelShift = 11,
+    SpvImageOperandsVolatileTexelKHRShift = 11,
+    SpvImageOperandsSignExtendShift = 12,
+    SpvImageOperandsZeroExtendShift = 13,
+    SpvImageOperandsMax = 0x7fffffff,
+} SpvImageOperandsShift;
+
+typedef enum SpvImageOperandsMask_ {
+    SpvImageOperandsMaskNone = 0,
+    SpvImageOperandsBiasMask = 0x00000001,
+    SpvImageOperandsLodMask = 0x00000002,
+    SpvImageOperandsGradMask = 0x00000004,
+    SpvImageOperandsConstOffsetMask = 0x00000008,
+    SpvImageOperandsOffsetMask = 0x00000010,
+    SpvImageOperandsConstOffsetsMask = 0x00000020,
+    SpvImageOperandsSampleMask = 0x00000040,
+    SpvImageOperandsMinLodMask = 0x00000080,
+    SpvImageOperandsMakeTexelAvailableMask = 0x00000100,
+    SpvImageOperandsMakeTexelAvailableKHRMask = 0x00000100,
+    SpvImageOperandsMakeTexelVisibleMask = 0x00000200,
+    SpvImageOperandsMakeTexelVisibleKHRMask = 0x00000200,
+    SpvImageOperandsNonPrivateTexelMask = 0x00000400,
+    SpvImageOperandsNonPrivateTexelKHRMask = 0x00000400,
+    SpvImageOperandsVolatileTexelMask = 0x00000800,
+    SpvImageOperandsVolatileTexelKHRMask = 0x00000800,
+    SpvImageOperandsSignExtendMask = 0x00001000,
+    SpvImageOperandsZeroExtendMask = 0x00002000,
+} SpvImageOperandsMask;
+
+typedef enum SpvFPFastMathModeShift_ {
+    SpvFPFastMathModeNotNaNShift = 0,
+    SpvFPFastMathModeNotInfShift = 1,
+    SpvFPFastMathModeNSZShift = 2,
+    SpvFPFastMathModeAllowRecipShift = 3,
+    SpvFPFastMathModeFastShift = 4,
+    SpvFPFastMathModeMax = 0x7fffffff,
+} SpvFPFastMathModeShift;
+
+typedef enum SpvFPFastMathModeMask_ {
+    SpvFPFastMathModeMaskNone = 0,
+    SpvFPFastMathModeNotNaNMask = 0x00000001,
+    SpvFPFastMathModeNotInfMask = 0x00000002,
+    SpvFPFastMathModeNSZMask = 0x00000004,
+    SpvFPFastMathModeAllowRecipMask = 0x00000008,
+    SpvFPFastMathModeFastMask = 0x00000010,
+} SpvFPFastMathModeMask;
+
+typedef enum SpvFPRoundingMode_ {
+    SpvFPRoundingModeRTE = 0,
+    SpvFPRoundingModeRTZ = 1,
+    SpvFPRoundingModeRTP = 2,
+    SpvFPRoundingModeRTN = 3,
+    SpvFPRoundingModeMax = 0x7fffffff,
+} SpvFPRoundingMode;
+
+typedef enum SpvLinkageType_ {
+    SpvLinkageTypeExport = 0,
+    SpvLinkageTypeImport = 1,
+    SpvLinkageTypeMax = 0x7fffffff,
+} SpvLinkageType;
+
+typedef enum SpvAccessQualifier_ {
+    SpvAccessQualifierReadOnly = 0,
+    SpvAccessQualifierWriteOnly = 1,
+    SpvAccessQualifierReadWrite = 2,
+    SpvAccessQualifierMax = 0x7fffffff,
+} SpvAccessQualifier;
+
+typedef enum SpvFunctionParameterAttribute_ {
+    SpvFunctionParameterAttributeZext = 0,
+    SpvFunctionParameterAttributeSext = 1,
+    SpvFunctionParameterAttributeByVal = 2,
+    SpvFunctionParameterAttributeSret = 3,
+    SpvFunctionParameterAttributeNoAlias = 4,
+    SpvFunctionParameterAttributeNoCapture = 5,
+    SpvFunctionParameterAttributeNoWrite = 6,
+    SpvFunctionParameterAttributeNoReadWrite = 7,
+    SpvFunctionParameterAttributeMax = 0x7fffffff,
+} SpvFunctionParameterAttribute;
+
+typedef enum SpvDecoration_ {
+    SpvDecorationRelaxedPrecision = 0,
+    SpvDecorationSpecId = 1,
+    SpvDecorationBlock = 2,
+    SpvDecorationBufferBlock = 3,
+    SpvDecorationRowMajor = 4,
+    SpvDecorationColMajor = 5,
+    SpvDecorationArrayStride = 6,
+    SpvDecorationMatrixStride = 7,
+    SpvDecorationGLSLShared = 8,
+    SpvDecorationGLSLPacked = 9,
+    SpvDecorationCPacked = 10,
+    SpvDecorationBuiltIn = 11,
+    SpvDecorationNoPerspective = 13,
+    SpvDecorationFlat = 14,
+    SpvDecorationPatch = 15,
+    SpvDecorationCentroid = 16,
+    SpvDecorationSample = 17,
+    SpvDecorationInvariant = 18,
+    SpvDecorationRestrict = 19,
+    SpvDecorationAliased = 20,
+    SpvDecorationVolatile = 21,
+    SpvDecorationConstant = 22,
+    SpvDecorationCoherent = 23,
+    SpvDecorationNonWritable = 24,
+    SpvDecorationNonReadable = 25,
+    SpvDecorationUniform = 26,
+    SpvDecorationUniformId = 27,
+    SpvDecorationSaturatedConversion = 28,
+    SpvDecorationStream = 29,
+    SpvDecorationLocation = 30,
+    SpvDecorationComponent = 31,
+    SpvDecorationIndex = 32,
+    SpvDecorationBinding = 33,
+    SpvDecorationDescriptorSet = 34,
+    SpvDecorationOffset = 35,
+    SpvDecorationXfbBuffer = 36,
+    SpvDecorationXfbStride = 37,
+    SpvDecorationFuncParamAttr = 38,
+    SpvDecorationFPRoundingMode = 39,
+    SpvDecorationFPFastMathMode = 40,
+    SpvDecorationLinkageAttributes = 41,
+    SpvDecorationNoContraction = 42,
+    SpvDecorationInputAttachmentIndex = 43,
+    SpvDecorationAlignment = 44,
+    SpvDecorationMaxByteOffset = 45,
+    SpvDecorationAlignmentId = 46,
+    SpvDecorationMaxByteOffsetId = 47,
+    SpvDecorationNoSignedWrap = 4469,
+    SpvDecorationNoUnsignedWrap = 4470,
+    SpvDecorationExplicitInterpAMD = 4999,
+    SpvDecorationOverrideCoverageNV = 5248,
+    SpvDecorationPassthroughNV = 5250,
+    SpvDecorationViewportRelativeNV = 5252,
+    SpvDecorationSecondaryViewportRelativeNV = 5256,
+    SpvDecorationPerPrimitiveNV = 5271,
+    SpvDecorationPerViewNV = 5272,
+    SpvDecorationPerTaskNV = 5273,
+    SpvDecorationPerVertexNV = 5285,
+    SpvDecorationNonUniform = 5300,
+    SpvDecorationNonUniformEXT = 5300,
+    SpvDecorationRestrictPointer = 5355,
+    SpvDecorationRestrictPointerEXT = 5355,
+    SpvDecorationAliasedPointer = 5356,
+    SpvDecorationAliasedPointerEXT = 5356,
+    SpvDecorationReferencedIndirectlyINTEL = 5602,
+    SpvDecorationCounterBuffer = 5634,
+    SpvDecorationHlslCounterBufferGOOGLE = 5634,
+    SpvDecorationHlslSemanticGOOGLE = 5635,
+    SpvDecorationUserSemantic = 5635,
+    SpvDecorationUserTypeGOOGLE = 5636,
+    SpvDecorationRegisterINTEL = 5825,
+    SpvDecorationMemoryINTEL = 5826,
+    SpvDecorationNumbanksINTEL = 5827,
+    SpvDecorationBankwidthINTEL = 5828,
+    SpvDecorationMaxPrivateCopiesINTEL = 5829,
+    SpvDecorationSinglepumpINTEL = 5830,
+    SpvDecorationDoublepumpINTEL = 5831,
+    SpvDecorationMaxReplicatesINTEL = 5832,
+    SpvDecorationSimpleDualPortINTEL = 5833,
+    SpvDecorationMergeINTEL = 5834,
+    SpvDecorationBankBitsINTEL = 5835,
+    SpvDecorationForcePow2DepthINTEL = 5836,
+    SpvDecorationMax = 0x7fffffff,
+} SpvDecoration;
+
+typedef enum SpvBuiltIn_ {
+    SpvBuiltInPosition = 0,
+    SpvBuiltInPointSize = 1,
+    SpvBuiltInClipDistance = 3,
+    SpvBuiltInCullDistance = 4,
+    SpvBuiltInVertexId = 5,
+    SpvBuiltInInstanceId = 6,
+    SpvBuiltInPrimitiveId = 7,
+    SpvBuiltInInvocationId = 8,
+    SpvBuiltInLayer = 9,
+    SpvBuiltInViewportIndex = 10,
+    SpvBuiltInTessLevelOuter = 11,
+    SpvBuiltInTessLevelInner = 12,
+    SpvBuiltInTessCoord = 13,
+    SpvBuiltInPatchVertices = 14,
+    SpvBuiltInFragCoord = 15,
+    SpvBuiltInPointCoord = 16,
+    SpvBuiltInFrontFacing = 17,
+    SpvBuiltInSampleId = 18,
+    SpvBuiltInSamplePosition = 19,
+    SpvBuiltInSampleMask = 20,
+    SpvBuiltInFragDepth = 22,
+    SpvBuiltInHelperInvocation = 23,
+    SpvBuiltInNumWorkgroups = 24,
+    SpvBuiltInWorkgroupSize = 25,
+    SpvBuiltInWorkgroupId = 26,
+    SpvBuiltInLocalInvocationId = 27,
+    SpvBuiltInGlobalInvocationId = 28,
+    SpvBuiltInLocalInvocationIndex = 29,
+    SpvBuiltInWorkDim = 30,
+    SpvBuiltInGlobalSize = 31,
+    SpvBuiltInEnqueuedWorkgroupSize = 32,
+    SpvBuiltInGlobalOffset = 33,
+    SpvBuiltInGlobalLinearId = 34,
+    SpvBuiltInSubgroupSize = 36,
+    SpvBuiltInSubgroupMaxSize = 37,
+    SpvBuiltInNumSubgroups = 38,
+    SpvBuiltInNumEnqueuedSubgroups = 39,
+    SpvBuiltInSubgroupId = 40,
+    SpvBuiltInSubgroupLocalInvocationId = 41,
+    SpvBuiltInVertexIndex = 42,
+    SpvBuiltInInstanceIndex = 43,
+    SpvBuiltInSubgroupEqMask = 4416,
+    SpvBuiltInSubgroupEqMaskKHR = 4416,
+    SpvBuiltInSubgroupGeMask = 4417,
+    SpvBuiltInSubgroupGeMaskKHR = 4417,
+    SpvBuiltInSubgroupGtMask = 4418,
+    SpvBuiltInSubgroupGtMaskKHR = 4418,
+    SpvBuiltInSubgroupLeMask = 4419,
+    SpvBuiltInSubgroupLeMaskKHR = 4419,
+    SpvBuiltInSubgroupLtMask = 4420,
+    SpvBuiltInSubgroupLtMaskKHR = 4420,
+    SpvBuiltInBaseVertex = 4424,
+    SpvBuiltInBaseInstance = 4425,
+    SpvBuiltInDrawIndex = 4426,
+    SpvBuiltInPrimitiveShadingRateKHR = 4432,
+    SpvBuiltInDeviceIndex = 4438,
+    SpvBuiltInViewIndex = 4440,
+    SpvBuiltInShadingRateKHR = 4444,
+    SpvBuiltInBaryCoordNoPerspAMD = 4992,
+    SpvBuiltInBaryCoordNoPerspCentroidAMD = 4993,
+    SpvBuiltInBaryCoordNoPerspSampleAMD = 4994,
+    SpvBuiltInBaryCoordSmoothAMD = 4995,
+    SpvBuiltInBaryCoordSmoothCentroidAMD = 4996,
+    SpvBuiltInBaryCoordSmoothSampleAMD = 4997,
+    SpvBuiltInBaryCoordPullModelAMD = 4998,
+    SpvBuiltInFragStencilRefEXT = 5014,
+    SpvBuiltInViewportMaskNV = 5253,
+    SpvBuiltInSecondaryPositionNV = 5257,
+    SpvBuiltInSecondaryViewportMaskNV = 5258,
+    SpvBuiltInPositionPerViewNV = 5261,
+    SpvBuiltInViewportMaskPerViewNV = 5262,
+    SpvBuiltInFullyCoveredEXT = 5264,
+    SpvBuiltInTaskCountNV = 5274,
+    SpvBuiltInPrimitiveCountNV = 5275,
+    SpvBuiltInPrimitiveIndicesNV = 5276,
+    SpvBuiltInClipDistancePerViewNV = 5277,
+    SpvBuiltInCullDistancePerViewNV = 5278,
+    SpvBuiltInLayerPerViewNV = 5279,
+    SpvBuiltInMeshViewCountNV = 5280,
+    SpvBuiltInMeshViewIndicesNV = 5281,
+    SpvBuiltInBaryCoordNV = 5286,
+    SpvBuiltInBaryCoordNoPerspNV = 5287,
+    SpvBuiltInFragSizeEXT = 5292,
+    SpvBuiltInFragmentSizeNV = 5292,
+    SpvBuiltInFragInvocationCountEXT = 5293,
+    SpvBuiltInInvocationsPerPixelNV = 5293,
+    SpvBuiltInLaunchIdKHR = 5319,
+    SpvBuiltInLaunchIdNV = 5319,
+    SpvBuiltInLaunchSizeKHR = 5320,
+    SpvBuiltInLaunchSizeNV = 5320,
+    SpvBuiltInWorldRayOriginKHR = 5321,
+    SpvBuiltInWorldRayOriginNV = 5321,
+    SpvBuiltInWorldRayDirectionKHR = 5322,
+    SpvBuiltInWorldRayDirectionNV = 5322,
+    SpvBuiltInObjectRayOriginKHR = 5323,
+    SpvBuiltInObjectRayOriginNV = 5323,
+    SpvBuiltInObjectRayDirectionKHR = 5324,
+    SpvBuiltInObjectRayDirectionNV = 5324,
+    SpvBuiltInRayTminKHR = 5325,
+    SpvBuiltInRayTminNV = 5325,
+    SpvBuiltInRayTmaxKHR = 5326,
+    SpvBuiltInRayTmaxNV = 5326,
+    SpvBuiltInInstanceCustomIndexKHR = 5327,
+    SpvBuiltInInstanceCustomIndexNV = 5327,
+    SpvBuiltInObjectToWorldKHR = 5330,
+    SpvBuiltInObjectToWorldNV = 5330,
+    SpvBuiltInWorldToObjectKHR = 5331,
+    SpvBuiltInWorldToObjectNV = 5331,
+    SpvBuiltInHitTKHR = 5332,
+    SpvBuiltInHitTNV = 5332,
+    SpvBuiltInHitKindKHR = 5333,
+    SpvBuiltInHitKindNV = 5333,
+    SpvBuiltInIncomingRayFlagsKHR = 5351,
+    SpvBuiltInIncomingRayFlagsNV = 5351,
+    SpvBuiltInRayGeometryIndexKHR = 5352,
+    SpvBuiltInWarpsPerSMNV = 5374,
+    SpvBuiltInSMCountNV = 5375,
+    SpvBuiltInWarpIDNV = 5376,
+    SpvBuiltInSMIDNV = 5377,
+    SpvBuiltInMax = 0x7fffffff,
+} SpvBuiltIn;
+
+typedef enum SpvSelectionControlShift_ {
+    SpvSelectionControlFlattenShift = 0,
+    SpvSelectionControlDontFlattenShift = 1,
+    SpvSelectionControlMax = 0x7fffffff,
+} SpvSelectionControlShift;
+
+typedef enum SpvSelectionControlMask_ {
+    SpvSelectionControlMaskNone = 0,
+    SpvSelectionControlFlattenMask = 0x00000001,
+    SpvSelectionControlDontFlattenMask = 0x00000002,
+} SpvSelectionControlMask;
+
+typedef enum SpvLoopControlShift_ {
+    SpvLoopControlUnrollShift = 0,
+    SpvLoopControlDontUnrollShift = 1,
+    SpvLoopControlDependencyInfiniteShift = 2,
+    SpvLoopControlDependencyLengthShift = 3,
+    SpvLoopControlMinIterationsShift = 4,
+    SpvLoopControlMaxIterationsShift = 5,
+    SpvLoopControlIterationMultipleShift = 6,
+    SpvLoopControlPeelCountShift = 7,
+    SpvLoopControlPartialCountShift = 8,
+    SpvLoopControlInitiationIntervalINTELShift = 16,
+    SpvLoopControlMaxConcurrencyINTELShift = 17,
+    SpvLoopControlDependencyArrayINTELShift = 18,
+    SpvLoopControlPipelineEnableINTELShift = 19,
+    SpvLoopControlLoopCoalesceINTELShift = 20,
+    SpvLoopControlMaxInterleavingINTELShift = 21,
+    SpvLoopControlSpeculatedIterationsINTELShift = 22,
+    SpvLoopControlMax = 0x7fffffff,
+} SpvLoopControlShift;
+
+typedef enum SpvLoopControlMask_ {
+    SpvLoopControlMaskNone = 0,
+    SpvLoopControlUnrollMask = 0x00000001,
+    SpvLoopControlDontUnrollMask = 0x00000002,
+    SpvLoopControlDependencyInfiniteMask = 0x00000004,
+    SpvLoopControlDependencyLengthMask = 0x00000008,
+    SpvLoopControlMinIterationsMask = 0x00000010,
+    SpvLoopControlMaxIterationsMask = 0x00000020,
+    SpvLoopControlIterationMultipleMask = 0x00000040,
+    SpvLoopControlPeelCountMask = 0x00000080,
+    SpvLoopControlPartialCountMask = 0x00000100,
+    SpvLoopControlInitiationIntervalINTELMask = 0x00010000,
+    SpvLoopControlMaxConcurrencyINTELMask = 0x00020000,
+    SpvLoopControlDependencyArrayINTELMask = 0x00040000,
+    SpvLoopControlPipelineEnableINTELMask = 0x00080000,
+    SpvLoopControlLoopCoalesceINTELMask = 0x00100000,
+    SpvLoopControlMaxInterleavingINTELMask = 0x00200000,
+    SpvLoopControlSpeculatedIterationsINTELMask = 0x00400000,
+} SpvLoopControlMask;
+
+typedef enum SpvFunctionControlShift_ {
+    SpvFunctionControlInlineShift = 0,
+    SpvFunctionControlDontInlineShift = 1,
+    SpvFunctionControlPureShift = 2,
+    SpvFunctionControlConstShift = 3,
+    SpvFunctionControlMax = 0x7fffffff,
+} SpvFunctionControlShift;
+
+typedef enum SpvFunctionControlMask_ {
+    SpvFunctionControlMaskNone = 0,
+    SpvFunctionControlInlineMask = 0x00000001,
+    SpvFunctionControlDontInlineMask = 0x00000002,
+    SpvFunctionControlPureMask = 0x00000004,
+    SpvFunctionControlConstMask = 0x00000008,
+} SpvFunctionControlMask;
+
+typedef enum SpvMemorySemanticsShift_ {
+    SpvMemorySemanticsAcquireShift = 1,
+    SpvMemorySemanticsReleaseShift = 2,
+    SpvMemorySemanticsAcquireReleaseShift = 3,
+    SpvMemorySemanticsSequentiallyConsistentShift = 4,
+    SpvMemorySemanticsUniformMemoryShift = 6,
+    SpvMemorySemanticsSubgroupMemoryShift = 7,
+    SpvMemorySemanticsWorkgroupMemoryShift = 8,
+    SpvMemorySemanticsCrossWorkgroupMemoryShift = 9,
+    SpvMemorySemanticsAtomicCounterMemoryShift = 10,
+    SpvMemorySemanticsImageMemoryShift = 11,
+    SpvMemorySemanticsOutputMemoryShift = 12,
+    SpvMemorySemanticsOutputMemoryKHRShift = 12,
+    SpvMemorySemanticsMakeAvailableShift = 13,
+    SpvMemorySemanticsMakeAvailableKHRShift = 13,
+    SpvMemorySemanticsMakeVisibleShift = 14,
+    SpvMemorySemanticsMakeVisibleKHRShift = 14,
+    SpvMemorySemanticsVolatileShift = 15,
+    SpvMemorySemanticsMax = 0x7fffffff,
+} SpvMemorySemanticsShift;
+
+typedef enum SpvMemorySemanticsMask_ {
+    SpvMemorySemanticsMaskNone = 0,
+    SpvMemorySemanticsAcquireMask = 0x00000002,
+    SpvMemorySemanticsReleaseMask = 0x00000004,
+    SpvMemorySemanticsAcquireReleaseMask = 0x00000008,
+    SpvMemorySemanticsSequentiallyConsistentMask = 0x00000010,
+    SpvMemorySemanticsUniformMemoryMask = 0x00000040,
+    SpvMemorySemanticsSubgroupMemoryMask = 0x00000080,
+    SpvMemorySemanticsWorkgroupMemoryMask = 0x00000100,
+    SpvMemorySemanticsCrossWorkgroupMemoryMask = 0x00000200,
+    SpvMemorySemanticsAtomicCounterMemoryMask = 0x00000400,
+    SpvMemorySemanticsImageMemoryMask = 0x00000800,
+    SpvMemorySemanticsOutputMemoryMask = 0x00001000,
+    SpvMemorySemanticsOutputMemoryKHRMask = 0x00001000,
+    SpvMemorySemanticsMakeAvailableMask = 0x00002000,
+    SpvMemorySemanticsMakeAvailableKHRMask = 0x00002000,
+    SpvMemorySemanticsMakeVisibleMask = 0x00004000,
+    SpvMemorySemanticsMakeVisibleKHRMask = 0x00004000,
+    SpvMemorySemanticsVolatileMask = 0x00008000,
+} SpvMemorySemanticsMask;
+
+typedef enum SpvMemoryAccessShift_ {
+    SpvMemoryAccessVolatileShift = 0,
+    SpvMemoryAccessAlignedShift = 1,
+    SpvMemoryAccessNontemporalShift = 2,
+    SpvMemoryAccessMakePointerAvailableShift = 3,
+    SpvMemoryAccessMakePointerAvailableKHRShift = 3,
+    SpvMemoryAccessMakePointerVisibleShift = 4,
+    SpvMemoryAccessMakePointerVisibleKHRShift = 4,
+    SpvMemoryAccessNonPrivatePointerShift = 5,
+    SpvMemoryAccessNonPrivatePointerKHRShift = 5,
+    SpvMemoryAccessMax = 0x7fffffff,
+} SpvMemoryAccessShift;
+
+typedef enum SpvMemoryAccessMask_ {
+    SpvMemoryAccessMaskNone = 0,
+    SpvMemoryAccessVolatileMask = 0x00000001,
+    SpvMemoryAccessAlignedMask = 0x00000002,
+    SpvMemoryAccessNontemporalMask = 0x00000004,
+    SpvMemoryAccessMakePointerAvailableMask = 0x00000008,
+    SpvMemoryAccessMakePointerAvailableKHRMask = 0x00000008,
+    SpvMemoryAccessMakePointerVisibleMask = 0x00000010,
+    SpvMemoryAccessMakePointerVisibleKHRMask = 0x00000010,
+    SpvMemoryAccessNonPrivatePointerMask = 0x00000020,
+    SpvMemoryAccessNonPrivatePointerKHRMask = 0x00000020,
+} SpvMemoryAccessMask;
+
+typedef enum SpvScope_ {
+    SpvScopeCrossDevice = 0,
+    SpvScopeDevice = 1,
+    SpvScopeWorkgroup = 2,
+    SpvScopeSubgroup = 3,
+    SpvScopeInvocation = 4,
+    SpvScopeQueueFamily = 5,
+    SpvScopeQueueFamilyKHR = 5,
+    SpvScopeShaderCallKHR = 6,
+    SpvScopeMax = 0x7fffffff,
+} SpvScope;
+
+typedef enum SpvGroupOperation_ {
+    SpvGroupOperationReduce = 0,
+    SpvGroupOperationInclusiveScan = 1,
+    SpvGroupOperationExclusiveScan = 2,
+    SpvGroupOperationClusteredReduce = 3,
+    SpvGroupOperationPartitionedReduceNV = 6,
+    SpvGroupOperationPartitionedInclusiveScanNV = 7,
+    SpvGroupOperationPartitionedExclusiveScanNV = 8,
+    SpvGroupOperationMax = 0x7fffffff,
+} SpvGroupOperation;
+
+typedef enum SpvKernelEnqueueFlags_ {
+    SpvKernelEnqueueFlagsNoWait = 0,
+    SpvKernelEnqueueFlagsWaitKernel = 1,
+    SpvKernelEnqueueFlagsWaitWorkGroup = 2,
+    SpvKernelEnqueueFlagsMax = 0x7fffffff,
+} SpvKernelEnqueueFlags;
+
+typedef enum SpvKernelProfilingInfoShift_ {
+    SpvKernelProfilingInfoCmdExecTimeShift = 0,
+    SpvKernelProfilingInfoMax = 0x7fffffff,
+} SpvKernelProfilingInfoShift;
+
+typedef enum SpvKernelProfilingInfoMask_ {
+    SpvKernelProfilingInfoMaskNone = 0,
+    SpvKernelProfilingInfoCmdExecTimeMask = 0x00000001,
+} SpvKernelProfilingInfoMask;
+
+typedef enum SpvCapability_ {
+    SpvCapabilityMatrix = 0,
+    SpvCapabilityShader = 1,
+    SpvCapabilityGeometry = 2,
+    SpvCapabilityTessellation = 3,
+    SpvCapabilityAddresses = 4,
+    SpvCapabilityLinkage = 5,
+    SpvCapabilityKernel = 6,
+    SpvCapabilityVector16 = 7,
+    SpvCapabilityFloat16Buffer = 8,
+    SpvCapabilityFloat16 = 9,
+    SpvCapabilityFloat64 = 10,
+    SpvCapabilityInt64 = 11,
+    SpvCapabilityInt64Atomics = 12,
+    SpvCapabilityImageBasic = 13,
+    SpvCapabilityImageReadWrite = 14,
+    SpvCapabilityImageMipmap = 15,
+    SpvCapabilityPipes = 17,
+    SpvCapabilityGroups = 18,
+    SpvCapabilityDeviceEnqueue = 19,
+    SpvCapabilityLiteralSampler = 20,
+    SpvCapabilityAtomicStorage = 21,
+    SpvCapabilityInt16 = 22,
+    SpvCapabilityTessellationPointSize = 23,
+    SpvCapabilityGeometryPointSize = 24,
+    SpvCapabilityImageGatherExtended = 25,
+    SpvCapabilityStorageImageMultisample = 27,
+    SpvCapabilityUniformBufferArrayDynamicIndexing = 28,
+    SpvCapabilitySampledImageArrayDynamicIndexing = 29,
+    SpvCapabilityStorageBufferArrayDynamicIndexing = 30,
+    SpvCapabilityStorageImageArrayDynamicIndexing = 31,
+    SpvCapabilityClipDistance = 32,
+    SpvCapabilityCullDistance = 33,
+    SpvCapabilityImageCubeArray = 34,
+    SpvCapabilitySampleRateShading = 35,
+    SpvCapabilityImageRect = 36,
+    SpvCapabilitySampledRect = 37,
+    SpvCapabilityGenericPointer = 38,
+    SpvCapabilityInt8 = 39,
+    SpvCapabilityInputAttachment = 40,
+    SpvCapabilitySparseResidency = 41,
+    SpvCapabilityMinLod = 42,
+    SpvCapabilitySampled1D = 43,
+    SpvCapabilityImage1D = 44,
+    SpvCapabilitySampledCubeArray = 45,
+    SpvCapabilitySampledBuffer = 46,
+    SpvCapabilityImageBuffer = 47,
+    SpvCapabilityImageMSArray = 48,
+    SpvCapabilityStorageImageExtendedFormats = 49,
+    SpvCapabilityImageQuery = 50,
+    SpvCapabilityDerivativeControl = 51,
+    SpvCapabilityInterpolationFunction = 52,
+    SpvCapabilityTransformFeedback = 53,
+    SpvCapabilityGeometryStreams = 54,
+    SpvCapabilityStorageImageReadWithoutFormat = 55,
+    SpvCapabilityStorageImageWriteWithoutFormat = 56,
+    SpvCapabilityMultiViewport = 57,
+    SpvCapabilitySubgroupDispatch = 58,
+    SpvCapabilityNamedBarrier = 59,
+    SpvCapabilityPipeStorage = 60,
+    SpvCapabilityGroupNonUniform = 61,
+    SpvCapabilityGroupNonUniformVote = 62,
+    SpvCapabilityGroupNonUniformArithmetic = 63,
+    SpvCapabilityGroupNonUniformBallot = 64,
+    SpvCapabilityGroupNonUniformShuffle = 65,
+    SpvCapabilityGroupNonUniformShuffleRelative = 66,
+    SpvCapabilityGroupNonUniformClustered = 67,
+    SpvCapabilityGroupNonUniformQuad = 68,
+    SpvCapabilityShaderLayer = 69,
+    SpvCapabilityShaderViewportIndex = 70,
+    SpvCapabilityFragmentShadingRateKHR = 4422,
+    SpvCapabilitySubgroupBallotKHR = 4423,
+    SpvCapabilityDrawParameters = 4427,
+    SpvCapabilitySubgroupVoteKHR = 4431,
+    SpvCapabilityStorageBuffer16BitAccess = 4433,
+    SpvCapabilityStorageUniformBufferBlock16 = 4433,
+    SpvCapabilityStorageUniform16 = 4434,
+    SpvCapabilityUniformAndStorageBuffer16BitAccess = 4434,
+    SpvCapabilityStoragePushConstant16 = 4435,
+    SpvCapabilityStorageInputOutput16 = 4436,
+    SpvCapabilityDeviceGroup = 4437,
+    SpvCapabilityMultiView = 4439,
+    SpvCapabilityVariablePointersStorageBuffer = 4441,
+    SpvCapabilityVariablePointers = 4442,
+    SpvCapabilityAtomicStorageOps = 4445,
+    SpvCapabilitySampleMaskPostDepthCoverage = 4447,
+    SpvCapabilityStorageBuffer8BitAccess = 4448,
+    SpvCapabilityUniformAndStorageBuffer8BitAccess = 4449,
+    SpvCapabilityStoragePushConstant8 = 4450,
+    SpvCapabilityDenormPreserve = 4464,
+    SpvCapabilityDenormFlushToZero = 4465,
+    SpvCapabilitySignedZeroInfNanPreserve = 4466,
+    SpvCapabilityRoundingModeRTE = 4467,
+    SpvCapabilityRoundingModeRTZ = 4468,
+    SpvCapabilityRayQueryProvisionalKHR = 4471,
+    SpvCapabilityRayTraversalPrimitiveCullingProvisionalKHR = 4478,
+    SpvCapabilityFloat16ImageAMD = 5008,
+    SpvCapabilityImageGatherBiasLodAMD = 5009,
+    SpvCapabilityFragmentMaskAMD = 5010,
+    SpvCapabilityStencilExportEXT = 5013,
+    SpvCapabilityImageReadWriteLodAMD = 5015,
+    SpvCapabilityInt64ImageEXT = 5016,
+    SpvCapabilityShaderClockKHR = 5055,
+    SpvCapabilitySampleMaskOverrideCoverageNV = 5249,
+    SpvCapabilityGeometryShaderPassthroughNV = 5251,
+    SpvCapabilityShaderViewportIndexLayerEXT = 5254,
+    SpvCapabilityShaderViewportIndexLayerNV = 5254,
+    SpvCapabilityShaderViewportMaskNV = 5255,
+    SpvCapabilityShaderStereoViewNV = 5259,
+    SpvCapabilityPerViewAttributesNV = 5260,
+    SpvCapabilityFragmentFullyCoveredEXT = 5265,
+    SpvCapabilityMeshShadingNV = 5266,
+    SpvCapabilityImageFootprintNV = 5282,
+    SpvCapabilityFragmentBarycentricNV = 5284,
+    SpvCapabilityComputeDerivativeGroupQuadsNV = 5288,
+    SpvCapabilityFragmentDensityEXT = 5291,
+    SpvCapabilityShadingRateNV = 5291,
+    SpvCapabilityGroupNonUniformPartitionedNV = 5297,
+    SpvCapabilityShaderNonUniform = 5301,
+    SpvCapabilityShaderNonUniformEXT = 5301,
+    SpvCapabilityRuntimeDescriptorArray = 5302,
+    SpvCapabilityRuntimeDescriptorArrayEXT = 5302,
+    SpvCapabilityInputAttachmentArrayDynamicIndexing = 5303,
+    SpvCapabilityInputAttachmentArrayDynamicIndexingEXT = 5303,
+    SpvCapabilityUniformTexelBufferArrayDynamicIndexing = 5304,
+    SpvCapabilityUniformTexelBufferArrayDynamicIndexingEXT = 5304,
+    SpvCapabilityStorageTexelBufferArrayDynamicIndexing = 5305,
+    SpvCapabilityStorageTexelBufferArrayDynamicIndexingEXT = 5305,
+    SpvCapabilityUniformBufferArrayNonUniformIndexing = 5306,
+    SpvCapabilityUniformBufferArrayNonUniformIndexingEXT = 5306,
+    SpvCapabilitySampledImageArrayNonUniformIndexing = 5307,
+    SpvCapabilitySampledImageArrayNonUniformIndexingEXT = 5307,
+    SpvCapabilityStorageBufferArrayNonUniformIndexing = 5308,
+    SpvCapabilityStorageBufferArrayNonUniformIndexingEXT = 5308,
+    SpvCapabilityStorageImageArrayNonUniformIndexing = 5309,
+    SpvCapabilityStorageImageArrayNonUniformIndexingEXT = 5309,
+    SpvCapabilityInputAttachmentArrayNonUniformIndexing = 5310,
+    SpvCapabilityInputAttachmentArrayNonUniformIndexingEXT = 5310,
+    SpvCapabilityUniformTexelBufferArrayNonUniformIndexing = 5311,
+    SpvCapabilityUniformTexelBufferArrayNonUniformIndexingEXT = 5311,
+    SpvCapabilityStorageTexelBufferArrayNonUniformIndexing = 5312,
+    SpvCapabilityStorageTexelBufferArrayNonUniformIndexingEXT = 5312,
+    SpvCapabilityRayTracingNV = 5340,
+    SpvCapabilityVulkanMemoryModel = 5345,
+    SpvCapabilityVulkanMemoryModelKHR = 5345,
+    SpvCapabilityVulkanMemoryModelDeviceScope = 5346,
+    SpvCapabilityVulkanMemoryModelDeviceScopeKHR = 5346,
+    SpvCapabilityPhysicalStorageBufferAddresses = 5347,
+    SpvCapabilityPhysicalStorageBufferAddressesEXT = 5347,
+    SpvCapabilityComputeDerivativeGroupLinearNV = 5350,
+    SpvCapabilityRayTracingProvisionalKHR = 5353,
+    SpvCapabilityCooperativeMatrixNV = 5357,
+    SpvCapabilityFragmentShaderSampleInterlockEXT = 5363,
+    SpvCapabilityFragmentShaderShadingRateInterlockEXT = 5372,
+    SpvCapabilityShaderSMBuiltinsNV = 5373,
+    SpvCapabilityFragmentShaderPixelInterlockEXT = 5378,
+    SpvCapabilityDemoteToHelperInvocationEXT = 5379,
+    SpvCapabilitySubgroupShuffleINTEL = 5568,
+    SpvCapabilitySubgroupBufferBlockIOINTEL = 5569,
+    SpvCapabilitySubgroupImageBlockIOINTEL = 5570,
+    SpvCapabilitySubgroupImageMediaBlockIOINTEL = 5579,
+    SpvCapabilityIntegerFunctions2INTEL = 5584,
+    SpvCapabilityFunctionPointersINTEL = 5603,
+    SpvCapabilityIndirectReferencesINTEL = 5604,
+    SpvCapabilitySubgroupAvcMotionEstimationINTEL = 5696,
+    SpvCapabilitySubgroupAvcMotionEstimationIntraINTEL = 5697,
+    SpvCapabilitySubgroupAvcMotionEstimationChromaINTEL = 5698,
+    SpvCapabilityFPGAMemoryAttributesINTEL = 5824,
+    SpvCapabilityUnstructuredLoopControlsINTEL = 5886,
+    SpvCapabilityFPGALoopControlsINTEL = 5888,
+    SpvCapabilityKernelAttributesINTEL = 5892,
+    SpvCapabilityFPGAKernelAttributesINTEL = 5897,
+    SpvCapabilityBlockingPipesINTEL = 5945,
+    SpvCapabilityFPGARegINTEL = 5948,
+    SpvCapabilityAtomicFloat32AddEXT = 6033,
+    SpvCapabilityAtomicFloat64AddEXT = 6034,
+    SpvCapabilityMax = 0x7fffffff,
+} SpvCapability;
+
+typedef enum SpvRayFlagsShift_ {
+    SpvRayFlagsOpaqueKHRShift = 0,
+    SpvRayFlagsNoOpaqueKHRShift = 1,
+    SpvRayFlagsTerminateOnFirstHitKHRShift = 2,
+    SpvRayFlagsSkipClosestHitShaderKHRShift = 3,
+    SpvRayFlagsCullBackFacingTrianglesKHRShift = 4,
+    SpvRayFlagsCullFrontFacingTrianglesKHRShift = 5,
+    SpvRayFlagsCullOpaqueKHRShift = 6,
+    SpvRayFlagsCullNoOpaqueKHRShift = 7,
+    SpvRayFlagsSkipTrianglesKHRShift = 8,
+    SpvRayFlagsSkipAABBsKHRShift = 9,
+    SpvRayFlagsMax = 0x7fffffff,
+} SpvRayFlagsShift;
+
+typedef enum SpvRayFlagsMask_ {
+    SpvRayFlagsMaskNone = 0,
+    SpvRayFlagsOpaqueKHRMask = 0x00000001,
+    SpvRayFlagsNoOpaqueKHRMask = 0x00000002,
+    SpvRayFlagsTerminateOnFirstHitKHRMask = 0x00000004,
+    SpvRayFlagsSkipClosestHitShaderKHRMask = 0x00000008,
+    SpvRayFlagsCullBackFacingTrianglesKHRMask = 0x00000010,
+    SpvRayFlagsCullFrontFacingTrianglesKHRMask = 0x00000020,
+    SpvRayFlagsCullOpaqueKHRMask = 0x00000040,
+    SpvRayFlagsCullNoOpaqueKHRMask = 0x00000080,
+    SpvRayFlagsSkipTrianglesKHRMask = 0x00000100,
+    SpvRayFlagsSkipAABBsKHRMask = 0x00000200,
+} SpvRayFlagsMask;
+
+typedef enum SpvRayQueryIntersection_ {
+    SpvRayQueryIntersectionRayQueryCandidateIntersectionKHR = 0,
+    SpvRayQueryIntersectionRayQueryCommittedIntersectionKHR = 1,
+    SpvRayQueryIntersectionMax = 0x7fffffff,
+} SpvRayQueryIntersection;
+
+typedef enum SpvRayQueryCommittedIntersectionType_ {
+    SpvRayQueryCommittedIntersectionTypeRayQueryCommittedIntersectionNoneKHR = 0,
+    SpvRayQueryCommittedIntersectionTypeRayQueryCommittedIntersectionTriangleKHR = 1,
+    SpvRayQueryCommittedIntersectionTypeRayQueryCommittedIntersectionGeneratedKHR = 2,
+    SpvRayQueryCommittedIntersectionTypeMax = 0x7fffffff,
+} SpvRayQueryCommittedIntersectionType;
+
+typedef enum SpvRayQueryCandidateIntersectionType_ {
+    SpvRayQueryCandidateIntersectionTypeRayQueryCandidateIntersectionTriangleKHR = 0,
+    SpvRayQueryCandidateIntersectionTypeRayQueryCandidateIntersectionAABBKHR = 1,
+    SpvRayQueryCandidateIntersectionTypeMax = 0x7fffffff,
+} SpvRayQueryCandidateIntersectionType;
+
+typedef enum SpvFragmentShadingRateShift_ {
+    SpvFragmentShadingRateVertical2PixelsShift = 0,
+    SpvFragmentShadingRateVertical4PixelsShift = 1,
+    SpvFragmentShadingRateHorizontal2PixelsShift = 2,
+    SpvFragmentShadingRateHorizontal4PixelsShift = 3,
+    SpvFragmentShadingRateMax = 0x7fffffff,
+} SpvFragmentShadingRateShift;
+
+typedef enum SpvFragmentShadingRateMask_ {
+    SpvFragmentShadingRateMaskNone = 0,
+    SpvFragmentShadingRateVertical2PixelsMask = 0x00000001,
+    SpvFragmentShadingRateVertical4PixelsMask = 0x00000002,
+    SpvFragmentShadingRateHorizontal2PixelsMask = 0x00000004,
+    SpvFragmentShadingRateHorizontal4PixelsMask = 0x00000008,
+} SpvFragmentShadingRateMask;
+
+typedef enum SpvOp_ {
+    SpvOpNop = 0,
+    SpvOpUndef = 1,
+    SpvOpSourceContinued = 2,
+    SpvOpSource = 3,
+    SpvOpSourceExtension = 4,
+    SpvOpName = 5,
+    SpvOpMemberName = 6,
+    SpvOpString = 7,
+    SpvOpLine = 8,
+    SpvOpExtension = 10,
+    SpvOpExtInstImport = 11,
+    SpvOpExtInst = 12,
+    SpvOpMemoryModel = 14,
+    SpvOpEntryPoint = 15,
+    SpvOpExecutionMode = 16,
+    SpvOpCapability = 17,
+    SpvOpTypeVoid = 19,
+    SpvOpTypeBool = 20,
+    SpvOpTypeInt = 21,
+    SpvOpTypeFloat = 22,
+    SpvOpTypeVector = 23,
+    SpvOpTypeMatrix = 24,
+    SpvOpTypeImage = 25,
+    SpvOpTypeSampler = 26,
+    SpvOpTypeSampledImage = 27,
+    SpvOpTypeArray = 28,
+    SpvOpTypeRuntimeArray = 29,
+    SpvOpTypeStruct = 30,
+    SpvOpTypeOpaque = 31,
+    SpvOpTypePointer = 32,
+    SpvOpTypeFunction = 33,
+    SpvOpTypeEvent = 34,
+    SpvOpTypeDeviceEvent = 35,
+    SpvOpTypeReserveId = 36,
+    SpvOpTypeQueue = 37,
+    SpvOpTypePipe = 38,
+    SpvOpTypeForwardPointer = 39,
+    SpvOpConstantTrue = 41,
+    SpvOpConstantFalse = 42,
+    SpvOpConstant = 43,
+    SpvOpConstantComposite = 44,
+    SpvOpConstantSampler = 45,
+    SpvOpConstantNull = 46,
+    SpvOpSpecConstantTrue = 48,
+    SpvOpSpecConstantFalse = 49,
+    SpvOpSpecConstant = 50,
+    SpvOpSpecConstantComposite = 51,
+    SpvOpSpecConstantOp = 52,
+    SpvOpFunction = 54,
+    SpvOpFunctionParameter = 55,
+    SpvOpFunctionEnd = 56,
+    SpvOpFunctionCall = 57,
+    SpvOpVariable = 59,
+    SpvOpImageTexelPointer = 60,
+    SpvOpLoad = 61,
+    SpvOpStore = 62,
+    SpvOpCopyMemory = 63,
+    SpvOpCopyMemorySized = 64,
+    SpvOpAccessChain = 65,
+    SpvOpInBoundsAccessChain = 66,
+    SpvOpPtrAccessChain = 67,
+    SpvOpArrayLength = 68,
+    SpvOpGenericPtrMemSemantics = 69,
+    SpvOpInBoundsPtrAccessChain = 70,
+    SpvOpDecorate = 71,
+    SpvOpMemberDecorate = 72,
+    SpvOpDecorationGroup = 73,
+    SpvOpGroupDecorate = 74,
+    SpvOpGroupMemberDecorate = 75,
+    SpvOpVectorExtractDynamic = 77,
+    SpvOpVectorInsertDynamic = 78,
+    SpvOpVectorShuffle = 79,
+    SpvOpCompositeConstruct = 80,
+    SpvOpCompositeExtract = 81,
+    SpvOpCompositeInsert = 82,
+    SpvOpCopyObject = 83,
+    SpvOpTranspose = 84,
+    SpvOpSampledImage = 86,
+    SpvOpImageSampleImplicitLod = 87,
+    SpvOpImageSampleExplicitLod = 88,
+    SpvOpImageSampleDrefImplicitLod = 89,
+    SpvOpImageSampleDrefExplicitLod = 90,
+    SpvOpImageSampleProjImplicitLod = 91,
+    SpvOpImageSampleProjExplicitLod = 92,
+    SpvOpImageSampleProjDrefImplicitLod = 93,
+    SpvOpImageSampleProjDrefExplicitLod = 94,
+    SpvOpImageFetch = 95,
+    SpvOpImageGather = 96,
+    SpvOpImageDrefGather = 97,
+    SpvOpImageRead = 98,
+    SpvOpImageWrite = 99,
+    SpvOpImage = 100,
+    SpvOpImageQueryFormat = 101,
+    SpvOpImageQueryOrder = 102,
+    SpvOpImageQuerySizeLod = 103,
+    SpvOpImageQuerySize = 104,
+    SpvOpImageQueryLod = 105,
+    SpvOpImageQueryLevels = 106,
+    SpvOpImageQuerySamples = 107,
+    SpvOpConvertFToU = 109,
+    SpvOpConvertFToS = 110,
+    SpvOpConvertSToF = 111,
+    SpvOpConvertUToF = 112,
+    SpvOpUConvert = 113,
+    SpvOpSConvert = 114,
+    SpvOpFConvert = 115,
+    SpvOpQuantizeToF16 = 116,
+    SpvOpConvertPtrToU = 117,
+    SpvOpSatConvertSToU = 118,
+    SpvOpSatConvertUToS = 119,
+    SpvOpConvertUToPtr = 120,
+    SpvOpPtrCastToGeneric = 121,
+    SpvOpGenericCastToPtr = 122,
+    SpvOpGenericCastToPtrExplicit = 123,
+    SpvOpBitcast = 124,
+    SpvOpSNegate = 126,
+    SpvOpFNegate = 127,
+    SpvOpIAdd = 128,
+    SpvOpFAdd = 129,
+    SpvOpISub = 130,
+    SpvOpFSub = 131,
+    SpvOpIMul = 132,
+    SpvOpFMul = 133,
+    SpvOpUDiv = 134,
+    SpvOpSDiv = 135,
+    SpvOpFDiv = 136,
+    SpvOpUMod = 137,
+    SpvOpSRem = 138,
+    SpvOpSMod = 139,
+    SpvOpFRem = 140,
+    SpvOpFMod = 141,
+    SpvOpVectorTimesScalar = 142,
+    SpvOpMatrixTimesScalar = 143,
+    SpvOpVectorTimesMatrix = 144,
+    SpvOpMatrixTimesVector = 145,
+    SpvOpMatrixTimesMatrix = 146,
+    SpvOpOuterProduct = 147,
+    SpvOpDot = 148,
+    SpvOpIAddCarry = 149,
+    SpvOpISubBorrow = 150,
+    SpvOpUMulExtended = 151,
+    SpvOpSMulExtended = 152,
+    SpvOpAny = 154,
+    SpvOpAll = 155,
+    SpvOpIsNan = 156,
+    SpvOpIsInf = 157,
+    SpvOpIsFinite = 158,
+    SpvOpIsNormal = 159,
+    SpvOpSignBitSet = 160,
+    SpvOpLessOrGreater = 161,
+    SpvOpOrdered = 162,
+    SpvOpUnordered = 163,
+    SpvOpLogicalEqual = 164,
+    SpvOpLogicalNotEqual = 165,
+    SpvOpLogicalOr = 166,
+    SpvOpLogicalAnd = 167,
+    SpvOpLogicalNot = 168,
+    SpvOpSelect = 169,
+    SpvOpIEqual = 170,
+    SpvOpINotEqual = 171,
+    SpvOpUGreaterThan = 172,
+    SpvOpSGreaterThan = 173,
+    SpvOpUGreaterThanEqual = 174,
+    SpvOpSGreaterThanEqual = 175,
+    SpvOpULessThan = 176,
+    SpvOpSLessThan = 177,
+    SpvOpULessThanEqual = 178,
+    SpvOpSLessThanEqual = 179,
+    SpvOpFOrdEqual = 180,
+    SpvOpFUnordEqual = 181,
+    SpvOpFOrdNotEqual = 182,
+    SpvOpFUnordNotEqual = 183,
+    SpvOpFOrdLessThan = 184,
+    SpvOpFUnordLessThan = 185,
+    SpvOpFOrdGreaterThan = 186,
+    SpvOpFUnordGreaterThan = 187,
+    SpvOpFOrdLessThanEqual = 188,
+    SpvOpFUnordLessThanEqual = 189,
+    SpvOpFOrdGreaterThanEqual = 190,
+    SpvOpFUnordGreaterThanEqual = 191,
+    SpvOpShiftRightLogical = 194,
+    SpvOpShiftRightArithmetic = 195,
+    SpvOpShiftLeftLogical = 196,
+    SpvOpBitwiseOr = 197,
+    SpvOpBitwiseXor = 198,
+    SpvOpBitwiseAnd = 199,
+    SpvOpNot = 200,
+    SpvOpBitFieldInsert = 201,
+    SpvOpBitFieldSExtract = 202,
+    SpvOpBitFieldUExtract = 203,
+    SpvOpBitReverse = 204,
+    SpvOpBitCount = 205,
+    SpvOpDPdx = 207,
+    SpvOpDPdy = 208,
+    SpvOpFwidth = 209,
+    SpvOpDPdxFine = 210,
+    SpvOpDPdyFine = 211,
+    SpvOpFwidthFine = 212,
+    SpvOpDPdxCoarse = 213,
+    SpvOpDPdyCoarse = 214,
+    SpvOpFwidthCoarse = 215,
+    SpvOpEmitVertex = 218,
+    SpvOpEndPrimitive = 219,
+    SpvOpEmitStreamVertex = 220,
+    SpvOpEndStreamPrimitive = 221,
+    SpvOpControlBarrier = 224,
+    SpvOpMemoryBarrier = 225,
+    SpvOpAtomicLoad = 227,
+    SpvOpAtomicStore = 228,
+    SpvOpAtomicExchange = 229,
+    SpvOpAtomicCompareExchange = 230,
+    SpvOpAtomicCompareExchangeWeak = 231,
+    SpvOpAtomicIIncrement = 232,
+    SpvOpAtomicIDecrement = 233,
+    SpvOpAtomicIAdd = 234,
+    SpvOpAtomicISub = 235,
+    SpvOpAtomicSMin = 236,
+    SpvOpAtomicUMin = 237,
+    SpvOpAtomicSMax = 238,
+    SpvOpAtomicUMax = 239,
+    SpvOpAtomicAnd = 240,
+    SpvOpAtomicOr = 241,
+    SpvOpAtomicXor = 242,
+    SpvOpPhi = 245,
+    SpvOpLoopMerge = 246,
+    SpvOpSelectionMerge = 247,
+    SpvOpLabel = 248,
+    SpvOpBranch = 249,
+    SpvOpBranchConditional = 250,
+    SpvOpSwitch = 251,
+    SpvOpKill = 252,
+    SpvOpReturn = 253,
+    SpvOpReturnValue = 254,
+    SpvOpUnreachable = 255,
+    SpvOpLifetimeStart = 256,
+    SpvOpLifetimeStop = 257,
+    SpvOpGroupAsyncCopy = 259,
+    SpvOpGroupWaitEvents = 260,
+    SpvOpGroupAll = 261,
+    SpvOpGroupAny = 262,
+    SpvOpGroupBroadcast = 263,
+    SpvOpGroupIAdd = 264,
+    SpvOpGroupFAdd = 265,
+    SpvOpGroupFMin = 266,
+    SpvOpGroupUMin = 267,
+    SpvOpGroupSMin = 268,
+    SpvOpGroupFMax = 269,
+    SpvOpGroupUMax = 270,
+    SpvOpGroupSMax = 271,
+    SpvOpReadPipe = 274,
+    SpvOpWritePipe = 275,
+    SpvOpReservedReadPipe = 276,
+    SpvOpReservedWritePipe = 277,
+    SpvOpReserveReadPipePackets = 278,
+    SpvOpReserveWritePipePackets = 279,
+    SpvOpCommitReadPipe = 280,
+    SpvOpCommitWritePipe = 281,
+    SpvOpIsValidReserveId = 282,
+    SpvOpGetNumPipePackets = 283,
+    SpvOpGetMaxPipePackets = 284,
+    SpvOpGroupReserveReadPipePackets = 285,
+    SpvOpGroupReserveWritePipePackets = 286,
+    SpvOpGroupCommitReadPipe = 287,
+    SpvOpGroupCommitWritePipe = 288,
+    SpvOpEnqueueMarker = 291,
+    SpvOpEnqueueKernel = 292,
+    SpvOpGetKernelNDrangeSubGroupCount = 293,
+    SpvOpGetKernelNDrangeMaxSubGroupSize = 294,
+    SpvOpGetKernelWorkGroupSize = 295,
+    SpvOpGetKernelPreferredWorkGroupSizeMultiple = 296,
+    SpvOpRetainEvent = 297,
+    SpvOpReleaseEvent = 298,
+    SpvOpCreateUserEvent = 299,
+    SpvOpIsValidEvent = 300,
+    SpvOpSetUserEventStatus = 301,
+    SpvOpCaptureEventProfilingInfo = 302,
+    SpvOpGetDefaultQueue = 303,
+    SpvOpBuildNDRange = 304,
+    SpvOpImageSparseSampleImplicitLod = 305,
+    SpvOpImageSparseSampleExplicitLod = 306,
+    SpvOpImageSparseSampleDrefImplicitLod = 307,
+    SpvOpImageSparseSampleDrefExplicitLod = 308,
+    SpvOpImageSparseSampleProjImplicitLod = 309,
+    SpvOpImageSparseSampleProjExplicitLod = 310,
+    SpvOpImageSparseSampleProjDrefImplicitLod = 311,
+    SpvOpImageSparseSampleProjDrefExplicitLod = 312,
+    SpvOpImageSparseFetch = 313,
+    SpvOpImageSparseGather = 314,
+    SpvOpImageSparseDrefGather = 315,
+    SpvOpImageSparseTexelsResident = 316,
+    SpvOpNoLine = 317,
+    SpvOpAtomicFlagTestAndSet = 318,
+    SpvOpAtomicFlagClear = 319,
+    SpvOpImageSparseRead = 320,
+    SpvOpSizeOf = 321,
+    SpvOpTypePipeStorage = 322,
+    SpvOpConstantPipeStorage = 323,
+    SpvOpCreatePipeFromPipeStorage = 324,
+    SpvOpGetKernelLocalSizeForSubgroupCount = 325,
+    SpvOpGetKernelMaxNumSubgroups = 326,
+    SpvOpTypeNamedBarrier = 327,
+    SpvOpNamedBarrierInitialize = 328,
+    SpvOpMemoryNamedBarrier = 329,
+    SpvOpModuleProcessed = 330,
+    SpvOpExecutionModeId = 331,
+    SpvOpDecorateId = 332,
+    SpvOpGroupNonUniformElect = 333,
+    SpvOpGroupNonUniformAll = 334,
+    SpvOpGroupNonUniformAny = 335,
+    SpvOpGroupNonUniformAllEqual = 336,
+    SpvOpGroupNonUniformBroadcast = 337,
+    SpvOpGroupNonUniformBroadcastFirst = 338,
+    SpvOpGroupNonUniformBallot = 339,
+    SpvOpGroupNonUniformInverseBallot = 340,
+    SpvOpGroupNonUniformBallotBitExtract = 341,
+    SpvOpGroupNonUniformBallotBitCount = 342,
+    SpvOpGroupNonUniformBallotFindLSB = 343,
+    SpvOpGroupNonUniformBallotFindMSB = 344,
+    SpvOpGroupNonUniformShuffle = 345,
+    SpvOpGroupNonUniformShuffleXor = 346,
+    SpvOpGroupNonUniformShuffleUp = 347,
+    SpvOpGroupNonUniformShuffleDown = 348,
+    SpvOpGroupNonUniformIAdd = 349,
+    SpvOpGroupNonUniformFAdd = 350,
+    SpvOpGroupNonUniformIMul = 351,
+    SpvOpGroupNonUniformFMul = 352,
+    SpvOpGroupNonUniformSMin = 353,
+    SpvOpGroupNonUniformUMin = 354,
+    SpvOpGroupNonUniformFMin = 355,
+    SpvOpGroupNonUniformSMax = 356,
+    SpvOpGroupNonUniformUMax = 357,
+    SpvOpGroupNonUniformFMax = 358,
+    SpvOpGroupNonUniformBitwiseAnd = 359,
+    SpvOpGroupNonUniformBitwiseOr = 360,
+    SpvOpGroupNonUniformBitwiseXor = 361,
+    SpvOpGroupNonUniformLogicalAnd = 362,
+    SpvOpGroupNonUniformLogicalOr = 363,
+    SpvOpGroupNonUniformLogicalXor = 364,
+    SpvOpGroupNonUniformQuadBroadcast = 365,
+    SpvOpGroupNonUniformQuadSwap = 366,
+    SpvOpCopyLogical = 400,
+    SpvOpPtrEqual = 401,
+    SpvOpPtrNotEqual = 402,
+    SpvOpPtrDiff = 403,
+    SpvOpTerminateInvocation = 4416,
+    SpvOpSubgroupBallotKHR = 4421,
+    SpvOpSubgroupFirstInvocationKHR = 4422,
+    SpvOpSubgroupAllKHR = 4428,
+    SpvOpSubgroupAnyKHR = 4429,
+    SpvOpSubgroupAllEqualKHR = 4430,
+    SpvOpSubgroupReadInvocationKHR = 4432,
+    SpvOpTypeRayQueryProvisionalKHR = 4472,
+    SpvOpRayQueryInitializeKHR = 4473,
+    SpvOpRayQueryTerminateKHR = 4474,
+    SpvOpRayQueryGenerateIntersectionKHR = 4475,
+    SpvOpRayQueryConfirmIntersectionKHR = 4476,
+    SpvOpRayQueryProceedKHR = 4477,
+    SpvOpRayQueryGetIntersectionTypeKHR = 4479,
+    SpvOpGroupIAddNonUniformAMD = 5000,
+    SpvOpGroupFAddNonUniformAMD = 5001,
+    SpvOpGroupFMinNonUniformAMD = 5002,
+    SpvOpGroupUMinNonUniformAMD = 5003,
+    SpvOpGroupSMinNonUniformAMD = 5004,
+    SpvOpGroupFMaxNonUniformAMD = 5005,
+    SpvOpGroupUMaxNonUniformAMD = 5006,
+    SpvOpGroupSMaxNonUniformAMD = 5007,
+    SpvOpFragmentMaskFetchAMD = 5011,
+    SpvOpFragmentFetchAMD = 5012,
+    SpvOpReadClockKHR = 5056,
+    SpvOpImageSampleFootprintNV = 5283,
+    SpvOpGroupNonUniformPartitionNV = 5296,
+    SpvOpWritePackedPrimitiveIndices4x8NV = 5299,
+    SpvOpReportIntersectionKHR = 5334,
+    SpvOpReportIntersectionNV = 5334,
+    SpvOpIgnoreIntersectionKHR = 5335,
+    SpvOpIgnoreIntersectionNV = 5335,
+    SpvOpTerminateRayKHR = 5336,
+    SpvOpTerminateRayNV = 5336,
+    SpvOpTraceNV = 5337,
+    SpvOpTraceRayKHR = 5337,
+    SpvOpTypeAccelerationStructureKHR = 5341,
+    SpvOpTypeAccelerationStructureNV = 5341,
+    SpvOpExecuteCallableKHR = 5344,
+    SpvOpExecuteCallableNV = 5344,
+    SpvOpTypeCooperativeMatrixNV = 5358,
+    SpvOpCooperativeMatrixLoadNV = 5359,
+    SpvOpCooperativeMatrixStoreNV = 5360,
+    SpvOpCooperativeMatrixMulAddNV = 5361,
+    SpvOpCooperativeMatrixLengthNV = 5362,
+    SpvOpBeginInvocationInterlockEXT = 5364,
+    SpvOpEndInvocationInterlockEXT = 5365,
+    SpvOpDemoteToHelperInvocationEXT = 5380,
+    SpvOpIsHelperInvocationEXT = 5381,
+    SpvOpSubgroupShuffleINTEL = 5571,
+    SpvOpSubgroupShuffleDownINTEL = 5572,
+    SpvOpSubgroupShuffleUpINTEL = 5573,
+    SpvOpSubgroupShuffleXorINTEL = 5574,
+    SpvOpSubgroupBlockReadINTEL = 5575,
+    SpvOpSubgroupBlockWriteINTEL = 5576,
+    SpvOpSubgroupImageBlockReadINTEL = 5577,
+    SpvOpSubgroupImageBlockWriteINTEL = 5578,
+    SpvOpSubgroupImageMediaBlockReadINTEL = 5580,
+    SpvOpSubgroupImageMediaBlockWriteINTEL = 5581,
+    SpvOpUCountLeadingZerosINTEL = 5585,
+    SpvOpUCountTrailingZerosINTEL = 5586,
+    SpvOpAbsISubINTEL = 5587,
+    SpvOpAbsUSubINTEL = 5588,
+    SpvOpIAddSatINTEL = 5589,
+    SpvOpUAddSatINTEL = 5590,
+    SpvOpIAverageINTEL = 5591,
+    SpvOpUAverageINTEL = 5592,
+    SpvOpIAverageRoundedINTEL = 5593,
+    SpvOpUAverageRoundedINTEL = 5594,
+    SpvOpISubSatINTEL = 5595,
+    SpvOpUSubSatINTEL = 5596,
+    SpvOpIMul32x16INTEL = 5597,
+    SpvOpUMul32x16INTEL = 5598,
+    SpvOpFunctionPointerINTEL = 5600,
+    SpvOpFunctionPointerCallINTEL = 5601,
+    SpvOpDecorateString = 5632,
+    SpvOpDecorateStringGOOGLE = 5632,
+    SpvOpMemberDecorateString = 5633,
+    SpvOpMemberDecorateStringGOOGLE = 5633,
+    SpvOpVmeImageINTEL = 5699,
+    SpvOpTypeVmeImageINTEL = 5700,
+    SpvOpTypeAvcImePayloadINTEL = 5701,
+    SpvOpTypeAvcRefPayloadINTEL = 5702,
+    SpvOpTypeAvcSicPayloadINTEL = 5703,
+    SpvOpTypeAvcMcePayloadINTEL = 5704,
+    SpvOpTypeAvcMceResultINTEL = 5705,
+    SpvOpTypeAvcImeResultINTEL = 5706,
+    SpvOpTypeAvcImeResultSingleReferenceStreamoutINTEL = 5707,
+    SpvOpTypeAvcImeResultDualReferenceStreamoutINTEL = 5708,
+    SpvOpTypeAvcImeSingleReferenceStreaminINTEL = 5709,
+    SpvOpTypeAvcImeDualReferenceStreaminINTEL = 5710,
+    SpvOpTypeAvcRefResultINTEL = 5711,
+    SpvOpTypeAvcSicResultINTEL = 5712,
+    SpvOpSubgroupAvcMceGetDefaultInterBaseMultiReferencePenaltyINTEL = 5713,
+    SpvOpSubgroupAvcMceSetInterBaseMultiReferencePenaltyINTEL = 5714,
+    SpvOpSubgroupAvcMceGetDefaultInterShapePenaltyINTEL = 5715,
+    SpvOpSubgroupAvcMceSetInterShapePenaltyINTEL = 5716,
+    SpvOpSubgroupAvcMceGetDefaultInterDirectionPenaltyINTEL = 5717,
+    SpvOpSubgroupAvcMceSetInterDirectionPenaltyINTEL = 5718,
+    SpvOpSubgroupAvcMceGetDefaultIntraLumaShapePenaltyINTEL = 5719,
+    SpvOpSubgroupAvcMceGetDefaultInterMotionVectorCostTableINTEL = 5720,
+    SpvOpSubgroupAvcMceGetDefaultHighPenaltyCostTableINTEL = 5721,
+    SpvOpSubgroupAvcMceGetDefaultMediumPenaltyCostTableINTEL = 5722,
+    SpvOpSubgroupAvcMceGetDefaultLowPenaltyCostTableINTEL = 5723,
+    SpvOpSubgroupAvcMceSetMotionVectorCostFunctionINTEL = 5724,
+    SpvOpSubgroupAvcMceGetDefaultIntraLumaModePenaltyINTEL = 5725,
+    SpvOpSubgroupAvcMceGetDefaultNonDcLumaIntraPenaltyINTEL = 5726,
+    SpvOpSubgroupAvcMceGetDefaultIntraChromaModeBasePenaltyINTEL = 5727,
+    SpvOpSubgroupAvcMceSetAcOnlyHaarINTEL = 5728,
+    SpvOpSubgroupAvcMceSetSourceInterlacedFieldPolarityINTEL = 5729,
+    SpvOpSubgroupAvcMceSetSingleReferenceInterlacedFieldPolarityINTEL = 5730,
+    SpvOpSubgroupAvcMceSetDualReferenceInterlacedFieldPolaritiesINTEL = 5731,
+    SpvOpSubgroupAvcMceConvertToImePayloadINTEL = 5732,
+    SpvOpSubgroupAvcMceConvertToImeResultINTEL = 5733,
+    SpvOpSubgroupAvcMceConvertToRefPayloadINTEL = 5734,
+    SpvOpSubgroupAvcMceConvertToRefResultINTEL = 5735,
+    SpvOpSubgroupAvcMceConvertToSicPayloadINTEL = 5736,
+    SpvOpSubgroupAvcMceConvertToSicResultINTEL = 5737,
+    SpvOpSubgroupAvcMceGetMotionVectorsINTEL = 5738,
+    SpvOpSubgroupAvcMceGetInterDistortionsINTEL = 5739,
+    SpvOpSubgroupAvcMceGetBestInterDistortionsINTEL = 5740,
+    SpvOpSubgroupAvcMceGetInterMajorShapeINTEL = 5741,
+    SpvOpSubgroupAvcMceGetInterMinorShapeINTEL = 5742,
+    SpvOpSubgroupAvcMceGetInterDirectionsINTEL = 5743,
+    SpvOpSubgroupAvcMceGetInterMotionVectorCountINTEL = 5744,
+    SpvOpSubgroupAvcMceGetInterReferenceIdsINTEL = 5745,
+    SpvOpSubgroupAvcMceGetInterReferenceInterlacedFieldPolaritiesINTEL = 5746,
+    SpvOpSubgroupAvcImeInitializeINTEL = 5747,
+    SpvOpSubgroupAvcImeSetSingleReferenceINTEL = 5748,
+    SpvOpSubgroupAvcImeSetDualReferenceINTEL = 5749,
+    SpvOpSubgroupAvcImeRefWindowSizeINTEL = 5750,
+    SpvOpSubgroupAvcImeAdjustRefOffsetINTEL = 5751,
+    SpvOpSubgroupAvcImeConvertToMcePayloadINTEL = 5752,
+    SpvOpSubgroupAvcImeSetMaxMotionVectorCountINTEL = 5753,
+    SpvOpSubgroupAvcImeSetUnidirectionalMixDisableINTEL = 5754,
+    SpvOpSubgroupAvcImeSetEarlySearchTerminationThresholdINTEL = 5755,
+    SpvOpSubgroupAvcImeSetWeightedSadINTEL = 5756,
+    SpvOpSubgroupAvcImeEvaluateWithSingleReferenceINTEL = 5757,
+    SpvOpSubgroupAvcImeEvaluateWithDualReferenceINTEL = 5758,
+    SpvOpSubgroupAvcImeEvaluateWithSingleReferenceStreaminINTEL = 5759,
+    SpvOpSubgroupAvcImeEvaluateWithDualReferenceStreaminINTEL = 5760,
+    SpvOpSubgroupAvcImeEvaluateWithSingleReferenceStreamoutINTEL = 5761,
+    SpvOpSubgroupAvcImeEvaluateWithDualReferenceStreamoutINTEL = 5762,
+    SpvOpSubgroupAvcImeEvaluateWithSingleReferenceStreaminoutINTEL = 5763,
+    SpvOpSubgroupAvcImeEvaluateWithDualReferenceStreaminoutINTEL = 5764,
+    SpvOpSubgroupAvcImeConvertToMceResultINTEL = 5765,
+    SpvOpSubgroupAvcImeGetSingleReferenceStreaminINTEL = 5766,
+    SpvOpSubgroupAvcImeGetDualReferenceStreaminINTEL = 5767,
+    SpvOpSubgroupAvcImeStripSingleReferenceStreamoutINTEL = 5768,
+    SpvOpSubgroupAvcImeStripDualReferenceStreamoutINTEL = 5769,
+    SpvOpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeMotionVectorsINTEL = 5770,
+    SpvOpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeDistortionsINTEL = 5771,
+    SpvOpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeReferenceIdsINTEL = 5772,
+    SpvOpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeMotionVectorsINTEL = 5773,
+    SpvOpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeDistortionsINTEL = 5774,
+    SpvOpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeReferenceIdsINTEL = 5775,
+    SpvOpSubgroupAvcImeGetBorderReachedINTEL = 5776,
+    SpvOpSubgroupAvcImeGetTruncatedSearchIndicationINTEL = 5777,
+    SpvOpSubgroupAvcImeGetUnidirectionalEarlySearchTerminationINTEL = 5778,
+    SpvOpSubgroupAvcImeGetWeightingPatternMinimumMotionVectorINTEL = 5779,
+    SpvOpSubgroupAvcImeGetWeightingPatternMinimumDistortionINTEL = 5780,
+    SpvOpSubgroupAvcFmeInitializeINTEL = 5781,
+    SpvOpSubgroupAvcBmeInitializeINTEL = 5782,
+    SpvOpSubgroupAvcRefConvertToMcePayloadINTEL = 5783,
+    SpvOpSubgroupAvcRefSetBidirectionalMixDisableINTEL = 5784,
+    SpvOpSubgroupAvcRefSetBilinearFilterEnableINTEL = 5785,
+    SpvOpSubgroupAvcRefEvaluateWithSingleReferenceINTEL = 5786,
+    SpvOpSubgroupAvcRefEvaluateWithDualReferenceINTEL = 5787,
+    SpvOpSubgroupAvcRefEvaluateWithMultiReferenceINTEL = 5788,
+    SpvOpSubgroupAvcRefEvaluateWithMultiReferenceInterlacedINTEL = 5789,
+    SpvOpSubgroupAvcRefConvertToMceResultINTEL = 5790,
+    SpvOpSubgroupAvcSicInitializeINTEL = 5791,
+    SpvOpSubgroupAvcSicConfigureSkcINTEL = 5792,
+    SpvOpSubgroupAvcSicConfigureIpeLumaINTEL = 5793,
+    SpvOpSubgroupAvcSicConfigureIpeLumaChromaINTEL = 5794,
+    SpvOpSubgroupAvcSicGetMotionVectorMaskINTEL = 5795,
+    SpvOpSubgroupAvcSicConvertToMcePayloadINTEL = 5796,
+    SpvOpSubgroupAvcSicSetIntraLumaShapePenaltyINTEL = 5797,
+    SpvOpSubgroupAvcSicSetIntraLumaModeCostFunctionINTEL = 5798,
+    SpvOpSubgroupAvcSicSetIntraChromaModeCostFunctionINTEL = 5799,
+    SpvOpSubgroupAvcSicSetBilinearFilterEnableINTEL = 5800,
+    SpvOpSubgroupAvcSicSetSkcForwardTransformEnableINTEL = 5801,
+    SpvOpSubgroupAvcSicSetBlockBasedRawSkipSadINTEL = 5802,
+    SpvOpSubgroupAvcSicEvaluateIpeINTEL = 5803,
+    SpvOpSubgroupAvcSicEvaluateWithSingleReferenceINTEL = 5804,
+    SpvOpSubgroupAvcSicEvaluateWithDualReferenceINTEL = 5805,
+    SpvOpSubgroupAvcSicEvaluateWithMultiReferenceINTEL = 5806,
+    SpvOpSubgroupAvcSicEvaluateWithMultiReferenceInterlacedINTEL = 5807,
+    SpvOpSubgroupAvcSicConvertToMceResultINTEL = 5808,
+    SpvOpSubgroupAvcSicGetIpeLumaShapeINTEL = 5809,
+    SpvOpSubgroupAvcSicGetBestIpeLumaDistortionINTEL = 5810,
+    SpvOpSubgroupAvcSicGetBestIpeChromaDistortionINTEL = 5811,
+    SpvOpSubgroupAvcSicGetPackedIpeLumaModesINTEL = 5812,
+    SpvOpSubgroupAvcSicGetIpeChromaModeINTEL = 5813,
+    SpvOpSubgroupAvcSicGetPackedSkcLumaCountThresholdINTEL = 5814,
+    SpvOpSubgroupAvcSicGetPackedSkcLumaSumThresholdINTEL = 5815,
+    SpvOpSubgroupAvcSicGetInterRawSadsINTEL = 5816,
+    SpvOpLoopControlINTEL = 5887,
+    SpvOpReadPipeBlockingINTEL = 5946,
+    SpvOpWritePipeBlockingINTEL = 5947,
+    SpvOpFPGARegINTEL = 5949,
+    SpvOpRayQueryGetRayTMinKHR = 6016,
+    SpvOpRayQueryGetRayFlagsKHR = 6017,
+    SpvOpRayQueryGetIntersectionTKHR = 6018,
+    SpvOpRayQueryGetIntersectionInstanceCustomIndexKHR = 6019,
+    SpvOpRayQueryGetIntersectionInstanceIdKHR = 6020,
+    SpvOpRayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR = 6021,
+    SpvOpRayQueryGetIntersectionGeometryIndexKHR = 6022,
+    SpvOpRayQueryGetIntersectionPrimitiveIndexKHR = 6023,
+    SpvOpRayQueryGetIntersectionBarycentricsKHR = 6024,
+    SpvOpRayQueryGetIntersectionFrontFaceKHR = 6025,
+    SpvOpRayQueryGetIntersectionCandidateAABBOpaqueKHR = 6026,
+    SpvOpRayQueryGetIntersectionObjectRayDirectionKHR = 6027,
+    SpvOpRayQueryGetIntersectionObjectRayOriginKHR = 6028,
+    SpvOpRayQueryGetWorldRayDirectionKHR = 6029,
+    SpvOpRayQueryGetWorldRayOriginKHR = 6030,
+    SpvOpRayQueryGetIntersectionObjectToWorldKHR = 6031,
+    SpvOpRayQueryGetIntersectionWorldToObjectKHR = 6032,
+    SpvOpAtomicFAddEXT = 6035,
+    SpvOpMax = 0x7fffffff,
+} SpvOp;
+
+#ifdef SPV_ENABLE_UTILITY_CODE
+inline void SpvHasResultAndType(SpvOp opcode, bool *hasResult, bool *hasResultType) {
+    *hasResult = *hasResultType = false;
+    switch (opcode) {
+    default: /* unknown opcode */ break;
+    case SpvOpNop: *hasResult = false; *hasResultType = false; break;
+    case SpvOpUndef: *hasResult = true; *hasResultType = true; break;
+    case SpvOpSourceContinued: *hasResult = false; *hasResultType = false; break;
+    case SpvOpSource: *hasResult = false; *hasResultType = false; break;
+    case SpvOpSourceExtension: *hasResult = false; *hasResultType = false; break;
+    case SpvOpName: *hasResult = false; *hasResultType = false; break;
+    case SpvOpMemberName: *hasResult = false; *hasResultType = false; break;
+    case SpvOpString: *hasResult = true; *hasResultType = false; break;
+    case SpvOpLine: *hasResult = false; *hasResultType = false; break;
+    case SpvOpExtension: *hasResult = false; *hasResultType = false; break;
+    case SpvOpExtInstImport: *hasResult = true; *hasResultType = false; break;
+    case SpvOpExtInst: *hasResult = true; *hasResultType = true; break;
+    case SpvOpMemoryModel: *hasResult = false; *hasResultType = false; break;
+    case SpvOpEntryPoint: *hasResult = false; *hasResultType = false; break;
+    case SpvOpExecutionMode: *hasResult = false; *hasResultType = false; break;
+    case SpvOpCapability: *hasResult = false; *hasResultType = false; break;
+    case SpvOpTypeVoid: *hasResult = true; *hasResultType = false; break;
+    case SpvOpTypeBool: *hasResult = true; *hasResultType = false; break;
+    case SpvOpTypeInt: *hasResult = true; *hasResultType = false; break;
+    case SpvOpTypeFloat: *hasResult = true; *hasResultType = false; break;
+    case SpvOpTypeVector: *hasResult = true; *hasResultType = false; break;
+    case SpvOpTypeMatrix: *hasResult = true; *hasResultType = false; break;
+    case SpvOpTypeImage: *hasResult = true; *hasResultType = false; break;
+    case SpvOpTypeSampler: *hasResult = true; *hasResultType = false; break;
+    case SpvOpTypeSampledImage: *hasResult = true; *hasResultType = false; break;
+    case SpvOpTypeArray: *hasResult = true; *hasResultType = false; break;
+    case SpvOpTypeRuntimeArray: *hasResult = true; *hasResultType = false; break;
+    case SpvOpTypeStruct: *hasResult = true; *hasResultType = false; break;
+    case SpvOpTypeOpaque: *hasResult = true; *hasResultType = false; break;
+    case SpvOpTypePointer: *hasResult = true; *hasResultType = false; break;
+    case SpvOpTypeFunction: *hasResult = true; *hasResultType = false; break;
+    case SpvOpTypeEvent: *hasResult = true; *hasResultType = false; break;
+    case SpvOpTypeDeviceEvent: *hasResult = true; *hasResultType = false; break;
+    case SpvOpTypeReserveId: *hasResult = true; *hasResultType = false; break;
+    case SpvOpTypeQueue: *hasResult = true; *hasResultType = false; break;
+    case SpvOpTypePipe: *hasResult = true; *hasResultType = false; break;
+    case SpvOpTypeForwardPointer: *hasResult = false; *hasResultType = false; break;
+    case SpvOpConstantTrue: *hasResult = true; *hasResultType = true; break;
+    case SpvOpConstantFalse: *hasResult = true; *hasResultType = true; break;
+    case SpvOpConstant: *hasResult = true; *hasResultType = true; break;
+    case SpvOpConstantComposite: *hasResult = true; *hasResultType = true; break;
+    case SpvOpConstantSampler: *hasResult = true; *hasResultType = true; break;
+    case SpvOpConstantNull: *hasResult = true; *hasResultType = true; break;
+    case SpvOpSpecConstantTrue: *hasResult = true; *hasResultType = true; break;
+    case SpvOpSpecConstantFalse: *hasResult = true; *hasResultType = true; break;
+    case SpvOpSpecConstant: *hasResult = true; *hasResultType = true; break;
+    case SpvOpSpecConstantComposite: *hasResult = true; *hasResultType = true; break;
+    case SpvOpSpecConstantOp: *hasResult = true; *hasResultType = true; break;
+    case SpvOpFunction: *hasResult = true; *hasResultType = true; break;
+    case SpvOpFunctionParameter: *hasResult = true; *hasResultType = true; break;
+    case SpvOpFunctionEnd: *hasResult = false; *hasResultType = false; break;
+    case SpvOpFunctionCall: *hasResult = true; *hasResultType = true; break;
+    case SpvOpVariable: *hasResult = true; *hasResultType = true; break;
+    case SpvOpImageTexelPointer: *hasResult = true; *hasResultType = true; break;
+    case SpvOpLoad: *hasResult = true; *hasResultType = true; break;
+    case SpvOpStore: *hasResult = false; *hasResultType = false; break;
+    case SpvOpCopyMemory: *hasResult = false; *hasResultType = false; break;
+    case SpvOpCopyMemorySized: *hasResult = false; *hasResultType = false; break;
+    case SpvOpAccessChain: *hasResult = true; *hasResultType = true; break;
+    case SpvOpInBoundsAccessChain: *hasResult = true; *hasResultType = true; break;
+    case SpvOpPtrAccessChain: *hasResult = true; *hasResultType = true; break;
+    case SpvOpArrayLength: *hasResult = true; *hasResultType = true; break;
+    case SpvOpGenericPtrMemSemantics: *hasResult = true; *hasResultType = true; break;
+    case SpvOpInBoundsPtrAccessChain: *hasResult = true; *hasResultType = true; break;
+    case SpvOpDecorate: *hasResult = false; *hasResultType = false; break;
+    case SpvOpMemberDecorate: *hasResult = false; *hasResultType = false; break;
+    case SpvOpDecorationGroup: *hasResult = true; *hasResultType = false; break;
+    case SpvOpGroupDecorate: *hasResult = false; *hasResultType = false; break;
+    case SpvOpGroupMemberDecorate: *hasResult = false; *hasResultType = false; break;
+    case SpvOpVectorExtractDynamic: *hasResult = true; *hasResultType = true; break;
+    case SpvOpVectorInsertDynamic: *hasResult = true; *hasResultType = true; break;
+    case SpvOpVectorShuffle: *hasResult = true; *hasResultType = true; break;
+    case SpvOpCompositeConstruct: *hasResult = true; *hasResultType = true; break;
+    case SpvOpCompositeExtract: *hasResult = true; *hasResultType = true; break;
+    case SpvOpCompositeInsert: *hasResult = true; *hasResultType = true; break;
+    case SpvOpCopyObject: *hasResult = true; *hasResultType = true; break;
+    case SpvOpTranspose: *hasResult = true; *hasResultType = true; break;
+    case SpvOpSampledImage: *hasResult = true; *hasResultType = true; break;
+    case SpvOpImageSampleImplicitLod: *hasResult = true; *hasResultType = true; break;
+    case SpvOpImageSampleExplicitLod: *hasResult = true; *hasResultType = true; break;
+    case SpvOpImageSampleDrefImplicitLod: *hasResult = true; *hasResultType = true; break;
+    case SpvOpImageSampleDrefExplicitLod: *hasResult = true; *hasResultType = true; break;
+    case SpvOpImageSampleProjImplicitLod: *hasResult = true; *hasResultType = true; break;
+    case SpvOpImageSampleProjExplicitLod: *hasResult = true; *hasResultType = true; break;
+    case SpvOpImageSampleProjDrefImplicitLod: *hasResult = true; *hasResultType = true; break;
+    case SpvOpImageSampleProjDrefExplicitLod: *hasResult = true; *hasResultType = true; break;
+    case SpvOpImageFetch: *hasResult = true; *hasResultType = true; break;
+    case SpvOpImageGather: *hasResult = true; *hasResultType = true; break;
+    case SpvOpImageDrefGather: *hasResult = true; *hasResultType = true; break;
+    case SpvOpImageRead: *hasResult = true; *hasResultType = true; break;
+    case SpvOpImageWrite: *hasResult = false; *hasResultType = false; break;
+    case SpvOpImage: *hasResult = true; *hasResultType = true; break;
+    case SpvOpImageQueryFormat: *hasResult = true; *hasResultType = true; break;
+    case SpvOpImageQueryOrder: *hasResult = true; *hasResultType = true; break;
+    case SpvOpImageQuerySizeLod: *hasResult = true; *hasResultType = true; break;
+    case SpvOpImageQuerySize: *hasResult = true; *hasResultType = true; break;
+    case SpvOpImageQueryLod: *hasResult = true; *hasResultType = true; break;
+    case SpvOpImageQueryLevels: *hasResult = true; *hasResultType = true; break;
+    case SpvOpImageQuerySamples: *hasResult = true; *hasResultType = true; break;
+    case SpvOpConvertFToU: *hasResult = true; *hasResultType = true; break;
+    case SpvOpConvertFToS: *hasResult = true; *hasResultType = true; break;
+    case SpvOpConvertSToF: *hasResult = true; *hasResultType = true; break;
+    case SpvOpConvertUToF: *hasResult = true; *hasResultType = true; break;
+    case SpvOpUConvert: *hasResult = true; *hasResultType = true; break;
+    case SpvOpSConvert: *hasResult = true; *hasResultType = true; break;
+    case SpvOpFConvert: *hasResult = true; *hasResultType = true; break;
+    case SpvOpQuantizeToF16: *hasResult = true; *hasResultType = true; break;
+    case SpvOpConvertPtrToU: *hasResult = true; *hasResultType = true; break;
+    case SpvOpSatConvertSToU: *hasResult = true; *hasResultType = true; break;
+    case SpvOpSatConvertUToS: *hasResult = true; *hasResultType = true; break;
+    case SpvOpConvertUToPtr: *hasResult = true; *hasResultType = true; break;
+    case SpvOpPtrCastToGeneric: *hasResult = true; *hasResultType = true; break;
+    case SpvOpGenericCastToPtr: *hasResult = true; *hasResultType = true; break;
+    case SpvOpGenericCastToPtrExplicit: *hasResult = true; *hasResultType = true; break;
+    case SpvOpBitcast: *hasResult = true; *hasResultType = true; break;
+    case SpvOpSNegate: *hasResult = true; *hasResultType = true; break;
+    case SpvOpFNegate: *hasResult = true; *hasResultType = true; break;
+    case SpvOpIAdd: *hasResult = true; *hasResultType = true; break;
+    case SpvOpFAdd: *hasResult = true; *hasResultType = true; break;
+    case SpvOpISub: *hasResult = true; *hasResultType = true; break;
+    case SpvOpFSub: *hasResult = true; *hasResultType = true; break;
+    case SpvOpIMul: *hasResult = true; *hasResultType = true; break;
+    case SpvOpFMul: *hasResult = true; *hasResultType = true; break;
+    case SpvOpUDiv: *hasResult = true; *hasResultType = true; break;
+    case SpvOpSDiv: *hasResult = true; *hasResultType = true; break;
+    case SpvOpFDiv: *hasResult = true; *hasResultType = true; break;
+    case SpvOpUMod: *hasResult = true; *hasResultType = true; break;
+    case SpvOpSRem: *hasResult = true; *hasResultType = true; break;
+    case SpvOpSMod: *hasResult = true; *hasResultType = true; break;
+    case SpvOpFRem: *hasResult = true; *hasResultType = true; break;
+    case SpvOpFMod: *hasResult = true; *hasResultType = true; break;
+    case SpvOpVectorTimesScalar: *hasResult = true; *hasResultType = true; break;
+    case SpvOpMatrixTimesScalar: *hasResult = true; *hasResultType = true; break;
+    case SpvOpVectorTimesMatrix: *hasResult = true; *hasResultType = true; break;
+    case SpvOpMatrixTimesVector: *hasResult = true; *hasResultType = true; break;
+    case SpvOpMatrixTimesMatrix: *hasResult = true; *hasResultType = true; break;
+    case SpvOpOuterProduct: *hasResult = true; *hasResultType = true; break;
+    case SpvOpDot: *hasResult = true; *hasResultType = true; break;
+    case SpvOpIAddCarry: *hasResult = true; *hasResultType = true; break;
+    case SpvOpISubBorrow: *hasResult = true; *hasResultType = true; break;
+    case SpvOpUMulExtended: *hasResult = true; *hasResultType = true; break;
+    case SpvOpSMulExtended: *hasResult = true; *hasResultType = true; break;
+    case SpvOpAny: *hasResult = true; *hasResultType = true; break;
+    case SpvOpAll: *hasResult = true; *hasResultType = true; break;
+    case SpvOpIsNan: *hasResult = true; *hasResultType = true; break;
+    case SpvOpIsInf: *hasResult = true; *hasResultType = true; break;
+    case SpvOpIsFinite: *hasResult = true; *hasResultType = true; break;
+    case SpvOpIsNormal: *hasResult = true; *hasResultType = true; break;
+    case SpvOpSignBitSet: *hasResult = true; *hasResultType = true; break;
+    case SpvOpLessOrGreater: *hasResult = true; *hasResultType = true; break;
+    case SpvOpOrdered: *hasResult = true; *hasResultType = true; break;
+    case SpvOpUnordered: *hasResult = true; *hasResultType = true; break;
+    case SpvOpLogicalEqual: *hasResult = true; *hasResultType = true; break;
+    case SpvOpLogicalNotEqual: *hasResult = true; *hasResultType = true; break;
+    case SpvOpLogicalOr: *hasResult = true; *hasResultType = true; break;
+    case SpvOpLogicalAnd: *hasResult = true; *hasResultType = true; break;
+    case SpvOpLogicalNot: *hasResult = true; *hasResultType = true; break;
+    case SpvOpSelect: *hasResult = true; *hasResultType = true; break;
+    case SpvOpIEqual: *hasResult = true; *hasResultType = true; break;
+    case SpvOpINotEqual: *hasResult = true; *hasResultType = true; break;
+    case SpvOpUGreaterThan: *hasResult = true; *hasResultType = true; break;
+    case SpvOpSGreaterThan: *hasResult = true; *hasResultType = true; break;
+    case SpvOpUGreaterThanEqual: *hasResult = true; *hasResultType = true; break;
+    case SpvOpSGreaterThanEqual: *hasResult = true; *hasResultType = true; break;
+    case SpvOpULessThan: *hasResult = true; *hasResultType = true; break;
+    case SpvOpSLessThan: *hasResult = true; *hasResultType = true; break;
+    case SpvOpULessThanEqual: *hasResult = true; *hasResultType = true; break;
+    case SpvOpSLessThanEqual: *hasResult = true; *hasResultType = true; break;
+    case SpvOpFOrdEqual: *hasResult = true; *hasResultType = true; break;
+    case SpvOpFUnordEqual: *hasResult = true; *hasResultType = true; break;
+    case SpvOpFOrdNotEqual: *hasResult = true; *hasResultType = true; break;
+    case SpvOpFUnordNotEqual: *hasResult = true; *hasResultType = true; break;
+    case SpvOpFOrdLessThan: *hasResult = true; *hasResultType = true; break;
+    case SpvOpFUnordLessThan: *hasResult = true; *hasResultType = true; break;
+    case SpvOpFOrdGreaterThan: *hasResult = true; *hasResultType = true; break;
+    case SpvOpFUnordGreaterThan: *hasResult = true; *hasResultType = true; break;
+    case SpvOpFOrdLessThanEqual: *hasResult = true; *hasResultType = true; break;
+    case SpvOpFUnordLessThanEqual: *hasResult = true; *hasResultType = true; break;
+    case SpvOpFOrdGreaterThanEqual: *hasResult = true; *hasResultType = true; break;
+    case SpvOpFUnordGreaterThanEqual: *hasResult = true; *hasResultType = true; break;
+    case SpvOpShiftRightLogical: *hasResult = true; *hasResultType = true; break;
+    case SpvOpShiftRightArithmetic: *hasResult = true; *hasResultType = true; break;
+    case SpvOpShiftLeftLogical: *hasResult = true; *hasResultType = true; break;
+    case SpvOpBitwiseOr: *hasResult = true; *hasResultType = true; break;
+    case SpvOpBitwiseXor: *hasResult = true; *hasResultType = true; break;
+    case SpvOpBitwiseAnd: *hasResult = true; *hasResultType = true; break;
+    case SpvOpNot: *hasResult = true; *hasResultType = true; break;
+    case SpvOpBitFieldInsert: *hasResult = true; *hasResultType = true; break;
+    case SpvOpBitFieldSExtract: *hasResult = true; *hasResultType = true; break;
+    case SpvOpBitFieldUExtract: *hasResult = true; *hasResultType = true; break;
+    case SpvOpBitReverse: *hasResult = true; *hasResultType = true; break;
+    case SpvOpBitCount: *hasResult = true; *hasResultType = true; break;
+    case SpvOpDPdx: *hasResult = true; *hasResultType = true; break;
+    case SpvOpDPdy: *hasResult = true; *hasResultType = true; break;
+    case SpvOpFwidth: *hasResult = true; *hasResultType = true; break;
+    case SpvOpDPdxFine: *hasResult = true; *hasResultType = true; break;
+    case SpvOpDPdyFine: *hasResult = true; *hasResultType = true; break;
+    case SpvOpFwidthFine: *hasResult = true; *hasResultType = true; break;
+    case SpvOpDPdxCoarse: *hasResult = true; *hasResultType = true; break;
+    case SpvOpDPdyCoarse: *hasResult = true; *hasResultType = true; break;
+    case SpvOpFwidthCoarse: *hasResult = true; *hasResultType = true; break;
+    case SpvOpEmitVertex: *hasResult = false; *hasResultType = false; break;
+    case SpvOpEndPrimitive: *hasResult = false; *hasResultType = false; break;
+    case SpvOpEmitStreamVertex: *hasResult = false; *hasResultType = false; break;
+    case SpvOpEndStreamPrimitive: *hasResult = false; *hasResultType = false; break;
+    case SpvOpControlBarrier: *hasResult = false; *hasResultType = false; break;
+    case SpvOpMemoryBarrier: *hasResult = false; *hasResultType = false; break;
+    case SpvOpAtomicLoad: *hasResult = true; *hasResultType = true; break;
+    case SpvOpAtomicStore: *hasResult = false; *hasResultType = false; break;
+    case SpvOpAtomicExchange: *hasResult = true; *hasResultType = true; break;
+    case SpvOpAtomicCompareExchange: *hasResult = true; *hasResultType = true; break;
+    case SpvOpAtomicCompareExchangeWeak: *hasResult = true; *hasResultType = true; break;
+    case SpvOpAtomicIIncrement: *hasResult = true; *hasResultType = true; break;
+    case SpvOpAtomicIDecrement: *hasResult = true; *hasResultType = true; break;
+    case SpvOpAtomicIAdd: *hasResult = true; *hasResultType = true; break;
+    case SpvOpAtomicISub: *hasResult = true; *hasResultType = true; break;
+    case SpvOpAtomicSMin: *hasResult = true; *hasResultType = true; break;
+    case SpvOpAtomicUMin: *hasResult = true; *hasResultType = true; break;
+    case SpvOpAtomicSMax: *hasResult = true; *hasResultType = true; break;
+    case SpvOpAtomicUMax: *hasResult = true; *hasResultType = true; break;
+    case SpvOpAtomicAnd: *hasResult = true; *hasResultType = true; break;
+    case SpvOpAtomicOr: *hasResult = true; *hasResultType = true; break;
+    case SpvOpAtomicXor: *hasResult = true; *hasResultType = true; break;
+    case SpvOpPhi: *hasResult = true; *hasResultType = true; break;
+    case SpvOpLoopMerge: *hasResult = false; *hasResultType = false; break;
+    case SpvOpSelectionMerge: *hasResult = false; *hasResultType = false; break;
+    case SpvOpLabel: *hasResult = true; *hasResultType = false; break;
+    case SpvOpBranch: *hasResult = false; *hasResultType = false; break;
+    case SpvOpBranchConditional: *hasResult = false; *hasResultType = false; break;
+    case SpvOpSwitch: *hasResult = false; *hasResultType = false; break;
+    case SpvOpKill: *hasResult = false; *hasResultType = false; break;
+    case SpvOpReturn: *hasResult = false; *hasResultType = false; break;
+    case SpvOpReturnValue: *hasResult = false; *hasResultType = false; break;
+    case SpvOpUnreachable: *hasResult = false; *hasResultType = false; break;
+    case SpvOpLifetimeStart: *hasResult = false; *hasResultType = false; break;
+    case SpvOpLifetimeStop: *hasResult = false; *hasResultType = false; break;
+    case SpvOpGroupAsyncCopy: *hasResult = true; *hasResultType = true; break;
+    case SpvOpGroupWaitEvents: *hasResult = false; *hasResultType = false; break;
+    case SpvOpGroupAll: *hasResult = true; *hasResultType = true; break;
+    case SpvOpGroupAny: *hasResult = true; *hasResultType = true; break;
+    case SpvOpGroupBroadcast: *hasResult = true; *hasResultType = true; break;
+    case SpvOpGroupIAdd: *hasResult = true; *hasResultType = true; break;
+    case SpvOpGroupFAdd: *hasResult = true; *hasResultType = true; break;
+    case SpvOpGroupFMin: *hasResult = true; *hasResultType = true; break;
+    case SpvOpGroupUMin: *hasResult = true; *hasResultType = true; break;
+    case SpvOpGroupSMin: *hasResult = true; *hasResultType = true; break;
+    case SpvOpGroupFMax: *hasResult = true; *hasResultType = true; break;
+    case SpvOpGroupUMax: *hasResult = true; *hasResultType = true; break;
+    case SpvOpGroupSMax: *hasResult = true; *hasResultType = true; break;
+    case SpvOpReadPipe: *hasResult = true; *hasResultType = true; break;
+    case SpvOpWritePipe: *hasResult = true; *hasResultType = true; break;
+    case SpvOpReservedReadPipe: *hasResult = true; *hasResultType = true; break;
+    case SpvOpReservedWritePipe: *hasResult = true; *hasResultType = true; break;
+    case SpvOpReserveReadPipePackets: *hasResult = true; *hasResultType = true; break;
+    case SpvOpReserveWritePipePackets: *hasResult = true; *hasResultType = true; break;
+    case SpvOpCommitReadPipe: *hasResult = false; *hasResultType = false; break;
+    case SpvOpCommitWritePipe: *hasResult = false; *hasResultType = false; break;
+    case SpvOpIsValidReserveId: *hasResult = true; *hasResultType = true; break;
+    case SpvOpGetNumPipePackets: *hasResult = true; *hasResultType = true; break;
+    case SpvOpGetMaxPipePackets: *hasResult = true; *hasResultType = true; break;
+    case SpvOpGroupReserveReadPipePackets: *hasResult = true; *hasResultType = true; break;
+    case SpvOpGroupReserveWritePipePackets: *hasResult = true; *hasResultType = true; break;
+    case SpvOpGroupCommitReadPipe: *hasResult = false; *hasResultType = false; break;
+    case SpvOpGroupCommitWritePipe: *hasResult = false; *hasResultType = false; break;
+    case SpvOpEnqueueMarker: *hasResult = true; *hasResultType = true; break;
+    case SpvOpEnqueueKernel: *hasResult = true; *hasResultType = true; break;
+    case SpvOpGetKernelNDrangeSubGroupCount: *hasResult = true; *hasResultType = true; break;
+    case SpvOpGetKernelNDrangeMaxSubGroupSize: *hasResult = true; *hasResultType = true; break;
+    case SpvOpGetKernelWorkGroupSize: *hasResult = true; *hasResultType = true; break;
+    case SpvOpGetKernelPreferredWorkGroupSizeMultiple: *hasResult = true; *hasResultType = true; break;
+    case SpvOpRetainEvent: *hasResult = false; *hasResultType = false; break;
+    case SpvOpReleaseEvent: *hasResult = false; *hasResultType = false; break;
+    case SpvOpCreateUserEvent: *hasResult = true; *hasResultType = true; break;
+    case SpvOpIsValidEvent: *hasResult = true; *hasResultType = true; break;
+    case SpvOpSetUserEventStatus: *hasResult = false; *hasResultType = false; break;
+    case SpvOpCaptureEventProfilingInfo: *hasResult = false; *hasResultType = false; break;
+    case SpvOpGetDefaultQueue: *hasResult = true; *hasResultType = true; break;
+    case SpvOpBuildNDRange: *hasResult = true; *hasResultType = true; break;
+    case SpvOpImageSparseSampleImplicitLod: *hasResult = true; *hasResultType = true; break;
+    case SpvOpImageSparseSampleExplicitLod: *hasResult = true; *hasResultType = true; break;
+    case SpvOpImageSparseSampleDrefImplicitLod: *hasResult = true; *hasResultType = true; break;
+    case SpvOpImageSparseSampleDrefExplicitLod: *hasResult = true; *hasResultType = true; break;
+    case SpvOpImageSparseSampleProjImplicitLod: *hasResult = true; *hasResultType = true; break;
+    case SpvOpImageSparseSampleProjExplicitLod: *hasResult = true; *hasResultType = true; break;
+    case SpvOpImageSparseSampleProjDrefImplicitLod: *hasResult = true; *hasResultType = true; break;
+    case SpvOpImageSparseSampleProjDrefExplicitLod: *hasResult = true; *hasResultType = true; break;
+    case SpvOpImageSparseFetch: *hasResult = true; *hasResultType = true; break;
+    case SpvOpImageSparseGather: *hasResult = true; *hasResultType = true; break;
+    case SpvOpImageSparseDrefGather: *hasResult = true; *hasResultType = true; break;
+    case SpvOpImageSparseTexelsResident: *hasResult = true; *hasResultType = true; break;
+    case SpvOpNoLine: *hasResult = false; *hasResultType = false; break;
+    case SpvOpAtomicFlagTestAndSet: *hasResult = true; *hasResultType = true; break;
+    case SpvOpAtomicFlagClear: *hasResult = false; *hasResultType = false; break;
+    case SpvOpImageSparseRead: *hasResult = true; *hasResultType = true; break;
+    case SpvOpSizeOf: *hasResult = true; *hasResultType = true; break;
+    case SpvOpTypePipeStorage: *hasResult = true; *hasResultType = false; break;
+    case SpvOpConstantPipeStorage: *hasResult = true; *hasResultType = true; break;
+    case SpvOpCreatePipeFromPipeStorage: *hasResult = true; *hasResultType = true; break;
+    case SpvOpGetKernelLocalSizeForSubgroupCount: *hasResult = true; *hasResultType = true; break;
+    case SpvOpGetKernelMaxNumSubgroups: *hasResult = true; *hasResultType = true; break;
+    case SpvOpTypeNamedBarrier: *hasResult = true; *hasResultType = false; break;
+    case SpvOpNamedBarrierInitialize: *hasResult = true; *hasResultType = true; break;
+    case SpvOpMemoryNamedBarrier: *hasResult = false; *hasResultType = false; break;
+    case SpvOpModuleProcessed: *hasResult = false; *hasResultType = false; break;
+    case SpvOpExecutionModeId: *hasResult = false; *hasResultType = false; break;
+    case SpvOpDecorateId: *hasResult = false; *hasResultType = false; break;
+    case SpvOpGroupNonUniformElect: *hasResult = true; *hasResultType = true; break;
+    case SpvOpGroupNonUniformAll: *hasResult = true; *hasResultType = true; break;
+    case SpvOpGroupNonUniformAny: *hasResult = true; *hasResultType = true; break;
+    case SpvOpGroupNonUniformAllEqual: *hasResult = true; *hasResultType = true; break;
+    case SpvOpGroupNonUniformBroadcast: *hasResult = true; *hasResultType = true; break;
+    case SpvOpGroupNonUniformBroadcastFirst: *hasResult = true; *hasResultType = true; break;
+    case SpvOpGroupNonUniformBallot: *hasResult = true; *hasResultType = true; break;
+    case SpvOpGroupNonUniformInverseBallot: *hasResult = true; *hasResultType = true; break;
+    case SpvOpGroupNonUniformBallotBitExtract: *hasResult = true; *hasResultType = true; break;
+    case SpvOpGroupNonUniformBallotBitCount: *hasResult = true; *hasResultType = true; break;
+    case SpvOpGroupNonUniformBallotFindLSB: *hasResult = true; *hasResultType = true; break;
+    case SpvOpGroupNonUniformBallotFindMSB: *hasResult = true; *hasResultType = true; break;
+    case SpvOpGroupNonUniformShuffle: *hasResult = true; *hasResultType = true; break;
+    case SpvOpGroupNonUniformShuffleXor: *hasResult = true; *hasResultType = true; break;
+    case SpvOpGroupNonUniformShuffleUp: *hasResult = true; *hasResultType = true; break;
+    case SpvOpGroupNonUniformShuffleDown: *hasResult = true; *hasResultType = true; break;
+    case SpvOpGroupNonUniformIAdd: *hasResult = true; *hasResultType = true; break;
+    case SpvOpGroupNonUniformFAdd: *hasResult = true; *hasResultType = true; break;
+    case SpvOpGroupNonUniformIMul: *hasResult = true; *hasResultType = true; break;
+    case SpvOpGroupNonUniformFMul: *hasResult = true; *hasResultType = true; break;
+    case SpvOpGroupNonUniformSMin: *hasResult = true; *hasResultType = true; break;
+    case SpvOpGroupNonUniformUMin: *hasResult = true; *hasResultType = true; break;
+    case SpvOpGroupNonUniformFMin: *hasResult = true; *hasResultType = true; break;
+    case SpvOpGroupNonUniformSMax: *hasResult = true; *hasResultType = true; break;
+    case SpvOpGroupNonUniformUMax: *hasResult = true; *hasResultType = true; break;
+    case SpvOpGroupNonUniformFMax: *hasResult = true; *hasResultType = true; break;
+    case SpvOpGroupNonUniformBitwiseAnd: *hasResult = true; *hasResultType = true; break;
+    case SpvOpGroupNonUniformBitwiseOr: *hasResult = true; *hasResultType = true; break;
+    case SpvOpGroupNonUniformBitwiseXor: *hasResult = true; *hasResultType = true; break;
+    case SpvOpGroupNonUniformLogicalAnd: *hasResult = true; *hasResultType = true; break;
+    case SpvOpGroupNonUniformLogicalOr: *hasResult = true; *hasResultType = true; break;
+    case SpvOpGroupNonUniformLogicalXor: *hasResult = true; *hasResultType = true; break;
+    case SpvOpGroupNonUniformQuadBroadcast: *hasResult = true; *hasResultType = true; break;
+    case SpvOpGroupNonUniformQuadSwap: *hasResult = true; *hasResultType = true; break;
+    case SpvOpCopyLogical: *hasResult = true; *hasResultType = true; break;
+    case SpvOpPtrEqual: *hasResult = true; *hasResultType = true; break;
+    case SpvOpPtrNotEqual: *hasResult = true; *hasResultType = true; break;
+    case SpvOpPtrDiff: *hasResult = true; *hasResultType = true; break;
+    case SpvOpTerminateInvocation: *hasResult = false; *hasResultType = false; break;
+    case SpvOpSubgroupBallotKHR: *hasResult = true; *hasResultType = true; break;
+    case SpvOpSubgroupFirstInvocationKHR: *hasResult = true; *hasResultType = true; break;
+    case SpvOpSubgroupAllKHR: *hasResult = true; *hasResultType = true; break;
+    case SpvOpSubgroupAnyKHR: *hasResult = true; *hasResultType = true; break;
+    case SpvOpSubgroupAllEqualKHR: *hasResult = true; *hasResultType = true; break;
+    case SpvOpSubgroupReadInvocationKHR: *hasResult = true; *hasResultType = true; break;
+    case SpvOpTypeRayQueryProvisionalKHR: *hasResult = true; *hasResultType = false; break;
+    case SpvOpRayQueryInitializeKHR: *hasResult = false; *hasResultType = false; break;
+    case SpvOpRayQueryTerminateKHR: *hasResult = false; *hasResultType = false; break;
+    case SpvOpRayQueryGenerateIntersectionKHR: *hasResult = false; *hasResultType = false; break;
+    case SpvOpRayQueryConfirmIntersectionKHR: *hasResult = false; *hasResultType = false; break;
+    case SpvOpRayQueryProceedKHR: *hasResult = true; *hasResultType = true; break;
+    case SpvOpRayQueryGetIntersectionTypeKHR: *hasResult = true; *hasResultType = true; break;
+    case SpvOpGroupIAddNonUniformAMD: *hasResult = true; *hasResultType = true; break;
+    case SpvOpGroupFAddNonUniformAMD: *hasResult = true; *hasResultType = true; break;
+    case SpvOpGroupFMinNonUniformAMD: *hasResult = true; *hasResultType = true; break;
+    case SpvOpGroupUMinNonUniformAMD: *hasResult = true; *hasResultType = true; break;
+    case SpvOpGroupSMinNonUniformAMD: *hasResult = true; *hasResultType = true; break;
+    case SpvOpGroupFMaxNonUniformAMD: *hasResult = true; *hasResultType = true; break;
+    case SpvOpGroupUMaxNonUniformAMD: *hasResult = true; *hasResultType = true; break;
+    case SpvOpGroupSMaxNonUniformAMD: *hasResult = true; *hasResultType = true; break;
+    case SpvOpFragmentMaskFetchAMD: *hasResult = true; *hasResultType = true; break;
+    case SpvOpFragmentFetchAMD: *hasResult = true; *hasResultType = true; break;
+    case SpvOpReadClockKHR: *hasResult = true; *hasResultType = true; break;
+    case SpvOpImageSampleFootprintNV: *hasResult = true; *hasResultType = true; break;
+    case SpvOpGroupNonUniformPartitionNV: *hasResult = true; *hasResultType = true; break;
+    case SpvOpWritePackedPrimitiveIndices4x8NV: *hasResult = false; *hasResultType = false; break;
+    case SpvOpReportIntersectionNV: *hasResult = true; *hasResultType = true; break;
+    case SpvOpIgnoreIntersectionNV: *hasResult = false; *hasResultType = false; break;
+    case SpvOpTerminateRayNV: *hasResult = false; *hasResultType = false; break;
+    case SpvOpTraceNV: *hasResult = false; *hasResultType = false; break;
+    case SpvOpTypeAccelerationStructureNV: *hasResult = true; *hasResultType = false; break;
+    case SpvOpExecuteCallableNV: *hasResult = false; *hasResultType = false; break;
+    case SpvOpTypeCooperativeMatrixNV: *hasResult = true; *hasResultType = false; break;
+    case SpvOpCooperativeMatrixLoadNV: *hasResult = true; *hasResultType = true; break;
+    case SpvOpCooperativeMatrixStoreNV: *hasResult = false; *hasResultType = false; break;
+    case SpvOpCooperativeMatrixMulAddNV: *hasResult = true; *hasResultType = true; break;
+    case SpvOpCooperativeMatrixLengthNV: *hasResult = true; *hasResultType = true; break;
+    case SpvOpBeginInvocationInterlockEXT: *hasResult = false; *hasResultType = false; break;
+    case SpvOpEndInvocationInterlockEXT: *hasResult = false; *hasResultType = false; break;
+    case SpvOpDemoteToHelperInvocationEXT: *hasResult = false; *hasResultType = false; break;
+    case SpvOpIsHelperInvocationEXT: *hasResult = true; *hasResultType = true; break;
+    case SpvOpSubgroupShuffleINTEL: *hasResult = true; *hasResultType = true; break;
+    case SpvOpSubgroupShuffleDownINTEL: *hasResult = true; *hasResultType = true; break;
+    case SpvOpSubgroupShuffleUpINTEL: *hasResult = true; *hasResultType = true; break;
+    case SpvOpSubgroupShuffleXorINTEL: *hasResult = true; *hasResultType = true; break;
+    case SpvOpSubgroupBlockReadINTEL: *hasResult = true; *hasResultType = true; break;
+    case SpvOpSubgroupBlockWriteINTEL: *hasResult = false; *hasResultType = false; break;
+    case SpvOpSubgroupImageBlockReadINTEL: *hasResult = true; *hasResultType = true; break;
+    case SpvOpSubgroupImageBlockWriteINTEL: *hasResult = false; *hasResultType = false; break;
+    case SpvOpSubgroupImageMediaBlockReadINTEL: *hasResult = true; *hasResultType = true; break;
+    case SpvOpSubgroupImageMediaBlockWriteINTEL: *hasResult = false; *hasResultType = false; break;
+    case SpvOpUCountLeadingZerosINTEL: *hasResult = true; *hasResultType = true; break;
+    case SpvOpUCountTrailingZerosINTEL: *hasResult = true; *hasResultType = true; break;
+    case SpvOpAbsISubINTEL: *hasResult = true; *hasResultType = true; break;
+    case SpvOpAbsUSubINTEL: *hasResult = true; *hasResultType = true; break;
+    case SpvOpIAddSatINTEL: *hasResult = true; *hasResultType = true; break;
+    case SpvOpUAddSatINTEL: *hasResult = true; *hasResultType = true; break;
+    case SpvOpIAverageINTEL: *hasResult = true; *hasResultType = true; break;
+    case SpvOpUAverageINTEL: *hasResult = true; *hasResultType = true; break;
+    case SpvOpIAverageRoundedINTEL: *hasResult = true; *hasResultType = true; break;
+    case SpvOpUAverageRoundedINTEL: *hasResult = true; *hasResultType = true; break;
+    case SpvOpISubSatINTEL: *hasResult = true; *hasResultType = true; break;
+    case SpvOpUSubSatINTEL: *hasResult = true; *hasResultType = true; break;
+    case SpvOpIMul32x16INTEL: *hasResult = true; *hasResultType = true; break;
+    case SpvOpUMul32x16INTEL: *hasResult = true; *hasResultType = true; break;
+    case SpvOpFunctionPointerINTEL: *hasResult = true; *hasResultType = true; break;
+    case SpvOpFunctionPointerCallINTEL: *hasResult = true; *hasResultType = true; break;
+    case SpvOpDecorateString: *hasResult = false; *hasResultType = false; break;
+    case SpvOpMemberDecorateString: *hasResult = false; *hasResultType = false; break;
+    case SpvOpVmeImageINTEL: *hasResult = true; *hasResultType = true; break;
+    case SpvOpTypeVmeImageINTEL: *hasResult = true; *hasResultType = false; break;
+    case SpvOpTypeAvcImePayloadINTEL: *hasResult = true; *hasResultType = false; break;
+    case SpvOpTypeAvcRefPayloadINTEL: *hasResult = true; *hasResultType = false; break;
+    case SpvOpTypeAvcSicPayloadINTEL: *hasResult = true; *hasResultType = false; break;
+    case SpvOpTypeAvcMcePayloadINTEL: *hasResult = true; *hasResultType = false; break;
+    case SpvOpTypeAvcMceResultINTEL: *hasResult = true; *hasResultType = false; break;
+    case SpvOpTypeAvcImeResultINTEL: *hasResult = true; *hasResultType = false; break;
+    case SpvOpTypeAvcImeResultSingleReferenceStreamoutINTEL: *hasResult = true; *hasResultType = false; break;
+    case SpvOpTypeAvcImeResultDualReferenceStreamoutINTEL: *hasResult = true; *hasResultType = false; break;
+    case SpvOpTypeAvcImeSingleReferenceStreaminINTEL: *hasResult = true; *hasResultType = false; break;
+    case SpvOpTypeAvcImeDualReferenceStreaminINTEL: *hasResult = true; *hasResultType = false; break;
+    case SpvOpTypeAvcRefResultINTEL: *hasResult = true; *hasResultType = false; break;
+    case SpvOpTypeAvcSicResultINTEL: *hasResult = true; *hasResultType = false; break;
+    case SpvOpSubgroupAvcMceGetDefaultInterBaseMultiReferencePenaltyINTEL: *hasResult = true; *hasResultType = true; break;
+    case SpvOpSubgroupAvcMceSetInterBaseMultiReferencePenaltyINTEL: *hasResult = true; *hasResultType = true; break;
+    case SpvOpSubgroupAvcMceGetDefaultInterShapePenaltyINTEL: *hasResult = true; *hasResultType = true; break;
+    case SpvOpSubgroupAvcMceSetInterShapePenaltyINTEL: *hasResult = true; *hasResultType = true; break;
+    case SpvOpSubgroupAvcMceGetDefaultInterDirectionPenaltyINTEL: *hasResult = true; *hasResultType = true; break;
+    case SpvOpSubgroupAvcMceSetInterDirectionPenaltyINTEL: *hasResult = true; *hasResultType = true; break;
+    case SpvOpSubgroupAvcMceGetDefaultIntraLumaShapePenaltyINTEL: *hasResult = true; *hasResultType = true; break;
+    case SpvOpSubgroupAvcMceGetDefaultInterMotionVectorCostTableINTEL: *hasResult = true; *hasResultType = true; break;
+    case SpvOpSubgroupAvcMceGetDefaultHighPenaltyCostTableINTEL: *hasResult = true; *hasResultType = true; break;
+    case SpvOpSubgroupAvcMceGetDefaultMediumPenaltyCostTableINTEL: *hasResult = true; *hasResultType = true; break;
+    case SpvOpSubgroupAvcMceGetDefaultLowPenaltyCostTableINTEL: *hasResult = true; *hasResultType = true; break;
+    case SpvOpSubgroupAvcMceSetMotionVectorCostFunctionINTEL: *hasResult = true; *hasResultType = true; break;
+    case SpvOpSubgroupAvcMceGetDefaultIntraLumaModePenaltyINTEL: *hasResult = true; *hasResultType = true; break;
+    case SpvOpSubgroupAvcMceGetDefaultNonDcLumaIntraPenaltyINTEL: *hasResult = true; *hasResultType = true; break;
+    case SpvOpSubgroupAvcMceGetDefaultIntraChromaModeBasePenaltyINTEL: *hasResult = true; *hasResultType = true; break;
+    case SpvOpSubgroupAvcMceSetAcOnlyHaarINTEL: *hasResult = true; *hasResultType = true; break;
+    case SpvOpSubgroupAvcMceSetSourceInterlacedFieldPolarityINTEL: *hasResult = true; *hasResultType = true; break;
+    case SpvOpSubgroupAvcMceSetSingleReferenceInterlacedFieldPolarityINTEL: *hasResult = true; *hasResultType = true; break;
+    case SpvOpSubgroupAvcMceSetDualReferenceInterlacedFieldPolaritiesINTEL: *hasResult = true; *hasResultType = true; break;
+    case SpvOpSubgroupAvcMceConvertToImePayloadINTEL: *hasResult = true; *hasResultType = true; break;
+    case SpvOpSubgroupAvcMceConvertToImeResultINTEL: *hasResult = true; *hasResultType = true; break;
+    case SpvOpSubgroupAvcMceConvertToRefPayloadINTEL: *hasResult = true; *hasResultType = true; break;
+    case SpvOpSubgroupAvcMceConvertToRefResultINTEL: *hasResult = true; *hasResultType = true; break;
+    case SpvOpSubgroupAvcMceConvertToSicPayloadINTEL: *hasResult = true; *hasResultType = true; break;
+    case SpvOpSubgroupAvcMceConvertToSicResultINTEL: *hasResult = true; *hasResultType = true; break;
+    case SpvOpSubgroupAvcMceGetMotionVectorsINTEL: *hasResult = true; *hasResultType = true; break;
+    case SpvOpSubgroupAvcMceGetInterDistortionsINTEL: *hasResult = true; *hasResultType = true; break;
+    case SpvOpSubgroupAvcMceGetBestInterDistortionsINTEL: *hasResult = true; *hasResultType = true; break;
+    case SpvOpSubgroupAvcMceGetInterMajorShapeINTEL: *hasResult = true; *hasResultType = true; break;
+    case SpvOpSubgroupAvcMceGetInterMinorShapeINTEL: *hasResult = true; *hasResultType = true; break;
+    case SpvOpSubgroupAvcMceGetInterDirectionsINTEL: *hasResult = true; *hasResultType = true; break;
+    case SpvOpSubgroupAvcMceGetInterMotionVectorCountINTEL: *hasResult = true; *hasResultType = true; break;
+    case SpvOpSubgroupAvcMceGetInterReferenceIdsINTEL: *hasResult = true; *hasResultType = true; break;
+    case SpvOpSubgroupAvcMceGetInterReferenceInterlacedFieldPolaritiesINTEL: *hasResult = true; *hasResultType = true; break;
+    case SpvOpSubgroupAvcImeInitializeINTEL: *hasResult = true; *hasResultType = true; break;
+    case SpvOpSubgroupAvcImeSetSingleReferenceINTEL: *hasResult = true; *hasResultType = true; break;
+    case SpvOpSubgroupAvcImeSetDualReferenceINTEL: *hasResult = true; *hasResultType = true; break;
+    case SpvOpSubgroupAvcImeRefWindowSizeINTEL: *hasResult = true; *hasResultType = true; break;
+    case SpvOpSubgroupAvcImeAdjustRefOffsetINTEL: *hasResult = true; *hasResultType = true; break;
+    case SpvOpSubgroupAvcImeConvertToMcePayloadINTEL: *hasResult = true; *hasResultType = true; break;
+    case SpvOpSubgroupAvcImeSetMaxMotionVectorCountINTEL: *hasResult = true; *hasResultType = true; break;
+    case SpvOpSubgroupAvcImeSetUnidirectionalMixDisableINTEL: *hasResult = true; *hasResultType = true; break;
+    case SpvOpSubgroupAvcImeSetEarlySearchTerminationThresholdINTEL: *hasResult = true; *hasResultType = true; break;
+    case SpvOpSubgroupAvcImeSetWeightedSadINTEL: *hasResult = true; *hasResultType = true; break;
+    case SpvOpSubgroupAvcImeEvaluateWithSingleReferenceINTEL: *hasResult = true; *hasResultType = true; break;
+    case SpvOpSubgroupAvcImeEvaluateWithDualReferenceINTEL: *hasResult = true; *hasResultType = true; break;
+    case SpvOpSubgroupAvcImeEvaluateWithSingleReferenceStreaminINTEL: *hasResult = true; *hasResultType = true; break;
+    case SpvOpSubgroupAvcImeEvaluateWithDualReferenceStreaminINTEL: *hasResult = true; *hasResultType = true; break;
+    case SpvOpSubgroupAvcImeEvaluateWithSingleReferenceStreamoutINTEL: *hasResult = true; *hasResultType = true; break;
+    case SpvOpSubgroupAvcImeEvaluateWithDualReferenceStreamoutINTEL: *hasResult = true; *hasResultType = true; break;
+    case SpvOpSubgroupAvcImeEvaluateWithSingleReferenceStreaminoutINTEL: *hasResult = true; *hasResultType = true; break;
+    case SpvOpSubgroupAvcImeEvaluateWithDualReferenceStreaminoutINTEL: *hasResult = true; *hasResultType = true; break;
+    case SpvOpSubgroupAvcImeConvertToMceResultINTEL: *hasResult = true; *hasResultType = true; break;
+    case SpvOpSubgroupAvcImeGetSingleReferenceStreaminINTEL: *hasResult = true; *hasResultType = true; break;
+    case SpvOpSubgroupAvcImeGetDualReferenceStreaminINTEL: *hasResult = true; *hasResultType = true; break;
+    case SpvOpSubgroupAvcImeStripSingleReferenceStreamoutINTEL: *hasResult = true; *hasResultType = true; break;
+    case SpvOpSubgroupAvcImeStripDualReferenceStreamoutINTEL: *hasResult = true; *hasResultType = true; break;
+    case SpvOpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeMotionVectorsINTEL: *hasResult = true; *hasResultType = true; break;
+    case SpvOpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeDistortionsINTEL: *hasResult = true; *hasResultType = true; break;
+    case SpvOpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeReferenceIdsINTEL: *hasResult = true; *hasResultType = true; break;
+    case SpvOpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeMotionVectorsINTEL: *hasResult = true; *hasResultType = true; break;
+    case SpvOpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeDistortionsINTEL: *hasResult = true; *hasResultType = true; break;
+    case SpvOpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeReferenceIdsINTEL: *hasResult = true; *hasResultType = true; break;
+    case SpvOpSubgroupAvcImeGetBorderReachedINTEL: *hasResult = true; *hasResultType = true; break;
+    case SpvOpSubgroupAvcImeGetTruncatedSearchIndicationINTEL: *hasResult = true; *hasResultType = true; break;
+    case SpvOpSubgroupAvcImeGetUnidirectionalEarlySearchTerminationINTEL: *hasResult = true; *hasResultType = true; break;
+    case SpvOpSubgroupAvcImeGetWeightingPatternMinimumMotionVectorINTEL: *hasResult = true; *hasResultType = true; break;
+    case SpvOpSubgroupAvcImeGetWeightingPatternMinimumDistortionINTEL: *hasResult = true; *hasResultType = true; break;
+    case SpvOpSubgroupAvcFmeInitializeINTEL: *hasResult = true; *hasResultType = true; break;
+    case SpvOpSubgroupAvcBmeInitializeINTEL: *hasResult = true; *hasResultType = true; break;
+    case SpvOpSubgroupAvcRefConvertToMcePayloadINTEL: *hasResult = true; *hasResultType = true; break;
+    case SpvOpSubgroupAvcRefSetBidirectionalMixDisableINTEL: *hasResult = true; *hasResultType = true; break;
+    case SpvOpSubgroupAvcRefSetBilinearFilterEnableINTEL: *hasResult = true; *hasResultType = true; break;
+    case SpvOpSubgroupAvcRefEvaluateWithSingleReferenceINTEL: *hasResult = true; *hasResultType = true; break;
+    case SpvOpSubgroupAvcRefEvaluateWithDualReferenceINTEL: *hasResult = true; *hasResultType = true; break;
+    case SpvOpSubgroupAvcRefEvaluateWithMultiReferenceINTEL: *hasResult = true; *hasResultType = true; break;
+    case SpvOpSubgroupAvcRefEvaluateWithMultiReferenceInterlacedINTEL: *hasResult = true; *hasResultType = true; break;
+    case SpvOpSubgroupAvcRefConvertToMceResultINTEL: *hasResult = true; *hasResultType = true; break;
+    case SpvOpSubgroupAvcSicInitializeINTEL: *hasResult = true; *hasResultType = true; break;
+    case SpvOpSubgroupAvcSicConfigureSkcINTEL: *hasResult = true; *hasResultType = true; break;
+    case SpvOpSubgroupAvcSicConfigureIpeLumaINTEL: *hasResult = true; *hasResultType = true; break;
+    case SpvOpSubgroupAvcSicConfigureIpeLumaChromaINTEL: *hasResult = true; *hasResultType = true; break;
+    case SpvOpSubgroupAvcSicGetMotionVectorMaskINTEL: *hasResult = true; *hasResultType = true; break;
+    case SpvOpSubgroupAvcSicConvertToMcePayloadINTEL: *hasResult = true; *hasResultType = true; break;
+    case SpvOpSubgroupAvcSicSetIntraLumaShapePenaltyINTEL: *hasResult = true; *hasResultType = true; break;
+    case SpvOpSubgroupAvcSicSetIntraLumaModeCostFunctionINTEL: *hasResult = true; *hasResultType = true; break;
+    case SpvOpSubgroupAvcSicSetIntraChromaModeCostFunctionINTEL: *hasResult = true; *hasResultType = true; break;
+    case SpvOpSubgroupAvcSicSetBilinearFilterEnableINTEL: *hasResult = true; *hasResultType = true; break;
+    case SpvOpSubgroupAvcSicSetSkcForwardTransformEnableINTEL: *hasResult = true; *hasResultType = true; break;
+    case SpvOpSubgroupAvcSicSetBlockBasedRawSkipSadINTEL: *hasResult = true; *hasResultType = true; break;
+    case SpvOpSubgroupAvcSicEvaluateIpeINTEL: *hasResult = true; *hasResultType = true; break;
+    case SpvOpSubgroupAvcSicEvaluateWithSingleReferenceINTEL: *hasResult = true; *hasResultType = true; break;
+    case SpvOpSubgroupAvcSicEvaluateWithDualReferenceINTEL: *hasResult = true; *hasResultType = true; break;
+    case SpvOpSubgroupAvcSicEvaluateWithMultiReferenceINTEL: *hasResult = true; *hasResultType = true; break;
+    case SpvOpSubgroupAvcSicEvaluateWithMultiReferenceInterlacedINTEL: *hasResult = true; *hasResultType = true; break;
+    case SpvOpSubgroupAvcSicConvertToMceResultINTEL: *hasResult = true; *hasResultType = true; break;
+    case SpvOpSubgroupAvcSicGetIpeLumaShapeINTEL: *hasResult = true; *hasResultType = true; break;
+    case SpvOpSubgroupAvcSicGetBestIpeLumaDistortionINTEL: *hasResult = true; *hasResultType = true; break;
+    case SpvOpSubgroupAvcSicGetBestIpeChromaDistortionINTEL: *hasResult = true; *hasResultType = true; break;
+    case SpvOpSubgroupAvcSicGetPackedIpeLumaModesINTEL: *hasResult = true; *hasResultType = true; break;
+    case SpvOpSubgroupAvcSicGetIpeChromaModeINTEL: *hasResult = true; *hasResultType = true; break;
+    case SpvOpSubgroupAvcSicGetPackedSkcLumaCountThresholdINTEL: *hasResult = true; *hasResultType = true; break;
+    case SpvOpSubgroupAvcSicGetPackedSkcLumaSumThresholdINTEL: *hasResult = true; *hasResultType = true; break;
+    case SpvOpSubgroupAvcSicGetInterRawSadsINTEL: *hasResult = true; *hasResultType = true; break;
+    case SpvOpLoopControlINTEL: *hasResult = false; *hasResultType = false; break;
+    case SpvOpReadPipeBlockingINTEL: *hasResult = true; *hasResultType = true; break;
+    case SpvOpWritePipeBlockingINTEL: *hasResult = true; *hasResultType = true; break;
+    case SpvOpFPGARegINTEL: *hasResult = true; *hasResultType = true; break;
+    case SpvOpRayQueryGetRayTMinKHR: *hasResult = true; *hasResultType = true; break;
+    case SpvOpRayQueryGetRayFlagsKHR: *hasResult = true; *hasResultType = true; break;
+    case SpvOpRayQueryGetIntersectionTKHR: *hasResult = true; *hasResultType = true; break;
+    case SpvOpRayQueryGetIntersectionInstanceCustomIndexKHR: *hasResult = true; *hasResultType = true; break;
+    case SpvOpRayQueryGetIntersectionInstanceIdKHR: *hasResult = true; *hasResultType = true; break;
+    case SpvOpRayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR: *hasResult = true; *hasResultType = true; break;
+    case SpvOpRayQueryGetIntersectionGeometryIndexKHR: *hasResult = true; *hasResultType = true; break;
+    case SpvOpRayQueryGetIntersectionPrimitiveIndexKHR: *hasResult = true; *hasResultType = true; break;
+    case SpvOpRayQueryGetIntersectionBarycentricsKHR: *hasResult = true; *hasResultType = true; break;
+    case SpvOpRayQueryGetIntersectionFrontFaceKHR: *hasResult = true; *hasResultType = true; break;
+    case SpvOpRayQueryGetIntersectionCandidateAABBOpaqueKHR: *hasResult = true; *hasResultType = true; break;
+    case SpvOpRayQueryGetIntersectionObjectRayDirectionKHR: *hasResult = true; *hasResultType = true; break;
+    case SpvOpRayQueryGetIntersectionObjectRayOriginKHR: *hasResult = true; *hasResultType = true; break;
+    case SpvOpRayQueryGetWorldRayDirectionKHR: *hasResult = true; *hasResultType = true; break;
+    case SpvOpRayQueryGetWorldRayOriginKHR: *hasResult = true; *hasResultType = true; break;
+    case SpvOpRayQueryGetIntersectionObjectToWorldKHR: *hasResult = true; *hasResultType = true; break;
+    case SpvOpRayQueryGetIntersectionWorldToObjectKHR: *hasResult = true; *hasResultType = true; break;
+    case SpvOpAtomicFAddEXT: *hasResult = true; *hasResultType = true; break;
+    }
+}
+#endif /* SPV_ENABLE_UTILITY_CODE */
+
+#endif
+
diff --git a/libs/spirv-headers/spirv/unified1/spirv.hpp b/libs/spirv-headers/spirv/unified1/spirv.hpp
new file mode 100644
index 00000000000..988545c9d2c
--- /dev/null
+++ b/libs/spirv-headers/spirv/unified1/spirv.hpp
@@ -0,0 +1,2196 @@
+// Copyright (c) 2014-2020 The Khronos Group Inc.
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and/or associated documentation files (the "Materials"),
+// to deal in the Materials without restriction, including without limitation
+// the rights to use, copy, modify, merge, publish, distribute, sublicense,
+// and/or sell copies of the Materials, and to permit persons to whom the
+// Materials are furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Materials.
+// 
+// MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS KHRONOS
+// STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS SPECIFICATIONS AND
+// HEADER INFORMATION ARE LOCATED AT https://www.khronos.org/registry/ 
+// 
+// THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM,OUT OF OR IN CONNECTION WITH THE MATERIALS OR THE USE OR OTHER DEALINGS
+// IN THE MATERIALS.
+
+// This header is automatically generated by the same tool that creates
+// the Binary Section of the SPIR-V specification.
+
+// Enumeration tokens for SPIR-V, in various styles:
+//   C, C++, C++11, JSON, Lua, Python, C#, D
+// 
+// - C will have tokens with a "Spv" prefix, e.g.: SpvSourceLanguageGLSL
+// - C++ will have tokens in the "spv" name space, e.g.: spv::SourceLanguageGLSL
+// - C++11 will use enum classes in the spv namespace, e.g.: spv::SourceLanguage::GLSL
+// - Lua will use tables, e.g.: spv.SourceLanguage.GLSL
+// - Python will use dictionaries, e.g.: spv['SourceLanguage']['GLSL']
+// - C# will use enum classes in the Specification class located in the "Spv" namespace,
+//     e.g.: Spv.Specification.SourceLanguage.GLSL
+// - D will have tokens under the "spv" module, e.g: spv.SourceLanguage.GLSL
+// 
+// Some tokens act like mask values, which can be OR'd together,
+// while others are mutually exclusive.  The mask-like ones have
+// "Mask" in their name, and a parallel enum that has the shift
+// amount (1 << x) for each corresponding enumerant.
+
+#ifndef spirv_HPP
+#define spirv_HPP
+
+namespace spv {
+
+typedef unsigned int Id;
+
+#define SPV_VERSION 0x10500
+#define SPV_REVISION 4
+
+static const unsigned int MagicNumber = 0x07230203;
+static const unsigned int Version = 0x00010500;
+static const unsigned int Revision = 4;
+static const unsigned int OpCodeMask = 0xffff;
+static const unsigned int WordCountShift = 16;
+
+enum SourceLanguage {
+    SourceLanguageUnknown = 0,
+    SourceLanguageESSL = 1,
+    SourceLanguageGLSL = 2,
+    SourceLanguageOpenCL_C = 3,
+    SourceLanguageOpenCL_CPP = 4,
+    SourceLanguageHLSL = 5,
+    SourceLanguageMax = 0x7fffffff,
+};
+
+enum ExecutionModel {
+    ExecutionModelVertex = 0,
+    ExecutionModelTessellationControl = 1,
+    ExecutionModelTessellationEvaluation = 2,
+    ExecutionModelGeometry = 3,
+    ExecutionModelFragment = 4,
+    ExecutionModelGLCompute = 5,
+    ExecutionModelKernel = 6,
+    ExecutionModelTaskNV = 5267,
+    ExecutionModelMeshNV = 5268,
+    ExecutionModelRayGenerationKHR = 5313,
+    ExecutionModelRayGenerationNV = 5313,
+    ExecutionModelIntersectionKHR = 5314,
+    ExecutionModelIntersectionNV = 5314,
+    ExecutionModelAnyHitKHR = 5315,
+    ExecutionModelAnyHitNV = 5315,
+    ExecutionModelClosestHitKHR = 5316,
+    ExecutionModelClosestHitNV = 5316,
+    ExecutionModelMissKHR = 5317,
+    ExecutionModelMissNV = 5317,
+    ExecutionModelCallableKHR = 5318,
+    ExecutionModelCallableNV = 5318,
+    ExecutionModelMax = 0x7fffffff,
+};
+
+enum AddressingModel {
+    AddressingModelLogical = 0,
+    AddressingModelPhysical32 = 1,
+    AddressingModelPhysical64 = 2,
+    AddressingModelPhysicalStorageBuffer64 = 5348,
+    AddressingModelPhysicalStorageBuffer64EXT = 5348,
+    AddressingModelMax = 0x7fffffff,
+};
+
+enum MemoryModel {
+    MemoryModelSimple = 0,
+    MemoryModelGLSL450 = 1,
+    MemoryModelOpenCL = 2,
+    MemoryModelVulkan = 3,
+    MemoryModelVulkanKHR = 3,
+    MemoryModelMax = 0x7fffffff,
+};
+
+enum ExecutionMode {
+    ExecutionModeInvocations = 0,
+    ExecutionModeSpacingEqual = 1,
+    ExecutionModeSpacingFractionalEven = 2,
+    ExecutionModeSpacingFractionalOdd = 3,
+    ExecutionModeVertexOrderCw = 4,
+    ExecutionModeVertexOrderCcw = 5,
+    ExecutionModePixelCenterInteger = 6,
+    ExecutionModeOriginUpperLeft = 7,
+    ExecutionModeOriginLowerLeft = 8,
+    ExecutionModeEarlyFragmentTests = 9,
+    ExecutionModePointMode = 10,
+    ExecutionModeXfb = 11,
+    ExecutionModeDepthReplacing = 12,
+    ExecutionModeDepthGreater = 14,
+    ExecutionModeDepthLess = 15,
+    ExecutionModeDepthUnchanged = 16,
+    ExecutionModeLocalSize = 17,
+    ExecutionModeLocalSizeHint = 18,
+    ExecutionModeInputPoints = 19,
+    ExecutionModeInputLines = 20,
+    ExecutionModeInputLinesAdjacency = 21,
+    ExecutionModeTriangles = 22,
+    ExecutionModeInputTrianglesAdjacency = 23,
+    ExecutionModeQuads = 24,
+    ExecutionModeIsolines = 25,
+    ExecutionModeOutputVertices = 26,
+    ExecutionModeOutputPoints = 27,
+    ExecutionModeOutputLineStrip = 28,
+    ExecutionModeOutputTriangleStrip = 29,
+    ExecutionModeVecTypeHint = 30,
+    ExecutionModeContractionOff = 31,
+    ExecutionModeInitializer = 33,
+    ExecutionModeFinalizer = 34,
+    ExecutionModeSubgroupSize = 35,
+    ExecutionModeSubgroupsPerWorkgroup = 36,
+    ExecutionModeSubgroupsPerWorkgroupId = 37,
+    ExecutionModeLocalSizeId = 38,
+    ExecutionModeLocalSizeHintId = 39,
+    ExecutionModePostDepthCoverage = 4446,
+    ExecutionModeDenormPreserve = 4459,
+    ExecutionModeDenormFlushToZero = 4460,
+    ExecutionModeSignedZeroInfNanPreserve = 4461,
+    ExecutionModeRoundingModeRTE = 4462,
+    ExecutionModeRoundingModeRTZ = 4463,
+    ExecutionModeStencilRefReplacingEXT = 5027,
+    ExecutionModeOutputLinesNV = 5269,
+    ExecutionModeOutputPrimitivesNV = 5270,
+    ExecutionModeDerivativeGroupQuadsNV = 5289,
+    ExecutionModeDerivativeGroupLinearNV = 5290,
+    ExecutionModeOutputTrianglesNV = 5298,
+    ExecutionModePixelInterlockOrderedEXT = 5366,
+    ExecutionModePixelInterlockUnorderedEXT = 5367,
+    ExecutionModeSampleInterlockOrderedEXT = 5368,
+    ExecutionModeSampleInterlockUnorderedEXT = 5369,
+    ExecutionModeShadingRateInterlockOrderedEXT = 5370,
+    ExecutionModeShadingRateInterlockUnorderedEXT = 5371,
+    ExecutionModeMaxWorkgroupSizeINTEL = 5893,
+    ExecutionModeMaxWorkDimINTEL = 5894,
+    ExecutionModeNoGlobalOffsetINTEL = 5895,
+    ExecutionModeNumSIMDWorkitemsINTEL = 5896,
+    ExecutionModeMax = 0x7fffffff,
+};
+
+enum StorageClass {
+    StorageClassUniformConstant = 0,
+    StorageClassInput = 1,
+    StorageClassUniform = 2,
+    StorageClassOutput = 3,
+    StorageClassWorkgroup = 4,
+    StorageClassCrossWorkgroup = 5,
+    StorageClassPrivate = 6,
+    StorageClassFunction = 7,
+    StorageClassGeneric = 8,
+    StorageClassPushConstant = 9,
+    StorageClassAtomicCounter = 10,
+    StorageClassImage = 11,
+    StorageClassStorageBuffer = 12,
+    StorageClassCallableDataKHR = 5328,
+    StorageClassCallableDataNV = 5328,
+    StorageClassIncomingCallableDataKHR = 5329,
+    StorageClassIncomingCallableDataNV = 5329,
+    StorageClassRayPayloadKHR = 5338,
+    StorageClassRayPayloadNV = 5338,
+    StorageClassHitAttributeKHR = 5339,
+    StorageClassHitAttributeNV = 5339,
+    StorageClassIncomingRayPayloadKHR = 5342,
+    StorageClassIncomingRayPayloadNV = 5342,
+    StorageClassShaderRecordBufferKHR = 5343,
+    StorageClassShaderRecordBufferNV = 5343,
+    StorageClassPhysicalStorageBuffer = 5349,
+    StorageClassPhysicalStorageBufferEXT = 5349,
+    StorageClassCodeSectionINTEL = 5605,
+    StorageClassMax = 0x7fffffff,
+};
+
+enum Dim {
+    Dim1D = 0,
+    Dim2D = 1,
+    Dim3D = 2,
+    DimCube = 3,
+    DimRect = 4,
+    DimBuffer = 5,
+    DimSubpassData = 6,
+    DimMax = 0x7fffffff,
+};
+
+enum SamplerAddressingMode {
+    SamplerAddressingModeNone = 0,
+    SamplerAddressingModeClampToEdge = 1,
+    SamplerAddressingModeClamp = 2,
+    SamplerAddressingModeRepeat = 3,
+    SamplerAddressingModeRepeatMirrored = 4,
+    SamplerAddressingModeMax = 0x7fffffff,
+};
+
+enum SamplerFilterMode {
+    SamplerFilterModeNearest = 0,
+    SamplerFilterModeLinear = 1,
+    SamplerFilterModeMax = 0x7fffffff,
+};
+
+enum ImageFormat {
+    ImageFormatUnknown = 0,
+    ImageFormatRgba32f = 1,
+    ImageFormatRgba16f = 2,
+    ImageFormatR32f = 3,
+    ImageFormatRgba8 = 4,
+    ImageFormatRgba8Snorm = 5,
+    ImageFormatRg32f = 6,
+    ImageFormatRg16f = 7,
+    ImageFormatR11fG11fB10f = 8,
+    ImageFormatR16f = 9,
+    ImageFormatRgba16 = 10,
+    ImageFormatRgb10A2 = 11,
+    ImageFormatRg16 = 12,
+    ImageFormatRg8 = 13,
+    ImageFormatR16 = 14,
+    ImageFormatR8 = 15,
+    ImageFormatRgba16Snorm = 16,
+    ImageFormatRg16Snorm = 17,
+    ImageFormatRg8Snorm = 18,
+    ImageFormatR16Snorm = 19,
+    ImageFormatR8Snorm = 20,
+    ImageFormatRgba32i = 21,
+    ImageFormatRgba16i = 22,
+    ImageFormatRgba8i = 23,
+    ImageFormatR32i = 24,
+    ImageFormatRg32i = 25,
+    ImageFormatRg16i = 26,
+    ImageFormatRg8i = 27,
+    ImageFormatR16i = 28,
+    ImageFormatR8i = 29,
+    ImageFormatRgba32ui = 30,
+    ImageFormatRgba16ui = 31,
+    ImageFormatRgba8ui = 32,
+    ImageFormatR32ui = 33,
+    ImageFormatRgb10a2ui = 34,
+    ImageFormatRg32ui = 35,
+    ImageFormatRg16ui = 36,
+    ImageFormatRg8ui = 37,
+    ImageFormatR16ui = 38,
+    ImageFormatR8ui = 39,
+    ImageFormatR64ui = 40,
+    ImageFormatR64i = 41,
+    ImageFormatMax = 0x7fffffff,
+};
+
+enum ImageChannelOrder {
+    ImageChannelOrderR = 0,
+    ImageChannelOrderA = 1,
+    ImageChannelOrderRG = 2,
+    ImageChannelOrderRA = 3,
+    ImageChannelOrderRGB = 4,
+    ImageChannelOrderRGBA = 5,
+    ImageChannelOrderBGRA = 6,
+    ImageChannelOrderARGB = 7,
+    ImageChannelOrderIntensity = 8,
+    ImageChannelOrderLuminance = 9,
+    ImageChannelOrderRx = 10,
+    ImageChannelOrderRGx = 11,
+    ImageChannelOrderRGBx = 12,
+    ImageChannelOrderDepth = 13,
+    ImageChannelOrderDepthStencil = 14,
+    ImageChannelOrdersRGB = 15,
+    ImageChannelOrdersRGBx = 16,
+    ImageChannelOrdersRGBA = 17,
+    ImageChannelOrdersBGRA = 18,
+    ImageChannelOrderABGR = 19,
+    ImageChannelOrderMax = 0x7fffffff,
+};
+
+enum ImageChannelDataType {
+    ImageChannelDataTypeSnormInt8 = 0,
+    ImageChannelDataTypeSnormInt16 = 1,
+    ImageChannelDataTypeUnormInt8 = 2,
+    ImageChannelDataTypeUnormInt16 = 3,
+    ImageChannelDataTypeUnormShort565 = 4,
+    ImageChannelDataTypeUnormShort555 = 5,
+    ImageChannelDataTypeUnormInt101010 = 6,
+    ImageChannelDataTypeSignedInt8 = 7,
+    ImageChannelDataTypeSignedInt16 = 8,
+    ImageChannelDataTypeSignedInt32 = 9,
+    ImageChannelDataTypeUnsignedInt8 = 10,
+    ImageChannelDataTypeUnsignedInt16 = 11,
+    ImageChannelDataTypeUnsignedInt32 = 12,
+    ImageChannelDataTypeHalfFloat = 13,
+    ImageChannelDataTypeFloat = 14,
+    ImageChannelDataTypeUnormInt24 = 15,
+    ImageChannelDataTypeUnormInt101010_2 = 16,
+    ImageChannelDataTypeMax = 0x7fffffff,
+};
+
+enum ImageOperandsShift {
+    ImageOperandsBiasShift = 0,
+    ImageOperandsLodShift = 1,
+    ImageOperandsGradShift = 2,
+    ImageOperandsConstOffsetShift = 3,
+    ImageOperandsOffsetShift = 4,
+    ImageOperandsConstOffsetsShift = 5,
+    ImageOperandsSampleShift = 6,
+    ImageOperandsMinLodShift = 7,
+    ImageOperandsMakeTexelAvailableShift = 8,
+    ImageOperandsMakeTexelAvailableKHRShift = 8,
+    ImageOperandsMakeTexelVisibleShift = 9,
+    ImageOperandsMakeTexelVisibleKHRShift = 9,
+    ImageOperandsNonPrivateTexelShift = 10,
+    ImageOperandsNonPrivateTexelKHRShift = 10,
+    ImageOperandsVolatileTexelShift = 11,
+    ImageOperandsVolatileTexelKHRShift = 11,
+    ImageOperandsSignExtendShift = 12,
+    ImageOperandsZeroExtendShift = 13,
+    ImageOperandsMax = 0x7fffffff,
+};
+
+enum ImageOperandsMask {
+    ImageOperandsMaskNone = 0,
+    ImageOperandsBiasMask = 0x00000001,
+    ImageOperandsLodMask = 0x00000002,
+    ImageOperandsGradMask = 0x00000004,
+    ImageOperandsConstOffsetMask = 0x00000008,
+    ImageOperandsOffsetMask = 0x00000010,
+    ImageOperandsConstOffsetsMask = 0x00000020,
+    ImageOperandsSampleMask = 0x00000040,
+    ImageOperandsMinLodMask = 0x00000080,
+    ImageOperandsMakeTexelAvailableMask = 0x00000100,
+    ImageOperandsMakeTexelAvailableKHRMask = 0x00000100,
+    ImageOperandsMakeTexelVisibleMask = 0x00000200,
+    ImageOperandsMakeTexelVisibleKHRMask = 0x00000200,
+    ImageOperandsNonPrivateTexelMask = 0x00000400,
+    ImageOperandsNonPrivateTexelKHRMask = 0x00000400,
+    ImageOperandsVolatileTexelMask = 0x00000800,
+    ImageOperandsVolatileTexelKHRMask = 0x00000800,
+    ImageOperandsSignExtendMask = 0x00001000,
+    ImageOperandsZeroExtendMask = 0x00002000,
+};
+
+enum FPFastMathModeShift {
+    FPFastMathModeNotNaNShift = 0,
+    FPFastMathModeNotInfShift = 1,
+    FPFastMathModeNSZShift = 2,
+    FPFastMathModeAllowRecipShift = 3,
+    FPFastMathModeFastShift = 4,
+    FPFastMathModeMax = 0x7fffffff,
+};
+
+enum FPFastMathModeMask {
+    FPFastMathModeMaskNone = 0,
+    FPFastMathModeNotNaNMask = 0x00000001,
+    FPFastMathModeNotInfMask = 0x00000002,
+    FPFastMathModeNSZMask = 0x00000004,
+    FPFastMathModeAllowRecipMask = 0x00000008,
+    FPFastMathModeFastMask = 0x00000010,
+};
+
+enum FPRoundingMode {
+    FPRoundingModeRTE = 0,
+    FPRoundingModeRTZ = 1,
+    FPRoundingModeRTP = 2,
+    FPRoundingModeRTN = 3,
+    FPRoundingModeMax = 0x7fffffff,
+};
+
+enum LinkageType {
+    LinkageTypeExport = 0,
+    LinkageTypeImport = 1,
+    LinkageTypeMax = 0x7fffffff,
+};
+
+enum AccessQualifier {
+    AccessQualifierReadOnly = 0,
+    AccessQualifierWriteOnly = 1,
+    AccessQualifierReadWrite = 2,
+    AccessQualifierMax = 0x7fffffff,
+};
+
+enum FunctionParameterAttribute {
+    FunctionParameterAttributeZext = 0,
+    FunctionParameterAttributeSext = 1,
+    FunctionParameterAttributeByVal = 2,
+    FunctionParameterAttributeSret = 3,
+    FunctionParameterAttributeNoAlias = 4,
+    FunctionParameterAttributeNoCapture = 5,
+    FunctionParameterAttributeNoWrite = 6,
+    FunctionParameterAttributeNoReadWrite = 7,
+    FunctionParameterAttributeMax = 0x7fffffff,
+};
+
+enum Decoration {
+    DecorationRelaxedPrecision = 0,
+    DecorationSpecId = 1,
+    DecorationBlock = 2,
+    DecorationBufferBlock = 3,
+    DecorationRowMajor = 4,
+    DecorationColMajor = 5,
+    DecorationArrayStride = 6,
+    DecorationMatrixStride = 7,
+    DecorationGLSLShared = 8,
+    DecorationGLSLPacked = 9,
+    DecorationCPacked = 10,
+    DecorationBuiltIn = 11,
+    DecorationNoPerspective = 13,
+    DecorationFlat = 14,
+    DecorationPatch = 15,
+    DecorationCentroid = 16,
+    DecorationSample = 17,
+    DecorationInvariant = 18,
+    DecorationRestrict = 19,
+    DecorationAliased = 20,
+    DecorationVolatile = 21,
+    DecorationConstant = 22,
+    DecorationCoherent = 23,
+    DecorationNonWritable = 24,
+    DecorationNonReadable = 25,
+    DecorationUniform = 26,
+    DecorationUniformId = 27,
+    DecorationSaturatedConversion = 28,
+    DecorationStream = 29,
+    DecorationLocation = 30,
+    DecorationComponent = 31,
+    DecorationIndex = 32,
+    DecorationBinding = 33,
+    DecorationDescriptorSet = 34,
+    DecorationOffset = 35,
+    DecorationXfbBuffer = 36,
+    DecorationXfbStride = 37,
+    DecorationFuncParamAttr = 38,
+    DecorationFPRoundingMode = 39,
+    DecorationFPFastMathMode = 40,
+    DecorationLinkageAttributes = 41,
+    DecorationNoContraction = 42,
+    DecorationInputAttachmentIndex = 43,
+    DecorationAlignment = 44,
+    DecorationMaxByteOffset = 45,
+    DecorationAlignmentId = 46,
+    DecorationMaxByteOffsetId = 47,
+    DecorationNoSignedWrap = 4469,
+    DecorationNoUnsignedWrap = 4470,
+    DecorationExplicitInterpAMD = 4999,
+    DecorationOverrideCoverageNV = 5248,
+    DecorationPassthroughNV = 5250,
+    DecorationViewportRelativeNV = 5252,
+    DecorationSecondaryViewportRelativeNV = 5256,
+    DecorationPerPrimitiveNV = 5271,
+    DecorationPerViewNV = 5272,
+    DecorationPerTaskNV = 5273,
+    DecorationPerVertexNV = 5285,
+    DecorationNonUniform = 5300,
+    DecorationNonUniformEXT = 5300,
+    DecorationRestrictPointer = 5355,
+    DecorationRestrictPointerEXT = 5355,
+    DecorationAliasedPointer = 5356,
+    DecorationAliasedPointerEXT = 5356,
+    DecorationReferencedIndirectlyINTEL = 5602,
+    DecorationCounterBuffer = 5634,
+    DecorationHlslCounterBufferGOOGLE = 5634,
+    DecorationHlslSemanticGOOGLE = 5635,
+    DecorationUserSemantic = 5635,
+    DecorationUserTypeGOOGLE = 5636,
+    DecorationRegisterINTEL = 5825,
+    DecorationMemoryINTEL = 5826,
+    DecorationNumbanksINTEL = 5827,
+    DecorationBankwidthINTEL = 5828,
+    DecorationMaxPrivateCopiesINTEL = 5829,
+    DecorationSinglepumpINTEL = 5830,
+    DecorationDoublepumpINTEL = 5831,
+    DecorationMaxReplicatesINTEL = 5832,
+    DecorationSimpleDualPortINTEL = 5833,
+    DecorationMergeINTEL = 5834,
+    DecorationBankBitsINTEL = 5835,
+    DecorationForcePow2DepthINTEL = 5836,
+    DecorationMax = 0x7fffffff,
+};
+
+enum BuiltIn {
+    BuiltInPosition = 0,
+    BuiltInPointSize = 1,
+    BuiltInClipDistance = 3,
+    BuiltInCullDistance = 4,
+    BuiltInVertexId = 5,
+    BuiltInInstanceId = 6,
+    BuiltInPrimitiveId = 7,
+    BuiltInInvocationId = 8,
+    BuiltInLayer = 9,
+    BuiltInViewportIndex = 10,
+    BuiltInTessLevelOuter = 11,
+    BuiltInTessLevelInner = 12,
+    BuiltInTessCoord = 13,
+    BuiltInPatchVertices = 14,
+    BuiltInFragCoord = 15,
+    BuiltInPointCoord = 16,
+    BuiltInFrontFacing = 17,
+    BuiltInSampleId = 18,
+    BuiltInSamplePosition = 19,
+    BuiltInSampleMask = 20,
+    BuiltInFragDepth = 22,
+    BuiltInHelperInvocation = 23,
+    BuiltInNumWorkgroups = 24,
+    BuiltInWorkgroupSize = 25,
+    BuiltInWorkgroupId = 26,
+    BuiltInLocalInvocationId = 27,
+    BuiltInGlobalInvocationId = 28,
+    BuiltInLocalInvocationIndex = 29,
+    BuiltInWorkDim = 30,
+    BuiltInGlobalSize = 31,
+    BuiltInEnqueuedWorkgroupSize = 32,
+    BuiltInGlobalOffset = 33,
+    BuiltInGlobalLinearId = 34,
+    BuiltInSubgroupSize = 36,
+    BuiltInSubgroupMaxSize = 37,
+    BuiltInNumSubgroups = 38,
+    BuiltInNumEnqueuedSubgroups = 39,
+    BuiltInSubgroupId = 40,
+    BuiltInSubgroupLocalInvocationId = 41,
+    BuiltInVertexIndex = 42,
+    BuiltInInstanceIndex = 43,
+    BuiltInSubgroupEqMask = 4416,
+    BuiltInSubgroupEqMaskKHR = 4416,
+    BuiltInSubgroupGeMask = 4417,
+    BuiltInSubgroupGeMaskKHR = 4417,
+    BuiltInSubgroupGtMask = 4418,
+    BuiltInSubgroupGtMaskKHR = 4418,
+    BuiltInSubgroupLeMask = 4419,
+    BuiltInSubgroupLeMaskKHR = 4419,
+    BuiltInSubgroupLtMask = 4420,
+    BuiltInSubgroupLtMaskKHR = 4420,
+    BuiltInBaseVertex = 4424,
+    BuiltInBaseInstance = 4425,
+    BuiltInDrawIndex = 4426,
+    BuiltInPrimitiveShadingRateKHR = 4432,
+    BuiltInDeviceIndex = 4438,
+    BuiltInViewIndex = 4440,
+    BuiltInShadingRateKHR = 4444,
+    BuiltInBaryCoordNoPerspAMD = 4992,
+    BuiltInBaryCoordNoPerspCentroidAMD = 4993,
+    BuiltInBaryCoordNoPerspSampleAMD = 4994,
+    BuiltInBaryCoordSmoothAMD = 4995,
+    BuiltInBaryCoordSmoothCentroidAMD = 4996,
+    BuiltInBaryCoordSmoothSampleAMD = 4997,
+    BuiltInBaryCoordPullModelAMD = 4998,
+    BuiltInFragStencilRefEXT = 5014,
+    BuiltInViewportMaskNV = 5253,
+    BuiltInSecondaryPositionNV = 5257,
+    BuiltInSecondaryViewportMaskNV = 5258,
+    BuiltInPositionPerViewNV = 5261,
+    BuiltInViewportMaskPerViewNV = 5262,
+    BuiltInFullyCoveredEXT = 5264,
+    BuiltInTaskCountNV = 5274,
+    BuiltInPrimitiveCountNV = 5275,
+    BuiltInPrimitiveIndicesNV = 5276,
+    BuiltInClipDistancePerViewNV = 5277,
+    BuiltInCullDistancePerViewNV = 5278,
+    BuiltInLayerPerViewNV = 5279,
+    BuiltInMeshViewCountNV = 5280,
+    BuiltInMeshViewIndicesNV = 5281,
+    BuiltInBaryCoordNV = 5286,
+    BuiltInBaryCoordNoPerspNV = 5287,
+    BuiltInFragSizeEXT = 5292,
+    BuiltInFragmentSizeNV = 5292,
+    BuiltInFragInvocationCountEXT = 5293,
+    BuiltInInvocationsPerPixelNV = 5293,
+    BuiltInLaunchIdKHR = 5319,
+    BuiltInLaunchIdNV = 5319,
+    BuiltInLaunchSizeKHR = 5320,
+    BuiltInLaunchSizeNV = 5320,
+    BuiltInWorldRayOriginKHR = 5321,
+    BuiltInWorldRayOriginNV = 5321,
+    BuiltInWorldRayDirectionKHR = 5322,
+    BuiltInWorldRayDirectionNV = 5322,
+    BuiltInObjectRayOriginKHR = 5323,
+    BuiltInObjectRayOriginNV = 5323,
+    BuiltInObjectRayDirectionKHR = 5324,
+    BuiltInObjectRayDirectionNV = 5324,
+    BuiltInRayTminKHR = 5325,
+    BuiltInRayTminNV = 5325,
+    BuiltInRayTmaxKHR = 5326,
+    BuiltInRayTmaxNV = 5326,
+    BuiltInInstanceCustomIndexKHR = 5327,
+    BuiltInInstanceCustomIndexNV = 5327,
+    BuiltInObjectToWorldKHR = 5330,
+    BuiltInObjectToWorldNV = 5330,
+    BuiltInWorldToObjectKHR = 5331,
+    BuiltInWorldToObjectNV = 5331,
+    BuiltInHitTKHR = 5332,
+    BuiltInHitTNV = 5332,
+    BuiltInHitKindKHR = 5333,
+    BuiltInHitKindNV = 5333,
+    BuiltInIncomingRayFlagsKHR = 5351,
+    BuiltInIncomingRayFlagsNV = 5351,
+    BuiltInRayGeometryIndexKHR = 5352,
+    BuiltInWarpsPerSMNV = 5374,
+    BuiltInSMCountNV = 5375,
+    BuiltInWarpIDNV = 5376,
+    BuiltInSMIDNV = 5377,
+    BuiltInMax = 0x7fffffff,
+};
+
+enum SelectionControlShift {
+    SelectionControlFlattenShift = 0,
+    SelectionControlDontFlattenShift = 1,
+    SelectionControlMax = 0x7fffffff,
+};
+
+enum SelectionControlMask {
+    SelectionControlMaskNone = 0,
+    SelectionControlFlattenMask = 0x00000001,
+    SelectionControlDontFlattenMask = 0x00000002,
+};
+
+enum LoopControlShift {
+    LoopControlUnrollShift = 0,
+    LoopControlDontUnrollShift = 1,
+    LoopControlDependencyInfiniteShift = 2,
+    LoopControlDependencyLengthShift = 3,
+    LoopControlMinIterationsShift = 4,
+    LoopControlMaxIterationsShift = 5,
+    LoopControlIterationMultipleShift = 6,
+    LoopControlPeelCountShift = 7,
+    LoopControlPartialCountShift = 8,
+    LoopControlInitiationIntervalINTELShift = 16,
+    LoopControlMaxConcurrencyINTELShift = 17,
+    LoopControlDependencyArrayINTELShift = 18,
+    LoopControlPipelineEnableINTELShift = 19,
+    LoopControlLoopCoalesceINTELShift = 20,
+    LoopControlMaxInterleavingINTELShift = 21,
+    LoopControlSpeculatedIterationsINTELShift = 22,
+    LoopControlMax = 0x7fffffff,
+};
+
+enum LoopControlMask {
+    LoopControlMaskNone = 0,
+    LoopControlUnrollMask = 0x00000001,
+    LoopControlDontUnrollMask = 0x00000002,
+    LoopControlDependencyInfiniteMask = 0x00000004,
+    LoopControlDependencyLengthMask = 0x00000008,
+    LoopControlMinIterationsMask = 0x00000010,
+    LoopControlMaxIterationsMask = 0x00000020,
+    LoopControlIterationMultipleMask = 0x00000040,
+    LoopControlPeelCountMask = 0x00000080,
+    LoopControlPartialCountMask = 0x00000100,
+    LoopControlInitiationIntervalINTELMask = 0x00010000,
+    LoopControlMaxConcurrencyINTELMask = 0x00020000,
+    LoopControlDependencyArrayINTELMask = 0x00040000,
+    LoopControlPipelineEnableINTELMask = 0x00080000,
+    LoopControlLoopCoalesceINTELMask = 0x00100000,
+    LoopControlMaxInterleavingINTELMask = 0x00200000,
+    LoopControlSpeculatedIterationsINTELMask = 0x00400000,
+};
+
+enum FunctionControlShift {
+    FunctionControlInlineShift = 0,
+    FunctionControlDontInlineShift = 1,
+    FunctionControlPureShift = 2,
+    FunctionControlConstShift = 3,
+    FunctionControlMax = 0x7fffffff,
+};
+
+enum FunctionControlMask {
+    FunctionControlMaskNone = 0,
+    FunctionControlInlineMask = 0x00000001,
+    FunctionControlDontInlineMask = 0x00000002,
+    FunctionControlPureMask = 0x00000004,
+    FunctionControlConstMask = 0x00000008,
+};
+
+enum MemorySemanticsShift {
+    MemorySemanticsAcquireShift = 1,
+    MemorySemanticsReleaseShift = 2,
+    MemorySemanticsAcquireReleaseShift = 3,
+    MemorySemanticsSequentiallyConsistentShift = 4,
+    MemorySemanticsUniformMemoryShift = 6,
+    MemorySemanticsSubgroupMemoryShift = 7,
+    MemorySemanticsWorkgroupMemoryShift = 8,
+    MemorySemanticsCrossWorkgroupMemoryShift = 9,
+    MemorySemanticsAtomicCounterMemoryShift = 10,
+    MemorySemanticsImageMemoryShift = 11,
+    MemorySemanticsOutputMemoryShift = 12,
+    MemorySemanticsOutputMemoryKHRShift = 12,
+    MemorySemanticsMakeAvailableShift = 13,
+    MemorySemanticsMakeAvailableKHRShift = 13,
+    MemorySemanticsMakeVisibleShift = 14,
+    MemorySemanticsMakeVisibleKHRShift = 14,
+    MemorySemanticsVolatileShift = 15,
+    MemorySemanticsMax = 0x7fffffff,
+};
+
+enum MemorySemanticsMask {
+    MemorySemanticsMaskNone = 0,
+    MemorySemanticsAcquireMask = 0x00000002,
+    MemorySemanticsReleaseMask = 0x00000004,
+    MemorySemanticsAcquireReleaseMask = 0x00000008,
+    MemorySemanticsSequentiallyConsistentMask = 0x00000010,
+    MemorySemanticsUniformMemoryMask = 0x00000040,
+    MemorySemanticsSubgroupMemoryMask = 0x00000080,
+    MemorySemanticsWorkgroupMemoryMask = 0x00000100,
+    MemorySemanticsCrossWorkgroupMemoryMask = 0x00000200,
+    MemorySemanticsAtomicCounterMemoryMask = 0x00000400,
+    MemorySemanticsImageMemoryMask = 0x00000800,
+    MemorySemanticsOutputMemoryMask = 0x00001000,
+    MemorySemanticsOutputMemoryKHRMask = 0x00001000,
+    MemorySemanticsMakeAvailableMask = 0x00002000,
+    MemorySemanticsMakeAvailableKHRMask = 0x00002000,
+    MemorySemanticsMakeVisibleMask = 0x00004000,
+    MemorySemanticsMakeVisibleKHRMask = 0x00004000,
+    MemorySemanticsVolatileMask = 0x00008000,
+};
+
+enum MemoryAccessShift {
+    MemoryAccessVolatileShift = 0,
+    MemoryAccessAlignedShift = 1,
+    MemoryAccessNontemporalShift = 2,
+    MemoryAccessMakePointerAvailableShift = 3,
+    MemoryAccessMakePointerAvailableKHRShift = 3,
+    MemoryAccessMakePointerVisibleShift = 4,
+    MemoryAccessMakePointerVisibleKHRShift = 4,
+    MemoryAccessNonPrivatePointerShift = 5,
+    MemoryAccessNonPrivatePointerKHRShift = 5,
+    MemoryAccessMax = 0x7fffffff,
+};
+
+enum MemoryAccessMask {
+    MemoryAccessMaskNone = 0,
+    MemoryAccessVolatileMask = 0x00000001,
+    MemoryAccessAlignedMask = 0x00000002,
+    MemoryAccessNontemporalMask = 0x00000004,
+    MemoryAccessMakePointerAvailableMask = 0x00000008,
+    MemoryAccessMakePointerAvailableKHRMask = 0x00000008,
+    MemoryAccessMakePointerVisibleMask = 0x00000010,
+    MemoryAccessMakePointerVisibleKHRMask = 0x00000010,
+    MemoryAccessNonPrivatePointerMask = 0x00000020,
+    MemoryAccessNonPrivatePointerKHRMask = 0x00000020,
+};
+
+enum Scope {
+    ScopeCrossDevice = 0,
+    ScopeDevice = 1,
+    ScopeWorkgroup = 2,
+    ScopeSubgroup = 3,
+    ScopeInvocation = 4,
+    ScopeQueueFamily = 5,
+    ScopeQueueFamilyKHR = 5,
+    ScopeShaderCallKHR = 6,
+    ScopeMax = 0x7fffffff,
+};
+
+enum GroupOperation {
+    GroupOperationReduce = 0,
+    GroupOperationInclusiveScan = 1,
+    GroupOperationExclusiveScan = 2,
+    GroupOperationClusteredReduce = 3,
+    GroupOperationPartitionedReduceNV = 6,
+    GroupOperationPartitionedInclusiveScanNV = 7,
+    GroupOperationPartitionedExclusiveScanNV = 8,
+    GroupOperationMax = 0x7fffffff,
+};
+
+enum KernelEnqueueFlags {
+    KernelEnqueueFlagsNoWait = 0,
+    KernelEnqueueFlagsWaitKernel = 1,
+    KernelEnqueueFlagsWaitWorkGroup = 2,
+    KernelEnqueueFlagsMax = 0x7fffffff,
+};
+
+enum KernelProfilingInfoShift {
+    KernelProfilingInfoCmdExecTimeShift = 0,
+    KernelProfilingInfoMax = 0x7fffffff,
+};
+
+enum KernelProfilingInfoMask {
+    KernelProfilingInfoMaskNone = 0,
+    KernelProfilingInfoCmdExecTimeMask = 0x00000001,
+};
+
+enum Capability {
+    CapabilityMatrix = 0,
+    CapabilityShader = 1,
+    CapabilityGeometry = 2,
+    CapabilityTessellation = 3,
+    CapabilityAddresses = 4,
+    CapabilityLinkage = 5,
+    CapabilityKernel = 6,
+    CapabilityVector16 = 7,
+    CapabilityFloat16Buffer = 8,
+    CapabilityFloat16 = 9,
+    CapabilityFloat64 = 10,
+    CapabilityInt64 = 11,
+    CapabilityInt64Atomics = 12,
+    CapabilityImageBasic = 13,
+    CapabilityImageReadWrite = 14,
+    CapabilityImageMipmap = 15,
+    CapabilityPipes = 17,
+    CapabilityGroups = 18,
+    CapabilityDeviceEnqueue = 19,
+    CapabilityLiteralSampler = 20,
+    CapabilityAtomicStorage = 21,
+    CapabilityInt16 = 22,
+    CapabilityTessellationPointSize = 23,
+    CapabilityGeometryPointSize = 24,
+    CapabilityImageGatherExtended = 25,
+    CapabilityStorageImageMultisample = 27,
+    CapabilityUniformBufferArrayDynamicIndexing = 28,
+    CapabilitySampledImageArrayDynamicIndexing = 29,
+    CapabilityStorageBufferArrayDynamicIndexing = 30,
+    CapabilityStorageImageArrayDynamicIndexing = 31,
+    CapabilityClipDistance = 32,
+    CapabilityCullDistance = 33,
+    CapabilityImageCubeArray = 34,
+    CapabilitySampleRateShading = 35,
+    CapabilityImageRect = 36,
+    CapabilitySampledRect = 37,
+    CapabilityGenericPointer = 38,
+    CapabilityInt8 = 39,
+    CapabilityInputAttachment = 40,
+    CapabilitySparseResidency = 41,
+    CapabilityMinLod = 42,
+    CapabilitySampled1D = 43,
+    CapabilityImage1D = 44,
+    CapabilitySampledCubeArray = 45,
+    CapabilitySampledBuffer = 46,
+    CapabilityImageBuffer = 47,
+    CapabilityImageMSArray = 48,
+    CapabilityStorageImageExtendedFormats = 49,
+    CapabilityImageQuery = 50,
+    CapabilityDerivativeControl = 51,
+    CapabilityInterpolationFunction = 52,
+    CapabilityTransformFeedback = 53,
+    CapabilityGeometryStreams = 54,
+    CapabilityStorageImageReadWithoutFormat = 55,
+    CapabilityStorageImageWriteWithoutFormat = 56,
+    CapabilityMultiViewport = 57,
+    CapabilitySubgroupDispatch = 58,
+    CapabilityNamedBarrier = 59,
+    CapabilityPipeStorage = 60,
+    CapabilityGroupNonUniform = 61,
+    CapabilityGroupNonUniformVote = 62,
+    CapabilityGroupNonUniformArithmetic = 63,
+    CapabilityGroupNonUniformBallot = 64,
+    CapabilityGroupNonUniformShuffle = 65,
+    CapabilityGroupNonUniformShuffleRelative = 66,
+    CapabilityGroupNonUniformClustered = 67,
+    CapabilityGroupNonUniformQuad = 68,
+    CapabilityShaderLayer = 69,
+    CapabilityShaderViewportIndex = 70,
+    CapabilityFragmentShadingRateKHR = 4422,
+    CapabilitySubgroupBallotKHR = 4423,
+    CapabilityDrawParameters = 4427,
+    CapabilitySubgroupVoteKHR = 4431,
+    CapabilityStorageBuffer16BitAccess = 4433,
+    CapabilityStorageUniformBufferBlock16 = 4433,
+    CapabilityStorageUniform16 = 4434,
+    CapabilityUniformAndStorageBuffer16BitAccess = 4434,
+    CapabilityStoragePushConstant16 = 4435,
+    CapabilityStorageInputOutput16 = 4436,
+    CapabilityDeviceGroup = 4437,
+    CapabilityMultiView = 4439,
+    CapabilityVariablePointersStorageBuffer = 4441,
+    CapabilityVariablePointers = 4442,
+    CapabilityAtomicStorageOps = 4445,
+    CapabilitySampleMaskPostDepthCoverage = 4447,
+    CapabilityStorageBuffer8BitAccess = 4448,
+    CapabilityUniformAndStorageBuffer8BitAccess = 4449,
+    CapabilityStoragePushConstant8 = 4450,
+    CapabilityDenormPreserve = 4464,
+    CapabilityDenormFlushToZero = 4465,
+    CapabilitySignedZeroInfNanPreserve = 4466,
+    CapabilityRoundingModeRTE = 4467,
+    CapabilityRoundingModeRTZ = 4468,
+    CapabilityRayQueryProvisionalKHR = 4471,
+    CapabilityRayTraversalPrimitiveCullingProvisionalKHR = 4478,
+    CapabilityFloat16ImageAMD = 5008,
+    CapabilityImageGatherBiasLodAMD = 5009,
+    CapabilityFragmentMaskAMD = 5010,
+    CapabilityStencilExportEXT = 5013,
+    CapabilityImageReadWriteLodAMD = 5015,
+    CapabilityInt64ImageEXT = 5016,
+    CapabilityShaderClockKHR = 5055,
+    CapabilitySampleMaskOverrideCoverageNV = 5249,
+    CapabilityGeometryShaderPassthroughNV = 5251,
+    CapabilityShaderViewportIndexLayerEXT = 5254,
+    CapabilityShaderViewportIndexLayerNV = 5254,
+    CapabilityShaderViewportMaskNV = 5255,
+    CapabilityShaderStereoViewNV = 5259,
+    CapabilityPerViewAttributesNV = 5260,
+    CapabilityFragmentFullyCoveredEXT = 5265,
+    CapabilityMeshShadingNV = 5266,
+    CapabilityImageFootprintNV = 5282,
+    CapabilityFragmentBarycentricNV = 5284,
+    CapabilityComputeDerivativeGroupQuadsNV = 5288,
+    CapabilityFragmentDensityEXT = 5291,
+    CapabilityShadingRateNV = 5291,
+    CapabilityGroupNonUniformPartitionedNV = 5297,
+    CapabilityShaderNonUniform = 5301,
+    CapabilityShaderNonUniformEXT = 5301,
+    CapabilityRuntimeDescriptorArray = 5302,
+    CapabilityRuntimeDescriptorArrayEXT = 5302,
+    CapabilityInputAttachmentArrayDynamicIndexing = 5303,
+    CapabilityInputAttachmentArrayDynamicIndexingEXT = 5303,
+    CapabilityUniformTexelBufferArrayDynamicIndexing = 5304,
+    CapabilityUniformTexelBufferArrayDynamicIndexingEXT = 5304,
+    CapabilityStorageTexelBufferArrayDynamicIndexing = 5305,
+    CapabilityStorageTexelBufferArrayDynamicIndexingEXT = 5305,
+    CapabilityUniformBufferArrayNonUniformIndexing = 5306,
+    CapabilityUniformBufferArrayNonUniformIndexingEXT = 5306,
+    CapabilitySampledImageArrayNonUniformIndexing = 5307,
+    CapabilitySampledImageArrayNonUniformIndexingEXT = 5307,
+    CapabilityStorageBufferArrayNonUniformIndexing = 5308,
+    CapabilityStorageBufferArrayNonUniformIndexingEXT = 5308,
+    CapabilityStorageImageArrayNonUniformIndexing = 5309,
+    CapabilityStorageImageArrayNonUniformIndexingEXT = 5309,
+    CapabilityInputAttachmentArrayNonUniformIndexing = 5310,
+    CapabilityInputAttachmentArrayNonUniformIndexingEXT = 5310,
+    CapabilityUniformTexelBufferArrayNonUniformIndexing = 5311,
+    CapabilityUniformTexelBufferArrayNonUniformIndexingEXT = 5311,
+    CapabilityStorageTexelBufferArrayNonUniformIndexing = 5312,
+    CapabilityStorageTexelBufferArrayNonUniformIndexingEXT = 5312,
+    CapabilityRayTracingNV = 5340,
+    CapabilityVulkanMemoryModel = 5345,
+    CapabilityVulkanMemoryModelKHR = 5345,
+    CapabilityVulkanMemoryModelDeviceScope = 5346,
+    CapabilityVulkanMemoryModelDeviceScopeKHR = 5346,
+    CapabilityPhysicalStorageBufferAddresses = 5347,
+    CapabilityPhysicalStorageBufferAddressesEXT = 5347,
+    CapabilityComputeDerivativeGroupLinearNV = 5350,
+    CapabilityRayTracingProvisionalKHR = 5353,
+    CapabilityCooperativeMatrixNV = 5357,
+    CapabilityFragmentShaderSampleInterlockEXT = 5363,
+    CapabilityFragmentShaderShadingRateInterlockEXT = 5372,
+    CapabilityShaderSMBuiltinsNV = 5373,
+    CapabilityFragmentShaderPixelInterlockEXT = 5378,
+    CapabilityDemoteToHelperInvocationEXT = 5379,
+    CapabilitySubgroupShuffleINTEL = 5568,
+    CapabilitySubgroupBufferBlockIOINTEL = 5569,
+    CapabilitySubgroupImageBlockIOINTEL = 5570,
+    CapabilitySubgroupImageMediaBlockIOINTEL = 5579,
+    CapabilityIntegerFunctions2INTEL = 5584,
+    CapabilityFunctionPointersINTEL = 5603,
+    CapabilityIndirectReferencesINTEL = 5604,
+    CapabilitySubgroupAvcMotionEstimationINTEL = 5696,
+    CapabilitySubgroupAvcMotionEstimationIntraINTEL = 5697,
+    CapabilitySubgroupAvcMotionEstimationChromaINTEL = 5698,
+    CapabilityFPGAMemoryAttributesINTEL = 5824,
+    CapabilityUnstructuredLoopControlsINTEL = 5886,
+    CapabilityFPGALoopControlsINTEL = 5888,
+    CapabilityKernelAttributesINTEL = 5892,
+    CapabilityFPGAKernelAttributesINTEL = 5897,
+    CapabilityBlockingPipesINTEL = 5945,
+    CapabilityFPGARegINTEL = 5948,
+    CapabilityAtomicFloat32AddEXT = 6033,
+    CapabilityAtomicFloat64AddEXT = 6034,
+    CapabilityMax = 0x7fffffff,
+};
+
+enum RayFlagsShift {
+    RayFlagsOpaqueKHRShift = 0,
+    RayFlagsNoOpaqueKHRShift = 1,
+    RayFlagsTerminateOnFirstHitKHRShift = 2,
+    RayFlagsSkipClosestHitShaderKHRShift = 3,
+    RayFlagsCullBackFacingTrianglesKHRShift = 4,
+    RayFlagsCullFrontFacingTrianglesKHRShift = 5,
+    RayFlagsCullOpaqueKHRShift = 6,
+    RayFlagsCullNoOpaqueKHRShift = 7,
+    RayFlagsSkipTrianglesKHRShift = 8,
+    RayFlagsSkipAABBsKHRShift = 9,
+    RayFlagsMax = 0x7fffffff,
+};
+
+enum RayFlagsMask {
+    RayFlagsMaskNone = 0,
+    RayFlagsOpaqueKHRMask = 0x00000001,
+    RayFlagsNoOpaqueKHRMask = 0x00000002,
+    RayFlagsTerminateOnFirstHitKHRMask = 0x00000004,
+    RayFlagsSkipClosestHitShaderKHRMask = 0x00000008,
+    RayFlagsCullBackFacingTrianglesKHRMask = 0x00000010,
+    RayFlagsCullFrontFacingTrianglesKHRMask = 0x00000020,
+    RayFlagsCullOpaqueKHRMask = 0x00000040,
+    RayFlagsCullNoOpaqueKHRMask = 0x00000080,
+    RayFlagsSkipTrianglesKHRMask = 0x00000100,
+    RayFlagsSkipAABBsKHRMask = 0x00000200,
+};
+
+enum RayQueryIntersection {
+    RayQueryIntersectionRayQueryCandidateIntersectionKHR = 0,
+    RayQueryIntersectionRayQueryCommittedIntersectionKHR = 1,
+    RayQueryIntersectionMax = 0x7fffffff,
+};
+
+enum RayQueryCommittedIntersectionType {
+    RayQueryCommittedIntersectionTypeRayQueryCommittedIntersectionNoneKHR = 0,
+    RayQueryCommittedIntersectionTypeRayQueryCommittedIntersectionTriangleKHR = 1,
+    RayQueryCommittedIntersectionTypeRayQueryCommittedIntersectionGeneratedKHR = 2,
+    RayQueryCommittedIntersectionTypeMax = 0x7fffffff,
+};
+
+enum RayQueryCandidateIntersectionType {
+    RayQueryCandidateIntersectionTypeRayQueryCandidateIntersectionTriangleKHR = 0,
+    RayQueryCandidateIntersectionTypeRayQueryCandidateIntersectionAABBKHR = 1,
+    RayQueryCandidateIntersectionTypeMax = 0x7fffffff,
+};
+
+enum FragmentShadingRateShift {
+    FragmentShadingRateVertical2PixelsShift = 0,
+    FragmentShadingRateVertical4PixelsShift = 1,
+    FragmentShadingRateHorizontal2PixelsShift = 2,
+    FragmentShadingRateHorizontal4PixelsShift = 3,
+    FragmentShadingRateMax = 0x7fffffff,
+};
+
+enum FragmentShadingRateMask {
+    FragmentShadingRateMaskNone = 0,
+    FragmentShadingRateVertical2PixelsMask = 0x00000001,
+    FragmentShadingRateVertical4PixelsMask = 0x00000002,
+    FragmentShadingRateHorizontal2PixelsMask = 0x00000004,
+    FragmentShadingRateHorizontal4PixelsMask = 0x00000008,
+};
+
+enum Op {
+    OpNop = 0,
+    OpUndef = 1,
+    OpSourceContinued = 2,
+    OpSource = 3,
+    OpSourceExtension = 4,
+    OpName = 5,
+    OpMemberName = 6,
+    OpString = 7,
+    OpLine = 8,
+    OpExtension = 10,
+    OpExtInstImport = 11,
+    OpExtInst = 12,
+    OpMemoryModel = 14,
+    OpEntryPoint = 15,
+    OpExecutionMode = 16,
+    OpCapability = 17,
+    OpTypeVoid = 19,
+    OpTypeBool = 20,
+    OpTypeInt = 21,
+    OpTypeFloat = 22,
+    OpTypeVector = 23,
+    OpTypeMatrix = 24,
+    OpTypeImage = 25,
+    OpTypeSampler = 26,
+    OpTypeSampledImage = 27,
+    OpTypeArray = 28,
+    OpTypeRuntimeArray = 29,
+    OpTypeStruct = 30,
+    OpTypeOpaque = 31,
+    OpTypePointer = 32,
+    OpTypeFunction = 33,
+    OpTypeEvent = 34,
+    OpTypeDeviceEvent = 35,
+    OpTypeReserveId = 36,
+    OpTypeQueue = 37,
+    OpTypePipe = 38,
+    OpTypeForwardPointer = 39,
+    OpConstantTrue = 41,
+    OpConstantFalse = 42,
+    OpConstant = 43,
+    OpConstantComposite = 44,
+    OpConstantSampler = 45,
+    OpConstantNull = 46,
+    OpSpecConstantTrue = 48,
+    OpSpecConstantFalse = 49,
+    OpSpecConstant = 50,
+    OpSpecConstantComposite = 51,
+    OpSpecConstantOp = 52,
+    OpFunction = 54,
+    OpFunctionParameter = 55,
+    OpFunctionEnd = 56,
+    OpFunctionCall = 57,
+    OpVariable = 59,
+    OpImageTexelPointer = 60,
+    OpLoad = 61,
+    OpStore = 62,
+    OpCopyMemory = 63,
+    OpCopyMemorySized = 64,
+    OpAccessChain = 65,
+    OpInBoundsAccessChain = 66,
+    OpPtrAccessChain = 67,
+    OpArrayLength = 68,
+    OpGenericPtrMemSemantics = 69,
+    OpInBoundsPtrAccessChain = 70,
+    OpDecorate = 71,
+    OpMemberDecorate = 72,
+    OpDecorationGroup = 73,
+    OpGroupDecorate = 74,
+    OpGroupMemberDecorate = 75,
+    OpVectorExtractDynamic = 77,
+    OpVectorInsertDynamic = 78,
+    OpVectorShuffle = 79,
+    OpCompositeConstruct = 80,
+    OpCompositeExtract = 81,
+    OpCompositeInsert = 82,
+    OpCopyObject = 83,
+    OpTranspose = 84,
+    OpSampledImage = 86,
+    OpImageSampleImplicitLod = 87,
+    OpImageSampleExplicitLod = 88,
+    OpImageSampleDrefImplicitLod = 89,
+    OpImageSampleDrefExplicitLod = 90,
+    OpImageSampleProjImplicitLod = 91,
+    OpImageSampleProjExplicitLod = 92,
+    OpImageSampleProjDrefImplicitLod = 93,
+    OpImageSampleProjDrefExplicitLod = 94,
+    OpImageFetch = 95,
+    OpImageGather = 96,
+    OpImageDrefGather = 97,
+    OpImageRead = 98,
+    OpImageWrite = 99,
+    OpImage = 100,
+    OpImageQueryFormat = 101,
+    OpImageQueryOrder = 102,
+    OpImageQuerySizeLod = 103,
+    OpImageQuerySize = 104,
+    OpImageQueryLod = 105,
+    OpImageQueryLevels = 106,
+    OpImageQuerySamples = 107,
+    OpConvertFToU = 109,
+    OpConvertFToS = 110,
+    OpConvertSToF = 111,
+    OpConvertUToF = 112,
+    OpUConvert = 113,
+    OpSConvert = 114,
+    OpFConvert = 115,
+    OpQuantizeToF16 = 116,
+    OpConvertPtrToU = 117,
+    OpSatConvertSToU = 118,
+    OpSatConvertUToS = 119,
+    OpConvertUToPtr = 120,
+    OpPtrCastToGeneric = 121,
+    OpGenericCastToPtr = 122,
+    OpGenericCastToPtrExplicit = 123,
+    OpBitcast = 124,
+    OpSNegate = 126,
+    OpFNegate = 127,
+    OpIAdd = 128,
+    OpFAdd = 129,
+    OpISub = 130,
+    OpFSub = 131,
+    OpIMul = 132,
+    OpFMul = 133,
+    OpUDiv = 134,
+    OpSDiv = 135,
+    OpFDiv = 136,
+    OpUMod = 137,
+    OpSRem = 138,
+    OpSMod = 139,
+    OpFRem = 140,
+    OpFMod = 141,
+    OpVectorTimesScalar = 142,
+    OpMatrixTimesScalar = 143,
+    OpVectorTimesMatrix = 144,
+    OpMatrixTimesVector = 145,
+    OpMatrixTimesMatrix = 146,
+    OpOuterProduct = 147,
+    OpDot = 148,
+    OpIAddCarry = 149,
+    OpISubBorrow = 150,
+    OpUMulExtended = 151,
+    OpSMulExtended = 152,
+    OpAny = 154,
+    OpAll = 155,
+    OpIsNan = 156,
+    OpIsInf = 157,
+    OpIsFinite = 158,
+    OpIsNormal = 159,
+    OpSignBitSet = 160,
+    OpLessOrGreater = 161,
+    OpOrdered = 162,
+    OpUnordered = 163,
+    OpLogicalEqual = 164,
+    OpLogicalNotEqual = 165,
+    OpLogicalOr = 166,
+    OpLogicalAnd = 167,
+    OpLogicalNot = 168,
+    OpSelect = 169,
+    OpIEqual = 170,
+    OpINotEqual = 171,
+    OpUGreaterThan = 172,
+    OpSGreaterThan = 173,
+    OpUGreaterThanEqual = 174,
+    OpSGreaterThanEqual = 175,
+    OpULessThan = 176,
+    OpSLessThan = 177,
+    OpULessThanEqual = 178,
+    OpSLessThanEqual = 179,
+    OpFOrdEqual = 180,
+    OpFUnordEqual = 181,
+    OpFOrdNotEqual = 182,
+    OpFUnordNotEqual = 183,
+    OpFOrdLessThan = 184,
+    OpFUnordLessThan = 185,
+    OpFOrdGreaterThan = 186,
+    OpFUnordGreaterThan = 187,
+    OpFOrdLessThanEqual = 188,
+    OpFUnordLessThanEqual = 189,
+    OpFOrdGreaterThanEqual = 190,
+    OpFUnordGreaterThanEqual = 191,
+    OpShiftRightLogical = 194,
+    OpShiftRightArithmetic = 195,
+    OpShiftLeftLogical = 196,
+    OpBitwiseOr = 197,
+    OpBitwiseXor = 198,
+    OpBitwiseAnd = 199,
+    OpNot = 200,
+    OpBitFieldInsert = 201,
+    OpBitFieldSExtract = 202,
+    OpBitFieldUExtract = 203,
+    OpBitReverse = 204,
+    OpBitCount = 205,
+    OpDPdx = 207,
+    OpDPdy = 208,
+    OpFwidth = 209,
+    OpDPdxFine = 210,
+    OpDPdyFine = 211,
+    OpFwidthFine = 212,
+    OpDPdxCoarse = 213,
+    OpDPdyCoarse = 214,
+    OpFwidthCoarse = 215,
+    OpEmitVertex = 218,
+    OpEndPrimitive = 219,
+    OpEmitStreamVertex = 220,
+    OpEndStreamPrimitive = 221,
+    OpControlBarrier = 224,
+    OpMemoryBarrier = 225,
+    OpAtomicLoad = 227,
+    OpAtomicStore = 228,
+    OpAtomicExchange = 229,
+    OpAtomicCompareExchange = 230,
+    OpAtomicCompareExchangeWeak = 231,
+    OpAtomicIIncrement = 232,
+    OpAtomicIDecrement = 233,
+    OpAtomicIAdd = 234,
+    OpAtomicISub = 235,
+    OpAtomicSMin = 236,
+    OpAtomicUMin = 237,
+    OpAtomicSMax = 238,
+    OpAtomicUMax = 239,
+    OpAtomicAnd = 240,
+    OpAtomicOr = 241,
+    OpAtomicXor = 242,
+    OpPhi = 245,
+    OpLoopMerge = 246,
+    OpSelectionMerge = 247,
+    OpLabel = 248,
+    OpBranch = 249,
+    OpBranchConditional = 250,
+    OpSwitch = 251,
+    OpKill = 252,
+    OpReturn = 253,
+    OpReturnValue = 254,
+    OpUnreachable = 255,
+    OpLifetimeStart = 256,
+    OpLifetimeStop = 257,
+    OpGroupAsyncCopy = 259,
+    OpGroupWaitEvents = 260,
+    OpGroupAll = 261,
+    OpGroupAny = 262,
+    OpGroupBroadcast = 263,
+    OpGroupIAdd = 264,
+    OpGroupFAdd = 265,
+    OpGroupFMin = 266,
+    OpGroupUMin = 267,
+    OpGroupSMin = 268,
+    OpGroupFMax = 269,
+    OpGroupUMax = 270,
+    OpGroupSMax = 271,
+    OpReadPipe = 274,
+    OpWritePipe = 275,
+    OpReservedReadPipe = 276,
+    OpReservedWritePipe = 277,
+    OpReserveReadPipePackets = 278,
+    OpReserveWritePipePackets = 279,
+    OpCommitReadPipe = 280,
+    OpCommitWritePipe = 281,
+    OpIsValidReserveId = 282,
+    OpGetNumPipePackets = 283,
+    OpGetMaxPipePackets = 284,
+    OpGroupReserveReadPipePackets = 285,
+    OpGroupReserveWritePipePackets = 286,
+    OpGroupCommitReadPipe = 287,
+    OpGroupCommitWritePipe = 288,
+    OpEnqueueMarker = 291,
+    OpEnqueueKernel = 292,
+    OpGetKernelNDrangeSubGroupCount = 293,
+    OpGetKernelNDrangeMaxSubGroupSize = 294,
+    OpGetKernelWorkGroupSize = 295,
+    OpGetKernelPreferredWorkGroupSizeMultiple = 296,
+    OpRetainEvent = 297,
+    OpReleaseEvent = 298,
+    OpCreateUserEvent = 299,
+    OpIsValidEvent = 300,
+    OpSetUserEventStatus = 301,
+    OpCaptureEventProfilingInfo = 302,
+    OpGetDefaultQueue = 303,
+    OpBuildNDRange = 304,
+    OpImageSparseSampleImplicitLod = 305,
+    OpImageSparseSampleExplicitLod = 306,
+    OpImageSparseSampleDrefImplicitLod = 307,
+    OpImageSparseSampleDrefExplicitLod = 308,
+    OpImageSparseSampleProjImplicitLod = 309,
+    OpImageSparseSampleProjExplicitLod = 310,
+    OpImageSparseSampleProjDrefImplicitLod = 311,
+    OpImageSparseSampleProjDrefExplicitLod = 312,
+    OpImageSparseFetch = 313,
+    OpImageSparseGather = 314,
+    OpImageSparseDrefGather = 315,
+    OpImageSparseTexelsResident = 316,
+    OpNoLine = 317,
+    OpAtomicFlagTestAndSet = 318,
+    OpAtomicFlagClear = 319,
+    OpImageSparseRead = 320,
+    OpSizeOf = 321,
+    OpTypePipeStorage = 322,
+    OpConstantPipeStorage = 323,
+    OpCreatePipeFromPipeStorage = 324,
+    OpGetKernelLocalSizeForSubgroupCount = 325,
+    OpGetKernelMaxNumSubgroups = 326,
+    OpTypeNamedBarrier = 327,
+    OpNamedBarrierInitialize = 328,
+    OpMemoryNamedBarrier = 329,
+    OpModuleProcessed = 330,
+    OpExecutionModeId = 331,
+    OpDecorateId = 332,
+    OpGroupNonUniformElect = 333,
+    OpGroupNonUniformAll = 334,
+    OpGroupNonUniformAny = 335,
+    OpGroupNonUniformAllEqual = 336,
+    OpGroupNonUniformBroadcast = 337,
+    OpGroupNonUniformBroadcastFirst = 338,
+    OpGroupNonUniformBallot = 339,
+    OpGroupNonUniformInverseBallot = 340,
+    OpGroupNonUniformBallotBitExtract = 341,
+    OpGroupNonUniformBallotBitCount = 342,
+    OpGroupNonUniformBallotFindLSB = 343,
+    OpGroupNonUniformBallotFindMSB = 344,
+    OpGroupNonUniformShuffle = 345,
+    OpGroupNonUniformShuffleXor = 346,
+    OpGroupNonUniformShuffleUp = 347,
+    OpGroupNonUniformShuffleDown = 348,
+    OpGroupNonUniformIAdd = 349,
+    OpGroupNonUniformFAdd = 350,
+    OpGroupNonUniformIMul = 351,
+    OpGroupNonUniformFMul = 352,
+    OpGroupNonUniformSMin = 353,
+    OpGroupNonUniformUMin = 354,
+    OpGroupNonUniformFMin = 355,
+    OpGroupNonUniformSMax = 356,
+    OpGroupNonUniformUMax = 357,
+    OpGroupNonUniformFMax = 358,
+    OpGroupNonUniformBitwiseAnd = 359,
+    OpGroupNonUniformBitwiseOr = 360,
+    OpGroupNonUniformBitwiseXor = 361,
+    OpGroupNonUniformLogicalAnd = 362,
+    OpGroupNonUniformLogicalOr = 363,
+    OpGroupNonUniformLogicalXor = 364,
+    OpGroupNonUniformQuadBroadcast = 365,
+    OpGroupNonUniformQuadSwap = 366,
+    OpCopyLogical = 400,
+    OpPtrEqual = 401,
+    OpPtrNotEqual = 402,
+    OpPtrDiff = 403,
+    OpTerminateInvocation = 4416,
+    OpSubgroupBallotKHR = 4421,
+    OpSubgroupFirstInvocationKHR = 4422,
+    OpSubgroupAllKHR = 4428,
+    OpSubgroupAnyKHR = 4429,
+    OpSubgroupAllEqualKHR = 4430,
+    OpSubgroupReadInvocationKHR = 4432,
+    OpTypeRayQueryProvisionalKHR = 4472,
+    OpRayQueryInitializeKHR = 4473,
+    OpRayQueryTerminateKHR = 4474,
+    OpRayQueryGenerateIntersectionKHR = 4475,
+    OpRayQueryConfirmIntersectionKHR = 4476,
+    OpRayQueryProceedKHR = 4477,
+    OpRayQueryGetIntersectionTypeKHR = 4479,
+    OpGroupIAddNonUniformAMD = 5000,
+    OpGroupFAddNonUniformAMD = 5001,
+    OpGroupFMinNonUniformAMD = 5002,
+    OpGroupUMinNonUniformAMD = 5003,
+    OpGroupSMinNonUniformAMD = 5004,
+    OpGroupFMaxNonUniformAMD = 5005,
+    OpGroupUMaxNonUniformAMD = 5006,
+    OpGroupSMaxNonUniformAMD = 5007,
+    OpFragmentMaskFetchAMD = 5011,
+    OpFragmentFetchAMD = 5012,
+    OpReadClockKHR = 5056,
+    OpImageSampleFootprintNV = 5283,
+    OpGroupNonUniformPartitionNV = 5296,
+    OpWritePackedPrimitiveIndices4x8NV = 5299,
+    OpReportIntersectionKHR = 5334,
+    OpReportIntersectionNV = 5334,
+    OpIgnoreIntersectionKHR = 5335,
+    OpIgnoreIntersectionNV = 5335,
+    OpTerminateRayKHR = 5336,
+    OpTerminateRayNV = 5336,
+    OpTraceNV = 5337,
+    OpTraceRayKHR = 5337,
+    OpTypeAccelerationStructureKHR = 5341,
+    OpTypeAccelerationStructureNV = 5341,
+    OpExecuteCallableKHR = 5344,
+    OpExecuteCallableNV = 5344,
+    OpTypeCooperativeMatrixNV = 5358,
+    OpCooperativeMatrixLoadNV = 5359,
+    OpCooperativeMatrixStoreNV = 5360,
+    OpCooperativeMatrixMulAddNV = 5361,
+    OpCooperativeMatrixLengthNV = 5362,
+    OpBeginInvocationInterlockEXT = 5364,
+    OpEndInvocationInterlockEXT = 5365,
+    OpDemoteToHelperInvocationEXT = 5380,
+    OpIsHelperInvocationEXT = 5381,
+    OpSubgroupShuffleINTEL = 5571,
+    OpSubgroupShuffleDownINTEL = 5572,
+    OpSubgroupShuffleUpINTEL = 5573,
+    OpSubgroupShuffleXorINTEL = 5574,
+    OpSubgroupBlockReadINTEL = 5575,
+    OpSubgroupBlockWriteINTEL = 5576,
+    OpSubgroupImageBlockReadINTEL = 5577,
+    OpSubgroupImageBlockWriteINTEL = 5578,
+    OpSubgroupImageMediaBlockReadINTEL = 5580,
+    OpSubgroupImageMediaBlockWriteINTEL = 5581,
+    OpUCountLeadingZerosINTEL = 5585,
+    OpUCountTrailingZerosINTEL = 5586,
+    OpAbsISubINTEL = 5587,
+    OpAbsUSubINTEL = 5588,
+    OpIAddSatINTEL = 5589,
+    OpUAddSatINTEL = 5590,
+    OpIAverageINTEL = 5591,
+    OpUAverageINTEL = 5592,
+    OpIAverageRoundedINTEL = 5593,
+    OpUAverageRoundedINTEL = 5594,
+    OpISubSatINTEL = 5595,
+    OpUSubSatINTEL = 5596,
+    OpIMul32x16INTEL = 5597,
+    OpUMul32x16INTEL = 5598,
+    OpFunctionPointerINTEL = 5600,
+    OpFunctionPointerCallINTEL = 5601,
+    OpDecorateString = 5632,
+    OpDecorateStringGOOGLE = 5632,
+    OpMemberDecorateString = 5633,
+    OpMemberDecorateStringGOOGLE = 5633,
+    OpVmeImageINTEL = 5699,
+    OpTypeVmeImageINTEL = 5700,
+    OpTypeAvcImePayloadINTEL = 5701,
+    OpTypeAvcRefPayloadINTEL = 5702,
+    OpTypeAvcSicPayloadINTEL = 5703,
+    OpTypeAvcMcePayloadINTEL = 5704,
+    OpTypeAvcMceResultINTEL = 5705,
+    OpTypeAvcImeResultINTEL = 5706,
+    OpTypeAvcImeResultSingleReferenceStreamoutINTEL = 5707,
+    OpTypeAvcImeResultDualReferenceStreamoutINTEL = 5708,
+    OpTypeAvcImeSingleReferenceStreaminINTEL = 5709,
+    OpTypeAvcImeDualReferenceStreaminINTEL = 5710,
+    OpTypeAvcRefResultINTEL = 5711,
+    OpTypeAvcSicResultINTEL = 5712,
+    OpSubgroupAvcMceGetDefaultInterBaseMultiReferencePenaltyINTEL = 5713,
+    OpSubgroupAvcMceSetInterBaseMultiReferencePenaltyINTEL = 5714,
+    OpSubgroupAvcMceGetDefaultInterShapePenaltyINTEL = 5715,
+    OpSubgroupAvcMceSetInterShapePenaltyINTEL = 5716,
+    OpSubgroupAvcMceGetDefaultInterDirectionPenaltyINTEL = 5717,
+    OpSubgroupAvcMceSetInterDirectionPenaltyINTEL = 5718,
+    OpSubgroupAvcMceGetDefaultIntraLumaShapePenaltyINTEL = 5719,
+    OpSubgroupAvcMceGetDefaultInterMotionVectorCostTableINTEL = 5720,
+    OpSubgroupAvcMceGetDefaultHighPenaltyCostTableINTEL = 5721,
+    OpSubgroupAvcMceGetDefaultMediumPenaltyCostTableINTEL = 5722,
+    OpSubgroupAvcMceGetDefaultLowPenaltyCostTableINTEL = 5723,
+    OpSubgroupAvcMceSetMotionVectorCostFunctionINTEL = 5724,
+    OpSubgroupAvcMceGetDefaultIntraLumaModePenaltyINTEL = 5725,
+    OpSubgroupAvcMceGetDefaultNonDcLumaIntraPenaltyINTEL = 5726,
+    OpSubgroupAvcMceGetDefaultIntraChromaModeBasePenaltyINTEL = 5727,
+    OpSubgroupAvcMceSetAcOnlyHaarINTEL = 5728,
+    OpSubgroupAvcMceSetSourceInterlacedFieldPolarityINTEL = 5729,
+    OpSubgroupAvcMceSetSingleReferenceInterlacedFieldPolarityINTEL = 5730,
+    OpSubgroupAvcMceSetDualReferenceInterlacedFieldPolaritiesINTEL = 5731,
+    OpSubgroupAvcMceConvertToImePayloadINTEL = 5732,
+    OpSubgroupAvcMceConvertToImeResultINTEL = 5733,
+    OpSubgroupAvcMceConvertToRefPayloadINTEL = 5734,
+    OpSubgroupAvcMceConvertToRefResultINTEL = 5735,
+    OpSubgroupAvcMceConvertToSicPayloadINTEL = 5736,
+    OpSubgroupAvcMceConvertToSicResultINTEL = 5737,
+    OpSubgroupAvcMceGetMotionVectorsINTEL = 5738,
+    OpSubgroupAvcMceGetInterDistortionsINTEL = 5739,
+    OpSubgroupAvcMceGetBestInterDistortionsINTEL = 5740,
+    OpSubgroupAvcMceGetInterMajorShapeINTEL = 5741,
+    OpSubgroupAvcMceGetInterMinorShapeINTEL = 5742,
+    OpSubgroupAvcMceGetInterDirectionsINTEL = 5743,
+    OpSubgroupAvcMceGetInterMotionVectorCountINTEL = 5744,
+    OpSubgroupAvcMceGetInterReferenceIdsINTEL = 5745,
+    OpSubgroupAvcMceGetInterReferenceInterlacedFieldPolaritiesINTEL = 5746,
+    OpSubgroupAvcImeInitializeINTEL = 5747,
+    OpSubgroupAvcImeSetSingleReferenceINTEL = 5748,
+    OpSubgroupAvcImeSetDualReferenceINTEL = 5749,
+    OpSubgroupAvcImeRefWindowSizeINTEL = 5750,
+    OpSubgroupAvcImeAdjustRefOffsetINTEL = 5751,
+    OpSubgroupAvcImeConvertToMcePayloadINTEL = 5752,
+    OpSubgroupAvcImeSetMaxMotionVectorCountINTEL = 5753,
+    OpSubgroupAvcImeSetUnidirectionalMixDisableINTEL = 5754,
+    OpSubgroupAvcImeSetEarlySearchTerminationThresholdINTEL = 5755,
+    OpSubgroupAvcImeSetWeightedSadINTEL = 5756,
+    OpSubgroupAvcImeEvaluateWithSingleReferenceINTEL = 5757,
+    OpSubgroupAvcImeEvaluateWithDualReferenceINTEL = 5758,
+    OpSubgroupAvcImeEvaluateWithSingleReferenceStreaminINTEL = 5759,
+    OpSubgroupAvcImeEvaluateWithDualReferenceStreaminINTEL = 5760,
+    OpSubgroupAvcImeEvaluateWithSingleReferenceStreamoutINTEL = 5761,
+    OpSubgroupAvcImeEvaluateWithDualReferenceStreamoutINTEL = 5762,
+    OpSubgroupAvcImeEvaluateWithSingleReferenceStreaminoutINTEL = 5763,
+    OpSubgroupAvcImeEvaluateWithDualReferenceStreaminoutINTEL = 5764,
+    OpSubgroupAvcImeConvertToMceResultINTEL = 5765,
+    OpSubgroupAvcImeGetSingleReferenceStreaminINTEL = 5766,
+    OpSubgroupAvcImeGetDualReferenceStreaminINTEL = 5767,
+    OpSubgroupAvcImeStripSingleReferenceStreamoutINTEL = 5768,
+    OpSubgroupAvcImeStripDualReferenceStreamoutINTEL = 5769,
+    OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeMotionVectorsINTEL = 5770,
+    OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeDistortionsINTEL = 5771,
+    OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeReferenceIdsINTEL = 5772,
+    OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeMotionVectorsINTEL = 5773,
+    OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeDistortionsINTEL = 5774,
+    OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeReferenceIdsINTEL = 5775,
+    OpSubgroupAvcImeGetBorderReachedINTEL = 5776,
+    OpSubgroupAvcImeGetTruncatedSearchIndicationINTEL = 5777,
+    OpSubgroupAvcImeGetUnidirectionalEarlySearchTerminationINTEL = 5778,
+    OpSubgroupAvcImeGetWeightingPatternMinimumMotionVectorINTEL = 5779,
+    OpSubgroupAvcImeGetWeightingPatternMinimumDistortionINTEL = 5780,
+    OpSubgroupAvcFmeInitializeINTEL = 5781,
+    OpSubgroupAvcBmeInitializeINTEL = 5782,
+    OpSubgroupAvcRefConvertToMcePayloadINTEL = 5783,
+    OpSubgroupAvcRefSetBidirectionalMixDisableINTEL = 5784,
+    OpSubgroupAvcRefSetBilinearFilterEnableINTEL = 5785,
+    OpSubgroupAvcRefEvaluateWithSingleReferenceINTEL = 5786,
+    OpSubgroupAvcRefEvaluateWithDualReferenceINTEL = 5787,
+    OpSubgroupAvcRefEvaluateWithMultiReferenceINTEL = 5788,
+    OpSubgroupAvcRefEvaluateWithMultiReferenceInterlacedINTEL = 5789,
+    OpSubgroupAvcRefConvertToMceResultINTEL = 5790,
+    OpSubgroupAvcSicInitializeINTEL = 5791,
+    OpSubgroupAvcSicConfigureSkcINTEL = 5792,
+    OpSubgroupAvcSicConfigureIpeLumaINTEL = 5793,
+    OpSubgroupAvcSicConfigureIpeLumaChromaINTEL = 5794,
+    OpSubgroupAvcSicGetMotionVectorMaskINTEL = 5795,
+    OpSubgroupAvcSicConvertToMcePayloadINTEL = 5796,
+    OpSubgroupAvcSicSetIntraLumaShapePenaltyINTEL = 5797,
+    OpSubgroupAvcSicSetIntraLumaModeCostFunctionINTEL = 5798,
+    OpSubgroupAvcSicSetIntraChromaModeCostFunctionINTEL = 5799,
+    OpSubgroupAvcSicSetBilinearFilterEnableINTEL = 5800,
+    OpSubgroupAvcSicSetSkcForwardTransformEnableINTEL = 5801,
+    OpSubgroupAvcSicSetBlockBasedRawSkipSadINTEL = 5802,
+    OpSubgroupAvcSicEvaluateIpeINTEL = 5803,
+    OpSubgroupAvcSicEvaluateWithSingleReferenceINTEL = 5804,
+    OpSubgroupAvcSicEvaluateWithDualReferenceINTEL = 5805,
+    OpSubgroupAvcSicEvaluateWithMultiReferenceINTEL = 5806,
+    OpSubgroupAvcSicEvaluateWithMultiReferenceInterlacedINTEL = 5807,
+    OpSubgroupAvcSicConvertToMceResultINTEL = 5808,
+    OpSubgroupAvcSicGetIpeLumaShapeINTEL = 5809,
+    OpSubgroupAvcSicGetBestIpeLumaDistortionINTEL = 5810,
+    OpSubgroupAvcSicGetBestIpeChromaDistortionINTEL = 5811,
+    OpSubgroupAvcSicGetPackedIpeLumaModesINTEL = 5812,
+    OpSubgroupAvcSicGetIpeChromaModeINTEL = 5813,
+    OpSubgroupAvcSicGetPackedSkcLumaCountThresholdINTEL = 5814,
+    OpSubgroupAvcSicGetPackedSkcLumaSumThresholdINTEL = 5815,
+    OpSubgroupAvcSicGetInterRawSadsINTEL = 5816,
+    OpLoopControlINTEL = 5887,
+    OpReadPipeBlockingINTEL = 5946,
+    OpWritePipeBlockingINTEL = 5947,
+    OpFPGARegINTEL = 5949,
+    OpRayQueryGetRayTMinKHR = 6016,
+    OpRayQueryGetRayFlagsKHR = 6017,
+    OpRayQueryGetIntersectionTKHR = 6018,
+    OpRayQueryGetIntersectionInstanceCustomIndexKHR = 6019,
+    OpRayQueryGetIntersectionInstanceIdKHR = 6020,
+    OpRayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR = 6021,
+    OpRayQueryGetIntersectionGeometryIndexKHR = 6022,
+    OpRayQueryGetIntersectionPrimitiveIndexKHR = 6023,
+    OpRayQueryGetIntersectionBarycentricsKHR = 6024,
+    OpRayQueryGetIntersectionFrontFaceKHR = 6025,
+    OpRayQueryGetIntersectionCandidateAABBOpaqueKHR = 6026,
+    OpRayQueryGetIntersectionObjectRayDirectionKHR = 6027,
+    OpRayQueryGetIntersectionObjectRayOriginKHR = 6028,
+    OpRayQueryGetWorldRayDirectionKHR = 6029,
+    OpRayQueryGetWorldRayOriginKHR = 6030,
+    OpRayQueryGetIntersectionObjectToWorldKHR = 6031,
+    OpRayQueryGetIntersectionWorldToObjectKHR = 6032,
+    OpAtomicFAddEXT = 6035,
+    OpMax = 0x7fffffff,
+};
+
+#ifdef SPV_ENABLE_UTILITY_CODE
+inline void HasResultAndType(Op opcode, bool *hasResult, bool *hasResultType) {
+    *hasResult = *hasResultType = false;
+    switch (opcode) {
+    default: /* unknown opcode */ break;
+    case OpNop: *hasResult = false; *hasResultType = false; break;
+    case OpUndef: *hasResult = true; *hasResultType = true; break;
+    case OpSourceContinued: *hasResult = false; *hasResultType = false; break;
+    case OpSource: *hasResult = false; *hasResultType = false; break;
+    case OpSourceExtension: *hasResult = false; *hasResultType = false; break;
+    case OpName: *hasResult = false; *hasResultType = false; break;
+    case OpMemberName: *hasResult = false; *hasResultType = false; break;
+    case OpString: *hasResult = true; *hasResultType = false; break;
+    case OpLine: *hasResult = false; *hasResultType = false; break;
+    case OpExtension: *hasResult = false; *hasResultType = false; break;
+    case OpExtInstImport: *hasResult = true; *hasResultType = false; break;
+    case OpExtInst: *hasResult = true; *hasResultType = true; break;
+    case OpMemoryModel: *hasResult = false; *hasResultType = false; break;
+    case OpEntryPoint: *hasResult = false; *hasResultType = false; break;
+    case OpExecutionMode: *hasResult = false; *hasResultType = false; break;
+    case OpCapability: *hasResult = false; *hasResultType = false; break;
+    case OpTypeVoid: *hasResult = true; *hasResultType = false; break;
+    case OpTypeBool: *hasResult = true; *hasResultType = false; break;
+    case OpTypeInt: *hasResult = true; *hasResultType = false; break;
+    case OpTypeFloat: *hasResult = true; *hasResultType = false; break;
+    case OpTypeVector: *hasResult = true; *hasResultType = false; break;
+    case OpTypeMatrix: *hasResult = true; *hasResultType = false; break;
+    case OpTypeImage: *hasResult = true; *hasResultType = false; break;
+    case OpTypeSampler: *hasResult = true; *hasResultType = false; break;
+    case OpTypeSampledImage: *hasResult = true; *hasResultType = false; break;
+    case OpTypeArray: *hasResult = true; *hasResultType = false; break;
+    case OpTypeRuntimeArray: *hasResult = true; *hasResultType = false; break;
+    case OpTypeStruct: *hasResult = true; *hasResultType = false; break;
+    case OpTypeOpaque: *hasResult = true; *hasResultType = false; break;
+    case OpTypePointer: *hasResult = true; *hasResultType = false; break;
+    case OpTypeFunction: *hasResult = true; *hasResultType = false; break;
+    case OpTypeEvent: *hasResult = true; *hasResultType = false; break;
+    case OpTypeDeviceEvent: *hasResult = true; *hasResultType = false; break;
+    case OpTypeReserveId: *hasResult = true; *hasResultType = false; break;
+    case OpTypeQueue: *hasResult = true; *hasResultType = false; break;
+    case OpTypePipe: *hasResult = true; *hasResultType = false; break;
+    case OpTypeForwardPointer: *hasResult = false; *hasResultType = false; break;
+    case OpConstantTrue: *hasResult = true; *hasResultType = true; break;
+    case OpConstantFalse: *hasResult = true; *hasResultType = true; break;
+    case OpConstant: *hasResult = true; *hasResultType = true; break;
+    case OpConstantComposite: *hasResult = true; *hasResultType = true; break;
+    case OpConstantSampler: *hasResult = true; *hasResultType = true; break;
+    case OpConstantNull: *hasResult = true; *hasResultType = true; break;
+    case OpSpecConstantTrue: *hasResult = true; *hasResultType = true; break;
+    case OpSpecConstantFalse: *hasResult = true; *hasResultType = true; break;
+    case OpSpecConstant: *hasResult = true; *hasResultType = true; break;
+    case OpSpecConstantComposite: *hasResult = true; *hasResultType = true; break;
+    case OpSpecConstantOp: *hasResult = true; *hasResultType = true; break;
+    case OpFunction: *hasResult = true; *hasResultType = true; break;
+    case OpFunctionParameter: *hasResult = true; *hasResultType = true; break;
+    case OpFunctionEnd: *hasResult = false; *hasResultType = false; break;
+    case OpFunctionCall: *hasResult = true; *hasResultType = true; break;
+    case OpVariable: *hasResult = true; *hasResultType = true; break;
+    case OpImageTexelPointer: *hasResult = true; *hasResultType = true; break;
+    case OpLoad: *hasResult = true; *hasResultType = true; break;
+    case OpStore: *hasResult = false; *hasResultType = false; break;
+    case OpCopyMemory: *hasResult = false; *hasResultType = false; break;
+    case OpCopyMemorySized: *hasResult = false; *hasResultType = false; break;
+    case OpAccessChain: *hasResult = true; *hasResultType = true; break;
+    case OpInBoundsAccessChain: *hasResult = true; *hasResultType = true; break;
+    case OpPtrAccessChain: *hasResult = true; *hasResultType = true; break;
+    case OpArrayLength: *hasResult = true; *hasResultType = true; break;
+    case OpGenericPtrMemSemantics: *hasResult = true; *hasResultType = true; break;
+    case OpInBoundsPtrAccessChain: *hasResult = true; *hasResultType = true; break;
+    case OpDecorate: *hasResult = false; *hasResultType = false; break;
+    case OpMemberDecorate: *hasResult = false; *hasResultType = false; break;
+    case OpDecorationGroup: *hasResult = true; *hasResultType = false; break;
+    case OpGroupDecorate: *hasResult = false; *hasResultType = false; break;
+    case OpGroupMemberDecorate: *hasResult = false; *hasResultType = false; break;
+    case OpVectorExtractDynamic: *hasResult = true; *hasResultType = true; break;
+    case OpVectorInsertDynamic: *hasResult = true; *hasResultType = true; break;
+    case OpVectorShuffle: *hasResult = true; *hasResultType = true; break;
+    case OpCompositeConstruct: *hasResult = true; *hasResultType = true; break;
+    case OpCompositeExtract: *hasResult = true; *hasResultType = true; break;
+    case OpCompositeInsert: *hasResult = true; *hasResultType = true; break;
+    case OpCopyObject: *hasResult = true; *hasResultType = true; break;
+    case OpTranspose: *hasResult = true; *hasResultType = true; break;
+    case OpSampledImage: *hasResult = true; *hasResultType = true; break;
+    case OpImageSampleImplicitLod: *hasResult = true; *hasResultType = true; break;
+    case OpImageSampleExplicitLod: *hasResult = true; *hasResultType = true; break;
+    case OpImageSampleDrefImplicitLod: *hasResult = true; *hasResultType = true; break;
+    case OpImageSampleDrefExplicitLod: *hasResult = true; *hasResultType = true; break;
+    case OpImageSampleProjImplicitLod: *hasResult = true; *hasResultType = true; break;
+    case OpImageSampleProjExplicitLod: *hasResult = true; *hasResultType = true; break;
+    case OpImageSampleProjDrefImplicitLod: *hasResult = true; *hasResultType = true; break;
+    case OpImageSampleProjDrefExplicitLod: *hasResult = true; *hasResultType = true; break;
+    case OpImageFetch: *hasResult = true; *hasResultType = true; break;
+    case OpImageGather: *hasResult = true; *hasResultType = true; break;
+    case OpImageDrefGather: *hasResult = true; *hasResultType = true; break;
+    case OpImageRead: *hasResult = true; *hasResultType = true; break;
+    case OpImageWrite: *hasResult = false; *hasResultType = false; break;
+    case OpImage: *hasResult = true; *hasResultType = true; break;
+    case OpImageQueryFormat: *hasResult = true; *hasResultType = true; break;
+    case OpImageQueryOrder: *hasResult = true; *hasResultType = true; break;
+    case OpImageQuerySizeLod: *hasResult = true; *hasResultType = true; break;
+    case OpImageQuerySize: *hasResult = true; *hasResultType = true; break;
+    case OpImageQueryLod: *hasResult = true; *hasResultType = true; break;
+    case OpImageQueryLevels: *hasResult = true; *hasResultType = true; break;
+    case OpImageQuerySamples: *hasResult = true; *hasResultType = true; break;
+    case OpConvertFToU: *hasResult = true; *hasResultType = true; break;
+    case OpConvertFToS: *hasResult = true; *hasResultType = true; break;
+    case OpConvertSToF: *hasResult = true; *hasResultType = true; break;
+    case OpConvertUToF: *hasResult = true; *hasResultType = true; break;
+    case OpUConvert: *hasResult = true; *hasResultType = true; break;
+    case OpSConvert: *hasResult = true; *hasResultType = true; break;
+    case OpFConvert: *hasResult = true; *hasResultType = true; break;
+    case OpQuantizeToF16: *hasResult = true; *hasResultType = true; break;
+    case OpConvertPtrToU: *hasResult = true; *hasResultType = true; break;
+    case OpSatConvertSToU: *hasResult = true; *hasResultType = true; break;
+    case OpSatConvertUToS: *hasResult = true; *hasResultType = true; break;
+    case OpConvertUToPtr: *hasResult = true; *hasResultType = true; break;
+    case OpPtrCastToGeneric: *hasResult = true; *hasResultType = true; break;
+    case OpGenericCastToPtr: *hasResult = true; *hasResultType = true; break;
+    case OpGenericCastToPtrExplicit: *hasResult = true; *hasResultType = true; break;
+    case OpBitcast: *hasResult = true; *hasResultType = true; break;
+    case OpSNegate: *hasResult = true; *hasResultType = true; break;
+    case OpFNegate: *hasResult = true; *hasResultType = true; break;
+    case OpIAdd: *hasResult = true; *hasResultType = true; break;
+    case OpFAdd: *hasResult = true; *hasResultType = true; break;
+    case OpISub: *hasResult = true; *hasResultType = true; break;
+    case OpFSub: *hasResult = true; *hasResultType = true; break;
+    case OpIMul: *hasResult = true; *hasResultType = true; break;
+    case OpFMul: *hasResult = true; *hasResultType = true; break;
+    case OpUDiv: *hasResult = true; *hasResultType = true; break;
+    case OpSDiv: *hasResult = true; *hasResultType = true; break;
+    case OpFDiv: *hasResult = true; *hasResultType = true; break;
+    case OpUMod: *hasResult = true; *hasResultType = true; break;
+    case OpSRem: *hasResult = true; *hasResultType = true; break;
+    case OpSMod: *hasResult = true; *hasResultType = true; break;
+    case OpFRem: *hasResult = true; *hasResultType = true; break;
+    case OpFMod: *hasResult = true; *hasResultType = true; break;
+    case OpVectorTimesScalar: *hasResult = true; *hasResultType = true; break;
+    case OpMatrixTimesScalar: *hasResult = true; *hasResultType = true; break;
+    case OpVectorTimesMatrix: *hasResult = true; *hasResultType = true; break;
+    case OpMatrixTimesVector: *hasResult = true; *hasResultType = true; break;
+    case OpMatrixTimesMatrix: *hasResult = true; *hasResultType = true; break;
+    case OpOuterProduct: *hasResult = true; *hasResultType = true; break;
+    case OpDot: *hasResult = true; *hasResultType = true; break;
+    case OpIAddCarry: *hasResult = true; *hasResultType = true; break;
+    case OpISubBorrow: *hasResult = true; *hasResultType = true; break;
+    case OpUMulExtended: *hasResult = true; *hasResultType = true; break;
+    case OpSMulExtended: *hasResult = true; *hasResultType = true; break;
+    case OpAny: *hasResult = true; *hasResultType = true; break;
+    case OpAll: *hasResult = true; *hasResultType = true; break;
+    case OpIsNan: *hasResult = true; *hasResultType = true; break;
+    case OpIsInf: *hasResult = true; *hasResultType = true; break;
+    case OpIsFinite: *hasResult = true; *hasResultType = true; break;
+    case OpIsNormal: *hasResult = true; *hasResultType = true; break;
+    case OpSignBitSet: *hasResult = true; *hasResultType = true; break;
+    case OpLessOrGreater: *hasResult = true; *hasResultType = true; break;
+    case OpOrdered: *hasResult = true; *hasResultType = true; break;
+    case OpUnordered: *hasResult = true; *hasResultType = true; break;
+    case OpLogicalEqual: *hasResult = true; *hasResultType = true; break;
+    case OpLogicalNotEqual: *hasResult = true; *hasResultType = true; break;
+    case OpLogicalOr: *hasResult = true; *hasResultType = true; break;
+    case OpLogicalAnd: *hasResult = true; *hasResultType = true; break;
+    case OpLogicalNot: *hasResult = true; *hasResultType = true; break;
+    case OpSelect: *hasResult = true; *hasResultType = true; break;
+    case OpIEqual: *hasResult = true; *hasResultType = true; break;
+    case OpINotEqual: *hasResult = true; *hasResultType = true; break;
+    case OpUGreaterThan: *hasResult = true; *hasResultType = true; break;
+    case OpSGreaterThan: *hasResult = true; *hasResultType = true; break;
+    case OpUGreaterThanEqual: *hasResult = true; *hasResultType = true; break;
+    case OpSGreaterThanEqual: *hasResult = true; *hasResultType = true; break;
+    case OpULessThan: *hasResult = true; *hasResultType = true; break;
+    case OpSLessThan: *hasResult = true; *hasResultType = true; break;
+    case OpULessThanEqual: *hasResult = true; *hasResultType = true; break;
+    case OpSLessThanEqual: *hasResult = true; *hasResultType = true; break;
+    case OpFOrdEqual: *hasResult = true; *hasResultType = true; break;
+    case OpFUnordEqual: *hasResult = true; *hasResultType = true; break;
+    case OpFOrdNotEqual: *hasResult = true; *hasResultType = true; break;
+    case OpFUnordNotEqual: *hasResult = true; *hasResultType = true; break;
+    case OpFOrdLessThan: *hasResult = true; *hasResultType = true; break;
+    case OpFUnordLessThan: *hasResult = true; *hasResultType = true; break;
+    case OpFOrdGreaterThan: *hasResult = true; *hasResultType = true; break;
+    case OpFUnordGreaterThan: *hasResult = true; *hasResultType = true; break;
+    case OpFOrdLessThanEqual: *hasResult = true; *hasResultType = true; break;
+    case OpFUnordLessThanEqual: *hasResult = true; *hasResultType = true; break;
+    case OpFOrdGreaterThanEqual: *hasResult = true; *hasResultType = true; break;
+    case OpFUnordGreaterThanEqual: *hasResult = true; *hasResultType = true; break;
+    case OpShiftRightLogical: *hasResult = true; *hasResultType = true; break;
+    case OpShiftRightArithmetic: *hasResult = true; *hasResultType = true; break;
+    case OpShiftLeftLogical: *hasResult = true; *hasResultType = true; break;
+    case OpBitwiseOr: *hasResult = true; *hasResultType = true; break;
+    case OpBitwiseXor: *hasResult = true; *hasResultType = true; break;
+    case OpBitwiseAnd: *hasResult = true; *hasResultType = true; break;
+    case OpNot: *hasResult = true; *hasResultType = true; break;
+    case OpBitFieldInsert: *hasResult = true; *hasResultType = true; break;
+    case OpBitFieldSExtract: *hasResult = true; *hasResultType = true; break;
+    case OpBitFieldUExtract: *hasResult = true; *hasResultType = true; break;
+    case OpBitReverse: *hasResult = true; *hasResultType = true; break;
+    case OpBitCount: *hasResult = true; *hasResultType = true; break;
+    case OpDPdx: *hasResult = true; *hasResultType = true; break;
+    case OpDPdy: *hasResult = true; *hasResultType = true; break;
+    case OpFwidth: *hasResult = true; *hasResultType = true; break;
+    case OpDPdxFine: *hasResult = true; *hasResultType = true; break;
+    case OpDPdyFine: *hasResult = true; *hasResultType = true; break;
+    case OpFwidthFine: *hasResult = true; *hasResultType = true; break;
+    case OpDPdxCoarse: *hasResult = true; *hasResultType = true; break;
+    case OpDPdyCoarse: *hasResult = true; *hasResultType = true; break;
+    case OpFwidthCoarse: *hasResult = true; *hasResultType = true; break;
+    case OpEmitVertex: *hasResult = false; *hasResultType = false; break;
+    case OpEndPrimitive: *hasResult = false; *hasResultType = false; break;
+    case OpEmitStreamVertex: *hasResult = false; *hasResultType = false; break;
+    case OpEndStreamPrimitive: *hasResult = false; *hasResultType = false; break;
+    case OpControlBarrier: *hasResult = false; *hasResultType = false; break;
+    case OpMemoryBarrier: *hasResult = false; *hasResultType = false; break;
+    case OpAtomicLoad: *hasResult = true; *hasResultType = true; break;
+    case OpAtomicStore: *hasResult = false; *hasResultType = false; break;
+    case OpAtomicExchange: *hasResult = true; *hasResultType = true; break;
+    case OpAtomicCompareExchange: *hasResult = true; *hasResultType = true; break;
+    case OpAtomicCompareExchangeWeak: *hasResult = true; *hasResultType = true; break;
+    case OpAtomicIIncrement: *hasResult = true; *hasResultType = true; break;
+    case OpAtomicIDecrement: *hasResult = true; *hasResultType = true; break;
+    case OpAtomicIAdd: *hasResult = true; *hasResultType = true; break;
+    case OpAtomicISub: *hasResult = true; *hasResultType = true; break;
+    case OpAtomicSMin: *hasResult = true; *hasResultType = true; break;
+    case OpAtomicUMin: *hasResult = true; *hasResultType = true; break;
+    case OpAtomicSMax: *hasResult = true; *hasResultType = true; break;
+    case OpAtomicUMax: *hasResult = true; *hasResultType = true; break;
+    case OpAtomicAnd: *hasResult = true; *hasResultType = true; break;
+    case OpAtomicOr: *hasResult = true; *hasResultType = true; break;
+    case OpAtomicXor: *hasResult = true; *hasResultType = true; break;
+    case OpPhi: *hasResult = true; *hasResultType = true; break;
+    case OpLoopMerge: *hasResult = false; *hasResultType = false; break;
+    case OpSelectionMerge: *hasResult = false; *hasResultType = false; break;
+    case OpLabel: *hasResult = true; *hasResultType = false; break;
+    case OpBranch: *hasResult = false; *hasResultType = false; break;
+    case OpBranchConditional: *hasResult = false; *hasResultType = false; break;
+    case OpSwitch: *hasResult = false; *hasResultType = false; break;
+    case OpKill: *hasResult = false; *hasResultType = false; break;
+    case OpReturn: *hasResult = false; *hasResultType = false; break;
+    case OpReturnValue: *hasResult = false; *hasResultType = false; break;
+    case OpUnreachable: *hasResult = false; *hasResultType = false; break;
+    case OpLifetimeStart: *hasResult = false; *hasResultType = false; break;
+    case OpLifetimeStop: *hasResult = false; *hasResultType = false; break;
+    case OpGroupAsyncCopy: *hasResult = true; *hasResultType = true; break;
+    case OpGroupWaitEvents: *hasResult = false; *hasResultType = false; break;
+    case OpGroupAll: *hasResult = true; *hasResultType = true; break;
+    case OpGroupAny: *hasResult = true; *hasResultType = true; break;
+    case OpGroupBroadcast: *hasResult = true; *hasResultType = true; break;
+    case OpGroupIAdd: *hasResult = true; *hasResultType = true; break;
+    case OpGroupFAdd: *hasResult = true; *hasResultType = true; break;
+    case OpGroupFMin: *hasResult = true; *hasResultType = true; break;
+    case OpGroupUMin: *hasResult = true; *hasResultType = true; break;
+    case OpGroupSMin: *hasResult = true; *hasResultType = true; break;
+    case OpGroupFMax: *hasResult = true; *hasResultType = true; break;
+    case OpGroupUMax: *hasResult = true; *hasResultType = true; break;
+    case OpGroupSMax: *hasResult = true; *hasResultType = true; break;
+    case OpReadPipe: *hasResult = true; *hasResultType = true; break;
+    case OpWritePipe: *hasResult = true; *hasResultType = true; break;
+    case OpReservedReadPipe: *hasResult = true; *hasResultType = true; break;
+    case OpReservedWritePipe: *hasResult = true; *hasResultType = true; break;
+    case OpReserveReadPipePackets: *hasResult = true; *hasResultType = true; break;
+    case OpReserveWritePipePackets: *hasResult = true; *hasResultType = true; break;
+    case OpCommitReadPipe: *hasResult = false; *hasResultType = false; break;
+    case OpCommitWritePipe: *hasResult = false; *hasResultType = false; break;
+    case OpIsValidReserveId: *hasResult = true; *hasResultType = true; break;
+    case OpGetNumPipePackets: *hasResult = true; *hasResultType = true; break;
+    case OpGetMaxPipePackets: *hasResult = true; *hasResultType = true; break;
+    case OpGroupReserveReadPipePackets: *hasResult = true; *hasResultType = true; break;
+    case OpGroupReserveWritePipePackets: *hasResult = true; *hasResultType = true; break;
+    case OpGroupCommitReadPipe: *hasResult = false; *hasResultType = false; break;
+    case OpGroupCommitWritePipe: *hasResult = false; *hasResultType = false; break;
+    case OpEnqueueMarker: *hasResult = true; *hasResultType = true; break;
+    case OpEnqueueKernel: *hasResult = true; *hasResultType = true; break;
+    case OpGetKernelNDrangeSubGroupCount: *hasResult = true; *hasResultType = true; break;
+    case OpGetKernelNDrangeMaxSubGroupSize: *hasResult = true; *hasResultType = true; break;
+    case OpGetKernelWorkGroupSize: *hasResult = true; *hasResultType = true; break;
+    case OpGetKernelPreferredWorkGroupSizeMultiple: *hasResult = true; *hasResultType = true; break;
+    case OpRetainEvent: *hasResult = false; *hasResultType = false; break;
+    case OpReleaseEvent: *hasResult = false; *hasResultType = false; break;
+    case OpCreateUserEvent: *hasResult = true; *hasResultType = true; break;
+    case OpIsValidEvent: *hasResult = true; *hasResultType = true; break;
+    case OpSetUserEventStatus: *hasResult = false; *hasResultType = false; break;
+    case OpCaptureEventProfilingInfo: *hasResult = false; *hasResultType = false; break;
+    case OpGetDefaultQueue: *hasResult = true; *hasResultType = true; break;
+    case OpBuildNDRange: *hasResult = true; *hasResultType = true; break;
+    case OpImageSparseSampleImplicitLod: *hasResult = true; *hasResultType = true; break;
+    case OpImageSparseSampleExplicitLod: *hasResult = true; *hasResultType = true; break;
+    case OpImageSparseSampleDrefImplicitLod: *hasResult = true; *hasResultType = true; break;
+    case OpImageSparseSampleDrefExplicitLod: *hasResult = true; *hasResultType = true; break;
+    case OpImageSparseSampleProjImplicitLod: *hasResult = true; *hasResultType = true; break;
+    case OpImageSparseSampleProjExplicitLod: *hasResult = true; *hasResultType = true; break;
+    case OpImageSparseSampleProjDrefImplicitLod: *hasResult = true; *hasResultType = true; break;
+    case OpImageSparseSampleProjDrefExplicitLod: *hasResult = true; *hasResultType = true; break;
+    case OpImageSparseFetch: *hasResult = true; *hasResultType = true; break;
+    case OpImageSparseGather: *hasResult = true; *hasResultType = true; break;
+    case OpImageSparseDrefGather: *hasResult = true; *hasResultType = true; break;
+    case OpImageSparseTexelsResident: *hasResult = true; *hasResultType = true; break;
+    case OpNoLine: *hasResult = false; *hasResultType = false; break;
+    case OpAtomicFlagTestAndSet: *hasResult = true; *hasResultType = true; break;
+    case OpAtomicFlagClear: *hasResult = false; *hasResultType = false; break;
+    case OpImageSparseRead: *hasResult = true; *hasResultType = true; break;
+    case OpSizeOf: *hasResult = true; *hasResultType = true; break;
+    case OpTypePipeStorage: *hasResult = true; *hasResultType = false; break;
+    case OpConstantPipeStorage: *hasResult = true; *hasResultType = true; break;
+    case OpCreatePipeFromPipeStorage: *hasResult = true; *hasResultType = true; break;
+    case OpGetKernelLocalSizeForSubgroupCount: *hasResult = true; *hasResultType = true; break;
+    case OpGetKernelMaxNumSubgroups: *hasResult = true; *hasResultType = true; break;
+    case OpTypeNamedBarrier: *hasResult = true; *hasResultType = false; break;
+    case OpNamedBarrierInitialize: *hasResult = true; *hasResultType = true; break;
+    case OpMemoryNamedBarrier: *hasResult = false; *hasResultType = false; break;
+    case OpModuleProcessed: *hasResult = false; *hasResultType = false; break;
+    case OpExecutionModeId: *hasResult = false; *hasResultType = false; break;
+    case OpDecorateId: *hasResult = false; *hasResultType = false; break;
+    case OpGroupNonUniformElect: *hasResult = true; *hasResultType = true; break;
+    case OpGroupNonUniformAll: *hasResult = true; *hasResultType = true; break;
+    case OpGroupNonUniformAny: *hasResult = true; *hasResultType = true; break;
+    case OpGroupNonUniformAllEqual: *hasResult = true; *hasResultType = true; break;
+    case OpGroupNonUniformBroadcast: *hasResult = true; *hasResultType = true; break;
+    case OpGroupNonUniformBroadcastFirst: *hasResult = true; *hasResultType = true; break;
+    case OpGroupNonUniformBallot: *hasResult = true; *hasResultType = true; break;
+    case OpGroupNonUniformInverseBallot: *hasResult = true; *hasResultType = true; break;
+    case OpGroupNonUniformBallotBitExtract: *hasResult = true; *hasResultType = true; break;
+    case OpGroupNonUniformBallotBitCount: *hasResult = true; *hasResultType = true; break;
+    case OpGroupNonUniformBallotFindLSB: *hasResult = true; *hasResultType = true; break;
+    case OpGroupNonUniformBallotFindMSB: *hasResult = true; *hasResultType = true; break;
+    case OpGroupNonUniformShuffle: *hasResult = true; *hasResultType = true; break;
+    case OpGroupNonUniformShuffleXor: *hasResult = true; *hasResultType = true; break;
+    case OpGroupNonUniformShuffleUp: *hasResult = true; *hasResultType = true; break;
+    case OpGroupNonUniformShuffleDown: *hasResult = true; *hasResultType = true; break;
+    case OpGroupNonUniformIAdd: *hasResult = true; *hasResultType = true; break;
+    case OpGroupNonUniformFAdd: *hasResult = true; *hasResultType = true; break;
+    case OpGroupNonUniformIMul: *hasResult = true; *hasResultType = true; break;
+    case OpGroupNonUniformFMul: *hasResult = true; *hasResultType = true; break;
+    case OpGroupNonUniformSMin: *hasResult = true; *hasResultType = true; break;
+    case OpGroupNonUniformUMin: *hasResult = true; *hasResultType = true; break;
+    case OpGroupNonUniformFMin: *hasResult = true; *hasResultType = true; break;
+    case OpGroupNonUniformSMax: *hasResult = true; *hasResultType = true; break;
+    case OpGroupNonUniformUMax: *hasResult = true; *hasResultType = true; break;
+    case OpGroupNonUniformFMax: *hasResult = true; *hasResultType = true; break;
+    case OpGroupNonUniformBitwiseAnd: *hasResult = true; *hasResultType = true; break;
+    case OpGroupNonUniformBitwiseOr: *hasResult = true; *hasResultType = true; break;
+    case OpGroupNonUniformBitwiseXor: *hasResult = true; *hasResultType = true; break;
+    case OpGroupNonUniformLogicalAnd: *hasResult = true; *hasResultType = true; break;
+    case OpGroupNonUniformLogicalOr: *hasResult = true; *hasResultType = true; break;
+    case OpGroupNonUniformLogicalXor: *hasResult = true; *hasResultType = true; break;
+    case OpGroupNonUniformQuadBroadcast: *hasResult = true; *hasResultType = true; break;
+    case OpGroupNonUniformQuadSwap: *hasResult = true; *hasResultType = true; break;
+    case OpCopyLogical: *hasResult = true; *hasResultType = true; break;
+    case OpPtrEqual: *hasResult = true; *hasResultType = true; break;
+    case OpPtrNotEqual: *hasResult = true; *hasResultType = true; break;
+    case OpPtrDiff: *hasResult = true; *hasResultType = true; break;
+    case OpTerminateInvocation: *hasResult = false; *hasResultType = false; break;
+    case OpSubgroupBallotKHR: *hasResult = true; *hasResultType = true; break;
+    case OpSubgroupFirstInvocationKHR: *hasResult = true; *hasResultType = true; break;
+    case OpSubgroupAllKHR: *hasResult = true; *hasResultType = true; break;
+    case OpSubgroupAnyKHR: *hasResult = true; *hasResultType = true; break;
+    case OpSubgroupAllEqualKHR: *hasResult = true; *hasResultType = true; break;
+    case OpSubgroupReadInvocationKHR: *hasResult = true; *hasResultType = true; break;
+    case OpTypeRayQueryProvisionalKHR: *hasResult = true; *hasResultType = false; break;
+    case OpRayQueryInitializeKHR: *hasResult = false; *hasResultType = false; break;
+    case OpRayQueryTerminateKHR: *hasResult = false; *hasResultType = false; break;
+    case OpRayQueryGenerateIntersectionKHR: *hasResult = false; *hasResultType = false; break;
+    case OpRayQueryConfirmIntersectionKHR: *hasResult = false; *hasResultType = false; break;
+    case OpRayQueryProceedKHR: *hasResult = true; *hasResultType = true; break;
+    case OpRayQueryGetIntersectionTypeKHR: *hasResult = true; *hasResultType = true; break;
+    case OpGroupIAddNonUniformAMD: *hasResult = true; *hasResultType = true; break;
+    case OpGroupFAddNonUniformAMD: *hasResult = true; *hasResultType = true; break;
+    case OpGroupFMinNonUniformAMD: *hasResult = true; *hasResultType = true; break;
+    case OpGroupUMinNonUniformAMD: *hasResult = true; *hasResultType = true; break;
+    case OpGroupSMinNonUniformAMD: *hasResult = true; *hasResultType = true; break;
+    case OpGroupFMaxNonUniformAMD: *hasResult = true; *hasResultType = true; break;
+    case OpGroupUMaxNonUniformAMD: *hasResult = true; *hasResultType = true; break;
+    case OpGroupSMaxNonUniformAMD: *hasResult = true; *hasResultType = true; break;
+    case OpFragmentMaskFetchAMD: *hasResult = true; *hasResultType = true; break;
+    case OpFragmentFetchAMD: *hasResult = true; *hasResultType = true; break;
+    case OpReadClockKHR: *hasResult = true; *hasResultType = true; break;
+    case OpImageSampleFootprintNV: *hasResult = true; *hasResultType = true; break;
+    case OpGroupNonUniformPartitionNV: *hasResult = true; *hasResultType = true; break;
+    case OpWritePackedPrimitiveIndices4x8NV: *hasResult = false; *hasResultType = false; break;
+    case OpReportIntersectionNV: *hasResult = true; *hasResultType = true; break;
+    case OpIgnoreIntersectionNV: *hasResult = false; *hasResultType = false; break;
+    case OpTerminateRayNV: *hasResult = false; *hasResultType = false; break;
+    case OpTraceNV: *hasResult = false; *hasResultType = false; break;
+    case OpTypeAccelerationStructureNV: *hasResult = true; *hasResultType = false; break;
+    case OpExecuteCallableNV: *hasResult = false; *hasResultType = false; break;
+    case OpTypeCooperativeMatrixNV: *hasResult = true; *hasResultType = false; break;
+    case OpCooperativeMatrixLoadNV: *hasResult = true; *hasResultType = true; break;
+    case OpCooperativeMatrixStoreNV: *hasResult = false; *hasResultType = false; break;
+    case OpCooperativeMatrixMulAddNV: *hasResult = true; *hasResultType = true; break;
+    case OpCooperativeMatrixLengthNV: *hasResult = true; *hasResultType = true; break;
+    case OpBeginInvocationInterlockEXT: *hasResult = false; *hasResultType = false; break;
+    case OpEndInvocationInterlockEXT: *hasResult = false; *hasResultType = false; break;
+    case OpDemoteToHelperInvocationEXT: *hasResult = false; *hasResultType = false; break;
+    case OpIsHelperInvocationEXT: *hasResult = true; *hasResultType = true; break;
+    case OpSubgroupShuffleINTEL: *hasResult = true; *hasResultType = true; break;
+    case OpSubgroupShuffleDownINTEL: *hasResult = true; *hasResultType = true; break;
+    case OpSubgroupShuffleUpINTEL: *hasResult = true; *hasResultType = true; break;
+    case OpSubgroupShuffleXorINTEL: *hasResult = true; *hasResultType = true; break;
+    case OpSubgroupBlockReadINTEL: *hasResult = true; *hasResultType = true; break;
+    case OpSubgroupBlockWriteINTEL: *hasResult = false; *hasResultType = false; break;
+    case OpSubgroupImageBlockReadINTEL: *hasResult = true; *hasResultType = true; break;
+    case OpSubgroupImageBlockWriteINTEL: *hasResult = false; *hasResultType = false; break;
+    case OpSubgroupImageMediaBlockReadINTEL: *hasResult = true; *hasResultType = true; break;
+    case OpSubgroupImageMediaBlockWriteINTEL: *hasResult = false; *hasResultType = false; break;
+    case OpUCountLeadingZerosINTEL: *hasResult = true; *hasResultType = true; break;
+    case OpUCountTrailingZerosINTEL: *hasResult = true; *hasResultType = true; break;
+    case OpAbsISubINTEL: *hasResult = true; *hasResultType = true; break;
+    case OpAbsUSubINTEL: *hasResult = true; *hasResultType = true; break;
+    case OpIAddSatINTEL: *hasResult = true; *hasResultType = true; break;
+    case OpUAddSatINTEL: *hasResult = true; *hasResultType = true; break;
+    case OpIAverageINTEL: *hasResult = true; *hasResultType = true; break;
+    case OpUAverageINTEL: *hasResult = true; *hasResultType = true; break;
+    case OpIAverageRoundedINTEL: *hasResult = true; *hasResultType = true; break;
+    case OpUAverageRoundedINTEL: *hasResult = true; *hasResultType = true; break;
+    case OpISubSatINTEL: *hasResult = true; *hasResultType = true; break;
+    case OpUSubSatINTEL: *hasResult = true; *hasResultType = true; break;
+    case OpIMul32x16INTEL: *hasResult = true; *hasResultType = true; break;
+    case OpUMul32x16INTEL: *hasResult = true; *hasResultType = true; break;
+    case OpFunctionPointerINTEL: *hasResult = true; *hasResultType = true; break;
+    case OpFunctionPointerCallINTEL: *hasResult = true; *hasResultType = true; break;
+    case OpDecorateString: *hasResult = false; *hasResultType = false; break;
+    case OpMemberDecorateString: *hasResult = false; *hasResultType = false; break;
+    case OpVmeImageINTEL: *hasResult = true; *hasResultType = true; break;
+    case OpTypeVmeImageINTEL: *hasResult = true; *hasResultType = false; break;
+    case OpTypeAvcImePayloadINTEL: *hasResult = true; *hasResultType = false; break;
+    case OpTypeAvcRefPayloadINTEL: *hasResult = true; *hasResultType = false; break;
+    case OpTypeAvcSicPayloadINTEL: *hasResult = true; *hasResultType = false; break;
+    case OpTypeAvcMcePayloadINTEL: *hasResult = true; *hasResultType = false; break;
+    case OpTypeAvcMceResultINTEL: *hasResult = true; *hasResultType = false; break;
+    case OpTypeAvcImeResultINTEL: *hasResult = true; *hasResultType = false; break;
+    case OpTypeAvcImeResultSingleReferenceStreamoutINTEL: *hasResult = true; *hasResultType = false; break;
+    case OpTypeAvcImeResultDualReferenceStreamoutINTEL: *hasResult = true; *hasResultType = false; break;
+    case OpTypeAvcImeSingleReferenceStreaminINTEL: *hasResult = true; *hasResultType = false; break;
+    case OpTypeAvcImeDualReferenceStreaminINTEL: *hasResult = true; *hasResultType = false; break;
+    case OpTypeAvcRefResultINTEL: *hasResult = true; *hasResultType = false; break;
+    case OpTypeAvcSicResultINTEL: *hasResult = true; *hasResultType = false; break;
+    case OpSubgroupAvcMceGetDefaultInterBaseMultiReferencePenaltyINTEL: *hasResult = true; *hasResultType = true; break;
+    case OpSubgroupAvcMceSetInterBaseMultiReferencePenaltyINTEL: *hasResult = true; *hasResultType = true; break;
+    case OpSubgroupAvcMceGetDefaultInterShapePenaltyINTEL: *hasResult = true; *hasResultType = true; break;
+    case OpSubgroupAvcMceSetInterShapePenaltyINTEL: *hasResult = true; *hasResultType = true; break;
+    case OpSubgroupAvcMceGetDefaultInterDirectionPenaltyINTEL: *hasResult = true; *hasResultType = true; break;
+    case OpSubgroupAvcMceSetInterDirectionPenaltyINTEL: *hasResult = true; *hasResultType = true; break;
+    case OpSubgroupAvcMceGetDefaultIntraLumaShapePenaltyINTEL: *hasResult = true; *hasResultType = true; break;
+    case OpSubgroupAvcMceGetDefaultInterMotionVectorCostTableINTEL: *hasResult = true; *hasResultType = true; break;
+    case OpSubgroupAvcMceGetDefaultHighPenaltyCostTableINTEL: *hasResult = true; *hasResultType = true; break;
+    case OpSubgroupAvcMceGetDefaultMediumPenaltyCostTableINTEL: *hasResult = true; *hasResultType = true; break;
+    case OpSubgroupAvcMceGetDefaultLowPenaltyCostTableINTEL: *hasResult = true; *hasResultType = true; break;
+    case OpSubgroupAvcMceSetMotionVectorCostFunctionINTEL: *hasResult = true; *hasResultType = true; break;
+    case OpSubgroupAvcMceGetDefaultIntraLumaModePenaltyINTEL: *hasResult = true; *hasResultType = true; break;
+    case OpSubgroupAvcMceGetDefaultNonDcLumaIntraPenaltyINTEL: *hasResult = true; *hasResultType = true; break;
+    case OpSubgroupAvcMceGetDefaultIntraChromaModeBasePenaltyINTEL: *hasResult = true; *hasResultType = true; break;
+    case OpSubgroupAvcMceSetAcOnlyHaarINTEL: *hasResult = true; *hasResultType = true; break;
+    case OpSubgroupAvcMceSetSourceInterlacedFieldPolarityINTEL: *hasResult = true; *hasResultType = true; break;
+    case OpSubgroupAvcMceSetSingleReferenceInterlacedFieldPolarityINTEL: *hasResult = true; *hasResultType = true; break;
+    case OpSubgroupAvcMceSetDualReferenceInterlacedFieldPolaritiesINTEL: *hasResult = true; *hasResultType = true; break;
+    case OpSubgroupAvcMceConvertToImePayloadINTEL: *hasResult = true; *hasResultType = true; break;
+    case OpSubgroupAvcMceConvertToImeResultINTEL: *hasResult = true; *hasResultType = true; break;
+    case OpSubgroupAvcMceConvertToRefPayloadINTEL: *hasResult = true; *hasResultType = true; break;
+    case OpSubgroupAvcMceConvertToRefResultINTEL: *hasResult = true; *hasResultType = true; break;
+    case OpSubgroupAvcMceConvertToSicPayloadINTEL: *hasResult = true; *hasResultType = true; break;
+    case OpSubgroupAvcMceConvertToSicResultINTEL: *hasResult = true; *hasResultType = true; break;
+    case OpSubgroupAvcMceGetMotionVectorsINTEL: *hasResult = true; *hasResultType = true; break;
+    case OpSubgroupAvcMceGetInterDistortionsINTEL: *hasResult = true; *hasResultType = true; break;
+    case OpSubgroupAvcMceGetBestInterDistortionsINTEL: *hasResult = true; *hasResultType = true; break;
+    case OpSubgroupAvcMceGetInterMajorShapeINTEL: *hasResult = true; *hasResultType = true; break;
+    case OpSubgroupAvcMceGetInterMinorShapeINTEL: *hasResult = true; *hasResultType = true; break;
+    case OpSubgroupAvcMceGetInterDirectionsINTEL: *hasResult = true; *hasResultType = true; break;
+    case OpSubgroupAvcMceGetInterMotionVectorCountINTEL: *hasResult = true; *hasResultType = true; break;
+    case OpSubgroupAvcMceGetInterReferenceIdsINTEL: *hasResult = true; *hasResultType = true; break;
+    case OpSubgroupAvcMceGetInterReferenceInterlacedFieldPolaritiesINTEL: *hasResult = true; *hasResultType = true; break;
+    case OpSubgroupAvcImeInitializeINTEL: *hasResult = true; *hasResultType = true; break;
+    case OpSubgroupAvcImeSetSingleReferenceINTEL: *hasResult = true; *hasResultType = true; break;
+    case OpSubgroupAvcImeSetDualReferenceINTEL: *hasResult = true; *hasResultType = true; break;
+    case OpSubgroupAvcImeRefWindowSizeINTEL: *hasResult = true; *hasResultType = true; break;
+    case OpSubgroupAvcImeAdjustRefOffsetINTEL: *hasResult = true; *hasResultType = true; break;
+    case OpSubgroupAvcImeConvertToMcePayloadINTEL: *hasResult = true; *hasResultType = true; break;
+    case OpSubgroupAvcImeSetMaxMotionVectorCountINTEL: *hasResult = true; *hasResultType = true; break;
+    case OpSubgroupAvcImeSetUnidirectionalMixDisableINTEL: *hasResult = true; *hasResultType = true; break;
+    case OpSubgroupAvcImeSetEarlySearchTerminationThresholdINTEL: *hasResult = true; *hasResultType = true; break;
+    case OpSubgroupAvcImeSetWeightedSadINTEL: *hasResult = true; *hasResultType = true; break;
+    case OpSubgroupAvcImeEvaluateWithSingleReferenceINTEL: *hasResult = true; *hasResultType = true; break;
+    case OpSubgroupAvcImeEvaluateWithDualReferenceINTEL: *hasResult = true; *hasResultType = true; break;
+    case OpSubgroupAvcImeEvaluateWithSingleReferenceStreaminINTEL: *hasResult = true; *hasResultType = true; break;
+    case OpSubgroupAvcImeEvaluateWithDualReferenceStreaminINTEL: *hasResult = true; *hasResultType = true; break;
+    case OpSubgroupAvcImeEvaluateWithSingleReferenceStreamoutINTEL: *hasResult = true; *hasResultType = true; break;
+    case OpSubgroupAvcImeEvaluateWithDualReferenceStreamoutINTEL: *hasResult = true; *hasResultType = true; break;
+    case OpSubgroupAvcImeEvaluateWithSingleReferenceStreaminoutINTEL: *hasResult = true; *hasResultType = true; break;
+    case OpSubgroupAvcImeEvaluateWithDualReferenceStreaminoutINTEL: *hasResult = true; *hasResultType = true; break;
+    case OpSubgroupAvcImeConvertToMceResultINTEL: *hasResult = true; *hasResultType = true; break;
+    case OpSubgroupAvcImeGetSingleReferenceStreaminINTEL: *hasResult = true; *hasResultType = true; break;
+    case OpSubgroupAvcImeGetDualReferenceStreaminINTEL: *hasResult = true; *hasResultType = true; break;
+    case OpSubgroupAvcImeStripSingleReferenceStreamoutINTEL: *hasResult = true; *hasResultType = true; break;
+    case OpSubgroupAvcImeStripDualReferenceStreamoutINTEL: *hasResult = true; *hasResultType = true; break;
+    case OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeMotionVectorsINTEL: *hasResult = true; *hasResultType = true; break;
+    case OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeDistortionsINTEL: *hasResult = true; *hasResultType = true; break;
+    case OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeReferenceIdsINTEL: *hasResult = true; *hasResultType = true; break;
+    case OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeMotionVectorsINTEL: *hasResult = true; *hasResultType = true; break;
+    case OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeDistortionsINTEL: *hasResult = true; *hasResultType = true; break;
+    case OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeReferenceIdsINTEL: *hasResult = true; *hasResultType = true; break;
+    case OpSubgroupAvcImeGetBorderReachedINTEL: *hasResult = true; *hasResultType = true; break;
+    case OpSubgroupAvcImeGetTruncatedSearchIndicationINTEL: *hasResult = true; *hasResultType = true; break;
+    case OpSubgroupAvcImeGetUnidirectionalEarlySearchTerminationINTEL: *hasResult = true; *hasResultType = true; break;
+    case OpSubgroupAvcImeGetWeightingPatternMinimumMotionVectorINTEL: *hasResult = true; *hasResultType = true; break;
+    case OpSubgroupAvcImeGetWeightingPatternMinimumDistortionINTEL: *hasResult = true; *hasResultType = true; break;
+    case OpSubgroupAvcFmeInitializeINTEL: *hasResult = true; *hasResultType = true; break;
+    case OpSubgroupAvcBmeInitializeINTEL: *hasResult = true; *hasResultType = true; break;
+    case OpSubgroupAvcRefConvertToMcePayloadINTEL: *hasResult = true; *hasResultType = true; break;
+    case OpSubgroupAvcRefSetBidirectionalMixDisableINTEL: *hasResult = true; *hasResultType = true; break;
+    case OpSubgroupAvcRefSetBilinearFilterEnableINTEL: *hasResult = true; *hasResultType = true; break;
+    case OpSubgroupAvcRefEvaluateWithSingleReferenceINTEL: *hasResult = true; *hasResultType = true; break;
+    case OpSubgroupAvcRefEvaluateWithDualReferenceINTEL: *hasResult = true; *hasResultType = true; break;
+    case OpSubgroupAvcRefEvaluateWithMultiReferenceINTEL: *hasResult = true; *hasResultType = true; break;
+    case OpSubgroupAvcRefEvaluateWithMultiReferenceInterlacedINTEL: *hasResult = true; *hasResultType = true; break;
+    case OpSubgroupAvcRefConvertToMceResultINTEL: *hasResult = true; *hasResultType = true; break;
+    case OpSubgroupAvcSicInitializeINTEL: *hasResult = true; *hasResultType = true; break;
+    case OpSubgroupAvcSicConfigureSkcINTEL: *hasResult = true; *hasResultType = true; break;
+    case OpSubgroupAvcSicConfigureIpeLumaINTEL: *hasResult = true; *hasResultType = true; break;
+    case OpSubgroupAvcSicConfigureIpeLumaChromaINTEL: *hasResult = true; *hasResultType = true; break;
+    case OpSubgroupAvcSicGetMotionVectorMaskINTEL: *hasResult = true; *hasResultType = true; break;
+    case OpSubgroupAvcSicConvertToMcePayloadINTEL: *hasResult = true; *hasResultType = true; break;
+    case OpSubgroupAvcSicSetIntraLumaShapePenaltyINTEL: *hasResult = true; *hasResultType = true; break;
+    case OpSubgroupAvcSicSetIntraLumaModeCostFunctionINTEL: *hasResult = true; *hasResultType = true; break;
+    case OpSubgroupAvcSicSetIntraChromaModeCostFunctionINTEL: *hasResult = true; *hasResultType = true; break;
+    case OpSubgroupAvcSicSetBilinearFilterEnableINTEL: *hasResult = true; *hasResultType = true; break;
+    case OpSubgroupAvcSicSetSkcForwardTransformEnableINTEL: *hasResult = true; *hasResultType = true; break;
+    case OpSubgroupAvcSicSetBlockBasedRawSkipSadINTEL: *hasResult = true; *hasResultType = true; break;
+    case OpSubgroupAvcSicEvaluateIpeINTEL: *hasResult = true; *hasResultType = true; break;
+    case OpSubgroupAvcSicEvaluateWithSingleReferenceINTEL: *hasResult = true; *hasResultType = true; break;
+    case OpSubgroupAvcSicEvaluateWithDualReferenceINTEL: *hasResult = true; *hasResultType = true; break;
+    case OpSubgroupAvcSicEvaluateWithMultiReferenceINTEL: *hasResult = true; *hasResultType = true; break;
+    case OpSubgroupAvcSicEvaluateWithMultiReferenceInterlacedINTEL: *hasResult = true; *hasResultType = true; break;
+    case OpSubgroupAvcSicConvertToMceResultINTEL: *hasResult = true; *hasResultType = true; break;
+    case OpSubgroupAvcSicGetIpeLumaShapeINTEL: *hasResult = true; *hasResultType = true; break;
+    case OpSubgroupAvcSicGetBestIpeLumaDistortionINTEL: *hasResult = true; *hasResultType = true; break;
+    case OpSubgroupAvcSicGetBestIpeChromaDistortionINTEL: *hasResult = true; *hasResultType = true; break;
+    case OpSubgroupAvcSicGetPackedIpeLumaModesINTEL: *hasResult = true; *hasResultType = true; break;
+    case OpSubgroupAvcSicGetIpeChromaModeINTEL: *hasResult = true; *hasResultType = true; break;
+    case OpSubgroupAvcSicGetPackedSkcLumaCountThresholdINTEL: *hasResult = true; *hasResultType = true; break;
+    case OpSubgroupAvcSicGetPackedSkcLumaSumThresholdINTEL: *hasResult = true; *hasResultType = true; break;
+    case OpSubgroupAvcSicGetInterRawSadsINTEL: *hasResult = true; *hasResultType = true; break;
+    case OpLoopControlINTEL: *hasResult = false; *hasResultType = false; break;
+    case OpReadPipeBlockingINTEL: *hasResult = true; *hasResultType = true; break;
+    case OpWritePipeBlockingINTEL: *hasResult = true; *hasResultType = true; break;
+    case OpFPGARegINTEL: *hasResult = true; *hasResultType = true; break;
+    case OpRayQueryGetRayTMinKHR: *hasResult = true; *hasResultType = true; break;
+    case OpRayQueryGetRayFlagsKHR: *hasResult = true; *hasResultType = true; break;
+    case OpRayQueryGetIntersectionTKHR: *hasResult = true; *hasResultType = true; break;
+    case OpRayQueryGetIntersectionInstanceCustomIndexKHR: *hasResult = true; *hasResultType = true; break;
+    case OpRayQueryGetIntersectionInstanceIdKHR: *hasResult = true; *hasResultType = true; break;
+    case OpRayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR: *hasResult = true; *hasResultType = true; break;
+    case OpRayQueryGetIntersectionGeometryIndexKHR: *hasResult = true; *hasResultType = true; break;
+    case OpRayQueryGetIntersectionPrimitiveIndexKHR: *hasResult = true; *hasResultType = true; break;
+    case OpRayQueryGetIntersectionBarycentricsKHR: *hasResult = true; *hasResultType = true; break;
+    case OpRayQueryGetIntersectionFrontFaceKHR: *hasResult = true; *hasResultType = true; break;
+    case OpRayQueryGetIntersectionCandidateAABBOpaqueKHR: *hasResult = true; *hasResultType = true; break;
+    case OpRayQueryGetIntersectionObjectRayDirectionKHR: *hasResult = true; *hasResultType = true; break;
+    case OpRayQueryGetIntersectionObjectRayOriginKHR: *hasResult = true; *hasResultType = true; break;
+    case OpRayQueryGetWorldRayDirectionKHR: *hasResult = true; *hasResultType = true; break;
+    case OpRayQueryGetWorldRayOriginKHR: *hasResult = true; *hasResultType = true; break;
+    case OpRayQueryGetIntersectionObjectToWorldKHR: *hasResult = true; *hasResultType = true; break;
+    case OpRayQueryGetIntersectionWorldToObjectKHR: *hasResult = true; *hasResultType = true; break;
+    case OpAtomicFAddEXT: *hasResult = true; *hasResultType = true; break;
+    }
+}
+#endif /* SPV_ENABLE_UTILITY_CODE */
+
+// Overload operator| for mask bit combining
+
+inline ImageOperandsMask operator|(ImageOperandsMask a, ImageOperandsMask b) { return ImageOperandsMask(unsigned(a) | unsigned(b)); }
+inline FPFastMathModeMask operator|(FPFastMathModeMask a, FPFastMathModeMask b) { return FPFastMathModeMask(unsigned(a) | unsigned(b)); }
+inline SelectionControlMask operator|(SelectionControlMask a, SelectionControlMask b) { return SelectionControlMask(unsigned(a) | unsigned(b)); }
+inline LoopControlMask operator|(LoopControlMask a, LoopControlMask b) { return LoopControlMask(unsigned(a) | unsigned(b)); }
+inline FunctionControlMask operator|(FunctionControlMask a, FunctionControlMask b) { return FunctionControlMask(unsigned(a) | unsigned(b)); }
+inline MemorySemanticsMask operator|(MemorySemanticsMask a, MemorySemanticsMask b) { return MemorySemanticsMask(unsigned(a) | unsigned(b)); }
+inline MemoryAccessMask operator|(MemoryAccessMask a, MemoryAccessMask b) { return MemoryAccessMask(unsigned(a) | unsigned(b)); }
+inline KernelProfilingInfoMask operator|(KernelProfilingInfoMask a, KernelProfilingInfoMask b) { return KernelProfilingInfoMask(unsigned(a) | unsigned(b)); }
+inline RayFlagsMask operator|(RayFlagsMask a, RayFlagsMask b) { return RayFlagsMask(unsigned(a) | unsigned(b)); }
+inline FragmentShadingRateMask operator|(FragmentShadingRateMask a, FragmentShadingRateMask b) { return FragmentShadingRateMask(unsigned(a) | unsigned(b)); }
+
+}  // end namespace spv
+
+#endif  // #ifndef spirv_HPP
+
diff --git a/libs/spirv-headers/spirv/unified1/spirv.hpp11 b/libs/spirv-headers/spirv/unified1/spirv.hpp11
new file mode 100644
index 00000000000..1e7d12e1629
--- /dev/null
+++ b/libs/spirv-headers/spirv/unified1/spirv.hpp11
@@ -0,0 +1,2196 @@
+// Copyright (c) 2014-2020 The Khronos Group Inc.
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and/or associated documentation files (the "Materials"),
+// to deal in the Materials without restriction, including without limitation
+// the rights to use, copy, modify, merge, publish, distribute, sublicense,
+// and/or sell copies of the Materials, and to permit persons to whom the
+// Materials are furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Materials.
+// 
+// MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS KHRONOS
+// STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS SPECIFICATIONS AND
+// HEADER INFORMATION ARE LOCATED AT https://www.khronos.org/registry/ 
+// 
+// THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM,OUT OF OR IN CONNECTION WITH THE MATERIALS OR THE USE OR OTHER DEALINGS
+// IN THE MATERIALS.
+
+// This header is automatically generated by the same tool that creates
+// the Binary Section of the SPIR-V specification.
+
+// Enumeration tokens for SPIR-V, in various styles:
+//   C, C++, C++11, JSON, Lua, Python, C#, D
+// 
+// - C will have tokens with a "Spv" prefix, e.g.: SpvSourceLanguageGLSL
+// - C++ will have tokens in the "spv" name space, e.g.: spv::SourceLanguageGLSL
+// - C++11 will use enum classes in the spv namespace, e.g.: spv::SourceLanguage::GLSL
+// - Lua will use tables, e.g.: spv.SourceLanguage.GLSL
+// - Python will use dictionaries, e.g.: spv['SourceLanguage']['GLSL']
+// - C# will use enum classes in the Specification class located in the "Spv" namespace,
+//     e.g.: Spv.Specification.SourceLanguage.GLSL
+// - D will have tokens under the "spv" module, e.g: spv.SourceLanguage.GLSL
+// 
+// Some tokens act like mask values, which can be OR'd together,
+// while others are mutually exclusive.  The mask-like ones have
+// "Mask" in their name, and a parallel enum that has the shift
+// amount (1 << x) for each corresponding enumerant.
+
+#ifndef spirv_HPP
+#define spirv_HPP
+
+namespace spv {
+
+typedef unsigned int Id;
+
+#define SPV_VERSION 0x10500
+#define SPV_REVISION 4
+
+static const unsigned int MagicNumber = 0x07230203;
+static const unsigned int Version = 0x00010500;
+static const unsigned int Revision = 4;
+static const unsigned int OpCodeMask = 0xffff;
+static const unsigned int WordCountShift = 16;
+
+enum class SourceLanguage : unsigned {
+    Unknown = 0,
+    ESSL = 1,
+    GLSL = 2,
+    OpenCL_C = 3,
+    OpenCL_CPP = 4,
+    HLSL = 5,
+    Max = 0x7fffffff,
+};
+
+enum class ExecutionModel : unsigned {
+    Vertex = 0,
+    TessellationControl = 1,
+    TessellationEvaluation = 2,
+    Geometry = 3,
+    Fragment = 4,
+    GLCompute = 5,
+    Kernel = 6,
+    TaskNV = 5267,
+    MeshNV = 5268,
+    RayGenerationKHR = 5313,
+    RayGenerationNV = 5313,
+    IntersectionKHR = 5314,
+    IntersectionNV = 5314,
+    AnyHitKHR = 5315,
+    AnyHitNV = 5315,
+    ClosestHitKHR = 5316,
+    ClosestHitNV = 5316,
+    MissKHR = 5317,
+    MissNV = 5317,
+    CallableKHR = 5318,
+    CallableNV = 5318,
+    Max = 0x7fffffff,
+};
+
+enum class AddressingModel : unsigned {
+    Logical = 0,
+    Physical32 = 1,
+    Physical64 = 2,
+    PhysicalStorageBuffer64 = 5348,
+    PhysicalStorageBuffer64EXT = 5348,
+    Max = 0x7fffffff,
+};
+
+enum class MemoryModel : unsigned {
+    Simple = 0,
+    GLSL450 = 1,
+    OpenCL = 2,
+    Vulkan = 3,
+    VulkanKHR = 3,
+    Max = 0x7fffffff,
+};
+
+enum class ExecutionMode : unsigned {
+    Invocations = 0,
+    SpacingEqual = 1,
+    SpacingFractionalEven = 2,
+    SpacingFractionalOdd = 3,
+    VertexOrderCw = 4,
+    VertexOrderCcw = 5,
+    PixelCenterInteger = 6,
+    OriginUpperLeft = 7,
+    OriginLowerLeft = 8,
+    EarlyFragmentTests = 9,
+    PointMode = 10,
+    Xfb = 11,
+    DepthReplacing = 12,
+    DepthGreater = 14,
+    DepthLess = 15,
+    DepthUnchanged = 16,
+    LocalSize = 17,
+    LocalSizeHint = 18,
+    InputPoints = 19,
+    InputLines = 20,
+    InputLinesAdjacency = 21,
+    Triangles = 22,
+    InputTrianglesAdjacency = 23,
+    Quads = 24,
+    Isolines = 25,
+    OutputVertices = 26,
+    OutputPoints = 27,
+    OutputLineStrip = 28,
+    OutputTriangleStrip = 29,
+    VecTypeHint = 30,
+    ContractionOff = 31,
+    Initializer = 33,
+    Finalizer = 34,
+    SubgroupSize = 35,
+    SubgroupsPerWorkgroup = 36,
+    SubgroupsPerWorkgroupId = 37,
+    LocalSizeId = 38,
+    LocalSizeHintId = 39,
+    PostDepthCoverage = 4446,
+    DenormPreserve = 4459,
+    DenormFlushToZero = 4460,
+    SignedZeroInfNanPreserve = 4461,
+    RoundingModeRTE = 4462,
+    RoundingModeRTZ = 4463,
+    StencilRefReplacingEXT = 5027,
+    OutputLinesNV = 5269,
+    OutputPrimitivesNV = 5270,
+    DerivativeGroupQuadsNV = 5289,
+    DerivativeGroupLinearNV = 5290,
+    OutputTrianglesNV = 5298,
+    PixelInterlockOrderedEXT = 5366,
+    PixelInterlockUnorderedEXT = 5367,
+    SampleInterlockOrderedEXT = 5368,
+    SampleInterlockUnorderedEXT = 5369,
+    ShadingRateInterlockOrderedEXT = 5370,
+    ShadingRateInterlockUnorderedEXT = 5371,
+    MaxWorkgroupSizeINTEL = 5893,
+    MaxWorkDimINTEL = 5894,
+    NoGlobalOffsetINTEL = 5895,
+    NumSIMDWorkitemsINTEL = 5896,
+    Max = 0x7fffffff,
+};
+
+enum class StorageClass : unsigned {
+    UniformConstant = 0,
+    Input = 1,
+    Uniform = 2,
+    Output = 3,
+    Workgroup = 4,
+    CrossWorkgroup = 5,
+    Private = 6,
+    Function = 7,
+    Generic = 8,
+    PushConstant = 9,
+    AtomicCounter = 10,
+    Image = 11,
+    StorageBuffer = 12,
+    CallableDataKHR = 5328,
+    CallableDataNV = 5328,
+    IncomingCallableDataKHR = 5329,
+    IncomingCallableDataNV = 5329,
+    RayPayloadKHR = 5338,
+    RayPayloadNV = 5338,
+    HitAttributeKHR = 5339,
+    HitAttributeNV = 5339,
+    IncomingRayPayloadKHR = 5342,
+    IncomingRayPayloadNV = 5342,
+    ShaderRecordBufferKHR = 5343,
+    ShaderRecordBufferNV = 5343,
+    PhysicalStorageBuffer = 5349,
+    PhysicalStorageBufferEXT = 5349,
+    CodeSectionINTEL = 5605,
+    Max = 0x7fffffff,
+};
+
+enum class Dim : unsigned {
+    Dim1D = 0,
+    Dim2D = 1,
+    Dim3D = 2,
+    Cube = 3,
+    Rect = 4,
+    Buffer = 5,
+    SubpassData = 6,
+    Max = 0x7fffffff,
+};
+
+enum class SamplerAddressingMode : unsigned {
+    None = 0,
+    ClampToEdge = 1,
+    Clamp = 2,
+    Repeat = 3,
+    RepeatMirrored = 4,
+    Max = 0x7fffffff,
+};
+
+enum class SamplerFilterMode : unsigned {
+    Nearest = 0,
+    Linear = 1,
+    Max = 0x7fffffff,
+};
+
+enum class ImageFormat : unsigned {
+    Unknown = 0,
+    Rgba32f = 1,
+    Rgba16f = 2,
+    R32f = 3,
+    Rgba8 = 4,
+    Rgba8Snorm = 5,
+    Rg32f = 6,
+    Rg16f = 7,
+    R11fG11fB10f = 8,
+    R16f = 9,
+    Rgba16 = 10,
+    Rgb10A2 = 11,
+    Rg16 = 12,
+    Rg8 = 13,
+    R16 = 14,
+    R8 = 15,
+    Rgba16Snorm = 16,
+    Rg16Snorm = 17,
+    Rg8Snorm = 18,
+    R16Snorm = 19,
+    R8Snorm = 20,
+    Rgba32i = 21,
+    Rgba16i = 22,
+    Rgba8i = 23,
+    R32i = 24,
+    Rg32i = 25,
+    Rg16i = 26,
+    Rg8i = 27,
+    R16i = 28,
+    R8i = 29,
+    Rgba32ui = 30,
+    Rgba16ui = 31,
+    Rgba8ui = 32,
+    R32ui = 33,
+    Rgb10a2ui = 34,
+    Rg32ui = 35,
+    Rg16ui = 36,
+    Rg8ui = 37,
+    R16ui = 38,
+    R8ui = 39,
+    R64ui = 40,
+    R64i = 41,
+    Max = 0x7fffffff,
+};
+
+enum class ImageChannelOrder : unsigned {
+    R = 0,
+    A = 1,
+    RG = 2,
+    RA = 3,
+    RGB = 4,
+    RGBA = 5,
+    BGRA = 6,
+    ARGB = 7,
+    Intensity = 8,
+    Luminance = 9,
+    Rx = 10,
+    RGx = 11,
+    RGBx = 12,
+    Depth = 13,
+    DepthStencil = 14,
+    sRGB = 15,
+    sRGBx = 16,
+    sRGBA = 17,
+    sBGRA = 18,
+    ABGR = 19,
+    Max = 0x7fffffff,
+};
+
+enum class ImageChannelDataType : unsigned {
+    SnormInt8 = 0,
+    SnormInt16 = 1,
+    UnormInt8 = 2,
+    UnormInt16 = 3,
+    UnormShort565 = 4,
+    UnormShort555 = 5,
+    UnormInt101010 = 6,
+    SignedInt8 = 7,
+    SignedInt16 = 8,
+    SignedInt32 = 9,
+    UnsignedInt8 = 10,
+    UnsignedInt16 = 11,
+    UnsignedInt32 = 12,
+    HalfFloat = 13,
+    Float = 14,
+    UnormInt24 = 15,
+    UnormInt101010_2 = 16,
+    Max = 0x7fffffff,
+};
+
+enum class ImageOperandsShift : unsigned {
+    Bias = 0,
+    Lod = 1,
+    Grad = 2,
+    ConstOffset = 3,
+    Offset = 4,
+    ConstOffsets = 5,
+    Sample = 6,
+    MinLod = 7,
+    MakeTexelAvailable = 8,
+    MakeTexelAvailableKHR = 8,
+    MakeTexelVisible = 9,
+    MakeTexelVisibleKHR = 9,
+    NonPrivateTexel = 10,
+    NonPrivateTexelKHR = 10,
+    VolatileTexel = 11,
+    VolatileTexelKHR = 11,
+    SignExtend = 12,
+    ZeroExtend = 13,
+    Max = 0x7fffffff,
+};
+
+enum class ImageOperandsMask : unsigned {
+    MaskNone = 0,
+    Bias = 0x00000001,
+    Lod = 0x00000002,
+    Grad = 0x00000004,
+    ConstOffset = 0x00000008,
+    Offset = 0x00000010,
+    ConstOffsets = 0x00000020,
+    Sample = 0x00000040,
+    MinLod = 0x00000080,
+    MakeTexelAvailable = 0x00000100,
+    MakeTexelAvailableKHR = 0x00000100,
+    MakeTexelVisible = 0x00000200,
+    MakeTexelVisibleKHR = 0x00000200,
+    NonPrivateTexel = 0x00000400,
+    NonPrivateTexelKHR = 0x00000400,
+    VolatileTexel = 0x00000800,
+    VolatileTexelKHR = 0x00000800,
+    SignExtend = 0x00001000,
+    ZeroExtend = 0x00002000,
+};
+
+enum class FPFastMathModeShift : unsigned {
+    NotNaN = 0,
+    NotInf = 1,
+    NSZ = 2,
+    AllowRecip = 3,
+    Fast = 4,
+    Max = 0x7fffffff,
+};
+
+enum class FPFastMathModeMask : unsigned {
+    MaskNone = 0,
+    NotNaN = 0x00000001,
+    NotInf = 0x00000002,
+    NSZ = 0x00000004,
+    AllowRecip = 0x00000008,
+    Fast = 0x00000010,
+};
+
+enum class FPRoundingMode : unsigned {
+    RTE = 0,
+    RTZ = 1,
+    RTP = 2,
+    RTN = 3,
+    Max = 0x7fffffff,
+};
+
+enum class LinkageType : unsigned {
+    Export = 0,
+    Import = 1,
+    Max = 0x7fffffff,
+};
+
+enum class AccessQualifier : unsigned {
+    ReadOnly = 0,
+    WriteOnly = 1,
+    ReadWrite = 2,
+    Max = 0x7fffffff,
+};
+
+enum class FunctionParameterAttribute : unsigned {
+    Zext = 0,
+    Sext = 1,
+    ByVal = 2,
+    Sret = 3,
+    NoAlias = 4,
+    NoCapture = 5,
+    NoWrite = 6,
+    NoReadWrite = 7,
+    Max = 0x7fffffff,
+};
+
+enum class Decoration : unsigned {
+    RelaxedPrecision = 0,
+    SpecId = 1,
+    Block = 2,
+    BufferBlock = 3,
+    RowMajor = 4,
+    ColMajor = 5,
+    ArrayStride = 6,
+    MatrixStride = 7,
+    GLSLShared = 8,
+    GLSLPacked = 9,
+    CPacked = 10,
+    BuiltIn = 11,
+    NoPerspective = 13,
+    Flat = 14,
+    Patch = 15,
+    Centroid = 16,
+    Sample = 17,
+    Invariant = 18,
+    Restrict = 19,
+    Aliased = 20,
+    Volatile = 21,
+    Constant = 22,
+    Coherent = 23,
+    NonWritable = 24,
+    NonReadable = 25,
+    Uniform = 26,
+    UniformId = 27,
+    SaturatedConversion = 28,
+    Stream = 29,
+    Location = 30,
+    Component = 31,
+    Index = 32,
+    Binding = 33,
+    DescriptorSet = 34,
+    Offset = 35,
+    XfbBuffer = 36,
+    XfbStride = 37,
+    FuncParamAttr = 38,
+    FPRoundingMode = 39,
+    FPFastMathMode = 40,
+    LinkageAttributes = 41,
+    NoContraction = 42,
+    InputAttachmentIndex = 43,
+    Alignment = 44,
+    MaxByteOffset = 45,
+    AlignmentId = 46,
+    MaxByteOffsetId = 47,
+    NoSignedWrap = 4469,
+    NoUnsignedWrap = 4470,
+    ExplicitInterpAMD = 4999,
+    OverrideCoverageNV = 5248,
+    PassthroughNV = 5250,
+    ViewportRelativeNV = 5252,
+    SecondaryViewportRelativeNV = 5256,
+    PerPrimitiveNV = 5271,
+    PerViewNV = 5272,
+    PerTaskNV = 5273,
+    PerVertexNV = 5285,
+    NonUniform = 5300,
+    NonUniformEXT = 5300,
+    RestrictPointer = 5355,
+    RestrictPointerEXT = 5355,
+    AliasedPointer = 5356,
+    AliasedPointerEXT = 5356,
+    ReferencedIndirectlyINTEL = 5602,
+    CounterBuffer = 5634,
+    HlslCounterBufferGOOGLE = 5634,
+    HlslSemanticGOOGLE = 5635,
+    UserSemantic = 5635,
+    UserTypeGOOGLE = 5636,
+    RegisterINTEL = 5825,
+    MemoryINTEL = 5826,
+    NumbanksINTEL = 5827,
+    BankwidthINTEL = 5828,
+    MaxPrivateCopiesINTEL = 5829,
+    SinglepumpINTEL = 5830,
+    DoublepumpINTEL = 5831,
+    MaxReplicatesINTEL = 5832,
+    SimpleDualPortINTEL = 5833,
+    MergeINTEL = 5834,
+    BankBitsINTEL = 5835,
+    ForcePow2DepthINTEL = 5836,
+    Max = 0x7fffffff,
+};
+
+enum class BuiltIn : unsigned {
+    Position = 0,
+    PointSize = 1,
+    ClipDistance = 3,
+    CullDistance = 4,
+    VertexId = 5,
+    InstanceId = 6,
+    PrimitiveId = 7,
+    InvocationId = 8,
+    Layer = 9,
+    ViewportIndex = 10,
+    TessLevelOuter = 11,
+    TessLevelInner = 12,
+    TessCoord = 13,
+    PatchVertices = 14,
+    FragCoord = 15,
+    PointCoord = 16,
+    FrontFacing = 17,
+    SampleId = 18,
+    SamplePosition = 19,
+    SampleMask = 20,
+    FragDepth = 22,
+    HelperInvocation = 23,
+    NumWorkgroups = 24,
+    WorkgroupSize = 25,
+    WorkgroupId = 26,
+    LocalInvocationId = 27,
+    GlobalInvocationId = 28,
+    LocalInvocationIndex = 29,
+    WorkDim = 30,
+    GlobalSize = 31,
+    EnqueuedWorkgroupSize = 32,
+    GlobalOffset = 33,
+    GlobalLinearId = 34,
+    SubgroupSize = 36,
+    SubgroupMaxSize = 37,
+    NumSubgroups = 38,
+    NumEnqueuedSubgroups = 39,
+    SubgroupId = 40,
+    SubgroupLocalInvocationId = 41,
+    VertexIndex = 42,
+    InstanceIndex = 43,
+    SubgroupEqMask = 4416,
+    SubgroupEqMaskKHR = 4416,
+    SubgroupGeMask = 4417,
+    SubgroupGeMaskKHR = 4417,
+    SubgroupGtMask = 4418,
+    SubgroupGtMaskKHR = 4418,
+    SubgroupLeMask = 4419,
+    SubgroupLeMaskKHR = 4419,
+    SubgroupLtMask = 4420,
+    SubgroupLtMaskKHR = 4420,
+    BaseVertex = 4424,
+    BaseInstance = 4425,
+    DrawIndex = 4426,
+    PrimitiveShadingRateKHR = 4432,
+    DeviceIndex = 4438,
+    ViewIndex = 4440,
+    ShadingRateKHR = 4444,
+    BaryCoordNoPerspAMD = 4992,
+    BaryCoordNoPerspCentroidAMD = 4993,
+    BaryCoordNoPerspSampleAMD = 4994,
+    BaryCoordSmoothAMD = 4995,
+    BaryCoordSmoothCentroidAMD = 4996,
+    BaryCoordSmoothSampleAMD = 4997,
+    BaryCoordPullModelAMD = 4998,
+    FragStencilRefEXT = 5014,
+    ViewportMaskNV = 5253,
+    SecondaryPositionNV = 5257,
+    SecondaryViewportMaskNV = 5258,
+    PositionPerViewNV = 5261,
+    ViewportMaskPerViewNV = 5262,
+    FullyCoveredEXT = 5264,
+    TaskCountNV = 5274,
+    PrimitiveCountNV = 5275,
+    PrimitiveIndicesNV = 5276,
+    ClipDistancePerViewNV = 5277,
+    CullDistancePerViewNV = 5278,
+    LayerPerViewNV = 5279,
+    MeshViewCountNV = 5280,
+    MeshViewIndicesNV = 5281,
+    BaryCoordNV = 5286,
+    BaryCoordNoPerspNV = 5287,
+    FragSizeEXT = 5292,
+    FragmentSizeNV = 5292,
+    FragInvocationCountEXT = 5293,
+    InvocationsPerPixelNV = 5293,
+    LaunchIdKHR = 5319,
+    LaunchIdNV = 5319,
+    LaunchSizeKHR = 5320,
+    LaunchSizeNV = 5320,
+    WorldRayOriginKHR = 5321,
+    WorldRayOriginNV = 5321,
+    WorldRayDirectionKHR = 5322,
+    WorldRayDirectionNV = 5322,
+    ObjectRayOriginKHR = 5323,
+    ObjectRayOriginNV = 5323,
+    ObjectRayDirectionKHR = 5324,
+    ObjectRayDirectionNV = 5324,
+    RayTminKHR = 5325,
+    RayTminNV = 5325,
+    RayTmaxKHR = 5326,
+    RayTmaxNV = 5326,
+    InstanceCustomIndexKHR = 5327,
+    InstanceCustomIndexNV = 5327,
+    ObjectToWorldKHR = 5330,
+    ObjectToWorldNV = 5330,
+    WorldToObjectKHR = 5331,
+    WorldToObjectNV = 5331,
+    HitTKHR = 5332,
+    HitTNV = 5332,
+    HitKindKHR = 5333,
+    HitKindNV = 5333,
+    IncomingRayFlagsKHR = 5351,
+    IncomingRayFlagsNV = 5351,
+    RayGeometryIndexKHR = 5352,
+    WarpsPerSMNV = 5374,
+    SMCountNV = 5375,
+    WarpIDNV = 5376,
+    SMIDNV = 5377,
+    Max = 0x7fffffff,
+};
+
+enum class SelectionControlShift : unsigned {
+    Flatten = 0,
+    DontFlatten = 1,
+    Max = 0x7fffffff,
+};
+
+enum class SelectionControlMask : unsigned {
+    MaskNone = 0,
+    Flatten = 0x00000001,
+    DontFlatten = 0x00000002,
+};
+
+enum class LoopControlShift : unsigned {
+    Unroll = 0,
+    DontUnroll = 1,
+    DependencyInfinite = 2,
+    DependencyLength = 3,
+    MinIterations = 4,
+    MaxIterations = 5,
+    IterationMultiple = 6,
+    PeelCount = 7,
+    PartialCount = 8,
+    InitiationIntervalINTEL = 16,
+    MaxConcurrencyINTEL = 17,
+    DependencyArrayINTEL = 18,
+    PipelineEnableINTEL = 19,
+    LoopCoalesceINTEL = 20,
+    MaxInterleavingINTEL = 21,
+    SpeculatedIterationsINTEL = 22,
+    Max = 0x7fffffff,
+};
+
+enum class LoopControlMask : unsigned {
+    MaskNone = 0,
+    Unroll = 0x00000001,
+    DontUnroll = 0x00000002,
+    DependencyInfinite = 0x00000004,
+    DependencyLength = 0x00000008,
+    MinIterations = 0x00000010,
+    MaxIterations = 0x00000020,
+    IterationMultiple = 0x00000040,
+    PeelCount = 0x00000080,
+    PartialCount = 0x00000100,
+    InitiationIntervalINTEL = 0x00010000,
+    MaxConcurrencyINTEL = 0x00020000,
+    DependencyArrayINTEL = 0x00040000,
+    PipelineEnableINTEL = 0x00080000,
+    LoopCoalesceINTEL = 0x00100000,
+    MaxInterleavingINTEL = 0x00200000,
+    SpeculatedIterationsINTEL = 0x00400000,
+};
+
+enum class FunctionControlShift : unsigned {
+    Inline = 0,
+    DontInline = 1,
+    Pure = 2,
+    Const = 3,
+    Max = 0x7fffffff,
+};
+
+enum class FunctionControlMask : unsigned {
+    MaskNone = 0,
+    Inline = 0x00000001,
+    DontInline = 0x00000002,
+    Pure = 0x00000004,
+    Const = 0x00000008,
+};
+
+enum class MemorySemanticsShift : unsigned {
+    Acquire = 1,
+    Release = 2,
+    AcquireRelease = 3,
+    SequentiallyConsistent = 4,
+    UniformMemory = 6,
+    SubgroupMemory = 7,
+    WorkgroupMemory = 8,
+    CrossWorkgroupMemory = 9,
+    AtomicCounterMemory = 10,
+    ImageMemory = 11,
+    OutputMemory = 12,
+    OutputMemoryKHR = 12,
+    MakeAvailable = 13,
+    MakeAvailableKHR = 13,
+    MakeVisible = 14,
+    MakeVisibleKHR = 14,
+    Volatile = 15,
+    Max = 0x7fffffff,
+};
+
+enum class MemorySemanticsMask : unsigned {
+    MaskNone = 0,
+    Acquire = 0x00000002,
+    Release = 0x00000004,
+    AcquireRelease = 0x00000008,
+    SequentiallyConsistent = 0x00000010,
+    UniformMemory = 0x00000040,
+    SubgroupMemory = 0x00000080,
+    WorkgroupMemory = 0x00000100,
+    CrossWorkgroupMemory = 0x00000200,
+    AtomicCounterMemory = 0x00000400,
+    ImageMemory = 0x00000800,
+    OutputMemory = 0x00001000,
+    OutputMemoryKHR = 0x00001000,
+    MakeAvailable = 0x00002000,
+    MakeAvailableKHR = 0x00002000,
+    MakeVisible = 0x00004000,
+    MakeVisibleKHR = 0x00004000,
+    Volatile = 0x00008000,
+};
+
+enum class MemoryAccessShift : unsigned {
+    Volatile = 0,
+    Aligned = 1,
+    Nontemporal = 2,
+    MakePointerAvailable = 3,
+    MakePointerAvailableKHR = 3,
+    MakePointerVisible = 4,
+    MakePointerVisibleKHR = 4,
+    NonPrivatePointer = 5,
+    NonPrivatePointerKHR = 5,
+    Max = 0x7fffffff,
+};
+
+enum class MemoryAccessMask : unsigned {
+    MaskNone = 0,
+    Volatile = 0x00000001,
+    Aligned = 0x00000002,
+    Nontemporal = 0x00000004,
+    MakePointerAvailable = 0x00000008,
+    MakePointerAvailableKHR = 0x00000008,
+    MakePointerVisible = 0x00000010,
+    MakePointerVisibleKHR = 0x00000010,
+    NonPrivatePointer = 0x00000020,
+    NonPrivatePointerKHR = 0x00000020,
+};
+
+enum class Scope : unsigned {
+    CrossDevice = 0,
+    Device = 1,
+    Workgroup = 2,
+    Subgroup = 3,
+    Invocation = 4,
+    QueueFamily = 5,
+    QueueFamilyKHR = 5,
+    ShaderCallKHR = 6,
+    Max = 0x7fffffff,
+};
+
+enum class GroupOperation : unsigned {
+    Reduce = 0,
+    InclusiveScan = 1,
+    ExclusiveScan = 2,
+    ClusteredReduce = 3,
+    PartitionedReduceNV = 6,
+    PartitionedInclusiveScanNV = 7,
+    PartitionedExclusiveScanNV = 8,
+    Max = 0x7fffffff,
+};
+
+enum class KernelEnqueueFlags : unsigned {
+    NoWait = 0,
+    WaitKernel = 1,
+    WaitWorkGroup = 2,
+    Max = 0x7fffffff,
+};
+
+enum class KernelProfilingInfoShift : unsigned {
+    CmdExecTime = 0,
+    Max = 0x7fffffff,
+};
+
+enum class KernelProfilingInfoMask : unsigned {
+    MaskNone = 0,
+    CmdExecTime = 0x00000001,
+};
+
+enum class Capability : unsigned {
+    Matrix = 0,
+    Shader = 1,
+    Geometry = 2,
+    Tessellation = 3,
+    Addresses = 4,
+    Linkage = 5,
+    Kernel = 6,
+    Vector16 = 7,
+    Float16Buffer = 8,
+    Float16 = 9,
+    Float64 = 10,
+    Int64 = 11,
+    Int64Atomics = 12,
+    ImageBasic = 13,
+    ImageReadWrite = 14,
+    ImageMipmap = 15,
+    Pipes = 17,
+    Groups = 18,
+    DeviceEnqueue = 19,
+    LiteralSampler = 20,
+    AtomicStorage = 21,
+    Int16 = 22,
+    TessellationPointSize = 23,
+    GeometryPointSize = 24,
+    ImageGatherExtended = 25,
+    StorageImageMultisample = 27,
+    UniformBufferArrayDynamicIndexing = 28,
+    SampledImageArrayDynamicIndexing = 29,
+    StorageBufferArrayDynamicIndexing = 30,
+    StorageImageArrayDynamicIndexing = 31,
+    ClipDistance = 32,
+    CullDistance = 33,
+    ImageCubeArray = 34,
+    SampleRateShading = 35,
+    ImageRect = 36,
+    SampledRect = 37,
+    GenericPointer = 38,
+    Int8 = 39,
+    InputAttachment = 40,
+    SparseResidency = 41,
+    MinLod = 42,
+    Sampled1D = 43,
+    Image1D = 44,
+    SampledCubeArray = 45,
+    SampledBuffer = 46,
+    ImageBuffer = 47,
+    ImageMSArray = 48,
+    StorageImageExtendedFormats = 49,
+    ImageQuery = 50,
+    DerivativeControl = 51,
+    InterpolationFunction = 52,
+    TransformFeedback = 53,
+    GeometryStreams = 54,
+    StorageImageReadWithoutFormat = 55,
+    StorageImageWriteWithoutFormat = 56,
+    MultiViewport = 57,
+    SubgroupDispatch = 58,
+    NamedBarrier = 59,
+    PipeStorage = 60,
+    GroupNonUniform = 61,
+    GroupNonUniformVote = 62,
+    GroupNonUniformArithmetic = 63,
+    GroupNonUniformBallot = 64,
+    GroupNonUniformShuffle = 65,
+    GroupNonUniformShuffleRelative = 66,
+    GroupNonUniformClustered = 67,
+    GroupNonUniformQuad = 68,
+    ShaderLayer = 69,
+    ShaderViewportIndex = 70,
+    FragmentShadingRateKHR = 4422,
+    SubgroupBallotKHR = 4423,
+    DrawParameters = 4427,
+    SubgroupVoteKHR = 4431,
+    StorageBuffer16BitAccess = 4433,
+    StorageUniformBufferBlock16 = 4433,
+    StorageUniform16 = 4434,
+    UniformAndStorageBuffer16BitAccess = 4434,
+    StoragePushConstant16 = 4435,
+    StorageInputOutput16 = 4436,
+    DeviceGroup = 4437,
+    MultiView = 4439,
+    VariablePointersStorageBuffer = 4441,
+    VariablePointers = 4442,
+    AtomicStorageOps = 4445,
+    SampleMaskPostDepthCoverage = 4447,
+    StorageBuffer8BitAccess = 4448,
+    UniformAndStorageBuffer8BitAccess = 4449,
+    StoragePushConstant8 = 4450,
+    DenormPreserve = 4464,
+    DenormFlushToZero = 4465,
+    SignedZeroInfNanPreserve = 4466,
+    RoundingModeRTE = 4467,
+    RoundingModeRTZ = 4468,
+    RayQueryProvisionalKHR = 4471,
+    RayTraversalPrimitiveCullingProvisionalKHR = 4478,
+    Float16ImageAMD = 5008,
+    ImageGatherBiasLodAMD = 5009,
+    FragmentMaskAMD = 5010,
+    StencilExportEXT = 5013,
+    ImageReadWriteLodAMD = 5015,
+    Int64ImageEXT = 5016,
+    ShaderClockKHR = 5055,
+    SampleMaskOverrideCoverageNV = 5249,
+    GeometryShaderPassthroughNV = 5251,
+    ShaderViewportIndexLayerEXT = 5254,
+    ShaderViewportIndexLayerNV = 5254,
+    ShaderViewportMaskNV = 5255,
+    ShaderStereoViewNV = 5259,
+    PerViewAttributesNV = 5260,
+    FragmentFullyCoveredEXT = 5265,
+    MeshShadingNV = 5266,
+    ImageFootprintNV = 5282,
+    FragmentBarycentricNV = 5284,
+    ComputeDerivativeGroupQuadsNV = 5288,
+    FragmentDensityEXT = 5291,
+    ShadingRateNV = 5291,
+    GroupNonUniformPartitionedNV = 5297,
+    ShaderNonUniform = 5301,
+    ShaderNonUniformEXT = 5301,
+    RuntimeDescriptorArray = 5302,
+    RuntimeDescriptorArrayEXT = 5302,
+    InputAttachmentArrayDynamicIndexing = 5303,
+    InputAttachmentArrayDynamicIndexingEXT = 5303,
+    UniformTexelBufferArrayDynamicIndexing = 5304,
+    UniformTexelBufferArrayDynamicIndexingEXT = 5304,
+    StorageTexelBufferArrayDynamicIndexing = 5305,
+    StorageTexelBufferArrayDynamicIndexingEXT = 5305,
+    UniformBufferArrayNonUniformIndexing = 5306,
+    UniformBufferArrayNonUniformIndexingEXT = 5306,
+    SampledImageArrayNonUniformIndexing = 5307,
+    SampledImageArrayNonUniformIndexingEXT = 5307,
+    StorageBufferArrayNonUniformIndexing = 5308,
+    StorageBufferArrayNonUniformIndexingEXT = 5308,
+    StorageImageArrayNonUniformIndexing = 5309,
+    StorageImageArrayNonUniformIndexingEXT = 5309,
+    InputAttachmentArrayNonUniformIndexing = 5310,
+    InputAttachmentArrayNonUniformIndexingEXT = 5310,
+    UniformTexelBufferArrayNonUniformIndexing = 5311,
+    UniformTexelBufferArrayNonUniformIndexingEXT = 5311,
+    StorageTexelBufferArrayNonUniformIndexing = 5312,
+    StorageTexelBufferArrayNonUniformIndexingEXT = 5312,
+    RayTracingNV = 5340,
+    VulkanMemoryModel = 5345,
+    VulkanMemoryModelKHR = 5345,
+    VulkanMemoryModelDeviceScope = 5346,
+    VulkanMemoryModelDeviceScopeKHR = 5346,
+    PhysicalStorageBufferAddresses = 5347,
+    PhysicalStorageBufferAddressesEXT = 5347,
+    ComputeDerivativeGroupLinearNV = 5350,
+    RayTracingProvisionalKHR = 5353,
+    CooperativeMatrixNV = 5357,
+    FragmentShaderSampleInterlockEXT = 5363,
+    FragmentShaderShadingRateInterlockEXT = 5372,
+    ShaderSMBuiltinsNV = 5373,
+    FragmentShaderPixelInterlockEXT = 5378,
+    DemoteToHelperInvocationEXT = 5379,
+    SubgroupShuffleINTEL = 5568,
+    SubgroupBufferBlockIOINTEL = 5569,
+    SubgroupImageBlockIOINTEL = 5570,
+    SubgroupImageMediaBlockIOINTEL = 5579,
+    IntegerFunctions2INTEL = 5584,
+    FunctionPointersINTEL = 5603,
+    IndirectReferencesINTEL = 5604,
+    SubgroupAvcMotionEstimationINTEL = 5696,
+    SubgroupAvcMotionEstimationIntraINTEL = 5697,
+    SubgroupAvcMotionEstimationChromaINTEL = 5698,
+    FPGAMemoryAttributesINTEL = 5824,
+    UnstructuredLoopControlsINTEL = 5886,
+    FPGALoopControlsINTEL = 5888,
+    KernelAttributesINTEL = 5892,
+    FPGAKernelAttributesINTEL = 5897,
+    BlockingPipesINTEL = 5945,
+    FPGARegINTEL = 5948,
+    AtomicFloat32AddEXT = 6033,
+    AtomicFloat64AddEXT = 6034,
+    Max = 0x7fffffff,
+};
+
+enum class RayFlagsShift : unsigned {
+    OpaqueKHR = 0,
+    NoOpaqueKHR = 1,
+    TerminateOnFirstHitKHR = 2,
+    SkipClosestHitShaderKHR = 3,
+    CullBackFacingTrianglesKHR = 4,
+    CullFrontFacingTrianglesKHR = 5,
+    CullOpaqueKHR = 6,
+    CullNoOpaqueKHR = 7,
+    SkipTrianglesKHR = 8,
+    SkipAABBsKHR = 9,
+    Max = 0x7fffffff,
+};
+
+enum class RayFlagsMask : unsigned {
+    MaskNone = 0,
+    OpaqueKHR = 0x00000001,
+    NoOpaqueKHR = 0x00000002,
+    TerminateOnFirstHitKHR = 0x00000004,
+    SkipClosestHitShaderKHR = 0x00000008,
+    CullBackFacingTrianglesKHR = 0x00000010,
+    CullFrontFacingTrianglesKHR = 0x00000020,
+    CullOpaqueKHR = 0x00000040,
+    CullNoOpaqueKHR = 0x00000080,
+    SkipTrianglesKHR = 0x00000100,
+    SkipAABBsKHR = 0x00000200,
+};
+
+enum class RayQueryIntersection : unsigned {
+    RayQueryCandidateIntersectionKHR = 0,
+    RayQueryCommittedIntersectionKHR = 1,
+    Max = 0x7fffffff,
+};
+
+enum class RayQueryCommittedIntersectionType : unsigned {
+    RayQueryCommittedIntersectionNoneKHR = 0,
+    RayQueryCommittedIntersectionTriangleKHR = 1,
+    RayQueryCommittedIntersectionGeneratedKHR = 2,
+    Max = 0x7fffffff,
+};
+
+enum class RayQueryCandidateIntersectionType : unsigned {
+    RayQueryCandidateIntersectionTriangleKHR = 0,
+    RayQueryCandidateIntersectionAABBKHR = 1,
+    Max = 0x7fffffff,
+};
+
+enum class FragmentShadingRateShift : unsigned {
+    Vertical2Pixels = 0,
+    Vertical4Pixels = 1,
+    Horizontal2Pixels = 2,
+    Horizontal4Pixels = 3,
+    Max = 0x7fffffff,
+};
+
+enum class FragmentShadingRateMask : unsigned {
+    MaskNone = 0,
+    Vertical2Pixels = 0x00000001,
+    Vertical4Pixels = 0x00000002,
+    Horizontal2Pixels = 0x00000004,
+    Horizontal4Pixels = 0x00000008,
+};
+
+enum class Op : unsigned {
+    OpNop = 0,
+    OpUndef = 1,
+    OpSourceContinued = 2,
+    OpSource = 3,
+    OpSourceExtension = 4,
+    OpName = 5,
+    OpMemberName = 6,
+    OpString = 7,
+    OpLine = 8,
+    OpExtension = 10,
+    OpExtInstImport = 11,
+    OpExtInst = 12,
+    OpMemoryModel = 14,
+    OpEntryPoint = 15,
+    OpExecutionMode = 16,
+    OpCapability = 17,
+    OpTypeVoid = 19,
+    OpTypeBool = 20,
+    OpTypeInt = 21,
+    OpTypeFloat = 22,
+    OpTypeVector = 23,
+    OpTypeMatrix = 24,
+    OpTypeImage = 25,
+    OpTypeSampler = 26,
+    OpTypeSampledImage = 27,
+    OpTypeArray = 28,
+    OpTypeRuntimeArray = 29,
+    OpTypeStruct = 30,
+    OpTypeOpaque = 31,
+    OpTypePointer = 32,
+    OpTypeFunction = 33,
+    OpTypeEvent = 34,
+    OpTypeDeviceEvent = 35,
+    OpTypeReserveId = 36,
+    OpTypeQueue = 37,
+    OpTypePipe = 38,
+    OpTypeForwardPointer = 39,
+    OpConstantTrue = 41,
+    OpConstantFalse = 42,
+    OpConstant = 43,
+    OpConstantComposite = 44,
+    OpConstantSampler = 45,
+    OpConstantNull = 46,
+    OpSpecConstantTrue = 48,
+    OpSpecConstantFalse = 49,
+    OpSpecConstant = 50,
+    OpSpecConstantComposite = 51,
+    OpSpecConstantOp = 52,
+    OpFunction = 54,
+    OpFunctionParameter = 55,
+    OpFunctionEnd = 56,
+    OpFunctionCall = 57,
+    OpVariable = 59,
+    OpImageTexelPointer = 60,
+    OpLoad = 61,
+    OpStore = 62,
+    OpCopyMemory = 63,
+    OpCopyMemorySized = 64,
+    OpAccessChain = 65,
+    OpInBoundsAccessChain = 66,
+    OpPtrAccessChain = 67,
+    OpArrayLength = 68,
+    OpGenericPtrMemSemantics = 69,
+    OpInBoundsPtrAccessChain = 70,
+    OpDecorate = 71,
+    OpMemberDecorate = 72,
+    OpDecorationGroup = 73,
+    OpGroupDecorate = 74,
+    OpGroupMemberDecorate = 75,
+    OpVectorExtractDynamic = 77,
+    OpVectorInsertDynamic = 78,
+    OpVectorShuffle = 79,
+    OpCompositeConstruct = 80,
+    OpCompositeExtract = 81,
+    OpCompositeInsert = 82,
+    OpCopyObject = 83,
+    OpTranspose = 84,
+    OpSampledImage = 86,
+    OpImageSampleImplicitLod = 87,
+    OpImageSampleExplicitLod = 88,
+    OpImageSampleDrefImplicitLod = 89,
+    OpImageSampleDrefExplicitLod = 90,
+    OpImageSampleProjImplicitLod = 91,
+    OpImageSampleProjExplicitLod = 92,
+    OpImageSampleProjDrefImplicitLod = 93,
+    OpImageSampleProjDrefExplicitLod = 94,
+    OpImageFetch = 95,
+    OpImageGather = 96,
+    OpImageDrefGather = 97,
+    OpImageRead = 98,
+    OpImageWrite = 99,
+    OpImage = 100,
+    OpImageQueryFormat = 101,
+    OpImageQueryOrder = 102,
+    OpImageQuerySizeLod = 103,
+    OpImageQuerySize = 104,
+    OpImageQueryLod = 105,
+    OpImageQueryLevels = 106,
+    OpImageQuerySamples = 107,
+    OpConvertFToU = 109,
+    OpConvertFToS = 110,
+    OpConvertSToF = 111,
+    OpConvertUToF = 112,
+    OpUConvert = 113,
+    OpSConvert = 114,
+    OpFConvert = 115,
+    OpQuantizeToF16 = 116,
+    OpConvertPtrToU = 117,
+    OpSatConvertSToU = 118,
+    OpSatConvertUToS = 119,
+    OpConvertUToPtr = 120,
+    OpPtrCastToGeneric = 121,
+    OpGenericCastToPtr = 122,
+    OpGenericCastToPtrExplicit = 123,
+    OpBitcast = 124,
+    OpSNegate = 126,
+    OpFNegate = 127,
+    OpIAdd = 128,
+    OpFAdd = 129,
+    OpISub = 130,
+    OpFSub = 131,
+    OpIMul = 132,
+    OpFMul = 133,
+    OpUDiv = 134,
+    OpSDiv = 135,
+    OpFDiv = 136,
+    OpUMod = 137,
+    OpSRem = 138,
+    OpSMod = 139,
+    OpFRem = 140,
+    OpFMod = 141,
+    OpVectorTimesScalar = 142,
+    OpMatrixTimesScalar = 143,
+    OpVectorTimesMatrix = 144,
+    OpMatrixTimesVector = 145,
+    OpMatrixTimesMatrix = 146,
+    OpOuterProduct = 147,
+    OpDot = 148,
+    OpIAddCarry = 149,
+    OpISubBorrow = 150,
+    OpUMulExtended = 151,
+    OpSMulExtended = 152,
+    OpAny = 154,
+    OpAll = 155,
+    OpIsNan = 156,
+    OpIsInf = 157,
+    OpIsFinite = 158,
+    OpIsNormal = 159,
+    OpSignBitSet = 160,
+    OpLessOrGreater = 161,
+    OpOrdered = 162,
+    OpUnordered = 163,
+    OpLogicalEqual = 164,
+    OpLogicalNotEqual = 165,
+    OpLogicalOr = 166,
+    OpLogicalAnd = 167,
+    OpLogicalNot = 168,
+    OpSelect = 169,
+    OpIEqual = 170,
+    OpINotEqual = 171,
+    OpUGreaterThan = 172,
+    OpSGreaterThan = 173,
+    OpUGreaterThanEqual = 174,
+    OpSGreaterThanEqual = 175,
+    OpULessThan = 176,
+    OpSLessThan = 177,
+    OpULessThanEqual = 178,
+    OpSLessThanEqual = 179,
+    OpFOrdEqual = 180,
+    OpFUnordEqual = 181,
+    OpFOrdNotEqual = 182,
+    OpFUnordNotEqual = 183,
+    OpFOrdLessThan = 184,
+    OpFUnordLessThan = 185,
+    OpFOrdGreaterThan = 186,
+    OpFUnordGreaterThan = 187,
+    OpFOrdLessThanEqual = 188,
+    OpFUnordLessThanEqual = 189,
+    OpFOrdGreaterThanEqual = 190,
+    OpFUnordGreaterThanEqual = 191,
+    OpShiftRightLogical = 194,
+    OpShiftRightArithmetic = 195,
+    OpShiftLeftLogical = 196,
+    OpBitwiseOr = 197,
+    OpBitwiseXor = 198,
+    OpBitwiseAnd = 199,
+    OpNot = 200,
+    OpBitFieldInsert = 201,
+    OpBitFieldSExtract = 202,
+    OpBitFieldUExtract = 203,
+    OpBitReverse = 204,
+    OpBitCount = 205,
+    OpDPdx = 207,
+    OpDPdy = 208,
+    OpFwidth = 209,
+    OpDPdxFine = 210,
+    OpDPdyFine = 211,
+    OpFwidthFine = 212,
+    OpDPdxCoarse = 213,
+    OpDPdyCoarse = 214,
+    OpFwidthCoarse = 215,
+    OpEmitVertex = 218,
+    OpEndPrimitive = 219,
+    OpEmitStreamVertex = 220,
+    OpEndStreamPrimitive = 221,
+    OpControlBarrier = 224,
+    OpMemoryBarrier = 225,
+    OpAtomicLoad = 227,
+    OpAtomicStore = 228,
+    OpAtomicExchange = 229,
+    OpAtomicCompareExchange = 230,
+    OpAtomicCompareExchangeWeak = 231,
+    OpAtomicIIncrement = 232,
+    OpAtomicIDecrement = 233,
+    OpAtomicIAdd = 234,
+    OpAtomicISub = 235,
+    OpAtomicSMin = 236,
+    OpAtomicUMin = 237,
+    OpAtomicSMax = 238,
+    OpAtomicUMax = 239,
+    OpAtomicAnd = 240,
+    OpAtomicOr = 241,
+    OpAtomicXor = 242,
+    OpPhi = 245,
+    OpLoopMerge = 246,
+    OpSelectionMerge = 247,
+    OpLabel = 248,
+    OpBranch = 249,
+    OpBranchConditional = 250,
+    OpSwitch = 251,
+    OpKill = 252,
+    OpReturn = 253,
+    OpReturnValue = 254,
+    OpUnreachable = 255,
+    OpLifetimeStart = 256,
+    OpLifetimeStop = 257,
+    OpGroupAsyncCopy = 259,
+    OpGroupWaitEvents = 260,
+    OpGroupAll = 261,
+    OpGroupAny = 262,
+    OpGroupBroadcast = 263,
+    OpGroupIAdd = 264,
+    OpGroupFAdd = 265,
+    OpGroupFMin = 266,
+    OpGroupUMin = 267,
+    OpGroupSMin = 268,
+    OpGroupFMax = 269,
+    OpGroupUMax = 270,
+    OpGroupSMax = 271,
+    OpReadPipe = 274,
+    OpWritePipe = 275,
+    OpReservedReadPipe = 276,
+    OpReservedWritePipe = 277,
+    OpReserveReadPipePackets = 278,
+    OpReserveWritePipePackets = 279,
+    OpCommitReadPipe = 280,
+    OpCommitWritePipe = 281,
+    OpIsValidReserveId = 282,
+    OpGetNumPipePackets = 283,
+    OpGetMaxPipePackets = 284,
+    OpGroupReserveReadPipePackets = 285,
+    OpGroupReserveWritePipePackets = 286,
+    OpGroupCommitReadPipe = 287,
+    OpGroupCommitWritePipe = 288,
+    OpEnqueueMarker = 291,
+    OpEnqueueKernel = 292,
+    OpGetKernelNDrangeSubGroupCount = 293,
+    OpGetKernelNDrangeMaxSubGroupSize = 294,
+    OpGetKernelWorkGroupSize = 295,
+    OpGetKernelPreferredWorkGroupSizeMultiple = 296,
+    OpRetainEvent = 297,
+    OpReleaseEvent = 298,
+    OpCreateUserEvent = 299,
+    OpIsValidEvent = 300,
+    OpSetUserEventStatus = 301,
+    OpCaptureEventProfilingInfo = 302,
+    OpGetDefaultQueue = 303,
+    OpBuildNDRange = 304,
+    OpImageSparseSampleImplicitLod = 305,
+    OpImageSparseSampleExplicitLod = 306,
+    OpImageSparseSampleDrefImplicitLod = 307,
+    OpImageSparseSampleDrefExplicitLod = 308,
+    OpImageSparseSampleProjImplicitLod = 309,
+    OpImageSparseSampleProjExplicitLod = 310,
+    OpImageSparseSampleProjDrefImplicitLod = 311,
+    OpImageSparseSampleProjDrefExplicitLod = 312,
+    OpImageSparseFetch = 313,
+    OpImageSparseGather = 314,
+    OpImageSparseDrefGather = 315,
+    OpImageSparseTexelsResident = 316,
+    OpNoLine = 317,
+    OpAtomicFlagTestAndSet = 318,
+    OpAtomicFlagClear = 319,
+    OpImageSparseRead = 320,
+    OpSizeOf = 321,
+    OpTypePipeStorage = 322,
+    OpConstantPipeStorage = 323,
+    OpCreatePipeFromPipeStorage = 324,
+    OpGetKernelLocalSizeForSubgroupCount = 325,
+    OpGetKernelMaxNumSubgroups = 326,
+    OpTypeNamedBarrier = 327,
+    OpNamedBarrierInitialize = 328,
+    OpMemoryNamedBarrier = 329,
+    OpModuleProcessed = 330,
+    OpExecutionModeId = 331,
+    OpDecorateId = 332,
+    OpGroupNonUniformElect = 333,
+    OpGroupNonUniformAll = 334,
+    OpGroupNonUniformAny = 335,
+    OpGroupNonUniformAllEqual = 336,
+    OpGroupNonUniformBroadcast = 337,
+    OpGroupNonUniformBroadcastFirst = 338,
+    OpGroupNonUniformBallot = 339,
+    OpGroupNonUniformInverseBallot = 340,
+    OpGroupNonUniformBallotBitExtract = 341,
+    OpGroupNonUniformBallotBitCount = 342,
+    OpGroupNonUniformBallotFindLSB = 343,
+    OpGroupNonUniformBallotFindMSB = 344,
+    OpGroupNonUniformShuffle = 345,
+    OpGroupNonUniformShuffleXor = 346,
+    OpGroupNonUniformShuffleUp = 347,
+    OpGroupNonUniformShuffleDown = 348,
+    OpGroupNonUniformIAdd = 349,
+    OpGroupNonUniformFAdd = 350,
+    OpGroupNonUniformIMul = 351,
+    OpGroupNonUniformFMul = 352,
+    OpGroupNonUniformSMin = 353,
+    OpGroupNonUniformUMin = 354,
+    OpGroupNonUniformFMin = 355,
+    OpGroupNonUniformSMax = 356,
+    OpGroupNonUniformUMax = 357,
+    OpGroupNonUniformFMax = 358,
+    OpGroupNonUniformBitwiseAnd = 359,
+    OpGroupNonUniformBitwiseOr = 360,
+    OpGroupNonUniformBitwiseXor = 361,
+    OpGroupNonUniformLogicalAnd = 362,
+    OpGroupNonUniformLogicalOr = 363,
+    OpGroupNonUniformLogicalXor = 364,
+    OpGroupNonUniformQuadBroadcast = 365,
+    OpGroupNonUniformQuadSwap = 366,
+    OpCopyLogical = 400,
+    OpPtrEqual = 401,
+    OpPtrNotEqual = 402,
+    OpPtrDiff = 403,
+    OpTerminateInvocation = 4416,
+    OpSubgroupBallotKHR = 4421,
+    OpSubgroupFirstInvocationKHR = 4422,
+    OpSubgroupAllKHR = 4428,
+    OpSubgroupAnyKHR = 4429,
+    OpSubgroupAllEqualKHR = 4430,
+    OpSubgroupReadInvocationKHR = 4432,
+    OpTypeRayQueryProvisionalKHR = 4472,
+    OpRayQueryInitializeKHR = 4473,
+    OpRayQueryTerminateKHR = 4474,
+    OpRayQueryGenerateIntersectionKHR = 4475,
+    OpRayQueryConfirmIntersectionKHR = 4476,
+    OpRayQueryProceedKHR = 4477,
+    OpRayQueryGetIntersectionTypeKHR = 4479,
+    OpGroupIAddNonUniformAMD = 5000,
+    OpGroupFAddNonUniformAMD = 5001,
+    OpGroupFMinNonUniformAMD = 5002,
+    OpGroupUMinNonUniformAMD = 5003,
+    OpGroupSMinNonUniformAMD = 5004,
+    OpGroupFMaxNonUniformAMD = 5005,
+    OpGroupUMaxNonUniformAMD = 5006,
+    OpGroupSMaxNonUniformAMD = 5007,
+    OpFragmentMaskFetchAMD = 5011,
+    OpFragmentFetchAMD = 5012,
+    OpReadClockKHR = 5056,
+    OpImageSampleFootprintNV = 5283,
+    OpGroupNonUniformPartitionNV = 5296,
+    OpWritePackedPrimitiveIndices4x8NV = 5299,
+    OpReportIntersectionKHR = 5334,
+    OpReportIntersectionNV = 5334,
+    OpIgnoreIntersectionKHR = 5335,
+    OpIgnoreIntersectionNV = 5335,
+    OpTerminateRayKHR = 5336,
+    OpTerminateRayNV = 5336,
+    OpTraceNV = 5337,
+    OpTraceRayKHR = 5337,
+    OpTypeAccelerationStructureKHR = 5341,
+    OpTypeAccelerationStructureNV = 5341,
+    OpExecuteCallableKHR = 5344,
+    OpExecuteCallableNV = 5344,
+    OpTypeCooperativeMatrixNV = 5358,
+    OpCooperativeMatrixLoadNV = 5359,
+    OpCooperativeMatrixStoreNV = 5360,
+    OpCooperativeMatrixMulAddNV = 5361,
+    OpCooperativeMatrixLengthNV = 5362,
+    OpBeginInvocationInterlockEXT = 5364,
+    OpEndInvocationInterlockEXT = 5365,
+    OpDemoteToHelperInvocationEXT = 5380,
+    OpIsHelperInvocationEXT = 5381,
+    OpSubgroupShuffleINTEL = 5571,
+    OpSubgroupShuffleDownINTEL = 5572,
+    OpSubgroupShuffleUpINTEL = 5573,
+    OpSubgroupShuffleXorINTEL = 5574,
+    OpSubgroupBlockReadINTEL = 5575,
+    OpSubgroupBlockWriteINTEL = 5576,
+    OpSubgroupImageBlockReadINTEL = 5577,
+    OpSubgroupImageBlockWriteINTEL = 5578,
+    OpSubgroupImageMediaBlockReadINTEL = 5580,
+    OpSubgroupImageMediaBlockWriteINTEL = 5581,
+    OpUCountLeadingZerosINTEL = 5585,
+    OpUCountTrailingZerosINTEL = 5586,
+    OpAbsISubINTEL = 5587,
+    OpAbsUSubINTEL = 5588,
+    OpIAddSatINTEL = 5589,
+    OpUAddSatINTEL = 5590,
+    OpIAverageINTEL = 5591,
+    OpUAverageINTEL = 5592,
+    OpIAverageRoundedINTEL = 5593,
+    OpUAverageRoundedINTEL = 5594,
+    OpISubSatINTEL = 5595,
+    OpUSubSatINTEL = 5596,
+    OpIMul32x16INTEL = 5597,
+    OpUMul32x16INTEL = 5598,
+    OpFunctionPointerINTEL = 5600,
+    OpFunctionPointerCallINTEL = 5601,
+    OpDecorateString = 5632,
+    OpDecorateStringGOOGLE = 5632,
+    OpMemberDecorateString = 5633,
+    OpMemberDecorateStringGOOGLE = 5633,
+    OpVmeImageINTEL = 5699,
+    OpTypeVmeImageINTEL = 5700,
+    OpTypeAvcImePayloadINTEL = 5701,
+    OpTypeAvcRefPayloadINTEL = 5702,
+    OpTypeAvcSicPayloadINTEL = 5703,
+    OpTypeAvcMcePayloadINTEL = 5704,
+    OpTypeAvcMceResultINTEL = 5705,
+    OpTypeAvcImeResultINTEL = 5706,
+    OpTypeAvcImeResultSingleReferenceStreamoutINTEL = 5707,
+    OpTypeAvcImeResultDualReferenceStreamoutINTEL = 5708,
+    OpTypeAvcImeSingleReferenceStreaminINTEL = 5709,
+    OpTypeAvcImeDualReferenceStreaminINTEL = 5710,
+    OpTypeAvcRefResultINTEL = 5711,
+    OpTypeAvcSicResultINTEL = 5712,
+    OpSubgroupAvcMceGetDefaultInterBaseMultiReferencePenaltyINTEL = 5713,
+    OpSubgroupAvcMceSetInterBaseMultiReferencePenaltyINTEL = 5714,
+    OpSubgroupAvcMceGetDefaultInterShapePenaltyINTEL = 5715,
+    OpSubgroupAvcMceSetInterShapePenaltyINTEL = 5716,
+    OpSubgroupAvcMceGetDefaultInterDirectionPenaltyINTEL = 5717,
+    OpSubgroupAvcMceSetInterDirectionPenaltyINTEL = 5718,
+    OpSubgroupAvcMceGetDefaultIntraLumaShapePenaltyINTEL = 5719,
+    OpSubgroupAvcMceGetDefaultInterMotionVectorCostTableINTEL = 5720,
+    OpSubgroupAvcMceGetDefaultHighPenaltyCostTableINTEL = 5721,
+    OpSubgroupAvcMceGetDefaultMediumPenaltyCostTableINTEL = 5722,
+    OpSubgroupAvcMceGetDefaultLowPenaltyCostTableINTEL = 5723,
+    OpSubgroupAvcMceSetMotionVectorCostFunctionINTEL = 5724,
+    OpSubgroupAvcMceGetDefaultIntraLumaModePenaltyINTEL = 5725,
+    OpSubgroupAvcMceGetDefaultNonDcLumaIntraPenaltyINTEL = 5726,
+    OpSubgroupAvcMceGetDefaultIntraChromaModeBasePenaltyINTEL = 5727,
+    OpSubgroupAvcMceSetAcOnlyHaarINTEL = 5728,
+    OpSubgroupAvcMceSetSourceInterlacedFieldPolarityINTEL = 5729,
+    OpSubgroupAvcMceSetSingleReferenceInterlacedFieldPolarityINTEL = 5730,
+    OpSubgroupAvcMceSetDualReferenceInterlacedFieldPolaritiesINTEL = 5731,
+    OpSubgroupAvcMceConvertToImePayloadINTEL = 5732,
+    OpSubgroupAvcMceConvertToImeResultINTEL = 5733,
+    OpSubgroupAvcMceConvertToRefPayloadINTEL = 5734,
+    OpSubgroupAvcMceConvertToRefResultINTEL = 5735,
+    OpSubgroupAvcMceConvertToSicPayloadINTEL = 5736,
+    OpSubgroupAvcMceConvertToSicResultINTEL = 5737,
+    OpSubgroupAvcMceGetMotionVectorsINTEL = 5738,
+    OpSubgroupAvcMceGetInterDistortionsINTEL = 5739,
+    OpSubgroupAvcMceGetBestInterDistortionsINTEL = 5740,
+    OpSubgroupAvcMceGetInterMajorShapeINTEL = 5741,
+    OpSubgroupAvcMceGetInterMinorShapeINTEL = 5742,
+    OpSubgroupAvcMceGetInterDirectionsINTEL = 5743,
+    OpSubgroupAvcMceGetInterMotionVectorCountINTEL = 5744,
+    OpSubgroupAvcMceGetInterReferenceIdsINTEL = 5745,
+    OpSubgroupAvcMceGetInterReferenceInterlacedFieldPolaritiesINTEL = 5746,
+    OpSubgroupAvcImeInitializeINTEL = 5747,
+    OpSubgroupAvcImeSetSingleReferenceINTEL = 5748,
+    OpSubgroupAvcImeSetDualReferenceINTEL = 5749,
+    OpSubgroupAvcImeRefWindowSizeINTEL = 5750,
+    OpSubgroupAvcImeAdjustRefOffsetINTEL = 5751,
+    OpSubgroupAvcImeConvertToMcePayloadINTEL = 5752,
+    OpSubgroupAvcImeSetMaxMotionVectorCountINTEL = 5753,
+    OpSubgroupAvcImeSetUnidirectionalMixDisableINTEL = 5754,
+    OpSubgroupAvcImeSetEarlySearchTerminationThresholdINTEL = 5755,
+    OpSubgroupAvcImeSetWeightedSadINTEL = 5756,
+    OpSubgroupAvcImeEvaluateWithSingleReferenceINTEL = 5757,
+    OpSubgroupAvcImeEvaluateWithDualReferenceINTEL = 5758,
+    OpSubgroupAvcImeEvaluateWithSingleReferenceStreaminINTEL = 5759,
+    OpSubgroupAvcImeEvaluateWithDualReferenceStreaminINTEL = 5760,
+    OpSubgroupAvcImeEvaluateWithSingleReferenceStreamoutINTEL = 5761,
+    OpSubgroupAvcImeEvaluateWithDualReferenceStreamoutINTEL = 5762,
+    OpSubgroupAvcImeEvaluateWithSingleReferenceStreaminoutINTEL = 5763,
+    OpSubgroupAvcImeEvaluateWithDualReferenceStreaminoutINTEL = 5764,
+    OpSubgroupAvcImeConvertToMceResultINTEL = 5765,
+    OpSubgroupAvcImeGetSingleReferenceStreaminINTEL = 5766,
+    OpSubgroupAvcImeGetDualReferenceStreaminINTEL = 5767,
+    OpSubgroupAvcImeStripSingleReferenceStreamoutINTEL = 5768,
+    OpSubgroupAvcImeStripDualReferenceStreamoutINTEL = 5769,
+    OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeMotionVectorsINTEL = 5770,
+    OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeDistortionsINTEL = 5771,
+    OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeReferenceIdsINTEL = 5772,
+    OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeMotionVectorsINTEL = 5773,
+    OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeDistortionsINTEL = 5774,
+    OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeReferenceIdsINTEL = 5775,
+    OpSubgroupAvcImeGetBorderReachedINTEL = 5776,
+    OpSubgroupAvcImeGetTruncatedSearchIndicationINTEL = 5777,
+    OpSubgroupAvcImeGetUnidirectionalEarlySearchTerminationINTEL = 5778,
+    OpSubgroupAvcImeGetWeightingPatternMinimumMotionVectorINTEL = 5779,
+    OpSubgroupAvcImeGetWeightingPatternMinimumDistortionINTEL = 5780,
+    OpSubgroupAvcFmeInitializeINTEL = 5781,
+    OpSubgroupAvcBmeInitializeINTEL = 5782,
+    OpSubgroupAvcRefConvertToMcePayloadINTEL = 5783,
+    OpSubgroupAvcRefSetBidirectionalMixDisableINTEL = 5784,
+    OpSubgroupAvcRefSetBilinearFilterEnableINTEL = 5785,
+    OpSubgroupAvcRefEvaluateWithSingleReferenceINTEL = 5786,
+    OpSubgroupAvcRefEvaluateWithDualReferenceINTEL = 5787,
+    OpSubgroupAvcRefEvaluateWithMultiReferenceINTEL = 5788,
+    OpSubgroupAvcRefEvaluateWithMultiReferenceInterlacedINTEL = 5789,
+    OpSubgroupAvcRefConvertToMceResultINTEL = 5790,
+    OpSubgroupAvcSicInitializeINTEL = 5791,
+    OpSubgroupAvcSicConfigureSkcINTEL = 5792,
+    OpSubgroupAvcSicConfigureIpeLumaINTEL = 5793,
+    OpSubgroupAvcSicConfigureIpeLumaChromaINTEL = 5794,
+    OpSubgroupAvcSicGetMotionVectorMaskINTEL = 5795,
+    OpSubgroupAvcSicConvertToMcePayloadINTEL = 5796,
+    OpSubgroupAvcSicSetIntraLumaShapePenaltyINTEL = 5797,
+    OpSubgroupAvcSicSetIntraLumaModeCostFunctionINTEL = 5798,
+    OpSubgroupAvcSicSetIntraChromaModeCostFunctionINTEL = 5799,
+    OpSubgroupAvcSicSetBilinearFilterEnableINTEL = 5800,
+    OpSubgroupAvcSicSetSkcForwardTransformEnableINTEL = 5801,
+    OpSubgroupAvcSicSetBlockBasedRawSkipSadINTEL = 5802,
+    OpSubgroupAvcSicEvaluateIpeINTEL = 5803,
+    OpSubgroupAvcSicEvaluateWithSingleReferenceINTEL = 5804,
+    OpSubgroupAvcSicEvaluateWithDualReferenceINTEL = 5805,
+    OpSubgroupAvcSicEvaluateWithMultiReferenceINTEL = 5806,
+    OpSubgroupAvcSicEvaluateWithMultiReferenceInterlacedINTEL = 5807,
+    OpSubgroupAvcSicConvertToMceResultINTEL = 5808,
+    OpSubgroupAvcSicGetIpeLumaShapeINTEL = 5809,
+    OpSubgroupAvcSicGetBestIpeLumaDistortionINTEL = 5810,
+    OpSubgroupAvcSicGetBestIpeChromaDistortionINTEL = 5811,
+    OpSubgroupAvcSicGetPackedIpeLumaModesINTEL = 5812,
+    OpSubgroupAvcSicGetIpeChromaModeINTEL = 5813,
+    OpSubgroupAvcSicGetPackedSkcLumaCountThresholdINTEL = 5814,
+    OpSubgroupAvcSicGetPackedSkcLumaSumThresholdINTEL = 5815,
+    OpSubgroupAvcSicGetInterRawSadsINTEL = 5816,
+    OpLoopControlINTEL = 5887,
+    OpReadPipeBlockingINTEL = 5946,
+    OpWritePipeBlockingINTEL = 5947,
+    OpFPGARegINTEL = 5949,
+    OpRayQueryGetRayTMinKHR = 6016,
+    OpRayQueryGetRayFlagsKHR = 6017,
+    OpRayQueryGetIntersectionTKHR = 6018,
+    OpRayQueryGetIntersectionInstanceCustomIndexKHR = 6019,
+    OpRayQueryGetIntersectionInstanceIdKHR = 6020,
+    OpRayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR = 6021,
+    OpRayQueryGetIntersectionGeometryIndexKHR = 6022,
+    OpRayQueryGetIntersectionPrimitiveIndexKHR = 6023,
+    OpRayQueryGetIntersectionBarycentricsKHR = 6024,
+    OpRayQueryGetIntersectionFrontFaceKHR = 6025,
+    OpRayQueryGetIntersectionCandidateAABBOpaqueKHR = 6026,
+    OpRayQueryGetIntersectionObjectRayDirectionKHR = 6027,
+    OpRayQueryGetIntersectionObjectRayOriginKHR = 6028,
+    OpRayQueryGetWorldRayDirectionKHR = 6029,
+    OpRayQueryGetWorldRayOriginKHR = 6030,
+    OpRayQueryGetIntersectionObjectToWorldKHR = 6031,
+    OpRayQueryGetIntersectionWorldToObjectKHR = 6032,
+    OpAtomicFAddEXT = 6035,
+    Max = 0x7fffffff,
+};
+
+#ifdef SPV_ENABLE_UTILITY_CODE
+inline void HasResultAndType(Op opcode, bool *hasResult, bool *hasResultType) {
+    *hasResult = *hasResultType = false;
+    switch (opcode) {
+    default: /* unknown opcode */ break;
+    case Op::OpNop: *hasResult = false; *hasResultType = false; break;
+    case Op::OpUndef: *hasResult = true; *hasResultType = true; break;
+    case Op::OpSourceContinued: *hasResult = false; *hasResultType = false; break;
+    case Op::OpSource: *hasResult = false; *hasResultType = false; break;
+    case Op::OpSourceExtension: *hasResult = false; *hasResultType = false; break;
+    case Op::OpName: *hasResult = false; *hasResultType = false; break;
+    case Op::OpMemberName: *hasResult = false; *hasResultType = false; break;
+    case Op::OpString: *hasResult = true; *hasResultType = false; break;
+    case Op::OpLine: *hasResult = false; *hasResultType = false; break;
+    case Op::OpExtension: *hasResult = false; *hasResultType = false; break;
+    case Op::OpExtInstImport: *hasResult = true; *hasResultType = false; break;
+    case Op::OpExtInst: *hasResult = true; *hasResultType = true; break;
+    case Op::OpMemoryModel: *hasResult = false; *hasResultType = false; break;
+    case Op::OpEntryPoint: *hasResult = false; *hasResultType = false; break;
+    case Op::OpExecutionMode: *hasResult = false; *hasResultType = false; break;
+    case Op::OpCapability: *hasResult = false; *hasResultType = false; break;
+    case Op::OpTypeVoid: *hasResult = true; *hasResultType = false; break;
+    case Op::OpTypeBool: *hasResult = true; *hasResultType = false; break;
+    case Op::OpTypeInt: *hasResult = true; *hasResultType = false; break;
+    case Op::OpTypeFloat: *hasResult = true; *hasResultType = false; break;
+    case Op::OpTypeVector: *hasResult = true; *hasResultType = false; break;
+    case Op::OpTypeMatrix: *hasResult = true; *hasResultType = false; break;
+    case Op::OpTypeImage: *hasResult = true; *hasResultType = false; break;
+    case Op::OpTypeSampler: *hasResult = true; *hasResultType = false; break;
+    case Op::OpTypeSampledImage: *hasResult = true; *hasResultType = false; break;
+    case Op::OpTypeArray: *hasResult = true; *hasResultType = false; break;
+    case Op::OpTypeRuntimeArray: *hasResult = true; *hasResultType = false; break;
+    case Op::OpTypeStruct: *hasResult = true; *hasResultType = false; break;
+    case Op::OpTypeOpaque: *hasResult = true; *hasResultType = false; break;
+    case Op::OpTypePointer: *hasResult = true; *hasResultType = false; break;
+    case Op::OpTypeFunction: *hasResult = true; *hasResultType = false; break;
+    case Op::OpTypeEvent: *hasResult = true; *hasResultType = false; break;
+    case Op::OpTypeDeviceEvent: *hasResult = true; *hasResultType = false; break;
+    case Op::OpTypeReserveId: *hasResult = true; *hasResultType = false; break;
+    case Op::OpTypeQueue: *hasResult = true; *hasResultType = false; break;
+    case Op::OpTypePipe: *hasResult = true; *hasResultType = false; break;
+    case Op::OpTypeForwardPointer: *hasResult = false; *hasResultType = false; break;
+    case Op::OpConstantTrue: *hasResult = true; *hasResultType = true; break;
+    case Op::OpConstantFalse: *hasResult = true; *hasResultType = true; break;
+    case Op::OpConstant: *hasResult = true; *hasResultType = true; break;
+    case Op::OpConstantComposite: *hasResult = true; *hasResultType = true; break;
+    case Op::OpConstantSampler: *hasResult = true; *hasResultType = true; break;
+    case Op::OpConstantNull: *hasResult = true; *hasResultType = true; break;
+    case Op::OpSpecConstantTrue: *hasResult = true; *hasResultType = true; break;
+    case Op::OpSpecConstantFalse: *hasResult = true; *hasResultType = true; break;
+    case Op::OpSpecConstant: *hasResult = true; *hasResultType = true; break;
+    case Op::OpSpecConstantComposite: *hasResult = true; *hasResultType = true; break;
+    case Op::OpSpecConstantOp: *hasResult = true; *hasResultType = true; break;
+    case Op::OpFunction: *hasResult = true; *hasResultType = true; break;
+    case Op::OpFunctionParameter: *hasResult = true; *hasResultType = true; break;
+    case Op::OpFunctionEnd: *hasResult = false; *hasResultType = false; break;
+    case Op::OpFunctionCall: *hasResult = true; *hasResultType = true; break;
+    case Op::OpVariable: *hasResult = true; *hasResultType = true; break;
+    case Op::OpImageTexelPointer: *hasResult = true; *hasResultType = true; break;
+    case Op::OpLoad: *hasResult = true; *hasResultType = true; break;
+    case Op::OpStore: *hasResult = false; *hasResultType = false; break;
+    case Op::OpCopyMemory: *hasResult = false; *hasResultType = false; break;
+    case Op::OpCopyMemorySized: *hasResult = false; *hasResultType = false; break;
+    case Op::OpAccessChain: *hasResult = true; *hasResultType = true; break;
+    case Op::OpInBoundsAccessChain: *hasResult = true; *hasResultType = true; break;
+    case Op::OpPtrAccessChain: *hasResult = true; *hasResultType = true; break;
+    case Op::OpArrayLength: *hasResult = true; *hasResultType = true; break;
+    case Op::OpGenericPtrMemSemantics: *hasResult = true; *hasResultType = true; break;
+    case Op::OpInBoundsPtrAccessChain: *hasResult = true; *hasResultType = true; break;
+    case Op::OpDecorate: *hasResult = false; *hasResultType = false; break;
+    case Op::OpMemberDecorate: *hasResult = false; *hasResultType = false; break;
+    case Op::OpDecorationGroup: *hasResult = true; *hasResultType = false; break;
+    case Op::OpGroupDecorate: *hasResult = false; *hasResultType = false; break;
+    case Op::OpGroupMemberDecorate: *hasResult = false; *hasResultType = false; break;
+    case Op::OpVectorExtractDynamic: *hasResult = true; *hasResultType = true; break;
+    case Op::OpVectorInsertDynamic: *hasResult = true; *hasResultType = true; break;
+    case Op::OpVectorShuffle: *hasResult = true; *hasResultType = true; break;
+    case Op::OpCompositeConstruct: *hasResult = true; *hasResultType = true; break;
+    case Op::OpCompositeExtract: *hasResult = true; *hasResultType = true; break;
+    case Op::OpCompositeInsert: *hasResult = true; *hasResultType = true; break;
+    case Op::OpCopyObject: *hasResult = true; *hasResultType = true; break;
+    case Op::OpTranspose: *hasResult = true; *hasResultType = true; break;
+    case Op::OpSampledImage: *hasResult = true; *hasResultType = true; break;
+    case Op::OpImageSampleImplicitLod: *hasResult = true; *hasResultType = true; break;
+    case Op::OpImageSampleExplicitLod: *hasResult = true; *hasResultType = true; break;
+    case Op::OpImageSampleDrefImplicitLod: *hasResult = true; *hasResultType = true; break;
+    case Op::OpImageSampleDrefExplicitLod: *hasResult = true; *hasResultType = true; break;
+    case Op::OpImageSampleProjImplicitLod: *hasResult = true; *hasResultType = true; break;
+    case Op::OpImageSampleProjExplicitLod: *hasResult = true; *hasResultType = true; break;
+    case Op::OpImageSampleProjDrefImplicitLod: *hasResult = true; *hasResultType = true; break;
+    case Op::OpImageSampleProjDrefExplicitLod: *hasResult = true; *hasResultType = true; break;
+    case Op::OpImageFetch: *hasResult = true; *hasResultType = true; break;
+    case Op::OpImageGather: *hasResult = true; *hasResultType = true; break;
+    case Op::OpImageDrefGather: *hasResult = true; *hasResultType = true; break;
+    case Op::OpImageRead: *hasResult = true; *hasResultType = true; break;
+    case Op::OpImageWrite: *hasResult = false; *hasResultType = false; break;
+    case Op::OpImage: *hasResult = true; *hasResultType = true; break;
+    case Op::OpImageQueryFormat: *hasResult = true; *hasResultType = true; break;
+    case Op::OpImageQueryOrder: *hasResult = true; *hasResultType = true; break;
+    case Op::OpImageQuerySizeLod: *hasResult = true; *hasResultType = true; break;
+    case Op::OpImageQuerySize: *hasResult = true; *hasResultType = true; break;
+    case Op::OpImageQueryLod: *hasResult = true; *hasResultType = true; break;
+    case Op::OpImageQueryLevels: *hasResult = true; *hasResultType = true; break;
+    case Op::OpImageQuerySamples: *hasResult = true; *hasResultType = true; break;
+    case Op::OpConvertFToU: *hasResult = true; *hasResultType = true; break;
+    case Op::OpConvertFToS: *hasResult = true; *hasResultType = true; break;
+    case Op::OpConvertSToF: *hasResult = true; *hasResultType = true; break;
+    case Op::OpConvertUToF: *hasResult = true; *hasResultType = true; break;
+    case Op::OpUConvert: *hasResult = true; *hasResultType = true; break;
+    case Op::OpSConvert: *hasResult = true; *hasResultType = true; break;
+    case Op::OpFConvert: *hasResult = true; *hasResultType = true; break;
+    case Op::OpQuantizeToF16: *hasResult = true; *hasResultType = true; break;
+    case Op::OpConvertPtrToU: *hasResult = true; *hasResultType = true; break;
+    case Op::OpSatConvertSToU: *hasResult = true; *hasResultType = true; break;
+    case Op::OpSatConvertUToS: *hasResult = true; *hasResultType = true; break;
+    case Op::OpConvertUToPtr: *hasResult = true; *hasResultType = true; break;
+    case Op::OpPtrCastToGeneric: *hasResult = true; *hasResultType = true; break;
+    case Op::OpGenericCastToPtr: *hasResult = true; *hasResultType = true; break;
+    case Op::OpGenericCastToPtrExplicit: *hasResult = true; *hasResultType = true; break;
+    case Op::OpBitcast: *hasResult = true; *hasResultType = true; break;
+    case Op::OpSNegate: *hasResult = true; *hasResultType = true; break;
+    case Op::OpFNegate: *hasResult = true; *hasResultType = true; break;
+    case Op::OpIAdd: *hasResult = true; *hasResultType = true; break;
+    case Op::OpFAdd: *hasResult = true; *hasResultType = true; break;
+    case Op::OpISub: *hasResult = true; *hasResultType = true; break;
+    case Op::OpFSub: *hasResult = true; *hasResultType = true; break;
+    case Op::OpIMul: *hasResult = true; *hasResultType = true; break;
+    case Op::OpFMul: *hasResult = true; *hasResultType = true; break;
+    case Op::OpUDiv: *hasResult = true; *hasResultType = true; break;
+    case Op::OpSDiv: *hasResult = true; *hasResultType = true; break;
+    case Op::OpFDiv: *hasResult = true; *hasResultType = true; break;
+    case Op::OpUMod: *hasResult = true; *hasResultType = true; break;
+    case Op::OpSRem: *hasResult = true; *hasResultType = true; break;
+    case Op::OpSMod: *hasResult = true; *hasResultType = true; break;
+    case Op::OpFRem: *hasResult = true; *hasResultType = true; break;
+    case Op::OpFMod: *hasResult = true; *hasResultType = true; break;
+    case Op::OpVectorTimesScalar: *hasResult = true; *hasResultType = true; break;
+    case Op::OpMatrixTimesScalar: *hasResult = true; *hasResultType = true; break;
+    case Op::OpVectorTimesMatrix: *hasResult = true; *hasResultType = true; break;
+    case Op::OpMatrixTimesVector: *hasResult = true; *hasResultType = true; break;
+    case Op::OpMatrixTimesMatrix: *hasResult = true; *hasResultType = true; break;
+    case Op::OpOuterProduct: *hasResult = true; *hasResultType = true; break;
+    case Op::OpDot: *hasResult = true; *hasResultType = true; break;
+    case Op::OpIAddCarry: *hasResult = true; *hasResultType = true; break;
+    case Op::OpISubBorrow: *hasResult = true; *hasResultType = true; break;
+    case Op::OpUMulExtended: *hasResult = true; *hasResultType = true; break;
+    case Op::OpSMulExtended: *hasResult = true; *hasResultType = true; break;
+    case Op::OpAny: *hasResult = true; *hasResultType = true; break;
+    case Op::OpAll: *hasResult = true; *hasResultType = true; break;
+    case Op::OpIsNan: *hasResult = true; *hasResultType = true; break;
+    case Op::OpIsInf: *hasResult = true; *hasResultType = true; break;
+    case Op::OpIsFinite: *hasResult = true; *hasResultType = true; break;
+    case Op::OpIsNormal: *hasResult = true; *hasResultType = true; break;
+    case Op::OpSignBitSet: *hasResult = true; *hasResultType = true; break;
+    case Op::OpLessOrGreater: *hasResult = true; *hasResultType = true; break;
+    case Op::OpOrdered: *hasResult = true; *hasResultType = true; break;
+    case Op::OpUnordered: *hasResult = true; *hasResultType = true; break;
+    case Op::OpLogicalEqual: *hasResult = true; *hasResultType = true; break;
+    case Op::OpLogicalNotEqual: *hasResult = true; *hasResultType = true; break;
+    case Op::OpLogicalOr: *hasResult = true; *hasResultType = true; break;
+    case Op::OpLogicalAnd: *hasResult = true; *hasResultType = true; break;
+    case Op::OpLogicalNot: *hasResult = true; *hasResultType = true; break;
+    case Op::OpSelect: *hasResult = true; *hasResultType = true; break;
+    case Op::OpIEqual: *hasResult = true; *hasResultType = true; break;
+    case Op::OpINotEqual: *hasResult = true; *hasResultType = true; break;
+    case Op::OpUGreaterThan: *hasResult = true; *hasResultType = true; break;
+    case Op::OpSGreaterThan: *hasResult = true; *hasResultType = true; break;
+    case Op::OpUGreaterThanEqual: *hasResult = true; *hasResultType = true; break;
+    case Op::OpSGreaterThanEqual: *hasResult = true; *hasResultType = true; break;
+    case Op::OpULessThan: *hasResult = true; *hasResultType = true; break;
+    case Op::OpSLessThan: *hasResult = true; *hasResultType = true; break;
+    case Op::OpULessThanEqual: *hasResult = true; *hasResultType = true; break;
+    case Op::OpSLessThanEqual: *hasResult = true; *hasResultType = true; break;
+    case Op::OpFOrdEqual: *hasResult = true; *hasResultType = true; break;
+    case Op::OpFUnordEqual: *hasResult = true; *hasResultType = true; break;
+    case Op::OpFOrdNotEqual: *hasResult = true; *hasResultType = true; break;
+    case Op::OpFUnordNotEqual: *hasResult = true; *hasResultType = true; break;
+    case Op::OpFOrdLessThan: *hasResult = true; *hasResultType = true; break;
+    case Op::OpFUnordLessThan: *hasResult = true; *hasResultType = true; break;
+    case Op::OpFOrdGreaterThan: *hasResult = true; *hasResultType = true; break;
+    case Op::OpFUnordGreaterThan: *hasResult = true; *hasResultType = true; break;
+    case Op::OpFOrdLessThanEqual: *hasResult = true; *hasResultType = true; break;
+    case Op::OpFUnordLessThanEqual: *hasResult = true; *hasResultType = true; break;
+    case Op::OpFOrdGreaterThanEqual: *hasResult = true; *hasResultType = true; break;
+    case Op::OpFUnordGreaterThanEqual: *hasResult = true; *hasResultType = true; break;
+    case Op::OpShiftRightLogical: *hasResult = true; *hasResultType = true; break;
+    case Op::OpShiftRightArithmetic: *hasResult = true; *hasResultType = true; break;
+    case Op::OpShiftLeftLogical: *hasResult = true; *hasResultType = true; break;
+    case Op::OpBitwiseOr: *hasResult = true; *hasResultType = true; break;
+    case Op::OpBitwiseXor: *hasResult = true; *hasResultType = true; break;
+    case Op::OpBitwiseAnd: *hasResult = true; *hasResultType = true; break;
+    case Op::OpNot: *hasResult = true; *hasResultType = true; break;
+    case Op::OpBitFieldInsert: *hasResult = true; *hasResultType = true; break;
+    case Op::OpBitFieldSExtract: *hasResult = true; *hasResultType = true; break;
+    case Op::OpBitFieldUExtract: *hasResult = true; *hasResultType = true; break;
+    case Op::OpBitReverse: *hasResult = true; *hasResultType = true; break;
+    case Op::OpBitCount: *hasResult = true; *hasResultType = true; break;
+    case Op::OpDPdx: *hasResult = true; *hasResultType = true; break;
+    case Op::OpDPdy: *hasResult = true; *hasResultType = true; break;
+    case Op::OpFwidth: *hasResult = true; *hasResultType = true; break;
+    case Op::OpDPdxFine: *hasResult = true; *hasResultType = true; break;
+    case Op::OpDPdyFine: *hasResult = true; *hasResultType = true; break;
+    case Op::OpFwidthFine: *hasResult = true; *hasResultType = true; break;
+    case Op::OpDPdxCoarse: *hasResult = true; *hasResultType = true; break;
+    case Op::OpDPdyCoarse: *hasResult = true; *hasResultType = true; break;
+    case Op::OpFwidthCoarse: *hasResult = true; *hasResultType = true; break;
+    case Op::OpEmitVertex: *hasResult = false; *hasResultType = false; break;
+    case Op::OpEndPrimitive: *hasResult = false; *hasResultType = false; break;
+    case Op::OpEmitStreamVertex: *hasResult = false; *hasResultType = false; break;
+    case Op::OpEndStreamPrimitive: *hasResult = false; *hasResultType = false; break;
+    case Op::OpControlBarrier: *hasResult = false; *hasResultType = false; break;
+    case Op::OpMemoryBarrier: *hasResult = false; *hasResultType = false; break;
+    case Op::OpAtomicLoad: *hasResult = true; *hasResultType = true; break;
+    case Op::OpAtomicStore: *hasResult = false; *hasResultType = false; break;
+    case Op::OpAtomicExchange: *hasResult = true; *hasResultType = true; break;
+    case Op::OpAtomicCompareExchange: *hasResult = true; *hasResultType = true; break;
+    case Op::OpAtomicCompareExchangeWeak: *hasResult = true; *hasResultType = true; break;
+    case Op::OpAtomicIIncrement: *hasResult = true; *hasResultType = true; break;
+    case Op::OpAtomicIDecrement: *hasResult = true; *hasResultType = true; break;
+    case Op::OpAtomicIAdd: *hasResult = true; *hasResultType = true; break;
+    case Op::OpAtomicISub: *hasResult = true; *hasResultType = true; break;
+    case Op::OpAtomicSMin: *hasResult = true; *hasResultType = true; break;
+    case Op::OpAtomicUMin: *hasResult = true; *hasResultType = true; break;
+    case Op::OpAtomicSMax: *hasResult = true; *hasResultType = true; break;
+    case Op::OpAtomicUMax: *hasResult = true; *hasResultType = true; break;
+    case Op::OpAtomicAnd: *hasResult = true; *hasResultType = true; break;
+    case Op::OpAtomicOr: *hasResult = true; *hasResultType = true; break;
+    case Op::OpAtomicXor: *hasResult = true; *hasResultType = true; break;
+    case Op::OpPhi: *hasResult = true; *hasResultType = true; break;
+    case Op::OpLoopMerge: *hasResult = false; *hasResultType = false; break;
+    case Op::OpSelectionMerge: *hasResult = false; *hasResultType = false; break;
+    case Op::OpLabel: *hasResult = true; *hasResultType = false; break;
+    case Op::OpBranch: *hasResult = false; *hasResultType = false; break;
+    case Op::OpBranchConditional: *hasResult = false; *hasResultType = false; break;
+    case Op::OpSwitch: *hasResult = false; *hasResultType = false; break;
+    case Op::OpKill: *hasResult = false; *hasResultType = false; break;
+    case Op::OpReturn: *hasResult = false; *hasResultType = false; break;
+    case Op::OpReturnValue: *hasResult = false; *hasResultType = false; break;
+    case Op::OpUnreachable: *hasResult = false; *hasResultType = false; break;
+    case Op::OpLifetimeStart: *hasResult = false; *hasResultType = false; break;
+    case Op::OpLifetimeStop: *hasResult = false; *hasResultType = false; break;
+    case Op::OpGroupAsyncCopy: *hasResult = true; *hasResultType = true; break;
+    case Op::OpGroupWaitEvents: *hasResult = false; *hasResultType = false; break;
+    case Op::OpGroupAll: *hasResult = true; *hasResultType = true; break;
+    case Op::OpGroupAny: *hasResult = true; *hasResultType = true; break;
+    case Op::OpGroupBroadcast: *hasResult = true; *hasResultType = true; break;
+    case Op::OpGroupIAdd: *hasResult = true; *hasResultType = true; break;
+    case Op::OpGroupFAdd: *hasResult = true; *hasResultType = true; break;
+    case Op::OpGroupFMin: *hasResult = true; *hasResultType = true; break;
+    case Op::OpGroupUMin: *hasResult = true; *hasResultType = true; break;
+    case Op::OpGroupSMin: *hasResult = true; *hasResultType = true; break;
+    case Op::OpGroupFMax: *hasResult = true; *hasResultType = true; break;
+    case Op::OpGroupUMax: *hasResult = true; *hasResultType = true; break;
+    case Op::OpGroupSMax: *hasResult = true; *hasResultType = true; break;
+    case Op::OpReadPipe: *hasResult = true; *hasResultType = true; break;
+    case Op::OpWritePipe: *hasResult = true; *hasResultType = true; break;
+    case Op::OpReservedReadPipe: *hasResult = true; *hasResultType = true; break;
+    case Op::OpReservedWritePipe: *hasResult = true; *hasResultType = true; break;
+    case Op::OpReserveReadPipePackets: *hasResult = true; *hasResultType = true; break;
+    case Op::OpReserveWritePipePackets: *hasResult = true; *hasResultType = true; break;
+    case Op::OpCommitReadPipe: *hasResult = false; *hasResultType = false; break;
+    case Op::OpCommitWritePipe: *hasResult = false; *hasResultType = false; break;
+    case Op::OpIsValidReserveId: *hasResult = true; *hasResultType = true; break;
+    case Op::OpGetNumPipePackets: *hasResult = true; *hasResultType = true; break;
+    case Op::OpGetMaxPipePackets: *hasResult = true; *hasResultType = true; break;
+    case Op::OpGroupReserveReadPipePackets: *hasResult = true; *hasResultType = true; break;
+    case Op::OpGroupReserveWritePipePackets: *hasResult = true; *hasResultType = true; break;
+    case Op::OpGroupCommitReadPipe: *hasResult = false; *hasResultType = false; break;
+    case Op::OpGroupCommitWritePipe: *hasResult = false; *hasResultType = false; break;
+    case Op::OpEnqueueMarker: *hasResult = true; *hasResultType = true; break;
+    case Op::OpEnqueueKernel: *hasResult = true; *hasResultType = true; break;
+    case Op::OpGetKernelNDrangeSubGroupCount: *hasResult = true; *hasResultType = true; break;
+    case Op::OpGetKernelNDrangeMaxSubGroupSize: *hasResult = true; *hasResultType = true; break;
+    case Op::OpGetKernelWorkGroupSize: *hasResult = true; *hasResultType = true; break;
+    case Op::OpGetKernelPreferredWorkGroupSizeMultiple: *hasResult = true; *hasResultType = true; break;
+    case Op::OpRetainEvent: *hasResult = false; *hasResultType = false; break;
+    case Op::OpReleaseEvent: *hasResult = false; *hasResultType = false; break;
+    case Op::OpCreateUserEvent: *hasResult = true; *hasResultType = true; break;
+    case Op::OpIsValidEvent: *hasResult = true; *hasResultType = true; break;
+    case Op::OpSetUserEventStatus: *hasResult = false; *hasResultType = false; break;
+    case Op::OpCaptureEventProfilingInfo: *hasResult = false; *hasResultType = false; break;
+    case Op::OpGetDefaultQueue: *hasResult = true; *hasResultType = true; break;
+    case Op::OpBuildNDRange: *hasResult = true; *hasResultType = true; break;
+    case Op::OpImageSparseSampleImplicitLod: *hasResult = true; *hasResultType = true; break;
+    case Op::OpImageSparseSampleExplicitLod: *hasResult = true; *hasResultType = true; break;
+    case Op::OpImageSparseSampleDrefImplicitLod: *hasResult = true; *hasResultType = true; break;
+    case Op::OpImageSparseSampleDrefExplicitLod: *hasResult = true; *hasResultType = true; break;
+    case Op::OpImageSparseSampleProjImplicitLod: *hasResult = true; *hasResultType = true; break;
+    case Op::OpImageSparseSampleProjExplicitLod: *hasResult = true; *hasResultType = true; break;
+    case Op::OpImageSparseSampleProjDrefImplicitLod: *hasResult = true; *hasResultType = true; break;
+    case Op::OpImageSparseSampleProjDrefExplicitLod: *hasResult = true; *hasResultType = true; break;
+    case Op::OpImageSparseFetch: *hasResult = true; *hasResultType = true; break;
+    case Op::OpImageSparseGather: *hasResult = true; *hasResultType = true; break;
+    case Op::OpImageSparseDrefGather: *hasResult = true; *hasResultType = true; break;
+    case Op::OpImageSparseTexelsResident: *hasResult = true; *hasResultType = true; break;
+    case Op::OpNoLine: *hasResult = false; *hasResultType = false; break;
+    case Op::OpAtomicFlagTestAndSet: *hasResult = true; *hasResultType = true; break;
+    case Op::OpAtomicFlagClear: *hasResult = false; *hasResultType = false; break;
+    case Op::OpImageSparseRead: *hasResult = true; *hasResultType = true; break;
+    case Op::OpSizeOf: *hasResult = true; *hasResultType = true; break;
+    case Op::OpTypePipeStorage: *hasResult = true; *hasResultType = false; break;
+    case Op::OpConstantPipeStorage: *hasResult = true; *hasResultType = true; break;
+    case Op::OpCreatePipeFromPipeStorage: *hasResult = true; *hasResultType = true; break;
+    case Op::OpGetKernelLocalSizeForSubgroupCount: *hasResult = true; *hasResultType = true; break;
+    case Op::OpGetKernelMaxNumSubgroups: *hasResult = true; *hasResultType = true; break;
+    case Op::OpTypeNamedBarrier: *hasResult = true; *hasResultType = false; break;
+    case Op::OpNamedBarrierInitialize: *hasResult = true; *hasResultType = true; break;
+    case Op::OpMemoryNamedBarrier: *hasResult = false; *hasResultType = false; break;
+    case Op::OpModuleProcessed: *hasResult = false; *hasResultType = false; break;
+    case Op::OpExecutionModeId: *hasResult = false; *hasResultType = false; break;
+    case Op::OpDecorateId: *hasResult = false; *hasResultType = false; break;
+    case Op::OpGroupNonUniformElect: *hasResult = true; *hasResultType = true; break;
+    case Op::OpGroupNonUniformAll: *hasResult = true; *hasResultType = true; break;
+    case Op::OpGroupNonUniformAny: *hasResult = true; *hasResultType = true; break;
+    case Op::OpGroupNonUniformAllEqual: *hasResult = true; *hasResultType = true; break;
+    case Op::OpGroupNonUniformBroadcast: *hasResult = true; *hasResultType = true; break;
+    case Op::OpGroupNonUniformBroadcastFirst: *hasResult = true; *hasResultType = true; break;
+    case Op::OpGroupNonUniformBallot: *hasResult = true; *hasResultType = true; break;
+    case Op::OpGroupNonUniformInverseBallot: *hasResult = true; *hasResultType = true; break;
+    case Op::OpGroupNonUniformBallotBitExtract: *hasResult = true; *hasResultType = true; break;
+    case Op::OpGroupNonUniformBallotBitCount: *hasResult = true; *hasResultType = true; break;
+    case Op::OpGroupNonUniformBallotFindLSB: *hasResult = true; *hasResultType = true; break;
+    case Op::OpGroupNonUniformBallotFindMSB: *hasResult = true; *hasResultType = true; break;
+    case Op::OpGroupNonUniformShuffle: *hasResult = true; *hasResultType = true; break;
+    case Op::OpGroupNonUniformShuffleXor: *hasResult = true; *hasResultType = true; break;
+    case Op::OpGroupNonUniformShuffleUp: *hasResult = true; *hasResultType = true; break;
+    case Op::OpGroupNonUniformShuffleDown: *hasResult = true; *hasResultType = true; break;
+    case Op::OpGroupNonUniformIAdd: *hasResult = true; *hasResultType = true; break;
+    case Op::OpGroupNonUniformFAdd: *hasResult = true; *hasResultType = true; break;
+    case Op::OpGroupNonUniformIMul: *hasResult = true; *hasResultType = true; break;
+    case Op::OpGroupNonUniformFMul: *hasResult = true; *hasResultType = true; break;
+    case Op::OpGroupNonUniformSMin: *hasResult = true; *hasResultType = true; break;
+    case Op::OpGroupNonUniformUMin: *hasResult = true; *hasResultType = true; break;
+    case Op::OpGroupNonUniformFMin: *hasResult = true; *hasResultType = true; break;
+    case Op::OpGroupNonUniformSMax: *hasResult = true; *hasResultType = true; break;
+    case Op::OpGroupNonUniformUMax: *hasResult = true; *hasResultType = true; break;
+    case Op::OpGroupNonUniformFMax: *hasResult = true; *hasResultType = true; break;
+    case Op::OpGroupNonUniformBitwiseAnd: *hasResult = true; *hasResultType = true; break;
+    case Op::OpGroupNonUniformBitwiseOr: *hasResult = true; *hasResultType = true; break;
+    case Op::OpGroupNonUniformBitwiseXor: *hasResult = true; *hasResultType = true; break;
+    case Op::OpGroupNonUniformLogicalAnd: *hasResult = true; *hasResultType = true; break;
+    case Op::OpGroupNonUniformLogicalOr: *hasResult = true; *hasResultType = true; break;
+    case Op::OpGroupNonUniformLogicalXor: *hasResult = true; *hasResultType = true; break;
+    case Op::OpGroupNonUniformQuadBroadcast: *hasResult = true; *hasResultType = true; break;
+    case Op::OpGroupNonUniformQuadSwap: *hasResult = true; *hasResultType = true; break;
+    case Op::OpCopyLogical: *hasResult = true; *hasResultType = true; break;
+    case Op::OpPtrEqual: *hasResult = true; *hasResultType = true; break;
+    case Op::OpPtrNotEqual: *hasResult = true; *hasResultType = true; break;
+    case Op::OpPtrDiff: *hasResult = true; *hasResultType = true; break;
+    case Op::OpTerminateInvocation: *hasResult = false; *hasResultType = false; break;
+    case Op::OpSubgroupBallotKHR: *hasResult = true; *hasResultType = true; break;
+    case Op::OpSubgroupFirstInvocationKHR: *hasResult = true; *hasResultType = true; break;
+    case Op::OpSubgroupAllKHR: *hasResult = true; *hasResultType = true; break;
+    case Op::OpSubgroupAnyKHR: *hasResult = true; *hasResultType = true; break;
+    case Op::OpSubgroupAllEqualKHR: *hasResult = true; *hasResultType = true; break;
+    case Op::OpSubgroupReadInvocationKHR: *hasResult = true; *hasResultType = true; break;
+    case Op::OpTypeRayQueryProvisionalKHR: *hasResult = true; *hasResultType = false; break;
+    case Op::OpRayQueryInitializeKHR: *hasResult = false; *hasResultType = false; break;
+    case Op::OpRayQueryTerminateKHR: *hasResult = false; *hasResultType = false; break;
+    case Op::OpRayQueryGenerateIntersectionKHR: *hasResult = false; *hasResultType = false; break;
+    case Op::OpRayQueryConfirmIntersectionKHR: *hasResult = false; *hasResultType = false; break;
+    case Op::OpRayQueryProceedKHR: *hasResult = true; *hasResultType = true; break;
+    case Op::OpRayQueryGetIntersectionTypeKHR: *hasResult = true; *hasResultType = true; break;
+    case Op::OpGroupIAddNonUniformAMD: *hasResult = true; *hasResultType = true; break;
+    case Op::OpGroupFAddNonUniformAMD: *hasResult = true; *hasResultType = true; break;
+    case Op::OpGroupFMinNonUniformAMD: *hasResult = true; *hasResultType = true; break;
+    case Op::OpGroupUMinNonUniformAMD: *hasResult = true; *hasResultType = true; break;
+    case Op::OpGroupSMinNonUniformAMD: *hasResult = true; *hasResultType = true; break;
+    case Op::OpGroupFMaxNonUniformAMD: *hasResult = true; *hasResultType = true; break;
+    case Op::OpGroupUMaxNonUniformAMD: *hasResult = true; *hasResultType = true; break;
+    case Op::OpGroupSMaxNonUniformAMD: *hasResult = true; *hasResultType = true; break;
+    case Op::OpFragmentMaskFetchAMD: *hasResult = true; *hasResultType = true; break;
+    case Op::OpFragmentFetchAMD: *hasResult = true; *hasResultType = true; break;
+    case Op::OpReadClockKHR: *hasResult = true; *hasResultType = true; break;
+    case Op::OpImageSampleFootprintNV: *hasResult = true; *hasResultType = true; break;
+    case Op::OpGroupNonUniformPartitionNV: *hasResult = true; *hasResultType = true; break;
+    case Op::OpWritePackedPrimitiveIndices4x8NV: *hasResult = false; *hasResultType = false; break;
+    case Op::OpReportIntersectionNV: *hasResult = true; *hasResultType = true; break;
+    case Op::OpIgnoreIntersectionNV: *hasResult = false; *hasResultType = false; break;
+    case Op::OpTerminateRayNV: *hasResult = false; *hasResultType = false; break;
+    case Op::OpTraceNV: *hasResult = false; *hasResultType = false; break;
+    case Op::OpTypeAccelerationStructureNV: *hasResult = true; *hasResultType = false; break;
+    case Op::OpExecuteCallableNV: *hasResult = false; *hasResultType = false; break;
+    case Op::OpTypeCooperativeMatrixNV: *hasResult = true; *hasResultType = false; break;
+    case Op::OpCooperativeMatrixLoadNV: *hasResult = true; *hasResultType = true; break;
+    case Op::OpCooperativeMatrixStoreNV: *hasResult = false; *hasResultType = false; break;
+    case Op::OpCooperativeMatrixMulAddNV: *hasResult = true; *hasResultType = true; break;
+    case Op::OpCooperativeMatrixLengthNV: *hasResult = true; *hasResultType = true; break;
+    case Op::OpBeginInvocationInterlockEXT: *hasResult = false; *hasResultType = false; break;
+    case Op::OpEndInvocationInterlockEXT: *hasResult = false; *hasResultType = false; break;
+    case Op::OpDemoteToHelperInvocationEXT: *hasResult = false; *hasResultType = false; break;
+    case Op::OpIsHelperInvocationEXT: *hasResult = true; *hasResultType = true; break;
+    case Op::OpSubgroupShuffleINTEL: *hasResult = true; *hasResultType = true; break;
+    case Op::OpSubgroupShuffleDownINTEL: *hasResult = true; *hasResultType = true; break;
+    case Op::OpSubgroupShuffleUpINTEL: *hasResult = true; *hasResultType = true; break;
+    case Op::OpSubgroupShuffleXorINTEL: *hasResult = true; *hasResultType = true; break;
+    case Op::OpSubgroupBlockReadINTEL: *hasResult = true; *hasResultType = true; break;
+    case Op::OpSubgroupBlockWriteINTEL: *hasResult = false; *hasResultType = false; break;
+    case Op::OpSubgroupImageBlockReadINTEL: *hasResult = true; *hasResultType = true; break;
+    case Op::OpSubgroupImageBlockWriteINTEL: *hasResult = false; *hasResultType = false; break;
+    case Op::OpSubgroupImageMediaBlockReadINTEL: *hasResult = true; *hasResultType = true; break;
+    case Op::OpSubgroupImageMediaBlockWriteINTEL: *hasResult = false; *hasResultType = false; break;
+    case Op::OpUCountLeadingZerosINTEL: *hasResult = true; *hasResultType = true; break;
+    case Op::OpUCountTrailingZerosINTEL: *hasResult = true; *hasResultType = true; break;
+    case Op::OpAbsISubINTEL: *hasResult = true; *hasResultType = true; break;
+    case Op::OpAbsUSubINTEL: *hasResult = true; *hasResultType = true; break;
+    case Op::OpIAddSatINTEL: *hasResult = true; *hasResultType = true; break;
+    case Op::OpUAddSatINTEL: *hasResult = true; *hasResultType = true; break;
+    case Op::OpIAverageINTEL: *hasResult = true; *hasResultType = true; break;
+    case Op::OpUAverageINTEL: *hasResult = true; *hasResultType = true; break;
+    case Op::OpIAverageRoundedINTEL: *hasResult = true; *hasResultType = true; break;
+    case Op::OpUAverageRoundedINTEL: *hasResult = true; *hasResultType = true; break;
+    case Op::OpISubSatINTEL: *hasResult = true; *hasResultType = true; break;
+    case Op::OpUSubSatINTEL: *hasResult = true; *hasResultType = true; break;
+    case Op::OpIMul32x16INTEL: *hasResult = true; *hasResultType = true; break;
+    case Op::OpUMul32x16INTEL: *hasResult = true; *hasResultType = true; break;
+    case Op::OpFunctionPointerINTEL: *hasResult = true; *hasResultType = true; break;
+    case Op::OpFunctionPointerCallINTEL: *hasResult = true; *hasResultType = true; break;
+    case Op::OpDecorateString: *hasResult = false; *hasResultType = false; break;
+    case Op::OpMemberDecorateString: *hasResult = false; *hasResultType = false; break;
+    case Op::OpVmeImageINTEL: *hasResult = true; *hasResultType = true; break;
+    case Op::OpTypeVmeImageINTEL: *hasResult = true; *hasResultType = false; break;
+    case Op::OpTypeAvcImePayloadINTEL: *hasResult = true; *hasResultType = false; break;
+    case Op::OpTypeAvcRefPayloadINTEL: *hasResult = true; *hasResultType = false; break;
+    case Op::OpTypeAvcSicPayloadINTEL: *hasResult = true; *hasResultType = false; break;
+    case Op::OpTypeAvcMcePayloadINTEL: *hasResult = true; *hasResultType = false; break;
+    case Op::OpTypeAvcMceResultINTEL: *hasResult = true; *hasResultType = false; break;
+    case Op::OpTypeAvcImeResultINTEL: *hasResult = true; *hasResultType = false; break;
+    case Op::OpTypeAvcImeResultSingleReferenceStreamoutINTEL: *hasResult = true; *hasResultType = false; break;
+    case Op::OpTypeAvcImeResultDualReferenceStreamoutINTEL: *hasResult = true; *hasResultType = false; break;
+    case Op::OpTypeAvcImeSingleReferenceStreaminINTEL: *hasResult = true; *hasResultType = false; break;
+    case Op::OpTypeAvcImeDualReferenceStreaminINTEL: *hasResult = true; *hasResultType = false; break;
+    case Op::OpTypeAvcRefResultINTEL: *hasResult = true; *hasResultType = false; break;
+    case Op::OpTypeAvcSicResultINTEL: *hasResult = true; *hasResultType = false; break;
+    case Op::OpSubgroupAvcMceGetDefaultInterBaseMultiReferencePenaltyINTEL: *hasResult = true; *hasResultType = true; break;
+    case Op::OpSubgroupAvcMceSetInterBaseMultiReferencePenaltyINTEL: *hasResult = true; *hasResultType = true; break;
+    case Op::OpSubgroupAvcMceGetDefaultInterShapePenaltyINTEL: *hasResult = true; *hasResultType = true; break;
+    case Op::OpSubgroupAvcMceSetInterShapePenaltyINTEL: *hasResult = true; *hasResultType = true; break;
+    case Op::OpSubgroupAvcMceGetDefaultInterDirectionPenaltyINTEL: *hasResult = true; *hasResultType = true; break;
+    case Op::OpSubgroupAvcMceSetInterDirectionPenaltyINTEL: *hasResult = true; *hasResultType = true; break;
+    case Op::OpSubgroupAvcMceGetDefaultIntraLumaShapePenaltyINTEL: *hasResult = true; *hasResultType = true; break;
+    case Op::OpSubgroupAvcMceGetDefaultInterMotionVectorCostTableINTEL: *hasResult = true; *hasResultType = true; break;
+    case Op::OpSubgroupAvcMceGetDefaultHighPenaltyCostTableINTEL: *hasResult = true; *hasResultType = true; break;
+    case Op::OpSubgroupAvcMceGetDefaultMediumPenaltyCostTableINTEL: *hasResult = true; *hasResultType = true; break;
+    case Op::OpSubgroupAvcMceGetDefaultLowPenaltyCostTableINTEL: *hasResult = true; *hasResultType = true; break;
+    case Op::OpSubgroupAvcMceSetMotionVectorCostFunctionINTEL: *hasResult = true; *hasResultType = true; break;
+    case Op::OpSubgroupAvcMceGetDefaultIntraLumaModePenaltyINTEL: *hasResult = true; *hasResultType = true; break;
+    case Op::OpSubgroupAvcMceGetDefaultNonDcLumaIntraPenaltyINTEL: *hasResult = true; *hasResultType = true; break;
+    case Op::OpSubgroupAvcMceGetDefaultIntraChromaModeBasePenaltyINTEL: *hasResult = true; *hasResultType = true; break;
+    case Op::OpSubgroupAvcMceSetAcOnlyHaarINTEL: *hasResult = true; *hasResultType = true; break;
+    case Op::OpSubgroupAvcMceSetSourceInterlacedFieldPolarityINTEL: *hasResult = true; *hasResultType = true; break;
+    case Op::OpSubgroupAvcMceSetSingleReferenceInterlacedFieldPolarityINTEL: *hasResult = true; *hasResultType = true; break;
+    case Op::OpSubgroupAvcMceSetDualReferenceInterlacedFieldPolaritiesINTEL: *hasResult = true; *hasResultType = true; break;
+    case Op::OpSubgroupAvcMceConvertToImePayloadINTEL: *hasResult = true; *hasResultType = true; break;
+    case Op::OpSubgroupAvcMceConvertToImeResultINTEL: *hasResult = true; *hasResultType = true; break;
+    case Op::OpSubgroupAvcMceConvertToRefPayloadINTEL: *hasResult = true; *hasResultType = true; break;
+    case Op::OpSubgroupAvcMceConvertToRefResultINTEL: *hasResult = true; *hasResultType = true; break;
+    case Op::OpSubgroupAvcMceConvertToSicPayloadINTEL: *hasResult = true; *hasResultType = true; break;
+    case Op::OpSubgroupAvcMceConvertToSicResultINTEL: *hasResult = true; *hasResultType = true; break;
+    case Op::OpSubgroupAvcMceGetMotionVectorsINTEL: *hasResult = true; *hasResultType = true; break;
+    case Op::OpSubgroupAvcMceGetInterDistortionsINTEL: *hasResult = true; *hasResultType = true; break;
+    case Op::OpSubgroupAvcMceGetBestInterDistortionsINTEL: *hasResult = true; *hasResultType = true; break;
+    case Op::OpSubgroupAvcMceGetInterMajorShapeINTEL: *hasResult = true; *hasResultType = true; break;
+    case Op::OpSubgroupAvcMceGetInterMinorShapeINTEL: *hasResult = true; *hasResultType = true; break;
+    case Op::OpSubgroupAvcMceGetInterDirectionsINTEL: *hasResult = true; *hasResultType = true; break;
+    case Op::OpSubgroupAvcMceGetInterMotionVectorCountINTEL: *hasResult = true; *hasResultType = true; break;
+    case Op::OpSubgroupAvcMceGetInterReferenceIdsINTEL: *hasResult = true; *hasResultType = true; break;
+    case Op::OpSubgroupAvcMceGetInterReferenceInterlacedFieldPolaritiesINTEL: *hasResult = true; *hasResultType = true; break;
+    case Op::OpSubgroupAvcImeInitializeINTEL: *hasResult = true; *hasResultType = true; break;
+    case Op::OpSubgroupAvcImeSetSingleReferenceINTEL: *hasResult = true; *hasResultType = true; break;
+    case Op::OpSubgroupAvcImeSetDualReferenceINTEL: *hasResult = true; *hasResultType = true; break;
+    case Op::OpSubgroupAvcImeRefWindowSizeINTEL: *hasResult = true; *hasResultType = true; break;
+    case Op::OpSubgroupAvcImeAdjustRefOffsetINTEL: *hasResult = true; *hasResultType = true; break;
+    case Op::OpSubgroupAvcImeConvertToMcePayloadINTEL: *hasResult = true; *hasResultType = true; break;
+    case Op::OpSubgroupAvcImeSetMaxMotionVectorCountINTEL: *hasResult = true; *hasResultType = true; break;
+    case Op::OpSubgroupAvcImeSetUnidirectionalMixDisableINTEL: *hasResult = true; *hasResultType = true; break;
+    case Op::OpSubgroupAvcImeSetEarlySearchTerminationThresholdINTEL: *hasResult = true; *hasResultType = true; break;
+    case Op::OpSubgroupAvcImeSetWeightedSadINTEL: *hasResult = true; *hasResultType = true; break;
+    case Op::OpSubgroupAvcImeEvaluateWithSingleReferenceINTEL: *hasResult = true; *hasResultType = true; break;
+    case Op::OpSubgroupAvcImeEvaluateWithDualReferenceINTEL: *hasResult = true; *hasResultType = true; break;
+    case Op::OpSubgroupAvcImeEvaluateWithSingleReferenceStreaminINTEL: *hasResult = true; *hasResultType = true; break;
+    case Op::OpSubgroupAvcImeEvaluateWithDualReferenceStreaminINTEL: *hasResult = true; *hasResultType = true; break;
+    case Op::OpSubgroupAvcImeEvaluateWithSingleReferenceStreamoutINTEL: *hasResult = true; *hasResultType = true; break;
+    case Op::OpSubgroupAvcImeEvaluateWithDualReferenceStreamoutINTEL: *hasResult = true; *hasResultType = true; break;
+    case Op::OpSubgroupAvcImeEvaluateWithSingleReferenceStreaminoutINTEL: *hasResult = true; *hasResultType = true; break;
+    case Op::OpSubgroupAvcImeEvaluateWithDualReferenceStreaminoutINTEL: *hasResult = true; *hasResultType = true; break;
+    case Op::OpSubgroupAvcImeConvertToMceResultINTEL: *hasResult = true; *hasResultType = true; break;
+    case Op::OpSubgroupAvcImeGetSingleReferenceStreaminINTEL: *hasResult = true; *hasResultType = true; break;
+    case Op::OpSubgroupAvcImeGetDualReferenceStreaminINTEL: *hasResult = true; *hasResultType = true; break;
+    case Op::OpSubgroupAvcImeStripSingleReferenceStreamoutINTEL: *hasResult = true; *hasResultType = true; break;
+    case Op::OpSubgroupAvcImeStripDualReferenceStreamoutINTEL: *hasResult = true; *hasResultType = true; break;
+    case Op::OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeMotionVectorsINTEL: *hasResult = true; *hasResultType = true; break;
+    case Op::OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeDistortionsINTEL: *hasResult = true; *hasResultType = true; break;
+    case Op::OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeReferenceIdsINTEL: *hasResult = true; *hasResultType = true; break;
+    case Op::OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeMotionVectorsINTEL: *hasResult = true; *hasResultType = true; break;
+    case Op::OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeDistortionsINTEL: *hasResult = true; *hasResultType = true; break;
+    case Op::OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeReferenceIdsINTEL: *hasResult = true; *hasResultType = true; break;
+    case Op::OpSubgroupAvcImeGetBorderReachedINTEL: *hasResult = true; *hasResultType = true; break;
+    case Op::OpSubgroupAvcImeGetTruncatedSearchIndicationINTEL: *hasResult = true; *hasResultType = true; break;
+    case Op::OpSubgroupAvcImeGetUnidirectionalEarlySearchTerminationINTEL: *hasResult = true; *hasResultType = true; break;
+    case Op::OpSubgroupAvcImeGetWeightingPatternMinimumMotionVectorINTEL: *hasResult = true; *hasResultType = true; break;
+    case Op::OpSubgroupAvcImeGetWeightingPatternMinimumDistortionINTEL: *hasResult = true; *hasResultType = true; break;
+    case Op::OpSubgroupAvcFmeInitializeINTEL: *hasResult = true; *hasResultType = true; break;
+    case Op::OpSubgroupAvcBmeInitializeINTEL: *hasResult = true; *hasResultType = true; break;
+    case Op::OpSubgroupAvcRefConvertToMcePayloadINTEL: *hasResult = true; *hasResultType = true; break;
+    case Op::OpSubgroupAvcRefSetBidirectionalMixDisableINTEL: *hasResult = true; *hasResultType = true; break;
+    case Op::OpSubgroupAvcRefSetBilinearFilterEnableINTEL: *hasResult = true; *hasResultType = true; break;
+    case Op::OpSubgroupAvcRefEvaluateWithSingleReferenceINTEL: *hasResult = true; *hasResultType = true; break;
+    case Op::OpSubgroupAvcRefEvaluateWithDualReferenceINTEL: *hasResult = true; *hasResultType = true; break;
+    case Op::OpSubgroupAvcRefEvaluateWithMultiReferenceINTEL: *hasResult = true; *hasResultType = true; break;
+    case Op::OpSubgroupAvcRefEvaluateWithMultiReferenceInterlacedINTEL: *hasResult = true; *hasResultType = true; break;
+    case Op::OpSubgroupAvcRefConvertToMceResultINTEL: *hasResult = true; *hasResultType = true; break;
+    case Op::OpSubgroupAvcSicInitializeINTEL: *hasResult = true; *hasResultType = true; break;
+    case Op::OpSubgroupAvcSicConfigureSkcINTEL: *hasResult = true; *hasResultType = true; break;
+    case Op::OpSubgroupAvcSicConfigureIpeLumaINTEL: *hasResult = true; *hasResultType = true; break;
+    case Op::OpSubgroupAvcSicConfigureIpeLumaChromaINTEL: *hasResult = true; *hasResultType = true; break;
+    case Op::OpSubgroupAvcSicGetMotionVectorMaskINTEL: *hasResult = true; *hasResultType = true; break;
+    case Op::OpSubgroupAvcSicConvertToMcePayloadINTEL: *hasResult = true; *hasResultType = true; break;
+    case Op::OpSubgroupAvcSicSetIntraLumaShapePenaltyINTEL: *hasResult = true; *hasResultType = true; break;
+    case Op::OpSubgroupAvcSicSetIntraLumaModeCostFunctionINTEL: *hasResult = true; *hasResultType = true; break;
+    case Op::OpSubgroupAvcSicSetIntraChromaModeCostFunctionINTEL: *hasResult = true; *hasResultType = true; break;
+    case Op::OpSubgroupAvcSicSetBilinearFilterEnableINTEL: *hasResult = true; *hasResultType = true; break;
+    case Op::OpSubgroupAvcSicSetSkcForwardTransformEnableINTEL: *hasResult = true; *hasResultType = true; break;
+    case Op::OpSubgroupAvcSicSetBlockBasedRawSkipSadINTEL: *hasResult = true; *hasResultType = true; break;
+    case Op::OpSubgroupAvcSicEvaluateIpeINTEL: *hasResult = true; *hasResultType = true; break;
+    case Op::OpSubgroupAvcSicEvaluateWithSingleReferenceINTEL: *hasResult = true; *hasResultType = true; break;
+    case Op::OpSubgroupAvcSicEvaluateWithDualReferenceINTEL: *hasResult = true; *hasResultType = true; break;
+    case Op::OpSubgroupAvcSicEvaluateWithMultiReferenceINTEL: *hasResult = true; *hasResultType = true; break;
+    case Op::OpSubgroupAvcSicEvaluateWithMultiReferenceInterlacedINTEL: *hasResult = true; *hasResultType = true; break;
+    case Op::OpSubgroupAvcSicConvertToMceResultINTEL: *hasResult = true; *hasResultType = true; break;
+    case Op::OpSubgroupAvcSicGetIpeLumaShapeINTEL: *hasResult = true; *hasResultType = true; break;
+    case Op::OpSubgroupAvcSicGetBestIpeLumaDistortionINTEL: *hasResult = true; *hasResultType = true; break;
+    case Op::OpSubgroupAvcSicGetBestIpeChromaDistortionINTEL: *hasResult = true; *hasResultType = true; break;
+    case Op::OpSubgroupAvcSicGetPackedIpeLumaModesINTEL: *hasResult = true; *hasResultType = true; break;
+    case Op::OpSubgroupAvcSicGetIpeChromaModeINTEL: *hasResult = true; *hasResultType = true; break;
+    case Op::OpSubgroupAvcSicGetPackedSkcLumaCountThresholdINTEL: *hasResult = true; *hasResultType = true; break;
+    case Op::OpSubgroupAvcSicGetPackedSkcLumaSumThresholdINTEL: *hasResult = true; *hasResultType = true; break;
+    case Op::OpSubgroupAvcSicGetInterRawSadsINTEL: *hasResult = true; *hasResultType = true; break;
+    case Op::OpLoopControlINTEL: *hasResult = false; *hasResultType = false; break;
+    case Op::OpReadPipeBlockingINTEL: *hasResult = true; *hasResultType = true; break;
+    case Op::OpWritePipeBlockingINTEL: *hasResult = true; *hasResultType = true; break;
+    case Op::OpFPGARegINTEL: *hasResult = true; *hasResultType = true; break;
+    case Op::OpRayQueryGetRayTMinKHR: *hasResult = true; *hasResultType = true; break;
+    case Op::OpRayQueryGetRayFlagsKHR: *hasResult = true; *hasResultType = true; break;
+    case Op::OpRayQueryGetIntersectionTKHR: *hasResult = true; *hasResultType = true; break;
+    case Op::OpRayQueryGetIntersectionInstanceCustomIndexKHR: *hasResult = true; *hasResultType = true; break;
+    case Op::OpRayQueryGetIntersectionInstanceIdKHR: *hasResult = true; *hasResultType = true; break;
+    case Op::OpRayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR: *hasResult = true; *hasResultType = true; break;
+    case Op::OpRayQueryGetIntersectionGeometryIndexKHR: *hasResult = true; *hasResultType = true; break;
+    case Op::OpRayQueryGetIntersectionPrimitiveIndexKHR: *hasResult = true; *hasResultType = true; break;
+    case Op::OpRayQueryGetIntersectionBarycentricsKHR: *hasResult = true; *hasResultType = true; break;
+    case Op::OpRayQueryGetIntersectionFrontFaceKHR: *hasResult = true; *hasResultType = true; break;
+    case Op::OpRayQueryGetIntersectionCandidateAABBOpaqueKHR: *hasResult = true; *hasResultType = true; break;
+    case Op::OpRayQueryGetIntersectionObjectRayDirectionKHR: *hasResult = true; *hasResultType = true; break;
+    case Op::OpRayQueryGetIntersectionObjectRayOriginKHR: *hasResult = true; *hasResultType = true; break;
+    case Op::OpRayQueryGetWorldRayDirectionKHR: *hasResult = true; *hasResultType = true; break;
+    case Op::OpRayQueryGetWorldRayOriginKHR: *hasResult = true; *hasResultType = true; break;
+    case Op::OpRayQueryGetIntersectionObjectToWorldKHR: *hasResult = true; *hasResultType = true; break;
+    case Op::OpRayQueryGetIntersectionWorldToObjectKHR: *hasResult = true; *hasResultType = true; break;
+    case Op::OpAtomicFAddEXT: *hasResult = true; *hasResultType = true; break;
+    }
+}
+#endif /* SPV_ENABLE_UTILITY_CODE */
+
+// Overload operator| for mask bit combining
+
+inline ImageOperandsMask operator|(ImageOperandsMask a, ImageOperandsMask b) { return ImageOperandsMask(unsigned(a) | unsigned(b)); }
+inline FPFastMathModeMask operator|(FPFastMathModeMask a, FPFastMathModeMask b) { return FPFastMathModeMask(unsigned(a) | unsigned(b)); }
+inline SelectionControlMask operator|(SelectionControlMask a, SelectionControlMask b) { return SelectionControlMask(unsigned(a) | unsigned(b)); }
+inline LoopControlMask operator|(LoopControlMask a, LoopControlMask b) { return LoopControlMask(unsigned(a) | unsigned(b)); }
+inline FunctionControlMask operator|(FunctionControlMask a, FunctionControlMask b) { return FunctionControlMask(unsigned(a) | unsigned(b)); }
+inline MemorySemanticsMask operator|(MemorySemanticsMask a, MemorySemanticsMask b) { return MemorySemanticsMask(unsigned(a) | unsigned(b)); }
+inline MemoryAccessMask operator|(MemoryAccessMask a, MemoryAccessMask b) { return MemoryAccessMask(unsigned(a) | unsigned(b)); }
+inline KernelProfilingInfoMask operator|(KernelProfilingInfoMask a, KernelProfilingInfoMask b) { return KernelProfilingInfoMask(unsigned(a) | unsigned(b)); }
+inline RayFlagsMask operator|(RayFlagsMask a, RayFlagsMask b) { return RayFlagsMask(unsigned(a) | unsigned(b)); }
+inline FragmentShadingRateMask operator|(FragmentShadingRateMask a, FragmentShadingRateMask b) { return FragmentShadingRateMask(unsigned(a) | unsigned(b)); }
+
+}  // end namespace spv
+
+#endif  // #ifndef spirv_HPP
+
diff --git a/libs/spirv-headers/spirv/unified1/spirv.json b/libs/spirv-headers/spirv/unified1/spirv.json
new file mode 100644
index 00000000000..835327487c3
--- /dev/null
+++ b/libs/spirv-headers/spirv/unified1/spirv.json
@@ -0,0 +1,1604 @@
+{
+    "spv":
+    {
+        "meta":
+        {
+            "Comment":
+            [
+                [
+                    "Copyright (c) 2014-2020 The Khronos Group Inc.",
+                    "",
+                    "Permission is hereby granted, free of charge, to any person obtaining a copy",
+                    "of this software and/or associated documentation files (the \"Materials\"),",
+                    "to deal in the Materials without restriction, including without limitation",
+                    "the rights to use, copy, modify, merge, publish, distribute, sublicense,",
+                    "and/or sell copies of the Materials, and to permit persons to whom the",
+                    "Materials are furnished to do so, subject to the following conditions:",
+                    "",
+                    "The above copyright notice and this permission notice shall be included in",
+                    "all copies or substantial portions of the Materials.",
+                    "",
+                    "MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS KHRONOS",
+                    "STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS SPECIFICATIONS AND",
+                    "HEADER INFORMATION ARE LOCATED AT https://www.khronos.org/registry/ ",
+                    "",
+                    "THE MATERIALS ARE PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS",
+                    "OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,",
+                    "FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL",
+                    "THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER",
+                    "LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING",
+                    "FROM,OUT OF OR IN CONNECTION WITH THE MATERIALS OR THE USE OR OTHER DEALINGS",
+                    "IN THE MATERIALS."
+                ],
+                [
+                    "This header is automatically generated by the same tool that creates",
+                    "the Binary Section of the SPIR-V specification."
+                ],
+                [
+                    "Enumeration tokens for SPIR-V, in various styles:",
+                    "  C, C++, C++11, JSON, Lua, Python, C#, D",
+                    "",
+                    "- C will have tokens with a \"Spv\" prefix, e.g.: SpvSourceLanguageGLSL",
+                    "- C++ will have tokens in the \"spv\" name space, e.g.: spv::SourceLanguageGLSL",
+                    "- C++11 will use enum classes in the spv namespace, e.g.: spv::SourceLanguage::GLSL",
+                    "- Lua will use tables, e.g.: spv.SourceLanguage.GLSL",
+                    "- Python will use dictionaries, e.g.: spv['SourceLanguage']['GLSL']",
+                    "- C# will use enum classes in the Specification class located in the \"Spv\" namespace,",
+                    "    e.g.: Spv.Specification.SourceLanguage.GLSL",
+                    "- D will have tokens under the \"spv\" module, e.g: spv.SourceLanguage.GLSL",
+                    "",
+                    "Some tokens act like mask values, which can be OR'd together,",
+                    "while others are mutually exclusive.  The mask-like ones have",
+                    "\"Mask\" in their name, and a parallel enum that has the shift",
+                    "amount (1 << x) for each corresponding enumerant."
+                ]
+            ],
+            "MagicNumber": 119734787,
+            "Version": 66816,
+            "Revision": 4,
+            "OpCodeMask": 65535,
+            "WordCountShift": 16
+        },
+        "enum":
+        [
+            {
+                "Name": "SourceLanguage",
+                "Type": "Value",
+                "Values":
+                {
+                    "Unknown": 0,
+                    "ESSL": 1,
+                    "GLSL": 2,
+                    "OpenCL_C": 3,
+                    "OpenCL_CPP": 4,
+                    "HLSL": 5
+                }
+            },
+            {
+                "Name": "ExecutionModel",
+                "Type": "Value",
+                "Values":
+                {
+                    "Vertex": 0,
+                    "TessellationControl": 1,
+                    "TessellationEvaluation": 2,
+                    "Geometry": 3,
+                    "Fragment": 4,
+                    "GLCompute": 5,
+                    "Kernel": 6,
+                    "TaskNV": 5267,
+                    "MeshNV": 5268,
+                    "RayGenerationKHR": 5313,
+                    "RayGenerationNV": 5313,
+                    "IntersectionKHR": 5314,
+                    "IntersectionNV": 5314,
+                    "AnyHitKHR": 5315,
+                    "AnyHitNV": 5315,
+                    "ClosestHitKHR": 5316,
+                    "ClosestHitNV": 5316,
+                    "MissKHR": 5317,
+                    "MissNV": 5317,
+                    "CallableKHR": 5318,
+                    "CallableNV": 5318
+                }
+            },
+            {
+                "Name": "AddressingModel",
+                "Type": "Value",
+                "Values":
+                {
+                    "Logical": 0,
+                    "Physical32": 1,
+                    "Physical64": 2,
+                    "PhysicalStorageBuffer64": 5348,
+                    "PhysicalStorageBuffer64EXT": 5348
+                }
+            },
+            {
+                "Name": "MemoryModel",
+                "Type": "Value",
+                "Values":
+                {
+                    "Simple": 0,
+                    "GLSL450": 1,
+                    "OpenCL": 2,
+                    "Vulkan": 3,
+                    "VulkanKHR": 3
+                }
+            },
+            {
+                "Name": "ExecutionMode",
+                "Type": "Value",
+                "Values":
+                {
+                    "Invocations": 0,
+                    "SpacingEqual": 1,
+                    "SpacingFractionalEven": 2,
+                    "SpacingFractionalOdd": 3,
+                    "VertexOrderCw": 4,
+                    "VertexOrderCcw": 5,
+                    "PixelCenterInteger": 6,
+                    "OriginUpperLeft": 7,
+                    "OriginLowerLeft": 8,
+                    "EarlyFragmentTests": 9,
+                    "PointMode": 10,
+                    "Xfb": 11,
+                    "DepthReplacing": 12,
+                    "DepthGreater": 14,
+                    "DepthLess": 15,
+                    "DepthUnchanged": 16,
+                    "LocalSize": 17,
+                    "LocalSizeHint": 18,
+                    "InputPoints": 19,
+                    "InputLines": 20,
+                    "InputLinesAdjacency": 21,
+                    "Triangles": 22,
+                    "InputTrianglesAdjacency": 23,
+                    "Quads": 24,
+                    "Isolines": 25,
+                    "OutputVertices": 26,
+                    "OutputPoints": 27,
+                    "OutputLineStrip": 28,
+                    "OutputTriangleStrip": 29,
+                    "VecTypeHint": 30,
+                    "ContractionOff": 31,
+                    "Initializer": 33,
+                    "Finalizer": 34,
+                    "SubgroupSize": 35,
+                    "SubgroupsPerWorkgroup": 36,
+                    "SubgroupsPerWorkgroupId": 37,
+                    "LocalSizeId": 38,
+                    "LocalSizeHintId": 39,
+                    "PostDepthCoverage": 4446,
+                    "DenormPreserve": 4459,
+                    "DenormFlushToZero": 4460,
+                    "SignedZeroInfNanPreserve": 4461,
+                    "RoundingModeRTE": 4462,
+                    "RoundingModeRTZ": 4463,
+                    "StencilRefReplacingEXT": 5027,
+                    "OutputLinesNV": 5269,
+                    "OutputPrimitivesNV": 5270,
+                    "DerivativeGroupQuadsNV": 5289,
+                    "DerivativeGroupLinearNV": 5290,
+                    "OutputTrianglesNV": 5298,
+                    "PixelInterlockOrderedEXT": 5366,
+                    "PixelInterlockUnorderedEXT": 5367,
+                    "SampleInterlockOrderedEXT": 5368,
+                    "SampleInterlockUnorderedEXT": 5369,
+                    "ShadingRateInterlockOrderedEXT": 5370,
+                    "ShadingRateInterlockUnorderedEXT": 5371,
+                    "MaxWorkgroupSizeINTEL": 5893,
+                    "MaxWorkDimINTEL": 5894,
+                    "NoGlobalOffsetINTEL": 5895,
+                    "NumSIMDWorkitemsINTEL": 5896
+                }
+            },
+            {
+                "Name": "StorageClass",
+                "Type": "Value",
+                "Values":
+                {
+                    "UniformConstant": 0,
+                    "Input": 1,
+                    "Uniform": 2,
+                    "Output": 3,
+                    "Workgroup": 4,
+                    "CrossWorkgroup": 5,
+                    "Private": 6,
+                    "Function": 7,
+                    "Generic": 8,
+                    "PushConstant": 9,
+                    "AtomicCounter": 10,
+                    "Image": 11,
+                    "StorageBuffer": 12,
+                    "CallableDataKHR": 5328,
+                    "CallableDataNV": 5328,
+                    "IncomingCallableDataKHR": 5329,
+                    "IncomingCallableDataNV": 5329,
+                    "RayPayloadKHR": 5338,
+                    "RayPayloadNV": 5338,
+                    "HitAttributeKHR": 5339,
+                    "HitAttributeNV": 5339,
+                    "IncomingRayPayloadKHR": 5342,
+                    "IncomingRayPayloadNV": 5342,
+                    "ShaderRecordBufferKHR": 5343,
+                    "ShaderRecordBufferNV": 5343,
+                    "PhysicalStorageBuffer": 5349,
+                    "PhysicalStorageBufferEXT": 5349,
+                    "CodeSectionINTEL": 5605
+                }
+            },
+            {
+                "Name": "Dim",
+                "Type": "Value",
+                "Values":
+                {
+                    "Dim1D": 0,
+                    "Dim2D": 1,
+                    "Dim3D": 2,
+                    "Cube": 3,
+                    "Rect": 4,
+                    "Buffer": 5,
+                    "SubpassData": 6
+                }
+            },
+            {
+                "Name": "SamplerAddressingMode",
+                "Type": "Value",
+                "Values":
+                {
+                    "None": 0,
+                    "ClampToEdge": 1,
+                    "Clamp": 2,
+                    "Repeat": 3,
+                    "RepeatMirrored": 4
+                }
+            },
+            {
+                "Name": "SamplerFilterMode",
+                "Type": "Value",
+                "Values":
+                {
+                    "Nearest": 0,
+                    "Linear": 1
+                }
+            },
+            {
+                "Name": "ImageFormat",
+                "Type": "Value",
+                "Values":
+                {
+                    "Unknown": 0,
+                    "Rgba32f": 1,
+                    "Rgba16f": 2,
+                    "R32f": 3,
+                    "Rgba8": 4,
+                    "Rgba8Snorm": 5,
+                    "Rg32f": 6,
+                    "Rg16f": 7,
+                    "R11fG11fB10f": 8,
+                    "R16f": 9,
+                    "Rgba16": 10,
+                    "Rgb10A2": 11,
+                    "Rg16": 12,
+                    "Rg8": 13,
+                    "R16": 14,
+                    "R8": 15,
+                    "Rgba16Snorm": 16,
+                    "Rg16Snorm": 17,
+                    "Rg8Snorm": 18,
+                    "R16Snorm": 19,
+                    "R8Snorm": 20,
+                    "Rgba32i": 21,
+                    "Rgba16i": 22,
+                    "Rgba8i": 23,
+                    "R32i": 24,
+                    "Rg32i": 25,
+                    "Rg16i": 26,
+                    "Rg8i": 27,
+                    "R16i": 28,
+                    "R8i": 29,
+                    "Rgba32ui": 30,
+                    "Rgba16ui": 31,
+                    "Rgba8ui": 32,
+                    "R32ui": 33,
+                    "Rgb10a2ui": 34,
+                    "Rg32ui": 35,
+                    "Rg16ui": 36,
+                    "Rg8ui": 37,
+                    "R16ui": 38,
+                    "R8ui": 39,
+                    "R64ui": 40,
+                    "R64i": 41
+                }
+            },
+            {
+                "Name": "ImageChannelOrder",
+                "Type": "Value",
+                "Values":
+                {
+                    "R": 0,
+                    "A": 1,
+                    "RG": 2,
+                    "RA": 3,
+                    "RGB": 4,
+                    "RGBA": 5,
+                    "BGRA": 6,
+                    "ARGB": 7,
+                    "Intensity": 8,
+                    "Luminance": 9,
+                    "Rx": 10,
+                    "RGx": 11,
+                    "RGBx": 12,
+                    "Depth": 13,
+                    "DepthStencil": 14,
+                    "sRGB": 15,
+                    "sRGBx": 16,
+                    "sRGBA": 17,
+                    "sBGRA": 18,
+                    "ABGR": 19
+                }
+            },
+            {
+                "Name": "ImageChannelDataType",
+                "Type": "Value",
+                "Values":
+                {
+                    "SnormInt8": 0,
+                    "SnormInt16": 1,
+                    "UnormInt8": 2,
+                    "UnormInt16": 3,
+                    "UnormShort565": 4,
+                    "UnormShort555": 5,
+                    "UnormInt101010": 6,
+                    "SignedInt8": 7,
+                    "SignedInt16": 8,
+                    "SignedInt32": 9,
+                    "UnsignedInt8": 10,
+                    "UnsignedInt16": 11,
+                    "UnsignedInt32": 12,
+                    "HalfFloat": 13,
+                    "Float": 14,
+                    "UnormInt24": 15,
+                    "UnormInt101010_2": 16
+                }
+            },
+            {
+                "Name": "ImageOperands",
+                "Type": "Bit",
+                "Values":
+                {
+                    "Bias": 0,
+                    "Lod": 1,
+                    "Grad": 2,
+                    "ConstOffset": 3,
+                    "Offset": 4,
+                    "ConstOffsets": 5,
+                    "Sample": 6,
+                    "MinLod": 7,
+                    "MakeTexelAvailable": 8,
+                    "MakeTexelAvailableKHR": 8,
+                    "MakeTexelVisible": 9,
+                    "MakeTexelVisibleKHR": 9,
+                    "NonPrivateTexel": 10,
+                    "NonPrivateTexelKHR": 10,
+                    "VolatileTexel": 11,
+                    "VolatileTexelKHR": 11,
+                    "SignExtend": 12,
+                    "ZeroExtend": 13
+                }
+            },
+            {
+                "Name": "FPFastMathMode",
+                "Type": "Bit",
+                "Values":
+                {
+                    "NotNaN": 0,
+                    "NotInf": 1,
+                    "NSZ": 2,
+                    "AllowRecip": 3,
+                    "Fast": 4
+                }
+            },
+            {
+                "Name": "FPRoundingMode",
+                "Type": "Value",
+                "Values":
+                {
+                    "RTE": 0,
+                    "RTZ": 1,
+                    "RTP": 2,
+                    "RTN": 3
+                }
+            },
+            {
+                "Name": "LinkageType",
+                "Type": "Value",
+                "Values":
+                {
+                    "Export": 0,
+                    "Import": 1
+                }
+            },
+            {
+                "Name": "AccessQualifier",
+                "Type": "Value",
+                "Values":
+                {
+                    "ReadOnly": 0,
+                    "WriteOnly": 1,
+                    "ReadWrite": 2
+                }
+            },
+            {
+                "Name": "FunctionParameterAttribute",
+                "Type": "Value",
+                "Values":
+                {
+                    "Zext": 0,
+                    "Sext": 1,
+                    "ByVal": 2,
+                    "Sret": 3,
+                    "NoAlias": 4,
+                    "NoCapture": 5,
+                    "NoWrite": 6,
+                    "NoReadWrite": 7
+                }
+            },
+            {
+                "Name": "Decoration",
+                "Type": "Value",
+                "Values":
+                {
+                    "RelaxedPrecision": 0,
+                    "SpecId": 1,
+                    "Block": 2,
+                    "BufferBlock": 3,
+                    "RowMajor": 4,
+                    "ColMajor": 5,
+                    "ArrayStride": 6,
+                    "MatrixStride": 7,
+                    "GLSLShared": 8,
+                    "GLSLPacked": 9,
+                    "CPacked": 10,
+                    "BuiltIn": 11,
+                    "NoPerspective": 13,
+                    "Flat": 14,
+                    "Patch": 15,
+                    "Centroid": 16,
+                    "Sample": 17,
+                    "Invariant": 18,
+                    "Restrict": 19,
+                    "Aliased": 20,
+                    "Volatile": 21,
+                    "Constant": 22,
+                    "Coherent": 23,
+                    "NonWritable": 24,
+                    "NonReadable": 25,
+                    "Uniform": 26,
+                    "UniformId": 27,
+                    "SaturatedConversion": 28,
+                    "Stream": 29,
+                    "Location": 30,
+                    "Component": 31,
+                    "Index": 32,
+                    "Binding": 33,
+                    "DescriptorSet": 34,
+                    "Offset": 35,
+                    "XfbBuffer": 36,
+                    "XfbStride": 37,
+                    "FuncParamAttr": 38,
+                    "FPRoundingMode": 39,
+                    "FPFastMathMode": 40,
+                    "LinkageAttributes": 41,
+                    "NoContraction": 42,
+                    "InputAttachmentIndex": 43,
+                    "Alignment": 44,
+                    "MaxByteOffset": 45,
+                    "AlignmentId": 46,
+                    "MaxByteOffsetId": 47,
+                    "NoSignedWrap": 4469,
+                    "NoUnsignedWrap": 4470,
+                    "ExplicitInterpAMD": 4999,
+                    "OverrideCoverageNV": 5248,
+                    "PassthroughNV": 5250,
+                    "ViewportRelativeNV": 5252,
+                    "SecondaryViewportRelativeNV": 5256,
+                    "PerPrimitiveNV": 5271,
+                    "PerViewNV": 5272,
+                    "PerTaskNV": 5273,
+                    "PerVertexNV": 5285,
+                    "NonUniform": 5300,
+                    "NonUniformEXT": 5300,
+                    "RestrictPointer": 5355,
+                    "RestrictPointerEXT": 5355,
+                    "AliasedPointer": 5356,
+                    "AliasedPointerEXT": 5356,
+                    "ReferencedIndirectlyINTEL": 5602,
+                    "CounterBuffer": 5634,
+                    "HlslCounterBufferGOOGLE": 5634,
+                    "HlslSemanticGOOGLE": 5635,
+                    "UserSemantic": 5635,
+                    "UserTypeGOOGLE": 5636,
+                    "RegisterINTEL": 5825,
+                    "MemoryINTEL": 5826,
+                    "NumbanksINTEL": 5827,
+                    "BankwidthINTEL": 5828,
+                    "MaxPrivateCopiesINTEL": 5829,
+                    "SinglepumpINTEL": 5830,
+                    "DoublepumpINTEL": 5831,
+                    "MaxReplicatesINTEL": 5832,
+                    "SimpleDualPortINTEL": 5833,
+                    "MergeINTEL": 5834,
+                    "BankBitsINTEL": 5835,
+                    "ForcePow2DepthINTEL": 5836
+                }
+            },
+            {
+                "Name": "BuiltIn",
+                "Type": "Value",
+                "Values":
+                {
+                    "Position": 0,
+                    "PointSize": 1,
+                    "ClipDistance": 3,
+                    "CullDistance": 4,
+                    "VertexId": 5,
+                    "InstanceId": 6,
+                    "PrimitiveId": 7,
+                    "InvocationId": 8,
+                    "Layer": 9,
+                    "ViewportIndex": 10,
+                    "TessLevelOuter": 11,
+                    "TessLevelInner": 12,
+                    "TessCoord": 13,
+                    "PatchVertices": 14,
+                    "FragCoord": 15,
+                    "PointCoord": 16,
+                    "FrontFacing": 17,
+                    "SampleId": 18,
+                    "SamplePosition": 19,
+                    "SampleMask": 20,
+                    "FragDepth": 22,
+                    "HelperInvocation": 23,
+                    "NumWorkgroups": 24,
+                    "WorkgroupSize": 25,
+                    "WorkgroupId": 26,
+                    "LocalInvocationId": 27,
+                    "GlobalInvocationId": 28,
+                    "LocalInvocationIndex": 29,
+                    "WorkDim": 30,
+                    "GlobalSize": 31,
+                    "EnqueuedWorkgroupSize": 32,
+                    "GlobalOffset": 33,
+                    "GlobalLinearId": 34,
+                    "SubgroupSize": 36,
+                    "SubgroupMaxSize": 37,
+                    "NumSubgroups": 38,
+                    "NumEnqueuedSubgroups": 39,
+                    "SubgroupId": 40,
+                    "SubgroupLocalInvocationId": 41,
+                    "VertexIndex": 42,
+                    "InstanceIndex": 43,
+                    "SubgroupEqMask": 4416,
+                    "SubgroupEqMaskKHR": 4416,
+                    "SubgroupGeMask": 4417,
+                    "SubgroupGeMaskKHR": 4417,
+                    "SubgroupGtMask": 4418,
+                    "SubgroupGtMaskKHR": 4418,
+                    "SubgroupLeMask": 4419,
+                    "SubgroupLeMaskKHR": 4419,
+                    "SubgroupLtMask": 4420,
+                    "SubgroupLtMaskKHR": 4420,
+                    "BaseVertex": 4424,
+                    "BaseInstance": 4425,
+                    "DrawIndex": 4426,
+                    "PrimitiveShadingRateKHR": 4432,
+                    "DeviceIndex": 4438,
+                    "ViewIndex": 4440,
+                    "ShadingRateKHR": 4444,
+                    "BaryCoordNoPerspAMD": 4992,
+                    "BaryCoordNoPerspCentroidAMD": 4993,
+                    "BaryCoordNoPerspSampleAMD": 4994,
+                    "BaryCoordSmoothAMD": 4995,
+                    "BaryCoordSmoothCentroidAMD": 4996,
+                    "BaryCoordSmoothSampleAMD": 4997,
+                    "BaryCoordPullModelAMD": 4998,
+                    "FragStencilRefEXT": 5014,
+                    "ViewportMaskNV": 5253,
+                    "SecondaryPositionNV": 5257,
+                    "SecondaryViewportMaskNV": 5258,
+                    "PositionPerViewNV": 5261,
+                    "ViewportMaskPerViewNV": 5262,
+                    "FullyCoveredEXT": 5264,
+                    "TaskCountNV": 5274,
+                    "PrimitiveCountNV": 5275,
+                    "PrimitiveIndicesNV": 5276,
+                    "ClipDistancePerViewNV": 5277,
+                    "CullDistancePerViewNV": 5278,
+                    "LayerPerViewNV": 5279,
+                    "MeshViewCountNV": 5280,
+                    "MeshViewIndicesNV": 5281,
+                    "BaryCoordNV": 5286,
+                    "BaryCoordNoPerspNV": 5287,
+                    "FragSizeEXT": 5292,
+                    "FragmentSizeNV": 5292,
+                    "FragInvocationCountEXT": 5293,
+                    "InvocationsPerPixelNV": 5293,
+                    "LaunchIdKHR": 5319,
+                    "LaunchIdNV": 5319,
+                    "LaunchSizeKHR": 5320,
+                    "LaunchSizeNV": 5320,
+                    "WorldRayOriginKHR": 5321,
+                    "WorldRayOriginNV": 5321,
+                    "WorldRayDirectionKHR": 5322,
+                    "WorldRayDirectionNV": 5322,
+                    "ObjectRayOriginKHR": 5323,
+                    "ObjectRayOriginNV": 5323,
+                    "ObjectRayDirectionKHR": 5324,
+                    "ObjectRayDirectionNV": 5324,
+                    "RayTminKHR": 5325,
+                    "RayTminNV": 5325,
+                    "RayTmaxKHR": 5326,
+                    "RayTmaxNV": 5326,
+                    "InstanceCustomIndexKHR": 5327,
+                    "InstanceCustomIndexNV": 5327,
+                    "ObjectToWorldKHR": 5330,
+                    "ObjectToWorldNV": 5330,
+                    "WorldToObjectKHR": 5331,
+                    "WorldToObjectNV": 5331,
+                    "HitTKHR": 5332,
+                    "HitTNV": 5332,
+                    "HitKindKHR": 5333,
+                    "HitKindNV": 5333,
+                    "IncomingRayFlagsKHR": 5351,
+                    "IncomingRayFlagsNV": 5351,
+                    "RayGeometryIndexKHR": 5352,
+                    "WarpsPerSMNV": 5374,
+                    "SMCountNV": 5375,
+                    "WarpIDNV": 5376,
+                    "SMIDNV": 5377
+                }
+            },
+            {
+                "Name": "SelectionControl",
+                "Type": "Bit",
+                "Values":
+                {
+                    "Flatten": 0,
+                    "DontFlatten": 1
+                }
+            },
+            {
+                "Name": "LoopControl",
+                "Type": "Bit",
+                "Values":
+                {
+                    "Unroll": 0,
+                    "DontUnroll": 1,
+                    "DependencyInfinite": 2,
+                    "DependencyLength": 3,
+                    "MinIterations": 4,
+                    "MaxIterations": 5,
+                    "IterationMultiple": 6,
+                    "PeelCount": 7,
+                    "PartialCount": 8,
+                    "InitiationIntervalINTEL": 16,
+                    "MaxConcurrencyINTEL": 17,
+                    "DependencyArrayINTEL": 18,
+                    "PipelineEnableINTEL": 19,
+                    "LoopCoalesceINTEL": 20,
+                    "MaxInterleavingINTEL": 21,
+                    "SpeculatedIterationsINTEL": 22
+                }
+            },
+            {
+                "Name": "FunctionControl",
+                "Type": "Bit",
+                "Values":
+                {
+                    "Inline": 0,
+                    "DontInline": 1,
+                    "Pure": 2,
+                    "Const": 3
+                }
+            },
+            {
+                "Name": "MemorySemantics",
+                "Type": "Bit",
+                "Values":
+                {
+                    "Acquire": 1,
+                    "Release": 2,
+                    "AcquireRelease": 3,
+                    "SequentiallyConsistent": 4,
+                    "UniformMemory": 6,
+                    "SubgroupMemory": 7,
+                    "WorkgroupMemory": 8,
+                    "CrossWorkgroupMemory": 9,
+                    "AtomicCounterMemory": 10,
+                    "ImageMemory": 11,
+                    "OutputMemory": 12,
+                    "OutputMemoryKHR": 12,
+                    "MakeAvailable": 13,
+                    "MakeAvailableKHR": 13,
+                    "MakeVisible": 14,
+                    "MakeVisibleKHR": 14,
+                    "Volatile": 15
+                }
+            },
+            {
+                "Name": "MemoryAccess",
+                "Type": "Bit",
+                "Values":
+                {
+                    "Volatile": 0,
+                    "Aligned": 1,
+                    "Nontemporal": 2,
+                    "MakePointerAvailable": 3,
+                    "MakePointerAvailableKHR": 3,
+                    "MakePointerVisible": 4,
+                    "MakePointerVisibleKHR": 4,
+                    "NonPrivatePointer": 5,
+                    "NonPrivatePointerKHR": 5
+                }
+            },
+            {
+                "Name": "Scope",
+                "Type": "Value",
+                "Values":
+                {
+                    "CrossDevice": 0,
+                    "Device": 1,
+                    "Workgroup": 2,
+                    "Subgroup": 3,
+                    "Invocation": 4,
+                    "QueueFamily": 5,
+                    "QueueFamilyKHR": 5,
+                    "ShaderCallKHR": 6
+                }
+            },
+            {
+                "Name": "GroupOperation",
+                "Type": "Value",
+                "Values":
+                {
+                    "Reduce": 0,
+                    "InclusiveScan": 1,
+                    "ExclusiveScan": 2,
+                    "ClusteredReduce": 3,
+                    "PartitionedReduceNV": 6,
+                    "PartitionedInclusiveScanNV": 7,
+                    "PartitionedExclusiveScanNV": 8
+                }
+            },
+            {
+                "Name": "KernelEnqueueFlags",
+                "Type": "Value",
+                "Values":
+                {
+                    "NoWait": 0,
+                    "WaitKernel": 1,
+                    "WaitWorkGroup": 2
+                }
+            },
+            {
+                "Name": "KernelProfilingInfo",
+                "Type": "Bit",
+                "Values":
+                {
+                    "CmdExecTime": 0
+                }
+            },
+            {
+                "Name": "Capability",
+                "Type": "Value",
+                "Values":
+                {
+                    "Matrix": 0,
+                    "Shader": 1,
+                    "Geometry": 2,
+                    "Tessellation": 3,
+                    "Addresses": 4,
+                    "Linkage": 5,
+                    "Kernel": 6,
+                    "Vector16": 7,
+                    "Float16Buffer": 8,
+                    "Float16": 9,
+                    "Float64": 10,
+                    "Int64": 11,
+                    "Int64Atomics": 12,
+                    "ImageBasic": 13,
+                    "ImageReadWrite": 14,
+                    "ImageMipmap": 15,
+                    "Pipes": 17,
+                    "Groups": 18,
+                    "DeviceEnqueue": 19,
+                    "LiteralSampler": 20,
+                    "AtomicStorage": 21,
+                    "Int16": 22,
+                    "TessellationPointSize": 23,
+                    "GeometryPointSize": 24,
+                    "ImageGatherExtended": 25,
+                    "StorageImageMultisample": 27,
+                    "UniformBufferArrayDynamicIndexing": 28,
+                    "SampledImageArrayDynamicIndexing": 29,
+                    "StorageBufferArrayDynamicIndexing": 30,
+                    "StorageImageArrayDynamicIndexing": 31,
+                    "ClipDistance": 32,
+                    "CullDistance": 33,
+                    "ImageCubeArray": 34,
+                    "SampleRateShading": 35,
+                    "ImageRect": 36,
+                    "SampledRect": 37,
+                    "GenericPointer": 38,
+                    "Int8": 39,
+                    "InputAttachment": 40,
+                    "SparseResidency": 41,
+                    "MinLod": 42,
+                    "Sampled1D": 43,
+                    "Image1D": 44,
+                    "SampledCubeArray": 45,
+                    "SampledBuffer": 46,
+                    "ImageBuffer": 47,
+                    "ImageMSArray": 48,
+                    "StorageImageExtendedFormats": 49,
+                    "ImageQuery": 50,
+                    "DerivativeControl": 51,
+                    "InterpolationFunction": 52,
+                    "TransformFeedback": 53,
+                    "GeometryStreams": 54,
+                    "StorageImageReadWithoutFormat": 55,
+                    "StorageImageWriteWithoutFormat": 56,
+                    "MultiViewport": 57,
+                    "SubgroupDispatch": 58,
+                    "NamedBarrier": 59,
+                    "PipeStorage": 60,
+                    "GroupNonUniform": 61,
+                    "GroupNonUniformVote": 62,
+                    "GroupNonUniformArithmetic": 63,
+                    "GroupNonUniformBallot": 64,
+                    "GroupNonUniformShuffle": 65,
+                    "GroupNonUniformShuffleRelative": 66,
+                    "GroupNonUniformClustered": 67,
+                    "GroupNonUniformQuad": 68,
+                    "ShaderLayer": 69,
+                    "ShaderViewportIndex": 70,
+                    "FragmentShadingRateKHR": 4422,
+                    "SubgroupBallotKHR": 4423,
+                    "DrawParameters": 4427,
+                    "SubgroupVoteKHR": 4431,
+                    "StorageBuffer16BitAccess": 4433,
+                    "StorageUniformBufferBlock16": 4433,
+                    "StorageUniform16": 4434,
+                    "UniformAndStorageBuffer16BitAccess": 4434,
+                    "StoragePushConstant16": 4435,
+                    "StorageInputOutput16": 4436,
+                    "DeviceGroup": 4437,
+                    "MultiView": 4439,
+                    "VariablePointersStorageBuffer": 4441,
+                    "VariablePointers": 4442,
+                    "AtomicStorageOps": 4445,
+                    "SampleMaskPostDepthCoverage": 4447,
+                    "StorageBuffer8BitAccess": 4448,
+                    "UniformAndStorageBuffer8BitAccess": 4449,
+                    "StoragePushConstant8": 4450,
+                    "DenormPreserve": 4464,
+                    "DenormFlushToZero": 4465,
+                    "SignedZeroInfNanPreserve": 4466,
+                    "RoundingModeRTE": 4467,
+                    "RoundingModeRTZ": 4468,
+                    "RayQueryProvisionalKHR": 4471,
+                    "RayTraversalPrimitiveCullingProvisionalKHR": 4478,
+                    "Float16ImageAMD": 5008,
+                    "ImageGatherBiasLodAMD": 5009,
+                    "FragmentMaskAMD": 5010,
+                    "StencilExportEXT": 5013,
+                    "ImageReadWriteLodAMD": 5015,
+                    "Int64ImageEXT": 5016,
+                    "ShaderClockKHR": 5055,
+                    "SampleMaskOverrideCoverageNV": 5249,
+                    "GeometryShaderPassthroughNV": 5251,
+                    "ShaderViewportIndexLayerEXT": 5254,
+                    "ShaderViewportIndexLayerNV": 5254,
+                    "ShaderViewportMaskNV": 5255,
+                    "ShaderStereoViewNV": 5259,
+                    "PerViewAttributesNV": 5260,
+                    "FragmentFullyCoveredEXT": 5265,
+                    "MeshShadingNV": 5266,
+                    "ImageFootprintNV": 5282,
+                    "FragmentBarycentricNV": 5284,
+                    "ComputeDerivativeGroupQuadsNV": 5288,
+                    "FragmentDensityEXT": 5291,
+                    "ShadingRateNV": 5291,
+                    "GroupNonUniformPartitionedNV": 5297,
+                    "ShaderNonUniform": 5301,
+                    "ShaderNonUniformEXT": 5301,
+                    "RuntimeDescriptorArray": 5302,
+                    "RuntimeDescriptorArrayEXT": 5302,
+                    "InputAttachmentArrayDynamicIndexing": 5303,
+                    "InputAttachmentArrayDynamicIndexingEXT": 5303,
+                    "UniformTexelBufferArrayDynamicIndexing": 5304,
+                    "UniformTexelBufferArrayDynamicIndexingEXT": 5304,
+                    "StorageTexelBufferArrayDynamicIndexing": 5305,
+                    "StorageTexelBufferArrayDynamicIndexingEXT": 5305,
+                    "UniformBufferArrayNonUniformIndexing": 5306,
+                    "UniformBufferArrayNonUniformIndexingEXT": 5306,
+                    "SampledImageArrayNonUniformIndexing": 5307,
+                    "SampledImageArrayNonUniformIndexingEXT": 5307,
+                    "StorageBufferArrayNonUniformIndexing": 5308,
+                    "StorageBufferArrayNonUniformIndexingEXT": 5308,
+                    "StorageImageArrayNonUniformIndexing": 5309,
+                    "StorageImageArrayNonUniformIndexingEXT": 5309,
+                    "InputAttachmentArrayNonUniformIndexing": 5310,
+                    "InputAttachmentArrayNonUniformIndexingEXT": 5310,
+                    "UniformTexelBufferArrayNonUniformIndexing": 5311,
+                    "UniformTexelBufferArrayNonUniformIndexingEXT": 5311,
+                    "StorageTexelBufferArrayNonUniformIndexing": 5312,
+                    "StorageTexelBufferArrayNonUniformIndexingEXT": 5312,
+                    "RayTracingNV": 5340,
+                    "VulkanMemoryModel": 5345,
+                    "VulkanMemoryModelKHR": 5345,
+                    "VulkanMemoryModelDeviceScope": 5346,
+                    "VulkanMemoryModelDeviceScopeKHR": 5346,
+                    "PhysicalStorageBufferAddresses": 5347,
+                    "PhysicalStorageBufferAddressesEXT": 5347,
+                    "ComputeDerivativeGroupLinearNV": 5350,
+                    "RayTracingProvisionalKHR": 5353,
+                    "CooperativeMatrixNV": 5357,
+                    "FragmentShaderSampleInterlockEXT": 5363,
+                    "FragmentShaderShadingRateInterlockEXT": 5372,
+                    "ShaderSMBuiltinsNV": 5373,
+                    "FragmentShaderPixelInterlockEXT": 5378,
+                    "DemoteToHelperInvocationEXT": 5379,
+                    "SubgroupShuffleINTEL": 5568,
+                    "SubgroupBufferBlockIOINTEL": 5569,
+                    "SubgroupImageBlockIOINTEL": 5570,
+                    "SubgroupImageMediaBlockIOINTEL": 5579,
+                    "IntegerFunctions2INTEL": 5584,
+                    "FunctionPointersINTEL": 5603,
+                    "IndirectReferencesINTEL": 5604,
+                    "SubgroupAvcMotionEstimationINTEL": 5696,
+                    "SubgroupAvcMotionEstimationIntraINTEL": 5697,
+                    "SubgroupAvcMotionEstimationChromaINTEL": 5698,
+                    "FPGAMemoryAttributesINTEL": 5824,
+                    "UnstructuredLoopControlsINTEL": 5886,
+                    "FPGALoopControlsINTEL": 5888,
+                    "KernelAttributesINTEL": 5892,
+                    "FPGAKernelAttributesINTEL": 5897,
+                    "BlockingPipesINTEL": 5945,
+                    "FPGARegINTEL": 5948,
+                    "AtomicFloat32AddEXT": 6033,
+                    "AtomicFloat64AddEXT": 6034
+                }
+            },
+            {
+                "Name": "RayFlags",
+                "Type": "Bit",
+                "Values":
+                {
+                    "OpaqueKHR": 0,
+                    "NoOpaqueKHR": 1,
+                    "TerminateOnFirstHitKHR": 2,
+                    "SkipClosestHitShaderKHR": 3,
+                    "CullBackFacingTrianglesKHR": 4,
+                    "CullFrontFacingTrianglesKHR": 5,
+                    "CullOpaqueKHR": 6,
+                    "CullNoOpaqueKHR": 7,
+                    "SkipTrianglesKHR": 8,
+                    "SkipAABBsKHR": 9
+                }
+            },
+            {
+                "Name": "RayQueryIntersection",
+                "Type": "Value",
+                "Values":
+                {
+                    "RayQueryCandidateIntersectionKHR": 0,
+                    "RayQueryCommittedIntersectionKHR": 1
+                }
+            },
+            {
+                "Name": "RayQueryCommittedIntersectionType",
+                "Type": "Value",
+                "Values":
+                {
+                    "RayQueryCommittedIntersectionNoneKHR": 0,
+                    "RayQueryCommittedIntersectionTriangleKHR": 1,
+                    "RayQueryCommittedIntersectionGeneratedKHR": 2
+                }
+            },
+            {
+                "Name": "RayQueryCandidateIntersectionType",
+                "Type": "Value",
+                "Values":
+                {
+                    "RayQueryCandidateIntersectionTriangleKHR": 0,
+                    "RayQueryCandidateIntersectionAABBKHR": 1
+                }
+            },
+            {
+                "Name": "FragmentShadingRate",
+                "Type": "Bit",
+                "Values":
+                {
+                    "Vertical2Pixels": 0,
+                    "Vertical4Pixels": 1,
+                    "Horizontal2Pixels": 2,
+                    "Horizontal4Pixels": 3
+                }
+            },
+            {
+                "Name": "Op",
+                "Type": "Value",
+                "Values":
+                {
+                    "OpNop": 0,
+                    "OpUndef": 1,
+                    "OpSourceContinued": 2,
+                    "OpSource": 3,
+                    "OpSourceExtension": 4,
+                    "OpName": 5,
+                    "OpMemberName": 6,
+                    "OpString": 7,
+                    "OpLine": 8,
+                    "OpExtension": 10,
+                    "OpExtInstImport": 11,
+                    "OpExtInst": 12,
+                    "OpMemoryModel": 14,
+                    "OpEntryPoint": 15,
+                    "OpExecutionMode": 16,
+                    "OpCapability": 17,
+                    "OpTypeVoid": 19,
+                    "OpTypeBool": 20,
+                    "OpTypeInt": 21,
+                    "OpTypeFloat": 22,
+                    "OpTypeVector": 23,
+                    "OpTypeMatrix": 24,
+                    "OpTypeImage": 25,
+                    "OpTypeSampler": 26,
+                    "OpTypeSampledImage": 27,
+                    "OpTypeArray": 28,
+                    "OpTypeRuntimeArray": 29,
+                    "OpTypeStruct": 30,
+                    "OpTypeOpaque": 31,
+                    "OpTypePointer": 32,
+                    "OpTypeFunction": 33,
+                    "OpTypeEvent": 34,
+                    "OpTypeDeviceEvent": 35,
+                    "OpTypeReserveId": 36,
+                    "OpTypeQueue": 37,
+                    "OpTypePipe": 38,
+                    "OpTypeForwardPointer": 39,
+                    "OpConstantTrue": 41,
+                    "OpConstantFalse": 42,
+                    "OpConstant": 43,
+                    "OpConstantComposite": 44,
+                    "OpConstantSampler": 45,
+                    "OpConstantNull": 46,
+                    "OpSpecConstantTrue": 48,
+                    "OpSpecConstantFalse": 49,
+                    "OpSpecConstant": 50,
+                    "OpSpecConstantComposite": 51,
+                    "OpSpecConstantOp": 52,
+                    "OpFunction": 54,
+                    "OpFunctionParameter": 55,
+                    "OpFunctionEnd": 56,
+                    "OpFunctionCall": 57,
+                    "OpVariable": 59,
+                    "OpImageTexelPointer": 60,
+                    "OpLoad": 61,
+                    "OpStore": 62,
+                    "OpCopyMemory": 63,
+                    "OpCopyMemorySized": 64,
+                    "OpAccessChain": 65,
+                    "OpInBoundsAccessChain": 66,
+                    "OpPtrAccessChain": 67,
+                    "OpArrayLength": 68,
+                    "OpGenericPtrMemSemantics": 69,
+                    "OpInBoundsPtrAccessChain": 70,
+                    "OpDecorate": 71,
+                    "OpMemberDecorate": 72,
+                    "OpDecorationGroup": 73,
+                    "OpGroupDecorate": 74,
+                    "OpGroupMemberDecorate": 75,
+                    "OpVectorExtractDynamic": 77,
+                    "OpVectorInsertDynamic": 78,
+                    "OpVectorShuffle": 79,
+                    "OpCompositeConstruct": 80,
+                    "OpCompositeExtract": 81,
+                    "OpCompositeInsert": 82,
+                    "OpCopyObject": 83,
+                    "OpTranspose": 84,
+                    "OpSampledImage": 86,
+                    "OpImageSampleImplicitLod": 87,
+                    "OpImageSampleExplicitLod": 88,
+                    "OpImageSampleDrefImplicitLod": 89,
+                    "OpImageSampleDrefExplicitLod": 90,
+                    "OpImageSampleProjImplicitLod": 91,
+                    "OpImageSampleProjExplicitLod": 92,
+                    "OpImageSampleProjDrefImplicitLod": 93,
+                    "OpImageSampleProjDrefExplicitLod": 94,
+                    "OpImageFetch": 95,
+                    "OpImageGather": 96,
+                    "OpImageDrefGather": 97,
+                    "OpImageRead": 98,
+                    "OpImageWrite": 99,
+                    "OpImage": 100,
+                    "OpImageQueryFormat": 101,
+                    "OpImageQueryOrder": 102,
+                    "OpImageQuerySizeLod": 103,
+                    "OpImageQuerySize": 104,
+                    "OpImageQueryLod": 105,
+                    "OpImageQueryLevels": 106,
+                    "OpImageQuerySamples": 107,
+                    "OpConvertFToU": 109,
+                    "OpConvertFToS": 110,
+                    "OpConvertSToF": 111,
+                    "OpConvertUToF": 112,
+                    "OpUConvert": 113,
+                    "OpSConvert": 114,
+                    "OpFConvert": 115,
+                    "OpQuantizeToF16": 116,
+                    "OpConvertPtrToU": 117,
+                    "OpSatConvertSToU": 118,
+                    "OpSatConvertUToS": 119,
+                    "OpConvertUToPtr": 120,
+                    "OpPtrCastToGeneric": 121,
+                    "OpGenericCastToPtr": 122,
+                    "OpGenericCastToPtrExplicit": 123,
+                    "OpBitcast": 124,
+                    "OpSNegate": 126,
+                    "OpFNegate": 127,
+                    "OpIAdd": 128,
+                    "OpFAdd": 129,
+                    "OpISub": 130,
+                    "OpFSub": 131,
+                    "OpIMul": 132,
+                    "OpFMul": 133,
+                    "OpUDiv": 134,
+                    "OpSDiv": 135,
+                    "OpFDiv": 136,
+                    "OpUMod": 137,
+                    "OpSRem": 138,
+                    "OpSMod": 139,
+                    "OpFRem": 140,
+                    "OpFMod": 141,
+                    "OpVectorTimesScalar": 142,
+                    "OpMatrixTimesScalar": 143,
+                    "OpVectorTimesMatrix": 144,
+                    "OpMatrixTimesVector": 145,
+                    "OpMatrixTimesMatrix": 146,
+                    "OpOuterProduct": 147,
+                    "OpDot": 148,
+                    "OpIAddCarry": 149,
+                    "OpISubBorrow": 150,
+                    "OpUMulExtended": 151,
+                    "OpSMulExtended": 152,
+                    "OpAny": 154,
+                    "OpAll": 155,
+                    "OpIsNan": 156,
+                    "OpIsInf": 157,
+                    "OpIsFinite": 158,
+                    "OpIsNormal": 159,
+                    "OpSignBitSet": 160,
+                    "OpLessOrGreater": 161,
+                    "OpOrdered": 162,
+                    "OpUnordered": 163,
+                    "OpLogicalEqual": 164,
+                    "OpLogicalNotEqual": 165,
+                    "OpLogicalOr": 166,
+                    "OpLogicalAnd": 167,
+                    "OpLogicalNot": 168,
+                    "OpSelect": 169,
+                    "OpIEqual": 170,
+                    "OpINotEqual": 171,
+                    "OpUGreaterThan": 172,
+                    "OpSGreaterThan": 173,
+                    "OpUGreaterThanEqual": 174,
+                    "OpSGreaterThanEqual": 175,
+                    "OpULessThan": 176,
+                    "OpSLessThan": 177,
+                    "OpULessThanEqual": 178,
+                    "OpSLessThanEqual": 179,
+                    "OpFOrdEqual": 180,
+                    "OpFUnordEqual": 181,
+                    "OpFOrdNotEqual": 182,
+                    "OpFUnordNotEqual": 183,
+                    "OpFOrdLessThan": 184,
+                    "OpFUnordLessThan": 185,
+                    "OpFOrdGreaterThan": 186,
+                    "OpFUnordGreaterThan": 187,
+                    "OpFOrdLessThanEqual": 188,
+                    "OpFUnordLessThanEqual": 189,
+                    "OpFOrdGreaterThanEqual": 190,
+                    "OpFUnordGreaterThanEqual": 191,
+                    "OpShiftRightLogical": 194,
+                    "OpShiftRightArithmetic": 195,
+                    "OpShiftLeftLogical": 196,
+                    "OpBitwiseOr": 197,
+                    "OpBitwiseXor": 198,
+                    "OpBitwiseAnd": 199,
+                    "OpNot": 200,
+                    "OpBitFieldInsert": 201,
+                    "OpBitFieldSExtract": 202,
+                    "OpBitFieldUExtract": 203,
+                    "OpBitReverse": 204,
+                    "OpBitCount": 205,
+                    "OpDPdx": 207,
+                    "OpDPdy": 208,
+                    "OpFwidth": 209,
+                    "OpDPdxFine": 210,
+                    "OpDPdyFine": 211,
+                    "OpFwidthFine": 212,
+                    "OpDPdxCoarse": 213,
+                    "OpDPdyCoarse": 214,
+                    "OpFwidthCoarse": 215,
+                    "OpEmitVertex": 218,
+                    "OpEndPrimitive": 219,
+                    "OpEmitStreamVertex": 220,
+                    "OpEndStreamPrimitive": 221,
+                    "OpControlBarrier": 224,
+                    "OpMemoryBarrier": 225,
+                    "OpAtomicLoad": 227,
+                    "OpAtomicStore": 228,
+                    "OpAtomicExchange": 229,
+                    "OpAtomicCompareExchange": 230,
+                    "OpAtomicCompareExchangeWeak": 231,
+                    "OpAtomicIIncrement": 232,
+                    "OpAtomicIDecrement": 233,
+                    "OpAtomicIAdd": 234,
+                    "OpAtomicISub": 235,
+                    "OpAtomicSMin": 236,
+                    "OpAtomicUMin": 237,
+                    "OpAtomicSMax": 238,
+                    "OpAtomicUMax": 239,
+                    "OpAtomicAnd": 240,
+                    "OpAtomicOr": 241,
+                    "OpAtomicXor": 242,
+                    "OpPhi": 245,
+                    "OpLoopMerge": 246,
+                    "OpSelectionMerge": 247,
+                    "OpLabel": 248,
+                    "OpBranch": 249,
+                    "OpBranchConditional": 250,
+                    "OpSwitch": 251,
+                    "OpKill": 252,
+                    "OpReturn": 253,
+                    "OpReturnValue": 254,
+                    "OpUnreachable": 255,
+                    "OpLifetimeStart": 256,
+                    "OpLifetimeStop": 257,
+                    "OpGroupAsyncCopy": 259,
+                    "OpGroupWaitEvents": 260,
+                    "OpGroupAll": 261,
+                    "OpGroupAny": 262,
+                    "OpGroupBroadcast": 263,
+                    "OpGroupIAdd": 264,
+                    "OpGroupFAdd": 265,
+                    "OpGroupFMin": 266,
+                    "OpGroupUMin": 267,
+                    "OpGroupSMin": 268,
+                    "OpGroupFMax": 269,
+                    "OpGroupUMax": 270,
+                    "OpGroupSMax": 271,
+                    "OpReadPipe": 274,
+                    "OpWritePipe": 275,
+                    "OpReservedReadPipe": 276,
+                    "OpReservedWritePipe": 277,
+                    "OpReserveReadPipePackets": 278,
+                    "OpReserveWritePipePackets": 279,
+                    "OpCommitReadPipe": 280,
+                    "OpCommitWritePipe": 281,
+                    "OpIsValidReserveId": 282,
+                    "OpGetNumPipePackets": 283,
+                    "OpGetMaxPipePackets": 284,
+                    "OpGroupReserveReadPipePackets": 285,
+                    "OpGroupReserveWritePipePackets": 286,
+                    "OpGroupCommitReadPipe": 287,
+                    "OpGroupCommitWritePipe": 288,
+                    "OpEnqueueMarker": 291,
+                    "OpEnqueueKernel": 292,
+                    "OpGetKernelNDrangeSubGroupCount": 293,
+                    "OpGetKernelNDrangeMaxSubGroupSize": 294,
+                    "OpGetKernelWorkGroupSize": 295,
+                    "OpGetKernelPreferredWorkGroupSizeMultiple": 296,
+                    "OpRetainEvent": 297,
+                    "OpReleaseEvent": 298,
+                    "OpCreateUserEvent": 299,
+                    "OpIsValidEvent": 300,
+                    "OpSetUserEventStatus": 301,
+                    "OpCaptureEventProfilingInfo": 302,
+                    "OpGetDefaultQueue": 303,
+                    "OpBuildNDRange": 304,
+                    "OpImageSparseSampleImplicitLod": 305,
+                    "OpImageSparseSampleExplicitLod": 306,
+                    "OpImageSparseSampleDrefImplicitLod": 307,
+                    "OpImageSparseSampleDrefExplicitLod": 308,
+                    "OpImageSparseSampleProjImplicitLod": 309,
+                    "OpImageSparseSampleProjExplicitLod": 310,
+                    "OpImageSparseSampleProjDrefImplicitLod": 311,
+                    "OpImageSparseSampleProjDrefExplicitLod": 312,
+                    "OpImageSparseFetch": 313,
+                    "OpImageSparseGather": 314,
+                    "OpImageSparseDrefGather": 315,
+                    "OpImageSparseTexelsResident": 316,
+                    "OpNoLine": 317,
+                    "OpAtomicFlagTestAndSet": 318,
+                    "OpAtomicFlagClear": 319,
+                    "OpImageSparseRead": 320,
+                    "OpSizeOf": 321,
+                    "OpTypePipeStorage": 322,
+                    "OpConstantPipeStorage": 323,
+                    "OpCreatePipeFromPipeStorage": 324,
+                    "OpGetKernelLocalSizeForSubgroupCount": 325,
+                    "OpGetKernelMaxNumSubgroups": 326,
+                    "OpTypeNamedBarrier": 327,
+                    "OpNamedBarrierInitialize": 328,
+                    "OpMemoryNamedBarrier": 329,
+                    "OpModuleProcessed": 330,
+                    "OpExecutionModeId": 331,
+                    "OpDecorateId": 332,
+                    "OpGroupNonUniformElect": 333,
+                    "OpGroupNonUniformAll": 334,
+                    "OpGroupNonUniformAny": 335,
+                    "OpGroupNonUniformAllEqual": 336,
+                    "OpGroupNonUniformBroadcast": 337,
+                    "OpGroupNonUniformBroadcastFirst": 338,
+                    "OpGroupNonUniformBallot": 339,
+                    "OpGroupNonUniformInverseBallot": 340,
+                    "OpGroupNonUniformBallotBitExtract": 341,
+                    "OpGroupNonUniformBallotBitCount": 342,
+                    "OpGroupNonUniformBallotFindLSB": 343,
+                    "OpGroupNonUniformBallotFindMSB": 344,
+                    "OpGroupNonUniformShuffle": 345,
+                    "OpGroupNonUniformShuffleXor": 346,
+                    "OpGroupNonUniformShuffleUp": 347,
+                    "OpGroupNonUniformShuffleDown": 348,
+                    "OpGroupNonUniformIAdd": 349,
+                    "OpGroupNonUniformFAdd": 350,
+                    "OpGroupNonUniformIMul": 351,
+                    "OpGroupNonUniformFMul": 352,
+                    "OpGroupNonUniformSMin": 353,
+                    "OpGroupNonUniformUMin": 354,
+                    "OpGroupNonUniformFMin": 355,
+                    "OpGroupNonUniformSMax": 356,
+                    "OpGroupNonUniformUMax": 357,
+                    "OpGroupNonUniformFMax": 358,
+                    "OpGroupNonUniformBitwiseAnd": 359,
+                    "OpGroupNonUniformBitwiseOr": 360,
+                    "OpGroupNonUniformBitwiseXor": 361,
+                    "OpGroupNonUniformLogicalAnd": 362,
+                    "OpGroupNonUniformLogicalOr": 363,
+                    "OpGroupNonUniformLogicalXor": 364,
+                    "OpGroupNonUniformQuadBroadcast": 365,
+                    "OpGroupNonUniformQuadSwap": 366,
+                    "OpCopyLogical": 400,
+                    "OpPtrEqual": 401,
+                    "OpPtrNotEqual": 402,
+                    "OpPtrDiff": 403,
+                    "OpTerminateInvocation": 4416,
+                    "OpSubgroupBallotKHR": 4421,
+                    "OpSubgroupFirstInvocationKHR": 4422,
+                    "OpSubgroupAllKHR": 4428,
+                    "OpSubgroupAnyKHR": 4429,
+                    "OpSubgroupAllEqualKHR": 4430,
+                    "OpSubgroupReadInvocationKHR": 4432,
+                    "OpTypeRayQueryProvisionalKHR": 4472,
+                    "OpRayQueryInitializeKHR": 4473,
+                    "OpRayQueryTerminateKHR": 4474,
+                    "OpRayQueryGenerateIntersectionKHR": 4475,
+                    "OpRayQueryConfirmIntersectionKHR": 4476,
+                    "OpRayQueryProceedKHR": 4477,
+                    "OpRayQueryGetIntersectionTypeKHR": 4479,
+                    "OpGroupIAddNonUniformAMD": 5000,
+                    "OpGroupFAddNonUniformAMD": 5001,
+                    "OpGroupFMinNonUniformAMD": 5002,
+                    "OpGroupUMinNonUniformAMD": 5003,
+                    "OpGroupSMinNonUniformAMD": 5004,
+                    "OpGroupFMaxNonUniformAMD": 5005,
+                    "OpGroupUMaxNonUniformAMD": 5006,
+                    "OpGroupSMaxNonUniformAMD": 5007,
+                    "OpFragmentMaskFetchAMD": 5011,
+                    "OpFragmentFetchAMD": 5012,
+                    "OpReadClockKHR": 5056,
+                    "OpImageSampleFootprintNV": 5283,
+                    "OpGroupNonUniformPartitionNV": 5296,
+                    "OpWritePackedPrimitiveIndices4x8NV": 5299,
+                    "OpReportIntersectionKHR": 5334,
+                    "OpReportIntersectionNV": 5334,
+                    "OpIgnoreIntersectionKHR": 5335,
+                    "OpIgnoreIntersectionNV": 5335,
+                    "OpTerminateRayKHR": 5336,
+                    "OpTerminateRayNV": 5336,
+                    "OpTraceNV": 5337,
+                    "OpTraceRayKHR": 5337,
+                    "OpTypeAccelerationStructureKHR": 5341,
+                    "OpTypeAccelerationStructureNV": 5341,
+                    "OpExecuteCallableKHR": 5344,
+                    "OpExecuteCallableNV": 5344,
+                    "OpTypeCooperativeMatrixNV": 5358,
+                    "OpCooperativeMatrixLoadNV": 5359,
+                    "OpCooperativeMatrixStoreNV": 5360,
+                    "OpCooperativeMatrixMulAddNV": 5361,
+                    "OpCooperativeMatrixLengthNV": 5362,
+                    "OpBeginInvocationInterlockEXT": 5364,
+                    "OpEndInvocationInterlockEXT": 5365,
+                    "OpDemoteToHelperInvocationEXT": 5380,
+                    "OpIsHelperInvocationEXT": 5381,
+                    "OpSubgroupShuffleINTEL": 5571,
+                    "OpSubgroupShuffleDownINTEL": 5572,
+                    "OpSubgroupShuffleUpINTEL": 5573,
+                    "OpSubgroupShuffleXorINTEL": 5574,
+                    "OpSubgroupBlockReadINTEL": 5575,
+                    "OpSubgroupBlockWriteINTEL": 5576,
+                    "OpSubgroupImageBlockReadINTEL": 5577,
+                    "OpSubgroupImageBlockWriteINTEL": 5578,
+                    "OpSubgroupImageMediaBlockReadINTEL": 5580,
+                    "OpSubgroupImageMediaBlockWriteINTEL": 5581,
+                    "OpUCountLeadingZerosINTEL": 5585,
+                    "OpUCountTrailingZerosINTEL": 5586,
+                    "OpAbsISubINTEL": 5587,
+                    "OpAbsUSubINTEL": 5588,
+                    "OpIAddSatINTEL": 5589,
+                    "OpUAddSatINTEL": 5590,
+                    "OpIAverageINTEL": 5591,
+                    "OpUAverageINTEL": 5592,
+                    "OpIAverageRoundedINTEL": 5593,
+                    "OpUAverageRoundedINTEL": 5594,
+                    "OpISubSatINTEL": 5595,
+                    "OpUSubSatINTEL": 5596,
+                    "OpIMul32x16INTEL": 5597,
+                    "OpUMul32x16INTEL": 5598,
+                    "OpFunctionPointerINTEL": 5600,
+                    "OpFunctionPointerCallINTEL": 5601,
+                    "OpDecorateString": 5632,
+                    "OpDecorateStringGOOGLE": 5632,
+                    "OpMemberDecorateString": 5633,
+                    "OpMemberDecorateStringGOOGLE": 5633,
+                    "OpVmeImageINTEL": 5699,
+                    "OpTypeVmeImageINTEL": 5700,
+                    "OpTypeAvcImePayloadINTEL": 5701,
+                    "OpTypeAvcRefPayloadINTEL": 5702,
+                    "OpTypeAvcSicPayloadINTEL": 5703,
+                    "OpTypeAvcMcePayloadINTEL": 5704,
+                    "OpTypeAvcMceResultINTEL": 5705,
+                    "OpTypeAvcImeResultINTEL": 5706,
+                    "OpTypeAvcImeResultSingleReferenceStreamoutINTEL": 5707,
+                    "OpTypeAvcImeResultDualReferenceStreamoutINTEL": 5708,
+                    "OpTypeAvcImeSingleReferenceStreaminINTEL": 5709,
+                    "OpTypeAvcImeDualReferenceStreaminINTEL": 5710,
+                    "OpTypeAvcRefResultINTEL": 5711,
+                    "OpTypeAvcSicResultINTEL": 5712,
+                    "OpSubgroupAvcMceGetDefaultInterBaseMultiReferencePenaltyINTEL": 5713,
+                    "OpSubgroupAvcMceSetInterBaseMultiReferencePenaltyINTEL": 5714,
+                    "OpSubgroupAvcMceGetDefaultInterShapePenaltyINTEL": 5715,
+                    "OpSubgroupAvcMceSetInterShapePenaltyINTEL": 5716,
+                    "OpSubgroupAvcMceGetDefaultInterDirectionPenaltyINTEL": 5717,
+                    "OpSubgroupAvcMceSetInterDirectionPenaltyINTEL": 5718,
+                    "OpSubgroupAvcMceGetDefaultIntraLumaShapePenaltyINTEL": 5719,
+                    "OpSubgroupAvcMceGetDefaultInterMotionVectorCostTableINTEL": 5720,
+                    "OpSubgroupAvcMceGetDefaultHighPenaltyCostTableINTEL": 5721,
+                    "OpSubgroupAvcMceGetDefaultMediumPenaltyCostTableINTEL": 5722,
+                    "OpSubgroupAvcMceGetDefaultLowPenaltyCostTableINTEL": 5723,
+                    "OpSubgroupAvcMceSetMotionVectorCostFunctionINTEL": 5724,
+                    "OpSubgroupAvcMceGetDefaultIntraLumaModePenaltyINTEL": 5725,
+                    "OpSubgroupAvcMceGetDefaultNonDcLumaIntraPenaltyINTEL": 5726,
+                    "OpSubgroupAvcMceGetDefaultIntraChromaModeBasePenaltyINTEL": 5727,
+                    "OpSubgroupAvcMceSetAcOnlyHaarINTEL": 5728,
+                    "OpSubgroupAvcMceSetSourceInterlacedFieldPolarityINTEL": 5729,
+                    "OpSubgroupAvcMceSetSingleReferenceInterlacedFieldPolarityINTEL": 5730,
+                    "OpSubgroupAvcMceSetDualReferenceInterlacedFieldPolaritiesINTEL": 5731,
+                    "OpSubgroupAvcMceConvertToImePayloadINTEL": 5732,
+                    "OpSubgroupAvcMceConvertToImeResultINTEL": 5733,
+                    "OpSubgroupAvcMceConvertToRefPayloadINTEL": 5734,
+                    "OpSubgroupAvcMceConvertToRefResultINTEL": 5735,
+                    "OpSubgroupAvcMceConvertToSicPayloadINTEL": 5736,
+                    "OpSubgroupAvcMceConvertToSicResultINTEL": 5737,
+                    "OpSubgroupAvcMceGetMotionVectorsINTEL": 5738,
+                    "OpSubgroupAvcMceGetInterDistortionsINTEL": 5739,
+                    "OpSubgroupAvcMceGetBestInterDistortionsINTEL": 5740,
+                    "OpSubgroupAvcMceGetInterMajorShapeINTEL": 5741,
+                    "OpSubgroupAvcMceGetInterMinorShapeINTEL": 5742,
+                    "OpSubgroupAvcMceGetInterDirectionsINTEL": 5743,
+                    "OpSubgroupAvcMceGetInterMotionVectorCountINTEL": 5744,
+                    "OpSubgroupAvcMceGetInterReferenceIdsINTEL": 5745,
+                    "OpSubgroupAvcMceGetInterReferenceInterlacedFieldPolaritiesINTEL": 5746,
+                    "OpSubgroupAvcImeInitializeINTEL": 5747,
+                    "OpSubgroupAvcImeSetSingleReferenceINTEL": 5748,
+                    "OpSubgroupAvcImeSetDualReferenceINTEL": 5749,
+                    "OpSubgroupAvcImeRefWindowSizeINTEL": 5750,
+                    "OpSubgroupAvcImeAdjustRefOffsetINTEL": 5751,
+                    "OpSubgroupAvcImeConvertToMcePayloadINTEL": 5752,
+                    "OpSubgroupAvcImeSetMaxMotionVectorCountINTEL": 5753,
+                    "OpSubgroupAvcImeSetUnidirectionalMixDisableINTEL": 5754,
+                    "OpSubgroupAvcImeSetEarlySearchTerminationThresholdINTEL": 5755,
+                    "OpSubgroupAvcImeSetWeightedSadINTEL": 5756,
+                    "OpSubgroupAvcImeEvaluateWithSingleReferenceINTEL": 5757,
+                    "OpSubgroupAvcImeEvaluateWithDualReferenceINTEL": 5758,
+                    "OpSubgroupAvcImeEvaluateWithSingleReferenceStreaminINTEL": 5759,
+                    "OpSubgroupAvcImeEvaluateWithDualReferenceStreaminINTEL": 5760,
+                    "OpSubgroupAvcImeEvaluateWithSingleReferenceStreamoutINTEL": 5761,
+                    "OpSubgroupAvcImeEvaluateWithDualReferenceStreamoutINTEL": 5762,
+                    "OpSubgroupAvcImeEvaluateWithSingleReferenceStreaminoutINTEL": 5763,
+                    "OpSubgroupAvcImeEvaluateWithDualReferenceStreaminoutINTEL": 5764,
+                    "OpSubgroupAvcImeConvertToMceResultINTEL": 5765,
+                    "OpSubgroupAvcImeGetSingleReferenceStreaminINTEL": 5766,
+                    "OpSubgroupAvcImeGetDualReferenceStreaminINTEL": 5767,
+                    "OpSubgroupAvcImeStripSingleReferenceStreamoutINTEL": 5768,
+                    "OpSubgroupAvcImeStripDualReferenceStreamoutINTEL": 5769,
+                    "OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeMotionVectorsINTEL": 5770,
+                    "OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeDistortionsINTEL": 5771,
+                    "OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeReferenceIdsINTEL": 5772,
+                    "OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeMotionVectorsINTEL": 5773,
+                    "OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeDistortionsINTEL": 5774,
+                    "OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeReferenceIdsINTEL": 5775,
+                    "OpSubgroupAvcImeGetBorderReachedINTEL": 5776,
+                    "OpSubgroupAvcImeGetTruncatedSearchIndicationINTEL": 5777,
+                    "OpSubgroupAvcImeGetUnidirectionalEarlySearchTerminationINTEL": 5778,
+                    "OpSubgroupAvcImeGetWeightingPatternMinimumMotionVectorINTEL": 5779,
+                    "OpSubgroupAvcImeGetWeightingPatternMinimumDistortionINTEL": 5780,
+                    "OpSubgroupAvcFmeInitializeINTEL": 5781,
+                    "OpSubgroupAvcBmeInitializeINTEL": 5782,
+                    "OpSubgroupAvcRefConvertToMcePayloadINTEL": 5783,
+                    "OpSubgroupAvcRefSetBidirectionalMixDisableINTEL": 5784,
+                    "OpSubgroupAvcRefSetBilinearFilterEnableINTEL": 5785,
+                    "OpSubgroupAvcRefEvaluateWithSingleReferenceINTEL": 5786,
+                    "OpSubgroupAvcRefEvaluateWithDualReferenceINTEL": 5787,
+                    "OpSubgroupAvcRefEvaluateWithMultiReferenceINTEL": 5788,
+                    "OpSubgroupAvcRefEvaluateWithMultiReferenceInterlacedINTEL": 5789,
+                    "OpSubgroupAvcRefConvertToMceResultINTEL": 5790,
+                    "OpSubgroupAvcSicInitializeINTEL": 5791,
+                    "OpSubgroupAvcSicConfigureSkcINTEL": 5792,
+                    "OpSubgroupAvcSicConfigureIpeLumaINTEL": 5793,
+                    "OpSubgroupAvcSicConfigureIpeLumaChromaINTEL": 5794,
+                    "OpSubgroupAvcSicGetMotionVectorMaskINTEL": 5795,
+                    "OpSubgroupAvcSicConvertToMcePayloadINTEL": 5796,
+                    "OpSubgroupAvcSicSetIntraLumaShapePenaltyINTEL": 5797,
+                    "OpSubgroupAvcSicSetIntraLumaModeCostFunctionINTEL": 5798,
+                    "OpSubgroupAvcSicSetIntraChromaModeCostFunctionINTEL": 5799,
+                    "OpSubgroupAvcSicSetBilinearFilterEnableINTEL": 5800,
+                    "OpSubgroupAvcSicSetSkcForwardTransformEnableINTEL": 5801,
+                    "OpSubgroupAvcSicSetBlockBasedRawSkipSadINTEL": 5802,
+                    "OpSubgroupAvcSicEvaluateIpeINTEL": 5803,
+                    "OpSubgroupAvcSicEvaluateWithSingleReferenceINTEL": 5804,
+                    "OpSubgroupAvcSicEvaluateWithDualReferenceINTEL": 5805,
+                    "OpSubgroupAvcSicEvaluateWithMultiReferenceINTEL": 5806,
+                    "OpSubgroupAvcSicEvaluateWithMultiReferenceInterlacedINTEL": 5807,
+                    "OpSubgroupAvcSicConvertToMceResultINTEL": 5808,
+                    "OpSubgroupAvcSicGetIpeLumaShapeINTEL": 5809,
+                    "OpSubgroupAvcSicGetBestIpeLumaDistortionINTEL": 5810,
+                    "OpSubgroupAvcSicGetBestIpeChromaDistortionINTEL": 5811,
+                    "OpSubgroupAvcSicGetPackedIpeLumaModesINTEL": 5812,
+                    "OpSubgroupAvcSicGetIpeChromaModeINTEL": 5813,
+                    "OpSubgroupAvcSicGetPackedSkcLumaCountThresholdINTEL": 5814,
+                    "OpSubgroupAvcSicGetPackedSkcLumaSumThresholdINTEL": 5815,
+                    "OpSubgroupAvcSicGetInterRawSadsINTEL": 5816,
+                    "OpLoopControlINTEL": 5887,
+                    "OpReadPipeBlockingINTEL": 5946,
+                    "OpWritePipeBlockingINTEL": 5947,
+                    "OpFPGARegINTEL": 5949,
+                    "OpRayQueryGetRayTMinKHR": 6016,
+                    "OpRayQueryGetRayFlagsKHR": 6017,
+                    "OpRayQueryGetIntersectionTKHR": 6018,
+                    "OpRayQueryGetIntersectionInstanceCustomIndexKHR": 6019,
+                    "OpRayQueryGetIntersectionInstanceIdKHR": 6020,
+                    "OpRayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR": 6021,
+                    "OpRayQueryGetIntersectionGeometryIndexKHR": 6022,
+                    "OpRayQueryGetIntersectionPrimitiveIndexKHR": 6023,
+                    "OpRayQueryGetIntersectionBarycentricsKHR": 6024,
+                    "OpRayQueryGetIntersectionFrontFaceKHR": 6025,
+                    "OpRayQueryGetIntersectionCandidateAABBOpaqueKHR": 6026,
+                    "OpRayQueryGetIntersectionObjectRayDirectionKHR": 6027,
+                    "OpRayQueryGetIntersectionObjectRayOriginKHR": 6028,
+                    "OpRayQueryGetWorldRayDirectionKHR": 6029,
+                    "OpRayQueryGetWorldRayOriginKHR": 6030,
+                    "OpRayQueryGetIntersectionObjectToWorldKHR": 6031,
+                    "OpRayQueryGetIntersectionWorldToObjectKHR": 6032,
+                    "OpAtomicFAddEXT": 6035
+                }
+            }
+        ]
+    }
+}
+
diff --git a/libs/spirv-headers/spirv/unified1/spirv.lua b/libs/spirv-headers/spirv/unified1/spirv.lua
new file mode 100644
index 00000000000..d97af4180e7
--- /dev/null
+++ b/libs/spirv-headers/spirv/unified1/spirv.lua
@@ -0,0 +1,1572 @@
+-- Copyright (c) 2014-2020 The Khronos Group Inc.
+-- 
+-- Permission is hereby granted, free of charge, to any person obtaining a copy
+-- of this software and/or associated documentation files (the "Materials"),
+-- to deal in the Materials without restriction, including without limitation
+-- the rights to use, copy, modify, merge, publish, distribute, sublicense,
+-- and/or sell copies of the Materials, and to permit persons to whom the
+-- Materials are furnished to do so, subject to the following conditions:
+-- 
+-- The above copyright notice and this permission notice shall be included in
+-- all copies or substantial portions of the Materials.
+-- 
+-- MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS KHRONOS
+-- STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS SPECIFICATIONS AND
+-- HEADER INFORMATION ARE LOCATED AT https://www.khronos.org/registry/ 
+-- 
+-- THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+-- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+-- THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+-- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+-- FROM,OUT OF OR IN CONNECTION WITH THE MATERIALS OR THE USE OR OTHER DEALINGS
+-- IN THE MATERIALS.
+
+-- This header is automatically generated by the same tool that creates
+-- the Binary Section of the SPIR-V specification.
+
+-- Enumeration tokens for SPIR-V, in various styles:
+--   C, C++, C++11, JSON, Lua, Python, C#, D
+-- 
+-- - C will have tokens with a "Spv" prefix, e.g.: SpvSourceLanguageGLSL
+-- - C++ will have tokens in the "spv" name space, e.g.: spv::SourceLanguageGLSL
+-- - C++11 will use enum classes in the spv namespace, e.g.: spv::SourceLanguage::GLSL
+-- - Lua will use tables, e.g.: spv.SourceLanguage.GLSL
+-- - Python will use dictionaries, e.g.: spv['SourceLanguage']['GLSL']
+-- - C# will use enum classes in the Specification class located in the "Spv" namespace,
+--     e.g.: Spv.Specification.SourceLanguage.GLSL
+-- - D will have tokens under the "spv" module, e.g: spv.SourceLanguage.GLSL
+-- 
+-- Some tokens act like mask values, which can be OR'd together,
+-- while others are mutually exclusive.  The mask-like ones have
+-- "Mask" in their name, and a parallel enum that has the shift
+-- amount (1 << x) for each corresponding enumerant.
+
+spv = {
+    MagicNumber = 0x07230203,
+    Version = 0x00010500,
+    Revision = 4,
+    OpCodeMask = 0xffff,
+    WordCountShift = 16,
+
+    SourceLanguage = {
+        Unknown = 0,
+        ESSL = 1,
+        GLSL = 2,
+        OpenCL_C = 3,
+        OpenCL_CPP = 4,
+        HLSL = 5,
+    },
+
+    ExecutionModel = {
+        Vertex = 0,
+        TessellationControl = 1,
+        TessellationEvaluation = 2,
+        Geometry = 3,
+        Fragment = 4,
+        GLCompute = 5,
+        Kernel = 6,
+        TaskNV = 5267,
+        MeshNV = 5268,
+        RayGenerationKHR = 5313,
+        RayGenerationNV = 5313,
+        IntersectionKHR = 5314,
+        IntersectionNV = 5314,
+        AnyHitKHR = 5315,
+        AnyHitNV = 5315,
+        ClosestHitKHR = 5316,
+        ClosestHitNV = 5316,
+        MissKHR = 5317,
+        MissNV = 5317,
+        CallableKHR = 5318,
+        CallableNV = 5318,
+    },
+
+    AddressingModel = {
+        Logical = 0,
+        Physical32 = 1,
+        Physical64 = 2,
+        PhysicalStorageBuffer64 = 5348,
+        PhysicalStorageBuffer64EXT = 5348,
+    },
+
+    MemoryModel = {
+        Simple = 0,
+        GLSL450 = 1,
+        OpenCL = 2,
+        Vulkan = 3,
+        VulkanKHR = 3,
+    },
+
+    ExecutionMode = {
+        Invocations = 0,
+        SpacingEqual = 1,
+        SpacingFractionalEven = 2,
+        SpacingFractionalOdd = 3,
+        VertexOrderCw = 4,
+        VertexOrderCcw = 5,
+        PixelCenterInteger = 6,
+        OriginUpperLeft = 7,
+        OriginLowerLeft = 8,
+        EarlyFragmentTests = 9,
+        PointMode = 10,
+        Xfb = 11,
+        DepthReplacing = 12,
+        DepthGreater = 14,
+        DepthLess = 15,
+        DepthUnchanged = 16,
+        LocalSize = 17,
+        LocalSizeHint = 18,
+        InputPoints = 19,
+        InputLines = 20,
+        InputLinesAdjacency = 21,
+        Triangles = 22,
+        InputTrianglesAdjacency = 23,
+        Quads = 24,
+        Isolines = 25,
+        OutputVertices = 26,
+        OutputPoints = 27,
+        OutputLineStrip = 28,
+        OutputTriangleStrip = 29,
+        VecTypeHint = 30,
+        ContractionOff = 31,
+        Initializer = 33,
+        Finalizer = 34,
+        SubgroupSize = 35,
+        SubgroupsPerWorkgroup = 36,
+        SubgroupsPerWorkgroupId = 37,
+        LocalSizeId = 38,
+        LocalSizeHintId = 39,
+        PostDepthCoverage = 4446,
+        DenormPreserve = 4459,
+        DenormFlushToZero = 4460,
+        SignedZeroInfNanPreserve = 4461,
+        RoundingModeRTE = 4462,
+        RoundingModeRTZ = 4463,
+        StencilRefReplacingEXT = 5027,
+        OutputLinesNV = 5269,
+        OutputPrimitivesNV = 5270,
+        DerivativeGroupQuadsNV = 5289,
+        DerivativeGroupLinearNV = 5290,
+        OutputTrianglesNV = 5298,
+        PixelInterlockOrderedEXT = 5366,
+        PixelInterlockUnorderedEXT = 5367,
+        SampleInterlockOrderedEXT = 5368,
+        SampleInterlockUnorderedEXT = 5369,
+        ShadingRateInterlockOrderedEXT = 5370,
+        ShadingRateInterlockUnorderedEXT = 5371,
+        MaxWorkgroupSizeINTEL = 5893,
+        MaxWorkDimINTEL = 5894,
+        NoGlobalOffsetINTEL = 5895,
+        NumSIMDWorkitemsINTEL = 5896,
+    },
+
+    StorageClass = {
+        UniformConstant = 0,
+        Input = 1,
+        Uniform = 2,
+        Output = 3,
+        Workgroup = 4,
+        CrossWorkgroup = 5,
+        Private = 6,
+        Function = 7,
+        Generic = 8,
+        PushConstant = 9,
+        AtomicCounter = 10,
+        Image = 11,
+        StorageBuffer = 12,
+        CallableDataKHR = 5328,
+        CallableDataNV = 5328,
+        IncomingCallableDataKHR = 5329,
+        IncomingCallableDataNV = 5329,
+        RayPayloadKHR = 5338,
+        RayPayloadNV = 5338,
+        HitAttributeKHR = 5339,
+        HitAttributeNV = 5339,
+        IncomingRayPayloadKHR = 5342,
+        IncomingRayPayloadNV = 5342,
+        ShaderRecordBufferKHR = 5343,
+        ShaderRecordBufferNV = 5343,
+        PhysicalStorageBuffer = 5349,
+        PhysicalStorageBufferEXT = 5349,
+        CodeSectionINTEL = 5605,
+    },
+
+    Dim = {
+        Dim1D = 0,
+        Dim2D = 1,
+        Dim3D = 2,
+        Cube = 3,
+        Rect = 4,
+        Buffer = 5,
+        SubpassData = 6,
+    },
+
+    SamplerAddressingMode = {
+        None = 0,
+        ClampToEdge = 1,
+        Clamp = 2,
+        Repeat = 3,
+        RepeatMirrored = 4,
+    },
+
+    SamplerFilterMode = {
+        Nearest = 0,
+        Linear = 1,
+    },
+
+    ImageFormat = {
+        Unknown = 0,
+        Rgba32f = 1,
+        Rgba16f = 2,
+        R32f = 3,
+        Rgba8 = 4,
+        Rgba8Snorm = 5,
+        Rg32f = 6,
+        Rg16f = 7,
+        R11fG11fB10f = 8,
+        R16f = 9,
+        Rgba16 = 10,
+        Rgb10A2 = 11,
+        Rg16 = 12,
+        Rg8 = 13,
+        R16 = 14,
+        R8 = 15,
+        Rgba16Snorm = 16,
+        Rg16Snorm = 17,
+        Rg8Snorm = 18,
+        R16Snorm = 19,
+        R8Snorm = 20,
+        Rgba32i = 21,
+        Rgba16i = 22,
+        Rgba8i = 23,
+        R32i = 24,
+        Rg32i = 25,
+        Rg16i = 26,
+        Rg8i = 27,
+        R16i = 28,
+        R8i = 29,
+        Rgba32ui = 30,
+        Rgba16ui = 31,
+        Rgba8ui = 32,
+        R32ui = 33,
+        Rgb10a2ui = 34,
+        Rg32ui = 35,
+        Rg16ui = 36,
+        Rg8ui = 37,
+        R16ui = 38,
+        R8ui = 39,
+        R64ui = 40,
+        R64i = 41,
+    },
+
+    ImageChannelOrder = {
+        R = 0,
+        A = 1,
+        RG = 2,
+        RA = 3,
+        RGB = 4,
+        RGBA = 5,
+        BGRA = 6,
+        ARGB = 7,
+        Intensity = 8,
+        Luminance = 9,
+        Rx = 10,
+        RGx = 11,
+        RGBx = 12,
+        Depth = 13,
+        DepthStencil = 14,
+        sRGB = 15,
+        sRGBx = 16,
+        sRGBA = 17,
+        sBGRA = 18,
+        ABGR = 19,
+    },
+
+    ImageChannelDataType = {
+        SnormInt8 = 0,
+        SnormInt16 = 1,
+        UnormInt8 = 2,
+        UnormInt16 = 3,
+        UnormShort565 = 4,
+        UnormShort555 = 5,
+        UnormInt101010 = 6,
+        SignedInt8 = 7,
+        SignedInt16 = 8,
+        SignedInt32 = 9,
+        UnsignedInt8 = 10,
+        UnsignedInt16 = 11,
+        UnsignedInt32 = 12,
+        HalfFloat = 13,
+        Float = 14,
+        UnormInt24 = 15,
+        UnormInt101010_2 = 16,
+    },
+
+    ImageOperandsShift = {
+        Bias = 0,
+        Lod = 1,
+        Grad = 2,
+        ConstOffset = 3,
+        Offset = 4,
+        ConstOffsets = 5,
+        Sample = 6,
+        MinLod = 7,
+        MakeTexelAvailable = 8,
+        MakeTexelAvailableKHR = 8,
+        MakeTexelVisible = 9,
+        MakeTexelVisibleKHR = 9,
+        NonPrivateTexel = 10,
+        NonPrivateTexelKHR = 10,
+        VolatileTexel = 11,
+        VolatileTexelKHR = 11,
+        SignExtend = 12,
+        ZeroExtend = 13,
+    },
+
+    ImageOperandsMask = {
+        MaskNone = 0,
+        Bias = 0x00000001,
+        Lod = 0x00000002,
+        Grad = 0x00000004,
+        ConstOffset = 0x00000008,
+        Offset = 0x00000010,
+        ConstOffsets = 0x00000020,
+        Sample = 0x00000040,
+        MinLod = 0x00000080,
+        MakeTexelAvailable = 0x00000100,
+        MakeTexelAvailableKHR = 0x00000100,
+        MakeTexelVisible = 0x00000200,
+        MakeTexelVisibleKHR = 0x00000200,
+        NonPrivateTexel = 0x00000400,
+        NonPrivateTexelKHR = 0x00000400,
+        VolatileTexel = 0x00000800,
+        VolatileTexelKHR = 0x00000800,
+        SignExtend = 0x00001000,
+        ZeroExtend = 0x00002000,
+    },
+
+    FPFastMathModeShift = {
+        NotNaN = 0,
+        NotInf = 1,
+        NSZ = 2,
+        AllowRecip = 3,
+        Fast = 4,
+    },
+
+    FPFastMathModeMask = {
+        MaskNone = 0,
+        NotNaN = 0x00000001,
+        NotInf = 0x00000002,
+        NSZ = 0x00000004,
+        AllowRecip = 0x00000008,
+        Fast = 0x00000010,
+    },
+
+    FPRoundingMode = {
+        RTE = 0,
+        RTZ = 1,
+        RTP = 2,
+        RTN = 3,
+    },
+
+    LinkageType = {
+        Export = 0,
+        Import = 1,
+    },
+
+    AccessQualifier = {
+        ReadOnly = 0,
+        WriteOnly = 1,
+        ReadWrite = 2,
+    },
+
+    FunctionParameterAttribute = {
+        Zext = 0,
+        Sext = 1,
+        ByVal = 2,
+        Sret = 3,
+        NoAlias = 4,
+        NoCapture = 5,
+        NoWrite = 6,
+        NoReadWrite = 7,
+    },
+
+    Decoration = {
+        RelaxedPrecision = 0,
+        SpecId = 1,
+        Block = 2,
+        BufferBlock = 3,
+        RowMajor = 4,
+        ColMajor = 5,
+        ArrayStride = 6,
+        MatrixStride = 7,
+        GLSLShared = 8,
+        GLSLPacked = 9,
+        CPacked = 10,
+        BuiltIn = 11,
+        NoPerspective = 13,
+        Flat = 14,
+        Patch = 15,
+        Centroid = 16,
+        Sample = 17,
+        Invariant = 18,
+        Restrict = 19,
+        Aliased = 20,
+        Volatile = 21,
+        Constant = 22,
+        Coherent = 23,
+        NonWritable = 24,
+        NonReadable = 25,
+        Uniform = 26,
+        UniformId = 27,
+        SaturatedConversion = 28,
+        Stream = 29,
+        Location = 30,
+        Component = 31,
+        Index = 32,
+        Binding = 33,
+        DescriptorSet = 34,
+        Offset = 35,
+        XfbBuffer = 36,
+        XfbStride = 37,
+        FuncParamAttr = 38,
+        FPRoundingMode = 39,
+        FPFastMathMode = 40,
+        LinkageAttributes = 41,
+        NoContraction = 42,
+        InputAttachmentIndex = 43,
+        Alignment = 44,
+        MaxByteOffset = 45,
+        AlignmentId = 46,
+        MaxByteOffsetId = 47,
+        NoSignedWrap = 4469,
+        NoUnsignedWrap = 4470,
+        ExplicitInterpAMD = 4999,
+        OverrideCoverageNV = 5248,
+        PassthroughNV = 5250,
+        ViewportRelativeNV = 5252,
+        SecondaryViewportRelativeNV = 5256,
+        PerPrimitiveNV = 5271,
+        PerViewNV = 5272,
+        PerTaskNV = 5273,
+        PerVertexNV = 5285,
+        NonUniform = 5300,
+        NonUniformEXT = 5300,
+        RestrictPointer = 5355,
+        RestrictPointerEXT = 5355,
+        AliasedPointer = 5356,
+        AliasedPointerEXT = 5356,
+        ReferencedIndirectlyINTEL = 5602,
+        CounterBuffer = 5634,
+        HlslCounterBufferGOOGLE = 5634,
+        HlslSemanticGOOGLE = 5635,
+        UserSemantic = 5635,
+        UserTypeGOOGLE = 5636,
+        RegisterINTEL = 5825,
+        MemoryINTEL = 5826,
+        NumbanksINTEL = 5827,
+        BankwidthINTEL = 5828,
+        MaxPrivateCopiesINTEL = 5829,
+        SinglepumpINTEL = 5830,
+        DoublepumpINTEL = 5831,
+        MaxReplicatesINTEL = 5832,
+        SimpleDualPortINTEL = 5833,
+        MergeINTEL = 5834,
+        BankBitsINTEL = 5835,
+        ForcePow2DepthINTEL = 5836,
+    },
+
+    BuiltIn = {
+        Position = 0,
+        PointSize = 1,
+        ClipDistance = 3,
+        CullDistance = 4,
+        VertexId = 5,
+        InstanceId = 6,
+        PrimitiveId = 7,
+        InvocationId = 8,
+        Layer = 9,
+        ViewportIndex = 10,
+        TessLevelOuter = 11,
+        TessLevelInner = 12,
+        TessCoord = 13,
+        PatchVertices = 14,
+        FragCoord = 15,
+        PointCoord = 16,
+        FrontFacing = 17,
+        SampleId = 18,
+        SamplePosition = 19,
+        SampleMask = 20,
+        FragDepth = 22,
+        HelperInvocation = 23,
+        NumWorkgroups = 24,
+        WorkgroupSize = 25,
+        WorkgroupId = 26,
+        LocalInvocationId = 27,
+        GlobalInvocationId = 28,
+        LocalInvocationIndex = 29,
+        WorkDim = 30,
+        GlobalSize = 31,
+        EnqueuedWorkgroupSize = 32,
+        GlobalOffset = 33,
+        GlobalLinearId = 34,
+        SubgroupSize = 36,
+        SubgroupMaxSize = 37,
+        NumSubgroups = 38,
+        NumEnqueuedSubgroups = 39,
+        SubgroupId = 40,
+        SubgroupLocalInvocationId = 41,
+        VertexIndex = 42,
+        InstanceIndex = 43,
+        SubgroupEqMask = 4416,
+        SubgroupEqMaskKHR = 4416,
+        SubgroupGeMask = 4417,
+        SubgroupGeMaskKHR = 4417,
+        SubgroupGtMask = 4418,
+        SubgroupGtMaskKHR = 4418,
+        SubgroupLeMask = 4419,
+        SubgroupLeMaskKHR = 4419,
+        SubgroupLtMask = 4420,
+        SubgroupLtMaskKHR = 4420,
+        BaseVertex = 4424,
+        BaseInstance = 4425,
+        DrawIndex = 4426,
+        PrimitiveShadingRateKHR = 4432,
+        DeviceIndex = 4438,
+        ViewIndex = 4440,
+        ShadingRateKHR = 4444,
+        BaryCoordNoPerspAMD = 4992,
+        BaryCoordNoPerspCentroidAMD = 4993,
+        BaryCoordNoPerspSampleAMD = 4994,
+        BaryCoordSmoothAMD = 4995,
+        BaryCoordSmoothCentroidAMD = 4996,
+        BaryCoordSmoothSampleAMD = 4997,
+        BaryCoordPullModelAMD = 4998,
+        FragStencilRefEXT = 5014,
+        ViewportMaskNV = 5253,
+        SecondaryPositionNV = 5257,
+        SecondaryViewportMaskNV = 5258,
+        PositionPerViewNV = 5261,
+        ViewportMaskPerViewNV = 5262,
+        FullyCoveredEXT = 5264,
+        TaskCountNV = 5274,
+        PrimitiveCountNV = 5275,
+        PrimitiveIndicesNV = 5276,
+        ClipDistancePerViewNV = 5277,
+        CullDistancePerViewNV = 5278,
+        LayerPerViewNV = 5279,
+        MeshViewCountNV = 5280,
+        MeshViewIndicesNV = 5281,
+        BaryCoordNV = 5286,
+        BaryCoordNoPerspNV = 5287,
+        FragSizeEXT = 5292,
+        FragmentSizeNV = 5292,
+        FragInvocationCountEXT = 5293,
+        InvocationsPerPixelNV = 5293,
+        LaunchIdKHR = 5319,
+        LaunchIdNV = 5319,
+        LaunchSizeKHR = 5320,
+        LaunchSizeNV = 5320,
+        WorldRayOriginKHR = 5321,
+        WorldRayOriginNV = 5321,
+        WorldRayDirectionKHR = 5322,
+        WorldRayDirectionNV = 5322,
+        ObjectRayOriginKHR = 5323,
+        ObjectRayOriginNV = 5323,
+        ObjectRayDirectionKHR = 5324,
+        ObjectRayDirectionNV = 5324,
+        RayTminKHR = 5325,
+        RayTminNV = 5325,
+        RayTmaxKHR = 5326,
+        RayTmaxNV = 5326,
+        InstanceCustomIndexKHR = 5327,
+        InstanceCustomIndexNV = 5327,
+        ObjectToWorldKHR = 5330,
+        ObjectToWorldNV = 5330,
+        WorldToObjectKHR = 5331,
+        WorldToObjectNV = 5331,
+        HitTKHR = 5332,
+        HitTNV = 5332,
+        HitKindKHR = 5333,
+        HitKindNV = 5333,
+        IncomingRayFlagsKHR = 5351,
+        IncomingRayFlagsNV = 5351,
+        RayGeometryIndexKHR = 5352,
+        WarpsPerSMNV = 5374,
+        SMCountNV = 5375,
+        WarpIDNV = 5376,
+        SMIDNV = 5377,
+    },
+
+    SelectionControlShift = {
+        Flatten = 0,
+        DontFlatten = 1,
+    },
+
+    SelectionControlMask = {
+        MaskNone = 0,
+        Flatten = 0x00000001,
+        DontFlatten = 0x00000002,
+    },
+
+    LoopControlShift = {
+        Unroll = 0,
+        DontUnroll = 1,
+        DependencyInfinite = 2,
+        DependencyLength = 3,
+        MinIterations = 4,
+        MaxIterations = 5,
+        IterationMultiple = 6,
+        PeelCount = 7,
+        PartialCount = 8,
+        InitiationIntervalINTEL = 16,
+        MaxConcurrencyINTEL = 17,
+        DependencyArrayINTEL = 18,
+        PipelineEnableINTEL = 19,
+        LoopCoalesceINTEL = 20,
+        MaxInterleavingINTEL = 21,
+        SpeculatedIterationsINTEL = 22,
+    },
+
+    LoopControlMask = {
+        MaskNone = 0,
+        Unroll = 0x00000001,
+        DontUnroll = 0x00000002,
+        DependencyInfinite = 0x00000004,
+        DependencyLength = 0x00000008,
+        MinIterations = 0x00000010,
+        MaxIterations = 0x00000020,
+        IterationMultiple = 0x00000040,
+        PeelCount = 0x00000080,
+        PartialCount = 0x00000100,
+        InitiationIntervalINTEL = 0x00010000,
+        MaxConcurrencyINTEL = 0x00020000,
+        DependencyArrayINTEL = 0x00040000,
+        PipelineEnableINTEL = 0x00080000,
+        LoopCoalesceINTEL = 0x00100000,
+        MaxInterleavingINTEL = 0x00200000,
+        SpeculatedIterationsINTEL = 0x00400000,
+    },
+
+    FunctionControlShift = {
+        Inline = 0,
+        DontInline = 1,
+        Pure = 2,
+        Const = 3,
+    },
+
+    FunctionControlMask = {
+        MaskNone = 0,
+        Inline = 0x00000001,
+        DontInline = 0x00000002,
+        Pure = 0x00000004,
+        Const = 0x00000008,
+    },
+
+    MemorySemanticsShift = {
+        Acquire = 1,
+        Release = 2,
+        AcquireRelease = 3,
+        SequentiallyConsistent = 4,
+        UniformMemory = 6,
+        SubgroupMemory = 7,
+        WorkgroupMemory = 8,
+        CrossWorkgroupMemory = 9,
+        AtomicCounterMemory = 10,
+        ImageMemory = 11,
+        OutputMemory = 12,
+        OutputMemoryKHR = 12,
+        MakeAvailable = 13,
+        MakeAvailableKHR = 13,
+        MakeVisible = 14,
+        MakeVisibleKHR = 14,
+        Volatile = 15,
+    },
+
+    MemorySemanticsMask = {
+        MaskNone = 0,
+        Acquire = 0x00000002,
+        Release = 0x00000004,
+        AcquireRelease = 0x00000008,
+        SequentiallyConsistent = 0x00000010,
+        UniformMemory = 0x00000040,
+        SubgroupMemory = 0x00000080,
+        WorkgroupMemory = 0x00000100,
+        CrossWorkgroupMemory = 0x00000200,
+        AtomicCounterMemory = 0x00000400,
+        ImageMemory = 0x00000800,
+        OutputMemory = 0x00001000,
+        OutputMemoryKHR = 0x00001000,
+        MakeAvailable = 0x00002000,
+        MakeAvailableKHR = 0x00002000,
+        MakeVisible = 0x00004000,
+        MakeVisibleKHR = 0x00004000,
+        Volatile = 0x00008000,
+    },
+
+    MemoryAccessShift = {
+        Volatile = 0,
+        Aligned = 1,
+        Nontemporal = 2,
+        MakePointerAvailable = 3,
+        MakePointerAvailableKHR = 3,
+        MakePointerVisible = 4,
+        MakePointerVisibleKHR = 4,
+        NonPrivatePointer = 5,
+        NonPrivatePointerKHR = 5,
+    },
+
+    MemoryAccessMask = {
+        MaskNone = 0,
+        Volatile = 0x00000001,
+        Aligned = 0x00000002,
+        Nontemporal = 0x00000004,
+        MakePointerAvailable = 0x00000008,
+        MakePointerAvailableKHR = 0x00000008,
+        MakePointerVisible = 0x00000010,
+        MakePointerVisibleKHR = 0x00000010,
+        NonPrivatePointer = 0x00000020,
+        NonPrivatePointerKHR = 0x00000020,
+    },
+
+    Scope = {
+        CrossDevice = 0,
+        Device = 1,
+        Workgroup = 2,
+        Subgroup = 3,
+        Invocation = 4,
+        QueueFamily = 5,
+        QueueFamilyKHR = 5,
+        ShaderCallKHR = 6,
+    },
+
+    GroupOperation = {
+        Reduce = 0,
+        InclusiveScan = 1,
+        ExclusiveScan = 2,
+        ClusteredReduce = 3,
+        PartitionedReduceNV = 6,
+        PartitionedInclusiveScanNV = 7,
+        PartitionedExclusiveScanNV = 8,
+    },
+
+    KernelEnqueueFlags = {
+        NoWait = 0,
+        WaitKernel = 1,
+        WaitWorkGroup = 2,
+    },
+
+    KernelProfilingInfoShift = {
+        CmdExecTime = 0,
+    },
+
+    KernelProfilingInfoMask = {
+        MaskNone = 0,
+        CmdExecTime = 0x00000001,
+    },
+
+    Capability = {
+        Matrix = 0,
+        Shader = 1,
+        Geometry = 2,
+        Tessellation = 3,
+        Addresses = 4,
+        Linkage = 5,
+        Kernel = 6,
+        Vector16 = 7,
+        Float16Buffer = 8,
+        Float16 = 9,
+        Float64 = 10,
+        Int64 = 11,
+        Int64Atomics = 12,
+        ImageBasic = 13,
+        ImageReadWrite = 14,
+        ImageMipmap = 15,
+        Pipes = 17,
+        Groups = 18,
+        DeviceEnqueue = 19,
+        LiteralSampler = 20,
+        AtomicStorage = 21,
+        Int16 = 22,
+        TessellationPointSize = 23,
+        GeometryPointSize = 24,
+        ImageGatherExtended = 25,
+        StorageImageMultisample = 27,
+        UniformBufferArrayDynamicIndexing = 28,
+        SampledImageArrayDynamicIndexing = 29,
+        StorageBufferArrayDynamicIndexing = 30,
+        StorageImageArrayDynamicIndexing = 31,
+        ClipDistance = 32,
+        CullDistance = 33,
+        ImageCubeArray = 34,
+        SampleRateShading = 35,
+        ImageRect = 36,
+        SampledRect = 37,
+        GenericPointer = 38,
+        Int8 = 39,
+        InputAttachment = 40,
+        SparseResidency = 41,
+        MinLod = 42,
+        Sampled1D = 43,
+        Image1D = 44,
+        SampledCubeArray = 45,
+        SampledBuffer = 46,
+        ImageBuffer = 47,
+        ImageMSArray = 48,
+        StorageImageExtendedFormats = 49,
+        ImageQuery = 50,
+        DerivativeControl = 51,
+        InterpolationFunction = 52,
+        TransformFeedback = 53,
+        GeometryStreams = 54,
+        StorageImageReadWithoutFormat = 55,
+        StorageImageWriteWithoutFormat = 56,
+        MultiViewport = 57,
+        SubgroupDispatch = 58,
+        NamedBarrier = 59,
+        PipeStorage = 60,
+        GroupNonUniform = 61,
+        GroupNonUniformVote = 62,
+        GroupNonUniformArithmetic = 63,
+        GroupNonUniformBallot = 64,
+        GroupNonUniformShuffle = 65,
+        GroupNonUniformShuffleRelative = 66,
+        GroupNonUniformClustered = 67,
+        GroupNonUniformQuad = 68,
+        ShaderLayer = 69,
+        ShaderViewportIndex = 70,
+        FragmentShadingRateKHR = 4422,
+        SubgroupBallotKHR = 4423,
+        DrawParameters = 4427,
+        SubgroupVoteKHR = 4431,
+        StorageBuffer16BitAccess = 4433,
+        StorageUniformBufferBlock16 = 4433,
+        StorageUniform16 = 4434,
+        UniformAndStorageBuffer16BitAccess = 4434,
+        StoragePushConstant16 = 4435,
+        StorageInputOutput16 = 4436,
+        DeviceGroup = 4437,
+        MultiView = 4439,
+        VariablePointersStorageBuffer = 4441,
+        VariablePointers = 4442,
+        AtomicStorageOps = 4445,
+        SampleMaskPostDepthCoverage = 4447,
+        StorageBuffer8BitAccess = 4448,
+        UniformAndStorageBuffer8BitAccess = 4449,
+        StoragePushConstant8 = 4450,
+        DenormPreserve = 4464,
+        DenormFlushToZero = 4465,
+        SignedZeroInfNanPreserve = 4466,
+        RoundingModeRTE = 4467,
+        RoundingModeRTZ = 4468,
+        RayQueryProvisionalKHR = 4471,
+        RayTraversalPrimitiveCullingProvisionalKHR = 4478,
+        Float16ImageAMD = 5008,
+        ImageGatherBiasLodAMD = 5009,
+        FragmentMaskAMD = 5010,
+        StencilExportEXT = 5013,
+        ImageReadWriteLodAMD = 5015,
+        Int64ImageEXT = 5016,
+        ShaderClockKHR = 5055,
+        SampleMaskOverrideCoverageNV = 5249,
+        GeometryShaderPassthroughNV = 5251,
+        ShaderViewportIndexLayerEXT = 5254,
+        ShaderViewportIndexLayerNV = 5254,
+        ShaderViewportMaskNV = 5255,
+        ShaderStereoViewNV = 5259,
+        PerViewAttributesNV = 5260,
+        FragmentFullyCoveredEXT = 5265,
+        MeshShadingNV = 5266,
+        ImageFootprintNV = 5282,
+        FragmentBarycentricNV = 5284,
+        ComputeDerivativeGroupQuadsNV = 5288,
+        FragmentDensityEXT = 5291,
+        ShadingRateNV = 5291,
+        GroupNonUniformPartitionedNV = 5297,
+        ShaderNonUniform = 5301,
+        ShaderNonUniformEXT = 5301,
+        RuntimeDescriptorArray = 5302,
+        RuntimeDescriptorArrayEXT = 5302,
+        InputAttachmentArrayDynamicIndexing = 5303,
+        InputAttachmentArrayDynamicIndexingEXT = 5303,
+        UniformTexelBufferArrayDynamicIndexing = 5304,
+        UniformTexelBufferArrayDynamicIndexingEXT = 5304,
+        StorageTexelBufferArrayDynamicIndexing = 5305,
+        StorageTexelBufferArrayDynamicIndexingEXT = 5305,
+        UniformBufferArrayNonUniformIndexing = 5306,
+        UniformBufferArrayNonUniformIndexingEXT = 5306,
+        SampledImageArrayNonUniformIndexing = 5307,
+        SampledImageArrayNonUniformIndexingEXT = 5307,
+        StorageBufferArrayNonUniformIndexing = 5308,
+        StorageBufferArrayNonUniformIndexingEXT = 5308,
+        StorageImageArrayNonUniformIndexing = 5309,
+        StorageImageArrayNonUniformIndexingEXT = 5309,
+        InputAttachmentArrayNonUniformIndexing = 5310,
+        InputAttachmentArrayNonUniformIndexingEXT = 5310,
+        UniformTexelBufferArrayNonUniformIndexing = 5311,
+        UniformTexelBufferArrayNonUniformIndexingEXT = 5311,
+        StorageTexelBufferArrayNonUniformIndexing = 5312,
+        StorageTexelBufferArrayNonUniformIndexingEXT = 5312,
+        RayTracingNV = 5340,
+        VulkanMemoryModel = 5345,
+        VulkanMemoryModelKHR = 5345,
+        VulkanMemoryModelDeviceScope = 5346,
+        VulkanMemoryModelDeviceScopeKHR = 5346,
+        PhysicalStorageBufferAddresses = 5347,
+        PhysicalStorageBufferAddressesEXT = 5347,
+        ComputeDerivativeGroupLinearNV = 5350,
+        RayTracingProvisionalKHR = 5353,
+        CooperativeMatrixNV = 5357,
+        FragmentShaderSampleInterlockEXT = 5363,
+        FragmentShaderShadingRateInterlockEXT = 5372,
+        ShaderSMBuiltinsNV = 5373,
+        FragmentShaderPixelInterlockEXT = 5378,
+        DemoteToHelperInvocationEXT = 5379,
+        SubgroupShuffleINTEL = 5568,
+        SubgroupBufferBlockIOINTEL = 5569,
+        SubgroupImageBlockIOINTEL = 5570,
+        SubgroupImageMediaBlockIOINTEL = 5579,
+        IntegerFunctions2INTEL = 5584,
+        FunctionPointersINTEL = 5603,
+        IndirectReferencesINTEL = 5604,
+        SubgroupAvcMotionEstimationINTEL = 5696,
+        SubgroupAvcMotionEstimationIntraINTEL = 5697,
+        SubgroupAvcMotionEstimationChromaINTEL = 5698,
+        FPGAMemoryAttributesINTEL = 5824,
+        UnstructuredLoopControlsINTEL = 5886,
+        FPGALoopControlsINTEL = 5888,
+        KernelAttributesINTEL = 5892,
+        FPGAKernelAttributesINTEL = 5897,
+        BlockingPipesINTEL = 5945,
+        FPGARegINTEL = 5948,
+        AtomicFloat32AddEXT = 6033,
+        AtomicFloat64AddEXT = 6034,
+    },
+
+    RayFlagsShift = {
+        OpaqueKHR = 0,
+        NoOpaqueKHR = 1,
+        TerminateOnFirstHitKHR = 2,
+        SkipClosestHitShaderKHR = 3,
+        CullBackFacingTrianglesKHR = 4,
+        CullFrontFacingTrianglesKHR = 5,
+        CullOpaqueKHR = 6,
+        CullNoOpaqueKHR = 7,
+        SkipTrianglesKHR = 8,
+        SkipAABBsKHR = 9,
+    },
+
+    RayFlagsMask = {
+        MaskNone = 0,
+        OpaqueKHR = 0x00000001,
+        NoOpaqueKHR = 0x00000002,
+        TerminateOnFirstHitKHR = 0x00000004,
+        SkipClosestHitShaderKHR = 0x00000008,
+        CullBackFacingTrianglesKHR = 0x00000010,
+        CullFrontFacingTrianglesKHR = 0x00000020,
+        CullOpaqueKHR = 0x00000040,
+        CullNoOpaqueKHR = 0x00000080,
+        SkipTrianglesKHR = 0x00000100,
+        SkipAABBsKHR = 0x00000200,
+    },
+
+    RayQueryIntersection = {
+        RayQueryCandidateIntersectionKHR = 0,
+        RayQueryCommittedIntersectionKHR = 1,
+    },
+
+    RayQueryCommittedIntersectionType = {
+        RayQueryCommittedIntersectionNoneKHR = 0,
+        RayQueryCommittedIntersectionTriangleKHR = 1,
+        RayQueryCommittedIntersectionGeneratedKHR = 2,
+    },
+
+    RayQueryCandidateIntersectionType = {
+        RayQueryCandidateIntersectionTriangleKHR = 0,
+        RayQueryCandidateIntersectionAABBKHR = 1,
+    },
+
+    FragmentShadingRateShift = {
+        Vertical2Pixels = 0,
+        Vertical4Pixels = 1,
+        Horizontal2Pixels = 2,
+        Horizontal4Pixels = 3,
+    },
+
+    FragmentShadingRateMask = {
+        MaskNone = 0,
+        Vertical2Pixels = 0x00000001,
+        Vertical4Pixels = 0x00000002,
+        Horizontal2Pixels = 0x00000004,
+        Horizontal4Pixels = 0x00000008,
+    },
+
+    Op = {
+        OpNop = 0,
+        OpUndef = 1,
+        OpSourceContinued = 2,
+        OpSource = 3,
+        OpSourceExtension = 4,
+        OpName = 5,
+        OpMemberName = 6,
+        OpString = 7,
+        OpLine = 8,
+        OpExtension = 10,
+        OpExtInstImport = 11,
+        OpExtInst = 12,
+        OpMemoryModel = 14,
+        OpEntryPoint = 15,
+        OpExecutionMode = 16,
+        OpCapability = 17,
+        OpTypeVoid = 19,
+        OpTypeBool = 20,
+        OpTypeInt = 21,
+        OpTypeFloat = 22,
+        OpTypeVector = 23,
+        OpTypeMatrix = 24,
+        OpTypeImage = 25,
+        OpTypeSampler = 26,
+        OpTypeSampledImage = 27,
+        OpTypeArray = 28,
+        OpTypeRuntimeArray = 29,
+        OpTypeStruct = 30,
+        OpTypeOpaque = 31,
+        OpTypePointer = 32,
+        OpTypeFunction = 33,
+        OpTypeEvent = 34,
+        OpTypeDeviceEvent = 35,
+        OpTypeReserveId = 36,
+        OpTypeQueue = 37,
+        OpTypePipe = 38,
+        OpTypeForwardPointer = 39,
+        OpConstantTrue = 41,
+        OpConstantFalse = 42,
+        OpConstant = 43,
+        OpConstantComposite = 44,
+        OpConstantSampler = 45,
+        OpConstantNull = 46,
+        OpSpecConstantTrue = 48,
+        OpSpecConstantFalse = 49,
+        OpSpecConstant = 50,
+        OpSpecConstantComposite = 51,
+        OpSpecConstantOp = 52,
+        OpFunction = 54,
+        OpFunctionParameter = 55,
+        OpFunctionEnd = 56,
+        OpFunctionCall = 57,
+        OpVariable = 59,
+        OpImageTexelPointer = 60,
+        OpLoad = 61,
+        OpStore = 62,
+        OpCopyMemory = 63,
+        OpCopyMemorySized = 64,
+        OpAccessChain = 65,
+        OpInBoundsAccessChain = 66,
+        OpPtrAccessChain = 67,
+        OpArrayLength = 68,
+        OpGenericPtrMemSemantics = 69,
+        OpInBoundsPtrAccessChain = 70,
+        OpDecorate = 71,
+        OpMemberDecorate = 72,
+        OpDecorationGroup = 73,
+        OpGroupDecorate = 74,
+        OpGroupMemberDecorate = 75,
+        OpVectorExtractDynamic = 77,
+        OpVectorInsertDynamic = 78,
+        OpVectorShuffle = 79,
+        OpCompositeConstruct = 80,
+        OpCompositeExtract = 81,
+        OpCompositeInsert = 82,
+        OpCopyObject = 83,
+        OpTranspose = 84,
+        OpSampledImage = 86,
+        OpImageSampleImplicitLod = 87,
+        OpImageSampleExplicitLod = 88,
+        OpImageSampleDrefImplicitLod = 89,
+        OpImageSampleDrefExplicitLod = 90,
+        OpImageSampleProjImplicitLod = 91,
+        OpImageSampleProjExplicitLod = 92,
+        OpImageSampleProjDrefImplicitLod = 93,
+        OpImageSampleProjDrefExplicitLod = 94,
+        OpImageFetch = 95,
+        OpImageGather = 96,
+        OpImageDrefGather = 97,
+        OpImageRead = 98,
+        OpImageWrite = 99,
+        OpImage = 100,
+        OpImageQueryFormat = 101,
+        OpImageQueryOrder = 102,
+        OpImageQuerySizeLod = 103,
+        OpImageQuerySize = 104,
+        OpImageQueryLod = 105,
+        OpImageQueryLevels = 106,
+        OpImageQuerySamples = 107,
+        OpConvertFToU = 109,
+        OpConvertFToS = 110,
+        OpConvertSToF = 111,
+        OpConvertUToF = 112,
+        OpUConvert = 113,
+        OpSConvert = 114,
+        OpFConvert = 115,
+        OpQuantizeToF16 = 116,
+        OpConvertPtrToU = 117,
+        OpSatConvertSToU = 118,
+        OpSatConvertUToS = 119,
+        OpConvertUToPtr = 120,
+        OpPtrCastToGeneric = 121,
+        OpGenericCastToPtr = 122,
+        OpGenericCastToPtrExplicit = 123,
+        OpBitcast = 124,
+        OpSNegate = 126,
+        OpFNegate = 127,
+        OpIAdd = 128,
+        OpFAdd = 129,
+        OpISub = 130,
+        OpFSub = 131,
+        OpIMul = 132,
+        OpFMul = 133,
+        OpUDiv = 134,
+        OpSDiv = 135,
+        OpFDiv = 136,
+        OpUMod = 137,
+        OpSRem = 138,
+        OpSMod = 139,
+        OpFRem = 140,
+        OpFMod = 141,
+        OpVectorTimesScalar = 142,
+        OpMatrixTimesScalar = 143,
+        OpVectorTimesMatrix = 144,
+        OpMatrixTimesVector = 145,
+        OpMatrixTimesMatrix = 146,
+        OpOuterProduct = 147,
+        OpDot = 148,
+        OpIAddCarry = 149,
+        OpISubBorrow = 150,
+        OpUMulExtended = 151,
+        OpSMulExtended = 152,
+        OpAny = 154,
+        OpAll = 155,
+        OpIsNan = 156,
+        OpIsInf = 157,
+        OpIsFinite = 158,
+        OpIsNormal = 159,
+        OpSignBitSet = 160,
+        OpLessOrGreater = 161,
+        OpOrdered = 162,
+        OpUnordered = 163,
+        OpLogicalEqual = 164,
+        OpLogicalNotEqual = 165,
+        OpLogicalOr = 166,
+        OpLogicalAnd = 167,
+        OpLogicalNot = 168,
+        OpSelect = 169,
+        OpIEqual = 170,
+        OpINotEqual = 171,
+        OpUGreaterThan = 172,
+        OpSGreaterThan = 173,
+        OpUGreaterThanEqual = 174,
+        OpSGreaterThanEqual = 175,
+        OpULessThan = 176,
+        OpSLessThan = 177,
+        OpULessThanEqual = 178,
+        OpSLessThanEqual = 179,
+        OpFOrdEqual = 180,
+        OpFUnordEqual = 181,
+        OpFOrdNotEqual = 182,
+        OpFUnordNotEqual = 183,
+        OpFOrdLessThan = 184,
+        OpFUnordLessThan = 185,
+        OpFOrdGreaterThan = 186,
+        OpFUnordGreaterThan = 187,
+        OpFOrdLessThanEqual = 188,
+        OpFUnordLessThanEqual = 189,
+        OpFOrdGreaterThanEqual = 190,
+        OpFUnordGreaterThanEqual = 191,
+        OpShiftRightLogical = 194,
+        OpShiftRightArithmetic = 195,
+        OpShiftLeftLogical = 196,
+        OpBitwiseOr = 197,
+        OpBitwiseXor = 198,
+        OpBitwiseAnd = 199,
+        OpNot = 200,
+        OpBitFieldInsert = 201,
+        OpBitFieldSExtract = 202,
+        OpBitFieldUExtract = 203,
+        OpBitReverse = 204,
+        OpBitCount = 205,
+        OpDPdx = 207,
+        OpDPdy = 208,
+        OpFwidth = 209,
+        OpDPdxFine = 210,
+        OpDPdyFine = 211,
+        OpFwidthFine = 212,
+        OpDPdxCoarse = 213,
+        OpDPdyCoarse = 214,
+        OpFwidthCoarse = 215,
+        OpEmitVertex = 218,
+        OpEndPrimitive = 219,
+        OpEmitStreamVertex = 220,
+        OpEndStreamPrimitive = 221,
+        OpControlBarrier = 224,
+        OpMemoryBarrier = 225,
+        OpAtomicLoad = 227,
+        OpAtomicStore = 228,
+        OpAtomicExchange = 229,
+        OpAtomicCompareExchange = 230,
+        OpAtomicCompareExchangeWeak = 231,
+        OpAtomicIIncrement = 232,
+        OpAtomicIDecrement = 233,
+        OpAtomicIAdd = 234,
+        OpAtomicISub = 235,
+        OpAtomicSMin = 236,
+        OpAtomicUMin = 237,
+        OpAtomicSMax = 238,
+        OpAtomicUMax = 239,
+        OpAtomicAnd = 240,
+        OpAtomicOr = 241,
+        OpAtomicXor = 242,
+        OpPhi = 245,
+        OpLoopMerge = 246,
+        OpSelectionMerge = 247,
+        OpLabel = 248,
+        OpBranch = 249,
+        OpBranchConditional = 250,
+        OpSwitch = 251,
+        OpKill = 252,
+        OpReturn = 253,
+        OpReturnValue = 254,
+        OpUnreachable = 255,
+        OpLifetimeStart = 256,
+        OpLifetimeStop = 257,
+        OpGroupAsyncCopy = 259,
+        OpGroupWaitEvents = 260,
+        OpGroupAll = 261,
+        OpGroupAny = 262,
+        OpGroupBroadcast = 263,
+        OpGroupIAdd = 264,
+        OpGroupFAdd = 265,
+        OpGroupFMin = 266,
+        OpGroupUMin = 267,
+        OpGroupSMin = 268,
+        OpGroupFMax = 269,
+        OpGroupUMax = 270,
+        OpGroupSMax = 271,
+        OpReadPipe = 274,
+        OpWritePipe = 275,
+        OpReservedReadPipe = 276,
+        OpReservedWritePipe = 277,
+        OpReserveReadPipePackets = 278,
+        OpReserveWritePipePackets = 279,
+        OpCommitReadPipe = 280,
+        OpCommitWritePipe = 281,
+        OpIsValidReserveId = 282,
+        OpGetNumPipePackets = 283,
+        OpGetMaxPipePackets = 284,
+        OpGroupReserveReadPipePackets = 285,
+        OpGroupReserveWritePipePackets = 286,
+        OpGroupCommitReadPipe = 287,
+        OpGroupCommitWritePipe = 288,
+        OpEnqueueMarker = 291,
+        OpEnqueueKernel = 292,
+        OpGetKernelNDrangeSubGroupCount = 293,
+        OpGetKernelNDrangeMaxSubGroupSize = 294,
+        OpGetKernelWorkGroupSize = 295,
+        OpGetKernelPreferredWorkGroupSizeMultiple = 296,
+        OpRetainEvent = 297,
+        OpReleaseEvent = 298,
+        OpCreateUserEvent = 299,
+        OpIsValidEvent = 300,
+        OpSetUserEventStatus = 301,
+        OpCaptureEventProfilingInfo = 302,
+        OpGetDefaultQueue = 303,
+        OpBuildNDRange = 304,
+        OpImageSparseSampleImplicitLod = 305,
+        OpImageSparseSampleExplicitLod = 306,
+        OpImageSparseSampleDrefImplicitLod = 307,
+        OpImageSparseSampleDrefExplicitLod = 308,
+        OpImageSparseSampleProjImplicitLod = 309,
+        OpImageSparseSampleProjExplicitLod = 310,
+        OpImageSparseSampleProjDrefImplicitLod = 311,
+        OpImageSparseSampleProjDrefExplicitLod = 312,
+        OpImageSparseFetch = 313,
+        OpImageSparseGather = 314,
+        OpImageSparseDrefGather = 315,
+        OpImageSparseTexelsResident = 316,
+        OpNoLine = 317,
+        OpAtomicFlagTestAndSet = 318,
+        OpAtomicFlagClear = 319,
+        OpImageSparseRead = 320,
+        OpSizeOf = 321,
+        OpTypePipeStorage = 322,
+        OpConstantPipeStorage = 323,
+        OpCreatePipeFromPipeStorage = 324,
+        OpGetKernelLocalSizeForSubgroupCount = 325,
+        OpGetKernelMaxNumSubgroups = 326,
+        OpTypeNamedBarrier = 327,
+        OpNamedBarrierInitialize = 328,
+        OpMemoryNamedBarrier = 329,
+        OpModuleProcessed = 330,
+        OpExecutionModeId = 331,
+        OpDecorateId = 332,
+        OpGroupNonUniformElect = 333,
+        OpGroupNonUniformAll = 334,
+        OpGroupNonUniformAny = 335,
+        OpGroupNonUniformAllEqual = 336,
+        OpGroupNonUniformBroadcast = 337,
+        OpGroupNonUniformBroadcastFirst = 338,
+        OpGroupNonUniformBallot = 339,
+        OpGroupNonUniformInverseBallot = 340,
+        OpGroupNonUniformBallotBitExtract = 341,
+        OpGroupNonUniformBallotBitCount = 342,
+        OpGroupNonUniformBallotFindLSB = 343,
+        OpGroupNonUniformBallotFindMSB = 344,
+        OpGroupNonUniformShuffle = 345,
+        OpGroupNonUniformShuffleXor = 346,
+        OpGroupNonUniformShuffleUp = 347,
+        OpGroupNonUniformShuffleDown = 348,
+        OpGroupNonUniformIAdd = 349,
+        OpGroupNonUniformFAdd = 350,
+        OpGroupNonUniformIMul = 351,
+        OpGroupNonUniformFMul = 352,
+        OpGroupNonUniformSMin = 353,
+        OpGroupNonUniformUMin = 354,
+        OpGroupNonUniformFMin = 355,
+        OpGroupNonUniformSMax = 356,
+        OpGroupNonUniformUMax = 357,
+        OpGroupNonUniformFMax = 358,
+        OpGroupNonUniformBitwiseAnd = 359,
+        OpGroupNonUniformBitwiseOr = 360,
+        OpGroupNonUniformBitwiseXor = 361,
+        OpGroupNonUniformLogicalAnd = 362,
+        OpGroupNonUniformLogicalOr = 363,
+        OpGroupNonUniformLogicalXor = 364,
+        OpGroupNonUniformQuadBroadcast = 365,
+        OpGroupNonUniformQuadSwap = 366,
+        OpCopyLogical = 400,
+        OpPtrEqual = 401,
+        OpPtrNotEqual = 402,
+        OpPtrDiff = 403,
+        OpTerminateInvocation = 4416,
+        OpSubgroupBallotKHR = 4421,
+        OpSubgroupFirstInvocationKHR = 4422,
+        OpSubgroupAllKHR = 4428,
+        OpSubgroupAnyKHR = 4429,
+        OpSubgroupAllEqualKHR = 4430,
+        OpSubgroupReadInvocationKHR = 4432,
+        OpTypeRayQueryProvisionalKHR = 4472,
+        OpRayQueryInitializeKHR = 4473,
+        OpRayQueryTerminateKHR = 4474,
+        OpRayQueryGenerateIntersectionKHR = 4475,
+        OpRayQueryConfirmIntersectionKHR = 4476,
+        OpRayQueryProceedKHR = 4477,
+        OpRayQueryGetIntersectionTypeKHR = 4479,
+        OpGroupIAddNonUniformAMD = 5000,
+        OpGroupFAddNonUniformAMD = 5001,
+        OpGroupFMinNonUniformAMD = 5002,
+        OpGroupUMinNonUniformAMD = 5003,
+        OpGroupSMinNonUniformAMD = 5004,
+        OpGroupFMaxNonUniformAMD = 5005,
+        OpGroupUMaxNonUniformAMD = 5006,
+        OpGroupSMaxNonUniformAMD = 5007,
+        OpFragmentMaskFetchAMD = 5011,
+        OpFragmentFetchAMD = 5012,
+        OpReadClockKHR = 5056,
+        OpImageSampleFootprintNV = 5283,
+        OpGroupNonUniformPartitionNV = 5296,
+        OpWritePackedPrimitiveIndices4x8NV = 5299,
+        OpReportIntersectionKHR = 5334,
+        OpReportIntersectionNV = 5334,
+        OpIgnoreIntersectionKHR = 5335,
+        OpIgnoreIntersectionNV = 5335,
+        OpTerminateRayKHR = 5336,
+        OpTerminateRayNV = 5336,
+        OpTraceNV = 5337,
+        OpTraceRayKHR = 5337,
+        OpTypeAccelerationStructureKHR = 5341,
+        OpTypeAccelerationStructureNV = 5341,
+        OpExecuteCallableKHR = 5344,
+        OpExecuteCallableNV = 5344,
+        OpTypeCooperativeMatrixNV = 5358,
+        OpCooperativeMatrixLoadNV = 5359,
+        OpCooperativeMatrixStoreNV = 5360,
+        OpCooperativeMatrixMulAddNV = 5361,
+        OpCooperativeMatrixLengthNV = 5362,
+        OpBeginInvocationInterlockEXT = 5364,
+        OpEndInvocationInterlockEXT = 5365,
+        OpDemoteToHelperInvocationEXT = 5380,
+        OpIsHelperInvocationEXT = 5381,
+        OpSubgroupShuffleINTEL = 5571,
+        OpSubgroupShuffleDownINTEL = 5572,
+        OpSubgroupShuffleUpINTEL = 5573,
+        OpSubgroupShuffleXorINTEL = 5574,
+        OpSubgroupBlockReadINTEL = 5575,
+        OpSubgroupBlockWriteINTEL = 5576,
+        OpSubgroupImageBlockReadINTEL = 5577,
+        OpSubgroupImageBlockWriteINTEL = 5578,
+        OpSubgroupImageMediaBlockReadINTEL = 5580,
+        OpSubgroupImageMediaBlockWriteINTEL = 5581,
+        OpUCountLeadingZerosINTEL = 5585,
+        OpUCountTrailingZerosINTEL = 5586,
+        OpAbsISubINTEL = 5587,
+        OpAbsUSubINTEL = 5588,
+        OpIAddSatINTEL = 5589,
+        OpUAddSatINTEL = 5590,
+        OpIAverageINTEL = 5591,
+        OpUAverageINTEL = 5592,
+        OpIAverageRoundedINTEL = 5593,
+        OpUAverageRoundedINTEL = 5594,
+        OpISubSatINTEL = 5595,
+        OpUSubSatINTEL = 5596,
+        OpIMul32x16INTEL = 5597,
+        OpUMul32x16INTEL = 5598,
+        OpFunctionPointerINTEL = 5600,
+        OpFunctionPointerCallINTEL = 5601,
+        OpDecorateString = 5632,
+        OpDecorateStringGOOGLE = 5632,
+        OpMemberDecorateString = 5633,
+        OpMemberDecorateStringGOOGLE = 5633,
+        OpVmeImageINTEL = 5699,
+        OpTypeVmeImageINTEL = 5700,
+        OpTypeAvcImePayloadINTEL = 5701,
+        OpTypeAvcRefPayloadINTEL = 5702,
+        OpTypeAvcSicPayloadINTEL = 5703,
+        OpTypeAvcMcePayloadINTEL = 5704,
+        OpTypeAvcMceResultINTEL = 5705,
+        OpTypeAvcImeResultINTEL = 5706,
+        OpTypeAvcImeResultSingleReferenceStreamoutINTEL = 5707,
+        OpTypeAvcImeResultDualReferenceStreamoutINTEL = 5708,
+        OpTypeAvcImeSingleReferenceStreaminINTEL = 5709,
+        OpTypeAvcImeDualReferenceStreaminINTEL = 5710,
+        OpTypeAvcRefResultINTEL = 5711,
+        OpTypeAvcSicResultINTEL = 5712,
+        OpSubgroupAvcMceGetDefaultInterBaseMultiReferencePenaltyINTEL = 5713,
+        OpSubgroupAvcMceSetInterBaseMultiReferencePenaltyINTEL = 5714,
+        OpSubgroupAvcMceGetDefaultInterShapePenaltyINTEL = 5715,
+        OpSubgroupAvcMceSetInterShapePenaltyINTEL = 5716,
+        OpSubgroupAvcMceGetDefaultInterDirectionPenaltyINTEL = 5717,
+        OpSubgroupAvcMceSetInterDirectionPenaltyINTEL = 5718,
+        OpSubgroupAvcMceGetDefaultIntraLumaShapePenaltyINTEL = 5719,
+        OpSubgroupAvcMceGetDefaultInterMotionVectorCostTableINTEL = 5720,
+        OpSubgroupAvcMceGetDefaultHighPenaltyCostTableINTEL = 5721,
+        OpSubgroupAvcMceGetDefaultMediumPenaltyCostTableINTEL = 5722,
+        OpSubgroupAvcMceGetDefaultLowPenaltyCostTableINTEL = 5723,
+        OpSubgroupAvcMceSetMotionVectorCostFunctionINTEL = 5724,
+        OpSubgroupAvcMceGetDefaultIntraLumaModePenaltyINTEL = 5725,
+        OpSubgroupAvcMceGetDefaultNonDcLumaIntraPenaltyINTEL = 5726,
+        OpSubgroupAvcMceGetDefaultIntraChromaModeBasePenaltyINTEL = 5727,
+        OpSubgroupAvcMceSetAcOnlyHaarINTEL = 5728,
+        OpSubgroupAvcMceSetSourceInterlacedFieldPolarityINTEL = 5729,
+        OpSubgroupAvcMceSetSingleReferenceInterlacedFieldPolarityINTEL = 5730,
+        OpSubgroupAvcMceSetDualReferenceInterlacedFieldPolaritiesINTEL = 5731,
+        OpSubgroupAvcMceConvertToImePayloadINTEL = 5732,
+        OpSubgroupAvcMceConvertToImeResultINTEL = 5733,
+        OpSubgroupAvcMceConvertToRefPayloadINTEL = 5734,
+        OpSubgroupAvcMceConvertToRefResultINTEL = 5735,
+        OpSubgroupAvcMceConvertToSicPayloadINTEL = 5736,
+        OpSubgroupAvcMceConvertToSicResultINTEL = 5737,
+        OpSubgroupAvcMceGetMotionVectorsINTEL = 5738,
+        OpSubgroupAvcMceGetInterDistortionsINTEL = 5739,
+        OpSubgroupAvcMceGetBestInterDistortionsINTEL = 5740,
+        OpSubgroupAvcMceGetInterMajorShapeINTEL = 5741,
+        OpSubgroupAvcMceGetInterMinorShapeINTEL = 5742,
+        OpSubgroupAvcMceGetInterDirectionsINTEL = 5743,
+        OpSubgroupAvcMceGetInterMotionVectorCountINTEL = 5744,
+        OpSubgroupAvcMceGetInterReferenceIdsINTEL = 5745,
+        OpSubgroupAvcMceGetInterReferenceInterlacedFieldPolaritiesINTEL = 5746,
+        OpSubgroupAvcImeInitializeINTEL = 5747,
+        OpSubgroupAvcImeSetSingleReferenceINTEL = 5748,
+        OpSubgroupAvcImeSetDualReferenceINTEL = 5749,
+        OpSubgroupAvcImeRefWindowSizeINTEL = 5750,
+        OpSubgroupAvcImeAdjustRefOffsetINTEL = 5751,
+        OpSubgroupAvcImeConvertToMcePayloadINTEL = 5752,
+        OpSubgroupAvcImeSetMaxMotionVectorCountINTEL = 5753,
+        OpSubgroupAvcImeSetUnidirectionalMixDisableINTEL = 5754,
+        OpSubgroupAvcImeSetEarlySearchTerminationThresholdINTEL = 5755,
+        OpSubgroupAvcImeSetWeightedSadINTEL = 5756,
+        OpSubgroupAvcImeEvaluateWithSingleReferenceINTEL = 5757,
+        OpSubgroupAvcImeEvaluateWithDualReferenceINTEL = 5758,
+        OpSubgroupAvcImeEvaluateWithSingleReferenceStreaminINTEL = 5759,
+        OpSubgroupAvcImeEvaluateWithDualReferenceStreaminINTEL = 5760,
+        OpSubgroupAvcImeEvaluateWithSingleReferenceStreamoutINTEL = 5761,
+        OpSubgroupAvcImeEvaluateWithDualReferenceStreamoutINTEL = 5762,
+        OpSubgroupAvcImeEvaluateWithSingleReferenceStreaminoutINTEL = 5763,
+        OpSubgroupAvcImeEvaluateWithDualReferenceStreaminoutINTEL = 5764,
+        OpSubgroupAvcImeConvertToMceResultINTEL = 5765,
+        OpSubgroupAvcImeGetSingleReferenceStreaminINTEL = 5766,
+        OpSubgroupAvcImeGetDualReferenceStreaminINTEL = 5767,
+        OpSubgroupAvcImeStripSingleReferenceStreamoutINTEL = 5768,
+        OpSubgroupAvcImeStripDualReferenceStreamoutINTEL = 5769,
+        OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeMotionVectorsINTEL = 5770,
+        OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeDistortionsINTEL = 5771,
+        OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeReferenceIdsINTEL = 5772,
+        OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeMotionVectorsINTEL = 5773,
+        OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeDistortionsINTEL = 5774,
+        OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeReferenceIdsINTEL = 5775,
+        OpSubgroupAvcImeGetBorderReachedINTEL = 5776,
+        OpSubgroupAvcImeGetTruncatedSearchIndicationINTEL = 5777,
+        OpSubgroupAvcImeGetUnidirectionalEarlySearchTerminationINTEL = 5778,
+        OpSubgroupAvcImeGetWeightingPatternMinimumMotionVectorINTEL = 5779,
+        OpSubgroupAvcImeGetWeightingPatternMinimumDistortionINTEL = 5780,
+        OpSubgroupAvcFmeInitializeINTEL = 5781,
+        OpSubgroupAvcBmeInitializeINTEL = 5782,
+        OpSubgroupAvcRefConvertToMcePayloadINTEL = 5783,
+        OpSubgroupAvcRefSetBidirectionalMixDisableINTEL = 5784,
+        OpSubgroupAvcRefSetBilinearFilterEnableINTEL = 5785,
+        OpSubgroupAvcRefEvaluateWithSingleReferenceINTEL = 5786,
+        OpSubgroupAvcRefEvaluateWithDualReferenceINTEL = 5787,
+        OpSubgroupAvcRefEvaluateWithMultiReferenceINTEL = 5788,
+        OpSubgroupAvcRefEvaluateWithMultiReferenceInterlacedINTEL = 5789,
+        OpSubgroupAvcRefConvertToMceResultINTEL = 5790,
+        OpSubgroupAvcSicInitializeINTEL = 5791,
+        OpSubgroupAvcSicConfigureSkcINTEL = 5792,
+        OpSubgroupAvcSicConfigureIpeLumaINTEL = 5793,
+        OpSubgroupAvcSicConfigureIpeLumaChromaINTEL = 5794,
+        OpSubgroupAvcSicGetMotionVectorMaskINTEL = 5795,
+        OpSubgroupAvcSicConvertToMcePayloadINTEL = 5796,
+        OpSubgroupAvcSicSetIntraLumaShapePenaltyINTEL = 5797,
+        OpSubgroupAvcSicSetIntraLumaModeCostFunctionINTEL = 5798,
+        OpSubgroupAvcSicSetIntraChromaModeCostFunctionINTEL = 5799,
+        OpSubgroupAvcSicSetBilinearFilterEnableINTEL = 5800,
+        OpSubgroupAvcSicSetSkcForwardTransformEnableINTEL = 5801,
+        OpSubgroupAvcSicSetBlockBasedRawSkipSadINTEL = 5802,
+        OpSubgroupAvcSicEvaluateIpeINTEL = 5803,
+        OpSubgroupAvcSicEvaluateWithSingleReferenceINTEL = 5804,
+        OpSubgroupAvcSicEvaluateWithDualReferenceINTEL = 5805,
+        OpSubgroupAvcSicEvaluateWithMultiReferenceINTEL = 5806,
+        OpSubgroupAvcSicEvaluateWithMultiReferenceInterlacedINTEL = 5807,
+        OpSubgroupAvcSicConvertToMceResultINTEL = 5808,
+        OpSubgroupAvcSicGetIpeLumaShapeINTEL = 5809,
+        OpSubgroupAvcSicGetBestIpeLumaDistortionINTEL = 5810,
+        OpSubgroupAvcSicGetBestIpeChromaDistortionINTEL = 5811,
+        OpSubgroupAvcSicGetPackedIpeLumaModesINTEL = 5812,
+        OpSubgroupAvcSicGetIpeChromaModeINTEL = 5813,
+        OpSubgroupAvcSicGetPackedSkcLumaCountThresholdINTEL = 5814,
+        OpSubgroupAvcSicGetPackedSkcLumaSumThresholdINTEL = 5815,
+        OpSubgroupAvcSicGetInterRawSadsINTEL = 5816,
+        OpLoopControlINTEL = 5887,
+        OpReadPipeBlockingINTEL = 5946,
+        OpWritePipeBlockingINTEL = 5947,
+        OpFPGARegINTEL = 5949,
+        OpRayQueryGetRayTMinKHR = 6016,
+        OpRayQueryGetRayFlagsKHR = 6017,
+        OpRayQueryGetIntersectionTKHR = 6018,
+        OpRayQueryGetIntersectionInstanceCustomIndexKHR = 6019,
+        OpRayQueryGetIntersectionInstanceIdKHR = 6020,
+        OpRayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR = 6021,
+        OpRayQueryGetIntersectionGeometryIndexKHR = 6022,
+        OpRayQueryGetIntersectionPrimitiveIndexKHR = 6023,
+        OpRayQueryGetIntersectionBarycentricsKHR = 6024,
+        OpRayQueryGetIntersectionFrontFaceKHR = 6025,
+        OpRayQueryGetIntersectionCandidateAABBOpaqueKHR = 6026,
+        OpRayQueryGetIntersectionObjectRayDirectionKHR = 6027,
+        OpRayQueryGetIntersectionObjectRayOriginKHR = 6028,
+        OpRayQueryGetWorldRayDirectionKHR = 6029,
+        OpRayQueryGetWorldRayOriginKHR = 6030,
+        OpRayQueryGetIntersectionObjectToWorldKHR = 6031,
+        OpRayQueryGetIntersectionWorldToObjectKHR = 6032,
+        OpAtomicFAddEXT = 6035,
+    },
+
+}
+
diff --git a/libs/spirv-headers/spirv/unified1/spirv.py b/libs/spirv-headers/spirv/unified1/spirv.py
new file mode 100644
index 00000000000..869b7f3ba54
--- /dev/null
+++ b/libs/spirv-headers/spirv/unified1/spirv.py
@@ -0,0 +1,1572 @@
+# Copyright (c) 2014-2020 The Khronos Group Inc.
+# 
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and/or associated documentation files (the "Materials"),
+# to deal in the Materials without restriction, including without limitation
+# the rights to use, copy, modify, merge, publish, distribute, sublicense,
+# and/or sell copies of the Materials, and to permit persons to whom the
+# Materials are furnished to do so, subject to the following conditions:
+# 
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Materials.
+# 
+# MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS KHRONOS
+# STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS SPECIFICATIONS AND
+# HEADER INFORMATION ARE LOCATED AT https://www.khronos.org/registry/ 
+# 
+# THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+# FROM,OUT OF OR IN CONNECTION WITH THE MATERIALS OR THE USE OR OTHER DEALINGS
+# IN THE MATERIALS.
+
+# This header is automatically generated by the same tool that creates
+# the Binary Section of the SPIR-V specification.
+
+# Enumeration tokens for SPIR-V, in various styles:
+#   C, C++, C++11, JSON, Lua, Python, C#, D
+# 
+# - C will have tokens with a "Spv" prefix, e.g.: SpvSourceLanguageGLSL
+# - C++ will have tokens in the "spv" name space, e.g.: spv::SourceLanguageGLSL
+# - C++11 will use enum classes in the spv namespace, e.g.: spv::SourceLanguage::GLSL
+# - Lua will use tables, e.g.: spv.SourceLanguage.GLSL
+# - Python will use dictionaries, e.g.: spv['SourceLanguage']['GLSL']
+# - C# will use enum classes in the Specification class located in the "Spv" namespace,
+#     e.g.: Spv.Specification.SourceLanguage.GLSL
+# - D will have tokens under the "spv" module, e.g: spv.SourceLanguage.GLSL
+# 
+# Some tokens act like mask values, which can be OR'd together,
+# while others are mutually exclusive.  The mask-like ones have
+# "Mask" in their name, and a parallel enum that has the shift
+# amount (1 << x) for each corresponding enumerant.
+
+spv = {
+    'MagicNumber' : 0x07230203,
+    'Version' : 0x00010500,
+    'Revision' : 4,
+    'OpCodeMask' : 0xffff,
+    'WordCountShift' : 16,
+
+    'SourceLanguage' : {
+        'Unknown' : 0,
+        'ESSL' : 1,
+        'GLSL' : 2,
+        'OpenCL_C' : 3,
+        'OpenCL_CPP' : 4,
+        'HLSL' : 5,
+    },
+
+    'ExecutionModel' : {
+        'Vertex' : 0,
+        'TessellationControl' : 1,
+        'TessellationEvaluation' : 2,
+        'Geometry' : 3,
+        'Fragment' : 4,
+        'GLCompute' : 5,
+        'Kernel' : 6,
+        'TaskNV' : 5267,
+        'MeshNV' : 5268,
+        'RayGenerationKHR' : 5313,
+        'RayGenerationNV' : 5313,
+        'IntersectionKHR' : 5314,
+        'IntersectionNV' : 5314,
+        'AnyHitKHR' : 5315,
+        'AnyHitNV' : 5315,
+        'ClosestHitKHR' : 5316,
+        'ClosestHitNV' : 5316,
+        'MissKHR' : 5317,
+        'MissNV' : 5317,
+        'CallableKHR' : 5318,
+        'CallableNV' : 5318,
+    },
+
+    'AddressingModel' : {
+        'Logical' : 0,
+        'Physical32' : 1,
+        'Physical64' : 2,
+        'PhysicalStorageBuffer64' : 5348,
+        'PhysicalStorageBuffer64EXT' : 5348,
+    },
+
+    'MemoryModel' : {
+        'Simple' : 0,
+        'GLSL450' : 1,
+        'OpenCL' : 2,
+        'Vulkan' : 3,
+        'VulkanKHR' : 3,
+    },
+
+    'ExecutionMode' : {
+        'Invocations' : 0,
+        'SpacingEqual' : 1,
+        'SpacingFractionalEven' : 2,
+        'SpacingFractionalOdd' : 3,
+        'VertexOrderCw' : 4,
+        'VertexOrderCcw' : 5,
+        'PixelCenterInteger' : 6,
+        'OriginUpperLeft' : 7,
+        'OriginLowerLeft' : 8,
+        'EarlyFragmentTests' : 9,
+        'PointMode' : 10,
+        'Xfb' : 11,
+        'DepthReplacing' : 12,
+        'DepthGreater' : 14,
+        'DepthLess' : 15,
+        'DepthUnchanged' : 16,
+        'LocalSize' : 17,
+        'LocalSizeHint' : 18,
+        'InputPoints' : 19,
+        'InputLines' : 20,
+        'InputLinesAdjacency' : 21,
+        'Triangles' : 22,
+        'InputTrianglesAdjacency' : 23,
+        'Quads' : 24,
+        'Isolines' : 25,
+        'OutputVertices' : 26,
+        'OutputPoints' : 27,
+        'OutputLineStrip' : 28,
+        'OutputTriangleStrip' : 29,
+        'VecTypeHint' : 30,
+        'ContractionOff' : 31,
+        'Initializer' : 33,
+        'Finalizer' : 34,
+        'SubgroupSize' : 35,
+        'SubgroupsPerWorkgroup' : 36,
+        'SubgroupsPerWorkgroupId' : 37,
+        'LocalSizeId' : 38,
+        'LocalSizeHintId' : 39,
+        'PostDepthCoverage' : 4446,
+        'DenormPreserve' : 4459,
+        'DenormFlushToZero' : 4460,
+        'SignedZeroInfNanPreserve' : 4461,
+        'RoundingModeRTE' : 4462,
+        'RoundingModeRTZ' : 4463,
+        'StencilRefReplacingEXT' : 5027,
+        'OutputLinesNV' : 5269,
+        'OutputPrimitivesNV' : 5270,
+        'DerivativeGroupQuadsNV' : 5289,
+        'DerivativeGroupLinearNV' : 5290,
+        'OutputTrianglesNV' : 5298,
+        'PixelInterlockOrderedEXT' : 5366,
+        'PixelInterlockUnorderedEXT' : 5367,
+        'SampleInterlockOrderedEXT' : 5368,
+        'SampleInterlockUnorderedEXT' : 5369,
+        'ShadingRateInterlockOrderedEXT' : 5370,
+        'ShadingRateInterlockUnorderedEXT' : 5371,
+        'MaxWorkgroupSizeINTEL' : 5893,
+        'MaxWorkDimINTEL' : 5894,
+        'NoGlobalOffsetINTEL' : 5895,
+        'NumSIMDWorkitemsINTEL' : 5896,
+    },
+
+    'StorageClass' : {
+        'UniformConstant' : 0,
+        'Input' : 1,
+        'Uniform' : 2,
+        'Output' : 3,
+        'Workgroup' : 4,
+        'CrossWorkgroup' : 5,
+        'Private' : 6,
+        'Function' : 7,
+        'Generic' : 8,
+        'PushConstant' : 9,
+        'AtomicCounter' : 10,
+        'Image' : 11,
+        'StorageBuffer' : 12,
+        'CallableDataKHR' : 5328,
+        'CallableDataNV' : 5328,
+        'IncomingCallableDataKHR' : 5329,
+        'IncomingCallableDataNV' : 5329,
+        'RayPayloadKHR' : 5338,
+        'RayPayloadNV' : 5338,
+        'HitAttributeKHR' : 5339,
+        'HitAttributeNV' : 5339,
+        'IncomingRayPayloadKHR' : 5342,
+        'IncomingRayPayloadNV' : 5342,
+        'ShaderRecordBufferKHR' : 5343,
+        'ShaderRecordBufferNV' : 5343,
+        'PhysicalStorageBuffer' : 5349,
+        'PhysicalStorageBufferEXT' : 5349,
+        'CodeSectionINTEL' : 5605,
+    },
+
+    'Dim' : {
+        'Dim1D' : 0,
+        'Dim2D' : 1,
+        'Dim3D' : 2,
+        'Cube' : 3,
+        'Rect' : 4,
+        'Buffer' : 5,
+        'SubpassData' : 6,
+    },
+
+    'SamplerAddressingMode' : {
+        'None' : 0,
+        'ClampToEdge' : 1,
+        'Clamp' : 2,
+        'Repeat' : 3,
+        'RepeatMirrored' : 4,
+    },
+
+    'SamplerFilterMode' : {
+        'Nearest' : 0,
+        'Linear' : 1,
+    },
+
+    'ImageFormat' : {
+        'Unknown' : 0,
+        'Rgba32f' : 1,
+        'Rgba16f' : 2,
+        'R32f' : 3,
+        'Rgba8' : 4,
+        'Rgba8Snorm' : 5,
+        'Rg32f' : 6,
+        'Rg16f' : 7,
+        'R11fG11fB10f' : 8,
+        'R16f' : 9,
+        'Rgba16' : 10,
+        'Rgb10A2' : 11,
+        'Rg16' : 12,
+        'Rg8' : 13,
+        'R16' : 14,
+        'R8' : 15,
+        'Rgba16Snorm' : 16,
+        'Rg16Snorm' : 17,
+        'Rg8Snorm' : 18,
+        'R16Snorm' : 19,
+        'R8Snorm' : 20,
+        'Rgba32i' : 21,
+        'Rgba16i' : 22,
+        'Rgba8i' : 23,
+        'R32i' : 24,
+        'Rg32i' : 25,
+        'Rg16i' : 26,
+        'Rg8i' : 27,
+        'R16i' : 28,
+        'R8i' : 29,
+        'Rgba32ui' : 30,
+        'Rgba16ui' : 31,
+        'Rgba8ui' : 32,
+        'R32ui' : 33,
+        'Rgb10a2ui' : 34,
+        'Rg32ui' : 35,
+        'Rg16ui' : 36,
+        'Rg8ui' : 37,
+        'R16ui' : 38,
+        'R8ui' : 39,
+        'R64ui' : 40,
+        'R64i' : 41,
+    },
+
+    'ImageChannelOrder' : {
+        'R' : 0,
+        'A' : 1,
+        'RG' : 2,
+        'RA' : 3,
+        'RGB' : 4,
+        'RGBA' : 5,
+        'BGRA' : 6,
+        'ARGB' : 7,
+        'Intensity' : 8,
+        'Luminance' : 9,
+        'Rx' : 10,
+        'RGx' : 11,
+        'RGBx' : 12,
+        'Depth' : 13,
+        'DepthStencil' : 14,
+        'sRGB' : 15,
+        'sRGBx' : 16,
+        'sRGBA' : 17,
+        'sBGRA' : 18,
+        'ABGR' : 19,
+    },
+
+    'ImageChannelDataType' : {
+        'SnormInt8' : 0,
+        'SnormInt16' : 1,
+        'UnormInt8' : 2,
+        'UnormInt16' : 3,
+        'UnormShort565' : 4,
+        'UnormShort555' : 5,
+        'UnormInt101010' : 6,
+        'SignedInt8' : 7,
+        'SignedInt16' : 8,
+        'SignedInt32' : 9,
+        'UnsignedInt8' : 10,
+        'UnsignedInt16' : 11,
+        'UnsignedInt32' : 12,
+        'HalfFloat' : 13,
+        'Float' : 14,
+        'UnormInt24' : 15,
+        'UnormInt101010_2' : 16,
+    },
+
+    'ImageOperandsShift' : {
+        'Bias' : 0,
+        'Lod' : 1,
+        'Grad' : 2,
+        'ConstOffset' : 3,
+        'Offset' : 4,
+        'ConstOffsets' : 5,
+        'Sample' : 6,
+        'MinLod' : 7,
+        'MakeTexelAvailable' : 8,
+        'MakeTexelAvailableKHR' : 8,
+        'MakeTexelVisible' : 9,
+        'MakeTexelVisibleKHR' : 9,
+        'NonPrivateTexel' : 10,
+        'NonPrivateTexelKHR' : 10,
+        'VolatileTexel' : 11,
+        'VolatileTexelKHR' : 11,
+        'SignExtend' : 12,
+        'ZeroExtend' : 13,
+    },
+
+    'ImageOperandsMask' : {
+        'MaskNone' : 0,
+        'Bias' : 0x00000001,
+        'Lod' : 0x00000002,
+        'Grad' : 0x00000004,
+        'ConstOffset' : 0x00000008,
+        'Offset' : 0x00000010,
+        'ConstOffsets' : 0x00000020,
+        'Sample' : 0x00000040,
+        'MinLod' : 0x00000080,
+        'MakeTexelAvailable' : 0x00000100,
+        'MakeTexelAvailableKHR' : 0x00000100,
+        'MakeTexelVisible' : 0x00000200,
+        'MakeTexelVisibleKHR' : 0x00000200,
+        'NonPrivateTexel' : 0x00000400,
+        'NonPrivateTexelKHR' : 0x00000400,
+        'VolatileTexel' : 0x00000800,
+        'VolatileTexelKHR' : 0x00000800,
+        'SignExtend' : 0x00001000,
+        'ZeroExtend' : 0x00002000,
+    },
+
+    'FPFastMathModeShift' : {
+        'NotNaN' : 0,
+        'NotInf' : 1,
+        'NSZ' : 2,
+        'AllowRecip' : 3,
+        'Fast' : 4,
+    },
+
+    'FPFastMathModeMask' : {
+        'MaskNone' : 0,
+        'NotNaN' : 0x00000001,
+        'NotInf' : 0x00000002,
+        'NSZ' : 0x00000004,
+        'AllowRecip' : 0x00000008,
+        'Fast' : 0x00000010,
+    },
+
+    'FPRoundingMode' : {
+        'RTE' : 0,
+        'RTZ' : 1,
+        'RTP' : 2,
+        'RTN' : 3,
+    },
+
+    'LinkageType' : {
+        'Export' : 0,
+        'Import' : 1,
+    },
+
+    'AccessQualifier' : {
+        'ReadOnly' : 0,
+        'WriteOnly' : 1,
+        'ReadWrite' : 2,
+    },
+
+    'FunctionParameterAttribute' : {
+        'Zext' : 0,
+        'Sext' : 1,
+        'ByVal' : 2,
+        'Sret' : 3,
+        'NoAlias' : 4,
+        'NoCapture' : 5,
+        'NoWrite' : 6,
+        'NoReadWrite' : 7,
+    },
+
+    'Decoration' : {
+        'RelaxedPrecision' : 0,
+        'SpecId' : 1,
+        'Block' : 2,
+        'BufferBlock' : 3,
+        'RowMajor' : 4,
+        'ColMajor' : 5,
+        'ArrayStride' : 6,
+        'MatrixStride' : 7,
+        'GLSLShared' : 8,
+        'GLSLPacked' : 9,
+        'CPacked' : 10,
+        'BuiltIn' : 11,
+        'NoPerspective' : 13,
+        'Flat' : 14,
+        'Patch' : 15,
+        'Centroid' : 16,
+        'Sample' : 17,
+        'Invariant' : 18,
+        'Restrict' : 19,
+        'Aliased' : 20,
+        'Volatile' : 21,
+        'Constant' : 22,
+        'Coherent' : 23,
+        'NonWritable' : 24,
+        'NonReadable' : 25,
+        'Uniform' : 26,
+        'UniformId' : 27,
+        'SaturatedConversion' : 28,
+        'Stream' : 29,
+        'Location' : 30,
+        'Component' : 31,
+        'Index' : 32,
+        'Binding' : 33,
+        'DescriptorSet' : 34,
+        'Offset' : 35,
+        'XfbBuffer' : 36,
+        'XfbStride' : 37,
+        'FuncParamAttr' : 38,
+        'FPRoundingMode' : 39,
+        'FPFastMathMode' : 40,
+        'LinkageAttributes' : 41,
+        'NoContraction' : 42,
+        'InputAttachmentIndex' : 43,
+        'Alignment' : 44,
+        'MaxByteOffset' : 45,
+        'AlignmentId' : 46,
+        'MaxByteOffsetId' : 47,
+        'NoSignedWrap' : 4469,
+        'NoUnsignedWrap' : 4470,
+        'ExplicitInterpAMD' : 4999,
+        'OverrideCoverageNV' : 5248,
+        'PassthroughNV' : 5250,
+        'ViewportRelativeNV' : 5252,
+        'SecondaryViewportRelativeNV' : 5256,
+        'PerPrimitiveNV' : 5271,
+        'PerViewNV' : 5272,
+        'PerTaskNV' : 5273,
+        'PerVertexNV' : 5285,
+        'NonUniform' : 5300,
+        'NonUniformEXT' : 5300,
+        'RestrictPointer' : 5355,
+        'RestrictPointerEXT' : 5355,
+        'AliasedPointer' : 5356,
+        'AliasedPointerEXT' : 5356,
+        'ReferencedIndirectlyINTEL' : 5602,
+        'CounterBuffer' : 5634,
+        'HlslCounterBufferGOOGLE' : 5634,
+        'HlslSemanticGOOGLE' : 5635,
+        'UserSemantic' : 5635,
+        'UserTypeGOOGLE' : 5636,
+        'RegisterINTEL' : 5825,
+        'MemoryINTEL' : 5826,
+        'NumbanksINTEL' : 5827,
+        'BankwidthINTEL' : 5828,
+        'MaxPrivateCopiesINTEL' : 5829,
+        'SinglepumpINTEL' : 5830,
+        'DoublepumpINTEL' : 5831,
+        'MaxReplicatesINTEL' : 5832,
+        'SimpleDualPortINTEL' : 5833,
+        'MergeINTEL' : 5834,
+        'BankBitsINTEL' : 5835,
+        'ForcePow2DepthINTEL' : 5836,
+    },
+
+    'BuiltIn' : {
+        'Position' : 0,
+        'PointSize' : 1,
+        'ClipDistance' : 3,
+        'CullDistance' : 4,
+        'VertexId' : 5,
+        'InstanceId' : 6,
+        'PrimitiveId' : 7,
+        'InvocationId' : 8,
+        'Layer' : 9,
+        'ViewportIndex' : 10,
+        'TessLevelOuter' : 11,
+        'TessLevelInner' : 12,
+        'TessCoord' : 13,
+        'PatchVertices' : 14,
+        'FragCoord' : 15,
+        'PointCoord' : 16,
+        'FrontFacing' : 17,
+        'SampleId' : 18,
+        'SamplePosition' : 19,
+        'SampleMask' : 20,
+        'FragDepth' : 22,
+        'HelperInvocation' : 23,
+        'NumWorkgroups' : 24,
+        'WorkgroupSize' : 25,
+        'WorkgroupId' : 26,
+        'LocalInvocationId' : 27,
+        'GlobalInvocationId' : 28,
+        'LocalInvocationIndex' : 29,
+        'WorkDim' : 30,
+        'GlobalSize' : 31,
+        'EnqueuedWorkgroupSize' : 32,
+        'GlobalOffset' : 33,
+        'GlobalLinearId' : 34,
+        'SubgroupSize' : 36,
+        'SubgroupMaxSize' : 37,
+        'NumSubgroups' : 38,
+        'NumEnqueuedSubgroups' : 39,
+        'SubgroupId' : 40,
+        'SubgroupLocalInvocationId' : 41,
+        'VertexIndex' : 42,
+        'InstanceIndex' : 43,
+        'SubgroupEqMask' : 4416,
+        'SubgroupEqMaskKHR' : 4416,
+        'SubgroupGeMask' : 4417,
+        'SubgroupGeMaskKHR' : 4417,
+        'SubgroupGtMask' : 4418,
+        'SubgroupGtMaskKHR' : 4418,
+        'SubgroupLeMask' : 4419,
+        'SubgroupLeMaskKHR' : 4419,
+        'SubgroupLtMask' : 4420,
+        'SubgroupLtMaskKHR' : 4420,
+        'BaseVertex' : 4424,
+        'BaseInstance' : 4425,
+        'DrawIndex' : 4426,
+        'PrimitiveShadingRateKHR' : 4432,
+        'DeviceIndex' : 4438,
+        'ViewIndex' : 4440,
+        'ShadingRateKHR' : 4444,
+        'BaryCoordNoPerspAMD' : 4992,
+        'BaryCoordNoPerspCentroidAMD' : 4993,
+        'BaryCoordNoPerspSampleAMD' : 4994,
+        'BaryCoordSmoothAMD' : 4995,
+        'BaryCoordSmoothCentroidAMD' : 4996,
+        'BaryCoordSmoothSampleAMD' : 4997,
+        'BaryCoordPullModelAMD' : 4998,
+        'FragStencilRefEXT' : 5014,
+        'ViewportMaskNV' : 5253,
+        'SecondaryPositionNV' : 5257,
+        'SecondaryViewportMaskNV' : 5258,
+        'PositionPerViewNV' : 5261,
+        'ViewportMaskPerViewNV' : 5262,
+        'FullyCoveredEXT' : 5264,
+        'TaskCountNV' : 5274,
+        'PrimitiveCountNV' : 5275,
+        'PrimitiveIndicesNV' : 5276,
+        'ClipDistancePerViewNV' : 5277,
+        'CullDistancePerViewNV' : 5278,
+        'LayerPerViewNV' : 5279,
+        'MeshViewCountNV' : 5280,
+        'MeshViewIndicesNV' : 5281,
+        'BaryCoordNV' : 5286,
+        'BaryCoordNoPerspNV' : 5287,
+        'FragSizeEXT' : 5292,
+        'FragmentSizeNV' : 5292,
+        'FragInvocationCountEXT' : 5293,
+        'InvocationsPerPixelNV' : 5293,
+        'LaunchIdKHR' : 5319,
+        'LaunchIdNV' : 5319,
+        'LaunchSizeKHR' : 5320,
+        'LaunchSizeNV' : 5320,
+        'WorldRayOriginKHR' : 5321,
+        'WorldRayOriginNV' : 5321,
+        'WorldRayDirectionKHR' : 5322,
+        'WorldRayDirectionNV' : 5322,
+        'ObjectRayOriginKHR' : 5323,
+        'ObjectRayOriginNV' : 5323,
+        'ObjectRayDirectionKHR' : 5324,
+        'ObjectRayDirectionNV' : 5324,
+        'RayTminKHR' : 5325,
+        'RayTminNV' : 5325,
+        'RayTmaxKHR' : 5326,
+        'RayTmaxNV' : 5326,
+        'InstanceCustomIndexKHR' : 5327,
+        'InstanceCustomIndexNV' : 5327,
+        'ObjectToWorldKHR' : 5330,
+        'ObjectToWorldNV' : 5330,
+        'WorldToObjectKHR' : 5331,
+        'WorldToObjectNV' : 5331,
+        'HitTKHR' : 5332,
+        'HitTNV' : 5332,
+        'HitKindKHR' : 5333,
+        'HitKindNV' : 5333,
+        'IncomingRayFlagsKHR' : 5351,
+        'IncomingRayFlagsNV' : 5351,
+        'RayGeometryIndexKHR' : 5352,
+        'WarpsPerSMNV' : 5374,
+        'SMCountNV' : 5375,
+        'WarpIDNV' : 5376,
+        'SMIDNV' : 5377,
+    },
+
+    'SelectionControlShift' : {
+        'Flatten' : 0,
+        'DontFlatten' : 1,
+    },
+
+    'SelectionControlMask' : {
+        'MaskNone' : 0,
+        'Flatten' : 0x00000001,
+        'DontFlatten' : 0x00000002,
+    },
+
+    'LoopControlShift' : {
+        'Unroll' : 0,
+        'DontUnroll' : 1,
+        'DependencyInfinite' : 2,
+        'DependencyLength' : 3,
+        'MinIterations' : 4,
+        'MaxIterations' : 5,
+        'IterationMultiple' : 6,
+        'PeelCount' : 7,
+        'PartialCount' : 8,
+        'InitiationIntervalINTEL' : 16,
+        'MaxConcurrencyINTEL' : 17,
+        'DependencyArrayINTEL' : 18,
+        'PipelineEnableINTEL' : 19,
+        'LoopCoalesceINTEL' : 20,
+        'MaxInterleavingINTEL' : 21,
+        'SpeculatedIterationsINTEL' : 22,
+    },
+
+    'LoopControlMask' : {
+        'MaskNone' : 0,
+        'Unroll' : 0x00000001,
+        'DontUnroll' : 0x00000002,
+        'DependencyInfinite' : 0x00000004,
+        'DependencyLength' : 0x00000008,
+        'MinIterations' : 0x00000010,
+        'MaxIterations' : 0x00000020,
+        'IterationMultiple' : 0x00000040,
+        'PeelCount' : 0x00000080,
+        'PartialCount' : 0x00000100,
+        'InitiationIntervalINTEL' : 0x00010000,
+        'MaxConcurrencyINTEL' : 0x00020000,
+        'DependencyArrayINTEL' : 0x00040000,
+        'PipelineEnableINTEL' : 0x00080000,
+        'LoopCoalesceINTEL' : 0x00100000,
+        'MaxInterleavingINTEL' : 0x00200000,
+        'SpeculatedIterationsINTEL' : 0x00400000,
+    },
+
+    'FunctionControlShift' : {
+        'Inline' : 0,
+        'DontInline' : 1,
+        'Pure' : 2,
+        'Const' : 3,
+    },
+
+    'FunctionControlMask' : {
+        'MaskNone' : 0,
+        'Inline' : 0x00000001,
+        'DontInline' : 0x00000002,
+        'Pure' : 0x00000004,
+        'Const' : 0x00000008,
+    },
+
+    'MemorySemanticsShift' : {
+        'Acquire' : 1,
+        'Release' : 2,
+        'AcquireRelease' : 3,
+        'SequentiallyConsistent' : 4,
+        'UniformMemory' : 6,
+        'SubgroupMemory' : 7,
+        'WorkgroupMemory' : 8,
+        'CrossWorkgroupMemory' : 9,
+        'AtomicCounterMemory' : 10,
+        'ImageMemory' : 11,
+        'OutputMemory' : 12,
+        'OutputMemoryKHR' : 12,
+        'MakeAvailable' : 13,
+        'MakeAvailableKHR' : 13,
+        'MakeVisible' : 14,
+        'MakeVisibleKHR' : 14,
+        'Volatile' : 15,
+    },
+
+    'MemorySemanticsMask' : {
+        'MaskNone' : 0,
+        'Acquire' : 0x00000002,
+        'Release' : 0x00000004,
+        'AcquireRelease' : 0x00000008,
+        'SequentiallyConsistent' : 0x00000010,
+        'UniformMemory' : 0x00000040,
+        'SubgroupMemory' : 0x00000080,
+        'WorkgroupMemory' : 0x00000100,
+        'CrossWorkgroupMemory' : 0x00000200,
+        'AtomicCounterMemory' : 0x00000400,
+        'ImageMemory' : 0x00000800,
+        'OutputMemory' : 0x00001000,
+        'OutputMemoryKHR' : 0x00001000,
+        'MakeAvailable' : 0x00002000,
+        'MakeAvailableKHR' : 0x00002000,
+        'MakeVisible' : 0x00004000,
+        'MakeVisibleKHR' : 0x00004000,
+        'Volatile' : 0x00008000,
+    },
+
+    'MemoryAccessShift' : {
+        'Volatile' : 0,
+        'Aligned' : 1,
+        'Nontemporal' : 2,
+        'MakePointerAvailable' : 3,
+        'MakePointerAvailableKHR' : 3,
+        'MakePointerVisible' : 4,
+        'MakePointerVisibleKHR' : 4,
+        'NonPrivatePointer' : 5,
+        'NonPrivatePointerKHR' : 5,
+    },
+
+    'MemoryAccessMask' : {
+        'MaskNone' : 0,
+        'Volatile' : 0x00000001,
+        'Aligned' : 0x00000002,
+        'Nontemporal' : 0x00000004,
+        'MakePointerAvailable' : 0x00000008,
+        'MakePointerAvailableKHR' : 0x00000008,
+        'MakePointerVisible' : 0x00000010,
+        'MakePointerVisibleKHR' : 0x00000010,
+        'NonPrivatePointer' : 0x00000020,
+        'NonPrivatePointerKHR' : 0x00000020,
+    },
+
+    'Scope' : {
+        'CrossDevice' : 0,
+        'Device' : 1,
+        'Workgroup' : 2,
+        'Subgroup' : 3,
+        'Invocation' : 4,
+        'QueueFamily' : 5,
+        'QueueFamilyKHR' : 5,
+        'ShaderCallKHR' : 6,
+    },
+
+    'GroupOperation' : {
+        'Reduce' : 0,
+        'InclusiveScan' : 1,
+        'ExclusiveScan' : 2,
+        'ClusteredReduce' : 3,
+        'PartitionedReduceNV' : 6,
+        'PartitionedInclusiveScanNV' : 7,
+        'PartitionedExclusiveScanNV' : 8,
+    },
+
+    'KernelEnqueueFlags' : {
+        'NoWait' : 0,
+        'WaitKernel' : 1,
+        'WaitWorkGroup' : 2,
+    },
+
+    'KernelProfilingInfoShift' : {
+        'CmdExecTime' : 0,
+    },
+
+    'KernelProfilingInfoMask' : {
+        'MaskNone' : 0,
+        'CmdExecTime' : 0x00000001,
+    },
+
+    'Capability' : {
+        'Matrix' : 0,
+        'Shader' : 1,
+        'Geometry' : 2,
+        'Tessellation' : 3,
+        'Addresses' : 4,
+        'Linkage' : 5,
+        'Kernel' : 6,
+        'Vector16' : 7,
+        'Float16Buffer' : 8,
+        'Float16' : 9,
+        'Float64' : 10,
+        'Int64' : 11,
+        'Int64Atomics' : 12,
+        'ImageBasic' : 13,
+        'ImageReadWrite' : 14,
+        'ImageMipmap' : 15,
+        'Pipes' : 17,
+        'Groups' : 18,
+        'DeviceEnqueue' : 19,
+        'LiteralSampler' : 20,
+        'AtomicStorage' : 21,
+        'Int16' : 22,
+        'TessellationPointSize' : 23,
+        'GeometryPointSize' : 24,
+        'ImageGatherExtended' : 25,
+        'StorageImageMultisample' : 27,
+        'UniformBufferArrayDynamicIndexing' : 28,
+        'SampledImageArrayDynamicIndexing' : 29,
+        'StorageBufferArrayDynamicIndexing' : 30,
+        'StorageImageArrayDynamicIndexing' : 31,
+        'ClipDistance' : 32,
+        'CullDistance' : 33,
+        'ImageCubeArray' : 34,
+        'SampleRateShading' : 35,
+        'ImageRect' : 36,
+        'SampledRect' : 37,
+        'GenericPointer' : 38,
+        'Int8' : 39,
+        'InputAttachment' : 40,
+        'SparseResidency' : 41,
+        'MinLod' : 42,
+        'Sampled1D' : 43,
+        'Image1D' : 44,
+        'SampledCubeArray' : 45,
+        'SampledBuffer' : 46,
+        'ImageBuffer' : 47,
+        'ImageMSArray' : 48,
+        'StorageImageExtendedFormats' : 49,
+        'ImageQuery' : 50,
+        'DerivativeControl' : 51,
+        'InterpolationFunction' : 52,
+        'TransformFeedback' : 53,
+        'GeometryStreams' : 54,
+        'StorageImageReadWithoutFormat' : 55,
+        'StorageImageWriteWithoutFormat' : 56,
+        'MultiViewport' : 57,
+        'SubgroupDispatch' : 58,
+        'NamedBarrier' : 59,
+        'PipeStorage' : 60,
+        'GroupNonUniform' : 61,
+        'GroupNonUniformVote' : 62,
+        'GroupNonUniformArithmetic' : 63,
+        'GroupNonUniformBallot' : 64,
+        'GroupNonUniformShuffle' : 65,
+        'GroupNonUniformShuffleRelative' : 66,
+        'GroupNonUniformClustered' : 67,
+        'GroupNonUniformQuad' : 68,
+        'ShaderLayer' : 69,
+        'ShaderViewportIndex' : 70,
+        'FragmentShadingRateKHR' : 4422,
+        'SubgroupBallotKHR' : 4423,
+        'DrawParameters' : 4427,
+        'SubgroupVoteKHR' : 4431,
+        'StorageBuffer16BitAccess' : 4433,
+        'StorageUniformBufferBlock16' : 4433,
+        'StorageUniform16' : 4434,
+        'UniformAndStorageBuffer16BitAccess' : 4434,
+        'StoragePushConstant16' : 4435,
+        'StorageInputOutput16' : 4436,
+        'DeviceGroup' : 4437,
+        'MultiView' : 4439,
+        'VariablePointersStorageBuffer' : 4441,
+        'VariablePointers' : 4442,
+        'AtomicStorageOps' : 4445,
+        'SampleMaskPostDepthCoverage' : 4447,
+        'StorageBuffer8BitAccess' : 4448,
+        'UniformAndStorageBuffer8BitAccess' : 4449,
+        'StoragePushConstant8' : 4450,
+        'DenormPreserve' : 4464,
+        'DenormFlushToZero' : 4465,
+        'SignedZeroInfNanPreserve' : 4466,
+        'RoundingModeRTE' : 4467,
+        'RoundingModeRTZ' : 4468,
+        'RayQueryProvisionalKHR' : 4471,
+        'RayTraversalPrimitiveCullingProvisionalKHR' : 4478,
+        'Float16ImageAMD' : 5008,
+        'ImageGatherBiasLodAMD' : 5009,
+        'FragmentMaskAMD' : 5010,
+        'StencilExportEXT' : 5013,
+        'ImageReadWriteLodAMD' : 5015,
+        'Int64ImageEXT' : 5016,
+        'ShaderClockKHR' : 5055,
+        'SampleMaskOverrideCoverageNV' : 5249,
+        'GeometryShaderPassthroughNV' : 5251,
+        'ShaderViewportIndexLayerEXT' : 5254,
+        'ShaderViewportIndexLayerNV' : 5254,
+        'ShaderViewportMaskNV' : 5255,
+        'ShaderStereoViewNV' : 5259,
+        'PerViewAttributesNV' : 5260,
+        'FragmentFullyCoveredEXT' : 5265,
+        'MeshShadingNV' : 5266,
+        'ImageFootprintNV' : 5282,
+        'FragmentBarycentricNV' : 5284,
+        'ComputeDerivativeGroupQuadsNV' : 5288,
+        'FragmentDensityEXT' : 5291,
+        'ShadingRateNV' : 5291,
+        'GroupNonUniformPartitionedNV' : 5297,
+        'ShaderNonUniform' : 5301,
+        'ShaderNonUniformEXT' : 5301,
+        'RuntimeDescriptorArray' : 5302,
+        'RuntimeDescriptorArrayEXT' : 5302,
+        'InputAttachmentArrayDynamicIndexing' : 5303,
+        'InputAttachmentArrayDynamicIndexingEXT' : 5303,
+        'UniformTexelBufferArrayDynamicIndexing' : 5304,
+        'UniformTexelBufferArrayDynamicIndexingEXT' : 5304,
+        'StorageTexelBufferArrayDynamicIndexing' : 5305,
+        'StorageTexelBufferArrayDynamicIndexingEXT' : 5305,
+        'UniformBufferArrayNonUniformIndexing' : 5306,
+        'UniformBufferArrayNonUniformIndexingEXT' : 5306,
+        'SampledImageArrayNonUniformIndexing' : 5307,
+        'SampledImageArrayNonUniformIndexingEXT' : 5307,
+        'StorageBufferArrayNonUniformIndexing' : 5308,
+        'StorageBufferArrayNonUniformIndexingEXT' : 5308,
+        'StorageImageArrayNonUniformIndexing' : 5309,
+        'StorageImageArrayNonUniformIndexingEXT' : 5309,
+        'InputAttachmentArrayNonUniformIndexing' : 5310,
+        'InputAttachmentArrayNonUniformIndexingEXT' : 5310,
+        'UniformTexelBufferArrayNonUniformIndexing' : 5311,
+        'UniformTexelBufferArrayNonUniformIndexingEXT' : 5311,
+        'StorageTexelBufferArrayNonUniformIndexing' : 5312,
+        'StorageTexelBufferArrayNonUniformIndexingEXT' : 5312,
+        'RayTracingNV' : 5340,
+        'VulkanMemoryModel' : 5345,
+        'VulkanMemoryModelKHR' : 5345,
+        'VulkanMemoryModelDeviceScope' : 5346,
+        'VulkanMemoryModelDeviceScopeKHR' : 5346,
+        'PhysicalStorageBufferAddresses' : 5347,
+        'PhysicalStorageBufferAddressesEXT' : 5347,
+        'ComputeDerivativeGroupLinearNV' : 5350,
+        'RayTracingProvisionalKHR' : 5353,
+        'CooperativeMatrixNV' : 5357,
+        'FragmentShaderSampleInterlockEXT' : 5363,
+        'FragmentShaderShadingRateInterlockEXT' : 5372,
+        'ShaderSMBuiltinsNV' : 5373,
+        'FragmentShaderPixelInterlockEXT' : 5378,
+        'DemoteToHelperInvocationEXT' : 5379,
+        'SubgroupShuffleINTEL' : 5568,
+        'SubgroupBufferBlockIOINTEL' : 5569,
+        'SubgroupImageBlockIOINTEL' : 5570,
+        'SubgroupImageMediaBlockIOINTEL' : 5579,
+        'IntegerFunctions2INTEL' : 5584,
+        'FunctionPointersINTEL' : 5603,
+        'IndirectReferencesINTEL' : 5604,
+        'SubgroupAvcMotionEstimationINTEL' : 5696,
+        'SubgroupAvcMotionEstimationIntraINTEL' : 5697,
+        'SubgroupAvcMotionEstimationChromaINTEL' : 5698,
+        'FPGAMemoryAttributesINTEL' : 5824,
+        'UnstructuredLoopControlsINTEL' : 5886,
+        'FPGALoopControlsINTEL' : 5888,
+        'KernelAttributesINTEL' : 5892,
+        'FPGAKernelAttributesINTEL' : 5897,
+        'BlockingPipesINTEL' : 5945,
+        'FPGARegINTEL' : 5948,
+        'AtomicFloat32AddEXT' : 6033,
+        'AtomicFloat64AddEXT' : 6034,
+    },
+
+    'RayFlagsShift' : {
+        'OpaqueKHR' : 0,
+        'NoOpaqueKHR' : 1,
+        'TerminateOnFirstHitKHR' : 2,
+        'SkipClosestHitShaderKHR' : 3,
+        'CullBackFacingTrianglesKHR' : 4,
+        'CullFrontFacingTrianglesKHR' : 5,
+        'CullOpaqueKHR' : 6,
+        'CullNoOpaqueKHR' : 7,
+        'SkipTrianglesKHR' : 8,
+        'SkipAABBsKHR' : 9,
+    },
+
+    'RayFlagsMask' : {
+        'MaskNone' : 0,
+        'OpaqueKHR' : 0x00000001,
+        'NoOpaqueKHR' : 0x00000002,
+        'TerminateOnFirstHitKHR' : 0x00000004,
+        'SkipClosestHitShaderKHR' : 0x00000008,
+        'CullBackFacingTrianglesKHR' : 0x00000010,
+        'CullFrontFacingTrianglesKHR' : 0x00000020,
+        'CullOpaqueKHR' : 0x00000040,
+        'CullNoOpaqueKHR' : 0x00000080,
+        'SkipTrianglesKHR' : 0x00000100,
+        'SkipAABBsKHR' : 0x00000200,
+    },
+
+    'RayQueryIntersection' : {
+        'RayQueryCandidateIntersectionKHR' : 0,
+        'RayQueryCommittedIntersectionKHR' : 1,
+    },
+
+    'RayQueryCommittedIntersectionType' : {
+        'RayQueryCommittedIntersectionNoneKHR' : 0,
+        'RayQueryCommittedIntersectionTriangleKHR' : 1,
+        'RayQueryCommittedIntersectionGeneratedKHR' : 2,
+    },
+
+    'RayQueryCandidateIntersectionType' : {
+        'RayQueryCandidateIntersectionTriangleKHR' : 0,
+        'RayQueryCandidateIntersectionAABBKHR' : 1,
+    },
+
+    'FragmentShadingRateShift' : {
+        'Vertical2Pixels' : 0,
+        'Vertical4Pixels' : 1,
+        'Horizontal2Pixels' : 2,
+        'Horizontal4Pixels' : 3,
+    },
+
+    'FragmentShadingRateMask' : {
+        'MaskNone' : 0,
+        'Vertical2Pixels' : 0x00000001,
+        'Vertical4Pixels' : 0x00000002,
+        'Horizontal2Pixels' : 0x00000004,
+        'Horizontal4Pixels' : 0x00000008,
+    },
+
+    'Op' : {
+        'OpNop' : 0,
+        'OpUndef' : 1,
+        'OpSourceContinued' : 2,
+        'OpSource' : 3,
+        'OpSourceExtension' : 4,
+        'OpName' : 5,
+        'OpMemberName' : 6,
+        'OpString' : 7,
+        'OpLine' : 8,
+        'OpExtension' : 10,
+        'OpExtInstImport' : 11,
+        'OpExtInst' : 12,
+        'OpMemoryModel' : 14,
+        'OpEntryPoint' : 15,
+        'OpExecutionMode' : 16,
+        'OpCapability' : 17,
+        'OpTypeVoid' : 19,
+        'OpTypeBool' : 20,
+        'OpTypeInt' : 21,
+        'OpTypeFloat' : 22,
+        'OpTypeVector' : 23,
+        'OpTypeMatrix' : 24,
+        'OpTypeImage' : 25,
+        'OpTypeSampler' : 26,
+        'OpTypeSampledImage' : 27,
+        'OpTypeArray' : 28,
+        'OpTypeRuntimeArray' : 29,
+        'OpTypeStruct' : 30,
+        'OpTypeOpaque' : 31,
+        'OpTypePointer' : 32,
+        'OpTypeFunction' : 33,
+        'OpTypeEvent' : 34,
+        'OpTypeDeviceEvent' : 35,
+        'OpTypeReserveId' : 36,
+        'OpTypeQueue' : 37,
+        'OpTypePipe' : 38,
+        'OpTypeForwardPointer' : 39,
+        'OpConstantTrue' : 41,
+        'OpConstantFalse' : 42,
+        'OpConstant' : 43,
+        'OpConstantComposite' : 44,
+        'OpConstantSampler' : 45,
+        'OpConstantNull' : 46,
+        'OpSpecConstantTrue' : 48,
+        'OpSpecConstantFalse' : 49,
+        'OpSpecConstant' : 50,
+        'OpSpecConstantComposite' : 51,
+        'OpSpecConstantOp' : 52,
+        'OpFunction' : 54,
+        'OpFunctionParameter' : 55,
+        'OpFunctionEnd' : 56,
+        'OpFunctionCall' : 57,
+        'OpVariable' : 59,
+        'OpImageTexelPointer' : 60,
+        'OpLoad' : 61,
+        'OpStore' : 62,
+        'OpCopyMemory' : 63,
+        'OpCopyMemorySized' : 64,
+        'OpAccessChain' : 65,
+        'OpInBoundsAccessChain' : 66,
+        'OpPtrAccessChain' : 67,
+        'OpArrayLength' : 68,
+        'OpGenericPtrMemSemantics' : 69,
+        'OpInBoundsPtrAccessChain' : 70,
+        'OpDecorate' : 71,
+        'OpMemberDecorate' : 72,
+        'OpDecorationGroup' : 73,
+        'OpGroupDecorate' : 74,
+        'OpGroupMemberDecorate' : 75,
+        'OpVectorExtractDynamic' : 77,
+        'OpVectorInsertDynamic' : 78,
+        'OpVectorShuffle' : 79,
+        'OpCompositeConstruct' : 80,
+        'OpCompositeExtract' : 81,
+        'OpCompositeInsert' : 82,
+        'OpCopyObject' : 83,
+        'OpTranspose' : 84,
+        'OpSampledImage' : 86,
+        'OpImageSampleImplicitLod' : 87,
+        'OpImageSampleExplicitLod' : 88,
+        'OpImageSampleDrefImplicitLod' : 89,
+        'OpImageSampleDrefExplicitLod' : 90,
+        'OpImageSampleProjImplicitLod' : 91,
+        'OpImageSampleProjExplicitLod' : 92,
+        'OpImageSampleProjDrefImplicitLod' : 93,
+        'OpImageSampleProjDrefExplicitLod' : 94,
+        'OpImageFetch' : 95,
+        'OpImageGather' : 96,
+        'OpImageDrefGather' : 97,
+        'OpImageRead' : 98,
+        'OpImageWrite' : 99,
+        'OpImage' : 100,
+        'OpImageQueryFormat' : 101,
+        'OpImageQueryOrder' : 102,
+        'OpImageQuerySizeLod' : 103,
+        'OpImageQuerySize' : 104,
+        'OpImageQueryLod' : 105,
+        'OpImageQueryLevels' : 106,
+        'OpImageQuerySamples' : 107,
+        'OpConvertFToU' : 109,
+        'OpConvertFToS' : 110,
+        'OpConvertSToF' : 111,
+        'OpConvertUToF' : 112,
+        'OpUConvert' : 113,
+        'OpSConvert' : 114,
+        'OpFConvert' : 115,
+        'OpQuantizeToF16' : 116,
+        'OpConvertPtrToU' : 117,
+        'OpSatConvertSToU' : 118,
+        'OpSatConvertUToS' : 119,
+        'OpConvertUToPtr' : 120,
+        'OpPtrCastToGeneric' : 121,
+        'OpGenericCastToPtr' : 122,
+        'OpGenericCastToPtrExplicit' : 123,
+        'OpBitcast' : 124,
+        'OpSNegate' : 126,
+        'OpFNegate' : 127,
+        'OpIAdd' : 128,
+        'OpFAdd' : 129,
+        'OpISub' : 130,
+        'OpFSub' : 131,
+        'OpIMul' : 132,
+        'OpFMul' : 133,
+        'OpUDiv' : 134,
+        'OpSDiv' : 135,
+        'OpFDiv' : 136,
+        'OpUMod' : 137,
+        'OpSRem' : 138,
+        'OpSMod' : 139,
+        'OpFRem' : 140,
+        'OpFMod' : 141,
+        'OpVectorTimesScalar' : 142,
+        'OpMatrixTimesScalar' : 143,
+        'OpVectorTimesMatrix' : 144,
+        'OpMatrixTimesVector' : 145,
+        'OpMatrixTimesMatrix' : 146,
+        'OpOuterProduct' : 147,
+        'OpDot' : 148,
+        'OpIAddCarry' : 149,
+        'OpISubBorrow' : 150,
+        'OpUMulExtended' : 151,
+        'OpSMulExtended' : 152,
+        'OpAny' : 154,
+        'OpAll' : 155,
+        'OpIsNan' : 156,
+        'OpIsInf' : 157,
+        'OpIsFinite' : 158,
+        'OpIsNormal' : 159,
+        'OpSignBitSet' : 160,
+        'OpLessOrGreater' : 161,
+        'OpOrdered' : 162,
+        'OpUnordered' : 163,
+        'OpLogicalEqual' : 164,
+        'OpLogicalNotEqual' : 165,
+        'OpLogicalOr' : 166,
+        'OpLogicalAnd' : 167,
+        'OpLogicalNot' : 168,
+        'OpSelect' : 169,
+        'OpIEqual' : 170,
+        'OpINotEqual' : 171,
+        'OpUGreaterThan' : 172,
+        'OpSGreaterThan' : 173,
+        'OpUGreaterThanEqual' : 174,
+        'OpSGreaterThanEqual' : 175,
+        'OpULessThan' : 176,
+        'OpSLessThan' : 177,
+        'OpULessThanEqual' : 178,
+        'OpSLessThanEqual' : 179,
+        'OpFOrdEqual' : 180,
+        'OpFUnordEqual' : 181,
+        'OpFOrdNotEqual' : 182,
+        'OpFUnordNotEqual' : 183,
+        'OpFOrdLessThan' : 184,
+        'OpFUnordLessThan' : 185,
+        'OpFOrdGreaterThan' : 186,
+        'OpFUnordGreaterThan' : 187,
+        'OpFOrdLessThanEqual' : 188,
+        'OpFUnordLessThanEqual' : 189,
+        'OpFOrdGreaterThanEqual' : 190,
+        'OpFUnordGreaterThanEqual' : 191,
+        'OpShiftRightLogical' : 194,
+        'OpShiftRightArithmetic' : 195,
+        'OpShiftLeftLogical' : 196,
+        'OpBitwiseOr' : 197,
+        'OpBitwiseXor' : 198,
+        'OpBitwiseAnd' : 199,
+        'OpNot' : 200,
+        'OpBitFieldInsert' : 201,
+        'OpBitFieldSExtract' : 202,
+        'OpBitFieldUExtract' : 203,
+        'OpBitReverse' : 204,
+        'OpBitCount' : 205,
+        'OpDPdx' : 207,
+        'OpDPdy' : 208,
+        'OpFwidth' : 209,
+        'OpDPdxFine' : 210,
+        'OpDPdyFine' : 211,
+        'OpFwidthFine' : 212,
+        'OpDPdxCoarse' : 213,
+        'OpDPdyCoarse' : 214,
+        'OpFwidthCoarse' : 215,
+        'OpEmitVertex' : 218,
+        'OpEndPrimitive' : 219,
+        'OpEmitStreamVertex' : 220,
+        'OpEndStreamPrimitive' : 221,
+        'OpControlBarrier' : 224,
+        'OpMemoryBarrier' : 225,
+        'OpAtomicLoad' : 227,
+        'OpAtomicStore' : 228,
+        'OpAtomicExchange' : 229,
+        'OpAtomicCompareExchange' : 230,
+        'OpAtomicCompareExchangeWeak' : 231,
+        'OpAtomicIIncrement' : 232,
+        'OpAtomicIDecrement' : 233,
+        'OpAtomicIAdd' : 234,
+        'OpAtomicISub' : 235,
+        'OpAtomicSMin' : 236,
+        'OpAtomicUMin' : 237,
+        'OpAtomicSMax' : 238,
+        'OpAtomicUMax' : 239,
+        'OpAtomicAnd' : 240,
+        'OpAtomicOr' : 241,
+        'OpAtomicXor' : 242,
+        'OpPhi' : 245,
+        'OpLoopMerge' : 246,
+        'OpSelectionMerge' : 247,
+        'OpLabel' : 248,
+        'OpBranch' : 249,
+        'OpBranchConditional' : 250,
+        'OpSwitch' : 251,
+        'OpKill' : 252,
+        'OpReturn' : 253,
+        'OpReturnValue' : 254,
+        'OpUnreachable' : 255,
+        'OpLifetimeStart' : 256,
+        'OpLifetimeStop' : 257,
+        'OpGroupAsyncCopy' : 259,
+        'OpGroupWaitEvents' : 260,
+        'OpGroupAll' : 261,
+        'OpGroupAny' : 262,
+        'OpGroupBroadcast' : 263,
+        'OpGroupIAdd' : 264,
+        'OpGroupFAdd' : 265,
+        'OpGroupFMin' : 266,
+        'OpGroupUMin' : 267,
+        'OpGroupSMin' : 268,
+        'OpGroupFMax' : 269,
+        'OpGroupUMax' : 270,
+        'OpGroupSMax' : 271,
+        'OpReadPipe' : 274,
+        'OpWritePipe' : 275,
+        'OpReservedReadPipe' : 276,
+        'OpReservedWritePipe' : 277,
+        'OpReserveReadPipePackets' : 278,
+        'OpReserveWritePipePackets' : 279,
+        'OpCommitReadPipe' : 280,
+        'OpCommitWritePipe' : 281,
+        'OpIsValidReserveId' : 282,
+        'OpGetNumPipePackets' : 283,
+        'OpGetMaxPipePackets' : 284,
+        'OpGroupReserveReadPipePackets' : 285,
+        'OpGroupReserveWritePipePackets' : 286,
+        'OpGroupCommitReadPipe' : 287,
+        'OpGroupCommitWritePipe' : 288,
+        'OpEnqueueMarker' : 291,
+        'OpEnqueueKernel' : 292,
+        'OpGetKernelNDrangeSubGroupCount' : 293,
+        'OpGetKernelNDrangeMaxSubGroupSize' : 294,
+        'OpGetKernelWorkGroupSize' : 295,
+        'OpGetKernelPreferredWorkGroupSizeMultiple' : 296,
+        'OpRetainEvent' : 297,
+        'OpReleaseEvent' : 298,
+        'OpCreateUserEvent' : 299,
+        'OpIsValidEvent' : 300,
+        'OpSetUserEventStatus' : 301,
+        'OpCaptureEventProfilingInfo' : 302,
+        'OpGetDefaultQueue' : 303,
+        'OpBuildNDRange' : 304,
+        'OpImageSparseSampleImplicitLod' : 305,
+        'OpImageSparseSampleExplicitLod' : 306,
+        'OpImageSparseSampleDrefImplicitLod' : 307,
+        'OpImageSparseSampleDrefExplicitLod' : 308,
+        'OpImageSparseSampleProjImplicitLod' : 309,
+        'OpImageSparseSampleProjExplicitLod' : 310,
+        'OpImageSparseSampleProjDrefImplicitLod' : 311,
+        'OpImageSparseSampleProjDrefExplicitLod' : 312,
+        'OpImageSparseFetch' : 313,
+        'OpImageSparseGather' : 314,
+        'OpImageSparseDrefGather' : 315,
+        'OpImageSparseTexelsResident' : 316,
+        'OpNoLine' : 317,
+        'OpAtomicFlagTestAndSet' : 318,
+        'OpAtomicFlagClear' : 319,
+        'OpImageSparseRead' : 320,
+        'OpSizeOf' : 321,
+        'OpTypePipeStorage' : 322,
+        'OpConstantPipeStorage' : 323,
+        'OpCreatePipeFromPipeStorage' : 324,
+        'OpGetKernelLocalSizeForSubgroupCount' : 325,
+        'OpGetKernelMaxNumSubgroups' : 326,
+        'OpTypeNamedBarrier' : 327,
+        'OpNamedBarrierInitialize' : 328,
+        'OpMemoryNamedBarrier' : 329,
+        'OpModuleProcessed' : 330,
+        'OpExecutionModeId' : 331,
+        'OpDecorateId' : 332,
+        'OpGroupNonUniformElect' : 333,
+        'OpGroupNonUniformAll' : 334,
+        'OpGroupNonUniformAny' : 335,
+        'OpGroupNonUniformAllEqual' : 336,
+        'OpGroupNonUniformBroadcast' : 337,
+        'OpGroupNonUniformBroadcastFirst' : 338,
+        'OpGroupNonUniformBallot' : 339,
+        'OpGroupNonUniformInverseBallot' : 340,
+        'OpGroupNonUniformBallotBitExtract' : 341,
+        'OpGroupNonUniformBallotBitCount' : 342,
+        'OpGroupNonUniformBallotFindLSB' : 343,
+        'OpGroupNonUniformBallotFindMSB' : 344,
+        'OpGroupNonUniformShuffle' : 345,
+        'OpGroupNonUniformShuffleXor' : 346,
+        'OpGroupNonUniformShuffleUp' : 347,
+        'OpGroupNonUniformShuffleDown' : 348,
+        'OpGroupNonUniformIAdd' : 349,
+        'OpGroupNonUniformFAdd' : 350,
+        'OpGroupNonUniformIMul' : 351,
+        'OpGroupNonUniformFMul' : 352,
+        'OpGroupNonUniformSMin' : 353,
+        'OpGroupNonUniformUMin' : 354,
+        'OpGroupNonUniformFMin' : 355,
+        'OpGroupNonUniformSMax' : 356,
+        'OpGroupNonUniformUMax' : 357,
+        'OpGroupNonUniformFMax' : 358,
+        'OpGroupNonUniformBitwiseAnd' : 359,
+        'OpGroupNonUniformBitwiseOr' : 360,
+        'OpGroupNonUniformBitwiseXor' : 361,
+        'OpGroupNonUniformLogicalAnd' : 362,
+        'OpGroupNonUniformLogicalOr' : 363,
+        'OpGroupNonUniformLogicalXor' : 364,
+        'OpGroupNonUniformQuadBroadcast' : 365,
+        'OpGroupNonUniformQuadSwap' : 366,
+        'OpCopyLogical' : 400,
+        'OpPtrEqual' : 401,
+        'OpPtrNotEqual' : 402,
+        'OpPtrDiff' : 403,
+        'OpTerminateInvocation' : 4416,
+        'OpSubgroupBallotKHR' : 4421,
+        'OpSubgroupFirstInvocationKHR' : 4422,
+        'OpSubgroupAllKHR' : 4428,
+        'OpSubgroupAnyKHR' : 4429,
+        'OpSubgroupAllEqualKHR' : 4430,
+        'OpSubgroupReadInvocationKHR' : 4432,
+        'OpTypeRayQueryProvisionalKHR' : 4472,
+        'OpRayQueryInitializeKHR' : 4473,
+        'OpRayQueryTerminateKHR' : 4474,
+        'OpRayQueryGenerateIntersectionKHR' : 4475,
+        'OpRayQueryConfirmIntersectionKHR' : 4476,
+        'OpRayQueryProceedKHR' : 4477,
+        'OpRayQueryGetIntersectionTypeKHR' : 4479,
+        'OpGroupIAddNonUniformAMD' : 5000,
+        'OpGroupFAddNonUniformAMD' : 5001,
+        'OpGroupFMinNonUniformAMD' : 5002,
+        'OpGroupUMinNonUniformAMD' : 5003,
+        'OpGroupSMinNonUniformAMD' : 5004,
+        'OpGroupFMaxNonUniformAMD' : 5005,
+        'OpGroupUMaxNonUniformAMD' : 5006,
+        'OpGroupSMaxNonUniformAMD' : 5007,
+        'OpFragmentMaskFetchAMD' : 5011,
+        'OpFragmentFetchAMD' : 5012,
+        'OpReadClockKHR' : 5056,
+        'OpImageSampleFootprintNV' : 5283,
+        'OpGroupNonUniformPartitionNV' : 5296,
+        'OpWritePackedPrimitiveIndices4x8NV' : 5299,
+        'OpReportIntersectionKHR' : 5334,
+        'OpReportIntersectionNV' : 5334,
+        'OpIgnoreIntersectionKHR' : 5335,
+        'OpIgnoreIntersectionNV' : 5335,
+        'OpTerminateRayKHR' : 5336,
+        'OpTerminateRayNV' : 5336,
+        'OpTraceNV' : 5337,
+        'OpTraceRayKHR' : 5337,
+        'OpTypeAccelerationStructureKHR' : 5341,
+        'OpTypeAccelerationStructureNV' : 5341,
+        'OpExecuteCallableKHR' : 5344,
+        'OpExecuteCallableNV' : 5344,
+        'OpTypeCooperativeMatrixNV' : 5358,
+        'OpCooperativeMatrixLoadNV' : 5359,
+        'OpCooperativeMatrixStoreNV' : 5360,
+        'OpCooperativeMatrixMulAddNV' : 5361,
+        'OpCooperativeMatrixLengthNV' : 5362,
+        'OpBeginInvocationInterlockEXT' : 5364,
+        'OpEndInvocationInterlockEXT' : 5365,
+        'OpDemoteToHelperInvocationEXT' : 5380,
+        'OpIsHelperInvocationEXT' : 5381,
+        'OpSubgroupShuffleINTEL' : 5571,
+        'OpSubgroupShuffleDownINTEL' : 5572,
+        'OpSubgroupShuffleUpINTEL' : 5573,
+        'OpSubgroupShuffleXorINTEL' : 5574,
+        'OpSubgroupBlockReadINTEL' : 5575,
+        'OpSubgroupBlockWriteINTEL' : 5576,
+        'OpSubgroupImageBlockReadINTEL' : 5577,
+        'OpSubgroupImageBlockWriteINTEL' : 5578,
+        'OpSubgroupImageMediaBlockReadINTEL' : 5580,
+        'OpSubgroupImageMediaBlockWriteINTEL' : 5581,
+        'OpUCountLeadingZerosINTEL' : 5585,
+        'OpUCountTrailingZerosINTEL' : 5586,
+        'OpAbsISubINTEL' : 5587,
+        'OpAbsUSubINTEL' : 5588,
+        'OpIAddSatINTEL' : 5589,
+        'OpUAddSatINTEL' : 5590,
+        'OpIAverageINTEL' : 5591,
+        'OpUAverageINTEL' : 5592,
+        'OpIAverageRoundedINTEL' : 5593,
+        'OpUAverageRoundedINTEL' : 5594,
+        'OpISubSatINTEL' : 5595,
+        'OpUSubSatINTEL' : 5596,
+        'OpIMul32x16INTEL' : 5597,
+        'OpUMul32x16INTEL' : 5598,
+        'OpFunctionPointerINTEL' : 5600,
+        'OpFunctionPointerCallINTEL' : 5601,
+        'OpDecorateString' : 5632,
+        'OpDecorateStringGOOGLE' : 5632,
+        'OpMemberDecorateString' : 5633,
+        'OpMemberDecorateStringGOOGLE' : 5633,
+        'OpVmeImageINTEL' : 5699,
+        'OpTypeVmeImageINTEL' : 5700,
+        'OpTypeAvcImePayloadINTEL' : 5701,
+        'OpTypeAvcRefPayloadINTEL' : 5702,
+        'OpTypeAvcSicPayloadINTEL' : 5703,
+        'OpTypeAvcMcePayloadINTEL' : 5704,
+        'OpTypeAvcMceResultINTEL' : 5705,
+        'OpTypeAvcImeResultINTEL' : 5706,
+        'OpTypeAvcImeResultSingleReferenceStreamoutINTEL' : 5707,
+        'OpTypeAvcImeResultDualReferenceStreamoutINTEL' : 5708,
+        'OpTypeAvcImeSingleReferenceStreaminINTEL' : 5709,
+        'OpTypeAvcImeDualReferenceStreaminINTEL' : 5710,
+        'OpTypeAvcRefResultINTEL' : 5711,
+        'OpTypeAvcSicResultINTEL' : 5712,
+        'OpSubgroupAvcMceGetDefaultInterBaseMultiReferencePenaltyINTEL' : 5713,
+        'OpSubgroupAvcMceSetInterBaseMultiReferencePenaltyINTEL' : 5714,
+        'OpSubgroupAvcMceGetDefaultInterShapePenaltyINTEL' : 5715,
+        'OpSubgroupAvcMceSetInterShapePenaltyINTEL' : 5716,
+        'OpSubgroupAvcMceGetDefaultInterDirectionPenaltyINTEL' : 5717,
+        'OpSubgroupAvcMceSetInterDirectionPenaltyINTEL' : 5718,
+        'OpSubgroupAvcMceGetDefaultIntraLumaShapePenaltyINTEL' : 5719,
+        'OpSubgroupAvcMceGetDefaultInterMotionVectorCostTableINTEL' : 5720,
+        'OpSubgroupAvcMceGetDefaultHighPenaltyCostTableINTEL' : 5721,
+        'OpSubgroupAvcMceGetDefaultMediumPenaltyCostTableINTEL' : 5722,
+        'OpSubgroupAvcMceGetDefaultLowPenaltyCostTableINTEL' : 5723,
+        'OpSubgroupAvcMceSetMotionVectorCostFunctionINTEL' : 5724,
+        'OpSubgroupAvcMceGetDefaultIntraLumaModePenaltyINTEL' : 5725,
+        'OpSubgroupAvcMceGetDefaultNonDcLumaIntraPenaltyINTEL' : 5726,
+        'OpSubgroupAvcMceGetDefaultIntraChromaModeBasePenaltyINTEL' : 5727,
+        'OpSubgroupAvcMceSetAcOnlyHaarINTEL' : 5728,
+        'OpSubgroupAvcMceSetSourceInterlacedFieldPolarityINTEL' : 5729,
+        'OpSubgroupAvcMceSetSingleReferenceInterlacedFieldPolarityINTEL' : 5730,
+        'OpSubgroupAvcMceSetDualReferenceInterlacedFieldPolaritiesINTEL' : 5731,
+        'OpSubgroupAvcMceConvertToImePayloadINTEL' : 5732,
+        'OpSubgroupAvcMceConvertToImeResultINTEL' : 5733,
+        'OpSubgroupAvcMceConvertToRefPayloadINTEL' : 5734,
+        'OpSubgroupAvcMceConvertToRefResultINTEL' : 5735,
+        'OpSubgroupAvcMceConvertToSicPayloadINTEL' : 5736,
+        'OpSubgroupAvcMceConvertToSicResultINTEL' : 5737,
+        'OpSubgroupAvcMceGetMotionVectorsINTEL' : 5738,
+        'OpSubgroupAvcMceGetInterDistortionsINTEL' : 5739,
+        'OpSubgroupAvcMceGetBestInterDistortionsINTEL' : 5740,
+        'OpSubgroupAvcMceGetInterMajorShapeINTEL' : 5741,
+        'OpSubgroupAvcMceGetInterMinorShapeINTEL' : 5742,
+        'OpSubgroupAvcMceGetInterDirectionsINTEL' : 5743,
+        'OpSubgroupAvcMceGetInterMotionVectorCountINTEL' : 5744,
+        'OpSubgroupAvcMceGetInterReferenceIdsINTEL' : 5745,
+        'OpSubgroupAvcMceGetInterReferenceInterlacedFieldPolaritiesINTEL' : 5746,
+        'OpSubgroupAvcImeInitializeINTEL' : 5747,
+        'OpSubgroupAvcImeSetSingleReferenceINTEL' : 5748,
+        'OpSubgroupAvcImeSetDualReferenceINTEL' : 5749,
+        'OpSubgroupAvcImeRefWindowSizeINTEL' : 5750,
+        'OpSubgroupAvcImeAdjustRefOffsetINTEL' : 5751,
+        'OpSubgroupAvcImeConvertToMcePayloadINTEL' : 5752,
+        'OpSubgroupAvcImeSetMaxMotionVectorCountINTEL' : 5753,
+        'OpSubgroupAvcImeSetUnidirectionalMixDisableINTEL' : 5754,
+        'OpSubgroupAvcImeSetEarlySearchTerminationThresholdINTEL' : 5755,
+        'OpSubgroupAvcImeSetWeightedSadINTEL' : 5756,
+        'OpSubgroupAvcImeEvaluateWithSingleReferenceINTEL' : 5757,
+        'OpSubgroupAvcImeEvaluateWithDualReferenceINTEL' : 5758,
+        'OpSubgroupAvcImeEvaluateWithSingleReferenceStreaminINTEL' : 5759,
+        'OpSubgroupAvcImeEvaluateWithDualReferenceStreaminINTEL' : 5760,
+        'OpSubgroupAvcImeEvaluateWithSingleReferenceStreamoutINTEL' : 5761,
+        'OpSubgroupAvcImeEvaluateWithDualReferenceStreamoutINTEL' : 5762,
+        'OpSubgroupAvcImeEvaluateWithSingleReferenceStreaminoutINTEL' : 5763,
+        'OpSubgroupAvcImeEvaluateWithDualReferenceStreaminoutINTEL' : 5764,
+        'OpSubgroupAvcImeConvertToMceResultINTEL' : 5765,
+        'OpSubgroupAvcImeGetSingleReferenceStreaminINTEL' : 5766,
+        'OpSubgroupAvcImeGetDualReferenceStreaminINTEL' : 5767,
+        'OpSubgroupAvcImeStripSingleReferenceStreamoutINTEL' : 5768,
+        'OpSubgroupAvcImeStripDualReferenceStreamoutINTEL' : 5769,
+        'OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeMotionVectorsINTEL' : 5770,
+        'OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeDistortionsINTEL' : 5771,
+        'OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeReferenceIdsINTEL' : 5772,
+        'OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeMotionVectorsINTEL' : 5773,
+        'OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeDistortionsINTEL' : 5774,
+        'OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeReferenceIdsINTEL' : 5775,
+        'OpSubgroupAvcImeGetBorderReachedINTEL' : 5776,
+        'OpSubgroupAvcImeGetTruncatedSearchIndicationINTEL' : 5777,
+        'OpSubgroupAvcImeGetUnidirectionalEarlySearchTerminationINTEL' : 5778,
+        'OpSubgroupAvcImeGetWeightingPatternMinimumMotionVectorINTEL' : 5779,
+        'OpSubgroupAvcImeGetWeightingPatternMinimumDistortionINTEL' : 5780,
+        'OpSubgroupAvcFmeInitializeINTEL' : 5781,
+        'OpSubgroupAvcBmeInitializeINTEL' : 5782,
+        'OpSubgroupAvcRefConvertToMcePayloadINTEL' : 5783,
+        'OpSubgroupAvcRefSetBidirectionalMixDisableINTEL' : 5784,
+        'OpSubgroupAvcRefSetBilinearFilterEnableINTEL' : 5785,
+        'OpSubgroupAvcRefEvaluateWithSingleReferenceINTEL' : 5786,
+        'OpSubgroupAvcRefEvaluateWithDualReferenceINTEL' : 5787,
+        'OpSubgroupAvcRefEvaluateWithMultiReferenceINTEL' : 5788,
+        'OpSubgroupAvcRefEvaluateWithMultiReferenceInterlacedINTEL' : 5789,
+        'OpSubgroupAvcRefConvertToMceResultINTEL' : 5790,
+        'OpSubgroupAvcSicInitializeINTEL' : 5791,
+        'OpSubgroupAvcSicConfigureSkcINTEL' : 5792,
+        'OpSubgroupAvcSicConfigureIpeLumaINTEL' : 5793,
+        'OpSubgroupAvcSicConfigureIpeLumaChromaINTEL' : 5794,
+        'OpSubgroupAvcSicGetMotionVectorMaskINTEL' : 5795,
+        'OpSubgroupAvcSicConvertToMcePayloadINTEL' : 5796,
+        'OpSubgroupAvcSicSetIntraLumaShapePenaltyINTEL' : 5797,
+        'OpSubgroupAvcSicSetIntraLumaModeCostFunctionINTEL' : 5798,
+        'OpSubgroupAvcSicSetIntraChromaModeCostFunctionINTEL' : 5799,
+        'OpSubgroupAvcSicSetBilinearFilterEnableINTEL' : 5800,
+        'OpSubgroupAvcSicSetSkcForwardTransformEnableINTEL' : 5801,
+        'OpSubgroupAvcSicSetBlockBasedRawSkipSadINTEL' : 5802,
+        'OpSubgroupAvcSicEvaluateIpeINTEL' : 5803,
+        'OpSubgroupAvcSicEvaluateWithSingleReferenceINTEL' : 5804,
+        'OpSubgroupAvcSicEvaluateWithDualReferenceINTEL' : 5805,
+        'OpSubgroupAvcSicEvaluateWithMultiReferenceINTEL' : 5806,
+        'OpSubgroupAvcSicEvaluateWithMultiReferenceInterlacedINTEL' : 5807,
+        'OpSubgroupAvcSicConvertToMceResultINTEL' : 5808,
+        'OpSubgroupAvcSicGetIpeLumaShapeINTEL' : 5809,
+        'OpSubgroupAvcSicGetBestIpeLumaDistortionINTEL' : 5810,
+        'OpSubgroupAvcSicGetBestIpeChromaDistortionINTEL' : 5811,
+        'OpSubgroupAvcSicGetPackedIpeLumaModesINTEL' : 5812,
+        'OpSubgroupAvcSicGetIpeChromaModeINTEL' : 5813,
+        'OpSubgroupAvcSicGetPackedSkcLumaCountThresholdINTEL' : 5814,
+        'OpSubgroupAvcSicGetPackedSkcLumaSumThresholdINTEL' : 5815,
+        'OpSubgroupAvcSicGetInterRawSadsINTEL' : 5816,
+        'OpLoopControlINTEL' : 5887,
+        'OpReadPipeBlockingINTEL' : 5946,
+        'OpWritePipeBlockingINTEL' : 5947,
+        'OpFPGARegINTEL' : 5949,
+        'OpRayQueryGetRayTMinKHR' : 6016,
+        'OpRayQueryGetRayFlagsKHR' : 6017,
+        'OpRayQueryGetIntersectionTKHR' : 6018,
+        'OpRayQueryGetIntersectionInstanceCustomIndexKHR' : 6019,
+        'OpRayQueryGetIntersectionInstanceIdKHR' : 6020,
+        'OpRayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR' : 6021,
+        'OpRayQueryGetIntersectionGeometryIndexKHR' : 6022,
+        'OpRayQueryGetIntersectionPrimitiveIndexKHR' : 6023,
+        'OpRayQueryGetIntersectionBarycentricsKHR' : 6024,
+        'OpRayQueryGetIntersectionFrontFaceKHR' : 6025,
+        'OpRayQueryGetIntersectionCandidateAABBOpaqueKHR' : 6026,
+        'OpRayQueryGetIntersectionObjectRayDirectionKHR' : 6027,
+        'OpRayQueryGetIntersectionObjectRayOriginKHR' : 6028,
+        'OpRayQueryGetWorldRayDirectionKHR' : 6029,
+        'OpRayQueryGetWorldRayOriginKHR' : 6030,
+        'OpRayQueryGetIntersectionObjectToWorldKHR' : 6031,
+        'OpRayQueryGetIntersectionWorldToObjectKHR' : 6032,
+        'OpAtomicFAddEXT' : 6035,
+    },
+
+}
+
diff --git a/libs/spirv-headers/spirv/unified1/spv.d b/libs/spirv-headers/spirv/unified1/spv.d
new file mode 100644
index 00000000000..714e77f0007
--- /dev/null
+++ b/libs/spirv-headers/spirv/unified1/spv.d
@@ -0,0 +1,1624 @@
+/+
+ + Copyright (c) 2014-2020 The Khronos Group Inc.
+ + 
+ + Permission is hereby granted, free of charge, to any person obtaining a copy
+ + of this software and/or associated documentation files (the "Materials"),
+ + to deal in the Materials without restriction, including without limitation
+ + the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ + and/or sell copies of the Materials, and to permit persons to whom the
+ + Materials are furnished to do so, subject to the following conditions:
+ + 
+ + The above copyright notice and this permission notice shall be included in
+ + all copies or substantial portions of the Materials.
+ + 
+ + MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS KHRONOS
+ + STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS SPECIFICATIONS AND
+ + HEADER INFORMATION ARE LOCATED AT https://www.khronos.org/registry/ 
+ + 
+ + THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ + OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ + THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ + FROM,OUT OF OR IN CONNECTION WITH THE MATERIALS OR THE USE OR OTHER DEALINGS
+ + IN THE MATERIALS.
+ +/
+
+/+
+ + This header is automatically generated by the same tool that creates
+ + the Binary Section of the SPIR-V specification.
+ +/
+
+/+
+ + Enumeration tokens for SPIR-V, in various styles:
+ +   C, C++, C++11, JSON, Lua, Python, C#, D
+ + 
+ + - C will have tokens with a "Spv" prefix, e.g.: SpvSourceLanguageGLSL
+ + - C++ will have tokens in the "spv" name space, e.g.: spv::SourceLanguageGLSL
+ + - C++11 will use enum classes in the spv namespace, e.g.: spv::SourceLanguage::GLSL
+ + - Lua will use tables, e.g.: spv.SourceLanguage.GLSL
+ + - Python will use dictionaries, e.g.: spv['SourceLanguage']['GLSL']
+ + - C# will use enum classes in the Specification class located in the "Spv" namespace,
+ +     e.g.: Spv.Specification.SourceLanguage.GLSL
+ + - D will have tokens under the "spv" module, e.g: spv.SourceLanguage.GLSL
+ + 
+ + Some tokens act like mask values, which can be OR'd together,
+ + while others are mutually exclusive.  The mask-like ones have
+ + "Mask" in their name, and a parallel enum that has the shift
+ + amount (1 << x) for each corresponding enumerant.
+ +/
+
+module spv;
+
+enum uint MagicNumber = 0x07230203;
+enum uint Version = 0x00010500;
+enum uint Revision = 4;
+enum uint OpCodeMask = 0xffff;
+enum uint WordCountShift = 16;
+
+enum SourceLanguage : uint
+{
+    Unknown = 0,
+    ESSL = 1,
+    GLSL = 2,
+    OpenCL_C = 3,
+    OpenCL_CPP = 4,
+    HLSL = 5,
+}
+
+enum ExecutionModel : uint
+{
+    Vertex = 0,
+    TessellationControl = 1,
+    TessellationEvaluation = 2,
+    Geometry = 3,
+    Fragment = 4,
+    GLCompute = 5,
+    Kernel = 6,
+    TaskNV = 5267,
+    MeshNV = 5268,
+    RayGenerationKHR = 5313,
+    RayGenerationNV = 5313,
+    IntersectionKHR = 5314,
+    IntersectionNV = 5314,
+    AnyHitKHR = 5315,
+    AnyHitNV = 5315,
+    ClosestHitKHR = 5316,
+    ClosestHitNV = 5316,
+    MissKHR = 5317,
+    MissNV = 5317,
+    CallableKHR = 5318,
+    CallableNV = 5318,
+}
+
+enum AddressingModel : uint
+{
+    Logical = 0,
+    Physical32 = 1,
+    Physical64 = 2,
+    PhysicalStorageBuffer64 = 5348,
+    PhysicalStorageBuffer64EXT = 5348,
+}
+
+enum MemoryModel : uint
+{
+    Simple = 0,
+    GLSL450 = 1,
+    OpenCL = 2,
+    Vulkan = 3,
+    VulkanKHR = 3,
+}
+
+enum ExecutionMode : uint
+{
+    Invocations = 0,
+    SpacingEqual = 1,
+    SpacingFractionalEven = 2,
+    SpacingFractionalOdd = 3,
+    VertexOrderCw = 4,
+    VertexOrderCcw = 5,
+    PixelCenterInteger = 6,
+    OriginUpperLeft = 7,
+    OriginLowerLeft = 8,
+    EarlyFragmentTests = 9,
+    PointMode = 10,
+    Xfb = 11,
+    DepthReplacing = 12,
+    DepthGreater = 14,
+    DepthLess = 15,
+    DepthUnchanged = 16,
+    LocalSize = 17,
+    LocalSizeHint = 18,
+    InputPoints = 19,
+    InputLines = 20,
+    InputLinesAdjacency = 21,
+    Triangles = 22,
+    InputTrianglesAdjacency = 23,
+    Quads = 24,
+    Isolines = 25,
+    OutputVertices = 26,
+    OutputPoints = 27,
+    OutputLineStrip = 28,
+    OutputTriangleStrip = 29,
+    VecTypeHint = 30,
+    ContractionOff = 31,
+    Initializer = 33,
+    Finalizer = 34,
+    SubgroupSize = 35,
+    SubgroupsPerWorkgroup = 36,
+    SubgroupsPerWorkgroupId = 37,
+    LocalSizeId = 38,
+    LocalSizeHintId = 39,
+    PostDepthCoverage = 4446,
+    DenormPreserve = 4459,
+    DenormFlushToZero = 4460,
+    SignedZeroInfNanPreserve = 4461,
+    RoundingModeRTE = 4462,
+    RoundingModeRTZ = 4463,
+    StencilRefReplacingEXT = 5027,
+    OutputLinesNV = 5269,
+    OutputPrimitivesNV = 5270,
+    DerivativeGroupQuadsNV = 5289,
+    DerivativeGroupLinearNV = 5290,
+    OutputTrianglesNV = 5298,
+    PixelInterlockOrderedEXT = 5366,
+    PixelInterlockUnorderedEXT = 5367,
+    SampleInterlockOrderedEXT = 5368,
+    SampleInterlockUnorderedEXT = 5369,
+    ShadingRateInterlockOrderedEXT = 5370,
+    ShadingRateInterlockUnorderedEXT = 5371,
+    MaxWorkgroupSizeINTEL = 5893,
+    MaxWorkDimINTEL = 5894,
+    NoGlobalOffsetINTEL = 5895,
+    NumSIMDWorkitemsINTEL = 5896,
+}
+
+enum StorageClass : uint
+{
+    UniformConstant = 0,
+    Input = 1,
+    Uniform = 2,
+    Output = 3,
+    Workgroup = 4,
+    CrossWorkgroup = 5,
+    Private = 6,
+    Function = 7,
+    Generic = 8,
+    PushConstant = 9,
+    AtomicCounter = 10,
+    Image = 11,
+    StorageBuffer = 12,
+    CallableDataKHR = 5328,
+    CallableDataNV = 5328,
+    IncomingCallableDataKHR = 5329,
+    IncomingCallableDataNV = 5329,
+    RayPayloadKHR = 5338,
+    RayPayloadNV = 5338,
+    HitAttributeKHR = 5339,
+    HitAttributeNV = 5339,
+    IncomingRayPayloadKHR = 5342,
+    IncomingRayPayloadNV = 5342,
+    ShaderRecordBufferKHR = 5343,
+    ShaderRecordBufferNV = 5343,
+    PhysicalStorageBuffer = 5349,
+    PhysicalStorageBufferEXT = 5349,
+    CodeSectionINTEL = 5605,
+}
+
+enum Dim : uint
+{
+    _1D = 0,
+    _2D = 1,
+    _3D = 2,
+    Cube = 3,
+    Rect = 4,
+    Buffer = 5,
+    SubpassData = 6,
+}
+
+enum SamplerAddressingMode : uint
+{
+    None = 0,
+    ClampToEdge = 1,
+    Clamp = 2,
+    Repeat = 3,
+    RepeatMirrored = 4,
+}
+
+enum SamplerFilterMode : uint
+{
+    Nearest = 0,
+    Linear = 1,
+}
+
+enum ImageFormat : uint
+{
+    Unknown = 0,
+    Rgba32f = 1,
+    Rgba16f = 2,
+    R32f = 3,
+    Rgba8 = 4,
+    Rgba8Snorm = 5,
+    Rg32f = 6,
+    Rg16f = 7,
+    R11fG11fB10f = 8,
+    R16f = 9,
+    Rgba16 = 10,
+    Rgb10A2 = 11,
+    Rg16 = 12,
+    Rg8 = 13,
+    R16 = 14,
+    R8 = 15,
+    Rgba16Snorm = 16,
+    Rg16Snorm = 17,
+    Rg8Snorm = 18,
+    R16Snorm = 19,
+    R8Snorm = 20,
+    Rgba32i = 21,
+    Rgba16i = 22,
+    Rgba8i = 23,
+    R32i = 24,
+    Rg32i = 25,
+    Rg16i = 26,
+    Rg8i = 27,
+    R16i = 28,
+    R8i = 29,
+    Rgba32ui = 30,
+    Rgba16ui = 31,
+    Rgba8ui = 32,
+    R32ui = 33,
+    Rgb10a2ui = 34,
+    Rg32ui = 35,
+    Rg16ui = 36,
+    Rg8ui = 37,
+    R16ui = 38,
+    R8ui = 39,
+    R64ui = 40,
+    R64i = 41,
+}
+
+enum ImageChannelOrder : uint
+{
+    R = 0,
+    A = 1,
+    RG = 2,
+    RA = 3,
+    RGB = 4,
+    RGBA = 5,
+    BGRA = 6,
+    ARGB = 7,
+    Intensity = 8,
+    Luminance = 9,
+    Rx = 10,
+    RGx = 11,
+    RGBx = 12,
+    Depth = 13,
+    DepthStencil = 14,
+    sRGB = 15,
+    sRGBx = 16,
+    sRGBA = 17,
+    sBGRA = 18,
+    ABGR = 19,
+}
+
+enum ImageChannelDataType : uint
+{
+    SnormInt8 = 0,
+    SnormInt16 = 1,
+    UnormInt8 = 2,
+    UnormInt16 = 3,
+    UnormShort565 = 4,
+    UnormShort555 = 5,
+    UnormInt101010 = 6,
+    SignedInt8 = 7,
+    SignedInt16 = 8,
+    SignedInt32 = 9,
+    UnsignedInt8 = 10,
+    UnsignedInt16 = 11,
+    UnsignedInt32 = 12,
+    HalfFloat = 13,
+    Float = 14,
+    UnormInt24 = 15,
+    UnormInt101010_2 = 16,
+}
+
+enum ImageOperandsShift : uint
+{
+    Bias = 0,
+    Lod = 1,
+    Grad = 2,
+    ConstOffset = 3,
+    Offset = 4,
+    ConstOffsets = 5,
+    Sample = 6,
+    MinLod = 7,
+    MakeTexelAvailable = 8,
+    MakeTexelAvailableKHR = 8,
+    MakeTexelVisible = 9,
+    MakeTexelVisibleKHR = 9,
+    NonPrivateTexel = 10,
+    NonPrivateTexelKHR = 10,
+    VolatileTexel = 11,
+    VolatileTexelKHR = 11,
+    SignExtend = 12,
+    ZeroExtend = 13,
+}
+
+enum ImageOperandsMask : uint
+{
+    MaskNone = 0,
+    Bias = 0x00000001,
+    Lod = 0x00000002,
+    Grad = 0x00000004,
+    ConstOffset = 0x00000008,
+    Offset = 0x00000010,
+    ConstOffsets = 0x00000020,
+    Sample = 0x00000040,
+    MinLod = 0x00000080,
+    MakeTexelAvailable = 0x00000100,
+    MakeTexelAvailableKHR = 0x00000100,
+    MakeTexelVisible = 0x00000200,
+    MakeTexelVisibleKHR = 0x00000200,
+    NonPrivateTexel = 0x00000400,
+    NonPrivateTexelKHR = 0x00000400,
+    VolatileTexel = 0x00000800,
+    VolatileTexelKHR = 0x00000800,
+    SignExtend = 0x00001000,
+    ZeroExtend = 0x00002000,
+}
+
+enum FPFastMathModeShift : uint
+{
+    NotNaN = 0,
+    NotInf = 1,
+    NSZ = 2,
+    AllowRecip = 3,
+    Fast = 4,
+}
+
+enum FPFastMathModeMask : uint
+{
+    MaskNone = 0,
+    NotNaN = 0x00000001,
+    NotInf = 0x00000002,
+    NSZ = 0x00000004,
+    AllowRecip = 0x00000008,
+    Fast = 0x00000010,
+}
+
+enum FPRoundingMode : uint
+{
+    RTE = 0,
+    RTZ = 1,
+    RTP = 2,
+    RTN = 3,
+}
+
+enum LinkageType : uint
+{
+    Export = 0,
+    Import = 1,
+}
+
+enum AccessQualifier : uint
+{
+    ReadOnly = 0,
+    WriteOnly = 1,
+    ReadWrite = 2,
+}
+
+enum FunctionParameterAttribute : uint
+{
+    Zext = 0,
+    Sext = 1,
+    ByVal = 2,
+    Sret = 3,
+    NoAlias = 4,
+    NoCapture = 5,
+    NoWrite = 6,
+    NoReadWrite = 7,
+}
+
+enum Decoration : uint
+{
+    RelaxedPrecision = 0,
+    SpecId = 1,
+    Block = 2,
+    BufferBlock = 3,
+    RowMajor = 4,
+    ColMajor = 5,
+    ArrayStride = 6,
+    MatrixStride = 7,
+    GLSLShared = 8,
+    GLSLPacked = 9,
+    CPacked = 10,
+    BuiltIn = 11,
+    NoPerspective = 13,
+    Flat = 14,
+    Patch = 15,
+    Centroid = 16,
+    Sample = 17,
+    Invariant = 18,
+    Restrict = 19,
+    Aliased = 20,
+    Volatile = 21,
+    Constant = 22,
+    Coherent = 23,
+    NonWritable = 24,
+    NonReadable = 25,
+    Uniform = 26,
+    UniformId = 27,
+    SaturatedConversion = 28,
+    Stream = 29,
+    Location = 30,
+    Component = 31,
+    Index = 32,
+    Binding = 33,
+    DescriptorSet = 34,
+    Offset = 35,
+    XfbBuffer = 36,
+    XfbStride = 37,
+    FuncParamAttr = 38,
+    FPRoundingMode = 39,
+    FPFastMathMode = 40,
+    LinkageAttributes = 41,
+    NoContraction = 42,
+    InputAttachmentIndex = 43,
+    Alignment = 44,
+    MaxByteOffset = 45,
+    AlignmentId = 46,
+    MaxByteOffsetId = 47,
+    NoSignedWrap = 4469,
+    NoUnsignedWrap = 4470,
+    ExplicitInterpAMD = 4999,
+    OverrideCoverageNV = 5248,
+    PassthroughNV = 5250,
+    ViewportRelativeNV = 5252,
+    SecondaryViewportRelativeNV = 5256,
+    PerPrimitiveNV = 5271,
+    PerViewNV = 5272,
+    PerTaskNV = 5273,
+    PerVertexNV = 5285,
+    NonUniform = 5300,
+    NonUniformEXT = 5300,
+    RestrictPointer = 5355,
+    RestrictPointerEXT = 5355,
+    AliasedPointer = 5356,
+    AliasedPointerEXT = 5356,
+    ReferencedIndirectlyINTEL = 5602,
+    CounterBuffer = 5634,
+    HlslCounterBufferGOOGLE = 5634,
+    HlslSemanticGOOGLE = 5635,
+    UserSemantic = 5635,
+    UserTypeGOOGLE = 5636,
+    RegisterINTEL = 5825,
+    MemoryINTEL = 5826,
+    NumbanksINTEL = 5827,
+    BankwidthINTEL = 5828,
+    MaxPrivateCopiesINTEL = 5829,
+    SinglepumpINTEL = 5830,
+    DoublepumpINTEL = 5831,
+    MaxReplicatesINTEL = 5832,
+    SimpleDualPortINTEL = 5833,
+    MergeINTEL = 5834,
+    BankBitsINTEL = 5835,
+    ForcePow2DepthINTEL = 5836,
+}
+
+enum BuiltIn : uint
+{
+    Position = 0,
+    PointSize = 1,
+    ClipDistance = 3,
+    CullDistance = 4,
+    VertexId = 5,
+    InstanceId = 6,
+    PrimitiveId = 7,
+    InvocationId = 8,
+    Layer = 9,
+    ViewportIndex = 10,
+    TessLevelOuter = 11,
+    TessLevelInner = 12,
+    TessCoord = 13,
+    PatchVertices = 14,
+    FragCoord = 15,
+    PointCoord = 16,
+    FrontFacing = 17,
+    SampleId = 18,
+    SamplePosition = 19,
+    SampleMask = 20,
+    FragDepth = 22,
+    HelperInvocation = 23,
+    NumWorkgroups = 24,
+    WorkgroupSize = 25,
+    WorkgroupId = 26,
+    LocalInvocationId = 27,
+    GlobalInvocationId = 28,
+    LocalInvocationIndex = 29,
+    WorkDim = 30,
+    GlobalSize = 31,
+    EnqueuedWorkgroupSize = 32,
+    GlobalOffset = 33,
+    GlobalLinearId = 34,
+    SubgroupSize = 36,
+    SubgroupMaxSize = 37,
+    NumSubgroups = 38,
+    NumEnqueuedSubgroups = 39,
+    SubgroupId = 40,
+    SubgroupLocalInvocationId = 41,
+    VertexIndex = 42,
+    InstanceIndex = 43,
+    SubgroupEqMask = 4416,
+    SubgroupEqMaskKHR = 4416,
+    SubgroupGeMask = 4417,
+    SubgroupGeMaskKHR = 4417,
+    SubgroupGtMask = 4418,
+    SubgroupGtMaskKHR = 4418,
+    SubgroupLeMask = 4419,
+    SubgroupLeMaskKHR = 4419,
+    SubgroupLtMask = 4420,
+    SubgroupLtMaskKHR = 4420,
+    BaseVertex = 4424,
+    BaseInstance = 4425,
+    DrawIndex = 4426,
+    PrimitiveShadingRateKHR = 4432,
+    DeviceIndex = 4438,
+    ViewIndex = 4440,
+    ShadingRateKHR = 4444,
+    BaryCoordNoPerspAMD = 4992,
+    BaryCoordNoPerspCentroidAMD = 4993,
+    BaryCoordNoPerspSampleAMD = 4994,
+    BaryCoordSmoothAMD = 4995,
+    BaryCoordSmoothCentroidAMD = 4996,
+    BaryCoordSmoothSampleAMD = 4997,
+    BaryCoordPullModelAMD = 4998,
+    FragStencilRefEXT = 5014,
+    ViewportMaskNV = 5253,
+    SecondaryPositionNV = 5257,
+    SecondaryViewportMaskNV = 5258,
+    PositionPerViewNV = 5261,
+    ViewportMaskPerViewNV = 5262,
+    FullyCoveredEXT = 5264,
+    TaskCountNV = 5274,
+    PrimitiveCountNV = 5275,
+    PrimitiveIndicesNV = 5276,
+    ClipDistancePerViewNV = 5277,
+    CullDistancePerViewNV = 5278,
+    LayerPerViewNV = 5279,
+    MeshViewCountNV = 5280,
+    MeshViewIndicesNV = 5281,
+    BaryCoordNV = 5286,
+    BaryCoordNoPerspNV = 5287,
+    FragSizeEXT = 5292,
+    FragmentSizeNV = 5292,
+    FragInvocationCountEXT = 5293,
+    InvocationsPerPixelNV = 5293,
+    LaunchIdKHR = 5319,
+    LaunchIdNV = 5319,
+    LaunchSizeKHR = 5320,
+    LaunchSizeNV = 5320,
+    WorldRayOriginKHR = 5321,
+    WorldRayOriginNV = 5321,
+    WorldRayDirectionKHR = 5322,
+    WorldRayDirectionNV = 5322,
+    ObjectRayOriginKHR = 5323,
+    ObjectRayOriginNV = 5323,
+    ObjectRayDirectionKHR = 5324,
+    ObjectRayDirectionNV = 5324,
+    RayTminKHR = 5325,
+    RayTminNV = 5325,
+    RayTmaxKHR = 5326,
+    RayTmaxNV = 5326,
+    InstanceCustomIndexKHR = 5327,
+    InstanceCustomIndexNV = 5327,
+    ObjectToWorldKHR = 5330,
+    ObjectToWorldNV = 5330,
+    WorldToObjectKHR = 5331,
+    WorldToObjectNV = 5331,
+    HitTKHR = 5332,
+    HitTNV = 5332,
+    HitKindKHR = 5333,
+    HitKindNV = 5333,
+    IncomingRayFlagsKHR = 5351,
+    IncomingRayFlagsNV = 5351,
+    RayGeometryIndexKHR = 5352,
+    WarpsPerSMNV = 5374,
+    SMCountNV = 5375,
+    WarpIDNV = 5376,
+    SMIDNV = 5377,
+}
+
+enum SelectionControlShift : uint
+{
+    Flatten = 0,
+    DontFlatten = 1,
+}
+
+enum SelectionControlMask : uint
+{
+    MaskNone = 0,
+    Flatten = 0x00000001,
+    DontFlatten = 0x00000002,
+}
+
+enum LoopControlShift : uint
+{
+    Unroll = 0,
+    DontUnroll = 1,
+    DependencyInfinite = 2,
+    DependencyLength = 3,
+    MinIterations = 4,
+    MaxIterations = 5,
+    IterationMultiple = 6,
+    PeelCount = 7,
+    PartialCount = 8,
+    InitiationIntervalINTEL = 16,
+    MaxConcurrencyINTEL = 17,
+    DependencyArrayINTEL = 18,
+    PipelineEnableINTEL = 19,
+    LoopCoalesceINTEL = 20,
+    MaxInterleavingINTEL = 21,
+    SpeculatedIterationsINTEL = 22,
+}
+
+enum LoopControlMask : uint
+{
+    MaskNone = 0,
+    Unroll = 0x00000001,
+    DontUnroll = 0x00000002,
+    DependencyInfinite = 0x00000004,
+    DependencyLength = 0x00000008,
+    MinIterations = 0x00000010,
+    MaxIterations = 0x00000020,
+    IterationMultiple = 0x00000040,
+    PeelCount = 0x00000080,
+    PartialCount = 0x00000100,
+    InitiationIntervalINTEL = 0x00010000,
+    MaxConcurrencyINTEL = 0x00020000,
+    DependencyArrayINTEL = 0x00040000,
+    PipelineEnableINTEL = 0x00080000,
+    LoopCoalesceINTEL = 0x00100000,
+    MaxInterleavingINTEL = 0x00200000,
+    SpeculatedIterationsINTEL = 0x00400000,
+}
+
+enum FunctionControlShift : uint
+{
+    Inline = 0,
+    DontInline = 1,
+    Pure = 2,
+    Const = 3,
+}
+
+enum FunctionControlMask : uint
+{
+    MaskNone = 0,
+    Inline = 0x00000001,
+    DontInline = 0x00000002,
+    Pure = 0x00000004,
+    Const = 0x00000008,
+}
+
+enum MemorySemanticsShift : uint
+{
+    Acquire = 1,
+    Release = 2,
+    AcquireRelease = 3,
+    SequentiallyConsistent = 4,
+    UniformMemory = 6,
+    SubgroupMemory = 7,
+    WorkgroupMemory = 8,
+    CrossWorkgroupMemory = 9,
+    AtomicCounterMemory = 10,
+    ImageMemory = 11,
+    OutputMemory = 12,
+    OutputMemoryKHR = 12,
+    MakeAvailable = 13,
+    MakeAvailableKHR = 13,
+    MakeVisible = 14,
+    MakeVisibleKHR = 14,
+    Volatile = 15,
+}
+
+enum MemorySemanticsMask : uint
+{
+    MaskNone = 0,
+    Acquire = 0x00000002,
+    Release = 0x00000004,
+    AcquireRelease = 0x00000008,
+    SequentiallyConsistent = 0x00000010,
+    UniformMemory = 0x00000040,
+    SubgroupMemory = 0x00000080,
+    WorkgroupMemory = 0x00000100,
+    CrossWorkgroupMemory = 0x00000200,
+    AtomicCounterMemory = 0x00000400,
+    ImageMemory = 0x00000800,
+    OutputMemory = 0x00001000,
+    OutputMemoryKHR = 0x00001000,
+    MakeAvailable = 0x00002000,
+    MakeAvailableKHR = 0x00002000,
+    MakeVisible = 0x00004000,
+    MakeVisibleKHR = 0x00004000,
+    Volatile = 0x00008000,
+}
+
+enum MemoryAccessShift : uint
+{
+    Volatile = 0,
+    Aligned = 1,
+    Nontemporal = 2,
+    MakePointerAvailable = 3,
+    MakePointerAvailableKHR = 3,
+    MakePointerVisible = 4,
+    MakePointerVisibleKHR = 4,
+    NonPrivatePointer = 5,
+    NonPrivatePointerKHR = 5,
+}
+
+enum MemoryAccessMask : uint
+{
+    MaskNone = 0,
+    Volatile = 0x00000001,
+    Aligned = 0x00000002,
+    Nontemporal = 0x00000004,
+    MakePointerAvailable = 0x00000008,
+    MakePointerAvailableKHR = 0x00000008,
+    MakePointerVisible = 0x00000010,
+    MakePointerVisibleKHR = 0x00000010,
+    NonPrivatePointer = 0x00000020,
+    NonPrivatePointerKHR = 0x00000020,
+}
+
+enum Scope : uint
+{
+    CrossDevice = 0,
+    Device = 1,
+    Workgroup = 2,
+    Subgroup = 3,
+    Invocation = 4,
+    QueueFamily = 5,
+    QueueFamilyKHR = 5,
+    ShaderCallKHR = 6,
+}
+
+enum GroupOperation : uint
+{
+    Reduce = 0,
+    InclusiveScan = 1,
+    ExclusiveScan = 2,
+    ClusteredReduce = 3,
+    PartitionedReduceNV = 6,
+    PartitionedInclusiveScanNV = 7,
+    PartitionedExclusiveScanNV = 8,
+}
+
+enum KernelEnqueueFlags : uint
+{
+    NoWait = 0,
+    WaitKernel = 1,
+    WaitWorkGroup = 2,
+}
+
+enum KernelProfilingInfoShift : uint
+{
+    CmdExecTime = 0,
+}
+
+enum KernelProfilingInfoMask : uint
+{
+    MaskNone = 0,
+    CmdExecTime = 0x00000001,
+}
+
+enum Capability : uint
+{
+    Matrix = 0,
+    Shader = 1,
+    Geometry = 2,
+    Tessellation = 3,
+    Addresses = 4,
+    Linkage = 5,
+    Kernel = 6,
+    Vector16 = 7,
+    Float16Buffer = 8,
+    Float16 = 9,
+    Float64 = 10,
+    Int64 = 11,
+    Int64Atomics = 12,
+    ImageBasic = 13,
+    ImageReadWrite = 14,
+    ImageMipmap = 15,
+    Pipes = 17,
+    Groups = 18,
+    DeviceEnqueue = 19,
+    LiteralSampler = 20,
+    AtomicStorage = 21,
+    Int16 = 22,
+    TessellationPointSize = 23,
+    GeometryPointSize = 24,
+    ImageGatherExtended = 25,
+    StorageImageMultisample = 27,
+    UniformBufferArrayDynamicIndexing = 28,
+    SampledImageArrayDynamicIndexing = 29,
+    StorageBufferArrayDynamicIndexing = 30,
+    StorageImageArrayDynamicIndexing = 31,
+    ClipDistance = 32,
+    CullDistance = 33,
+    ImageCubeArray = 34,
+    SampleRateShading = 35,
+    ImageRect = 36,
+    SampledRect = 37,
+    GenericPointer = 38,
+    Int8 = 39,
+    InputAttachment = 40,
+    SparseResidency = 41,
+    MinLod = 42,
+    Sampled1D = 43,
+    Image1D = 44,
+    SampledCubeArray = 45,
+    SampledBuffer = 46,
+    ImageBuffer = 47,
+    ImageMSArray = 48,
+    StorageImageExtendedFormats = 49,
+    ImageQuery = 50,
+    DerivativeControl = 51,
+    InterpolationFunction = 52,
+    TransformFeedback = 53,
+    GeometryStreams = 54,
+    StorageImageReadWithoutFormat = 55,
+    StorageImageWriteWithoutFormat = 56,
+    MultiViewport = 57,
+    SubgroupDispatch = 58,
+    NamedBarrier = 59,
+    PipeStorage = 60,
+    GroupNonUniform = 61,
+    GroupNonUniformVote = 62,
+    GroupNonUniformArithmetic = 63,
+    GroupNonUniformBallot = 64,
+    GroupNonUniformShuffle = 65,
+    GroupNonUniformShuffleRelative = 66,
+    GroupNonUniformClustered = 67,
+    GroupNonUniformQuad = 68,
+    ShaderLayer = 69,
+    ShaderViewportIndex = 70,
+    FragmentShadingRateKHR = 4422,
+    SubgroupBallotKHR = 4423,
+    DrawParameters = 4427,
+    SubgroupVoteKHR = 4431,
+    StorageBuffer16BitAccess = 4433,
+    StorageUniformBufferBlock16 = 4433,
+    StorageUniform16 = 4434,
+    UniformAndStorageBuffer16BitAccess = 4434,
+    StoragePushConstant16 = 4435,
+    StorageInputOutput16 = 4436,
+    DeviceGroup = 4437,
+    MultiView = 4439,
+    VariablePointersStorageBuffer = 4441,
+    VariablePointers = 4442,
+    AtomicStorageOps = 4445,
+    SampleMaskPostDepthCoverage = 4447,
+    StorageBuffer8BitAccess = 4448,
+    UniformAndStorageBuffer8BitAccess = 4449,
+    StoragePushConstant8 = 4450,
+    DenormPreserve = 4464,
+    DenormFlushToZero = 4465,
+    SignedZeroInfNanPreserve = 4466,
+    RoundingModeRTE = 4467,
+    RoundingModeRTZ = 4468,
+    RayQueryProvisionalKHR = 4471,
+    RayTraversalPrimitiveCullingProvisionalKHR = 4478,
+    Float16ImageAMD = 5008,
+    ImageGatherBiasLodAMD = 5009,
+    FragmentMaskAMD = 5010,
+    StencilExportEXT = 5013,
+    ImageReadWriteLodAMD = 5015,
+    Int64ImageEXT = 5016,
+    ShaderClockKHR = 5055,
+    SampleMaskOverrideCoverageNV = 5249,
+    GeometryShaderPassthroughNV = 5251,
+    ShaderViewportIndexLayerEXT = 5254,
+    ShaderViewportIndexLayerNV = 5254,
+    ShaderViewportMaskNV = 5255,
+    ShaderStereoViewNV = 5259,
+    PerViewAttributesNV = 5260,
+    FragmentFullyCoveredEXT = 5265,
+    MeshShadingNV = 5266,
+    ImageFootprintNV = 5282,
+    FragmentBarycentricNV = 5284,
+    ComputeDerivativeGroupQuadsNV = 5288,
+    FragmentDensityEXT = 5291,
+    ShadingRateNV = 5291,
+    GroupNonUniformPartitionedNV = 5297,
+    ShaderNonUniform = 5301,
+    ShaderNonUniformEXT = 5301,
+    RuntimeDescriptorArray = 5302,
+    RuntimeDescriptorArrayEXT = 5302,
+    InputAttachmentArrayDynamicIndexing = 5303,
+    InputAttachmentArrayDynamicIndexingEXT = 5303,
+    UniformTexelBufferArrayDynamicIndexing = 5304,
+    UniformTexelBufferArrayDynamicIndexingEXT = 5304,
+    StorageTexelBufferArrayDynamicIndexing = 5305,
+    StorageTexelBufferArrayDynamicIndexingEXT = 5305,
+    UniformBufferArrayNonUniformIndexing = 5306,
+    UniformBufferArrayNonUniformIndexingEXT = 5306,
+    SampledImageArrayNonUniformIndexing = 5307,
+    SampledImageArrayNonUniformIndexingEXT = 5307,
+    StorageBufferArrayNonUniformIndexing = 5308,
+    StorageBufferArrayNonUniformIndexingEXT = 5308,
+    StorageImageArrayNonUniformIndexing = 5309,
+    StorageImageArrayNonUniformIndexingEXT = 5309,
+    InputAttachmentArrayNonUniformIndexing = 5310,
+    InputAttachmentArrayNonUniformIndexingEXT = 5310,
+    UniformTexelBufferArrayNonUniformIndexing = 5311,
+    UniformTexelBufferArrayNonUniformIndexingEXT = 5311,
+    StorageTexelBufferArrayNonUniformIndexing = 5312,
+    StorageTexelBufferArrayNonUniformIndexingEXT = 5312,
+    RayTracingNV = 5340,
+    VulkanMemoryModel = 5345,
+    VulkanMemoryModelKHR = 5345,
+    VulkanMemoryModelDeviceScope = 5346,
+    VulkanMemoryModelDeviceScopeKHR = 5346,
+    PhysicalStorageBufferAddresses = 5347,
+    PhysicalStorageBufferAddressesEXT = 5347,
+    ComputeDerivativeGroupLinearNV = 5350,
+    RayTracingProvisionalKHR = 5353,
+    CooperativeMatrixNV = 5357,
+    FragmentShaderSampleInterlockEXT = 5363,
+    FragmentShaderShadingRateInterlockEXT = 5372,
+    ShaderSMBuiltinsNV = 5373,
+    FragmentShaderPixelInterlockEXT = 5378,
+    DemoteToHelperInvocationEXT = 5379,
+    SubgroupShuffleINTEL = 5568,
+    SubgroupBufferBlockIOINTEL = 5569,
+    SubgroupImageBlockIOINTEL = 5570,
+    SubgroupImageMediaBlockIOINTEL = 5579,
+    IntegerFunctions2INTEL = 5584,
+    FunctionPointersINTEL = 5603,
+    IndirectReferencesINTEL = 5604,
+    SubgroupAvcMotionEstimationINTEL = 5696,
+    SubgroupAvcMotionEstimationIntraINTEL = 5697,
+    SubgroupAvcMotionEstimationChromaINTEL = 5698,
+    FPGAMemoryAttributesINTEL = 5824,
+    UnstructuredLoopControlsINTEL = 5886,
+    FPGALoopControlsINTEL = 5888,
+    KernelAttributesINTEL = 5892,
+    FPGAKernelAttributesINTEL = 5897,
+    BlockingPipesINTEL = 5945,
+    FPGARegINTEL = 5948,
+    AtomicFloat32AddEXT = 6033,
+    AtomicFloat64AddEXT = 6034,
+}
+
+enum RayFlagsShift : uint
+{
+    OpaqueKHR = 0,
+    NoOpaqueKHR = 1,
+    TerminateOnFirstHitKHR = 2,
+    SkipClosestHitShaderKHR = 3,
+    CullBackFacingTrianglesKHR = 4,
+    CullFrontFacingTrianglesKHR = 5,
+    CullOpaqueKHR = 6,
+    CullNoOpaqueKHR = 7,
+    SkipTrianglesKHR = 8,
+    SkipAABBsKHR = 9,
+}
+
+enum RayFlagsMask : uint
+{
+    MaskNone = 0,
+    OpaqueKHR = 0x00000001,
+    NoOpaqueKHR = 0x00000002,
+    TerminateOnFirstHitKHR = 0x00000004,
+    SkipClosestHitShaderKHR = 0x00000008,
+    CullBackFacingTrianglesKHR = 0x00000010,
+    CullFrontFacingTrianglesKHR = 0x00000020,
+    CullOpaqueKHR = 0x00000040,
+    CullNoOpaqueKHR = 0x00000080,
+    SkipTrianglesKHR = 0x00000100,
+    SkipAABBsKHR = 0x00000200,
+}
+
+enum RayQueryIntersection : uint
+{
+    RayQueryCandidateIntersectionKHR = 0,
+    RayQueryCommittedIntersectionKHR = 1,
+}
+
+enum RayQueryCommittedIntersectionType : uint
+{
+    RayQueryCommittedIntersectionNoneKHR = 0,
+    RayQueryCommittedIntersectionTriangleKHR = 1,
+    RayQueryCommittedIntersectionGeneratedKHR = 2,
+}
+
+enum RayQueryCandidateIntersectionType : uint
+{
+    RayQueryCandidateIntersectionTriangleKHR = 0,
+    RayQueryCandidateIntersectionAABBKHR = 1,
+}
+
+enum FragmentShadingRateShift : uint
+{
+    Vertical2Pixels = 0,
+    Vertical4Pixels = 1,
+    Horizontal2Pixels = 2,
+    Horizontal4Pixels = 3,
+}
+
+enum FragmentShadingRateMask : uint
+{
+    MaskNone = 0,
+    Vertical2Pixels = 0x00000001,
+    Vertical4Pixels = 0x00000002,
+    Horizontal2Pixels = 0x00000004,
+    Horizontal4Pixels = 0x00000008,
+}
+
+enum Op : uint
+{
+    OpNop = 0,
+    OpUndef = 1,
+    OpSourceContinued = 2,
+    OpSource = 3,
+    OpSourceExtension = 4,
+    OpName = 5,
+    OpMemberName = 6,
+    OpString = 7,
+    OpLine = 8,
+    OpExtension = 10,
+    OpExtInstImport = 11,
+    OpExtInst = 12,
+    OpMemoryModel = 14,
+    OpEntryPoint = 15,
+    OpExecutionMode = 16,
+    OpCapability = 17,
+    OpTypeVoid = 19,
+    OpTypeBool = 20,
+    OpTypeInt = 21,
+    OpTypeFloat = 22,
+    OpTypeVector = 23,
+    OpTypeMatrix = 24,
+    OpTypeImage = 25,
+    OpTypeSampler = 26,
+    OpTypeSampledImage = 27,
+    OpTypeArray = 28,
+    OpTypeRuntimeArray = 29,
+    OpTypeStruct = 30,
+    OpTypeOpaque = 31,
+    OpTypePointer = 32,
+    OpTypeFunction = 33,
+    OpTypeEvent = 34,
+    OpTypeDeviceEvent = 35,
+    OpTypeReserveId = 36,
+    OpTypeQueue = 37,
+    OpTypePipe = 38,
+    OpTypeForwardPointer = 39,
+    OpConstantTrue = 41,
+    OpConstantFalse = 42,
+    OpConstant = 43,
+    OpConstantComposite = 44,
+    OpConstantSampler = 45,
+    OpConstantNull = 46,
+    OpSpecConstantTrue = 48,
+    OpSpecConstantFalse = 49,
+    OpSpecConstant = 50,
+    OpSpecConstantComposite = 51,
+    OpSpecConstantOp = 52,
+    OpFunction = 54,
+    OpFunctionParameter = 55,
+    OpFunctionEnd = 56,
+    OpFunctionCall = 57,
+    OpVariable = 59,
+    OpImageTexelPointer = 60,
+    OpLoad = 61,
+    OpStore = 62,
+    OpCopyMemory = 63,
+    OpCopyMemorySized = 64,
+    OpAccessChain = 65,
+    OpInBoundsAccessChain = 66,
+    OpPtrAccessChain = 67,
+    OpArrayLength = 68,
+    OpGenericPtrMemSemantics = 69,
+    OpInBoundsPtrAccessChain = 70,
+    OpDecorate = 71,
+    OpMemberDecorate = 72,
+    OpDecorationGroup = 73,
+    OpGroupDecorate = 74,
+    OpGroupMemberDecorate = 75,
+    OpVectorExtractDynamic = 77,
+    OpVectorInsertDynamic = 78,
+    OpVectorShuffle = 79,
+    OpCompositeConstruct = 80,
+    OpCompositeExtract = 81,
+    OpCompositeInsert = 82,
+    OpCopyObject = 83,
+    OpTranspose = 84,
+    OpSampledImage = 86,
+    OpImageSampleImplicitLod = 87,
+    OpImageSampleExplicitLod = 88,
+    OpImageSampleDrefImplicitLod = 89,
+    OpImageSampleDrefExplicitLod = 90,
+    OpImageSampleProjImplicitLod = 91,
+    OpImageSampleProjExplicitLod = 92,
+    OpImageSampleProjDrefImplicitLod = 93,
+    OpImageSampleProjDrefExplicitLod = 94,
+    OpImageFetch = 95,
+    OpImageGather = 96,
+    OpImageDrefGather = 97,
+    OpImageRead = 98,
+    OpImageWrite = 99,
+    OpImage = 100,
+    OpImageQueryFormat = 101,
+    OpImageQueryOrder = 102,
+    OpImageQuerySizeLod = 103,
+    OpImageQuerySize = 104,
+    OpImageQueryLod = 105,
+    OpImageQueryLevels = 106,
+    OpImageQuerySamples = 107,
+    OpConvertFToU = 109,
+    OpConvertFToS = 110,
+    OpConvertSToF = 111,
+    OpConvertUToF = 112,
+    OpUConvert = 113,
+    OpSConvert = 114,
+    OpFConvert = 115,
+    OpQuantizeToF16 = 116,
+    OpConvertPtrToU = 117,
+    OpSatConvertSToU = 118,
+    OpSatConvertUToS = 119,
+    OpConvertUToPtr = 120,
+    OpPtrCastToGeneric = 121,
+    OpGenericCastToPtr = 122,
+    OpGenericCastToPtrExplicit = 123,
+    OpBitcast = 124,
+    OpSNegate = 126,
+    OpFNegate = 127,
+    OpIAdd = 128,
+    OpFAdd = 129,
+    OpISub = 130,
+    OpFSub = 131,
+    OpIMul = 132,
+    OpFMul = 133,
+    OpUDiv = 134,
+    OpSDiv = 135,
+    OpFDiv = 136,
+    OpUMod = 137,
+    OpSRem = 138,
+    OpSMod = 139,
+    OpFRem = 140,
+    OpFMod = 141,
+    OpVectorTimesScalar = 142,
+    OpMatrixTimesScalar = 143,
+    OpVectorTimesMatrix = 144,
+    OpMatrixTimesVector = 145,
+    OpMatrixTimesMatrix = 146,
+    OpOuterProduct = 147,
+    OpDot = 148,
+    OpIAddCarry = 149,
+    OpISubBorrow = 150,
+    OpUMulExtended = 151,
+    OpSMulExtended = 152,
+    OpAny = 154,
+    OpAll = 155,
+    OpIsNan = 156,
+    OpIsInf = 157,
+    OpIsFinite = 158,
+    OpIsNormal = 159,
+    OpSignBitSet = 160,
+    OpLessOrGreater = 161,
+    OpOrdered = 162,
+    OpUnordered = 163,
+    OpLogicalEqual = 164,
+    OpLogicalNotEqual = 165,
+    OpLogicalOr = 166,
+    OpLogicalAnd = 167,
+    OpLogicalNot = 168,
+    OpSelect = 169,
+    OpIEqual = 170,
+    OpINotEqual = 171,
+    OpUGreaterThan = 172,
+    OpSGreaterThan = 173,
+    OpUGreaterThanEqual = 174,
+    OpSGreaterThanEqual = 175,
+    OpULessThan = 176,
+    OpSLessThan = 177,
+    OpULessThanEqual = 178,
+    OpSLessThanEqual = 179,
+    OpFOrdEqual = 180,
+    OpFUnordEqual = 181,
+    OpFOrdNotEqual = 182,
+    OpFUnordNotEqual = 183,
+    OpFOrdLessThan = 184,
+    OpFUnordLessThan = 185,
+    OpFOrdGreaterThan = 186,
+    OpFUnordGreaterThan = 187,
+    OpFOrdLessThanEqual = 188,
+    OpFUnordLessThanEqual = 189,
+    OpFOrdGreaterThanEqual = 190,
+    OpFUnordGreaterThanEqual = 191,
+    OpShiftRightLogical = 194,
+    OpShiftRightArithmetic = 195,
+    OpShiftLeftLogical = 196,
+    OpBitwiseOr = 197,
+    OpBitwiseXor = 198,
+    OpBitwiseAnd = 199,
+    OpNot = 200,
+    OpBitFieldInsert = 201,
+    OpBitFieldSExtract = 202,
+    OpBitFieldUExtract = 203,
+    OpBitReverse = 204,
+    OpBitCount = 205,
+    OpDPdx = 207,
+    OpDPdy = 208,
+    OpFwidth = 209,
+    OpDPdxFine = 210,
+    OpDPdyFine = 211,
+    OpFwidthFine = 212,
+    OpDPdxCoarse = 213,
+    OpDPdyCoarse = 214,
+    OpFwidthCoarse = 215,
+    OpEmitVertex = 218,
+    OpEndPrimitive = 219,
+    OpEmitStreamVertex = 220,
+    OpEndStreamPrimitive = 221,
+    OpControlBarrier = 224,
+    OpMemoryBarrier = 225,
+    OpAtomicLoad = 227,
+    OpAtomicStore = 228,
+    OpAtomicExchange = 229,
+    OpAtomicCompareExchange = 230,
+    OpAtomicCompareExchangeWeak = 231,
+    OpAtomicIIncrement = 232,
+    OpAtomicIDecrement = 233,
+    OpAtomicIAdd = 234,
+    OpAtomicISub = 235,
+    OpAtomicSMin = 236,
+    OpAtomicUMin = 237,
+    OpAtomicSMax = 238,
+    OpAtomicUMax = 239,
+    OpAtomicAnd = 240,
+    OpAtomicOr = 241,
+    OpAtomicXor = 242,
+    OpPhi = 245,
+    OpLoopMerge = 246,
+    OpSelectionMerge = 247,
+    OpLabel = 248,
+    OpBranch = 249,
+    OpBranchConditional = 250,
+    OpSwitch = 251,
+    OpKill = 252,
+    OpReturn = 253,
+    OpReturnValue = 254,
+    OpUnreachable = 255,
+    OpLifetimeStart = 256,
+    OpLifetimeStop = 257,
+    OpGroupAsyncCopy = 259,
+    OpGroupWaitEvents = 260,
+    OpGroupAll = 261,
+    OpGroupAny = 262,
+    OpGroupBroadcast = 263,
+    OpGroupIAdd = 264,
+    OpGroupFAdd = 265,
+    OpGroupFMin = 266,
+    OpGroupUMin = 267,
+    OpGroupSMin = 268,
+    OpGroupFMax = 269,
+    OpGroupUMax = 270,
+    OpGroupSMax = 271,
+    OpReadPipe = 274,
+    OpWritePipe = 275,
+    OpReservedReadPipe = 276,
+    OpReservedWritePipe = 277,
+    OpReserveReadPipePackets = 278,
+    OpReserveWritePipePackets = 279,
+    OpCommitReadPipe = 280,
+    OpCommitWritePipe = 281,
+    OpIsValidReserveId = 282,
+    OpGetNumPipePackets = 283,
+    OpGetMaxPipePackets = 284,
+    OpGroupReserveReadPipePackets = 285,
+    OpGroupReserveWritePipePackets = 286,
+    OpGroupCommitReadPipe = 287,
+    OpGroupCommitWritePipe = 288,
+    OpEnqueueMarker = 291,
+    OpEnqueueKernel = 292,
+    OpGetKernelNDrangeSubGroupCount = 293,
+    OpGetKernelNDrangeMaxSubGroupSize = 294,
+    OpGetKernelWorkGroupSize = 295,
+    OpGetKernelPreferredWorkGroupSizeMultiple = 296,
+    OpRetainEvent = 297,
+    OpReleaseEvent = 298,
+    OpCreateUserEvent = 299,
+    OpIsValidEvent = 300,
+    OpSetUserEventStatus = 301,
+    OpCaptureEventProfilingInfo = 302,
+    OpGetDefaultQueue = 303,
+    OpBuildNDRange = 304,
+    OpImageSparseSampleImplicitLod = 305,
+    OpImageSparseSampleExplicitLod = 306,
+    OpImageSparseSampleDrefImplicitLod = 307,
+    OpImageSparseSampleDrefExplicitLod = 308,
+    OpImageSparseSampleProjImplicitLod = 309,
+    OpImageSparseSampleProjExplicitLod = 310,
+    OpImageSparseSampleProjDrefImplicitLod = 311,
+    OpImageSparseSampleProjDrefExplicitLod = 312,
+    OpImageSparseFetch = 313,
+    OpImageSparseGather = 314,
+    OpImageSparseDrefGather = 315,
+    OpImageSparseTexelsResident = 316,
+    OpNoLine = 317,
+    OpAtomicFlagTestAndSet = 318,
+    OpAtomicFlagClear = 319,
+    OpImageSparseRead = 320,
+    OpSizeOf = 321,
+    OpTypePipeStorage = 322,
+    OpConstantPipeStorage = 323,
+    OpCreatePipeFromPipeStorage = 324,
+    OpGetKernelLocalSizeForSubgroupCount = 325,
+    OpGetKernelMaxNumSubgroups = 326,
+    OpTypeNamedBarrier = 327,
+    OpNamedBarrierInitialize = 328,
+    OpMemoryNamedBarrier = 329,
+    OpModuleProcessed = 330,
+    OpExecutionModeId = 331,
+    OpDecorateId = 332,
+    OpGroupNonUniformElect = 333,
+    OpGroupNonUniformAll = 334,
+    OpGroupNonUniformAny = 335,
+    OpGroupNonUniformAllEqual = 336,
+    OpGroupNonUniformBroadcast = 337,
+    OpGroupNonUniformBroadcastFirst = 338,
+    OpGroupNonUniformBallot = 339,
+    OpGroupNonUniformInverseBallot = 340,
+    OpGroupNonUniformBallotBitExtract = 341,
+    OpGroupNonUniformBallotBitCount = 342,
+    OpGroupNonUniformBallotFindLSB = 343,
+    OpGroupNonUniformBallotFindMSB = 344,
+    OpGroupNonUniformShuffle = 345,
+    OpGroupNonUniformShuffleXor = 346,
+    OpGroupNonUniformShuffleUp = 347,
+    OpGroupNonUniformShuffleDown = 348,
+    OpGroupNonUniformIAdd = 349,
+    OpGroupNonUniformFAdd = 350,
+    OpGroupNonUniformIMul = 351,
+    OpGroupNonUniformFMul = 352,
+    OpGroupNonUniformSMin = 353,
+    OpGroupNonUniformUMin = 354,
+    OpGroupNonUniformFMin = 355,
+    OpGroupNonUniformSMax = 356,
+    OpGroupNonUniformUMax = 357,
+    OpGroupNonUniformFMax = 358,
+    OpGroupNonUniformBitwiseAnd = 359,
+    OpGroupNonUniformBitwiseOr = 360,
+    OpGroupNonUniformBitwiseXor = 361,
+    OpGroupNonUniformLogicalAnd = 362,
+    OpGroupNonUniformLogicalOr = 363,
+    OpGroupNonUniformLogicalXor = 364,
+    OpGroupNonUniformQuadBroadcast = 365,
+    OpGroupNonUniformQuadSwap = 366,
+    OpCopyLogical = 400,
+    OpPtrEqual = 401,
+    OpPtrNotEqual = 402,
+    OpPtrDiff = 403,
+    OpTerminateInvocation = 4416,
+    OpSubgroupBallotKHR = 4421,
+    OpSubgroupFirstInvocationKHR = 4422,
+    OpSubgroupAllKHR = 4428,
+    OpSubgroupAnyKHR = 4429,
+    OpSubgroupAllEqualKHR = 4430,
+    OpSubgroupReadInvocationKHR = 4432,
+    OpTypeRayQueryProvisionalKHR = 4472,
+    OpRayQueryInitializeKHR = 4473,
+    OpRayQueryTerminateKHR = 4474,
+    OpRayQueryGenerateIntersectionKHR = 4475,
+    OpRayQueryConfirmIntersectionKHR = 4476,
+    OpRayQueryProceedKHR = 4477,
+    OpRayQueryGetIntersectionTypeKHR = 4479,
+    OpGroupIAddNonUniformAMD = 5000,
+    OpGroupFAddNonUniformAMD = 5001,
+    OpGroupFMinNonUniformAMD = 5002,
+    OpGroupUMinNonUniformAMD = 5003,
+    OpGroupSMinNonUniformAMD = 5004,
+    OpGroupFMaxNonUniformAMD = 5005,
+    OpGroupUMaxNonUniformAMD = 5006,
+    OpGroupSMaxNonUniformAMD = 5007,
+    OpFragmentMaskFetchAMD = 5011,
+    OpFragmentFetchAMD = 5012,
+    OpReadClockKHR = 5056,
+    OpImageSampleFootprintNV = 5283,
+    OpGroupNonUniformPartitionNV = 5296,
+    OpWritePackedPrimitiveIndices4x8NV = 5299,
+    OpReportIntersectionKHR = 5334,
+    OpReportIntersectionNV = 5334,
+    OpIgnoreIntersectionKHR = 5335,
+    OpIgnoreIntersectionNV = 5335,
+    OpTerminateRayKHR = 5336,
+    OpTerminateRayNV = 5336,
+    OpTraceNV = 5337,
+    OpTraceRayKHR = 5337,
+    OpTypeAccelerationStructureKHR = 5341,
+    OpTypeAccelerationStructureNV = 5341,
+    OpExecuteCallableKHR = 5344,
+    OpExecuteCallableNV = 5344,
+    OpTypeCooperativeMatrixNV = 5358,
+    OpCooperativeMatrixLoadNV = 5359,
+    OpCooperativeMatrixStoreNV = 5360,
+    OpCooperativeMatrixMulAddNV = 5361,
+    OpCooperativeMatrixLengthNV = 5362,
+    OpBeginInvocationInterlockEXT = 5364,
+    OpEndInvocationInterlockEXT = 5365,
+    OpDemoteToHelperInvocationEXT = 5380,
+    OpIsHelperInvocationEXT = 5381,
+    OpSubgroupShuffleINTEL = 5571,
+    OpSubgroupShuffleDownINTEL = 5572,
+    OpSubgroupShuffleUpINTEL = 5573,
+    OpSubgroupShuffleXorINTEL = 5574,
+    OpSubgroupBlockReadINTEL = 5575,
+    OpSubgroupBlockWriteINTEL = 5576,
+    OpSubgroupImageBlockReadINTEL = 5577,
+    OpSubgroupImageBlockWriteINTEL = 5578,
+    OpSubgroupImageMediaBlockReadINTEL = 5580,
+    OpSubgroupImageMediaBlockWriteINTEL = 5581,
+    OpUCountLeadingZerosINTEL = 5585,
+    OpUCountTrailingZerosINTEL = 5586,
+    OpAbsISubINTEL = 5587,
+    OpAbsUSubINTEL = 5588,
+    OpIAddSatINTEL = 5589,
+    OpUAddSatINTEL = 5590,
+    OpIAverageINTEL = 5591,
+    OpUAverageINTEL = 5592,
+    OpIAverageRoundedINTEL = 5593,
+    OpUAverageRoundedINTEL = 5594,
+    OpISubSatINTEL = 5595,
+    OpUSubSatINTEL = 5596,
+    OpIMul32x16INTEL = 5597,
+    OpUMul32x16INTEL = 5598,
+    OpFunctionPointerINTEL = 5600,
+    OpFunctionPointerCallINTEL = 5601,
+    OpDecorateString = 5632,
+    OpDecorateStringGOOGLE = 5632,
+    OpMemberDecorateString = 5633,
+    OpMemberDecorateStringGOOGLE = 5633,
+    OpVmeImageINTEL = 5699,
+    OpTypeVmeImageINTEL = 5700,
+    OpTypeAvcImePayloadINTEL = 5701,
+    OpTypeAvcRefPayloadINTEL = 5702,
+    OpTypeAvcSicPayloadINTEL = 5703,
+    OpTypeAvcMcePayloadINTEL = 5704,
+    OpTypeAvcMceResultINTEL = 5705,
+    OpTypeAvcImeResultINTEL = 5706,
+    OpTypeAvcImeResultSingleReferenceStreamoutINTEL = 5707,
+    OpTypeAvcImeResultDualReferenceStreamoutINTEL = 5708,
+    OpTypeAvcImeSingleReferenceStreaminINTEL = 5709,
+    OpTypeAvcImeDualReferenceStreaminINTEL = 5710,
+    OpTypeAvcRefResultINTEL = 5711,
+    OpTypeAvcSicResultINTEL = 5712,
+    OpSubgroupAvcMceGetDefaultInterBaseMultiReferencePenaltyINTEL = 5713,
+    OpSubgroupAvcMceSetInterBaseMultiReferencePenaltyINTEL = 5714,
+    OpSubgroupAvcMceGetDefaultInterShapePenaltyINTEL = 5715,
+    OpSubgroupAvcMceSetInterShapePenaltyINTEL = 5716,
+    OpSubgroupAvcMceGetDefaultInterDirectionPenaltyINTEL = 5717,
+    OpSubgroupAvcMceSetInterDirectionPenaltyINTEL = 5718,
+    OpSubgroupAvcMceGetDefaultIntraLumaShapePenaltyINTEL = 5719,
+    OpSubgroupAvcMceGetDefaultInterMotionVectorCostTableINTEL = 5720,
+    OpSubgroupAvcMceGetDefaultHighPenaltyCostTableINTEL = 5721,
+    OpSubgroupAvcMceGetDefaultMediumPenaltyCostTableINTEL = 5722,
+    OpSubgroupAvcMceGetDefaultLowPenaltyCostTableINTEL = 5723,
+    OpSubgroupAvcMceSetMotionVectorCostFunctionINTEL = 5724,
+    OpSubgroupAvcMceGetDefaultIntraLumaModePenaltyINTEL = 5725,
+    OpSubgroupAvcMceGetDefaultNonDcLumaIntraPenaltyINTEL = 5726,
+    OpSubgroupAvcMceGetDefaultIntraChromaModeBasePenaltyINTEL = 5727,
+    OpSubgroupAvcMceSetAcOnlyHaarINTEL = 5728,
+    OpSubgroupAvcMceSetSourceInterlacedFieldPolarityINTEL = 5729,
+    OpSubgroupAvcMceSetSingleReferenceInterlacedFieldPolarityINTEL = 5730,
+    OpSubgroupAvcMceSetDualReferenceInterlacedFieldPolaritiesINTEL = 5731,
+    OpSubgroupAvcMceConvertToImePayloadINTEL = 5732,
+    OpSubgroupAvcMceConvertToImeResultINTEL = 5733,
+    OpSubgroupAvcMceConvertToRefPayloadINTEL = 5734,
+    OpSubgroupAvcMceConvertToRefResultINTEL = 5735,
+    OpSubgroupAvcMceConvertToSicPayloadINTEL = 5736,
+    OpSubgroupAvcMceConvertToSicResultINTEL = 5737,
+    OpSubgroupAvcMceGetMotionVectorsINTEL = 5738,
+    OpSubgroupAvcMceGetInterDistortionsINTEL = 5739,
+    OpSubgroupAvcMceGetBestInterDistortionsINTEL = 5740,
+    OpSubgroupAvcMceGetInterMajorShapeINTEL = 5741,
+    OpSubgroupAvcMceGetInterMinorShapeINTEL = 5742,
+    OpSubgroupAvcMceGetInterDirectionsINTEL = 5743,
+    OpSubgroupAvcMceGetInterMotionVectorCountINTEL = 5744,
+    OpSubgroupAvcMceGetInterReferenceIdsINTEL = 5745,
+    OpSubgroupAvcMceGetInterReferenceInterlacedFieldPolaritiesINTEL = 5746,
+    OpSubgroupAvcImeInitializeINTEL = 5747,
+    OpSubgroupAvcImeSetSingleReferenceINTEL = 5748,
+    OpSubgroupAvcImeSetDualReferenceINTEL = 5749,
+    OpSubgroupAvcImeRefWindowSizeINTEL = 5750,
+    OpSubgroupAvcImeAdjustRefOffsetINTEL = 5751,
+    OpSubgroupAvcImeConvertToMcePayloadINTEL = 5752,
+    OpSubgroupAvcImeSetMaxMotionVectorCountINTEL = 5753,
+    OpSubgroupAvcImeSetUnidirectionalMixDisableINTEL = 5754,
+    OpSubgroupAvcImeSetEarlySearchTerminationThresholdINTEL = 5755,
+    OpSubgroupAvcImeSetWeightedSadINTEL = 5756,
+    OpSubgroupAvcImeEvaluateWithSingleReferenceINTEL = 5757,
+    OpSubgroupAvcImeEvaluateWithDualReferenceINTEL = 5758,
+    OpSubgroupAvcImeEvaluateWithSingleReferenceStreaminINTEL = 5759,
+    OpSubgroupAvcImeEvaluateWithDualReferenceStreaminINTEL = 5760,
+    OpSubgroupAvcImeEvaluateWithSingleReferenceStreamoutINTEL = 5761,
+    OpSubgroupAvcImeEvaluateWithDualReferenceStreamoutINTEL = 5762,
+    OpSubgroupAvcImeEvaluateWithSingleReferenceStreaminoutINTEL = 5763,
+    OpSubgroupAvcImeEvaluateWithDualReferenceStreaminoutINTEL = 5764,
+    OpSubgroupAvcImeConvertToMceResultINTEL = 5765,
+    OpSubgroupAvcImeGetSingleReferenceStreaminINTEL = 5766,
+    OpSubgroupAvcImeGetDualReferenceStreaminINTEL = 5767,
+    OpSubgroupAvcImeStripSingleReferenceStreamoutINTEL = 5768,
+    OpSubgroupAvcImeStripDualReferenceStreamoutINTEL = 5769,
+    OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeMotionVectorsINTEL = 5770,
+    OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeDistortionsINTEL = 5771,
+    OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeReferenceIdsINTEL = 5772,
+    OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeMotionVectorsINTEL = 5773,
+    OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeDistortionsINTEL = 5774,
+    OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeReferenceIdsINTEL = 5775,
+    OpSubgroupAvcImeGetBorderReachedINTEL = 5776,
+    OpSubgroupAvcImeGetTruncatedSearchIndicationINTEL = 5777,
+    OpSubgroupAvcImeGetUnidirectionalEarlySearchTerminationINTEL = 5778,
+    OpSubgroupAvcImeGetWeightingPatternMinimumMotionVectorINTEL = 5779,
+    OpSubgroupAvcImeGetWeightingPatternMinimumDistortionINTEL = 5780,
+    OpSubgroupAvcFmeInitializeINTEL = 5781,
+    OpSubgroupAvcBmeInitializeINTEL = 5782,
+    OpSubgroupAvcRefConvertToMcePayloadINTEL = 5783,
+    OpSubgroupAvcRefSetBidirectionalMixDisableINTEL = 5784,
+    OpSubgroupAvcRefSetBilinearFilterEnableINTEL = 5785,
+    OpSubgroupAvcRefEvaluateWithSingleReferenceINTEL = 5786,
+    OpSubgroupAvcRefEvaluateWithDualReferenceINTEL = 5787,
+    OpSubgroupAvcRefEvaluateWithMultiReferenceINTEL = 5788,
+    OpSubgroupAvcRefEvaluateWithMultiReferenceInterlacedINTEL = 5789,
+    OpSubgroupAvcRefConvertToMceResultINTEL = 5790,
+    OpSubgroupAvcSicInitializeINTEL = 5791,
+    OpSubgroupAvcSicConfigureSkcINTEL = 5792,
+    OpSubgroupAvcSicConfigureIpeLumaINTEL = 5793,
+    OpSubgroupAvcSicConfigureIpeLumaChromaINTEL = 5794,
+    OpSubgroupAvcSicGetMotionVectorMaskINTEL = 5795,
+    OpSubgroupAvcSicConvertToMcePayloadINTEL = 5796,
+    OpSubgroupAvcSicSetIntraLumaShapePenaltyINTEL = 5797,
+    OpSubgroupAvcSicSetIntraLumaModeCostFunctionINTEL = 5798,
+    OpSubgroupAvcSicSetIntraChromaModeCostFunctionINTEL = 5799,
+    OpSubgroupAvcSicSetBilinearFilterEnableINTEL = 5800,
+    OpSubgroupAvcSicSetSkcForwardTransformEnableINTEL = 5801,
+    OpSubgroupAvcSicSetBlockBasedRawSkipSadINTEL = 5802,
+    OpSubgroupAvcSicEvaluateIpeINTEL = 5803,
+    OpSubgroupAvcSicEvaluateWithSingleReferenceINTEL = 5804,
+    OpSubgroupAvcSicEvaluateWithDualReferenceINTEL = 5805,
+    OpSubgroupAvcSicEvaluateWithMultiReferenceINTEL = 5806,
+    OpSubgroupAvcSicEvaluateWithMultiReferenceInterlacedINTEL = 5807,
+    OpSubgroupAvcSicConvertToMceResultINTEL = 5808,
+    OpSubgroupAvcSicGetIpeLumaShapeINTEL = 5809,
+    OpSubgroupAvcSicGetBestIpeLumaDistortionINTEL = 5810,
+    OpSubgroupAvcSicGetBestIpeChromaDistortionINTEL = 5811,
+    OpSubgroupAvcSicGetPackedIpeLumaModesINTEL = 5812,
+    OpSubgroupAvcSicGetIpeChromaModeINTEL = 5813,
+    OpSubgroupAvcSicGetPackedSkcLumaCountThresholdINTEL = 5814,
+    OpSubgroupAvcSicGetPackedSkcLumaSumThresholdINTEL = 5815,
+    OpSubgroupAvcSicGetInterRawSadsINTEL = 5816,
+    OpLoopControlINTEL = 5887,
+    OpReadPipeBlockingINTEL = 5946,
+    OpWritePipeBlockingINTEL = 5947,
+    OpFPGARegINTEL = 5949,
+    OpRayQueryGetRayTMinKHR = 6016,
+    OpRayQueryGetRayFlagsKHR = 6017,
+    OpRayQueryGetIntersectionTKHR = 6018,
+    OpRayQueryGetIntersectionInstanceCustomIndexKHR = 6019,
+    OpRayQueryGetIntersectionInstanceIdKHR = 6020,
+    OpRayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR = 6021,
+    OpRayQueryGetIntersectionGeometryIndexKHR = 6022,
+    OpRayQueryGetIntersectionPrimitiveIndexKHR = 6023,
+    OpRayQueryGetIntersectionBarycentricsKHR = 6024,
+    OpRayQueryGetIntersectionFrontFaceKHR = 6025,
+    OpRayQueryGetIntersectionCandidateAABBOpaqueKHR = 6026,
+    OpRayQueryGetIntersectionObjectRayDirectionKHR = 6027,
+    OpRayQueryGetIntersectionObjectRayOriginKHR = 6028,
+    OpRayQueryGetWorldRayDirectionKHR = 6029,
+    OpRayQueryGetWorldRayOriginKHR = 6030,
+    OpRayQueryGetIntersectionObjectToWorldKHR = 6031,
+    OpRayQueryGetIntersectionWorldToObjectKHR = 6032,
+    OpAtomicFAddEXT = 6035,
+}
+
+
-- 
2.34.0




More information about the wine-devel mailing list