Updates for final Vulkan ray tracing extensions (#2466)

* Fix traceRay/executeCallable to have id instead of constant.

Update to final (non-provisional) SPIR-V capabilities
(includes review feedback)
- Change visibilty of findLinkerObjects.

See merge request GLSL/glslang!78

* Add support for OpConvertUToAccelerationStructureKHR.

GLSL : https://gitlab.khronos.org/GLSL/GLSL/-/merge_requests/60

SPV : https://gitlab.khronos.org/spirv/spirv-extensions/-/merge_requests/182

See merge request GLSL/glslang!77

* Add volatile qualifier to certain builtins for ray tracing.

See merge request GLSL/glslang!81

* make gl_RayTmaxEXT volatile in intersection shader

Vulkan Issue #2268

* Add testing for layouts on SBT

vulkan/vulkan#2230

- no layout specified should be same as std430
- explicitly test std140, std430, scalar layouts

See merge request GLSL/glslang!86

* Support for new opcodes OpIgnoreIntersectionKHR and OpTerminateRayKHR

vulkan/vulkan#2374

Add support for ignoreIntersectionEXT and terminateRayEXT as block
terminator statements.

See merge request GLSL/glslang!87

* Fix code-generation issues with global ray query variables

See merge request GLSL/glslang!88

* update dependencies for spirv-headers and tools

And update mesh shader results

* Fix indeterminate argument ordering

Authored-by: David Neto <dneto@google.com>

Co-authored-by: Ashwin Lele (NVIDIA Corporation) <alele@nvidia.com>
Co-authored-by: Neslisah <Neslisah.Torosdagli@amd.com>
diff --git a/Test/baseResults/glsl.460.subgroup.rcall.out b/Test/baseResults/glsl.460.subgroup.rcall.out
index 6bffdc9..2b2d89b 100644
--- a/Test/baseResults/glsl.460.subgroup.rcall.out
+++ b/Test/baseResults/glsl.460.subgroup.rcall.out
@@ -109,8 +109,8 @@
 0:4    Function Parameters: 
 0:4      'f4' ( in 4-component vector of float)
 0:?     Sequence
-0:7      'gl_SubgroupSize' ( in uint SubgroupSize)
-0:8      'gl_SubgroupInvocationID' ( in uint SubgroupInvocationID)
+0:7      'gl_SubgroupSize' ( volatile in uint SubgroupSize)
+0:8      'gl_SubgroupInvocationID' ( volatile in uint SubgroupInvocationID)
 0:9      subgroupBarrier ( global void)
 0:10      subgroupMemoryBarrier ( global void)
 0:11      subgroupMemoryBarrierBuffer ( global void)
@@ -128,11 +128,11 @@
 0:19          false (const bool)
 0:20      subgroupAllEqual ( global bool)
 0:20        'f4' ( in 4-component vector of float)
-0:22      'gl_SubgroupEqMask' ( in 4-component vector of uint SubgroupEqMask)
-0:23      'gl_SubgroupGeMask' ( in 4-component vector of uint SubgroupGeMask)
-0:24      'gl_SubgroupGtMask' ( in 4-component vector of uint SubgroupGtMask)
-0:25      'gl_SubgroupLeMask' ( in 4-component vector of uint SubgroupLeMask)
-0:26      'gl_SubgroupLtMask' ( in 4-component vector of uint SubgroupLtMask)
+0:22      'gl_SubgroupEqMask' ( volatile in 4-component vector of uint SubgroupEqMask)
+0:23      'gl_SubgroupGeMask' ( volatile in 4-component vector of uint SubgroupGeMask)
+0:24      'gl_SubgroupGtMask' ( volatile in 4-component vector of uint SubgroupGtMask)
+0:25      'gl_SubgroupLeMask' ( volatile in 4-component vector of uint SubgroupLeMask)
+0:26      'gl_SubgroupLtMask' ( volatile in 4-component vector of uint SubgroupLtMask)
 0:27      subgroupBroadcast ( global 4-component vector of float)
 0:27        'f4' ( in 4-component vector of float)
 0:27        Constant:
@@ -359,8 +359,8 @@
 0:119  Function Definition: basic_works( ( global void)
 0:119    Function Parameters: 
 0:121    Sequence
-0:121      'gl_SubgroupSize' ( in uint SubgroupSize)
-0:122      'gl_SubgroupInvocationID' ( in uint SubgroupInvocationID)
+0:121      'gl_SubgroupSize' ( volatile in uint SubgroupSize)
+0:122      'gl_SubgroupInvocationID' ( volatile in uint SubgroupInvocationID)
 0:123      subgroupBarrier ( global void)
 0:124      subgroupMemoryBarrier ( global void)
 0:125      subgroupMemoryBarrierBuffer ( global void)
@@ -370,11 +370,11 @@
 0:131    Function Parameters: 
 0:131      'f4' ( in 4-component vector of float)
 0:132    Sequence
-0:132      'gl_SubgroupEqMask' ( in 4-component vector of uint SubgroupEqMask)
-0:133      'gl_SubgroupGeMask' ( in 4-component vector of uint SubgroupGeMask)
-0:134      'gl_SubgroupGtMask' ( in 4-component vector of uint SubgroupGtMask)
-0:135      'gl_SubgroupLeMask' ( in 4-component vector of uint SubgroupLeMask)
-0:136      'gl_SubgroupLtMask' ( in 4-component vector of uint SubgroupLtMask)
+0:132      'gl_SubgroupEqMask' ( volatile in 4-component vector of uint SubgroupEqMask)
+0:133      'gl_SubgroupGeMask' ( volatile in 4-component vector of uint SubgroupGeMask)
+0:134      'gl_SubgroupGtMask' ( volatile in 4-component vector of uint SubgroupGtMask)
+0:135      'gl_SubgroupLeMask' ( volatile in 4-component vector of uint SubgroupLeMask)
+0:136      'gl_SubgroupLtMask' ( volatile in 4-component vector of uint SubgroupLtMask)
 0:137      subgroupBroadcast ( global 4-component vector of float)
 0:137        'f4' ( in 4-component vector of float)
 0:137        Constant:
@@ -624,15 +624,15 @@
 0:247    Sequence
 0:247      'gl_WarpsPerSMNV' ( in uint WarpsPerSMNV)
 0:248      'gl_SMCountNV' ( in uint SMCountNV)
-0:249      'gl_WarpIDNV' ( in uint WarpIDNV)
-0:250      'gl_SMIDNV' ( in uint SMIDNV)
+0:249      'gl_WarpIDNV' ( volatile in uint WarpIDNV)
+0:250      'gl_SMIDNV' ( volatile in uint SMIDNV)
 0:257  Function Definition: sm_builtins( ( global void)
 0:257    Function Parameters: 
 0:259    Sequence
 0:259      'gl_WarpsPerSMNV' ( in uint WarpsPerSMNV)
 0:260      'gl_SMCountNV' ( in uint SMCountNV)
-0:261      'gl_WarpIDNV' ( in uint WarpIDNV)
-0:262      'gl_SMIDNV' ( in uint SMIDNV)
+0:261      'gl_WarpIDNV' ( volatile in uint WarpIDNV)
+0:262      'gl_SMIDNV' ( volatile in uint SMIDNV)
 0:?   Linker Objects
 0:?     'data0' (layout( location=0) callableDataNV 4-component vector of float)
 0:?     'anon@0' (layout( location=1) callableDataInNV block{ callableDataInNV uint data1})
diff --git a/Test/baseResults/glsl.460.subgroup.rchit.out b/Test/baseResults/glsl.460.subgroup.rchit.out
index 1ea9e69..f5083e0 100644
--- a/Test/baseResults/glsl.460.subgroup.rchit.out
+++ b/Test/baseResults/glsl.460.subgroup.rchit.out
@@ -109,8 +109,8 @@
 0:4    Function Parameters: 
 0:4      'f4' ( in 4-component vector of float)
 0:?     Sequence
-0:7      'gl_SubgroupSize' ( in uint SubgroupSize)
-0:8      'gl_SubgroupInvocationID' ( in uint SubgroupInvocationID)
+0:7      'gl_SubgroupSize' ( volatile in uint SubgroupSize)
+0:8      'gl_SubgroupInvocationID' ( volatile in uint SubgroupInvocationID)
 0:9      subgroupBarrier ( global void)
 0:10      subgroupMemoryBarrier ( global void)
 0:11      subgroupMemoryBarrierBuffer ( global void)
@@ -128,11 +128,11 @@
 0:19          false (const bool)
 0:20      subgroupAllEqual ( global bool)
 0:20        'f4' ( in 4-component vector of float)
-0:22      'gl_SubgroupEqMask' ( in 4-component vector of uint SubgroupEqMask)
-0:23      'gl_SubgroupGeMask' ( in 4-component vector of uint SubgroupGeMask)
-0:24      'gl_SubgroupGtMask' ( in 4-component vector of uint SubgroupGtMask)
-0:25      'gl_SubgroupLeMask' ( in 4-component vector of uint SubgroupLeMask)
-0:26      'gl_SubgroupLtMask' ( in 4-component vector of uint SubgroupLtMask)
+0:22      'gl_SubgroupEqMask' ( volatile in 4-component vector of uint SubgroupEqMask)
+0:23      'gl_SubgroupGeMask' ( volatile in 4-component vector of uint SubgroupGeMask)
+0:24      'gl_SubgroupGtMask' ( volatile in 4-component vector of uint SubgroupGtMask)
+0:25      'gl_SubgroupLeMask' ( volatile in 4-component vector of uint SubgroupLeMask)
+0:26      'gl_SubgroupLtMask' ( volatile in 4-component vector of uint SubgroupLtMask)
 0:27      subgroupBroadcast ( global 4-component vector of float)
 0:27        'f4' ( in 4-component vector of float)
 0:27        Constant:
@@ -425,8 +425,8 @@
 0:129  Function Definition: basic_works( ( global void)
 0:129    Function Parameters: 
 0:131    Sequence
-0:131      'gl_SubgroupSize' ( in uint SubgroupSize)
-0:132      'gl_SubgroupInvocationID' ( in uint SubgroupInvocationID)
+0:131      'gl_SubgroupSize' ( volatile in uint SubgroupSize)
+0:132      'gl_SubgroupInvocationID' ( volatile in uint SubgroupInvocationID)
 0:133      subgroupBarrier ( global void)
 0:134      subgroupMemoryBarrier ( global void)
 0:135      subgroupMemoryBarrierBuffer ( global void)
@@ -436,11 +436,11 @@
 0:141    Function Parameters: 
 0:141      'f4' ( in 4-component vector of float)
 0:142    Sequence
-0:142      'gl_SubgroupEqMask' ( in 4-component vector of uint SubgroupEqMask)
-0:143      'gl_SubgroupGeMask' ( in 4-component vector of uint SubgroupGeMask)
-0:144      'gl_SubgroupGtMask' ( in 4-component vector of uint SubgroupGtMask)
-0:145      'gl_SubgroupLeMask' ( in 4-component vector of uint SubgroupLeMask)
-0:146      'gl_SubgroupLtMask' ( in 4-component vector of uint SubgroupLtMask)
+0:142      'gl_SubgroupEqMask' ( volatile in 4-component vector of uint SubgroupEqMask)
+0:143      'gl_SubgroupGeMask' ( volatile in 4-component vector of uint SubgroupGeMask)
+0:144      'gl_SubgroupGtMask' ( volatile in 4-component vector of uint SubgroupGtMask)
+0:145      'gl_SubgroupLeMask' ( volatile in 4-component vector of uint SubgroupLeMask)
+0:146      'gl_SubgroupLtMask' ( volatile in 4-component vector of uint SubgroupLtMask)
 0:147      subgroupBroadcast ( global 4-component vector of float)
 0:147        'f4' ( in 4-component vector of float)
 0:147        Constant:
@@ -690,15 +690,15 @@
 0:257    Sequence
 0:257      'gl_WarpsPerSMNV' ( in uint WarpsPerSMNV)
 0:258      'gl_SMCountNV' ( in uint SMCountNV)
-0:259      'gl_WarpIDNV' ( in uint WarpIDNV)
-0:260      'gl_SMIDNV' ( in uint SMIDNV)
+0:259      'gl_WarpIDNV' ( volatile in uint WarpIDNV)
+0:260      'gl_SMIDNV' ( volatile in uint SMIDNV)
 0:267  Function Definition: sm_builtins( ( global void)
 0:267    Function Parameters: 
 0:269    Sequence
 0:269      'gl_WarpsPerSMNV' ( in uint WarpsPerSMNV)
 0:270      'gl_SMCountNV' ( in uint SMCountNV)
-0:271      'gl_WarpIDNV' ( in uint WarpIDNV)
-0:272      'gl_SMIDNV' ( in uint SMIDNV)
+0:271      'gl_WarpIDNV' ( volatile in uint WarpIDNV)
+0:272      'gl_SMIDNV' ( volatile in uint SMIDNV)
 0:?   Linker Objects
 0:?     'accNV' (layout( set=0 binding=0) uniform accelerationStructureNV)
 0:?     'localPayload' (layout( location=0) rayPayloadNV 4-component vector of float)
diff --git a/Test/baseResults/glsl.460.subgroup.rgen.out b/Test/baseResults/glsl.460.subgroup.rgen.out
index dfe1e2b..56283bb 100644
--- a/Test/baseResults/glsl.460.subgroup.rgen.out
+++ b/Test/baseResults/glsl.460.subgroup.rgen.out
@@ -109,8 +109,8 @@
 0:4    Function Parameters: 
 0:4      'f4' ( in 4-component vector of float)
 0:?     Sequence
-0:7      'gl_SubgroupSize' ( in uint SubgroupSize)
-0:8      'gl_SubgroupInvocationID' ( in uint SubgroupInvocationID)
+0:7      'gl_SubgroupSize' ( volatile in uint SubgroupSize)
+0:8      'gl_SubgroupInvocationID' ( volatile in uint SubgroupInvocationID)
 0:9      subgroupBarrier ( global void)
 0:10      subgroupMemoryBarrier ( global void)
 0:11      subgroupMemoryBarrierBuffer ( global void)
@@ -128,11 +128,11 @@
 0:19          false (const bool)
 0:20      subgroupAllEqual ( global bool)
 0:20        'f4' ( in 4-component vector of float)
-0:22      'gl_SubgroupEqMask' ( in 4-component vector of uint SubgroupEqMask)
-0:23      'gl_SubgroupGeMask' ( in 4-component vector of uint SubgroupGeMask)
-0:24      'gl_SubgroupGtMask' ( in 4-component vector of uint SubgroupGtMask)
-0:25      'gl_SubgroupLeMask' ( in 4-component vector of uint SubgroupLeMask)
-0:26      'gl_SubgroupLtMask' ( in 4-component vector of uint SubgroupLtMask)
+0:22      'gl_SubgroupEqMask' ( volatile in 4-component vector of uint SubgroupEqMask)
+0:23      'gl_SubgroupGeMask' ( volatile in 4-component vector of uint SubgroupGeMask)
+0:24      'gl_SubgroupGtMask' ( volatile in 4-component vector of uint SubgroupGtMask)
+0:25      'gl_SubgroupLeMask' ( volatile in 4-component vector of uint SubgroupLeMask)
+0:26      'gl_SubgroupLtMask' ( volatile in 4-component vector of uint SubgroupLtMask)
 0:27      subgroupBroadcast ( global 4-component vector of float)
 0:27        'f4' ( in 4-component vector of float)
 0:27        Constant:
@@ -389,8 +389,8 @@
 0:123  Function Definition: basic_works( ( global void)
 0:123    Function Parameters: 
 0:125    Sequence
-0:125      'gl_SubgroupSize' ( in uint SubgroupSize)
-0:126      'gl_SubgroupInvocationID' ( in uint SubgroupInvocationID)
+0:125      'gl_SubgroupSize' ( volatile in uint SubgroupSize)
+0:126      'gl_SubgroupInvocationID' ( volatile in uint SubgroupInvocationID)
 0:127      subgroupBarrier ( global void)
 0:128      subgroupMemoryBarrier ( global void)
 0:129      subgroupMemoryBarrierBuffer ( global void)
@@ -400,11 +400,11 @@
 0:135    Function Parameters: 
 0:135      'f4' ( in 4-component vector of float)
 0:136    Sequence
-0:136      'gl_SubgroupEqMask' ( in 4-component vector of uint SubgroupEqMask)
-0:137      'gl_SubgroupGeMask' ( in 4-component vector of uint SubgroupGeMask)
-0:138      'gl_SubgroupGtMask' ( in 4-component vector of uint SubgroupGtMask)
-0:139      'gl_SubgroupLeMask' ( in 4-component vector of uint SubgroupLeMask)
-0:140      'gl_SubgroupLtMask' ( in 4-component vector of uint SubgroupLtMask)
+0:136      'gl_SubgroupEqMask' ( volatile in 4-component vector of uint SubgroupEqMask)
+0:137      'gl_SubgroupGeMask' ( volatile in 4-component vector of uint SubgroupGeMask)
+0:138      'gl_SubgroupGtMask' ( volatile in 4-component vector of uint SubgroupGtMask)
+0:139      'gl_SubgroupLeMask' ( volatile in 4-component vector of uint SubgroupLeMask)
+0:140      'gl_SubgroupLtMask' ( volatile in 4-component vector of uint SubgroupLtMask)
 0:141      subgroupBroadcast ( global 4-component vector of float)
 0:141        'f4' ( in 4-component vector of float)
 0:141        Constant:
@@ -654,15 +654,15 @@
 0:251    Sequence
 0:251      'gl_WarpsPerSMNV' ( in uint WarpsPerSMNV)
 0:252      'gl_SMCountNV' ( in uint SMCountNV)
-0:253      'gl_WarpIDNV' ( in uint WarpIDNV)
-0:254      'gl_SMIDNV' ( in uint SMIDNV)
+0:253      'gl_WarpIDNV' ( volatile in uint WarpIDNV)
+0:254      'gl_SMIDNV' ( volatile in uint SMIDNV)
 0:261  Function Definition: sm_builtins( ( global void)
 0:261    Function Parameters: 
 0:263    Sequence
 0:263      'gl_WarpsPerSMNV' ( in uint WarpsPerSMNV)
 0:264      'gl_SMCountNV' ( in uint SMCountNV)
-0:265      'gl_WarpIDNV' ( in uint WarpIDNV)
-0:266      'gl_SMIDNV' ( in uint SMIDNV)
+0:265      'gl_WarpIDNV' ( volatile in uint WarpIDNV)
+0:266      'gl_SMIDNV' ( volatile in uint SMIDNV)
 0:?   Linker Objects
 0:?     'accNV0' (layout( set=0 binding=0) uniform accelerationStructureNV)
 0:?     'accNV1' (layout( set=0 binding=1) uniform accelerationStructureNV)
diff --git a/Test/baseResults/glsl.460.subgroup.rint.out b/Test/baseResults/glsl.460.subgroup.rint.out
index 9915ecf..a7de7d3 100644
--- a/Test/baseResults/glsl.460.subgroup.rint.out
+++ b/Test/baseResults/glsl.460.subgroup.rint.out
@@ -109,8 +109,8 @@
 0:5    Function Parameters: 
 0:5      'f4' ( in 4-component vector of float)
 0:?     Sequence
-0:8      'gl_SubgroupSize' ( in uint SubgroupSize)
-0:9      'gl_SubgroupInvocationID' ( in uint SubgroupInvocationID)
+0:8      'gl_SubgroupSize' ( volatile in uint SubgroupSize)
+0:9      'gl_SubgroupInvocationID' ( volatile in uint SubgroupInvocationID)
 0:10      subgroupBarrier ( global void)
 0:11      subgroupMemoryBarrier ( global void)
 0:12      subgroupMemoryBarrierBuffer ( global void)
@@ -128,11 +128,11 @@
 0:20          false (const bool)
 0:21      subgroupAllEqual ( global bool)
 0:21        'f4' ( in 4-component vector of float)
-0:23      'gl_SubgroupEqMask' ( in 4-component vector of uint SubgroupEqMask)
-0:24      'gl_SubgroupGeMask' ( in 4-component vector of uint SubgroupGeMask)
-0:25      'gl_SubgroupGtMask' ( in 4-component vector of uint SubgroupGtMask)
-0:26      'gl_SubgroupLeMask' ( in 4-component vector of uint SubgroupLeMask)
-0:27      'gl_SubgroupLtMask' ( in 4-component vector of uint SubgroupLtMask)
+0:23      'gl_SubgroupEqMask' ( volatile in 4-component vector of uint SubgroupEqMask)
+0:24      'gl_SubgroupGeMask' ( volatile in 4-component vector of uint SubgroupGeMask)
+0:25      'gl_SubgroupGtMask' ( volatile in 4-component vector of uint SubgroupGtMask)
+0:26      'gl_SubgroupLeMask' ( volatile in 4-component vector of uint SubgroupLeMask)
+0:27      'gl_SubgroupLtMask' ( volatile in 4-component vector of uint SubgroupLtMask)
 0:28      subgroupBroadcast ( global 4-component vector of float)
 0:28        'f4' ( in 4-component vector of float)
 0:28        Constant:
@@ -403,8 +403,8 @@
 0:129  Function Definition: basic_works( ( global void)
 0:129    Function Parameters: 
 0:131    Sequence
-0:131      'gl_SubgroupSize' ( in uint SubgroupSize)
-0:132      'gl_SubgroupInvocationID' ( in uint SubgroupInvocationID)
+0:131      'gl_SubgroupSize' ( volatile in uint SubgroupSize)
+0:132      'gl_SubgroupInvocationID' ( volatile in uint SubgroupInvocationID)
 0:133      subgroupBarrier ( global void)
 0:134      subgroupMemoryBarrier ( global void)
 0:135      subgroupMemoryBarrierBuffer ( global void)
@@ -414,11 +414,11 @@
 0:141    Function Parameters: 
 0:141      'f4' ( in 4-component vector of float)
 0:142    Sequence
-0:142      'gl_SubgroupEqMask' ( in 4-component vector of uint SubgroupEqMask)
-0:143      'gl_SubgroupGeMask' ( in 4-component vector of uint SubgroupGeMask)
-0:144      'gl_SubgroupGtMask' ( in 4-component vector of uint SubgroupGtMask)
-0:145      'gl_SubgroupLeMask' ( in 4-component vector of uint SubgroupLeMask)
-0:146      'gl_SubgroupLtMask' ( in 4-component vector of uint SubgroupLtMask)
+0:142      'gl_SubgroupEqMask' ( volatile in 4-component vector of uint SubgroupEqMask)
+0:143      'gl_SubgroupGeMask' ( volatile in 4-component vector of uint SubgroupGeMask)
+0:144      'gl_SubgroupGtMask' ( volatile in 4-component vector of uint SubgroupGtMask)
+0:145      'gl_SubgroupLeMask' ( volatile in 4-component vector of uint SubgroupLeMask)
+0:146      'gl_SubgroupLtMask' ( volatile in 4-component vector of uint SubgroupLtMask)
 0:147      subgroupBroadcast ( global 4-component vector of float)
 0:147        'f4' ( in 4-component vector of float)
 0:147        Constant:
@@ -668,15 +668,15 @@
 0:257    Sequence
 0:257      'gl_WarpsPerSMNV' ( in uint WarpsPerSMNV)
 0:258      'gl_SMCountNV' ( in uint SMCountNV)
-0:259      'gl_WarpIDNV' ( in uint WarpIDNV)
-0:260      'gl_SMIDNV' ( in uint SMIDNV)
+0:259      'gl_WarpIDNV' ( volatile in uint WarpIDNV)
+0:260      'gl_SMIDNV' ( volatile in uint SMIDNV)
 0:267  Function Definition: sm_builtins( ( global void)
 0:267    Function Parameters: 
 0:269    Sequence
 0:269      'gl_WarpsPerSMNV' ( in uint WarpsPerSMNV)
 0:270      'gl_SMCountNV' ( in uint SMCountNV)
-0:271      'gl_WarpIDNV' ( in uint WarpIDNV)
-0:272      'gl_SMIDNV' ( in uint SMIDNV)
+0:271      'gl_WarpIDNV' ( volatile in uint WarpIDNV)
+0:272      'gl_SMIDNV' ( volatile in uint SMIDNV)
 0:?   Linker Objects
 0:?     'iAttr' ( hitAttributeNV 4-component vector of float)
 
diff --git a/Test/baseResults/glsl.460.subgroup.rmiss.out b/Test/baseResults/glsl.460.subgroup.rmiss.out
index ddf7d1b..865d88c 100644
--- a/Test/baseResults/glsl.460.subgroup.rmiss.out
+++ b/Test/baseResults/glsl.460.subgroup.rmiss.out
@@ -109,8 +109,8 @@
 0:5    Function Parameters: 
 0:5      'f4' ( in 4-component vector of float)
 0:?     Sequence
-0:8      'gl_SubgroupSize' ( in uint SubgroupSize)
-0:9      'gl_SubgroupInvocationID' ( in uint SubgroupInvocationID)
+0:8      'gl_SubgroupSize' ( volatile in uint SubgroupSize)
+0:9      'gl_SubgroupInvocationID' ( volatile in uint SubgroupInvocationID)
 0:10      subgroupBarrier ( global void)
 0:11      subgroupMemoryBarrier ( global void)
 0:12      subgroupMemoryBarrierBuffer ( global void)
@@ -128,11 +128,11 @@
 0:20          false (const bool)
 0:21      subgroupAllEqual ( global bool)
 0:21        'f4' ( in 4-component vector of float)
-0:23      'gl_SubgroupEqMask' ( in 4-component vector of uint SubgroupEqMask)
-0:24      'gl_SubgroupGeMask' ( in 4-component vector of uint SubgroupGeMask)
-0:25      'gl_SubgroupGtMask' ( in 4-component vector of uint SubgroupGtMask)
-0:26      'gl_SubgroupLeMask' ( in 4-component vector of uint SubgroupLeMask)
-0:27      'gl_SubgroupLtMask' ( in 4-component vector of uint SubgroupLtMask)
+0:23      'gl_SubgroupEqMask' ( volatile in 4-component vector of uint SubgroupEqMask)
+0:24      'gl_SubgroupGeMask' ( volatile in 4-component vector of uint SubgroupGeMask)
+0:25      'gl_SubgroupGtMask' ( volatile in 4-component vector of uint SubgroupGtMask)
+0:26      'gl_SubgroupLeMask' ( volatile in 4-component vector of uint SubgroupLeMask)
+0:27      'gl_SubgroupLtMask' ( volatile in 4-component vector of uint SubgroupLtMask)
 0:28      subgroupBroadcast ( global 4-component vector of float)
 0:28        'f4' ( in 4-component vector of float)
 0:28        Constant:
@@ -397,8 +397,8 @@
 0:123  Function Definition: basic_works( ( global void)
 0:123    Function Parameters: 
 0:125    Sequence
-0:125      'gl_SubgroupSize' ( in uint SubgroupSize)
-0:126      'gl_SubgroupInvocationID' ( in uint SubgroupInvocationID)
+0:125      'gl_SubgroupSize' ( volatile in uint SubgroupSize)
+0:126      'gl_SubgroupInvocationID' ( volatile in uint SubgroupInvocationID)
 0:127      subgroupBarrier ( global void)
 0:128      subgroupMemoryBarrier ( global void)
 0:129      subgroupMemoryBarrierBuffer ( global void)
@@ -408,11 +408,11 @@
 0:135    Function Parameters: 
 0:135      'f4' ( in 4-component vector of float)
 0:136    Sequence
-0:136      'gl_SubgroupEqMask' ( in 4-component vector of uint SubgroupEqMask)
-0:137      'gl_SubgroupGeMask' ( in 4-component vector of uint SubgroupGeMask)
-0:138      'gl_SubgroupGtMask' ( in 4-component vector of uint SubgroupGtMask)
-0:139      'gl_SubgroupLeMask' ( in 4-component vector of uint SubgroupLeMask)
-0:140      'gl_SubgroupLtMask' ( in 4-component vector of uint SubgroupLtMask)
+0:136      'gl_SubgroupEqMask' ( volatile in 4-component vector of uint SubgroupEqMask)
+0:137      'gl_SubgroupGeMask' ( volatile in 4-component vector of uint SubgroupGeMask)
+0:138      'gl_SubgroupGtMask' ( volatile in 4-component vector of uint SubgroupGtMask)
+0:139      'gl_SubgroupLeMask' ( volatile in 4-component vector of uint SubgroupLeMask)
+0:140      'gl_SubgroupLtMask' ( volatile in 4-component vector of uint SubgroupLtMask)
 0:141      subgroupBroadcast ( global 4-component vector of float)
 0:141        'f4' ( in 4-component vector of float)
 0:141        Constant:
@@ -662,15 +662,15 @@
 0:251    Sequence
 0:251      'gl_WarpsPerSMNV' ( in uint WarpsPerSMNV)
 0:252      'gl_SMCountNV' ( in uint SMCountNV)
-0:253      'gl_WarpIDNV' ( in uint WarpIDNV)
-0:254      'gl_SMIDNV' ( in uint SMIDNV)
+0:253      'gl_WarpIDNV' ( volatile in uint WarpIDNV)
+0:254      'gl_SMIDNV' ( volatile in uint SMIDNV)
 0:261  Function Definition: sm_builtins( ( global void)
 0:261    Function Parameters: 
 0:263    Sequence
 0:263      'gl_WarpsPerSMNV' ( in uint WarpsPerSMNV)
 0:264      'gl_SMCountNV' ( in uint SMCountNV)
-0:265      'gl_WarpIDNV' ( in uint WarpIDNV)
-0:266      'gl_SMIDNV' ( in uint SMIDNV)
+0:265      'gl_WarpIDNV' ( volatile in uint WarpIDNV)
+0:266      'gl_SMIDNV' ( volatile in uint SMIDNV)
 0:?   Linker Objects
 0:?     'accNV' (layout( set=0 binding=0) uniform accelerationStructureNV)
 0:?     'localPayload' (layout( location=0) rayPayloadNV 4-component vector of float)
diff --git a/Test/baseResults/rayQuery-allOps.comp.out b/Test/baseResults/rayQuery-allOps.comp.out
index c0cc8aa..9c49e2e 100644
--- a/Test/baseResults/rayQuery-allOps.comp.out
+++ b/Test/baseResults/rayQuery-allOps.comp.out
@@ -4,8 +4,8 @@
 // Id's are bound by 258
 
                               Capability Shader
-                              Capability RayQueryProvisionalKHR
-                              Capability RayTraversalPrimitiveCullingProvisionalKHR
+                              Capability RayQueryKHR
+                              Capability RayTraversalPrimitiveCullingKHR
                               Extension  "SPV_KHR_ray_query"
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450
@@ -87,7 +87,8 @@
               37:     18(int) Constant 3
               38:    8(float) Constant 1176255488
               45:             TypeRayQueryProvisionalKHR
-              46:             TypePointer Function 45
+              46:             TypePointer Private 45
+    47(rayQuery):     46(ptr) Variable Private
               48:             TypeAccelerationStructureKHR
               49:             TypePointer UniformConstant 48
         50(rtas):     49(ptr) Variable UniformConstant
@@ -114,7 +115,6 @@
          4(main):           2 Function None 3
                5:             Label
          43(ray):     25(ptr) Variable Function
-    47(rayQuery):     46(ptr) Variable Function
 69(candidateType):     68(ptr) Variable Function
      78(_mat4x3):     77(ptr) Variable Function
      83(_mat3x4):     82(ptr) Variable Function
diff --git a/Test/baseResults/rayQuery-allOps.frag.out b/Test/baseResults/rayQuery-allOps.frag.out
index 8182da3..cff8fb0 100644
--- a/Test/baseResults/rayQuery-allOps.frag.out
+++ b/Test/baseResults/rayQuery-allOps.frag.out
@@ -4,7 +4,7 @@
 // Id's are bound by 257
 
                               Capability Shader
-                              Capability RayQueryProvisionalKHR
+                              Capability RayQueryKHR
                               Extension  "SPV_KHR_ray_query"
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450
@@ -86,7 +86,8 @@
               37:     18(int) Constant 3
               38:    8(float) Constant 1176255488
               45:             TypeRayQueryProvisionalKHR
-              46:             TypePointer Function 45
+              46:             TypePointer Private 45
+    47(rayQuery):     46(ptr) Variable Private
               48:             TypeAccelerationStructureKHR
               49:             TypePointer UniformConstant 48
         50(rtas):     49(ptr) Variable UniformConstant
@@ -112,7 +113,6 @@
          4(main):           2 Function None 3
                5:             Label
          43(ray):     25(ptr) Variable Function
-    47(rayQuery):     46(ptr) Variable Function
 69(candidateType):     68(ptr) Variable Function
      78(_mat4x3):     77(ptr) Variable Function
      83(_mat3x4):     82(ptr) Variable Function
diff --git a/Test/baseResults/rayQuery-allOps.rgen.out b/Test/baseResults/rayQuery-allOps.rgen.out
index 01b8f1d..418dad1 100644
--- a/Test/baseResults/rayQuery-allOps.rgen.out
+++ b/Test/baseResults/rayQuery-allOps.rgen.out
@@ -3,7 +3,7 @@
 // Generated by (magic number): 8000a
 // Id's are bound by 257
 
-                              Capability RayQueryProvisionalKHR
+                              Capability RayQueryKHR
                               Capability RayTracingNV
                               Extension  "SPV_KHR_ray_query"
                               Extension  "SPV_NV_ray_tracing"
@@ -86,7 +86,8 @@
               37:     18(int) Constant 3
               38:    8(float) Constant 1176255488
               45:             TypeRayQueryProvisionalKHR
-              46:             TypePointer Function 45
+              46:             TypePointer Private 45
+    47(rayQuery):     46(ptr) Variable Private
               48:             TypeAccelerationStructureKHR
               49:             TypePointer UniformConstant 48
         50(rtas):     49(ptr) Variable UniformConstant
@@ -112,7 +113,6 @@
          4(main):           2 Function None 3
                5:             Label
          43(ray):     25(ptr) Variable Function
-    47(rayQuery):     46(ptr) Variable Function
 69(candidateType):     68(ptr) Variable Function
      78(_mat4x3):     77(ptr) Variable Function
      83(_mat3x4):     82(ptr) Variable Function
diff --git a/Test/baseResults/rayQuery-global.rgen.out b/Test/baseResults/rayQuery-global.rgen.out
new file mode 100644
index 0000000..637b752
--- /dev/null
+++ b/Test/baseResults/rayQuery-global.rgen.out
@@ -0,0 +1,76 @@
+rayQuery-global.rgen
+// Module Version 10000
+// Generated by (magic number): 8000a
+// Id's are bound by 44
+
+                              Capability RayQueryKHR
+                              Capability RayTracingKHR
+                              Extension  "SPV_KHR_ray_query"
+                              Extension  "SPV_KHR_ray_tracing"
+               1:             ExtInstImport  "GLSL.std.450"
+                              MemoryModel Logical GLSL450
+                              EntryPoint RayGenerationKHR 4  "main"
+                              Source GLSL 460
+                              SourceExtension  "GL_EXT_ray_flags_primitive_culling"
+                              SourceExtension  "GL_EXT_ray_query"
+                              Name 4  "main"
+                              Name 10  "otherWrapper(rq1;"
+                              Name 9  "rq"
+                              Name 13  "wrapper(rq1;"
+                              Name 12  "rq"
+                              Name 17  "rqGlobal"
+                              Name 22  "rq2"
+                              Name 27  "rtas"
+                              Name 40  "rq2"
+                              Decorate 27(rtas) DescriptorSet 0
+                              Decorate 27(rtas) Binding 1
+               2:             TypeVoid
+               3:             TypeFunction 2
+               6:             TypeRayQueryProvisionalKHR
+               7:             TypePointer Private 6
+               8:             TypeFunction 2 7(ptr)
+              15:             TypeBool
+    17(rqGlobal):      7(ptr) Variable Private
+         22(rq2):      7(ptr) Variable Private
+              25:             TypeAccelerationStructureKHR
+              26:             TypePointer UniformConstant 25
+        27(rtas):     26(ptr) Variable UniformConstant
+              29:             TypeInt 32 0
+              30:     29(int) Constant 0
+              31:     29(int) Constant 255
+              32:             TypeFloat 32
+              33:             TypeVector 32(float) 3
+              34:   32(float) Constant 0
+              35:   33(fvec3) ConstantComposite 34 34 34
+              36:   32(float) Constant 1065353216
+              37:   33(fvec3) ConstantComposite 36 34 34
+         40(rq2):      7(ptr) Variable Private
+         4(main):           2 Function None 3
+               5:             Label
+              28:          25 Load 27(rtas)
+                              RayQueryInitializeKHR 17(rqGlobal) 28 30 31 35 34 37 36
+              38:           2 FunctionCall 13(wrapper(rq1;) 17(rqGlobal)
+              39:           2 FunctionCall 10(otherWrapper(rq1;) 17(rqGlobal)
+              41:          25 Load 27(rtas)
+                              RayQueryInitializeKHR 40(rq2) 41 30 31 35 34 37 36
+              42:           2 FunctionCall 13(wrapper(rq1;) 40(rq2)
+              43:           2 FunctionCall 10(otherWrapper(rq1;) 40(rq2)
+                              Return
+                              FunctionEnd
+10(otherWrapper(rq1;):           2 Function None 8
+           9(rq):      7(ptr) FunctionParameter
+              11:             Label
+              16:    15(bool) RayQueryProceedKHR 9(rq)
+              18:    15(bool) RayQueryProceedKHR 17(rqGlobal)
+                              Return
+                              FunctionEnd
+13(wrapper(rq1;):           2 Function None 8
+          12(rq):      7(ptr) FunctionParameter
+              14:             Label
+              19:    15(bool) RayQueryProceedKHR 12(rq)
+              20:    15(bool) RayQueryProceedKHR 17(rqGlobal)
+              21:           2 FunctionCall 10(otherWrapper(rq1;) 12(rq)
+              23:           2 FunctionCall 10(otherWrapper(rq1;) 22(rq2)
+              24:           2 FunctionCall 10(otherWrapper(rq1;) 17(rqGlobal)
+                              Return
+                              FunctionEnd
diff --git a/Test/baseResults/rayQuery-initialize.rgen.out b/Test/baseResults/rayQuery-initialize.rgen.out
index f97287f..3b83333 100644
--- a/Test/baseResults/rayQuery-initialize.rgen.out
+++ b/Test/baseResults/rayQuery-initialize.rgen.out
@@ -3,7 +3,7 @@
 // Generated by (magic number): 8000a
 // Id's are bound by 103
 
-                              Capability RayQueryProvisionalKHR
+                              Capability RayQueryKHR
                               Capability RayTracingNV
                               Extension  "SPV_KHR_ray_query"
                               Extension  "SPV_NV_ray_tracing"
@@ -56,7 +56,7 @@
                6:             TypeInt 32 0
                7:             TypeFunction 6(int)
               10:             TypeRayQueryProvisionalKHR
-              11:             TypePointer Function 10
+              11:             TypePointer Private 10
               12:             TypeFloat 32
               13:             TypeVector 12(float) 3
          14(Ray):             TypeStruct 13(fvec3) 12(float) 13(fvec3) 12(float)
@@ -88,12 +88,12 @@
               75:             TypePointer Uniform 74(Rays)
               76:     75(ptr) Variable Uniform
               78:             TypePointer Uniform 72(Ray)
+    89(rayQuery):     11(ptr) Variable Private
               94:      6(int) Constant 32
          4(main):           2 Function None 3
                5:             Label
        69(index):     68(ptr) Variable Function
          71(ray):     15(ptr) Variable Function
-    89(rayQuery):     11(ptr) Variable Function
        90(param):     15(ptr) Variable Function
               70:      6(int) FunctionCall 8(launchIndex()
                               Store 69(index) 70
diff --git a/Test/baseResults/rayQuery-no-cse.rgen.out b/Test/baseResults/rayQuery-no-cse.rgen.out
index 23c8b51..2f46f07 100644
--- a/Test/baseResults/rayQuery-no-cse.rgen.out
+++ b/Test/baseResults/rayQuery-no-cse.rgen.out
@@ -3,7 +3,7 @@
 // Generated by (magic number): 8000a
 // Id's are bound by 107
 
-                              Capability RayQueryProvisionalKHR
+                              Capability RayQueryKHR
                               Capability RayTracingNV
                               Extension  "SPV_KHR_ray_query"
                               Extension  "SPV_NV_ray_tracing"
@@ -58,7 +58,7 @@
                6:             TypeInt 32 0
                7:             TypeFunction 6(int)
               10:             TypeRayQueryProvisionalKHR
-              11:             TypePointer Function 10
+              11:             TypePointer Private 10
               12:             TypeFloat 32
               13:             TypeVector 12(float) 3
          14(Ray):             TypeStruct 13(fvec3) 12(float) 13(fvec3) 12(float)
@@ -90,14 +90,14 @@
               75:             TypePointer Uniform 74(Rays)
               76:     75(ptr) Variable Uniform
               78:             TypePointer Uniform 72(Ray)
+   89(rayQuery1):     11(ptr) Variable Private
               94:      6(int) Constant 32
+  103(rayQuery2):     11(ptr) Variable Private
          4(main):           2 Function None 3
                5:             Label
        69(index):     68(ptr) Variable Function
          71(ray):     15(ptr) Variable Function
-   89(rayQuery1):     11(ptr) Variable Function
        90(param):     15(ptr) Variable Function
-  103(rayQuery2):     11(ptr) Variable Function
       104(param):     15(ptr) Variable Function
               70:      6(int) FunctionCall 8(launchIndex()
                               Store 69(index) 70
diff --git a/Test/baseResults/rayQuery.rgen.out b/Test/baseResults/rayQuery.rgen.out
index bf142a3..3680973 100644
--- a/Test/baseResults/rayQuery.rgen.out
+++ b/Test/baseResults/rayQuery.rgen.out
@@ -3,7 +3,7 @@
 // Generated by (magic number): 8000a
 // Id's are bound by 44
 
-                              Capability RayQueryProvisionalKHR
+                              Capability RayQueryKHR
                               Capability RayTracingNV
                               Extension  "SPV_KHR_ray_query"
                               Extension  "SPV_NV_ray_tracing"
@@ -40,7 +40,8 @@
               13:   10(float) Constant 0
               15:   10(float) Constant 1148846080
               16:             TypeRayQueryProvisionalKHR
-              17:             TypePointer Function 16
+              17:             TypePointer Private 16
+18(localRayQuery):     17(ptr) Variable Private
               19:             TypeAccelerationStructureKHR
               20:             TypePointer UniformConstant 19
         21(acc0):     20(ptr) Variable UniformConstant
@@ -59,7 +60,6 @@
      8(rayFlags):      7(ptr) Variable Function
         12(tMin):     11(ptr) Variable Function
         14(tMax):     11(ptr) Variable Function
-18(localRayQuery):     17(ptr) Variable Function
                               Store 8(rayFlags) 9
                               Store 12(tMin) 13
                               Store 14(tMax) 15
diff --git a/Test/baseResults/spv.AnyHitShader.rahit.out b/Test/baseResults/spv.AnyHitShader.rahit.out
index 755d60e..f33a1bd 100644
--- a/Test/baseResults/spv.AnyHitShader.rahit.out
+++ b/Test/baseResults/spv.AnyHitShader.rahit.out
@@ -153,10 +153,10 @@
                               SelectionMerge 79 None
                               BranchConditional 77 78 80
               78:               Label
-                                IgnoreIntersectionKHR
+                                IgnoreIntersectionNV
                                 Branch 79
               80:               Label
-                                TerminateRayKHR
+                                TerminateRayNV
                                 Branch 79
               79:             Label
                               Return
diff --git a/Test/baseResults/spv.ClosestHitShader.rchit.out b/Test/baseResults/spv.ClosestHitShader.rchit.out
index 63039dd..4a8e65d 100644
--- a/Test/baseResults/spv.ClosestHitShader.rchit.out
+++ b/Test/baseResults/spv.ClosestHitShader.rchit.out
@@ -164,6 +164,6 @@
               68:          60 Load 67(gl_WorldToObjectNV)
                               Store 66(v14) 68
               72:          69 Load 71(accNV)
-                              TraceRayKHR 72 73 74 75 76 73 78 77 80 81 82
+                              TraceNV 72 73 74 75 76 73 78 77 80 81 82
                               Return
                               FunctionEnd
diff --git a/Test/baseResults/spv.MissShader.rmiss.out b/Test/baseResults/spv.MissShader.rmiss.out
index d0eeb01..563e53f 100644
--- a/Test/baseResults/spv.MissShader.rmiss.out
+++ b/Test/baseResults/spv.MissShader.rmiss.out
@@ -108,6 +108,6 @@
               39:   16(float) Load 38(gl_RayTmaxNV)
                               Store 37(v7) 39
               43:          40 Load 42(accNV)
-                              TraceRayKHR 43 44 45 46 47 44 49 48 51 52 54
+                              TraceNV 43 44 45 46 47 44 49 48 51 52 54
                               Return
                               FunctionEnd
diff --git a/Test/baseResults/spv.RayCallable.rcall.out b/Test/baseResults/spv.RayCallable.rcall.out
index f59d36f..75698fc 100644
--- a/Test/baseResults/spv.RayCallable.rcall.out
+++ b/Test/baseResults/spv.RayCallable.rcall.out
@@ -55,6 +55,6 @@
                               Store 13(size) 15
               23:     22(ptr) AccessChain 18 20
                               Store 23 21
-                              ExecuteCallableKHR 24 25
+                              ExecuteCallableNV 24 25
                               Return
                               FunctionEnd
diff --git a/Test/baseResults/spv.RayConstants.rgen.out b/Test/baseResults/spv.RayConstants.rgen.out
index c4085fe..962aeb7 100644
--- a/Test/baseResults/spv.RayConstants.rgen.out
+++ b/Test/baseResults/spv.RayConstants.rgen.out
@@ -41,6 +41,6 @@
          4(main):           2 Function None 3
                5:             Label
                9:           6 Load 8(accNV)
-                              TraceRayKHR 9 11 12 13 13 12 17 18 20 21 23
+                              TraceNV 9 11 12 13 13 12 17 18 20 21 23
                               Return
                               FunctionEnd
diff --git a/Test/baseResults/spv.RayGenShader.rgen.out b/Test/baseResults/spv.RayGenShader.rgen.out
index 363b3dd..f8f3fd6 100644
--- a/Test/baseResults/spv.RayGenShader.rgen.out
+++ b/Test/baseResults/spv.RayGenShader.rgen.out
@@ -92,6 +92,6 @@
               44:   36(fvec3) Load 43
               47:     42(ptr) AccessChain 39 46
               48:   36(fvec3) Load 47
-                              TraceRayKHR 30 31 32 33 34 12 44 45 48 49 41
+                              TraceNV 30 31 32 33 34 12 44 45 48 49 41
                               Return
                               FunctionEnd
diff --git a/Test/baseResults/spv.RayGenShader11.rgen.out b/Test/baseResults/spv.RayGenShader11.rgen.out
index 195071f..f6b79c5 100644
--- a/Test/baseResults/spv.RayGenShader11.rgen.out
+++ b/Test/baseResults/spv.RayGenShader11.rgen.out
@@ -88,6 +88,6 @@
               44:   36(fvec3) Load 43
               47:     42(ptr) AccessChain 39 46
               48:   36(fvec3) Load 47
-                              TraceRayKHR 30 31 32 33 34 12 44 45 48 49 41
+                              TraceNV 30 31 32 33 34 12 44 45 48 49 41
                               Return
                               FunctionEnd
diff --git a/Test/baseResults/spv.RayGenShaderArray.rgen.out b/Test/baseResults/spv.RayGenShaderArray.rgen.out
index fef54aa..63a04b3 100644
--- a/Test/baseResults/spv.RayGenShaderArray.rgen.out
+++ b/Test/baseResults/spv.RayGenShaderArray.rgen.out
@@ -111,7 +111,7 @@
               51:   32(fvec3) Load 50
               54:     49(ptr) AccessChain 36 53
               55:   32(fvec3) Load 54
-                              TraceRayKHR 43 44 45 46 47 12 51 52 55 56 48
+                              TraceNV 43 44 45 46 47 12 51 52 55 56 48
               61:     38(ptr) AccessChain 36 37
               62:     33(int) Load 61
               63:     41(ptr) AccessChain 60(accNV1) 62
@@ -124,7 +124,7 @@
               70:   32(fvec3) Load 69
               71:     49(ptr) AccessChain 36 53
               72:   32(fvec3) Load 71
-                              TraceRayKHR 64 65 66 67 68 12 70 52 72 56 48
+                              TraceNV 64 65 66 67 68 12 70 52 72 56 48
               73:     38(ptr) AccessChain 36 37
               74:     33(int) Load 73
               75:     33(int) CopyObject 74
@@ -138,6 +138,6 @@
               83:   32(fvec3) Load 82
               84:     49(ptr) AccessChain 36 53
               85:   32(fvec3) Load 84
-                              TraceRayKHR 77 78 79 80 81 12 83 52 85 56 48
+                              TraceNV 77 78 79 80 81 12 83 52 85 56 48
                               Return
                               FunctionEnd
diff --git a/Test/baseResults/spv.ext.AnyHitShader.rahit.out b/Test/baseResults/spv.ext.AnyHitShader.rahit.out
index 39e43a7..133fd63 100644
--- a/Test/baseResults/spv.ext.AnyHitShader.rahit.out
+++ b/Test/baseResults/spv.ext.AnyHitShader.rahit.out
@@ -1,15 +1,17 @@
 spv.ext.AnyHitShader.rahit
 // Module Version 10400
 // Generated by (magic number): 8000a
-// Id's are bound by 94
+// Id's are bound by 107
 
-                              Capability RayTracingProvisionalKHR
+                              Capability GroupNonUniform
+                              Capability RayTracingKHR
                               Extension  "SPV_KHR_ray_tracing"
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450
-                              EntryPoint AnyHitKHR 4  "main" 11 14 20 23 26 33 36 39 42 47 50 53 58 64 67 70 76 80 84
+                              EntryPoint AnyHitKHR 4  "main" 11 14 20 23 26 33 36 39 42 47 50 53 58 64 67 70 76 80 84 98
                               Source GLSL 460
                               SourceExtension  "GL_EXT_ray_tracing"
+                              SourceExtension  "GL_KHR_shader_subgroup_basic"
                               Name 4  "main"
                               Name 9  "v0"
                               Name 11  "gl_LaunchIDEXT"
@@ -48,6 +50,7 @@
                               Name 79  "v17"
                               Name 80  "gl_WorldToObject3x4EXT"
                               Name 84  "incomingPayload"
+                              Name 98  "gl_SubgroupSize"
                               Decorate 11(gl_LaunchIDEXT) BuiltIn LaunchIdKHR
                               Decorate 14(gl_LaunchSizeEXT) BuiltIn LaunchSizeKHR
                               Decorate 20(gl_PrimitiveID) BuiltIn PrimitiveId
@@ -67,6 +70,9 @@
                               Decorate 76(gl_ObjectToWorld3x4EXT) BuiltIn ObjectToWorldKHR
                               Decorate 80(gl_WorldToObject3x4EXT) BuiltIn WorldToObjectKHR
                               Decorate 84(incomingPayload) Location 1
+                              Decorate 98(gl_SubgroupSize) RelaxedPrecision
+                              Decorate 98(gl_SubgroupSize) BuiltIn SubgroupSize
+                              Decorate 99 RelaxedPrecision
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeInt 32 0
@@ -114,6 +120,9 @@
               86:   72(fvec4) ConstantComposite 85 85 85 85
               88:     16(int) Constant 1
               89:             TypeBool
+              94:      6(int) Constant 0
+98(gl_SubgroupSize):     57(ptr) Variable Input
+             101:             TypePointer IncomingRayPayloadKHR 28(float)
          4(main):           2 Function None 3
                5:             Label
            9(v0):      8(ptr) Variable Function
@@ -176,13 +185,16 @@
               87:     16(int) Load 18(v2)
               90:    89(bool) IEqual 87 88
                               SelectionMerge 92 None
-                              BranchConditional 90 91 93
+                              BranchConditional 90 91 92
               91:               Label
                                 IgnoreIntersectionKHR
-                                Branch 92
-              93:               Label
-                                TerminateRayKHR
-                                Branch 92
               92:             Label
-                              Return
+              99:      6(int) Load 98(gl_SubgroupSize)
+             100:   28(float) ConvertUToF 99
+             102:    101(ptr) AccessChain 84(incomingPayload) 94
+             103:   28(float) Load 102
+             104:   28(float) FAdd 103 100
+             105:    101(ptr) AccessChain 84(incomingPayload) 94
+                              Store 105 104
+                              TerminateRayKHR
                               FunctionEnd
diff --git a/Test/baseResults/spv.ext.ClosestHitShader.rchit.out b/Test/baseResults/spv.ext.ClosestHitShader.rchit.out
index 7077ea4..559ba00 100644
--- a/Test/baseResults/spv.ext.ClosestHitShader.rchit.out
+++ b/Test/baseResults/spv.ext.ClosestHitShader.rchit.out
@@ -3,7 +3,7 @@
 // Generated by (magic number): 8000a
 // Id's are bound by 101
 
-                              Capability RayTracingProvisionalKHR
+                              Capability RayTracingKHR
                               Extension  "SPV_KHR_ray_tracing"
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450
@@ -48,8 +48,8 @@
                               Name 79  "v17"
                               Name 80  "gl_WorldToObject3x4EXT"
                               Name 85  "accEXT"
-                              Name 98  "localPayload"
-                              Name 100  "incomingPayload"
+                              Name 98  "incomingPayload"
+                              Name 100  "localPayload"
                               Decorate 11(gl_LaunchIDEXT) BuiltIn LaunchIdKHR
                               Decorate 14(gl_LaunchSizeEXT) BuiltIn LaunchSizeKHR
                               Decorate 20(gl_PrimitiveID) BuiltIn PrimitiveId
@@ -70,8 +70,8 @@
                               Decorate 80(gl_WorldToObject3x4EXT) BuiltIn WorldToObjectKHR
                               Decorate 85(accEXT) DescriptorSet 0
                               Decorate 85(accEXT) Binding 0
-                              Decorate 98(localPayload) Location 0
-                              Decorate 100(incomingPayload) Location 1
+                              Decorate 98(incomingPayload) Location 1
+                              Decorate 100(localPayload) Location 0
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeInt 32 0
@@ -126,10 +126,10 @@
               94:   29(fvec3) ConstantComposite 93 93 93
               95:   28(float) Constant 1061158912
               96:     16(int) Constant 1
-              97:             TypePointer RayPayloadKHR 72(fvec4)
-98(localPayload):     97(ptr) Variable RayPayloadKHR
-              99:             TypePointer IncomingRayPayloadKHR 72(fvec4)
-100(incomingPayload):     99(ptr) Variable IncomingRayPayloadKHR
+              97:             TypePointer IncomingRayPayloadKHR 72(fvec4)
+98(incomingPayload):     97(ptr) Variable IncomingRayPayloadKHR
+              99:             TypePointer RayPayloadKHR 72(fvec4)
+100(localPayload):     99(ptr) Variable RayPayloadKHR
          4(main):           2 Function None 3
                5:             Label
            9(v0):      8(ptr) Variable Function
@@ -189,6 +189,6 @@
               82:          73 Transpose 81
                               Store 79(v17) 82
               86:          83 Load 85(accEXT)
-                              TraceRayKHR 86 87 88 89 90 87 92 91 94 95 96
+                              TraceRayKHR 86 87 88 89 90 87 92 91 94 95 98(incomingPayload)
                               Return
                               FunctionEnd
diff --git a/Test/baseResults/spv.ext.ClosestHitShader_Errors.rchit.out b/Test/baseResults/spv.ext.ClosestHitShader_Errors.rchit.out
index 6c87d1c..9f945a2 100644
--- a/Test/baseResults/spv.ext.ClosestHitShader_Errors.rchit.out
+++ b/Test/baseResults/spv.ext.ClosestHitShader_Errors.rchit.out
@@ -1,10 +1,12 @@
 spv.ext.ClosestHitShader_Errors.rchit
-ERROR: 0:8: 'assign' :  l-value required "payload" (cannot modify hitAttributeNV in this stage)
-ERROR: 0:9: 'reportIntersectionEXT' : no matching overloaded function found 
-ERROR: 0:10: 'terminateRayEXT' : no matching overloaded function found 
-ERROR: 0:11: 'ignoreIntersectionEXT' : no matching overloaded function found 
-ERROR: 0:12: 'gl_RayFlagsSkipAABBEXT' : required extension not requested: GL_EXT_ray_flags_primitive_culling
-ERROR: 5 compilation errors.  No code generated.
+ERROR: 0:6: 'location' : overlapping use of location 2
+ERROR: 0:9: 'assign' :  l-value required "payload" (cannot modify hitAttributeNV in this stage)
+ERROR: 0:10: 'reportIntersectionEXT' : no matching overloaded function found 
+ERROR: 0:11: 'terminateRayEXT' : not supported in this stage: closest-hit
+ERROR: 0:12: 'ignoreIntersectionEXT' : not supported in this stage: closest-hit
+ERROR: 0:13: 'gl_RayFlagsSkipAABBEXT' : required extension not requested: GL_EXT_ray_flags_primitive_culling
+ERROR: 0:14: 'no rayPayloadEXT/rayPayloadInEXT declared' : with layout(location = 0)
+ERROR: 7 compilation errors.  No code generated.
 
 
 SPIR-V is not generated for failed compile or link
diff --git a/Test/baseResults/spv.ext.ClosestHitShader_Subgroup.rchit.out b/Test/baseResults/spv.ext.ClosestHitShader_Subgroup.rchit.out
new file mode 100644
index 0000000..14ec09b
--- /dev/null
+++ b/Test/baseResults/spv.ext.ClosestHitShader_Subgroup.rchit.out
@@ -0,0 +1,114 @@
+spv.ext.ClosestHitShader_Subgroup.rchit
+// Module Version 10400
+// Generated by (magic number): 8000a
+// Id's are bound by 67
+
+                              Capability Int64
+                              Capability GroupNonUniform
+                              Capability GroupNonUniformBallot
+                              Capability SubgroupBallotKHR
+                              Capability RayTracingKHR
+                              Capability VulkanMemoryModelKHR
+                              Capability ShaderSMBuiltinsNV
+                              Extension  "SPV_KHR_ray_tracing"
+                              Extension  "SPV_KHR_shader_ballot"
+                              Extension  "SPV_KHR_vulkan_memory_model"
+                              Extension  "SPV_NV_shader_sm_builtins"
+               1:             ExtInstImport  "GLSL.std.450"
+                              MemoryModel Logical VulkanKHR
+                              EntryPoint ClosestHitKHR 4  "main" 8 26 28 34 43 48 53 61
+                              Source GLSL 460
+                              SourceExtension  "GL_ARB_shader_ballot"
+                              SourceExtension  "GL_EXT_ray_tracing"
+                              SourceExtension  "GL_KHR_shader_subgroup_ballot"
+                              SourceExtension  "GL_KHR_shader_subgroup_basic"
+                              SourceExtension  "GL_NV_shader_sm_builtins"
+                              Name 4  "main"
+                              Name 8  "accEXT"
+                              Name 26  "incomingPayload"
+                              Name 28  "gl_SubgroupInvocationID"
+                              Name 34  "gl_SubGroupGeMaskARB"
+                              Name 43  "gl_SubgroupGtMask"
+                              Name 48  "gl_SubgroupLeMask"
+                              Name 53  "gl_SubGroupLtMaskARB"
+                              Name 61  "gl_SMIDNV"
+                              Decorate 8(accEXT) DescriptorSet 0
+                              Decorate 8(accEXT) Binding 0
+                              Decorate 26(incomingPayload) Location 1
+                              Decorate 28(gl_SubgroupInvocationID) RelaxedPrecision
+                              Decorate 28(gl_SubgroupInvocationID) BuiltIn SubgroupLocalInvocationId
+                              Decorate 29 RelaxedPrecision
+                              Decorate 34(gl_SubGroupGeMaskARB) BuiltIn SubgroupGeMaskKHR
+                              Decorate 43(gl_SubgroupGtMask) BuiltIn SubgroupGtMaskKHR
+                              Decorate 48(gl_SubgroupLeMask) BuiltIn SubgroupLeMaskKHR
+                              Decorate 53(gl_SubGroupLtMaskARB) BuiltIn SubgroupLtMaskKHR
+                              Decorate 61(gl_SMIDNV) BuiltIn SMIDNV
+               2:             TypeVoid
+               3:             TypeFunction 2
+               6:             TypeAccelerationStructureKHR
+               7:             TypePointer UniformConstant 6
+       8(accEXT):      7(ptr) Variable UniformConstant
+              10:             TypeInt 32 0
+              11:     10(int) Constant 0
+              12:     10(int) Constant 1
+              13:     10(int) Constant 2
+              14:     10(int) Constant 3
+              15:             TypeFloat 32
+              16:             TypeVector 15(float) 3
+              17:   15(float) Constant 1056964608
+              18:   16(fvec3) ConstantComposite 17 17 17
+              19:   15(float) Constant 1065353216
+              20:   16(fvec3) ConstantComposite 19 19 19
+              21:   15(float) Constant 1061158912
+              22:             TypeInt 32 1
+              23:     22(int) Constant 1
+              24:             TypeVector 15(float) 4
+              25:             TypePointer IncomingRayPayloadKHR 24(fvec4)
+26(incomingPayload):     25(ptr) Variable IncomingRayPayloadKHR
+              27:             TypePointer Input 10(int)
+28(gl_SubgroupInvocationID):     27(ptr) Variable Input
+              31:             TypeVector 10(int) 4
+              32:             TypeInt 64 0
+              33:             TypePointer Input 31(ivec4)
+34(gl_SubGroupGeMaskARB):     33(ptr) Variable Input
+              38:             TypeVector 10(int) 2
+43(gl_SubgroupGtMask):     33(ptr) Variable Input
+48(gl_SubgroupLeMask):     33(ptr) Variable Input
+53(gl_SubGroupLtMaskARB):     33(ptr) Variable Input
+   61(gl_SMIDNV):     27(ptr) Variable Input
+              65:             TypePointer IncomingRayPayloadKHR 15(float)
+         4(main):           2 Function None 3
+               5:             Label
+               9:           6 Load 8(accEXT)
+                              TraceRayKHR 9 11 12 13 14 11 18 17 20 21 26(incomingPayload)
+              29:     10(int) Load 28(gl_SubgroupInvocationID) Volatile 
+              30:   15(float) ConvertUToF 29
+              35:   31(ivec4) Load 34(gl_SubGroupGeMaskARB)
+              36:     10(int) CompositeExtract 35 0
+              37:     10(int) CompositeExtract 35 1
+              39:   38(ivec2) CompositeConstruct 36 37
+              40: 32(int64_t) Bitcast 39
+              41:   15(float) ConvertUToF 40
+              42:   15(float) FAdd 30 41
+              44:   31(ivec4) Load 43(gl_SubgroupGtMask) Volatile 
+              45:   24(fvec4) ConvertUToF 44
+              46:   15(float) CompositeExtract 45 0
+              47:   15(float) FAdd 42 46
+              49:   31(ivec4) Load 48(gl_SubgroupLeMask) Volatile 
+              50:   24(fvec4) ConvertUToF 49
+              51:   15(float) CompositeExtract 50 0
+              52:   15(float) FAdd 47 51
+              54:   31(ivec4) Load 53(gl_SubGroupLtMaskARB)
+              55:     10(int) CompositeExtract 54 0
+              56:     10(int) CompositeExtract 54 1
+              57:   38(ivec2) CompositeConstruct 55 56
+              58: 32(int64_t) Bitcast 57
+              59:   15(float) ConvertUToF 58
+              60:   15(float) FAdd 52 59
+              62:     10(int) Load 61(gl_SMIDNV) Volatile 
+              63:   15(float) ConvertUToF 62
+              64:   15(float) FAdd 60 63
+              66:     65(ptr) AccessChain 26(incomingPayload) 11
+                              Store 66 64
+                              Return
+                              FunctionEnd
diff --git a/Test/baseResults/spv.ext.IntersectShader.rint.out b/Test/baseResults/spv.ext.IntersectShader.rint.out
index 4a4a34a..2d389a0 100644
--- a/Test/baseResults/spv.ext.IntersectShader.rint.out
+++ b/Test/baseResults/spv.ext.IntersectShader.rint.out
@@ -3,7 +3,7 @@
 // Generated by (magic number): 8000a
 // Id's are bound by 81
 
-                              Capability RayTracingProvisionalKHR
+                              Capability RayTracingKHR
                               Extension  "SPV_KHR_ray_tracing"
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450
@@ -53,6 +53,8 @@
                               Decorate 42(gl_ObjectRayDirectionEXT) BuiltIn ObjectRayDirectionKHR
                               Decorate 47(gl_RayTminEXT) BuiltIn RayTminKHR
                               Decorate 50(gl_RayTmaxEXT) BuiltIn RayTmaxKHR
+                              Decorate 50(gl_RayTmaxEXT) Volatile
+                              Decorate 50(gl_RayTmaxEXT) Coherent
                               Decorate 56(gl_ObjectToWorldEXT) BuiltIn ObjectToWorldKHR
                               Decorate 59(gl_WorldToObjectEXT) BuiltIn WorldToObjectKHR
                               Decorate 65(gl_ObjectToWorld3x4EXT) BuiltIn ObjectToWorldKHR
diff --git a/Test/baseResults/spv.ext.MissShader.rmiss.out b/Test/baseResults/spv.ext.MissShader.rmiss.out
index 544901b..bc29ccc 100644
--- a/Test/baseResults/spv.ext.MissShader.rmiss.out
+++ b/Test/baseResults/spv.ext.MissShader.rmiss.out
@@ -1,15 +1,25 @@
 spv.ext.MissShader.rmiss
 // Module Version 10400
 // Generated by (magic number): 8000a
-// Id's are bound by 54
+// Id's are bound by 71
 
-                              Capability RayTracingProvisionalKHR
+                              Capability GroupNonUniform
+                              Capability GroupNonUniformBallot
+                              Capability SubgroupBallotKHR
+                              Capability RayTracingKHR
+                              Capability ShaderSMBuiltinsNV
                               Extension  "SPV_KHR_ray_tracing"
+                              Extension  "SPV_KHR_shader_ballot"
+                              Extension  "SPV_NV_shader_sm_builtins"
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450
-                              EntryPoint MissKHR 4  "main" 11 14 21 24 29 32 36 51 53
+                              EntryPoint MissKHR 4  "main" 11 14 21 24 29 32 36 51 53 58 63 70
                               Source GLSL 460
+                              SourceExtension  "GL_ARB_shader_ballot"
                               SourceExtension  "GL_EXT_ray_tracing"
+                              SourceExtension  "GL_KHR_shader_subgroup_ballot"
+                              SourceExtension  "GL_KHR_shader_subgroup_basic"
+                              SourceExtension  "GL_NV_shader_sm_builtins"
                               Name 4  "main"
                               Name 9  "v0"
                               Name 11  "gl_LaunchIDEXT"
@@ -24,8 +34,11 @@
                               Name 31  "v5"
                               Name 32  "gl_RayTmaxEXT"
                               Name 36  "accEXT"
-                              Name 51  "localPayload"
-                              Name 53  "incomingPayload"
+                              Name 51  "incomingPayload"
+                              Name 53  "gl_SubGroupSizeARB"
+                              Name 58  "gl_SubgroupEqMask"
+                              Name 63  "gl_WarpIDNV"
+                              Name 70  "localPayload"
                               Decorate 11(gl_LaunchIDEXT) BuiltIn LaunchIdKHR
                               Decorate 14(gl_LaunchSizeEXT) BuiltIn LaunchSizeKHR
                               Decorate 21(gl_WorldRayOriginEXT) BuiltIn WorldRayOriginKHR
@@ -34,8 +47,17 @@
                               Decorate 32(gl_RayTmaxEXT) BuiltIn RayTmaxKHR
                               Decorate 36(accEXT) DescriptorSet 0
                               Decorate 36(accEXT) Binding 0
-                              Decorate 51(localPayload) Location 0
-                              Decorate 53(incomingPayload) Location 1
+                              Decorate 51(incomingPayload) Location 1
+                              Decorate 53(gl_SubGroupSizeARB) BuiltIn SubgroupSize
+                              Decorate 53(gl_SubGroupSizeARB) Volatile
+                              Decorate 53(gl_SubGroupSizeARB) Coherent
+                              Decorate 58(gl_SubgroupEqMask) BuiltIn SubgroupEqMaskKHR
+                              Decorate 58(gl_SubgroupEqMask) Volatile
+                              Decorate 58(gl_SubgroupEqMask) Coherent
+                              Decorate 63(gl_WarpIDNV) BuiltIn WarpIDNV
+                              Decorate 63(gl_WarpIDNV) Volatile
+                              Decorate 63(gl_WarpIDNV) Coherent
+                              Decorate 70(localPayload) Location 0
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeInt 32 0
@@ -69,10 +91,17 @@
               47:             TypeInt 32 1
               48:     47(int) Constant 1
               49:             TypeVector 16(float) 4
-              50:             TypePointer RayPayloadKHR 49(fvec4)
-51(localPayload):     50(ptr) Variable RayPayloadKHR
-              52:             TypePointer IncomingRayPayloadKHR 49(fvec4)
-53(incomingPayload):     52(ptr) Variable IncomingRayPayloadKHR
+              50:             TypePointer IncomingRayPayloadKHR 49(fvec4)
+51(incomingPayload):     50(ptr) Variable IncomingRayPayloadKHR
+              52:             TypePointer Input 6(int)
+53(gl_SubGroupSizeARB):     52(ptr) Variable Input
+              56:             TypeVector 6(int) 4
+              57:             TypePointer Input 56(ivec4)
+58(gl_SubgroupEqMask):     57(ptr) Variable Input
+ 63(gl_WarpIDNV):     52(ptr) Variable Input
+              67:             TypePointer IncomingRayPayloadKHR 16(float)
+              69:             TypePointer RayPayloadKHR 49(fvec4)
+70(localPayload):     69(ptr) Variable RayPayloadKHR
          4(main):           2 Function None 3
                5:             Label
            9(v0):      8(ptr) Variable Function
@@ -94,6 +123,17 @@
               33:   16(float) Load 32(gl_RayTmaxEXT)
                               Store 31(v5) 33
               37:          34 Load 36(accEXT)
-                              TraceRayKHR 37 38 39 40 41 38 43 42 45 46 48
+                              TraceRayKHR 37 38 39 40 41 38 43 42 45 46 51(incomingPayload)
+              54:      6(int) Load 53(gl_SubGroupSizeARB)
+              55:   16(float) ConvertUToF 54
+              59:   56(ivec4) Load 58(gl_SubgroupEqMask)
+              60:   49(fvec4) ConvertUToF 59
+              61:   16(float) CompositeExtract 60 0
+              62:   16(float) FAdd 55 61
+              64:      6(int) Load 63(gl_WarpIDNV)
+              65:   16(float) ConvertUToF 64
+              66:   16(float) FAdd 62 65
+              68:     67(ptr) AccessChain 51(incomingPayload) 38
+                              Store 68 66
                               Return
                               FunctionEnd
diff --git a/Test/baseResults/spv.ext.MissShader_Errors.rmiss.out b/Test/baseResults/spv.ext.MissShader_Errors.rmiss.out
index 929a2a7..50d3c83 100644
--- a/Test/baseResults/spv.ext.MissShader_Errors.rmiss.out
+++ b/Test/baseResults/spv.ext.MissShader_Errors.rmiss.out
@@ -13,8 +13,8 @@
 ERROR: 0:11: 'gl_HitTEXT' : undeclared identifier 
 ERROR: 0:12: 'gl_HitKindEXT' : undeclared identifier 
 ERROR: 0:13: 'reportIntersectionEXT' : no matching overloaded function found 
-ERROR: 0:14: 'ignoreIntersectionEXT' : no matching overloaded function found 
-ERROR: 0:15: 'terminateRayEXT' : no matching overloaded function found 
+ERROR: 0:14: 'ignoreIntersectionEXT' : not supported in this stage: miss
+ERROR: 0:15: 'terminateRayEXT' : not supported in this stage: miss
 ERROR: 16 compilation errors.  No code generated.
 
 
diff --git a/Test/baseResults/spv.ext.RayCallable.rcall.out b/Test/baseResults/spv.ext.RayCallable.rcall.out
index e87b5fa..d429116 100644
--- a/Test/baseResults/spv.ext.RayCallable.rcall.out
+++ b/Test/baseResults/spv.ext.RayCallable.rcall.out
@@ -3,7 +3,7 @@
 // Generated by (magic number): 8000a
 // Id's are bound by 30
 
-                              Capability RayTracingProvisionalKHR
+                              Capability RayTracingKHR
                               Extension  "SPV_KHR_ray_tracing"
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450
@@ -55,6 +55,6 @@
                               Store 13(size) 15
               23:     22(ptr) AccessChain 18 20
                               Store 23 21
-                              ExecuteCallableKHR 24 25
+                              ExecuteCallableKHR 24 18
                               Return
                               FunctionEnd
diff --git a/Test/baseResults/spv.ext.RayCallable_Errors.rcall.out b/Test/baseResults/spv.ext.RayCallable_Errors.rcall.out
index 4699342..e623874 100644
--- a/Test/baseResults/spv.ext.RayCallable_Errors.rcall.out
+++ b/Test/baseResults/spv.ext.RayCallable_Errors.rcall.out
@@ -2,34 +2,36 @@
 ERROR: 0:3: 'hitAttributeEXT' : not supported in this stage: callable
 ERROR: 0:4: 'rayPayloadEXT' : not supported in this stage: callable
 ERROR: 0:5: 'rayPayloadInEXT' : not supported in this stage: callable
-ERROR: 0:9: 'gl_PrimitiveID' : undeclared identifier 
-ERROR: 0:9: '=' :  cannot convert from ' temp float' to ' temp highp int'
-ERROR: 0:10: 'gl_InstanceID' : undeclared identifier (Did you mean gl_InstanceIndex?)
+ERROR: 0:7: 'location' : overlapping use of location 0
+ERROR: 0:10: 'gl_PrimitiveID' : undeclared identifier 
 ERROR: 0:10: '=' :  cannot convert from ' temp float' to ' temp highp int'
-ERROR: 0:11: 'gl_InstanceCustomIndexEXT' : undeclared identifier 
+ERROR: 0:11: 'gl_InstanceID' : undeclared identifier (Did you mean gl_InstanceIndex?)
 ERROR: 0:11: '=' :  cannot convert from ' temp float' to ' temp highp int'
-ERROR: 0:12: 'gl_WorldRayOriginEXT' : undeclared identifier 
-ERROR: 0:12: '=' :  cannot convert from ' temp float' to ' temp highp 3-component vector of float'
-ERROR: 0:13: 'gl_WorldRayDirectionEXT' : undeclared identifier 
+ERROR: 0:12: 'gl_InstanceCustomIndexEXT' : undeclared identifier 
+ERROR: 0:12: '=' :  cannot convert from ' temp float' to ' temp highp int'
+ERROR: 0:13: 'gl_WorldRayOriginEXT' : undeclared identifier 
 ERROR: 0:13: '=' :  cannot convert from ' temp float' to ' temp highp 3-component vector of float'
-ERROR: 0:14: 'gl_ObjectRayOriginEXT' : undeclared identifier 
+ERROR: 0:14: 'gl_WorldRayDirectionEXT' : undeclared identifier 
 ERROR: 0:14: '=' :  cannot convert from ' temp float' to ' temp highp 3-component vector of float'
-ERROR: 0:15: 'gl_ObjectRayDirectionEXT' : undeclared identifier 
+ERROR: 0:15: 'gl_ObjectRayOriginEXT' : undeclared identifier 
 ERROR: 0:15: '=' :  cannot convert from ' temp float' to ' temp highp 3-component vector of float'
-ERROR: 0:16: 'gl_RayTminEXT' : undeclared identifier 
-ERROR: 0:17: 'gl_RayTmaxEXT' : undeclared identifier 
-ERROR: 0:18: 'gl_ObjectToWorldEXT' : undeclared identifier 
-ERROR: 0:18: '=' :  cannot convert from ' temp float' to ' temp highp 4X3 matrix of float'
-ERROR: 0:19: 'gl_WorldToObjectEXT' : undeclared identifier 
+ERROR: 0:16: 'gl_ObjectRayDirectionEXT' : undeclared identifier 
+ERROR: 0:16: '=' :  cannot convert from ' temp float' to ' temp highp 3-component vector of float'
+ERROR: 0:17: 'gl_RayTminEXT' : undeclared identifier 
+ERROR: 0:18: 'gl_RayTmaxEXT' : undeclared identifier 
+ERROR: 0:19: 'gl_ObjectToWorldEXT' : undeclared identifier 
 ERROR: 0:19: '=' :  cannot convert from ' temp float' to ' temp highp 4X3 matrix of float'
-ERROR: 0:20: 'gl_HitTEXT' : undeclared identifier 
-ERROR: 0:21: 'gl_HitKindEXT' : undeclared identifier 
-ERROR: 0:22: 'gl_IncomingRayFlagsEXT' : undeclared identifier 
-ERROR: 0:22: '=' :  cannot convert from ' temp float' to ' temp highp uint'
-ERROR: 0:23: 'reportIntersectionEXT' : no matching overloaded function found 
-ERROR: 0:24: 'ignoreIntersectionEXT' : no matching overloaded function found 
-ERROR: 0:25: 'terminateRayEXT' : no matching overloaded function found 
-ERROR: 30 compilation errors.  No code generated.
+ERROR: 0:20: 'gl_WorldToObjectEXT' : undeclared identifier 
+ERROR: 0:20: '=' :  cannot convert from ' temp float' to ' temp highp 4X3 matrix of float'
+ERROR: 0:21: 'gl_HitTEXT' : undeclared identifier 
+ERROR: 0:22: 'gl_HitKindEXT' : undeclared identifier 
+ERROR: 0:23: 'gl_IncomingRayFlagsEXT' : undeclared identifier 
+ERROR: 0:23: '=' :  cannot convert from ' temp float' to ' temp highp uint'
+ERROR: 0:24: 'reportIntersectionEXT' : no matching overloaded function found 
+ERROR: 0:25: 'ignoreIntersectionEXT' : not supported in this stage: callable
+ERROR: 0:26: 'terminateRayEXT' : not supported in this stage: callable
+ERROR: 0:27: 'no callableDataEXT/callableDataInEXT declared' : with layout(location = 1)
+ERROR: 32 compilation errors.  No code generated.
 
 
 SPIR-V is not generated for failed compile or link
diff --git a/Test/baseResults/spv.ext.RayConstants.rgen.out b/Test/baseResults/spv.ext.RayConstants.rgen.out
index 5d7079a..afd5083 100644
--- a/Test/baseResults/spv.ext.RayConstants.rgen.out
+++ b/Test/baseResults/spv.ext.RayConstants.rgen.out
@@ -3,7 +3,7 @@
 // Generated by (magic number): 8000a
 // Id's are bound by 27
 
-                              Capability RayTracingProvisionalKHR
+                              Capability RayTracingKHR
                               Extension  "SPV_KHR_ray_tracing"
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450
@@ -15,7 +15,7 @@
                               Name 26  "payload"
                               Decorate 8(accEXT) DescriptorSet 0
                               Decorate 8(accEXT) Binding 0
-                              Decorate 26(payload) Location 0
+                              Decorate 26(payload) Location 1
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeAccelerationStructureKHR
@@ -41,6 +41,6 @@
          4(main):           2 Function None 3
                5:             Label
                9:           6 Load 8(accEXT)
-                              TraceRayKHR 9 11 12 13 13 12 17 18 20 21 23
+                              TraceRayKHR 9 11 12 13 13 12 17 18 20 21 26(payload)
                               Return
                               FunctionEnd
diff --git a/Test/baseResults/spv.ext.RayGenSBTlayout.rgen.out b/Test/baseResults/spv.ext.RayGenSBTlayout.rgen.out
new file mode 100644
index 0000000..60b5e93
--- /dev/null
+++ b/Test/baseResults/spv.ext.RayGenSBTlayout.rgen.out
@@ -0,0 +1,134 @@
+spv.ext.RayGenSBTlayout.rgen
+// Module Version 10400
+// Generated by (magic number): 8000a
+// Id's are bound by 74
+
+                              Capability Int64
+                              Capability RayTracingKHR
+                              Extension  "SPV_KHR_ray_tracing"
+               1:             ExtInstImport  "GLSL.std.450"
+                              MemoryModel Logical GLSL450
+                              EntryPoint RayGenerationKHR 4  "main" 11 21 38 60
+                              Source GLSL 460
+                              SourceExtension  "GL_ARB_gpu_shader_int64"
+                              SourceExtension  "GL_EXT_ray_tracing"
+                              Name 4  "main"
+                              Name 8  "lx"
+                              Name 11  "gl_LaunchIDEXT"
+                              Name 16  "ly"
+                              Name 20  "sx"
+                              Name 21  "gl_LaunchSizeEXT"
+                              Name 24  "sy"
+                              Name 36  "block"
+                              MemberName 36(block) 0  "dir"
+                              MemberName 36(block) 1  "origin"
+                              MemberName 36(block) 2  "i"
+                              MemberName 36(block) 3  "aHandle32"
+                              MemberName 36(block) 4  "aHandle64"
+                              MemberName 36(block) 5  "arr2"
+                              MemberName 36(block) 6  "a"
+                              MemberName 36(block) 7  "arr3"
+                              MemberName 36(block) 8  "packme"
+                              MemberName 36(block) 9  "b"
+                              MemberName 36(block) 10  "c"
+                              Name 38  ""
+                              Name 60  "payload"
+                              Decorate 11(gl_LaunchIDEXT) BuiltIn LaunchIdKHR
+                              Decorate 21(gl_LaunchSizeEXT) BuiltIn LaunchSizeKHR
+                              Decorate 34 ArrayStride 8
+                              Decorate 35 ArrayStride 16
+                              MemberDecorate 36(block) 0 Offset 0
+                              MemberDecorate 36(block) 1 Offset 16
+                              MemberDecorate 36(block) 2 Offset 28
+                              MemberDecorate 36(block) 3 Offset 32
+                              MemberDecorate 36(block) 4 Offset 40
+                              MemberDecorate 36(block) 5 Offset 48
+                              MemberDecorate 36(block) 6 Offset 64
+                              MemberDecorate 36(block) 7 Offset 80
+                              MemberDecorate 36(block) 8 Offset 112
+                              MemberDecorate 36(block) 9 Offset 120
+                              MemberDecorate 36(block) 10 Offset 128
+                              Decorate 36(block) Block
+                              Decorate 38 DescriptorSet 0
+                              Decorate 38 Binding 0
+                              Decorate 60(payload) Location 1
+               2:             TypeVoid
+               3:             TypeFunction 2
+               6:             TypeInt 32 0
+               7:             TypePointer Function 6(int)
+               9:             TypeVector 6(int) 3
+              10:             TypePointer Input 9(ivec3)
+11(gl_LaunchIDEXT):     10(ptr) Variable Input
+              12:      6(int) Constant 0
+              13:             TypePointer Input 6(int)
+              17:      6(int) Constant 1
+21(gl_LaunchSizeEXT):     10(ptr) Variable Input
+              27:             TypeFloat 32
+              28:             TypeVector 27(float) 3
+              29:             TypeInt 32 1
+              30:             TypeVector 6(int) 2
+              31:             TypeInt 64 0
+              32:             TypeVector 27(float) 2
+              33:      6(int) Constant 2
+              34:             TypeArray 32(fvec2) 33
+              35:             TypeArray 28(fvec3) 33
+       36(block):             TypeStruct 28(fvec3) 28(fvec3) 29(int) 30(ivec2) 31(int64_t) 34 27(float) 35 27(float) 32(fvec2) 27(float)
+              37:             TypePointer ShaderRecordBufferKHR 36(block)
+              38:     37(ptr) Variable ShaderRecordBufferKHR
+              39:     29(int) Constant 3
+              40:             TypePointer ShaderRecordBufferKHR 30(ivec2)
+              43:             TypeAccelerationStructureKHR
+              49:     29(int) Constant 1
+              50:             TypePointer ShaderRecordBufferKHR 28(fvec3)
+              53:   27(float) Constant 1056964608
+              54:     29(int) Constant 0
+              57:   27(float) Constant 1061158912
+              58:             TypeVector 27(float) 4
+              59:             TypePointer RayPayloadKHR 58(fvec4)
+     60(payload):     59(ptr) Variable RayPayloadKHR
+              61:     29(int) Constant 4
+              62:             TypePointer ShaderRecordBufferKHR 31(int64_t)
+         4(main):           2 Function None 3
+               5:             Label
+           8(lx):      7(ptr) Variable Function
+          16(ly):      7(ptr) Variable Function
+          20(sx):      7(ptr) Variable Function
+          24(sy):      7(ptr) Variable Function
+              14:     13(ptr) AccessChain 11(gl_LaunchIDEXT) 12
+              15:      6(int) Load 14
+                              Store 8(lx) 15
+              18:     13(ptr) AccessChain 11(gl_LaunchIDEXT) 17
+              19:      6(int) Load 18
+                              Store 16(ly) 19
+              22:     13(ptr) AccessChain 21(gl_LaunchSizeEXT) 12
+              23:      6(int) Load 22
+                              Store 20(sx) 23
+              25:     13(ptr) AccessChain 21(gl_LaunchSizeEXT) 17
+              26:      6(int) Load 25
+                              Store 24(sy) 26
+              41:     40(ptr) AccessChain 38 39
+              42:   30(ivec2) Load 41
+              44:          43 ConvertUToAccelerationStructureKHR 42
+              45:      6(int) Load 8(lx)
+              46:      6(int) Load 16(ly)
+              47:      6(int) Load 20(sx)
+              48:      6(int) Load 24(sy)
+              51:     50(ptr) AccessChain 38 49
+              52:   28(fvec3) Load 51
+              55:     50(ptr) AccessChain 38 54
+              56:   28(fvec3) Load 55
+                              TraceRayKHR 44 45 46 47 48 12 52 53 56 57 60(payload)
+              63:     62(ptr) AccessChain 38 61
+              64: 31(int64_t) Load 63
+              65:          43 ConvertUToAccelerationStructureKHR 64
+              66:      6(int) Load 8(lx)
+              67:      6(int) Load 16(ly)
+              68:      6(int) Load 20(sx)
+              69:      6(int) Load 24(sy)
+              70:     50(ptr) AccessChain 38 49
+              71:   28(fvec3) Load 70
+              72:     50(ptr) AccessChain 38 54
+              73:   28(fvec3) Load 72
+                              TraceRayKHR 65 66 67 68 69 12 71 53 73 57 60(payload)
+                              Return
+                              FunctionEnd
diff --git a/Test/baseResults/spv.ext.RayGenSBTlayout140.rgen.out b/Test/baseResults/spv.ext.RayGenSBTlayout140.rgen.out
new file mode 100644
index 0000000..cc175f7
--- /dev/null
+++ b/Test/baseResults/spv.ext.RayGenSBTlayout140.rgen.out
@@ -0,0 +1,134 @@
+spv.ext.RayGenSBTlayout140.rgen
+// Module Version 10400
+// Generated by (magic number): 8000a
+// Id's are bound by 74
+
+                              Capability Int64
+                              Capability RayTracingKHR
+                              Extension  "SPV_KHR_ray_tracing"
+               1:             ExtInstImport  "GLSL.std.450"
+                              MemoryModel Logical GLSL450
+                              EntryPoint RayGenerationKHR 4  "main" 11 21 38 60
+                              Source GLSL 460
+                              SourceExtension  "GL_ARB_gpu_shader_int64"
+                              SourceExtension  "GL_EXT_ray_tracing"
+                              Name 4  "main"
+                              Name 8  "lx"
+                              Name 11  "gl_LaunchIDEXT"
+                              Name 16  "ly"
+                              Name 20  "sx"
+                              Name 21  "gl_LaunchSizeEXT"
+                              Name 24  "sy"
+                              Name 36  "block"
+                              MemberName 36(block) 0  "dir"
+                              MemberName 36(block) 1  "origin"
+                              MemberName 36(block) 2  "i"
+                              MemberName 36(block) 3  "aHandle32"
+                              MemberName 36(block) 4  "aHandle64"
+                              MemberName 36(block) 5  "arr"
+                              MemberName 36(block) 6  "a"
+                              MemberName 36(block) 7  "arr3"
+                              MemberName 36(block) 8  "packme"
+                              MemberName 36(block) 9  "b"
+                              MemberName 36(block) 10  "c"
+                              Name 38  ""
+                              Name 60  "payload"
+                              Decorate 11(gl_LaunchIDEXT) BuiltIn LaunchIdKHR
+                              Decorate 21(gl_LaunchSizeEXT) BuiltIn LaunchSizeKHR
+                              Decorate 34 ArrayStride 16
+                              Decorate 35 ArrayStride 16
+                              MemberDecorate 36(block) 0 Offset 0
+                              MemberDecorate 36(block) 1 Offset 16
+                              MemberDecorate 36(block) 2 Offset 28
+                              MemberDecorate 36(block) 3 Offset 32
+                              MemberDecorate 36(block) 4 Offset 40
+                              MemberDecorate 36(block) 5 Offset 48
+                              MemberDecorate 36(block) 6 Offset 80
+                              MemberDecorate 36(block) 7 Offset 96
+                              MemberDecorate 36(block) 8 Offset 128
+                              MemberDecorate 36(block) 9 Offset 136
+                              MemberDecorate 36(block) 10 Offset 144
+                              Decorate 36(block) Block
+                              Decorate 38 DescriptorSet 0
+                              Decorate 38 Binding 0
+                              Decorate 60(payload) Location 1
+               2:             TypeVoid
+               3:             TypeFunction 2
+               6:             TypeInt 32 0
+               7:             TypePointer Function 6(int)
+               9:             TypeVector 6(int) 3
+              10:             TypePointer Input 9(ivec3)
+11(gl_LaunchIDEXT):     10(ptr) Variable Input
+              12:      6(int) Constant 0
+              13:             TypePointer Input 6(int)
+              17:      6(int) Constant 1
+21(gl_LaunchSizeEXT):     10(ptr) Variable Input
+              27:             TypeFloat 32
+              28:             TypeVector 27(float) 3
+              29:             TypeInt 32 1
+              30:             TypeVector 6(int) 2
+              31:             TypeInt 64 0
+              32:             TypeVector 27(float) 2
+              33:      6(int) Constant 2
+              34:             TypeArray 32(fvec2) 33
+              35:             TypeArray 28(fvec3) 33
+       36(block):             TypeStruct 28(fvec3) 28(fvec3) 29(int) 30(ivec2) 31(int64_t) 34 27(float) 35 27(float) 32(fvec2) 27(float)
+              37:             TypePointer ShaderRecordBufferKHR 36(block)
+              38:     37(ptr) Variable ShaderRecordBufferKHR
+              39:     29(int) Constant 3
+              40:             TypePointer ShaderRecordBufferKHR 30(ivec2)
+              43:             TypeAccelerationStructureKHR
+              49:     29(int) Constant 1
+              50:             TypePointer ShaderRecordBufferKHR 28(fvec3)
+              53:   27(float) Constant 1056964608
+              54:     29(int) Constant 0
+              57:   27(float) Constant 1061158912
+              58:             TypeVector 27(float) 4
+              59:             TypePointer RayPayloadKHR 58(fvec4)
+     60(payload):     59(ptr) Variable RayPayloadKHR
+              61:     29(int) Constant 4
+              62:             TypePointer ShaderRecordBufferKHR 31(int64_t)
+         4(main):           2 Function None 3
+               5:             Label
+           8(lx):      7(ptr) Variable Function
+          16(ly):      7(ptr) Variable Function
+          20(sx):      7(ptr) Variable Function
+          24(sy):      7(ptr) Variable Function
+              14:     13(ptr) AccessChain 11(gl_LaunchIDEXT) 12
+              15:      6(int) Load 14
+                              Store 8(lx) 15
+              18:     13(ptr) AccessChain 11(gl_LaunchIDEXT) 17
+              19:      6(int) Load 18
+                              Store 16(ly) 19
+              22:     13(ptr) AccessChain 21(gl_LaunchSizeEXT) 12
+              23:      6(int) Load 22
+                              Store 20(sx) 23
+              25:     13(ptr) AccessChain 21(gl_LaunchSizeEXT) 17
+              26:      6(int) Load 25
+                              Store 24(sy) 26
+              41:     40(ptr) AccessChain 38 39
+              42:   30(ivec2) Load 41
+              44:          43 ConvertUToAccelerationStructureKHR 42
+              45:      6(int) Load 8(lx)
+              46:      6(int) Load 16(ly)
+              47:      6(int) Load 20(sx)
+              48:      6(int) Load 24(sy)
+              51:     50(ptr) AccessChain 38 49
+              52:   28(fvec3) Load 51
+              55:     50(ptr) AccessChain 38 54
+              56:   28(fvec3) Load 55
+                              TraceRayKHR 44 45 46 47 48 12 52 53 56 57 60(payload)
+              63:     62(ptr) AccessChain 38 61
+              64: 31(int64_t) Load 63
+              65:          43 ConvertUToAccelerationStructureKHR 64
+              66:      6(int) Load 8(lx)
+              67:      6(int) Load 16(ly)
+              68:      6(int) Load 20(sx)
+              69:      6(int) Load 24(sy)
+              70:     50(ptr) AccessChain 38 49
+              71:   28(fvec3) Load 70
+              72:     50(ptr) AccessChain 38 54
+              73:   28(fvec3) Load 72
+                              TraceRayKHR 65 66 67 68 69 12 71 53 73 57 60(payload)
+                              Return
+                              FunctionEnd
diff --git a/Test/baseResults/spv.ext.RayGenSBTlayout430.rgen.out b/Test/baseResults/spv.ext.RayGenSBTlayout430.rgen.out
new file mode 100644
index 0000000..afcfa9c
--- /dev/null
+++ b/Test/baseResults/spv.ext.RayGenSBTlayout430.rgen.out
@@ -0,0 +1,134 @@
+spv.ext.RayGenSBTlayout430.rgen
+// Module Version 10400
+// Generated by (magic number): 8000a
+// Id's are bound by 74
+
+                              Capability Int64
+                              Capability RayTracingKHR
+                              Extension  "SPV_KHR_ray_tracing"
+               1:             ExtInstImport  "GLSL.std.450"
+                              MemoryModel Logical GLSL450
+                              EntryPoint RayGenerationKHR 4  "main" 11 21 38 60
+                              Source GLSL 460
+                              SourceExtension  "GL_ARB_gpu_shader_int64"
+                              SourceExtension  "GL_EXT_ray_tracing"
+                              Name 4  "main"
+                              Name 8  "lx"
+                              Name 11  "gl_LaunchIDEXT"
+                              Name 16  "ly"
+                              Name 20  "sx"
+                              Name 21  "gl_LaunchSizeEXT"
+                              Name 24  "sy"
+                              Name 36  "block"
+                              MemberName 36(block) 0  "dir"
+                              MemberName 36(block) 1  "origin"
+                              MemberName 36(block) 2  "i"
+                              MemberName 36(block) 3  "aHandle32"
+                              MemberName 36(block) 4  "aHandle64"
+                              MemberName 36(block) 5  "arr"
+                              MemberName 36(block) 6  "a"
+                              MemberName 36(block) 7  "arr3"
+                              MemberName 36(block) 8  "packme"
+                              MemberName 36(block) 9  "b"
+                              MemberName 36(block) 10  "c"
+                              Name 38  ""
+                              Name 60  "payload"
+                              Decorate 11(gl_LaunchIDEXT) BuiltIn LaunchIdKHR
+                              Decorate 21(gl_LaunchSizeEXT) BuiltIn LaunchSizeKHR
+                              Decorate 34 ArrayStride 8
+                              Decorate 35 ArrayStride 16
+                              MemberDecorate 36(block) 0 Offset 0
+                              MemberDecorate 36(block) 1 Offset 16
+                              MemberDecorate 36(block) 2 Offset 28
+                              MemberDecorate 36(block) 3 Offset 32
+                              MemberDecorate 36(block) 4 Offset 40
+                              MemberDecorate 36(block) 5 Offset 48
+                              MemberDecorate 36(block) 6 Offset 64
+                              MemberDecorate 36(block) 7 Offset 80
+                              MemberDecorate 36(block) 8 Offset 112
+                              MemberDecorate 36(block) 9 Offset 120
+                              MemberDecorate 36(block) 10 Offset 128
+                              Decorate 36(block) Block
+                              Decorate 38 DescriptorSet 0
+                              Decorate 38 Binding 0
+                              Decorate 60(payload) Location 1
+               2:             TypeVoid
+               3:             TypeFunction 2
+               6:             TypeInt 32 0
+               7:             TypePointer Function 6(int)
+               9:             TypeVector 6(int) 3
+              10:             TypePointer Input 9(ivec3)
+11(gl_LaunchIDEXT):     10(ptr) Variable Input
+              12:      6(int) Constant 0
+              13:             TypePointer Input 6(int)
+              17:      6(int) Constant 1
+21(gl_LaunchSizeEXT):     10(ptr) Variable Input
+              27:             TypeFloat 32
+              28:             TypeVector 27(float) 3
+              29:             TypeInt 32 1
+              30:             TypeVector 6(int) 2
+              31:             TypeInt 64 0
+              32:             TypeVector 27(float) 2
+              33:      6(int) Constant 2
+              34:             TypeArray 32(fvec2) 33
+              35:             TypeArray 28(fvec3) 33
+       36(block):             TypeStruct 28(fvec3) 28(fvec3) 29(int) 30(ivec2) 31(int64_t) 34 27(float) 35 27(float) 32(fvec2) 27(float)
+              37:             TypePointer ShaderRecordBufferKHR 36(block)
+              38:     37(ptr) Variable ShaderRecordBufferKHR
+              39:     29(int) Constant 3
+              40:             TypePointer ShaderRecordBufferKHR 30(ivec2)
+              43:             TypeAccelerationStructureKHR
+              49:     29(int) Constant 1
+              50:             TypePointer ShaderRecordBufferKHR 28(fvec3)
+              53:   27(float) Constant 1056964608
+              54:     29(int) Constant 0
+              57:   27(float) Constant 1061158912
+              58:             TypeVector 27(float) 4
+              59:             TypePointer RayPayloadKHR 58(fvec4)
+     60(payload):     59(ptr) Variable RayPayloadKHR
+              61:     29(int) Constant 4
+              62:             TypePointer ShaderRecordBufferKHR 31(int64_t)
+         4(main):           2 Function None 3
+               5:             Label
+           8(lx):      7(ptr) Variable Function
+          16(ly):      7(ptr) Variable Function
+          20(sx):      7(ptr) Variable Function
+          24(sy):      7(ptr) Variable Function
+              14:     13(ptr) AccessChain 11(gl_LaunchIDEXT) 12
+              15:      6(int) Load 14
+                              Store 8(lx) 15
+              18:     13(ptr) AccessChain 11(gl_LaunchIDEXT) 17
+              19:      6(int) Load 18
+                              Store 16(ly) 19
+              22:     13(ptr) AccessChain 21(gl_LaunchSizeEXT) 12
+              23:      6(int) Load 22
+                              Store 20(sx) 23
+              25:     13(ptr) AccessChain 21(gl_LaunchSizeEXT) 17
+              26:      6(int) Load 25
+                              Store 24(sy) 26
+              41:     40(ptr) AccessChain 38 39
+              42:   30(ivec2) Load 41
+              44:          43 ConvertUToAccelerationStructureKHR 42
+              45:      6(int) Load 8(lx)
+              46:      6(int) Load 16(ly)
+              47:      6(int) Load 20(sx)
+              48:      6(int) Load 24(sy)
+              51:     50(ptr) AccessChain 38 49
+              52:   28(fvec3) Load 51
+              55:     50(ptr) AccessChain 38 54
+              56:   28(fvec3) Load 55
+                              TraceRayKHR 44 45 46 47 48 12 52 53 56 57 60(payload)
+              63:     62(ptr) AccessChain 38 61
+              64: 31(int64_t) Load 63
+              65:          43 ConvertUToAccelerationStructureKHR 64
+              66:      6(int) Load 8(lx)
+              67:      6(int) Load 16(ly)
+              68:      6(int) Load 20(sx)
+              69:      6(int) Load 24(sy)
+              70:     50(ptr) AccessChain 38 49
+              71:   28(fvec3) Load 70
+              72:     50(ptr) AccessChain 38 54
+              73:   28(fvec3) Load 72
+                              TraceRayKHR 65 66 67 68 69 12 71 53 73 57 60(payload)
+                              Return
+                              FunctionEnd
diff --git a/Test/baseResults/spv.ext.RayGenSBTlayoutscalar.rgen.out b/Test/baseResults/spv.ext.RayGenSBTlayoutscalar.rgen.out
new file mode 100644
index 0000000..eac481a
--- /dev/null
+++ b/Test/baseResults/spv.ext.RayGenSBTlayoutscalar.rgen.out
@@ -0,0 +1,135 @@
+spv.ext.RayGenSBTlayoutscalar.rgen
+// Module Version 10400
+// Generated by (magic number): 8000a
+// Id's are bound by 74
+
+                              Capability Int64
+                              Capability RayTracingKHR
+                              Extension  "SPV_KHR_ray_tracing"
+               1:             ExtInstImport  "GLSL.std.450"
+                              MemoryModel Logical GLSL450
+                              EntryPoint RayGenerationKHR 4  "main" 11 21 38 60
+                              Source GLSL 460
+                              SourceExtension  "GL_ARB_gpu_shader_int64"
+                              SourceExtension  "GL_EXT_ray_tracing"
+                              SourceExtension  "GL_EXT_scalar_block_layout"
+                              Name 4  "main"
+                              Name 8  "lx"
+                              Name 11  "gl_LaunchIDEXT"
+                              Name 16  "ly"
+                              Name 20  "sx"
+                              Name 21  "gl_LaunchSizeEXT"
+                              Name 24  "sy"
+                              Name 36  "block"
+                              MemberName 36(block) 0  "dir"
+                              MemberName 36(block) 1  "origin"
+                              MemberName 36(block) 2  "i"
+                              MemberName 36(block) 3  "aHandle32"
+                              MemberName 36(block) 4  "aHandle64"
+                              MemberName 36(block) 5  "arr"
+                              MemberName 36(block) 6  "a"
+                              MemberName 36(block) 7  "arr3"
+                              MemberName 36(block) 8  "packme"
+                              MemberName 36(block) 9  "b"
+                              MemberName 36(block) 10  "c"
+                              Name 38  ""
+                              Name 60  "payload"
+                              Decorate 11(gl_LaunchIDEXT) BuiltIn LaunchIdKHR
+                              Decorate 21(gl_LaunchSizeEXT) BuiltIn LaunchSizeKHR
+                              Decorate 34 ArrayStride 8
+                              Decorate 35 ArrayStride 12
+                              MemberDecorate 36(block) 0 Offset 0
+                              MemberDecorate 36(block) 1 Offset 12
+                              MemberDecorate 36(block) 2 Offset 24
+                              MemberDecorate 36(block) 3 Offset 28
+                              MemberDecorate 36(block) 4 Offset 40
+                              MemberDecorate 36(block) 5 Offset 48
+                              MemberDecorate 36(block) 6 Offset 64
+                              MemberDecorate 36(block) 7 Offset 68
+                              MemberDecorate 36(block) 8 Offset 92
+                              MemberDecorate 36(block) 9 Offset 96
+                              MemberDecorate 36(block) 10 Offset 104
+                              Decorate 36(block) Block
+                              Decorate 38 DescriptorSet 0
+                              Decorate 38 Binding 0
+                              Decorate 60(payload) Location 1
+               2:             TypeVoid
+               3:             TypeFunction 2
+               6:             TypeInt 32 0
+               7:             TypePointer Function 6(int)
+               9:             TypeVector 6(int) 3
+              10:             TypePointer Input 9(ivec3)
+11(gl_LaunchIDEXT):     10(ptr) Variable Input
+              12:      6(int) Constant 0
+              13:             TypePointer Input 6(int)
+              17:      6(int) Constant 1
+21(gl_LaunchSizeEXT):     10(ptr) Variable Input
+              27:             TypeFloat 32
+              28:             TypeVector 27(float) 3
+              29:             TypeInt 32 1
+              30:             TypeVector 6(int) 2
+              31:             TypeInt 64 0
+              32:             TypeVector 27(float) 2
+              33:      6(int) Constant 2
+              34:             TypeArray 32(fvec2) 33
+              35:             TypeArray 28(fvec3) 33
+       36(block):             TypeStruct 28(fvec3) 28(fvec3) 29(int) 30(ivec2) 31(int64_t) 34 27(float) 35 27(float) 32(fvec2) 27(float)
+              37:             TypePointer ShaderRecordBufferKHR 36(block)
+              38:     37(ptr) Variable ShaderRecordBufferKHR
+              39:     29(int) Constant 3
+              40:             TypePointer ShaderRecordBufferKHR 30(ivec2)
+              43:             TypeAccelerationStructureKHR
+              49:     29(int) Constant 1
+              50:             TypePointer ShaderRecordBufferKHR 28(fvec3)
+              53:   27(float) Constant 1056964608
+              54:     29(int) Constant 0
+              57:   27(float) Constant 1061158912
+              58:             TypeVector 27(float) 4
+              59:             TypePointer RayPayloadKHR 58(fvec4)
+     60(payload):     59(ptr) Variable RayPayloadKHR
+              61:     29(int) Constant 4
+              62:             TypePointer ShaderRecordBufferKHR 31(int64_t)
+         4(main):           2 Function None 3
+               5:             Label
+           8(lx):      7(ptr) Variable Function
+          16(ly):      7(ptr) Variable Function
+          20(sx):      7(ptr) Variable Function
+          24(sy):      7(ptr) Variable Function
+              14:     13(ptr) AccessChain 11(gl_LaunchIDEXT) 12
+              15:      6(int) Load 14
+                              Store 8(lx) 15
+              18:     13(ptr) AccessChain 11(gl_LaunchIDEXT) 17
+              19:      6(int) Load 18
+                              Store 16(ly) 19
+              22:     13(ptr) AccessChain 21(gl_LaunchSizeEXT) 12
+              23:      6(int) Load 22
+                              Store 20(sx) 23
+              25:     13(ptr) AccessChain 21(gl_LaunchSizeEXT) 17
+              26:      6(int) Load 25
+                              Store 24(sy) 26
+              41:     40(ptr) AccessChain 38 39
+              42:   30(ivec2) Load 41
+              44:          43 ConvertUToAccelerationStructureKHR 42
+              45:      6(int) Load 8(lx)
+              46:      6(int) Load 16(ly)
+              47:      6(int) Load 20(sx)
+              48:      6(int) Load 24(sy)
+              51:     50(ptr) AccessChain 38 49
+              52:   28(fvec3) Load 51
+              55:     50(ptr) AccessChain 38 54
+              56:   28(fvec3) Load 55
+                              TraceRayKHR 44 45 46 47 48 12 52 53 56 57 60(payload)
+              63:     62(ptr) AccessChain 38 61
+              64: 31(int64_t) Load 63
+              65:          43 ConvertUToAccelerationStructureKHR 64
+              66:      6(int) Load 8(lx)
+              67:      6(int) Load 16(ly)
+              68:      6(int) Load 20(sx)
+              69:      6(int) Load 24(sy)
+              70:     50(ptr) AccessChain 38 49
+              71:   28(fvec3) Load 70
+              72:     50(ptr) AccessChain 38 54
+              73:   28(fvec3) Load 72
+                              TraceRayKHR 65 66 67 68 69 12 71 53 73 57 60(payload)
+                              Return
+                              FunctionEnd
diff --git a/Test/baseResults/spv.ext.RayGenShader.rgen.out b/Test/baseResults/spv.ext.RayGenShader.rgen.out
index b1904ac..da516f3 100644
--- a/Test/baseResults/spv.ext.RayGenShader.rgen.out
+++ b/Test/baseResults/spv.ext.RayGenShader.rgen.out
@@ -3,12 +3,12 @@
 // Generated by (magic number): 8000a
 // Id's are bound by 58
 
-                              Capability RayTraversalPrimitiveCullingProvisionalKHR
-                              Capability RayTracingProvisionalKHR
+                              Capability RayTraversalPrimitiveCullingKHR
+                              Capability RayTracingKHR
                               Extension  "SPV_KHR_ray_tracing"
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450
-                              EntryPoint RayGenerationKHR 4  "main" 11 21 29 40 51 54 57
+                              EntryPoint RayGenerationKHR 4  "main" 11 21 29 40 53 54 57
                               Source GLSL 460
                               SourceExtension  "GL_EXT_ray_flags_primitive_culling"
                               SourceExtension  "GL_EXT_ray_tracing"
@@ -24,9 +24,9 @@
                               MemberName 38(block) 0  "dir"
                               MemberName 38(block) 1  "origin"
                               Name 40  ""
-                              Name 51  "accEXT1"
-                              Name 54  "imageu"
-                              Name 57  "payload"
+                              Name 53  "payload"
+                              Name 54  "accEXT1"
+                              Name 57  "imageu"
                               Decorate 11(gl_LaunchIDEXT) BuiltIn LaunchIdKHR
                               Decorate 21(gl_LaunchSizeEXT) BuiltIn LaunchSizeKHR
                               Decorate 29(accEXT0) DescriptorSet 0
@@ -36,11 +36,11 @@
                               Decorate 38(block) Block
                               Decorate 40 DescriptorSet 0
                               Decorate 40 Binding 3
-                              Decorate 51(accEXT1) DescriptorSet 0
-                              Decorate 51(accEXT1) Binding 1
-                              Decorate 54(imageu) DescriptorSet 0
-                              Decorate 54(imageu) Binding 2
-                              Decorate 57(payload) Location 0
+                              Decorate 53(payload) Location 1
+                              Decorate 54(accEXT1) DescriptorSet 0
+                              Decorate 54(accEXT1) Binding 1
+                              Decorate 57(imageu) DescriptorSet 0
+                              Decorate 57(imageu) Binding 2
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeInt 32 0
@@ -67,13 +67,13 @@
               46:   36(float) Constant 1056964608
               47:     41(int) Constant 0
               50:   36(float) Constant 1061158912
-     51(accEXT1):     28(ptr) Variable UniformConstant
-              52:             TypeImage 6(int) 2D nonsampled format:R32ui
-              53:             TypePointer UniformConstant 52
-      54(imageu):     53(ptr) Variable UniformConstant
-              55:             TypeVector 36(float) 4
-              56:             TypePointer RayPayloadKHR 55(fvec4)
-     57(payload):     56(ptr) Variable RayPayloadKHR
+              51:             TypeVector 36(float) 4
+              52:             TypePointer RayPayloadKHR 51(fvec4)
+     53(payload):     52(ptr) Variable RayPayloadKHR
+     54(accEXT1):     28(ptr) Variable UniformConstant
+              55:             TypeImage 6(int) 2D nonsampled format:R32ui
+              56:             TypePointer UniformConstant 55
+      57(imageu):     56(ptr) Variable UniformConstant
          4(main):           2 Function None 3
                5:             Label
            8(lx):      7(ptr) Variable Function
@@ -101,6 +101,6 @@
               45:   37(fvec3) Load 44
               48:     43(ptr) AccessChain 40 47
               49:   37(fvec3) Load 48
-                              TraceRayKHR 30 31 32 33 34 35 45 46 49 50 42
+                              TraceRayKHR 30 31 32 33 34 35 45 46 49 50 53(payload)
                               Return
                               FunctionEnd
diff --git a/Test/baseResults/spv.ext.RayGenShader11.rgen.out b/Test/baseResults/spv.ext.RayGenShader11.rgen.out
index cfaf529..00262ac 100644
--- a/Test/baseResults/spv.ext.RayGenShader11.rgen.out
+++ b/Test/baseResults/spv.ext.RayGenShader11.rgen.out
@@ -3,7 +3,7 @@
 // Generated by (magic number): 8000a
 // Id's are bound by 53
 
-                              Capability RayTracingProvisionalKHR
+                              Capability RayTracingKHR
                               Extension  "SPV_KHR_ray_tracing"
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450
@@ -32,7 +32,7 @@
                               Decorate 37(block) Block
                               Decorate 39 DescriptorSet 0
                               Decorate 39 Binding 1
-                              Decorate 52(payload) Location 0
+                              Decorate 52(payload) Location 1
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeInt 32 0
@@ -88,6 +88,6 @@
               44:   36(fvec3) Load 43
               47:     42(ptr) AccessChain 39 46
               48:   36(fvec3) Load 47
-                              TraceRayKHR 30 31 32 33 34 12 44 45 48 49 41
+                              TraceRayKHR 30 31 32 33 34 12 44 45 48 49 52(payload)
                               Return
                               FunctionEnd
diff --git a/Test/baseResults/spv.ext.RayGenShaderArray.rgen.out b/Test/baseResults/spv.ext.RayGenShaderArray.rgen.out
index 25d46a6..473937d 100644
--- a/Test/baseResults/spv.ext.RayGenShaderArray.rgen.out
+++ b/Test/baseResults/spv.ext.RayGenShaderArray.rgen.out
@@ -1,17 +1,19 @@
 spv.ext.RayGenShaderArray.rgen
 // Module Version 10400
 // Generated by (magic number): 8000a
-// Id's are bound by 89
+// Id's are bound by 117
 
+                              Capability Int64
+                              Capability RayTracingKHR
                               Capability ShaderNonUniformEXT
                               Capability RuntimeDescriptorArrayEXT
-                              Capability RayTracingProvisionalKHR
                               Extension  "SPV_EXT_descriptor_indexing"
                               Extension  "SPV_KHR_ray_tracing"
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450
-                              EntryPoint RayGenerationKHR 4  "main" 11 21 30 36 60 88
+                              EntryPoint RayGenerationKHR 4  "main" 11 21 30 38 61 65
                               Source GLSL 460
+                              SourceExtension  "GL_ARB_gpu_shader_int64"
                               SourceExtension  "GL_EXT_nonuniform_qualifier"
                               SourceExtension  "GL_EXT_ray_tracing"
                               Name 4  "main"
@@ -22,29 +24,33 @@
                               Name 21  "gl_LaunchSizeEXT"
                               Name 24  "sy"
                               Name 30  "accEXT0"
-                              Name 34  "block"
-                              MemberName 34(block) 0  "dir"
-                              MemberName 34(block) 1  "origin"
-                              MemberName 34(block) 2  "i"
-                              Name 36  ""
-                              Name 60  "accEXT1"
-                              Name 88  "payload"
+                              Name 36  "block"
+                              MemberName 36(block) 0  "dir"
+                              MemberName 36(block) 1  "origin"
+                              MemberName 36(block) 2  "i"
+                              MemberName 36(block) 3  "aHandle32"
+                              MemberName 36(block) 4  "aHandle64"
+                              Name 38  ""
+                              Name 61  "payload"
+                              Name 65  "accEXT1"
                               Decorate 11(gl_LaunchIDEXT) BuiltIn LaunchIdKHR
                               Decorate 21(gl_LaunchSizeEXT) BuiltIn LaunchSizeKHR
                               Decorate 30(accEXT0) DescriptorSet 0
                               Decorate 30(accEXT0) Binding 0
-                              MemberDecorate 34(block) 0 Offset 0
-                              MemberDecorate 34(block) 1 Offset 16
-                              MemberDecorate 34(block) 2 Offset 28
-                              Decorate 34(block) Block
-                              Decorate 36 DescriptorSet 0
-                              Decorate 36 Binding 2
-                              Decorate 60(accEXT1) DescriptorSet 0
-                              Decorate 60(accEXT1) Binding 1
-                              Decorate 75 DecorationNonUniformEXT
-                              Decorate 76 DecorationNonUniformEXT
-                              Decorate 77 DecorationNonUniformEXT
-                              Decorate 88(payload) Location 0
+                              MemberDecorate 36(block) 0 Offset 0
+                              MemberDecorate 36(block) 1 Offset 16
+                              MemberDecorate 36(block) 2 Offset 28
+                              MemberDecorate 36(block) 3 Offset 32
+                              MemberDecorate 36(block) 4 Offset 40
+                              Decorate 36(block) Block
+                              Decorate 38 DescriptorSet 0
+                              Decorate 38 Binding 2
+                              Decorate 61(payload) Location 1
+                              Decorate 65(accEXT1) DescriptorSet 0
+                              Decorate 65(accEXT1) Binding 1
+                              Decorate 80 DecorationNonUniformEXT
+                              Decorate 81 DecorationNonUniformEXT
+                              Decorate 82 DecorationNonUniformEXT
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeInt 32 0
@@ -63,24 +69,30 @@
               31:             TypeFloat 32
               32:             TypeVector 31(float) 3
               33:             TypeInt 32 1
-       34(block):             TypeStruct 32(fvec3) 32(fvec3) 33(int)
-              35:             TypePointer ShaderRecordBufferKHR 34(block)
-              36:     35(ptr) Variable ShaderRecordBufferKHR
-              37:     33(int) Constant 2
-              38:             TypePointer ShaderRecordBufferKHR 33(int)
-              41:             TypePointer UniformConstant 27
-              48:     33(int) Constant 1
-              49:             TypePointer ShaderRecordBufferKHR 32(fvec3)
-              52:   31(float) Constant 1056964608
-              53:     33(int) Constant 0
-              56:   31(float) Constant 1061158912
-              57:      6(int) Constant 2
-              58:             TypeArray 27 57
-              59:             TypePointer UniformConstant 58
-     60(accEXT1):     59(ptr) Variable UniformConstant
-              86:             TypeVector 31(float) 4
-              87:             TypePointer RayPayloadKHR 86(fvec4)
-     88(payload):     87(ptr) Variable RayPayloadKHR
+              34:             TypeVector 6(int) 2
+              35:             TypeInt 64 0
+       36(block):             TypeStruct 32(fvec3) 32(fvec3) 33(int) 34(ivec2) 35(int64_t)
+              37:             TypePointer ShaderRecordBufferKHR 36(block)
+              38:     37(ptr) Variable ShaderRecordBufferKHR
+              39:     33(int) Constant 2
+              40:             TypePointer ShaderRecordBufferKHR 33(int)
+              43:             TypePointer UniformConstant 27
+              50:     33(int) Constant 1
+              51:             TypePointer ShaderRecordBufferKHR 32(fvec3)
+              54:   31(float) Constant 1056964608
+              55:     33(int) Constant 0
+              58:   31(float) Constant 1061158912
+              59:             TypeVector 31(float) 4
+              60:             TypePointer RayPayloadKHR 59(fvec4)
+     61(payload):     60(ptr) Variable RayPayloadKHR
+              62:      6(int) Constant 2
+              63:             TypeArray 27 62
+              64:             TypePointer UniformConstant 63
+     65(accEXT1):     64(ptr) Variable UniformConstant
+              91:     33(int) Constant 3
+              92:             TypePointer ShaderRecordBufferKHR 34(ivec2)
+             104:     33(int) Constant 4
+             105:             TypePointer ShaderRecordBufferKHR 35(int64_t)
          4(main):           2 Function None 3
                5:             Label
            8(lx):      7(ptr) Variable Function
@@ -99,45 +111,69 @@
               25:     13(ptr) AccessChain 21(gl_LaunchSizeEXT) 17
               26:      6(int) Load 25
                               Store 24(sy) 26
-              39:     38(ptr) AccessChain 36 37
-              40:     33(int) Load 39
-              42:     41(ptr) AccessChain 30(accEXT0) 40
-              43:          27 Load 42
-              44:      6(int) Load 8(lx)
-              45:      6(int) Load 16(ly)
-              46:      6(int) Load 20(sx)
-              47:      6(int) Load 24(sy)
-              50:     49(ptr) AccessChain 36 48
-              51:   32(fvec3) Load 50
-              54:     49(ptr) AccessChain 36 53
-              55:   32(fvec3) Load 54
-                              TraceRayKHR 43 44 45 46 47 12 51 52 55 56 48
-              61:     38(ptr) AccessChain 36 37
-              62:     33(int) Load 61
-              63:     41(ptr) AccessChain 60(accEXT1) 62
-              64:          27 Load 63
-              65:      6(int) Load 8(lx)
-              66:      6(int) Load 16(ly)
-              67:      6(int) Load 20(sx)
-              68:      6(int) Load 24(sy)
-              69:     49(ptr) AccessChain 36 48
-              70:   32(fvec3) Load 69
-              71:     49(ptr) AccessChain 36 53
-              72:   32(fvec3) Load 71
-                              TraceRayKHR 64 65 66 67 68 12 70 52 72 56 48
-              73:     38(ptr) AccessChain 36 37
-              74:     33(int) Load 73
-              75:     33(int) CopyObject 74
-              76:     41(ptr) AccessChain 30(accEXT0) 75
-              77:          27 Load 76
-              78:      6(int) Load 8(lx)
-              79:      6(int) Load 16(ly)
-              80:      6(int) Load 20(sx)
-              81:      6(int) Load 24(sy)
-              82:     49(ptr) AccessChain 36 48
-              83:   32(fvec3) Load 82
-              84:     49(ptr) AccessChain 36 53
-              85:   32(fvec3) Load 84
-                              TraceRayKHR 77 78 79 80 81 12 83 52 85 56 48
+              41:     40(ptr) AccessChain 38 39
+              42:     33(int) Load 41
+              44:     43(ptr) AccessChain 30(accEXT0) 42
+              45:          27 Load 44
+              46:      6(int) Load 8(lx)
+              47:      6(int) Load 16(ly)
+              48:      6(int) Load 20(sx)
+              49:      6(int) Load 24(sy)
+              52:     51(ptr) AccessChain 38 50
+              53:   32(fvec3) Load 52
+              56:     51(ptr) AccessChain 38 55
+              57:   32(fvec3) Load 56
+                              TraceRayKHR 45 46 47 48 49 12 53 54 57 58 61(payload)
+              66:     40(ptr) AccessChain 38 39
+              67:     33(int) Load 66
+              68:     43(ptr) AccessChain 65(accEXT1) 67
+              69:          27 Load 68
+              70:      6(int) Load 8(lx)
+              71:      6(int) Load 16(ly)
+              72:      6(int) Load 20(sx)
+              73:      6(int) Load 24(sy)
+              74:     51(ptr) AccessChain 38 50
+              75:   32(fvec3) Load 74
+              76:     51(ptr) AccessChain 38 55
+              77:   32(fvec3) Load 76
+                              TraceRayKHR 69 70 71 72 73 12 75 54 77 58 61(payload)
+              78:     40(ptr) AccessChain 38 39
+              79:     33(int) Load 78
+              80:     33(int) CopyObject 79
+              81:     43(ptr) AccessChain 30(accEXT0) 80
+              82:          27 Load 81
+              83:      6(int) Load 8(lx)
+              84:      6(int) Load 16(ly)
+              85:      6(int) Load 20(sx)
+              86:      6(int) Load 24(sy)
+              87:     51(ptr) AccessChain 38 50
+              88:   32(fvec3) Load 87
+              89:     51(ptr) AccessChain 38 55
+              90:   32(fvec3) Load 89
+                              TraceRayKHR 82 83 84 85 86 12 88 54 90 58 61(payload)
+              93:     92(ptr) AccessChain 38 91
+              94:   34(ivec2) Load 93
+              95:          27 ConvertUToAccelerationStructureKHR 94
+              96:      6(int) Load 8(lx)
+              97:      6(int) Load 16(ly)
+              98:      6(int) Load 20(sx)
+              99:      6(int) Load 24(sy)
+             100:     51(ptr) AccessChain 38 50
+             101:   32(fvec3) Load 100
+             102:     51(ptr) AccessChain 38 55
+             103:   32(fvec3) Load 102
+                              TraceRayKHR 95 96 97 98 99 12 101 54 103 58 61(payload)
+             106:    105(ptr) AccessChain 38 104
+             107: 35(int64_t) Load 106
+             108:          27 ConvertUToAccelerationStructureKHR 107
+             109:      6(int) Load 8(lx)
+             110:      6(int) Load 16(ly)
+             111:      6(int) Load 20(sx)
+             112:      6(int) Load 24(sy)
+             113:     51(ptr) AccessChain 38 50
+             114:   32(fvec3) Load 113
+             115:     51(ptr) AccessChain 38 55
+             116:   32(fvec3) Load 115
+                              TraceRayKHR 108 109 110 111 112 12 114 54 116 58 61(payload)
                               Return
                               FunctionEnd
diff --git a/Test/baseResults/spv.ext.RayGenShader_Errors.rgen.out b/Test/baseResults/spv.ext.RayGenShader_Errors.rgen.out
index 6dc7480..3f336bb 100644
--- a/Test/baseResults/spv.ext.RayGenShader_Errors.rgen.out
+++ b/Test/baseResults/spv.ext.RayGenShader_Errors.rgen.out
@@ -4,8 +4,9 @@
 ERROR: 0:5: 'shaderRecordNV' : can only be used with a buffer 
 ERROR: 0:9: 'binding' : cannot be used with shaderRecordNV 
 ERROR: 0:12: 'set' : cannot be used with shaderRecordNV 
+ERROR: 0:23: ' temp accelerationStructureNV' : cannot construct with these arguments 
 ERROR: 0:23: 'accelerationStructureNV' : accelerationStructureNV can only be used in uniform variables or function parameters: a
-ERROR: 0:23: '=' :  cannot convert from ' const int' to ' temp accelerationStructureNV'
+ERROR: 0:23: '=' :  cannot convert from ' const float' to ' temp accelerationStructureNV'
 ERROR: 0:24: 'gl_PrimitiveID' : undeclared identifier 
 ERROR: 0:24: '=' :  cannot convert from ' temp float' to ' temp highp int'
 ERROR: 0:25: 'gl_InstanceID' : undeclared identifier (Did you mean gl_InstanceIndex?)
@@ -28,11 +29,13 @@
 ERROR: 0:34: '=' :  cannot convert from ' temp float' to ' temp highp 4X3 matrix of float'
 ERROR: 0:35: 'gl_HitTEXT' : undeclared identifier 
 ERROR: 0:36: 'gl_HitKindEXT' : undeclared identifier 
-ERROR: 0:37: 'reportIntersectionEXT' : no matching overloaded function found 
-ERROR: 0:38: 'ignoreIntersectionEXT' : no matching overloaded function found 
-ERROR: 0:39: 'terminateRayEXT' : no matching overloaded function found 
-ERROR: 0:40: 'assign' :  l-value required "anon@3" (can't modify a shaderrecordnv qualified buffer)
-ERROR: 33 compilation errors.  No code generated.
+ERROR: 0:37: 'gl_RayFlagsSkipAABBEXT' : required extension not requested: GL_EXT_ray_flags_primitive_culling
+ERROR: 0:37: '=' :  cannot convert from ' const uint' to ' temp highp int'
+ERROR: 0:38: 'reportIntersectionEXT' : no matching overloaded function found 
+ERROR: 0:39: 'ignoreIntersectionEXT' : not supported in this stage: ray-generation
+ERROR: 0:40: 'terminateRayEXT' : not supported in this stage: ray-generation
+ERROR: 0:41: 'assign' :  l-value required "anon@3" (can't modify a shaderrecordnv qualified buffer)
+ERROR: 36 compilation errors.  No code generated.
 
 
 ERROR: Linking ray-generation stage: Only one shaderRecordNV buffer block is allowed per stage
diff --git a/Test/baseResults/spv.ext.World3x4.rahit.out b/Test/baseResults/spv.ext.World3x4.rahit.out
index ad877bd..40d73d1 100644
--- a/Test/baseResults/spv.ext.World3x4.rahit.out
+++ b/Test/baseResults/spv.ext.World3x4.rahit.out
@@ -3,7 +3,7 @@
 // Generated by (magic number): 8000a
 // Id's are bound by 90
 
-                              Capability RayTracingProvisionalKHR
+                              Capability RayTracingKHR
                               Extension  "SPV_KHR_ray_tracing"
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450
diff --git a/Test/baseResults/spv.meshShaderPerViewBuiltins.mesh.out b/Test/baseResults/spv.meshShaderPerViewBuiltins.mesh.out
index 38a426c..86a4fd2 100644
--- a/Test/baseResults/spv.meshShaderPerViewBuiltins.mesh.out
+++ b/Test/baseResults/spv.meshShaderPerViewBuiltins.mesh.out
@@ -1,5 +1,4 @@
 spv.meshShaderPerViewBuiltins.mesh
-Validation failed
 // Module Version 10000
 // Generated by (magic number): 8000a
 // Id's are bound by 126
diff --git a/Test/rayQuery-global.rgen b/Test/rayQuery-global.rgen
new file mode 100644
index 0000000..3a57e74
--- /dev/null
+++ b/Test/rayQuery-global.rgen
@@ -0,0 +1,31 @@
+#version 460
+#extension GL_EXT_ray_query : enable
+#extension GL_EXT_ray_flags_primitive_culling : enable
+
+layout(binding = 1, set = 0) uniform accelerationStructureEXT rtas;
+
+rayQueryEXT rqGlobal;
+
+void otherWrapper(rayQueryEXT rq) {
+    rayQueryProceedEXT(rq);
+    rayQueryProceedEXT(rqGlobal);
+}
+
+void wrapper(rayQueryEXT rq) {
+    rayQueryEXT rq2;
+    rayQueryProceedEXT(rq);
+    rayQueryProceedEXT(rqGlobal);
+    otherWrapper(rq);
+    otherWrapper(rq2);
+    otherWrapper(rqGlobal);
+}
+
+void main() {
+    rayQueryInitializeEXT(rqGlobal, rtas, gl_RayFlagsNoneEXT, 0xFF, vec3(0,0,0), 0.0, vec3(1,0,0), 1.0);
+    wrapper(rqGlobal);
+    otherWrapper(rqGlobal);
+    rayQueryEXT rq2;
+    rayQueryInitializeEXT(rq2, rtas, gl_RayFlagsNoneEXT, 0xFF, vec3(0,0,0), 0.0, vec3(1,0,0), 1.0);
+    wrapper(rq2);
+    otherWrapper(rq2);
+}
diff --git a/Test/spv.ext.AnyHitShader.rahit b/Test/spv.ext.AnyHitShader.rahit
index ee7d9c7..871f8fe 100644
--- a/Test/spv.ext.AnyHitShader.rahit
+++ b/Test/spv.ext.AnyHitShader.rahit
@@ -1,5 +1,6 @@
 #version 460
 #extension GL_EXT_ray_tracing : enable
+#extension GL_KHR_shader_subgroup_basic : enable
 layout(location = 1) rayPayloadInEXT vec4 incomingPayload;
 void main()
 {
@@ -22,8 +23,10 @@
     mat3x4 v16 = gl_ObjectToWorld3x4EXT;
     mat3x4 v17 = gl_WorldToObject3x4EXT;
 	incomingPayload = vec4(0.5f);
-	if (v2 == 1)
-	    ignoreIntersectionEXT();
-	else
-	    terminateRayEXT();
+	if (v2 == 1) {
+	    ignoreIntersectionEXT;
+	    v0.x++;
+	}
+	incomingPayload.x += float(gl_SubgroupSize);
+	terminateRayEXT;
 }
diff --git a/Test/spv.ext.ClosestHitShader_Errors.rchit b/Test/spv.ext.ClosestHitShader_Errors.rchit
index 05e05fe..6416f1f 100644
--- a/Test/spv.ext.ClosestHitShader_Errors.rchit
+++ b/Test/spv.ext.ClosestHitShader_Errors.rchit
@@ -2,12 +2,14 @@
 #extension GL_EXT_ray_tracing : enable
 hitAttributeEXT vec4 payload;
 layout(binding = 0, set = 0) uniform accelerationStructureEXT accEXT;
-
+layout(location = 2) rayPayloadEXT vec4 payload0;
+layout(location = 2) rayPayloadInEXT block { vec4 data; }; // ERROR : location already used
 void main()
 {
     payload.x = 1.0f;                                       // ERROR, cannot write to hitattributeEXT in stage
     reportIntersectionEXT(1.0, 1U);                          // ERROR, unsupported builtin in stage 
-    terminateRayEXT();
-    ignoreIntersectionEXT();
+    terminateRayEXT;
+    ignoreIntersectionEXT;
     bool e1 = gl_IncomingRayFlagsEXT == gl_RayFlagsSkipAABBEXT;
+    traceRayEXT(accEXT, 0, 0, 0, 0, 0, vec3(0.0), 0.0, vec3(1.0), 1.0, 0); //ERROR no payload variable with location = 0
 }
diff --git a/Test/spv.ext.ClosestHitShader_Subgroup.rchit b/Test/spv.ext.ClosestHitShader_Subgroup.rchit
new file mode 100644
index 0000000..ce2091a
--- /dev/null
+++ b/Test/spv.ext.ClosestHitShader_Subgroup.rchit
@@ -0,0 +1,16 @@
+#version 460
+#pragma use_vulkan_memory_model
+#extension GL_EXT_ray_tracing : enable
+#extension GL_NV_shader_sm_builtins : enable
+#extension GL_KHR_shader_subgroup_ballot : enable
+#extension GL_ARB_shader_ballot : enable
+#extension GL_NV_shader_sm_builtins : enable
+layout(binding = 0, set = 0) uniform accelerationStructureEXT accEXT;
+layout(location = 1) rayPayloadInEXT vec4 incomingPayload;
+void main()
+{
+	traceRayEXT(accEXT, 0u, 1u, 2u, 3u, 0u, vec3(0.5f), 0.5f, vec3(1.0f), 0.75f, 1);
+        incomingPayload.x = float(gl_SubgroupInvocationID) + float(gl_SubGroupGeMaskARB) +
+			    float(gl_SubgroupGtMask) + float(gl_SubgroupLeMask) + 
+                            float(gl_SubGroupLtMaskARB) + float(gl_SMIDNV);
+}
diff --git a/Test/spv.ext.MissShader.rmiss b/Test/spv.ext.MissShader.rmiss
index e774334..982bd84 100644
--- a/Test/spv.ext.MissShader.rmiss
+++ b/Test/spv.ext.MissShader.rmiss
@@ -1,5 +1,9 @@
 #version 460
 #extension GL_EXT_ray_tracing : enable
+#extension GL_NV_shader_sm_builtins : enable
+#extension GL_KHR_shader_subgroup_ballot : enable
+#extension GL_ARB_shader_ballot : enable
+#extension GL_NV_shader_sm_builtins : enable
 layout(binding = 0, set = 0) uniform accelerationStructureEXT accEXT;
 layout(location = 0) rayPayloadEXT vec4 localPayload;
 layout(location = 1) rayPayloadInEXT vec4 incomingPayload;
@@ -12,4 +16,5 @@
 	float v4 = gl_RayTminEXT;
 	float v5 = gl_RayTmaxEXT;
 	traceRayEXT(accEXT, 0u, 1u, 2u, 3u, 0u, vec3(0.5f), 0.5f, vec3(1.0f), 0.75f, 1);
+    incomingPayload.x = float(gl_SubGroupSizeARB) + float(gl_SubgroupEqMask) + float(gl_WarpIDNV);
 }
diff --git a/Test/spv.ext.MissShader_Errors.rmiss b/Test/spv.ext.MissShader_Errors.rmiss
index 2391211..c921f23 100644
--- a/Test/spv.ext.MissShader_Errors.rmiss
+++ b/Test/spv.ext.MissShader_Errors.rmiss
@@ -11,6 +11,6 @@
     float e12 = gl_HitTEXT;                                 // ERROR, unsupported builtin in stage
     float e13 = gl_HitKindEXT;                              // ERROR, unsupported builtin in stage
     reportIntersectionEXT(1.0, 1U);                         // ERROR, unsupported builtin in stage
-    ignoreIntersectionEXT();                                // ERROR, unsupported builtin in stage
-    terminateRayEXT();                                      // ERROR, unsupported builtin in stage
+    ignoreIntersectionEXT;                                  // ERROR, unsupported in stage
+    terminateRayEXT;                                        // ERROR, unsupported in stage
 }
diff --git a/Test/spv.ext.RayCallable_Errors.rcall b/Test/spv.ext.RayCallable_Errors.rcall
index d35672e..660ea75 100644
--- a/Test/spv.ext.RayCallable_Errors.rcall
+++ b/Test/spv.ext.RayCallable_Errors.rcall
@@ -3,7 +3,8 @@
 hitAttributeEXT vec4 hitattr;                                // ERROR, hitattributeEXT unsupported in this stage 
 rayPayloadEXT vec4 payload;                                  // ERROR, rayPayloadEXT unsupported in this stage
 rayPayloadInEXT vec4 payloadIn;                              // ERROR, rayPayloadInEXT unsupported in this stage
-
+layout(location = 0) callableDataEXT vec4 cd0;
+layout(location = 0) callableDataEXT float cd1;              // ERROR, location already used
 void main()
 {
     int e0 = gl_PrimitiveID;                                // ERROR, unsupported builtin in stage
@@ -21,6 +22,7 @@
     float e13 = gl_HitKindEXT;                               // ERROR, unsupported builtin in stage
     uint curFlags = gl_IncomingRayFlagsEXT;                  // ERROR, unsupported builtin in stage
     reportIntersectionEXT(1.0, 1U);                          // ERROR, unsupported builtin in stage
-    ignoreIntersectionEXT();                                 // ERROR, unsupported builtin in stage
-    terminateRayEXT();                                       // ERROR, unsupported builtin in stage
+    ignoreIntersectionEXT;                                   // ERROR, unsupported in stage
+    terminateRayEXT;                                         // ERROR, unsupported in stage
+    executeCallableEXT(1,1);                                 // ERROR, no callable data with location 1
 }
diff --git a/Test/spv.ext.RayConstants.rgen b/Test/spv.ext.RayConstants.rgen
index 73cb0c1..8e681ba 100644
--- a/Test/spv.ext.RayConstants.rgen
+++ b/Test/spv.ext.RayConstants.rgen
@@ -1,7 +1,7 @@
 #version 460
 #extension GL_EXT_ray_tracing : enable
 layout(binding = 0, set = 0) uniform accelerationStructureEXT accEXT;
-layout(location = 0) rayPayloadEXT vec4 payload;
+layout(location = 1) rayPayloadEXT vec4 payload;
 void main()
 {
     const uint rayFlags = gl_RayFlagsNoneEXT | gl_RayFlagsOpaqueEXT |
diff --git a/Test/spv.ext.RayGenSBTlayout.rgen b/Test/spv.ext.RayGenSBTlayout.rgen
new file mode 100644
index 0000000..a5fa2b6
--- /dev/null
+++ b/Test/spv.ext.RayGenSBTlayout.rgen
@@ -0,0 +1,28 @@
+#version 460
+#extension GL_EXT_ray_tracing : enable
+#extension GL_ARB_gpu_shader_int64 : enable
+layout(location = 1) rayPayloadEXT vec4 payload;
+// should get std430 layout
+layout(shaderRecordEXT) buffer block
+{
+    vec3 dir;
+    vec3 origin;
+    int i;
+    uvec2 aHandle32;
+    uint64_t aHandle64;
+    vec2 arr2[2];
+    float a;
+    vec3 arr3[2];
+    float packme;
+    vec2 b;
+    float c;
+};
+void main()
+{
+    uint lx = gl_LaunchIDEXT.x;
+    uint ly = gl_LaunchIDEXT.y;
+    uint sx = gl_LaunchSizeEXT.x;
+    uint sy = gl_LaunchSizeEXT.y;
+    traceRayEXT(accelerationStructureEXT(aHandle32), lx, ly, sx, sy, 0u, origin, 0.5f, dir, 0.75f, 1);
+    traceRayEXT(accelerationStructureEXT(aHandle64), lx, ly, sx, sy, 0u, origin, 0.5f, dir, 0.75f, 1);
+}
diff --git a/Test/spv.ext.RayGenSBTlayout140.rgen b/Test/spv.ext.RayGenSBTlayout140.rgen
new file mode 100644
index 0000000..7d673a8
--- /dev/null
+++ b/Test/spv.ext.RayGenSBTlayout140.rgen
@@ -0,0 +1,27 @@
+#version 460
+#extension GL_EXT_ray_tracing : enable
+#extension GL_ARB_gpu_shader_int64 : enable
+layout(location = 1) rayPayloadEXT vec4 payload;
+layout(shaderRecordEXT, std140) buffer block
+{
+    vec3 dir;
+    vec3 origin;
+    int i;
+    uvec2 aHandle32;
+    uint64_t aHandle64;
+    vec2 arr[2];
+    float a;
+    vec3 arr3[2];
+    float packme;
+    vec2 b;
+    float c;
+};
+void main()
+{
+    uint lx = gl_LaunchIDEXT.x;
+    uint ly = gl_LaunchIDEXT.y;
+    uint sx = gl_LaunchSizeEXT.x;
+    uint sy = gl_LaunchSizeEXT.y;
+    traceRayEXT(accelerationStructureEXT(aHandle32), lx, ly, sx, sy, 0u, origin, 0.5f, dir, 0.75f, 1);
+    traceRayEXT(accelerationStructureEXT(aHandle64), lx, ly, sx, sy, 0u, origin, 0.5f, dir, 0.75f, 1);
+}
diff --git a/Test/spv.ext.RayGenSBTlayout430.rgen b/Test/spv.ext.RayGenSBTlayout430.rgen
new file mode 100644
index 0000000..bd308b4
--- /dev/null
+++ b/Test/spv.ext.RayGenSBTlayout430.rgen
@@ -0,0 +1,27 @@
+#version 460
+#extension GL_EXT_ray_tracing : enable
+#extension GL_ARB_gpu_shader_int64 : enable
+layout(location = 1) rayPayloadEXT vec4 payload;
+layout(shaderRecordEXT, std430) buffer block
+{
+    vec3 dir;
+    vec3 origin;
+    int i;
+    uvec2 aHandle32;
+    uint64_t aHandle64;
+    vec2 arr[2];
+    float a;
+    vec3 arr3[2];
+    float packme;
+    vec2 b;
+    float c;
+};
+void main()
+{
+    uint lx = gl_LaunchIDEXT.x;
+    uint ly = gl_LaunchIDEXT.y;
+    uint sx = gl_LaunchSizeEXT.x;
+    uint sy = gl_LaunchSizeEXT.y;
+    traceRayEXT(accelerationStructureEXT(aHandle32), lx, ly, sx, sy, 0u, origin, 0.5f, dir, 0.75f, 1);
+    traceRayEXT(accelerationStructureEXT(aHandle64), lx, ly, sx, sy, 0u, origin, 0.5f, dir, 0.75f, 1);
+}
diff --git a/Test/spv.ext.RayGenSBTlayoutscalar.rgen b/Test/spv.ext.RayGenSBTlayoutscalar.rgen
new file mode 100644
index 0000000..16bcb13
--- /dev/null
+++ b/Test/spv.ext.RayGenSBTlayoutscalar.rgen
@@ -0,0 +1,28 @@
+#version 460
+#extension GL_EXT_ray_tracing : enable
+#extension GL_ARB_gpu_shader_int64 : enable
+#extension GL_EXT_scalar_block_layout : enable
+layout(location = 1) rayPayloadEXT vec4 payload;
+layout(shaderRecordEXT, scalar) buffer block
+{
+    vec3 dir;
+    vec3 origin;
+    int i;
+    uvec2 aHandle32;
+    uint64_t aHandle64;
+    vec2 arr[2];
+    float a;
+    vec3 arr3[2];
+    float packme;
+    vec2 b;
+    float c;
+};
+void main()
+{
+    uint lx = gl_LaunchIDEXT.x;
+    uint ly = gl_LaunchIDEXT.y;
+    uint sx = gl_LaunchSizeEXT.x;
+    uint sy = gl_LaunchSizeEXT.y;
+    traceRayEXT(accelerationStructureEXT(aHandle32), lx, ly, sx, sy, 0u, origin, 0.5f, dir, 0.75f, 1);
+    traceRayEXT(accelerationStructureEXT(aHandle64), lx, ly, sx, sy, 0u, origin, 0.5f, dir, 0.75f, 1);
+}
diff --git a/Test/spv.ext.RayGenShader.rgen b/Test/spv.ext.RayGenShader.rgen
index 9fedf3a..e9eb2cb 100644
--- a/Test/spv.ext.RayGenShader.rgen
+++ b/Test/spv.ext.RayGenShader.rgen
@@ -4,7 +4,7 @@
 layout(binding = 0) uniform accelerationStructureEXT accEXT0;
 layout(binding = 1, set = 0) uniform accelerationStructureEXT accEXT1; // Unused
 layout(binding = 2, r32ui) shadercallcoherent uniform uimage2D imageu;
-layout(location = 0) rayPayloadEXT vec4 payload;
+layout(location = 1) rayPayloadEXT vec4 payload;
 layout(shaderRecordEXT) buffer block
 {
 	vec3 dir;
diff --git a/Test/spv.ext.RayGenShader11.rgen b/Test/spv.ext.RayGenShader11.rgen
index 4817026..50853d4 100644
--- a/Test/spv.ext.RayGenShader11.rgen
+++ b/Test/spv.ext.RayGenShader11.rgen
@@ -1,7 +1,7 @@
 #version 460
 #extension GL_EXT_ray_tracing : enable
 layout(binding = 0, set = 0) uniform accelerationStructureEXT accEXT;
-layout(location = 0) rayPayloadEXT vec4 payload;
+layout(location = 1) rayPayloadEXT vec4 payload;
 layout(shaderRecordEXT) buffer block
 {
 	vec3 dir;
diff --git a/Test/spv.ext.RayGenShaderArray.rgen b/Test/spv.ext.RayGenShaderArray.rgen
index d3f99de..66286d9 100644
--- a/Test/spv.ext.RayGenShaderArray.rgen
+++ b/Test/spv.ext.RayGenShaderArray.rgen
@@ -1,14 +1,17 @@
 #version 460
 #extension GL_EXT_ray_tracing : enable
 #extension GL_EXT_nonuniform_qualifier : enable
+#extension GL_ARB_gpu_shader_int64 : enable
 layout(binding = 0, set = 0) uniform accelerationStructureEXT accEXT0[];
 layout(binding = 1, set = 0) uniform accelerationStructureEXT accEXT1[2];
-layout(location = 0) rayPayloadEXT vec4 payload;
+layout(location = 1) rayPayloadEXT vec4 payload;
 layout(shaderRecordEXT) buffer block
 {
 	vec3 dir;
 	vec3 origin;
     int i;
+    uvec2 aHandle32;
+    uint64_t aHandle64;
 };
 void main()
 {
@@ -19,4 +22,6 @@
     traceRayEXT(accEXT0[i], lx, ly, sx, sy, 0u, origin, 0.5f, dir, 0.75f, 1);
     traceRayEXT(accEXT1[i], lx, ly, sx, sy, 0u, origin, 0.5f, dir, 0.75f, 1);
     traceRayEXT(accEXT0[nonuniformEXT(i)], lx, ly, sx, sy, 0u, origin, 0.5f, dir, 0.75f, 1);
+    traceRayEXT(accelerationStructureEXT(aHandle32), lx, ly, sx, sy, 0u, origin, 0.5f, dir, 0.75f, 1);
+    traceRayEXT(accelerationStructureEXT(aHandle64), lx, ly, sx, sy, 0u, origin, 0.5f, dir, 0.75f, 1);
 }
diff --git a/Test/spv.ext.RayGenShader_Errors.rgen b/Test/spv.ext.RayGenShader_Errors.rgen
index 3498342..107df0f 100644
--- a/Test/spv.ext.RayGenShader_Errors.rgen
+++ b/Test/spv.ext.RayGenShader_Errors.rgen
@@ -20,7 +20,7 @@
 };
 void main()
 {
-    accelerationStructureEXT a = 0;
+    accelerationStructureEXT a = accelerationStructureEXT(c);
     int e0 = gl_PrimitiveID;                                // ERROR, unsupported builtin in stage
     int e1 = gl_InstanceID;                                 // ERROR, unsupported builtin in stage
     int e3 = gl_InstanceCustomIndexEXT;                      // ERROR, unsupported builtin in stage
@@ -36,7 +36,7 @@
     float e13 = gl_HitKindEXT;                               // ERROR, unsupported builtin in stage
     int e14 = gl_RayFlagsSkipAABBEXT;                        // ERROR, unsupported builtin in stage
     reportIntersectionEXT(1.0, 1U);                          // ERROR, unsupported builtin in stage
-    ignoreIntersectionEXT();                                 // ERROR, unsupported builtin in stage
-    terminateRayEXT();                                       // ERROR, unsupported builtin in stage
-    d = 1.0f;                                               // ERROR, can't modify shaderRecordEXT block
+    ignoreIntersectionEXT;                                   // ERROR, unsupported builtin in stage
+    terminateRayEXT;                                         // ERROR, unsupported builtin in stage
+    d = 1.0f;                                                // ERROR, can't modify shaderRecordEXT block
 }