Merge pull request #152 from MrSidims/private/MrSidims/FunctionPointers

Add SPV_INTEL_function_pointers preview extension
diff --git a/README.md b/README.md
index 2ea3dc5..b1aa964 100644
--- a/README.md
+++ b/README.md
@@ -23,15 +23,28 @@
 the SPIR-V Working Group will push new commits onto master, updating
 the files under [include](include).
 
-The SPIR-V XML registry file is updated by Khronos whenever a new enum range is allocated.
+[The SPIR-V XML registry file](include/spirv/spir-v.xml)
+is updated by Khronos whenever a new enum range is allocated.
 
 Pull requests can be made to
 - request allocation of new enum ranges in the XML registry file
+- register a new magic number for a SPIR-V generator
 - reserve specific tokens in the JSON grammar
 
+### Registering a SPIR-V Generator Magic Number
+
+Tools that generate SPIR-V should use a magic number in the SPIR-V to help identify the
+generator.
+
+Care should be taken to follow existing precedent in populating the details of reserved tokens.
+This includes:
+- keeping generator numbers in numeric order
+- filling out all the existing fields
+
 ### Reserving tokens in the JSON grammar
 
-Care should be taken to follow existing precedent in populating the details of reserved tokens. This includes:
+Care should be taken to follow existing precedent in populating the details of reserved tokens.
+This includes:
 - pointing to what extension has more information, when possible
 - keeping enumerants in numeric order
 - when there are aliases, listing the preferred spelling first
diff --git a/example/CMakeLists.txt b/example/CMakeLists.txt
index dff65d9..8b22f60 100644
--- a/example/CMakeLists.txt
+++ b/example/CMakeLists.txt
@@ -2,8 +2,3 @@
 	${CMAKE_CURRENT_SOURCE_DIR}/example.cpp)
 target_include_directories(SPIRV-Headers-example
 	PRIVATE ${SPIRV-Headers_SOURCE_DIR}/include)
-
-add_library(SPIRV-Headers-example-1.1
-	${CMAKE_CURRENT_SOURCE_DIR}/example-1.1.cpp)
-target_include_directories(SPIRV-Headers-example-1.1
-	PRIVATE ${SPIRV-Headers_SOURCE_DIR}/include)
diff --git a/example/example-1.1.cpp b/example/example-1.1.cpp
deleted file mode 100644
index 989d35c..0000000
--- a/example/example-1.1.cpp
+++ /dev/null
@@ -1,42 +0,0 @@
-// Copyright (c) 2016 The Khronos Group Inc.
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a
-// copy of this software and/or associated documentation files (the
-// "Materials"), to deal in the Materials without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Materials, and to
-// permit persons to whom the Materials are furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included
-// in all copies or substantial portions of the Materials.
-// 
-// MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS
-// KHRONOS STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS
-// SPECIFICATIONS AND HEADER INFORMATION ARE LOCATED AT
-//    https://www.khronos.org/registry/
-// 
-// THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
-// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-// MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
-
-// Use the SPIR-V 1.1 core instruction set, but with 1.0 versions
-// of the GLSL and OpenCL extended instruction sets.
-#include <spirv/1.0/GLSL.std.450.h>
-#include <spirv/1.0/OpenCL.std.h>
-#include <spirv/1.1/spirv.hpp>
-
-namespace {
-
-const GLSLstd450 kSin = GLSLstd450Sin;
-const OpenCLLIB::Entrypoints kNative_cos = OpenCLLIB::Native_cos;
-const spv::Op kNop = spv::OpNop;
-
-// This instruction is new in SPIR-V 1.1.
-const spv::Op kNamedBarrierInit = spv::OpNamedBarrierInitialize;
-
-}  // anonymous namespace
diff --git a/example/example.cpp b/example/example.cpp
index 222c101..d79b62f 100644
--- a/example/example.cpp
+++ b/example/example.cpp
@@ -24,9 +24,9 @@
 // TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
 // MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
 
