Squashed 'third_party/SPIRV-Headers/' changes from e4322e3be..af64a9e82

af64a9e82 Versioning: Complete the versioning change in recent commits.
5f3a03023 Merge pull request #133 from nhaehnle/buildHeader-spv15
809512f36 buildHeaders: update version to SPIR-V 1.5
b252a5095 Merge pull request #131 from lukaszgotszaldintel/new_branch
842ec9067 Merge pull request #128 from amdrexu/bugfix
1cdfc756f Merge pull request #129 from ehsannas/update_doc
7b1b05e78 Improve the doc on using Bazel.
836e001d7 Merge pull request #127 from ehsannas/add_bazel_build
3f9bad6fc add cmake option SPIRV_HEADERS_SKIP_INSTALL
c98d953a3 Bump the SPIR-V version to 1.5
ab22babed Update documentation.
4163b3639 Add a Bazel build file.
601d73872 Add SPV_KHR_physical_storage_buffer.
63d4d272f SPIR-V 1.5.
38cafab37 Minor tweak for Rev. 2 of SPIR-V 1.4.
059a49598 Merge branch 'printing-classes'
cca9cc7f3 Grammar: Add instruction-printing classes.

git-subtree-dir: third_party/SPIRV-Headers
git-subtree-split: af64a9e826bf5bb5fcd2434dd71be1e41e922563
diff --git a/BUILD.bazel b/BUILD.bazel
new file mode 100644
index 0000000..29f43ce
--- /dev/null
+++ b/BUILD.bazel
@@ -0,0 +1,124 @@
+package(
+    default_visibility = ["//visibility:public"],
+)
+
+licenses(["notice"])
+
+exports_files(["LICENSE"])
+
+filegroup(
+    name = "spirv_core_grammar_1.0",
+    srcs = ["include/spirv/1.0/spirv.core.grammar.json"],
+)
+
+filegroup(
+    name = "spirv_glsl_grammar_1.0",
+    srcs = ["include/spirv/1.0/extinst.glsl.std.450.grammar.json"],
+)
+
+filegroup(
+    name = "spirv_opencl_grammar_1.0",
+    srcs = ["include/spirv/1.0/extinst.opencl.std.100.grammar.json"],
+)
+
+filegroup(
+    name = "spirv_core_grammar_1.1",
+    srcs = ["include/spirv/1.1/spirv.core.grammar.json"],
+)
+
+filegroup(
+    name = "spirv_glsl_grammar_1.1",
+    srcs = ["include/spirv/1.1/extinst.glsl.std.450.grammar.json"],
+)
+
+filegroup(
+    name = "spirv_opencl_grammar_1.1",
+    srcs = ["include/spirv/1.1/extinst.opencl.std.100.grammar.json"],
+)
+
+filegroup(
+    name = "spirv_core_grammar_1.2",
+    srcs = ["include/spirv/1.2/spirv.core.grammar.json"],
+)
+
+filegroup(
+    name = "spirv_glsl_grammar_1.2",
+    srcs = ["include/spirv/1.2/extinst.glsl.std.450.grammar.json"],
+)
+
+filegroup(
+    name = "spirv_opencl_grammar_1.2",
+    srcs = ["include/spirv/1.2/extinst.opencl.std.100.grammar.json"],
+)
+
+filegroup(
+    name = "spirv_core_grammar_unified1",
+    srcs = ["include/spirv/unified1/spirv.core.grammar.json"],
+)
+
+filegroup(
+    name = "spirv_glsl_grammar_unified1",
+    srcs = ["include/spirv/unified1/extinst.glsl.std.450.grammar.json"],
+)
+
+filegroup(
+    name = "spirv_opencl_grammar_unified1",
+    srcs = ["include/spirv/unified1/extinst.opencl.std.100.grammar.json"],
+)
+
+filegroup(
+    name = "spirv_xml_registry",
+    srcs = ["include/spirv/spir-v.xml"],
+)
+
+cc_library(
+    name = "spirv_common_headers",
+    hdrs = [
+        "include/spirv/1.0/GLSL.std.450.h",
+        "include/spirv/1.0/OpenCL.std.h",
+        "include/spirv/1.1/GLSL.std.450.h",
+        "include/spirv/1.1/OpenCL.std.h",
+        "include/spirv/1.2/GLSL.std.450.h",
+        "include/spirv/1.2/OpenCL.std.h",
+        "include/spirv/unified1/GLSL.std.450.h",
+        "include/spirv/unified1/OpenCL.std.h",
+    ],
+    includes = ["include"],
+)
+
+cc_library(
+    name = "spirv_c_headers",
+    hdrs = [
+        "include/spirv/1.0/spirv.h",
+        "include/spirv/1.1/spirv.h",
+        "include/spirv/1.2/spirv.h",
+        "include/spirv/unified1/spirv.h",
+    ],
+    includes = ["include"],
+    deps = [":spirv_common_headers"],
+)
+
+cc_library(
+    name = "spirv_cpp_headers",
+    hdrs = [
+        "include/spirv/1.0/spirv.hpp",
+        "include/spirv/1.1/spirv.hpp",
+        "include/spirv/1.2/spirv.hpp",
+        "include/spirv/unified1/spirv.hpp",
+    ],
+    includes = ["include"],
+    deps = [":spirv_common_headers"],
+)
+
+cc_library(
+    name = "spirv_cpp11_headers",
+    hdrs = [
+        "include/spirv/1.0/spirv.hpp11",
+        "include/spirv/1.1/spirv.hpp11",
+        "include/spirv/1.2/spirv.hpp11",
+        "include/spirv/unified1/spirv.hpp11",
+    ],
+    includes = ["include"],
+    deps = [":spirv_common_headers"],
+)
+
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 5fd0196..c6f4c4c 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -51,9 +51,18 @@
 
 option(SPIRV_HEADERS_SKIP_EXAMPLES "Skip building examples"
       ${SPIRV_HEADERS_SKIP_EXAMPLES})
+
+option(SPIRV_HEADERS_SKIP_INSTALL "Skip install"
+      ${SPIRV_HEADERS_SKIP_INSTALL})
+
 if(NOT ${SPIRV_HEADERS_SKIP_EXAMPLES})
   set(SPIRV_HEADERS_ENABLE_EXAMPLES ON)
 endif()
+
+if(NOT ${SPIRV_HEADERS_SKIP_INSTALL})
+  set(SPIRV_HEADERS_ENABLE_INSTALL ON)
+endif()
+
 if (SPIRV_HEADERS_ENABLE_EXAMPLES)
   message(STATUS "Building SPIRV-Header examples")
   add_subdirectory(example)
@@ -67,49 +76,52 @@
 
 # Installation
 
-set(config_install_dir "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}")
+if (SPIRV_HEADERS_ENABLE_INSTALL)
+    message(STATUS "Installing SPIRV-Header")
 
-set(generated_dir "${CMAKE_CURRENT_BINARY_DIR}/generated")
+    set(config_install_dir "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}")
 
-set(version_config "${generated_dir}/${PROJECT_NAME}ConfigVersion.cmake")
-set(project_config "${generated_dir}/${PROJECT_NAME}Config.cmake")
-set(TARGETS_EXPORT_NAME "${PROJECT_NAME}Targets")
-set(namespace "${PROJECT_NAME}::")
+    set(generated_dir "${CMAKE_CURRENT_BINARY_DIR}/generated")
 
-include(CMakePackageConfigHelpers)
-write_basic_package_version_file(
-    "${version_config}"
-    COMPATIBILITY SameMajorVersion
-)
+    set(version_config "${generated_dir}/${PROJECT_NAME}ConfigVersion.cmake")
+    set(project_config "${generated_dir}/${PROJECT_NAME}Config.cmake")
+    set(TARGETS_EXPORT_NAME "${PROJECT_NAME}Targets")
+    set(namespace "${PROJECT_NAME}::")
 
-configure_package_config_file(
-    "cmake/Config.cmake.in"
-    "${project_config}"
-    INSTALL_DESTINATION "${config_install_dir}"
-)
+    include(CMakePackageConfigHelpers)
+    write_basic_package_version_file(
+        "${version_config}"
+        COMPATIBILITY SameMajorVersion
+    )
 
-install(
-    TARGETS ${PROJECT_NAME}
-    EXPORT "${TARGETS_EXPORT_NAME}"
-    LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
-    ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
-    RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
-    INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
-)
+    configure_package_config_file(
+        "cmake/Config.cmake.in"
+        "${project_config}"
+        INSTALL_DESTINATION "${config_install_dir}"
+    )
 
-install(
-    DIRECTORY include/spirv
-    DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
-)
+    install(
+        TARGETS ${PROJECT_NAME}
+        EXPORT "${TARGETS_EXPORT_NAME}"
+        LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
+        ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
+        RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
+        INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
+    )
 
-install(
-    FILES "${project_config}" "${version_config}"
-    DESTINATION "${config_install_dir}"
-)
+    install(
+        DIRECTORY include/spirv
+        DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
+    )
 
-install(
-    EXPORT "${TARGETS_EXPORT_NAME}"
-    NAMESPACE "${namespace}"
-    DESTINATION "${config_install_dir}"
-)
+    install(
+        FILES "${project_config}" "${version_config}"
+        DESTINATION "${config_install_dir}"
+    )
 
+    install(
+        EXPORT "${TARGETS_EXPORT_NAME}"
+        NAMESPACE "${namespace}"
+        DESTINATION "${config_install_dir}"
+    )
+endif()
diff --git a/README.md b/README.md
index beb1b7e..53c476f 100644
--- a/README.md
+++ b/README.md
@@ -53,6 +53,7 @@
 
 ## Using the headers without installing
 
+### Using CMake
 A CMake-based project can use the headers without installing, as follows:
 
 1. Add an `add_subdirectory` directive to include this source tree.
@@ -69,6 +70,55 @@
 See also the [example](example/) subdirectory.  But since that example is
 *inside* this repostory, it doesn't use and `add_subdirectory` directive.
 
+### Using Bazel
+A Bazel-based project can use the headers without installing, as follows:
+
+1. Add SPIRV-Headers as a submodule of your project, and add a
+`local_repository` to your `WORKSPACE` file. For example, if you place
+SPIRV-Headers under `external/spirv-headers`, then add the following to your
+`WORKSPACE` file:
+
+```
+local_repository(
+    name = "spirv_headers",
+    path = "external/spirv-headers",
+)
+```
+
+2. Add one of the following to the `deps` attribute of your build target based
+on your needs:
+```
+@spirv_headers//:spirv_c_headers
+@spirv_headers//:spirv_cpp_headers
+@spirv_headers//:spirv_cpp11_headers
+```
+
+For example:
+
+```
+cc_library(
+  name = "project",
+  srcs = [
+    # Path to project sources
+  ],
+  hdrs = [
+    # Path to project headers
+  ],
+  deps = [
+    "@spirv_tools//:spirv_c_headers",
+    # Other dependencies,
+  ],
+)
+```
+
+3. In your C or C++ source code use `#include` directives that explicitly mention
+   the `spirv` path component.
+```
+#include "spirv/unified1/GLSL.std.450.h"
+#include "spirv/unified1/OpenCL.std.h"
+#include "spirv/unified1/spirv.hpp"
+```
+
 ## Generating the headers from the JSON grammar
 
 This will generally be done by Khronos, for a change to the JSON grammar.
diff --git a/WORKSPACE b/WORKSPACE
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/WORKSPACE
diff --git a/include/spirv/unified1/spirv.core.grammar.json b/include/spirv/unified1/spirv.core.grammar.json
index 20eafde..45bac52 100644
--- a/include/spirv/unified1/spirv.core.grammar.json
+++ b/include/spirv/unified1/spirv.core.grammar.json
@@ -26,15 +26,122 @@
   ],
   "magic_number" : "0x07230203",
   "major_version" : 1,
-  "minor_version" : 4,
+  "minor_version" : 5,
   "revision" : 1,
