Update SPIR-V Headers to 5e3ad389e

Changes:
    5e3ad389e VkspReflection non-sematic: add dispatchId in configuration (#425)
    4f7b471f1 Update bit reservations for loop controsl and memory operands (#424)
    7d500c4d7 Register LLVM SPIR-V Backend as SPIR-V generator (#423)
    04db24d69 Register spq tools for SPIR-V (#399)
    8b246ff75 Add SPV_NV_raw_access_chains (#417)
    b73e168ca Headers support for SPV_INTEL_maximum_registers extension (#416)
    05cc48658 Add SPV_NV_shader_atomic_fp16_vector (#420)
    69597bee0 SPV_QCOM_image_processing2 (#419)
    3b11b0209 cmake: Allow external control of test and install options (#418)
    d3c2a6fa9 remove Kernel from Image Channel Order and Channel Data Type enums (#413)
    e77d03080 Update FPFastMath token reservation (#414)
    1c9115b56 List all licenses in the root LICENSE file. (#410)
    5aa1dd8a1 Support SPV_KHR_quad_control (with fixed line endings) (#412)
    ae6a8b397 SPV_KHR_float_controls2 (#409)
    2b9ba211f Add SPV_KHR_maximal_reconvergence (#407)
    23d4a398c update copyright dates to 2024 (#404)
    7b0309708 Register Zig Compiler tool (#405)
    eb36f6c60 Add a Source Language for Zig (#403)
    bdd1b2ab1 Reserve an FPFastMathMode bit (#401)
    c4a13e774 Bump the github-actions group with 1 update (#400)
    2e3dc2e17 Publish the header for the vulkan-shader-profiler embedded reflection… (#398)
    1bfd27101 Upstream tokens for SPV_INTEL_masked_gather_scatter (#391)
    e11db4d69 feat: Create dependabot.yml (#397)
    1c6bb2743 Add a few missing calls to std::exit on error (#395)
    d5301a8d3 Headers support for FPGAClusterAttributesV2INTEL (#393)
    f1e0d8b51 Add Type-Declaration for extended types (#392)
    d5acd42cb Update SPV_INTEL_long_composites tokens (#375)
    cca08c63c Change token IDs for global_variable_fpga_decorations and global_variable_host_access (#389)
    be3c81e3f It seems d790ced752b5bfc06b6988baadef6eb2d16bdf96 add tabs. (#390)
    38f39dae5 Fix SPV_KHR_workgroup_memory_explicit_layout implicit declare (#388)
    88bc5e321 Headers support for new FPGAMemoryAttributesINTEL (#384)
    4183b260f ClspvReflection non-sematic: add NormalizedSamplerMaskPushConstant (#377)
    e867c0663 Add a Source Language for Slang (#383)
    f62c82d6b Register Slang Compiler for SPIR-V (#382)
    79743b899 Add LiteralFloat to operand_kinds (#380)
    f8a4f5d87 Add headers for SPV_NV_displacement_micromap. (#374)
    d741b924e remove additional version "1.0" from SecondaryViewportRelativeNV (#379)
    fc7d24627 Remove Kernel from ConstantSampler enum values (#378)
    a8af2ce34 Add SPV_INTEL_cache_controls extension support (#376)
    d790ced75 Validate enums have sensible versions and are visible (#369)
    b8b9eb864 Headers support for two Intel extensions (#356)
    45fc02a6c Merge pull request #366 from KonstantinSeurer/main
    b730938c0 Merge pull request #371 from dneto0/cooperative-matrix-enums-fewer-deps
    c43effd54 Revert "Merge pull request #367 from dneto0/coop-matrix-enums-deps"
    124a9665e Merge pull request #367 from dneto0/coop-matrix-enums-deps
    b846bb75c Cooperative matrix enums depend on the extension
    c6e625d2c Add SPV_AMDX_shader_enqueue
    f14a663c8 Merge pull request #361 from kpet/coop-matrix-capabilities-alignment
    ae89923fa Merge pull request #364 from kpet/coopmatrix-khr-suffix
    272be321a Add KHR suffix to Cooperative Matrix Operands
    51b106461 Recommit PR #348 - Add fp-max-error support (#363)
    14914db17 Merge pull request #360 from kpet/make-headers-error-reporting
    0e7d41e27 Report failures in makeHeaders
    66e500034 Merge pull request #362 from KhronosGroup/revert-348-asudarsa/add_fp_max_error_support
    5c9c56177 Revert "Add support for fp_max_error extension"
    ac3b50f84 Remove capabilities on cooperative matrix enums to align with specification
    88d56db61 Merge pull request #348 from asudarsa/asudarsa/add_fp_max_error_support
    f1ba373ef Merge pull request #358 from alan-baker/wgsl-source-language
    5928a8dc7 Merge pull request #353 from joycebrum/main
    7d8a844df Add WGSL source language
    d0006a393 Merge pull request #357 from SirLynix/patch-1
    fb116d7ba Regenerate headers
    d90fd3429 Add NZSL as a source language
    abca639b3 Add NZSLc as a generator
    3469b164e Merge pull request #355 from kpet/spv-khr-cooperative-matrix
    6b5af05fb fix operand names
    3ca8d522a Change kind of FPMaxErrorDecorationINTEL to LiteralFloat
    9b527c0fb Add definitions for SPV_KHR_cooperative_matrix
    10db9d4e1 Merge pull request #354 from kpet/spv-ext-image-raw10-raw12
    72e4c7e8c Add definitions for SVP_EXT_image_raw10_raw12
    0d21d5612 Create SECURITY.md
    6e09e44cd Merge pull request #350 from facebook/meta_enums
    eb2506428 Reserve SPIR-V enums for Meta
    33ec2e8a5 Interchange capability and decoration
    866d16777 Merge remote-tracking branch 'real-origin/main' into asudarsa/add_fp_max_error_support
    8e2ad2748 Merge pull request #338 from heroseh/main
    f48f8eed1 Merge branch 'main' of https://github.com/KhronosGroup/SPIRV-Headers
    730800f6d regenerate headers & correct order of TileImage*ReadAccessEXT Capability enum
    30e0e73ab add HERO_C to the source language enumeration
    69155b22b Merge pull request #347 from jjfumero/update-spirv-tool
    ae96002ae Name and url for the TornadoVM SPIR-V Library Tool updated
    bdbfd019b Merge pull request #346 from kpet/constexpr-maskall
    d8c780f48 Make the generated operators for masks constexpr
    fc2395fd2 Add Hero C Compiler to the vendor list & add C source language to the Source Language enum
    9bebe8674 Add parameters
    d9d7078e3 Merge remote-tracking branch 'real-origin/main' into asudarsa/add_fp_max_error_support
    f46e295b2 Header files changes to support SPV_INTEL_fp_max_error spec extension

Commands:
    ./third_party/update-spirvheaders.sh

Bug: b/123642959
Change-Id: I0e5a3672ba44bb5aeeee333d24febd05f7247190
Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/73371
Tested-by: Ben Clayton <bclayton@google.com>
Reviewed-by: Antonio Maiorano <amaiorano@google.com>
Presubmit-Ready: Romaric Jodin <rjodin@chromium.org>
Tested-by: Romaric Jodin <rjodin@chromium.org>
Reviewed-by: Ben Clayton <bclayton@google.com>
diff --git a/third_party/SPIRV-Headers/.github/dependabot.yml b/third_party/SPIRV-Headers/.github/dependabot.yml
new file mode 100644
index 0000000..2390d8c
--- /dev/null
+++ b/third_party/SPIRV-Headers/.github/dependabot.yml
@@ -0,0 +1,10 @@
+version: 2
+updates:
+  - package-ecosystem: "github-actions"
+    directory: "/"
+    schedule:
+      interval: "monthly"
+    groups:
+      github-actions:
+        patterns:
+          - "*"
diff --git a/third_party/SPIRV-Headers/.github/workflows/presubmit.yml b/third_party/SPIRV-Headers/.github/workflows/presubmit.yml
index 306f50e..d7958ca 100644
--- a/third_party/SPIRV-Headers/.github/workflows/presubmit.yml
+++ b/third_party/SPIRV-Headers/.github/workflows/presubmit.yml
@@ -12,7 +12,7 @@
       matrix:
         os: [ubuntu-latest, macos-latest, windows-latest]
     steps:
-      - uses: actions/checkout@v3
+      - uses: actions/checkout@v4
       - name: Install Ubuntu packages
         if: matrix.os == 'ubuntu-latest'
         run: sudo apt install -y dos2unix
@@ -42,7 +42,7 @@
   test_cmake_min_required:
     runs-on: ubuntu-latest
     steps:
-      - uses: actions/checkout@v3
+      - uses: actions/checkout@v4
       - uses: lukka/get-cmake@latest
         with:
           cmakeVersion: 3.14.0
@@ -54,7 +54,7 @@
   test_cmake_latest:
     runs-on: ubuntu-latest
     steps:
-      - uses: actions/checkout@v3
+      - uses: actions/checkout@v4
       - uses: lukka/get-cmake@latest
       - name: CMake build
         run: |
@@ -64,7 +64,7 @@
   add_subdirectory:
     runs-on: ubuntu-latest
     steps:
-      - uses: actions/checkout@v3
+      - uses: actions/checkout@v4
       - uses: lukka/get-cmake@latest
         with:
           cmakeVersion: 3.15.0
@@ -76,7 +76,7 @@
   find_package:
     runs-on: ubuntu-latest
     steps:
-      - uses: actions/checkout@v3
+      - uses: actions/checkout@v4
       - uses: lukka/get-cmake@latest
         with:
           cmakeVersion: 3.15.0
@@ -92,7 +92,7 @@
   find_pkg_config:
     runs-on: ubuntu-latest
     steps:
-      - uses: actions/checkout@v3
+      - uses: actions/checkout@v4
       - uses: lukka/get-cmake@latest
         with:
           cmakeVersion: 3.15.0
@@ -109,7 +109,7 @@
   find_pkg_config_absolute:
     runs-on: ubuntu-latest
     steps:
-      - uses: actions/checkout@v3
+      - uses: actions/checkout@v4
       - uses: lukka/get-cmake@latest
         with:
           cmakeVersion: 3.15.0
diff --git a/third_party/SPIRV-Headers/BUILD.bazel b/third_party/SPIRV-Headers/BUILD.bazel
index c898ade..25634d9 100644
--- a/third_party/SPIRV-Headers/BUILD.bazel
+++ b/third_party/SPIRV-Headers/BUILD.bazel
@@ -82,6 +82,11 @@
 )
 
 filegroup(
+    name = "spirv_ext_inst_nonsemantic_vkspreflection_grammar_unified1",
+    srcs = ["include/spirv/unified1/extinst.nonsemantic.vkspreflection.grammar.json"],
+)
+
+filegroup(
     name = "spirv_ext_inst_nonsemantic_debugprintf_grammar_unified1",
     srcs = ["include/spirv/unified1/extinst.nonsemantic.debugprintf.grammar.json"],
 )
@@ -128,6 +133,7 @@
         "include/spirv/unified1/GLSL.std.450.h",
         "include/spirv/unified1/NonSemanticClspvReflection.h",
         "include/spirv/unified1/NonSemanticDebugPrintf.h",
+        "include/spirv/unified1/NonSemanticVkspReflection.h",
         "include/spirv/unified1/OpenCL.std.h",
     ],
     includes = ["include"],
diff --git a/third_party/SPIRV-Headers/BUILD.gn b/third_party/SPIRV-Headers/BUILD.gn
index be3f43b..34294e0 100644
--- a/third_party/SPIRV-Headers/BUILD.gn
+++ b/third_party/SPIRV-Headers/BUILD.gn
@@ -1,4 +1,4 @@
-# Copyright (c) 2020 Google LLC
+# Copyright (c) 2020-2024 Google LLC
 #
 # Permission is hereby granted, free of charge, to any person obtaining a copy
 # of this software and/or associated documentation files (the "Materials"),
@@ -35,6 +35,7 @@
     "include/spirv/unified1/GLSL.std.450.h",
     "include/spirv/unified1/NonSemanticClspvReflection.h",
     "include/spirv/unified1/NonSemanticDebugPrintf.h",
+    "include/spirv/unified1/NonSemanticVkspReflection.h",
     "include/spirv/unified1/OpenCL.std.h",
     "include/spirv/unified1/spirv.h",
     "include/spirv/unified1/spirv.hpp",
diff --git a/third_party/SPIRV-Headers/CMakeLists.txt b/third_party/SPIRV-Headers/CMakeLists.txt
index e3d76d9..b018b23 100644
--- a/third_party/SPIRV-Headers/CMakeLists.txt
+++ b/third_party/SPIRV-Headers/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright (c) 2015-2023 The Khronos Group Inc.
+# Copyright (c) 2015-2024 The Khronos Group Inc.
 #
 # Permission is hereby granted, free of charge, to any person obtaining a
 # copy of this software and/or associated documentation files (the
@@ -35,12 +35,14 @@
 add_library(SPIRV-Headers::SPIRV-Headers ALIAS SPIRV-Headers)
 target_include_directories(SPIRV-Headers INTERFACE $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>)
 
-if (PROJECT_IS_TOP_LEVEL)
-    option(BUILD_TESTS "Build the tests")
-    if (BUILD_TESTS)
-        add_subdirectory(tests)
-    endif()
+option(SPIRV_HEADERS_ENABLE_TESTS "Test SPIRV-Headers" ${PROJECT_IS_TOP_LEVEL})
+option(SPIRV_HEADERS_ENABLE_INSTALL "Install SPIRV-Headers" ${PROJECT_IS_TOP_LEVEL})
 
+if(SPIRV_HEADERS_ENABLE_TESTS)
+    add_subdirectory(tests)
+endif()
+
+if(SPIRV_HEADERS_ENABLE_INSTALL)
     include(GNUInstallDirs)
     include(CMakePackageConfigHelpers)
 
diff --git a/third_party/SPIRV-Headers/LICENSE b/third_party/SPIRV-Headers/LICENSE
index 47974f8..a02ace1 100644
--- a/third_party/SPIRV-Headers/LICENSE
+++ b/third_party/SPIRV-Headers/LICENSE
@@ -1,4 +1,5 @@
-Copyright (c) 2015-2018 The Khronos Group Inc.
+Files: All files except for those called out below.
+Copyright (c) 2015-2024 The Khronos Group Inc.
 
 Permission is hereby granted, free of charge, to any person obtaining a
 copy of this software and/or associated documentation files (the
@@ -23,3 +24,80 @@
 CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
 TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
 MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
+
+---
+
+Files: include/spirv/spir-v.xml
+Copyright (c) 2015-2024 The Khronos Group Inc.
+
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and/or associated documentation files (the
+"Materials"), to deal in the Materials without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Materials, and to
+permit persons to whom the Materials are furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be included
+in all copies or substantial portions of the Materials.
+
+THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
+
+---
+
+Files: tools/buildHeaders/jsoncpp/*
+The JsonCpp library's source code, including accompanying documentation,
+tests and demonstration applications, are licensed under the following
+conditions...
+
+The author (Baptiste Lepilleur) explicitly disclaims copyright in all
+jurisdictions which recognize such a disclaimer. In such jurisdictions,
+this software is released into the Public Domain.
+
+In jurisdictions which do not recognize Public Domain property (e.g. Germany as of
+2010), this software is Copyright (c) 2007-2010 by Baptiste Lepilleur, and is
+released under the terms of the MIT License (see below).
+
+In jurisdictions which recognize Public Domain property, the user of this
+software may choose to accept it either as 1) Public Domain, 2) under the
+conditions of the MIT License (see below), or 3) under the terms of dual
+Public Domain/MIT License conditions described here, as they choose.
+
+The MIT License is about as close to Public Domain as a license can get, and is
+described in clear, concise terms at:
+
+   http://en.wikipedia.org/wiki/MIT_License
+
+The full text of the MIT License follows:
+
+========================================================================
+Copyright (c) 2007-2010 Baptiste Lepilleur
+
+Permission is hereby granted, free of charge, to any person
+obtaining a copy of this software and associated documentation
+files (the "Software"), to deal in the Software without
+restriction, including without limitation the rights to use, copy,
+modify, merge, publish, distribute, sublicense, and/or sell copies
+of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
+BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+========================================================================
+
+---
diff --git a/third_party/SPIRV-Headers/README.md b/third_party/SPIRV-Headers/README.md
index 8c7039f..ed38828 100644
--- a/third_party/SPIRV-Headers/README.md
+++ b/third_party/SPIRV-Headers/README.md
@@ -198,7 +198,7 @@
 ## License
 <a name="license"></a>
 ```
-Copyright (c) 2015-2018 The Khronos Group Inc.
+Copyright (c) 2015-2024 The Khronos Group Inc.
 
 Permission is hereby granted, free of charge, to any person obtaining a
 copy of this software and/or associated documentation files (the
diff --git a/third_party/SPIRV-Headers/SECURITY.md b/third_party/SPIRV-Headers/SECURITY.md
new file mode 100644
index 0000000..9b51f0c
--- /dev/null
+++ b/third_party/SPIRV-Headers/SECURITY.md
@@ -0,0 +1,13 @@
+# Security Policy
+
+## Supported Versions
+
+Security updates are applied only to the latest release.
+
+## Reporting a Vulnerability
+
+If you have discovered a security vulnerability in this project, please report it privately. **Do not disclose it as a public issue.** This gives us time to work with you to fix the issue before public exposure, reducing the chance that the exploit will be used before a patch is released.
+
+Please disclose it at [security advisory](https://github.com/KhronosGroup/SPIRV-Headers/security/advisories/new).
+
+This project is maintained by a team of volunteers on a reasonable-effort basis. As such, please give us at least 90 days to work on a fix before public exposure.
diff --git a/third_party/SPIRV-Headers/include/spirv/spir-v.xml b/third_party/SPIRV-Headers/include/spirv/spir-v.xml
index 9dea8d9..52de097 100644
--- a/third_party/SPIRV-Headers/include/spirv/spir-v.xml
+++ b/third_party/SPIRV-Headers/include/spirv/spir-v.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <registry>
     <!--
-    Copyright (c) 2015 The Khronos Group Inc.
+    Copyright (c) 2015-2024 The Khronos Group Inc.
 
     Permission is hereby granted, free of charge, to any person obtaining a
     copy of this software and/or associated documentation files (the
@@ -82,12 +82,19 @@
         <id value="29"  vendor="Mikkosoft Productions" tool="MSP Shader Compiler" comment="Contact Mikko Rasa, tdb@tdb.fi"/>
         <id value="30"  vendor="SpvGenTwo community" tool="SpvGenTwo SPIR-V IR Tools" comment="https://github.com/rAzoR8/SpvGenTwo"/>
         <id value="31"  vendor="Google" tool="Skia SkSL" comment="Contact Ethan Nicholas, ethannicholas@google.com"/>
-        <id value="32"  vendor="TornadoVM" tool="SPIRV Beehive Toolkit" comment="https://github.com/beehive-lab/spirv-beehive-toolkit"/>
+        <id value="32"  vendor="TornadoVM" tool="Beehive SPIRV Toolkit" comment="https://github.com/beehive-lab/beehive-spirv-toolkit"/>
         <id value="33"  vendor="DragonJoker" tool="ShaderWriter" comment="Contact Sylvain Doremus, https://github.com/DragonJoker/ShaderWriter"/>
         <id value="34"  vendor="Rayan Hatout" tool="SPIRVSmith" comment="Contact Rayan Hatout rayan.hatout@gmail.com, Repo https://github.com/rayanht/SPIRVSmith"/>
         <id value="35"  vendor="Saarland University" tool="Shady" comment="Contact Hugo Devillers devillers@uni-saarland.de, Repo https://github.com/Hugobros3/shady"/>
         <id value="36"  vendor="Taichi Graphics" tool="Taichi" comment="Contact Rendong Liang rendongliang@taichi.graphics, Repo https://github.com/taichi-dev/taichi"/>
-        <unused start="37" end="0xFFFF" comment="Tool ID range reservable for future use by vendors"/>
+        <id value="37"  vendor="heroseh" tool="Hero C Compiler" comment="https://github.com/heroseh/hcc"/>
+        <id value="38"  vendor="Meta" tool="SparkSL" comment="Contact Dunfan Lu, dunfanlu@meta.com, https://sparkar.facebook.com/ar-studio/learn/sparksl/sparksl-overview"/>
+        <id value="39"  vendor="SirLynix" tool="Nazara ShaderLang Compiler" comment="Contact Jérôme Leclercq, https://github.com/NazaraEngine/ShaderLang"/>
+        <id value="40"  vendor="NVIDIA" tool="Slang Compiler" comment="Contact Theresa Foley, tfoley@nvidia.com, https://github.com/shader-slang/slang/"/>
+        <id value="41"  vendor="Zig Software Foundation" tool="Zig Compiler" comment="Contact Robin Voetter, https://github.com/Snektron"/>
+        <id value="42"  vendor="Rendong Liang" tool="spq" comment="Contact Rendong Liang, admin@penguinliong.moe, https://github.com/PENGUINLIONG/spq-rs"/>
+        <id value="43"  vendor="LLVM" tool="LLVM SPIR-V Backend" comment="Contact Michal Paszkowski, michal.paszkowski@intel.com, https://github.com/llvm/llvm-project/tree/main/llvm/lib/Target/SPIRV"/>
+        <unused start="44" end="0xFFFF" comment="Tool ID range reservable for future use by vendors"/>
     </ids>
 
     <!-- SECTION: SPIR-V Opcodes and Enumerants -->
@@ -143,6 +150,7 @@
     <ids type="opcode" start="6464" end="6527" vendor="N/A" comment="Blank range to keep alignment with non-opcodes"/>
     <ids type="opcode" start="6528" end="6591" vendor="Codeplay" comment="Contact duncan.brawley@codeplay.com"/>
     <ids type="opcode" start="6592" end="6655" vendor="Saarland University" comment="Contact devillers@cg.uni-saarland.de"/>
+    <ids type="opcode" start="6656" end="6719" vendor="Meta" comment="Contact dunfanlu@meta.com"/>
     <!-- Opcode enumerants to reserve for future use. To get a block, allocate
          multiples of 64 starting at the lowest available point in this
          block and add a corresponding <ids> tag immediately above. Make
@@ -175,6 +183,7 @@
     <ids type="enumerant" start="6464" end="6527" vendor="Mikkosoft Productions" comment="Contact Mikko Rasa, tdb@tdb.fi"/>
     <ids type="enumerant" start="6528" end="6591" vendor="Codeplay" comment="Contact duncan.brawley@codeplay.com"/>
     <ids type="enumerant" start="6592" end="6655" vendor="Saarland University" comment="Contact devillers@cg.uni-saarland.de"/>
+    <ids type="enumerant" start="6656" end="6719" vendor="Meta" comment="Contact dunfanlu@meta.com"/>
     <!-- Enumerants to reserve for future use. To get a block, allocate
          multiples of 64 starting at the lowest available point in this
          block and add a corresponding <ids> tag immediately above. Make
@@ -201,8 +210,8 @@
 
     <!-- Reserved loop control bits -->
     <ids type="LoopControl" start="0" end="15" vendor="Khronos" comment="Reserved LoopControl bits, not available to vendors - see the SPIR-V Specification"/>
-    <ids type="LoopControl" start="16" end="25" vendor="Intel" comment="Contact michael.kinsner@intel.com"/>
-    <ids type="LoopControl" start="26" end="30" comment="Unreserved bits reservable for use by vendors"/>
+    <ids type="LoopControl" start="16" end="27" vendor="Intel" comment="Contact michael.kinsner@intel.com"/>
+    <ids type="LoopControl" start="28" end="30" comment="Unreserved bits reservable for use by vendors"/>
     <ids type="LoopControl" start="31" end="31" vendor="Khronos" comment="Reserved LoopControl bit, not available to vendors"/>
 
 
@@ -242,7 +251,8 @@
     <!-- Reserved FP fast math mode bits -->
     <ids type="FPFastMathMode" start="0" end="15" vendor="Khronos" comment="Reserved FPFastMathMode bits, not available to vendors - see the SPIR-V Specification"/>
     <ids type="FPFastMathMode" start="16" end="17" vendor="Intel" comment="Contact michael.kinsner@intel.com"/>
-    <ids type="FPFastMathMode" start="18" end="31" comment="Unreserved bits reservable for use by vendors"/>
+    <ids type="FPFastMathMode" start="18" end="18" vendor="khronos" comment="Reserved FPFastMathMode bit, not available to vendors - see SPV_KHR_float_controls2"/>
+    <ids type="FPFastMathMode" start="19" end="31" comment="Unreserved bits reservable for use by vendors"/>
 
 
     <!-- SECTION: SPIR-V Memory Operand Bit Reservations -->
@@ -261,8 +271,8 @@
 
     <!-- Reserved memory operand bits -->
     <ids type="MemoryOperand" start="0" end="15" vendor="Khronos" comment="Reserved MemoryOperand bits, not available to vendors - see the SPIR-V Specification"/>
-    <ids type="MemoryOperand" start="16" end="17" vendor="Intel" comment="Contact michael.kinsner@intel.com"/>
-    <ids type="MemoryOperand" start="18" end="30" comment="Unreserved bits reservable for use by vendors"/>
+    <ids type="MemoryOperand" start="16" end="18" vendor="Intel" comment="Contact michael.kinsner@intel.com"/>
+    <ids type="MemoryOperand" start="19" end="30" comment="Unreserved bits reservable for use by vendors"/>
     <ids type="MemoryOperand" start="31" end="31" vendor="Khronos" comment="Reserved MemoryOperand bit, not available to vendors"/>
 
     <!-- SECTION: SPIR-V Image Operand Bit Reservations -->
diff --git a/third_party/SPIRV-Headers/include/spirv/unified1/AMD_gcn_shader.h b/third_party/SPIRV-Headers/include/spirv/unified1/AMD_gcn_shader.h
index 80165ae..e626a7a 100644
--- a/third_party/SPIRV-Headers/include/spirv/unified1/AMD_gcn_shader.h
+++ b/third_party/SPIRV-Headers/include/spirv/unified1/AMD_gcn_shader.h
@@ -1,4 +1,4 @@
-// Copyright (c) 2020 The Khronos Group Inc.
+// Copyright (c) 2020-2024 The Khronos Group Inc.
 // 
 // Permission is hereby granted, free of charge, to any person obtaining a
 // copy of this software and/or associated documentation files (the
diff --git a/third_party/SPIRV-Headers/include/spirv/unified1/AMD_shader_ballot.h b/third_party/SPIRV-Headers/include/spirv/unified1/AMD_shader_ballot.h
index 8a8bb6e..563c0b6 100644
--- a/third_party/SPIRV-Headers/include/spirv/unified1/AMD_shader_ballot.h
+++ b/third_party/SPIRV-Headers/include/spirv/unified1/AMD_shader_ballot.h
@@ -1,4 +1,4 @@
-// Copyright (c) 2020 The Khronos Group Inc.
+// Copyright (c) 2020-2024 The Khronos Group Inc.
 // 
 // Permission is hereby granted, free of charge, to any person obtaining a
 // copy of this software and/or associated documentation files (the
diff --git a/third_party/SPIRV-Headers/include/spirv/unified1/AMD_shader_explicit_vertex_parameter.h b/third_party/SPIRV-Headers/include/spirv/unified1/AMD_shader_explicit_vertex_parameter.h
index 12b6480..e663330 100644
--- a/third_party/SPIRV-Headers/include/spirv/unified1/AMD_shader_explicit_vertex_parameter.h
+++ b/third_party/SPIRV-Headers/include/spirv/unified1/AMD_shader_explicit_vertex_parameter.h
@@ -1,4 +1,4 @@
-// Copyright (c) 2020 The Khronos Group Inc.
+// Copyright (c) 2020-2024 The Khronos Group Inc.
 // 
 // Permission is hereby granted, free of charge, to any person obtaining a
 // copy of this software and/or associated documentation files (the
diff --git a/third_party/SPIRV-Headers/include/spirv/unified1/AMD_shader_trinary_minmax.h b/third_party/SPIRV-Headers/include/spirv/unified1/AMD_shader_trinary_minmax.h
index 1b14997..dd51c5f 100644
--- a/third_party/SPIRV-Headers/include/spirv/unified1/AMD_shader_trinary_minmax.h
+++ b/third_party/SPIRV-Headers/include/spirv/unified1/AMD_shader_trinary_minmax.h
@@ -1,4 +1,4 @@
-// Copyright (c) 2020 The Khronos Group Inc.
+// Copyright (c) 2020-2024 The Khronos Group Inc.
 // 
 // Permission is hereby granted, free of charge, to any person obtaining a
 // copy of this software and/or associated documentation files (the
diff --git a/third_party/SPIRV-Headers/include/spirv/unified1/DebugInfo.h b/third_party/SPIRV-Headers/include/spirv/unified1/DebugInfo.h
index 4657556..a3c0af4 100644
--- a/third_party/SPIRV-Headers/include/spirv/unified1/DebugInfo.h
+++ b/third_party/SPIRV-Headers/include/spirv/unified1/DebugInfo.h
@@ -1,4 +1,4 @@
-// Copyright (c) 2017 The Khronos Group Inc.
+// Copyright (c) 2017-2024 The Khronos Group Inc.
 // 
 // Permission is hereby granted, free of charge, to any person obtaining a copy
 // of this software and/or associated documentation files (the "Materials"),
diff --git a/third_party/SPIRV-Headers/include/spirv/unified1/GLSL.std.450.h b/third_party/SPIRV-Headers/include/spirv/unified1/GLSL.std.450.h
index 54cc00e..0594f90 100644
--- a/third_party/SPIRV-Headers/include/spirv/unified1/GLSL.std.450.h
+++ b/third_party/SPIRV-Headers/include/spirv/unified1/GLSL.std.450.h
@@ -1,5 +1,5 @@
 /*
-** Copyright (c) 2014-2016 The Khronos Group Inc.
+** Copyright (c) 2014-2024 The Khronos Group Inc.
 **
 ** Permission is hereby granted, free of charge, to any person obtaining a copy
 ** of this software and/or associated documentation files (the "Materials"),
diff --git a/third_party/SPIRV-Headers/include/spirv/unified1/NonSemanticClspvReflection.h b/third_party/SPIRV-Headers/include/spirv/unified1/NonSemanticClspvReflection.h
index 1a31549..b6c27fa 100644
--- a/third_party/SPIRV-Headers/include/spirv/unified1/NonSemanticClspvReflection.h
+++ b/third_party/SPIRV-Headers/include/spirv/unified1/NonSemanticClspvReflection.h
@@ -1,4 +1,4 @@
-// Copyright (c) 2020 The Khronos Group Inc.
+// Copyright (c) 2020-2024 The Khronos Group Inc.
 // 
 // Permission is hereby granted, free of charge, to any person obtaining a
 // copy of this software and/or associated documentation files (the
@@ -33,7 +33,7 @@
 #endif
 
 enum {
-    NonSemanticClspvReflectionRevision = 5,
+    NonSemanticClspvReflectionRevision = 6,
     NonSemanticClspvReflectionRevision_BitWidthPadding = 0x7fffffff
 };
 
@@ -78,6 +78,7 @@
     NonSemanticClspvReflectionPrintfInfo = 38,
     NonSemanticClspvReflectionPrintfBufferStorageBuffer = 39,
     NonSemanticClspvReflectionPrintfBufferPointerPushConstant = 40,
+    NonSemanticClspvReflectionNormalizedSamplerMaskPushConstant = 41,
     NonSemanticClspvReflectionInstructionsMax = 0x7fffffff
 };
 
diff --git a/third_party/SPIRV-Headers/include/spirv/unified1/NonSemanticDebugBreak.h b/third_party/SPIRV-Headers/include/spirv/unified1/NonSemanticDebugBreak.h
index 6ec2b5b..8604fe7 100644
--- a/third_party/SPIRV-Headers/include/spirv/unified1/NonSemanticDebugBreak.h
+++ b/third_party/SPIRV-Headers/include/spirv/unified1/NonSemanticDebugBreak.h
@@ -1,4 +1,4 @@
-// Copyright (c) 2020 The Khronos Group Inc.
+// Copyright (c) 2020-2024 The Khronos Group Inc.
 // 
 // Permission is hereby granted, free of charge, to any person obtaining a
 // copy of this software and/or associated documentation files (the
diff --git a/third_party/SPIRV-Headers/include/spirv/unified1/NonSemanticDebugPrintf.h b/third_party/SPIRV-Headers/include/spirv/unified1/NonSemanticDebugPrintf.h
index 83796d7..bc24683 100644
--- a/third_party/SPIRV-Headers/include/spirv/unified1/NonSemanticDebugPrintf.h
+++ b/third_party/SPIRV-Headers/include/spirv/unified1/NonSemanticDebugPrintf.h
@@ -1,4 +1,4 @@
-// Copyright (c) 2020 The Khronos Group Inc.
+// Copyright (c) 2020-2024 The Khronos Group Inc.
 // 
 // Permission is hereby granted, free of charge, to any person obtaining a
 // copy of this software and/or associated documentation files (the
diff --git a/third_party/SPIRV-Headers/include/spirv/unified1/NonSemanticShaderDebugInfo100.h b/third_party/SPIRV-Headers/include/spirv/unified1/NonSemanticShaderDebugInfo100.h
index c52f32f..b276b56 100644
--- a/third_party/SPIRV-Headers/include/spirv/unified1/NonSemanticShaderDebugInfo100.h
+++ b/third_party/SPIRV-Headers/include/spirv/unified1/NonSemanticShaderDebugInfo100.h
@@ -1,4 +1,4 @@
-// Copyright (c) 2018 The Khronos Group Inc.
+// Copyright (c) 2018-2024 The Khronos Group Inc.
 // 
 // Permission is hereby granted, free of charge, to any person obtaining a copy
 // of this software and/or associated documentation files (the "Materials"),
diff --git a/third_party/SPIRV-Headers/include/spirv/unified1/NonSemanticVkspReflection.h b/third_party/SPIRV-Headers/include/spirv/unified1/NonSemanticVkspReflection.h
new file mode 100644
index 0000000..331a3d9
--- /dev/null
+++ b/third_party/SPIRV-Headers/include/spirv/unified1/NonSemanticVkspReflection.h
@@ -0,0 +1,57 @@
+// Copyright (c) 2020-2024 The Khronos Group Inc.
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a
+// copy of this software and/or associated documentation files (the
+// "Materials"), to deal in the Materials without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Materials, and to
+// permit persons to whom the Materials are furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included
+// in all copies or substantial portions of the Materials.
+// 
+// MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS
+// KHRONOS STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS
+// SPECIFICATIONS AND HEADER INFORMATION ARE LOCATED AT
+//    https://www.khronos.org/registry/
+// 
+// THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+// MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
+// 
+
+#ifndef SPIRV_UNIFIED1_NonSemanticVkspReflection_H_
+#define SPIRV_UNIFIED1_NonSemanticVkspReflection_H_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+enum {
+    NonSemanticVkspReflectionRevision = 2,
+    NonSemanticVkspReflectionRevision_BitWidthPadding = 0x7fffffff
+};
+
+enum NonSemanticVkspReflectionInstructions {
+    NonSemanticVkspReflectionConfiguration = 1,
+    NonSemanticVkspReflectionStartCounter = 2,
+    NonSemanticVkspReflectionStopCounter = 3,
+    NonSemanticVkspReflectionPushConstants = 4,
+    NonSemanticVkspReflectionSpecializationMapEntry = 5,
+    NonSemanticVkspReflectionDescriptorSetBuffer = 6,
+    NonSemanticVkspReflectionDescriptorSetImage = 7,
+    NonSemanticVkspReflectionDescriptorSetSampler = 8,
+    NonSemanticVkspReflectionInstructionsMax = 0x7fffffff
+};
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // SPIRV_UNIFIED1_NonSemanticVkspReflection_H_
diff --git a/third_party/SPIRV-Headers/include/spirv/unified1/OpenCL.std.h b/third_party/SPIRV-Headers/include/spirv/unified1/OpenCL.std.h
index 2745e30..ed74f20 100644
--- a/third_party/SPIRV-Headers/include/spirv/unified1/OpenCL.std.h
+++ b/third_party/SPIRV-Headers/include/spirv/unified1/OpenCL.std.h
@@ -1,5 +1,5 @@
 /*
-** Copyright (c) 2015-2019 The Khronos Group Inc.
+** Copyright (c) 2015-2024 The Khronos Group Inc.
 **
 ** Permission is hereby granted, free of charge, to any person obtaining a copy
 ** of this software and/or associated documentation files (the "Materials"),
diff --git a/third_party/SPIRV-Headers/include/spirv/unified1/OpenCLDebugInfo100.h b/third_party/SPIRV-Headers/include/spirv/unified1/OpenCLDebugInfo100.h
index e3847c9..ffbd16f 100644
--- a/third_party/SPIRV-Headers/include/spirv/unified1/OpenCLDebugInfo100.h
+++ b/third_party/SPIRV-Headers/include/spirv/unified1/OpenCLDebugInfo100.h
@@ -1,4 +1,4 @@
-// Copyright (c) 2018 The Khronos Group Inc.
+// Copyright (c) 2018-2024 The Khronos Group Inc.
 // 
 // Permission is hereby granted, free of charge, to any person obtaining a copy
 // of this software and/or associated documentation files (the "Materials"),
diff --git a/third_party/SPIRV-Headers/include/spirv/unified1/extinst.debuginfo.grammar.json b/third_party/SPIRV-Headers/include/spirv/unified1/extinst.debuginfo.grammar.json
index 7d6e8e5..918a9e5 100644
--- a/third_party/SPIRV-Headers/include/spirv/unified1/extinst.debuginfo.grammar.json
+++ b/third_party/SPIRV-Headers/include/spirv/unified1/extinst.debuginfo.grammar.json
@@ -1,6 +1,6 @@
 {
   "copyright" : [
-    "Copyright (c) 2017 The Khronos Group Inc.",
+    "Copyright (c) 2017-2024 The Khronos Group Inc.",
     "",
     "Permission is hereby granted, free of charge, to any person obtaining a copy",
     "of this software and/or associated documentation files (the \"Materials\"),",
diff --git a/third_party/SPIRV-Headers/include/spirv/unified1/extinst.glsl.std.450.grammar.json b/third_party/SPIRV-Headers/include/spirv/unified1/extinst.glsl.std.450.grammar.json
index 3d9f39e..ac8fc6d 100644
--- a/third_party/SPIRV-Headers/include/spirv/unified1/extinst.glsl.std.450.grammar.json
+++ b/third_party/SPIRV-Headers/include/spirv/unified1/extinst.glsl.std.450.grammar.json
@@ -1,6 +1,6 @@
 {
   "copyright" : [
-    "Copyright (c) 2014-2016 The Khronos Group Inc.",
+    "Copyright (c) 2014-2024 The Khronos Group Inc.",
     "",
     "Permission is hereby granted, free of charge, to any person obtaining a copy",
     "of this software and/or associated documentation files (the \"Materials\"),",
diff --git a/third_party/SPIRV-Headers/include/spirv/unified1/extinst.nonsemantic.clspvreflection.grammar.json b/third_party/SPIRV-Headers/include/spirv/unified1/extinst.nonsemantic.clspvreflection.grammar.json
index d6499cc..cfccc80 100644
--- a/third_party/SPIRV-Headers/include/spirv/unified1/extinst.nonsemantic.clspvreflection.grammar.json
+++ b/third_party/SPIRV-Headers/include/spirv/unified1/extinst.nonsemantic.clspvreflection.grammar.json
@@ -1,5 +1,5 @@
 {
-  "revision" : 5,
+  "revision" : 6,
   "instructions" : [
     {
       "opname" : "Kernel",
@@ -395,6 +395,16 @@
       { "kind" : "IdRef", "name" : "Size"},
       { "kind" : "IdRef", "name" : "BufferSize"}
       ]
+    },
+    {
+    "opname" : "NormalizedSamplerMaskPushConstant",
+    "opcode" : 41,
+    "operands" : [
+      { "kind" : "IdRef", "name" : "Kernel" },
+      { "kind" : "IdRef", "name" : "Ordinal" },
+      { "kind" : "IdRef", "name" : "Offset" },
+      { "kind" : "IdRef", "name" : "Size" }
+      ]
     }
   ],
   "operand_kinds" : [
diff --git a/third_party/SPIRV-Headers/include/spirv/unified1/extinst.nonsemantic.shader.debuginfo.100.grammar.json b/third_party/SPIRV-Headers/include/spirv/unified1/extinst.nonsemantic.shader.debuginfo.100.grammar.json
index f3621b0..1eb2859 100644
--- a/third_party/SPIRV-Headers/include/spirv/unified1/extinst.nonsemantic.shader.debuginfo.100.grammar.json
+++ b/third_party/SPIRV-Headers/include/spirv/unified1/extinst.nonsemantic.shader.debuginfo.100.grammar.json
@@ -1,6 +1,6 @@
 {
   "copyright" : [
-    "Copyright (c) 2018 The Khronos Group Inc.",
+    "Copyright (c) 2018-2024 The Khronos Group Inc.",
     "",
     "Permission is hereby granted, free of charge, to any person obtaining a copy",
     "of this software and/or associated documentation files (the \"Materials\"),",
diff --git a/third_party/SPIRV-Headers/include/spirv/unified1/extinst.nonsemantic.vkspreflection.grammar.json b/third_party/SPIRV-Headers/include/spirv/unified1/extinst.nonsemantic.vkspreflection.grammar.json
new file mode 100644
index 0000000..379457b
--- /dev/null
+++ b/third_party/SPIRV-Headers/include/spirv/unified1/extinst.nonsemantic.vkspreflection.grammar.json
@@ -0,0 +1,136 @@
+{
+  "revision" : 2,
+  "instructions" : [
+    {
+      "opname" : "Configuration",
+      "opcode" : 1,
+      "operands" : [
+        {"kind" : "LiteralString", "name" : "enabledExtensionNames" },
+        {"kind" : "LiteralInteger", "name" : "specializationInfoDataSize" },
+        {"kind" : "LiteralString", "name" : "specializationInfoData" },
+        {"kind" : "LiteralString", "name" : "shaderName" },
+        {"kind" : "LiteralString", "name" : "EntryPoint" },
+        {"kind" : "LiteralInteger", "name" : "groupCountX" },
+        {"kind" : "LiteralInteger", "name" : "groupCountY" },
+        {"kind" : "LiteralInteger", "name" : "groupCountZ" },
+        {"kind" : "LiteralInteger", "name" : "dispatchId" }
+      ]
+    },
+    {
+      "opname" : "StartCounter",
+      "opcode" : 2,
+      "operands" : [
+        {"kind" : "LiteralString", "name" : "name" }
+      ]
+    },
+    {
+      "opname" : "StopCounter",
+      "opcode" : 3,
+      "operands" : [
+        {"kind" : "IdRef", "name" : "counter" }
+      ]
+    },
+    {
+      "opname" : "PushConstants",
+      "opcode" : 4,
+      "operands" : [
+        { "kind" : "LiteralInteger", "name" : "offset" },
+        { "kind" : "LiteralInteger", "name" : "size" },
+        { "kind" : "LiteralString", "name" : "pValues" },
+        { "kind" : "LiteralInteger", "name" : "stageFlags" }
+      ]
+    },
+    {
+      "opname" : "SpecializationMapEntry",
+      "opcode" : 5,
+      "operands" : [
+        {"kind" : "LiteralInteger", "name" : "constantID" },
+        {"kind" : "LiteralInteger", "name" : "offset" },
+        {"kind" : "LiteralInteger", "name" : "size" }
+      ]
+    },
+    {
+      "opname" : "DescriptorSetBuffer",
+      "opcode" : 6,
+      "operands" : [
+        { "kind" : "LiteralInteger", "name" : "ds" },
+        { "kind" : "LiteralInteger", "name" : "binding" },
+        { "kind" : "LiteralInteger", "name" : "type" },
+        { "kind" : "LiteralInteger", "name" : "flags" },
+        { "kind" : "LiteralInteger", "name" : "queueFamilyIndexCount" },
+        { "kind" : "LiteralInteger", "name" : "sharingMode" },
+        { "kind" : "LiteralInteger", "name" : "size" },
+        { "kind" : "LiteralInteger", "name" : "usage" },
+        { "kind" : "LiteralInteger", "name" : "range" },
+        { "kind" : "LiteralInteger", "name" : "offset" },
+        { "kind" : "LiteralInteger", "name" : "memorySize" },
+        { "kind" : "LiteralInteger", "name" : "memoryType" },
+        { "kind" : "LiteralInteger", "name" : "bindOffset" }
+      ]
+    },
+    {
+      "opname" : "DescriptorSetImage",
+      "opcode" : 7,
+      "operands" : [
+        { "kind" : "LiteralInteger", "name" : "ds" },
+        { "kind" : "LiteralInteger", "name" : "binding" },
+        { "kind" : "LiteralInteger", "name" : "type" },
+        { "kind" : "LiteralInteger", "name" : "imageLayout"},
+        { "kind" : "LiteralInteger", "name" : "imageFlags"},
+        { "kind" : "LiteralInteger", "name" : "imageType"},
+        { "kind" : "LiteralInteger", "name" : "imageformat"},
+        { "kind" : "LiteralInteger", "name" : "width"},
+        { "kind" : "LiteralInteger", "name" : "height"},
+        { "kind" : "LiteralInteger", "name" : "depth"},
+        { "kind" : "LiteralInteger", "name" : "mipLevels"},
+        { "kind" : "LiteralInteger", "name" : "arrayLayers"},
+        { "kind" : "LiteralInteger", "name" : "samples"},
+        { "kind" : "LiteralInteger", "name" : "tiling"},
+        { "kind" : "LiteralInteger", "name" : "usage"},
+        { "kind" : "LiteralInteger", "name" : "sharingMode"},
+        { "kind" : "LiteralInteger", "name" : "queueFamilyIndexCount"},
+        { "kind" : "LiteralInteger", "name" : "initialLayout"},
+        { "kind" : "LiteralInteger", "name" : "aspectMask"},
+        { "kind" : "LiteralInteger", "name" : "baseMipLevel"},
+        { "kind" : "LiteralInteger", "name" : "levelCount"},
+        { "kind" : "LiteralInteger", "name" : "baseArrayLayer"},
+        { "kind" : "LiteralInteger", "name" : "layerCount"},
+        { "kind" : "LiteralInteger", "name" : "viewFlags"},
+        { "kind" : "LiteralInteger", "name" : "viewType"},
+        { "kind" : "LiteralInteger", "name" : "viewFormat"},
+        { "kind" : "LiteralInteger", "name" : "component_a"},
+        { "kind" : "LiteralInteger", "name" : "component_b"},
+        { "kind" : "LiteralInteger", "name" : "component_g"},
+        { "kind" : "LiteralInteger", "name" : "component_r"},
+        { "kind" : "LiteralInteger", "name" : "memorySize" },
+        { "kind" : "LiteralInteger", "name" : "memoryType" },
+        { "kind" : "LiteralInteger", "name" : "bindOffset"}
+      ]
+    },
+    {
+      "opname" : "DescriptorSetSampler",
+      "opcode" : 8,
+      "operands" : [
+        { "kind" : "LiteralInteger", "name" : "ds" },
+        { "kind" : "LiteralInteger", "name" : "binding" },
+        { "kind" : "LiteralInteger", "name" : "type" },
+        { "kind" : "LiteralInteger", "name" : "flags"},
+        { "kind" : "LiteralInteger", "name" : "magFilter"},
+        { "kind" : "LiteralInteger", "name" : "minFilter"},
+        { "kind" : "LiteralInteger", "name" : "mipmapMode"},
+        { "kind" : "LiteralInteger", "name" : "addressModeU"},
+        { "kind" : "LiteralInteger", "name" : "addressModeV"},
+        { "kind" : "LiteralInteger", "name" : "addressModeW"},
+        { "kind" : "LiteralFloat", "name" : "mipLodBias"},
+        { "kind" : "LiteralInteger", "name" : "anisotropyEnable"},
+        { "kind" : "LiteralFloat", "name" : "maxAnisotropy"},
+        { "kind" : "LiteralInteger", "name" : "compareEnable"},
+        { "kind" : "LiteralInteger", "name" : "compareOp"},
+        { "kind" : "LiteralFloat", "name" : "minLod"},
+        { "kind" : "LiteralFloat", "name" : "maxLod"},
+        { "kind" : "LiteralInteger", "name" : "borderColor"},
+        { "kind" : "LiteralInteger", "name" : "unnormalizedCoordinates"}
+      ]
+    }
+  ]
+}
diff --git a/third_party/SPIRV-Headers/include/spirv/unified1/extinst.opencl.debuginfo.100.grammar.json b/third_party/SPIRV-Headers/include/spirv/unified1/extinst.opencl.debuginfo.100.grammar.json
index 699fe40..53b001c 100644
--- a/third_party/SPIRV-Headers/include/spirv/unified1/extinst.opencl.debuginfo.100.grammar.json
+++ b/third_party/SPIRV-Headers/include/spirv/unified1/extinst.opencl.debuginfo.100.grammar.json
@@ -1,6 +1,6 @@
 {
   "copyright" : [
-    "Copyright (c) 2018 The Khronos Group Inc.",
+    "Copyright (c) 2018-2024 The Khronos Group Inc.",
     "",
     "Permission is hereby granted, free of charge, to any person obtaining a copy",
     "of this software and/or associated documentation files (the \"Materials\"),",
diff --git a/third_party/SPIRV-Headers/include/spirv/unified1/extinst.opencl.std.100.grammar.json b/third_party/SPIRV-Headers/include/spirv/unified1/extinst.opencl.std.100.grammar.json
index 4fe4506..21b7876 100644
--- a/third_party/SPIRV-Headers/include/spirv/unified1/extinst.opencl.std.100.grammar.json
+++ b/third_party/SPIRV-Headers/include/spirv/unified1/extinst.opencl.std.100.grammar.json
@@ -1,6 +1,6 @@
 {
   "copyright" : [
-    "Copyright (c) 2014-2016 The Khronos Group Inc.",
+    "Copyright (c) 2014-2024 The Khronos Group Inc.",
     "",
     "Permission is hereby granted, free of charge, to any person obtaining a copy",
     "of this software and/or associated documentation files (the \"Materials\"),",
diff --git a/third_party/SPIRV-Headers/include/spirv/unified1/spirv.bf b/third_party/SPIRV-Headers/include/spirv/unified1/spirv.bf
index bd12062..92b95c8 100644
--- a/third_party/SPIRV-Headers/include/spirv/unified1/spirv.bf
+++ b/third_party/SPIRV-Headers/include/spirv/unified1/spirv.bf
@@ -1,4 +1,4 @@
-// Copyright (c) 2014-2020 The Khronos Group Inc.
+// Copyright (c) 2014-2024 The Khronos Group Inc.
 // 
 // Permission is hereby granted, free of charge, to any person obtaining a copy
 // of this software and/or associated documentation files (the "Materials"),
@@ -66,6 +66,11 @@
             HLSL = 5,
             CPP_for_OpenCL = 6,
             SYCL = 7,
+            HERO_C = 8,
+            NZSL = 9,
+            WGSL = 10,
+            Slang = 11,
+            Zig = 12,
         }
 
         [AllowDuplicates, CRepr] public enum ExecutionModel
@@ -165,12 +170,19 @@
             RoundingModeRTZ = 4463,
             EarlyAndLateFragmentTestsAMD = 5017,
             StencilRefReplacingEXT = 5027,
+            CoalescingAMDX = 5069,
+            MaxNodeRecursionAMDX = 5071,
+            StaticNumWorkgroupsAMDX = 5072,
+            ShaderIndexAMDX = 5073,
+            MaxNumWorkgroupsAMDX = 5077,
             StencilRefUnchangedFrontAMD = 5079,
             StencilRefGreaterFrontAMD = 5080,
             StencilRefLessFrontAMD = 5081,
             StencilRefUnchangedBackAMD = 5082,
             StencilRefGreaterBackAMD = 5083,
             StencilRefLessBackAMD = 5084,
+            QuadDerivativesKHR = 5088,
+            RequireFullQuadsKHR = 5089,
             OutputLinesEXT = 5269,
             OutputLinesNV = 5269,
             OutputPrimitivesEXT = 5270,
@@ -195,9 +207,14 @@
             NoGlobalOffsetINTEL = 5895,
             NumSIMDWorkitemsINTEL = 5896,
             SchedulerTargetFmaxMhzINTEL = 5903,
+            MaximallyReconvergesKHR = 6023,
+            FPFastMathDefault = 6028,
             StreamingInterfaceINTEL = 6154,
             RegisterMapInterfaceINTEL = 6160,
             NamedBarrierCountINTEL = 6417,
+            MaximumRegistersINTEL = 6461,
+            MaximumRegistersIdINTEL = 6462,
+            NamedMaximumRegistersINTEL = 6463,
         }
 
         [AllowDuplicates, CRepr] public enum StorageClass
@@ -216,6 +233,8 @@
             Image = 11,
             StorageBuffer = 12,
             TileImageEXT = 4172,
+            NodePayloadAMDX = 5068,
+            NodeOutputPayloadAMDX = 5076,
             CallableDataKHR = 5328,
             CallableDataNV = 5328,
             IncomingCallableDataKHR = 5329,
@@ -353,6 +372,8 @@
             Float = 14,
             UnormInt24 = 15,
             UnormInt101010_2 = 16,
+            UnsignedIntRaw10EXT = 19,
+            UnsignedIntRaw12EXT = 20,
         }
 
         [AllowDuplicates, CRepr] public enum ImageOperandsShift
@@ -411,8 +432,11 @@
             NSZ = 2,
             AllowRecip = 3,
             Fast = 4,
+            AllowContract = 16,
             AllowContractFastINTEL = 16,
+            AllowReassoc = 17,
             AllowReassocINTEL = 17,
+            AllowTransform = 18,
         }
 
         [AllowDuplicates, CRepr] public enum FPFastMathModeMask
@@ -423,8 +447,11 @@
             NSZ = 0x00000004,
             AllowRecip = 0x00000008,
             Fast = 0x00000010,
+            AllowContract = 0x00010000,
             AllowContractFastINTEL = 0x00010000,
+            AllowReassoc = 0x00020000,
             AllowReassocINTEL = 0x00020000,
+            AllowTransform = 0x00040000,
         }
 
         [AllowDuplicates, CRepr] public enum FPRoundingMode
@@ -515,7 +542,12 @@
             NoUnsignedWrap = 4470,
             WeightTextureQCOM = 4487,
             BlockMatchTextureQCOM = 4488,
+            BlockMatchSamplerQCOM = 4499,
             ExplicitInterpAMD = 4999,
+            NodeSharesPayloadLimitsWithAMDX = 5019,
+            NodeMaxPayloadsAMDX = 5020,
+            TrackFinishWritingAMDX = 5078,
+            PayloadNodeNameAMDX = 5091,
             OverrideCoverageNV = 5248,
             PassthroughNV = 5250,
             ViewportRelativeNV = 5252,
@@ -565,6 +597,9 @@
             MergeINTEL = 5834,
             BankBitsINTEL = 5835,
             ForcePow2DepthINTEL = 5836,
+            StridesizeINTEL = 5883,
+            WordsizeINTEL = 5884,
+            TrueDualPortINTEL = 5885,
             BurstCoalesceINTEL = 5899,
             CacheSizeINTEL = 5900,
             DontStaticallyCoalesceINTEL = 5901,
@@ -583,6 +618,8 @@
             SingleElementVectorINTEL = 6085,
             VectorComputeCallableFunctionINTEL = 6087,
             MediaBlockIOINTEL = 6140,
+            StallFreeINTEL = 6151,
+            FPMaxErrorDecorationINTEL = 6170,
             LatencyControlLabelINTEL = 6172,
             LatencyControlConstraintINTEL = 6173,
             ConduitKernelArgumentINTEL = 6175,
@@ -594,6 +631,11 @@
             MMHostInterfaceMaxBurstINTEL = 6181,
             MMHostInterfaceWaitRequestINTEL = 6182,
             StableKernelArgumentINTEL = 6183,
+            HostAccessINTEL = 6188,
+            InitModeINTEL = 6190,
+            ImplementInRegisterMapINTEL = 6191,
+            CacheControlLoadINTEL = 6442,
+            CacheControlStoreINTEL = 6443,
         }
 
         [AllowDuplicates, CRepr] public enum BuiltIn
@@ -669,6 +711,8 @@
             BaryCoordSmoothSampleAMD = 4997,
             BaryCoordPullModelAMD = 4998,
             FragStencilRefEXT = 5014,
+            CoalescedInputCountAMDX = 5021,
+            ShaderIndexAMDX = 5073,
             ViewportMaskNV = 5253,
             SecondaryPositionNV = 5257,
             SecondaryViewportMaskNV = 5258,
@@ -722,6 +766,8 @@
             HitKindNV = 5333,
             CurrentRayTimeNV = 5334,
             HitTriangleVertexPositionsKHR = 5335,
+            HitMicroTriangleVertexPositionsNV = 5337,
+            HitMicroTriangleVertexBarycentricsNV = 5344,
             IncomingRayFlagsKHR = 5351,
             IncomingRayFlagsNV = 5351,
             RayGeometryIndexKHR = 5352,
@@ -729,6 +775,8 @@
             SMCountNV = 5375,
             WarpIDNV = 5376,
             SMIDNV = 5377,
+            HitKindFrontFacingMicroTriangleNV = 5405,
+            HitKindBackFacingMicroTriangleNV = 5406,
             CullMaskKHR = 6021,
         }
 
@@ -1036,6 +1084,7 @@
             TextureSampleWeightedQCOM = 4484,
             TextureBoxFilterQCOM = 4485,
             TextureBlockMatchQCOM = 4486,
+            TextureBlockMatch2QCOM = 4498,
             Float16ImageAMD = 5008,
             ImageGatherBiasLodAMD = 5009,
             FragmentMaskAMD = 5010,
@@ -1043,6 +1092,8 @@
             ImageReadWriteLodAMD = 5015,
             Int64ImageEXT = 5016,
             ShaderClockKHR = 5055,
+            ShaderEnqueueAMDX = 5067,
+            QuadControlKHR = 5087,
             SampleMaskOverrideCoverageNV = 5249,
             GeometryShaderPassthroughNV = 5251,
             ShaderViewportIndexLayerEXT = 5254,
@@ -1102,10 +1153,14 @@
             FragmentShaderPixelInterlockEXT = 5378,
             DemoteToHelperInvocation = 5379,
             DemoteToHelperInvocationEXT = 5379,
+            DisplacementMicromapNV = 5380,
             RayTracingOpacityMicromapEXT = 5381,
             ShaderInvocationReorderNV = 5383,
             BindlessTextureNV = 5390,
             RayQueryPositionFetchKHR = 5391,
+            AtomicFloat16VectorNV = 5404,
+            RayTracingDisplacementMicromapNV = 5409,
+            RawAccessChainsNV = 5414,
             SubgroupShuffleINTEL = 5568,
             SubgroupBufferBlockIOINTEL = 5569,
             SubgroupImageBlockIOINTEL = 5570,
@@ -1157,20 +1212,29 @@
             DotProduct = 6019,
             DotProductKHR = 6019,
             RayCullMaskKHR = 6020,
+            CooperativeMatrixKHR = 6022,
             BitInstructions = 6025,
             GroupNonUniformRotateKHR = 6026,
+            FloatControls2 = 6029,
             AtomicFloat32AddEXT = 6033,
             AtomicFloat64AddEXT = 6034,
-            LongConstantCompositeINTEL = 6089,
+            LongCompositesINTEL = 6089,
             OptNoneINTEL = 6094,
             AtomicFloat16AddEXT = 6095,
             DebugInfoModuleINTEL = 6114,
             BFloat16ConversionINTEL = 6115,
             SplitBarrierINTEL = 6141,
+            FPGAClusterAttributesV2INTEL = 6150,
             FPGAKernelAttributesv2INTEL = 6161,
+            FPMaxErrorINTEL = 6169,
             FPGALatencyControlINTEL = 6171,
             FPGAArgumentInterfacesINTEL = 6174,
+            GlobalVariableHostAccessINTEL = 6187,
+            GlobalVariableFPGADecorationsINTEL = 6189,
             GroupUniformArithmeticKHR = 6400,
+            MaskedGatherScatterINTEL = 6427,
+            CacheControlsINTEL = 6441,
+            RegisterLimitsINTEL = 6460,
         }
 
         [AllowDuplicates, CRepr] public enum RayFlagsShift
@@ -1278,6 +1342,87 @@
             PackedVectorFormat4x8BitKHR = 0,
         }
 
+        [AllowDuplicates, CRepr] public enum CooperativeMatrixOperandsShift
+        {
+            MatrixASignedComponentsKHR = 0,
+            MatrixBSignedComponentsKHR = 1,
+            MatrixCSignedComponentsKHR = 2,
+            MatrixResultSignedComponentsKHR = 3,
+            SaturatingAccumulationKHR = 4,
+        }
+
+        [AllowDuplicates, CRepr] public enum CooperativeMatrixOperandsMask
+        {
+            MaskNone = 0,
+            MatrixASignedComponentsKHR = 0x00000001,
+            MatrixBSignedComponentsKHR = 0x00000002,
+            MatrixCSignedComponentsKHR = 0x00000004,
+            MatrixResultSignedComponentsKHR = 0x00000008,
+            SaturatingAccumulationKHR = 0x00000010,
+        }
+
+        [AllowDuplicates, CRepr] public enum CooperativeMatrixLayout
+        {
+            RowMajorKHR = 0,
+            ColumnMajorKHR = 1,
+        }
+
+        [AllowDuplicates, CRepr] public enum CooperativeMatrixUse
+        {
+            MatrixAKHR = 0,
+            MatrixBKHR = 1,
+            MatrixAccumulatorKHR = 2,
+        }
+
+        [AllowDuplicates, CRepr] public enum InitializationModeQualifier
+        {
+            InitOnDeviceReprogramINTEL = 0,
+            InitOnDeviceResetINTEL = 1,
+        }
+
+        [AllowDuplicates, CRepr] public enum HostAccessQualifier
+        {
+            NoneINTEL = 0,
+            ReadINTEL = 1,
+            WriteINTEL = 2,
+            ReadWriteINTEL = 3,
+        }
+
+        [AllowDuplicates, CRepr] public enum LoadCacheControl
+        {
+            UncachedINTEL = 0,
+            CachedINTEL = 1,
+            StreamingINTEL = 2,
+            InvalidateAfterReadINTEL = 3,
+            ConstCachedINTEL = 4,
+        }
+
+        [AllowDuplicates, CRepr] public enum StoreCacheControl
+        {
+            UncachedINTEL = 0,
+            WriteThroughINTEL = 1,
+            WriteBackINTEL = 2,
+            StreamingINTEL = 3,
+        }
+
+        [AllowDuplicates, CRepr] public enum NamedMaximumNumberOfRegisters
+        {
+            AutoINTEL = 0,
+        }
+
+        [AllowDuplicates, CRepr] public enum RawAccessChainOperandsShift
+        {
+            RobustnessPerComponentNV = 0,
+            RobustnessPerElementNV = 1,
+        }
+
+        [AllowDuplicates, CRepr] public enum RawAccessChainOperandsMask
+        {
+            MaskNone = 0,
+            RobustnessPerComponentNV = 0x00000001,
+            RobustnessPerElementNV = 0x00000002,
+        }
+
         [AllowDuplicates, CRepr] public enum Op
         {
             OpNop = 0,
@@ -1652,6 +1797,11 @@
             OpUDotAccSatKHR = 4454,
             OpSUDotAccSat = 4455,
             OpSUDotAccSatKHR = 4455,
+            OpTypeCooperativeMatrixKHR = 4456,
+            OpCooperativeMatrixLoadKHR = 4457,
+            OpCooperativeMatrixStoreKHR = 4458,
+            OpCooperativeMatrixMulAddKHR = 4459,
+            OpCooperativeMatrixLengthKHR = 4460,
             OpTypeRayQueryKHR = 4472,
             OpRayQueryInitializeKHR = 4473,
             OpRayQueryTerminateKHR = 4474,
@@ -1663,6 +1813,10 @@
             OpImageBoxFilterQCOM = 4481,
             OpImageBlockMatchSSDQCOM = 4482,
             OpImageBlockMatchSADQCOM = 4483,
+            OpImageBlockMatchWindowSSDQCOM = 4500,
+            OpImageBlockMatchWindowSADQCOM = 4501,
+            OpImageBlockMatchGatherSSDQCOM = 4502,
+            OpImageBlockMatchGatherSADQCOM = 4503,
             OpGroupIAddNonUniformAMD = 5000,
             OpGroupFAddNonUniformAMD = 5001,
             OpGroupFMinNonUniformAMD = 5002,
@@ -1674,6 +1828,11 @@
             OpFragmentMaskFetchAMD = 5011,
             OpFragmentFetchAMD = 5012,
             OpReadClockKHR = 5056,
+            OpFinalizeNodePayloadsAMDX = 5075,
+            OpFinishWritingNodePayloadAMDX = 5078,
+            OpInitializeNodePayloadsAMDX = 5090,
+            OpGroupNonUniformQuadAllKHR = 5110,
+            OpGroupNonUniformQuadAnyKHR = 5111,
             OpHitObjectRecordHitMotionNV = 5249,
             OpHitObjectRecordHitWithIndexMotionNV = 5250,
             OpHitObjectRecordMissMotionNV = 5251,
@@ -1712,6 +1871,8 @@
             OpSetMeshOutputsEXT = 5295,
             OpGroupNonUniformPartitionNV = 5296,
             OpWritePackedPrimitiveIndices4x8NV = 5299,
+            OpFetchMicroTriangleVertexPositionNV = 5300,
+            OpFetchMicroTriangleVertexBarycentricNV = 5301,
             OpReportIntersectionKHR = 5334,
             OpReportIntersectionNV = 5334,
             OpIgnoreIntersectionNV = 5335,
@@ -1740,6 +1901,7 @@
             OpConvertUToSampledImageNV = 5395,
             OpConvertSampledImageToUNV = 5396,
             OpSamplerImageAddressingModeNV = 5397,
+            OpRawAccessChainNV = 5398,
             OpSubgroupShuffleINTEL = 5571,
             OpSubgroupShuffleDownINTEL = 5572,
             OpSubgroupShuffleUpINTEL = 5573,
@@ -1981,6 +2143,7 @@
             OpTypeStructContinuedINTEL = 6090,
             OpConstantCompositeContinuedINTEL = 6091,
             OpSpecConstantCompositeContinuedINTEL = 6092,
+            OpCompositeConstructContinuedINTEL = 6096,
             OpConvertFToBF16INTEL = 6116,
             OpConvertBF16ToFINTEL = 6117,
             OpControlBarrierArriveINTEL = 6142,
@@ -1993,6 +2156,8 @@
             OpGroupLogicalAndKHR = 6406,
             OpGroupLogicalOrKHR = 6407,
             OpGroupLogicalXorKHR = 6408,
+            OpMaskedGatherINTEL = 6428,
+            OpMaskedScatterINTEL = 6429,
         }
     }
 }
diff --git a/third_party/SPIRV-Headers/include/spirv/unified1/spirv.core.grammar.json b/third_party/SPIRV-Headers/include/spirv/unified1/spirv.core.grammar.json
index 377e2ec..5d904ca 100644
--- a/third_party/SPIRV-Headers/include/spirv/unified1/spirv.core.grammar.json
+++ b/third_party/SPIRV-Headers/include/spirv/unified1/spirv.core.grammar.json
@@ -1,6 +1,6 @@
 {
   "copyright" : [
-    "Copyright (c) 2014-2020 The Khronos Group Inc.",
+    "Copyright (c) 2014-2024 The Khronos Group Inc.",
     "",
     "Permission is hereby granted, free of charge, to any person obtaining a copy",
     "of this software and/or associated documentation files (the \"Materials\"),",
@@ -137,7 +137,8 @@
     {
       "opname" : "OpNop",
       "class"  : "Miscellaneous",
-      "opcode" : 0
+      "opcode" : 0,
+      "version" : "1.0"
     },
     {
       "opname" : "OpUndef",
@@ -146,7 +147,8 @@
       "operands" : [
         { "kind" : "IdResultType" },
         { "kind" : "IdResult" }
-      ]
+      ],
+      "version" : "1.0"
     },
     {
       "opname" : "OpSourceContinued",
@@ -154,7 +156,8 @@
       "opcode" : 2,
       "operands" : [
         { "kind" : "LiteralString", "name" : "'Continued Source'" }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpSource",
@@ -165,7 +168,8 @@
         { "kind" : "LiteralInteger",                     "name" : "'Version'" },
         { "kind" : "IdRef",          "quantifier" : "?", "name" : "'File'" },
         { "kind" : "LiteralString",  "quantifier" : "?", "name" : "'Source'" }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpSourceExtension",
@@ -173,7 +177,8 @@
       "opcode" : 4,
       "operands" : [
         { "kind" : "LiteralString", "name" : "'Extension'" }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpName",
@@ -182,7 +187,8 @@
       "operands" : [
         { "kind" : "IdRef",         "name" : "'Target'" },
         { "kind" : "LiteralString", "name" : "'Name'" }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpMemberName",
@@ -192,7 +198,8 @@
         { "kind" : "IdRef",          "name" : "'Type'" },
         { "kind" : "LiteralInteger", "name" : "'Member'" },
         { "kind" : "LiteralString",  "name" : "'Name'" }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpString",
@@ -201,7 +208,8 @@
       "operands" : [
         { "kind" : "IdResult" },
         { "kind" : "LiteralString", "name" : "'String'" }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpLine",
@@ -211,7 +219,8 @@
         { "kind" : "IdRef",          "name" : "'File'" },
         { "kind" : "LiteralInteger", "name" : "'Line'" },
         { "kind" : "LiteralInteger", "name" : "'Column'" }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpExtension",
@@ -219,7 +228,8 @@
       "opcode" : 10,
       "operands" : [
         { "kind" : "LiteralString", "name" : "'Name'" }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpExtInstImport",
@@ -228,7 +238,8 @@
       "operands" : [
         { "kind" : "IdResult" },
         { "kind" : "LiteralString", "name" : "'Name'" }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpExtInst",
@@ -240,7 +251,8 @@
         { "kind" : "IdRef",                                     "name" : "'Set'" },
         { "kind" : "LiteralExtInstInteger",                     "name" : "'Instruction'" },
         { "kind" : "IdRef",                 "quantifier" : "*", "name" : "'Operand 1', +\n'Operand 2', +\n..." }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpMemoryModel",
@@ -249,7 +261,8 @@
       "operands" : [
         { "kind" : "AddressingModel" },
         { "kind" : "MemoryModel" }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpEntryPoint",
@@ -260,7 +273,8 @@
         { "kind" : "IdRef",                              "name" : "'Entry Point'" },
         { "kind" : "LiteralString",                      "name" : "'Name'" },
         { "kind" : "IdRef",          "quantifier" : "*", "name" : "'Interface'" }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpExecutionMode",
@@ -269,7 +283,8 @@
       "operands" : [
         { "kind" : "IdRef",         "name" : "'Entry Point'" },
         { "kind" : "ExecutionMode", "name" : "'Mode'" }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpCapability",
@@ -277,7 +292,8 @@
       "opcode" : 17,
       "operands" : [
         { "kind" : "Capability", "name" : "'Capability'" }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpTypeVoid",
@@ -285,7 +301,8 @@
       "opcode" : 19,
       "operands" : [
         { "kind" : "IdResult" }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpTypeBool",
@@ -293,7 +310,8 @@
       "opcode" : 20,
       "operands" : [
         { "kind" : "IdResult" }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpTypeInt",
@@ -303,7 +321,8 @@
         { "kind" : "IdResult" },
         { "kind" : "LiteralInteger", "name" : "'Width'" },
         { "kind" : "LiteralInteger", "name" : "'Signedness'" }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpTypeFloat",
@@ -312,7 +331,8 @@
       "operands" : [
         { "kind" : "IdResult" },
         { "kind" : "LiteralInteger", "name" : "'Width'" }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpTypeVector",
@@ -322,7 +342,8 @@
         { "kind" : "IdResult" },
         { "kind" : "IdRef",          "name" : "'Component Type'" },
         { "kind" : "LiteralInteger", "name" : "'Component Count'" }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpTypeMatrix",
@@ -333,7 +354,8 @@
         { "kind" : "IdRef",          "name" : "'Column Type'" },
         { "kind" : "LiteralInteger", "name" : "'Column Count'" }
       ],
-      "capabilities" : [ "Matrix" ]
+      "capabilities" : [ "Matrix" ],
+      "version": "1.0"
     },
     {
       "opname" : "OpTypeImage",
@@ -349,7 +371,8 @@
         { "kind" : "LiteralInteger",                      "name" : "'Sampled'" },
         { "kind" : "ImageFormat" },
         { "kind" : "AccessQualifier", "quantifier" : "?" }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpTypeSampler",
@@ -357,7 +380,8 @@
       "opcode" : 26,
       "operands" : [
         { "kind" : "IdResult" }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpTypeSampledImage",
@@ -366,7 +390,8 @@
       "operands" : [
         { "kind" : "IdResult" },
         { "kind" : "IdRef",    "name" : "'Image Type'" }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpTypeArray",
@@ -376,7 +401,8 @@
         { "kind" : "IdResult" },
         { "kind" : "IdRef",    "name" : "'Element Type'" },
         { "kind" : "IdRef",    "name" : "'Length'" }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpTypeRuntimeArray",
@@ -386,7 +412,8 @@
         { "kind" : "IdResult" },
         { "kind" : "IdRef",    "name" : "'Element Type'" }
       ],
-      "capabilities" : [ "Shader" ]
+      "capabilities" : [ "Shader" ],
+      "version": "1.0"
     },
     {
       "opname" : "OpTypeStruct",
@@ -395,7 +422,8 @@
       "operands" : [
         { "kind" : "IdResult" },
         { "kind" : "IdRef",    "quantifier" : "*", "name" : "'Member 0 type', +\n'member 1 type', +\n..." }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpTypeOpaque",
@@ -405,7 +433,8 @@
         { "kind" : "IdResult" },
         { "kind" : "LiteralString", "name" : "The name of the opaque type." }
       ],
-      "capabilities" : [ "Kernel" ]
+      "capabilities" : [ "Kernel" ],
+      "version": "1.0"
     },
     {
       "opname" : "OpTypePointer",
@@ -415,7 +444,8 @@
         { "kind" : "IdResult" },
         { "kind" : "StorageClass" },
         { "kind" : "IdRef",        "name" : "'Type'" }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpTypeFunction",
@@ -425,7 +455,8 @@
         { "kind" : "IdResult" },
         { "kind" : "IdRef",                        "name" : "'Return Type'" },
         { "kind" : "IdRef",    "quantifier" : "*", "name" : "'Parameter 0 Type', +\n'Parameter 1 Type', +\n..." }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpTypeEvent",
@@ -434,7 +465,8 @@
       "operands" : [
         { "kind" : "IdResult" }
       ],
-      "capabilities" : [ "Kernel" ]
+      "capabilities" : [ "Kernel" ],
+      "version": "1.0"
     },
     {
       "opname" : "OpTypeDeviceEvent",
@@ -443,7 +475,8 @@
       "operands" : [
         { "kind" : "IdResult" }
       ],
-      "capabilities" : [ "DeviceEnqueue" ]
+      "capabilities" : [ "DeviceEnqueue" ],
+      "version": "1.0"
     },
     {
       "opname" : "OpTypeReserveId",
@@ -452,7 +485,8 @@
       "operands" : [
         { "kind" : "IdResult" }
       ],
-      "capabilities" : [ "Pipes" ]
+      "capabilities" : [ "Pipes" ],
+      "version": "1.0"
     },
     {
       "opname" : "OpTypeQueue",
@@ -461,7 +495,8 @@
       "operands" : [
         { "kind" : "IdResult" }
       ],
-      "capabilities" : [ "DeviceEnqueue" ]
+      "capabilities" : [ "DeviceEnqueue" ],
+      "version": "1.0"
     },
     {
       "opname" : "OpTypePipe",
@@ -471,7 +506,8 @@
         { "kind" : "IdResult" },
         { "kind" : "AccessQualifier", "name" : "'Qualifier'" }
       ],
-      "capabilities" : [ "Pipes" ]
+      "capabilities" : [ "Pipes" ],
+      "version": "1.0"
     },
     {
       "opname" : "OpTypeForwardPointer",
@@ -484,7 +520,8 @@
       "capabilities" : [
         "Addresses",
         "PhysicalStorageBufferAddresses"
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpConstantTrue",
@@ -493,7 +530,8 @@
       "operands" : [
         { "kind" : "IdResultType" },
         { "kind" : "IdResult" }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpConstantFalse",
@@ -502,7 +540,8 @@
       "operands" : [
         { "kind" : "IdResultType" },
         { "kind" : "IdResult" }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpConstant",
@@ -512,7 +551,8 @@
         { "kind" : "IdResultType" },
         { "kind" : "IdResult" },
         { "kind" : "LiteralContextDependentNumber", "name" : "'Value'" }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpConstantComposite",
@@ -522,7 +562,8 @@
         { "kind" : "IdResultType" },
         { "kind" : "IdResult" },
         { "kind" : "IdRef",        "quantifier" : "*", "name" : "'Constituents'" }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpConstantSampler",
@@ -535,7 +576,8 @@
         { "kind" : "LiteralInteger",        "name" : "'Param'" },
         { "kind" : "SamplerFilterMode" }
       ],
-      "capabilities" : [ "LiteralSampler" ]
+      "capabilities" : [ "LiteralSampler" ],
+      "version": "1.0"
     },
     {
       "opname" : "OpConstantNull",
@@ -544,7 +586,8 @@
       "operands" : [
         { "kind" : "IdResultType" },
         { "kind" : "IdResult" }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpSpecConstantTrue",
@@ -553,7 +596,8 @@
       "operands" : [
         { "kind" : "IdResultType" },
         { "kind" : "IdResult" }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpSpecConstantFalse",
@@ -562,7 +606,8 @@
       "operands" : [
         { "kind" : "IdResultType" },
         { "kind" : "IdResult" }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpSpecConstant",
@@ -572,7 +617,8 @@
         { "kind" : "IdResultType" },
         { "kind" : "IdResult" },
         { "kind" : "LiteralContextDependentNumber", "name" : "'Value'" }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpSpecConstantComposite",
@@ -582,7 +628,8 @@
         { "kind" : "IdResultType" },
         { "kind" : "IdResult" },
         { "kind" : "IdRef",        "quantifier" : "*", "name" : "'Constituents'" }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpSpecConstantOp",
@@ -592,7 +639,8 @@
         { "kind" : "IdResultType" },
         { "kind" : "IdResult" },
         { "kind" : "LiteralSpecConstantOpInteger", "name" : "'Opcode'" }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpFunction",
@@ -603,7 +651,8 @@
         { "kind" : "IdResult" },
         { "kind" : "FunctionControl" },
         { "kind" : "IdRef",           "name" : "'Function Type'" }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpFunctionParameter",
@@ -612,12 +661,14 @@
       "operands" : [
         { "kind" : "IdResultType" },
         { "kind" : "IdResult" }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpFunctionEnd",
       "class"  : "Function",
-      "opcode" : 56
+      "opcode" : 56,
+      "version" : "1.0"
     },
     {
       "opname" : "OpFunctionCall",
@@ -628,7 +679,8 @@
         { "kind" : "IdResult" },
         { "kind" : "IdRef",                            "name" : "'Function'" },
         { "kind" : "IdRef",        "quantifier" : "*", "name" : "'Argument 0', +\n'Argument 1', +\n..." }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpVariable",
@@ -639,7 +691,8 @@
         { "kind" : "IdResult" },
         { "kind" : "StorageClass" },
         { "kind" : "IdRef",        "quantifier" : "?", "name" : "'Initializer'" }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpImageTexelPointer",
@@ -651,7 +704,8 @@
         { "kind" : "IdRef",        "name" : "'Image'" },
         { "kind" : "IdRef",        "name" : "'Coordinate'" },
         { "kind" : "IdRef",        "name" : "'Sample'" }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpLoad",
@@ -662,7 +716,8 @@
         { "kind" : "IdResult" },
         { "kind" : "IdRef",                            "name" : "'Pointer'" },
         { "kind" : "MemoryAccess", "quantifier" : "?" }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpStore",
@@ -672,7 +727,8 @@
         { "kind" : "IdRef",                            "name" : "'Pointer'" },
         { "kind" : "IdRef",                            "name" : "'Object'" },
         { "kind" : "MemoryAccess", "quantifier" : "?" }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpCopyMemory",
@@ -683,7 +739,8 @@
         { "kind" : "IdRef",                            "name" : "'Source'" },
         { "kind" : "MemoryAccess", "quantifier" : "?" },
         { "kind" : "MemoryAccess", "quantifier" : "?" }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpCopyMemorySized",
@@ -696,7 +753,8 @@
         { "kind" : "MemoryAccess", "quantifier" : "?" },
         { "kind" : "MemoryAccess", "quantifier" : "?" }
       ],
-      "capabilities" : [ "Addresses" ]
+      "capabilities" : [ "Addresses" ],
+      "version": "1.0"
     },
     {
       "opname" : "OpAccessChain",
@@ -707,7 +765,8 @@
         { "kind" : "IdResult" },
         { "kind" : "IdRef",                            "name" : "'Base'" },
         { "kind" : "IdRef",        "quantifier" : "*", "name" : "'Indexes'" }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpInBoundsAccessChain",
@@ -718,7 +777,8 @@
         { "kind" : "IdResult" },
         { "kind" : "IdRef",                            "name" : "'Base'" },
         { "kind" : "IdRef",        "quantifier" : "*", "name" : "'Indexes'" }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpPtrAccessChain",
@@ -736,7 +796,8 @@
         "VariablePointers",
         "VariablePointersStorageBuffer",
         "PhysicalStorageBufferAddresses"
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpArrayLength",
@@ -748,7 +809,8 @@
         { "kind" : "IdRef",          "name" : "'Structure'" },
         { "kind" : "LiteralInteger", "name" : "'Array member'" }
       ],
-      "capabilities" : [ "Shader" ]
+      "capabilities" : [ "Shader" ],
+      "version": "1.0"
     },
     {
       "opname" : "OpGenericPtrMemSemantics",
@@ -759,7 +821,8 @@
         { "kind" : "IdResult" },
         { "kind" : "IdRef",        "name" : "'Pointer'" }
       ],
-      "capabilities" : [ "Kernel" ]
+      "capabilities" : [ "Kernel" ],
+      "version": "1.0"
     },
     {
       "opname" : "OpInBoundsPtrAccessChain",
@@ -772,7 +835,8 @@
         { "kind" : "IdRef",                            "name" : "'Element'" },
         { "kind" : "IdRef",        "quantifier" : "*", "name" : "'Indexes'" }
       ],
-      "capabilities" : [ "Addresses" ]
+      "capabilities" : [ "Addresses" ],
+      "version": "1.0"
     },
     {
       "opname" : "OpDecorate",
@@ -781,7 +845,8 @@
       "operands" : [
         { "kind" : "IdRef",      "name" : "'Target'" },
         { "kind" : "Decoration" }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpMemberDecorate",
@@ -791,7 +856,8 @@
         { "kind" : "IdRef",          "name" : "'Structure Type'" },
         { "kind" : "LiteralInteger", "name" : "'Member'" },
         { "kind" : "Decoration" }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpDecorationGroup",
@@ -799,7 +865,8 @@
       "opcode" : 73,
       "operands" : [
         { "kind" : "IdResult" }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpGroupDecorate",
@@ -808,7 +875,8 @@
       "operands" : [
         { "kind" : "IdRef",                     "name" : "'Decoration Group'" },
         { "kind" : "IdRef", "quantifier" : "*", "name" : "'Targets'" }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpGroupMemberDecorate",
@@ -817,7 +885,8 @@
       "operands" : [
         { "kind" : "IdRef",                                       "name" : "'Decoration Group'" },
         { "kind" : "PairIdRefLiteralInteger", "quantifier" : "*", "name" : "'Targets'" }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpVectorExtractDynamic",
@@ -828,7 +897,8 @@
         { "kind" : "IdResult" },
         { "kind" : "IdRef",        "name" : "'Vector'" },
         { "kind" : "IdRef",        "name" : "'Index'" }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpVectorInsertDynamic",
@@ -840,7 +910,8 @@
         { "kind" : "IdRef",        "name" : "'Vector'" },
         { "kind" : "IdRef",        "name" : "'Component'" },
         { "kind" : "IdRef",        "name" : "'Index'" }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpVectorShuffle",
@@ -852,7 +923,8 @@
         { "kind" : "IdRef",                              "name" : "'Vector 1'" },
         { "kind" : "IdRef",                              "name" : "'Vector 2'" },
         { "kind" : "LiteralInteger", "quantifier" : "*", "name" : "'Components'" }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpCompositeConstruct",
@@ -862,7 +934,8 @@
         { "kind" : "IdResultType" },
         { "kind" : "IdResult" },
         { "kind" : "IdRef",        "quantifier" : "*", "name" : "'Constituents'" }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpCompositeExtract",
@@ -873,7 +946,8 @@
         { "kind" : "IdResult" },
         { "kind" : "IdRef",                              "name" : "'Composite'" },
         { "kind" : "LiteralInteger", "quantifier" : "*", "name" : "'Indexes'" }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpCompositeInsert",
@@ -885,7 +959,8 @@
         { "kind" : "IdRef",                              "name" : "'Object'" },
         { "kind" : "IdRef",                              "name" : "'Composite'" },
         { "kind" : "LiteralInteger", "quantifier" : "*", "name" : "'Indexes'" }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpCopyObject",
@@ -895,7 +970,8 @@
         { "kind" : "IdResultType" },
         { "kind" : "IdResult" },
         { "kind" : "IdRef",        "name" : "'Operand'" }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpTranspose",
@@ -906,7 +982,8 @@
         { "kind" : "IdResult" },
         { "kind" : "IdRef",        "name" : "'Matrix'" }
       ],
-      "capabilities" : [ "Matrix" ]
+      "capabilities" : [ "Matrix" ],
+      "version": "1.0"
     },
     {
       "opname" : "OpSampledImage",
@@ -917,7 +994,8 @@
         { "kind" : "IdResult" },
         { "kind" : "IdRef",        "name" : "'Image'" },
         { "kind" : "IdRef",        "name" : "'Sampler'" }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpImageSampleImplicitLod",
@@ -930,7 +1008,8 @@
         { "kind" : "IdRef",                             "name" : "'Coordinate'" },
         { "kind" : "ImageOperands", "quantifier" : "?" }
       ],
-      "capabilities" : [ "Shader" ]
+      "capabilities" : [ "Shader" ],
+      "version": "1.0"
     },
     {
       "opname" : "OpImageSampleExplicitLod",
@@ -942,7 +1021,8 @@
         { "kind" : "IdRef",         "name" : "'Sampled Image'" },
         { "kind" : "IdRef",         "name" : "'Coordinate'" },
         { "kind" : "ImageOperands" }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpImageSampleDrefImplicitLod",
@@ -956,7 +1036,8 @@
         { "kind" : "IdRef",                             "name" : "'D~ref~'" },
         { "kind" : "ImageOperands", "quantifier" : "?" }
       ],
-      "capabilities" : [ "Shader" ]
+      "capabilities" : [ "Shader" ],
+      "version": "1.0"
     },
     {
       "opname" : "OpImageSampleDrefExplicitLod",
@@ -970,7 +1051,8 @@
         { "kind" : "IdRef",         "name" : "'D~ref~'" },
         { "kind" : "ImageOperands" }
       ],
-      "capabilities" : [ "Shader" ]
+      "capabilities" : [ "Shader" ],
+      "version": "1.0"
     },
     {
       "opname" : "OpImageSampleProjImplicitLod",
@@ -983,7 +1065,8 @@
         { "kind" : "IdRef",                             "name" : "'Coordinate'" },
         { "kind" : "ImageOperands", "quantifier" : "?" }
       ],
-      "capabilities" : [ "Shader" ]
+      "capabilities" : [ "Shader" ],
+      "version": "1.0"
     },
     {
       "opname" : "OpImageSampleProjExplicitLod",
@@ -996,7 +1079,8 @@
         { "kind" : "IdRef",         "name" : "'Coordinate'" },
         { "kind" : "ImageOperands" }
       ],
-      "capabilities" : [ "Shader" ]
+      "capabilities" : [ "Shader" ],
+      "version": "1.0"
     },
     {
       "opname" : "OpImageSampleProjDrefImplicitLod",
@@ -1010,7 +1094,8 @@
         { "kind" : "IdRef",                             "name" : "'D~ref~'" },
         { "kind" : "ImageOperands", "quantifier" : "?" }
       ],
-      "capabilities" : [ "Shader" ]
+      "capabilities" : [ "Shader" ],
+      "version": "1.0"
     },
     {
       "opname" : "OpImageSampleProjDrefExplicitLod",
@@ -1024,7 +1109,8 @@
         { "kind" : "IdRef",         "name" : "'D~ref~'" },
         { "kind" : "ImageOperands" }
       ],
-      "capabilities" : [ "Shader" ]
+      "capabilities" : [ "Shader" ],
+      "version": "1.0"
     },
     {
       "opname" : "OpImageFetch",
@@ -1036,7 +1122,8 @@
         { "kind" : "IdRef",                             "name" : "'Image'" },
         { "kind" : "IdRef",                             "name" : "'Coordinate'" },
         { "kind" : "ImageOperands", "quantifier" : "?" }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpImageGather",
@@ -1050,7 +1137,8 @@
         { "kind" : "IdRef",                             "name" : "'Component'" },
         { "kind" : "ImageOperands", "quantifier" : "?" }
       ],
-      "capabilities" : [ "Shader" ]
+      "capabilities" : [ "Shader" ],
+      "version": "1.0"
     },
     {
       "opname" : "OpImageDrefGather",
@@ -1064,7 +1152,8 @@
         { "kind" : "IdRef",                             "name" : "'D~ref~'" },
         { "kind" : "ImageOperands", "quantifier" : "?" }
       ],
-      "capabilities" : [ "Shader" ]
+      "capabilities" : [ "Shader" ],
+      "version": "1.0"
     },
     {
       "opname" : "OpImageRead",
@@ -1076,7 +1165,8 @@
         { "kind" : "IdRef",                             "name" : "'Image'" },
         { "kind" : "IdRef",                             "name" : "'Coordinate'" },
         { "kind" : "ImageOperands", "quantifier" : "?" }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpImageWrite",
@@ -1087,7 +1177,8 @@
         { "kind" : "IdRef",                             "name" : "'Coordinate'" },
         { "kind" : "IdRef",                             "name" : "'Texel'" },
         { "kind" : "ImageOperands", "quantifier" : "?" }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpImage",
@@ -1097,7 +1188,8 @@
         { "kind" : "IdResultType" },
         { "kind" : "IdResult" },
         { "kind" : "IdRef",        "name" : "'Sampled Image'" }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpImageQueryFormat",
@@ -1108,7 +1200,8 @@
         { "kind" : "IdResult" },
         { "kind" : "IdRef",        "name" : "'Image'" }
       ],
-      "capabilities" : [ "Kernel" ]
+      "capabilities" : [ "Kernel" ],
+      "version": "1.0"
     },
     {
       "opname" : "OpImageQueryOrder",
@@ -1119,7 +1212,8 @@
         { "kind" : "IdResult" },
         { "kind" : "IdRef",        "name" : "'Image'" }
       ],
-      "capabilities" : [ "Kernel" ]
+      "capabilities" : [ "Kernel" ],
+      "version": "1.0"
     },
     {
       "opname" : "OpImageQuerySizeLod",
@@ -1131,7 +1225,8 @@
         { "kind" : "IdRef",        "name" : "'Image'" },
         { "kind" : "IdRef",        "name" : "'Level of Detail'" }
       ],
-      "capabilities" : [ "Kernel", "ImageQuery" ]
+      "capabilities" : [ "Kernel", "ImageQuery" ],
+      "version": "1.0"
     },
     {
       "opname" : "OpImageQuerySize",
@@ -1142,7 +1237,8 @@
         { "kind" : "IdResult" },
         { "kind" : "IdRef",        "name" : "'Image'" }
       ],
-      "capabilities" : [ "Kernel", "ImageQuery" ]
+      "capabilities" : [ "Kernel", "ImageQuery" ],
+      "version": "1.0"
     },
     {
       "opname" : "OpImageQueryLod",
@@ -1154,7 +1250,8 @@
         { "kind" : "IdRef",        "name" : "'Sampled Image'" },
         { "kind" : "IdRef",        "name" : "'Coordinate'" }
       ],
-      "capabilities" : [ "ImageQuery" ]
+      "capabilities" : [ "ImageQuery" ],
+      "version": "1.0"
     },
     {
       "opname" : "OpImageQueryLevels",
@@ -1165,7 +1262,8 @@
         { "kind" : "IdResult" },
         { "kind" : "IdRef",        "name" : "'Image'" }
       ],
-      "capabilities" : [ "Kernel", "ImageQuery" ]
+      "capabilities" : [ "Kernel", "ImageQuery" ],
+      "version": "1.0"
     },
     {
       "opname" : "OpImageQuerySamples",
@@ -1176,7 +1274,8 @@
         { "kind" : "IdResult" },
         { "kind" : "IdRef",        "name" : "'Image'" }
       ],
-      "capabilities" : [ "Kernel", "ImageQuery" ]
+      "capabilities" : [ "Kernel", "ImageQuery" ],
+      "version": "1.0"
     },
     {
       "opname" : "OpConvertFToU",
@@ -1186,7 +1285,8 @@
         { "kind" : "IdResultType" },
         { "kind" : "IdResult" },
         { "kind" : "IdRef",        "name" : "'Float Value'" }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpConvertFToS",
@@ -1196,7 +1296,8 @@
         { "kind" : "IdResultType" },
         { "kind" : "IdResult" },
         { "kind" : "IdRef",        "name" : "'Float Value'" }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpConvertSToF",
@@ -1206,7 +1307,8 @@
         { "kind" : "IdResultType" },
         { "kind" : "IdResult" },
         { "kind" : "IdRef",        "name" : "'Signed Value'" }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpConvertUToF",
@@ -1216,7 +1318,8 @@
         { "kind" : "IdResultType" },
         { "kind" : "IdResult" },
         { "kind" : "IdRef",        "name" : "'Unsigned Value'" }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpUConvert",
@@ -1226,7 +1329,8 @@
         { "kind" : "IdResultType" },
         { "kind" : "IdResult" },
         { "kind" : "IdRef",        "name" : "'Unsigned Value'" }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpSConvert",
@@ -1236,7 +1340,8 @@
         { "kind" : "IdResultType" },
         { "kind" : "IdResult" },
         { "kind" : "IdRef",        "name" : "'Signed Value'" }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpFConvert",
@@ -1246,7 +1351,8 @@
         { "kind" : "IdResultType" },
         { "kind" : "IdResult" },
         { "kind" : "IdRef",        "name" : "'Float Value'" }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpQuantizeToF16",
@@ -1256,7 +1362,8 @@
         { "kind" : "IdResultType" },
         { "kind" : "IdResult" },
         { "kind" : "IdRef",        "name" : "'Value'" }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpConvertPtrToU",
@@ -1270,7 +1377,8 @@
       "capabilities" : [
         "Addresses",
         "PhysicalStorageBufferAddresses"
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpSatConvertSToU",
@@ -1281,7 +1389,8 @@
         { "kind" : "IdResult" },
         { "kind" : "IdRef",        "name" : "'Signed Value'" }
       ],
-      "capabilities" : [ "Kernel" ]
+      "capabilities" : [ "Kernel" ],
+      "version": "1.0"
     },
     {
       "opname" : "OpSatConvertUToS",
@@ -1292,7 +1401,8 @@
         { "kind" : "IdResult" },
         { "kind" : "IdRef",        "name" : "'Unsigned Value'" }
       ],
-      "capabilities" : [ "Kernel" ]
+      "capabilities" : [ "Kernel" ],
+      "version": "1.0"
     },
     {
       "opname" : "OpConvertUToPtr",
@@ -1306,7 +1416,8 @@
       "capabilities" : [
         "Addresses",
         "PhysicalStorageBufferAddresses"
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpPtrCastToGeneric",
@@ -1317,7 +1428,8 @@
         { "kind" : "IdResult" },
         { "kind" : "IdRef",        "name" : "'Pointer'" }
       ],
-      "capabilities" : [ "Kernel" ]
+      "capabilities" : [ "Kernel" ],
+      "version": "1.0"
     },
     {
       "opname" : "OpGenericCastToPtr",
@@ -1328,7 +1440,8 @@
         { "kind" : "IdResult" },
         { "kind" : "IdRef",        "name" : "'Pointer'" }
       ],
-      "capabilities" : [ "Kernel" ]
+      "capabilities" : [ "Kernel" ],
+      "version": "1.0"
     },
     {
       "opname" : "OpGenericCastToPtrExplicit",
@@ -1340,7 +1453,8 @@
         { "kind" : "IdRef",        "name" : "'Pointer'" },
         { "kind" : "StorageClass", "name" : "'Storage'" }
       ],
-      "capabilities" : [ "Kernel" ]
+      "capabilities" : [ "Kernel" ],
+      "version": "1.0"
     },
     {
       "opname" : "OpBitcast",
@@ -1350,7 +1464,8 @@
         { "kind" : "IdResultType" },
         { "kind" : "IdResult" },
         { "kind" : "IdRef",        "name" : "'Operand'" }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpSNegate",
@@ -1360,7 +1475,8 @@
         { "kind" : "IdResultType" },
         { "kind" : "IdResult" },
         { "kind" : "IdRef",        "name" : "'Operand'" }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpFNegate",
@@ -1370,7 +1486,8 @@
         { "kind" : "IdResultType" },
         { "kind" : "IdResult" },
         { "kind" : "IdRef",        "name" : "'Operand'" }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpIAdd",
@@ -1381,7 +1498,8 @@
         { "kind" : "IdResult" },
         { "kind" : "IdRef",        "name" : "'Operand 1'" },
         { "kind" : "IdRef",        "name" : "'Operand 2'" }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpFAdd",
@@ -1392,7 +1510,8 @@
         { "kind" : "IdResult" },
         { "kind" : "IdRef",        "name" : "'Operand 1'" },
         { "kind" : "IdRef",        "name" : "'Operand 2'" }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpISub",
@@ -1403,7 +1522,8 @@
         { "kind" : "IdResult" },
         { "kind" : "IdRef",        "name" : "'Operand 1'" },
         { "kind" : "IdRef",        "name" : "'Operand 2'" }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpFSub",
@@ -1414,7 +1534,8 @@
         { "kind" : "IdResult" },
         { "kind" : "IdRef",        "name" : "'Operand 1'" },
         { "kind" : "IdRef",        "name" : "'Operand 2'" }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpIMul",
@@ -1425,7 +1546,8 @@
         { "kind" : "IdResult" },
         { "kind" : "IdRef",        "name" : "'Operand 1'" },
         { "kind" : "IdRef",        "name" : "'Operand 2'" }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpFMul",
@@ -1436,7 +1558,8 @@
         { "kind" : "IdResult" },
         { "kind" : "IdRef",        "name" : "'Operand 1'" },
         { "kind" : "IdRef",        "name" : "'Operand 2'" }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpUDiv",
@@ -1447,7 +1570,8 @@
         { "kind" : "IdResult" },
         { "kind" : "IdRef",        "name" : "'Operand 1'" },
         { "kind" : "IdRef",        "name" : "'Operand 2'" }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpSDiv",
@@ -1458,7 +1582,8 @@
         { "kind" : "IdResult" },
         { "kind" : "IdRef",        "name" : "'Operand 1'" },
         { "kind" : "IdRef",        "name" : "'Operand 2'" }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpFDiv",
@@ -1469,7 +1594,8 @@
         { "kind" : "IdResult" },
         { "kind" : "IdRef",        "name" : "'Operand 1'" },
         { "kind" : "IdRef",        "name" : "'Operand 2'" }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpUMod",
@@ -1480,7 +1606,8 @@
         { "kind" : "IdResult" },
         { "kind" : "IdRef",        "name" : "'Operand 1'" },
         { "kind" : "IdRef",        "name" : "'Operand 2'" }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpSRem",
@@ -1491,7 +1618,8 @@
         { "kind" : "IdResult" },
         { "kind" : "IdRef",        "name" : "'Operand 1'" },
         { "kind" : "IdRef",        "name" : "'Operand 2'" }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpSMod",
@@ -1502,7 +1630,8 @@
         { "kind" : "IdResult" },
         { "kind" : "IdRef",        "name" : "'Operand 1'" },
         { "kind" : "IdRef",        "name" : "'Operand 2'" }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpFRem",
@@ -1513,7 +1642,8 @@
         { "kind" : "IdResult" },
         { "kind" : "IdRef",        "name" : "'Operand 1'" },
         { "kind" : "IdRef",        "name" : "'Operand 2'" }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpFMod",
@@ -1524,7 +1654,8 @@
         { "kind" : "IdResult" },
         { "kind" : "IdRef",        "name" : "'Operand 1'" },
         { "kind" : "IdRef",        "name" : "'Operand 2'" }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpVectorTimesScalar",
@@ -1535,7 +1666,8 @@
         { "kind" : "IdResult" },
         { "kind" : "IdRef",        "name" : "'Vector'" },
         { "kind" : "IdRef",        "name" : "'Scalar'" }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpMatrixTimesScalar",
@@ -1547,7 +1679,8 @@
         { "kind" : "IdRef",        "name" : "'Matrix'" },
         { "kind" : "IdRef",        "name" : "'Scalar'" }
       ],
-      "capabilities" : [ "Matrix" ]
+      "capabilities" : [ "Matrix" ],
+      "version": "1.0"
     },
     {
       "opname" : "OpVectorTimesMatrix",
@@ -1559,7 +1692,8 @@
         { "kind" : "IdRef",        "name" : "'Vector'" },
         { "kind" : "IdRef",        "name" : "'Matrix'" }
       ],
-      "capabilities" : [ "Matrix" ]
+      "capabilities" : [ "Matrix" ],
+      "version": "1.0"
     },
     {
       "opname" : "OpMatrixTimesVector",
@@ -1571,7 +1705,8 @@
         { "kind" : "IdRef",        "name" : "'Matrix'" },
         { "kind" : "IdRef",        "name" : "'Vector'" }
       ],
-      "capabilities" : [ "Matrix" ]
+      "capabilities" : [ "Matrix" ],
+      "version": "1.0"
     },
     {
       "opname" : "OpMatrixTimesMatrix",
@@ -1583,7 +1718,8 @@
         { "kind" : "IdRef",        "name" : "'LeftMatrix'" },
         { "kind" : "IdRef",        "name" : "'RightMatrix'" }
       ],
-      "capabilities" : [ "Matrix" ]
+      "capabilities" : [ "Matrix" ],
+      "version": "1.0"
     },
     {
       "opname" : "OpOuterProduct",
@@ -1595,7 +1731,8 @@
         { "kind" : "IdRef",        "name" : "'Vector 1'" },
         { "kind" : "IdRef",        "name" : "'Vector 2'" }
       ],
-      "capabilities" : [ "Matrix" ]
+      "capabilities" : [ "Matrix" ],
+      "version": "1.0"
     },
     {
       "opname" : "OpDot",
@@ -1606,7 +1743,8 @@
         { "kind" : "IdResult" },
         { "kind" : "IdRef",        "name" : "'Vector 1'" },
         { "kind" : "IdRef",        "name" : "'Vector 2'" }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpIAddCarry",
@@ -1617,7 +1755,8 @@
         { "kind" : "IdResult" },
         { "kind" : "IdRef",        "name" : "'Operand 1'" },
         { "kind" : "IdRef",        "name" : "'Operand 2'" }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpISubBorrow",
@@ -1628,7 +1767,8 @@
         { "kind" : "IdResult" },
         { "kind" : "IdRef",        "name" : "'Operand 1'" },
         { "kind" : "IdRef",        "name" : "'Operand 2'" }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpUMulExtended",
@@ -1639,7 +1779,8 @@
         { "kind" : "IdResult" },
         { "kind" : "IdRef",        "name" : "'Operand 1'" },
         { "kind" : "IdRef",        "name" : "'Operand 2'" }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpSMulExtended",
@@ -1650,7 +1791,8 @@
         { "kind" : "IdResult" },
         { "kind" : "IdRef",        "name" : "'Operand 1'" },
         { "kind" : "IdRef",        "name" : "'Operand 2'" }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpAny",
@@ -1660,7 +1802,8 @@
         { "kind" : "IdResultType" },
         { "kind" : "IdResult" },
         { "kind" : "IdRef",        "name" : "'Vector'" }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpAll",
@@ -1670,7 +1813,8 @@
         { "kind" : "IdResultType" },
         { "kind" : "IdResult" },
         { "kind" : "IdRef",        "name" : "'Vector'" }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpIsNan",
@@ -1680,7 +1824,8 @@
         { "kind" : "IdResultType" },
         { "kind" : "IdResult" },
         { "kind" : "IdRef",        "name" : "'x'" }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpIsInf",
@@ -1690,7 +1835,8 @@
         { "kind" : "IdResultType" },
         { "kind" : "IdResult" },
         { "kind" : "IdRef",        "name" : "'x'" }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpIsFinite",
@@ -1701,7 +1847,8 @@
         { "kind" : "IdResult" },
         { "kind" : "IdRef",        "name" : "'x'" }
       ],
-      "capabilities" : [ "Kernel" ]
+      "capabilities" : [ "Kernel" ],
+      "version": "1.0"
     },
     {
       "opname" : "OpIsNormal",
@@ -1712,7 +1859,8 @@
         { "kind" : "IdResult" },
         { "kind" : "IdRef",        "name" : "'x'" }
       ],
-      "capabilities" : [ "Kernel" ]
+      "capabilities" : [ "Kernel" ],
+      "version": "1.0"
     },
     {
       "opname" : "OpSignBitSet",
@@ -1723,7 +1871,8 @@
         { "kind" : "IdResult" },
         { "kind" : "IdRef",        "name" : "'x'" }
       ],
-      "capabilities" : [ "Kernel" ]
+      "capabilities" : [ "Kernel" ],
+      "version": "1.0"
     },
     {
       "opname" : "OpLessOrGreater",
@@ -1736,6 +1885,7 @@
         { "kind" : "IdRef",        "name" : "'y'" }
       ],
       "capabilities" : [ "Kernel" ],
+      "version" : "1.0",
       "lastVersion" : "1.5"
     },
     {
@@ -1748,7 +1898,8 @@
         { "kind" : "IdRef",        "name" : "'x'" },
         { "kind" : "IdRef",        "name" : "'y'" }
       ],
-      "capabilities" : [ "Kernel" ]
+      "capabilities" : [ "Kernel" ],
+      "version": "1.0"
     },
     {
       "opname" : "OpUnordered",
@@ -1760,7 +1911,8 @@
         { "kind" : "IdRef",        "name" : "'x'" },
         { "kind" : "IdRef",        "name" : "'y'" }
       ],
-      "capabilities" : [ "Kernel" ]
+      "capabilities" : [ "Kernel" ],
+      "version": "1.0"
     },
     {
       "opname" : "OpLogicalEqual",
@@ -1771,7 +1923,8 @@
         { "kind" : "IdResult" },
         { "kind" : "IdRef",        "name" : "'Operand 1'" },
         { "kind" : "IdRef",        "name" : "'Operand 2'" }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpLogicalNotEqual",
@@ -1782,7 +1935,8 @@
         { "kind" : "IdResult" },
         { "kind" : "IdRef",        "name" : "'Operand 1'" },
         { "kind" : "IdRef",        "name" : "'Operand 2'" }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpLogicalOr",
@@ -1793,7 +1947,8 @@
         { "kind" : "IdResult" },
         { "kind" : "IdRef",        "name" : "'Operand 1'" },
         { "kind" : "IdRef",        "name" : "'Operand 2'" }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpLogicalAnd",
@@ -1804,7 +1959,8 @@
         { "kind" : "IdResult" },
         { "kind" : "IdRef",        "name" : "'Operand 1'" },
         { "kind" : "IdRef",        "name" : "'Operand 2'" }
-      ]
+      ],
+      "version" : "1.0"
     },
     {
       "opname" : "OpLogicalNot",
@@ -1814,7 +1970,8 @@
         { "kind" : "IdResultType" },
         { "kind" : "IdResult" },
         { "kind" : "IdRef",        "name" : "'Operand'" }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpSelect",
@@ -1826,7 +1983,8 @@
         { "kind" : "IdRef",        "name" : "'Condition'" },
         { "kind" : "IdRef",        "name" : "'Object 1'" },
         { "kind" : "IdRef",        "name" : "'Object 2'" }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpIEqual",
@@ -1837,7 +1995,8 @@
         { "kind" : "IdResult" },
         { "kind" : "IdRef",        "name" : "'Operand 1'" },
         { "kind" : "IdRef",        "name" : "'Operand 2'" }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpINotEqual",
@@ -1848,7 +2007,8 @@
         { "kind" : "IdResult" },
         { "kind" : "IdRef",        "name" : "'Operand 1'" },
         { "kind" : "IdRef",        "name" : "'Operand 2'" }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpUGreaterThan",
@@ -1859,7 +2019,8 @@
         { "kind" : "IdResult" },
         { "kind" : "IdRef",        "name" : "'Operand 1'" },
         { "kind" : "IdRef",        "name" : "'Operand 2'" }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpSGreaterThan",
@@ -1870,7 +2031,8 @@
         { "kind" : "IdResult" },
         { "kind" : "IdRef",        "name" : "'Operand 1'" },
         { "kind" : "IdRef",        "name" : "'Operand 2'" }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpUGreaterThanEqual",
@@ -1881,7 +2043,8 @@
         { "kind" : "IdResult" },
         { "kind" : "IdRef",        "name" : "'Operand 1'" },
         { "kind" : "IdRef",        "name" : "'Operand 2'" }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpSGreaterThanEqual",
@@ -1892,7 +2055,8 @@
         { "kind" : "IdResult" },
         { "kind" : "IdRef",        "name" : "'Operand 1'" },
         { "kind" : "IdRef",        "name" : "'Operand 2'" }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpULessThan",
@@ -1903,7 +2067,8 @@
         { "kind" : "IdResult" },
         { "kind" : "IdRef",        "name" : "'Operand 1'" },
         { "kind" : "IdRef",        "name" : "'Operand 2'" }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpSLessThan",
@@ -1914,7 +2079,8 @@
         { "kind" : "IdResult" },
         { "kind" : "IdRef",        "name" : "'Operand 1'" },
         { "kind" : "IdRef",        "name" : "'Operand 2'" }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpULessThanEqual",
@@ -1925,7 +2091,8 @@
         { "kind" : "IdResult" },
         { "kind" : "IdRef",        "name" : "'Operand 1'" },
         { "kind" : "IdRef",        "name" : "'Operand 2'" }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpSLessThanEqual",
@@ -1936,7 +2103,8 @@
         { "kind" : "IdResult" },
         { "kind" : "IdRef",        "name" : "'Operand 1'" },
         { "kind" : "IdRef",        "name" : "'Operand 2'" }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpFOrdEqual",
@@ -1947,7 +2115,8 @@
         { "kind" : "IdResult" },
         { "kind" : "IdRef",        "name" : "'Operand 1'" },
         { "kind" : "IdRef",        "name" : "'Operand 2'" }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpFUnordEqual",
@@ -1958,7 +2127,8 @@
         { "kind" : "IdResult" },
         { "kind" : "IdRef",        "name" : "'Operand 1'" },
         { "kind" : "IdRef",        "name" : "'Operand 2'" }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpFOrdNotEqual",
@@ -1969,7 +2139,8 @@
         { "kind" : "IdResult" },
         { "kind" : "IdRef",        "name" : "'Operand 1'" },
         { "kind" : "IdRef",        "name" : "'Operand 2'" }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpFUnordNotEqual",
@@ -1980,7 +2151,8 @@
         { "kind" : "IdResult" },
         { "kind" : "IdRef",        "name" : "'Operand 1'" },
         { "kind" : "IdRef",        "name" : "'Operand 2'" }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpFOrdLessThan",
@@ -1991,7 +2163,8 @@
         { "kind" : "IdResult" },
         { "kind" : "IdRef",        "name" : "'Operand 1'" },
         { "kind" : "IdRef",        "name" : "'Operand 2'" }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpFUnordLessThan",
@@ -2002,7 +2175,8 @@
         { "kind" : "IdResult" },
         { "kind" : "IdRef",        "name" : "'Operand 1'" },
         { "kind" : "IdRef",        "name" : "'Operand 2'" }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpFOrdGreaterThan",
@@ -2013,7 +2187,8 @@
         { "kind" : "IdResult" },
         { "kind" : "IdRef",        "name" : "'Operand 1'" },
         { "kind" : "IdRef",        "name" : "'Operand 2'" }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpFUnordGreaterThan",
@@ -2024,7 +2199,8 @@
         { "kind" : "IdResult" },
         { "kind" : "IdRef",        "name" : "'Operand 1'" },
         { "kind" : "IdRef",        "name" : "'Operand 2'" }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpFOrdLessThanEqual",
@@ -2035,7 +2211,8 @@
         { "kind" : "IdResult" },
         { "kind" : "IdRef",        "name" : "'Operand 1'" },
         { "kind" : "IdRef",        "name" : "'Operand 2'" }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpFUnordLessThanEqual",
@@ -2046,7 +2223,8 @@
         { "kind" : "IdResult" },
         { "kind" : "IdRef",        "name" : "'Operand 1'" },
         { "kind" : "IdRef",        "name" : "'Operand 2'" }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpFOrdGreaterThanEqual",
@@ -2057,7 +2235,8 @@
         { "kind" : "IdResult" },
         { "kind" : "IdRef",        "name" : "'Operand 1'" },
         { "kind" : "IdRef",        "name" : "'Operand 2'" }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpFUnordGreaterThanEqual",
@@ -2068,7 +2247,8 @@
         { "kind" : "IdResult" },
         { "kind" : "IdRef",        "name" : "'Operand 1'" },
         { "kind" : "IdRef",        "name" : "'Operand 2'" }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpShiftRightLogical",
@@ -2079,7 +2259,8 @@
         { "kind" : "IdResult" },
         { "kind" : "IdRef",        "name" : "'Base'" },
         { "kind" : "IdRef",        "name" : "'Shift'" }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpShiftRightArithmetic",
@@ -2090,7 +2271,8 @@
         { "kind" : "IdResult" },
         { "kind" : "IdRef",        "name" : "'Base'" },
         { "kind" : "IdRef",        "name" : "'Shift'" }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpShiftLeftLogical",
@@ -2101,7 +2283,8 @@
         { "kind" : "IdResult" },
         { "kind" : "IdRef",        "name" : "'Base'" },
         { "kind" : "IdRef",        "name" : "'Shift'" }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpBitwiseOr",
@@ -2112,7 +2295,8 @@
         { "kind" : "IdResult" },
         { "kind" : "IdRef",        "name" : "'Operand 1'" },
         { "kind" : "IdRef",        "name" : "'Operand 2'" }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpBitwiseXor",
@@ -2123,7 +2307,8 @@
         { "kind" : "IdResult" },
         { "kind" : "IdRef",        "name" : "'Operand 1'" },
         { "kind" : "IdRef",        "name" : "'Operand 2'" }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpBitwiseAnd",
@@ -2134,7 +2319,8 @@
         { "kind" : "IdResult" },
         { "kind" : "IdRef",        "name" : "'Operand 1'" },
         { "kind" : "IdRef",        "name" : "'Operand 2'" }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpNot",
@@ -2144,7 +2330,8 @@
         { "kind" : "IdResultType" },
         { "kind" : "IdResult" },
         { "kind" : "IdRef",        "name" : "'Operand'" }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpBitFieldInsert",
@@ -2158,7 +2345,8 @@
         { "kind" : "IdRef",        "name" : "'Offset'" },
         { "kind" : "IdRef",        "name" : "'Count'" }
       ],
-      "capabilities" : [ "Shader", "BitInstructions" ]
+      "capabilities" : [ "Shader", "BitInstructions" ],
+      "version": "1.0"
     },
     {
       "opname" : "OpBitFieldSExtract",
@@ -2171,7 +2359,8 @@
         { "kind" : "IdRef",        "name" : "'Offset'" },
         { "kind" : "IdRef",        "name" : "'Count'" }
       ],
-      "capabilities" : [ "Shader", "BitInstructions" ]
+      "capabilities" : [ "Shader", "BitInstructions" ],
+      "version": "1.0"
     },
     {
       "opname" : "OpBitFieldUExtract",
@@ -2184,7 +2373,8 @@
         { "kind" : "IdRef",        "name" : "'Offset'" },
         { "kind" : "IdRef",        "name" : "'Count'" }
       ],
-      "capabilities" : [ "Shader", "BitInstructions" ]
+      "capabilities" : [ "Shader", "BitInstructions" ],
+      "version": "1.0"
     },
     {
       "opname" : "OpBitReverse",
@@ -2195,7 +2385,8 @@
         { "kind" : "IdResult" },
         { "kind" : "IdRef",        "name" : "'Base'" }
       ],
-      "capabilities" : [ "Shader", "BitInstructions" ]
+      "capabilities" : [ "Shader", "BitInstructions" ],
+      "version": "1.0"
     },
     {
       "opname" : "OpBitCount",
@@ -2205,7 +2396,8 @@
         { "kind" : "IdResultType" },
         { "kind" : "IdResult" },
         { "kind" : "IdRef",        "name" : "'Base'" }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpDPdx",
@@ -2216,7 +2408,8 @@
         { "kind" : "IdResult" },
         { "kind" : "IdRef",        "name" : "'P'" }
       ],
-      "capabilities" : [ "Shader" ]
+      "capabilities" : [ "Shader" ],
+      "version": "1.0"
     },
     {
       "opname" : "OpDPdy",
@@ -2227,7 +2420,8 @@
         { "kind" : "IdResult" },
         { "kind" : "IdRef",        "name" : "'P'" }
       ],
-      "capabilities" : [ "Shader" ]
+      "capabilities" : [ "Shader" ],
+      "version": "1.0"
     },
     {
       "opname" : "OpFwidth",
@@ -2238,7 +2432,8 @@
         { "kind" : "IdResult" },
         { "kind" : "IdRef",        "name" : "'P'" }
       ],
-      "capabilities" : [ "Shader" ]
+      "capabilities" : [ "Shader" ],
+      "version": "1.0"
     },
     {
       "opname" : "OpDPdxFine",
@@ -2249,7 +2444,8 @@
         { "kind" : "IdResult" },
         { "kind" : "IdRef",        "name" : "'P'" }
       ],
-      "capabilities" : [ "DerivativeControl" ]
+      "capabilities" : [ "DerivativeControl" ],
+      "version": "1.0"
     },
     {
       "opname" : "OpDPdyFine",
@@ -2260,7 +2456,8 @@
         { "kind" : "IdResult" },
         { "kind" : "IdRef",        "name" : "'P'" }
       ],
-      "capabilities" : [ "DerivativeControl" ]
+      "capabilities" : [ "DerivativeControl" ],
+      "version": "1.0"
     },
     {
       "opname" : "OpFwidthFine",
@@ -2271,7 +2468,8 @@
         { "kind" : "IdResult" },
         { "kind" : "IdRef",        "name" : "'P'" }
       ],
-      "capabilities" : [ "DerivativeControl" ]
+      "capabilities" : [ "DerivativeControl" ],
+      "version": "1.0"
     },
     {
       "opname" : "OpDPdxCoarse",
@@ -2282,7 +2480,8 @@
         { "kind" : "IdResult" },
         { "kind" : "IdRef",        "name" : "'P'" }
       ],
-      "capabilities" : [ "DerivativeControl" ]
+      "capabilities" : [ "DerivativeControl" ],
+      "version": "1.0"
     },
     {
       "opname" : "OpDPdyCoarse",
@@ -2293,7 +2492,8 @@
         { "kind" : "IdResult" },
         { "kind" : "IdRef",        "name" : "'P'" }
       ],
-      "capabilities" : [ "DerivativeControl" ]
+      "capabilities" : [ "DerivativeControl" ],
+      "version": "1.0"
     },
     {
       "opname" : "OpFwidthCoarse",
@@ -2304,19 +2504,22 @@
         { "kind" : "IdResult" },
         { "kind" : "IdRef",        "name" : "'P'" }
       ],
-      "capabilities" : [ "DerivativeControl" ]
+      "capabilities" : [ "DerivativeControl" ],
+      "version": "1.0"
     },
     {
       "opname" : "OpEmitVertex",
       "class"  : "Primitive",
       "opcode" : 218,
-      "capabilities" : [ "Geometry" ]
+      "capabilities" : [ "Geometry" ],
+      "version": "1.0"
     },
     {
       "opname" : "OpEndPrimitive",
       "class"  : "Primitive",
       "opcode" : 219,
-      "capabilities" : [ "Geometry" ]
+      "capabilities" : [ "Geometry" ],
+      "version": "1.0"
     },
     {
       "opname" : "OpEmitStreamVertex",
@@ -2325,7 +2528,8 @@
       "operands" : [
         { "kind" : "IdRef", "name" : "'Stream'" }
       ],
-      "capabilities" : [ "GeometryStreams" ]
+      "capabilities" : [ "GeometryStreams" ],
+      "version": "1.0"
     },
     {
       "opname" : "OpEndStreamPrimitive",
@@ -2334,7 +2538,8 @@
       "operands" : [
         { "kind" : "IdRef", "name" : "'Stream'" }
       ],
-      "capabilities" : [ "GeometryStreams" ]
+      "capabilities" : [ "GeometryStreams" ],
+      "version": "1.0"
     },
     {
       "opname" : "OpControlBarrier",
@@ -2344,7 +2549,8 @@
         { "kind" : "IdScope",           "name" : "'Execution'" },
         { "kind" : "IdScope",           "name" : "'Memory'" },
         { "kind" : "IdMemorySemantics", "name" : "'Semantics'" }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpMemoryBarrier",
@@ -2353,7 +2559,8 @@
       "operands" : [
         { "kind" : "IdScope",           "name" : "'Memory'" },
         { "kind" : "IdMemorySemantics", "name" : "'Semantics'" }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpAtomicLoad",
@@ -2365,7 +2572,8 @@
         { "kind" : "IdRef",             "name" : "'Pointer'" },
         { "kind" : "IdScope",           "name" : "'Memory'" },
         { "kind" : "IdMemorySemantics", "name" : "'Semantics'" }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpAtomicStore",
@@ -2376,7 +2584,8 @@
         { "kind" : "IdScope",           "name" : "'Memory'" },
         { "kind" : "IdMemorySemantics", "name" : "'Semantics'" },
         { "kind" : "IdRef",             "name" : "'Value'" }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpAtomicExchange",
@@ -2389,7 +2598,8 @@
         { "kind" : "IdScope",           "name" : "'Memory'" },
         { "kind" : "IdMemorySemantics", "name" : "'Semantics'" },
         { "kind" : "IdRef",             "name" : "'Value'" }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpAtomicCompareExchange",
@@ -2404,7 +2614,8 @@
         { "kind" : "IdMemorySemantics", "name" : "'Unequal'" },
         { "kind" : "IdRef",             "name" : "'Value'" },
         { "kind" : "IdRef",             "name" : "'Comparator'" }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpAtomicCompareExchangeWeak",
@@ -2421,6 +2632,7 @@
         { "kind" : "IdRef",             "name" : "'Comparator'" }
       ],
       "capabilities" : [ "Kernel" ],
+      "version" : "1.0",
       "lastVersion" : "1.3"
     },
     {
@@ -2433,7 +2645,8 @@
         { "kind" : "IdRef",             "name" : "'Pointer'" },
         { "kind" : "IdScope",           "name" : "'Memory'" },
         { "kind" : "IdMemorySemantics", "name" : "'Semantics'" }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpAtomicIDecrement",
@@ -2445,7 +2658,8 @@
         { "kind" : "IdRef",             "name" : "'Pointer'" },
         { "kind" : "IdScope",           "name" : "'Memory'" },
         { "kind" : "IdMemorySemantics", "name" : "'Semantics'" }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpAtomicIAdd",
@@ -2458,7 +2672,8 @@
         { "kind" : "IdScope",           "name" : "'Memory'" },
         { "kind" : "IdMemorySemantics", "name" : "'Semantics'" },
         { "kind" : "IdRef",             "name" : "'Value'" }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpAtomicISub",
@@ -2471,7 +2686,8 @@
         { "kind" : "IdScope",           "name" : "'Memory'" },
         { "kind" : "IdMemorySemantics", "name" : "'Semantics'" },
         { "kind" : "IdRef",             "name" : "'Value'" }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpAtomicSMin",
@@ -2484,7 +2700,8 @@
         { "kind" : "IdScope",           "name" : "'Memory'" },
         { "kind" : "IdMemorySemantics", "name" : "'Semantics'" },
         { "kind" : "IdRef",             "name" : "'Value'" }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpAtomicUMin",
@@ -2497,7 +2714,8 @@
         { "kind" : "IdScope",           "name" : "'Memory'" },
         { "kind" : "IdMemorySemantics", "name" : "'Semantics'" },
         { "kind" : "IdRef",             "name" : "'Value'" }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpAtomicSMax",
@@ -2510,7 +2728,8 @@
         { "kind" : "IdScope",           "name" : "'Memory'" },
         { "kind" : "IdMemorySemantics", "name" : "'Semantics'" },
         { "kind" : "IdRef",             "name" : "'Value'" }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpAtomicUMax",
@@ -2523,7 +2742,8 @@
         { "kind" : "IdScope",           "name" : "'Memory'" },
         { "kind" : "IdMemorySemantics", "name" : "'Semantics'" },
         { "kind" : "IdRef",             "name" : "'Value'" }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpAtomicAnd",
@@ -2536,7 +2756,8 @@
         { "kind" : "IdScope",           "name" : "'Memory'" },
         { "kind" : "IdMemorySemantics", "name" : "'Semantics'" },
         { "kind" : "IdRef",             "name" : "'Value'" }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpAtomicOr",
@@ -2549,7 +2770,8 @@
         { "kind" : "IdScope",           "name" : "'Memory'" },
         { "kind" : "IdMemorySemantics", "name" : "'Semantics'" },
         { "kind" : "IdRef",             "name" : "'Value'" }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpAtomicXor",
@@ -2562,7 +2784,8 @@
         { "kind" : "IdScope",           "name" : "'Memory'" },
         { "kind" : "IdMemorySemantics", "name" : "'Semantics'" },
         { "kind" : "IdRef",             "name" : "'Value'" }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpPhi",
@@ -2572,7 +2795,8 @@
         { "kind" : "IdResultType" },
         { "kind" : "IdResult" },
         { "kind" : "PairIdRefIdRef", "quantifier" : "*", "name" : "'Variable, Parent, ...'" }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpLoopMerge",
@@ -2582,7 +2806,8 @@
         { "kind" : "IdRef",       "name" : "'Merge Block'" },
         { "kind" : "IdRef",       "name" : "'Continue Target'" },
         { "kind" : "LoopControl" }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpSelectionMerge",
@@ -2591,7 +2816,8 @@
       "operands" : [
         { "kind" : "IdRef",            "name" : "'Merge Block'" },
         { "kind" : "SelectionControl" }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpLabel",
@@ -2599,7 +2825,8 @@
       "opcode" : 248,
       "operands" : [
         { "kind" : "IdResult" }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpBranch",
@@ -2607,7 +2834,8 @@
       "opcode" : 249,
       "operands" : [
         { "kind" : "IdRef", "name" : "'Target Label'" }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpBranchConditional",
@@ -2618,7 +2846,8 @@
         { "kind" : "IdRef",                              "name" : "'True Label'" },
         { "kind" : "IdRef",                              "name" : "'False Label'" },
         { "kind" : "LiteralInteger", "quantifier" : "*", "name" : "'Branch weights'" }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpSwitch",
@@ -2628,18 +2857,21 @@
         { "kind" : "IdRef",                                       "name" : "'Selector'" },
         { "kind" : "IdRef",                                       "name" : "'Default'" },
         { "kind" : "PairLiteralIntegerIdRef", "quantifier" : "*", "name" : "'Target'" }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpKill",
       "class"  : "Control-Flow",
       "opcode" : 252,
-      "capabilities" : [ "Shader" ]
+      "capabilities" : [ "Shader" ],
+      "version": "1.0"
     },
     {
       "opname" : "OpReturn",
       "class"  : "Control-Flow",
-      "opcode" : 253
+      "opcode" : 253,
+      "version" : "1.0"
     },
     {
       "opname" : "OpReturnValue",
@@ -2647,12 +2879,14 @@
       "opcode" : 254,
       "operands" : [
         { "kind" : "IdRef", "name" : "'Value'" }
-      ]
+      ],
+      "version": "1.0"
     },
     {
       "opname" : "OpUnreachable",
       "class"  : "Control-Flow",
-      "opcode" : 255
+      "opcode" : 255,
+      "version" : "1.0"
     },
     {
       "opname" : "OpLifetimeStart",
@@ -2662,7 +2896,8 @@
         { "kind" : "IdRef",          "name" : "'Pointer'" },
         { "kind" : "LiteralInteger", "name" : "'Size'" }
       ],
-      "capabilities" : [ "Kernel" ]
+      "capabilities" : [ "Kernel" ],
+      "version": "1.0"
     },
     {
       "opname" : "OpLifetimeStop",
@@ -2672,7 +2907,8 @@
         { "kind" : "IdRef",          "name" : "'Pointer'" },
         { "kind" : "LiteralInteger", "name" : "'Size'" }
       ],
-      "capabilities" : [ "Kernel" ]
+      "capabilities" : [ "Kernel" ],
+      "version": "1.0"
     },
     {
       "opname" : "OpGroupAsyncCopy",
@@ -2688,7 +2924,8 @@
         { "kind" : "IdRef",        "name" : "'Stride'" },
         { "kind" : "IdRef",        "name" : "'Event'" }
       ],
-      "capabilities" : [ "Kernel" ]
+      "capabilities" : [ "Kernel" ],
+      "version": "1.0"
     },
     {
       "opname" : "OpGroupWaitEvents",
@@ -2699,7 +2936,8 @@
         { "kind" : "IdRef",   "name" : "'Num Events'" },
         { "kind" : "IdRef",   "name" : "'Events List'" }
       ],
-      "capabilities" : [ "Kernel" ]
+      "capabilities" : [ "Kernel" ],
+      "version": "1.0"
     },
     {
       "opname" : "OpGroupAll",
@@ -2711,7 +2949,8 @@
         { "kind" : "IdScope",      "name" : "'Execution'" },
         { "kind" : "IdRef",        "name" : "'Predicate'" }
       ],
-      "capabilities" : [ "Groups" ]
+      "capabilities" : [ "Groups" ],
+      "version": "1.0"
     },
     {
       "opname" : "OpGroupAny",
@@ -2723,7 +2962,8 @@
         { "kind" : "IdScope",      "name" : "'Execution'" },
         { "kind" : "IdRef",        "name" : "'Predicate'" }
       ],
-      "capabilities" : [ "Groups" ]
+      "capabilities" : [ "Groups" ],
+      "version": "1.0"
     },
     {
       "opname" : "OpGroupBroadcast",
@@ -2736,7 +2976,8 @@
         { "kind" : "IdRef",        "name" : "'Value'" },
         { "kind" : "IdRef",        "name" : "'LocalId'" }
       ],
-      "capabilities" : [ "Groups" ]
+      "capabilities" : [ "Groups" ],
+      "version": "1.0"
     },
     {
       "opname" : "OpGroupIAdd",
@@ -2749,7 +2990,8 @@
         { "kind" : "GroupOperation", "name" : "'Operation'" },
         { "kind" : "IdRef",          "name" : "'X'" }
       ],
-      "capabilities" : [ "Groups" ]
+      "capabilities" : [ "Groups" ],
+      "version": "1.0"
     },
     {
       "opname" : "OpGroupFAdd",
@@ -2762,7 +3004,8 @@
         { "kind" : "GroupOperation", "name" : "'Operation'" },
         { "kind" : "IdRef",          "name" : "'X'" }
       ],
-      "capabilities" : [ "Groups" ]
+      "capabilities" : [ "Groups" ],
+      "version": "1.0"
     },
     {
       "opname" : "OpGroupFMin",
@@ -2775,7 +3018,8 @@
         { "kind" : "GroupOperation", "name" : "'Operation'" },
         { "kind" : "IdRef",          "name" : "'X'" }
       ],
-      "capabilities" : [ "Groups" ]
+      "capabilities" : [ "Groups" ],
+      "version": "1.0"
     },
     {
       "opname" : "OpGroupUMin",
@@ -2788,7 +3032,8 @@
         { "kind" : "GroupOperation", "name" : "'Operation'" },
         { "kind" : "IdRef",          "name" : "'X'" }
       ],
-      "capabilities" : [ "Groups" ]
+      "capabilities" : [ "Groups" ],
+      "version": "1.0"
     },
     {
       "opname" : "OpGroupSMin",
@@ -2801,7 +3046,8 @@
         { "kind" : "GroupOperation", "name" : "'Operation'" },
         { "kind" : "IdRef",          "name" : "'X'" }
       ],
-      "capabilities" : [ "Groups" ]
+      "capabilities" : [ "Groups" ],
+      "version": "1.0"
     },
     {
       "opname" : "OpGroupFMax",
@@ -2814,7 +3060,8 @@
         { "kind" : "GroupOperation", "name" : "'Operation'" },
         { "kind" : "IdRef",          "name" : "'X'" }
       ],
-      "capabilities" : [ "Groups" ]
+      "capabilities" : [ "Groups" ],
+      "version": "1.0"
     },
     {
       "opname" : "OpGroupUMax",
@@ -2827,7 +3074,8 @@
         { "kind" : "GroupOperation", "name" : "'Operation'" },
         { "kind" : "IdRef",          "name" : "'X'" }
       ],
-      "capabilities" : [ "Groups" ]
+      "capabilities" : [ "Groups" ],
+      "version": "1.0"
     },
     {
       "opname" : "OpGroupSMax",
@@ -2840,7 +3088,8 @@
         { "kind" : "GroupOperation", "name" : "'Operation'" },
         { "kind" : "IdRef",          "name" : "'X'" }
       ],
-      "capabilities" : [ "Groups" ]
+      "capabilities" : [ "Groups" ],
+      "version": "1.0"
     },
     {
       "opname" : "OpReadPipe",
@@ -2854,7 +3103,8 @@
         { "kind" : "IdRef",        "name" : "'Packet Size'" },
         { "kind" : "IdRef",        "name" : "'Packet Alignment'" }
       ],
-      "capabilities" : [ "Pipes" ]
+      "capabilities" : [ "Pipes" ],
+      "version": "1.0"
     },
     {
       "opname" : "OpWritePipe",
@@ -2868,7 +3118,8 @@
         { "kind" : "IdRef",        "name" : "'Packet Size'" },
         { "kind" : "IdRef",        "name" : "'Packet Alignment'" }
       ],
-      "capabilities" : [ "Pipes" ]
+      "capabilities" : [ "Pipes" ],
+      "version": "1.0"
     },
     {
       "opname" : "OpReservedReadPipe",
@@ -2884,7 +3135,8 @@
         { "kind" : "IdRef",        "name" : "'Packet Size'" },
         { "kind" : "IdRef",        "name" : "'Packet Alignment'" }
       ],
-      "capabilities" : [ "Pipes" ]
+      "capabilities" : [ "Pipes" ],
+      "version": "1.0"
     },
     {
       "opname" : "OpReservedWritePipe",
@@ -2900,7 +3152,8 @@
         { "kind" : "IdRef",        "name" : "'Packet Size'" },
         { "kind" : "IdRef",        "name" : "'Packet Alignment'" }
       ],
-      "capabilities" : [ "Pipes" ]
+      "capabilities" : [ "Pipes" ],
+      "version": "1.0"
     },
     {
       "opname" : "OpReserveReadPipePackets",
@@ -2914,7 +3167,8 @@
         { "kind" : "IdRef",        "name" : "'Packet Size'" },
         { "kind" : "IdRef",        "name" : "'Packet Alignment'" }
       ],
-      "capabilities" : [ "Pipes" ]
+      "capabilities" : [ "Pipes" ],
+      "version": "1.0"
     },
     {
       "opname" : "OpReserveWritePipePackets",
@@ -2928,7 +3182,8 @@
         { "kind" : "IdRef",        "name" : "'Packet Size'" },
         { "kind" : "IdRef",        "name" : "'Packet Alignment'" }
       ],
-      "capabilities" : [ "Pipes" ]
+      "capabilities" : [ "Pipes" ],
+      "version": "1.0"
     },
     {
       "opname" : "OpCommitReadPipe",
@@ -2940,7 +3195,8 @@
         { "kind" : "IdRef", "name" : "'Packet Size'" },
         { "kind" : "IdRef", "name" : "'Packet Alignment'" }
       ],
-      "capabilities" : [ "Pipes" ]
+      "capabilities" : [ "Pipes" ],
+      "version": "1.0"
     },
     {
       "opname" : "OpCommitWritePipe",
@@ -2952,7 +3208,8 @@
         { "kind" : "IdRef", "name" : "'Packet Size'" },
         { "kind" : "IdRef", "name" : "'Packet Alignment'" }
       ],
-      "capabilities" : [ "Pipes" ]
+      "capabilities" : [ "Pipes" ],
+      "version": "1.0"
     },
     {
       "opname" : "OpIsValidReserveId",
@@ -2963,7 +3220,8 @@
         { "kind" : "IdResult" },
         { "kind" : "IdRef",        "name" : "'Reserve Id'" }
       ],
-      "capabilities" : [ "Pipes" ]
+      "capabilities" : [ "Pipes" ],
+      "version": "1.0"
     },
     {
       "opname" : "OpGetNumPipePackets",
@@ -2976,7 +3234,8 @@
         { "kind" : "IdRef",        "name" : "'Packet Size'" },
         { "kind" : "IdRef",        "name" : "'Packet Alignment'" }
       ],
-      "capabilities" : [ "Pipes" ]
+      "capabilities" : [ "Pipes" ],
+      "version": "1.0"
     },
     {
       "opname" : "OpGetMaxPipePackets",
@@ -2989,7 +3248,8 @@
         { "kind" : "IdRef",        "name" : "'Packet Size'" },
         { "kind" : "IdRef",        "name" : "'Packet Alignment'" }
       ],
-      "capabilities" : [ "Pipes" ]
+      "capabilities" : [ "Pipes" ],
+      "version": "1.0"
     },
     {
       "opname" : "OpGroupReserveReadPipePackets",
@@ -3004,7 +3264,8 @@
         { "kind" : "IdRef",        "name" : "'Packet Size'" },
         { "kind" : "IdRef",        "name" : "'Packet Alignment'" }
       ],
-      "capabilities" : [ "Pipes" ]
+      "capabilities" : [ "Pipes" ],
+      "version": "1.0"
     },
     {
       "opname" : "OpGroupReserveWritePipePackets",
@@ -3019,7 +3280,8 @@
         { "kind" : "IdRef",        "name" : "'Packet Size'" },
         { "kind" : "IdRef",        "name" : "'Packet Alignment'" }
       ],
-      "capabilities" : [ "Pipes" ]
+      "capabilities" : [ "Pipes" ],
+      "version": "1.0"
     },
     {
       "opname" : "OpGroupCommitReadPipe",
@@ -3032,7 +3294,8 @@
         { "kind" : "IdRef",   "name" : "'Packet Size'" },
         { "kind" : "IdRef",   "name" : "'Packet Alignment'" }
       ],
-      "capabilities" : [ "Pipes" ]
+      "capabilities" : [ "Pipes" ],
+      "version": "1.0"
     },
     {
       "opname" : "OpGroupCommitWritePipe",
@@ -3045,7 +3308,8 @@
         { "kind" : "IdRef",   "name" : "'Packet Size'" },
         { "kind" : "IdRef",   "name" : "'Packet Alignment'" }
       ],
-      "capabilities" : [ "Pipes" ]
+      "capabilities" : [ "Pipes" ],
+      "version": "1.0"
     },
     {
       "opname" : "OpEnqueueMarker",
@@ -3059,7 +3323,8 @@
         { "kind" : "IdRef",        "name" : "'Wait Events'" },
         { "kind" : "IdRef",        "name" : "'Ret Event'" }
       ],
-      "capabilities" : [ "DeviceEnqueue" ]
+      "capabilities" : [ "DeviceEnqueue" ],
+      "version": "1.0"
     },
     {
       "opname" : "OpEnqueueKernel",
@@ -3080,7 +3345,8 @@
         { "kind" : "IdRef",                            "name" : "'Param Align'" },
         { "kind" : "IdRef",        "quantifier" : "*", "name" : "'Local Size'" }
       ],
-      "capabilities" : [ "DeviceEnqueue" ]
+      "capabilities" : [ "DeviceEnqueue" ],
+      "version": "1.0"
     },
     {
       "opname" : "OpGetKernelNDrangeSubGroupCount",
@@ -3095,7 +3361,8 @@
         { "kind" : "IdRef",        "name" : "'Param Size'" },
         { "kind" : "IdRef",        "name" : "'Param Align'" }
       ],
-      "capabilities" : [ "DeviceEnqueue" ]
+      "capabilities" : [ "DeviceEnqueue" ],
+      "version": "1.0"
     },
     {
       "opname" : "OpGetKernelNDrangeMaxSubGroupSize",
@@ -3110,7 +3377,8 @@
         { "kind" : "IdRef",        "name" : "'Param Size'" },
         { "kind" : "IdRef",        "name" : "'Param Align'" }
       ],
-      "capabilities" : [ "DeviceEnqueue" ]
+      "capabilities" : [ "DeviceEnqueue" ],
+      "version": "1.0"
     },
     {
       "opname" : "OpGetKernelWorkGroupSize",
@@ -3124,7 +3392,8 @@
         { "kind" : "IdRef",        "name" : "'Param Size'" },
         { "kind" : "IdRef",        "name" : "'Param Align'" }
       ],
-      "capabilities" : [ "DeviceEnqueue" ]
+      "capabilities" : [ "DeviceEnqueue" ],
+      "version": "1.0"
     },
     {
       "opname" : "OpGetKernelPreferredWorkGroupSizeMultiple",
@@ -3138,7 +3407,8 @@
         { "kind" : "IdRef",        "name" : "'Param Size'" },
         { "kind" : "IdRef",        "name" : "'Param Align'" }
       ],
-      "capabilities" : [ "DeviceEnqueue" ]
+      "capabilities" : [ "DeviceEnqueue" ],
+      "version": "1.0"
     },
     {
       "opname" : "OpRetainEvent",
@@ -3147,7 +3417,8 @@
       "operands" : [
         { "kind" : "IdRef", "name" : "'Event'" }
       ],
-      "capabilities" : [ "DeviceEnqueue" ]
+      "capabilities" : [ "DeviceEnqueue" ],
+      "version": "1.0"
     },
     {
       "opname" : "OpReleaseEvent",
@@ -3156,7 +3427,8 @@
       "operands" : [
         { "kind" : "IdRef", "name" : "'Event'" }
       ],
-      "capabilities" : [ "DeviceEnqueue" ]
+      "capabilities" : [ "DeviceEnqueue" ],
+      "version": "1.0"
     },
     {
       "opname" : "OpCreateUserEvent",
@@ -3166,7 +3438,8 @@
         { "kind" : "IdResultType" },
         { "kind" : "IdResult" }
       ],
-      "capabilities" : [ "DeviceEnqueue" ]
+      "capabilities" : [ "DeviceEnqueue" ],
+      "version": "1.0"
     },
     {
       "opname" : "OpIsValidEvent",
@@ -3177,7 +3450,8 @@
         { "kind" : "IdResult" },
         { "kind" : "IdRef",        "name" : "'Event'" }
       ],
-      "capabilities" : [ "DeviceEnqueue" ]
+      "capabilities" : [ "DeviceEnqueue" ],
+      "version": "1.0"
     },
     {
       "opname" : "OpSetUserEventStatus",
@@ -3187,7 +3461,8 @@
         { "kind" : "IdRef", "name" : "'Event'" },
         { "kind" : "IdRef", "name" : "'Status'" }
       ],
-      "capabilities" : [ "DeviceEnqueue" ]
+      "capabilities" : [ "DeviceEnqueue" ],
+      "version": "1.0"
     },
     {
       "opname" : "OpCaptureEventProfilingInfo",
@@ -3198,7 +3473,8 @@
         { "kind" : "IdRef", "name" : "'Profiling Info'" },
         { "kind" : "IdRef", "name" : "'Value'" }
       ],
-      "capabilities" : [ "DeviceEnqueue" ]
+      "capabilities" : [ "DeviceEnqueue" ],
+      "version": "1.0"
     },
     {
       "opname" : "OpGetDefaultQueue",
@@ -3208,7 +3484,8 @@
         { "kind" : "IdResultType" },
         { "kind" : "IdResult" }
       ],
-      "capabilities" : [ "DeviceEnqueue" ]
+      "capabilities" : [ "DeviceEnqueue" ],
+      "version": "1.0"
     },
     {
       "opname" : "OpBuildNDRange",
@@ -3221,7 +3498,8 @@
         { "kind" : "IdRef",        "name" : "'LocalWorkSize'" },
         { "kind" : "IdRef",        "name" : "'GlobalWorkOffset'" }
       ],
-      "capabilities" : [ "DeviceEnqueue" ]
+      "capabilities" : [ "DeviceEnqueue" ],
+      "version": "1.0"
     },
     {
       "opname" : "OpImageSparseSampleImplicitLod",
@@ -3234,7 +3512,8 @@
         { "kind" : "IdRef",                             "name" : "'Coordinate'" },
         { "kind" : "ImageOperands", "quantifier" : "?" }
       ],
-      "capabilities" : [ "SparseResidency" ]
+      "capabilities" : [ "SparseResidency" ],
+      "version": "1.0"
     },
     {
       "opname" : "OpImageSparseSampleExplicitLod",
@@ -3247,7 +3526,8 @@
         { "kind" : "IdRef",         "name" : "'Coordinate'" },
         { "kind" : "ImageOperands" }
       ],
-      "capabilities" : [ "SparseResidency" ]
+      "capabilities" : [ "SparseResidency" ],
+      "version": "1.0"
     },
     {
       "opname" : "OpImageSparseSampleDrefImplicitLod",
@@ -3261,7 +3541,8 @@
         { "kind" : "IdRef",                             "name" : "'D~ref~'" },
         { "kind" : "ImageOperands", "quantifier" : "?" }
       ],
-      "capabilities" : [ "SparseResidency" ]
+      "capabilities" : [ "SparseResidency" ],
+      "version": "1.0"
     },
     {
       "opname" : "OpImageSparseSampleDrefExplicitLod",
@@ -3275,7 +3556,8 @@
         { "kind" : "IdRef",         "name" : "'D~ref~'" },
         { "kind" : "ImageOperands" }
       ],
-      "capabilities" : [ "SparseResidency" ]
+      "capabilities" : [ "SparseResidency" ],
+      "version": "1.0"
     },
     {
       "opname" : "OpImageSparseSampleProjImplicitLod",
@@ -3346,7 +3628,8 @@
         { "kind" : "IdRef",                             "name" : "'Coordinate'" },
         { "kind" : "ImageOperands", "quantifier" : "?" }
       ],
-      "capabilities" : [ "SparseResidency" ]
+      "capabilities" : [ "SparseResidency" ],
+      "version": "1.0"
     },
     {
       "opname" : "OpImageSparseGather",
@@ -3360,7 +3643,8 @@
         { "kind" : "IdRef",                             "name" : "'Component'" },
         { "kind" : "ImageOperands", "quantifier" : "?" }
       ],
-      "capabilities" : [ "SparseResidency" ]
+      "capabilities" : [ "SparseResidency" ],
+      "version": "1.0"
     },
     {
       "opname" : "OpImageSparseDrefGather",
@@ -3374,7 +3658,8 @@
         { "kind" : "IdRef",                             "name" : "'D~ref~'" },
         { "kind" : "ImageOperands", "quantifier" : "?" }
       ],
-      "capabilities" : [ "SparseResidency" ]
+      "capabilities" : [ "SparseResidency" ],
+      "version": "1.0"
     },
     {
       "opname" : "OpImageSparseTexelsResident",
@@ -3385,12 +3670,14 @@
         { "kind" : "IdResult" },
         { "kind" : "IdRef",        "name" : "'Resident Code'" }
       ],
-      "capabilities" : [ "SparseResidency" ]
+      "capabilities" : [ "SparseResidency" ],
+      "version": "1.0"
     },
     {
       "opname" : "OpNoLine",
       "class"  : "Debug",
-      "opcode" : 317
+      "opcode" : 317,
+      "version" : "1.0"
     },
     {
       "opname" : "OpAtomicFlagTestAndSet",
@@ -3403,7 +3690,8 @@
         { "kind" : "IdScope",           "name" : "'Memory'" },
         { "kind" : "IdMemorySemantics", "name" : "'Semantics'" }
       ],
-      "capabilities" : [ "Kernel" ]
+      "capabilities" : [ "Kernel" ],
+      "version": "1.0"
     },
     {
       "opname" : "OpAtomicFlagClear",
@@ -3414,7 +3702,8 @@
         { "kind" : "IdScope",           "name" : "'Memory'" },
         { "kind" : "IdMemorySemantics", "name" : "'Semantics'" }
       ],
-      "capabilities" : [ "Kernel" ]
+      "capabilities" : [ "Kernel" ],
+      "version": "1.0"
     },
     {
       "opname" : "OpImageSparseRead",
@@ -3427,7 +3716,8 @@
         { "kind" : "IdRef",                             "name" : "'Coordinate'" },
         { "kind" : "ImageOperands", "quantifier" : "?" }
       ],
-      "capabilities" : [ "SparseResidency" ]
+      "capabilities" : [ "SparseResidency" ],
+      "version": "1.0"
     },
     {
       "opname" : "OpSizeOf",
@@ -4494,8 +4784,79 @@
       "version" : "1.6"
     },
     {
+      "opname" : "OpTypeCooperativeMatrixKHR",
+      "class"  : "Type-Declaration",
+      "opcode" : 4456,
+      "operands" : [
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Component Type'" },
+        { "kind" : "IdScope",      "name" : "'Scope'" },
+        { "kind" : "IdRef",        "name" : "'Rows'" },
+        { "kind" : "IdRef",        "name" : "'Columns'" },
+        { "kind" : "IdRef",        "name" : "'Use'" }
+      ],
+      "capabilities" : [ "CooperativeMatrixKHR" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpCooperativeMatrixLoadKHR",
+      "class"  : "Memory",
+      "opcode" : 4457,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",             "name" : "'Pointer'" },
+        { "kind" : "IdRef",             "name" : "'MemoryLayout'" },
+        { "kind" : "IdRef",             "name" : "'Stride'", "quantifier": "?" },
+        { "kind" : "MemoryAccess",      "name" : "'Memory Operand'", "quantifier" : "?" }
+      ],
+      "capabilities" : [ "CooperativeMatrixKHR" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpCooperativeMatrixStoreKHR",
+      "class"  : "Memory",
+      "opcode" : 4458,
+      "operands" : [
+        { "kind" : "IdRef",             "name" : "'Pointer'" },
+        { "kind" : "IdRef",             "name" : "'Object'" },
+        { "kind" : "IdRef",             "name" : "'MemoryLayout'" },
+        { "kind" : "IdRef",             "name" : "'Stride'", "quantifier": "?" },
+        { "kind" : "MemoryAccess",      "name" : "'Memory Operand'", "quantifier" : "?" }
+      ],
+      "capabilities" : [ "CooperativeMatrixKHR" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpCooperativeMatrixMulAddKHR",
+      "class"  : "Arithmetic",
+      "opcode" : 4459,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",             "name" : "'A'" },
+        { "kind" : "IdRef",             "name" : "'B'" },
+        { "kind" : "IdRef",             "name" : "'C'" },
+        { "kind" : "CooperativeMatrixOperands", "name" : "'Cooperative Matrix Operands'", "quantifier" : "?" }
+      ],
+      "capabilities" : [ "CooperativeMatrixKHR" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpCooperativeMatrixLengthKHR",
+      "class"  : "Miscellaneous",
+      "opcode" : 4460,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "name" : "'Type'" }
+      ],
+      "capabilities" : [ "CooperativeMatrixKHR" ],
+      "version" : "None"
+    },
+    {
         "opname" : "OpTypeRayQueryKHR",
-        "class" : "Reserved",
+        "class" : "Type-Declaration",
         "opcode" : 4472,
         "operands" : [
             { "kind" : "IdResult" }
@@ -4690,6 +5051,70 @@
       "version" : "None"
     },
     {
+      "opname" : "OpImageBlockMatchWindowSSDQCOM",
+      "class"  : "Image",
+      "opcode" : 4500,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Target Sampled Image'" },
+        { "kind" : "IdRef", "name" : "'Target Coordinates'" },
+        { "kind" : "IdRef", "name" : "'Reference Sampled Image'" },
+        { "kind" : "IdRef", "name" : "'Reference Coordinates'" },
+        { "kind" : "IdRef", "name" : "'Block Size'" }
+      ],
+      "capabilities" : [ "TextureBlockMatch2QCOM" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpImageBlockMatchWindowSADQCOM",
+      "class"  : "Image",
+      "opcode" : 4501,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Target Sampled Image'" },
+        { "kind" : "IdRef", "name" : "'Target Coordinates'" },
+        { "kind" : "IdRef", "name" : "'Reference Sampled Image'" },
+        { "kind" : "IdRef", "name" : "'Reference Coordinates'" },
+        { "kind" : "IdRef", "name" : "'Block Size'" }
+      ],
+      "capabilities" : [ "TextureBlockMatch2QCOM" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpImageBlockMatchGatherSSDQCOM",
+      "class"  : "Image",
+      "opcode" : 4502,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Target Sampled Image'" },
+        { "kind" : "IdRef", "name" : "'Target Coordinates'" },
+        { "kind" : "IdRef", "name" : "'Reference Sampled Image'" },
+        { "kind" : "IdRef", "name" : "'Reference Coordinates'" },
+        { "kind" : "IdRef", "name" : "'Block Size'" }
+      ],
+      "capabilities" : [ "TextureBlockMatch2QCOM" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpImageBlockMatchGatherSADQCOM",
+      "class"  : "Image",
+      "opcode" : 4503,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Target Sampled Image'" },
+        { "kind" : "IdRef", "name" : "'Target Coordinates'" },
+        { "kind" : "IdRef", "name" : "'Reference Sampled Image'" },
+        { "kind" : "IdRef", "name" : "'Reference Coordinates'" },
+        { "kind" : "IdRef", "name" : "'Block Size'" }
+      ],
+      "capabilities" : [ "TextureBlockMatch2QCOM" ],
+      "version" : "None"
+    },
+    {
       "opname" : "OpGroupIAddNonUniformAMD",
       "class"  : "Group",
       "opcode" : 5000,
@@ -4851,6 +5276,65 @@
       "version" : "None"
     },
     {
+      "opname" : "OpFinalizeNodePayloadsAMDX",
+      "class"  : "Reserved",
+      "opcode" : 5075,
+      "operands" : [
+        { "kind" : "IdRef", "name": "'Payload Array'" }
+      ],
+      "capabilities" : [ "ShaderEnqueueAMDX" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpFinishWritingNodePayloadAMDX",
+      "class"  : "Reserved",
+      "opcode" : 5078,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name": "'Payload'" }
+      ],
+      "capabilities" : [ "ShaderEnqueueAMDX" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpInitializeNodePayloadsAMDX",
+      "class"  : "Reserved",
+      "opcode" : 5090,
+      "operands" : [
+        { "kind" : "IdRef", "name": "'Payload Array'" },
+        { "kind" : "IdScope", "name": "'Visibility'" },
+        { "kind" : "IdRef", "name": "'Payload Count'" },
+        { "kind" : "IdRef", "name": "'Node Index'" }
+      ],
+      "capabilities" : [ "ShaderEnqueueAMDX" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpGroupNonUniformQuadAllKHR",
+      "class"  : "Non-Uniform",
+      "opcode" : 5110,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Predicate'" }
+      ],
+      "capabilities" : [ "QuadControlKHR" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpGroupNonUniformQuadAnyKHR",
+      "class"  : "Non-Uniform",
+      "opcode" : 5111,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Predicate'" }
+      ],
+      "capabilities" : [ "QuadControlKHR" ],
+      "version" : "None"
+    },
+    {
       "opname" : "OpHitObjectRecordHitMotionNV",
       "class"  : "Reserved",
       "opcode" : 5249,
@@ -5297,7 +5781,7 @@
     },
     {
       "opname" : "OpTypeHitObjectNV",
-      "class"  : "Reserved",
+      "class"  : "Type-Declaration",
       "opcode" : 5281,
       "operands" : [
         { "kind" : "IdResult" }
@@ -5372,6 +5856,38 @@
       "version" : "None"
     },
     {
+      "opname" : "OpFetchMicroTriangleVertexPositionNV",
+      "class"  : "Reserved",
+      "opcode" : 5300,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Accel'" },
+        { "kind" : "IdRef", "name" : "'Instance Id'" },
+        { "kind" : "IdRef", "name" : "'Geometry Index'" },
+        { "kind" : "IdRef", "name" : "'Primitive Index'" },
+        { "kind" : "IdRef", "name" : "'Barycentric'" }
+      ],
+      "capabilities" : [ "DisplacementMicromapNV" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpFetchMicroTriangleVertexBarycentricNV",
+      "class"  : "Reserved",
+      "opcode" : 5301,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef", "name" : "'Accel'" },
+        { "kind" : "IdRef", "name" : "'Instance Id'" },
+        { "kind" : "IdRef", "name" : "'Geometry Index'" },
+        { "kind" : "IdRef", "name" : "'Primitive Index'" },
+        { "kind" : "IdRef", "name" : "'Barycentric'" }
+      ],
+      "capabilities" : [ "DisplacementMicromapNV" ],
+      "version" : "None"
+    },
+    {
       "opname" : "OpReportIntersectionNV",
       "class"  : "Reserved",
       "opcode" : 5334,
@@ -5504,7 +6020,7 @@
     },
     {
       "opname" : "OpTypeAccelerationStructureNV",
-      "class"  : "Reserved",
+      "class"  : "Type-Declaration",
       "opcode" : 5341,
       "operands" : [
         { "kind" : "IdResult" }
@@ -5515,7 +6031,7 @@
     },
     {
       "opname" : "OpTypeAccelerationStructureKHR",
-      "class"  : "Reserved",
+      "class"  : "Type-Declaration",
       "opcode" : 5341,
       "operands" : [
         { "kind" : "IdResult" }
@@ -5539,7 +6055,7 @@
     },
     {
       "opname" : "OpTypeCooperativeMatrixNV",
-      "class"  : "Reserved",
+      "class"  : "Type-Declaration",
       "opcode" : 5358,
       "operands" : [
         { "kind" : "IdResult" },
@@ -5736,6 +6252,24 @@
       "version" : "None"
     },
     {
+      "opname" : "OpRawAccessChainNV",
+      "class"  : "Memory",
+      "opcode" : 5398,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",          "name" : "'Base'" },
+        { "kind" : "IdRef",          "name" : "'Byte stride'" },
+        { "kind" : "IdRef",          "name" : "'Element index'" },
+        { "kind" : "IdRef",          "name" : "'Byte offset'" },
+        { "kind" : "RawAccessChainOperands", "quantifier" : "?" }
+      ],
+      "capabilities" : [
+        "RawAccessChainsNV"
+      ],
+      "version" : "None"
+    },
+    {
       "opname" : "OpSubgroupShuffleINTEL",
       "class"  : "Group",
       "opcode" : 5571,
@@ -6124,7 +6658,7 @@
         { "kind" : "IdMemorySemantics", "name" : "'Semantics'" },
         { "kind" : "IdRef",             "name" : "'Value'" }
       ],
-      "capabilities" : [ "AtomicFloat16MinMaxEXT", "AtomicFloat32MinMaxEXT", "AtomicFloat64MinMaxEXT" ],
+      "capabilities" : [ "AtomicFloat16MinMaxEXT", "AtomicFloat32MinMaxEXT", "AtomicFloat64MinMaxEXT", "AtomicFloat16VectorNV" ],
       "version" : "None"
     },
     {
@@ -6139,7 +6673,7 @@
         { "kind" : "IdMemorySemantics", "name" : "'Semantics'" },
         { "kind" : "IdRef",             "name" : "'Value'" }
       ],
-      "capabilities" : [ "AtomicFloat16MinMaxEXT", "AtomicFloat32MinMaxEXT", "AtomicFloat64MinMaxEXT" ],
+      "capabilities" : [ "AtomicFloat16MinMaxEXT", "AtomicFloat32MinMaxEXT", "AtomicFloat64MinMaxEXT", "AtomicFloat16VectorNV" ],
       "version" : "None"
     },
     {
@@ -9111,7 +9645,7 @@
         { "kind" : "IdMemorySemantics", "name" : "'Semantics'" },
         { "kind" : "IdRef",             "name" : "'Value'" }
       ],
-      "capabilities" : [ "AtomicFloat16AddEXT", "AtomicFloat32AddEXT", "AtomicFloat64AddEXT" ],
+      "capabilities" : [ "AtomicFloat16AddEXT", "AtomicFloat32AddEXT", "AtomicFloat64AddEXT", "AtomicFloat16VectorNV" ],
       "extensions" : [ "SPV_EXT_shader_atomic_float_add" ],
       "version" : "None"
     },
@@ -9136,7 +9670,7 @@
       "operands" : [
         { "kind" : "IdRef",    "quantifier" : "*", "name" : "'Member 0 type', +\n'member 1 type', +\n..." }
       ],
-      "capabilities" : [ "LongConstantCompositeINTEL" ],
+      "capabilities" : [ "LongCompositesINTEL" ],
       "version" : "None"
     },
     {
@@ -9146,7 +9680,7 @@
       "operands" : [
         { "kind" : "IdRef",        "quantifier" : "*", "name" : "'Constituents'" }
       ],
-      "capabilities" : [ "LongConstantCompositeINTEL" ],
+      "capabilities" : [ "LongCompositesINTEL" ],
       "version" : "None"
     },
     {
@@ -9156,10 +9690,22 @@
       "operands" : [
         { "kind" : "IdRef",        "quantifier" : "*", "name" : "'Constituents'" }
       ],
-      "capabilities" : [ "LongConstantCompositeINTEL" ],
+      "capabilities" : [ "LongCompositesINTEL" ],
       "version" : "None"
     },
     {
+      "opname" : "OpCompositeConstructContinuedINTEL",
+      "class"  : "Composite",
+      "opcode" : 6096,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",        "quantifier" : "*", "name" : "'Constituents'" }
+      ],
+      "capabilities" : [ "LongCompositesINTEL" ],
+      "version": "None"
+    },
+    {
       "opname" : "OpConvertFToBF16INTEL",
       "class"  : "Conversion",
       "opcode" : 6116,
@@ -9318,6 +9864,34 @@
       ],
       "capabilities" : [ "GroupUniformArithmeticKHR" ],
       "version" : "None"
+    },
+    {
+      "opname" : "OpMaskedGatherINTEL",
+      "class"  : "Memory",
+      "opcode" : 6428,
+      "operands" : [
+        { "kind" : "IdResultType" },
+        { "kind" : "IdResult" },
+        { "kind" : "IdRef",           "name" : "'PtrVector'" },
+        { "kind" : "LiteralInteger",  "name" : "'Alignment'" },
+        { "kind" : "IdRef",           "name" : "'Mask'" },
+        { "kind" : "IdRef",           "name" : "'FillEmpty'" }
+      ],
+      "capabilities" : [ "MaskedGatherScatterINTEL" ],
+      "version" : "None"
+    },
+    {
+      "opname" : "OpMaskedScatterINTEL",
+      "class"  : "Memory",
+      "opcode" : 6429,
+      "operands" : [
+        { "kind" : "IdRef",           "name" : "'InputVector'" },
+        { "kind" : "IdRef",           "name" : "'PtrVector'" },
+        { "kind" : "LiteralInteger",  "name" : "'Alignment'" },
+        { "kind" : "IdRef",           "name" : "'Mask'" }
+      ],
+      "capabilities" : [ "MaskedGatherScatterINTEL" ],
+      "version" : "None"
     }
   ],
   "operand_kinds" : [
@@ -9335,14 +9909,16 @@
           "capabilities" : [ "Shader" ],
           "parameters" : [
             { "kind" : "IdRef" }
-          ]
+          ],
+          "version": "1.0"
         },
         {
           "enumerant" : "Lod",
           "value" : "0x0002",
           "parameters" : [
             { "kind" : "IdRef" }
-          ]
+          ],
+          "version": "1.0"
         },
         {
           "enumerant" : "Grad",
@@ -9350,14 +9926,16 @@
           "parameters" : [
             { "kind" : "IdRef" },
             { "kind" : "IdRef" }
-          ]
+          ],
+          "version": "1.0"
         },
         {
           "enumerant" : "ConstOffset",
           "value" : "0x0008",
           "parameters" : [
             { "kind" : "IdRef" }
-          ]
+          ],
+          "version": "1.0"
         },
         {
           "enumerant" : "Offset",
@@ -9365,7 +9943,8 @@
           "capabilities" : [ "ImageGatherExtended" ],
           "parameters" : [
             { "kind" : "IdRef" }
-          ]
+          ],
+          "version": "1.0"
         },
         {
           "enumerant" : "ConstOffsets",
@@ -9373,14 +9952,16 @@
           "capabilities" : [ "ImageGatherExtended" ],
           "parameters" : [
             { "kind" : "IdRef" }
-          ]
+          ],
+          "version": "1.0"
         },
         {
           "enumerant" : "Sample",
           "value" : "0x0040",
           "parameters" : [
             { "kind" : "IdRef" }
-          ]
+          ],
+          "version": "1.0"
         },
         {
           "enumerant" : "MinLod",
@@ -9388,7 +9969,8 @@
           "capabilities" : [ "MinLod" ],
           "parameters" : [
             { "kind" : "IdRef" }
-          ]
+          ],
+          "version": "1.0"
         },
         {
           "enumerant" : "MakeTexelAvailable",
@@ -9474,7 +10056,8 @@
           "value" : "0x10000",
           "parameters" : [
             { "kind" : "IdRef" }
-          ]
+          ],
+          "version": "1.0"
         }
       ]
     },
@@ -9484,38 +10067,62 @@
       "enumerants" : [
         {
           "enumerant" : "None",
-          "value" : "0x0000"
+          "value" : "0x0000",
+          "version" : "1.0"
         },
         {
           "enumerant" : "NotNaN",
-          "value" : "0x0001"
+          "value" : "0x0001",
+          "version" : "1.0"
         },
         {
           "enumerant" : "NotInf",
-          "value" : "0x0002"
+          "value" : "0x0002",
+          "version" : "1.0"
         },
         {
           "enumerant" : "NSZ",
-          "value" : "0x0004"
+          "value" : "0x0004",
+          "version" : "1.0"
         },
         {
           "enumerant" : "AllowRecip",
-          "value" : "0x0008"
+          "value" : "0x0008",
+          "version" : "1.0"
         },
         {
           "enumerant" : "Fast",
-          "value" : "0x0010"
+          "value" : "0x0010",
+          "version" : "1.0"
+        },
+        {
+          "enumerant" : "AllowContract",
+          "value" : "0x10000",
+          "capabilities" : [ "FloatControls2", "FPFastMathModeINTEL" ],
+          "version" : "None"
         },
         {
           "enumerant" : "AllowContractFastINTEL",
           "value" : "0x10000",
-          "capabilities" : [ "FPFastMathModeINTEL" ],
+          "capabilities" : [ "FloatControls2", "FPFastMathModeINTEL" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "AllowReassoc",
+          "value" : "0x20000",
+          "capabilities" : [ "FloatControls2", "FPFastMathModeINTEL" ],
           "version" : "None"
         },
         {
           "enumerant" : "AllowReassocINTEL",
           "value" : "0x20000",
-          "capabilities" : [ "FPFastMathModeINTEL" ],
+          "capabilities" : [ "FloatControls2", "FPFastMathModeINTEL" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "AllowTransform",
+          "value" : "0x40000",
+          "capabilities" : [ "FloatControls2" ],
           "version" : "None"
         }
       ]
@@ -9526,15 +10133,18 @@
       "enumerants" : [
         {
           "enumerant" : "None",
-          "value" : "0x0000"
+          "value" : "0x0000",
+          "version" : "1.0"
         },
         {
           "enumerant" : "Flatten",
-          "value" : "0x0001"
+          "value" : "0x0001",
+          "version" : "1.0"
         },
         {
           "enumerant" : "DontFlatten",
-          "value" : "0x0002"
+          "value" : "0x0002",
+          "version" : "1.0"
         }
       ]
     },
@@ -9544,15 +10154,18 @@
       "enumerants" : [
         {
           "enumerant" : "None",
-          "value" : "0x0000"
+          "value" : "0x0000",
+          "version" : "1.0"
         },
         {
           "enumerant" : "Unroll",
-          "value" : "0x0001"
+          "value" : "0x0001",
+          "version" : "1.0"
         },
         {
           "enumerant" : "DontUnroll",
-          "value" : "0x0002"
+          "value" : "0x0002",
+          "version" : "1.0"
         },
         {
           "enumerant" : "DependencyInfinite",
@@ -9702,23 +10315,28 @@
       "enumerants" : [
         {
           "enumerant" : "None",
-          "value" : "0x0000"
+          "value" : "0x0000",
+          "version" : "1.0"
         },
         {
           "enumerant" : "Inline",
-          "value" : "0x0001"
+          "value" : "0x0001",
+          "version" : "1.0"
         },
         {
           "enumerant" : "DontInline",
-          "value" : "0x0002"
+          "value" : "0x0002",
+          "version" : "1.0"
         },
         {
           "enumerant" : "Pure",
-          "value" : "0x0004"
+          "value" : "0x0004",
+          "version" : "1.0"
         },
         {
           "enumerant" : "Const",
-          "value" : "0x0008"
+          "value" : "0x0008",
+          "version" : "1.0"
         },
         {
           "enumerant" : "OptNoneINTEL",
@@ -9734,53 +10352,65 @@
       "enumerants" : [
         {
           "enumerant" : "Relaxed",
-          "value" : "0x0000"
+          "value" : "0x0000",
+          "version" : "1.0"
         },
         {
           "enumerant" : "None",
-          "value" : "0x0000"
+          "value" : "0x0000",
+          "version" : "1.0"
         },
         {
           "enumerant" : "Acquire",
-          "value" : "0x0002"
+          "value" : "0x0002",
+          "version" : "1.0"
         },
         {
           "enumerant" : "Release",
-          "value" : "0x0004"
+          "value" : "0x0004",
+          "version" : "1.0"
         },
         {
           "enumerant" : "AcquireRelease",
-          "value" : "0x0008"
+          "value" : "0x0008",
+          "version" : "1.0"
         },
         {
           "enumerant" : "SequentiallyConsistent",
-          "value" : "0x0010"
+          "value" : "0x0010",
+          "version" : "1.0"
         },
         {
           "enumerant" : "UniformMemory",
           "value" : "0x0040",
-          "capabilities" : [ "Shader" ]
+          "capabilities" : [ "Shader" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "SubgroupMemory",
-          "value" : "0x0080"
+          "value" : "0x0080",
+          "version" : "1.0"
         },
         {
           "enumerant" : "WorkgroupMemory",
-          "value" : "0x0100"
+          "value" : "0x0100",
+          "version" : "1.0"
         },
         {
           "enumerant" : "CrossWorkgroupMemory",
-          "value" : "0x0200"
+          "value" : "0x0200",
+          "version" : "1.0"
         },
         {
           "enumerant" : "AtomicCounterMemory",
           "value" : "0x0400",
-          "capabilities" : [ "AtomicStorage" ]
+          "capabilities" : [ "AtomicStorage" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "ImageMemory",
-          "value" : "0x0800"
+          "value" : "0x0800",
+          "version" : "1.0"
         },
         {
           "enumerant" : "OutputMemory",
@@ -9836,22 +10466,26 @@
       "enumerants" : [
         {
           "enumerant" : "None",
-          "value" : "0x0000"
+          "value" : "0x0000",
+          "version" : "1.0"
         },
         {
           "enumerant" : "Volatile",
-          "value" : "0x0001"
+          "value" : "0x0001",
+          "version" : "1.0"
         },
         {
           "enumerant" : "Aligned",
           "value" : "0x0002",
           "parameters" : [
             { "kind" : "LiteralInteger" }
-          ]
+          ],
+          "version" : "1.0"
         },
         {
           "enumerant" : "Nontemporal",
-          "value" : "0x0004"
+          "value" : "0x0004",
+          "version" : "1.0"
         },
         {
           "enumerant" : "MakePointerAvailable",
@@ -9932,12 +10566,14 @@
       "enumerants" : [
         {
           "enumerant" : "None",
-          "value" : "0x0000"
+          "value" : "0x0000",
+          "version" : "1.0"
         },
         {
           "enumerant" : "CmdExecTime",
           "value" : "0x0001",
-          "capabilities" : [ "Kernel" ]
+          "capabilities" : [ "Kernel" ],
+          "version": "1.0"
         }
       ]
     },
@@ -10050,40 +10686,95 @@
       ]
     },
     {
+      "category" : "BitEnum",
+      "kind" : "RawAccessChainOperands",
+      "enumerants" : [
+        {
+          "enumerant" : "None",
+          "value" : "0x0000"
+        },
+        {
+          "enumerant" : "RobustnessPerComponentNV",
+          "value" : "0x0001",
+          "capabilities" : [ "RawAccessChainsNV" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "RobustnessPerElementNV",
+          "value" : "0x0002",
+          "capabilities" : [ "RawAccessChainsNV" ],
+          "version" : "None"
+        }
+      ]
+    },
+    {
       "category" : "ValueEnum",
       "kind" : "SourceLanguage",
       "enumerants" : [
         {
           "enumerant" : "Unknown",
-          "value" : 0
+          "value" : 0,
+          "version" : "1.0"
         },
         {
           "enumerant" : "ESSL",
-          "value" : 1
+          "value" : 1,
+          "version" : "1.0"
         },
         {
           "enumerant" : "GLSL",
-          "value" : 2
+          "value" : 2,
+          "version" : "1.0"
         },
         {
           "enumerant" : "OpenCL_C",
-          "value" : 3
+          "value" : 3,
+          "version" : "1.0"
         },
         {
           "enumerant" : "OpenCL_CPP",
-          "value" : 4
+          "value" : 4,
+          "version" : "1.0"
         },
         {
           "enumerant" : "HLSL",
-          "value" : 5
+          "value" : 5,
+          "version" : "1.0"
         },
         {
           "enumerant" : "CPP_for_OpenCL",
-          "value" : 6
+          "value" : 6,
+          "version" : "1.0"
         },
         {
           "enumerant" : "SYCL",
-          "value" : 7
+          "value" : 7,
+          "version" : "1.0"
+        },
+        {
+          "enumerant" : "HERO_C",
+          "value" : 8,
+          "version" : "1.0"
+        },
+        {
+          "enumerant" : "NZSL",
+          "value" : 9,
+          "version" : "1.0"
+        },
+        {
+          "enumerant" : "WGSL",
+          "value" : 10,
+          "version" : "1.0"
+        },
+        {
+          "enumerant" : "Slang",
+          "value" : 11,
+          "version" : "1.0"
+        },
+        {
+          "enumerant" : "Zig",
+          "value" : 12,
+          "version" : "1.0"
         }
       ]
     },
@@ -10094,37 +10785,44 @@
         {
           "enumerant" : "Vertex",
           "value" : 0,
-          "capabilities" : [ "Shader" ]
+          "capabilities" : [ "Shader" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "TessellationControl",
           "value" : 1,
-          "capabilities" : [ "Tessellation" ]
+          "capabilities" : [ "Tessellation" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "TessellationEvaluation",
           "value" : 2,
-          "capabilities" : [ "Tessellation" ]
+          "capabilities" : [ "Tessellation" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "Geometry",
           "value" : 3,
-          "capabilities" : [ "Geometry" ]
+          "capabilities" : [ "Geometry" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "Fragment",
           "value" : 4,
-          "capabilities" : [ "Shader" ]
+          "capabilities" : [ "Shader" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "GLCompute",
           "value" : 5,
-          "capabilities" : [ "Shader" ]
+          "capabilities" : [ "Shader" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "Kernel",
           "value" : 6,
-          "capabilities" : [ "Kernel" ]
+          "capabilities" : [ "Kernel" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "TaskNV",
@@ -10230,17 +10928,20 @@
       "enumerants" : [
         {
           "enumerant" : "Logical",
-          "value" : 0
+          "value" : 0,
+          "version" : "1.0"
         },
         {
           "enumerant" : "Physical32",
           "value" : 1,
-          "capabilities" : [ "Addresses" ]
+          "capabilities" : [ "Addresses" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "Physical64",
           "value" : 2,
-          "capabilities" : [ "Addresses" ]
+          "capabilities" : [ "Addresses" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "PhysicalStorageBuffer64",
@@ -10265,17 +10966,20 @@
         {
           "enumerant" : "Simple",
           "value" : 0,
-          "capabilities" : [ "Shader" ]
+          "capabilities" : [ "Shader" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "GLSL450",
           "value" : 1,
-          "capabilities" : [ "Shader" ]
+          "capabilities" : [ "Shader" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "OpenCL",
           "value" : 2,
-          "capabilities" : [ "Kernel" ]
+          "capabilities" : [ "Kernel" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "Vulkan",
@@ -10302,82 +11006,98 @@
           "capabilities" : [ "Geometry" ],
           "parameters" : [
             { "kind" : "LiteralInteger", "name" : "'Number of <<Invocation,invocations>>'" }
-          ]
+          ],
+          "version": "1.0"
         },
         {
           "enumerant" : "SpacingEqual",
           "value" : 1,
-          "capabilities" : [ "Tessellation" ]
+          "capabilities" : [ "Tessellation" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "SpacingFractionalEven",
           "value" : 2,
-          "capabilities" : [ "Tessellation" ]
+          "capabilities" : [ "Tessellation" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "SpacingFractionalOdd",
           "value" : 3,
-          "capabilities" : [ "Tessellation" ]
+          "capabilities" : [ "Tessellation" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "VertexOrderCw",
           "value" : 4,
-          "capabilities" : [ "Tessellation" ]
+          "capabilities" : [ "Tessellation" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "VertexOrderCcw",
           "value" : 5,
-          "capabilities" : [ "Tessellation" ]
+          "capabilities" : [ "Tessellation" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "PixelCenterInteger",
           "value" : 6,
-          "capabilities" : [ "Shader" ]
+          "capabilities" : [ "Shader" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "OriginUpperLeft",
           "value" : 7,
-          "capabilities" : [ "Shader" ]
+          "capabilities" : [ "Shader" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "OriginLowerLeft",
           "value" : 8,
-          "capabilities" : [ "Shader" ]
+          "capabilities" : [ "Shader" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "EarlyFragmentTests",
           "value" : 9,
-          "capabilities" : [ "Shader" ]
+          "capabilities" : [ "Shader" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "PointMode",
           "value" : 10,
-          "capabilities" : [ "Tessellation" ]
+          "capabilities" : [ "Tessellation" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "Xfb",
           "value" : 11,
-          "capabilities" : [ "TransformFeedback" ]
+          "capabilities" : [ "TransformFeedback" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "DepthReplacing",
           "value" : 12,
-          "capabilities" : [ "Shader" ]
+          "capabilities" : [ "Shader" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "DepthGreater",
           "value" : 14,
-          "capabilities" : [ "Shader" ]
+          "capabilities" : [ "Shader" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "DepthLess",
           "value" : 15,
-          "capabilities" : [ "Shader" ]
+          "capabilities" : [ "Shader" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "DepthUnchanged",
           "value" : 16,
-          "capabilities" : [ "Shader" ]
+          "capabilities" : [ "Shader" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "LocalSize",
@@ -10386,7 +11106,8 @@
             { "kind" : "LiteralInteger", "name" : "'x size'" },
             { "kind" : "LiteralInteger", "name" : "'y size'" },
             { "kind" : "LiteralInteger", "name" : "'z size'" }
-          ]
+          ],
+          "version": "1.0"
         },
         {
           "enumerant" : "LocalSizeHint",
@@ -10396,42 +11117,50 @@
             { "kind" : "LiteralInteger", "name" : "'x size'" },
             { "kind" : "LiteralInteger", "name" : "'y size'" },
             { "kind" : "LiteralInteger", "name" : "'z size'" }
-          ]
+          ],
+          "version": "1.0"
         },
         {
           "enumerant" : "InputPoints",
           "value" : 19,
-          "capabilities" : [ "Geometry" ]
+          "capabilities" : [ "Geometry" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "InputLines",
           "value" : 20,
-          "capabilities" : [ "Geometry" ]
+          "capabilities" : [ "Geometry" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "InputLinesAdjacency",
           "value" : 21,
-          "capabilities" : [ "Geometry" ]
+          "capabilities" : [ "Geometry" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "Triangles",
           "value" : 22,
-          "capabilities" : [ "Geometry", "Tessellation" ]
+          "capabilities" : [ "Geometry", "Tessellation" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "InputTrianglesAdjacency",
           "value" : 23,
-          "capabilities" : [ "Geometry" ]
+          "capabilities" : [ "Geometry" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "Quads",
           "value" : 24,
-          "capabilities" : [ "Tessellation" ]
+          "capabilities" : [ "Tessellation" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "Isolines",
           "value" : 25,
-          "capabilities" : [ "Tessellation" ]
+          "capabilities" : [ "Tessellation" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "OutputVertices",
@@ -10439,22 +11168,26 @@
           "capabilities" : [ "Geometry", "Tessellation", "MeshShadingNV", "MeshShadingEXT" ],
           "parameters" : [
             { "kind" : "LiteralInteger", "name" : "'Vertex count'" }
-          ]
+          ],
+          "version": "1.0"
         },
         {
           "enumerant" : "OutputPoints",
           "value" : 27,
-          "capabilities" : [ "Geometry", "MeshShadingNV", "MeshShadingEXT" ]
+          "capabilities" : [ "Geometry", "MeshShadingNV", "MeshShadingEXT" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "OutputLineStrip",
           "value" : 28,
-          "capabilities" : [ "Geometry" ]
+          "capabilities" : [ "Geometry" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "OutputTriangleStrip",
           "value" : 29,
-          "capabilities" : [ "Geometry" ]
+          "capabilities" : [ "Geometry" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "VecTypeHint",
@@ -10462,12 +11195,14 @@
           "capabilities" : [ "Kernel" ],
           "parameters" : [
             { "kind" : "LiteralInteger", "name" : "'Vector type'" }
-          ]
+          ],
+          "version": "1.0"
         },
         {
           "enumerant" : "ContractionOff",
           "value" : 31,
-          "capabilities" : [ "Kernel" ]
+          "capabilities" : [ "Kernel" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "Initializer",
@@ -10626,6 +11361,52 @@
           "version" : "None"
         },
         {
+          "enumerant" : "CoalescingAMDX",
+          "value" : 5069,
+          "capabilities" : [ "ShaderEnqueueAMDX" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "MaxNodeRecursionAMDX",
+          "value" : 5071,
+          "capabilities" : [ "ShaderEnqueueAMDX" ],
+          "parameters" : [
+            { "kind" : "IdRef", "name" : "'Number of recursions'" }
+          ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "StaticNumWorkgroupsAMDX",
+          "value" : 5072,
+          "capabilities" : [ "ShaderEnqueueAMDX" ],
+          "parameters" : [
+            { "kind" : "IdRef", "name" : "'x size'" },
+            { "kind" : "IdRef", "name" : "'y size'" },
+            { "kind" : "IdRef", "name" : "'z size'" }
+          ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "ShaderIndexAMDX",
+          "value" : 5073,
+          "capabilities" : [ "ShaderEnqueueAMDX" ],
+          "parameters" : [
+            { "kind" : "IdRef", "name" : "'Shader Index'" }
+          ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "MaxNumWorkgroupsAMDX",
+          "value" : 5077,
+          "capabilities" : [ "ShaderEnqueueAMDX" ],
+          "parameters" : [
+            { "kind" : "IdRef", "name" : "'x size'" },
+            { "kind" : "IdRef", "name" : "'y size'" },
+            { "kind" : "IdRef", "name" : "'z size'" }
+          ],
+          "version" : "None"
+        },
+        {
           "enumerant": "StencilRefUnchangedFrontAMD",
           "value": 5079,
           "capabilities": [ "StencilExportEXT" ],
@@ -10668,6 +11449,18 @@
           "version": "None"
         },
         {
+          "enumerant": "QuadDerivativesKHR",
+          "value": 5088,
+          "capabilities": [ "QuadControlKHR" ],
+          "version": "None"
+        },
+        {
+          "enumerant" : "RequireFullQuadsKHR",
+          "value" : 5089,
+          "capabilities" : [ "QuadControlKHR" ],
+          "version" : "None"
+        },
+        {
           "enumerant" : "OutputLinesNV",
           "value" : 5269,
           "capabilities" : [ "MeshShadingNV", "MeshShadingEXT" ],
@@ -10865,6 +11658,23 @@
           "version" : "None"
         },
         {
+          "enumerant" : "MaximallyReconvergesKHR",
+          "value" : 6023,
+          "capabilities" : [ "Shader" ],
+          "extensions" : [ "SPV_KHR_maximal_reconvergence" ],
+          "version" : "None"
+	},
+	{
+          "enumerant" : "FPFastMathDefault",
+          "value" : 6028,
+          "parameters" : [
+            { "kind" : "IdRef", "name" : "'Target Type'" },
+            { "kind" : "IdRef", "name" : "'Fast-Math Mode'" }
+	        ],
+          "capabilities" : [ "FloatControls2" ],
+          "version" : "None"
+	},
+	{
           "enumerant" : "StreamingInterfaceINTEL",
           "value" : 6154,
           "parameters" : [
@@ -10890,6 +11700,33 @@
           ],
           "capabilities" : [ "VectorComputeINTEL" ],
           "version" : "None"
+        },
+        {
+          "enumerant" : "MaximumRegistersINTEL",
+          "value" : 6461,
+          "parameters" : [
+            { "kind" : "LiteralInteger", "name" : "'Number of Registers'" }
+          ],
+          "capabilities" : [ "RegisterLimitsINTEL" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "MaximumRegistersIdINTEL",
+          "value" : 6462,
+          "parameters" : [
+            { "kind" : "IdRef", "name" : "'Number of Registers'" }
+          ],
+          "capabilities" : [ "RegisterLimitsINTEL" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "NamedMaximumRegistersINTEL",
+          "value" : 6463,
+          "parameters" : [
+            { "kind" : "NamedMaximumNumberOfRegisters", "name" : "'Named Maximum Number of Registers'" }
+          ],
+          "capabilities" : [ "RegisterLimitsINTEL" ],
+          "version" : "None"
         }
       ]
     },
@@ -10899,57 +11736,69 @@
       "enumerants" : [
         {
           "enumerant" : "UniformConstant",
-          "value" : 0
+          "value" : 0,
+          "version" : "1.0"
         },
         {
           "enumerant" : "Input",
-          "value" : 1
+          "value" : 1,
+          "version" : "1.0"
         },
         {
           "enumerant" : "Uniform",
           "value" : 2,
-          "capabilities" : [ "Shader" ]
+          "capabilities" : [ "Shader" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "Output",
           "value" : 3,
-          "capabilities" : [ "Shader" ]
+          "capabilities" : [ "Shader" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "Workgroup",
-          "value" : 4
+          "value" : 4,
+          "version" : "1.0"
         },
         {
           "enumerant" : "CrossWorkgroup",
-          "value" : 5
+          "value" : 5,
+          "version" : "1.0"
         },
         {
           "enumerant" : "Private",
           "value" : 6,
-          "capabilities" : [ "Shader", "VectorComputeINTEL" ]
+          "capabilities" : [ "Shader", "VectorComputeINTEL" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "Function",
-          "value" : 7
+          "value" : 7,
+          "version" : "1.0"
         },
         {
           "enumerant" : "Generic",
           "value" : 8,
-          "capabilities" : [ "GenericPointer" ]
+          "capabilities" : [ "GenericPointer" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "PushConstant",
           "value" : 9,
-          "capabilities" : [ "Shader" ]
+          "capabilities" : [ "Shader" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "AtomicCounter",
           "value" : 10,
-          "capabilities" : [ "AtomicStorage" ]
+          "capabilities" : [ "AtomicStorage" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "Image",
-          "value" : 11
+          "value" : 11,
+          "version" : "1.0"
         },
         {
           "enumerant" : "StorageBuffer",
@@ -10968,6 +11817,18 @@
           "version" : "None"
         },
         {
+          "enumerant" : "NodePayloadAMDX",
+          "value" : 5068,
+          "capabilities" : [ "ShaderEnqueueAMDX" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "NodeOutputPayloadAMDX",
+          "value" : 5076,
+          "capabilities" : [ "ShaderEnqueueAMDX" ],
+          "version" : "None"
+        },
+        {
           "enumerant" : "CallableDataNV",
           "value" : 5328,
           "extensions" : [ "SPV_NV_ray_tracing" , "SPV_KHR_ray_tracing" ],
@@ -11112,35 +11973,42 @@
         {
           "enumerant" : "1D",
           "value" : 0,
-          "capabilities" : [ "Sampled1D" ]
+          "capabilities" : [ "Sampled1D" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "2D",
-          "value" : 1
+          "value" : 1,
+          "version" : "1.0"
         },
         {
           "enumerant" : "3D",
-          "value" : 2
+          "value" : 2,
+          "version" : "1.0"
         },
         {
           "enumerant" : "Cube",
           "value" : 3,
-          "capabilities" : [ "Shader" ]
+          "capabilities" : [ "Shader" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "Rect",
           "value" : 4,
-          "capabilities" : [ "SampledRect" ]
+          "capabilities" : [ "SampledRect" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "Buffer",
           "value" : 5,
-          "capabilities" : [ "SampledBuffer" ]
+          "capabilities" : [ "SampledBuffer" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "SubpassData",
           "value" : 6,
-          "capabilities" : [ "InputAttachment" ]
+          "capabilities" : [ "InputAttachment" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "TileImageDataEXT",
@@ -11157,27 +12025,27 @@
         {
           "enumerant" : "None",
           "value" : 0,
-          "capabilities" : [ "Kernel" ]
+          "version": "1.0"
         },
         {
           "enumerant" : "ClampToEdge",
           "value" : 1,
-          "capabilities" : [ "Kernel" ]
+          "version": "1.0"
         },
         {
           "enumerant" : "Clamp",
           "value" : 2,
-          "capabilities" : [ "Kernel" ]
+          "version": "1.0"
         },
         {
           "enumerant" : "Repeat",
           "value" : 3,
-          "capabilities" : [ "Kernel" ]
+          "version": "1.0"
         },
         {
           "enumerant" : "RepeatMirrored",
           "value" : 4,
-          "capabilities" : [ "Kernel" ]
+          "version": "1.0"
         }
       ]
     },
@@ -11188,12 +12056,12 @@
         {
           "enumerant" : "Nearest",
           "value" : 0,
-          "capabilities" : [ "Kernel" ]
+          "version": "1.0"
         },
         {
           "enumerant" : "Linear",
           "value" : 1,
-          "capabilities" : [ "Kernel" ]
+          "version": "1.0"
         }
       ]
     },
@@ -11203,212 +12071,254 @@
       "enumerants" : [
         {
           "enumerant" : "Unknown",
-          "value" : 0
+          "value" : 0,
+          "version" : "1.0"
         },
         {
           "enumerant" : "Rgba32f",
           "value" : 1,
-          "capabilities" : [ "Shader" ]
+          "capabilities" : [ "Shader" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "Rgba16f",
           "value" : 2,
-          "capabilities" : [ "Shader" ]
+          "capabilities" : [ "Shader" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "R32f",
           "value" : 3,
-          "capabilities" : [ "Shader" ]
+          "capabilities" : [ "Shader" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "Rgba8",
           "value" : 4,
-          "capabilities" : [ "Shader" ]
+          "capabilities" : [ "Shader" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "Rgba8Snorm",
           "value" : 5,
-          "capabilities" : [ "Shader" ]
+          "capabilities" : [ "Shader" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "Rg32f",
           "value" : 6,
-          "capabilities" : [ "StorageImageExtendedFormats" ]
+          "capabilities" : [ "StorageImageExtendedFormats" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "Rg16f",
           "value" : 7,
-          "capabilities" : [ "StorageImageExtendedFormats" ]
+          "capabilities" : [ "StorageImageExtendedFormats" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "R11fG11fB10f",
           "value" : 8,
-          "capabilities" : [ "StorageImageExtendedFormats" ]
+          "capabilities" : [ "StorageImageExtendedFormats" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "R16f",
           "value" : 9,
-          "capabilities" : [ "StorageImageExtendedFormats" ]
+          "capabilities" : [ "StorageImageExtendedFormats" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "Rgba16",
           "value" : 10,
-          "capabilities" : [ "StorageImageExtendedFormats" ]
+          "capabilities" : [ "StorageImageExtendedFormats" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "Rgb10A2",
           "value" : 11,
-          "capabilities" : [ "StorageImageExtendedFormats" ]
+          "capabilities" : [ "StorageImageExtendedFormats" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "Rg16",
           "value" : 12,
-          "capabilities" : [ "StorageImageExtendedFormats" ]
+          "capabilities" : [ "StorageImageExtendedFormats" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "Rg8",
           "value" : 13,
-          "capabilities" : [ "StorageImageExtendedFormats" ]
+          "capabilities" : [ "StorageImageExtendedFormats" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "R16",
           "value" : 14,
-          "capabilities" : [ "StorageImageExtendedFormats" ]
+          "capabilities" : [ "StorageImageExtendedFormats" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "R8",
           "value" : 15,
-          "capabilities" : [ "StorageImageExtendedFormats" ]
+          "capabilities" : [ "StorageImageExtendedFormats" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "Rgba16Snorm",
           "value" : 16,
-          "capabilities" : [ "StorageImageExtendedFormats" ]
+          "capabilities" : [ "StorageImageExtendedFormats" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "Rg16Snorm",
           "value" : 17,
-          "capabilities" : [ "StorageImageExtendedFormats" ]
+          "capabilities" : [ "StorageImageExtendedFormats" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "Rg8Snorm",
           "value" : 18,
-          "capabilities" : [ "StorageImageExtendedFormats" ]
+          "capabilities" : [ "StorageImageExtendedFormats" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "R16Snorm",
           "value" : 19,
-          "capabilities" : [ "StorageImageExtendedFormats" ]
+          "capabilities" : [ "StorageImageExtendedFormats" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "R8Snorm",
           "value" : 20,
-          "capabilities" : [ "StorageImageExtendedFormats" ]
+          "capabilities" : [ "StorageImageExtendedFormats" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "Rgba32i",
           "value" : 21,
-          "capabilities" : [ "Shader" ]
+          "capabilities" : [ "Shader" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "Rgba16i",
           "value" : 22,
-          "capabilities" : [ "Shader" ]
+          "capabilities" : [ "Shader" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "Rgba8i",
           "value" : 23,
-          "capabilities" : [ "Shader" ]
+          "capabilities" : [ "Shader" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "R32i",
           "value" : 24,
-          "capabilities" : [ "Shader" ]
+          "capabilities" : [ "Shader" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "Rg32i",
           "value" : 25,
-          "capabilities" : [ "StorageImageExtendedFormats" ]
+          "capabilities" : [ "StorageImageExtendedFormats" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "Rg16i",
           "value" : 26,
-          "capabilities" : [ "StorageImageExtendedFormats" ]
+          "capabilities" : [ "StorageImageExtendedFormats" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "Rg8i",
           "value" : 27,
-          "capabilities" : [ "StorageImageExtendedFormats" ]
+          "capabilities" : [ "StorageImageExtendedFormats" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "R16i",
           "value" : 28,
-          "capabilities" : [ "StorageImageExtendedFormats" ]
+          "capabilities" : [ "StorageImageExtendedFormats" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "R8i",
           "value" : 29,
-          "capabilities" : [ "StorageImageExtendedFormats" ]
+          "capabilities" : [ "StorageImageExtendedFormats" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "Rgba32ui",
           "value" : 30,
-          "capabilities" : [ "Shader" ]
+          "capabilities" : [ "Shader" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "Rgba16ui",
           "value" : 31,
-          "capabilities" : [ "Shader" ]
+          "capabilities" : [ "Shader" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "Rgba8ui",
           "value" : 32,
-          "capabilities" : [ "Shader" ]
+          "capabilities" : [ "Shader" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "R32ui",
           "value" : 33,
-          "capabilities" : [ "Shader" ]
+          "capabilities" : [ "Shader" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "Rgb10a2ui",
           "value" : 34,
-          "capabilities" : [ "StorageImageExtendedFormats" ]
+          "capabilities" : [ "StorageImageExtendedFormats" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "Rg32ui",
           "value" : 35,
-          "capabilities" : [ "StorageImageExtendedFormats" ]
+          "capabilities" : [ "StorageImageExtendedFormats" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "Rg16ui",
           "value" : 36,
-          "capabilities" : [ "StorageImageExtendedFormats" ]
+          "capabilities" : [ "StorageImageExtendedFormats" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "Rg8ui",
           "value" : 37,
-          "capabilities" : [ "StorageImageExtendedFormats" ]
+          "capabilities" : [ "StorageImageExtendedFormats" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "R16ui",
           "value" : 38,
-          "capabilities" : [ "StorageImageExtendedFormats" ]
+          "capabilities" : [ "StorageImageExtendedFormats" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "R8ui",
           "value" : 39,
-          "capabilities" : [ "StorageImageExtendedFormats" ]
+          "capabilities" : [ "StorageImageExtendedFormats" ],
+          "version": "1.0"
         },
-	{
+        {
           "enumerant" : "R64ui",
           "value" : 40,
-          "capabilities" : [ "Int64ImageEXT" ]
+          "capabilities" : [ "Int64ImageEXT" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "R64i",
           "value" : 41,
-          "capabilities" : [ "Int64ImageEXT" ]
+          "capabilities" : [ "Int64ImageEXT" ],
+          "version": "1.0"
         }
       ]
     },
@@ -11419,102 +12329,102 @@
         {
           "enumerant" : "R",
           "value" : 0,
-          "capabilities" : [ "Kernel" ]
+          "version": "1.0"
         },
         {
           "enumerant" : "A",
           "value" : 1,
-          "capabilities" : [ "Kernel" ]
+          "version": "1.0"
         },
         {
           "enumerant" : "RG",
           "value" : 2,
-          "capabilities" : [ "Kernel" ]
+          "version": "1.0"
         },
         {
           "enumerant" : "RA",
           "value" : 3,
-          "capabilities" : [ "Kernel" ]
+          "version": "1.0"
         },
         {
           "enumerant" : "RGB",
           "value" : 4,
-          "capabilities" : [ "Kernel" ]
+          "version": "1.0"
         },
         {
           "enumerant" : "RGBA",
           "value" : 5,
-          "capabilities" : [ "Kernel" ]
+          "version": "1.0"
         },
         {
           "enumerant" : "BGRA",
           "value" : 6,
-          "capabilities" : [ "Kernel" ]
+          "version": "1.0"
         },
         {
           "enumerant" : "ARGB",
           "value" : 7,
-          "capabilities" : [ "Kernel" ]
+          "version": "1.0"
         },
         {
           "enumerant" : "Intensity",
           "value" : 8,
-          "capabilities" : [ "Kernel" ]
+          "version": "1.0"
         },
         {
           "enumerant" : "Luminance",
           "value" : 9,
-          "capabilities" : [ "Kernel" ]
+          "version": "1.0"
         },
         {
           "enumerant" : "Rx",
           "value" : 10,
-          "capabilities" : [ "Kernel" ]
+          "version": "1.0"
         },
         {
           "enumerant" : "RGx",
           "value" : 11,
-          "capabilities" : [ "Kernel" ]
+          "version": "1.0"
         },
         {
           "enumerant" : "RGBx",
           "value" : 12,
-          "capabilities" : [ "Kernel" ]
+          "version": "1.0"
         },
         {
           "enumerant" : "Depth",
           "value" : 13,
-          "capabilities" : [ "Kernel" ]
+          "version": "1.0"
         },
         {
           "enumerant" : "DepthStencil",
           "value" : 14,
-          "capabilities" : [ "Kernel" ]
+          "version": "1.0"
         },
         {
           "enumerant" : "sRGB",
           "value" : 15,
-          "capabilities" : [ "Kernel" ]
+          "version": "1.0"
         },
         {
           "enumerant" : "sRGBx",
           "value" : 16,
-          "capabilities" : [ "Kernel" ]
+          "version": "1.0"
         },
         {
           "enumerant" : "sRGBA",
           "value" : 17,
-          "capabilities" : [ "Kernel" ]
+          "version": "1.0"
         },
         {
           "enumerant" : "sBGRA",
           "value" : 18,
-          "capabilities" : [ "Kernel" ]
+          "version": "1.0"
         },
         {
           "enumerant" : "ABGR",
           "value" : 19,
-          "capabilities" : [ "Kernel" ]
+          "version": "1.0"
         }
       ]
     },
@@ -11525,87 +12435,97 @@
         {
           "enumerant" : "SnormInt8",
           "value" : 0,
-          "capabilities" : [ "Kernel" ]
+          "version": "1.0"
         },
         {
           "enumerant" : "SnormInt16",
           "value" : 1,
-          "capabilities" : [ "Kernel" ]
+          "version": "1.0"
         },
         {
           "enumerant" : "UnormInt8",
           "value" : 2,
-          "capabilities" : [ "Kernel" ]
+          "version": "1.0"
         },
         {
           "enumerant" : "UnormInt16",
           "value" : 3,
-          "capabilities" : [ "Kernel" ]
+          "version": "1.0"
         },
         {
           "enumerant" : "UnormShort565",
           "value" : 4,
-          "capabilities" : [ "Kernel" ]
+          "version": "1.0"
         },
         {
           "enumerant" : "UnormShort555",
           "value" : 5,
-          "capabilities" : [ "Kernel" ]
+          "version": "1.0"
         },
         {
           "enumerant" : "UnormInt101010",
           "value" : 6,
-          "capabilities" : [ "Kernel" ]
+          "version": "1.0"
         },
         {
           "enumerant" : "SignedInt8",
           "value" : 7,
-          "capabilities" : [ "Kernel" ]
+          "version": "1.0"
         },
         {
           "enumerant" : "SignedInt16",
           "value" : 8,
-          "capabilities" : [ "Kernel" ]
+          "version": "1.0"
         },
         {
           "enumerant" : "SignedInt32",
           "value" : 9,
-          "capabilities" : [ "Kernel" ]
+          "version": "1.0"
         },
         {
           "enumerant" : "UnsignedInt8",
           "value" : 10,
-          "capabilities" : [ "Kernel" ]
+          "version": "1.0"
         },
         {
           "enumerant" : "UnsignedInt16",
           "value" : 11,
-          "capabilities" : [ "Kernel" ]
+          "version": "1.0"
         },
         {
           "enumerant" : "UnsignedInt32",
           "value" : 12,
-          "capabilities" : [ "Kernel" ]
+          "version": "1.0"
         },
         {
           "enumerant" : "HalfFloat",
           "value" : 13,
-          "capabilities" : [ "Kernel" ]
+          "version": "1.0"
         },
         {
           "enumerant" : "Float",
           "value" : 14,
-          "capabilities" : [ "Kernel" ]
+          "version": "1.0"
         },
         {
           "enumerant" : "UnormInt24",
           "value" : 15,
-          "capabilities" : [ "Kernel" ]
+          "version": "1.0"
         },
         {
           "enumerant" : "UnormInt101010_2",
           "value" : 16,
-          "capabilities" : [ "Kernel" ]
+          "version": "1.0"
+        },
+        {
+          "enumerant" : "UnsignedIntRaw10EXT",
+          "value" : 19,
+          "version": "1.0"
+        },
+        {
+          "enumerant" : "UnsignedIntRaw12EXT",
+          "value" : 20,
+          "version": "1.0"
         }
       ]
     },
@@ -11615,19 +12535,23 @@
       "enumerants" : [
         {
           "enumerant" : "RTE",
-          "value" : 0
+          "value" : 0,
+          "version" : "1.0"
         },
         {
           "enumerant" : "RTZ",
-          "value" : 1
+          "value" : 1,
+          "version" : "1.0"
         },
         {
           "enumerant" : "RTP",
-          "value" : 2
+          "value" : 2,
+          "version" : "1.0"
         },
         {
           "enumerant" : "RTN",
-          "value" : 3
+          "value" : 3,
+          "version" : "1.0"
         }
       ]
     },
@@ -11646,7 +12570,7 @@
           "value" : 1,
           "capabilities" : [ "FunctionFloatControlINTEL" ],
           "version" : "None"
-	}
+        }
       ]
     },
     {
@@ -11758,12 +12682,14 @@
         {
           "enumerant" : "Export",
           "value" : 0,
-          "capabilities" : [ "Linkage" ]
+          "capabilities" : [ "Linkage" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "Import",
           "value" : 1,
-          "capabilities" : [ "Linkage" ]
+          "capabilities" : [ "Linkage" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "LinkOnceODR",
@@ -11781,17 +12707,50 @@
         {
           "enumerant" : "ReadOnly",
           "value" : 0,
-          "capabilities" : [ "Kernel" ]
+          "capabilities" : [ "Kernel" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "WriteOnly",
           "value" : 1,
-          "capabilities" : [ "Kernel" ]
+          "capabilities" : [ "Kernel" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "ReadWrite",
           "value" : 2,
-          "capabilities" : [ "Kernel" ]
+          "capabilities" : [ "Kernel" ],
+          "version": "1.0"
+        }
+      ]
+    },
+    {
+      "category" : "ValueEnum",
+      "kind" : "HostAccessQualifier",
+      "enumerants" : [
+        {
+          "enumerant" : "NoneINTEL",
+          "value" : 0,
+          "capabilities" : [ "GlobalVariableHostAccessINTEL" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "ReadINTEL",
+          "value" : 1,
+          "capabilities" : [ "GlobalVariableHostAccessINTEL" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "WriteINTEL",
+          "value" : 2,
+          "capabilities" : [ "GlobalVariableHostAccessINTEL" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "ReadWriteINTEL",
+          "value" : 3,
+          "capabilities" : [ "GlobalVariableHostAccessINTEL" ],
+          "version" : "None"
         }
       ]
     },
@@ -11802,47 +12761,56 @@
         {
           "enumerant" : "Zext",
           "value" : 0,
-          "capabilities" : [ "Kernel" ]
+          "capabilities" : [ "Kernel" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "Sext",
           "value" : 1,
-          "capabilities" : [ "Kernel" ]
+          "capabilities" : [ "Kernel" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "ByVal",
           "value" : 2,
-          "capabilities" : [ "Kernel" ]
+          "capabilities" : [ "Kernel" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "Sret",
           "value" : 3,
-          "capabilities" : [ "Kernel" ]
+          "capabilities" : [ "Kernel" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "NoAlias",
           "value" : 4,
-          "capabilities" : [ "Kernel" ]
+          "capabilities" : [ "Kernel" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "NoCapture",
           "value" : 5,
-          "capabilities" : [ "Kernel" ]
+          "capabilities" : [ "Kernel" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "NoWrite",
           "value" : 6,
-          "capabilities" : [ "Kernel" ]
+          "capabilities" : [ "Kernel" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "NoReadWrite",
           "value" : 7,
-          "capabilities" : [ "Kernel" ]
+          "capabilities" : [ "Kernel" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "RuntimeAlignedINTEL",
           "value" : 5940,
-          "capabilities" : [ "RuntimeAlignedAttributeINTEL" ]
+          "capabilities" : [ "RuntimeAlignedAttributeINTEL" ],
+          "version": "1.0"
         }
       ]
     },
@@ -11853,7 +12821,8 @@
         {
           "enumerant" : "RelaxedPrecision",
           "value" : 0,
-          "capabilities" : [ "Shader" ]
+          "capabilities" : [ "Shader" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "SpecId",
@@ -11861,28 +12830,33 @@
           "capabilities" : [ "Shader", "Kernel" ],
           "parameters" : [
             { "kind" : "LiteralInteger", "name" : "'Specialization Constant ID'" }
-          ]
+          ],
+          "version": "1.0"
         },
         {
           "enumerant" : "Block",
           "value" : 2,
-          "capabilities" : [ "Shader" ]
+          "capabilities" : [ "Shader" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "BufferBlock",
           "value" : 3,
           "capabilities" : [ "Shader" ],
+          "version": "1.0",
           "lastVersion" : "1.3"
         },
         {
           "enumerant" : "RowMajor",
           "value" : 4,
-          "capabilities" : [ "Matrix" ]
+          "capabilities" : [ "Matrix" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "ColMajor",
           "value" : 5,
-          "capabilities" : [ "Matrix" ]
+          "capabilities" : [ "Matrix" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "ArrayStride",
@@ -11890,7 +12864,8 @@
           "capabilities" : [ "Shader" ],
           "parameters" : [
             { "kind" : "LiteralInteger", "name" : "'Array Stride'" }
-          ]
+          ],
+          "version": "1.0"
         },
         {
           "enumerant" : "MatrixStride",
@@ -11898,93 +12873,112 @@
           "capabilities" : [ "Matrix" ],
           "parameters" : [
             { "kind" : "LiteralInteger", "name" : "'Matrix Stride'" }
-          ]
+          ],
+          "version": "1.0"
         },
         {
           "enumerant" : "GLSLShared",
           "value" : 8,
-          "capabilities" : [ "Shader" ]
+          "capabilities" : [ "Shader" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "GLSLPacked",
           "value" : 9,
-          "capabilities" : [ "Shader" ]
+          "capabilities" : [ "Shader" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "CPacked",
           "value" : 10,
-          "capabilities" : [ "Kernel" ]
+          "capabilities" : [ "Kernel" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "BuiltIn",
           "value" : 11,
           "parameters" : [
             { "kind" : "BuiltIn" }
-          ]
+          ],
+          "version": "1.0"
         },
         {
           "enumerant" : "NoPerspective",
           "value" : 13,
-          "capabilities" : [ "Shader" ]
+          "capabilities" : [ "Shader" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "Flat",
           "value" : 14,
-          "capabilities" : [ "Shader" ]
+          "capabilities" : [ "Shader" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "Patch",
           "value" : 15,
-          "capabilities" : [ "Tessellation" ]
+          "capabilities" : [ "Tessellation" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "Centroid",
           "value" : 16,
-          "capabilities" : [ "Shader" ]
+          "capabilities" : [ "Shader" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "Sample",
           "value" : 17,
-          "capabilities" : [ "SampleRateShading" ]
+          "capabilities" : [ "SampleRateShading" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "Invariant",
           "value" : 18,
-          "capabilities" : [ "Shader" ]
+          "capabilities" : [ "Shader" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "Restrict",
-          "value" : 19
+          "value" : 19,
+          "version" : "1.0"
         },
         {
           "enumerant" : "Aliased",
-          "value" : 20
+          "value" : 20,
+          "version" : "1.0"
         },
         {
           "enumerant" : "Volatile",
-          "value" : 21
+          "value" : 21,
+          "version" : "1.0"
         },
         {
           "enumerant" : "Constant",
           "value" : 22,
-          "capabilities" : [ "Kernel" ]
+          "capabilities" : [ "Kernel" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "Coherent",
-          "value" : 23
+          "value" : 23,
+          "version": "1.0"
         },
         {
           "enumerant" : "NonWritable",
-          "value" : 24
+          "value" : 24,
+          "version": "1.0"
         },
         {
           "enumerant" : "NonReadable",
-          "value" : 25
+          "value" : 25,
+          "version": "1.0"
         },
         {
           "enumerant" : "Uniform",
           "value" : 26,
-          "capabilities" : [ "Shader", "UniformDecoration" ]
+          "capabilities" : [ "Shader", "UniformDecoration" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "UniformId",
@@ -11998,7 +12992,8 @@
         {
           "enumerant" : "SaturatedConversion",
           "value" : 28,
-          "capabilities" : [ "Kernel" ]
+          "capabilities" : [ "Kernel" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "Stream",
@@ -12006,7 +13001,8 @@
           "capabilities" : [ "GeometryStreams" ],
           "parameters" : [
             { "kind" : "LiteralInteger", "name" : "'Stream Number'" }
-          ]
+          ],
+          "version": "1.0"
         },
         {
           "enumerant" : "Location",
@@ -12014,7 +13010,8 @@
           "capabilities" : [ "Shader" ],
           "parameters" : [
             { "kind" : "LiteralInteger", "name" : "'Location'" }
-          ]
+          ],
+          "version": "1.0"
         },
         {
           "enumerant" : "Component",
@@ -12022,7 +13019,8 @@
           "capabilities" : [ "Shader" ],
           "parameters" : [
             { "kind" : "LiteralInteger", "name" : "'Component'" }
-          ]
+          ],
+          "version": "1.0"
         },
         {
           "enumerant" : "Index",
@@ -12030,7 +13028,8 @@
           "capabilities" : [ "Shader" ],
           "parameters" : [
             { "kind" : "LiteralInteger", "name" : "'Index'" }
-          ]
+          ],
+          "version": "1.0"
         },
         {
           "enumerant" : "Binding",
@@ -12038,7 +13037,8 @@
           "capabilities" : [ "Shader" ],
           "parameters" : [
             { "kind" : "LiteralInteger", "name" : "'Binding Point'" }
-          ]
+          ],
+          "version": "1.0"
         },
         {
           "enumerant" : "DescriptorSet",
@@ -12046,7 +13046,8 @@
           "capabilities" : [ "Shader" ],
           "parameters" : [
             { "kind" : "LiteralInteger", "name" : "'Descriptor Set'" }
-          ]
+          ],
+          "version": "1.0"
         },
         {
           "enumerant" : "Offset",
@@ -12054,7 +13055,8 @@
           "capabilities" : [ "Shader" ],
           "parameters" : [
             { "kind" : "LiteralInteger", "name" : "'Byte Offset'" }
-          ]
+          ],
+          "version": "1.0"
         },
         {
           "enumerant" : "XfbBuffer",
@@ -12062,7 +13064,8 @@
           "capabilities" : [ "TransformFeedback" ],
           "parameters" : [
             { "kind" : "LiteralInteger", "name" : "'XFB Buffer Number'" }
-          ]
+          ],
+          "version": "1.0"
         },
         {
           "enumerant" : "XfbStride",
@@ -12070,7 +13073,8 @@
           "capabilities" : [ "TransformFeedback" ],
           "parameters" : [
             { "kind" : "LiteralInteger", "name" : "'XFB Stride'" }
-          ]
+          ],
+          "version": "1.0"
         },
         {
           "enumerant" : "FuncParamAttr",
@@ -12078,22 +13082,25 @@
           "capabilities" : [ "Kernel" ],
           "parameters" : [
             { "kind" : "FunctionParameterAttribute", "name" : "'Function Parameter Attribute'" }
-          ]
+          ],
+          "version": "1.0"
         },
         {
           "enumerant" : "FPRoundingMode",
           "value" : 39,
           "parameters" : [
             { "kind" : "FPRoundingMode", "name" : "'Floating-Point Rounding Mode'" }
-          ]
+          ],
+          "version": "1.0"
         },
         {
           "enumerant" : "FPFastMathMode",
           "value" : 40,
-          "capabilities" : [ "Kernel" ],
+          "capabilities" : [ "Kernel", "FloatControls2" ],
           "parameters" : [
             { "kind" : "FPFastMathMode", "name" : "'Fast-Math Mode'" }
-          ]
+          ],
+          "version": "1.0"
         },
         {
           "enumerant" : "LinkageAttributes",
@@ -12102,12 +13109,14 @@
           "parameters" : [
             { "kind" : "LiteralString", "name" : "'Name'" },
             { "kind" : "LinkageType",   "name" : "'Linkage Type'" }
-          ]
+          ],
+          "version": "1.0"
         },
         {
           "enumerant" : "NoContraction",
           "value" : 42,
-          "capabilities" : [ "Shader" ]
+          "capabilities" : [ "Shader" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "InputAttachmentIndex",
@@ -12115,7 +13124,8 @@
           "capabilities" : [ "InputAttachment" ],
           "parameters" : [
             { "kind" : "LiteralInteger", "name" : "'Attachment Index'" }
-          ]
+          ],
+          "version": "1.0"
         },
         {
           "enumerant" : "Alignment",
@@ -12123,7 +13133,8 @@
           "capabilities" : [ "Kernel" ],
           "parameters" : [
             { "kind" : "LiteralInteger", "name" : "'Alignment'" }
-          ]
+          ],
+          "version": "1.0"
         },
         {
           "enumerant" : "MaxByteOffset",
@@ -12177,12 +13188,51 @@
           "version" : "None"
         },
         {
+          "enumerant" : "BlockMatchSamplerQCOM",
+          "value" : 4499,
+          "extensions" : [ "SPV_QCOM_image_processing2" ],
+          "version" : "None"
+        },
+        {
           "enumerant" : "ExplicitInterpAMD",
           "value" : 4999,
           "extensions" : [ "SPV_AMD_shader_explicit_vertex_parameter" ],
           "version" : "None"
         },
         {
+          "enumerant" : "NodeSharesPayloadLimitsWithAMDX",
+          "value" : 5019,
+          "capabilities" : [ "ShaderEnqueueAMDX" ],
+          "parameters" : [
+            { "kind" : "IdRef", "name" : "'Payload Array'" }
+          ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "NodeMaxPayloadsAMDX",
+          "value" : 5020,
+          "capabilities" : [ "ShaderEnqueueAMDX" ],
+          "parameters" : [
+            { "kind" : "IdRef", "name" : "'Max number of payloads'" }
+          ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "TrackFinishWritingAMDX",
+          "value" : 5078,
+          "capabilities" : [ "ShaderEnqueueAMDX" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "PayloadNodeNameAMDX",
+          "value" : 5091,
+          "capabilities" : [ "ShaderEnqueueAMDX" ],
+          "parameters" : [
+            { "kind" : "LiteralString", "name" : "'Node Name'" }
+          ],
+          "version" : "None"
+        },
+        {
           "enumerant" : "OverrideCoverageNV",
           "value" : 5248,
           "capabilities" : [ "SampleMaskOverrideCoverageNV" ],
@@ -12565,6 +13615,30 @@
           "version" : "None"
         },
         {
+          "enumerant" : "StridesizeINTEL",
+          "value" : 5883,
+          "parameters" : [
+            { "kind" : "LiteralInteger", "name" : "'Stride Size'" }
+          ],
+          "capabilities" : [ "FPGAMemoryAttributesINTEL" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "WordsizeINTEL",
+          "value" : 5884,
+          "parameters" : [
+            { "kind" : "LiteralInteger", "name" : "'Word Size'" }
+          ],
+          "capabilities" : [ "FPGAMemoryAttributesINTEL" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "TrueDualPortINTEL",
+          "value" : 5885,
+          "capabilities" : [ "FPGAMemoryAttributesINTEL" ],
+          "version" : "None"
+        },
+        {
           "enumerant" : "BurstCoalesceINTEL",
           "value" : 5899,
           "capabilities" : [ "FPGAMemoryAccessesINTEL" ],
@@ -12708,6 +13782,21 @@
           "version" : "None"
         },
         {
+          "enumerant" : "StallFreeINTEL",
+          "value" : 6151,
+          "capabilities" : [ "FPGAClusterAttributesV2INTEL" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "FPMaxErrorDecorationINTEL",
+          "value" : 6170,
+          "parameters" : [
+            { "kind" : "LiteralFloat", "name" : "'Max Error'" }
+          ],
+          "capabilities" : [ "FPMaxErrorINTEL" ],
+          "version" : "None"
+        },
+        {
           "enumerant" : "LatencyControlLabelINTEL",
           "value" : 6172,
           "parameters" : [
@@ -12798,6 +13887,54 @@
           "value" : 6183,
           "capabilities" : [ "FPGAArgumentInterfacesINTEL" ],
           "version" : "None"
+        },
+        {
+          "enumerant" : "HostAccessINTEL",
+          "value" : 6188,
+          "parameters": [
+            { "kind" : "HostAccessQualifier", "name" : "'Access'" },
+            { "kind" : "LiteralString", "name" : "'Name'" }
+          ],
+          "capabilities" : [ "GlobalVariableHostAccessINTEL" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "InitModeINTEL",
+          "value" : 6190,
+          "parameters": [
+            { "kind" : "InitializationModeQualifier", "name" : "'Trigger'" }
+          ],
+          "capabilities" : [ "GlobalVariableFPGADecorationsINTEL" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "ImplementInRegisterMapINTEL",
+          "value" : 6191,
+          "parameters": [
+            { "kind" : "LiteralInteger", "name" : "Value" }
+          ],
+          "capabilities" : [ "GlobalVariableFPGADecorationsINTEL" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "CacheControlLoadINTEL",
+          "value" : 6442,
+          "capabilities" : [ "CacheControlsINTEL" ],
+          "parameters" : [
+            { "kind" : "LiteralInteger", "name" : "'Cache Level'" },
+            { "kind" : "LoadCacheControl", "name" : "'Cache Control'" }
+          ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "CacheControlStoreINTEL",
+          "value" : 6443,
+          "capabilities" : [ "CacheControlsINTEL" ],
+          "parameters" : [
+            { "kind" : "LiteralInteger", "name" : "'Cache Level'" },
+            { "kind" : "StoreCacheControl", "name" : "'Cache Control'" }
+          ],
+          "version" : "None"
         }
       ]
     },
@@ -12808,226 +13945,272 @@
         {
           "enumerant" : "Position",
           "value" : 0,
-          "capabilities" : [ "Shader" ]
+          "capabilities" : [ "Shader" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "PointSize",
           "value" : 1,
-          "capabilities" : [ "Shader" ]
+          "capabilities" : [ "Shader" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "ClipDistance",
           "value" : 3,
-          "capabilities" : [ "ClipDistance" ]
+          "capabilities" : [ "ClipDistance" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "CullDistance",
           "value" : 4,
-          "capabilities" : [ "CullDistance" ]
+          "capabilities" : [ "CullDistance" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "VertexId",
           "value" : 5,
-          "capabilities" : [ "Shader" ]
+          "capabilities" : [ "Shader" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "InstanceId",
           "value" : 6,
-          "capabilities" : [ "Shader" ]
+          "capabilities" : [ "Shader" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "PrimitiveId",
           "value" : 7,
-          "capabilities" : [ "Geometry", "Tessellation", "RayTracingNV", "RayTracingKHR", "MeshShadingNV", "MeshShadingEXT" ]
+          "capabilities" : [ "Geometry", "Tessellation", "RayTracingNV", "RayTracingKHR", "MeshShadingNV", "MeshShadingEXT" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "InvocationId",
           "value" : 8,
-          "capabilities" : [ "Geometry", "Tessellation" ]
+          "capabilities" : [ "Geometry", "Tessellation" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "Layer",
           "value" : 9,
-          "capabilities" : [ "Geometry", "ShaderLayer", "ShaderViewportIndexLayerEXT", "MeshShadingNV", "MeshShadingEXT" ]
+          "capabilities" : [ "Geometry", "ShaderLayer", "ShaderViewportIndexLayerEXT", "MeshShadingNV", "MeshShadingEXT" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "ViewportIndex",
           "value" : 10,
-          "capabilities" : [ "MultiViewport", "ShaderViewportIndex", "ShaderViewportIndexLayerEXT", "MeshShadingNV", "MeshShadingEXT" ]
+          "capabilities" : [ "MultiViewport", "ShaderViewportIndex", "ShaderViewportIndexLayerEXT", "MeshShadingNV", "MeshShadingEXT" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "TessLevelOuter",
           "value" : 11,
-          "capabilities" : [ "Tessellation" ]
+          "capabilities" : [ "Tessellation" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "TessLevelInner",
           "value" : 12,
-          "capabilities" : [ "Tessellation" ]
+          "capabilities" : [ "Tessellation" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "TessCoord",
           "value" : 13,
-          "capabilities" : [ "Tessellation" ]
+          "capabilities" : [ "Tessellation" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "PatchVertices",
           "value" : 14,
-          "capabilities" : [ "Tessellation" ]
+          "capabilities" : [ "Tessellation" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "FragCoord",
           "value" : 15,
-          "capabilities" : [ "Shader" ]
+          "capabilities" : [ "Shader" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "PointCoord",
           "value" : 16,
-          "capabilities" : [ "Shader" ]
+          "capabilities" : [ "Shader" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "FrontFacing",
           "value" : 17,
-          "capabilities" : [ "Shader" ]
+          "capabilities" : [ "Shader" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "SampleId",
           "value" : 18,
-          "capabilities" : [ "SampleRateShading" ]
+          "capabilities" : [ "SampleRateShading" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "SamplePosition",
           "value" : 19,
-          "capabilities" : [ "SampleRateShading" ]
+          "capabilities" : [ "SampleRateShading" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "SampleMask",
           "value" : 20,
-          "capabilities" : [ "Shader" ]
+          "capabilities" : [ "Shader" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "FragDepth",
           "value" : 22,
-          "capabilities" : [ "Shader" ]
+          "capabilities" : [ "Shader" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "HelperInvocation",
           "value" : 23,
-          "capabilities" : [ "Shader" ]
+          "capabilities" : [ "Shader" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "NumWorkgroups",
-          "value" : 24
+          "value" : 24,
+          "version" : "1.0"
         },
         {
           "enumerant" : "WorkgroupSize",
-          "value" : 25
+          "value" : 25,
+          "version" : "1.0"
         },
         {
           "enumerant" : "WorkgroupId",
-          "value" : 26
+          "value" : 26,
+          "version" : "1.0"
         },
         {
           "enumerant" : "LocalInvocationId",
-          "value" : 27
+          "value" : 27,
+          "version" : "1.0"
         },
         {
           "enumerant" : "GlobalInvocationId",
-          "value" : 28
+          "value" : 28,
+          "version" : "1.0"
         },
         {
           "enumerant" : "LocalInvocationIndex",
-          "value" : 29
+          "value" : 29,
+          "version" : "1.0"
         },
         {
           "enumerant" : "WorkDim",
           "value" : 30,
-          "capabilities" : [ "Kernel" ]
+          "capabilities" : [ "Kernel" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "GlobalSize",
           "value" : 31,
-          "capabilities" : [ "Kernel" ]
+          "capabilities" : [ "Kernel" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "EnqueuedWorkgroupSize",
           "value" : 32,
-          "capabilities" : [ "Kernel" ]
+          "capabilities" : [ "Kernel" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "GlobalOffset",
           "value" : 33,
-          "capabilities" : [ "Kernel" ]
+          "capabilities" : [ "Kernel" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "GlobalLinearId",
           "value" : 34,
-          "capabilities" : [ "Kernel" ]
+          "capabilities" : [ "Kernel" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "SubgroupSize",
           "value" : 36,
-          "capabilities" : [ "Kernel", "GroupNonUniform", "SubgroupBallotKHR" ]
+          "capabilities" : [ "Kernel", "GroupNonUniform", "SubgroupBallotKHR" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "SubgroupMaxSize",
           "value" : 37,
-          "capabilities" : [ "Kernel" ]
+          "capabilities" : [ "Kernel" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "NumSubgroups",
           "value" : 38,
-          "capabilities" : [ "Kernel", "GroupNonUniform" ]
+          "capabilities" : [ "Kernel", "GroupNonUniform" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "NumEnqueuedSubgroups",
           "value" : 39,
-          "capabilities" : [ "Kernel" ]
+          "capabilities" : [ "Kernel" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "SubgroupId",
           "value" : 40,
-          "capabilities" : [ "Kernel", "GroupNonUniform" ]
+          "capabilities" : [ "Kernel", "GroupNonUniform" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "SubgroupLocalInvocationId",
           "value" : 41,
-          "capabilities" : [ "Kernel", "GroupNonUniform", "SubgroupBallotKHR" ]
+          "capabilities" : [ "Kernel", "GroupNonUniform", "SubgroupBallotKHR" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "VertexIndex",
           "value" : 42,
-          "capabilities" : [ "Shader" ]
+          "capabilities" : [ "Shader" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "InstanceIndex",
           "value" : 43,
-          "capabilities" : [ "Shader" ]
+          "capabilities" : [ "Shader" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "CoreIDARM",
           "value" : 4160,
-          "capabilities" : [ "CoreBuiltinsARM" ]
+          "capabilities" : [ "CoreBuiltinsARM" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "CoreCountARM",
           "value" : 4161,
-          "capabilities" : [ "CoreBuiltinsARM" ]
+          "capabilities" : [ "CoreBuiltinsARM" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "CoreMaxIDARM",
           "value" : 4162,
-          "capabilities" : [ "CoreBuiltinsARM" ]
+          "capabilities" : [ "CoreBuiltinsARM" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "WarpIDARM",
           "value" : 4163,
-          "capabilities" : [ "CoreBuiltinsARM" ]
+          "capabilities" : [ "CoreBuiltinsARM" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "WarpMaxIDARM",
           "value" : 4164,
-          "capabilities" : [ "CoreBuiltinsARM" ]
+          "capabilities" : [ "CoreBuiltinsARM" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "SubgroupEqMask",
@@ -13193,6 +14376,18 @@
           "version" : "None"
         },
         {
+          "enumerant" : "CoalescedInputCountAMDX",
+          "value" : 5021,
+          "capabilities" : [ "ShaderEnqueueAMDX" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "ShaderIndexAMDX",
+          "value" : 5073,
+          "capabilities" : [ "ShaderEnqueueAMDX" ],
+          "version" : "None"
+        },
+        {
           "enumerant" : "ViewportMaskNV",
           "value" : 5253,
           "capabilities" : [ "ShaderViewportMaskNV", "MeshShadingNV" ],
@@ -13563,6 +14758,18 @@
           "version" : "None"
         },
         {
+          "enumerant" : "HitMicroTriangleVertexPositionsNV",
+          "value" : 5337,
+          "capabilities" : [ "RayTracingDisplacementMicromapNV" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "HitMicroTriangleVertexBarycentricsNV",
+          "value" : 5344,
+          "capabilities" : [ "RayTracingDisplacementMicromapNV" ],
+          "version" : "None"
+        },
+        {
           "enumerant" : "IncomingRayFlagsNV",
           "value" : 5351,
           "capabilities" : [ "RayTracingNV" , "RayTracingKHR" ],
@@ -13612,6 +14819,18 @@
           "version" : "None"
         },
         {
+          "enumerant" : "HitKindFrontFacingMicroTriangleNV",
+          "value" : 5405,
+          "capabilities" : [ "RayTracingDisplacementMicromapNV" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "HitKindBackFacingMicroTriangleNV",
+          "value" : 5406,
+          "capabilities" : [ "RayTracingDisplacementMicromapNV" ],
+          "version" : "None"
+        },
+        {
           "enumerant" : "CullMaskKHR",
           "value"  : 6021,
           "capabilities" : [ "RayCullMaskKHR" ],
@@ -13626,23 +14845,28 @@
       "enumerants" : [
         {
           "enumerant" : "CrossDevice",
-          "value" : 0
+          "value" : 0,
+          "version" : "1.0"
         },
         {
           "enumerant" : "Device",
-          "value" : 1
+          "value" : 1,
+          "version" : "1.0"
         },
         {
           "enumerant" : "Workgroup",
-          "value" : 2
+          "value" : 2,
+          "version" : "1.0"
         },
         {
           "enumerant" : "Subgroup",
-          "value" : 3
+          "value" : 3,
+          "version" : "1.0"
         },
         {
           "enumerant" : "Invocation",
-          "value" : 4
+          "value" : 4,
+          "version" : "1.0"
         },
         {
           "enumerant" : "QueueFamily",
@@ -13671,17 +14895,20 @@
         {
           "enumerant" : "Reduce",
           "value" : 0,
-          "capabilities" : [ "Kernel", "GroupNonUniformArithmetic", "GroupNonUniformBallot" ]
+          "capabilities" : [ "Kernel", "GroupNonUniformArithmetic", "GroupNonUniformBallot" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "InclusiveScan",
           "value" : 1,
-          "capabilities" : [ "Kernel", "GroupNonUniformArithmetic", "GroupNonUniformBallot" ]
+          "capabilities" : [ "Kernel", "GroupNonUniformArithmetic", "GroupNonUniformBallot" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "ExclusiveScan",
           "value" : 2,
-          "capabilities" : [ "Kernel", "GroupNonUniformArithmetic", "GroupNonUniformBallot" ]
+          "capabilities" : [ "Kernel", "GroupNonUniformArithmetic", "GroupNonUniformBallot" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "ClusteredReduce",
@@ -13719,17 +14946,20 @@
         {
           "enumerant" : "NoWait",
           "value" : 0,
-          "capabilities" : [ "Kernel" ]
+          "capabilities" : [ "Kernel" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "WaitKernel",
           "value" : 1,
-          "capabilities" : [ "Kernel" ]
+          "capabilities" : [ "Kernel" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "WaitWorkGroup",
           "value" : 2,
-          "capabilities" : [ "Kernel" ]
+          "capabilities" : [ "Kernel" ],
+          "version": "1.0"
         }
       ]
     },
@@ -13739,272 +14969,328 @@
       "enumerants" : [
         {
           "enumerant" : "Matrix",
-          "value" : 0
+          "value" : 0,
+          "version" : "1.0"
         },
         {
           "enumerant" : "Shader",
           "value" : 1,
-          "capabilities" : [ "Matrix" ]
+          "capabilities" : [ "Matrix" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "Geometry",
           "value" : 2,
-          "capabilities" : [ "Shader" ]
+          "capabilities" : [ "Shader" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "Tessellation",
           "value" : 3,
-          "capabilities" : [ "Shader" ]
+          "capabilities" : [ "Shader" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "Addresses",
-          "value" : 4
+          "value" : 4,
+          "version" : "1.0"
         },
         {
           "enumerant" : "Linkage",
-          "value" : 5
+          "value" : 5,
+          "version" : "1.0"
         },
         {
           "enumerant" : "Kernel",
-          "value" : 6
+          "value" : 6,
+          "version" : "1.0"
         },
         {
           "enumerant" : "Vector16",
           "value" : 7,
-          "capabilities" : [ "Kernel" ]
+          "capabilities" : [ "Kernel" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "Float16Buffer",
           "value" : 8,
-          "capabilities" : [ "Kernel" ]
+          "capabilities" : [ "Kernel" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "Float16",
-          "value" : 9
+          "value" : 9,
+          "version" : "1.0"
         },
         {
           "enumerant" : "Float64",
-          "value" : 10
+          "value" : 10,
+          "version" : "1.0"
         },
         {
           "enumerant" : "Int64",
-          "value" : 11
+          "value" : 11,
+          "version" : "1.0"
         },
         {
           "enumerant" : "Int64Atomics",
           "value" : 12,
-          "capabilities" : [ "Int64" ]
+          "capabilities" : [ "Int64" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "ImageBasic",
           "value" : 13,
-          "capabilities" : [ "Kernel" ]
+          "capabilities" : [ "Kernel" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "ImageReadWrite",
           "value" : 14,
-          "capabilities" : [ "ImageBasic" ]
+          "capabilities" : [ "ImageBasic" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "ImageMipmap",
           "value" : 15,
-          "capabilities" : [ "ImageBasic" ]
+          "capabilities" : [ "ImageBasic" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "Pipes",
           "value" : 17,
-          "capabilities" : [ "Kernel" ]
+          "capabilities" : [ "Kernel" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "Groups",
           "value" : 18,
-          "extensions" : [ "SPV_AMD_shader_ballot" ]
+          "extensions" : [ "SPV_AMD_shader_ballot" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "DeviceEnqueue",
           "value" : 19,
-          "capabilities" : [ "Kernel" ]
+          "capabilities" : [ "Kernel" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "LiteralSampler",
           "value" : 20,
-          "capabilities" : [ "Kernel" ]
+          "capabilities" : [ "Kernel" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "AtomicStorage",
           "value" : 21,
-          "capabilities" : [ "Shader" ]
+          "capabilities" : [ "Shader" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "Int16",
-          "value" : 22
+          "value" : 22,
+          "version" : "1.0"
         },
         {
           "enumerant" : "TessellationPointSize",
           "value" : 23,
-          "capabilities" : [ "Tessellation" ]
+          "capabilities" : [ "Tessellation" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "GeometryPointSize",
           "value" : 24,
-          "capabilities" : [ "Geometry" ]
+          "capabilities" : [ "Geometry" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "ImageGatherExtended",
           "value" : 25,
-          "capabilities" : [ "Shader" ]
+          "capabilities" : [ "Shader" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "StorageImageMultisample",
           "value" : 27,
-          "capabilities" : [ "Shader" ]
+          "capabilities" : [ "Shader" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "UniformBufferArrayDynamicIndexing",
           "value" : 28,
-          "capabilities" : [ "Shader" ]
+          "capabilities" : [ "Shader" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "SampledImageArrayDynamicIndexing",
           "value" : 29,
-          "capabilities" : [ "Shader" ]
+          "capabilities" : [ "Shader" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "StorageBufferArrayDynamicIndexing",
           "value" : 30,
-          "capabilities" : [ "Shader" ]
+          "capabilities" : [ "Shader" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "StorageImageArrayDynamicIndexing",
           "value" : 31,
-          "capabilities" : [ "Shader" ]
+          "capabilities" : [ "Shader" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "ClipDistance",
           "value" : 32,
-          "capabilities" : [ "Shader" ]
+          "capabilities" : [ "Shader" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "CullDistance",
           "value" : 33,
-          "capabilities" : [ "Shader" ]
+          "capabilities" : [ "Shader" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "ImageCubeArray",
           "value" : 34,
-          "capabilities" : [ "SampledCubeArray" ]
+          "capabilities" : [ "SampledCubeArray" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "SampleRateShading",
           "value" : 35,
-          "capabilities" : [ "Shader" ]
+          "capabilities" : [ "Shader" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "ImageRect",
           "value" : 36,
-          "capabilities" : [ "SampledRect" ]
+          "capabilities" : [ "SampledRect" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "SampledRect",
           "value" : 37,
-          "capabilities" : [ "Shader" ]
+          "capabilities" : [ "Shader" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "GenericPointer",
           "value" : 38,
-          "capabilities" : [ "Addresses" ]
+          "capabilities" : [ "Addresses" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "Int8",
-          "value" : 39
+          "value" : 39,
+          "version" : "1.0"
         },
         {
           "enumerant" : "InputAttachment",
           "value" : 40,
-          "capabilities" : [ "Shader" ]
+          "capabilities" : [ "Shader" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "SparseResidency",
           "value" : 41,
-          "capabilities" : [ "Shader" ]
+          "capabilities" : [ "Shader" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "MinLod",
           "value" : 42,
-          "capabilities" : [ "Shader" ]
+          "capabilities" : [ "Shader" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "Sampled1D",
-          "value" : 43
+          "value" : 43,
+          "version" : "1.0"
         },
         {
           "enumerant" : "Image1D",
           "value" : 44,
-          "capabilities" : [ "Sampled1D" ]
+          "capabilities" : [ "Sampled1D" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "SampledCubeArray",
           "value" : 45,
-          "capabilities" : [ "Shader" ]
+          "capabilities" : [ "Shader" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "SampledBuffer",
-          "value" : 46
+          "value" : 46,
+          "version" : "1.0"
         },
         {
           "enumerant" : "ImageBuffer",
           "value" : 47,
-          "capabilities" : [ "SampledBuffer" ]
+          "capabilities" : [ "SampledBuffer" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "ImageMSArray",
           "value" : 48,
-          "capabilities" : [ "Shader" ]
+          "capabilities" : [ "Shader" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "StorageImageExtendedFormats",
           "value" : 49,
-          "capabilities" : [ "Shader" ]
+          "capabilities" : [ "Shader" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "ImageQuery",
           "value" : 50,
-          "capabilities" : [ "Shader" ]
+          "capabilities" : [ "Shader" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "DerivativeControl",
           "value" : 51,
-          "capabilities" : [ "Shader" ]
+          "capabilities" : [ "Shader" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "InterpolationFunction",
           "value" : 52,
-          "capabilities" : [ "Shader" ]
+          "capabilities" : [ "Shader" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "TransformFeedback",
           "value" : 53,
-          "capabilities" : [ "Shader" ]
+          "capabilities" : [ "Shader" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "GeometryStreams",
           "value" : 54,
-          "capabilities" : [ "Geometry" ]
+          "capabilities" : [ "Geometry" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "StorageImageReadWithoutFormat",
           "value" : 55,
-          "capabilities" : [ "Shader" ]
+          "capabilities" : [ "Shader" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "StorageImageWriteWithoutFormat",
           "value" : 56,
-          "capabilities" : [ "Shader" ]
+          "capabilities" : [ "Shader" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "MultiViewport",
           "value" : 57,
-          "capabilities" : [ "Geometry" ]
+          "capabilities" : [ "Geometry" ],
+          "version": "1.0"
         },
         {
           "enumerant" : "SubgroupDispatch",
@@ -14089,7 +15375,8 @@
         {
           "enumerant" : "CoreBuiltinsARM",
           "value" : 4165,
-          "extensions" : [ "SPV_ARM_core_builtins" ]
+          "extensions" : [ "SPV_ARM_core_builtins" ],
+          "version": "None"
         },
         {
           "enumerant" : "TileImageColorReadAccessEXT",
@@ -14146,7 +15433,7 @@
         {
           "enumerant" : "WorkgroupMemoryExplicitLayout16BitAccessKHR",
           "value" : 4430,
-          "capabilities" : [ "Shader" ],
+          "capabilities" : [ "WorkgroupMemoryExplicitLayoutKHR" ],
           "extensions" : [ "SPV_KHR_workgroup_memory_explicit_layout" ],
           "version" : "None"
         },
@@ -14335,6 +15622,12 @@
           "version" : "None"
         },
         {
+          "enumerant" : "TextureBlockMatch2QCOM",
+          "value" : 4498,
+          "extensions" : [ "SPV_QCOM_image_processing2" ],
+          "version" : "None"
+        },
+        {
           "enumerant" : "Float16ImageAMD",
           "value" : 5008,
           "capabilities" : [ "Shader" ],
@@ -14383,6 +15676,19 @@
           "version" : "None"
         },
         {
+          "enumerant" : "ShaderEnqueueAMDX",
+          "value" : 5067,
+          "capabilities" : [ "Shader" ],
+          "extensions" : [ "SPV_AMDX_shader_enqueue" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "QuadControlKHR",
+          "value" : 5087,
+          "extensions" : [ "SPV_KHR_quad_control" ],
+          "version" : "None"
+        },		
+        {
           "enumerant" : "SampleMaskOverrideCoverageNV",
           "value" : 5249,
           "capabilities" : [ "SampleRateShading" ],
@@ -14771,6 +16077,13 @@
           "version" : "1.6"
         },
         {
+          "enumerant" : "DisplacementMicromapNV",
+          "value" : 5380,
+          "capabilities" : [ "Shader" ],
+          "extensions" : [ "SPV_NV_displacement_micromap" ],
+          "version" : "None"
+        },
+        {
           "enumerant" : "RayTracingOpacityMicromapEXT",
           "value" : 5381,
           "capabilities" : [ "RayQueryKHR","RayTracingKHR" ],
@@ -14798,6 +16111,25 @@
           "version" : "None"
         },
         {
+          "enumerant" : "AtomicFloat16VectorNV",
+          "value" : 5404,
+          "extensions" : [ "SPV_NV_shader_atomic_fp16_vector" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "RayTracingDisplacementMicromapNV",
+          "value" : 5409,
+          "capabilities" : [ "RayTracingKHR" ],
+          "extensions" : [ "SPV_NV_displacement_micromap" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "RawAccessChainsNV",
+          "value" : 5414,
+          "extensions" : [ "SPV_NV_raw_access_chains" ],
+          "version" : "None"
+        },
+        {
           "enumerant" : "SubgroupShuffleINTEL",
           "value" : 5568,
           "extensions" : [ "SPV_INTEL_subgroups" ],
@@ -15105,6 +16437,12 @@
           "version" : "None"
         },
         {
+          "enumerant" : "CooperativeMatrixKHR",
+          "value" : 6022,
+          "extensions" : [ "SPV_KHR_cooperative_matrix" ],
+          "version" : "None"
+        },
+        {
           "enumerant" : "BitInstructions",
           "value" : 6025,
           "extensions" : [ "SPV_KHR_bit_instructions" ],
@@ -15118,6 +16456,12 @@
           "version" : "None"
         },
         {
+          "enumerant" : "FloatControls2",
+          "value" : 6029,
+          "extensions" : [ "SPV_KHR_float_controls2" ],
+          "version" : "None"
+        },
+        {
           "enumerant" : "AtomicFloat32AddEXT",
           "value" : 6033,
           "extensions" : [ "SPV_EXT_shader_atomic_float_add" ],
@@ -15130,9 +16474,9 @@
           "version" : "None"
         },
         {
-          "enumerant" : "LongConstantCompositeINTEL",
+          "enumerant" : "LongCompositesINTEL",
           "value" : 6089,
-          "extensions" : [ "SPV_INTEL_long_constant_composite" ],
+          "extensions" : [ "SPV_INTEL_long_composites" ],
           "version" : "None"
         },
         {
@@ -15166,6 +16510,13 @@
           "version" : "None"
         },
         {
+          "enumerant" : "FPGAClusterAttributesV2INTEL",
+          "value" : 6150,
+          "capabilities" : [ "FPGAClusterAttributesINTEL" ],
+          "extensions" : [ "SPV_INTEL_fpga_cluster_attributes" ],
+          "version" : "None"
+        },
+        {
           "enumerant" : "FPGAKernelAttributesv2INTEL",
           "value" : 6161,
           "capabilities" : [ "FPGAKernelAttributesINTEL" ],
@@ -15173,6 +16524,12 @@
           "version" : "None"
         },
         {
+          "enumerant" : "FPMaxErrorINTEL",
+          "value" : 6169,
+          "extensions" : [ "SPV_INTEL_fp_max_error" ],
+          "version" : "None"
+        },
+        {
           "enumerant" : "FPGALatencyControlINTEL",
           "value" : 6171,
           "extensions" : [ "SPV_INTEL_fpga_latency_control" ],
@@ -15185,10 +16542,40 @@
           "version" : "None"
         },
         {
+          "enumerant" : "GlobalVariableHostAccessINTEL",
+          "value" : 6187,
+          "extensions": [ "SPV_INTEL_global_variable_host_access" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "GlobalVariableFPGADecorationsINTEL",
+          "value" : 6189,
+          "extensions": [ "SPV_INTEL_global_variable_fpga_decorations" ],
+          "version" : "None"
+        },
+        {
           "enumerant" : "GroupUniformArithmeticKHR",
           "value" : 6400,
           "extensions" : [ "SPV_KHR_uniform_group_instructions"],
           "version" : "None"
+        },
+        {
+          "enumerant" : "MaskedGatherScatterINTEL",
+	  "value" : 6427,
+	  "extensions" : [ "SPV_INTEL_masked_gather_scatter"],
+	  "version" : "None"
+        },
+        {
+          "enumerant" : "CacheControlsINTEL",
+          "value" : 6441,
+          "extensions" : [ "SPV_INTEL_cache_controls" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "RegisterLimitsINTEL",
+          "value" : 6460,
+          "extensions" : [ "SPV_INTEL_maximum_registers" ],
+          "version" : "None"
         }
       ]
     },
@@ -15270,6 +16657,175 @@
       ]
     },
     {
+      "category" : "BitEnum",
+      "kind" : "CooperativeMatrixOperands",
+      "enumerants" : [
+        {
+          "enumerant" : "NoneKHR",
+          "value" : "0x0000",
+          "version" : "None"
+        },
+        {
+          "enumerant" : "MatrixASignedComponentsKHR",
+          "value" : "0x0001",
+          "version" : "None"
+        },
+        {
+          "enumerant" : "MatrixBSignedComponentsKHR",
+          "value" : "0x0002",
+          "version" : "None"
+        },
+        {
+          "enumerant" : "MatrixCSignedComponentsKHR",
+          "value" : "0x0004",
+          "version" : "None"
+        },
+        {
+          "enumerant" : "MatrixResultSignedComponentsKHR",
+          "value" : "0x0008",
+          "version" : "None"
+        },
+        {
+          "enumerant" : "SaturatingAccumulationKHR",
+          "value" : "0x0010",
+          "version" : "None"
+        }
+      ]
+    },
+    {
+      "category" : "ValueEnum",
+      "kind" : "CooperativeMatrixLayout",
+      "enumerants" : [
+        {
+          "enumerant" : "RowMajorKHR",
+          "value" : 0,
+          "version" : "None"
+        },
+        {
+          "enumerant" : "ColumnMajorKHR",
+          "value" : 1,
+          "version" : "None"
+        }
+      ]
+    },
+    {
+      "category" : "ValueEnum",
+      "kind" : "CooperativeMatrixUse",
+      "enumerants" : [
+        {
+          "enumerant" : "MatrixAKHR",
+          "value" : 0,
+          "version" : "None"
+        },
+        {
+          "enumerant" : "MatrixBKHR",
+          "value" : 1,
+          "version" : "None"
+        },
+        {
+          "enumerant" : "MatrixAccumulatorKHR",
+          "value" : 2,
+          "version" : "None"
+        }
+      ]
+    },
+    {
+      "category" : "ValueEnum",
+      "kind" : "InitializationModeQualifier",
+      "enumerants" : [
+        {
+          "enumerant" : "InitOnDeviceReprogramINTEL",
+          "value" : 0,
+          "capabilities" : [ "GlobalVariableFPGADecorationsINTEL" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "InitOnDeviceResetINTEL",
+          "value" : 1,
+          "capabilities" : [ "GlobalVariableFPGADecorationsINTEL" ],
+          "version" : "None"
+        }
+      ]
+    },
+    {
+      "category" : "ValueEnum",
+      "kind" : "LoadCacheControl",
+      "enumerants" : [
+        {
+          "enumerant" : "UncachedINTEL",
+          "value" : 0,
+          "capabilities" : [ "CacheControlsINTEL" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "CachedINTEL",
+          "value" : 1,
+          "capabilities" : [ "CacheControlsINTEL" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "StreamingINTEL",
+          "value" : 2,
+          "capabilities" : [ "CacheControlsINTEL" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "InvalidateAfterReadINTEL",
+          "value" : 3,
+          "capabilities" : [ "CacheControlsINTEL" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "ConstCachedINTEL",
+          "value" : 4,
+          "capabilities" : [ "CacheControlsINTEL" ],
+          "version" : "None"
+        }
+      ]
+    },
+    {
+      "category" : "ValueEnum",
+      "kind" : "StoreCacheControl",
+      "enumerants" : [
+        {
+          "enumerant" : "UncachedINTEL",
+          "value" : 0,
+          "capabilities" : [ "CacheControlsINTEL" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "WriteThroughINTEL",
+          "value" : 1,
+          "capabilities" : [ "CacheControlsINTEL" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "WriteBackINTEL",
+          "value" : 2,
+          "capabilities" : [ "CacheControlsINTEL" ],
+          "version" : "None"
+        },
+        {
+          "enumerant" : "StreamingINTEL",
+          "value" : 3,
+          "capabilities" : [ "CacheControlsINTEL" ],
+          "version" : "None"
+        }
+      ]
+    },
+    {
+      "category" : "ValueEnum",
+      "kind" : "NamedMaximumNumberOfRegisters",
+      "enumerants" : [
+        {
+          "enumerant" : "AutoINTEL",
+          "value" : 0,
+          "capabilities" : [ "RegisterLimitsINTEL" ],
+          "version" : "None"
+        }
+      ]
+    },
+    {
       "category" : "Id",
       "kind" : "IdResultType",
       "doc" : "Reference to an <id> representing the result's type of the enclosing instruction"
@@ -15306,6 +16862,11 @@
     },
     {
       "category" : "Literal",
+      "kind" : "LiteralFloat",
+      "doc" : "A float consuming one word"
+    },
+    {
+      "category" : "Literal",
       "kind" : "LiteralContextDependentNumber",
       "doc" : "A literal number whose size and format are determined by a previous operand in the enclosing instruction"
     },
diff --git a/third_party/SPIRV-Headers/include/spirv/unified1/spirv.cs b/third_party/SPIRV-Headers/include/spirv/unified1/spirv.cs
index 0e5d2df..8d85cce 100644
--- a/third_party/SPIRV-Headers/include/spirv/unified1/spirv.cs
+++ b/third_party/SPIRV-Headers/include/spirv/unified1/spirv.cs
@@ -1,4 +1,4 @@
-// Copyright (c) 2014-2020 The Khronos Group Inc.
+// Copyright (c) 2014-2024 The Khronos Group Inc.
 // 
 // Permission is hereby granted, free of charge, to any person obtaining a copy
 // of this software and/or associated documentation files (the "Materials"),
@@ -65,6 +65,11 @@
             HLSL = 5,
             CPP_for_OpenCL = 6,
             SYCL = 7,
+            HERO_C = 8,
+            NZSL = 9,
+            WGSL = 10,
+            Slang = 11,
+            Zig = 12,
         }
 
         public enum ExecutionModel
@@ -164,12 +169,19 @@
             RoundingModeRTZ = 4463,
             EarlyAndLateFragmentTestsAMD = 5017,
             StencilRefReplacingEXT = 5027,
+            CoalescingAMDX = 5069,
+            MaxNodeRecursionAMDX = 5071,
+            StaticNumWorkgroupsAMDX = 5072,
+            ShaderIndexAMDX = 5073,
+            MaxNumWorkgroupsAMDX = 5077,
             StencilRefUnchangedFrontAMD = 5079,
             StencilRefGreaterFrontAMD = 5080,
             StencilRefLessFrontAMD = 5081,
             StencilRefUnchangedBackAMD = 5082,
             StencilRefGreaterBackAMD = 5083,
             StencilRefLessBackAMD = 5084,
+            QuadDerivativesKHR = 5088,
+            RequireFullQuadsKHR = 5089,
             OutputLinesEXT = 5269,
             OutputLinesNV = 5269,
             OutputPrimitivesEXT = 5270,
@@ -194,9 +206,14 @@
             NoGlobalOffsetINTEL = 5895,
             NumSIMDWorkitemsINTEL = 5896,
             SchedulerTargetFmaxMhzINTEL = 5903,
+            MaximallyReconvergesKHR = 6023,
+            FPFastMathDefault = 6028,
             StreamingInterfaceINTEL = 6154,
             RegisterMapInterfaceINTEL = 6160,
             NamedBarrierCountINTEL = 6417,
+            MaximumRegistersINTEL = 6461,
+            MaximumRegistersIdINTEL = 6462,
+            NamedMaximumRegistersINTEL = 6463,
         }
 
         public enum StorageClass
@@ -215,6 +232,8 @@
             Image = 11,
             StorageBuffer = 12,
             TileImageEXT = 4172,
+            NodePayloadAMDX = 5068,
+            NodeOutputPayloadAMDX = 5076,
             CallableDataKHR = 5328,
             CallableDataNV = 5328,
             IncomingCallableDataKHR = 5329,
@@ -352,6 +371,8 @@
             Float = 14,
             UnormInt24 = 15,
             UnormInt101010_2 = 16,
+            UnsignedIntRaw10EXT = 19,
+            UnsignedIntRaw12EXT = 20,
         }
 
         public enum ImageOperandsShift
@@ -410,8 +431,11 @@
             NSZ = 2,
             AllowRecip = 3,
             Fast = 4,
+            AllowContract = 16,
             AllowContractFastINTEL = 16,
+            AllowReassoc = 17,
             AllowReassocINTEL = 17,
+            AllowTransform = 18,
         }
 
         public enum FPFastMathModeMask
@@ -422,8 +446,11 @@
             NSZ = 0x00000004,
             AllowRecip = 0x00000008,
             Fast = 0x00000010,
+            AllowContract = 0x00010000,
             AllowContractFastINTEL = 0x00010000,
+            AllowReassoc = 0x00020000,
             AllowReassocINTEL = 0x00020000,
+            AllowTransform = 0x00040000,
         }
 
         public enum FPRoundingMode
@@ -514,7 +541,12 @@
             NoUnsignedWrap = 4470,
             WeightTextureQCOM = 4487,
             BlockMatchTextureQCOM = 4488,
+            BlockMatchSamplerQCOM = 4499,
             ExplicitInterpAMD = 4999,
+            NodeSharesPayloadLimitsWithAMDX = 5019,
+            NodeMaxPayloadsAMDX = 5020,
+            TrackFinishWritingAMDX = 5078,
+            PayloadNodeNameAMDX = 5091,
             OverrideCoverageNV = 5248,
             PassthroughNV = 5250,
             ViewportRelativeNV = 5252,
@@ -564,6 +596,9 @@
             MergeINTEL = 5834,
             BankBitsINTEL = 5835,
             ForcePow2DepthINTEL = 5836,
+            StridesizeINTEL = 5883,
+            WordsizeINTEL = 5884,
+            TrueDualPortINTEL = 5885,
             BurstCoalesceINTEL = 5899,
             CacheSizeINTEL = 5900,
             DontStaticallyCoalesceINTEL = 5901,
@@ -582,6 +617,8 @@
             SingleElementVectorINTEL = 6085,
             VectorComputeCallableFunctionINTEL = 6087,
             MediaBlockIOINTEL = 6140,
+            StallFreeINTEL = 6151,
+            FPMaxErrorDecorationINTEL = 6170,
             LatencyControlLabelINTEL = 6172,
             LatencyControlConstraintINTEL = 6173,
             ConduitKernelArgumentINTEL = 6175,
@@ -593,6 +630,11 @@
             MMHostInterfaceMaxBurstINTEL = 6181,
             MMHostInterfaceWaitRequestINTEL = 6182,
             StableKernelArgumentINTEL = 6183,
+            HostAccessINTEL = 6188,
+            InitModeINTEL = 6190,
+            ImplementInRegisterMapINTEL = 6191,
+            CacheControlLoadINTEL = 6442,
+            CacheControlStoreINTEL = 6443,
         }
 
         public enum BuiltIn
@@ -668,6 +710,8 @@
             BaryCoordSmoothSampleAMD = 4997,
             BaryCoordPullModelAMD = 4998,
             FragStencilRefEXT = 5014,
+            CoalescedInputCountAMDX = 5021,
+            ShaderIndexAMDX = 5073,
             ViewportMaskNV = 5253,
             SecondaryPositionNV = 5257,
             SecondaryViewportMaskNV = 5258,
@@ -721,6 +765,8 @@
             HitKindNV = 5333,
             CurrentRayTimeNV = 5334,
             HitTriangleVertexPositionsKHR = 5335,
+            HitMicroTriangleVertexPositionsNV = 5337,
+            HitMicroTriangleVertexBarycentricsNV = 5344,
             IncomingRayFlagsKHR = 5351,
             IncomingRayFlagsNV = 5351,
             RayGeometryIndexKHR = 5352,
@@ -728,6 +774,8 @@
             SMCountNV = 5375,
             WarpIDNV = 5376,
             SMIDNV = 5377,
+            HitKindFrontFacingMicroTriangleNV = 5405,
+            HitKindBackFacingMicroTriangleNV = 5406,
             CullMaskKHR = 6021,
         }
 
@@ -1035,6 +1083,7 @@
             TextureSampleWeightedQCOM = 4484,
             TextureBoxFilterQCOM = 4485,
             TextureBlockMatchQCOM = 4486,
+            TextureBlockMatch2QCOM = 4498,
             Float16ImageAMD = 5008,
             ImageGatherBiasLodAMD = 5009,
             FragmentMaskAMD = 5010,
@@ -1042,6 +1091,8 @@
             ImageReadWriteLodAMD = 5015,
             Int64ImageEXT = 5016,
             ShaderClockKHR = 5055,
+            ShaderEnqueueAMDX = 5067,
+            QuadControlKHR = 5087,
             SampleMaskOverrideCoverageNV = 5249,
             GeometryShaderPassthroughNV = 5251,
             ShaderViewportIndexLayerEXT = 5254,
@@ -1101,10 +1152,14 @@
             FragmentShaderPixelInterlockEXT = 5378,
             DemoteToHelperInvocation = 5379,
             DemoteToHelperInvocationEXT = 5379,
+            DisplacementMicromapNV = 5380,
             RayTracingOpacityMicromapEXT = 5381,
             ShaderInvocationReorderNV = 5383,
             BindlessTextureNV = 5390,
             RayQueryPositionFetchKHR = 5391,
+            AtomicFloat16VectorNV = 5404,
+            RayTracingDisplacementMicromapNV = 5409,
+            RawAccessChainsNV = 5414,
             SubgroupShuffleINTEL = 5568,
             SubgroupBufferBlockIOINTEL = 5569,
             SubgroupImageBlockIOINTEL = 5570,
@@ -1156,20 +1211,29 @@
             DotProduct = 6019,
             DotProductKHR = 6019,
             RayCullMaskKHR = 6020,
+            CooperativeMatrixKHR = 6022,
             BitInstructions = 6025,
             GroupNonUniformRotateKHR = 6026,
+            FloatControls2 = 6029,
             AtomicFloat32AddEXT = 6033,
             AtomicFloat64AddEXT = 6034,
-            LongConstantCompositeINTEL = 6089,
+            LongCompositesINTEL = 6089,
             OptNoneINTEL = 6094,
             AtomicFloat16AddEXT = 6095,
             DebugInfoModuleINTEL = 6114,
             BFloat16ConversionINTEL = 6115,
             SplitBarrierINTEL = 6141,
+            FPGAClusterAttributesV2INTEL = 6150,
             FPGAKernelAttributesv2INTEL = 6161,
+            FPMaxErrorINTEL = 6169,
             FPGALatencyControlINTEL = 6171,
             FPGAArgumentInterfacesINTEL = 6174,
+            GlobalVariableHostAccessINTEL = 6187,
+            GlobalVariableFPGADecorationsINTEL = 6189,
             GroupUniformArithmeticKHR = 6400,
+            MaskedGatherScatterINTEL = 6427,
+            CacheControlsINTEL = 6441,
+            RegisterLimitsINTEL = 6460,
         }
 
         public enum RayFlagsShift
@@ -1277,6 +1341,87 @@
             PackedVectorFormat4x8BitKHR = 0,
         }
 
+        public enum CooperativeMatrixOperandsShift
+        {
+            MatrixASignedComponentsKHR = 0,
+            MatrixBSignedComponentsKHR = 1,
+            MatrixCSignedComponentsKHR = 2,
+            MatrixResultSignedComponentsKHR = 3,
+            SaturatingAccumulationKHR = 4,
+        }
+
+        public enum CooperativeMatrixOperandsMask
+        {
+            MaskNone = 0,
+            MatrixASignedComponentsKHR = 0x00000001,
+            MatrixBSignedComponentsKHR = 0x00000002,
+            MatrixCSignedComponentsKHR = 0x00000004,
+            MatrixResultSignedComponentsKHR = 0x00000008,
+            SaturatingAccumulationKHR = 0x00000010,
+        }
+
+        public enum CooperativeMatrixLayout
+        {
+            RowMajorKHR = 0,
+            ColumnMajorKHR = 1,
+        }
+
+        public enum CooperativeMatrixUse
+        {
+            MatrixAKHR = 0,
+            MatrixBKHR = 1,
+            MatrixAccumulatorKHR = 2,
+        }
+
+        public enum InitializationModeQualifier
+        {
+            InitOnDeviceReprogramINTEL = 0,
+            InitOnDeviceResetINTEL = 1,
+        }
+
+        public enum HostAccessQualifier
+        {
+            NoneINTEL = 0,
+            ReadINTEL = 1,
+            WriteINTEL = 2,
+            ReadWriteINTEL = 3,
+        }
+
+        public enum LoadCacheControl
+        {
+            UncachedINTEL = 0,
+            CachedINTEL = 1,
+            StreamingINTEL = 2,
+            InvalidateAfterReadINTEL = 3,
+            ConstCachedINTEL = 4,
+        }
+
+        public enum StoreCacheControl
+        {
+            UncachedINTEL = 0,
+            WriteThroughINTEL = 1,
+            WriteBackINTEL = 2,
+            StreamingINTEL = 3,
+        }
+
+        public enum NamedMaximumNumberOfRegisters
+        {
+            AutoINTEL = 0,
+        }
+
+        public enum RawAccessChainOperandsShift
+        {
+            RobustnessPerComponentNV = 0,
+            RobustnessPerElementNV = 1,
+        }
+
+        public enum RawAccessChainOperandsMask
+        {
+            MaskNone = 0,
+            RobustnessPerComponentNV = 0x00000001,
+            RobustnessPerElementNV = 0x00000002,
+        }
+
         public enum Op
         {
             OpNop = 0,
@@ -1651,6 +1796,11 @@
             OpUDotAccSatKHR = 4454,
             OpSUDotAccSat = 4455,
             OpSUDotAccSatKHR = 4455,
+            OpTypeCooperativeMatrixKHR = 4456,
+            OpCooperativeMatrixLoadKHR = 4457,
+            OpCooperativeMatrixStoreKHR = 4458,
+            OpCooperativeMatrixMulAddKHR = 4459,
+            OpCooperativeMatrixLengthKHR = 4460,
             OpTypeRayQueryKHR = 4472,
             OpRayQueryInitializeKHR = 4473,
             OpRayQueryTerminateKHR = 4474,
@@ -1662,6 +1812,10 @@
             OpImageBoxFilterQCOM = 4481,
             OpImageBlockMatchSSDQCOM = 4482,
             OpImageBlockMatchSADQCOM = 4483,
+            OpImageBlockMatchWindowSSDQCOM = 4500,
+            OpImageBlockMatchWindowSADQCOM = 4501,
+            OpImageBlockMatchGatherSSDQCOM = 4502,
+            OpImageBlockMatchGatherSADQCOM = 4503,
             OpGroupIAddNonUniformAMD = 5000,
             OpGroupFAddNonUniformAMD = 5001,
             OpGroupFMinNonUniformAMD = 5002,
@@ -1673,6 +1827,11 @@
             OpFragmentMaskFetchAMD = 5011,
             OpFragmentFetchAMD = 5012,
             OpReadClockKHR = 5056,
+            OpFinalizeNodePayloadsAMDX = 5075,
+            OpFinishWritingNodePayloadAMDX = 5078,
+            OpInitializeNodePayloadsAMDX = 5090,
+            OpGroupNonUniformQuadAllKHR = 5110,
+            OpGroupNonUniformQuadAnyKHR = 5111,
             OpHitObjectRecordHitMotionNV = 5249,
             OpHitObjectRecordHitWithIndexMotionNV = 5250,
             OpHitObjectRecordMissMotionNV = 5251,
@@ -1711,6 +1870,8 @@
             OpSetMeshOutputsEXT = 5295,
             OpGroupNonUniformPartitionNV = 5296,
             OpWritePackedPrimitiveIndices4x8NV = 5299,
+            OpFetchMicroTriangleVertexPositionNV = 5300,
+            OpFetchMicroTriangleVertexBarycentricNV = 5301,
             OpReportIntersectionKHR = 5334,
             OpReportIntersectionNV = 5334,
             OpIgnoreIntersectionNV = 5335,
@@ -1739,6 +1900,7 @@
             OpConvertUToSampledImageNV = 5395,
             OpConvertSampledImageToUNV = 5396,
             OpSamplerImageAddressingModeNV = 5397,
+            OpRawAccessChainNV = 5398,
             OpSubgroupShuffleINTEL = 5571,
             OpSubgroupShuffleDownINTEL = 5572,
             OpSubgroupShuffleUpINTEL = 5573,
@@ -1980,6 +2142,7 @@
             OpTypeStructContinuedINTEL = 6090,
             OpConstantCompositeContinuedINTEL = 6091,
             OpSpecConstantCompositeContinuedINTEL = 6092,
+            OpCompositeConstructContinuedINTEL = 6096,
             OpConvertFToBF16INTEL = 6116,
             OpConvertBF16ToFINTEL = 6117,
             OpControlBarrierArriveINTEL = 6142,
@@ -1992,6 +2155,8 @@
             OpGroupLogicalAndKHR = 6406,
             OpGroupLogicalOrKHR = 6407,
             OpGroupLogicalXorKHR = 6408,
+            OpMaskedGatherINTEL = 6428,
+            OpMaskedScatterINTEL = 6429,
         }
     }
 }
diff --git a/third_party/SPIRV-Headers/include/spirv/unified1/spirv.h b/third_party/SPIRV-Headers/include/spirv/unified1/spirv.h
index b8de1b8..e544a85 100644
--- a/third_party/SPIRV-Headers/include/spirv/unified1/spirv.h
+++ b/third_party/SPIRV-Headers/include/spirv/unified1/spirv.h
@@ -1,5 +1,5 @@
 /*
-** Copyright (c) 2014-2020 The Khronos Group Inc.
+** Copyright (c) 2014-2024 The Khronos Group Inc.
 ** 
 ** Permission is hereby granted, free of charge, to any person obtaining a copy
 ** of this software and/or associated documentation files (the "Materials"),
@@ -73,6 +73,11 @@
     SpvSourceLanguageHLSL = 5,
     SpvSourceLanguageCPP_for_OpenCL = 6,
     SpvSourceLanguageSYCL = 7,
+    SpvSourceLanguageHERO_C = 8,
+    SpvSourceLanguageNZSL = 9,
+    SpvSourceLanguageWGSL = 10,
+    SpvSourceLanguageSlang = 11,
+    SpvSourceLanguageZig = 12,
     SpvSourceLanguageMax = 0x7fffffff,
 } SpvSourceLanguage;
 
@@ -172,12 +177,19 @@
     SpvExecutionModeRoundingModeRTZ = 4463,
     SpvExecutionModeEarlyAndLateFragmentTestsAMD = 5017,
     SpvExecutionModeStencilRefReplacingEXT = 5027,
+    SpvExecutionModeCoalescingAMDX = 5069,
+    SpvExecutionModeMaxNodeRecursionAMDX = 5071,
+    SpvExecutionModeStaticNumWorkgroupsAMDX = 5072,
+    SpvExecutionModeShaderIndexAMDX = 5073,
+    SpvExecutionModeMaxNumWorkgroupsAMDX = 5077,
     SpvExecutionModeStencilRefUnchangedFrontAMD = 5079,
     SpvExecutionModeStencilRefGreaterFrontAMD = 5080,
     SpvExecutionModeStencilRefLessFrontAMD = 5081,
     SpvExecutionModeStencilRefUnchangedBackAMD = 5082,
     SpvExecutionModeStencilRefGreaterBackAMD = 5083,
     SpvExecutionModeStencilRefLessBackAMD = 5084,
+    SpvExecutionModeQuadDerivativesKHR = 5088,
+    SpvExecutionModeRequireFullQuadsKHR = 5089,
     SpvExecutionModeOutputLinesEXT = 5269,
     SpvExecutionModeOutputLinesNV = 5269,
     SpvExecutionModeOutputPrimitivesEXT = 5270,
@@ -202,9 +214,14 @@
     SpvExecutionModeNoGlobalOffsetINTEL = 5895,
     SpvExecutionModeNumSIMDWorkitemsINTEL = 5896,
     SpvExecutionModeSchedulerTargetFmaxMhzINTEL = 5903,
+    SpvExecutionModeMaximallyReconvergesKHR = 6023,
+    SpvExecutionModeFPFastMathDefault = 6028,
     SpvExecutionModeStreamingInterfaceINTEL = 6154,
     SpvExecutionModeRegisterMapInterfaceINTEL = 6160,
     SpvExecutionModeNamedBarrierCountINTEL = 6417,
+    SpvExecutionModeMaximumRegistersINTEL = 6461,
+    SpvExecutionModeMaximumRegistersIdINTEL = 6462,
+    SpvExecutionModeNamedMaximumRegistersINTEL = 6463,
     SpvExecutionModeMax = 0x7fffffff,
 } SpvExecutionMode;
 
@@ -223,6 +240,8 @@
     SpvStorageClassImage = 11,
     SpvStorageClassStorageBuffer = 12,
     SpvStorageClassTileImageEXT = 4172,
+    SpvStorageClassNodePayloadAMDX = 5068,
+    SpvStorageClassNodeOutputPayloadAMDX = 5076,
     SpvStorageClassCallableDataKHR = 5328,
     SpvStorageClassCallableDataNV = 5328,
     SpvStorageClassIncomingCallableDataKHR = 5329,
@@ -360,6 +379,8 @@
     SpvImageChannelDataTypeFloat = 14,
     SpvImageChannelDataTypeUnormInt24 = 15,
     SpvImageChannelDataTypeUnormInt101010_2 = 16,
+    SpvImageChannelDataTypeUnsignedIntRaw10EXT = 19,
+    SpvImageChannelDataTypeUnsignedIntRaw12EXT = 20,
     SpvImageChannelDataTypeMax = 0x7fffffff,
 } SpvImageChannelDataType;
 
@@ -417,8 +438,11 @@
     SpvFPFastMathModeNSZShift = 2,
     SpvFPFastMathModeAllowRecipShift = 3,
     SpvFPFastMathModeFastShift = 4,
+    SpvFPFastMathModeAllowContractShift = 16,
     SpvFPFastMathModeAllowContractFastINTELShift = 16,
+    SpvFPFastMathModeAllowReassocShift = 17,
     SpvFPFastMathModeAllowReassocINTELShift = 17,
+    SpvFPFastMathModeAllowTransformShift = 18,
     SpvFPFastMathModeMax = 0x7fffffff,
 } SpvFPFastMathModeShift;
 
@@ -429,8 +453,11 @@
     SpvFPFastMathModeNSZMask = 0x00000004,
     SpvFPFastMathModeAllowRecipMask = 0x00000008,
     SpvFPFastMathModeFastMask = 0x00000010,
+    SpvFPFastMathModeAllowContractMask = 0x00010000,
     SpvFPFastMathModeAllowContractFastINTELMask = 0x00010000,
+    SpvFPFastMathModeAllowReassocMask = 0x00020000,
     SpvFPFastMathModeAllowReassocINTELMask = 0x00020000,
+    SpvFPFastMathModeAllowTransformMask = 0x00040000,
 } SpvFPFastMathModeMask;
 
 typedef enum SpvFPRoundingMode_ {
@@ -520,7 +547,12 @@
     SpvDecorationNoUnsignedWrap = 4470,
     SpvDecorationWeightTextureQCOM = 4487,
     SpvDecorationBlockMatchTextureQCOM = 4488,
+    SpvDecorationBlockMatchSamplerQCOM = 4499,
     SpvDecorationExplicitInterpAMD = 4999,
+    SpvDecorationNodeSharesPayloadLimitsWithAMDX = 5019,
+    SpvDecorationNodeMaxPayloadsAMDX = 5020,
+    SpvDecorationTrackFinishWritingAMDX = 5078,
+    SpvDecorationPayloadNodeNameAMDX = 5091,
     SpvDecorationOverrideCoverageNV = 5248,
     SpvDecorationPassthroughNV = 5250,
     SpvDecorationViewportRelativeNV = 5252,
@@ -570,6 +602,9 @@
     SpvDecorationMergeINTEL = 5834,
     SpvDecorationBankBitsINTEL = 5835,
     SpvDecorationForcePow2DepthINTEL = 5836,
+    SpvDecorationStridesizeINTEL = 5883,
+    SpvDecorationWordsizeINTEL = 5884,
+    SpvDecorationTrueDualPortINTEL = 5885,
     SpvDecorationBurstCoalesceINTEL = 5899,
     SpvDecorationCacheSizeINTEL = 5900,
     SpvDecorationDontStaticallyCoalesceINTEL = 5901,
@@ -588,6 +623,8 @@
     SpvDecorationSingleElementVectorINTEL = 6085,
     SpvDecorationVectorComputeCallableFunctionINTEL = 6087,
     SpvDecorationMediaBlockIOINTEL = 6140,
+    SpvDecorationStallFreeINTEL = 6151,
+    SpvDecorationFPMaxErrorDecorationINTEL = 6170,
     SpvDecorationLatencyControlLabelINTEL = 6172,
     SpvDecorationLatencyControlConstraintINTEL = 6173,
     SpvDecorationConduitKernelArgumentINTEL = 6175,
@@ -599,6 +636,11 @@
     SpvDecorationMMHostInterfaceMaxBurstINTEL = 6181,
     SpvDecorationMMHostInterfaceWaitRequestINTEL = 6182,
     SpvDecorationStableKernelArgumentINTEL = 6183,
+    SpvDecorationHostAccessINTEL = 6188,
+    SpvDecorationInitModeINTEL = 6190,
+    SpvDecorationImplementInRegisterMapINTEL = 6191,
+    SpvDecorationCacheControlLoadINTEL = 6442,
+    SpvDecorationCacheControlStoreINTEL = 6443,
     SpvDecorationMax = 0x7fffffff,
 } SpvDecoration;
 
@@ -674,6 +716,8 @@
     SpvBuiltInBaryCoordSmoothSampleAMD = 4997,
     SpvBuiltInBaryCoordPullModelAMD = 4998,
     SpvBuiltInFragStencilRefEXT = 5014,
+    SpvBuiltInCoalescedInputCountAMDX = 5021,
+    SpvBuiltInShaderIndexAMDX = 5073,
     SpvBuiltInViewportMaskNV = 5253,
     SpvBuiltInSecondaryPositionNV = 5257,
     SpvBuiltInSecondaryViewportMaskNV = 5258,
@@ -727,6 +771,8 @@
     SpvBuiltInHitKindNV = 5333,
     SpvBuiltInCurrentRayTimeNV = 5334,
     SpvBuiltInHitTriangleVertexPositionsKHR = 5335,
+    SpvBuiltInHitMicroTriangleVertexPositionsNV = 5337,
+    SpvBuiltInHitMicroTriangleVertexBarycentricsNV = 5344,
     SpvBuiltInIncomingRayFlagsKHR = 5351,
     SpvBuiltInIncomingRayFlagsNV = 5351,
     SpvBuiltInRayGeometryIndexKHR = 5352,
@@ -734,6 +780,8 @@
     SpvBuiltInSMCountNV = 5375,
     SpvBuiltInWarpIDNV = 5376,
     SpvBuiltInSMIDNV = 5377,
+    SpvBuiltInHitKindFrontFacingMicroTriangleNV = 5405,
+    SpvBuiltInHitKindBackFacingMicroTriangleNV = 5406,
     SpvBuiltInCullMaskKHR = 6021,
     SpvBuiltInMax = 0x7fffffff,
 } SpvBuiltIn;
@@ -1035,6 +1083,7 @@
     SpvCapabilityTextureSampleWeightedQCOM = 4484,
     SpvCapabilityTextureBoxFilterQCOM = 4485,
     SpvCapabilityTextureBlockMatchQCOM = 4486,
+    SpvCapabilityTextureBlockMatch2QCOM = 4498,
     SpvCapabilityFloat16ImageAMD = 5008,
     SpvCapabilityImageGatherBiasLodAMD = 5009,
     SpvCapabilityFragmentMaskAMD = 5010,
@@ -1042,6 +1091,8 @@
     SpvCapabilityImageReadWriteLodAMD = 5015,
     SpvCapabilityInt64ImageEXT = 5016,
     SpvCapabilityShaderClockKHR = 5055,
+    SpvCapabilityShaderEnqueueAMDX = 5067,
+    SpvCapabilityQuadControlKHR = 5087,
     SpvCapabilitySampleMaskOverrideCoverageNV = 5249,
     SpvCapabilityGeometryShaderPassthroughNV = 5251,
     SpvCapabilityShaderViewportIndexLayerEXT = 5254,
@@ -1101,10 +1152,14 @@
     SpvCapabilityFragmentShaderPixelInterlockEXT = 5378,
     SpvCapabilityDemoteToHelperInvocation = 5379,
     SpvCapabilityDemoteToHelperInvocationEXT = 5379,
+    SpvCapabilityDisplacementMicromapNV = 5380,
     SpvCapabilityRayTracingOpacityMicromapEXT = 5381,
     SpvCapabilityShaderInvocationReorderNV = 5383,
     SpvCapabilityBindlessTextureNV = 5390,
     SpvCapabilityRayQueryPositionFetchKHR = 5391,
+    SpvCapabilityAtomicFloat16VectorNV = 5404,
+    SpvCapabilityRayTracingDisplacementMicromapNV = 5409,
+    SpvCapabilityRawAccessChainsNV = 5414,
     SpvCapabilitySubgroupShuffleINTEL = 5568,
     SpvCapabilitySubgroupBufferBlockIOINTEL = 5569,
     SpvCapabilitySubgroupImageBlockIOINTEL = 5570,
@@ -1156,20 +1211,29 @@
     SpvCapabilityDotProduct = 6019,
     SpvCapabilityDotProductKHR = 6019,
     SpvCapabilityRayCullMaskKHR = 6020,
+    SpvCapabilityCooperativeMatrixKHR = 6022,
     SpvCapabilityBitInstructions = 6025,
     SpvCapabilityGroupNonUniformRotateKHR = 6026,
+    SpvCapabilityFloatControls2 = 6029,
     SpvCapabilityAtomicFloat32AddEXT = 6033,
     SpvCapabilityAtomicFloat64AddEXT = 6034,
-    SpvCapabilityLongConstantCompositeINTEL = 6089,
+    SpvCapabilityLongCompositesINTEL = 6089,
     SpvCapabilityOptNoneINTEL = 6094,
     SpvCapabilityAtomicFloat16AddEXT = 6095,
     SpvCapabilityDebugInfoModuleINTEL = 6114,
     SpvCapabilityBFloat16ConversionINTEL = 6115,
     SpvCapabilitySplitBarrierINTEL = 6141,
+    SpvCapabilityFPGAClusterAttributesV2INTEL = 6150,
     SpvCapabilityFPGAKernelAttributesv2INTEL = 6161,
+    SpvCapabilityFPMaxErrorINTEL = 6169,
     SpvCapabilityFPGALatencyControlINTEL = 6171,
     SpvCapabilityFPGAArgumentInterfacesINTEL = 6174,
+    SpvCapabilityGlobalVariableHostAccessINTEL = 6187,
+    SpvCapabilityGlobalVariableFPGADecorationsINTEL = 6189,
     SpvCapabilityGroupUniformArithmeticKHR = 6400,
+    SpvCapabilityMaskedGatherScatterINTEL = 6427,
+    SpvCapabilityCacheControlsINTEL = 6441,
+    SpvCapabilityRegisterLimitsINTEL = 6460,
     SpvCapabilityMax = 0x7fffffff,
 } SpvCapability;
 
@@ -1276,6 +1340,85 @@
     SpvPackedVectorFormatMax = 0x7fffffff,
 } SpvPackedVectorFormat;
 
+typedef enum SpvCooperativeMatrixOperandsShift_ {
+    SpvCooperativeMatrixOperandsMatrixASignedComponentsKHRShift = 0,
+    SpvCooperativeMatrixOperandsMatrixBSignedComponentsKHRShift = 1,
+    SpvCooperativeMatrixOperandsMatrixCSignedComponentsKHRShift = 2,
+    SpvCooperativeMatrixOperandsMatrixResultSignedComponentsKHRShift = 3,
+    SpvCooperativeMatrixOperandsSaturatingAccumulationKHRShift = 4,
+    SpvCooperativeMatrixOperandsMax = 0x7fffffff,
+} SpvCooperativeMatrixOperandsShift;
+
+typedef enum SpvCooperativeMatrixOperandsMask_ {
+    SpvCooperativeMatrixOperandsMaskNone = 0,
+    SpvCooperativeMatrixOperandsMatrixASignedComponentsKHRMask = 0x00000001,
+    SpvCooperativeMatrixOperandsMatrixBSignedComponentsKHRMask = 0x00000002,
+    SpvCooperativeMatrixOperandsMatrixCSignedComponentsKHRMask = 0x00000004,
+    SpvCooperativeMatrixOperandsMatrixResultSignedComponentsKHRMask = 0x00000008,
+    SpvCooperativeMatrixOperandsSaturatingAccumulationKHRMask = 0x00000010,
+} SpvCooperativeMatrixOperandsMask;
+
+typedef enum SpvCooperativeMatrixLayout_ {
+    SpvCooperativeMatrixLayoutRowMajorKHR = 0,
+    SpvCooperativeMatrixLayoutColumnMajorKHR = 1,
+    SpvCooperativeMatrixLayoutMax = 0x7fffffff,
+} SpvCooperativeMatrixLayout;
+
+typedef enum SpvCooperativeMatrixUse_ {
+    SpvCooperativeMatrixUseMatrixAKHR = 0,
+    SpvCooperativeMatrixUseMatrixBKHR = 1,
+    SpvCooperativeMatrixUseMatrixAccumulatorKHR = 2,
+    SpvCooperativeMatrixUseMax = 0x7fffffff,
+} SpvCooperativeMatrixUse;
+
+typedef enum SpvInitializationModeQualifier_ {
+    SpvInitializationModeQualifierInitOnDeviceReprogramINTEL = 0,
+    SpvInitializationModeQualifierInitOnDeviceResetINTEL = 1,
+    SpvInitializationModeQualifierMax = 0x7fffffff,
+} SpvInitializationModeQualifier;
+
+typedef enum SpvHostAccessQualifier_ {
+    SpvHostAccessQualifierNoneINTEL = 0,
+    SpvHostAccessQualifierReadINTEL = 1,
+    SpvHostAccessQualifierWriteINTEL = 2,
+    SpvHostAccessQualifierReadWriteINTEL = 3,
+    SpvHostAccessQualifierMax = 0x7fffffff,
+} SpvHostAccessQualifier;
+
+typedef enum SpvLoadCacheControl_ {
+    SpvLoadCacheControlUncachedINTEL = 0,
+    SpvLoadCacheControlCachedINTEL = 1,
+    SpvLoadCacheControlStreamingINTEL = 2,
+    SpvLoadCacheControlInvalidateAfterReadINTEL = 3,
+    SpvLoadCacheControlConstCachedINTEL = 4,
+    SpvLoadCacheControlMax = 0x7fffffff,
+} SpvLoadCacheControl;
+
+typedef enum SpvStoreCacheControl_ {
+    SpvStoreCacheControlUncachedINTEL = 0,
+    SpvStoreCacheControlWriteThroughINTEL = 1,
+    SpvStoreCacheControlWriteBackINTEL = 2,
+    SpvStoreCacheControlStreamingINTEL = 3,
+    SpvStoreCacheControlMax = 0x7fffffff,
+} SpvStoreCacheControl;
+
+typedef enum SpvNamedMaximumNumberOfRegisters_ {
+    SpvNamedMaximumNumberOfRegistersAutoINTEL = 0,
+    SpvNamedMaximumNumberOfRegistersMax = 0x7fffffff,
+} SpvNamedMaximumNumberOfRegisters;
+
+typedef enum SpvRawAccessChainOperandsShift_ {
+    SpvRawAccessChainOperandsRobustnessPerComponentNVShift = 0,
+    SpvRawAccessChainOperandsRobustnessPerElementNVShift = 1,
+    SpvRawAccessChainOperandsMax = 0x7fffffff,
+} SpvRawAccessChainOperandsShift;
+
+typedef enum SpvRawAccessChainOperandsMask_ {
+    SpvRawAccessChainOperandsMaskNone = 0,
+    SpvRawAccessChainOperandsRobustnessPerComponentNVMask = 0x00000001,
+    SpvRawAccessChainOperandsRobustnessPerElementNVMask = 0x00000002,
+} SpvRawAccessChainOperandsMask;
+
 typedef enum SpvOp_ {
     SpvOpNop = 0,
     SpvOpUndef = 1,
@@ -1649,6 +1792,11 @@
     SpvOpUDotAccSatKHR = 4454,
     SpvOpSUDotAccSat = 4455,
     SpvOpSUDotAccSatKHR = 4455,
+    SpvOpTypeCooperativeMatrixKHR = 4456,
+    SpvOpCooperativeMatrixLoadKHR = 4457,
+    SpvOpCooperativeMatrixStoreKHR = 4458,
+    SpvOpCooperativeMatrixMulAddKHR = 4459,
+    SpvOpCooperativeMatrixLengthKHR = 4460,
     SpvOpTypeRayQueryKHR = 4472,
     SpvOpRayQueryInitializeKHR = 4473,
     SpvOpRayQueryTerminateKHR = 4474,
@@ -1660,6 +1808,10 @@
     SpvOpImageBoxFilterQCOM = 4481,
     SpvOpImageBlockMatchSSDQCOM = 4482,
     SpvOpImageBlockMatchSADQCOM = 4483,
+    SpvOpImageBlockMatchWindowSSDQCOM = 4500,
+    SpvOpImageBlockMatchWindowSADQCOM = 4501,
+    SpvOpImageBlockMatchGatherSSDQCOM = 4502,
+    SpvOpImageBlockMatchGatherSADQCOM = 4503,
     SpvOpGroupIAddNonUniformAMD = 5000,
     SpvOpGroupFAddNonUniformAMD = 5001,
     SpvOpGroupFMinNonUniformAMD = 5002,
@@ -1671,6 +1823,11 @@
     SpvOpFragmentMaskFetchAMD = 5011,
     SpvOpFragmentFetchAMD = 5012,
     SpvOpReadClockKHR = 5056,
+    SpvOpFinalizeNodePayloadsAMDX = 5075,
+    SpvOpFinishWritingNodePayloadAMDX = 5078,
+    SpvOpInitializeNodePayloadsAMDX = 5090,
+    SpvOpGroupNonUniformQuadAllKHR = 5110,
+    SpvOpGroupNonUniformQuadAnyKHR = 5111,
     SpvOpHitObjectRecordHitMotionNV = 5249,
     SpvOpHitObjectRecordHitWithIndexMotionNV = 5250,
     SpvOpHitObjectRecordMissMotionNV = 5251,
@@ -1709,6 +1866,8 @@
     SpvOpSetMeshOutputsEXT = 5295,
     SpvOpGroupNonUniformPartitionNV = 5296,
     SpvOpWritePackedPrimitiveIndices4x8NV = 5299,
+    SpvOpFetchMicroTriangleVertexPositionNV = 5300,
+    SpvOpFetchMicroTriangleVertexBarycentricNV = 5301,
     SpvOpReportIntersectionKHR = 5334,
     SpvOpReportIntersectionNV = 5334,
     SpvOpIgnoreIntersectionNV = 5335,
@@ -1737,6 +1896,7 @@
     SpvOpConvertUToSampledImageNV = 5395,
     SpvOpConvertSampledImageToUNV = 5396,
     SpvOpSamplerImageAddressingModeNV = 5397,
+    SpvOpRawAccessChainNV = 5398,
     SpvOpSubgroupShuffleINTEL = 5571,
     SpvOpSubgroupShuffleDownINTEL = 5572,
     SpvOpSubgroupShuffleUpINTEL = 5573,
@@ -1978,6 +2138,7 @@
     SpvOpTypeStructContinuedINTEL = 6090,
     SpvOpConstantCompositeContinuedINTEL = 6091,
     SpvOpSpecConstantCompositeContinuedINTEL = 6092,
+    SpvOpCompositeConstructContinuedINTEL = 6096,
     SpvOpConvertFToBF16INTEL = 6116,
     SpvOpConvertBF16ToFINTEL = 6117,
     SpvOpControlBarrierArriveINTEL = 6142,
@@ -1990,6 +2151,8 @@
     SpvOpGroupLogicalAndKHR = 6406,
     SpvOpGroupLogicalOrKHR = 6407,
     SpvOpGroupLogicalXorKHR = 6408,
+    SpvOpMaskedGatherINTEL = 6428,
+    SpvOpMaskedScatterINTEL = 6429,
     SpvOpMax = 0x7fffffff,
 } SpvOp;
 
@@ -2367,6 +2530,11 @@
     case SpvOpSDotAccSat: *hasResult = true; *hasResultType = true; break;
     case SpvOpUDotAccSat: *hasResult = true; *hasResultType = true; break;
     case SpvOpSUDotAccSat: *hasResult = true; *hasResultType = true; break;
+    case SpvOpTypeCooperativeMatrixKHR: *hasResult = true; *hasResultType = false; break;
+    case SpvOpCooperativeMatrixLoadKHR: *hasResult = true; *hasResultType = true; break;
+    case SpvOpCooperativeMatrixStoreKHR: *hasResult = false; *hasResultType = false; break;
+    case SpvOpCooperativeMatrixMulAddKHR: *hasResult = true; *hasResultType = true; break;
+    case SpvOpCooperativeMatrixLengthKHR: *hasResult = true; *hasResultType = true; break;
     case SpvOpTypeRayQueryKHR: *hasResult = true; *hasResultType = false; break;
     case SpvOpRayQueryInitializeKHR: *hasResult = false; *hasResultType = false; break;
     case SpvOpRayQueryTerminateKHR: *hasResult = false; *hasResultType = false; break;
@@ -2378,6 +2546,10 @@
     case SpvOpImageBoxFilterQCOM: *hasResult = true; *hasResultType = true; break;
     case SpvOpImageBlockMatchSSDQCOM: *hasResult = true; *hasResultType = true; break;
     case SpvOpImageBlockMatchSADQCOM: *hasResult = true; *hasResultType = true; break;
+    case SpvOpImageBlockMatchWindowSSDQCOM: *hasResult = true; *hasResultType = true; break;
+    case SpvOpImageBlockMatchWindowSADQCOM: *hasResult = true; *hasResultType = true; break;
+    case SpvOpImageBlockMatchGatherSSDQCOM: *hasResult = true; *hasResultType = true; break;
+    case SpvOpImageBlockMatchGatherSADQCOM: *hasResult = true; *hasResultType = true; break;
     case SpvOpGroupIAddNonUniformAMD: *hasResult = true; *hasResultType = true; break;
     case SpvOpGroupFAddNonUniformAMD: *hasResult = true; *hasResultType = true; break;
     case SpvOpGroupFMinNonUniformAMD: *hasResult = true; *hasResultType = true; break;
@@ -2389,6 +2561,11 @@
     case SpvOpFragmentMaskFetchAMD: *hasResult = true; *hasResultType = true; break;
     case SpvOpFragmentFetchAMD: *hasResult = true; *hasResultType = true; break;
     case SpvOpReadClockKHR: *hasResult = true; *hasResultType = true; break;
+    case SpvOpFinalizeNodePayloadsAMDX: *hasResult = false; *hasResultType = false; break;
+    case SpvOpFinishWritingNodePayloadAMDX: *hasResult = true; *hasResultType = true; break;
+    case SpvOpInitializeNodePayloadsAMDX: *hasResult = false; *hasResultType = false; break;
+    case SpvOpGroupNonUniformQuadAllKHR: *hasResult = true; *hasResultType = true; break;
+    case SpvOpGroupNonUniformQuadAnyKHR: *hasResult = true; *hasResultType = true; break;
     case SpvOpHitObjectRecordHitMotionNV: *hasResult = false; *hasResultType = false; break;
     case SpvOpHitObjectRecordHitWithIndexMotionNV: *hasResult = false; *hasResultType = false; break;
     case SpvOpHitObjectRecordMissMotionNV: *hasResult = false; *hasResultType = false; break;
@@ -2427,6 +2604,8 @@
     case SpvOpSetMeshOutputsEXT: *hasResult = false; *hasResultType = false; break;
     case SpvOpGroupNonUniformPartitionNV: *hasResult = true; *hasResultType = true; break;
     case SpvOpWritePackedPrimitiveIndices4x8NV: *hasResult = false; *hasResultType = false; break;
+    case SpvOpFetchMicroTriangleVertexPositionNV: *hasResult = true; *hasResultType = true; break;
+    case SpvOpFetchMicroTriangleVertexBarycentricNV: *hasResult = true; *hasResultType = true; break;
     case SpvOpReportIntersectionNV: *hasResult = true; *hasResultType = true; break;
     case SpvOpIgnoreIntersectionNV: *hasResult = false; *hasResultType = false; break;
     case SpvOpTerminateRayNV: *hasResult = false; *hasResultType = false; break;
@@ -2452,6 +2631,7 @@
     case SpvOpConvertUToSampledImageNV: *hasResult = true; *hasResultType = true; break;
     case SpvOpConvertSampledImageToUNV: *hasResult = true; *hasResultType = true; break;
     case SpvOpSamplerImageAddressingModeNV: *hasResult = false; *hasResultType = false; break;
+    case SpvOpRawAccessChainNV: *hasResult = true; *hasResultType = true; break;
     case SpvOpSubgroupShuffleINTEL: *hasResult = true; *hasResultType = true; break;
     case SpvOpSubgroupShuffleDownINTEL: *hasResult = true; *hasResultType = true; break;
     case SpvOpSubgroupShuffleUpINTEL: *hasResult = true; *hasResultType = true; break;
@@ -2691,6 +2871,7 @@
     case SpvOpTypeStructContinuedINTEL: *hasResult = false; *hasResultType = false; break;
     case SpvOpConstantCompositeContinuedINTEL: *hasResult = false; *hasResultType = false; break;
     case SpvOpSpecConstantCompositeContinuedINTEL: *hasResult = false; *hasResultType = false; break;
+    case SpvOpCompositeConstructContinuedINTEL: *hasResult = true; *hasResultType = true; break;
     case SpvOpConvertFToBF16INTEL: *hasResult = true; *hasResultType = true; break;
     case SpvOpConvertBF16ToFINTEL: *hasResult = true; *hasResultType = true; break;
     case SpvOpControlBarrierArriveINTEL: *hasResult = false; *hasResultType = false; break;
@@ -2703,6 +2884,8 @@
     case SpvOpGroupLogicalAndKHR: *hasResult = true; *hasResultType = true; break;
     case SpvOpGroupLogicalOrKHR: *hasResult = true; *hasResultType = true; break;
     case SpvOpGroupLogicalXorKHR: *hasResult = true; *hasResultType = true; break;
+    case SpvOpMaskedGatherINTEL: *hasResult = true; *hasResultType = true; break;
+    case SpvOpMaskedScatterINTEL: *hasResult = false; *hasResultType = false; break;
     }
 }
 #endif /* SPV_ENABLE_UTILITY_CODE */
diff --git a/third_party/SPIRV-Headers/include/spirv/unified1/spirv.hpp b/third_party/SPIRV-Headers/include/spirv/unified1/spirv.hpp
index 421d684..a383739 100644
--- a/third_party/SPIRV-Headers/include/spirv/unified1/spirv.hpp
+++ b/third_party/SPIRV-Headers/include/spirv/unified1/spirv.hpp
@@ -1,4 +1,4 @@
-// Copyright (c) 2014-2020 The Khronos Group Inc.
+// Copyright (c) 2014-2024 The Khronos Group Inc.
 // 
 // Permission is hereby granted, free of charge, to any person obtaining a copy
 // of this software and/or associated documentation files (the "Materials"),
@@ -69,6 +69,11 @@
     SourceLanguageHLSL = 5,
     SourceLanguageCPP_for_OpenCL = 6,
     SourceLanguageSYCL = 7,
+    SourceLanguageHERO_C = 8,
+    SourceLanguageNZSL = 9,
+    SourceLanguageWGSL = 10,
+    SourceLanguageSlang = 11,
+    SourceLanguageZig = 12,
     SourceLanguageMax = 0x7fffffff,
 };
 
@@ -168,12 +173,19 @@
     ExecutionModeRoundingModeRTZ = 4463,
     ExecutionModeEarlyAndLateFragmentTestsAMD = 5017,
     ExecutionModeStencilRefReplacingEXT = 5027,
+    ExecutionModeCoalescingAMDX = 5069,
+    ExecutionModeMaxNodeRecursionAMDX = 5071,
+    ExecutionModeStaticNumWorkgroupsAMDX = 5072,
+    ExecutionModeShaderIndexAMDX = 5073,
+    ExecutionModeMaxNumWorkgroupsAMDX = 5077,
     ExecutionModeStencilRefUnchangedFrontAMD = 5079,
     ExecutionModeStencilRefGreaterFrontAMD = 5080,
     ExecutionModeStencilRefLessFrontAMD = 5081,
     ExecutionModeStencilRefUnchangedBackAMD = 5082,
     ExecutionModeStencilRefGreaterBackAMD = 5083,
     ExecutionModeStencilRefLessBackAMD = 5084,
+    ExecutionModeQuadDerivativesKHR = 5088,
+    ExecutionModeRequireFullQuadsKHR = 5089,
     ExecutionModeOutputLinesEXT = 5269,
     ExecutionModeOutputLinesNV = 5269,
     ExecutionModeOutputPrimitivesEXT = 5270,
@@ -198,9 +210,14 @@
     ExecutionModeNoGlobalOffsetINTEL = 5895,
     ExecutionModeNumSIMDWorkitemsINTEL = 5896,
     ExecutionModeSchedulerTargetFmaxMhzINTEL = 5903,
+    ExecutionModeMaximallyReconvergesKHR = 6023,
+    ExecutionModeFPFastMathDefault = 6028,
     ExecutionModeStreamingInterfaceINTEL = 6154,
     ExecutionModeRegisterMapInterfaceINTEL = 6160,
     ExecutionModeNamedBarrierCountINTEL = 6417,
+    ExecutionModeMaximumRegistersINTEL = 6461,
+    ExecutionModeMaximumRegistersIdINTEL = 6462,
+    ExecutionModeNamedMaximumRegistersINTEL = 6463,
     ExecutionModeMax = 0x7fffffff,
 };
 
@@ -219,6 +236,8 @@
     StorageClassImage = 11,
     StorageClassStorageBuffer = 12,
     StorageClassTileImageEXT = 4172,
+    StorageClassNodePayloadAMDX = 5068,
+    StorageClassNodeOutputPayloadAMDX = 5076,
     StorageClassCallableDataKHR = 5328,
     StorageClassCallableDataNV = 5328,
     StorageClassIncomingCallableDataKHR = 5329,
@@ -356,6 +375,8 @@
     ImageChannelDataTypeFloat = 14,
     ImageChannelDataTypeUnormInt24 = 15,
     ImageChannelDataTypeUnormInt101010_2 = 16,
+    ImageChannelDataTypeUnsignedIntRaw10EXT = 19,
+    ImageChannelDataTypeUnsignedIntRaw12EXT = 20,
     ImageChannelDataTypeMax = 0x7fffffff,
 };
 
@@ -413,8 +434,11 @@
     FPFastMathModeNSZShift = 2,
     FPFastMathModeAllowRecipShift = 3,
     FPFastMathModeFastShift = 4,
+    FPFastMathModeAllowContractShift = 16,
     FPFastMathModeAllowContractFastINTELShift = 16,
+    FPFastMathModeAllowReassocShift = 17,
     FPFastMathModeAllowReassocINTELShift = 17,
+    FPFastMathModeAllowTransformShift = 18,
     FPFastMathModeMax = 0x7fffffff,
 };
 
@@ -425,8 +449,11 @@
     FPFastMathModeNSZMask = 0x00000004,
     FPFastMathModeAllowRecipMask = 0x00000008,
     FPFastMathModeFastMask = 0x00000010,
+    FPFastMathModeAllowContractMask = 0x00010000,
     FPFastMathModeAllowContractFastINTELMask = 0x00010000,
+    FPFastMathModeAllowReassocMask = 0x00020000,
     FPFastMathModeAllowReassocINTELMask = 0x00020000,
+    FPFastMathModeAllowTransformMask = 0x00040000,
 };
 
 enum FPRoundingMode {
@@ -516,7 +543,12 @@
     DecorationNoUnsignedWrap = 4470,
     DecorationWeightTextureQCOM = 4487,
     DecorationBlockMatchTextureQCOM = 4488,
+    DecorationBlockMatchSamplerQCOM = 4499,
     DecorationExplicitInterpAMD = 4999,
+    DecorationNodeSharesPayloadLimitsWithAMDX = 5019,
+    DecorationNodeMaxPayloadsAMDX = 5020,
+    DecorationTrackFinishWritingAMDX = 5078,
+    DecorationPayloadNodeNameAMDX = 5091,
     DecorationOverrideCoverageNV = 5248,
     DecorationPassthroughNV = 5250,
     DecorationViewportRelativeNV = 5252,
@@ -566,6 +598,9 @@
     DecorationMergeINTEL = 5834,
     DecorationBankBitsINTEL = 5835,
     DecorationForcePow2DepthINTEL = 5836,
+    DecorationStridesizeINTEL = 5883,
+    DecorationWordsizeINTEL = 5884,
+    DecorationTrueDualPortINTEL = 5885,
     DecorationBurstCoalesceINTEL = 5899,
     DecorationCacheSizeINTEL = 5900,
     DecorationDontStaticallyCoalesceINTEL = 5901,
@@ -584,6 +619,8 @@
     DecorationSingleElementVectorINTEL = 6085,
     DecorationVectorComputeCallableFunctionINTEL = 6087,
     DecorationMediaBlockIOINTEL = 6140,
+    DecorationStallFreeINTEL = 6151,
+    DecorationFPMaxErrorDecorationINTEL = 6170,
     DecorationLatencyControlLabelINTEL = 6172,
     DecorationLatencyControlConstraintINTEL = 6173,
     DecorationConduitKernelArgumentINTEL = 6175,
@@ -595,6 +632,11 @@
     DecorationMMHostInterfaceMaxBurstINTEL = 6181,
     DecorationMMHostInterfaceWaitRequestINTEL = 6182,
     DecorationStableKernelArgumentINTEL = 6183,
+    DecorationHostAccessINTEL = 6188,
+    DecorationInitModeINTEL = 6190,
+    DecorationImplementInRegisterMapINTEL = 6191,
+    DecorationCacheControlLoadINTEL = 6442,
+    DecorationCacheControlStoreINTEL = 6443,
     DecorationMax = 0x7fffffff,
 };
 
@@ -670,6 +712,8 @@
     BuiltInBaryCoordSmoothSampleAMD = 4997,
     BuiltInBaryCoordPullModelAMD = 4998,
     BuiltInFragStencilRefEXT = 5014,
+    BuiltInCoalescedInputCountAMDX = 5021,
+    BuiltInShaderIndexAMDX = 5073,
     BuiltInViewportMaskNV = 5253,
     BuiltInSecondaryPositionNV = 5257,
     BuiltInSecondaryViewportMaskNV = 5258,
@@ -723,6 +767,8 @@
     BuiltInHitKindNV = 5333,
     BuiltInCurrentRayTimeNV = 5334,
     BuiltInHitTriangleVertexPositionsKHR = 5335,
+    BuiltInHitMicroTriangleVertexPositionsNV = 5337,
+    BuiltInHitMicroTriangleVertexBarycentricsNV = 5344,
     BuiltInIncomingRayFlagsKHR = 5351,
     BuiltInIncomingRayFlagsNV = 5351,
     BuiltInRayGeometryIndexKHR = 5352,
@@ -730,6 +776,8 @@
     BuiltInSMCountNV = 5375,
     BuiltInWarpIDNV = 5376,
     BuiltInSMIDNV = 5377,
+    BuiltInHitKindFrontFacingMicroTriangleNV = 5405,
+    BuiltInHitKindBackFacingMicroTriangleNV = 5406,
     BuiltInCullMaskKHR = 6021,
     BuiltInMax = 0x7fffffff,
 };
@@ -1031,6 +1079,7 @@
     CapabilityTextureSampleWeightedQCOM = 4484,
     CapabilityTextureBoxFilterQCOM = 4485,
     CapabilityTextureBlockMatchQCOM = 4486,
+    CapabilityTextureBlockMatch2QCOM = 4498,
     CapabilityFloat16ImageAMD = 5008,
     CapabilityImageGatherBiasLodAMD = 5009,
     CapabilityFragmentMaskAMD = 5010,
@@ -1038,6 +1087,8 @@
     CapabilityImageReadWriteLodAMD = 5015,
     CapabilityInt64ImageEXT = 5016,
     CapabilityShaderClockKHR = 5055,
+    CapabilityShaderEnqueueAMDX = 5067,
+    CapabilityQuadControlKHR = 5087,
     CapabilitySampleMaskOverrideCoverageNV = 5249,
     CapabilityGeometryShaderPassthroughNV = 5251,
     CapabilityShaderViewportIndexLayerEXT = 5254,
@@ -1097,10 +1148,14 @@
     CapabilityFragmentShaderPixelInterlockEXT = 5378,
     CapabilityDemoteToHelperInvocation = 5379,
     CapabilityDemoteToHelperInvocationEXT = 5379,
+    CapabilityDisplacementMicromapNV = 5380,
     CapabilityRayTracingOpacityMicromapEXT = 5381,
     CapabilityShaderInvocationReorderNV = 5383,
     CapabilityBindlessTextureNV = 5390,
     CapabilityRayQueryPositionFetchKHR = 5391,
+    CapabilityAtomicFloat16VectorNV = 5404,
+    CapabilityRayTracingDisplacementMicromapNV = 5409,
+    CapabilityRawAccessChainsNV = 5414,
     CapabilitySubgroupShuffleINTEL = 5568,
     CapabilitySubgroupBufferBlockIOINTEL = 5569,
     CapabilitySubgroupImageBlockIOINTEL = 5570,
@@ -1152,20 +1207,29 @@
     CapabilityDotProduct = 6019,
     CapabilityDotProductKHR = 6019,
     CapabilityRayCullMaskKHR = 6020,
+    CapabilityCooperativeMatrixKHR = 6022,
     CapabilityBitInstructions = 6025,
     CapabilityGroupNonUniformRotateKHR = 6026,
+    CapabilityFloatControls2 = 6029,
     CapabilityAtomicFloat32AddEXT = 6033,
     CapabilityAtomicFloat64AddEXT = 6034,
-    CapabilityLongConstantCompositeINTEL = 6089,
+    CapabilityLongCompositesINTEL = 6089,
     CapabilityOptNoneINTEL = 6094,
     CapabilityAtomicFloat16AddEXT = 6095,
     CapabilityDebugInfoModuleINTEL = 6114,
     CapabilityBFloat16ConversionINTEL = 6115,
     CapabilitySplitBarrierINTEL = 6141,
+    CapabilityFPGAClusterAttributesV2INTEL = 6150,
     CapabilityFPGAKernelAttributesv2INTEL = 6161,
+    CapabilityFPMaxErrorINTEL = 6169,
     CapabilityFPGALatencyControlINTEL = 6171,
     CapabilityFPGAArgumentInterfacesINTEL = 6174,
+    CapabilityGlobalVariableHostAccessINTEL = 6187,
+    CapabilityGlobalVariableFPGADecorationsINTEL = 6189,
     CapabilityGroupUniformArithmeticKHR = 6400,
+    CapabilityMaskedGatherScatterINTEL = 6427,
+    CapabilityCacheControlsINTEL = 6441,
+    CapabilityRegisterLimitsINTEL = 6460,
     CapabilityMax = 0x7fffffff,
 };
 
@@ -1272,6 +1336,85 @@
     PackedVectorFormatMax = 0x7fffffff,
 };
 
+enum CooperativeMatrixOperandsShift {
+    CooperativeMatrixOperandsMatrixASignedComponentsKHRShift = 0,
+    CooperativeMatrixOperandsMatrixBSignedComponentsKHRShift = 1,
+    CooperativeMatrixOperandsMatrixCSignedComponentsKHRShift = 2,
+    CooperativeMatrixOperandsMatrixResultSignedComponentsKHRShift = 3,
+    CooperativeMatrixOperandsSaturatingAccumulationKHRShift = 4,
+    CooperativeMatrixOperandsMax = 0x7fffffff,
+};
+
+enum CooperativeMatrixOperandsMask {
+    CooperativeMatrixOperandsMaskNone = 0,
+    CooperativeMatrixOperandsMatrixASignedComponentsKHRMask = 0x00000001,
+    CooperativeMatrixOperandsMatrixBSignedComponentsKHRMask = 0x00000002,
+    CooperativeMatrixOperandsMatrixCSignedComponentsKHRMask = 0x00000004,
+    CooperativeMatrixOperandsMatrixResultSignedComponentsKHRMask = 0x00000008,
+    CooperativeMatrixOperandsSaturatingAccumulationKHRMask = 0x00000010,
+};
+
+enum CooperativeMatrixLayout {
+    CooperativeMatrixLayoutRowMajorKHR = 0,
+    CooperativeMatrixLayoutColumnMajorKHR = 1,
+    CooperativeMatrixLayoutMax = 0x7fffffff,
+};
+
+enum CooperativeMatrixUse {
+    CooperativeMatrixUseMatrixAKHR = 0,
+    CooperativeMatrixUseMatrixBKHR = 1,
+    CooperativeMatrixUseMatrixAccumulatorKHR = 2,
+    CooperativeMatrixUseMax = 0x7fffffff,
+};
+
+enum InitializationModeQualifier {
+    InitializationModeQualifierInitOnDeviceReprogramINTEL = 0,
+    InitializationModeQualifierInitOnDeviceResetINTEL = 1,
+    InitializationModeQualifierMax = 0x7fffffff,
+};
+
+enum HostAccessQualifier {
+    HostAccessQualifierNoneINTEL = 0,
+    HostAccessQualifierReadINTEL = 1,
+    HostAccessQualifierWriteINTEL = 2,
+    HostAccessQualifierReadWriteINTEL = 3,
+    HostAccessQualifierMax = 0x7fffffff,
+};
+
+enum LoadCacheControl {
+    LoadCacheControlUncachedINTEL = 0,
+    LoadCacheControlCachedINTEL = 1,
+    LoadCacheControlStreamingINTEL = 2,
+    LoadCacheControlInvalidateAfterReadINTEL = 3,
+    LoadCacheControlConstCachedINTEL = 4,
+    LoadCacheControlMax = 0x7fffffff,
+};
+
+enum StoreCacheControl {
+    StoreCacheControlUncachedINTEL = 0,
+    StoreCacheControlWriteThroughINTEL = 1,
+    StoreCacheControlWriteBackINTEL = 2,
+    StoreCacheControlStreamingINTEL = 3,
+    StoreCacheControlMax = 0x7fffffff,
+};
+
+enum NamedMaximumNumberOfRegisters {
+    NamedMaximumNumberOfRegistersAutoINTEL = 0,
+    NamedMaximumNumberOfRegistersMax = 0x7fffffff,
+};
+
+enum RawAccessChainOperandsShift {
+    RawAccessChainOperandsRobustnessPerComponentNVShift = 0,
+    RawAccessChainOperandsRobustnessPerElementNVShift = 1,
+    RawAccessChainOperandsMax = 0x7fffffff,
+};
+
+enum RawAccessChainOperandsMask {
+    RawAccessChainOperandsMaskNone = 0,
+    RawAccessChainOperandsRobustnessPerComponentNVMask = 0x00000001,
+    RawAccessChainOperandsRobustnessPerElementNVMask = 0x00000002,
+};
+
 enum Op {
     OpNop = 0,
     OpUndef = 1,
@@ -1645,6 +1788,11 @@
     OpUDotAccSatKHR = 4454,
     OpSUDotAccSat = 4455,
     OpSUDotAccSatKHR = 4455,
+    OpTypeCooperativeMatrixKHR = 4456,
+    OpCooperativeMatrixLoadKHR = 4457,
+    OpCooperativeMatrixStoreKHR = 4458,
+    OpCooperativeMatrixMulAddKHR = 4459,
+    OpCooperativeMatrixLengthKHR = 4460,
     OpTypeRayQueryKHR = 4472,
     OpRayQueryInitializeKHR = 4473,
     OpRayQueryTerminateKHR = 4474,
@@ -1656,6 +1804,10 @@
     OpImageBoxFilterQCOM = 4481,
     OpImageBlockMatchSSDQCOM = 4482,
     OpImageBlockMatchSADQCOM = 4483,
+    OpImageBlockMatchWindowSSDQCOM = 4500,
+    OpImageBlockMatchWindowSADQCOM = 4501,
+    OpImageBlockMatchGatherSSDQCOM = 4502,
+    OpImageBlockMatchGatherSADQCOM = 4503,
     OpGroupIAddNonUniformAMD = 5000,
     OpGroupFAddNonUniformAMD = 5001,
     OpGroupFMinNonUniformAMD = 5002,
@@ -1667,6 +1819,11 @@
     OpFragmentMaskFetchAMD = 5011,
     OpFragmentFetchAMD = 5012,
     OpReadClockKHR = 5056,
+    OpFinalizeNodePayloadsAMDX = 5075,
+    OpFinishWritingNodePayloadAMDX = 5078,
+    OpInitializeNodePayloadsAMDX = 5090,
+    OpGroupNonUniformQuadAllKHR = 5110,
+    OpGroupNonUniformQuadAnyKHR = 5111,
     OpHitObjectRecordHitMotionNV = 5249,
     OpHitObjectRecordHitWithIndexMotionNV = 5250,
     OpHitObjectRecordMissMotionNV = 5251,
@@ -1705,6 +1862,8 @@
     OpSetMeshOutputsEXT = 5295,
     OpGroupNonUniformPartitionNV = 5296,
     OpWritePackedPrimitiveIndices4x8NV = 5299,
+    OpFetchMicroTriangleVertexPositionNV = 5300,
+    OpFetchMicroTriangleVertexBarycentricNV = 5301,
     OpReportIntersectionKHR = 5334,
     OpReportIntersectionNV = 5334,
     OpIgnoreIntersectionNV = 5335,
@@ -1733,6 +1892,7 @@
     OpConvertUToSampledImageNV = 5395,
     OpConvertSampledImageToUNV = 5396,
     OpSamplerImageAddressingModeNV = 5397,
+    OpRawAccessChainNV = 5398,
     OpSubgroupShuffleINTEL = 5571,
     OpSubgroupShuffleDownINTEL = 5572,
     OpSubgroupShuffleUpINTEL = 5573,
@@ -1974,6 +2134,7 @@
     OpTypeStructContinuedINTEL = 6090,
     OpConstantCompositeContinuedINTEL = 6091,
     OpSpecConstantCompositeContinuedINTEL = 6092,
+    OpCompositeConstructContinuedINTEL = 6096,
     OpConvertFToBF16INTEL = 6116,
     OpConvertBF16ToFINTEL = 6117,
     OpControlBarrierArriveINTEL = 6142,
@@ -1986,6 +2147,8 @@
     OpGroupLogicalAndKHR = 6406,
     OpGroupLogicalOrKHR = 6407,
     OpGroupLogicalXorKHR = 6408,
+    OpMaskedGatherINTEL = 6428,
+    OpMaskedScatterINTEL = 6429,
     OpMax = 0x7fffffff,
 };
 
@@ -2363,6 +2526,11 @@
     case OpSDotAccSat: *hasResult = true; *hasResultType = true; break;
     case OpUDotAccSat: *hasResult = true; *hasResultType = true; break;
     case OpSUDotAccSat: *hasResult = true; *hasResultType = true; break;
+    case OpTypeCooperativeMatrixKHR: *hasResult = true; *hasResultType = false; break;
+    case OpCooperativeMatrixLoadKHR: *hasResult = true; *hasResultType = true; break;
+    case OpCooperativeMatrixStoreKHR: *hasResult = false; *hasResultType = false; break;
+    case OpCooperativeMatrixMulAddKHR: *hasResult = true; *hasResultType = true; break;
+    case OpCooperativeMatrixLengthKHR: *hasResult = true; *hasResultType = true; break;
     case OpTypeRayQueryKHR: *hasResult = true; *hasResultType = false; break;
     case OpRayQueryInitializeKHR: *hasResult = false; *hasResultType = false; break;
     case OpRayQueryTerminateKHR: *hasResult = false; *hasResultType = false; break;
@@ -2374,6 +2542,10 @@
     case OpImageBoxFilterQCOM: *hasResult = true; *hasResultType = true; break;
     case OpImageBlockMatchSSDQCOM: *hasResult = true; *hasResultType = true; break;
     case OpImageBlockMatchSADQCOM: *hasResult = true; *hasResultType = true; break;
+    case OpImageBlockMatchWindowSSDQCOM: *hasResult = true; *hasResultType = true; break;
+    case OpImageBlockMatchWindowSADQCOM: *hasResult = true; *hasResultType = true; break;
+    case OpImageBlockMatchGatherSSDQCOM: *hasResult = true; *hasResultType = true; break;
+    case OpImageBlockMatchGatherSADQCOM: *hasResult = true; *hasResultType = true; break;
     case OpGroupIAddNonUniformAMD: *hasResult = true; *hasResultType = true; break;
     case OpGroupFAddNonUniformAMD: *hasResult = true; *hasResultType = true; break;
     case OpGroupFMinNonUniformAMD: *hasResult = true; *hasResultType = true; break;
@@ -2385,6 +2557,11 @@
     case OpFragmentMaskFetchAMD: *hasResult = true; *hasResultType = true; break;
     case OpFragmentFetchAMD: *hasResult = true; *hasResultType = true; break;
     case OpReadClockKHR: *hasResult = true; *hasResultType = true; break;
+    case OpFinalizeNodePayloadsAMDX: *hasResult = false; *hasResultType = false; break;
+    case OpFinishWritingNodePayloadAMDX: *hasResult = true; *hasResultType = true; break;
+    case OpInitializeNodePayloadsAMDX: *hasResult = false; *hasResultType = false; break;
+    case OpGroupNonUniformQuadAllKHR: *hasResult = true; *hasResultType = true; break;
+    case OpGroupNonUniformQuadAnyKHR: *hasResult = true; *hasResultType = true; break;
     case OpHitObjectRecordHitMotionNV: *hasResult = false; *hasResultType = false; break;
     case OpHitObjectRecordHitWithIndexMotionNV: *hasResult = false; *hasResultType = false; break;
     case OpHitObjectRecordMissMotionNV: *hasResult = false; *hasResultType = false; break;
@@ -2423,6 +2600,8 @@
     case OpSetMeshOutputsEXT: *hasResult = false; *hasResultType = false; break;
     case OpGroupNonUniformPartitionNV: *hasResult = true; *hasResultType = true; break;
     case OpWritePackedPrimitiveIndices4x8NV: *hasResult = false; *hasResultType = false; break;
+    case OpFetchMicroTriangleVertexPositionNV: *hasResult = true; *hasResultType = true; break;
+    case OpFetchMicroTriangleVertexBarycentricNV: *hasResult = true; *hasResultType = true; break;
     case OpReportIntersectionNV: *hasResult = true; *hasResultType = true; break;
     case OpIgnoreIntersectionNV: *hasResult = false; *hasResultType = false; break;
     case OpTerminateRayNV: *hasResult = false; *hasResultType = false; break;
@@ -2448,6 +2627,7 @@
     case OpConvertUToSampledImageNV: *hasResult = true; *hasResultType = true; break;
     case OpConvertSampledImageToUNV: *hasResult = true; *hasResultType = true; break;
     case OpSamplerImageAddressingModeNV: *hasResult = false; *hasResultType = false; break;
+    case OpRawAccessChainNV: *hasResult = true; *hasResultType = true; break;
     case OpSubgroupShuffleINTEL: *hasResult = true; *hasResultType = true; break;
     case OpSubgroupShuffleDownINTEL: *hasResult = true; *hasResultType = true; break;
     case OpSubgroupShuffleUpINTEL: *hasResult = true; *hasResultType = true; break;
@@ -2687,6 +2867,7 @@
     case OpTypeStructContinuedINTEL: *hasResult = false; *hasResultType = false; break;
     case OpConstantCompositeContinuedINTEL: *hasResult = false; *hasResultType = false; break;
     case OpSpecConstantCompositeContinuedINTEL: *hasResult = false; *hasResultType = false; break;
+    case OpCompositeConstructContinuedINTEL: *hasResult = true; *hasResultType = true; break;
     case OpConvertFToBF16INTEL: *hasResult = true; *hasResultType = true; break;
     case OpConvertBF16ToFINTEL: *hasResult = true; *hasResultType = true; break;
     case OpControlBarrierArriveINTEL: *hasResult = false; *hasResultType = false; break;
@@ -2699,6 +2880,8 @@
     case OpGroupLogicalAndKHR: *hasResult = true; *hasResultType = true; break;
     case OpGroupLogicalOrKHR: *hasResult = true; *hasResultType = true; break;
     case OpGroupLogicalXorKHR: *hasResult = true; *hasResultType = true; break;
+    case OpMaskedGatherINTEL: *hasResult = true; *hasResultType = true; break;
+    case OpMaskedScatterINTEL: *hasResult = false; *hasResultType = false; break;
     }
 }
 #endif /* SPV_ENABLE_UTILITY_CODE */
@@ -2745,6 +2928,14 @@
 inline FragmentShadingRateMask operator&(FragmentShadingRateMask a, FragmentShadingRateMask b) { return FragmentShadingRateMask(unsigned(a) & unsigned(b)); }
 inline FragmentShadingRateMask operator^(FragmentShadingRateMask a, FragmentShadingRateMask b) { return FragmentShadingRateMask(unsigned(a) ^ unsigned(b)); }
 inline FragmentShadingRateMask operator~(FragmentShadingRateMask a) { return FragmentShadingRateMask(~unsigned(a)); }
+inline CooperativeMatrixOperandsMask operator|(CooperativeMatrixOperandsMask a, CooperativeMatrixOperandsMask b) { return CooperativeMatrixOperandsMask(unsigned(a) | unsigned(b)); }
+inline CooperativeMatrixOperandsMask operator&(CooperativeMatrixOperandsMask a, CooperativeMatrixOperandsMask b) { return CooperativeMatrixOperandsMask(unsigned(a) & unsigned(b)); }
+inline CooperativeMatrixOperandsMask operator^(CooperativeMatrixOperandsMask a, CooperativeMatrixOperandsMask b) { return CooperativeMatrixOperandsMask(unsigned(a) ^ unsigned(b)); }
+inline CooperativeMatrixOperandsMask operator~(CooperativeMatrixOperandsMask a) { return CooperativeMatrixOperandsMask(~unsigned(a)); }
+inline RawAccessChainOperandsMask operator|(RawAccessChainOperandsMask a, RawAccessChainOperandsMask b) { return RawAccessChainOperandsMask(unsigned(a) | unsigned(b)); }
+inline RawAccessChainOperandsMask operator&(RawAccessChainOperandsMask a, RawAccessChainOperandsMask b) { return RawAccessChainOperandsMask(unsigned(a) & unsigned(b)); }
+inline RawAccessChainOperandsMask operator^(RawAccessChainOperandsMask a, RawAccessChainOperandsMask b) { return RawAccessChainOperandsMask(unsigned(a) ^ unsigned(b)); }
+inline RawAccessChainOperandsMask operator~(RawAccessChainOperandsMask a) { return RawAccessChainOperandsMask(~unsigned(a)); }
 
 }  // end namespace spv
 
diff --git a/third_party/SPIRV-Headers/include/spirv/unified1/spirv.hpp11 b/third_party/SPIRV-Headers/include/spirv/unified1/spirv.hpp11
index 5b643ae..d6b4fb7 100644
--- a/third_party/SPIRV-Headers/include/spirv/unified1/spirv.hpp11
+++ b/third_party/SPIRV-Headers/include/spirv/unified1/spirv.hpp11
@@ -1,4 +1,4 @@
-// Copyright (c) 2014-2020 The Khronos Group Inc.
+// Copyright (c) 2014-2024 The Khronos Group Inc.
 // 
 // Permission is hereby granted, free of charge, to any person obtaining a copy
 // of this software and/or associated documentation files (the "Materials"),
@@ -69,6 +69,11 @@
     HLSL = 5,
     CPP_for_OpenCL = 6,
     SYCL = 7,
+    HERO_C = 8,
+    NZSL = 9,
+    WGSL = 10,
+    Slang = 11,
+    Zig = 12,
     Max = 0x7fffffff,
 };
 
@@ -168,12 +173,19 @@
     RoundingModeRTZ = 4463,
     EarlyAndLateFragmentTestsAMD = 5017,
     StencilRefReplacingEXT = 5027,
+    CoalescingAMDX = 5069,
+    MaxNodeRecursionAMDX = 5071,
+    StaticNumWorkgroupsAMDX = 5072,
+    ShaderIndexAMDX = 5073,
+    MaxNumWorkgroupsAMDX = 5077,
     StencilRefUnchangedFrontAMD = 5079,
     StencilRefGreaterFrontAMD = 5080,
     StencilRefLessFrontAMD = 5081,
     StencilRefUnchangedBackAMD = 5082,
     StencilRefGreaterBackAMD = 5083,
     StencilRefLessBackAMD = 5084,
+    QuadDerivativesKHR = 5088,
+    RequireFullQuadsKHR = 5089,
     OutputLinesEXT = 5269,
     OutputLinesNV = 5269,
     OutputPrimitivesEXT = 5270,
@@ -198,9 +210,14 @@
     NoGlobalOffsetINTEL = 5895,
     NumSIMDWorkitemsINTEL = 5896,
     SchedulerTargetFmaxMhzINTEL = 5903,
+    MaximallyReconvergesKHR = 6023,
+    FPFastMathDefault = 6028,
     StreamingInterfaceINTEL = 6154,
     RegisterMapInterfaceINTEL = 6160,
     NamedBarrierCountINTEL = 6417,
+    MaximumRegistersINTEL = 6461,
+    MaximumRegistersIdINTEL = 6462,
+    NamedMaximumRegistersINTEL = 6463,
     Max = 0x7fffffff,
 };
 
@@ -219,6 +236,8 @@
     Image = 11,
     StorageBuffer = 12,
     TileImageEXT = 4172,
+    NodePayloadAMDX = 5068,
+    NodeOutputPayloadAMDX = 5076,
     CallableDataKHR = 5328,
     CallableDataNV = 5328,
     IncomingCallableDataKHR = 5329,
@@ -356,6 +375,8 @@
     Float = 14,
     UnormInt24 = 15,
     UnormInt101010_2 = 16,
+    UnsignedIntRaw10EXT = 19,
+    UnsignedIntRaw12EXT = 20,
     Max = 0x7fffffff,
 };
 
@@ -413,8 +434,11 @@
     NSZ = 2,
     AllowRecip = 3,
     Fast = 4,
+    AllowContract = 16,
     AllowContractFastINTEL = 16,
+    AllowReassoc = 17,
     AllowReassocINTEL = 17,
+    AllowTransform = 18,
     Max = 0x7fffffff,
 };
 
@@ -425,8 +449,11 @@
     NSZ = 0x00000004,
     AllowRecip = 0x00000008,
     Fast = 0x00000010,
+    AllowContract = 0x00010000,
     AllowContractFastINTEL = 0x00010000,
+    AllowReassoc = 0x00020000,
     AllowReassocINTEL = 0x00020000,
+    AllowTransform = 0x00040000,
 };
 
 enum class FPRoundingMode : unsigned {
@@ -516,7 +543,12 @@
     NoUnsignedWrap = 4470,
     WeightTextureQCOM = 4487,
     BlockMatchTextureQCOM = 4488,
+    BlockMatchSamplerQCOM = 4499,
     ExplicitInterpAMD = 4999,
+    NodeSharesPayloadLimitsWithAMDX = 5019,
+    NodeMaxPayloadsAMDX = 5020,
+    TrackFinishWritingAMDX = 5078,
+    PayloadNodeNameAMDX = 5091,
     OverrideCoverageNV = 5248,
     PassthroughNV = 5250,
     ViewportRelativeNV = 5252,
@@ -566,6 +598,9 @@
     MergeINTEL = 5834,
     BankBitsINTEL = 5835,
     ForcePow2DepthINTEL = 5836,
+    StridesizeINTEL = 5883,
+    WordsizeINTEL = 5884,
+    TrueDualPortINTEL = 5885,
     BurstCoalesceINTEL = 5899,
     CacheSizeINTEL = 5900,
     DontStaticallyCoalesceINTEL = 5901,
@@ -584,6 +619,8 @@
     SingleElementVectorINTEL = 6085,
     VectorComputeCallableFunctionINTEL = 6087,
     MediaBlockIOINTEL = 6140,
+    StallFreeINTEL = 6151,
+    FPMaxErrorDecorationINTEL = 6170,
     LatencyControlLabelINTEL = 6172,
     LatencyControlConstraintINTEL = 6173,
     ConduitKernelArgumentINTEL = 6175,
@@ -595,6 +632,11 @@
     MMHostInterfaceMaxBurstINTEL = 6181,
     MMHostInterfaceWaitRequestINTEL = 6182,
     StableKernelArgumentINTEL = 6183,
+    HostAccessINTEL = 6188,
+    InitModeINTEL = 6190,
+    ImplementInRegisterMapINTEL = 6191,
+    CacheControlLoadINTEL = 6442,
+    CacheControlStoreINTEL = 6443,
     Max = 0x7fffffff,
 };
 
@@ -670,6 +712,8 @@
     BaryCoordSmoothSampleAMD = 4997,
     BaryCoordPullModelAMD = 4998,
     FragStencilRefEXT = 5014,
+    CoalescedInputCountAMDX = 5021,
+    ShaderIndexAMDX = 5073,
     ViewportMaskNV = 5253,
     SecondaryPositionNV = 5257,
     SecondaryViewportMaskNV = 5258,
@@ -723,6 +767,8 @@
     HitKindNV = 5333,
     CurrentRayTimeNV = 5334,
     HitTriangleVertexPositionsKHR = 5335,
+    HitMicroTriangleVertexPositionsNV = 5337,
+    HitMicroTriangleVertexBarycentricsNV = 5344,
     IncomingRayFlagsKHR = 5351,
     IncomingRayFlagsNV = 5351,
     RayGeometryIndexKHR = 5352,
@@ -730,6 +776,8 @@
     SMCountNV = 5375,
     WarpIDNV = 5376,
     SMIDNV = 5377,
+    HitKindFrontFacingMicroTriangleNV = 5405,
+    HitKindBackFacingMicroTriangleNV = 5406,
     CullMaskKHR = 6021,
     Max = 0x7fffffff,
 };
@@ -1031,6 +1079,7 @@
     TextureSampleWeightedQCOM = 4484,
     TextureBoxFilterQCOM = 4485,
     TextureBlockMatchQCOM = 4486,
+    TextureBlockMatch2QCOM = 4498,
     Float16ImageAMD = 5008,
     ImageGatherBiasLodAMD = 5009,
     FragmentMaskAMD = 5010,
@@ -1038,6 +1087,8 @@
     ImageReadWriteLodAMD = 5015,
     Int64ImageEXT = 5016,
     ShaderClockKHR = 5055,
+    ShaderEnqueueAMDX = 5067,
+    QuadControlKHR = 5087,
     SampleMaskOverrideCoverageNV = 5249,
     GeometryShaderPassthroughNV = 5251,
     ShaderViewportIndexLayerEXT = 5254,
@@ -1097,10 +1148,14 @@
     FragmentShaderPixelInterlockEXT = 5378,
     DemoteToHelperInvocation = 5379,
     DemoteToHelperInvocationEXT = 5379,
+    DisplacementMicromapNV = 5380,
     RayTracingOpacityMicromapEXT = 5381,
     ShaderInvocationReorderNV = 5383,
     BindlessTextureNV = 5390,
     RayQueryPositionFetchKHR = 5391,
+    AtomicFloat16VectorNV = 5404,
+    RayTracingDisplacementMicromapNV = 5409,
+    RawAccessChainsNV = 5414,
     SubgroupShuffleINTEL = 5568,
     SubgroupBufferBlockIOINTEL = 5569,
     SubgroupImageBlockIOINTEL = 5570,
@@ -1152,20 +1207,29 @@
     DotProduct = 6019,
     DotProductKHR = 6019,
     RayCullMaskKHR = 6020,
+    CooperativeMatrixKHR = 6022,
     BitInstructions = 6025,
     GroupNonUniformRotateKHR = 6026,
+    FloatControls2 = 6029,
     AtomicFloat32AddEXT = 6033,
     AtomicFloat64AddEXT = 6034,
-    LongConstantCompositeINTEL = 6089,
+    LongCompositesINTEL = 6089,
     OptNoneINTEL = 6094,
     AtomicFloat16AddEXT = 6095,
     DebugInfoModuleINTEL = 6114,
     BFloat16ConversionINTEL = 6115,
     SplitBarrierINTEL = 6141,
+    FPGAClusterAttributesV2INTEL = 6150,
     FPGAKernelAttributesv2INTEL = 6161,
+    FPMaxErrorINTEL = 6169,
     FPGALatencyControlINTEL = 6171,
     FPGAArgumentInterfacesINTEL = 6174,
+    GlobalVariableHostAccessINTEL = 6187,
+    GlobalVariableFPGADecorationsINTEL = 6189,
     GroupUniformArithmeticKHR = 6400,
+    MaskedGatherScatterINTEL = 6427,
+    CacheControlsINTEL = 6441,
+    RegisterLimitsINTEL = 6460,
     Max = 0x7fffffff,
 };
 
@@ -1272,6 +1336,85 @@
     Max = 0x7fffffff,
 };
 
+enum class CooperativeMatrixOperandsShift : unsigned {
+    MatrixASignedComponentsKHR = 0,
+    MatrixBSignedComponentsKHR = 1,
+    MatrixCSignedComponentsKHR = 2,
+    MatrixResultSignedComponentsKHR = 3,
+    SaturatingAccumulationKHR = 4,
+    Max = 0x7fffffff,
+};
+
+enum class CooperativeMatrixOperandsMask : unsigned {
+    MaskNone = 0,
+    MatrixASignedComponentsKHR = 0x00000001,
+    MatrixBSignedComponentsKHR = 0x00000002,
+    MatrixCSignedComponentsKHR = 0x00000004,
+    MatrixResultSignedComponentsKHR = 0x00000008,
+    SaturatingAccumulationKHR = 0x00000010,
+};
+
+enum class CooperativeMatrixLayout : unsigned {
+    RowMajorKHR = 0,
+    ColumnMajorKHR = 1,
+    Max = 0x7fffffff,
+};
+
+enum class CooperativeMatrixUse : unsigned {
+    MatrixAKHR = 0,
+    MatrixBKHR = 1,
+    MatrixAccumulatorKHR = 2,
+    Max = 0x7fffffff,
+};
+
+enum class InitializationModeQualifier : unsigned {
+    InitOnDeviceReprogramINTEL = 0,
+    InitOnDeviceResetINTEL = 1,
+    Max = 0x7fffffff,
+};
+
+enum class HostAccessQualifier : unsigned {
+    NoneINTEL = 0,
+    ReadINTEL = 1,
+    WriteINTEL = 2,
+    ReadWriteINTEL = 3,
+    Max = 0x7fffffff,
+};
+
+enum class LoadCacheControl : unsigned {
+    UncachedINTEL = 0,
+    CachedINTEL = 1,
+    StreamingINTEL = 2,
+    InvalidateAfterReadINTEL = 3,
+    ConstCachedINTEL = 4,
+    Max = 0x7fffffff,
+};
+
+enum class StoreCacheControl : unsigned {
+    UncachedINTEL = 0,
+    WriteThroughINTEL = 1,
+    WriteBackINTEL = 2,
+    StreamingINTEL = 3,
+    Max = 0x7fffffff,
+};
+
+enum class NamedMaximumNumberOfRegisters : unsigned {
+    AutoINTEL = 0,
+    Max = 0x7fffffff,
+};
+
+enum class RawAccessChainOperandsShift : unsigned {
+    RobustnessPerComponentNV = 0,
+    RobustnessPerElementNV = 1,
+    Max = 0x7fffffff,
+};
+
+enum class RawAccessChainOperandsMask : unsigned {
+    MaskNone = 0,
+    RobustnessPerComponentNV = 0x00000001,
+    RobustnessPerElementNV = 0x00000002,
+};
+
 enum class Op : unsigned {
     OpNop = 0,
     OpUndef = 1,
@@ -1645,6 +1788,11 @@
     OpUDotAccSatKHR = 4454,
     OpSUDotAccSat = 4455,
     OpSUDotAccSatKHR = 4455,
+    OpTypeCooperativeMatrixKHR = 4456,
+    OpCooperativeMatrixLoadKHR = 4457,
+    OpCooperativeMatrixStoreKHR = 4458,
+    OpCooperativeMatrixMulAddKHR = 4459,
+    OpCooperativeMatrixLengthKHR = 4460,
     OpTypeRayQueryKHR = 4472,
     OpRayQueryInitializeKHR = 4473,
     OpRayQueryTerminateKHR = 4474,
@@ -1656,6 +1804,10 @@
     OpImageBoxFilterQCOM = 4481,
     OpImageBlockMatchSSDQCOM = 4482,
     OpImageBlockMatchSADQCOM = 4483,
+    OpImageBlockMatchWindowSSDQCOM = 4500,
+    OpImageBlockMatchWindowSADQCOM = 4501,
+    OpImageBlockMatchGatherSSDQCOM = 4502,
+    OpImageBlockMatchGatherSADQCOM = 4503,
     OpGroupIAddNonUniformAMD = 5000,
     OpGroupFAddNonUniformAMD = 5001,
     OpGroupFMinNonUniformAMD = 5002,
@@ -1667,6 +1819,11 @@
     OpFragmentMaskFetchAMD = 5011,
     OpFragmentFetchAMD = 5012,
     OpReadClockKHR = 5056,
+    OpFinalizeNodePayloadsAMDX = 5075,
+    OpFinishWritingNodePayloadAMDX = 5078,
+    OpInitializeNodePayloadsAMDX = 5090,
+    OpGroupNonUniformQuadAllKHR = 5110,
+    OpGroupNonUniformQuadAnyKHR = 5111,
     OpHitObjectRecordHitMotionNV = 5249,
     OpHitObjectRecordHitWithIndexMotionNV = 5250,
     OpHitObjectRecordMissMotionNV = 5251,
@@ -1705,6 +1862,8 @@
     OpSetMeshOutputsEXT = 5295,
     OpGroupNonUniformPartitionNV = 5296,
     OpWritePackedPrimitiveIndices4x8NV = 5299,
+    OpFetchMicroTriangleVertexPositionNV = 5300,
+    OpFetchMicroTriangleVertexBarycentricNV = 5301,
     OpReportIntersectionKHR = 5334,
     OpReportIntersectionNV = 5334,
     OpIgnoreIntersectionNV = 5335,
@@ -1733,6 +1892,7 @@
     OpConvertUToSampledImageNV = 5395,
     OpConvertSampledImageToUNV = 5396,
     OpSamplerImageAddressingModeNV = 5397,
+    OpRawAccessChainNV = 5398,
     OpSubgroupShuffleINTEL = 5571,
     OpSubgroupShuffleDownINTEL = 5572,
     OpSubgroupShuffleUpINTEL = 5573,
@@ -1974,6 +2134,7 @@
     OpTypeStructContinuedINTEL = 6090,
     OpConstantCompositeContinuedINTEL = 6091,
     OpSpecConstantCompositeContinuedINTEL = 6092,
+    OpCompositeConstructContinuedINTEL = 6096,
     OpConvertFToBF16INTEL = 6116,
     OpConvertBF16ToFINTEL = 6117,
     OpControlBarrierArriveINTEL = 6142,
@@ -1986,6 +2147,8 @@
     OpGroupLogicalAndKHR = 6406,
     OpGroupLogicalOrKHR = 6407,
     OpGroupLogicalXorKHR = 6408,
+    OpMaskedGatherINTEL = 6428,
+    OpMaskedScatterINTEL = 6429,
     Max = 0x7fffffff,
 };
 
@@ -2363,6 +2526,11 @@
     case Op::OpSDotAccSat: *hasResult = true; *hasResultType = true; break;
     case Op::OpUDotAccSat: *hasResult = true; *hasResultType = true; break;
     case Op::OpSUDotAccSat: *hasResult = true; *hasResultType = true; break;
+    case Op::OpTypeCooperativeMatrixKHR: *hasResult = true; *hasResultType = false; break;
+    case Op::OpCooperativeMatrixLoadKHR: *hasResult = true; *hasResultType = true; break;
+    case Op::OpCooperativeMatrixStoreKHR: *hasResult = false; *hasResultType = false; break;
+    case Op::OpCooperativeMatrixMulAddKHR: *hasResult = true; *hasResultType = true; break;
+    case Op::OpCooperativeMatrixLengthKHR: *hasResult = true; *hasResultType = true; break;
     case Op::OpTypeRayQueryKHR: *hasResult = true; *hasResultType = false; break;
     case Op::OpRayQueryInitializeKHR: *hasResult = false; *hasResultType = false; break;
     case Op::OpRayQueryTerminateKHR: *hasResult = false; *hasResultType = false; break;
@@ -2374,6 +2542,10 @@
     case Op::OpImageBoxFilterQCOM: *hasResult = true; *hasResultType = true; break;
     case Op::OpImageBlockMatchSSDQCOM: *hasResult = true; *hasResultType = true; break;
     case Op::OpImageBlockMatchSADQCOM: *hasResult = true; *hasResultType = true; break;
+    case Op::OpImageBlockMatchWindowSSDQCOM: *hasResult = true; *hasResultType = true; break;
+    case Op::OpImageBlockMatchWindowSADQCOM: *hasResult = true; *hasResultType = true; break;
+    case Op::OpImageBlockMatchGatherSSDQCOM: *hasResult = true; *hasResultType = true; break;
+    case Op::OpImageBlockMatchGatherSADQCOM: *hasResult = true; *hasResultType = true; break;
     case Op::OpGroupIAddNonUniformAMD: *hasResult = true; *hasResultType = true; break;
     case Op::OpGroupFAddNonUniformAMD: *hasResult = true; *hasResultType = true; break;
     case Op::OpGroupFMinNonUniformAMD: *hasResult = true; *hasResultType = true; break;
@@ -2385,6 +2557,11 @@
     case Op::OpFragmentMaskFetchAMD: *hasResult = true; *hasResultType = true; break;
     case Op::OpFragmentFetchAMD: *hasResult = true; *hasResultType = true; break;
     case Op::OpReadClockKHR: *hasResult = true; *hasResultType = true; break;
+    case Op::OpFinalizeNodePayloadsAMDX: *hasResult = false; *hasResultType = false; break;
+    case Op::OpFinishWritingNodePayloadAMDX: *hasResult = true; *hasResultType = true; break;
+    case Op::OpInitializeNodePayloadsAMDX: *hasResult = false; *hasResultType = false; break;
+    case Op::OpGroupNonUniformQuadAllKHR: *hasResult = true; *hasResultType = true; break;
+    case Op::OpGroupNonUniformQuadAnyKHR: *hasResult = true; *hasResultType = true; break;
     case Op::OpHitObjectRecordHitMotionNV: *hasResult = false; *hasResultType = false; break;
     case Op::OpHitObjectRecordHitWithIndexMotionNV: *hasResult = false; *hasResultType = false; break;
     case Op::OpHitObjectRecordMissMotionNV: *hasResult = false; *hasResultType = false; break;
@@ -2423,6 +2600,8 @@
     case Op::OpSetMeshOutputsEXT: *hasResult = false; *hasResultType = false; break;
     case Op::OpGroupNonUniformPartitionNV: *hasResult = true; *hasResultType = true; break;
     case Op::OpWritePackedPrimitiveIndices4x8NV: *hasResult = false; *hasResultType = false; break;
+    case Op::OpFetchMicroTriangleVertexPositionNV: *hasResult = true; *hasResultType = true; break;
+    case Op::OpFetchMicroTriangleVertexBarycentricNV: *hasResult = true; *hasResultType = true; break;
     case Op::OpReportIntersectionNV: *hasResult = true; *hasResultType = true; break;
     case Op::OpIgnoreIntersectionNV: *hasResult = false; *hasResultType = false; break;
     case Op::OpTerminateRayNV: *hasResult = false; *hasResultType = false; break;
@@ -2448,6 +2627,7 @@
     case Op::OpConvertUToSampledImageNV: *hasResult = true; *hasResultType = true; break;
     case Op::OpConvertSampledImageToUNV: *hasResult = true; *hasResultType = true; break;
     case Op::OpSamplerImageAddressingModeNV: *hasResult = false; *hasResultType = false; break;
+    case Op::OpRawAccessChainNV: *hasResult = true; *hasResultType = true; break;
     case Op::OpSubgroupShuffleINTEL: *hasResult = true; *hasResultType = true; break;
     case Op::OpSubgroupShuffleDownINTEL: *hasResult = true; *hasResultType = true; break;
     case Op::OpSubgroupShuffleUpINTEL: *hasResult = true; *hasResultType = true; break;
@@ -2687,6 +2867,7 @@
     case Op::OpTypeStructContinuedINTEL: *hasResult = false; *hasResultType = false; break;
     case Op::OpConstantCompositeContinuedINTEL: *hasResult = false; *hasResultType = false; break;
     case Op::OpSpecConstantCompositeContinuedINTEL: *hasResult = false; *hasResultType = false; break;
+    case Op::OpCompositeConstructContinuedINTEL: *hasResult = true; *hasResultType = true; break;
     case Op::OpConvertFToBF16INTEL: *hasResult = true; *hasResultType = true; break;
     case Op::OpConvertBF16ToFINTEL: *hasResult = true; *hasResultType = true; break;
     case Op::OpControlBarrierArriveINTEL: *hasResult = false; *hasResultType = false; break;
@@ -2699,52 +2880,62 @@
     case Op::OpGroupLogicalAndKHR: *hasResult = true; *hasResultType = true; break;
     case Op::OpGroupLogicalOrKHR: *hasResult = true; *hasResultType = true; break;
     case Op::OpGroupLogicalXorKHR: *hasResult = true; *hasResultType = true; break;
+    case Op::OpMaskedGatherINTEL: *hasResult = true; *hasResultType = true; break;
+    case Op::OpMaskedScatterINTEL: *hasResult = false; *hasResultType = false; break;
     }
 }
 #endif /* SPV_ENABLE_UTILITY_CODE */
 
 // Overload bitwise operators for mask bit combining
 
-inline ImageOperandsMask operator|(ImageOperandsMask a, ImageOperandsMask b) { return ImageOperandsMask(unsigned(a) | unsigned(b)); }
-inline ImageOperandsMask operator&(ImageOperandsMask a, ImageOperandsMask b) { return ImageOperandsMask(unsigned(a) & unsigned(b)); }
-inline ImageOperandsMask operator^(ImageOperandsMask a, ImageOperandsMask b) { return ImageOperandsMask(unsigned(a) ^ unsigned(b)); }
-inline ImageOperandsMask operator~(ImageOperandsMask a) { return ImageOperandsMask(~unsigned(a)); }
-inline FPFastMathModeMask operator|(FPFastMathModeMask a, FPFastMathModeMask b) { return FPFastMathModeMask(unsigned(a) | unsigned(b)); }
-inline FPFastMathModeMask operator&(FPFastMathModeMask a, FPFastMathModeMask b) { return FPFastMathModeMask(unsigned(a) & unsigned(b)); }
-inline FPFastMathModeMask operator^(FPFastMathModeMask a, FPFastMathModeMask b) { return FPFastMathModeMask(unsigned(a) ^ unsigned(b)); }
-inline FPFastMathModeMask operator~(FPFastMathModeMask a) { return FPFastMathModeMask(~unsigned(a)); }
-inline SelectionControlMask operator|(SelectionControlMask a, SelectionControlMask b) { return SelectionControlMask(unsigned(a) | unsigned(b)); }
-inline SelectionControlMask operator&(SelectionControlMask a, SelectionControlMask b) { return SelectionControlMask(unsigned(a) & unsigned(b)); }
-inline SelectionControlMask operator^(SelectionControlMask a, SelectionControlMask b) { return SelectionControlMask(unsigned(a) ^ unsigned(b)); }
-inline SelectionControlMask operator~(SelectionControlMask a) { return SelectionControlMask(~unsigned(a)); }
-inline LoopControlMask operator|(LoopControlMask a, LoopControlMask b) { return LoopControlMask(unsigned(a) | unsigned(b)); }
-inline LoopControlMask operator&(LoopControlMask a, LoopControlMask b) { return LoopControlMask(unsigned(a) & unsigned(b)); }
-inline LoopControlMask operator^(LoopControlMask a, LoopControlMask b) { return LoopControlMask(unsigned(a) ^ unsigned(b)); }
-inline LoopControlMask operator~(LoopControlMask a) { return LoopControlMask(~unsigned(a)); }
-inline FunctionControlMask operator|(FunctionControlMask a, FunctionControlMask b) { return FunctionControlMask(unsigned(a) | unsigned(b)); }
-inline FunctionControlMask operator&(FunctionControlMask a, FunctionControlMask b) { return FunctionControlMask(unsigned(a) & unsigned(b)); }
-inline FunctionControlMask operator^(FunctionControlMask a, FunctionControlMask b) { return FunctionControlMask(unsigned(a) ^ unsigned(b)); }
-inline FunctionControlMask operator~(FunctionControlMask a) { return FunctionControlMask(~unsigned(a)); }
-inline MemorySemanticsMask operator|(MemorySemanticsMask a, MemorySemanticsMask b) { return MemorySemanticsMask(unsigned(a) | unsigned(b)); }
-inline MemorySemanticsMask operator&(MemorySemanticsMask a, MemorySemanticsMask b) { return MemorySemanticsMask(unsigned(a) & unsigned(b)); }
-inline MemorySemanticsMask operator^(MemorySemanticsMask a, MemorySemanticsMask b) { return MemorySemanticsMask(unsigned(a) ^ unsigned(b)); }
-inline MemorySemanticsMask operator~(MemorySemanticsMask a) { return MemorySemanticsMask(~unsigned(a)); }
-inline MemoryAccessMask operator|(MemoryAccessMask a, MemoryAccessMask b) { return MemoryAccessMask(unsigned(a) | unsigned(b)); }
-inline MemoryAccessMask operator&(MemoryAccessMask a, MemoryAccessMask b) { return MemoryAccessMask(unsigned(a) & unsigned(b)); }
-inline MemoryAccessMask operator^(MemoryAccessMask a, MemoryAccessMask b) { return MemoryAccessMask(unsigned(a) ^ unsigned(b)); }
-inline MemoryAccessMask operator~(MemoryAccessMask a) { return MemoryAccessMask(~unsigned(a)); }
-inline KernelProfilingInfoMask operator|(KernelProfilingInfoMask a, KernelProfilingInfoMask b) { return KernelProfilingInfoMask(unsigned(a) | unsigned(b)); }
-inline KernelProfilingInfoMask operator&(KernelProfilingInfoMask a, KernelProfilingInfoMask b) { return KernelProfilingInfoMask(unsigned(a) & unsigned(b)); }
-inline KernelProfilingInfoMask operator^(KernelProfilingInfoMask a, KernelProfilingInfoMask b) { return KernelProfilingInfoMask(unsigned(a) ^ unsigned(b)); }
-inline KernelProfilingInfoMask operator~(KernelProfilingInfoMask a) { return KernelProfilingInfoMask(~unsigned(a)); }
-inline RayFlagsMask operator|(RayFlagsMask a, RayFlagsMask b) { return RayFlagsMask(unsigned(a) | unsigned(b)); }
-inline RayFlagsMask operator&(RayFlagsMask a, RayFlagsMask b) { return RayFlagsMask(unsigned(a) & unsigned(b)); }
-inline RayFlagsMask operator^(RayFlagsMask a, RayFlagsMask b) { return RayFlagsMask(unsigned(a) ^ unsigned(b)); }
-inline RayFlagsMask operator~(RayFlagsMask a) { return RayFlagsMask(~unsigned(a)); }
-inline FragmentShadingRateMask operator|(FragmentShadingRateMask a, FragmentShadingRateMask b) { return FragmentShadingRateMask(unsigned(a) | unsigned(b)); }
-inline FragmentShadingRateMask operator&(FragmentShadingRateMask a, FragmentShadingRateMask b) { return FragmentShadingRateMask(unsigned(a) & unsigned(b)); }
-inline FragmentShadingRateMask operator^(FragmentShadingRateMask a, FragmentShadingRateMask b) { return FragmentShadingRateMask(unsigned(a) ^ unsigned(b)); }
-inline FragmentShadingRateMask operator~(FragmentShadingRateMask a) { return FragmentShadingRateMask(~unsigned(a)); }
+constexpr ImageOperandsMask operator|(ImageOperandsMask a, ImageOperandsMask b) { return ImageOperandsMask(unsigned(a) | unsigned(b)); }
+constexpr ImageOperandsMask operator&(ImageOperandsMask a, ImageOperandsMask b) { return ImageOperandsMask(unsigned(a) & unsigned(b)); }
+constexpr ImageOperandsMask operator^(ImageOperandsMask a, ImageOperandsMask b) { return ImageOperandsMask(unsigned(a) ^ unsigned(b)); }
+constexpr ImageOperandsMask operator~(ImageOperandsMask a) { return ImageOperandsMask(~unsigned(a)); }
+constexpr FPFastMathModeMask operator|(FPFastMathModeMask a, FPFastMathModeMask b) { return FPFastMathModeMask(unsigned(a) | unsigned(b)); }
+constexpr FPFastMathModeMask operator&(FPFastMathModeMask a, FPFastMathModeMask b) { return FPFastMathModeMask(unsigned(a) & unsigned(b)); }
+constexpr FPFastMathModeMask operator^(FPFastMathModeMask a, FPFastMathModeMask b) { return FPFastMathModeMask(unsigned(a) ^ unsigned(b)); }
+constexpr FPFastMathModeMask operator~(FPFastMathModeMask a) { return FPFastMathModeMask(~unsigned(a)); }
+constexpr SelectionControlMask operator|(SelectionControlMask a, SelectionControlMask b) { return SelectionControlMask(unsigned(a) | unsigned(b)); }
+constexpr SelectionControlMask operator&(SelectionControlMask a, SelectionControlMask b) { return SelectionControlMask(unsigned(a) & unsigned(b)); }
+constexpr SelectionControlMask operator^(SelectionControlMask a, SelectionControlMask b) { return SelectionControlMask(unsigned(a) ^ unsigned(b)); }
+constexpr SelectionControlMask operator~(SelectionControlMask a) { return SelectionControlMask(~unsigned(a)); }
+constexpr LoopControlMask operator|(LoopControlMask a, LoopControlMask b) { return LoopControlMask(unsigned(a) | unsigned(b)); }
+constexpr LoopControlMask operator&(LoopControlMask a, LoopControlMask b) { return LoopControlMask(unsigned(a) & unsigned(b)); }
+constexpr LoopControlMask operator^(LoopControlMask a, LoopControlMask b) { return LoopControlMask(unsigned(a) ^ unsigned(b)); }
+constexpr LoopControlMask operator~(LoopControlMask a) { return LoopControlMask(~unsigned(a)); }
+constexpr FunctionControlMask operator|(FunctionControlMask a, FunctionControlMask b) { return FunctionControlMask(unsigned(a) | unsigned(b)); }
+constexpr FunctionControlMask operator&(FunctionControlMask a, FunctionControlMask b) { return FunctionControlMask(unsigned(a) & unsigned(b)); }
+constexpr FunctionControlMask operator^(FunctionControlMask a, FunctionControlMask b) { return FunctionControlMask(unsigned(a) ^ unsigned(b)); }
+constexpr FunctionControlMask operator~(FunctionControlMask a) { return FunctionControlMask(~unsigned(a)); }
+constexpr MemorySemanticsMask operator|(MemorySemanticsMask a, MemorySemanticsMask b) { return MemorySemanticsMask(unsigned(a) | unsigned(b)); }
+constexpr MemorySemanticsMask operator&(MemorySemanticsMask a, MemorySemanticsMask b) { return MemorySemanticsMask(unsigned(a) & unsigned(b)); }
+constexpr MemorySemanticsMask operator^(MemorySemanticsMask a, MemorySemanticsMask b) { return MemorySemanticsMask(unsigned(a) ^ unsigned(b)); }
+constexpr MemorySemanticsMask operator~(MemorySemanticsMask a) { return MemorySemanticsMask(~unsigned(a)); }
+constexpr MemoryAccessMask operator|(MemoryAccessMask a, MemoryAccessMask b) { return MemoryAccessMask(unsigned(a) | unsigned(b)); }
+constexpr MemoryAccessMask operator&(MemoryAccessMask a, MemoryAccessMask b) { return MemoryAccessMask(unsigned(a) & unsigned(b)); }
+constexpr MemoryAccessMask operator^(MemoryAccessMask a, MemoryAccessMask b) { return MemoryAccessMask(unsigned(a) ^ unsigned(b)); }
+constexpr MemoryAccessMask operator~(MemoryAccessMask a) { return MemoryAccessMask(~unsigned(a)); }
+constexpr KernelProfilingInfoMask operator|(KernelProfilingInfoMask a, KernelProfilingInfoMask b) { return KernelProfilingInfoMask(unsigned(a) | unsigned(b)); }
+constexpr KernelProfilingInfoMask operator&(KernelProfilingInfoMask a, KernelProfilingInfoMask b) { return KernelProfilingInfoMask(unsigned(a) & unsigned(b)); }
+constexpr KernelProfilingInfoMask operator^(KernelProfilingInfoMask a, KernelProfilingInfoMask b) { return KernelProfilingInfoMask(unsigned(a) ^ unsigned(b)); }
+constexpr KernelProfilingInfoMask operator~(KernelProfilingInfoMask a) { return KernelProfilingInfoMask(~unsigned(a)); }
+constexpr RayFlagsMask operator|(RayFlagsMask a, RayFlagsMask b) { return RayFlagsMask(unsigned(a) | unsigned(b)); }
+constexpr RayFlagsMask operator&(RayFlagsMask a, RayFlagsMask b) { return RayFlagsMask(unsigned(a) & unsigned(b)); }
+constexpr RayFlagsMask operator^(RayFlagsMask a, RayFlagsMask b) { return RayFlagsMask(unsigned(a) ^ unsigned(b)); }
+constexpr RayFlagsMask operator~(RayFlagsMask a) { return RayFlagsMask(~unsigned(a)); }
+constexpr FragmentShadingRateMask operator|(FragmentShadingRateMask a, FragmentShadingRateMask b) { return FragmentShadingRateMask(unsigned(a) | unsigned(b)); }
+constexpr FragmentShadingRateMask operator&(FragmentShadingRateMask a, FragmentShadingRateMask b) { return FragmentShadingRateMask(unsigned(a) & unsigned(b)); }
+constexpr FragmentShadingRateMask operator^(FragmentShadingRateMask a, FragmentShadingRateMask b) { return FragmentShadingRateMask(unsigned(a) ^ unsigned(b)); }
+constexpr FragmentShadingRateMask operator~(FragmentShadingRateMask a) { return FragmentShadingRateMask(~unsigned(a)); }
+constexpr CooperativeMatrixOperandsMask operator|(CooperativeMatrixOperandsMask a, CooperativeMatrixOperandsMask b) { return CooperativeMatrixOperandsMask(unsigned(a) | unsigned(b)); }
+constexpr CooperativeMatrixOperandsMask operator&(CooperativeMatrixOperandsMask a, CooperativeMatrixOperandsMask b) { return CooperativeMatrixOperandsMask(unsigned(a) & unsigned(b)); }
+constexpr CooperativeMatrixOperandsMask operator^(CooperativeMatrixOperandsMask a, CooperativeMatrixOperandsMask b) { return CooperativeMatrixOperandsMask(unsigned(a) ^ unsigned(b)); }
+constexpr CooperativeMatrixOperandsMask operator~(CooperativeMatrixOperandsMask a) { return CooperativeMatrixOperandsMask(~unsigned(a)); }
+constexpr RawAccessChainOperandsMask operator|(RawAccessChainOperandsMask a, RawAccessChainOperandsMask b) { return RawAccessChainOperandsMask(unsigned(a) | unsigned(b)); }
+constexpr RawAccessChainOperandsMask operator&(RawAccessChainOperandsMask a, RawAccessChainOperandsMask b) { return RawAccessChainOperandsMask(unsigned(a) & unsigned(b)); }
+constexpr RawAccessChainOperandsMask operator^(RawAccessChainOperandsMask a, RawAccessChainOperandsMask b) { return RawAccessChainOperandsMask(unsigned(a) ^ unsigned(b)); }
+constexpr RawAccessChainOperandsMask operator~(RawAccessChainOperandsMask a) { return RawAccessChainOperandsMask(~unsigned(a)); }
 
 }  // end namespace spv
 
diff --git a/third_party/SPIRV-Headers/include/spirv/unified1/spirv.json b/third_party/SPIRV-Headers/include/spirv/unified1/spirv.json
index 908fe05..204a9c5 100644
--- a/third_party/SPIRV-Headers/include/spirv/unified1/spirv.json
+++ b/third_party/SPIRV-Headers/include/spirv/unified1/spirv.json
@@ -6,7 +6,7 @@
             "Comment":
             [
                 [
-                    "Copyright (c) 2014-2020 The Khronos Group Inc.",
+                    "Copyright (c) 2014-2024 The Khronos Group Inc.",
                     "",
                     "Permission is hereby granted, free of charge, to any person obtaining a copy",
                     "of this software and/or associated documentation files (the \"Materials\"),",
@@ -75,7 +75,12 @@
                     "OpenCL_CPP": 4,
                     "HLSL": 5,
                     "CPP_for_OpenCL": 6,
-                    "SYCL": 7
+                    "SYCL": 7,
+                    "HERO_C": 8,
+                    "NZSL": 9,
+                    "WGSL": 10,
+                    "Slang": 11,
+                    "Zig": 12
                 }
             },
             {
@@ -187,12 +192,19 @@
                     "RoundingModeRTZ": 4463,
                     "EarlyAndLateFragmentTestsAMD": 5017,
                     "StencilRefReplacingEXT": 5027,
+                    "CoalescingAMDX": 5069,
+                    "MaxNodeRecursionAMDX": 5071,
+                    "StaticNumWorkgroupsAMDX": 5072,
+                    "ShaderIndexAMDX": 5073,
+                    "MaxNumWorkgroupsAMDX": 5077,
                     "StencilRefUnchangedFrontAMD": 5079,
                     "StencilRefGreaterFrontAMD": 5080,
                     "StencilRefLessFrontAMD": 5081,
                     "StencilRefUnchangedBackAMD": 5082,
                     "StencilRefGreaterBackAMD": 5083,
                     "StencilRefLessBackAMD": 5084,
+                    "QuadDerivativesKHR": 5088,
+                    "RequireFullQuadsKHR": 5089,
                     "OutputLinesEXT": 5269,
                     "OutputLinesNV": 5269,
                     "OutputPrimitivesEXT": 5270,
@@ -217,9 +229,14 @@
                     "NoGlobalOffsetINTEL": 5895,
                     "NumSIMDWorkitemsINTEL": 5896,
                     "SchedulerTargetFmaxMhzINTEL": 5903,
+                    "MaximallyReconvergesKHR": 6023,
+                    "FPFastMathDefault": 6028,
                     "StreamingInterfaceINTEL": 6154,
                     "RegisterMapInterfaceINTEL": 6160,
-                    "NamedBarrierCountINTEL": 6417
+                    "NamedBarrierCountINTEL": 6417,
+                    "MaximumRegistersINTEL": 6461,
+                    "MaximumRegistersIdINTEL": 6462,
+                    "NamedMaximumRegistersINTEL": 6463
                 }
             },
             {
@@ -241,6 +258,8 @@
                     "Image": 11,
                     "StorageBuffer": 12,
                     "TileImageEXT": 4172,
+                    "NodePayloadAMDX": 5068,
+                    "NodeOutputPayloadAMDX": 5076,
                     "CallableDataKHR": 5328,
                     "CallableDataNV": 5328,
                     "IncomingCallableDataKHR": 5329,
@@ -395,7 +414,9 @@
                     "HalfFloat": 13,
                     "Float": 14,
                     "UnormInt24": 15,
-                    "UnormInt101010_2": 16
+                    "UnormInt101010_2": 16,
+                    "UnsignedIntRaw10EXT": 19,
+                    "UnsignedIntRaw12EXT": 20
                 }
             },
             {
@@ -435,8 +456,11 @@
                     "NSZ": 2,
                     "AllowRecip": 3,
                     "Fast": 4,
+                    "AllowContract": 16,
                     "AllowContractFastINTEL": 16,
-                    "AllowReassocINTEL": 17
+                    "AllowReassoc": 17,
+                    "AllowReassocINTEL": 17,
+                    "AllowTransform": 18
                 }
             },
             {
@@ -542,7 +566,12 @@
                     "NoUnsignedWrap": 4470,
                     "WeightTextureQCOM": 4487,
                     "BlockMatchTextureQCOM": 4488,
+                    "BlockMatchSamplerQCOM": 4499,
                     "ExplicitInterpAMD": 4999,
+                    "NodeSharesPayloadLimitsWithAMDX": 5019,
+                    "NodeMaxPayloadsAMDX": 5020,
+                    "TrackFinishWritingAMDX": 5078,
+                    "PayloadNodeNameAMDX": 5091,
                     "OverrideCoverageNV": 5248,
                     "PassthroughNV": 5250,
                     "ViewportRelativeNV": 5252,
@@ -592,6 +621,9 @@
                     "MergeINTEL": 5834,
                     "BankBitsINTEL": 5835,
                     "ForcePow2DepthINTEL": 5836,
+                    "StridesizeINTEL": 5883,
+                    "WordsizeINTEL": 5884,
+                    "TrueDualPortINTEL": 5885,
                     "BurstCoalesceINTEL": 5899,
                     "CacheSizeINTEL": 5900,
                     "DontStaticallyCoalesceINTEL": 5901,
@@ -610,6 +642,8 @@
                     "SingleElementVectorINTEL": 6085,
                     "VectorComputeCallableFunctionINTEL": 6087,
                     "MediaBlockIOINTEL": 6140,
+                    "StallFreeINTEL": 6151,
+                    "FPMaxErrorDecorationINTEL": 6170,
                     "LatencyControlLabelINTEL": 6172,
                     "LatencyControlConstraintINTEL": 6173,
                     "ConduitKernelArgumentINTEL": 6175,
@@ -620,7 +654,12 @@
                     "MMHostInterfaceReadWriteModeINTEL": 6180,
                     "MMHostInterfaceMaxBurstINTEL": 6181,
                     "MMHostInterfaceWaitRequestINTEL": 6182,
-                    "StableKernelArgumentINTEL": 6183
+                    "StableKernelArgumentINTEL": 6183,
+                    "HostAccessINTEL": 6188,
+                    "InitModeINTEL": 6190,
+                    "ImplementInRegisterMapINTEL": 6191,
+                    "CacheControlLoadINTEL": 6442,
+                    "CacheControlStoreINTEL": 6443
                 }
             },
             {
@@ -699,6 +738,8 @@
                     "BaryCoordSmoothSampleAMD": 4997,
                     "BaryCoordPullModelAMD": 4998,
                     "FragStencilRefEXT": 5014,
+                    "CoalescedInputCountAMDX": 5021,
+                    "ShaderIndexAMDX": 5073,
                     "ViewportMaskNV": 5253,
                     "SecondaryPositionNV": 5257,
                     "SecondaryViewportMaskNV": 5258,
@@ -752,6 +793,8 @@
                     "HitKindNV": 5333,
                     "CurrentRayTimeNV": 5334,
                     "HitTriangleVertexPositionsKHR": 5335,
+                    "HitMicroTriangleVertexPositionsNV": 5337,
+                    "HitMicroTriangleVertexBarycentricsNV": 5344,
                     "IncomingRayFlagsKHR": 5351,
                     "IncomingRayFlagsNV": 5351,
                     "RayGeometryIndexKHR": 5352,
@@ -759,6 +802,8 @@
                     "SMCountNV": 5375,
                     "WarpIDNV": 5376,
                     "SMIDNV": 5377,
+                    "HitKindFrontFacingMicroTriangleNV": 5405,
+                    "HitKindBackFacingMicroTriangleNV": 5406,
                     "CullMaskKHR": 6021
                 }
             },
@@ -1011,6 +1056,7 @@
                     "TextureSampleWeightedQCOM": 4484,
                     "TextureBoxFilterQCOM": 4485,
                     "TextureBlockMatchQCOM": 4486,
+                    "TextureBlockMatch2QCOM": 4498,
                     "Float16ImageAMD": 5008,
                     "ImageGatherBiasLodAMD": 5009,
                     "FragmentMaskAMD": 5010,
@@ -1018,6 +1064,8 @@
                     "ImageReadWriteLodAMD": 5015,
                     "Int64ImageEXT": 5016,
                     "ShaderClockKHR": 5055,
+                    "ShaderEnqueueAMDX": 5067,
+                    "QuadControlKHR": 5087,
                     "SampleMaskOverrideCoverageNV": 5249,
                     "GeometryShaderPassthroughNV": 5251,
                     "ShaderViewportIndexLayerEXT": 5254,
@@ -1077,10 +1125,14 @@
                     "FragmentShaderPixelInterlockEXT": 5378,
                     "DemoteToHelperInvocation": 5379,
                     "DemoteToHelperInvocationEXT": 5379,
+                    "DisplacementMicromapNV": 5380,
                     "RayTracingOpacityMicromapEXT": 5381,
                     "ShaderInvocationReorderNV": 5383,
                     "BindlessTextureNV": 5390,
                     "RayQueryPositionFetchKHR": 5391,
+                    "AtomicFloat16VectorNV": 5404,
+                    "RayTracingDisplacementMicromapNV": 5409,
+                    "RawAccessChainsNV": 5414,
                     "SubgroupShuffleINTEL": 5568,
                     "SubgroupBufferBlockIOINTEL": 5569,
                     "SubgroupImageBlockIOINTEL": 5570,
@@ -1132,20 +1184,29 @@
                     "DotProduct": 6019,
                     "DotProductKHR": 6019,
                     "RayCullMaskKHR": 6020,
+                    "CooperativeMatrixKHR": 6022,
                     "BitInstructions": 6025,
                     "GroupNonUniformRotateKHR": 6026,
+                    "FloatControls2": 6029,
                     "AtomicFloat32AddEXT": 6033,
                     "AtomicFloat64AddEXT": 6034,
-                    "LongConstantCompositeINTEL": 6089,
+                    "LongCompositesINTEL": 6089,
                     "OptNoneINTEL": 6094,
                     "AtomicFloat16AddEXT": 6095,
                     "DebugInfoModuleINTEL": 6114,
                     "BFloat16ConversionINTEL": 6115,
                     "SplitBarrierINTEL": 6141,
+                    "FPGAClusterAttributesV2INTEL": 6150,
                     "FPGAKernelAttributesv2INTEL": 6161,
+                    "FPMaxErrorINTEL": 6169,
                     "FPGALatencyControlINTEL": 6171,
                     "FPGAArgumentInterfacesINTEL": 6174,
-                    "GroupUniformArithmeticKHR": 6400
+                    "GlobalVariableHostAccessINTEL": 6187,
+                    "GlobalVariableFPGADecorationsINTEL": 6189,
+                    "GroupUniformArithmeticKHR": 6400,
+                    "MaskedGatherScatterINTEL": 6427,
+                    "CacheControlsINTEL": 6441,
+                    "RegisterLimitsINTEL": 6460
                 }
             },
             {
@@ -1259,6 +1320,97 @@
                 }
             },
             {
+                "Name": "CooperativeMatrixOperands",
+                "Type": "Bit",
+                "Values":
+                {
+                    "MatrixASignedComponentsKHR": 0,
+                    "MatrixBSignedComponentsKHR": 1,
+                    "MatrixCSignedComponentsKHR": 2,
+                    "MatrixResultSignedComponentsKHR": 3,
+                    "SaturatingAccumulationKHR": 4
+                }
+            },
+            {
+                "Name": "CooperativeMatrixLayout",
+                "Type": "Value",
+                "Values":
+                {
+                    "RowMajorKHR": 0,
+                    "ColumnMajorKHR": 1
+                }
+            },
+            {
+                "Name": "CooperativeMatrixUse",
+                "Type": "Value",
+                "Values":
+                {
+                    "MatrixAKHR": 0,
+                    "MatrixBKHR": 1,
+                    "MatrixAccumulatorKHR": 2
+                }
+            },
+            {
+                "Name": "InitializationModeQualifier",
+                "Type": "Value",
+                "Values":
+                {
+                    "InitOnDeviceReprogramINTEL": 0,
+                    "InitOnDeviceResetINTEL": 1
+                }
+            },
+            {
+                "Name": "HostAccessQualifier",
+                "Type": "Value",
+                "Values":
+                {
+                    "NoneINTEL": 0,
+                    "ReadINTEL": 1,
+                    "WriteINTEL": 2,
+                    "ReadWriteINTEL": 3
+                }
+            },
+            {
+                "Name": "LoadCacheControl",
+                "Type": "Value",
+                "Values":
+                {
+                    "UncachedINTEL": 0,
+                    "CachedINTEL": 1,
+                    "StreamingINTEL": 2,
+                    "InvalidateAfterReadINTEL": 3,
+                    "ConstCachedINTEL": 4
+                }
+            },
+            {
+                "Name": "StoreCacheControl",
+                "Type": "Value",
+                "Values":
+                {
+                    "UncachedINTEL": 0,
+                    "WriteThroughINTEL": 1,
+                    "WriteBackINTEL": 2,
+                    "StreamingINTEL": 3
+                }
+            },
+            {
+                "Name": "NamedMaximumNumberOfRegisters",
+                "Type": "Value",
+                "Values":
+                {
+                    "AutoINTEL": 0
+                }
+            },
+            {
+                "Name": "RawAccessChainOperands",
+                "Type": "Bit",
+                "Values":
+                {
+                    "RobustnessPerComponentNV": 0,
+                    "RobustnessPerElementNV": 1
+                }
+            },
+            {
                 "Name": "Op",
                 "Type": "Value",
                 "Values":
@@ -1635,6 +1787,11 @@
                     "OpUDotAccSatKHR": 4454,
                     "OpSUDotAccSat": 4455,
                     "OpSUDotAccSatKHR": 4455,
+                    "OpTypeCooperativeMatrixKHR": 4456,
+                    "OpCooperativeMatrixLoadKHR": 4457,
+                    "OpCooperativeMatrixStoreKHR": 4458,
+                    "OpCooperativeMatrixMulAddKHR": 4459,
+                    "OpCooperativeMatrixLengthKHR": 4460,
                     "OpTypeRayQueryKHR": 4472,
                     "OpRayQueryInitializeKHR": 4473,
                     "OpRayQueryTerminateKHR": 4474,
@@ -1646,6 +1803,10 @@
                     "OpImageBoxFilterQCOM": 4481,
                     "OpImageBlockMatchSSDQCOM": 4482,
                     "OpImageBlockMatchSADQCOM": 4483,
+                    "OpImageBlockMatchWindowSSDQCOM": 4500,
+                    "OpImageBlockMatchWindowSADQCOM": 4501,
+                    "OpImageBlockMatchGatherSSDQCOM": 4502,
+                    "OpImageBlockMatchGatherSADQCOM": 4503,
                     "OpGroupIAddNonUniformAMD": 5000,
                     "OpGroupFAddNonUniformAMD": 5001,
                     "OpGroupFMinNonUniformAMD": 5002,
@@ -1657,6 +1818,11 @@
                     "OpFragmentMaskFetchAMD": 5011,
                     "OpFragmentFetchAMD": 5012,
                     "OpReadClockKHR": 5056,
+                    "OpFinalizeNodePayloadsAMDX": 5075,
+                    "OpFinishWritingNodePayloadAMDX": 5078,
+                    "OpInitializeNodePayloadsAMDX": 5090,
+                    "OpGroupNonUniformQuadAllKHR": 5110,
+                    "OpGroupNonUniformQuadAnyKHR": 5111,
                     "OpHitObjectRecordHitMotionNV": 5249,
                     "OpHitObjectRecordHitWithIndexMotionNV": 5250,
                     "OpHitObjectRecordMissMotionNV": 5251,
@@ -1695,6 +1861,8 @@
                     "OpSetMeshOutputsEXT": 5295,
                     "OpGroupNonUniformPartitionNV": 5296,
                     "OpWritePackedPrimitiveIndices4x8NV": 5299,
+                    "OpFetchMicroTriangleVertexPositionNV": 5300,
+                    "OpFetchMicroTriangleVertexBarycentricNV": 5301,
                     "OpReportIntersectionKHR": 5334,
                     "OpReportIntersectionNV": 5334,
                     "OpIgnoreIntersectionNV": 5335,
@@ -1723,6 +1891,7 @@
                     "OpConvertUToSampledImageNV": 5395,
                     "OpConvertSampledImageToUNV": 5396,
                     "OpSamplerImageAddressingModeNV": 5397,
+                    "OpRawAccessChainNV": 5398,
                     "OpSubgroupShuffleINTEL": 5571,
                     "OpSubgroupShuffleDownINTEL": 5572,
                     "OpSubgroupShuffleUpINTEL": 5573,
@@ -1964,6 +2133,7 @@
                     "OpTypeStructContinuedINTEL": 6090,
                     "OpConstantCompositeContinuedINTEL": 6091,
                     "OpSpecConstantCompositeContinuedINTEL": 6092,
+                    "OpCompositeConstructContinuedINTEL": 6096,
                     "OpConvertFToBF16INTEL": 6116,
                     "OpConvertBF16ToFINTEL": 6117,
                     "OpControlBarrierArriveINTEL": 6142,
@@ -1975,7 +2145,9 @@
                     "OpGroupBitwiseXorKHR": 6405,
                     "OpGroupLogicalAndKHR": 6406,
                     "OpGroupLogicalOrKHR": 6407,
-                    "OpGroupLogicalXorKHR": 6408
+                    "OpGroupLogicalXorKHR": 6408,
+                    "OpMaskedGatherINTEL": 6428,
+                    "OpMaskedScatterINTEL": 6429
                 }
             }
         ]
diff --git a/third_party/SPIRV-Headers/include/spirv/unified1/spirv.lua b/third_party/SPIRV-Headers/include/spirv/unified1/spirv.lua
index 7e64fa6..6dcd1b8 100644
--- a/third_party/SPIRV-Headers/include/spirv/unified1/spirv.lua
+++ b/third_party/SPIRV-Headers/include/spirv/unified1/spirv.lua
@@ -1,4 +1,4 @@
--- Copyright (c) 2014-2020 The Khronos Group Inc.
+-- Copyright (c) 2014-2024 The Khronos Group Inc.
 -- 
 -- Permission is hereby granted, free of charge, to any person obtaining a copy
 -- of this software and/or associated documentation files (the "Materials"),
@@ -60,6 +60,11 @@
         HLSL = 5,
         CPP_for_OpenCL = 6,
         SYCL = 7,
+        HERO_C = 8,
+        NZSL = 9,
+        WGSL = 10,
+        Slang = 11,
+        Zig = 12,
     },
 
     ExecutionModel = {
@@ -155,12 +160,19 @@
         RoundingModeRTZ = 4463,
         EarlyAndLateFragmentTestsAMD = 5017,
         StencilRefReplacingEXT = 5027,
+        CoalescingAMDX = 5069,
+        MaxNodeRecursionAMDX = 5071,
+        StaticNumWorkgroupsAMDX = 5072,
+        ShaderIndexAMDX = 5073,
+        MaxNumWorkgroupsAMDX = 5077,
         StencilRefUnchangedFrontAMD = 5079,
         StencilRefGreaterFrontAMD = 5080,
         StencilRefLessFrontAMD = 5081,
         StencilRefUnchangedBackAMD = 5082,
         StencilRefGreaterBackAMD = 5083,
         StencilRefLessBackAMD = 5084,
+        QuadDerivativesKHR = 5088,
+        RequireFullQuadsKHR = 5089,
         OutputLinesEXT = 5269,
         OutputLinesNV = 5269,
         OutputPrimitivesEXT = 5270,
@@ -185,9 +197,14 @@
         NoGlobalOffsetINTEL = 5895,
         NumSIMDWorkitemsINTEL = 5896,
         SchedulerTargetFmaxMhzINTEL = 5903,
+        MaximallyReconvergesKHR = 6023,
+        FPFastMathDefault = 6028,
         StreamingInterfaceINTEL = 6154,
         RegisterMapInterfaceINTEL = 6160,
         NamedBarrierCountINTEL = 6417,
+        MaximumRegistersINTEL = 6461,
+        MaximumRegistersIdINTEL = 6462,
+        NamedMaximumRegistersINTEL = 6463,
     },
 
     StorageClass = {
@@ -205,6 +222,8 @@
         Image = 11,
         StorageBuffer = 12,
         TileImageEXT = 4172,
+        NodePayloadAMDX = 5068,
+        NodeOutputPayloadAMDX = 5076,
         CallableDataKHR = 5328,
         CallableDataNV = 5328,
         IncomingCallableDataKHR = 5329,
@@ -336,6 +355,8 @@
         Float = 14,
         UnormInt24 = 15,
         UnormInt101010_2 = 16,
+        UnsignedIntRaw10EXT = 19,
+        UnsignedIntRaw12EXT = 20,
     },
 
     ImageOperandsShift = {
@@ -391,8 +412,11 @@
         NSZ = 2,
         AllowRecip = 3,
         Fast = 4,
+        AllowContract = 16,
         AllowContractFastINTEL = 16,
+        AllowReassoc = 17,
         AllowReassocINTEL = 17,
+        AllowTransform = 18,
     },
 
     FPFastMathModeMask = {
@@ -402,8 +426,11 @@
         NSZ = 0x00000004,
         AllowRecip = 0x00000008,
         Fast = 0x00000010,
+        AllowContract = 0x00010000,
         AllowContractFastINTEL = 0x00010000,
+        AllowReassoc = 0x00020000,
         AllowReassocINTEL = 0x00020000,
+        AllowTransform = 0x00040000,
     },
 
     FPRoundingMode = {
@@ -489,7 +516,12 @@
         NoUnsignedWrap = 4470,
         WeightTextureQCOM = 4487,
         BlockMatchTextureQCOM = 4488,
+        BlockMatchSamplerQCOM = 4499,
         ExplicitInterpAMD = 4999,
+        NodeSharesPayloadLimitsWithAMDX = 5019,
+        NodeMaxPayloadsAMDX = 5020,
+        TrackFinishWritingAMDX = 5078,
+        PayloadNodeNameAMDX = 5091,
         OverrideCoverageNV = 5248,
         PassthroughNV = 5250,
         ViewportRelativeNV = 5252,
@@ -539,6 +571,9 @@
         MergeINTEL = 5834,
         BankBitsINTEL = 5835,
         ForcePow2DepthINTEL = 5836,
+        StridesizeINTEL = 5883,
+        WordsizeINTEL = 5884,
+        TrueDualPortINTEL = 5885,
         BurstCoalesceINTEL = 5899,
         CacheSizeINTEL = 5900,
         DontStaticallyCoalesceINTEL = 5901,
@@ -557,6 +592,8 @@
         SingleElementVectorINTEL = 6085,
         VectorComputeCallableFunctionINTEL = 6087,
         MediaBlockIOINTEL = 6140,
+        StallFreeINTEL = 6151,
+        FPMaxErrorDecorationINTEL = 6170,
         LatencyControlLabelINTEL = 6172,
         LatencyControlConstraintINTEL = 6173,
         ConduitKernelArgumentINTEL = 6175,
@@ -568,6 +605,11 @@
         MMHostInterfaceMaxBurstINTEL = 6181,
         MMHostInterfaceWaitRequestINTEL = 6182,
         StableKernelArgumentINTEL = 6183,
+        HostAccessINTEL = 6188,
+        InitModeINTEL = 6190,
+        ImplementInRegisterMapINTEL = 6191,
+        CacheControlLoadINTEL = 6442,
+        CacheControlStoreINTEL = 6443,
     },
 
     BuiltIn = {
@@ -642,6 +684,8 @@
         BaryCoordSmoothSampleAMD = 4997,
         BaryCoordPullModelAMD = 4998,
         FragStencilRefEXT = 5014,
+        CoalescedInputCountAMDX = 5021,
+        ShaderIndexAMDX = 5073,
         ViewportMaskNV = 5253,
         SecondaryPositionNV = 5257,
         SecondaryViewportMaskNV = 5258,
@@ -695,6 +739,8 @@
         HitKindNV = 5333,
         CurrentRayTimeNV = 5334,
         HitTriangleVertexPositionsKHR = 5335,
+        HitMicroTriangleVertexPositionsNV = 5337,
+        HitMicroTriangleVertexBarycentricsNV = 5344,
         IncomingRayFlagsKHR = 5351,
         IncomingRayFlagsNV = 5351,
         RayGeometryIndexKHR = 5352,
@@ -702,6 +748,8 @@
         SMCountNV = 5375,
         WarpIDNV = 5376,
         SMIDNV = 5377,
+        HitKindFrontFacingMicroTriangleNV = 5405,
+        HitKindBackFacingMicroTriangleNV = 5406,
         CullMaskKHR = 6021,
     },
 
@@ -993,6 +1041,7 @@
         TextureSampleWeightedQCOM = 4484,
         TextureBoxFilterQCOM = 4485,
         TextureBlockMatchQCOM = 4486,
+        TextureBlockMatch2QCOM = 4498,
         Float16ImageAMD = 5008,
         ImageGatherBiasLodAMD = 5009,
         FragmentMaskAMD = 5010,
@@ -1000,6 +1049,8 @@
         ImageReadWriteLodAMD = 5015,
         Int64ImageEXT = 5016,
         ShaderClockKHR = 5055,
+        ShaderEnqueueAMDX = 5067,
+        QuadControlKHR = 5087,
         SampleMaskOverrideCoverageNV = 5249,
         GeometryShaderPassthroughNV = 5251,
         ShaderViewportIndexLayerEXT = 5254,
@@ -1059,10 +1110,14 @@
         FragmentShaderPixelInterlockEXT = 5378,
         DemoteToHelperInvocation = 5379,
         DemoteToHelperInvocationEXT = 5379,
+        DisplacementMicromapNV = 5380,
         RayTracingOpacityMicromapEXT = 5381,
         ShaderInvocationReorderNV = 5383,
         BindlessTextureNV = 5390,
         RayQueryPositionFetchKHR = 5391,
+        AtomicFloat16VectorNV = 5404,
+        RayTracingDisplacementMicromapNV = 5409,
+        RawAccessChainsNV = 5414,
         SubgroupShuffleINTEL = 5568,
         SubgroupBufferBlockIOINTEL = 5569,
         SubgroupImageBlockIOINTEL = 5570,
@@ -1114,20 +1169,29 @@
         DotProduct = 6019,
         DotProductKHR = 6019,
         RayCullMaskKHR = 6020,
+        CooperativeMatrixKHR = 6022,
         BitInstructions = 6025,
         GroupNonUniformRotateKHR = 6026,
+        FloatControls2 = 6029,
         AtomicFloat32AddEXT = 6033,
         AtomicFloat64AddEXT = 6034,
-        LongConstantCompositeINTEL = 6089,
+        LongCompositesINTEL = 6089,
         OptNoneINTEL = 6094,
         AtomicFloat16AddEXT = 6095,
         DebugInfoModuleINTEL = 6114,
         BFloat16ConversionINTEL = 6115,
         SplitBarrierINTEL = 6141,
+        FPGAClusterAttributesV2INTEL = 6150,
         FPGAKernelAttributesv2INTEL = 6161,
+        FPMaxErrorINTEL = 6169,
         FPGALatencyControlINTEL = 6171,
         FPGAArgumentInterfacesINTEL = 6174,
+        GlobalVariableHostAccessINTEL = 6187,
+        GlobalVariableFPGADecorationsINTEL = 6189,
         GroupUniformArithmeticKHR = 6400,
+        MaskedGatherScatterINTEL = 6427,
+        CacheControlsINTEL = 6441,
+        RegisterLimitsINTEL = 6460,
     },
 
     RayFlagsShift = {
@@ -1223,6 +1287,76 @@
         PackedVectorFormat4x8BitKHR = 0,
     },
 
+    CooperativeMatrixOperandsShift = {
+        MatrixASignedComponentsKHR = 0,
+        MatrixBSignedComponentsKHR = 1,
+        MatrixCSignedComponentsKHR = 2,
+        MatrixResultSignedComponentsKHR = 3,
+        SaturatingAccumulationKHR = 4,
+    },
+
+    CooperativeMatrixOperandsMask = {
+        MaskNone = 0,
+        MatrixASignedComponentsKHR = 0x00000001,
+        MatrixBSignedComponentsKHR = 0x00000002,
+        MatrixCSignedComponentsKHR = 0x00000004,
+        MatrixResultSignedComponentsKHR = 0x00000008,
+        SaturatingAccumulationKHR = 0x00000010,
+    },
+
+    CooperativeMatrixLayout = {
+        RowMajorKHR = 0,
+        ColumnMajorKHR = 1,
+    },
+
+    CooperativeMatrixUse = {
+        MatrixAKHR = 0,
+        MatrixBKHR = 1,
+        MatrixAccumulatorKHR = 2,
+    },
+
+    InitializationModeQualifier = {
+        InitOnDeviceReprogramINTEL = 0,
+        InitOnDeviceResetINTEL = 1,
+    },
+
+    HostAccessQualifier = {
+        NoneINTEL = 0,
+        ReadINTEL = 1,
+        WriteINTEL = 2,
+        ReadWriteINTEL = 3,
+    },
+
+    LoadCacheControl = {
+        UncachedINTEL = 0,
+        CachedINTEL = 1,
+        StreamingINTEL = 2,
+        InvalidateAfterReadINTEL = 3,
+        ConstCachedINTEL = 4,
+    },
+
+    StoreCacheControl = {
+        UncachedINTEL = 0,
+        WriteThroughINTEL = 1,
+        WriteBackINTEL = 2,
+        StreamingINTEL = 3,
+    },
+
+    NamedMaximumNumberOfRegisters = {
+        AutoINTEL = 0,
+    },
+
+    RawAccessChainOperandsShift = {
+        RobustnessPerComponentNV = 0,
+        RobustnessPerElementNV = 1,
+    },
+
+    RawAccessChainOperandsMask = {
+        MaskNone = 0,
+        RobustnessPerComponentNV = 0x00000001,
+        RobustnessPerElementNV = 0x00000002,
+    },
+
     Op = {
         OpNop = 0,
         OpUndef = 1,
@@ -1596,6 +1730,11 @@
         OpUDotAccSatKHR = 4454,
         OpSUDotAccSat = 4455,
         OpSUDotAccSatKHR = 4455,
+        OpTypeCooperativeMatrixKHR = 4456,
+        OpCooperativeMatrixLoadKHR = 4457,
+        OpCooperativeMatrixStoreKHR = 4458,
+        OpCooperativeMatrixMulAddKHR = 4459,
+        OpCooperativeMatrixLengthKHR = 4460,
         OpTypeRayQueryKHR = 4472,
         OpRayQueryInitializeKHR = 4473,
         OpRayQueryTerminateKHR = 4474,
@@ -1607,6 +1746,10 @@
         OpImageBoxFilterQCOM = 4481,
         OpImageBlockMatchSSDQCOM = 4482,
         OpImageBlockMatchSADQCOM = 4483,
+        OpImageBlockMatchWindowSSDQCOM = 4500,
+        OpImageBlockMatchWindowSADQCOM = 4501,
+        OpImageBlockMatchGatherSSDQCOM = 4502,
+        OpImageBlockMatchGatherSADQCOM = 4503,
         OpGroupIAddNonUniformAMD = 5000,
         OpGroupFAddNonUniformAMD = 5001,
         OpGroupFMinNonUniformAMD = 5002,
@@ -1618,6 +1761,11 @@
         OpFragmentMaskFetchAMD = 5011,
         OpFragmentFetchAMD = 5012,
         OpReadClockKHR = 5056,
+        OpFinalizeNodePayloadsAMDX = 5075,
+        OpFinishWritingNodePayloadAMDX = 5078,
+        OpInitializeNodePayloadsAMDX = 5090,
+        OpGroupNonUniformQuadAllKHR = 5110,
+        OpGroupNonUniformQuadAnyKHR = 5111,
         OpHitObjectRecordHitMotionNV = 5249,
         OpHitObjectRecordHitWithIndexMotionNV = 5250,
         OpHitObjectRecordMissMotionNV = 5251,
@@ -1656,6 +1804,8 @@
         OpSetMeshOutputsEXT = 5295,
         OpGroupNonUniformPartitionNV = 5296,
         OpWritePackedPrimitiveIndices4x8NV = 5299,
+        OpFetchMicroTriangleVertexPositionNV = 5300,
+        OpFetchMicroTriangleVertexBarycentricNV = 5301,
         OpReportIntersectionKHR = 5334,
         OpReportIntersectionNV = 5334,
         OpIgnoreIntersectionNV = 5335,
@@ -1684,6 +1834,7 @@
         OpConvertUToSampledImageNV = 5395,
         OpConvertSampledImageToUNV = 5396,
         OpSamplerImageAddressingModeNV = 5397,
+        OpRawAccessChainNV = 5398,
         OpSubgroupShuffleINTEL = 5571,
         OpSubgroupShuffleDownINTEL = 5572,
         OpSubgroupShuffleUpINTEL = 5573,
@@ -1925,6 +2076,7 @@
         OpTypeStructContinuedINTEL = 6090,
         OpConstantCompositeContinuedINTEL = 6091,
         OpSpecConstantCompositeContinuedINTEL = 6092,
+        OpCompositeConstructContinuedINTEL = 6096,
         OpConvertFToBF16INTEL = 6116,
         OpConvertBF16ToFINTEL = 6117,
         OpControlBarrierArriveINTEL = 6142,
@@ -1937,6 +2089,8 @@
         OpGroupLogicalAndKHR = 6406,
         OpGroupLogicalOrKHR = 6407,
         OpGroupLogicalXorKHR = 6408,
+        OpMaskedGatherINTEL = 6428,
+        OpMaskedScatterINTEL = 6429,
     },
 
 }
diff --git a/third_party/SPIRV-Headers/include/spirv/unified1/spirv.py b/third_party/SPIRV-Headers/include/spirv/unified1/spirv.py
index 7a9e8ee..4b011cf 100644
--- a/third_party/SPIRV-Headers/include/spirv/unified1/spirv.py
+++ b/third_party/SPIRV-Headers/include/spirv/unified1/spirv.py
@@ -1,4 +1,4 @@
-# Copyright (c) 2014-2020 The Khronos Group Inc.
+# Copyright (c) 2014-2024 The Khronos Group Inc.
 # 
 # Permission is hereby granted, free of charge, to any person obtaining a copy
 # of this software and/or associated documentation files (the "Materials"),
@@ -60,6 +60,11 @@
         'HLSL' : 5,
         'CPP_for_OpenCL' : 6,
         'SYCL' : 7,
+        'HERO_C' : 8,
+        'NZSL' : 9,
+        'WGSL' : 10,
+        'Slang' : 11,
+        'Zig' : 12,
     },
 
     'ExecutionModel' : {
@@ -155,12 +160,19 @@
         'RoundingModeRTZ' : 4463,
         'EarlyAndLateFragmentTestsAMD' : 5017,
         'StencilRefReplacingEXT' : 5027,
+        'CoalescingAMDX' : 5069,
+        'MaxNodeRecursionAMDX' : 5071,
+        'StaticNumWorkgroupsAMDX' : 5072,
+        'ShaderIndexAMDX' : 5073,
+        'MaxNumWorkgroupsAMDX' : 5077,
         'StencilRefUnchangedFrontAMD' : 5079,
         'StencilRefGreaterFrontAMD' : 5080,
         'StencilRefLessFrontAMD' : 5081,
         'StencilRefUnchangedBackAMD' : 5082,
         'StencilRefGreaterBackAMD' : 5083,
         'StencilRefLessBackAMD' : 5084,
+        'QuadDerivativesKHR' : 5088,
+        'RequireFullQuadsKHR' : 5089,
         'OutputLinesEXT' : 5269,
         'OutputLinesNV' : 5269,
         'OutputPrimitivesEXT' : 5270,
@@ -185,9 +197,14 @@
         'NoGlobalOffsetINTEL' : 5895,
         'NumSIMDWorkitemsINTEL' : 5896,
         'SchedulerTargetFmaxMhzINTEL' : 5903,
+        'MaximallyReconvergesKHR' : 6023,
+        'FPFastMathDefault' : 6028,
         'StreamingInterfaceINTEL' : 6154,
         'RegisterMapInterfaceINTEL' : 6160,
         'NamedBarrierCountINTEL' : 6417,
+        'MaximumRegistersINTEL' : 6461,
+        'MaximumRegistersIdINTEL' : 6462,
+        'NamedMaximumRegistersINTEL' : 6463,
     },
 
     'StorageClass' : {
@@ -205,6 +222,8 @@
         'Image' : 11,
         'StorageBuffer' : 12,
         'TileImageEXT' : 4172,
+        'NodePayloadAMDX' : 5068,
+        'NodeOutputPayloadAMDX' : 5076,
         'CallableDataKHR' : 5328,
         'CallableDataNV' : 5328,
         'IncomingCallableDataKHR' : 5329,
@@ -336,6 +355,8 @@
         'Float' : 14,
         'UnormInt24' : 15,
         'UnormInt101010_2' : 16,
+        'UnsignedIntRaw10EXT' : 19,
+        'UnsignedIntRaw12EXT' : 20,
     },
 
     'ImageOperandsShift' : {
@@ -391,8 +412,11 @@
         'NSZ' : 2,
         'AllowRecip' : 3,
         'Fast' : 4,
+        'AllowContract' : 16,
         'AllowContractFastINTEL' : 16,
+        'AllowReassoc' : 17,
         'AllowReassocINTEL' : 17,
+        'AllowTransform' : 18,
     },
 
     'FPFastMathModeMask' : {
@@ -402,8 +426,11 @@
         'NSZ' : 0x00000004,
         'AllowRecip' : 0x00000008,
         'Fast' : 0x00000010,
+        'AllowContract' : 0x00010000,
         'AllowContractFastINTEL' : 0x00010000,
+        'AllowReassoc' : 0x00020000,
         'AllowReassocINTEL' : 0x00020000,
+        'AllowTransform' : 0x00040000,
     },
 
     'FPRoundingMode' : {
@@ -489,7 +516,12 @@
         'NoUnsignedWrap' : 4470,
         'WeightTextureQCOM' : 4487,
         'BlockMatchTextureQCOM' : 4488,
+        'BlockMatchSamplerQCOM' : 4499,
         'ExplicitInterpAMD' : 4999,
+        'NodeSharesPayloadLimitsWithAMDX' : 5019,
+        'NodeMaxPayloadsAMDX' : 5020,
+        'TrackFinishWritingAMDX' : 5078,
+        'PayloadNodeNameAMDX' : 5091,
         'OverrideCoverageNV' : 5248,
         'PassthroughNV' : 5250,
         'ViewportRelativeNV' : 5252,
@@ -539,6 +571,9 @@
         'MergeINTEL' : 5834,
         'BankBitsINTEL' : 5835,
         'ForcePow2DepthINTEL' : 5836,
+        'StridesizeINTEL' : 5883,
+        'WordsizeINTEL' : 5884,
+        'TrueDualPortINTEL' : 5885,
         'BurstCoalesceINTEL' : 5899,
         'CacheSizeINTEL' : 5900,
         'DontStaticallyCoalesceINTEL' : 5901,
@@ -557,6 +592,8 @@
         'SingleElementVectorINTEL' : 6085,
         'VectorComputeCallableFunctionINTEL' : 6087,
         'MediaBlockIOINTEL' : 6140,
+        'StallFreeINTEL' : 6151,
+        'FPMaxErrorDecorationINTEL' : 6170,
         'LatencyControlLabelINTEL' : 6172,
         'LatencyControlConstraintINTEL' : 6173,
         'ConduitKernelArgumentINTEL' : 6175,
@@ -568,6 +605,11 @@
         'MMHostInterfaceMaxBurstINTEL' : 6181,
         'MMHostInterfaceWaitRequestINTEL' : 6182,
         'StableKernelArgumentINTEL' : 6183,
+        'HostAccessINTEL' : 6188,
+        'InitModeINTEL' : 6190,
+        'ImplementInRegisterMapINTEL' : 6191,
+        'CacheControlLoadINTEL' : 6442,
+        'CacheControlStoreINTEL' : 6443,
     },
 
     'BuiltIn' : {
@@ -642,6 +684,8 @@
         'BaryCoordSmoothSampleAMD' : 4997,
         'BaryCoordPullModelAMD' : 4998,
         'FragStencilRefEXT' : 5014,
+        'CoalescedInputCountAMDX' : 5021,
+        'ShaderIndexAMDX' : 5073,
         'ViewportMaskNV' : 5253,
         'SecondaryPositionNV' : 5257,
         'SecondaryViewportMaskNV' : 5258,
@@ -695,6 +739,8 @@
         'HitKindNV' : 5333,
         'CurrentRayTimeNV' : 5334,
         'HitTriangleVertexPositionsKHR' : 5335,
+        'HitMicroTriangleVertexPositionsNV' : 5337,
+        'HitMicroTriangleVertexBarycentricsNV' : 5344,
         'IncomingRayFlagsKHR' : 5351,
         'IncomingRayFlagsNV' : 5351,
         'RayGeometryIndexKHR' : 5352,
@@ -702,6 +748,8 @@
         'SMCountNV' : 5375,
         'WarpIDNV' : 5376,
         'SMIDNV' : 5377,
+        'HitKindFrontFacingMicroTriangleNV' : 5405,
+        'HitKindBackFacingMicroTriangleNV' : 5406,
         'CullMaskKHR' : 6021,
     },
 
@@ -993,6 +1041,7 @@
         'TextureSampleWeightedQCOM' : 4484,
         'TextureBoxFilterQCOM' : 4485,
         'TextureBlockMatchQCOM' : 4486,
+        'TextureBlockMatch2QCOM' : 4498,
         'Float16ImageAMD' : 5008,
         'ImageGatherBiasLodAMD' : 5009,
         'FragmentMaskAMD' : 5010,
@@ -1000,6 +1049,8 @@
         'ImageReadWriteLodAMD' : 5015,
         'Int64ImageEXT' : 5016,
         'ShaderClockKHR' : 5055,
+        'ShaderEnqueueAMDX' : 5067,
+        'QuadControlKHR' : 5087,
         'SampleMaskOverrideCoverageNV' : 5249,
         'GeometryShaderPassthroughNV' : 5251,
         'ShaderViewportIndexLayerEXT' : 5254,
@@ -1059,10 +1110,14 @@
         'FragmentShaderPixelInterlockEXT' : 5378,
         'DemoteToHelperInvocation' : 5379,
         'DemoteToHelperInvocationEXT' : 5379,
+        'DisplacementMicromapNV' : 5380,
         'RayTracingOpacityMicromapEXT' : 5381,
         'ShaderInvocationReorderNV' : 5383,
         'BindlessTextureNV' : 5390,
         'RayQueryPositionFetchKHR' : 5391,
+        'AtomicFloat16VectorNV' : 5404,
+        'RayTracingDisplacementMicromapNV' : 5409,
+        'RawAccessChainsNV' : 5414,
         'SubgroupShuffleINTEL' : 5568,
         'SubgroupBufferBlockIOINTEL' : 5569,
         'SubgroupImageBlockIOINTEL' : 5570,
@@ -1114,20 +1169,29 @@
         'DotProduct' : 6019,
         'DotProductKHR' : 6019,
         'RayCullMaskKHR' : 6020,
+        'CooperativeMatrixKHR' : 6022,
         'BitInstructions' : 6025,
         'GroupNonUniformRotateKHR' : 6026,
+        'FloatControls2' : 6029,
         'AtomicFloat32AddEXT' : 6033,
         'AtomicFloat64AddEXT' : 6034,
-        'LongConstantCompositeINTEL' : 6089,
+        'LongCompositesINTEL' : 6089,
         'OptNoneINTEL' : 6094,
         'AtomicFloat16AddEXT' : 6095,
         'DebugInfoModuleINTEL' : 6114,
         'BFloat16ConversionINTEL' : 6115,
         'SplitBarrierINTEL' : 6141,
+        'FPGAClusterAttributesV2INTEL' : 6150,
         'FPGAKernelAttributesv2INTEL' : 6161,
+        'FPMaxErrorINTEL' : 6169,
         'FPGALatencyControlINTEL' : 6171,
         'FPGAArgumentInterfacesINTEL' : 6174,
+        'GlobalVariableHostAccessINTEL' : 6187,
+        'GlobalVariableFPGADecorationsINTEL' : 6189,
         'GroupUniformArithmeticKHR' : 6400,
+        'MaskedGatherScatterINTEL' : 6427,
+        'CacheControlsINTEL' : 6441,
+        'RegisterLimitsINTEL' : 6460,
     },
 
     'RayFlagsShift' : {
@@ -1223,6 +1287,76 @@
         'PackedVectorFormat4x8BitKHR' : 0,
     },
 
+    'CooperativeMatrixOperandsShift' : {
+        'MatrixASignedComponentsKHR' : 0,
+        'MatrixBSignedComponentsKHR' : 1,
+        'MatrixCSignedComponentsKHR' : 2,
+        'MatrixResultSignedComponentsKHR' : 3,
+        'SaturatingAccumulationKHR' : 4,
+    },
+
+    'CooperativeMatrixOperandsMask' : {
+        'MaskNone' : 0,
+        'MatrixASignedComponentsKHR' : 0x00000001,
+        'MatrixBSignedComponentsKHR' : 0x00000002,
+        'MatrixCSignedComponentsKHR' : 0x00000004,
+        'MatrixResultSignedComponentsKHR' : 0x00000008,
+        'SaturatingAccumulationKHR' : 0x00000010,
+    },
+
+    'CooperativeMatrixLayout' : {
+        'RowMajorKHR' : 0,
+        'ColumnMajorKHR' : 1,
+    },
+
+    'CooperativeMatrixUse' : {
+        'MatrixAKHR' : 0,
+        'MatrixBKHR' : 1,
+        'MatrixAccumulatorKHR' : 2,
+    },
+
+    'InitializationModeQualifier' : {
+        'InitOnDeviceReprogramINTEL' : 0,
+        'InitOnDeviceResetINTEL' : 1,
+    },
+
+    'HostAccessQualifier' : {
+        'NoneINTEL' : 0,
+        'ReadINTEL' : 1,
+        'WriteINTEL' : 2,
+        'ReadWriteINTEL' : 3,
+    },
+
+    'LoadCacheControl' : {
+        'UncachedINTEL' : 0,
+        'CachedINTEL' : 1,
+        'StreamingINTEL' : 2,
+        'InvalidateAfterReadINTEL' : 3,
+        'ConstCachedINTEL' : 4,
+    },
+
+    'StoreCacheControl' : {
+        'UncachedINTEL' : 0,
+        'WriteThroughINTEL' : 1,
+        'WriteBackINTEL' : 2,
+        'StreamingINTEL' : 3,
+    },
+
+    'NamedMaximumNumberOfRegisters' : {
+        'AutoINTEL' : 0,
+    },
+
+    'RawAccessChainOperandsShift' : {
+        'RobustnessPerComponentNV' : 0,
+        'RobustnessPerElementNV' : 1,
+    },
+
+    'RawAccessChainOperandsMask' : {
+        'MaskNone' : 0,
+        'RobustnessPerComponentNV' : 0x00000001,
+        'RobustnessPerElementNV' : 0x00000002,
+    },
+
     'Op' : {
         'OpNop' : 0,
         'OpUndef' : 1,
@@ -1596,6 +1730,11 @@
         'OpUDotAccSatKHR' : 4454,
         'OpSUDotAccSat' : 4455,
         'OpSUDotAccSatKHR' : 4455,
+        'OpTypeCooperativeMatrixKHR' : 4456,
+        'OpCooperativeMatrixLoadKHR' : 4457,
+        'OpCooperativeMatrixStoreKHR' : 4458,
+        'OpCooperativeMatrixMulAddKHR' : 4459,
+        'OpCooperativeMatrixLengthKHR' : 4460,
         'OpTypeRayQueryKHR' : 4472,
         'OpRayQueryInitializeKHR' : 4473,
         'OpRayQueryTerminateKHR' : 4474,
@@ -1607,6 +1746,10 @@
         'OpImageBoxFilterQCOM' : 4481,
         'OpImageBlockMatchSSDQCOM' : 4482,
         'OpImageBlockMatchSADQCOM' : 4483,
+        'OpImageBlockMatchWindowSSDQCOM' : 4500,
+        'OpImageBlockMatchWindowSADQCOM' : 4501,
+        'OpImageBlockMatchGatherSSDQCOM' : 4502,
+        'OpImageBlockMatchGatherSADQCOM' : 4503,
         'OpGroupIAddNonUniformAMD' : 5000,
         'OpGroupFAddNonUniformAMD' : 5001,
         'OpGroupFMinNonUniformAMD' : 5002,
@@ -1618,6 +1761,11 @@
         'OpFragmentMaskFetchAMD' : 5011,
         'OpFragmentFetchAMD' : 5012,
         'OpReadClockKHR' : 5056,
+        'OpFinalizeNodePayloadsAMDX' : 5075,
+        'OpFinishWritingNodePayloadAMDX' : 5078,
+        'OpInitializeNodePayloadsAMDX' : 5090,
+        'OpGroupNonUniformQuadAllKHR' : 5110,
+        'OpGroupNonUniformQuadAnyKHR' : 5111,
         'OpHitObjectRecordHitMotionNV' : 5249,
         'OpHitObjectRecordHitWithIndexMotionNV' : 5250,
         'OpHitObjectRecordMissMotionNV' : 5251,
@@ -1656,6 +1804,8 @@
         'OpSetMeshOutputsEXT' : 5295,
         'OpGroupNonUniformPartitionNV' : 5296,
         'OpWritePackedPrimitiveIndices4x8NV' : 5299,
+        'OpFetchMicroTriangleVertexPositionNV' : 5300,
+        'OpFetchMicroTriangleVertexBarycentricNV' : 5301,
         'OpReportIntersectionKHR' : 5334,
         'OpReportIntersectionNV' : 5334,
         'OpIgnoreIntersectionNV' : 5335,
@@ -1684,6 +1834,7 @@
         'OpConvertUToSampledImageNV' : 5395,
         'OpConvertSampledImageToUNV' : 5396,
         'OpSamplerImageAddressingModeNV' : 5397,
+        'OpRawAccessChainNV' : 5398,
         'OpSubgroupShuffleINTEL' : 5571,
         'OpSubgroupShuffleDownINTEL' : 5572,
         'OpSubgroupShuffleUpINTEL' : 5573,
@@ -1925,6 +2076,7 @@
         'OpTypeStructContinuedINTEL' : 6090,
         'OpConstantCompositeContinuedINTEL' : 6091,
         'OpSpecConstantCompositeContinuedINTEL' : 6092,
+        'OpCompositeConstructContinuedINTEL' : 6096,
         'OpConvertFToBF16INTEL' : 6116,
         'OpConvertBF16ToFINTEL' : 6117,
         'OpControlBarrierArriveINTEL' : 6142,
@@ -1937,6 +2089,8 @@
         'OpGroupLogicalAndKHR' : 6406,
         'OpGroupLogicalOrKHR' : 6407,
         'OpGroupLogicalXorKHR' : 6408,
+        'OpMaskedGatherINTEL' : 6428,
+        'OpMaskedScatterINTEL' : 6429,
     },
 
 }
diff --git a/third_party/SPIRV-Headers/include/spirv/unified1/spv.d b/third_party/SPIRV-Headers/include/spirv/unified1/spv.d
index 8c85024..64c115e 100644
--- a/third_party/SPIRV-Headers/include/spirv/unified1/spv.d
+++ b/third_party/SPIRV-Headers/include/spirv/unified1/spv.d
@@ -1,5 +1,5 @@
 /+
- + Copyright (c) 2014-2020 The Khronos Group Inc.
+ + Copyright (c) 2014-2024 The Khronos Group Inc.
  + 
  + Permission is hereby granted, free of charge, to any person obtaining a copy
  + of this software and/or associated documentation files (the "Materials"),
@@ -68,6 +68,11 @@
     HLSL = 5,
     CPP_for_OpenCL = 6,
     SYCL = 7,
+    HERO_C = 8,
+    NZSL = 9,
+    WGSL = 10,
+    Slang = 11,
+    Zig = 12,
 }
 
 enum ExecutionModel : uint
@@ -167,12 +172,19 @@
     RoundingModeRTZ = 4463,
     EarlyAndLateFragmentTestsAMD = 5017,
     StencilRefReplacingEXT = 5027,
+    CoalescingAMDX = 5069,
+    MaxNodeRecursionAMDX = 5071,
+    StaticNumWorkgroupsAMDX = 5072,
+    ShaderIndexAMDX = 5073,
+    MaxNumWorkgroupsAMDX = 5077,
     StencilRefUnchangedFrontAMD = 5079,
     StencilRefGreaterFrontAMD = 5080,
     StencilRefLessFrontAMD = 5081,
     StencilRefUnchangedBackAMD = 5082,
     StencilRefGreaterBackAMD = 5083,
     StencilRefLessBackAMD = 5084,
+    QuadDerivativesKHR = 5088,
+    RequireFullQuadsKHR = 5089,
     OutputLinesEXT = 5269,
     OutputLinesNV = 5269,
     OutputPrimitivesEXT = 5270,
@@ -197,9 +209,14 @@
     NoGlobalOffsetINTEL = 5895,
     NumSIMDWorkitemsINTEL = 5896,
     SchedulerTargetFmaxMhzINTEL = 5903,
+    MaximallyReconvergesKHR = 6023,
+    FPFastMathDefault = 6028,
     StreamingInterfaceINTEL = 6154,
     RegisterMapInterfaceINTEL = 6160,
     NamedBarrierCountINTEL = 6417,
+    MaximumRegistersINTEL = 6461,
+    MaximumRegistersIdINTEL = 6462,
+    NamedMaximumRegistersINTEL = 6463,
 }
 
 enum StorageClass : uint
@@ -218,6 +235,8 @@
     Image = 11,
     StorageBuffer = 12,
     TileImageEXT = 4172,
+    NodePayloadAMDX = 5068,
+    NodeOutputPayloadAMDX = 5076,
     CallableDataKHR = 5328,
     CallableDataNV = 5328,
     IncomingCallableDataKHR = 5329,
@@ -355,6 +374,8 @@
     Float = 14,
     UnormInt24 = 15,
     UnormInt101010_2 = 16,
+    UnsignedIntRaw10EXT = 19,
+    UnsignedIntRaw12EXT = 20,
 }
 
 enum ImageOperandsShift : uint
@@ -413,8 +434,11 @@
     NSZ = 2,
     AllowRecip = 3,
     Fast = 4,
+    AllowContract = 16,
     AllowContractFastINTEL = 16,
+    AllowReassoc = 17,
     AllowReassocINTEL = 17,
+    AllowTransform = 18,
 }
 
 enum FPFastMathModeMask : uint
@@ -425,8 +449,11 @@
     NSZ = 0x00000004,
     AllowRecip = 0x00000008,
     Fast = 0x00000010,
+    AllowContract = 0x00010000,
     AllowContractFastINTEL = 0x00010000,
+    AllowReassoc = 0x00020000,
     AllowReassocINTEL = 0x00020000,
+    AllowTransform = 0x00040000,
 }
 
 enum FPRoundingMode : uint
@@ -517,7 +544,12 @@
     NoUnsignedWrap = 4470,
     WeightTextureQCOM = 4487,
     BlockMatchTextureQCOM = 4488,
+    BlockMatchSamplerQCOM = 4499,
     ExplicitInterpAMD = 4999,
+    NodeSharesPayloadLimitsWithAMDX = 5019,
+    NodeMaxPayloadsAMDX = 5020,
+    TrackFinishWritingAMDX = 5078,
+    PayloadNodeNameAMDX = 5091,
     OverrideCoverageNV = 5248,
     PassthroughNV = 5250,
     ViewportRelativeNV = 5252,
@@ -567,6 +599,9 @@
     MergeINTEL = 5834,
     BankBitsINTEL = 5835,
     ForcePow2DepthINTEL = 5836,
+    StridesizeINTEL = 5883,
+    WordsizeINTEL = 5884,
+    TrueDualPortINTEL = 5885,
     BurstCoalesceINTEL = 5899,
     CacheSizeINTEL = 5900,
     DontStaticallyCoalesceINTEL = 5901,
@@ -585,6 +620,8 @@
     SingleElementVectorINTEL = 6085,
     VectorComputeCallableFunctionINTEL = 6087,
     MediaBlockIOINTEL = 6140,
+    StallFreeINTEL = 6151,
+    FPMaxErrorDecorationINTEL = 6170,
     LatencyControlLabelINTEL = 6172,
     LatencyControlConstraintINTEL = 6173,
     ConduitKernelArgumentINTEL = 6175,
@@ -596,6 +633,11 @@
     MMHostInterfaceMaxBurstINTEL = 6181,
     MMHostInterfaceWaitRequestINTEL = 6182,
     StableKernelArgumentINTEL = 6183,
+    HostAccessINTEL = 6188,
+    InitModeINTEL = 6190,
+    ImplementInRegisterMapINTEL = 6191,
+    CacheControlLoadINTEL = 6442,
+    CacheControlStoreINTEL = 6443,
 }
 
 enum BuiltIn : uint
@@ -671,6 +713,8 @@
     BaryCoordSmoothSampleAMD = 4997,
     BaryCoordPullModelAMD = 4998,
     FragStencilRefEXT = 5014,
+    CoalescedInputCountAMDX = 5021,
+    ShaderIndexAMDX = 5073,
     ViewportMaskNV = 5253,
     SecondaryPositionNV = 5257,
     SecondaryViewportMaskNV = 5258,
@@ -724,6 +768,8 @@
     HitKindNV = 5333,
     CurrentRayTimeNV = 5334,
     HitTriangleVertexPositionsKHR = 5335,
+    HitMicroTriangleVertexPositionsNV = 5337,
+    HitMicroTriangleVertexBarycentricsNV = 5344,
     IncomingRayFlagsKHR = 5351,
     IncomingRayFlagsNV = 5351,
     RayGeometryIndexKHR = 5352,
@@ -731,6 +777,8 @@
     SMCountNV = 5375,
     WarpIDNV = 5376,
     SMIDNV = 5377,
+    HitKindFrontFacingMicroTriangleNV = 5405,
+    HitKindBackFacingMicroTriangleNV = 5406,
     CullMaskKHR = 6021,
 }
 
@@ -1038,6 +1086,7 @@
     TextureSampleWeightedQCOM = 4484,
     TextureBoxFilterQCOM = 4485,
     TextureBlockMatchQCOM = 4486,
+    TextureBlockMatch2QCOM = 4498,
     Float16ImageAMD = 5008,
     ImageGatherBiasLodAMD = 5009,
     FragmentMaskAMD = 5010,
@@ -1045,6 +1094,8 @@
     ImageReadWriteLodAMD = 5015,
     Int64ImageEXT = 5016,
     ShaderClockKHR = 5055,
+    ShaderEnqueueAMDX = 5067,
+    QuadControlKHR = 5087,
     SampleMaskOverrideCoverageNV = 5249,
     GeometryShaderPassthroughNV = 5251,
     ShaderViewportIndexLayerEXT = 5254,
@@ -1104,10 +1155,14 @@
     FragmentShaderPixelInterlockEXT = 5378,
     DemoteToHelperInvocation = 5379,
     DemoteToHelperInvocationEXT = 5379,
+    DisplacementMicromapNV = 5380,
     RayTracingOpacityMicromapEXT = 5381,
     ShaderInvocationReorderNV = 5383,
     BindlessTextureNV = 5390,
     RayQueryPositionFetchKHR = 5391,
+    AtomicFloat16VectorNV = 5404,
+    RayTracingDisplacementMicromapNV = 5409,
+    RawAccessChainsNV = 5414,
     SubgroupShuffleINTEL = 5568,
     SubgroupBufferBlockIOINTEL = 5569,
     SubgroupImageBlockIOINTEL = 5570,
@@ -1159,20 +1214,29 @@
     DotProduct = 6019,
     DotProductKHR = 6019,
     RayCullMaskKHR = 6020,
+    CooperativeMatrixKHR = 6022,
     BitInstructions = 6025,
     GroupNonUniformRotateKHR = 6026,
+    FloatControls2 = 6029,
     AtomicFloat32AddEXT = 6033,
     AtomicFloat64AddEXT = 6034,
-    LongConstantCompositeINTEL = 6089,
+    LongCompositesINTEL = 6089,
     OptNoneINTEL = 6094,
     AtomicFloat16AddEXT = 6095,
     DebugInfoModuleINTEL = 6114,
     BFloat16ConversionINTEL = 6115,
     SplitBarrierINTEL = 6141,
+    FPGAClusterAttributesV2INTEL = 6150,
     FPGAKernelAttributesv2INTEL = 6161,
+    FPMaxErrorINTEL = 6169,
     FPGALatencyControlINTEL = 6171,
     FPGAArgumentInterfacesINTEL = 6174,
+    GlobalVariableHostAccessINTEL = 6187,
+    GlobalVariableFPGADecorationsINTEL = 6189,
     GroupUniformArithmeticKHR = 6400,
+    MaskedGatherScatterINTEL = 6427,
+    CacheControlsINTEL = 6441,
+    RegisterLimitsINTEL = 6460,
 }
 
 enum RayFlagsShift : uint
@@ -1280,6 +1344,87 @@
     PackedVectorFormat4x8BitKHR = 0,
 }
 
+enum CooperativeMatrixOperandsShift : uint
+{
+    MatrixASignedComponentsKHR = 0,
+    MatrixBSignedComponentsKHR = 1,
+    MatrixCSignedComponentsKHR = 2,
+    MatrixResultSignedComponentsKHR = 3,
+    SaturatingAccumulationKHR = 4,
+}
+
+enum CooperativeMatrixOperandsMask : uint
+{
+    MaskNone = 0,
+    MatrixASignedComponentsKHR = 0x00000001,
+    MatrixBSignedComponentsKHR = 0x00000002,
+    MatrixCSignedComponentsKHR = 0x00000004,
+    MatrixResultSignedComponentsKHR = 0x00000008,
+    SaturatingAccumulationKHR = 0x00000010,
+}
+
+enum CooperativeMatrixLayout : uint
+{
+    RowMajorKHR = 0,
+    ColumnMajorKHR = 1,
+}
+
+enum CooperativeMatrixUse : uint
+{
+    MatrixAKHR = 0,
+    MatrixBKHR = 1,
+    MatrixAccumulatorKHR = 2,
+}
+
+enum InitializationModeQualifier : uint
+{
+    InitOnDeviceReprogramINTEL = 0,
+    InitOnDeviceResetINTEL = 1,
+}
+
+enum HostAccessQualifier : uint
+{
+    NoneINTEL = 0,
+    ReadINTEL = 1,
+    WriteINTEL = 2,
+    ReadWriteINTEL = 3,
+}
+
+enum LoadCacheControl : uint
+{
+    UncachedINTEL = 0,
+    CachedINTEL = 1,
+    StreamingINTEL = 2,
+    InvalidateAfterReadINTEL = 3,
+    ConstCachedINTEL = 4,
+}
+
+enum StoreCacheControl : uint
+{
+    UncachedINTEL = 0,
+    WriteThroughINTEL = 1,
+    WriteBackINTEL = 2,
+    StreamingINTEL = 3,
+}
+
+enum NamedMaximumNumberOfRegisters : uint
+{
+    AutoINTEL = 0,
+}
+
+enum RawAccessChainOperandsShift : uint
+{
+    RobustnessPerComponentNV = 0,
+    RobustnessPerElementNV = 1,
+}
+
+enum RawAccessChainOperandsMask : uint
+{
+    MaskNone = 0,
+    RobustnessPerComponentNV = 0x00000001,
+    RobustnessPerElementNV = 0x00000002,
+}
+
 enum Op : uint
 {
     OpNop = 0,
@@ -1654,6 +1799,11 @@
     OpUDotAccSatKHR = 4454,
     OpSUDotAccSat = 4455,
     OpSUDotAccSatKHR = 4455,
+    OpTypeCooperativeMatrixKHR = 4456,
+    OpCooperativeMatrixLoadKHR = 4457,
+    OpCooperativeMatrixStoreKHR = 4458,
+    OpCooperativeMatrixMulAddKHR = 4459,
+    OpCooperativeMatrixLengthKHR = 4460,
     OpTypeRayQueryKHR = 4472,
     OpRayQueryInitializeKHR = 4473,
     OpRayQueryTerminateKHR = 4474,
@@ -1665,6 +1815,10 @@
     OpImageBoxFilterQCOM = 4481,
     OpImageBlockMatchSSDQCOM = 4482,
     OpImageBlockMatchSADQCOM = 4483,
+    OpImageBlockMatchWindowSSDQCOM = 4500,
+    OpImageBlockMatchWindowSADQCOM = 4501,
+    OpImageBlockMatchGatherSSDQCOM = 4502,
+    OpImageBlockMatchGatherSADQCOM = 4503,
     OpGroupIAddNonUniformAMD = 5000,
     OpGroupFAddNonUniformAMD = 5001,
     OpGroupFMinNonUniformAMD = 5002,
@@ -1676,6 +1830,11 @@
     OpFragmentMaskFetchAMD = 5011,
     OpFragmentFetchAMD = 5012,
     OpReadClockKHR = 5056,
+    OpFinalizeNodePayloadsAMDX = 5075,
+    OpFinishWritingNodePayloadAMDX = 5078,
+    OpInitializeNodePayloadsAMDX = 5090,
+    OpGroupNonUniformQuadAllKHR = 5110,
+    OpGroupNonUniformQuadAnyKHR = 5111,
     OpHitObjectRecordHitMotionNV = 5249,
     OpHitObjectRecordHitWithIndexMotionNV = 5250,
     OpHitObjectRecordMissMotionNV = 5251,
@@ -1714,6 +1873,8 @@
     OpSetMeshOutputsEXT = 5295,
     OpGroupNonUniformPartitionNV = 5296,
     OpWritePackedPrimitiveIndices4x8NV = 5299,
+    OpFetchMicroTriangleVertexPositionNV = 5300,
+    OpFetchMicroTriangleVertexBarycentricNV = 5301,
     OpReportIntersectionKHR = 5334,
     OpReportIntersectionNV = 5334,
     OpIgnoreIntersectionNV = 5335,
@@ -1742,6 +1903,7 @@
     OpConvertUToSampledImageNV = 5395,
     OpConvertSampledImageToUNV = 5396,
     OpSamplerImageAddressingModeNV = 5397,
+    OpRawAccessChainNV = 5398,
     OpSubgroupShuffleINTEL = 5571,
     OpSubgroupShuffleDownINTEL = 5572,
     OpSubgroupShuffleUpINTEL = 5573,
@@ -1983,6 +2145,7 @@
     OpTypeStructContinuedINTEL = 6090,
     OpConstantCompositeContinuedINTEL = 6091,
     OpSpecConstantCompositeContinuedINTEL = 6092,
+    OpCompositeConstructContinuedINTEL = 6096,
     OpConvertFToBF16INTEL = 6116,
     OpConvertBF16ToFINTEL = 6117,
     OpControlBarrierArriveINTEL = 6142,
@@ -1995,6 +2158,8 @@
     OpGroupLogicalAndKHR = 6406,
     OpGroupLogicalOrKHR = 6407,
     OpGroupLogicalXorKHR = 6408,
+    OpMaskedGatherINTEL = 6428,
+    OpMaskedScatterINTEL = 6429,
 }
 
 
diff --git a/third_party/SPIRV-Headers/tests/CMakeLists.txt b/third_party/SPIRV-Headers/tests/CMakeLists.txt
index 6d86090..ebf7e12 100644
--- a/third_party/SPIRV-Headers/tests/CMakeLists.txt
+++ b/third_party/SPIRV-Headers/tests/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright (c) 2015-2023 The Khronos Group Inc.
+# Copyright (c) 2015-2024 The Khronos Group Inc.
 #
 # Permission is hereby granted, free of charge, to any person obtaining a
 # copy of this software and/or associated documentation files (the
@@ -24,13 +24,13 @@
 # TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
 # MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
 
-add_library(simple_test STATIC)
+add_library(spirv_headers_simple_test STATIC)
 
-target_sources(simple_test PRIVATE
+target_sources(spirv_headers_simple_test PRIVATE
     example.cpp
 )
 
-target_link_libraries(simple_test PRIVATE
+target_link_libraries(spirv_headers_simple_test PRIVATE
     SPIRV-Headers::SPIRV-Headers
 )
 
diff --git a/third_party/SPIRV-Headers/tests/example.cpp b/third_party/SPIRV-Headers/tests/example.cpp
index d79b62f..1920e80 100644
--- a/third_party/SPIRV-Headers/tests/example.cpp
+++ b/third_party/SPIRV-Headers/tests/example.cpp
@@ -1,4 +1,4 @@
-// Copyright (c) 2016 The Khronos Group Inc.
+// Copyright (c) 2016-2024 The Khronos Group Inc.
 // 
 // Permission is hereby granted, free of charge, to any person obtaining a
 // copy of this software and/or associated documentation files (the
diff --git a/third_party/SPIRV-Headers/tools/buildHeaders/bin/generate_language_headers.py b/third_party/SPIRV-Headers/tools/buildHeaders/bin/generate_language_headers.py
index c56780c..ccd843b 100755
--- a/third_party/SPIRV-Headers/tools/buildHeaders/bin/generate_language_headers.py
+++ b/third_party/SPIRV-Headers/tools/buildHeaders/bin/generate_language_headers.py
@@ -1,5 +1,5 @@
 #!/usr/bin/env python3
-# Copyright (c) 2017-2020 Google LLC
+# Copyright (c) 2017-2024 Google LLC
 #
 # Permission is hereby granted, free of charge, to any person obtaining a
 # copy of this software and/or associated documentation files (the
@@ -32,7 +32,7 @@
 import os.path
 import re
 
-DEFAULT_COPYRIGHT="""Copyright (c) 2020 The Khronos Group Inc.
+DEFAULT_COPYRIGHT="""Copyright (c) 2020-2024 The Khronos Group Inc.
 
 Permission is hereby granted, free of charge, to any person obtaining a
 copy of this software and/or associated documentation files (the
diff --git a/third_party/SPIRV-Headers/tools/buildHeaders/bin/makeExtinstHeaders.py b/third_party/SPIRV-Headers/tools/buildHeaders/bin/makeExtinstHeaders.py
index 8852d19..96ce008 100755
--- a/third_party/SPIRV-Headers/tools/buildHeaders/bin/makeExtinstHeaders.py
+++ b/third_party/SPIRV-Headers/tools/buildHeaders/bin/makeExtinstHeaders.py
@@ -27,3 +27,4 @@
 mk_extinst('NonSemanticDebugPrintf', 'extinst.nonsemantic.debugprintf.grammar.json')
 mk_extinst('NonSemanticClspvReflection', 'extinst.nonsemantic.clspvreflection.grammar.json')
 mk_extinst('NonSemanticDebugBreak', 'extinst.nonsemantic.debugbreak.grammar.json')
+mk_extinst('NonSemanticVkspReflection', 'extinst.nonsemantic.vkspreflection.grammar.json')
diff --git a/third_party/SPIRV-Headers/tools/buildHeaders/bin/makeHeaders b/third_party/SPIRV-Headers/tools/buildHeaders/bin/makeHeaders
index 7b4959e..853c467 100755
--- a/third_party/SPIRV-Headers/tools/buildHeaders/bin/makeHeaders
+++ b/third_party/SPIRV-Headers/tools/buildHeaders/bin/makeHeaders
@@ -1,5 +1,7 @@
 #!/usr/bin/env bash
 
+set -ex
+
 python3 bin/makeExtinstHeaders.py
 
 cd ../../include/spirv/unified1
diff --git a/third_party/SPIRV-Headers/tools/buildHeaders/header.cpp b/third_party/SPIRV-Headers/tools/buildHeaders/header.cpp
index fbae044..d125a79 100644
--- a/third_party/SPIRV-Headers/tools/buildHeaders/header.cpp
+++ b/third_party/SPIRV-Headers/tools/buildHeaders/header.cpp
@@ -1,4 +1,4 @@
-// Copyright (c) 2014-2020 The Khronos Group Inc.
+// Copyright (c) 2014-2024 The Khronos Group Inc.
 //
 // Permission is hereby granted, free of charge, to any person obtaining a copy
 // of this software and/or associated documentation files (the "Materials"),
@@ -169,29 +169,30 @@
     }
 
     const std::string TPrinter::DocCopyright =
-        "Copyright (c) 2014-2020 The Khronos Group Inc.\n"
-        "\n"
-        "Permission is hereby granted, free of charge, to any person obtaining a copy\n"
-        "of this software and/or associated documentation files (the \"Materials\"),\n"
-        "to deal in the Materials without restriction, including without limitation\n"
-        "the rights to use, copy, modify, merge, publish, distribute, sublicense,\n"
-        "and/or sell copies of the Materials, and to permit persons to whom the\n"
-        "Materials are furnished to do so, subject to the following conditions:\n"
-        "\n"
-        "The above copyright notice and this permission notice shall be included in\n"
-        "all copies or substantial portions of the Materials.\n"
-        "\n"
-        "MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS KHRONOS\n"
-        "STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS SPECIFICATIONS AND\n"
-        "HEADER INFORMATION ARE LOCATED AT https://www.khronos.org/registry/ \n"
-        "\n"
-        "THE MATERIALS ARE PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n"
-        "OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n"
-        "FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL\n"
-        "THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n"
-        "LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n"
-        "FROM,OUT OF OR IN CONNECTION WITH THE MATERIALS OR THE USE OR OTHER DEALINGS\n"
-        "IN THE MATERIALS.\n";
+R"(Copyright (c) 2014-2024 The Khronos Group Inc.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and/or associated documentation files (the "Materials"),
+to deal in the Materials without restriction, including without limitation
+the rights to use, copy, modify, merge, publish, distribute, sublicense,
+and/or sell copies of the Materials, and to permit persons to whom the
+Materials are furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Materials.
+
+MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS KHRONOS
+STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS SPECIFICATIONS AND
+HEADER INFORMATION ARE LOCATED AT https://www.khronos.org/registry/ 
+
+THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM,OUT OF OR IN CONNECTION WITH THE MATERIALS OR THE USE OR OTHER DEALINGS
+IN THE MATERIALS.
+)";
 
     const std::string TPrinter::DocComment1 =
         "This header is automatically generated by the same tool that creates\n"
@@ -574,13 +575,8 @@
 
     // C++ printer
     class TPrinterCPP : public TPrinterCBase {
-    private:
-        void printPrologue(std::ostream& out) const override {
-            TPrinterCBase::printPrologue(out);
-            out << "namespace spv {\n\n";
-        }
-
-        void printEpilogue(std::ostream& out) const override {
+    protected:
+        void printMaskOperators(std::ostream& out, const std::string& specifiers) const {
             const Json::Value& enums = spvRoot["spv"]["enum"];
 
             out << "// Overload bitwise operators for mask bit combining\n\n";
@@ -593,20 +589,28 @@
                     const auto typeName = opName + styleStr(enumMask);
 
                     // Overload operator|
-                    out << "inline " << typeName << " operator|(" << typeName << " a, " << typeName << " b) { return " <<
+                    out << specifiers << " " << typeName << " operator|(" << typeName << " a, " << typeName << " b) { return " <<
                         typeName << "(unsigned(a) | unsigned(b)); }\n";
                     // Overload operator&
-                    out << "inline " << typeName << " operator&(" << typeName << " a, " << typeName << " b) { return " <<
+                    out << specifiers << " " << typeName << " operator&(" << typeName << " a, " << typeName << " b) { return " <<
                         typeName << "(unsigned(a) & unsigned(b)); }\n";
                     // Overload operator^
-                    out << "inline " << typeName << " operator^(" << typeName << " a, " << typeName << " b) { return " <<
+                    out << specifiers << " " << typeName << " operator^(" << typeName << " a, " << typeName << " b) { return " <<
                         typeName << "(unsigned(a) ^ unsigned(b)); }\n";
                     // Overload operator~
-                    out << "inline " << typeName << " operator~(" << typeName << " a) { return " <<
+                    out << specifiers << " " << typeName << " operator~(" << typeName << " a) { return " <<
                         typeName << "(~unsigned(a)); }\n";
                 }
             }
+        }
+    private:
+        void printPrologue(std::ostream& out) const override {
+            TPrinterCBase::printPrologue(out);
+            out << "namespace spv {\n\n";
+        }
 
+        void printEpilogue(std::ostream& out) const override {
+            printMaskOperators(out, "inline");
             out << "\n}  // end namespace spv\n\n";
             out << "#endif  // #ifndef spirv_" << headerGuardSuffix() << std::endl;
         }
@@ -642,6 +646,11 @@
     // C++11 printer (uses enum classes)
     class TPrinterCPP11 final : public TPrinterCPP {
     private:
+        void printEpilogue(std::ostream& out) const override {
+            printMaskOperators(out, "constexpr");
+            out << "\n}  // end namespace spv\n\n";
+            out << "#endif  // #ifndef spirv_" << headerGuardSuffix() << std::endl;
+        }
         std::string enumBeg(const std::string& s, enumStyle_t style) const override {
             return std::string("enum class ") + s + styleStr(style) + " : unsigned {\n";
         }
diff --git a/third_party/SPIRV-Headers/tools/buildHeaders/header.h b/third_party/SPIRV-Headers/tools/buildHeaders/header.h
index 1dd6e67..6854f80 100644
--- a/third_party/SPIRV-Headers/tools/buildHeaders/header.h
+++ b/third_party/SPIRV-Headers/tools/buildHeaders/header.h
@@ -1,4 +1,4 @@
-// Copyright (c) 2014-2019 The Khronos Group Inc.
+// Copyright (c) 2014-2024 The Khronos Group Inc.
 //
 // Permission is hereby granted, free of charge, to any person obtaining a copy
 // of this software and/or associated documentation files (the "Materials"),
diff --git a/third_party/SPIRV-Headers/tools/buildHeaders/jsonToSpirv.cpp b/third_party/SPIRV-Headers/tools/buildHeaders/jsonToSpirv.cpp
index 67b5bce..34e0972 100644
--- a/third_party/SPIRV-Headers/tools/buildHeaders/jsonToSpirv.cpp
+++ b/third_party/SPIRV-Headers/tools/buildHeaders/jsonToSpirv.cpp
@@ -1,4 +1,4 @@
-// Copyright (c) 2014-2020 The Khronos Group Inc.
+// Copyright (c) 2014-2024 The Khronos Group Inc.
 // 
 // Permission is hereby granted, free of charge, to any person obtaining a copy
 // of this software and/or associated documentation files (the "Materials"),
@@ -36,8 +36,185 @@
 
 #include "jsonToSpirv.h"
 
+namespace {
+// Returns true if the given string is a valid SPIR-V version.
+bool validSpirvVersionString(const std::string s) {
+  return
+  s == "1.0" ||
+  s == "1.1" ||
+  s == "1.2" ||
+  s == "1.3" ||
+  s == "1.4" ||
+  s == "1.5" ||
+  s == "1.6";
+}
+
+// Returns true if the given string is a valid version
+// specifier in the grammar file.
+bool validSpirvVersionStringSpecifier(const std::string s) {
+  return s == "None" || validSpirvVersionString(s);
+}
+}  // anonymous namespace
+
 namespace spv {
 
+bool IsLegacyDoublyEnabledInstruction(const std::string& instruction) {
+  static std::unordered_set<std::string> allowed = {
+      "OpSubgroupBallotKHR",
+      "OpSubgroupFirstInvocationKHR",
+      "OpSubgroupAllKHR",
+      "OpSubgroupAnyKHR",
+      "OpSubgroupAllEqualKHR",
+      "OpSubgroupReadInvocationKHR",
+      "OpTraceRayKHR",
+      "OpExecuteCallableKHR",
+      "OpConvertUToAccelerationStructureKHR",
+      "OpIgnoreIntersectionKHR",
+      "OpTerminateRayKHR",
+      "OpTypeRayQueryKHR",
+      "OpRayQueryInitializeKHR",
+      "OpRayQueryTerminateKHR",
+      "OpRayQueryGenerateIntersectionKHR",
+      "OpRayQueryConfirmIntersectionKHR",
+      "OpRayQueryProceedKHR",
+      "OpRayQueryGetIntersectionTypeKHR",
+      "OpGroupIAddNonUniformAMD",
+      "OpGroupFAddNonUniformAMD",
+      "OpGroupFMinNonUniformAMD",
+      "OpGroupUMinNonUniformAMD",
+      "OpGroupSMinNonUniformAMD",
+      "OpGroupFMaxNonUniformAMD",
+      "OpGroupUMaxNonUniformAMD",
+      "OpGroupSMaxNonUniformAMD",
+      "OpFragmentMaskFetchAMD",
+      "OpFragmentFetchAMD",
+      "OpImageSampleFootprintNV",
+      "OpGroupNonUniformPartitionNV",
+      "OpWritePackedPrimitiveIndices4x8NV",
+      "OpReportIntersectionNV",
+      "OpReportIntersectionKHR",
+      "OpIgnoreIntersectionNV",
+      "OpTerminateRayNV",
+      "OpTraceNV",
+      "OpTraceMotionNV",
+      "OpTraceRayMotionNV",
+      "OpTypeAccelerationStructureNV",
+      "OpTypeAccelerationStructureKHR",
+      "OpExecuteCallableNV",
+      "OpTypeCooperativeMatrixNV",
+      "OpCooperativeMatrixLoadNV",
+      "OpCooperativeMatrixStoreNV",
+      "OpCooperativeMatrixMulAddNV",
+      "OpCooperativeMatrixLengthNV",
+      "OpBeginInvocationInterlockEXT",
+      "OpEndInvocationInterlockEXT",
+      "OpIsHelperInvocationEXT",
+      "OpConstantFunctionPointerINTEL",
+      "OpFunctionPointerCallINTEL",
+      "OpAssumeTrueKHR",
+      "OpExpectKHR",
+      "OpLoopControlINTEL",
+      "OpAliasDomainDeclINTEL",
+      "OpAliasScopeDeclINTEL",
+      "OpAliasScopeListDeclINTEL",
+      "OpReadPipeBlockingINTEL",
+      "OpWritePipeBlockingINTEL",
+      "OpFPGARegINTEL",
+      "OpRayQueryGetRayTMinKHR",
+      "OpRayQueryGetRayFlagsKHR",
+      "OpRayQueryGetIntersectionTKHR",
+      "OpRayQueryGetIntersectionInstanceCustomIndexKHR",
+      "OpRayQueryGetIntersectionInstanceIdKHR",
+      "OpRayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR",
+      "OpRayQueryGetIntersectionGeometryIndexKHR",
+      "OpRayQueryGetIntersectionPrimitiveIndexKHR",
+      "OpRayQueryGetIntersectionBarycentricsKHR",
+      "OpRayQueryGetIntersectionFrontFaceKHR",
+      "OpRayQueryGetIntersectionCandidateAABBOpaqueKHR",
+      "OpRayQueryGetIntersectionObjectRayDirectionKHR",
+      "OpRayQueryGetIntersectionObjectRayOriginKHR",
+      "OpRayQueryGetWorldRayDirectionKHR",
+      "OpRayQueryGetWorldRayOriginKHR",
+      "OpRayQueryGetIntersectionObjectToWorldKHR",
+      "OpRayQueryGetIntersectionWorldToObjectKHR",
+      "OpAtomicFAddEXT",
+  };
+  return allowed.count(instruction) != 0;
+}
+
+bool EnumValue::IsValid(OperandClass oc, const std::string& context) const
+{
+  bool result = true;
+  if (firstVersion.empty()) {
+    std::cerr << "Error: " << context << " " << name << " \"version\" must be set, probably to \"None\"" << std::endl;
+    result = false;
+  } else if (!validSpirvVersionStringSpecifier(firstVersion)) {
+    std::cerr << "Error: " << context << " " << name << " \"version\" is invalid: " << firstVersion << std::endl;
+    result = false;
+  }
+  if (!lastVersion.empty() && !validSpirvVersionString(lastVersion)) {
+    std::cerr << "Error: " << context << " " << name << " \"lastVersion\" is invalid: " << lastVersion << std::endl;
+    result = false;
+  }
+
+  // When a feature is introduced by an extension, the firstVersion is set to
+  // "None". There are three cases:
+  // -  A new capability should be guarded/enabled by the extension
+  // -  A new instruction should be:
+  //      - Guarded/enabled by a new capability.
+  //      - Not enabled by *both* a capability and an extension.
+  //        There are many existing instructions that are already like this,
+  //        and we grandparent them as allowed.
+  // -  Other enums fall into two cases:
+  //    1. The enum is part of a new operand kind introduced by the extension.
+  //       In this case we rely on transitivity: The use of the operand occurs
+  //       in a new instruction that itself is guarded; or as the operand of
+  //       another operand that itself is (recursively) guarded.
+  //    2. The enum is a new case in an existing operand kind.  This case
+  //       should be guarded by a capability.  However, we do not check this
+  //       here.  Checking it requires more context than we have here.
+  if (oc == OperandOpcode) {
+    const bool instruction_unusable =
+        (firstVersion == "None") && extensions.empty() && capabilities.empty();
+    if (instruction_unusable) {
+      std::cerr << "Error: " << context << " " << name << " is not usable: "
+                << "its version is set to \"None\", and it is not enabled by a "
+                << "capability or extension. Guard it with a capability."
+                << std::endl;
+      result = false;
+    }
+    // Complain if an instruction is not in any core version and also enabled by
+    // both an extension and a capability.
+    // It's important to check the "not in any core version" case, because,
+    // for example, OpTerminateInvocation is in SPIR-V 1.6 *and* enabled by an
+    // extension, and guarded by the Shader capability.
+    const bool instruction_doubly_enabled = (firstVersion == "None") &&
+                                            !extensions.empty() &&
+                                            !capabilities.empty();
+    if (instruction_doubly_enabled && !IsLegacyDoublyEnabledInstruction(name)) {
+      std::cerr << "Error: " << context << " " << name << " is doubly-enabled: "
+                << "it is enabled by both a capability and an extension. "
+                << "Guard it with a capability only." << std::endl;
+      result = false;
+    }
+  }
+  if (oc == OperandCapability) {
+    // If capability X lists capabilities Y and Z, then Y and Z are *enabled*
+    // when X is enabled. They are not *guards* on X's use.
+    // Only versions and extensions can guard a capability.
+    const bool capability_unusable =
+        (firstVersion == "None") && extensions.empty();
+    if (capability_unusable) {
+      std::cerr << "Error: " << context << " " << name << " is not usable: "
+                << "its version is set to \"None\", and it is not enabled by "
+                << "an extension. Guard it with an extension." << std::endl;
+      result = false;
+    }
+  }
+
+  return result;
+}
+
 // The set of objects that hold all the instruction/operand
 // parameterization information.
 InstructionValues InstructionDesc;
@@ -88,6 +265,15 @@
 EnumValues RayQueryCandidateIntersectionTypeParams;
 EnumValues FragmentShadingRateParams;
 EnumValues PackedVectorFormatParams;
+EnumValues CooperativeMatrixOperandsParams;
+EnumValues CooperativeMatrixLayoutParams;
+EnumValues CooperativeMatrixUseParams;
+EnumValues InitializationModeQualifierParams;
+EnumValues HostAccessQualifierParams;
+EnumValues LoadCacheControlParams;
+EnumValues StoreCacheControlParams;
+EnumValues NamedMaximumNumberOfRegistersParams;
+EnumValues RawAccessChainOperandsParams;
 
 std::pair<bool, std::string> ReadFile(const std::string& path)
 {
@@ -158,6 +344,8 @@
             type = OperandLiteralNumber;
         } else if (operandKind == "LiteralContextDependentNumber") {
             type = OperandAnySizeLiteralNumber;
+        } else if (operandKind == "LiteralFloat") {
+            type = OperandLiteralNumber;
         } else if (operandKind == "SourceLanguage") {
             type = OperandSource;
         } else if (operandKind == "ExecutionModel") {
@@ -234,6 +422,24 @@
             type = OperandFragmentShadingRate;
         } else if (operandKind == "PackedVectorFormat") {
             type = OperandPackedVectorFormat;
+        } else if (operandKind == "CooperativeMatrixOperands") {
+            type = OperandCooperativeMatrixOperands;
+        } else if (operandKind == "CooperativeMatrixLayout") {
+            type = OperandCooperativeMatrixLayout;
+        } else if (operandKind == "CooperativeMatrixUse") {
+            type = OperandCooperativeMatrixUse;
+        } else if (operandKind == "InitializationModeQualifier") {
+            type = OperandInitializationModeQualifier;
+        } else if (operandKind == "HostAccessQualifier") {
+            type = OperandHostAccessQualifier;
+        } else if (operandKind == "LoadCacheControl") {
+            type = OperandLoadCacheControl;
+        } else if (operandKind == "StoreCacheControl") {
+            type = OperandStoreCacheControl;
+        } else if (operandKind == "NamedMaximumNumberOfRegisters") {
+            type = OperandNamedMaximumNumberOfRegisters;
+        } else if (operandKind == "RawAccessChainOperands") {
+            type = OperandRawAccessChainOperands;
         }
 
         if (type == OperandNone) {
@@ -273,6 +479,8 @@
         return;
     initialized = true;
 
+    size_t errorCount = 0;
+
     // Read the JSON grammar file.
     bool fileReadOk = false;
     std::string content;
@@ -326,8 +534,10 @@
     for (const auto& printingClass : printingClasses) {
         if (printingClass["tag"].asString().size() > 0)
             tags.insert(printingClass["tag"].asString()); // just for error checking
-        else
+        else {
             std::cerr << "Error: each instruction_printing_class requires a non-empty \"tag\"" << std::endl;
+            std::exit(1);
+        }
         if (buildingHeaders || printingClass["tag"].asString() != "@exclude") {
             InstructionPrintingClasses.push_back({printingClass["tag"].asString(),
                                                   printingClass["heading"].asString()});
@@ -343,6 +553,7 @@
         if (printingClass.size() == 0) {
             std::cerr << "Error: " << inst["opname"].asString()
                       << " requires a non-empty printing \"class\" tag" << std::endl;
+            std::exit(1);
         }
         if (!buildingHeaders && printingClass == "@exclude")
             continue;
@@ -350,6 +561,7 @@
             std::cerr << "Error: " << inst["opname"].asString()
                       << " requires a \"class\" declared as a \"tag\" in \"instruction printing_class\""
                       << std::endl;
+            std::exit(1);
         }
         const auto opcode = inst["opcode"].asUInt();
         const std::string name = inst["opname"].asString();
@@ -387,12 +599,15 @@
                                 std::move(caps), std::move(version), std::move(lastVersion), std::move(exts),
                                 std::move(operands))),
              printingClass, defTypeId, defResultId);
+        if (!InstructionDesc.back().IsValid(OperandOpcode, "instruction")) {
+          errorCount++;
+        }
     }
 
     // Specific additional context-dependent operands
 
     // Populate dest with EnumValue objects constructed from source.
-    const auto populateEnumValues = [&getCaps,&getExts](EnumValues* dest, const Json::Value& source, bool bitEnum) {
+    const auto populateEnumValues = [&getCaps,&getExts,&errorCount](EnumValues* dest, const Json::Value& source, bool bitEnum) {
         // A lambda for determining the numeric value to be used for a given
         // enumerant in JSON form, and whether that value is a 0 in a bitfield.
         auto getValue = [&bitEnum](const Json::Value& enumerant) {
@@ -451,12 +666,22 @@
         }
     };
 
-    const auto establishOperandClass = [&populateEnumValues](
+    const auto establishOperandClass = [&populateEnumValues,&errorCount](
             const std::string& enumName, spv::OperandClass operandClass,
             spv::EnumValues* enumValues, const Json::Value& operandEnum, const std::string& category) {
         assert(category == "BitEnum" || category == "ValueEnum");
         bool bitEnum = (category == "BitEnum");
+        if (!operandEnum["version"].empty()) {
+          std::cerr << "Error: container for " << enumName << " operand_kind must not have a version field" << std::endl;
+          errorCount++;
+        }
         populateEnumValues(enumValues, operandEnum, bitEnum);
+        const std::string errContext = "enum " + enumName;
+        for (const auto& e: *enumValues) {
+          if (!e.IsValid(operandClass, errContext)) {
+            errorCount++;
+          }
+        }
         OperandClassParams[operandClass].set(enumName, enumValues, bitEnum);
     };
 
@@ -544,8 +769,30 @@
             establishOperandClass(enumName, OperandFragmentShadingRate, &FragmentShadingRateParams, operandEnum, category);
         } else if (enumName == "PackedVectorFormat") {
             establishOperandClass(enumName, OperandPackedVectorFormat, &PackedVectorFormatParams, operandEnum, category);
+        } else if (enumName == "CooperativeMatrixOperands") {
+            establishOperandClass(enumName, OperandCooperativeMatrixOperands, &CooperativeMatrixOperandsParams, operandEnum, category);
+        } else if (enumName == "CooperativeMatrixLayout") {
+            establishOperandClass(enumName, OperandCooperativeMatrixLayout, &CooperativeMatrixLayoutParams, operandEnum, category);
+        } else if (enumName == "CooperativeMatrixUse") {
+            establishOperandClass(enumName, OperandCooperativeMatrixUse, &CooperativeMatrixUseParams, operandEnum, category);
+        } else if (enumName == "InitializationModeQualifier") {
+            establishOperandClass(enumName, OperandInitializationModeQualifier, &InitializationModeQualifierParams, operandEnum, category);
+        } else if (enumName == "HostAccessQualifier") {
+            establishOperandClass(enumName, OperandHostAccessQualifier, &HostAccessQualifierParams, operandEnum, category);
+        } else if (enumName == "LoadCacheControl") {
+            establishOperandClass(enumName, OperandLoadCacheControl, &LoadCacheControlParams, operandEnum, category);
+        } else if (enumName == "StoreCacheControl") {
+            establishOperandClass(enumName, OperandStoreCacheControl, &StoreCacheControlParams, operandEnum, category);
+        } else if (enumName == "NamedMaximumNumberOfRegisters") {
+            establishOperandClass(enumName, OperandNamedMaximumNumberOfRegisters, &NamedMaximumNumberOfRegistersParams, operandEnum, category);
+        } else if (enumName == "RawAccessChainOperands") {
+            establishOperandClass(enumName, OperandRawAccessChainOperands, &RawAccessChainOperandsParams, operandEnum, category);
         }
     }
+
+    if (errorCount > 0) {
+      std::exit(1);
+    }
 }
 
 };  // end namespace spv
diff --git a/third_party/SPIRV-Headers/tools/buildHeaders/jsonToSpirv.h b/third_party/SPIRV-Headers/tools/buildHeaders/jsonToSpirv.h
index 3be6456..c8de68f 100644
--- a/third_party/SPIRV-Headers/tools/buildHeaders/jsonToSpirv.h
+++ b/third_party/SPIRV-Headers/tools/buildHeaders/jsonToSpirv.h
@@ -1,4 +1,4 @@
-// Copyright (c) 2014-2020 The Khronos Group Inc.
+// Copyright (c) 2014-2024 The Khronos Group Inc.
 // 
 // Permission is hereby granted, free of charge, to any person obtaining a copy
 // of this software and/or associated documentation files (the "Materials"),
@@ -96,6 +96,15 @@
     OperandQuantizationModes,
     OperandOverflowModes,
     OperandPackedVectorFormat,
+    OperandCooperativeMatrixOperands,
+    OperandCooperativeMatrixLayout,
+    OperandCooperativeMatrixUse,
+    OperandInitializationModeQualifier,
+    OperandHostAccessQualifier,
+    OperandLoadCacheControl,
+    OperandStoreCacheControl,
+    OperandNamedMaximumNumberOfRegisters,
+    OperandRawAccessChainOperands,
 
     OperandOpcode,
 
@@ -184,6 +193,7 @@
 
     iterator begin() { return values.begin(); }
     iterator end() { return values.end(); }
+    EValue& back() { return values.back(); }
 
 private:
     ContainerType values;
@@ -216,6 +226,10 @@
     Extensions extensions;
     OperandParameters operands;
     const char* desc;
+
+    // Returns true if this enum is valid, in isolation.
+    // Otherwise emits a diagnostic to std::cerr and returns false.
+    bool IsValid(OperandClass oc, const std::string& context) const;
 };
 
 using EnumValues = EnumValuesContainer<EnumValue>;
diff --git a/third_party/SPIRV-Headers/tools/buildHeaders/main.cpp b/third_party/SPIRV-Headers/tools/buildHeaders/main.cpp
index 9a59714..6e6a03b 100644
--- a/third_party/SPIRV-Headers/tools/buildHeaders/main.cpp
+++ b/third_party/SPIRV-Headers/tools/buildHeaders/main.cpp
@@ -1,4 +1,4 @@
-// Copyright (c) 2014-2019 The Khronos Group Inc.
+// Copyright (c) 2014-2024 The Khronos Group Inc.
 //
 // Permission is hereby granted, free of charge, to any person obtaining a copy
 // of this software and/or associated documentation files (the "Materials"),