-#include <spirv/1.0/GLSL.std.450.h>
-#include <spirv/1.0/OpenCL.std.h>
-#include <spirv/1.0/spirv.hpp>
+#include <spirv/unified1/GLSL.std.450.h>
+#include <spirv/unified1/OpenCL.std.h>
+#include <spirv/unified1/spirv.hpp>
 
 namespace {
 
diff --git a/include/spirv/unified1/spirv.core.grammar.json b/include/spirv/unified1/spirv.core.grammar.json
index 5ca62d7..a176e41 100644
--- a/include/spirv/unified1/spirv.core.grammar.json
+++ b/include/spirv/unified1/spirv.core.grammar.json
@@ -27,7 +27,7 @@
   "magic_number" : "0x07230203",
   "major_version" : 1,
   "minor_version" : 5,
-  "revision" : 1,
+  "revision" : 3,
   "instruction_printing_class" : [
     {
       "tag"     : "@exclude"
@@ -4187,6 +4187,142 @@
       "version" : "None"
     },
     {
+        "opname" : "OpTypeRayQueryProvisionalKHR",
+        "class" : "Reserved",
+        "opcode" : 4472,
+        "operands" : [
+            { "kind" : "IdResult" }
+        ],
+        "capabilities" : [ "RayQueryProvisionalKHR" ],
+        "extensions" : [ "SPV_KHR_ray_query" ],
+        "version" : "None"
+    },
+    {
+        "opname" : "OpRayQueryInitializeKHR",
+        "class" : "Reserved",
+        "opcode" : 4473,
+        "operands" : [
+            {
+                "kind" : "IdRef",
+                "name" : "'RayQuery'"
+            },
+            {
+                "kind" : "IdRef",
+                "name" : "'Accel'"
+            },
+            {
+                "kind" : "IdRef",
+                "name" : "'RayFlags'"
+            },
+            {
+                "kind" : "IdRef",
+                "name" : "'CullMask'"
+            },
+            {
+                "kind" : "IdRef",
+                "name" : "'RayOrigin'"
+            },
+            {
+                "kind" : "IdRef",
+                "name" : "'RayTMin'"
+            },
+            {
+                "kind" : "IdRef",
+                "name" : "'RayDirection'"
+            },
+            {
+                "kind" : "IdRef",
+                "name" : "'RayTMax'"
+            }
+
+        ],
+        "capabilities" : [ "RayQueryProvisionalKHR" ],
+        "extensions" : [ "SPV_KHR_ray_query" ],
+        "version" : "None"
+    },
+    {
+        "opname" : "OpRayQueryTerminateKHR",
+        "class" : "Reserved",
+        "opcode" : 4474,
+        "operands" : [
+            {
+                "kind" : "IdRef",
+                "name" : "'RayQuery'"
+            }
+        ],
+        "capabilities" : [ "RayQueryProvisionalKHR" ],
+        "extensions" : [ "SPV_KHR_ray_query" ],
+        "version" : "None"
+    },
+    {
+        "opname" : "OpRayQueryGenerateIntersectionKHR",
+        "class" : "Reserved",
+        "opcode" : 4475,
+        "operands" : [
+            {
+                "kind" : "IdRef",
+                "name" : "'RayQuery'"
+            },
+            {
+                "kind" : "IdRef",
+                "name" : "'HitT'"
+            }
+        ],
+        "capabilities" : [ "RayQueryProvisionalKHR" ],
+        "extensions" : [ "SPV_KHR_ray_query" ],
+        "version" : "None"
+    },
+    {
+        "opname" : "OpRayQueryConfirmIntersectionKHR",
+        "class" : "Reserved",
+        "opcode" : 4476,
+        "operands" : [
+            {
+                "kind" : "IdRef",
+                "name" : "'RayQuery'"
+            }
+        ],
+        "capabilities" : [ "RayQueryProvisionalKHR" ],
+        "extensions" : [ "SPV_KHR_ray_query" ],
+        "version" : "None"
+    },
+    {
+        "opname" : "OpRayQueryProceedKHR",
+        "class" : "Reserved",
+        "opcode" : 4477,
+        "operands" : [
+            { "kind" : "IdResultType" },
+            { "kind" : "IdResult" },
+            {
+                "kind" : "IdRef",
+                "name" : "'RayQuery'"
+            }
+        ],
+        "capabilities" : [ "RayQueryProvisionalKHR" ],
+        "extensions" : [ "SPV_KHR_ray_query" ],
+        "version" : "None"
+    },
+    {
+        "opname" : "OpRayQueryGetIntersectionTypeKHR",
+        "class" : "Reserved",
+        "opcode" : 4479,
+        "operands" : [
+            { "kind" : "IdResultType" },
+            { "kind" : "IdResult" },
+            {
+                "kind" : "IdRef",
+                "name" : "'RayQuery'"
+            },
+            {
+                "kind" : "IdRef",
+                "name" : "'Intersection'"
+            }
+        ],
+        "capabilities" : [ "RayQueryProvisionalKHR" ],
+        "extensions" : [ "SPV_KHR_ray_query" ],
+        "version" : "None"
+    },
+    {
       "opname" : "OpGroupIAddNonUniformAMD",
       "class"  : "Group",
       "opcode" : 5000,
@@ -4517,463 +4653,6 @@
       "version" : "None"
     },
     {
-        "opname" : "OpTypeRayQueryProvisionalKHR",
-        "class" : "Reserved",
-        "opcode" : 4472,
-        "operands" : [
-            { "kind" : "IdResult" }
-        ],
-        "capabilities" : [ "RayQueryProvisionalKHR" ],
-        "extensions" : [ "SPV_KHR_ray_query" ],
-        "version" : "None"
-    },
-    {
-        "opname" : "OpRayQueryInitializeKHR",
-        "class" : "Reserved",
-        "opcode" : 4473,
-        "operands" : [
-            {
-                "kind" : "IdRef",
-                "name" : "'RayQuery'"
-            },
-            {
-                "kind" : "IdRef",
-                "name" : "'Accel'"
-            },
-            {
-                "kind" : "IdRef",
-                "name" : "'RayFlags'"
-            },
-            {
-                "kind" : "IdRef",
-                "name" : "'CullMask'"
-            },
-            {
-                "kind" : "IdRef",
-                "name" : "'RayOrigin'"
-            },
-            {
-                "kind" : "IdRef",
-                "name" : "'RayTMin'"
-            },
-            {
-                "kind" : "IdRef",
-                "name" : "'RayDirection'"
-            },
-            {
-                "kind" : "IdRef",
-                "name" : "'RayTMax'"
-            }
-
-        ],
-        "capabilities" : [ "RayQueryProvisionalKHR" ],
-        "extensions" : [ "SPV_KHR_ray_query" ],
-        "version" : "None"
-    },
-    {
-        "opname" : "OpRayQueryTerminateKHR",
-        "class" : "Reserved",
-        "opcode" : 4474,
-        "operands" : [
-            {
-                "kind" : "IdRef",
-                "name" : "'RayQuery'"
-            }
-        ],
-        "capabilities" : [ "RayQueryProvisionalKHR" ],
-        "extensions" : [ "SPV_KHR_ray_query" ],
-        "version" : "None"
-    },
-    {
-        "opname" : "OpRayQueryGenerateIntersectionKHR",
-        "class" : "Reserved",
-        "opcode" : 4475,
-        "operands" : [
-            {
-                "kind" : "IdRef",
-                "name" : "'RayQuery'"
-            },
-            {
-                "kind" : "IdRef",
-                "name" : "'HitT'"
-            }
-        ],
-        "capabilities" : [ "RayQueryProvisionalKHR" ],
-        "extensions" : [ "SPV_KHR_ray_query" ],
-        "version" : "None"
-    },
-    {
-        "opname" : "OpRayQueryConfirmIntersectionKHR",
-        "class" : "Reserved",
-        "opcode" : 4476,
-        "operands" : [
-            {
-                "kind" : "IdRef",
-                "name" : "'RayQuery'"
-            }
-        ],
-        "capabilities" : [ "RayQueryProvisionalKHR" ],
-        "extensions" : [ "SPV_KHR_ray_query" ],
-        "version" : "None"
-    },
-    {
-        "opname" : "OpRayQueryProceedKHR",
-        "class" : "Reserved",
-        "opcode" : 4477,
-        "operands" : [
-            { "kind" : "IdResultType" },
-            { "kind" : "IdResult" },
-            {
-                "kind" : "IdRef",
-                "name" : "'RayQuery'"
-            }
-        ],
-        "capabilities" : [ "RayQueryProvisionalKHR" ],
-        "extensions" : [ "SPV_KHR_ray_query" ],
-        "version" : "None"
-    },
-    {
-        "opname" : "OpRayQueryGetIntersectionTypeKHR",
-        "class" : "Reserved",
-        "opcode" : 4479,
-        "operands" : [
-            { "kind" : "IdResultType" },
-            { "kind" : "IdResult" },
-            {
-                "kind" : "IdRef",
-                "name" : "'RayQuery'"
-            },
-            {
-                "kind" : "IdRef",
-                "name" : "'Intersection'"
-            }
-        ],
-        "capabilities" : [ "RayQueryProvisionalKHR" ],
-        "extensions" : [ "SPV_KHR_ray_query" ],
-        "version" : "None"
-    },
-    {
-        "opname" : "OpRayQueryGetRayTMinKHR",
-        "class" : "Reserved",
-        "opcode" : 6016,
-        "operands" : [
-            { "kind" : "IdResultType" },
-            { "kind" : "IdResult" },
-            {
-                "kind" : "IdRef",
-                "name" : "'RayQuery'"
-            }
-        ],
-        "capabilities" : [ "RayQueryProvisionalKHR" ],
-        "extensions" : [ "SPV_KHR_ray_query" ],
-        "version" : "None"
-    },
-    {
-        "opname" : "OpRayQueryGetRayFlagsKHR",
-        "class" : "Reserved",
-        "opcode" : 6017,
-        "operands" : [
-            { "kind" : "IdResultType" },
-            { "kind" : "IdResult" },
-            {
-                "kind" : "IdRef",
-                "name" : "'RayQuery'"
-            }
-        ],
-        "capabilities" : [ "RayQueryProvisionalKHR" ],
-        "extensions" : [ "SPV_KHR_ray_query" ],
-        "version" : "None"
-    },
-    {
-        "opname" : "OpRayQueryGetIntersectionTKHR",
-        "class" : "Reserved",
-        "opcode" : 6018,
-        "operands" : [
-            { "kind" : "IdResultType" },
-            { "kind" : "IdResult" },
-            {
-                "kind" : "IdRef",
-                "name" : "'RayQuery'"
-            },
-            {
-                "kind" : "IdRef",
-                "name" : "'Intersection'"
-            }
-        ],
-        "capabilities" : [ "RayQueryProvisionalKHR" ],
-        "extensions" : [ "SPV_KHR_ray_query" ],
-        "version" : "None"
-    },
-    {
-        "opname" : "OpRayQueryGetIntersectionInstanceCustomIndexKHR",
-        "class" : "Reserved",
-        "opcode" : 6019,
-        "operands" : [
-            { "kind" : "IdResultType" },
-            { "kind" : "IdResult" },
-            {
-                "kind" : "IdRef",
-                "name" : "'RayQuery'"
-            },
-            {
-                "kind" : "IdRef",
-                "name" : "'Intersection'"
-            }
-        ],
-        "capabilities" : [ "RayQueryProvisionalKHR" ],
-        "extensions" : [ "SPV_KHR_ray_query" ],
-        "version" : "None"
-    },
-    {
-        "opname" : "OpRayQueryGetIntersectionInstanceIdKHR",
-        "class" : "Reserved",
-        "opcode" : 6020,
-        "operands" : [
-            { "kind" : "IdResultType" },
-            { "kind" : "IdResult" },
-            {
-                "kind" : "IdRef",
-                "name" : "'RayQuery'"
-            },
-            {
-                "kind" : "IdRef",
-                "name" : "'Intersection'"
-            }
-        ],
-        "capabilities" : [ "RayQueryProvisionalKHR" ],
-        "extensions" : [ "SPV_KHR_ray_query" ],
-        "version" : "None"
-    },
-    {
-        "opname" : "OpRayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR",
-        "class" : "Reserved",
-        "opcode" : 6021,
-        "operands" : [
-            { "kind" : "IdResultType" },
-            { "kind" : "IdResult" },
-            {
-                "kind" : "IdRef",
-                "name" : "'RayQuery'"
-            },
-            {
-                "kind" : "IdRef",
-                "name" : "'Intersection'"
-            }
-        ],
-        "capabilities" : [ "RayQueryProvisionalKHR" ],
-        "extensions" : [ "SPV_KHR_ray_query" ],
-        "version" : "None"
-    },
-    {
-        "opname" : "OpRayQueryGetIntersectionGeometryIndexKHR",
-        "class" : "Reserved",
-        "opcode" : 6022,
-        "operands" : [
-            { "kind" : "IdResultType" },
-            { "kind" : "IdResult" },
-            {
-                "kind" : "IdRef",
-                "name" : "'RayQuery'"
-            },
-            {
-                "kind" : "IdRef",
-                "name" : "'Intersection'"
-            }
-        ],
-        "capabilities" : [ "RayQueryProvisionalKHR" ],
-        "extensions" : [ "SPV_KHR_ray_query" ],
-        "version" : "None"
-    },
-    {
-        "opname" : "OpRayQueryGetIntersectionPrimitiveIndexKHR",
-        "class" : "Reserved",
-        "opcode" : 6023,
-        "operands" : [
-            { "kind" : "IdResultType" },
-            { "kind" : "IdResult" },
-            {
-                "kind" : "IdRef",
-                "name" : "'RayQuery'"
-            },
-            {
-                "kind" : "IdRef",
-                "name" : "'Intersection'"
-            }
-        ],
-        "capabilities" : [ "RayQueryProvisionalKHR" ],
-        "extensions" : [ "SPV_KHR_ray_query" ],
-        "version" : "None"
-    },
-    {
-        "opname" : "OpRayQueryGetIntersectionBarycentricsKHR",
-        "class" : "Reserved",
-        "opcode" : 6024,
-        "operands" : [
-            { "kind" : "IdResultType" },
-            { "kind" : "IdResult" },
-            {
-                "kind" : "IdRef",
-                "name" : "'RayQuery'"
-            },
-            {
-                "kind" : "IdRef",
-                "name" : "'Intersection'"
-            }
-        ],
-        "capabilities" : [ "RayQueryProvisionalKHR" ],
-        "extensions" : [ "SPV_KHR_ray_query" ],
-        "version" : "None"
-    },
-    {
-        "opname" : "OpRayQueryGetIntersectionFrontFaceKHR",
-        "class" : "Reserved",
-        "opcode" : 6025,
-        "operands" : [
-            { "kind" : "IdResultType" },
-            { "kind" : "IdResult" },
-            {
-                "kind" : "IdRef",
-                "name" : "'RayQuery'"
-            },
-            {
-                "kind" : "IdRef",
-                "name" : "'Intersection'"
-            }
-        ],
-        "capabilities" : [ "RayQueryProvisionalKHR" ],
-        "extensions" : [ "SPV_KHR_ray_query" ],
-        "version" : "None"
-    },
-    {
-        "opname" : "OpRayQueryGetIntersectionCandidateAABBOpaqueKHR",
-        "class" : "Reserved",
-        "opcode" : 6026,
-        "operands" : [
-            { "kind" : "IdResultType" },
-            { "kind" : "IdResult" },
-            {
-                "kind" : "IdRef",
-                "name" : "'RayQuery'"
-            }
-        ],
-        "capabilities" : [ "RayQueryProvisionalKHR" ],
-        "extensions" : [ "SPV_KHR_ray_query" ],
-        "version" : "None"
-    },
-    {
-        "opname" : "OpRayQueryGetIntersectionObjectRayDirectionKHR",
-        "class" : "Reserved",
-        "opcode" : 6027,
-        "operands" : [
-            { "kind" : "IdResultType" },
-            { "kind" : "IdResult" },
-            {
-                "kind" : "IdRef",
-                "name" : "'RayQuery'"
-            },
-            {
-                "kind" : "IdRef",
-                "name" : "'Intersection'"
-            }
-        ],
-        "capabilities" : [ "RayQueryProvisionalKHR" ],
-        "extensions" : [ "SPV_KHR_ray_query" ],
-        "version" : "None"
-    },
-    {
-        "opname" : "OpRayQueryGetIntersectionObjectRayOriginKHR",
-        "class" : "Reserved",
-        "opcode" : 6028,
-        "operands" : [
-            { "kind" : "IdResultType" },
-            { "kind" : "IdResult" },
-            {
-                "kind" : "IdRef",
-                "name" : "'RayQuery'"
-            },
-            {
-                "kind" : "IdRef",
-                "name" : "'Intersection'"
-            }
-        ],
-        "capabilities" : [ "RayQueryProvisionalKHR" ],
-        "extensions" : [ "SPV_KHR_ray_query" ],
-        "version" : "None"
-    },
-    {
-        "opname" : "OpRayQueryGetWorldRayDirectionKHR",
-        "class" : "Reserved",
-        "opcode" : 6029,
-        "operands" : [
-            { "kind" : "IdResultType" },
-            { "kind" : "IdResult" },
-            {
-                "kind" : "IdRef",
-                "name" : "'RayQuery'"
-            }
-        ],
-        "capabilities" : [ "RayQueryProvisionalKHR" ],
-        "extensions" : [ "SPV_KHR_ray_query" ],
-        "version" : "None"
-    },
-
-    {
-        "opname" : "OpRayQueryGetWorldRayOriginKHR",
-        "class" : "Reserved",
-        "opcode" : 6030,
-        "operands" : [
-            { "kind" : "IdResultType" },
-            { "kind" : "IdResult" },
-            {
-                "kind" : "IdRef",
-                "name" : "'RayQuery'"
-            }
-        ],
-        "capabilities" : [ "RayQueryProvisionalKHR" ],
-        "extensions" : [ "SPV_KHR_ray_query" ],
-        "version" : "None"
-    },
-    {
-        "opname" : "OpRayQueryGetIntersectionObjectToWorldKHR",
-        "class" : "Reserved",
-        "opcode" : 6031,
-        "operands" : [
-            { "kind" : "IdResultType" },
-            { "kind" : "IdResult" },
-            {
-                "kind" : "IdRef",
-                "name" : "'RayQuery'"
-            },
-            {
-                "kind" : "IdRef",
-                "name" : "'Intersection'"
-            }
-        ],
-        "capabilities" : [ "RayQueryProvisionalKHR" ],
-        "extensions" : [ "SPV_KHR_ray_query" ],
-        "version" : "None"
-    },
-    {
-        "opname" : "OpRayQueryGetIntersectionWorldToObjectKHR",
-        "class" : "Reserved",
-        "opcode" : 6032,
-        "operands" : [
-            { "kind" : "IdResultType" },
-            { "kind" : "IdResult" },
-            {
-                "kind" : "IdRef",
-                "name" : "'RayQuery'"
-            },
-             {
-                "kind" : "IdRef",
-                "name" : "'Intersection'"
-            }
-        ],
-        "capabilities" : [ "RayQueryProvisionalKHR" ],
-        "extensions" : [ "SPV_KHR_ray_query" ],
-        "version" : "None"
-    },
-    {
       "opname" : "OpExecuteCallableNV",
       "class"  : "Reserved",
       "opcode" : 5344,
@@ -7008,6 +6687,326 @@
       ],
       "capabilities" : [ "SubgroupAvcMotionEstimationINTEL" ],
       "version" : "None"
+    },
+    {
+        "opname" : "OpRayQueryGetRayTMinKHR",
+        "class" : "Reserved",
+        "opcode" : 6016,
+        "operands" : [
+            { "kind" : "IdResultType" },
+            { "kind" : "IdResult" },
+            {
+                "kind" : "IdRef",
+                "name" : "'RayQuery'"
+            }
+        ],
+        "capabilities" : [ "RayQueryProvisionalKHR" ],
+        "extensions" : [ "SPV_KHR_ray_query" ],
+        "version" : "None"
+    },
+    {
+        "opname" : "OpRayQueryGetRayFlagsKHR",
+        "class" : "Reserved",
+        "opcode" : 6017,
+        "operands" : [
+            { "kind" : "IdResultType" },
+            { "kind" : "IdResult" },
+            {
+                "kind" : "IdRef",
+                "name" : "'RayQuery'"
+            }
+        ],
+        "capabilities" : [ "RayQueryProvisionalKHR" ],
+        "extensions" : [ "SPV_KHR_ray_query" ],
+        "version" : "None"
+    },
+    {
+        "opname" : "OpRayQueryGetIntersectionTKHR",
+        "class" : "Reserved",
+        "opcode" : 6018,
+        "operands" : [
+            { "kind" : "IdResultType" },
+            { "kind" : "IdResult" },
+            {
+                "kind" : "IdRef",
+                "name" : "'RayQuery'"
+            },
+            {
+                "kind" : "IdRef",
+                "name" : "'Intersection'"
+            }
+        ],
+        "capabilities" : [ "RayQueryProvisionalKHR" ],
+        "extensions" : [ "SPV_KHR_ray_query" ],
+        "version" : "None"
+    },
+    {
+        "opname" : "OpRayQueryGetIntersectionInstanceCustomIndexKHR",
+        "class" : "Reserved",
+        "opcode" : 6019,
+        "operands" : [
+            { "kind" : "IdResultType" },
+            { "kind" : "IdResult" },
+            {
+                "kind" : "IdRef",
+                "name" : "'RayQuery'"
+            },
+            {
+                "kind" : "IdRef",
+                "name" : "'Intersection'"
+            }
+        ],
+        "capabilities" : [ "RayQueryProvisionalKHR" ],
+        "extensions" : [ "SPV_KHR_ray_query" ],
+        "version" : "None"
+    },
+    {
+        "opname" : "OpRayQueryGetIntersectionInstanceIdKHR",
+        "class" : "Reserved",
+        "opcode" : 6020,
+        "operands" : [
+            { "kind" : "IdResultType" },
+            { "kind" : "IdResult" },
+            {
+                "kind" : "IdRef",
+                "name" : "'RayQuery'"
+            },
+            {
+                "kind" : "IdRef",
+                "name" : "'Intersection'"
+            }
+        ],
+        "capabilities" : [ "RayQueryProvisionalKHR" ],
+        "extensions" : [ "SPV_KHR_ray_query" ],
+        "version" : "None"
+    },
+    {
+        "opname" : "OpRayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR",
+        "class" : "Reserved",
+        "opcode" : 6021,
+        "operands" : [
+            { "kind" : "IdResultType" },
+            { "kind" : "IdResult" },
+            {
+                "kind" : "IdRef",
+                "name" : "'RayQuery'"
+            },
+            {
+                "kind" : "IdRef",
+                "name" : "'Intersection'"
+            }
+        ],
+        "capabilities" : [ "RayQueryProvisionalKHR" ],
+        "extensions" : [ "SPV_KHR_ray_query" ],
+        "version" : "None"
+    },
+    {
+        "opname" : "OpRayQueryGetIntersectionGeometryIndexKHR",
+        "class" : "Reserved",
+        "opcode" : 6022,
+        "operands" : [
+            { "kind" : "IdResultType" },
+            { "kind" : "IdResult" },
+            {
+                "kind" : "IdRef",
+                "name" : "'RayQuery'"
+            },
+            {
+                "kind" : "IdRef",
+                "name" : "'Intersection'"
+            }
+        ],
+        "capabilities" : [ "RayQueryProvisionalKHR" ],
+        "extensions" : [ "SPV_KHR_ray_query" ],
+        "version" : "None"
+    },
+    {
+        "opname" : "OpRayQueryGetIntersectionPrimitiveIndexKHR",
+        "class" : "Reserved",
+        "opcode" : 6023,
+        "operands" : [
+            { "kind" : "IdResultType" },
+            { "kind" : "IdResult" },
+            {
+                "kind" : "IdRef",
+                "name" : "'RayQuery'"
+            },
+            {
+                "kind" : "IdRef",
+                "name" : "'Intersection'"
+            }
+        ],
+        "capabilities" : [ "RayQueryProvisionalKHR" ],
+        "extensions" : [ "SPV_KHR_ray_query" ],
+        "version" : "None"
+    },
+    {
+        "opname" : "OpRayQueryGetIntersectionBarycentricsKHR",
+        "class" : "Reserved",
+        "opcode" : 6024,
+        "operands" : [
+            { "kind" : "IdResultType" },
+            { "kind" : "IdResult" },
+            {
+                "kind" : "IdRef",
+                "name" : "'RayQuery'"
+            },
+            {
+                "kind" : "IdRef",
+                "name" : "'Intersection'"
+            }
+        ],
+        "capabilities" : [ "RayQueryProvisionalKHR" ],
+        "extensions" : [ "SPV_KHR_ray_query" ],
+        "version" : "None"
+    },
+    {
+        "opname" : "OpRayQueryGetIntersectionFrontFaceKHR",
+        "class" : "Reserved",
+        "opcode" : 6025,
+        "operands" : [
+            { "kind" : "IdResultType" },
+            { "kind" : "IdResult" },
+            {
+                "kind" : "IdRef",
+                "name" : "'RayQuery'"
+            },
+            {
+                "kind" : "IdRef",
+                "name" : "'Intersection'"
+            }
+        ],
+        "capabilities" : [ "RayQueryProvisionalKHR" ],
+        "extensions" : [ "SPV_KHR_ray_query" ],
+        "version" : "None"
+    },
+    {
+        "opname" : "OpRayQueryGetIntersectionCandidateAABBOpaqueKHR",
+        "class" : "Reserved",
+        "opcode" : 6026,
+        "operands" : [
+            { "kind" : "IdResultType" },
+            { "kind" : "IdResult" },
+            {
+                "kind" : "IdRef",
+                "name" : "'RayQuery'"
+            }
+        ],
+        "capabilities" : [ "RayQueryProvisionalKHR" ],
+        "extensions" : [ "SPV_KHR_ray_query" ],
+        "version" : "None"
+    },
+    {
+        "opname" : "OpRayQueryGetIntersectionObjectRayDirectionKHR",
+        "class" : "Reserved",
+        "opcode" : 6027,
+        "operands" : [
+            { "kind" : "IdResultType" },
+            { "kind" : "IdResult" },
+            {
+                "kind" : "IdRef",
+                "name" : "'RayQuery'"
+            },
+            {
+                "kind" : "IdRef",
+                "name" : "'Intersection'"
+            }
+        ],
+        "capabilities" : [ "RayQueryProvisionalKHR" ],
+        "extensions" : [ "SPV_KHR_ray_query" ],
+        "version" : "None"
+    },
+    {
+        "opname" : "OpRayQueryGetIntersectionObjectRayOriginKHR",
+        "class" : "Reserved",
+        "opcode" : 6028,
+        "operands" : [
+            { "kind" : "IdResultType" },
+            { "kind" : "IdResult" },
+            {
+                "kind" : "IdRef",
+                "name" : "'RayQuery'"
+            },
+            {
+                "kind" : "IdRef",
+                "name" : "'Intersection'"
+            }
+        ],
+        "capabilities" : [ "RayQueryProvisionalKHR" ],
+        "extensions" : [ "SPV_KHR_ray_query" ],
+        "version" : "None"
+    },
+    {
+        "opname" : "OpRayQueryGetWorldRayDirectionKHR",
+        "class" : "Reserved",
+        "opcode" : 6029,
+        "operands" : [
+            { "kind" : "IdResultType" },
+            { "kind" : "IdResult" },
+            {
+                "kind" : "IdRef",
+                "name" : "'RayQuery'"
+            }
+        ],
+        "capabilities" : [ "RayQueryProvisionalKHR" ],
+        "extensions" : [ "SPV_KHR_ray_query" ],
+        "version" : "None"
+    },
+    {
+        "opname" : "OpRayQueryGetWorldRayOriginKHR",
+        "class" : "Reserved",
+        "opcode" : 6030,
+        "operands" : [
+            { "kind" : "IdResultType" },
+            { "kind" : "IdResult" },
+            {
+                "kind" : "IdRef",
+                "name" : "'RayQuery'"
+            }
+        ],
+        "capabilities" : [ "RayQueryProvisionalKHR" ],
+        "extensions" : [ "SPV_KHR_ray_query" ],
+        "version" : "None"
+    },
+    {
+        "opname" : "OpRayQueryGetIntersectionObjectToWorldKHR",
+        "class" : "Reserved",
+        "opcode" : 6031,
+        "operands" : [
+            { "kind" : "IdResultType" },
+            { "kind" : "IdResult" },
+            {
+                "kind" : "IdRef",
+                "name" : "'RayQuery'"
+            },
+            {
+                "kind" : "IdRef",
+                "name" : "'Intersection'"
+            }
+        ],
+        "capabilities" : [ "RayQueryProvisionalKHR" ],
+        "extensions" : [ "SPV_KHR_ray_query" ],
+        "version" : "None"
+    },
+    {
+        "opname" : "OpRayQueryGetIntersectionWorldToObjectKHR",
+        "class" : "Reserved",
+        "opcode" : 6032,
+        "operands" : [
+            { "kind" : "IdResultType" },
+            { "kind" : "IdResult" },
+            {
+                "kind" : "IdRef",
+                "name" : "'RayQuery'"
+            },
+             {
+                "kind" : "IdRef",
+                "name" : "'Intersection'"
+            }
+        ],
+        "capabilities" : [ "RayQueryProvisionalKHR" ],
+        "extensions" : [ "SPV_KHR_ray_query" ],
+        "version" : "None"
     }
   ],
   "operand_kinds" : [
@@ -7506,57 +7505,68 @@
         {
           "enumerant" : "NoneKHR",
           "value" : "0x0000",
-          "capabilities" : [ "RayQueryProvisionalKHR","RayTracingProvisionalKHR" ]
+          "capabilities" : [ "RayQueryProvisionalKHR","RayTracingProvisionalKHR" ],
+          "version" : "None"
         },
         {
           "enumerant" : "OpaqueKHR",
           "value" : "0x0001",
-          "capabilities" : [ "RayQueryProvisionalKHR","RayTracingProvisionalKHR" ]
+          "capabilities" : [ "RayQueryProvisionalKHR","RayTracingProvisionalKHR" ],
+          "version" : "None"
         },
         {
           "enumerant" : "NoOpaqueKHR",
           "value" : "0x0002",
-          "capabilities" : [ "RayQueryProvisionalKHR","RayTracingProvisionalKHR" ]
+          "capabilities" : [ "RayQueryProvisionalKHR","RayTracingProvisionalKHR" ],
+          "version" : "None"
         },
         {
           "enumerant" : "TerminateOnFirstHitKHR",
           "value" : "0x0004",
-          "capabilities" : [ "RayQueryProvisionalKHR","RayTracingProvisionalKHR" ]
+          "capabilities" : [ "RayQueryProvisionalKHR","RayTracingProvisionalKHR" ],
+          "version" : "None"
         },
         {
           "enumerant" : "SkipClosestHitShaderKHR",
           "value" : "0x0008",
-          "capabilities" : [ "RayQueryProvisionalKHR","RayTracingProvisionalKHR" ]
+          "capabilities" : [ "RayQueryProvisionalKHR","RayTracingProvisionalKHR" ],
+          "version" : "None"
         },
         {
           "enumerant" : "CullBackFacingTrianglesKHR",
           "value" : "0x0010",
-          "capabilities" : [ "RayQueryProvisionalKHR","RayTracingProvisionalKHR" ]
+          "capabilities" : [ "RayQueryProvisionalKHR","RayTracingProvisionalKHR" ],
+          "version" : "None"
         },
         {
           "enumerant" : "CullFrontFacingTrianglesKHR",
           "value" : "0x0020",
-          "capabilities" : [ "RayQueryProvisionalKHR","RayTracingProvisionalKHR" ]
+          "capabilities" : [ "RayQueryProvisionalKHR","RayTracingProvisionalKHR" ],
+          "version" : "None"
         },
         {
           "enumerant" : "CullOpaqueKHR",
           "value" : "0x0040",
-          "capabilities" : [ "RayQueryProvisionalKHR","RayTracingProvisionalKHR" ]
+          "capabilities" : [ "RayQueryProvisionalKHR","RayTracingProvisionalKHR" ],
+          "version" : "None"
         },
         {
           "enumerant" : "CullNoOpaqueKHR",
           "value" : "0x0080",
-          "capabilities" : [ "RayQueryProvisionalKHR","RayTracingProvisionalKHR" ]
+          "capabilities" : [ "RayQueryProvisionalKHR","RayTracingProvisionalKHR" ],
+          "version" : "None"
         },
         {
           "enumerant" : "SkipTrianglesKHR",
           "value" : "0x0100",
-          "capabilities" : [ "RayTraversalPrimitiveCullingProvisionalKHR" ]
+          "capabilities" : [ "RayTraversalPrimitiveCullingProvisionalKHR" ],
+          "version" : "None"
         },
         {
           "enumerant" : "SkipAABBsKHR",
           "value" : "0x0200",
-          "capabilities" : [ "RayTraversalPrimitiveCullingProvisionalKHR" ]
+          "capabilities" : [ "RayTraversalPrimitiveCullingProvisionalKHR" ],
+          "version" : "None"
         }
       ]
     },