+  "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" },
@@ -43,6 +150,7 @@
     },
     {
       "opname" : "OpSourceContinued",
+      "class"  : "Debug",
       "opcode" : 2,
       "operands" : [
         { "kind" : "LiteralString", "name" : "'Continued Source'" }
@@ -50,6 +158,7 @@
     },
     {
       "opname" : "OpSource",
+      "class"  : "Debug",
       "opcode" : 3,
       "operands" : [
         { "kind" : "SourceLanguage" },
@@ -60,6 +169,7 @@
     },
     {
       "opname" : "OpSourceExtension",
+      "class"  : "Debug",
       "opcode" : 4,
       "operands" : [
         { "kind" : "LiteralString", "name" : "'Extension'" }
@@ -67,6 +177,7 @@
     },
     {
       "opname" : "OpName",
+      "class"  : "Debug",
       "opcode" : 5,
       "operands" : [
         { "kind" : "IdRef",         "name" : "'Target'" },
@@ -75,6 +186,7 @@
     },
     {
       "opname" : "OpMemberName",
+      "class"  : "Debug",
       "opcode" : 6,
       "operands" : [
         { "kind" : "IdRef",          "name" : "'Type'" },
@@ -84,6 +196,7 @@
     },
     {
       "opname" : "OpString",
+      "class"  : "Debug",
       "opcode" : 7,
       "operands" : [
         { "kind" : "IdResult" },
@@ -92,6 +205,7 @@
     },
     {
       "opname" : "OpLine",
+      "class"  : "Debug",
       "opcode" : 8,
       "operands" : [
         { "kind" : "IdRef",          "name" : "'File'" },
@@ -101,6 +215,7 @@
     },
     {
       "opname" : "OpExtension",
+      "class"  : "Extension",
       "opcode" : 10,
       "operands" : [
         { "kind" : "LiteralString", "name" : "'Name'" }
@@ -108,6 +223,7 @@
     },
     {
       "opname" : "OpExtInstImport",
+      "class"  : "Extension",
       "opcode" : 11,
       "operands" : [
         { "kind" : "IdResult" },
@@ -116,6 +232,7 @@
     },
     {
       "opname" : "OpExtInst",
+      "class"  : "Extension",
       "opcode" : 12,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -127,6 +244,7 @@
     },
     {
       "opname" : "OpMemoryModel",
+      "class"  : "Mode-Setting",
       "opcode" : 14,
       "operands" : [
         { "kind" : "AddressingModel" },
@@ -135,6 +253,7 @@
     },
     {
       "opname" : "OpEntryPoint",
+      "class"  : "Mode-Setting",
       "opcode" : 15,
       "operands" : [
         { "kind" : "ExecutionModel" },
@@ -145,6 +264,7 @@
     },
     {
       "opname" : "OpExecutionMode",
+      "class"  : "Mode-Setting",
       "opcode" : 16,
       "operands" : [
         { "kind" : "IdRef",         "name" : "'Entry Point'" },
@@ -153,6 +273,7 @@
     },
     {
       "opname" : "OpCapability",
+      "class"  : "Mode-Setting",
       "opcode" : 17,
       "operands" : [
         { "kind" : "Capability", "name" : "'Capability'" }
@@ -160,6 +281,7 @@
     },
     {
       "opname" : "OpTypeVoid",
+      "class"  : "Type-Declaration",
       "opcode" : 19,
       "operands" : [
         { "kind" : "IdResult" }
@@ -167,6 +289,7 @@
     },
     {
       "opname" : "OpTypeBool",
+      "class"  : "Type-Declaration",
       "opcode" : 20,
       "operands" : [
         { "kind" : "IdResult" }
@@ -174,6 +297,7 @@
     },
     {
       "opname" : "OpTypeInt",
+      "class"  : "Type-Declaration",
       "opcode" : 21,
       "operands" : [
         { "kind" : "IdResult" },
@@ -183,6 +307,7 @@
     },
     {
       "opname" : "OpTypeFloat",
+      "class"  : "Type-Declaration",
       "opcode" : 22,
       "operands" : [
         { "kind" : "IdResult" },
@@ -191,6 +316,7 @@
     },
     {
       "opname" : "OpTypeVector",
+      "class"  : "Type-Declaration",
       "opcode" : 23,
       "operands" : [
         { "kind" : "IdResult" },
@@ -200,6 +326,7 @@
     },
     {
       "opname" : "OpTypeMatrix",
+      "class"  : "Type-Declaration",
       "opcode" : 24,
       "operands" : [
         { "kind" : "IdResult" },
@@ -210,6 +337,7 @@
     },
     {
       "opname" : "OpTypeImage",
+      "class"  : "Type-Declaration",
       "opcode" : 25,
       "operands" : [
         { "kind" : "IdResult" },
@@ -225,6 +353,7 @@
     },
     {
       "opname" : "OpTypeSampler",
+      "class"  : "Type-Declaration",
       "opcode" : 26,
       "operands" : [
         { "kind" : "IdResult" }
@@ -232,6 +361,7 @@
     },
     {
       "opname" : "OpTypeSampledImage",
+      "class"  : "Type-Declaration",
       "opcode" : 27,
       "operands" : [
         { "kind" : "IdResult" },
@@ -240,6 +370,7 @@
     },
     {
       "opname" : "OpTypeArray",
+      "class"  : "Type-Declaration",
       "opcode" : 28,
       "operands" : [
         { "kind" : "IdResult" },
@@ -249,6 +380,7 @@
     },
     {
       "opname" : "OpTypeRuntimeArray",
+      "class"  : "Type-Declaration",
       "opcode" : 29,
       "operands" : [
         { "kind" : "IdResult" },
@@ -258,6 +390,7 @@
     },
     {
       "opname" : "OpTypeStruct",
+      "class"  : "Type-Declaration",
       "opcode" : 30,
       "operands" : [
         { "kind" : "IdResult" },
@@ -266,6 +399,7 @@
     },
     {
       "opname" : "OpTypeOpaque",
+      "class"  : "Type-Declaration",
       "opcode" : 31,
       "operands" : [
         { "kind" : "IdResult" },
@@ -275,6 +409,7 @@
     },
     {
       "opname" : "OpTypePointer",
+      "class"  : "Type-Declaration",
       "opcode" : 32,
       "operands" : [
         { "kind" : "IdResult" },
@@ -284,6 +419,7 @@
     },
     {
       "opname" : "OpTypeFunction",
+      "class"  : "Type-Declaration",
       "opcode" : 33,
       "operands" : [
         { "kind" : "IdResult" },
@@ -293,6 +429,7 @@
     },
     {
       "opname" : "OpTypeEvent",
+      "class"  : "Type-Declaration",
       "opcode" : 34,
       "operands" : [
         { "kind" : "IdResult" }
@@ -301,6 +438,7 @@
     },
     {
       "opname" : "OpTypeDeviceEvent",
+      "class"  : "Type-Declaration",
       "opcode" : 35,
       "operands" : [
         { "kind" : "IdResult" }
@@ -309,6 +447,7 @@
     },
     {
       "opname" : "OpTypeReserveId",
+      "class"  : "Type-Declaration",
       "opcode" : 36,
       "operands" : [
         { "kind" : "IdResult" }
@@ -317,6 +456,7 @@
     },
     {
       "opname" : "OpTypeQueue",
+      "class"  : "Type-Declaration",
       "opcode" : 37,
       "operands" : [
         { "kind" : "IdResult" }
@@ -325,6 +465,7 @@
     },
     {
       "opname" : "OpTypePipe",
+      "class"  : "Type-Declaration",
       "opcode" : 38,
       "operands" : [
         { "kind" : "IdResult" },
@@ -334,6 +475,7 @@
     },
     {
       "opname" : "OpTypeForwardPointer",
+      "class"  : "Type-Declaration",
       "opcode" : 39,
       "operands" : [
         { "kind" : "IdRef",        "name" : "'Pointer Type'" },
@@ -341,11 +483,12 @@
       ],
       "capabilities" : [
         "Addresses",
-        "PhysicalStorageBufferAddressesEXT"
+        "PhysicalStorageBufferAddresses"
       ]
     },
     {
       "opname" : "OpConstantTrue",
+      "class"  : "Constant-Creation",
       "opcode" : 41,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -354,6 +497,7 @@
     },
     {
       "opname" : "OpConstantFalse",
+      "class"  : "Constant-Creation",
       "opcode" : 42,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -362,6 +506,7 @@
     },
     {
       "opname" : "OpConstant",
+      "class"  : "Constant-Creation",
       "opcode" : 43,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -371,6 +516,7 @@
     },
     {
       "opname" : "OpConstantComposite",
+      "class"  : "Constant-Creation",
       "opcode" : 44,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -380,6 +526,7 @@
     },
     {
       "opname" : "OpConstantSampler",
+      "class"  : "Constant-Creation",
       "opcode" : 45,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -392,6 +539,7 @@
     },
     {
       "opname" : "OpConstantNull",
+      "class"  : "Constant-Creation",
       "opcode" : 46,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -400,6 +548,7 @@
     },
     {
       "opname" : "OpSpecConstantTrue",
+      "class"  : "Constant-Creation",
       "opcode" : 48,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -408,6 +557,7 @@
     },
     {
       "opname" : "OpSpecConstantFalse",
+      "class"  : "Constant-Creation",
       "opcode" : 49,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -416,6 +566,7 @@
     },
     {
       "opname" : "OpSpecConstant",
+      "class"  : "Constant-Creation",
       "opcode" : 50,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -425,6 +576,7 @@
     },
     {
       "opname" : "OpSpecConstantComposite",
+      "class"  : "Constant-Creation",
       "opcode" : 51,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -434,6 +586,7 @@
     },
     {
       "opname" : "OpSpecConstantOp",
+      "class"  : "Constant-Creation",
       "opcode" : 52,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -443,6 +596,7 @@
     },
     {
       "opname" : "OpFunction",
+      "class"  : "Function",
       "opcode" : 54,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -453,6 +607,7 @@
     },
     {
       "opname" : "OpFunctionParameter",
+      "class"  : "Function",
       "opcode" : 55,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -461,10 +616,12 @@
     },
     {
       "opname" : "OpFunctionEnd",
+      "class"  : "Function",
       "opcode" : 56
     },
     {
       "opname" : "OpFunctionCall",
+      "class"  : "Function",
       "opcode" : 57,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -475,6 +632,7 @@
     },
     {
       "opname" : "OpVariable",
+      "class"  : "Memory",
       "opcode" : 59,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -485,6 +643,7 @@
     },
     {
       "opname" : "OpImageTexelPointer",
+      "class"  : "Memory",
       "opcode" : 60,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -496,6 +655,7 @@
     },
     {
       "opname" : "OpLoad",
+      "class"  : "Memory",
       "opcode" : 61,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -506,6 +666,7 @@
     },
     {
       "opname" : "OpStore",
+      "class"  : "Memory",
       "opcode" : 62,
       "operands" : [
         { "kind" : "IdRef",                            "name" : "'Pointer'" },
@@ -515,6 +676,7 @@
     },
     {
       "opname" : "OpCopyMemory",
+      "class"  : "Memory",
       "opcode" : 63,
       "operands" : [
         { "kind" : "IdRef",                            "name" : "'Target'" },
@@ -525,6 +687,7 @@
     },
     {
       "opname" : "OpCopyMemorySized",
+      "class"  : "Memory",
       "opcode" : 64,
       "operands" : [
         { "kind" : "IdRef",                            "name" : "'Target'" },
@@ -537,6 +700,7 @@
     },
     {
       "opname" : "OpAccessChain",
+      "class"  : "Memory",
       "opcode" : 65,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -547,6 +711,7 @@
     },
     {
       "opname" : "OpInBoundsAccessChain",
+      "class"  : "Memory",
       "opcode" : 66,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -557,6 +722,7 @@
     },
     {
       "opname" : "OpPtrAccessChain",
+      "class"  : "Memory",
       "opcode" : 67,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -569,11 +735,12 @@
         "Addresses",
         "VariablePointers",
         "VariablePointersStorageBuffer",
-        "PhysicalStorageBufferAddressesEXT"
+        "PhysicalStorageBufferAddresses"
       ]
     },
     {
       "opname" : "OpArrayLength",
+      "class"  : "Memory",
       "opcode" : 68,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -585,6 +752,7 @@
     },
     {
       "opname" : "OpGenericPtrMemSemantics",
+      "class"  : "Memory",
       "opcode" : 69,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -595,6 +763,7 @@
     },
     {
       "opname" : "OpInBoundsPtrAccessChain",
+      "class"  : "Memory",
       "opcode" : 70,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -607,6 +776,7 @@
     },
     {
       "opname" : "OpDecorate",
+      "class"  : "Annotation",
       "opcode" : 71,
       "operands" : [
         { "kind" : "IdRef",      "name" : "'Target'" },
@@ -615,6 +785,7 @@
     },
     {
       "opname" : "OpMemberDecorate",
+      "class"  : "Annotation",
       "opcode" : 72,
       "operands" : [
         { "kind" : "IdRef",          "name" : "'Structure Type'" },
@@ -624,6 +795,7 @@
     },
     {
       "opname" : "OpDecorationGroup",
+      "class"  : "Annotation",
       "opcode" : 73,
       "operands" : [
         { "kind" : "IdResult" }
@@ -631,6 +803,7 @@
     },
     {
       "opname" : "OpGroupDecorate",
+      "class"  : "Annotation",
       "opcode" : 74,
       "operands" : [
         { "kind" : "IdRef",                     "name" : "'Decoration Group'" },
@@ -639,6 +812,7 @@
     },
     {
       "opname" : "OpGroupMemberDecorate",
+      "class"  : "Annotation",
       "opcode" : 75,
       "operands" : [
         { "kind" : "IdRef",                                       "name" : "'Decoration Group'" },
@@ -647,6 +821,7 @@
     },
     {
       "opname" : "OpVectorExtractDynamic",
+      "class"  : "Composite",
       "opcode" : 77,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -657,6 +832,7 @@
     },
     {
       "opname" : "OpVectorInsertDynamic",
+      "class"  : "Composite",
       "opcode" : 78,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -668,6 +844,7 @@
     },
     {
       "opname" : "OpVectorShuffle",
+      "class"  : "Composite",
       "opcode" : 79,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -679,6 +856,7 @@
     },
     {
       "opname" : "OpCompositeConstruct",
+      "class"  : "Composite",
       "opcode" : 80,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -688,6 +866,7 @@
     },
     {
       "opname" : "OpCompositeExtract",
+      "class"  : "Composite",
       "opcode" : 81,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -698,6 +877,7 @@
     },
     {
       "opname" : "OpCompositeInsert",
+      "class"  : "Composite",
       "opcode" : 82,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -709,6 +889,7 @@
     },
     {
       "opname" : "OpCopyObject",
+      "class"  : "Composite",
       "opcode" : 83,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -718,6 +899,7 @@
     },
     {
       "opname" : "OpTranspose",
+      "class"  : "Composite",
       "opcode" : 84,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -728,6 +910,7 @@
     },
     {
       "opname" : "OpSampledImage",
+      "class"  : "Image",
       "opcode" : 86,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -738,6 +921,7 @@
     },
     {
       "opname" : "OpImageSampleImplicitLod",
+      "class"  : "Image",
       "opcode" : 87,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -750,6 +934,7 @@
     },
     {
       "opname" : "OpImageSampleExplicitLod",
+      "class"  : "Image",
       "opcode" : 88,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -761,6 +946,7 @@
     },
     {
       "opname" : "OpImageSampleDrefImplicitLod",
+      "class"  : "Image",
       "opcode" : 89,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -774,6 +960,7 @@
     },
     {
       "opname" : "OpImageSampleDrefExplicitLod",
+      "class"  : "Image",
       "opcode" : 90,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -787,6 +974,7 @@
     },
     {
       "opname" : "OpImageSampleProjImplicitLod",
+      "class"  : "Image",
       "opcode" : 91,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -799,6 +987,7 @@
     },
     {
       "opname" : "OpImageSampleProjExplicitLod",
+      "class"  : "Image",
       "opcode" : 92,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -811,6 +1000,7 @@
     },
     {
       "opname" : "OpImageSampleProjDrefImplicitLod",
+      "class"  : "Image",
       "opcode" : 93,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -824,6 +1014,7 @@
     },
     {
       "opname" : "OpImageSampleProjDrefExplicitLod",
+      "class"  : "Image",
       "opcode" : 94,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -837,6 +1028,7 @@
     },
     {
       "opname" : "OpImageFetch",
+      "class"  : "Image",
       "opcode" : 95,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -848,6 +1040,7 @@
     },
     {
       "opname" : "OpImageGather",
+      "class"  : "Image",
       "opcode" : 96,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -861,6 +1054,7 @@
     },
     {
       "opname" : "OpImageDrefGather",
+      "class"  : "Image",
       "opcode" : 97,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -874,6 +1068,7 @@
     },
     {
       "opname" : "OpImageRead",
+      "class"  : "Image",
       "opcode" : 98,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -885,6 +1080,7 @@
     },
     {
       "opname" : "OpImageWrite",
+      "class"  : "Image",
       "opcode" : 99,
       "operands" : [
         { "kind" : "IdRef",                             "name" : "'Image'" },
@@ -895,6 +1091,7 @@
     },
     {
       "opname" : "OpImage",
+      "class"  : "Image",
       "opcode" : 100,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -904,6 +1101,7 @@
     },
     {
       "opname" : "OpImageQueryFormat",
+      "class"  : "Image",
       "opcode" : 101,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -914,6 +1112,7 @@
     },
     {
       "opname" : "OpImageQueryOrder",
+      "class"  : "Image",
       "opcode" : 102,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -924,6 +1123,7 @@
     },
     {
       "opname" : "OpImageQuerySizeLod",
+      "class"  : "Image",
       "opcode" : 103,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -935,6 +1135,7 @@
     },
     {
       "opname" : "OpImageQuerySize",
+      "class"  : "Image",
       "opcode" : 104,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -945,6 +1146,7 @@
     },
     {
       "opname" : "OpImageQueryLod",
+      "class"  : "Image",
       "opcode" : 105,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -956,6 +1158,7 @@
     },
     {
       "opname" : "OpImageQueryLevels",
+      "class"  : "Image",
       "opcode" : 106,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -966,6 +1169,7 @@
     },
     {
       "opname" : "OpImageQuerySamples",
+      "class"  : "Image",
       "opcode" : 107,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -976,6 +1180,7 @@
     },
     {
       "opname" : "OpConvertFToU",
+      "class"  : "Conversion",
       "opcode" : 109,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -985,6 +1190,7 @@
     },
     {
       "opname" : "OpConvertFToS",
+      "class"  : "Conversion",
       "opcode" : 110,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -994,6 +1200,7 @@
     },
     {
       "opname" : "OpConvertSToF",
+      "class"  : "Conversion",
       "opcode" : 111,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -1003,6 +1210,7 @@
     },
     {
       "opname" : "OpConvertUToF",
+      "class"  : "Conversion",
       "opcode" : 112,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -1012,6 +1220,7 @@
     },
     {
       "opname" : "OpUConvert",
+      "class"  : "Conversion",
       "opcode" : 113,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -1021,6 +1230,7 @@
     },
     {
       "opname" : "OpSConvert",
+      "class"  : "Conversion",
       "opcode" : 114,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -1030,6 +1240,7 @@
     },
     {
       "opname" : "OpFConvert",
+      "class"  : "Conversion",
       "opcode" : 115,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -1039,6 +1250,7 @@
     },
     {
       "opname" : "OpQuantizeToF16",
+      "class"  : "Conversion",
       "opcode" : 116,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -1048,6 +1260,7 @@
     },
     {
       "opname" : "OpConvertPtrToU",
+      "class"  : "Conversion",
       "opcode" : 117,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -1056,11 +1269,12 @@
       ],
       "capabilities" : [
         "Addresses",
-        "PhysicalStorageBufferAddressesEXT"
+        "PhysicalStorageBufferAddresses"
       ]
     },
     {
       "opname" : "OpSatConvertSToU",
+      "class"  : "Conversion",
       "opcode" : 118,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -1071,6 +1285,7 @@
     },
     {
       "opname" : "OpSatConvertUToS",
+      "class"  : "Conversion",
       "opcode" : 119,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -1081,6 +1296,7 @@
     },
     {
       "opname" : "OpConvertUToPtr",
+      "class"  : "Conversion",
       "opcode" : 120,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -1089,11 +1305,12 @@
       ],
       "capabilities" : [
         "Addresses",
-        "PhysicalStorageBufferAddressesEXT"
+        "PhysicalStorageBufferAddresses"
       ]
     },
     {
       "opname" : "OpPtrCastToGeneric",
+      "class"  : "Conversion",
       "opcode" : 121,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -1104,6 +1321,7 @@
     },
     {
       "opname" : "OpGenericCastToPtr",
+      "class"  : "Conversion",
       "opcode" : 122,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -1114,6 +1332,7 @@
     },
     {
       "opname" : "OpGenericCastToPtrExplicit",
+      "class"  : "Conversion",
       "opcode" : 123,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -1125,6 +1344,7 @@
     },
     {
       "opname" : "OpBitcast",
+      "class"  : "Conversion",
       "opcode" : 124,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -1134,6 +1354,7 @@
     },
     {
       "opname" : "OpSNegate",
+      "class"  : "Arithmetic",
       "opcode" : 126,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -1143,6 +1364,7 @@
     },
     {
       "opname" : "OpFNegate",
+      "class"  : "Arithmetic",
       "opcode" : 127,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -1152,6 +1374,7 @@
     },
     {
       "opname" : "OpIAdd",
+      "class"  : "Arithmetic",
       "opcode" : 128,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -1162,6 +1385,7 @@
     },
     {
       "opname" : "OpFAdd",
+      "class"  : "Arithmetic",
       "opcode" : 129,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -1172,6 +1396,7 @@
     },
     {
       "opname" : "OpISub",
+      "class"  : "Arithmetic",
       "opcode" : 130,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -1182,6 +1407,7 @@
     },
     {
       "opname" : "OpFSub",
+      "class"  : "Arithmetic",
       "opcode" : 131,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -1192,6 +1418,7 @@
     },
     {
       "opname" : "OpIMul",
+      "class"  : "Arithmetic",
       "opcode" : 132,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -1202,6 +1429,7 @@
     },
     {
       "opname" : "OpFMul",
+      "class"  : "Arithmetic",
       "opcode" : 133,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -1212,6 +1440,7 @@
     },
     {
       "opname" : "OpUDiv",
+      "class"  : "Arithmetic",
       "opcode" : 134,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -1222,6 +1451,7 @@
     },
     {
       "opname" : "OpSDiv",
+      "class"  : "Arithmetic",
       "opcode" : 135,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -1232,6 +1462,7 @@
     },
     {
       "opname" : "OpFDiv",
+      "class"  : "Arithmetic",
       "opcode" : 136,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -1242,6 +1473,7 @@
     },
     {
       "opname" : "OpUMod",
+      "class"  : "Arithmetic",
       "opcode" : 137,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -1252,6 +1484,7 @@
     },
     {
       "opname" : "OpSRem",
+      "class"  : "Arithmetic",
       "opcode" : 138,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -1262,6 +1495,7 @@
     },
     {
       "opname" : "OpSMod",
+      "class"  : "Arithmetic",
       "opcode" : 139,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -1272,6 +1506,7 @@
     },
     {
       "opname" : "OpFRem",
+      "class"  : "Arithmetic",
       "opcode" : 140,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -1282,6 +1517,7 @@
     },
     {
       "opname" : "OpFMod",
+      "class"  : "Arithmetic",
       "opcode" : 141,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -1292,6 +1528,7 @@
     },
     {
       "opname" : "OpVectorTimesScalar",
+      "class"  : "Arithmetic",
       "opcode" : 142,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -1302,6 +1539,7 @@
     },
     {
       "opname" : "OpMatrixTimesScalar",
+      "class"  : "Arithmetic",
       "opcode" : 143,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -1313,6 +1551,7 @@
     },
     {
       "opname" : "OpVectorTimesMatrix",
+      "class"  : "Arithmetic",
       "opcode" : 144,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -1324,6 +1563,7 @@
     },
     {
       "opname" : "OpMatrixTimesVector",
+      "class"  : "Arithmetic",
       "opcode" : 145,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -1335,6 +1575,7 @@
     },
     {
       "opname" : "OpMatrixTimesMatrix",
+      "class"  : "Arithmetic",
       "opcode" : 146,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -1346,6 +1587,7 @@
     },
     {
       "opname" : "OpOuterProduct",
+      "class"  : "Arithmetic",
       "opcode" : 147,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -1357,6 +1599,7 @@
     },
     {
       "opname" : "OpDot",
+      "class"  : "Arithmetic",
       "opcode" : 148,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -1367,6 +1610,7 @@
     },
     {
       "opname" : "OpIAddCarry",
+      "class"  : "Arithmetic",
       "opcode" : 149,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -1377,6 +1621,7 @@
     },
     {
       "opname" : "OpISubBorrow",
+      "class"  : "Arithmetic",
       "opcode" : 150,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -1387,6 +1632,7 @@
     },
     {
       "opname" : "OpUMulExtended",
+      "class"  : "Arithmetic",
       "opcode" : 151,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -1397,6 +1643,7 @@
     },
     {
       "opname" : "OpSMulExtended",
+      "class"  : "Arithmetic",
       "opcode" : 152,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -1407,6 +1654,7 @@
     },
     {
       "opname" : "OpAny",
+      "class"  : "Relational_and_Logical",
       "opcode" : 154,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -1416,6 +1664,7 @@
     },
     {
       "opname" : "OpAll",
+      "class"  : "Relational_and_Logical",
       "opcode" : 155,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -1425,6 +1674,7 @@
     },
     {
       "opname" : "OpIsNan",
+      "class"  : "Relational_and_Logical",
       "opcode" : 156,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -1434,6 +1684,7 @@
     },
     {
       "opname" : "OpIsInf",
+      "class"  : "Relational_and_Logical",
       "opcode" : 157,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -1443,6 +1694,7 @@
     },
     {
       "opname" : "OpIsFinite",
+      "class"  : "Relational_and_Logical",
       "opcode" : 158,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -1453,6 +1705,7 @@
     },
     {
       "opname" : "OpIsNormal",
+      "class"  : "Relational_and_Logical",
       "opcode" : 159,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -1463,6 +1716,7 @@
     },
     {
       "opname" : "OpSignBitSet",
+      "class"  : "Relational_and_Logical",
       "opcode" : 160,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -1473,6 +1727,7 @@
     },
     {
       "opname" : "OpLessOrGreater",
+      "class"  : "Relational_and_Logical",
       "opcode" : 161,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -1484,6 +1739,7 @@
     },
     {
       "opname" : "OpOrdered",
+      "class"  : "Relational_and_Logical",
       "opcode" : 162,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -1495,6 +1751,7 @@
     },
     {
       "opname" : "OpUnordered",
+      "class"  : "Relational_and_Logical",
       "opcode" : 163,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -1506,6 +1763,7 @@
     },
     {
       "opname" : "OpLogicalEqual",
+      "class"  : "Relational_and_Logical",
       "opcode" : 164,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -1516,6 +1774,7 @@
     },
     {
       "opname" : "OpLogicalNotEqual",
+      "class"  : "Relational_and_Logical",
       "opcode" : 165,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -1526,6 +1785,7 @@
     },
     {
       "opname" : "OpLogicalOr",
+      "class"  : "Relational_and_Logical",
       "opcode" : 166,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -1536,6 +1796,7 @@
     },
     {
       "opname" : "OpLogicalAnd",
+      "class"  : "Relational_and_Logical",
       "opcode" : 167,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -1546,6 +1807,7 @@
     },
     {
       "opname" : "OpLogicalNot",
+      "class"  : "Relational_and_Logical",
       "opcode" : 168,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -1555,6 +1817,7 @@
     },
     {
       "opname" : "OpSelect",
+      "class"  : "Relational_and_Logical",
       "opcode" : 169,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -1566,6 +1829,7 @@
     },
     {
       "opname" : "OpIEqual",
+      "class"  : "Relational_and_Logical",
       "opcode" : 170,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -1576,6 +1840,7 @@
     },
     {
       "opname" : "OpINotEqual",
+      "class"  : "Relational_and_Logical",
       "opcode" : 171,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -1586,6 +1851,7 @@
     },
     {
       "opname" : "OpUGreaterThan",
+      "class"  : "Relational_and_Logical",
       "opcode" : 172,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -1596,6 +1862,7 @@
     },
     {
       "opname" : "OpSGreaterThan",
+      "class"  : "Relational_and_Logical",
       "opcode" : 173,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -1606,6 +1873,7 @@
     },
     {
       "opname" : "OpUGreaterThanEqual",
+      "class"  : "Relational_and_Logical",
       "opcode" : 174,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -1616,6 +1884,7 @@
     },
     {
       "opname" : "OpSGreaterThanEqual",
+      "class"  : "Relational_and_Logical",
       "opcode" : 175,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -1626,6 +1895,7 @@
     },
     {
       "opname" : "OpULessThan",
+      "class"  : "Relational_and_Logical",
       "opcode" : 176,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -1636,6 +1906,7 @@
     },
     {
       "opname" : "OpSLessThan",
+      "class"  : "Relational_and_Logical",
       "opcode" : 177,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -1646,6 +1917,7 @@
     },
     {
       "opname" : "OpULessThanEqual",
+      "class"  : "Relational_and_Logical",
       "opcode" : 178,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -1656,6 +1928,7 @@
     },
     {
       "opname" : "OpSLessThanEqual",
+      "class"  : "Relational_and_Logical",
       "opcode" : 179,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -1666,6 +1939,7 @@
     },
     {
       "opname" : "OpFOrdEqual",
+      "class"  : "Relational_and_Logical",
       "opcode" : 180,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -1676,6 +1950,7 @@
     },
     {
       "opname" : "OpFUnordEqual",
+      "class"  : "Relational_and_Logical",
       "opcode" : 181,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -1686,6 +1961,7 @@
     },
     {
       "opname" : "OpFOrdNotEqual",
+      "class"  : "Relational_and_Logical",
       "opcode" : 182,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -1696,6 +1972,7 @@
     },
     {
       "opname" : "OpFUnordNotEqual",
+      "class"  : "Relational_and_Logical",
       "opcode" : 183,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -1706,6 +1983,7 @@
     },
     {
       "opname" : "OpFOrdLessThan",
+      "class"  : "Relational_and_Logical",
       "opcode" : 184,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -1716,6 +1994,7 @@
     },
     {
       "opname" : "OpFUnordLessThan",
+      "class"  : "Relational_and_Logical",
       "opcode" : 185,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -1726,6 +2005,7 @@
     },
     {
       "opname" : "OpFOrdGreaterThan",
+      "class"  : "Relational_and_Logical",
       "opcode" : 186,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -1736,6 +2016,7 @@
     },
     {
       "opname" : "OpFUnordGreaterThan",
+      "class"  : "Relational_and_Logical",
       "opcode" : 187,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -1746,6 +2027,7 @@
     },
     {
       "opname" : "OpFOrdLessThanEqual",
+      "class"  : "Relational_and_Logical",
       "opcode" : 188,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -1756,6 +2038,7 @@
     },
     {
       "opname" : "OpFUnordLessThanEqual",
+      "class"  : "Relational_and_Logical",
       "opcode" : 189,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -1766,6 +2049,7 @@
     },
     {
       "opname" : "OpFOrdGreaterThanEqual",
+      "class"  : "Relational_and_Logical",
       "opcode" : 190,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -1776,6 +2060,7 @@
     },
     {
       "opname" : "OpFUnordGreaterThanEqual",
+      "class"  : "Relational_and_Logical",
       "opcode" : 191,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -1786,6 +2071,7 @@
     },
     {
       "opname" : "OpShiftRightLogical",
+      "class"  : "Bit",
       "opcode" : 194,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -1796,6 +2082,7 @@
     },
     {
       "opname" : "OpShiftRightArithmetic",
+      "class"  : "Bit",
       "opcode" : 195,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -1806,6 +2093,7 @@
     },
     {
       "opname" : "OpShiftLeftLogical",
+      "class"  : "Bit",
       "opcode" : 196,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -1816,6 +2104,7 @@
     },
     {
       "opname" : "OpBitwiseOr",
+      "class"  : "Bit",
       "opcode" : 197,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -1826,6 +2115,7 @@
     },
     {
       "opname" : "OpBitwiseXor",
+      "class"  : "Bit",
       "opcode" : 198,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -1836,6 +2126,7 @@
     },
     {
       "opname" : "OpBitwiseAnd",
+      "class"  : "Bit",
       "opcode" : 199,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -1846,6 +2137,7 @@
     },
     {
       "opname" : "OpNot",
+      "class"  : "Bit",
       "opcode" : 200,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -1855,6 +2147,7 @@
     },
     {
       "opname" : "OpBitFieldInsert",
+      "class"  : "Bit",
       "opcode" : 201,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -1868,6 +2161,7 @@
     },
     {
       "opname" : "OpBitFieldSExtract",
+      "class"  : "Bit",
       "opcode" : 202,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -1880,6 +2174,7 @@
     },
     {
       "opname" : "OpBitFieldUExtract",
+      "class"  : "Bit",
       "opcode" : 203,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -1892,6 +2187,7 @@
     },
     {
       "opname" : "OpBitReverse",
+      "class"  : "Bit",
       "opcode" : 204,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -1902,6 +2198,7 @@
     },
     {
       "opname" : "OpBitCount",
+      "class"  : "Bit",
       "opcode" : 205,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -1911,6 +2208,7 @@
     },
     {
       "opname" : "OpDPdx",
+      "class"  : "Derivative",
       "opcode" : 207,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -1921,6 +2219,7 @@
     },
     {
       "opname" : "OpDPdy",
+      "class"  : "Derivative",
       "opcode" : 208,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -1931,6 +2230,7 @@
     },
     {
       "opname" : "OpFwidth",
+      "class"  : "Derivative",
       "opcode" : 209,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -1941,6 +2241,7 @@
     },
     {
       "opname" : "OpDPdxFine",
+      "class"  : "Derivative",
       "opcode" : 210,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -1951,6 +2252,7 @@
     },
     {
       "opname" : "OpDPdyFine",
+      "class"  : "Derivative",
       "opcode" : 211,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -1961,6 +2263,7 @@
     },
     {
       "opname" : "OpFwidthFine",
+      "class"  : "Derivative",
       "opcode" : 212,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -1971,6 +2274,7 @@
     },
     {
       "opname" : "OpDPdxCoarse",
+      "class"  : "Derivative",
       "opcode" : 213,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -1981,6 +2285,7 @@
     },
     {
       "opname" : "OpDPdyCoarse",
+      "class"  : "Derivative",
       "opcode" : 214,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -1991,6 +2296,7 @@
     },
     {
       "opname" : "OpFwidthCoarse",
+      "class"  : "Derivative",
       "opcode" : 215,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -2001,16 +2307,19 @@
     },
     {
       "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'" }
@@ -2019,6 +2328,7 @@
     },
     {
       "opname" : "OpEndStreamPrimitive",
+      "class"  : "Primitive",
       "opcode" : 221,
       "operands" : [
         { "kind" : "IdRef", "name" : "'Stream'" }
@@ -2027,6 +2337,7 @@
     },
     {
       "opname" : "OpControlBarrier",
+      "class"  : "Barrier",
       "opcode" : 224,
       "operands" : [
         { "kind" : "IdScope",           "name" : "'Execution'" },
@@ -2036,6 +2347,7 @@
     },
     {
       "opname" : "OpMemoryBarrier",
+      "class"  : "Barrier",
       "opcode" : 225,
       "operands" : [
         { "kind" : "IdScope",           "name" : "'Memory'" },
@@ -2044,6 +2356,7 @@
     },
     {
       "opname" : "OpAtomicLoad",
+      "class"  : "Atomic",
       "opcode" : 227,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -2055,6 +2368,7 @@
     },
     {
       "opname" : "OpAtomicStore",
+      "class"  : "Atomic",
       "opcode" : 228,
       "operands" : [
         { "kind" : "IdRef",             "name" : "'Pointer'" },
@@ -2065,6 +2379,7 @@
     },
     {
       "opname" : "OpAtomicExchange",
+      "class"  : "Atomic",
       "opcode" : 229,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -2077,6 +2392,7 @@
     },
     {
       "opname" : "OpAtomicCompareExchange",
+      "class"  : "Atomic",
       "opcode" : 230,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -2091,6 +2407,7 @@
     },
     {
       "opname" : "OpAtomicCompareExchangeWeak",
+      "class"  : "Atomic",
       "opcode" : 231,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -2107,6 +2424,7 @@
     },
     {
       "opname" : "OpAtomicIIncrement",
+      "class"  : "Atomic",
       "opcode" : 232,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -2118,6 +2436,7 @@
     },
     {
       "opname" : "OpAtomicIDecrement",
+      "class"  : "Atomic",
       "opcode" : 233,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -2129,6 +2448,7 @@
     },
     {
       "opname" : "OpAtomicIAdd",
+      "class"  : "Atomic",
       "opcode" : 234,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -2141,6 +2461,7 @@
     },
     {
       "opname" : "OpAtomicISub",
+      "class"  : "Atomic",
       "opcode" : 235,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -2153,6 +2474,7 @@
     },
     {
       "opname" : "OpAtomicSMin",
+      "class"  : "Atomic",
       "opcode" : 236,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -2165,6 +2487,7 @@
     },
     {
       "opname" : "OpAtomicUMin",
+      "class"  : "Atomic",
       "opcode" : 237,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -2177,6 +2500,7 @@
     },
     {
       "opname" : "OpAtomicSMax",
+      "class"  : "Atomic",
       "opcode" : 238,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -2189,6 +2513,7 @@
     },
     {
       "opname" : "OpAtomicUMax",
+      "class"  : "Atomic",
       "opcode" : 239,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -2201,6 +2526,7 @@
     },
     {
       "opname" : "OpAtomicAnd",
+      "class"  : "Atomic",
       "opcode" : 240,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -2213,6 +2539,7 @@
     },
     {
       "opname" : "OpAtomicOr",
+      "class"  : "Atomic",
       "opcode" : 241,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -2225,6 +2552,7 @@
     },
     {
       "opname" : "OpAtomicXor",
+      "class"  : "Atomic",
       "opcode" : 242,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -2237,6 +2565,7 @@
     },
     {
       "opname" : "OpPhi",
+      "class"  : "Control-Flow",
       "opcode" : 245,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -2246,6 +2575,7 @@
     },
     {
       "opname" : "OpLoopMerge",
+      "class"  : "Control-Flow",
       "opcode" : 246,
       "operands" : [
         { "kind" : "IdRef",       "name" : "'Merge Block'" },
@@ -2255,6 +2585,7 @@
     },
     {
       "opname" : "OpSelectionMerge",
+      "class"  : "Control-Flow",
       "opcode" : 247,
       "operands" : [
         { "kind" : "IdRef",            "name" : "'Merge Block'" },
@@ -2263,6 +2594,7 @@
     },
     {
       "opname" : "OpLabel",
+      "class"  : "Control-Flow",
       "opcode" : 248,
       "operands" : [
         { "kind" : "IdResult" }
@@ -2270,6 +2602,7 @@
     },
     {
       "opname" : "OpBranch",
+      "class"  : "Control-Flow",
       "opcode" : 249,
       "operands" : [
         { "kind" : "IdRef", "name" : "'Target Label'" }
@@ -2277,6 +2610,7 @@
     },
     {
       "opname" : "OpBranchConditional",
+      "class"  : "Control-Flow",
       "opcode" : 250,
       "operands" : [
         { "kind" : "IdRef",                              "name" : "'Condition'" },
@@ -2287,6 +2621,7 @@
     },
     {
       "opname" : "OpSwitch",
+      "class"  : "Control-Flow",
       "opcode" : 251,
       "operands" : [
         { "kind" : "IdRef",                                       "name" : "'Selector'" },
@@ -2296,15 +2631,18 @@
     },
     {
       "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'" }
@@ -2312,10 +2650,12 @@
     },
     {
       "opname" : "OpUnreachable",
+      "class"  : "Control-Flow",
       "opcode" : 255
     },
     {
       "opname" : "OpLifetimeStart",
+      "class"  : "Control-Flow",
       "opcode" : 256,
       "operands" : [
         { "kind" : "IdRef",          "name" : "'Pointer'" },
@@ -2325,6 +2665,7 @@
     },
     {
       "opname" : "OpLifetimeStop",
+      "class"  : "Control-Flow",
       "opcode" : 257,
       "operands" : [
         { "kind" : "IdRef",          "name" : "'Pointer'" },
@@ -2334,6 +2675,7 @@
     },
     {
       "opname" : "OpGroupAsyncCopy",
+      "class"  : "Group",
       "opcode" : 259,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -2349,6 +2691,7 @@
     },
     {
       "opname" : "OpGroupWaitEvents",
+      "class"  : "Group",
       "opcode" : 260,
       "operands" : [
         { "kind" : "IdScope", "name" : "'Execution'" },
@@ -2359,6 +2702,7 @@
     },
     {
       "opname" : "OpGroupAll",
+      "class"  : "Group",
       "opcode" : 261,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -2370,6 +2714,7 @@
     },
     {
       "opname" : "OpGroupAny",
+      "class"  : "Group",
       "opcode" : 262,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -2381,6 +2726,7 @@
     },
     {
       "opname" : "OpGroupBroadcast",
+      "class"  : "Group",
       "opcode" : 263,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -2393,6 +2739,7 @@
     },
     {
       "opname" : "OpGroupIAdd",
+      "class"  : "Group",
       "opcode" : 264,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -2405,6 +2752,7 @@
     },
     {
       "opname" : "OpGroupFAdd",
+      "class"  : "Group",
       "opcode" : 265,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -2417,6 +2765,7 @@
     },
     {
       "opname" : "OpGroupFMin",
+      "class"  : "Group",
       "opcode" : 266,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -2429,6 +2778,7 @@
     },
     {
       "opname" : "OpGroupUMin",
+      "class"  : "Group",
       "opcode" : 267,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -2441,6 +2791,7 @@
     },
     {
       "opname" : "OpGroupSMin",
+      "class"  : "Group",
       "opcode" : 268,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -2453,6 +2804,7 @@
     },
     {
       "opname" : "OpGroupFMax",
+      "class"  : "Group",
       "opcode" : 269,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -2465,6 +2817,7 @@
     },
     {
       "opname" : "OpGroupUMax",
+      "class"  : "Group",
       "opcode" : 270,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -2477,6 +2830,7 @@
     },
     {
       "opname" : "OpGroupSMax",
+      "class"  : "Group",
       "opcode" : 271,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -2489,6 +2843,7 @@
     },
     {
       "opname" : "OpReadPipe",
+      "class"  : "Pipe",
       "opcode" : 274,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -2502,6 +2857,7 @@
     },
     {
       "opname" : "OpWritePipe",
+      "class"  : "Pipe",
       "opcode" : 275,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -2515,6 +2871,7 @@
     },
     {
       "opname" : "OpReservedReadPipe",
+      "class"  : "Pipe",
       "opcode" : 276,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -2530,6 +2887,7 @@
     },
     {
       "opname" : "OpReservedWritePipe",
+      "class"  : "Pipe",
       "opcode" : 277,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -2545,6 +2903,7 @@
     },
     {
       "opname" : "OpReserveReadPipePackets",
+      "class"  : "Pipe",
       "opcode" : 278,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -2558,6 +2917,7 @@
     },
     {
       "opname" : "OpReserveWritePipePackets",
+      "class"  : "Pipe",
       "opcode" : 279,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -2571,6 +2931,7 @@
     },
     {
       "opname" : "OpCommitReadPipe",
+      "class"  : "Pipe",
       "opcode" : 280,
       "operands" : [
         { "kind" : "IdRef", "name" : "'Pipe'" },
@@ -2582,6 +2943,7 @@
     },
     {
       "opname" : "OpCommitWritePipe",
+      "class"  : "Pipe",
       "opcode" : 281,
       "operands" : [
         { "kind" : "IdRef", "name" : "'Pipe'" },
@@ -2593,6 +2955,7 @@
     },
     {
       "opname" : "OpIsValidReserveId",
+      "class"  : "Pipe",
       "opcode" : 282,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -2603,6 +2966,7 @@
     },
     {
       "opname" : "OpGetNumPipePackets",
+      "class"  : "Pipe",
       "opcode" : 283,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -2615,6 +2979,7 @@
     },
     {
       "opname" : "OpGetMaxPipePackets",
+      "class"  : "Pipe",
       "opcode" : 284,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -2627,6 +2992,7 @@
     },
     {
       "opname" : "OpGroupReserveReadPipePackets",
+      "class"  : "Pipe",
       "opcode" : 285,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -2641,6 +3007,7 @@
     },
     {
       "opname" : "OpGroupReserveWritePipePackets",
+      "class"  : "Pipe",
       "opcode" : 286,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -2655,6 +3022,7 @@
     },
     {
       "opname" : "OpGroupCommitReadPipe",
+      "class"  : "Pipe",
       "opcode" : 287,
       "operands" : [
         { "kind" : "IdScope", "name" : "'Execution'" },
@@ -2667,6 +3035,7 @@
     },
     {
       "opname" : "OpGroupCommitWritePipe",
+      "class"  : "Pipe",
       "opcode" : 288,
       "operands" : [
         { "kind" : "IdScope", "name" : "'Execution'" },
@@ -2679,6 +3048,7 @@
     },
     {
       "opname" : "OpEnqueueMarker",
+      "class"  : "Device-Side_Enqueue",
       "opcode" : 291,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -2692,6 +3062,7 @@
     },
     {
       "opname" : "OpEnqueueKernel",
+      "class"  : "Device-Side_Enqueue",
       "opcode" : 292,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -2712,6 +3083,7 @@
     },
     {
       "opname" : "OpGetKernelNDrangeSubGroupCount",
+      "class"  : "Device-Side_Enqueue",
       "opcode" : 293,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -2726,6 +3098,7 @@
     },
     {
       "opname" : "OpGetKernelNDrangeMaxSubGroupSize",
+      "class"  : "Device-Side_Enqueue",
       "opcode" : 294,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -2740,6 +3113,7 @@
     },
     {
       "opname" : "OpGetKernelWorkGroupSize",
+      "class"  : "Device-Side_Enqueue",
       "opcode" : 295,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -2753,6 +3127,7 @@
     },
     {
       "opname" : "OpGetKernelPreferredWorkGroupSizeMultiple",
+      "class"  : "Device-Side_Enqueue",
       "opcode" : 296,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -2766,6 +3141,7 @@
     },
     {
       "opname" : "OpRetainEvent",
+      "class"  : "Device-Side_Enqueue",
       "opcode" : 297,
       "operands" : [
         { "kind" : "IdRef", "name" : "'Event'" }
@@ -2774,6 +3150,7 @@
     },
     {
       "opname" : "OpReleaseEvent",
+      "class"  : "Device-Side_Enqueue",
       "opcode" : 298,
       "operands" : [
         { "kind" : "IdRef", "name" : "'Event'" }
@@ -2782,6 +3159,7 @@
     },
     {
       "opname" : "OpCreateUserEvent",
+      "class"  : "Device-Side_Enqueue",
       "opcode" : 299,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -2791,6 +3169,7 @@
     },
     {
       "opname" : "OpIsValidEvent",
+      "class"  : "Device-Side_Enqueue",
       "opcode" : 300,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -2801,6 +3180,7 @@
     },
     {
       "opname" : "OpSetUserEventStatus",
+      "class"  : "Device-Side_Enqueue",
       "opcode" : 301,
       "operands" : [
         { "kind" : "IdRef", "name" : "'Event'" },
@@ -2810,6 +3190,7 @@
     },
     {
       "opname" : "OpCaptureEventProfilingInfo",
+      "class"  : "Device-Side_Enqueue",
       "opcode" : 302,
       "operands" : [
         { "kind" : "IdRef", "name" : "'Event'" },
@@ -2820,6 +3201,7 @@
     },
     {
       "opname" : "OpGetDefaultQueue",
+      "class"  : "Device-Side_Enqueue",
       "opcode" : 303,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -2829,6 +3211,7 @@
     },
     {
       "opname" : "OpBuildNDRange",
+      "class"  : "Device-Side_Enqueue",
       "opcode" : 304,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -2841,6 +3224,7 @@
     },
     {
       "opname" : "OpImageSparseSampleImplicitLod",
+      "class"  : "Image",
       "opcode" : 305,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -2853,6 +3237,7 @@
     },
     {
       "opname" : "OpImageSparseSampleExplicitLod",
+      "class"  : "Image",
       "opcode" : 306,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -2865,6 +3250,7 @@
     },
     {
       "opname" : "OpImageSparseSampleDrefImplicitLod",
+      "class"  : "Image",
       "opcode" : 307,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -2878,6 +3264,7 @@
     },
     {
       "opname" : "OpImageSparseSampleDrefExplicitLod",
+      "class"  : "Image",
       "opcode" : 308,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -2891,6 +3278,7 @@
     },
     {
       "opname" : "OpImageSparseSampleProjImplicitLod",
+      "class"  : "Image",
       "opcode" : 309,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -2904,6 +3292,7 @@
     },
     {
       "opname" : "OpImageSparseSampleProjExplicitLod",
+      "class"  : "Image",
       "opcode" : 310,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -2917,6 +3306,7 @@
     },
     {
       "opname" : "OpImageSparseSampleProjDrefImplicitLod",
+      "class"  : "Image",
       "opcode" : 311,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -2931,6 +3321,7 @@
     },
     {
       "opname" : "OpImageSparseSampleProjDrefExplicitLod",
+      "class"  : "Image",
       "opcode" : 312,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -2945,6 +3336,7 @@
     },
     {
       "opname" : "OpImageSparseFetch",
+      "class"  : "Image",
       "opcode" : 313,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -2957,6 +3349,7 @@
     },
     {
       "opname" : "OpImageSparseGather",
+      "class"  : "Image",
       "opcode" : 314,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -2970,6 +3363,7 @@
     },
     {
       "opname" : "OpImageSparseDrefGather",
+      "class"  : "Image",
       "opcode" : 315,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -2983,6 +3377,7 @@
     },
     {
       "opname" : "OpImageSparseTexelsResident",
+      "class"  : "Image",
       "opcode" : 316,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -2993,10 +3388,12 @@
     },
     {
       "opname" : "OpNoLine",
+      "class"  : "Debug",
       "opcode" : 317
     },
     {
       "opname" : "OpAtomicFlagTestAndSet",
+      "class"  : "Atomic",
       "opcode" : 318,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -3009,6 +3406,7 @@
     },
     {
       "opname" : "OpAtomicFlagClear",
+      "class"  : "Atomic",
       "opcode" : 319,
       "operands" : [
         { "kind" : "IdRef",             "name" : "'Pointer'" },
@@ -3019,6 +3417,7 @@
     },
     {
       "opname" : "OpImageSparseRead",
+      "class"  : "Image",
       "opcode" : 320,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -3031,6 +3430,7 @@
     },
     {
       "opname" : "OpSizeOf",
+      "class"  : "Miscellaneous",
       "opcode" : 321,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -3042,6 +3442,7 @@
     },
     {
       "opname" : "OpTypePipeStorage",
+      "class"  : "Type-Declaration",
       "opcode" : 322,
       "operands" : [
         { "kind" : "IdResult" }
@@ -3051,6 +3452,7 @@
     },
     {
       "opname" : "OpConstantPipeStorage",
+      "class"  : "Pipe",
       "opcode" : 323,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -3064,6 +3466,7 @@
     },
     {
       "opname" : "OpCreatePipeFromPipeStorage",
+      "class"  : "Pipe",
       "opcode" : 324,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -3075,6 +3478,7 @@
     },
     {
       "opname" : "OpGetKernelLocalSizeForSubgroupCount",
+      "class"  : "Device-Side_Enqueue",
       "opcode" : 325,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -3090,6 +3494,7 @@
     },
     {
       "opname" : "OpGetKernelMaxNumSubgroups",
+      "class"  : "Device-Side_Enqueue",
       "opcode" : 326,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -3104,6 +3509,7 @@
     },
     {
       "opname" : "OpTypeNamedBarrier",
+      "class"  : "Type-Declaration",
       "opcode" : 327,
       "operands" : [
         { "kind" : "IdResult" }
@@ -3113,6 +3519,7 @@
     },
     {
       "opname" : "OpNamedBarrierInitialize",
+      "class"  : "Barrier",
       "opcode" : 328,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -3124,6 +3531,7 @@
     },
     {
       "opname" : "OpMemoryNamedBarrier",
+      "class"  : "Barrier",
       "opcode" : 329,
       "operands" : [
         { "kind" : "IdRef", "name" : "'Named Barrier'" },
@@ -3135,6 +3543,7 @@
     },
     {
       "opname" : "OpModuleProcessed",
+      "class"  : "Debug",
       "opcode" : 330,
       "operands" : [
         { "kind" : "LiteralString", "name" : "'Process'" }
@@ -3143,6 +3552,7 @@
     },
     {
       "opname" : "OpExecutionModeId",
+      "class"  : "Mode-Setting",
       "opcode" : 331,
       "operands" : [
         { "kind" : "IdRef", "name" : "'Entry Point'" },
@@ -3152,6 +3562,7 @@
     },
     {
       "opname" : "OpDecorateId",
+      "class"  : "Annotation",
       "opcode" : 332,
       "operands" : [
         { "kind" : "IdRef", "name" : "'Target'" },
@@ -3162,6 +3573,7 @@
     },
     {
       "opname" : "OpGroupNonUniformElect",
+      "class"  : "Non-Uniform",
       "opcode" : 333,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -3173,6 +3585,7 @@
     },
     {
       "opname" : "OpGroupNonUniformAll",
+      "class"  : "Non-Uniform",
       "opcode" : 334,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -3185,6 +3598,7 @@
     },
     {
       "opname" : "OpGroupNonUniformAny",
+      "class"  : "Non-Uniform",
       "opcode" : 335,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -3197,6 +3611,7 @@
     },
     {
       "opname" : "OpGroupNonUniformAllEqual",
+      "class"  : "Non-Uniform",
       "opcode" : 336,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -3209,6 +3624,7 @@
     },
     {
       "opname" : "OpGroupNonUniformBroadcast",
+      "class"  : "Non-Uniform",
       "opcode" : 337,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -3222,6 +3638,7 @@
     },
     {
       "opname" : "OpGroupNonUniformBroadcastFirst",
+      "class"  : "Non-Uniform",
       "opcode" : 338,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -3234,6 +3651,7 @@
     },
     {
       "opname" : "OpGroupNonUniformBallot",
+      "class"  : "Non-Uniform",
       "opcode" : 339,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -3246,6 +3664,7 @@
     },
     {
       "opname" : "OpGroupNonUniformInverseBallot",
+      "class"  : "Non-Uniform",
       "opcode" : 340,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -3258,6 +3677,7 @@
     },
     {
       "opname" : "OpGroupNonUniformBallotBitExtract",
+      "class"  : "Non-Uniform",
       "opcode" : 341,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -3271,6 +3691,7 @@
     },
     {
       "opname" : "OpGroupNonUniformBallotBitCount",
+      "class"  : "Non-Uniform",
       "opcode" : 342,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -3284,6 +3705,7 @@
     },
     {
       "opname" : "OpGroupNonUniformBallotFindLSB",
+      "class"  : "Non-Uniform",
       "opcode" : 343,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -3296,6 +3718,7 @@
     },
     {
       "opname" : "OpGroupNonUniformBallotFindMSB",
+      "class"  : "Non-Uniform",
       "opcode" : 344,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -3308,6 +3731,7 @@
     },
     {
       "opname" : "OpGroupNonUniformShuffle",
+      "class"  : "Non-Uniform",
       "opcode" : 345,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -3321,6 +3745,7 @@
     },
     {
       "opname" : "OpGroupNonUniformShuffleXor",
+      "class"  : "Non-Uniform",
       "opcode" : 346,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -3334,6 +3759,7 @@
     },
     {
       "opname" : "OpGroupNonUniformShuffleUp",
+      "class"  : "Non-Uniform",
       "opcode" : 347,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -3347,6 +3773,7 @@
     },
     {
       "opname" : "OpGroupNonUniformShuffleDown",
+      "class"  : "Non-Uniform",
       "opcode" : 348,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -3360,6 +3787,7 @@
     },
     {
       "opname" : "OpGroupNonUniformIAdd",
+      "class"  : "Non-Uniform",
       "opcode" : 349,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -3374,6 +3802,7 @@
     },
     {
       "opname" : "OpGroupNonUniformFAdd",
+      "class"  : "Non-Uniform",
       "opcode" : 350,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -3388,6 +3817,7 @@
     },
     {
       "opname" : "OpGroupNonUniformIMul",
+      "class"  : "Non-Uniform",
       "opcode" : 351,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -3402,6 +3832,7 @@
     },
     {
       "opname" : "OpGroupNonUniformFMul",
+      "class"  : "Non-Uniform",
       "opcode" : 352,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -3416,6 +3847,7 @@
     },
     {
       "opname" : "OpGroupNonUniformSMin",
+      "class"  : "Non-Uniform",
       "opcode" : 353,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -3430,6 +3862,7 @@
     },
     {
       "opname" : "OpGroupNonUniformUMin",
+      "class"  : "Non-Uniform",
       "opcode" : 354,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -3444,6 +3877,7 @@
     },
     {
       "opname" : "OpGroupNonUniformFMin",
+      "class"  : "Non-Uniform",
       "opcode" : 355,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -3458,6 +3892,7 @@
     },
     {
       "opname" : "OpGroupNonUniformSMax",
+      "class"  : "Non-Uniform",
       "opcode" : 356,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -3472,6 +3907,7 @@
     },
     {
       "opname" : "OpGroupNonUniformUMax",
+      "class"  : "Non-Uniform",
       "opcode" : 357,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -3486,6 +3922,7 @@
     },
     {
       "opname" : "OpGroupNonUniformFMax",
+      "class"  : "Non-Uniform",
       "opcode" : 358,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -3500,6 +3937,7 @@
     },
     {
       "opname" : "OpGroupNonUniformBitwiseAnd",
+      "class"  : "Non-Uniform",
       "opcode" : 359,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -3514,6 +3952,7 @@
     },
     {
       "opname" : "OpGroupNonUniformBitwiseOr",
+      "class"  : "Non-Uniform",
       "opcode" : 360,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -3528,6 +3967,7 @@
     },
     {
       "opname" : "OpGroupNonUniformBitwiseXor",
+      "class"  : "Non-Uniform",
       "opcode" : 361,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -3542,6 +3982,7 @@
     },
     {
       "opname" : "OpGroupNonUniformLogicalAnd",
+      "class"  : "Non-Uniform",
       "opcode" : 362,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -3556,6 +3997,7 @@
     },
     {
       "opname" : "OpGroupNonUniformLogicalOr",
+      "class"  : "Non-Uniform",
       "opcode" : 363,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -3570,6 +4012,7 @@
     },
     {
       "opname" : "OpGroupNonUniformLogicalXor",
+      "class"  : "Non-Uniform",
       "opcode" : 364,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -3584,6 +4027,7 @@
     },
     {
       "opname" : "OpGroupNonUniformQuadBroadcast",
+      "class"  : "Non-Uniform",
       "opcode" : 365,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -3597,6 +4041,7 @@
     },
     {
       "opname" : "OpGroupNonUniformQuadSwap",
+      "class"  : "Non-Uniform",
       "opcode" : 366,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -3610,6 +4055,7 @@
     },
     {
       "opname" : "OpCopyLogical",
+      "class"  : "Composite",
       "opcode" : 400,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -3620,6 +4066,7 @@
     },
     {
       "opname" : "OpPtrEqual",
+      "class"  : "Memory",
       "opcode" : 401,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -3631,6 +4078,7 @@
     },
     {
       "opname" : "OpPtrNotEqual",
+      "class"  : "Memory",
       "opcode" : 402,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -3642,6 +4090,7 @@
     },
     {
       "opname" : "OpPtrDiff",
+      "class"  : "Memory",
       "opcode" : 403,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -3654,6 +4103,7 @@
     },
     {
       "opname" : "OpSubgroupBallotKHR",
+      "class"  : "Group",
       "opcode" : 4421,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -3666,6 +4116,7 @@
     },
     {
       "opname" : "OpSubgroupFirstInvocationKHR",
+      "class"  : "Group",
       "opcode" : 4422,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -3678,6 +4129,7 @@
     },
     {
       "opname" : "OpSubgroupAllKHR",
+      "class"  : "Group",
       "opcode" : 4428,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -3692,6 +4144,7 @@
     },
     {
       "opname" : "OpSubgroupAnyKHR",
+      "class"  : "Group",
       "opcode" : 4429,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -3706,6 +4159,7 @@
     },
     {
       "opname" : "OpSubgroupAllEqualKHR",
+      "class"  : "Group",
       "opcode" : 4430,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -3720,6 +4174,7 @@
     },
     {
       "opname" : "OpSubgroupReadInvocationKHR",
+      "class"  : "Group",
       "opcode" : 4432,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -3733,6 +4188,7 @@
     },
     {
       "opname" : "OpGroupIAddNonUniformAMD",
+      "class"  : "Group",
       "opcode" : 5000,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -3747,6 +4203,7 @@
     },
     {
       "opname" : "OpGroupFAddNonUniformAMD",
+      "class"  : "Group",
       "opcode" : 5001,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -3761,6 +4218,7 @@
     },
     {
       "opname" : "OpGroupFMinNonUniformAMD",
+      "class"  : "Group",
       "opcode" : 5002,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -3775,6 +4233,7 @@
     },
     {
       "opname" : "OpGroupUMinNonUniformAMD",
+      "class"  : "Group",
       "opcode" : 5003,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -3789,6 +4248,7 @@
     },
     {
       "opname" : "OpGroupSMinNonUniformAMD",
+      "class"  : "Group",
       "opcode" : 5004,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -3803,6 +4263,7 @@
     },
     {
       "opname" : "OpGroupFMaxNonUniformAMD",
+      "class"  : "Group",
       "opcode" : 5005,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -3817,6 +4278,7 @@
     },
     {
       "opname" : "OpGroupUMaxNonUniformAMD",
+      "class"  : "Group",
       "opcode" : 5006,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -3831,6 +4293,7 @@
     },
     {
       "opname" : "OpGroupSMaxNonUniformAMD",
+      "class"  : "Group",
       "opcode" : 5007,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -3845,6 +4308,7 @@
     },
     {
       "opname" : "OpFragmentMaskFetchAMD",
+      "class"  : "Reserved",
       "opcode" : 5011,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -3858,6 +4322,7 @@
     },
     {
       "opname" : "OpFragmentFetchAMD",
+      "class"  : "Reserved",
       "opcode" : 5012,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -3872,6 +4337,7 @@
     },
     {
       "opname" : "OpReadClockKHR",
+      "class"  : "Reserved",
       "opcode" : 5056,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -3884,6 +4350,7 @@
     },
     {
       "opname" : "OpImageSampleFootprintNV",
+      "class"  : "Image",
       "opcode" : 5283,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -3900,6 +4367,7 @@
     },
     {
       "opname" : "OpGroupNonUniformPartitionNV",
+      "class"  : "Non-Uniform",
       "opcode" : 5296,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -3912,6 +4380,7 @@
     },
     {
       "opname" : "OpWritePackedPrimitiveIndices4x8NV",
+      "class"  : "Reserved",
       "opcode" : 5299,
       "operands" : [
         { "kind" : "IdRef", "name" : "'Index Offset'" },
@@ -3923,6 +4392,7 @@
     },
     {
       "opname" : "OpReportIntersectionNV",
+      "class"  : "Reserved",
       "opcode" : 5334,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -3931,24 +4401,30 @@
         { "kind" : "IdRef", "name" : "'HitKind'" }
       ],
       "capabilities" : [ "RayTracingNV" ],
-      "extensions" : [ "SPV_NV_ray_tracing" ]
+      "extensions" : [ "SPV_NV_ray_tracing" ],
+      "version" : "None"
     },
     {
       "opname" : "OpIgnoreIntersectionNV",
+      "class"  : "Reserved",
       "opcode" : 5335,
 
       "capabilities" : [ "RayTracingNV" ],
-      "extensions" : [ "SPV_NV_ray_tracing" ]
+      "extensions" : [ "SPV_NV_ray_tracing" ],
+      "version" : "None"
     },
     {
       "opname" : "OpTerminateRayNV",
+      "class"  : "Reserved",
       "opcode" : 5336,
 
       "capabilities" : [ "RayTracingNV" ],
-      "extensions" : [ "SPV_NV_ray_tracing" ]
+      "extensions" : [ "SPV_NV_ray_tracing" ],
+      "version" : "None"
     },
     {
       "opname" : "OpTraceNV",
+      "class"  : "Reserved",
       "opcode" : 5337,
       "operands" : [
 
@@ -3965,19 +4441,23 @@
         { "kind" : "IdRef", "name" : "'PayloadId'" }
       ],
       "capabilities" : [ "RayTracingNV" ],
-      "extensions" : [ "SPV_NV_ray_tracing" ]
+      "extensions" : [ "SPV_NV_ray_tracing" ],
+      "version" : "None"
     },
     {
       "opname" : "OpTypeAccelerationStructureNV",
+      "class"  : "Reserved",
       "opcode" : 5341,
       "operands" : [
         { "kind" : "IdResult" }
       ],
       "capabilities" : [ "RayTracingNV" ],
-      "extensions" : [ "SPV_NV_ray_tracing" ]
+      "extensions" : [ "SPV_NV_ray_tracing" ],
+      "version" : "None"
     },
     {
       "opname" : "OpExecuteCallableNV",
+      "class"  : "Reserved",
       "opcode" : 5344,
       "operands" : [
 
@@ -3985,10 +4465,12 @@
         { "kind" : "IdRef", "name" : "'Callable DataId'" }
       ],
       "capabilities" : [ "RayTracingNV" ],
-      "extensions" : [ "SPV_NV_ray_tracing" ]
+      "extensions" : [ "SPV_NV_ray_tracing" ],
+      "version" : "None"
     },
     {
       "opname" : "OpTypeCooperativeMatrixNV",
+      "class"  : "Reserved",
       "opcode" : 5358,
       "operands" : [
         { "kind" : "IdResult" },
@@ -4003,6 +4485,7 @@
     },
     {
       "opname" : "OpCooperativeMatrixLoadNV",
+      "class"  : "Reserved",
       "opcode" : 5359,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -4018,6 +4501,7 @@
     },
     {
       "opname" : "OpCooperativeMatrixStoreNV",
+      "class"  : "Reserved",
       "opcode" : 5360,
       "operands" : [
         { "kind" : "IdRef",             "name" : "'Pointer'" },
@@ -4032,6 +4516,7 @@
     },
     {
       "opname" : "OpCooperativeMatrixMulAddNV",
+      "class"  : "Reserved",
       "opcode" : 5361,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -4046,6 +4531,7 @@
     },
     {
       "opname" : "OpCooperativeMatrixLengthNV",
+      "class"  : "Reserved",
       "opcode" : 5362,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -4058,6 +4544,7 @@
     },
     {
       "opname" : "OpBeginInvocationInterlockEXT",
+      "class"  : "Reserved",
       "opcode" : 5364,
       "capabilities" : [ "FragmentShaderSampleInterlockEXT", "FragmentShaderPixelInterlockEXT", "FragmentShaderShadingRateInterlockEXT" ],
       "extensions" : [ "SPV_EXT_fragment_shader_interlock" ],
@@ -4065,6 +4552,7 @@
     },
     {
       "opname" : "OpEndInvocationInterlockEXT",
+      "class"  : "Reserved",
       "opcode" : 5365,
       "capabilities" : [ "FragmentShaderSampleInterlockEXT", "FragmentShaderPixelInterlockEXT", "FragmentShaderShadingRateInterlockEXT" ],
       "extensions" : [ "SPV_EXT_fragment_shader_interlock" ],
@@ -4072,6 +4560,7 @@
     },
     {
       "opname" : "OpDemoteToHelperInvocationEXT",
+      "class"  : "Reserved",
       "opcode" : 5380,
       "capabilities" : [ "DemoteToHelperInvocationEXT" ],
       "extensions" : [ "SPV_EXT_demote_to_helper_invocation" ],
@@ -4079,6 +4568,7 @@
     },
     {
       "opname" : "OpIsHelperInvocationEXT",
+      "class"  : "Reserved",
       "opcode" : 5381,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -4090,6 +4580,7 @@
     },
     {
       "opname" : "OpSubgroupShuffleINTEL",
+      "class"  : "Group",
       "opcode" : 5571,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -4102,6 +4593,7 @@
     },
     {
       "opname" : "OpSubgroupShuffleDownINTEL",
+      "class"  : "Group",
       "opcode" : 5572,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -4115,6 +4607,7 @@
     },
     {
       "opname" : "OpSubgroupShuffleUpINTEL",
+      "class"  : "Group",
       "opcode" : 5573,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -4128,6 +4621,7 @@
     },
     {
       "opname" : "OpSubgroupShuffleXorINTEL",
+      "class"  : "Group",
       "opcode" : 5574,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -4140,6 +4634,7 @@
     },
     {
       "opname" : "OpSubgroupBlockReadINTEL",
+      "class"  : "Group",
       "opcode" : 5575,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -4151,6 +4646,7 @@
     },
     {
       "opname" : "OpSubgroupBlockWriteINTEL",
+      "class"  : "Group",
       "opcode" : 5576,
       "operands" : [
         { "kind" : "IdRef", "name" : "'Ptr'" },
@@ -4161,6 +4657,7 @@
     },
     {
       "opname" : "OpSubgroupImageBlockReadINTEL",
+      "class"  : "Group",
       "opcode" : 5577,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -4173,6 +4670,7 @@
     },
     {
       "opname" : "OpSubgroupImageBlockWriteINTEL",
+      "class"  : "Group",
       "opcode" : 5578,
       "operands" : [
         { "kind" : "IdRef", "name" : "'Image'" },
@@ -4184,6 +4682,7 @@
     },
     {
       "opname" : "OpSubgroupImageMediaBlockReadINTEL",
+      "class"  : "Group",
       "opcode" : 5580,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -4198,6 +4697,7 @@
     },
     {
       "opname" : "OpSubgroupImageMediaBlockWriteINTEL",
+      "class"  : "Group",
       "opcode" : 5581,
       "operands" : [
         { "kind" : "IdRef", "name" : "'Image'" },
@@ -4211,6 +4711,7 @@
     },
     {
       "opname" : "OpUCountLeadingZerosINTEL",
+      "class"  : "Reserved",
       "opcode" : 5585,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -4222,6 +4723,7 @@
     },
     {
       "opname" : "OpUCountTrailingZerosINTEL",
+      "class"  : "Reserved",
       "opcode" : 5586,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -4233,6 +4735,7 @@
     },
     {
       "opname" : "OpAbsISubINTEL",
+      "class"  : "Reserved",
       "opcode" : 5587,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -4245,6 +4748,7 @@
     },
     {
       "opname" : "OpAbsUSubINTEL",
+      "class"  : "Reserved",
       "opcode" : 5588,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -4257,6 +4761,7 @@
     },
     {
       "opname" : "OpIAddSatINTEL",
+      "class"  : "Reserved",
       "opcode" : 5589,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -4269,6 +4774,7 @@
     },
     {
       "opname" : "OpUAddSatINTEL",
+      "class"  : "Reserved",
       "opcode" : 5590,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -4281,6 +4787,7 @@
     },
     {
       "opname" : "OpIAverageINTEL",
+      "class"  : "Reserved",
       "opcode" : 5591,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -4293,6 +4800,7 @@
     },
     {
       "opname" : "OpUAverageINTEL",
+      "class"  : "Reserved",
       "opcode" : 5592,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -4305,6 +4813,7 @@
     },
     {
       "opname" : "OpIAverageRoundedINTEL",
+      "class"  : "Reserved",
       "opcode" : 5593,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -4317,6 +4826,7 @@
     },
     {
       "opname" : "OpUAverageRoundedINTEL",
+      "class"  : "Reserved",
       "opcode" : 5594,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -4329,6 +4839,7 @@
     },
     {
       "opname" : "OpISubSatINTEL",
+      "class"  : "Reserved",
       "opcode" : 5595,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -4341,6 +4852,7 @@
     },
     {
       "opname" : "OpUSubSatINTEL",
+      "class"  : "Reserved",
       "opcode" : 5596,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -4353,6 +4865,7 @@
     },
     {
       "opname" : "OpIMul32x16INTEL",
+      "class"  : "Reserved",
       "opcode" : 5597,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -4365,6 +4878,7 @@
     },
     {
       "opname" : "OpUMul32x16INTEL",
+      "class"  : "Reserved",
       "opcode" : 5598,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -4377,6 +4891,7 @@
     },
     {
       "opname" : "OpDecorateString",
+      "class"  : "Annotation",
       "opcode" : 5632,
       "operands" : [
         { "kind" : "IdRef",         "name" : "'Target'" },
@@ -4387,6 +4902,7 @@
     },
     {
       "opname" : "OpDecorateStringGOOGLE",
+      "class"  : "Annotation",
       "opcode" : 5632,
       "operands" : [
         { "kind" : "IdRef",         "name" : "'Target'" },
@@ -4397,6 +4913,7 @@
     },
     {
       "opname" : "OpMemberDecorateString",
+      "class"  : "Annotation",
       "opcode" : 5633,
       "operands" : [
         { "kind" : "IdRef",          "name" : "'Struct Type'" },
@@ -4408,6 +4925,7 @@
     },
     {
       "opname" : "OpMemberDecorateStringGOOGLE",
+      "class"  : "Annotation",
       "opcode" : 5633,
       "operands" : [
         { "kind" : "IdRef",          "name" : "'Struct Type'" },
@@ -4419,6 +4937,7 @@
     },
     {
       "opname" : "OpVmeImageINTEL",
+      "class"  : "@exclude",
       "opcode" : 5699,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -4431,6 +4950,7 @@
     },
     {
       "opname" : "OpTypeVmeImageINTEL",
+      "class"  : "@exclude",
       "opcode" : 5700,
       "operands" : [
         { "kind" : "IdResult" },
@@ -4441,6 +4961,7 @@
     },
     {
       "opname" : "OpTypeAvcImePayloadINTEL",
+      "class"  : "@exclude",
       "opcode" : 5701,
       "operands" : [
         { "kind" : "IdResult" }
@@ -4450,6 +4971,7 @@
     },
     {
       "opname" : "OpTypeAvcRefPayloadINTEL",
+      "class"  : "@exclude",
       "opcode" : 5702,
       "operands" : [
         { "kind" : "IdResult" }
@@ -4459,6 +4981,7 @@
     },
     {
       "opname" : "OpTypeAvcSicPayloadINTEL",
+      "class"  : "@exclude",
       "opcode" : 5703,
       "operands" : [
         { "kind" : "IdResult" }
@@ -4468,6 +4991,7 @@
     },
     {
       "opname" : "OpTypeAvcMcePayloadINTEL",
+      "class"  : "@exclude",
       "opcode" : 5704,
       "operands" : [
         { "kind" : "IdResult" }
@@ -4477,6 +5001,7 @@
     },
     {
       "opname" : "OpTypeAvcMceResultINTEL",
+      "class"  : "@exclude",
       "opcode" : 5705,
       "operands" : [
         { "kind" : "IdResult" }
@@ -4486,6 +5011,7 @@
     },
     {
       "opname" : "OpTypeAvcImeResultINTEL",
+      "class"  : "@exclude",
       "opcode" : 5706,
       "operands" : [
         { "kind" : "IdResult" }
@@ -4495,6 +5021,7 @@
     },
     {
       "opname" : "OpTypeAvcImeResultSingleReferenceStreamoutINTEL",
+      "class"  : "@exclude",
       "opcode" : 5707,
       "operands" : [
         { "kind" : "IdResult" }
@@ -4504,6 +5031,7 @@
     },
     {
       "opname" : "OpTypeAvcImeResultDualReferenceStreamoutINTEL",
+      "class"  : "@exclude",
       "opcode" : 5708,
       "operands" : [
         { "kind" : "IdResult" }
@@ -4513,6 +5041,7 @@
     },
     {
       "opname" : "OpTypeAvcImeSingleReferenceStreaminINTEL",
+      "class"  : "@exclude",
       "opcode" : 5709,
       "operands" : [
         { "kind" : "IdResult" }
@@ -4522,6 +5051,7 @@
     },
     {
       "opname" : "OpTypeAvcImeDualReferenceStreaminINTEL",
+      "class"  : "@exclude",
       "opcode" : 5710,
       "operands" : [
         { "kind" : "IdResult" }
@@ -4531,6 +5061,7 @@
     },
     {
       "opname" : "OpTypeAvcRefResultINTEL",
+      "class"  : "@exclude",
       "opcode" : 5711,
       "operands" : [
         { "kind" : "IdResult" }
@@ -4540,6 +5071,7 @@
     },
     {
       "opname" : "OpTypeAvcSicResultINTEL",
+      "class"  : "@exclude",
       "opcode" : 5712,
       "operands" : [
         { "kind" : "IdResult" }
@@ -4549,6 +5081,7 @@
     },
     {
       "opname" : "OpSubgroupAvcMceGetDefaultInterBaseMultiReferencePenaltyINTEL",
+      "class"  : "@exclude",
       "opcode" : 5713,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -4561,6 +5094,7 @@
     },
     {
       "opname" : "OpSubgroupAvcMceSetInterBaseMultiReferencePenaltyINTEL",
+      "class"  : "@exclude",
       "opcode" : 5714,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -4573,6 +5107,7 @@
     },
     {
       "opname" : "OpSubgroupAvcMceGetDefaultInterShapePenaltyINTEL",
+      "class"  : "@exclude",
       "opcode" : 5715,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -4585,6 +5120,7 @@
     },
     {
       "opname" : "OpSubgroupAvcMceSetInterShapePenaltyINTEL",
+      "class"  : "@exclude",
       "opcode" : 5716,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -4597,6 +5133,7 @@
     },
     {
       "opname" : "OpSubgroupAvcMceGetDefaultInterDirectionPenaltyINTEL",
+      "class"  : "@exclude",
       "opcode" : 5717,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -4609,6 +5146,7 @@
     },
     {
       "opname" : "OpSubgroupAvcMceSetInterDirectionPenaltyINTEL",
+      "class"  : "@exclude",
       "opcode" : 5718,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -4621,6 +5159,7 @@
     },
     {
       "opname" : "OpSubgroupAvcMceGetDefaultIntraLumaShapePenaltyINTEL",
+      "class"  : "@exclude",
       "opcode" : 5719,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -4633,6 +5172,7 @@
     },
     {
       "opname" : "OpSubgroupAvcMceGetDefaultInterMotionVectorCostTableINTEL",
+      "class"  : "@exclude",
       "opcode" : 5720,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -4645,6 +5185,7 @@
     },
     {
       "opname" : "OpSubgroupAvcMceGetDefaultHighPenaltyCostTableINTEL",
+      "class"  : "@exclude",
       "opcode" : 5721,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -4655,6 +5196,7 @@
     },
     {
       "opname" : "OpSubgroupAvcMceGetDefaultMediumPenaltyCostTableINTEL",
+      "class"  : "@exclude",
       "opcode" : 5722,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -4665,6 +5207,7 @@
     },
     {
       "opname" : "OpSubgroupAvcMceGetDefaultLowPenaltyCostTableINTEL",
+      "class"  : "@exclude",
       "opcode" : 5723,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -4675,6 +5218,7 @@
     },
     {
       "opname" : "OpSubgroupAvcMceSetMotionVectorCostFunctionINTEL",
+      "class"  : "@exclude",
       "opcode" : 5724,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -4689,6 +5233,7 @@
     },
     {
       "opname" : "OpSubgroupAvcMceGetDefaultIntraLumaModePenaltyINTEL",
+      "class"  : "@exclude",
       "opcode" : 5725,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -4701,6 +5246,7 @@
     },
     {
       "opname" : "OpSubgroupAvcMceGetDefaultNonDcLumaIntraPenaltyINTEL",
+      "class"  : "@exclude",
       "opcode" : 5726,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -4711,6 +5257,7 @@
     },
     {
       "opname" : "OpSubgroupAvcMceGetDefaultIntraChromaModeBasePenaltyINTEL",
+      "class"  : "@exclude",
       "opcode" : 5727,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -4721,6 +5268,7 @@
     },
     {
       "opname" : "OpSubgroupAvcMceSetAcOnlyHaarINTEL",
+      "class"  : "@exclude",
       "opcode" : 5728,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -4732,6 +5280,7 @@
     },
     {
       "opname" : "OpSubgroupAvcMceSetSourceInterlacedFieldPolarityINTEL",
+      "class"  : "@exclude",
       "opcode" : 5729,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -4744,6 +5293,7 @@
     },
     {
       "opname" : "OpSubgroupAvcMceSetSingleReferenceInterlacedFieldPolarityINTEL",
+      "class"  : "@exclude",
       "opcode" : 5730,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -4756,6 +5306,7 @@
     },
     {
       "opname" : "OpSubgroupAvcMceSetDualReferenceInterlacedFieldPolaritiesINTEL",
+      "class"  : "@exclude",
       "opcode" : 5731,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -4769,6 +5320,7 @@
     },
     {
       "opname" : "OpSubgroupAvcMceConvertToImePayloadINTEL",
+      "class"  : "@exclude",
       "opcode" : 5732,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -4780,6 +5332,7 @@
     },
     {
       "opname" : "OpSubgroupAvcMceConvertToImeResultINTEL",
+      "class"  : "@exclude",
       "opcode" : 5733,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -4791,6 +5344,7 @@
     },
     {
       "opname" : "OpSubgroupAvcMceConvertToRefPayloadINTEL",
+      "class"  : "@exclude",
       "opcode" : 5734,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -4802,6 +5356,7 @@
     },
     {
       "opname" : "OpSubgroupAvcMceConvertToRefResultINTEL",
+      "class"  : "@exclude",
       "opcode" : 5735,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -4813,6 +5368,7 @@
     },
     {
       "opname" : "OpSubgroupAvcMceConvertToSicPayloadINTEL",
+      "class"  : "@exclude",
       "opcode" : 5736,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -4824,6 +5380,7 @@
     },
     {
       "opname" : "OpSubgroupAvcMceConvertToSicResultINTEL",
+      "class"  : "@exclude",
       "opcode" : 5737,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -4835,6 +5392,7 @@
     },
     {
       "opname" : "OpSubgroupAvcMceGetMotionVectorsINTEL",
+      "class"  : "@exclude",
       "opcode" : 5738,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -4846,6 +5404,7 @@
     },
     {
       "opname" : "OpSubgroupAvcMceGetInterDistortionsINTEL",
+      "class"  : "@exclude",
       "opcode" : 5739,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -4857,6 +5416,7 @@
     },
     {
       "opname" : "OpSubgroupAvcMceGetBestInterDistortionsINTEL",
+      "class"  : "@exclude",
       "opcode" : 5740,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -4868,6 +5428,7 @@
     },
     {
       "opname" : "OpSubgroupAvcMceGetInterMajorShapeINTEL",
+      "class"  : "@exclude",
       "opcode" : 5741,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -4879,6 +5440,7 @@
     },
     {
       "opname" : "OpSubgroupAvcMceGetInterMinorShapeINTEL",
+      "class"  : "@exclude",
       "opcode" : 5742,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -4890,6 +5452,7 @@
     },
     {
       "opname" : "OpSubgroupAvcMceGetInterDirectionsINTEL",
+      "class"  : "@exclude",
       "opcode" : 5743,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -4901,6 +5464,7 @@
     },
     {
       "opname" : "OpSubgroupAvcMceGetInterMotionVectorCountINTEL",
+      "class"  : "@exclude",
       "opcode" : 5744,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -4912,6 +5476,7 @@
     },
     {
       "opname" : "OpSubgroupAvcMceGetInterReferenceIdsINTEL",
+      "class"  : "@exclude",
       "opcode" : 5745,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -4923,6 +5488,7 @@
     },
     {
       "opname" : "OpSubgroupAvcMceGetInterReferenceInterlacedFieldPolaritiesINTEL",
+      "class"  : "@exclude",
       "opcode" : 5746,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -4936,6 +5502,7 @@
     },
     {
       "opname" : "OpSubgroupAvcImeInitializeINTEL",
+      "class"  : "@exclude",
       "opcode" : 5747,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -4949,6 +5516,7 @@
     },
     {
       "opname" : "OpSubgroupAvcImeSetSingleReferenceINTEL",
+      "class"  : "@exclude",
       "opcode" : 5748,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -4962,6 +5530,7 @@
     },
     {
       "opname" : "OpSubgroupAvcImeSetDualReferenceINTEL",
+      "class"  : "@exclude",
       "opcode" : 5749,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -4976,6 +5545,7 @@
     },
     {
       "opname" : "OpSubgroupAvcImeRefWindowSizeINTEL",
+      "class"  : "@exclude",
       "opcode" : 5750,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -4988,6 +5558,7 @@
     },
     {
       "opname" : "OpSubgroupAvcImeAdjustRefOffsetINTEL",
+      "class"  : "@exclude",
       "opcode" : 5751,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -5002,6 +5573,7 @@
     },
     {
       "opname" : "OpSubgroupAvcImeConvertToMcePayloadINTEL",
+      "class"  : "@exclude",
       "opcode" : 5752,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -5013,6 +5585,7 @@
     },
     {
       "opname" : "OpSubgroupAvcImeSetMaxMotionVectorCountINTEL",
+      "class"  : "@exclude",
       "opcode" : 5753,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -5025,6 +5598,7 @@
     },
     {
       "opname" : "OpSubgroupAvcImeSetUnidirectionalMixDisableINTEL",
+      "class"  : "@exclude",
       "opcode" : 5754,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -5036,6 +5610,7 @@
     },
     {
       "opname" : "OpSubgroupAvcImeSetEarlySearchTerminationThresholdINTEL",
+      "class"  : "@exclude",
       "opcode" : 5755,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -5048,6 +5623,7 @@
     },
     {
       "opname" : "OpSubgroupAvcImeSetWeightedSadINTEL",
+      "class"  : "@exclude",
       "opcode" : 5756,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -5060,6 +5636,7 @@
     },
     {
       "opname" : "OpSubgroupAvcImeEvaluateWithSingleReferenceINTEL",
+      "class"  : "@exclude",
       "opcode" : 5757,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -5073,6 +5650,7 @@
     },
     {
       "opname" : "OpSubgroupAvcImeEvaluateWithDualReferenceINTEL",
+      "class"  : "@exclude",
       "opcode" : 5758,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -5087,6 +5665,7 @@
     },
     {
       "opname" : "OpSubgroupAvcImeEvaluateWithSingleReferenceStreaminINTEL",
+      "class"  : "@exclude",
       "opcode" : 5759,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -5101,6 +5680,7 @@
     },
     {
       "opname" : "OpSubgroupAvcImeEvaluateWithDualReferenceStreaminINTEL",
+      "class"  : "@exclude",
       "opcode" : 5760,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -5116,6 +5696,7 @@
     },
     {
       "opname" : "OpSubgroupAvcImeEvaluateWithSingleReferenceStreamoutINTEL",
+      "class"  : "@exclude",
       "opcode" : 5761,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -5129,6 +5710,7 @@
     },
     {
       "opname" : "OpSubgroupAvcImeEvaluateWithDualReferenceStreamoutINTEL",
+      "class"  : "@exclude",
       "opcode" : 5762,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -5143,6 +5725,7 @@
     },
     {
       "opname" : "OpSubgroupAvcImeEvaluateWithSingleReferenceStreaminoutINTEL",
+      "class"  : "@exclude",
       "opcode" : 5763,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -5157,6 +5740,7 @@
     },
     {
       "opname" : "OpSubgroupAvcImeEvaluateWithDualReferenceStreaminoutINTEL",
+      "class"  : "@exclude",
       "opcode" : 5764,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -5172,6 +5756,7 @@
     },
     {
       "opname" : "OpSubgroupAvcImeConvertToMceResultINTEL",
+      "class"  : "@exclude",
       "opcode" : 5765,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -5183,6 +5768,7 @@
     },
     {
       "opname" : "OpSubgroupAvcImeGetSingleReferenceStreaminINTEL",
+      "class"  : "@exclude",
       "opcode" : 5766,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -5194,6 +5780,7 @@
     },
     {
       "opname" : "OpSubgroupAvcImeGetDualReferenceStreaminINTEL",
+      "class"  : "@exclude",
       "opcode" : 5767,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -5205,6 +5792,7 @@
     },
     {
       "opname" : "OpSubgroupAvcImeStripSingleReferenceStreamoutINTEL",
+      "class"  : "@exclude",
       "opcode" : 5768,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -5216,6 +5804,7 @@
     },
     {
       "opname" : "OpSubgroupAvcImeStripDualReferenceStreamoutINTEL",
+      "class"  : "@exclude",
       "opcode" : 5769,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -5227,6 +5816,7 @@
     },
     {
       "opname" : "OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeMotionVectorsINTEL",
+      "class"  : "@exclude",
       "opcode" : 5770,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -5239,6 +5829,7 @@
     },
     {
       "opname" : "OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeDistortionsINTEL",
+      "class"  : "@exclude",
       "opcode" : 5771,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -5251,6 +5842,7 @@
     },
     {
       "opname" : "OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeReferenceIdsINTEL",
+      "class"  : "@exclude",
       "opcode" : 5772,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -5263,6 +5855,7 @@
     },
     {
       "opname" : "OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeMotionVectorsINTEL",
+      "class"  : "@exclude",
       "opcode" : 5773,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -5276,6 +5869,7 @@
     },
     {
       "opname" : "OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeDistortionsINTEL",
+      "class"  : "@exclude",
       "opcode" : 5774,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -5289,6 +5883,7 @@
     },
     {
       "opname" : "OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeReferenceIdsINTEL",
+      "class"  : "@exclude",
       "opcode" : 5775,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -5302,6 +5897,7 @@
     },
     {
       "opname" : "OpSubgroupAvcImeGetBorderReachedINTEL",
+      "class"  : "@exclude",
       "opcode" : 5776,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -5314,6 +5910,7 @@
     },
     {
       "opname" : "OpSubgroupAvcImeGetTruncatedSearchIndicationINTEL",
+      "class"  : "@exclude",
       "opcode" : 5777,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -5325,6 +5922,7 @@
     },
     {
       "opname" : "OpSubgroupAvcImeGetUnidirectionalEarlySearchTerminationINTEL",
+      "class"  : "@exclude",
       "opcode" : 5778,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -5336,6 +5934,7 @@
     },
     {
       "opname" : "OpSubgroupAvcImeGetWeightingPatternMinimumMotionVectorINTEL",
+      "class"  : "@exclude",
       "opcode" : 5779,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -5347,6 +5946,7 @@
     },
     {
       "opname" : "OpSubgroupAvcImeGetWeightingPatternMinimumDistortionINTEL",
+      "class"  : "@exclude",
       "opcode" : 5780,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -5358,6 +5958,7 @@
     },
     {
       "opname" : "OpSubgroupAvcFmeInitializeINTEL",
+      "class"  : "@exclude",
       "opcode" : 5781,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -5375,6 +5976,7 @@
     },
     {
       "opname" : "OpSubgroupAvcBmeInitializeINTEL",
+      "class"  : "@exclude",
       "opcode" : 5782,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -5393,6 +5995,7 @@
     },
     {
       "opname" : "OpSubgroupAvcRefConvertToMcePayloadINTEL",
+      "class"  : "@exclude",
       "opcode" : 5783,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -5404,6 +6007,7 @@
     },
     {
       "opname" : "OpSubgroupAvcRefSetBidirectionalMixDisableINTEL",
+      "class"  : "@exclude",
       "opcode" : 5784,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -5415,6 +6019,7 @@
     },
     {
       "opname" : "OpSubgroupAvcRefSetBilinearFilterEnableINTEL",
+      "class"  : "@exclude",
       "opcode" : 5785,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -5426,6 +6031,7 @@
     },
     {
       "opname" : "OpSubgroupAvcRefEvaluateWithSingleReferenceINTEL",
+      "class"  : "@exclude",
       "opcode" : 5786,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -5439,6 +6045,7 @@
     },
     {
       "opname" : "OpSubgroupAvcRefEvaluateWithDualReferenceINTEL",
+      "class"  : "@exclude",
       "opcode" : 5787,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -5453,6 +6060,7 @@
     },
     {
       "opname" : "OpSubgroupAvcRefEvaluateWithMultiReferenceINTEL",
+      "class"  : "@exclude",
       "opcode" : 5788,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -5466,6 +6074,7 @@
     },
     {
       "opname" : "OpSubgroupAvcRefEvaluateWithMultiReferenceInterlacedINTEL",
+      "class"  : "@exclude",
       "opcode" : 5789,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -5480,6 +6089,7 @@
     },
     {
       "opname" : "OpSubgroupAvcRefConvertToMceResultINTEL",
+      "class"  : "@exclude",
       "opcode" : 5790,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -5491,6 +6101,7 @@
     },
     {
       "opname" : "OpSubgroupAvcSicInitializeINTEL",
+      "class"  : "@exclude",
       "opcode" : 5791,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -5502,6 +6113,7 @@
     },
     {
       "opname" : "OpSubgroupAvcSicConfigureSkcINTEL",
+      "class"  : "@exclude",
       "opcode" : 5792,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -5518,6 +6130,7 @@
     },
     {
       "opname" : "OpSubgroupAvcSicConfigureIpeLumaINTEL",
+      "class"  : "@exclude",
       "opcode" : 5793,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -5536,6 +6149,7 @@
     },
     {
       "opname" : "OpSubgroupAvcSicConfigureIpeLumaChromaINTEL",
+      "class"  : "@exclude",
       "opcode" : 5794,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -5557,6 +6171,7 @@
     },
     {
       "opname" : "OpSubgroupAvcSicGetMotionVectorMaskINTEL",
+      "class"  : "@exclude",
       "opcode" : 5795,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -5569,6 +6184,7 @@
     },
     {
       "opname" : "OpSubgroupAvcSicConvertToMcePayloadINTEL",
+      "class"  : "@exclude",
       "opcode" : 5796,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -5580,6 +6196,7 @@
     },
     {
       "opname" : "OpSubgroupAvcSicSetIntraLumaShapePenaltyINTEL",
+      "class"  : "@exclude",
       "opcode" : 5797,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -5592,6 +6209,7 @@
     },
     {
       "opname" : "OpSubgroupAvcSicSetIntraLumaModeCostFunctionINTEL",
+      "class"  : "@exclude",
       "opcode" : 5798,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -5606,6 +6224,7 @@
     },
     {
       "opname" : "OpSubgroupAvcSicSetIntraChromaModeCostFunctionINTEL",
+      "class"  : "@exclude",
       "opcode" : 5799,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -5618,6 +6237,7 @@
     },
     {
       "opname" : "OpSubgroupAvcSicSetBilinearFilterEnableINTEL",
+      "class"  : "@exclude",
       "opcode" : 5800,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -5629,6 +6249,7 @@
     },
     {
       "opname" : "OpSubgroupAvcSicSetSkcForwardTransformEnableINTEL",
+      "class"  : "@exclude",
       "opcode" : 5801,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -5641,6 +6262,7 @@
     },
     {
       "opname" : "OpSubgroupAvcSicSetBlockBasedRawSkipSadINTEL",
+      "class"  : "@exclude",
       "opcode" : 5802,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -5653,6 +6275,7 @@
     },
     {
       "opname" : "OpSubgroupAvcSicEvaluateIpeINTEL",
+      "class"  : "@exclude",
       "opcode" : 5803,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -5665,6 +6288,7 @@
     },
     {
       "opname" : "OpSubgroupAvcSicEvaluateWithSingleReferenceINTEL",
+      "class"  : "@exclude",
       "opcode" : 5804,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -5678,6 +6302,7 @@
     },
     {
       "opname" : "OpSubgroupAvcSicEvaluateWithDualReferenceINTEL",
+      "class"  : "@exclude",
       "opcode" : 5805,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -5692,6 +6317,7 @@
     },
     {
       "opname" : "OpSubgroupAvcSicEvaluateWithMultiReferenceINTEL",
+      "class"  : "@exclude",
       "opcode" : 5806,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -5705,6 +6331,7 @@
     },
     {
       "opname" : "OpSubgroupAvcSicEvaluateWithMultiReferenceInterlacedINTEL",
+      "class"  : "@exclude",
       "opcode" : 5807,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -5719,6 +6346,7 @@
     },
     {
       "opname" : "OpSubgroupAvcSicConvertToMceResultINTEL",
+      "class"  : "@exclude",
       "opcode" : 5808,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -5730,6 +6358,7 @@
     },
     {
       "opname" : "OpSubgroupAvcSicGetIpeLumaShapeINTEL",
+      "class"  : "@exclude",
       "opcode" : 5809,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -5741,6 +6370,7 @@
     },
     {
       "opname" : "OpSubgroupAvcSicGetBestIpeLumaDistortionINTEL",
+      "class"  : "@exclude",
       "opcode" : 5810,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -5752,6 +6382,7 @@
     },
     {
       "opname" : "OpSubgroupAvcSicGetBestIpeChromaDistortionINTEL",
+      "class"  : "@exclude",
       "opcode" : 5811,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -5763,6 +6394,7 @@
     },
     {
       "opname" : "OpSubgroupAvcSicGetPackedIpeLumaModesINTEL",
+      "class"  : "@exclude",
       "opcode" : 5812,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -5774,6 +6406,7 @@
     },
     {
       "opname" : "OpSubgroupAvcSicGetIpeChromaModeINTEL",
+      "class"  : "@exclude",
       "opcode" : 5813,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -5785,6 +6418,7 @@
     },
     {
       "opname" : "OpSubgroupAvcSicGetPackedSkcLumaCountThresholdINTEL",
+      "class"  : "@exclude",
       "opcode" : 5814,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -5796,6 +6430,7 @@
     },
     {
       "opname" : "OpSubgroupAvcSicGetPackedSkcLumaSumThresholdINTEL",
+      "class"  : "@exclude",
       "opcode" : 5815,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -5807,6 +6442,7 @@
     },
     {
       "opname" : "OpSubgroupAvcSicGetInterRawSadsINTEL",
+      "class"  : "@exclude",
       "opcode" : 5816,
       "operands" : [
         { "kind" : "IdResultType" },
@@ -5888,34 +6524,68 @@
           ]
         },
         {
-          "enumerant" : "MakeTexelAvailableKHR",
+          "enumerant" : "MakeTexelAvailable",
           "value" : "0x0100",
-          "capabilities" : [ "VulkanMemoryModelKHR" ],
+          "capabilities" : [ "VulkanMemoryModel" ],
           "parameters" : [
             { "kind" : "IdScope" }
           ],
-          "version" : "None"
+          "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" : [ "VulkanMemoryModelKHR" ],
+          "capabilities" : [ "VulkanMemoryModel" ],
           "parameters" : [
             { "kind" : "IdScope" }
           ],
-          "version" : "None"
+          "extensions" : [ "SPV_KHR_vulkan_memory_model" ],
+          "version" : "1.5"
+        },
+        {
+          "enumerant" : "NonPrivateTexel",
+          "value" : "0x0400",
+          "capabilities" : [ "VulkanMemoryModel" ],
+          "version" : "1.5"
         },
         {
           "enumerant" : "NonPrivateTexelKHR",
           "value" : "0x0400",
-          "capabilities" : [ "VulkanMemoryModelKHR" ],
-          "version" : "None"
+          "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" : [ "VulkanMemoryModelKHR" ],
-          "version" : "None"
+          "capabilities" : [ "VulkanMemoryModel" ],
+          "extensions" : [ "SPV_KHR_vulkan_memory_model" ],
+          "version" : "1.5"
         },
         {
           "enumerant" : "SignExtend",
@@ -6134,28 +6804,50 @@
           "value" : "0x0800"
         },
         {
+          "enumerant" : "OutputMemory",
+          "value" : "0x1000",
+          "capabilities" : [ "VulkanMemoryModel" ],
+          "version" : "1.5"
+        },
+        {
           "enumerant" : "OutputMemoryKHR",
           "value" : "0x1000",
-          "capabilities" : [ "VulkanMemoryModelKHR" ],
-          "version" : "None"
+          "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" : [ "VulkanMemoryModelKHR" ],
-          "version" : "None"
+          "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" : [ "VulkanMemoryModelKHR" ],
-          "version" : "None"
+          "capabilities" : [ "VulkanMemoryModel" ],
+          "extensions" : [ "SPV_KHR_vulkan_memory_model" ],
+          "version" : "1.5"
         },
         {
           "enumerant" : "Volatile",
           "value" : "0x8000",
-          "capabilities" : [ "VulkanMemoryModelKHR" ],
-          "version" : "None"
+          "capabilities" : [ "VulkanMemoryModel" ],
+          "extensions" : [ "SPV_KHR_vulkan_memory_model" ],
+          "version" : "1.5"
         }
       ]
     },
@@ -6183,13 +6875,32 @@
           "value" : "0x0004"
         },
         {
+          "enumerant" : "MakePointerAvailable",
+          "value" : "0x0008",
+          "parameters" : [
+            { "kind" : "IdScope" }
+          ],
+          "capabilities" : [ "VulkanMemoryModel" ],
+          "version" : "1.5"
+        },
+        {
           "enumerant" : "MakePointerAvailableKHR",
           "value" : "0x0008",
           "parameters" : [
             { "kind" : "IdScope" }
           ],
-          "capabilities" : [ "VulkanMemoryModelKHR" ],
-          "version" : "None"
+          "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",
@@ -6197,14 +6908,22 @@
           "parameters" : [
             { "kind" : "IdScope" }
           ],
-          "capabilities" : [ "VulkanMemoryModelKHR" ],
-          "version" : "None"
+          "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" : [ "VulkanMemoryModelKHR" ],
-          "version" : "None"
+          "capabilities" : [ "VulkanMemoryModel" ],
+          "extensions" : [ "SPV_KHR_vulkan_memory_model" ],
+          "version" : "1.5"
         }
       ]
     },
@@ -6361,11 +7080,18 @@
           "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" : [ "PhysicalStorageBufferAddressesEXT" ],
-          "version" : "None"
+          "capabilities" : [ "PhysicalStorageBufferAddresses" ],
+          "version" : "1.5"
         }
       ]
     },
@@ -6389,10 +7115,17 @@
           "capabilities" : [ "Kernel" ]
         },
         {
+          "enumerant" : "Vulkan",
+          "value" : 3,
+          "capabilities" : [ "VulkanMemoryModel" ],
+          "version" : "1.5"
+        },
+        {
           "enumerant" : "VulkanKHR",
           "value" : 3,
-          "capabilities" : [ "VulkanMemoryModelKHR" ],
-          "version" : "None"
+          "capabilities" : [ "VulkanMemoryModel" ],
+          "extensions" : [ "SPV_KHR_vulkan_memory_model" ],
+          "version" : "1.5"
         }
       ]
     },
@@ -6888,11 +7621,18 @@
           "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" : [ "PhysicalStorageBufferAddressesEXT" ],
-          "version" : "None"
+          "capabilities" : [ "PhysicalStorageBufferAddresses" ],
+          "version" : "1.5"
         }
       ]
     },
@@ -7873,23 +8613,45 @@
           "version" : "None"
         },
         {
+          "enumerant" : "NonUniform",
+          "value" : 5300,
+          "capabilities" : [ "ShaderNonUniform" ],
+          "version" : "1.5"
+        },
+        {
           "enumerant" : "NonUniformEXT",
           "value" : 5300,
-          "capabilities" : [ "ShaderNonUniformEXT" ]
+          "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" : [ "PhysicalStorageBufferAddressesEXT" ],
+          "capabilities" : [ "PhysicalStorageBufferAddresses" ],
           "extensions" : [ "SPV_EXT_physical_storage_buffer" ],
-          "version" : "None"
+          "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" : [ "PhysicalStorageBufferAddressesEXT" ],
+          "capabilities" : [ "PhysicalStorageBufferAddresses" ],
           "extensions" : [ "SPV_EXT_physical_storage_buffer" ],
-          "version" : "None"
+          "version" : "1.5"
         },
         {
           "enumerant" : "CounterBuffer",
@@ -7983,12 +8745,12 @@
         {
           "enumerant" : "Layer",
           "value" : 9,
-          "capabilities" : [ "Geometry" ]
+          "capabilities" : [ "Geometry", "ShaderLayer", "ShaderViewportIndexLayerEXT" ]
         },
         {
           "enumerant" : "ViewportIndex",
           "value" : 10,
-          "capabilities" : [ "MultiViewport" ]
+          "capabilities" : [ "MultiViewport", "ShaderViewportIndex", "ShaderViewportIndexLayerEXT" ]
         },
         {
           "enumerant" : "TessLevelOuter",
@@ -8581,10 +9343,16 @@
           "value" : 4
         },
         {
+          "enumerant" : "QueueFamily",
+          "value" : 5,
+          "capabilities" : [ "VulkanMemoryModel" ],
+          "version" : "1.5"
+        },
+        {
           "enumerant" : "QueueFamilyKHR",
           "value" : 5,
-          "capabilities" : [ "VulkanMemoryModelKHR" ],
-          "version" : "None"
+          "capabilities" : [ "VulkanMemoryModel" ],
+          "version" : "1.5"
         }
       ]
     },
@@ -8996,6 +9764,16 @@
           "version" : "1.3"
         },
         {
+          "enumerant" : "ShaderLayer",
+          "value" : 69,
+          "version" : "1.5"
+        },
+        {
+          "enumerant" : "ShaderViewportIndex",
+          "value" : 70,
+          "version" : "1.5"
+        },
+        {
           "enumerant" : "SubgroupBallotKHR",
           "value" : 4423,
           "extensions" : [ "SPV_KHR_shader_ballot" ],
@@ -9101,20 +9879,20 @@
           "enumerant" : "StorageBuffer8BitAccess",
           "value" : 4448,
           "extensions" : [ "SPV_KHR_8bit_storage" ],
-          "version" : "None"
+          "version" : "1.5"
         },
         {
           "enumerant" : "UniformAndStorageBuffer8BitAccess",
           "value" : 4449,
           "capabilities" : [ "StorageBuffer8BitAccess" ],
           "extensions" : [ "SPV_KHR_8bit_storage" ],
-          "version" : "None"
+          "version" : "1.5"
         },
         {
           "enumerant" : "StoragePushConstant8",
           "value" : 4450,
           "extensions" : [ "SPV_KHR_8bit_storage" ],
-          "version" : "None"
+          "version" : "1.5"
         },
         {
           "enumerant" : "DenormPreserve",
@@ -9290,88 +10068,160 @@
           "version" : "None"
         },
         {
+          "enumerant" : "ShaderNonUniform",
+          "value" : 5301,
+          "capabilities" : [ "Shader" ],
+          "version" : "1.5"
+        },
+        {
           "enumerant" : "ShaderNonUniformEXT",
           "value" : 5301,
           "capabilities" : [ "Shader" ],
           "extensions" : [ "SPV_EXT_descriptor_indexing" ],
-          "version" : "None"
+          "version" : "1.5"
+        },
+        {
+          "enumerant" : "RuntimeDescriptorArray",
+          "value" : 5302,
+          "capabilities" : [ "Shader" ],
+          "version" : "1.5"
         },
         {
           "enumerant" : "RuntimeDescriptorArrayEXT",
           "value" : 5302,
           "capabilities" : [ "Shader" ],
           "extensions" : [ "SPV_EXT_descriptor_indexing" ],
-          "version" : "None"
+          "version" : "1.5"
+        },
+        {
+          "enumerant" : "InputAttachmentArrayDynamicIndexing",
+          "value" : 5303,
+          "capabilities" : [ "InputAttachment" ],
+          "version" : "1.5"
         },
         {
           "enumerant" : "InputAttachmentArrayDynamicIndexingEXT",
           "value" : 5303,
           "capabilities" : [ "InputAttachment" ],
           "extensions" : [ "SPV_EXT_descriptor_indexing" ],
-          "version" : "None"
+          "version" : "1.5"
+        },
+        {
+          "enumerant" : "UniformTexelBufferArrayDynamicIndexing",
+          "value" : 5304,
+          "capabilities" : [ "SampledBuffer" ],
+          "version" : "1.5"
         },
         {
           "enumerant" : "UniformTexelBufferArrayDynamicIndexingEXT",
           "value" : 5304,
           "capabilities" : [ "SampledBuffer" ],
           "extensions" : [ "SPV_EXT_descriptor_indexing" ],
-          "version" : "None"
+          "version" : "1.5"
+        },
+        {
+          "enumerant" : "StorageTexelBufferArrayDynamicIndexing",
+          "value" : 5305,
+          "capabilities" : [ "ImageBuffer" ],
+          "version" : "1.5"
         },
         {
           "enumerant" : "StorageTexelBufferArrayDynamicIndexingEXT",
           "value" : 5305,
           "capabilities" : [ "ImageBuffer" ],
           "extensions" : [ "SPV_EXT_descriptor_indexing" ],
-          "version" : "None"
+          "version" : "1.5"
+        },
+        {
+          "enumerant" : "UniformBufferArrayNonUniformIndexing",
+          "value" : 5306,
+          "capabilities" : [ "ShaderNonUniform" ],
+          "version" : "1.5"
         },
         {
           "enumerant" : "UniformBufferArrayNonUniformIndexingEXT",
           "value" : 5306,
-          "capabilities" : [ "ShaderNonUniformEXT" ],
+          "capabilities" : [ "ShaderNonUniform" ],
           "extensions" : [ "SPV_EXT_descriptor_indexing" ],
-          "version" : "None"
+          "version" : "1.5"
+        },
+        {
+          "enumerant" : "SampledImageArrayNonUniformIndexing",
+          "value" : 5307,
+          "capabilities" : [ "ShaderNonUniform" ],
+          "version" : "1.5"
         },
         {
           "enumerant" : "SampledImageArrayNonUniformIndexingEXT",
           "value" : 5307,
-          "capabilities" : [ "ShaderNonUniformEXT" ],
+          "capabilities" : [ "ShaderNonUniform" ],
           "extensions" : [ "SPV_EXT_descriptor_indexing" ],
-          "version" : "None"
+          "version" : "1.5"
+        },
+        {
+          "enumerant" : "StorageBufferArrayNonUniformIndexing",
+          "value" : 5308,
+          "capabilities" : [ "ShaderNonUniform" ],
+          "version" : "1.5"
         },
         {
           "enumerant" : "StorageBufferArrayNonUniformIndexingEXT",
           "value" : 5308,
-          "capabilities" : [ "ShaderNonUniformEXT" ],
+          "capabilities" : [ "ShaderNonUniform" ],
           "extensions" : [ "SPV_EXT_descriptor_indexing" ],
-          "version" : "None"
+          "version" : "1.5"
+        },
+        {
+          "enumerant" : "StorageImageArrayNonUniformIndexing",
+          "value" : 5309,
+          "capabilities" : [ "ShaderNonUniform" ],
+          "version" : "1.5"
         },
         {
           "enumerant" : "StorageImageArrayNonUniformIndexingEXT",
           "value" : 5309,
-          "capabilities" : [ "ShaderNonUniformEXT" ],
+          "capabilities" : [ "ShaderNonUniform" ],
           "extensions" : [ "SPV_EXT_descriptor_indexing" ],
-          "version" : "None"
+          "version" : "1.5"
+        },
+        {
+          "enumerant" : "InputAttachmentArrayNonUniformIndexing",
+          "value" : 5310,
+          "capabilities" : [ "InputAttachment", "ShaderNonUniform" ],
+          "version" : "1.5"
         },
         {
           "enumerant" : "InputAttachmentArrayNonUniformIndexingEXT",
           "value" : 5310,
-          "capabilities" : [ "InputAttachment", "ShaderNonUniformEXT" ],
+          "capabilities" : [ "InputAttachment", "ShaderNonUniform" ],
           "extensions" : [ "SPV_EXT_descriptor_indexing" ],
-          "version" : "None"
+          "version" : "1.5"
+        },
+        {
+          "enumerant" : "UniformTexelBufferArrayNonUniformIndexing",
+          "value" : 5311,
+          "capabilities" : [ "SampledBuffer", "ShaderNonUniform" ],
+          "version" : "1.5"
         },
         {
           "enumerant" : "UniformTexelBufferArrayNonUniformIndexingEXT",
           "value" : 5311,
-          "capabilities" : [ "SampledBuffer", "ShaderNonUniformEXT" ],
+          "capabilities" : [ "SampledBuffer", "ShaderNonUniform" ],
           "extensions" : [ "SPV_EXT_descriptor_indexing" ],
-          "version" : "None"
+          "version" : "1.5"
+        },
+        {
+          "enumerant" : "StorageTexelBufferArrayNonUniformIndexing",
+          "value" : 5312,
+          "capabilities" : [ "ImageBuffer", "ShaderNonUniform" ],
+          "version" : "1.5"
         },
         {
           "enumerant" : "StorageTexelBufferArrayNonUniformIndexingEXT",
           "value" : 5312,
-          "capabilities" : [ "ImageBuffer", "ShaderNonUniformEXT" ],
+          "capabilities" : [ "ImageBuffer", "ShaderNonUniform" ],
           "extensions" : [ "SPV_EXT_descriptor_indexing" ],
-          "version" : "None"
+          "version" : "1.5"
         },
         {
           "enumerant" : "RayTracingNV",
@@ -9381,23 +10231,40 @@
           "version" : "None"
         },
         {
+          "enumerant" : "VulkanMemoryModel",
+          "value" : 5345,
+          "version" : "1.5"
+        },
+        {
           "enumerant" : "VulkanMemoryModelKHR",
           "value" : 5345,
           "extensions" : [ "SPV_KHR_vulkan_memory_model" ],
-          "version" : "None"
+          "version" : "1.5"
+        },
+        {
+          "enumerant" : "VulkanMemoryModelDeviceScope",
+          "value" : 5346,
+          "version" : "1.5"
         },
         {
           "enumerant" : "VulkanMemoryModelDeviceScopeKHR",
           "value" : 5346,
           "extensions" : [ "SPV_KHR_vulkan_memory_model" ],
-          "version" : "None"
+          "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" : "None"
+          "version" : "1.5"
         },
         {
           "enumerant" : "ComputeDerivativeGroupLinearNV",
diff --git a/include/spirv/unified1/spirv.cs b/include/spirv/unified1/spirv.cs
index 8c71219..705aa59 100644
--- a/include/spirv/unified1/spirv.cs
+++ b/include/spirv/unified1/spirv.cs
@@ -48,7 +48,7 @@
     public static class Specification
     {
         public const uint MagicNumber = 0x07230203;
-        public const uint Version = 0x00010400;
+        public const uint Version = 0x00010500;
         public const uint Revision = 1;
         public const uint OpCodeMask = 0xffff;
         public const uint WordCountShift = 16;
@@ -87,6 +87,7 @@
             Logical = 0,
             Physical32 = 1,
             Physical64 = 2,
+            PhysicalStorageBuffer64 = 5348,
             PhysicalStorageBuffer64EXT = 5348,
         }
 
@@ -95,6 +96,7 @@
             Simple = 0,
             GLSL450 = 1,
             OpenCL = 2,
+            Vulkan = 3,
             VulkanKHR = 3,
         }
 
@@ -179,6 +181,7 @@
             HitAttributeNV = 5339,
             IncomingRayPayloadNV = 5342,
             ShaderRecordBufferNV = 5343,
+            PhysicalStorageBuffer = 5349,
             PhysicalStorageBufferEXT = 5349,
         }
 
@@ -307,9 +310,13 @@
             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,
@@ -326,9 +333,13 @@
             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,
@@ -446,8 +457,11 @@
             PerViewNV = 5272,
             PerTaskNV = 5273,
             PerVertexNV = 5285,
+            NonUniform = 5300,
             NonUniformEXT = 5300,
+            RestrictPointer = 5355,
             RestrictPointerEXT = 5355,
+            AliasedPointer = 5356,
             AliasedPointerEXT = 5356,
             CounterBuffer = 5634,
             HlslCounterBufferGOOGLE = 5634,
@@ -631,8 +645,11 @@
             CrossWorkgroupMemory = 9,
             AtomicCounterMemory = 10,
             ImageMemory = 11,
+            OutputMemory = 12,
             OutputMemoryKHR = 12,
+            MakeAvailable = 13,
             MakeAvailableKHR = 13,
+            MakeVisible = 14,
             MakeVisibleKHR = 14,
             Volatile = 15,
         }
@@ -650,8 +667,11 @@
             CrossWorkgroupMemory = 0x00000200,
             AtomicCounterMemory = 0x00000400,
             ImageMemory = 0x00000800,
+            OutputMemory = 0x00001000,
             OutputMemoryKHR = 0x00001000,
+            MakeAvailable = 0x00002000,
             MakeAvailableKHR = 0x00002000,
+            MakeVisible = 0x00004000,
             MakeVisibleKHR = 0x00004000,
             Volatile = 0x00008000,
         }
@@ -661,8 +681,11 @@
             Volatile = 0,
             Aligned = 1,
             Nontemporal = 2,
+            MakePointerAvailable = 3,
             MakePointerAvailableKHR = 3,
+            MakePointerVisible = 4,
             MakePointerVisibleKHR = 4,
+            NonPrivatePointer = 5,
             NonPrivatePointerKHR = 5,
         }
 
@@ -672,8 +695,11 @@
             Volatile = 0x00000001,
             Aligned = 0x00000002,
             Nontemporal = 0x00000004,
+            MakePointerAvailable = 0x00000008,
             MakePointerAvailableKHR = 0x00000008,
+            MakePointerVisible = 0x00000010,
             MakePointerVisibleKHR = 0x00000010,
+            NonPrivatePointer = 0x00000020,
             NonPrivatePointerKHR = 0x00000020,
         }
 
@@ -684,6 +710,7 @@
             Workgroup = 2,
             Subgroup = 3,
             Invocation = 4,
+            QueueFamily = 5,
             QueueFamilyKHR = 5,
         }
 
@@ -785,6 +812,8 @@
             GroupNonUniformShuffleRelative = 66,
             GroupNonUniformClustered = 67,
             GroupNonUniformQuad = 68,
+            ShaderLayer = 69,
+            ShaderViewportIndex = 70,
             SubgroupBallotKHR = 4423,
             DrawParameters = 4427,
             SubgroupVoteKHR = 4431,
@@ -829,21 +858,36 @@
             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,
             CooperativeMatrixNV = 5357,
diff --git a/include/spirv/unified1/spirv.h b/include/spirv/unified1/spirv.h
index e848e46..53928a4 100644
--- a/include/spirv/unified1/spirv.h
+++ b/include/spirv/unified1/spirv.h
@@ -53,11 +53,11 @@
 
 typedef unsigned int SpvId;
 
-#define SPV_VERSION 0x10400
+#define SPV_VERSION 0x10500
 #define SPV_REVISION 1
 
 static const unsigned int SpvMagicNumber = 0x07230203;
-static const unsigned int SpvVersion = 0x00010400;
+static const unsigned int SpvVersion = 0x00010500;
 static const unsigned int SpvRevision = 1;
 static const unsigned int SpvOpCodeMask = 0xffff;
 static const unsigned int SpvWordCountShift = 16;
@@ -95,6 +95,7 @@
     SpvAddressingModelLogical = 0,
     SpvAddressingModelPhysical32 = 1,
     SpvAddressingModelPhysical64 = 2,
+    SpvAddressingModelPhysicalStorageBuffer64 = 5348,
     SpvAddressingModelPhysicalStorageBuffer64EXT = 5348,
     SpvAddressingModelMax = 0x7fffffff,
 } SpvAddressingModel;
@@ -103,6 +104,7 @@
     SpvMemoryModelSimple = 0,
     SpvMemoryModelGLSL450 = 1,
     SpvMemoryModelOpenCL = 2,
+    SpvMemoryModelVulkan = 3,
     SpvMemoryModelVulkanKHR = 3,
     SpvMemoryModelMax = 0x7fffffff,
 } SpvMemoryModel;
@@ -187,6 +189,7 @@
     SpvStorageClassHitAttributeNV = 5339,
     SpvStorageClassIncomingRayPayloadNV = 5342,
     SpvStorageClassShaderRecordBufferNV = 5343,
+    SpvStorageClassPhysicalStorageBuffer = 5349,
     SpvStorageClassPhysicalStorageBufferEXT = 5349,
     SpvStorageClassMax = 0x7fffffff,
 } SpvStorageClass;
@@ -315,9 +318,13 @@
     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,
@@ -334,9 +341,13 @@
     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,
@@ -452,8 +463,11 @@
     SpvDecorationPerViewNV = 5272,
     SpvDecorationPerTaskNV = 5273,
     SpvDecorationPerVertexNV = 5285,
+    SpvDecorationNonUniform = 5300,
     SpvDecorationNonUniformEXT = 5300,
+    SpvDecorationRestrictPointer = 5355,
     SpvDecorationRestrictPointerEXT = 5355,
+    SpvDecorationAliasedPointer = 5356,
     SpvDecorationAliasedPointerEXT = 5356,
     SpvDecorationCounterBuffer = 5634,
     SpvDecorationHlslCounterBufferGOOGLE = 5634,
@@ -634,8 +648,11 @@
     SpvMemorySemanticsCrossWorkgroupMemoryShift = 9,
     SpvMemorySemanticsAtomicCounterMemoryShift = 10,
     SpvMemorySemanticsImageMemoryShift = 11,
+    SpvMemorySemanticsOutputMemoryShift = 12,
     SpvMemorySemanticsOutputMemoryKHRShift = 12,
+    SpvMemorySemanticsMakeAvailableShift = 13,
     SpvMemorySemanticsMakeAvailableKHRShift = 13,
+    SpvMemorySemanticsMakeVisibleShift = 14,
     SpvMemorySemanticsMakeVisibleKHRShift = 14,
     SpvMemorySemanticsVolatileShift = 15,
     SpvMemorySemanticsMax = 0x7fffffff,
@@ -653,8 +670,11 @@
     SpvMemorySemanticsCrossWorkgroupMemoryMask = 0x00000200,
     SpvMemorySemanticsAtomicCounterMemoryMask = 0x00000400,
     SpvMemorySemanticsImageMemoryMask = 0x00000800,
+    SpvMemorySemanticsOutputMemoryMask = 0x00001000,
     SpvMemorySemanticsOutputMemoryKHRMask = 0x00001000,
+    SpvMemorySemanticsMakeAvailableMask = 0x00002000,
     SpvMemorySemanticsMakeAvailableKHRMask = 0x00002000,
+    SpvMemorySemanticsMakeVisibleMask = 0x00004000,
     SpvMemorySemanticsMakeVisibleKHRMask = 0x00004000,
     SpvMemorySemanticsVolatileMask = 0x00008000,
 } SpvMemorySemanticsMask;
@@ -663,8 +683,11 @@
     SpvMemoryAccessVolatileShift = 0,
     SpvMemoryAccessAlignedShift = 1,
     SpvMemoryAccessNontemporalShift = 2,
+    SpvMemoryAccessMakePointerAvailableShift = 3,
     SpvMemoryAccessMakePointerAvailableKHRShift = 3,
+    SpvMemoryAccessMakePointerVisibleShift = 4,
     SpvMemoryAccessMakePointerVisibleKHRShift = 4,
+    SpvMemoryAccessNonPrivatePointerShift = 5,
     SpvMemoryAccessNonPrivatePointerKHRShift = 5,
     SpvMemoryAccessMax = 0x7fffffff,
 } SpvMemoryAccessShift;
@@ -674,8 +697,11 @@
     SpvMemoryAccessVolatileMask = 0x00000001,
     SpvMemoryAccessAlignedMask = 0x00000002,
     SpvMemoryAccessNontemporalMask = 0x00000004,
+    SpvMemoryAccessMakePointerAvailableMask = 0x00000008,
     SpvMemoryAccessMakePointerAvailableKHRMask = 0x00000008,
+    SpvMemoryAccessMakePointerVisibleMask = 0x00000010,
     SpvMemoryAccessMakePointerVisibleKHRMask = 0x00000010,
+    SpvMemoryAccessNonPrivatePointerMask = 0x00000020,
     SpvMemoryAccessNonPrivatePointerKHRMask = 0x00000020,
 } SpvMemoryAccessMask;
 
@@ -685,6 +711,7 @@
     SpvScopeWorkgroup = 2,
     SpvScopeSubgroup = 3,
     SpvScopeInvocation = 4,
+    SpvScopeQueueFamily = 5,
     SpvScopeQueueFamilyKHR = 5,
     SpvScopeMax = 0x7fffffff,
 } SpvScope;
@@ -785,6 +812,8 @@
     SpvCapabilityGroupNonUniformShuffleRelative = 66,
     SpvCapabilityGroupNonUniformClustered = 67,
     SpvCapabilityGroupNonUniformQuad = 68,
+    SpvCapabilityShaderLayer = 69,
+    SpvCapabilityShaderViewportIndex = 70,
     SpvCapabilitySubgroupBallotKHR = 4423,
     SpvCapabilityDrawParameters = 4427,
     SpvCapabilitySubgroupVoteKHR = 4431,
@@ -829,21 +858,36 @@
     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,
     SpvCapabilityCooperativeMatrixNV = 5357,
diff --git a/include/spirv/unified1/spirv.hpp b/include/spirv/unified1/spirv.hpp
index 59fdece..ae99957 100644
--- a/include/spirv/unified1/spirv.hpp
+++ b/include/spirv/unified1/spirv.hpp
@@ -49,11 +49,11 @@
 
 typedef unsigned int Id;
 
-#define SPV_VERSION 0x10400
+#define SPV_VERSION 0x10500
 #define SPV_REVISION 1
 
 static const unsigned int MagicNumber = 0x07230203;
-static const unsigned int Version = 0x00010400;
+static const unsigned int Version = 0x00010500;
 static const unsigned int Revision = 1;
 static const unsigned int OpCodeMask = 0xffff;
 static const unsigned int WordCountShift = 16;
@@ -91,6 +91,7 @@
     AddressingModelLogical = 0,
     AddressingModelPhysical32 = 1,
     AddressingModelPhysical64 = 2,
+    AddressingModelPhysicalStorageBuffer64 = 5348,
     AddressingModelPhysicalStorageBuffer64EXT = 5348,
     AddressingModelMax = 0x7fffffff,
 };
@@ -99,6 +100,7 @@
     MemoryModelSimple = 0,
     MemoryModelGLSL450 = 1,
     MemoryModelOpenCL = 2,
+    MemoryModelVulkan = 3,
     MemoryModelVulkanKHR = 3,
     MemoryModelMax = 0x7fffffff,
 };
@@ -183,6 +185,7 @@
     StorageClassHitAttributeNV = 5339,
     StorageClassIncomingRayPayloadNV = 5342,
     StorageClassShaderRecordBufferNV = 5343,
+    StorageClassPhysicalStorageBuffer = 5349,
     StorageClassPhysicalStorageBufferEXT = 5349,
     StorageClassMax = 0x7fffffff,
 };
@@ -311,9 +314,13 @@
     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,
@@ -330,9 +337,13 @@
     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,
@@ -448,8 +459,11 @@
     DecorationPerViewNV = 5272,
     DecorationPerTaskNV = 5273,
     DecorationPerVertexNV = 5285,
+    DecorationNonUniform = 5300,
     DecorationNonUniformEXT = 5300,
+    DecorationRestrictPointer = 5355,
     DecorationRestrictPointerEXT = 5355,
+    DecorationAliasedPointer = 5356,
     DecorationAliasedPointerEXT = 5356,
     DecorationCounterBuffer = 5634,
     DecorationHlslCounterBufferGOOGLE = 5634,
@@ -630,8 +644,11 @@
     MemorySemanticsCrossWorkgroupMemoryShift = 9,
     MemorySemanticsAtomicCounterMemoryShift = 10,
     MemorySemanticsImageMemoryShift = 11,
+    MemorySemanticsOutputMemoryShift = 12,
     MemorySemanticsOutputMemoryKHRShift = 12,
+    MemorySemanticsMakeAvailableShift = 13,
     MemorySemanticsMakeAvailableKHRShift = 13,
+    MemorySemanticsMakeVisibleShift = 14,
     MemorySemanticsMakeVisibleKHRShift = 14,
     MemorySemanticsVolatileShift = 15,
     MemorySemanticsMax = 0x7fffffff,
@@ -649,8 +666,11 @@
     MemorySemanticsCrossWorkgroupMemoryMask = 0x00000200,
     MemorySemanticsAtomicCounterMemoryMask = 0x00000400,
     MemorySemanticsImageMemoryMask = 0x00000800,
+    MemorySemanticsOutputMemoryMask = 0x00001000,
     MemorySemanticsOutputMemoryKHRMask = 0x00001000,
+    MemorySemanticsMakeAvailableMask = 0x00002000,
     MemorySemanticsMakeAvailableKHRMask = 0x00002000,
+    MemorySemanticsMakeVisibleMask = 0x00004000,
     MemorySemanticsMakeVisibleKHRMask = 0x00004000,
     MemorySemanticsVolatileMask = 0x00008000,
 };
@@ -659,8 +679,11 @@
     MemoryAccessVolatileShift = 0,
     MemoryAccessAlignedShift = 1,
     MemoryAccessNontemporalShift = 2,
+    MemoryAccessMakePointerAvailableShift = 3,
     MemoryAccessMakePointerAvailableKHRShift = 3,
+    MemoryAccessMakePointerVisibleShift = 4,
     MemoryAccessMakePointerVisibleKHRShift = 4,
+    MemoryAccessNonPrivatePointerShift = 5,
     MemoryAccessNonPrivatePointerKHRShift = 5,
     MemoryAccessMax = 0x7fffffff,
 };
@@ -670,8 +693,11 @@
     MemoryAccessVolatileMask = 0x00000001,
     MemoryAccessAlignedMask = 0x00000002,
     MemoryAccessNontemporalMask = 0x00000004,
+    MemoryAccessMakePointerAvailableMask = 0x00000008,
     MemoryAccessMakePointerAvailableKHRMask = 0x00000008,
+    MemoryAccessMakePointerVisibleMask = 0x00000010,
     MemoryAccessMakePointerVisibleKHRMask = 0x00000010,
+    MemoryAccessNonPrivatePointerMask = 0x00000020,
     MemoryAccessNonPrivatePointerKHRMask = 0x00000020,
 };
 
@@ -681,6 +707,7 @@
     ScopeWorkgroup = 2,
     ScopeSubgroup = 3,
     ScopeInvocation = 4,
+    ScopeQueueFamily = 5,
     ScopeQueueFamilyKHR = 5,
     ScopeMax = 0x7fffffff,
 };
@@ -781,6 +808,8 @@
     CapabilityGroupNonUniformShuffleRelative = 66,
     CapabilityGroupNonUniformClustered = 67,
     CapabilityGroupNonUniformQuad = 68,
+    CapabilityShaderLayer = 69,
+    CapabilityShaderViewportIndex = 70,
     CapabilitySubgroupBallotKHR = 4423,
     CapabilityDrawParameters = 4427,
     CapabilitySubgroupVoteKHR = 4431,
@@ -825,21 +854,36 @@
     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,
     CapabilityCooperativeMatrixNV = 5357,
diff --git a/include/spirv/unified1/spirv.hpp11 b/include/spirv/unified1/spirv.hpp11
index 0faa67b..34ee3b4 100644
--- a/include/spirv/unified1/spirv.hpp11
+++ b/include/spirv/unified1/spirv.hpp11
@@ -49,11 +49,11 @@
 
 typedef unsigned int Id;
 
-#define SPV_VERSION 0x10400
+#define SPV_VERSION 0x10500
 #define SPV_REVISION 1
 
 static const unsigned int MagicNumber = 0x07230203;
-static const unsigned int Version = 0x00010400;
+static const unsigned int Version = 0x00010500;
 static const unsigned int Revision = 1;
 static const unsigned int OpCodeMask = 0xffff;
 static const unsigned int WordCountShift = 16;
@@ -91,6 +91,7 @@
     Logical = 0,
     Physical32 = 1,
     Physical64 = 2,
+    PhysicalStorageBuffer64 = 5348,
     PhysicalStorageBuffer64EXT = 5348,
     Max = 0x7fffffff,
 };
@@ -99,6 +100,7 @@
     Simple = 0,
     GLSL450 = 1,
     OpenCL = 2,
+    Vulkan = 3,
     VulkanKHR = 3,
     Max = 0x7fffffff,
 };
@@ -183,6 +185,7 @@
     HitAttributeNV = 5339,
     IncomingRayPayloadNV = 5342,
     ShaderRecordBufferNV = 5343,
+    PhysicalStorageBuffer = 5349,
     PhysicalStorageBufferEXT = 5349,
     Max = 0x7fffffff,
 };
@@ -311,9 +314,13 @@
     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,
@@ -330,9 +337,13 @@
     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,
@@ -448,8 +459,11 @@
     PerViewNV = 5272,
     PerTaskNV = 5273,
     PerVertexNV = 5285,
+    NonUniform = 5300,
     NonUniformEXT = 5300,
+    RestrictPointer = 5355,
     RestrictPointerEXT = 5355,
+    AliasedPointer = 5356,
     AliasedPointerEXT = 5356,
     CounterBuffer = 5634,
     HlslCounterBufferGOOGLE = 5634,
@@ -630,8 +644,11 @@
     CrossWorkgroupMemory = 9,
     AtomicCounterMemory = 10,
     ImageMemory = 11,
+    OutputMemory = 12,
     OutputMemoryKHR = 12,
+    MakeAvailable = 13,
     MakeAvailableKHR = 13,
+    MakeVisible = 14,
     MakeVisibleKHR = 14,
     Volatile = 15,
     Max = 0x7fffffff,
@@ -649,8 +666,11 @@
     CrossWorkgroupMemory = 0x00000200,
     AtomicCounterMemory = 0x00000400,
     ImageMemory = 0x00000800,
+    OutputMemory = 0x00001000,
     OutputMemoryKHR = 0x00001000,
+    MakeAvailable = 0x00002000,
     MakeAvailableKHR = 0x00002000,
+    MakeVisible = 0x00004000,
     MakeVisibleKHR = 0x00004000,
     Volatile = 0x00008000,
 };
@@ -659,8 +679,11 @@
     Volatile = 0,
     Aligned = 1,
     Nontemporal = 2,
+    MakePointerAvailable = 3,
     MakePointerAvailableKHR = 3,
+    MakePointerVisible = 4,
     MakePointerVisibleKHR = 4,
+    NonPrivatePointer = 5,
     NonPrivatePointerKHR = 5,
     Max = 0x7fffffff,
 };
@@ -670,8 +693,11 @@
     Volatile = 0x00000001,
     Aligned = 0x00000002,
     Nontemporal = 0x00000004,
+    MakePointerAvailable = 0x00000008,
     MakePointerAvailableKHR = 0x00000008,
+    MakePointerVisible = 0x00000010,
     MakePointerVisibleKHR = 0x00000010,
+    NonPrivatePointer = 0x00000020,
     NonPrivatePointerKHR = 0x00000020,
 };
 
@@ -681,6 +707,7 @@
     Workgroup = 2,
     Subgroup = 3,
     Invocation = 4,
+    QueueFamily = 5,
     QueueFamilyKHR = 5,
     Max = 0x7fffffff,
 };
@@ -781,6 +808,8 @@
     GroupNonUniformShuffleRelative = 66,
     GroupNonUniformClustered = 67,
     GroupNonUniformQuad = 68,
+    ShaderLayer = 69,
+    ShaderViewportIndex = 70,
     SubgroupBallotKHR = 4423,
     DrawParameters = 4427,
     SubgroupVoteKHR = 4431,
@@ -825,21 +854,36 @@
     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,
     CooperativeMatrixNV = 5357,
diff --git a/include/spirv/unified1/spirv.json b/include/spirv/unified1/spirv.json
index 425f396..b08a1a5 100644
--- a/include/spirv/unified1/spirv.json
+++ b/include/spirv/unified1/spirv.json
@@ -54,7 +54,7 @@
                 ]
             ],
             "MagicNumber": 119734787,
-            "Version": 66560,
+            "Version": 66816,
             "Revision": 1,
             "OpCodeMask": 65535,
             "WordCountShift": 16
@@ -104,6 +104,7 @@
                     "Logical": 0,
                     "Physical32": 1,
                     "Physical64": 2,
+                    "PhysicalStorageBuffer64": 5348,
                     "PhysicalStorageBuffer64EXT": 5348
                 }
             },
@@ -115,6 +116,7 @@
                     "Simple": 0,
                     "GLSL450": 1,
                     "OpenCL": 2,
+                    "Vulkan": 3,
                     "VulkanKHR": 3
                 }
             },
@@ -205,6 +207,7 @@
                     "HitAttributeNV": 5339,
                     "IncomingRayPayloadNV": 5342,
                     "ShaderRecordBufferNV": 5343,
+                    "PhysicalStorageBuffer": 5349,
                     "PhysicalStorageBufferEXT": 5349
                 }
             },
@@ -354,9 +357,13 @@
                     "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
@@ -482,8 +489,11 @@
                     "PerViewNV": 5272,
                     "PerTaskNV": 5273,
                     "PerVertexNV": 5285,
+                    "NonUniform": 5300,
                     "NonUniformEXT": 5300,
+                    "RestrictPointer": 5355,
                     "RestrictPointerEXT": 5355,
+                    "AliasedPointer": 5356,
                     "AliasedPointerEXT": 5356,
                     "CounterBuffer": 5634,
                     "HlslCounterBufferGOOGLE": 5634,
@@ -652,8 +662,11 @@
                     "CrossWorkgroupMemory": 9,
                     "AtomicCounterMemory": 10,
                     "ImageMemory": 11,
+                    "OutputMemory": 12,
                     "OutputMemoryKHR": 12,
+                    "MakeAvailable": 13,
                     "MakeAvailableKHR": 13,
+                    "MakeVisible": 14,
                     "MakeVisibleKHR": 14,
                     "Volatile": 15
                 }
@@ -666,8 +679,11 @@
                     "Volatile": 0,
                     "Aligned": 1,
                     "Nontemporal": 2,
+                    "MakePointerAvailable": 3,
                     "MakePointerAvailableKHR": 3,
+                    "MakePointerVisible": 4,
                     "MakePointerVisibleKHR": 4,
+                    "NonPrivatePointer": 5,
                     "NonPrivatePointerKHR": 5
                 }
             },
@@ -681,6 +697,7 @@
                     "Workgroup": 2,
                     "Subgroup": 3,
                     "Invocation": 4,
+                    "QueueFamily": 5,
                     "QueueFamilyKHR": 5
                 }
             },
@@ -788,6 +805,8 @@
                     "GroupNonUniformShuffleRelative": 66,
                     "GroupNonUniformClustered": 67,
                     "GroupNonUniformQuad": 68,
+                    "ShaderLayer": 69,
+                    "ShaderViewportIndex": 70,
                     "SubgroupBallotKHR": 4423,
                     "DrawParameters": 4427,
                     "SubgroupVoteKHR": 4431,
@@ -832,21 +851,36 @@
                     "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,
                     "CooperativeMatrixNV": 5357,
diff --git a/include/spirv/unified1/spirv.lua b/include/spirv/unified1/spirv.lua
index 7b474fe..27385db 100644
--- a/include/spirv/unified1/spirv.lua
+++ b/include/spirv/unified1/spirv.lua
@@ -44,7 +44,7 @@
 
 spv = {
     MagicNumber = 0x07230203,
-    Version = 0x00010400,
+    Version = 0x00010500,
     Revision = 1,
     OpCodeMask = 0xffff,
     WordCountShift = 16,
@@ -80,6 +80,7 @@
         Logical = 0,
         Physical32 = 1,
         Physical64 = 2,
+        PhysicalStorageBuffer64 = 5348,
         PhysicalStorageBuffer64EXT = 5348,
     },
 
@@ -87,6 +88,7 @@
         Simple = 0,
         GLSL450 = 1,
         OpenCL = 2,
+        Vulkan = 3,
         VulkanKHR = 3,
     },
 
@@ -169,6 +171,7 @@
         HitAttributeNV = 5339,
         IncomingRayPayloadNV = 5342,
         ShaderRecordBufferNV = 5343,
+        PhysicalStorageBuffer = 5349,
         PhysicalStorageBufferEXT = 5349,
     },
 
@@ -290,9 +293,13 @@
         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,
@@ -308,9 +315,13 @@
         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,
@@ -421,8 +432,11 @@
         PerViewNV = 5272,
         PerTaskNV = 5273,
         PerVertexNV = 5285,
+        NonUniform = 5300,
         NonUniformEXT = 5300,
+        RestrictPointer = 5355,
         RestrictPointerEXT = 5355,
+        AliasedPointer = 5356,
         AliasedPointerEXT = 5356,
         CounterBuffer = 5634,
         HlslCounterBufferGOOGLE = 5634,
@@ -598,8 +612,11 @@
         CrossWorkgroupMemory = 9,
         AtomicCounterMemory = 10,
         ImageMemory = 11,
+        OutputMemory = 12,
         OutputMemoryKHR = 12,
+        MakeAvailable = 13,
         MakeAvailableKHR = 13,
+        MakeVisible = 14,
         MakeVisibleKHR = 14,
         Volatile = 15,
     },
@@ -616,8 +633,11 @@
         CrossWorkgroupMemory = 0x00000200,
         AtomicCounterMemory = 0x00000400,
         ImageMemory = 0x00000800,
+        OutputMemory = 0x00001000,
         OutputMemoryKHR = 0x00001000,
+        MakeAvailable = 0x00002000,
         MakeAvailableKHR = 0x00002000,
+        MakeVisible = 0x00004000,
         MakeVisibleKHR = 0x00004000,
         Volatile = 0x00008000,
     },
@@ -626,8 +646,11 @@
         Volatile = 0,
         Aligned = 1,
         Nontemporal = 2,
+        MakePointerAvailable = 3,
         MakePointerAvailableKHR = 3,
+        MakePointerVisible = 4,
         MakePointerVisibleKHR = 4,
+        NonPrivatePointer = 5,
         NonPrivatePointerKHR = 5,
     },
 
@@ -636,8 +659,11 @@
         Volatile = 0x00000001,
         Aligned = 0x00000002,
         Nontemporal = 0x00000004,
+        MakePointerAvailable = 0x00000008,
         MakePointerAvailableKHR = 0x00000008,
+        MakePointerVisible = 0x00000010,
         MakePointerVisibleKHR = 0x00000010,
+        NonPrivatePointer = 0x00000020,
         NonPrivatePointerKHR = 0x00000020,
     },
 
@@ -647,6 +673,7 @@
         Workgroup = 2,
         Subgroup = 3,
         Invocation = 4,
+        QueueFamily = 5,
         QueueFamilyKHR = 5,
     },
 
@@ -743,6 +770,8 @@
         GroupNonUniformShuffleRelative = 66,
         GroupNonUniformClustered = 67,
         GroupNonUniformQuad = 68,
+        ShaderLayer = 69,
+        ShaderViewportIndex = 70,
         SubgroupBallotKHR = 4423,
         DrawParameters = 4427,
         SubgroupVoteKHR = 4431,
@@ -787,21 +816,36 @@
         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,
         CooperativeMatrixNV = 5357,
diff --git a/include/spirv/unified1/spirv.py b/include/spirv/unified1/spirv.py
index 6e2867b..6968e7b 100644
--- a/include/spirv/unified1/spirv.py
+++ b/include/spirv/unified1/spirv.py
@@ -44,7 +44,7 @@
 
 spv = {
     'MagicNumber' : 0x07230203,
-    'Version' : 0x00010400,
+    'Version' : 0x00010500,
     'Revision' : 1,
     'OpCodeMask' : 0xffff,
     'WordCountShift' : 16,
@@ -80,6 +80,7 @@
         'Logical' : 0,
         'Physical32' : 1,
         'Physical64' : 2,
+        'PhysicalStorageBuffer64' : 5348,
         'PhysicalStorageBuffer64EXT' : 5348,
     },
 
@@ -87,6 +88,7 @@
         'Simple' : 0,
         'GLSL450' : 1,
         'OpenCL' : 2,
+        'Vulkan' : 3,
         'VulkanKHR' : 3,
     },
 
@@ -169,6 +171,7 @@
         'HitAttributeNV' : 5339,
         'IncomingRayPayloadNV' : 5342,
         'ShaderRecordBufferNV' : 5343,
+        'PhysicalStorageBuffer' : 5349,
         'PhysicalStorageBufferEXT' : 5349,
     },
 
@@ -290,9 +293,13 @@
         '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,
@@ -308,9 +315,13 @@
         '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,
@@ -421,8 +432,11 @@
         'PerViewNV' : 5272,
         'PerTaskNV' : 5273,
         'PerVertexNV' : 5285,
+        'NonUniform' : 5300,
         'NonUniformEXT' : 5300,
+        'RestrictPointer' : 5355,
         'RestrictPointerEXT' : 5355,
+        'AliasedPointer' : 5356,
         'AliasedPointerEXT' : 5356,
         'CounterBuffer' : 5634,
         'HlslCounterBufferGOOGLE' : 5634,
@@ -598,8 +612,11 @@
         'CrossWorkgroupMemory' : 9,
         'AtomicCounterMemory' : 10,
         'ImageMemory' : 11,
+        'OutputMemory' : 12,
         'OutputMemoryKHR' : 12,
+        'MakeAvailable' : 13,
         'MakeAvailableKHR' : 13,
+        'MakeVisible' : 14,
         'MakeVisibleKHR' : 14,
         'Volatile' : 15,
     },
@@ -616,8 +633,11 @@
         'CrossWorkgroupMemory' : 0x00000200,
         'AtomicCounterMemory' : 0x00000400,
         'ImageMemory' : 0x00000800,
+        'OutputMemory' : 0x00001000,
         'OutputMemoryKHR' : 0x00001000,
+        'MakeAvailable' : 0x00002000,
         'MakeAvailableKHR' : 0x00002000,
+        'MakeVisible' : 0x00004000,
         'MakeVisibleKHR' : 0x00004000,
         'Volatile' : 0x00008000,
     },
@@ -626,8 +646,11 @@
         'Volatile' : 0,
         'Aligned' : 1,
         'Nontemporal' : 2,
+        'MakePointerAvailable' : 3,
         'MakePointerAvailableKHR' : 3,
+        'MakePointerVisible' : 4,
         'MakePointerVisibleKHR' : 4,
+        'NonPrivatePointer' : 5,
         'NonPrivatePointerKHR' : 5,
     },
 
@@ -636,8 +659,11 @@
         'Volatile' : 0x00000001,
         'Aligned' : 0x00000002,
         'Nontemporal' : 0x00000004,
+        'MakePointerAvailable' : 0x00000008,
         'MakePointerAvailableKHR' : 0x00000008,
+        'MakePointerVisible' : 0x00000010,
         'MakePointerVisibleKHR' : 0x00000010,
+        'NonPrivatePointer' : 0x00000020,
         'NonPrivatePointerKHR' : 0x00000020,
     },
 
@@ -647,6 +673,7 @@
         'Workgroup' : 2,
         'Subgroup' : 3,
         'Invocation' : 4,
+        'QueueFamily' : 5,
         'QueueFamilyKHR' : 5,
     },
 
@@ -743,6 +770,8 @@
         'GroupNonUniformShuffleRelative' : 66,
         'GroupNonUniformClustered' : 67,
         'GroupNonUniformQuad' : 68,
+        'ShaderLayer' : 69,
+        'ShaderViewportIndex' : 70,
         'SubgroupBallotKHR' : 4423,
         'DrawParameters' : 4427,
         'SubgroupVoteKHR' : 4431,
@@ -787,21 +816,36 @@
         '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,
         'CooperativeMatrixNV' : 5357,
diff --git a/include/spirv/unified1/spv.d b/include/spirv/unified1/spv.d
index 138b5f0..ec5a161 100644
--- a/include/spirv/unified1/spv.d
+++ b/include/spirv/unified1/spv.d
@@ -51,7 +51,7 @@
 module spv;
 
 enum uint MagicNumber = 0x07230203;
-enum uint Version = 0x00010400;
+enum uint Version = 0x00010500;
 enum uint Revision = 1;
 enum uint OpCodeMask = 0xffff;
 enum uint WordCountShift = 16;
@@ -90,6 +90,7 @@
     Logical = 0,
     Physical32 = 1,
     Physical64 = 2,
+    PhysicalStorageBuffer64 = 5348,
     PhysicalStorageBuffer64EXT = 5348,
 }
 
@@ -98,6 +99,7 @@
     Simple = 0,
     GLSL450 = 1,
     OpenCL = 2,
+    Vulkan = 3,
     VulkanKHR = 3,
 }
 
@@ -182,6 +184,7 @@
     HitAttributeNV = 5339,
     IncomingRayPayloadNV = 5342,
     ShaderRecordBufferNV = 5343,
+    PhysicalStorageBuffer = 5349,
     PhysicalStorageBufferEXT = 5349,
 }
 
@@ -310,9 +313,13 @@
     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,
@@ -329,9 +336,13 @@
     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,
@@ -449,8 +460,11 @@
     PerViewNV = 5272,
     PerTaskNV = 5273,
     PerVertexNV = 5285,
+    NonUniform = 5300,
     NonUniformEXT = 5300,
+    RestrictPointer = 5355,
     RestrictPointerEXT = 5355,
+    AliasedPointer = 5356,
     AliasedPointerEXT = 5356,
     CounterBuffer = 5634,
     HlslCounterBufferGOOGLE = 5634,
@@ -634,8 +648,11 @@
     CrossWorkgroupMemory = 9,
     AtomicCounterMemory = 10,
     ImageMemory = 11,
+    OutputMemory = 12,
     OutputMemoryKHR = 12,
+    MakeAvailable = 13,
     MakeAvailableKHR = 13,
+    MakeVisible = 14,
     MakeVisibleKHR = 14,
     Volatile = 15,
 }
@@ -653,8 +670,11 @@
     CrossWorkgroupMemory = 0x00000200,
     AtomicCounterMemory = 0x00000400,
     ImageMemory = 0x00000800,
+    OutputMemory = 0x00001000,
     OutputMemoryKHR = 0x00001000,
+    MakeAvailable = 0x00002000,
     MakeAvailableKHR = 0x00002000,
+    MakeVisible = 0x00004000,
     MakeVisibleKHR = 0x00004000,
     Volatile = 0x00008000,
 }
@@ -664,8 +684,11 @@
     Volatile = 0,
     Aligned = 1,
     Nontemporal = 2,
+    MakePointerAvailable = 3,
     MakePointerAvailableKHR = 3,
+    MakePointerVisible = 4,
     MakePointerVisibleKHR = 4,
+    NonPrivatePointer = 5,
     NonPrivatePointerKHR = 5,
 }
 
@@ -675,8 +698,11 @@
     Volatile = 0x00000001,
     Aligned = 0x00000002,
     Nontemporal = 0x00000004,
+    MakePointerAvailable = 0x00000008,
     MakePointerAvailableKHR = 0x00000008,
+    MakePointerVisible = 0x00000010,
     MakePointerVisibleKHR = 0x00000010,
+    NonPrivatePointer = 0x00000020,
     NonPrivatePointerKHR = 0x00000020,
 }
 
@@ -687,6 +713,7 @@
     Workgroup = 2,
     Subgroup = 3,
     Invocation = 4,
+    QueueFamily = 5,
     QueueFamilyKHR = 5,
 }
 
@@ -788,6 +815,8 @@
     GroupNonUniformShuffleRelative = 66,
     GroupNonUniformClustered = 67,
     GroupNonUniformQuad = 68,
+    ShaderLayer = 69,
+    ShaderViewportIndex = 70,
     SubgroupBallotKHR = 4423,
     DrawParameters = 4427,
     SubgroupVoteKHR = 4431,
@@ -832,21 +861,36 @@
     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,
     CooperativeMatrixNV = 5357,
diff --git a/tools/buildHeaders/header.cpp b/tools/buildHeaders/header.cpp
index e1e05d0..0f65291 100644
--- a/tools/buildHeaders/header.cpp
+++ b/tools/buildHeaders/header.cpp
@@ -69,7 +69,7 @@
         TPrinter();
 
         static const int         DocMagicNumber = 0x07230203;
-        static const int         DocVersion     = 0x00010400;
+        static const int         DocVersion     = 0x00010500;
         static const int         DocRevision    = 1;
         #define DocRevisionString                "1"
         static const std::string DocCopyright;
diff --git a/tools/buildHeaders/jsonToSpirv.cpp b/tools/buildHeaders/jsonToSpirv.cpp
index e6cab48..2190bd3 100644
--- a/tools/buildHeaders/jsonToSpirv.cpp
+++ b/tools/buildHeaders/jsonToSpirv.cpp
@@ -27,6 +27,7 @@
 #include <algorithm>
 #include <iostream>
 #include <unordered_map>
+#include <unordered_set>
 #include <utility>
 #include <fstream>
 
@@ -40,6 +41,10 @@
 // parameterization information.
 InstructionValues InstructionDesc;
 
+// The ordered list (in printing order) of printing classes
+// (specification subsections).
+PrintingClasses InstructionPrintingClasses;
+
 // Note: There is no entry for OperandOpcode. Use InstructionDesc instead.
 EnumDefinition OperandClassParams[OperandOpcode];
 EnumValues SourceLanguageParams;
@@ -229,20 +234,6 @@
     return bit;
 }
 
-bool ExcludeInstruction(unsigned op, bool buildingHeaders)
-{
-    // Some instructions in the grammar don't need to be reflected
-    // in the specification.
-
-    if (buildingHeaders)
-        return false;
-
-    if (op >= 5699 /* OpVmeImageINTEL */ && op <= 5816 /* OpSubgroupAvcSicGetInterRawSadsINTEL */)
-        return true;
-
-    return false;
-}
-
 void jsonToSpirv(const std::string& jsonPath, bool buildingHeaders)
 {
     // only do this once.
@@ -298,11 +289,36 @@
         return result;
     };
 
+    // set up the printing classes
+    std::unordered_set<std::string> tags;  // short-lived local for error checking below
+    const Json::Value printingClasses = root["instruction_printing_class"];
+    for (const auto& printingClass : printingClasses) {
+        if (printingClass["tag"].asString().size() > 0)
+            tags.insert(printingClass["tag"].asString()); // just for error checking
+        else
+            std::cerr << "Error: each instruction_printing_class requires a non-empty \"tag\"" << std::endl;
+        if (buildingHeaders || printingClass["tag"].asString() != "@exclude") {
+            InstructionPrintingClasses.push_back({printingClass["tag"].asString(),
+                                                  printingClass["heading"].asString()});
+        }
+    }
+
+    // process the instructions
     const Json::Value insts = root["instructions"];
     for (const auto& inst : insts) {
-        const unsigned int opcode = inst["opcode"].asUInt();
-        if (ExcludeInstruction(opcode, buildingHeaders))
+        const auto printingClass = inst["class"].asString();
+        if (printingClass.size() == 0) {
+            std::cerr << "Error: " << inst["opname"].asString()
+                      << " requires a non-empty printing \"class\" tag" << std::endl;
+        }
+        if (!buildingHeaders && printingClass == "@exclude")
             continue;
+        if (tags.find(printingClass) == tags.end()) {
+            std::cerr << "Error: " << inst["opname"].asString()
+                      << " requires a \"class\" declared as a \"tag\" in \"instruction printing_class\""
+                      << std::endl;
+        }
+        const auto opcode = inst["opcode"].asUInt();
         const std::string name = inst["opname"].asString();
         EnumCaps caps = getCaps(inst);
         std::string version = inst["version"].asString();
@@ -324,7 +340,7 @@
             std::move(EnumValue(opcode, name,
                                 std::move(caps), std::move(version), std::move(lastVersion), std::move(exts),
                                 std::move(operands))),
-            defTypeId, defResultId);
+             printingClass, defTypeId, defResultId);
     }
 
     // Specific additional context-dependent operands
diff --git a/tools/buildHeaders/jsonToSpirv.h b/tools/buildHeaders/jsonToSpirv.h
index beec01c..0764de3 100644
--- a/tools/buildHeaders/jsonToSpirv.h
+++ b/tools/buildHeaders/jsonToSpirv.h
@@ -89,6 +89,13 @@
     OperandCount
 };
 
+// For direct representation of the JSON grammar "instruction_printing_class".
+struct PrintingClass {
+    std::string tag;
+    std::string heading;
+};
+using PrintingClasses = std::vector<PrintingClass>;
+
 // Any specific enum can have a set of capabilities that allow it:
 typedef std::vector<std::string> EnumCaps;
 
@@ -238,10 +245,10 @@
 // per OperandParameters above.
 class InstructionValue : public EnumValue {
 public:
-    InstructionValue(EnumValue&& e, bool has_type, bool has_result)
+    InstructionValue(EnumValue&& e, const std::string& printClass, bool has_type, bool has_result)
      : EnumValue(std::move(e)),
+       printingClass(printClass),
        opDesc("TBD"),
-       opClass(0),
        typePresent(has_type),
        resultPresent(has_result),
        alias(this) { }
@@ -257,8 +264,8 @@
     const InstructionValue& getAlias() const { return *alias; }
     bool isAlias() const { return alias != this; }
 
+    std::string printingClass;
     const char* opDesc;
-    int opClass;
 
 protected:
     int typePresent   : 1;
@@ -270,6 +277,7 @@
 
 // Parameterization info for all instructions.
 extern InstructionValues InstructionDesc;
+extern PrintingClasses InstructionPrintingClasses;
 
 // These hold definitions of the enumerants used for operands.
 // This is indexed by OperandClass, but not including OperandOpcode.