@@ -10172,7 +10182,8 @@
         {
           "enumerant" : "ShaderCallKHR",
           "value" : 6,
-          "capabilities" : [ "RayTracingProvisionalKHR" ]
+          "capabilities" : [ "RayTracingProvisionalKHR" ],
+          "version" : "None"
         }
       ]
     },
@@ -11225,12 +11236,14 @@
         {
           "enumerant" : "RayQueryCandidateIntersectionKHR",
           "value" : 0,
-          "capabilities" : [ "RayQueryProvisionalKHR" ]
+          "capabilities" : [ "RayQueryProvisionalKHR" ],
+          "version" : "None"
         },
         {
           "enumerant" : "RayQueryCommittedIntersectionKHR",
           "value" : 1,
-          "capabilities" : [ "RayQueryProvisionalKHR" ]
+          "capabilities" : [ "RayQueryProvisionalKHR" ],
+          "version" : "None"
         }
       ]
     },
@@ -11241,17 +11254,20 @@
         {
           "enumerant" : "RayQueryCommittedIntersectionNoneKHR",
           "value" : 0,
-          "capabilities" : [ "RayQueryProvisionalKHR" ]
+          "capabilities" : [ "RayQueryProvisionalKHR" ],
+          "version" : "None"
         },
         {
           "enumerant" : "RayQueryCommittedIntersectionTriangleKHR",
           "value" : 1,
-          "capabilities" : [ "RayQueryProvisionalKHR" ]
+          "capabilities" : [ "RayQueryProvisionalKHR" ],
+          "version" : "None"
         },
         {
           "enumerant" : "RayQueryCommittedIntersectionGeneratedKHR",
           "value" : 2,
-          "capabilities" : [ "RayQueryProvisionalKHR" ]
+          "capabilities" : [ "RayQueryProvisionalKHR" ],
+          "version" : "None"
         }
       ]
     },
@@ -11262,12 +11278,14 @@
         {
           "enumerant" : "RayQueryCandidateIntersectionTriangleKHR",
           "value" : 0,
-          "capabilities" : [ "RayQueryProvisionalKHR" ]
+          "capabilities" : [ "RayQueryProvisionalKHR" ],
+          "version" : "None"
         },
         {
           "enumerant" : "RayQueryCandidateIntersectionAABBKHR",
           "value" : 1,
-          "capabilities" : [ "RayQueryProvisionalKHR" ]
+          "capabilities" : [ "RayQueryProvisionalKHR" ],
+          "version" : "None"
         }
       ]
     },
diff --git a/include/spirv/unified1/spirv.cs b/include/spirv/unified1/spirv.cs
index c5ddff9..82d73e3 100644
--- a/include/spirv/unified1/spirv.cs
+++ b/include/spirv/unified1/spirv.cs
@@ -49,7 +49,7 @@
     {
         public const uint MagicNumber = 0x07230203;
         public const uint Version = 0x00010500;
-        public const uint Revision = 1;
+        public const uint Revision = 3;
         public const uint OpCodeMask = 0xffff;
         public const uint WordCountShift = 16;
 
diff --git a/include/spirv/unified1/spirv.h b/include/spirv/unified1/spirv.h
index 92b34c3..dd9850d 100644
--- a/include/spirv/unified1/spirv.h
+++ b/include/spirv/unified1/spirv.h
@@ -54,11 +54,11 @@
 typedef unsigned int SpvId;
 
 #define SPV_VERSION 0x10500
-#define SPV_REVISION 1
+#define SPV_REVISION 3
 
 static const unsigned int SpvMagicNumber = 0x07230203;
 static const unsigned int SpvVersion = 0x00010500;
-static const unsigned int SpvRevision = 1;
+static const unsigned int SpvRevision = 3;
 static const unsigned int SpvOpCodeMask = 0xffff;
 static const unsigned int SpvWordCountShift = 16;
 
@@ -1899,6 +1899,13 @@
     case SpvOpSubgroupAnyKHR: *hasResult = true; *hasResultType = true; break;
     case SpvOpSubgroupAllEqualKHR: *hasResult = true; *hasResultType = true; break;
     case SpvOpSubgroupReadInvocationKHR: *hasResult = true; *hasResultType = true; break;
+    case SpvOpTypeRayQueryProvisionalKHR: *hasResult = true; *hasResultType = false; break;
+    case SpvOpRayQueryInitializeKHR: *hasResult = false; *hasResultType = false; break;
+    case SpvOpRayQueryTerminateKHR: *hasResult = false; *hasResultType = false; break;
+    case SpvOpRayQueryGenerateIntersectionKHR: *hasResult = false; *hasResultType = false; break;
+    case SpvOpRayQueryConfirmIntersectionKHR: *hasResult = false; *hasResultType = false; break;
+    case SpvOpRayQueryProceedKHR: *hasResult = true; *hasResultType = true; break;
+    case SpvOpRayQueryGetIntersectionTypeKHR: *hasResult = true; *hasResultType = true; break;
     case SpvOpGroupIAddNonUniformAMD: *hasResult = true; *hasResultType = true; break;
     case SpvOpGroupFAddNonUniformAMD: *hasResult = true; *hasResultType = true; break;
     case SpvOpGroupFMinNonUniformAMD: *hasResult = true; *hasResultType = true; break;
@@ -1918,30 +1925,6 @@
     case SpvOpTerminateRayNV: *hasResult = false; *hasResultType = false; break;
     case SpvOpTraceNV: *hasResult = false; *hasResultType = false; break;
     case SpvOpTypeAccelerationStructureNV: *hasResult = true; *hasResultType = false; break;
-    case SpvOpTypeRayQueryProvisionalKHR: *hasResult = true; *hasResultType = false; break;
-    case SpvOpRayQueryInitializeKHR: *hasResult = false; *hasResultType = false; break;
-    case SpvOpRayQueryTerminateKHR: *hasResult = false; *hasResultType = false; break;
-    case SpvOpRayQueryGenerateIntersectionKHR: *hasResult = false; *hasResultType = false; break;
-    case SpvOpRayQueryConfirmIntersectionKHR: *hasResult = false; *hasResultType = false; break;
-    case SpvOpRayQueryProceedKHR: *hasResult = true; *hasResultType = true; break;
-    case SpvOpRayQueryGetIntersectionTypeKHR: *hasResult = true; *hasResultType = true; break;
-    case SpvOpRayQueryGetRayTMinKHR: *hasResult = true; *hasResultType = true; break;
-    case SpvOpRayQueryGetRayFlagsKHR: *hasResult = true; *hasResultType = true; break;
-    case SpvOpRayQueryGetIntersectionTKHR: *hasResult = true; *hasResultType = true; break;
-    case SpvOpRayQueryGetIntersectionInstanceCustomIndexKHR: *hasResult = true; *hasResultType = true; break;
-    case SpvOpRayQueryGetIntersectionInstanceIdKHR: *hasResult = true; *hasResultType = true; break;
-    case SpvOpRayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR: *hasResult = true; *hasResultType = true; break;
-    case SpvOpRayQueryGetIntersectionGeometryIndexKHR: *hasResult = true; *hasResultType = true; break;
-    case SpvOpRayQueryGetIntersectionPrimitiveIndexKHR: *hasResult = true; *hasResultType = true; break;
-    case SpvOpRayQueryGetIntersectionBarycentricsKHR: *hasResult = true; *hasResultType = true; break;
-    case SpvOpRayQueryGetIntersectionFrontFaceKHR: *hasResult = true; *hasResultType = true; break;
-    case SpvOpRayQueryGetIntersectionCandidateAABBOpaqueKHR: *hasResult = true; *hasResultType = true; break;
-    case SpvOpRayQueryGetIntersectionObjectRayDirectionKHR: *hasResult = true; *hasResultType = true; break;
-    case SpvOpRayQueryGetIntersectionObjectRayOriginKHR: *hasResult = true; *hasResultType = true; break;
-    case SpvOpRayQueryGetWorldRayDirectionKHR: *hasResult = true; *hasResultType = true; break;
-    case SpvOpRayQueryGetWorldRayOriginKHR: *hasResult = true; *hasResultType = true; break;
-    case SpvOpRayQueryGetIntersectionObjectToWorldKHR: *hasResult = true; *hasResultType = true; break;
-    case SpvOpRayQueryGetIntersectionWorldToObjectKHR: *hasResult = true; *hasResultType = true; break;
     case SpvOpExecuteCallableNV: *hasResult = false; *hasResultType = false; break;
     case SpvOpTypeCooperativeMatrixNV: *hasResult = true; *hasResultType = false; break;
     case SpvOpCooperativeMatrixLoadNV: *hasResult = true; *hasResultType = true; break;
@@ -2096,6 +2079,23 @@
     case SpvOpSubgroupAvcSicGetPackedSkcLumaCountThresholdINTEL: *hasResult = true; *hasResultType = true; break;
     case SpvOpSubgroupAvcSicGetPackedSkcLumaSumThresholdINTEL: *hasResult = true; *hasResultType = true; break;
     case SpvOpSubgroupAvcSicGetInterRawSadsINTEL: *hasResult = true; *hasResultType = true; break;
+    case SpvOpRayQueryGetRayTMinKHR: *hasResult = true; *hasResultType = true; break;
+    case SpvOpRayQueryGetRayFlagsKHR: *hasResult = true; *hasResultType = true; break;
+    case SpvOpRayQueryGetIntersectionTKHR: *hasResult = true; *hasResultType = true; break;
+    case SpvOpRayQueryGetIntersectionInstanceCustomIndexKHR: *hasResult = true; *hasResultType = true; break;
+    case SpvOpRayQueryGetIntersectionInstanceIdKHR: *hasResult = true; *hasResultType = true; break;
+    case SpvOpRayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR: *hasResult = true; *hasResultType = true; break;
+    case SpvOpRayQueryGetIntersectionGeometryIndexKHR: *hasResult = true; *hasResultType = true; break;
+    case SpvOpRayQueryGetIntersectionPrimitiveIndexKHR: *hasResult = true; *hasResultType = true; break;
+    case SpvOpRayQueryGetIntersectionBarycentricsKHR: *hasResult = true; *hasResultType = true; break;
+    case SpvOpRayQueryGetIntersectionFrontFaceKHR: *hasResult = true; *hasResultType = true; break;
+    case SpvOpRayQueryGetIntersectionCandidateAABBOpaqueKHR: *hasResult = true; *hasResultType = true; break;
+    case SpvOpRayQueryGetIntersectionObjectRayDirectionKHR: *hasResult = true; *hasResultType = true; break;
+    case SpvOpRayQueryGetIntersectionObjectRayOriginKHR: *hasResult = true; *hasResultType = true; break;
+    case SpvOpRayQueryGetWorldRayDirectionKHR: *hasResult = true; *hasResultType = true; break;
+    case SpvOpRayQueryGetWorldRayOriginKHR: *hasResult = true; *hasResultType = true; break;
+    case SpvOpRayQueryGetIntersectionObjectToWorldKHR: *hasResult = true; *hasResultType = true; break;
+    case SpvOpRayQueryGetIntersectionWorldToObjectKHR: *hasResult = true; *hasResultType = true; break;
     }
 }
 #endif /* SPV_ENABLE_UTILITY_CODE */
diff --git a/include/spirv/unified1/spirv.hpp b/include/spirv/unified1/spirv.hpp
index 9f98683..dae36cf 100644
--- a/include/spirv/unified1/spirv.hpp
+++ b/include/spirv/unified1/spirv.hpp
@@ -50,11 +50,11 @@
 typedef unsigned int Id;
 
 #define SPV_VERSION 0x10500
-#define SPV_REVISION 1
+#define SPV_REVISION 3
 
 static const unsigned int MagicNumber = 0x07230203;
 static const unsigned int Version = 0x00010500;
-static const unsigned int Revision = 1;
+static const unsigned int Revision = 3;
 static const unsigned int OpCodeMask = 0xffff;
 static const unsigned int WordCountShift = 16;
 
@@ -1895,6 +1895,13 @@
     case OpSubgroupAnyKHR: *hasResult = true; *hasResultType = true; break;
     case OpSubgroupAllEqualKHR: *hasResult = true; *hasResultType = true; break;
     case OpSubgroupReadInvocationKHR: *hasResult = true; *hasResultType = true; break;
+    case OpTypeRayQueryProvisionalKHR: *hasResult = true; *hasResultType = false; break;
+    case OpRayQueryInitializeKHR: *hasResult = false; *hasResultType = false; break;
+    case OpRayQueryTerminateKHR: *hasResult = false; *hasResultType = false; break;
+    case OpRayQueryGenerateIntersectionKHR: *hasResult = false; *hasResultType = false; break;
+    case OpRayQueryConfirmIntersectionKHR: *hasResult = false; *hasResultType = false; break;
+    case OpRayQueryProceedKHR: *hasResult = true; *hasResultType = true; break;
+    case OpRayQueryGetIntersectionTypeKHR: *hasResult = true; *hasResultType = true; break;
     case OpGroupIAddNonUniformAMD: *hasResult = true; *hasResultType = true; break;
     case OpGroupFAddNonUniformAMD: *hasResult = true; *hasResultType = true; break;
     case OpGroupFMinNonUniformAMD: *hasResult = true; *hasResultType = true; break;
@@ -1914,30 +1921,6 @@
     case OpTerminateRayNV: *hasResult = false; *hasResultType = false; break;
     case OpTraceNV: *hasResult = false; *hasResultType = false; break;
     case OpTypeAccelerationStructureNV: *hasResult = true; *hasResultType = false; break;
-    case OpTypeRayQueryProvisionalKHR: *hasResult = true; *hasResultType = false; break;
-    case OpRayQueryInitializeKHR: *hasResult = false; *hasResultType = false; break;
-    case OpRayQueryTerminateKHR: *hasResult = false; *hasResultType = false; break;
-    case OpRayQueryGenerateIntersectionKHR: *hasResult = false; *hasResultType = false; break;
-    case OpRayQueryConfirmIntersectionKHR: *hasResult = false; *hasResultType = false; break;
-    case OpRayQueryProceedKHR: *hasResult = true; *hasResultType = true; break;
-    case OpRayQueryGetIntersectionTypeKHR: *hasResult = true; *hasResultType = true; break;
-    case OpRayQueryGetRayTMinKHR: *hasResult = true; *hasResultType = true; break;
-    case OpRayQueryGetRayFlagsKHR: *hasResult = true; *hasResultType = true; break;
-    case OpRayQueryGetIntersectionTKHR: *hasResult = true; *hasResultType = true; break;
-    case OpRayQueryGetIntersectionInstanceCustomIndexKHR: *hasResult = true; *hasResultType = true; break;
-    case OpRayQueryGetIntersectionInstanceIdKHR: *hasResult = true; *hasResultType = true; break;
-    case OpRayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR: *hasResult = true; *hasResultType = true; break;
-    case OpRayQueryGetIntersectionGeometryIndexKHR: *hasResult = true; *hasResultType = true; break;
-    case OpRayQueryGetIntersectionPrimitiveIndexKHR: *hasResult = true; *hasResultType = true; break;
-    case OpRayQueryGetIntersectionBarycentricsKHR: *hasResult = true; *hasResultType = true; break;
-    case OpRayQueryGetIntersectionFrontFaceKHR: *hasResult = true; *hasResultType = true; break;
-    case OpRayQueryGetIntersectionCandidateAABBOpaqueKHR: *hasResult = true; *hasResultType = true; break;
-    case OpRayQueryGetIntersectionObjectRayDirectionKHR: *hasResult = true; *hasResultType = true; break;
-    case OpRayQueryGetIntersectionObjectRayOriginKHR: *hasResult = true; *hasResultType = true; break;
-    case OpRayQueryGetWorldRayDirectionKHR: *hasResult = true; *hasResultType = true; break;
-    case OpRayQueryGetWorldRayOriginKHR: *hasResult = true; *hasResultType = true; break;
-    case OpRayQueryGetIntersectionObjectToWorldKHR: *hasResult = true; *hasResultType = true; break;
-    case OpRayQueryGetIntersectionWorldToObjectKHR: *hasResult = true; *hasResultType = true; break;
     case OpExecuteCallableNV: *hasResult = false; *hasResultType = false; break;
     case OpTypeCooperativeMatrixNV: *hasResult = true; *hasResultType = false; break;
     case OpCooperativeMatrixLoadNV: *hasResult = true; *hasResultType = true; break;
@@ -2092,6 +2075,23 @@
     case OpSubgroupAvcSicGetPackedSkcLumaCountThresholdINTEL: *hasResult = true; *hasResultType = true; break;
     case OpSubgroupAvcSicGetPackedSkcLumaSumThresholdINTEL: *hasResult = true; *hasResultType = true; break;
     case OpSubgroupAvcSicGetInterRawSadsINTEL: *hasResult = true; *hasResultType = true; break;
+    case OpRayQueryGetRayTMinKHR: *hasResult = true; *hasResultType = true; break;
+    case OpRayQueryGetRayFlagsKHR: *hasResult = true; *hasResultType = true; break;
+    case OpRayQueryGetIntersectionTKHR: *hasResult = true; *hasResultType = true; break;
+    case OpRayQueryGetIntersectionInstanceCustomIndexKHR: *hasResult = true; *hasResultType = true; break;
+    case OpRayQueryGetIntersectionInstanceIdKHR: *hasResult = true; *hasResultType = true; break;
+    case OpRayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR: *hasResult = true; *hasResultType = true; break;
+    case OpRayQueryGetIntersectionGeometryIndexKHR: *hasResult = true; *hasResultType = true; break;
+    case OpRayQueryGetIntersectionPrimitiveIndexKHR: *hasResult = true; *hasResultType = true; break;
+    case OpRayQueryGetIntersectionBarycentricsKHR: *hasResult = true; *hasResultType = true; break;
+    case OpRayQueryGetIntersectionFrontFaceKHR: *hasResult = true; *hasResultType = true; break;
+    case OpRayQueryGetIntersectionCandidateAABBOpaqueKHR: *hasResult = true; *hasResultType = true; break;
+    case OpRayQueryGetIntersectionObjectRayDirectionKHR: *hasResult = true; *hasResultType = true; break;
+    case OpRayQueryGetIntersectionObjectRayOriginKHR: *hasResult = true; *hasResultType = true; break;
+    case OpRayQueryGetWorldRayDirectionKHR: *hasResult = true; *hasResultType = true; break;
+    case OpRayQueryGetWorldRayOriginKHR: *hasResult = true; *hasResultType = true; break;
+    case OpRayQueryGetIntersectionObjectToWorldKHR: *hasResult = true; *hasResultType = true; break;
+    case OpRayQueryGetIntersectionWorldToObjectKHR: *hasResult = true; *hasResultType = true; break;
     }
 }
 #endif /* SPV_ENABLE_UTILITY_CODE */
diff --git a/include/spirv/unified1/spirv.hpp11 b/include/spirv/unified1/spirv.hpp11
index 406ba19..e34318d 100644
--- a/include/spirv/unified1/spirv.hpp11
+++ b/include/spirv/unified1/spirv.hpp11
@@ -50,11 +50,11 @@
 typedef unsigned int Id;
 
 #define SPV_VERSION 0x10500
-#define SPV_REVISION 1
+#define SPV_REVISION 3
 
 static const unsigned int MagicNumber = 0x07230203;
 static const unsigned int Version = 0x00010500;
-static const unsigned int Revision = 1;
+static const unsigned int Revision = 3;
 static const unsigned int OpCodeMask = 0xffff;
 static const unsigned int WordCountShift = 16;
 
@@ -1895,6 +1895,13 @@
     case Op::OpSubgroupAnyKHR: *hasResult = true; *hasResultType = true; break;
     case Op::OpSubgroupAllEqualKHR: *hasResult = true; *hasResultType = true; break;
     case Op::OpSubgroupReadInvocationKHR: *hasResult = true; *hasResultType = true; break;
+    case Op::OpTypeRayQueryProvisionalKHR: *hasResult = true; *hasResultType = false; break;
+    case Op::OpRayQueryInitializeKHR: *hasResult = false; *hasResultType = false; break;
+    case Op::OpRayQueryTerminateKHR: *hasResult = false; *hasResultType = false; break;
+    case Op::OpRayQueryGenerateIntersectionKHR: *hasResult = false; *hasResultType = false; break;
+    case Op::OpRayQueryConfirmIntersectionKHR: *hasResult = false; *hasResultType = false; break;
+    case Op::OpRayQueryProceedKHR: *hasResult = true; *hasResultType = true; break;
+    case Op::OpRayQueryGetIntersectionTypeKHR: *hasResult = true; *hasResultType = true; break;
     case Op::OpGroupIAddNonUniformAMD: *hasResult = true; *hasResultType = true; break;
     case Op::OpGroupFAddNonUniformAMD: *hasResult = true; *hasResultType = true; break;
     case Op::OpGroupFMinNonUniformAMD: *hasResult = true; *hasResultType = true; break;
@@ -1914,30 +1921,6 @@
     case Op::OpTerminateRayNV: *hasResult = false; *hasResultType = false; break;
     case Op::OpTraceNV: *hasResult = false; *hasResultType = false; break;
     case Op::OpTypeAccelerationStructureNV: *hasResult = true; *hasResultType = false; break;
-    case Op::OpTypeRayQueryProvisionalKHR: *hasResult = true; *hasResultType = false; break;
-    case Op::OpRayQueryInitializeKHR: *hasResult = false; *hasResultType = false; break;
-    case Op::OpRayQueryTerminateKHR: *hasResult = false; *hasResultType = false; break;
-    case Op::OpRayQueryGenerateIntersectionKHR: *hasResult = false; *hasResultType = false; break;
-    case Op::OpRayQueryConfirmIntersectionKHR: *hasResult = false; *hasResultType = false; break;
-    case Op::OpRayQueryProceedKHR: *hasResult = true; *hasResultType = true; break;
-    case Op::OpRayQueryGetIntersectionTypeKHR: *hasResult = true; *hasResultType = true; break;
-    case Op::OpRayQueryGetRayTMinKHR: *hasResult = true; *hasResultType = true; break;
-    case Op::OpRayQueryGetRayFlagsKHR: *hasResult = true; *hasResultType = true; break;
-    case Op::OpRayQueryGetIntersectionTKHR: *hasResult = true; *hasResultType = true; break;
-    case Op::OpRayQueryGetIntersectionInstanceCustomIndexKHR: *hasResult = true; *hasResultType = true; break;
-    case Op::OpRayQueryGetIntersectionInstanceIdKHR: *hasResult = true; *hasResultType = true; break;
-    case Op::OpRayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR: *hasResult = true; *hasResultType = true; break;
-    case Op::OpRayQueryGetIntersectionGeometryIndexKHR: *hasResult = true; *hasResultType = true; break;
-    case Op::OpRayQueryGetIntersectionPrimitiveIndexKHR: *hasResult = true; *hasResultType = true; break;
-    case Op::OpRayQueryGetIntersectionBarycentricsKHR: *hasResult = true; *hasResultType = true; break;
-    case Op::OpRayQueryGetIntersectionFrontFaceKHR: *hasResult = true; *hasResultType = true; break;
-    case Op::OpRayQueryGetIntersectionCandidateAABBOpaqueKHR: *hasResult = true; *hasResultType = true; break;
-    case Op::OpRayQueryGetIntersectionObjectRayDirectionKHR: *hasResult = true; *hasResultType = true; break;
-    case Op::OpRayQueryGetIntersectionObjectRayOriginKHR: *hasResult = true; *hasResultType = true; break;
-    case Op::OpRayQueryGetWorldRayDirectionKHR: *hasResult = true; *hasResultType = true; break;
-    case Op::OpRayQueryGetWorldRayOriginKHR: *hasResult = true; *hasResultType = true; break;
-    case Op::OpRayQueryGetIntersectionObjectToWorldKHR: *hasResult = true; *hasResultType = true; break;
-    case Op::OpRayQueryGetIntersectionWorldToObjectKHR: *hasResult = true; *hasResultType = true; break;
     case Op::OpExecuteCallableNV: *hasResult = false; *hasResultType = false; break;
     case Op::OpTypeCooperativeMatrixNV: *hasResult = true; *hasResultType = false; break;
     case Op::OpCooperativeMatrixLoadNV: *hasResult = true; *hasResultType = true; break;
@@ -2092,6 +2075,23 @@
     case Op::OpSubgroupAvcSicGetPackedSkcLumaCountThresholdINTEL: *hasResult = true; *hasResultType = true; break;
     case Op::OpSubgroupAvcSicGetPackedSkcLumaSumThresholdINTEL: *hasResult = true; *hasResultType = true; break;
     case Op::OpSubgroupAvcSicGetInterRawSadsINTEL: *hasResult = true; *hasResultType = true; break;
+    case Op::OpRayQueryGetRayTMinKHR: *hasResult = true; *hasResultType = true; break;
+    case Op::OpRayQueryGetRayFlagsKHR: *hasResult = true; *hasResultType = true; break;
+    case Op::OpRayQueryGetIntersectionTKHR: *hasResult = true; *hasResultType = true; break;
+    case Op::OpRayQueryGetIntersectionInstanceCustomIndexKHR: *hasResult = true; *hasResultType = true; break;
+    case Op::OpRayQueryGetIntersectionInstanceIdKHR: *hasResult = true; *hasResultType = true; break;
+    case Op::OpRayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR: *hasResult = true; *hasResultType = true; break;
+    case Op::OpRayQueryGetIntersectionGeometryIndexKHR: *hasResult = true; *hasResultType = true; break;
+    case Op::OpRayQueryGetIntersectionPrimitiveIndexKHR: *hasResult = true; *hasResultType = true; break;
+    case Op::OpRayQueryGetIntersectionBarycentricsKHR: *hasResult = true; *hasResultType = true; break;
+    case Op::OpRayQueryGetIntersectionFrontFaceKHR: *hasResult = true; *hasResultType = true; break;
+    case Op::OpRayQueryGetIntersectionCandidateAABBOpaqueKHR: *hasResult = true; *hasResultType = true; break;
+    case Op::OpRayQueryGetIntersectionObjectRayDirectionKHR: *hasResult = true; *hasResultType = true; break;
+    case Op::OpRayQueryGetIntersectionObjectRayOriginKHR: *hasResult = true; *hasResultType = true; break;
+    case Op::OpRayQueryGetWorldRayDirectionKHR: *hasResult = true; *hasResultType = true; break;
+    case Op::OpRayQueryGetWorldRayOriginKHR: *hasResult = true; *hasResultType = true; break;
+    case Op::OpRayQueryGetIntersectionObjectToWorldKHR: *hasResult = true; *hasResultType = true; break;
+    case Op::OpRayQueryGetIntersectionWorldToObjectKHR: *hasResult = true; *hasResultType = true; break;
     }
 }
 #endif /* SPV_ENABLE_UTILITY_CODE */
diff --git a/include/spirv/unified1/spirv.json b/include/spirv/unified1/spirv.json
index d372beb..364f219 100644
--- a/include/spirv/unified1/spirv.json
+++ b/include/spirv/unified1/spirv.json
@@ -55,7 +55,7 @@
             ],
             "MagicNumber": 119734787,
             "Version": 66816,
-            "Revision": 1,
+            "Revision": 3,
             "OpCodeMask": 65535,
             "WordCountShift": 16
         },
diff --git a/include/spirv/unified1/spirv.lua b/include/spirv/unified1/spirv.lua
index 3774a95..71698d8 100644
--- a/include/spirv/unified1/spirv.lua
+++ b/include/spirv/unified1/spirv.lua
@@ -45,7 +45,7 @@
 spv = {
     MagicNumber = 0x07230203,
     Version = 0x00010500,
-    Revision = 1,
+    Revision = 3,
     OpCodeMask = 0xffff,
     WordCountShift = 16,
 
diff --git a/include/spirv/unified1/spirv.py b/include/spirv/unified1/spirv.py
index a7344aa..911912b 100644
--- a/include/spirv/unified1/spirv.py
+++ b/include/spirv/unified1/spirv.py
@@ -45,7 +45,7 @@
 spv = {
     'MagicNumber' : 0x07230203,
     'Version' : 0x00010500,
-    'Revision' : 1,
+    'Revision' : 3,
     'OpCodeMask' : 0xffff,
     'WordCountShift' : 16,
 
diff --git a/include/spirv/unified1/spv.d b/include/spirv/unified1/spv.d
index 2c76658..08ac1f7 100644
--- a/include/spirv/unified1/spv.d
+++ b/include/spirv/unified1/spv.d
@@ -52,7 +52,7 @@
 
 enum uint MagicNumber = 0x07230203;
 enum uint Version = 0x00010500;
-enum uint Revision = 1;
+enum uint Revision = 3;
 enum uint OpCodeMask = 0xffff;
 enum uint WordCountShift = 16;
 
diff --git a/tools/buildHeaders/header.cpp b/tools/buildHeaders/header.cpp
index 7e8f668..aad94f7 100644
--- a/tools/buildHeaders/header.cpp
+++ b/tools/buildHeaders/header.cpp
@@ -70,8 +70,8 @@
 
         static const int         DocMagicNumber = 0x07230203;
         static const int         DocVersion     = 0x00010500;
-        static const int         DocRevision    = 1;
-        #define DocRevisionString                "1"
+        static const int         DocRevision    = 3;
+        #define DocRevisionString                "3"
         static const std::string DocCopyright;
         static const std::string DocComment1;
         static const std::string DocComment2;
diff --git a/tools/buildHeaders/jsonToSpirv.h b/tools/buildHeaders/jsonToSpirv.h
index 9a5eafd..732eed5 100644
--- a/tools/buildHeaders/jsonToSpirv.h
+++ b/tools/buildHeaders/jsonToSpirv.h
@@ -80,7 +80,7 @@
     OperandMemorySemantics,
     OperandMemoryOperands,
     OperandScope,
-	OperandGroupOperation,
+    OperandGroupOperation,
     OperandKernelEnqueueFlags,
     OperandKernelProfilingInfo,
     OperandCapability,