diff --git a/.appveyor.yml b/.appveyor.yml
index 4c5b0da..500d4bd 100644
--- a/.appveyor.yml
+++ b/.appveyor.yml
@@ -48,9 +48,6 @@
   - C:/Python27/python.exe update_glslang_sources.py
   - set PATH=C:\ninja;C:\Python36;%PATH%
   - git clone https://github.com/google/googletest.git External/googletest
-  - cd External/googletest
-  - git checkout 440527a61e1c91188195f7de212c63c77e8f0a45
-  - cd ../..
 
 build:
   parallel: true  # enable MSBuild parallel builds
diff --git a/.gitattributes b/.gitattributes
old mode 100755
new mode 100644
diff --git a/.gitignore b/.gitignore
index 790b880..ab25cec 100644
--- a/.gitignore
+++ b/.gitignore
@@ -11,3 +11,10 @@
 External/googletest
 External/spirv-tools
 out/
+
+# GN generated files
+.cipd/
+*.gclient_entries
+third_party/
+buildtools/
+tools/
diff --git a/.gn b/.gn
new file mode 100644
index 0000000..5befb80
--- /dev/null
+++ b/.gn
@@ -0,0 +1,39 @@
+# Copyright (C) 2020 The Khronos Group Inc.
+#
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+#    Redistributions of source code must retain the above copyright
+#    notice, this list of conditions and the following disclaimer.
+#
+#    Redistributions in binary form must reproduce the above
+#    copyright notice, this list of conditions and the following
+#    disclaimer in the documentation and/or other materials provided
+#    with the distribution.
+#
+#    Neither the name of The Khronos Group Inc. nor the names of its
+#    contributors may be used to endorse or promote products derived
+#    from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+# COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+# POSSIBILITY OF SUCH DAMAGE.
+
+buildconfig = "//build/config/BUILDCONFIG.gn"
+
+default_args = {
+    clang_use_chrome_plugins = false
+    use_custom_libcxx = false
+}
diff --git a/.travis.yml b/.travis.yml
index 1fa3fc0..87838b8 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -61,7 +61,17 @@
     fi
 
 before_script:
-  - git clone --depth=1 https://github.com/google/googletest.git External/googletest
+  # check out pre-breakage version of googletest; can be deleted when
+  # issue 3128 is fixed
+  # git clone --depth=1 https://github.com/google/googletest.git External/googletest
+  - mkdir -p External/googletest
+  - cd External/googletest
+  - git init
+  - git remote add origin https://github.com/google/googletest.git
+  - git fetch --depth 1 origin 0c400f67fcf305869c5fb113dd296eca266c9725
+  - git reset --hard FETCH_HEAD
+  - cd ../..
+  # get spirv-tools and spirv-headers
   - ./update_glslang_sources.py
 
 script:
diff --git a/BUILD.bazel b/BUILD.bazel
index bfb7797..e8cf6a8 100644
--- a/BUILD.bazel
+++ b/BUILD.bazel
@@ -53,7 +53,8 @@
     name = "gen_build_info_h",
     srcs = ["CHANGES.md", "build_info.h.tmpl"],
     outs = ["glslang/build_info.h"],
-    cmd = "$(location build_info) $$(dirname $(location CHANGES.md)) -i $(location build_info.h.tmpl) -o $(location glslang/build_info.h)",
+    cmd_bash = "$(location build_info) $$(dirname $(location CHANGES.md)) -i $(location build_info.h.tmpl) -o $(location glslang/build_info.h)",
+    cmd_bat = "for %F in ($(location CHANGES.md)) do $(location build_info) %~dpF -i $(location build_info.h.tmpl) -o $(location glslang/build_info.h)",
     tools = [":build_info"],
 )
 
@@ -143,7 +144,8 @@
         "include/SPIRV/NonSemanticDebugPrintf.h",
         "include/SPIRV/spirv.hpp",
     ],
-    cmd = "mkdir -p $(@D)/include/SPIRV && cp $(SRCS) $(@D)/include/SPIRV/",
+    cmd_bash = "mkdir -p $(@D)/include/SPIRV && cp $(SRCS) $(@D)/include/SPIRV/",
+    cmd_bat = "(if not exist $(@D)\\include\\SPIRV mkdir $(@D)\\include\\SPIRV) && (for %S in ($(SRCS)) do @xcopy /q %S $(@D)\\include\\SPIRV\\ >NUL)",
 )
 
 cc_library(
diff --git a/BUILD.gn b/BUILD.gn
index 37dc134..dd31806 100644
--- a/BUILD.gn
+++ b/BUILD.gn
@@ -47,7 +47,6 @@
 }
 
 action("glslang_build_info") {
-  hermetic_deps = false
   script = "build_info.py"
 
   src_dir = "."
@@ -77,6 +76,9 @@
 
 config("glslang_public") {
   include_dirs = [ "." ]
+  if (!is_win || is_clang) {
+    cflags = [ "-Wno-conversion" ]
+  }
 }
 
 config("glslang_hlsl") {
@@ -112,7 +114,6 @@
       "SPIRV/SpvBuilder.cpp",
       "SPIRV/SpvBuilder.h",
       "SPIRV/SpvPostProcess.cpp",
-      "SPIRV/SpvTools.cpp",
       "SPIRV/SpvTools.h",
       "SPIRV/bitutils.h",
       "SPIRV/disassemble.cpp",
@@ -211,8 +212,12 @@
 
     defines = []
     if (invoker.enable_opt) {
+      sources += [ "SPIRV/SpvTools.cpp" ]
       defines += [ "ENABLE_OPT=1" ]
     }
+    if (invoker.is_angle) {
+      defines += [ "GLSLANG_ANGLE" ]
+    }
 
     if (is_win) {
       sources += [ "glslang/OSDependent/Windows/ossource.cpp" ]
@@ -228,11 +233,17 @@
         "-Wno-ignored-qualifiers",
         "-Wno-implicit-fallthrough",
         "-Wno-inconsistent-missing-override",
-        "-Wno-sign-compare",
+
+        # TODO(rosasco): Fuchsia-only flags
         "-Wno-unused-variable",
         "-Wno-unknown-warning-option",
+
         "-Wno-missing-field-initializers",
         "-Wno-newline-eof",
+        "-Wno-sign-compare",
+        "-Wno-suggest-destructor-override",
+        "-Wno-suggest-override",
+        "-Wno-unused-variable",
       ]
     }
 
@@ -243,6 +254,8 @@
       ]
     }
 
+    include_dirs = [ "${target_gen_dir}/include" ]
+
     deps = [ ":glslang_build_info" ]
 
     if (invoker.enable_opt) {
@@ -250,10 +263,9 @@
         "${spirv_tools_dir}:spvtools_opt",
         "${spirv_tools_dir}:spvtools_val",
       ]
+      include_dirs += [ "${spirv_tools_dir}/include" ]
     }
 
-    include_dirs = [ "${target_gen_dir}/include" ]
-
     configs -= _configs_to_remove
     configs += _configs_to_add
   }
@@ -262,11 +274,13 @@
 glslang_sources_common("glslang_lib_sources") {
   enable_opt = !glslang_angle
   enable_hlsl = !glslang_angle
+  is_angle = glslang_angle
 }
 
 glslang_sources_common("glslang_sources") {
   enable_opt = true
   enable_hlsl = true
+  is_angle = false
 }
 
 source_set("glslang_default_resource_limits_sources") {
@@ -297,7 +311,10 @@
   ]
   public_configs = [ ":glslang_hlsl" ]
 
-  include_dirs = [ "${target_gen_dir}/include" ]
+  include_dirs = [
+    "${target_gen_dir}/include",
+    "${spirv_tools_dir}/include",
+  ]
 
   configs -= _configs_to_remove
   configs += _configs_to_add
@@ -308,6 +325,8 @@
   defines = [ "ENABLE_OPT=1" ]
   deps = [ ":glslang_sources" ]
 
+  include_dirs = [ "${spirv_tools_dir}/include" ]
+
   configs -= _configs_to_remove
   configs += _configs_to_add
 }
diff --git a/CHANGES.md b/CHANGES.md
index 6328041..3fd3636 100644
--- a/CHANGES.md
+++ b/CHANGES.md
@@ -3,6 +3,19 @@
 All notable changes to this project will be documented in this file.
 This project adheres to [Semantic Versioning](https://semver.org/).
 
+## 11.2.0 2021-02-18
+
+### Other changes
+* Removed Python requirement when not building with spirv-tools
+* Add support for GL_EXT_shared_memory_block
+* Implement GL_EXT_null_initializer
+* Add CMake support for Fuschia
+
+## 11.1.0 2020-12-07
+
+### Other changes
+* Added ray-tracing extension support
+
 ## 11.0.0 2020-07-20
 
 ### Breaking changes
diff --git a/CMakeLists.txt b/CMakeLists.txt
index f4a6fb1..9ed5265 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -31,15 +31,15 @@
 # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 # POSSIBILITY OF SUCH DAMAGE.
 
-project(glslang
-    LANGUAGES CXX)
-
 # increase to 3.1 once all major distributions
 # include a version of CMake >= 3.1
 cmake_minimum_required(VERSION 2.8.12)
 if (POLICY CMP0048)
   cmake_policy(SET CMP0048 NEW)
 endif()
+
+project(glslang LANGUAGES CXX)
+
 set_property(GLOBAL PROPERTY USE_FOLDERS ON)
 
 # Enable compile commands database
@@ -186,13 +186,16 @@
     if(NOT ENABLE_RTTI)
         string(FIND "${CMAKE_CXX_FLAGS}" "/GR" MSVC_HAS_GR)
         if(MSVC_HAS_GR)
-            string(REGEX REPLACE /GR /GR- CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS})
+            string(REGEX REPLACE "/GR" "/GR-" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
         else()
             add_compile_options(/GR-) # Disable RTTI
         endif()
     endif()
     if(ENABLE_EXCEPTIONS)
         add_compile_options(/EHsc) # Enable Exceptions
+	else()
+        string(REGEX REPLACE /EHsc "" CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS}) # Try to remove default /EHsc cxx_flag
+        add_compile_definitions(_HAS_EXCEPTIONS=0)
     endif()
 endif()
 
@@ -228,9 +231,11 @@
     endif()
 endfunction(glslang_set_link_args)
 
-# CMake needs to find the right version of python, right from the beginning,
-# otherwise, it will find the wrong version and fail later
-find_package(PythonInterp 3 REQUIRED)
+if(NOT COMMAND find_host_package)
+    macro(find_host_package)
+        find_package(${ARGN})
+    endmacro()
+endif()
 
 # Root directory for build-time generated include files
 set(GLSLANG_GENERATED_INCLUDEDIR "${CMAKE_BINARY_DIR}/include")
@@ -238,64 +243,40 @@
 ################################################################################
 # Build version information generation
 ################################################################################
+include(parse_version.cmake)
 set(GLSLANG_CHANGES_FILE      "${CMAKE_CURRENT_SOURCE_DIR}/CHANGES.md")
-set(GLSLANG_BUILD_INFO_PY     "${CMAKE_CURRENT_SOURCE_DIR}/build_info.py")
 set(GLSLANG_BUILD_INFO_H_TMPL "${CMAKE_CURRENT_SOURCE_DIR}/build_info.h.tmpl")
 set(GLSLANG_BUILD_INFO_H      "${GLSLANG_GENERATED_INCLUDEDIR}/glslang/build_info.h")
 
-# Command to build the build_info.h file
-add_custom_command(
-    OUTPUT  ${GLSLANG_BUILD_INFO_H}
-    COMMAND ${PYTHON_EXECUTABLE} "${GLSLANG_BUILD_INFO_PY}"
-            ${CMAKE_CURRENT_SOURCE_DIR}
-            "-i" ${GLSLANG_BUILD_INFO_H_TMPL}
-            "-o" ${GLSLANG_BUILD_INFO_H}
-    DEPENDS ${GLSLANG_BUILD_INFO_PY}
-            ${GLSLANG_CHANGES_FILE}
-            ${GLSLANG_BUILD_INFO_H_TMPL}
-    COMMENT "Generating ${GLSLANG_BUILD_INFO_H}")
+parse_version(${GLSLANG_CHANGES_FILE} GLSLANG)
 
-# Target to build the build_info.h file
-add_custom_target(glslang-build-info DEPENDS ${GLSLANG_BUILD_INFO_H})
+function(configurate_version)
+    set(major ${GLSLANG_VERSION_MAJOR})
+    set(minor ${GLSLANG_VERSION_MINOR})
+    set(patch ${GLSLANG_VERSION_PATCH})
+    set(flavor ${GLSLANG_VERSION_FLAVOR})
+    configure_file(${GLSLANG_BUILD_INFO_H_TMPL} ${GLSLANG_BUILD_INFO_H} @ONLY)
+endfunction()
 
-# Populate the CMake GLSLANG_VERSION* variables with the build version
-# information.
-execute_process(
-    COMMAND ${PYTHON_EXECUTABLE} "${GLSLANG_BUILD_INFO_PY}"
-            ${CMAKE_CURRENT_SOURCE_DIR} "<major>.<minor>.<patch><-flavor>;<major>;<minor>;<patch>;<flavor>"
-    OUTPUT_VARIABLE "GLSLANG_VERSIONS"
-    OUTPUT_STRIP_TRAILING_WHITESPACE)
-list(GET "GLSLANG_VERSIONS" 0 "GLSLANG_VERSION")
-list(GET "GLSLANG_VERSIONS" 1 "GLSLANG_VERSION_MAJOR")
-list(GET "GLSLANG_VERSIONS" 2 "GLSLANG_VERSION_MINOR")
-list(GET "GLSLANG_VERSIONS" 3 "GLSLANG_VERSION_PATCH")
-list(GET "GLSLANG_VERSIONS" 4 "GLSLANG_VERSION_FLAVOR")
-configure_file(${GLSLANG_CHANGES_FILE} "${CMAKE_CURRENT_BINARY_DIR}/CHANGES.md") # Required to re-run cmake on version change
+configurate_version()
 
 # glslang_add_build_info_dependency() adds the glslang-build-info dependency and
 # generated include directories to target.
 function(glslang_add_build_info_dependency target)
     target_include_directories(${target} PUBLIC $<BUILD_INTERFACE:${GLSLANG_GENERATED_INCLUDEDIR}>)
-    add_dependencies(${target} glslang-build-info)
-endfunction()
-
-# glslang_default_to_hidden_visibility() makes the symbol visibility hidden by
-# default for <target>.
-function(glslang_default_to_hidden_visibility target)
-    if(NOT WIN32)
-        target_compile_options(${target} PRIVATE "-fvisibility=hidden")
-    endif()
 endfunction()
 
 # glslang_only_export_explicit_symbols() makes the symbol visibility hidden by
-# default for <target>, and sets the GLSLANG_IS_SHARED_LIBRARY define, and 
-# GLSLANG_EXPORTING to 1 when specifically building <target>.
+# default for <target> when building shared libraries, and sets the
+# GLSLANG_IS_SHARED_LIBRARY define, and GLSLANG_EXPORTING to 1 when specifically
+# building <target>.
 function(glslang_only_export_explicit_symbols target)
-    glslang_default_to_hidden_visibility(${target})
     if(BUILD_SHARED_LIBS)
         target_compile_definitions(${target} PUBLIC "GLSLANG_IS_SHARED_LIBRARY=1")
         if(WIN32)
             target_compile_definitions(${target} PRIVATE "GLSLANG_EXPORTING=1")
+        else()
+            target_compile_options(${target} PRIVATE "-fvisibility=hidden")
         endif()
     endif()
 endfunction()
@@ -303,17 +284,21 @@
 # glslang_pch() adds precompiled header rules to <target> for the pre-compiled
 # header file <pch>. As target_precompile_headers() was added in CMake 3.16,
 # this is a no-op if called on earlier versions of CMake.
-if(NOT CMAKE_VERSION VERSION_LESS "3.16")
+if(NOT CMAKE_VERSION VERSION_LESS "3.16" AND ENABLE_PCH)
     function(glslang_pch target pch)
         target_precompile_headers(${target} PRIVATE ${pch})
     endfunction()
 else()
     function(glslang_pch target pch)
     endfunction()
-    message("Your CMake version is ${CMAKE_VERSION}. Update to at least 3.16 to enable precompiled headers to speed up incremental builds")
+    if(ENABLE_PCH)
+        message("Your CMake version is ${CMAKE_VERSION}. Update to at least 3.16 to enable precompiled headers to speed up incremental builds")
+    endif()
 endif()
 
 if(BUILD_EXTERNAL AND IS_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/External)
+    find_host_package(PythonInterp 3 REQUIRED)
+
     # We depend on these for later projects, so they should come first.
     add_subdirectory(External)
 endif()
diff --git a/DEPS b/DEPS
new file mode 100644
index 0000000..2f5fa8e
--- /dev/null
+++ b/DEPS
@@ -0,0 +1,82 @@
+# Copyright (C) 2020 The Khronos Group Inc.
+#
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+#    Redistributions of source code must retain the above copyright
+#    notice, this list of conditions and the following disclaimer.
+#
+#    Redistributions in binary form must reproduce the above
+#    copyright notice, this list of conditions and the following
+#    disclaimer in the documentation and/or other materials provided
+#    with the distribution.
+#
+#    Neither the name of The Khronos Group Inc. nor the names of its
+#    contributors may be used to endorse or promote products derived
+#    from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+# COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+# POSSIBILITY OF SUCH DAMAGE.
+
+use_relative_paths = True
+
+gclient_gn_args_file = 'build/config/gclient_args.gni'
+
+vars = {
+  'chromium_git': 'https://chromium.googlesource.com',
+  'build_with_chromium': False,
+}
+
+deps = {
+
+  './build': {
+    'url': '{chromium_git}/chromium/src/build.git@85ee3b7692e5284f08bd3c9459fb5685eed7b838',
+    'condition': 'not build_with_chromium',
+  },
+
+  './buildtools': {
+    'url': '{chromium_git}/chromium/src/buildtools.git@4be464e050b3d05060471788f926b34c641db9fd',
+    'condition': 'not build_with_chromium',
+  },
+
+  './tools/clang': {
+    'url': '{chromium_git}/chromium/src/tools/clang.git@3a982adabb720aa8f3e3885d40bf3fe506990157',
+    'condition': 'not build_with_chromium',
+  },
+
+}
+
+hooks = [
+  {
+    'name': 'sysroot_x64',
+    'pattern': '.',
+    'condition': 'checkout_linux and (checkout_x64 and not build_with_chromium)',
+    'action': ['python', './build/linux/sysroot_scripts/install-sysroot.py',
+               '--arch=x64'],
+  },
+  {
+    # Note: On Win, this should run after win_toolchain, as it may use it.
+    'name': 'clang',
+    'pattern': '.',
+    'action': ['python', './tools/clang/scripts/update.py'],
+    'condition': 'not build_with_chromium',
+  },
+]
+
+recursedeps = [
+  # buildtools provides clang_format, libc++, and libc++abi
+  'buildtools',
+]
diff --git a/OGLCompilersDLL/CMakeLists.txt b/OGLCompilersDLL/CMakeLists.txt
index 246b4e7..0b007d4 100644
--- a/OGLCompilersDLL/CMakeLists.txt
+++ b/OGLCompilersDLL/CMakeLists.txt
@@ -36,7 +36,6 @@
 add_library(OGLCompiler STATIC ${SOURCES})
 set_property(TARGET OGLCompiler PROPERTY FOLDER glslang)
 set_property(TARGET OGLCompiler PROPERTY POSITION_INDEPENDENT_CODE ON)
-glslang_default_to_hidden_visibility(OGLCompiler)
 
 if(WIN32)
     source_group("Source" FILES ${SOURCES})
diff --git a/OGLCompilersDLL/InitializeDll.cpp b/OGLCompilersDLL/InitializeDll.cpp
index ab3762e..abea910 100644
--- a/OGLCompilersDLL/InitializeDll.cpp
+++ b/OGLCompilersDLL/InitializeDll.cpp
@@ -32,6 +32,134 @@
 // POSSIBILITY OF SUCH DAMAGE.
 //
 
+#define SH_EXPORTING
+
+#include <cassert>
+
+#include "InitializeDll.h"
+#include "../glslang/Include/InitializeGlobals.h"
+#include "../glslang/Public/ShaderLang.h"
+#include "../glslang/Include/PoolAlloc.h"
+
 namespace glslang {
 
+OS_TLSIndex ThreadInitializeIndex = OS_INVALID_TLS_INDEX;
+
+// Per-process initialization.
+// Needs to be called at least once before parsing, etc. is done.
+// Will also do thread initialization for the calling thread; other
+// threads will need to do that explicitly.
+bool InitProcess()
+{
+    glslang::GetGlobalLock();
+
+    if (ThreadInitializeIndex != OS_INVALID_TLS_INDEX) {
+        //
+        // Function is re-entrant.
+        //
+
+        glslang::ReleaseGlobalLock();
+        return true;
+    }
+
+    ThreadInitializeIndex = OS_AllocTLSIndex();
+
+    if (ThreadInitializeIndex == OS_INVALID_TLS_INDEX) {
+        assert(0 && "InitProcess(): Failed to allocate TLS area for init flag");
+
+        glslang::ReleaseGlobalLock();
+        return false;
+    }
+
+    if (! InitializePoolIndex()) {
+        assert(0 && "InitProcess(): Failed to initialize global pool");
+
+        glslang::ReleaseGlobalLock();
+        return false;
+    }
+
+    if (! InitThread()) {
+        assert(0 && "InitProcess(): Failed to initialize thread");
+
+        glslang::ReleaseGlobalLock();
+        return false;
+    }
+
+    glslang::ReleaseGlobalLock();
+    return true;
+}
+
+// Per-thread scoped initialization.
+// Must be called at least once by each new thread sharing the
+// symbol tables, etc., needed to parse.
+bool InitThread()
+{
+    //
+    // This function is re-entrant
+    //
+    if (ThreadInitializeIndex == OS_INVALID_TLS_INDEX) {
+        assert(0 && "InitThread(): Process hasn't been initalised.");
+        return false;
+    }
+
+    if (OS_GetTLSValue(ThreadInitializeIndex) != 0)
+        return true;
+
+    if (! OS_SetTLSValue(ThreadInitializeIndex, (void *)1)) {
+        assert(0 && "InitThread(): Unable to set init flag.");
+        return false;
+    }
+
+    glslang::SetThreadPoolAllocator(nullptr);
+
+    return true;
+}
+
+// Not necessary to call this: InitThread() is reentrant, and the need
+// to do per thread tear down has been removed.
+//
+// This is kept, with memory management removed, to satisfy any exiting
+// calls to it that rely on it.
+bool DetachThread()
+{
+    bool success = true;
+
+    if (ThreadInitializeIndex == OS_INVALID_TLS_INDEX)
+        return true;
+
+    //
+    // Function is re-entrant and this thread may not have been initialized.
+    //
+    if (OS_GetTLSValue(ThreadInitializeIndex) != 0) {
+        if (!OS_SetTLSValue(ThreadInitializeIndex, (void *)0)) {
+            assert(0 && "DetachThread(): Unable to clear init flag.");
+            success = false;
+        }
+    }
+
+    return success;
+}
+
+// Not necessary to call this: InitProcess() is reentrant.
+//
+// This is kept, with memory management removed, to satisfy any exiting
+// calls to it that rely on it.
+//
+// Users of glslang should call shFinalize() or glslang::FinalizeProcess() for
+// process-scoped memory tear down.
+bool DetachProcess()
+{
+    bool success = true;
+
+    if (ThreadInitializeIndex == OS_INVALID_TLS_INDEX)
+        return true;
+
+    success = DetachThread();
+
+    OS_FreeTLSIndex(ThreadInitializeIndex);
+    ThreadInitializeIndex = OS_INVALID_TLS_INDEX;
+
+    return success;
+}
+
 } // end namespace glslang
diff --git a/OGLCompilersDLL/InitializeDll.h b/OGLCompilersDLL/InitializeDll.h
index b18e2ab..661cee4 100644
--- a/OGLCompilersDLL/InitializeDll.h
+++ b/OGLCompilersDLL/InitializeDll.h
@@ -38,10 +38,10 @@
 
 namespace glslang {
 
-inline bool InitProcess()   { return true; } // DEPRECATED
-inline bool InitThread()    { return true; } // DEPRECATED
-inline bool DetachThread()  { return true; } // DEPRECATED
-inline bool DetachProcess() { return true; } // DEPRECATED
+bool InitProcess();
+bool InitThread();
+bool DetachThread();  // not called from standalone, perhaps other tools rely on parts of it
+bool DetachProcess(); // not called from standalone, perhaps other tools rely on parts of it
 
 } // end namespace glslang
 
diff --git a/README.md b/README.md
old mode 100755
new mode 100644
index 330ec82..9b8cfb3
--- a/README.md
+++ b/README.md
@@ -88,7 +88,7 @@
 There is also a non-shader extension
 * `.conf` for a configuration file of limits, see usage statement for example
 
-## Building
+## Building (CMake)
 
 Instead of building manually, you can also download the binaries for your
 platform directly from the [master-tot release][master-tot-release] on GitHub.
@@ -99,7 +99,7 @@
 ### Dependencies
 
 * A C++11 compiler.
-  (For MSVS: 2015 is recommended, 2013 is fully supported/tested, and 2010 support is attempted, but not tested.)
+  (For MSVS: use 2015 or later.)
 * [CMake][cmake]: for generating compilation targets.
 * make: _Linux_, ninja is an alternative, if configured.
 * [Python 3.x][python]: for executing SPIRV-Tools scripts. (Optional if not using SPIRV-Tools and the 'External' subdirectory does not exist.)
@@ -125,12 +125,12 @@
 git clone https://github.com/google/googletest.git External/googletest
 ```
 
-If you want to use googletest with Visual Studio 2013, you also need to check out an older version:
+TEMPORARY NOTICE: additionally perform the following to avoid a current
+breakage in googletest:
 
 ```bash
-# to use googletest with Visual Studio 2013
 cd External/googletest
-git checkout 440527a61e1c91188195f7de212c63c77e8f0a45
+git checkout 0c400f67fcf305869c5fb113dd296eca266c9725
 cd ../..
 ```
 
@@ -193,6 +193,36 @@
 If using MSVC, after running CMake to configure, use the
 Configuration Manager to check the `INSTALL` project.
 
+### Building (GN)
+
+glslang can also be built with the [GN build system](https://gn.googlesource.com/gn/).
+
+#### 1) Install `depot_tools`
+
+Download [depot_tools.zip](https://storage.googleapis.com/chrome-infra/depot_tools.zip),
+extract to a directory, and add this directory to your `PATH`.
+
+#### 2) Synchronize dependencies and generate build files
+
+This only needs to be done once after updating `glslang`.
+
+With the current directory set to your `glslang` checkout, type:
+
+```bash
+./update_glslang_sources.py
+gclient sync --gclientfile=standalone.gclient
+gn gen out/Default
+```
+
+#### 3) Build
+
+With the current directory set to your `glslang` checkout, type:
+
+```bash
+cd out/Default
+ninja
+```
+
 ### If you need to change the GLSL grammar
 
 The grammar in `glslang/MachineIndependent/glslang.y` has to be recompiled with
diff --git a/SPIRV/CInterface/spirv_c_interface.cpp b/SPIRV/CInterface/spirv_c_interface.cpp
index c88b808..a0790f4 100644
--- a/SPIRV/CInterface/spirv_c_interface.cpp
+++ b/SPIRV/CInterface/spirv_c_interface.cpp
@@ -79,7 +79,7 @@
     return EShLangCount;
 }
 
-void glslang_program_SPIRV_generate(glslang_program_t* program, glslang_stage_t stage)
+GLSLANG_EXPORT void glslang_program_SPIRV_generate(glslang_program_t* program, glslang_stage_t stage)
 {
     spv::SpvBuildLogger logger;
     glslang::SpvOptions spvOptions;
@@ -92,19 +92,19 @@
     program->loggerMessages = logger.getAllMessages();
 }
 
-size_t glslang_program_SPIRV_get_size(glslang_program_t* program) { return program->spirv.size(); }
+GLSLANG_EXPORT size_t glslang_program_SPIRV_get_size(glslang_program_t* program) { return program->spirv.size(); }
 
-void glslang_program_SPIRV_get(glslang_program_t* program, unsigned int* out)
+GLSLANG_EXPORT void glslang_program_SPIRV_get(glslang_program_t* program, unsigned int* out)
 {
     memcpy(out, program->spirv.data(), program->spirv.size() * sizeof(unsigned int));
 }
 
-unsigned int* glslang_program_SPIRV_get_ptr(glslang_program_t* program)
+GLSLANG_EXPORT unsigned int* glslang_program_SPIRV_get_ptr(glslang_program_t* program)
 {
     return program->spirv.data();
 }
 
-const char* glslang_program_SPIRV_get_messages(glslang_program_t* program)
+GLSLANG_EXPORT const char* glslang_program_SPIRV_get_messages(glslang_program_t* program)
 {
     return program->loggerMessages.empty() ? nullptr : program->loggerMessages.c_str();
 }
diff --git a/SPIRV/CMakeLists.txt b/SPIRV/CMakeLists.txt
index 53ada4f..d699dad 100644
--- a/SPIRV/CMakeLists.txt
+++ b/SPIRV/CMakeLists.txt
@@ -43,7 +43,8 @@
     CInterface/spirv_c_interface.cpp)
 
 set(SPVREMAP_SOURCES
-    SPVRemapper.cpp)
+    SPVRemapper.cpp
+    doc.cpp)
 
 set(HEADERS
     bitutils.h
@@ -68,7 +69,6 @@
     doc.h)
 
 add_library(SPIRV ${LIB_TYPE} ${SOURCES} ${HEADERS})
-target_link_libraries(SPIRV PRIVATE MachineIndependent)
 set_property(TARGET SPIRV PROPERTY FOLDER glslang)
 set_property(TARGET SPIRV PROPERTY POSITION_INDEPENDENT_CODE ON)
 target_include_directories(SPIRV PUBLIC
@@ -79,7 +79,6 @@
 
 if (ENABLE_SPVREMAPPER)
     add_library(SPVRemapper ${LIB_TYPE} ${SPVREMAP_SOURCES} ${SPVREMAP_HEADERS})
-    target_link_libraries(SPVRemapper PRIVATE SPIRV)
     set_property(TARGET SPVRemapper PROPERTY FOLDER glslang)
     set_property(TARGET SPVRemapper PROPERTY POSITION_INDEPENDENT_CODE ON)
 endif()
@@ -96,10 +95,12 @@
         PRIVATE ${spirv-tools_SOURCE_DIR}/include
         PRIVATE ${spirv-tools_SOURCE_DIR}/source
     )
-    target_link_libraries(SPIRV PRIVATE SPIRV-Tools-opt)
+    target_link_libraries(SPIRV PRIVATE MachineIndependent SPIRV-Tools-opt)
     target_include_directories(SPIRV PUBLIC
         $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/../External>
         $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/External>)
+else()
+    target_link_libraries(SPIRV PRIVATE MachineIndependent)
 endif(ENABLE_OPT)
 
 if(WIN32)
diff --git a/SPIRV/GLSL.ext.EXT.h b/SPIRV/GLSL.ext.EXT.h
index 6eb0eee..20b9e54 100644
--- a/SPIRV/GLSL.ext.EXT.h
+++ b/SPIRV/GLSL.ext.EXT.h
@@ -36,5 +36,6 @@
 static const char* const E_SPV_EXT_fragment_invocation_density = "SPV_EXT_fragment_invocation_density";
 static const char* const E_SPV_EXT_demote_to_helper_invocation = "SPV_EXT_demote_to_helper_invocation";
 static const char* const E_SPV_EXT_shader_atomic_float_add = "SPV_EXT_shader_atomic_float_add";
+static const char* const E_SPV_EXT_shader_image_int64 = "SPV_EXT_shader_image_int64";
 
 #endif  // #ifndef GLSLextEXT_H
diff --git a/SPIRV/GLSL.ext.KHR.h b/SPIRV/GLSL.ext.KHR.h
index d783a8f..175fa8d 100644
--- a/SPIRV/GLSL.ext.KHR.h
+++ b/SPIRV/GLSL.ext.KHR.h
@@ -48,4 +48,8 @@
 static const char* const E_SPV_KHR_non_semantic_info            = "SPV_KHR_non_semantic_info";
 static const char* const E_SPV_KHR_ray_tracing                  = "SPV_KHR_ray_tracing";
 static const char* const E_SPV_KHR_ray_query                    = "SPV_KHR_ray_query";
+static const char* const E_SPV_KHR_fragment_shading_rate        = "SPV_KHR_fragment_shading_rate";
+static const char* const E_SPV_KHR_terminate_invocation         = "SPV_KHR_terminate_invocation";
+static const char* const E_SPV_KHR_workgroup_memory_explicit_layout = "SPV_KHR_workgroup_memory_explicit_layout";
+
 #endif  // #ifndef GLSLextKHR_H
diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp
index b14a3b2..81aacd1 100644
--- a/SPIRV/GlslangToSpv.cpp
+++ b/SPIRV/GlslangToSpv.cpp
@@ -149,6 +149,7 @@
     spv::Decoration TranslateInterpolationDecoration(const glslang::TQualifier& qualifier);
     spv::Decoration TranslateAuxiliaryStorageDecoration(const glslang::TQualifier& qualifier);
     spv::Decoration TranslateNonUniformDecoration(const glslang::TQualifier& qualifier);
+    spv::Decoration TranslateNonUniformDecoration(const spv::Builder::AccessChain::CoherentFlags& coherentFlags);
     spv::Builder::AccessChain::CoherentFlags TranslateCoherent(const glslang::TType& type);
     spv::MemoryAccessMask TranslateMemoryAccess(const spv::Builder::AccessChain::CoherentFlags &coherentFlags);
     spv::ImageOperandsMask TranslateImageOperands(const spv::Builder::AccessChain::CoherentFlags &coherentFlags);
@@ -189,6 +190,7 @@
     bool originalParam(glslang::TStorageQualifier, const glslang::TType&, bool implicitThisParam);
     void makeFunctions(const glslang::TIntermSequence&);
     void makeGlobalInitializers(const glslang::TIntermSequence&);
+    void collectRayTracingLinkerObjects();
     void visitFunctions(const glslang::TIntermSequence&);
     void handleFunctionEntry(const glslang::TIntermAggregate* node);
     void translateArguments(const glslang::TIntermAggregate& node, std::vector<spv::Id>& arguments,
@@ -253,17 +255,17 @@
     bool nanMinMaxClamp;               // true if use NMin/NMax/NClamp instead of FMin/FMax/FClamp
     spv::Id stdBuiltins;
     spv::Id nonSemanticDebugPrintf;
-    std::unordered_map<const char*, spv::Id> extBuiltinMap;
+    std::unordered_map<std::string, spv::Id> extBuiltinMap;
 
-    std::unordered_map<int, spv::Id> symbolValues;
-    std::unordered_set<int> rValueParameters;  // set of formal function parameters passed as rValues,
+    std::unordered_map<long long, spv::Id> symbolValues;
+    std::unordered_set<long long> rValueParameters;  // set of formal function parameters passed as rValues,
                                                // rather than a pointer
     std::unordered_map<std::string, spv::Function*> functionMap;
     std::unordered_map<const glslang::TTypeList*, spv::Id> structMap[glslang::ElpCount][glslang::ElmCount];
     // for mapping glslang block indices to spv indices (e.g., due to hidden members):
-    std::unordered_map<int, std::vector<int>> memberRemapper;
+    std::unordered_map<long long, std::vector<int>> memberRemapper;
     // for mapping glslang symbol struct to symbol Id
-    std::unordered_map<const glslang::TTypeList*, int> glslangTypeToIdMap;
+    std::unordered_map<const glslang::TTypeList*, long long> glslangTypeToIdMap;
     std::stack<bool> breakForLoop;  // false means break for switch
     std::unordered_map<std::string, const glslang::TIntermSymbol*> counterOriginator;
     // Map pointee types for EbtReference to their forward pointers
@@ -272,6 +274,9 @@
     // requiring local translation to and from SPIR-V type on every access.
     // Maps <builtin-variable-id -> AST-required-type-id>
     std::unordered_map<spv::Id, spv::Id> forceType;
+
+    // Used later for generating OpTraceKHR/OpExecuteCallableKHR
+    std::unordered_map<unsigned int, glslang::TIntermSymbol *> locationToSymbol[2];
 };
 
 //
@@ -283,6 +288,8 @@
 {
 #ifdef GLSLANG_WEB
     return spv::SourceLanguageESSL;
+#elif defined(GLSLANG_ANGLE)
+    return spv::SourceLanguageGLSL;
 #endif
 
     switch (source) {
@@ -373,6 +380,7 @@
         case glslang::EvqBuffer:       return useStorageBuffer ? spv::DecorationBlock : spv::DecorationBufferBlock;
         case glslang::EvqVaryingIn:    return spv::DecorationBlock;
         case glslang::EvqVaryingOut:   return spv::DecorationBlock;
+        case glslang::EvqShared:       return spv::DecorationBlock;
 #ifndef GLSLANG_WEB
         case glslang::EvqPayload:      return spv::DecorationBlock;
         case glslang::EvqPayloadIn:    return spv::DecorationBlock;
@@ -429,6 +437,7 @@
             break;
         case glslang::EbtBlock:
             switch (type.getQualifier().storage) {
+            case glslang::EvqShared:
             case glslang::EvqUniform:
             case glslang::EvqBuffer:
                 switch (type.getQualifier().layoutPacking) {
@@ -537,6 +546,20 @@
         return spv::DecorationMax;
 }
 
+// If lvalue flags contains nonUniform, return SPIR-V NonUniform decoration.
+spv::Decoration TGlslangToSpvTraverser::TranslateNonUniformDecoration(
+    const spv::Builder::AccessChain::CoherentFlags& coherentFlags)
+{
+#ifndef GLSLANG_WEB
+    if (coherentFlags.isNonUniform()) {
+        builder.addIncorporatedExtension("SPV_EXT_descriptor_indexing", spv::Spv_1_5);
+        builder.addCapability(spv::CapabilityShaderNonUniformEXT);
+        return spv::DecorationNonUniformEXT;
+    } else
+#endif
+        return spv::DecorationMax;
+}
+
 spv::MemoryAccessMask TGlslangToSpvTraverser::TranslateMemoryAccess(
     const spv::Builder::AccessChain::CoherentFlags &coherentFlags)
 {
@@ -612,6 +635,7 @@
                        flags.volatil;
     flags.isImage = type.getBasicType() == glslang::EbtSampler;
 #endif
+    flags.nonUniform = type.getQualifier().nonUniform;
     return flags;
 }
 
@@ -707,13 +731,20 @@
         return spv::BuiltInCullDistance;
 
     case glslang::EbvViewportIndex:
-        builder.addCapability(spv::CapabilityMultiViewport);
+        if (glslangIntermediate->getStage() == EShLangGeometry ||
+            glslangIntermediate->getStage() == EShLangFragment) {
+            builder.addCapability(spv::CapabilityMultiViewport);
+        }
         if (glslangIntermediate->getStage() == EShLangVertex ||
             glslangIntermediate->getStage() == EShLangTessControl ||
             glslangIntermediate->getStage() == EShLangTessEvaluation) {
 
-            builder.addIncorporatedExtension(spv::E_SPV_EXT_shader_viewport_index_layer, spv::Spv_1_5);
-            builder.addCapability(spv::CapabilityShaderViewportIndexLayerEXT);
+            if (builder.getSpvVersion() < spv::Spv_1_5) {
+                builder.addIncorporatedExtension(spv::E_SPV_EXT_shader_viewport_index_layer, spv::Spv_1_5);
+                builder.addCapability(spv::CapabilityShaderViewportIndexLayerEXT);
+            }
+            else
+                builder.addCapability(spv::CapabilityShaderViewportIndex);
         }
         return spv::BuiltInViewportIndex;
 
@@ -732,13 +763,19 @@
         if (glslangIntermediate->getStage() == EShLangMeshNV) {
             return spv::BuiltInLayer;
         }
-        builder.addCapability(spv::CapabilityGeometry);
+        if (glslangIntermediate->getStage() == EShLangGeometry ||
+            glslangIntermediate->getStage() == EShLangFragment) {
+            builder.addCapability(spv::CapabilityGeometry);
+        }
         if (glslangIntermediate->getStage() == EShLangVertex ||
             glslangIntermediate->getStage() == EShLangTessControl ||
             glslangIntermediate->getStage() == EShLangTessEvaluation) {
 
-            builder.addIncorporatedExtension(spv::E_SPV_EXT_shader_viewport_index_layer, spv::Spv_1_5);
-            builder.addCapability(spv::CapabilityShaderViewportIndexLayerEXT);
+            if (builder.getSpvVersion() < spv::Spv_1_5) {
+                builder.addIncorporatedExtension(spv::E_SPV_EXT_shader_viewport_index_layer, spv::Spv_1_5);
+                builder.addCapability(spv::CapabilityShaderViewportIndexLayerEXT);
+            } else
+                builder.addCapability(spv::CapabilityShaderLayer);
         }
         return spv::BuiltInLayer;
 
@@ -767,6 +804,16 @@
         builder.addCapability(spv::CapabilityStencilExportEXT);
         return spv::BuiltInFragStencilRefEXT;
 
+    case glslang::EbvShadingRateKHR:
+        builder.addExtension(spv::E_SPV_KHR_fragment_shading_rate);
+        builder.addCapability(spv::CapabilityFragmentShadingRateKHR);
+        return spv::BuiltInShadingRateKHR;
+
+    case glslang::EbvPrimitiveShadingRateKHR:
+        builder.addExtension(spv::E_SPV_KHR_fragment_shading_rate);
+        builder.addCapability(spv::CapabilityFragmentShadingRateKHR);
+        return spv::BuiltInPrimitiveShadingRateKHR;
+
     case glslang::EbvInvocationId:         return spv::BuiltInInvocationId;
     case glslang::EbvTessLevelInner:       return spv::BuiltInTessLevelInner;
     case glslang::EbvTessLevelOuter:       return spv::BuiltInTessLevelOuter;
@@ -961,7 +1008,17 @@
     case glslang::EbvInstanceCustomIndex:
         return spv::BuiltInInstanceCustomIndexKHR;
     case glslang::EbvHitT:
-        return spv::BuiltInHitTKHR;
+        {
+            // this is a GLSL alias of RayTmax
+            // in SPV_NV_ray_tracing it has a dedicated builtin
+            // but in SPV_KHR_ray_tracing it gets mapped to RayTmax
+            auto& extensions = glslangIntermediate->getRequestedExtensions();
+            if (extensions.find("GL_NV_ray_tracing") != extensions.end()) {
+                return spv::BuiltInHitTNV;
+            } else {
+                return spv::BuiltInRayTmaxKHR;
+            }
+        }
     case glslang::EbvHitKind:
         return spv::BuiltInHitKindKHR;
     case glslang::EbvObjectToWorld:
@@ -1069,6 +1126,10 @@
         builder.addCapability(spv::CapabilityStorageImageExtendedFormats);
         break;
 
+    case glslang::ElfR64ui:
+    case glslang::ElfR64i:
+        builder.addExtension(spv::E_SPV_EXT_shader_image_int64);
+        builder.addCapability(spv::CapabilityInt64ImageEXT);
     default:
         break;
     }
@@ -1115,6 +1176,8 @@
     case glslang::ElfRg8ui:         return spv::ImageFormatRg8ui;
     case glslang::ElfR16ui:         return spv::ImageFormatR16ui;
     case glslang::ElfR8ui:          return spv::ImageFormatR8ui;
+    case glslang::ElfR64ui:         return spv::ImageFormatR64ui;
+    case glslang::ElfR64i:          return spv::ImageFormatR64i;
     default:                        return spv::ImageFormatMax;
     }
 }
@@ -1185,7 +1248,7 @@
 spv::StorageClass TGlslangToSpvTraverser::TranslateStorageClass(const glslang::TType& type)
 {
     if (type.getBasicType() == glslang::EbtRayQuery)
-        return spv::StorageClassFunction;
+        return spv::StorageClassPrivate;
     if (type.getQualifier().isPipeInput())
         return spv::StorageClassInput;
     if (type.getQualifier().isPipeOutput())
@@ -1217,6 +1280,12 @@
         return spv::StorageClassUniformConstant;
     }
 
+    if (type.getQualifier().storage == glslang::EvqShared && type.getBasicType() == glslang::EbtBlock) {
+        builder.addExtension(spv::E_SPV_KHR_workgroup_memory_explicit_layout);
+        builder.addCapability(spv::CapabilityWorkgroupMemoryExplicitLayoutKHR);
+        return spv::StorageClassWorkgroup;
+    }
+
     switch (type.getQualifier().storage) {
     case glslang::EvqGlobal:        return spv::StorageClassPrivate;
     case glslang::EvqConstReadOnly: return spv::StorageClassFunction;
@@ -1351,6 +1420,8 @@
     if (parent.writeonly)
         child.writeonly = true;
 #endif
+    if (parent.nonUniform)
+        child.nonUniform = true;
 }
 
 bool HasNonLayoutQualifiers(const glslang::TType& type, const glslang::TQualifier& qualifier)
@@ -1422,7 +1493,7 @@
 
     if (glslangIntermediate->usingPhysicalStorageBuffer()) {
         addressingModel = spv::AddressingModelPhysicalStorageBuffer64EXT;
-        builder.addIncorporatedExtension(spv::E_SPV_EXT_physical_storage_buffer, spv::Spv_1_5);
+        builder.addIncorporatedExtension(spv::E_SPV_KHR_physical_storage_buffer, spv::Spv_1_5);
         builder.addCapability(spv::CapabilityPhysicalStorageBufferAddressesEXT);
     }
     if (glslangIntermediate->usingVulkanMemoryModel()) {
@@ -1442,7 +1513,7 @@
     // Add the source extensions
     const auto& sourceExtensions = glslangIntermediate->getRequestedExtensions();
     for (auto it = sourceExtensions.begin(); it != sourceExtensions.end(); ++it)
-        builder.addSourceExtension(it->first.c_str());
+        builder.addSourceExtension(it->c_str());
 
     // Add the top-level modes for this shader.
 
@@ -1452,7 +1523,7 @@
     }
 
     if (glslangIntermediate->getLayoutPrimitiveCulling()) {
-        builder.addCapability(spv::CapabilityRayTraversalPrimitiveCullingProvisionalKHR);
+        builder.addCapability(spv::CapabilityRayTraversalPrimitiveCullingKHR);
     }
 
     unsigned int mode;
@@ -1480,15 +1551,16 @@
             builder.addExtension(spv::E_SPV_KHR_post_depth_coverage);
         }
 
-        if (glslangIntermediate->getDepth() != glslang::EldUnchanged && glslangIntermediate->isDepthReplacing())
+        if (glslangIntermediate->isDepthReplacing())
             builder.addExecutionMode(shaderEntry, spv::ExecutionModeDepthReplacing);
 
 #ifndef GLSLANG_WEB
 
         switch(glslangIntermediate->getDepth()) {
-        case glslang::EldGreater:  mode = spv::ExecutionModeDepthGreater; break;
-        case glslang::EldLess:     mode = spv::ExecutionModeDepthLess;    break;
-        default:                   mode = spv::ExecutionModeMax;          break;
+        case glslang::EldGreater:   mode = spv::ExecutionModeDepthGreater;   break;
+        case glslang::EldLess:      mode = spv::ExecutionModeDepthLess;      break;
+        case glslang::EldUnchanged: mode = spv::ExecutionModeDepthUnchanged; break;
+        default:                    mode = spv::ExecutionModeMax;            break;
         }
         if (mode != spv::ExecutionModeMax)
             builder.addExecutionMode(shaderEntry, (spv::ExecutionMode)mode);
@@ -1619,7 +1691,7 @@
     {
         auto& extensions = glslangIntermediate->getRequestedExtensions();
         if (extensions.find("GL_NV_ray_tracing") == extensions.end()) {
-            builder.addCapability(spv::CapabilityRayTracingProvisionalKHR);
+            builder.addCapability(spv::CapabilityRayTracingKHR);
             builder.addExtension("SPV_KHR_ray_tracing");
         }
         else {
@@ -1708,6 +1780,12 @@
     if (symbol->getType().getQualifier().isSpecConstant())
         spec_constant_op_mode_setter.turnOnSpecConstantOpMode();
 
+#ifdef ENABLE_HLSL
+    // Skip symbol handling if it is string-typed
+    if (symbol->getBasicType() == glslang::EbtString)
+        return;
+#endif
+
     // getSymbolId() will set up all the IO decorations on the first call.
     // Formal function parameters were mapped during makeFunctions().
     spv::Id id = getSymbolId(symbol);
@@ -1850,9 +1928,11 @@
                 spv::Id leftRValue = accessChainLoad(node->getLeft()->getType());
 
                 // do the operation
+                spv::Builder::AccessChain::CoherentFlags coherentFlags = TranslateCoherent(node->getLeft()->getType());
+                coherentFlags |= TranslateCoherent(node->getRight()->getType());
                 OpDecorations decorations = { TranslatePrecisionDecoration(node->getOperationPrecision()),
                                               TranslateNoContractionDecoration(node->getType().getQualifier()),
-                                              TranslateNonUniformDecoration(node->getType().getQualifier()) };
+                                              TranslateNonUniformDecoration(coherentFlags) };
                 rValue = createBinaryOperation(node->getOp(), decorations,
                                                convertGlslangToSpvType(node->getType()), leftRValue, rValue,
                                                node->getType().getBasicType());
@@ -1883,13 +1963,16 @@
             if (! node->getLeft()->getType().isArray() &&
                 node->getLeft()->getType().isVector() &&
                 node->getOp() == glslang::EOpIndexDirect) {
+                // Swizzle is uniform so propagate uniform into access chain
+                spv::Builder::AccessChain::CoherentFlags coherentFlags = TranslateCoherent(node->getLeft()->getType());
+                coherentFlags.nonUniform = 0;
                 // This is essentially a hard-coded vector swizzle of size 1,
                 // so short circuit the access-chain stuff with a swizzle.
                 std::vector<unsigned> swizzle;
                 swizzle.push_back(glslangIndex);
                 int dummySize;
                 builder.accessChainPushSwizzle(swizzle, convertGlslangToSpvType(node->getLeft()->getType()),
-                                               TranslateCoherent(node->getLeft()->getType()),
+                                               coherentFlags,
                                                glslangIntermediate->getBaseAlignmentScalar(
                                                    node->getLeft()->getType(), dummySize));
             } else {
@@ -1912,7 +1995,7 @@
                 {
                     // This may be, e.g., an anonymous block-member selection, which generally need
                     // index remapping due to hidden members in anonymous blocks.
-                    int glslangId = glslangTypeToIdMap[node->getLeft()->getType().getStruct()];
+                    long long glslangId = glslangTypeToIdMap[node->getLeft()->getType().getStruct()];
                     if (memberRemapper.find(glslangId) != memberRemapper.end()) {
                         std::vector<int>& remapper = memberRemapper[glslangId];
                         assert(remapper.size() > 0);
@@ -1920,9 +2003,14 @@
                     }
                 }
 
+                // Struct reference propagates uniform lvalue
+                spv::Builder::AccessChain::CoherentFlags coherentFlags =
+                        TranslateCoherent(node->getLeft()->getType());
+                coherentFlags.nonUniform = 0;
+
                 // normal case for indexing array or structure or block
                 builder.accessChainPush(builder.makeIntConstant(spvIndex),
-                    TranslateCoherent(node->getLeft()->getType()),
+                        coherentFlags,
                         node->getLeft()->getType().getBufferReferenceAlignment());
 
                 // Add capabilities here for accessing PointSize and clip/cull distance.
@@ -1956,15 +2044,20 @@
             // restore the saved access chain
             builder.setAccessChain(partial);
 
+            // Only if index is nonUniform should we propagate nonUniform into access chain
+            spv::Builder::AccessChain::CoherentFlags index_flags = TranslateCoherent(node->getRight()->getType());
+            spv::Builder::AccessChain::CoherentFlags coherent_flags = TranslateCoherent(node->getLeft()->getType());
+            coherent_flags.nonUniform = index_flags.nonUniform;
+
             if (! node->getLeft()->getType().isArray() && node->getLeft()->getType().isVector()) {
                 int dummySize;
-                builder.accessChainPushComponent(index, convertGlslangToSpvType(node->getLeft()->getType()),
-                                                TranslateCoherent(node->getLeft()->getType()),
+                builder.accessChainPushComponent(
+                    index, convertGlslangToSpvType(node->getLeft()->getType()), coherent_flags,
                                                 glslangIntermediate->getBaseAlignmentScalar(node->getLeft()->getType(),
                                                 dummySize));
             } else
-                builder.accessChainPush(index, TranslateCoherent(node->getLeft()->getType()),
-                    node->getLeft()->getType().getBufferReferenceAlignment());
+                builder.accessChainPush(index, coherent_flags,
+                                        node->getLeft()->getType().getBufferReferenceAlignment());
         }
         return false;
     case glslang::EOpVectorSwizzle:
@@ -2048,8 +2141,9 @@
             // these require changing a 64-bit scaler -> a vector of 32-bit components
             if (glslangType.isVector())
                 break;
-            std::pair<spv::Id, spv::Id> ret(builder.makeVectorType(builder.makeUintType(32), 4),
-                                            builder.makeUintType(64));
+            spv::Id ivec4_type = builder.makeVectorType(builder.makeUintType(32), 4);
+            spv::Id uint64_type = builder.makeUintType(64);
+            std::pair<spv::Id, spv::Id> ret(ivec4_type, uint64_type);
             return ret;
         }
         // There are no SPIR-V builtins defined for these and map onto original non-transposed
@@ -2088,7 +2182,7 @@
             // handle 32-bit v.xy* -> 64-bit
             builder.clearAccessChain();
             builder.setAccessChainLValue(object);
-            object = builder.accessChainLoad(spv::NoPrecision, spv::DecorationMax, objectTypeId);
+            object = builder.accessChainLoad(spv::NoPrecision, spv::DecorationMax, spv::DecorationMax, objectTypeId);
             std::vector<spv::Id> components;
             components.push_back(builder.createCompositeExtract(object, builder.getContainedTypeId(objectTypeId), 0));
             components.push_back(builder.createCompositeExtract(object, builder.getContainedTypeId(objectTypeId), 1));
@@ -2104,7 +2198,7 @@
             // and we insert a transpose after loading the original non-transposed builtins
             builder.clearAccessChain();
             builder.setAccessChainLValue(object);
-            object = builder.accessChainLoad(spv::NoPrecision, spv::DecorationMax, objectTypeId);
+            object = builder.accessChainLoad(spv::NoPrecision, spv::DecorationMax, spv::DecorationMax, objectTypeId);
             return builder.createUnaryOp(spv::OpTranspose, desiredTypeId, object);
 
     } else  {
@@ -2207,7 +2301,8 @@
     if (node->getOp() == glslang::EOpAtomicCounterIncrement ||
         node->getOp() == glslang::EOpAtomicCounterDecrement ||
         node->getOp() == glslang::EOpAtomicCounter          ||
-        node->getOp() == glslang::EOpInterpolateAtCentroid  ||
+        (node->getOp() == glslang::EOpInterpolateAtCentroid &&
+          glslangIntermediate->getSource() != glslang::EShSourceHlsl)  ||
         node->getOp() == glslang::EOpRayQueryProceed        ||
         node->getOp() == glslang::EOpRayQueryGetRayTMin     ||
         node->getOp() == glslang::EOpRayQueryGetRayFlags    ||
@@ -2290,7 +2385,8 @@
 
             // The result of operation is always stored, but conditionally the
             // consumed result.  The consumed result is always an r-value.
-            builder.accessChainStore(result);
+            builder.accessChainStore(result,
+                                     TranslateNonUniformDecoration(builder.getAccessChain().coherentFlags));
             builder.clearAccessChain();
             if (node->getOp() == glslang::EOpPreIncrement ||
                 node->getOp() == glslang::EOpPreDecrement)
@@ -2419,6 +2515,10 @@
             // anything else gets there, so visit out of order, doing them all now.
             makeGlobalInitializers(node->getAsAggregate()->getSequence());
 
+            //Pre process linker objects for ray tracing stages
+            if (glslangIntermediate->isRayTracingStage())
+                collectRayTracingLinkerObjects();
+
             // Initializers are done, don't want to visit again, but functions and link objects need to be processed,
             // so do them manually.
             visitFunctions(node->getAsAggregate()->getSequence());
@@ -2609,6 +2709,10 @@
         else
             constructed = builder.createConstructor(precision, arguments, resultType());
 
+        if (node->getType().getQualifier().isNonUniform()) {
+            builder.addDecoration(constructed, spv::DecorationNonUniformEXT);
+        }
+
         builder.clearAccessChain();
         builder.setAccessChainRValue(constructed);
 
@@ -2681,6 +2785,7 @@
         break;
 
     case glslang::EOpAtomicAdd:
+    case glslang::EOpAtomicSubtract:
     case glslang::EOpAtomicMin:
     case glslang::EOpAtomicMax:
     case glslang::EOpAtomicAnd:
@@ -2724,10 +2829,12 @@
         binOp = node->getOp();
         break;
 
-    case glslang::EOpIgnoreIntersection:
-    case glslang::EOpTerminateRay:
-    case glslang::EOpTrace:
-    case glslang::EOpExecuteCallable:
+    case glslang::EOpIgnoreIntersectionNV:
+    case glslang::EOpTerminateRayNV:
+    case glslang::EOpTraceNV:
+    case glslang::EOpTraceKHR:
+    case glslang::EOpExecuteCallableNV:
+    case glslang::EOpExecuteCallableKHR:
     case glslang::EOpWritePackedPrimitiveIndices4x8NV:
         noReturnValue = true;
         break;
@@ -2736,7 +2843,7 @@
     case glslang::EOpRayQueryGenerateIntersection:
     case glslang::EOpRayQueryConfirmIntersection:
         builder.addExtension("SPV_KHR_ray_query");
-        builder.addCapability(spv::CapabilityRayQueryProvisionalKHR);
+        builder.addCapability(spv::CapabilityRayQueryKHR);
         noReturnValue = true;
         break;
     case glslang::EOpRayQueryProceed:
@@ -2759,7 +2866,7 @@
     case glslang::EOpRayQueryGetIntersectionObjectToWorld:
     case glslang::EOpRayQueryGetIntersectionWorldToObject:
         builder.addExtension("SPV_KHR_ray_query");
-        builder.addCapability(spv::CapabilityRayQueryProvisionalKHR);
+        builder.addCapability(spv::CapabilityRayQueryKHR);
         break;
     case glslang::EOpCooperativeMatrixLoad:
     case glslang::EOpCooperativeMatrixStore:
@@ -2850,6 +2957,7 @@
             break;
 
         case glslang::EOpAtomicAdd:
+        case glslang::EOpAtomicSubtract:
         case glslang::EOpAtomicMin:
         case glslang::EOpAtomicMax:
         case glslang::EOpAtomicAnd:
@@ -2870,7 +2978,13 @@
         case glslang::EOpInterpolateAtOffset:
         case glslang::EOpInterpolateAtVertex:
             if (arg == 0) {
-                lvalue = true;
+                // If GLSL, use the address of the interpolant argument.
+                // If HLSL, use an internal version of OpInterolates that takes
+                // the rvalue of the interpolant. A fixup pass in spirv-opt
+                // legalization will remove the OpLoad and convert to an lvalue.
+                // Had to do this because legalization will only propagate a
+                // builtin into an rvalue.
+                lvalue = glslangIntermediate->getSource() != glslang::EShSourceHlsl;
 
                 // Does it need a swizzle inversion?  If so, evaluation is inverted;
                 // operate first on the swizzle base, then apply the swizzle.
@@ -3012,11 +3126,18 @@
                     )) {
                 bool cond = glslangOperands[arg]->getAsConstantUnion()->getConstArray()[0].getBConst();
                 operands.push_back(builder.makeIntConstant(cond ? 1 : 0));
-            }
-            else {
+             } else if ((arg == 10 && glslangOp == glslang::EOpTraceKHR) ||
+                        (arg == 1  && glslangOp == glslang::EOpExecuteCallableKHR)) {
+                 const int opdNum = glslangOp == glslang::EOpTraceKHR ? 10 : 1;
+                 const int set = glslangOp == glslang::EOpTraceKHR ? 0 : 1;
+                 const int location = glslangOperands[opdNum]->getAsConstantUnion()->getConstArray()[0].getUConst();
+                 auto itNode = locationToSymbol[set].find(location);
+                 visitSymbol(itNode->second);
+                 spv::Id symId = getSymbolId(itNode->second);
+                 operands.push_back(symId);
+             } else {
                 operands.push_back(accessChainLoad(glslangOperands[arg]->getAsTyped()->getType()));
-            }
-
+             }
         }
     }
 
@@ -3052,7 +3173,9 @@
 #endif
     if (atomic) {
         // Handle all atomics
-        result = createAtomicOperation(node->getOp(), precision, resultType(), operands, node->getBasicType(),
+        glslang::TBasicType typeProxy = (node->getOp() == glslang::EOpAtomicStore)
+            ? node->getSequence()[0]->getAsTyped()->getBasicType() : node->getBasicType();
+        result = createAtomicOperation(node->getOp(), precision, resultType(), operands, typeProxy,
             lvalueCoherentFlags);
     } else if (node->getOp() == glslang::EOpDebugPrintf) {
         if (!nonSemanticDebugPrintf) {
@@ -3087,7 +3210,8 @@
 
         for (unsigned int i = 0; i < temporaryLvalues.size(); ++i) {
             builder.setAccessChain(complexLvalues[i]);
-            builder.accessChainStore(builder.createLoad(temporaryLvalues[i], spv::NoPrecision));
+            builder.accessChainStore(builder.createLoad(temporaryLvalues[i], spv::NoPrecision),
+                TranslateNonUniformDecoration(complexLvalues[i].coherentFlags));
         }
     }
 
@@ -3418,7 +3542,11 @@
 
     switch (node->getFlowOp()) {
     case glslang::EOpKill:
-        builder.makeDiscard();
+        builder.makeStatementTerminator(spv::OpKill, "post-discard");
+        break;
+    case glslang::EOpTerminateInvocation:
+        builder.addExtension(spv::E_SPV_KHR_terminate_invocation);
+        builder.makeStatementTerminator(spv::OpTerminateInvocation, "post-terminate-invocation");
         break;
     case glslang::EOpBreak:
         if (breakForLoop.top())
@@ -3455,6 +3583,12 @@
         builder.addExtension(spv::E_SPV_EXT_demote_to_helper_invocation);
         builder.addCapability(spv::CapabilityDemoteToHelperInvocationEXT);
         break;
+    case glslang::EOpTerminateRayKHR:
+        builder.makeStatementTerminator(spv::OpTerminateRayKHR, "post-terminateRayKHR");
+        break;
+    case glslang::EOpIgnoreIntersectionKHR:
+        builder.makeStatementTerminator(spv::OpIgnoreIntersectionKHR, "post-ignoreIntersectionKHR");
+        break;
 #endif
 
     default:
@@ -3509,6 +3643,11 @@
             break;
 #endif
         default:
+            if (storageClass == spv::StorageClassWorkgroup &&
+                node->getType().getBasicType() == glslang::EbtBlock) {
+                builder.addCapability(spv::CapabilityWorkgroupMemoryExplicitLayout16BitAccessKHR);
+                break;
+            }
             if (node->getType().contains16BitFloat())
                 builder.addCapability(spv::CapabilityFloat16);
             if (node->getType().contains16BitInt())
@@ -3527,6 +3666,9 @@
         } else if (storageClass == spv::StorageClassStorageBuffer) {
             builder.addIncorporatedExtension(spv::E_SPV_KHR_8bit_storage, spv::Spv_1_5);
             builder.addCapability(spv::CapabilityStorageBuffer8BitAccess);
+        } else if (storageClass == spv::StorageClassWorkgroup &&
+                   node->getType().getBasicType() == glslang::EbtBlock) {
+            builder.addCapability(spv::CapabilityWorkgroupMemoryExplicitLayout8BitAccessKHR);
         } else {
             builder.addCapability(spv::CapabilityInt8);
         }
@@ -3538,13 +3680,14 @@
 
     spv::Id initializer = spv::NoResult;
 
-    if (node->getType().getQualifier().storage == glslang::EvqUniform &&
-        !node->getConstArray().empty()) {
-            int nextConst = 0;
-            initializer = createSpvConstantFromConstUnionArray(node->getType(),
-                                                               node->getConstArray(),
-                                                               nextConst,
-                                                               false /* specConst */);
+    if (node->getType().getQualifier().storage == glslang::EvqUniform && !node->getConstArray().empty()) {
+        int nextConst = 0;
+        initializer = createSpvConstantFromConstUnionArray(node->getType(),
+                                                           node->getConstArray(),
+                                                           nextConst,
+                                                           false /* specConst */);
+    } else if (node->getType().getQualifier().isNullInit()) {
+        initializer = builder.makeNullConstant(spvType);
     }
 
     return builder.createVariable(spv::NoPrecision, storageClass, spvType, name, initializer);
@@ -3562,6 +3705,12 @@
             builder.addExtension(spv::E_SPV_AMD_gpu_shader_half_float_fetch);
             builder.addCapability(spv::CapabilityFloat16ImageAMD);
             return builder.makeFloatType(16);
+        case glslang::EbtInt64:      return builder.makeIntType(64);
+            builder.addExtension(spv::E_SPV_EXT_shader_image_int64);
+            builder.addCapability(spv::CapabilityFloat16ImageAMD);
+        case glslang::EbtUint64:     return builder.makeUintType(64);
+            builder.addExtension(spv::E_SPV_EXT_shader_image_int64);
+            builder.addCapability(spv::CapabilityFloat16ImageAMD);
 #endif
         default:
             assert(0);
@@ -3668,10 +3817,36 @@
         spvType = builder.makeUintType(32);
         break;
     case glslang::EbtAccStruct:
+        switch (glslangIntermediate->getStage()) {
+        case EShLangRayGen:
+        case EShLangIntersect:
+        case EShLangAnyHit:
+        case EShLangClosestHit:
+        case EShLangMiss:
+        case EShLangCallable:
+            // these all should have the RayTracingNV/KHR capability already
+            break;
+        default:
+            {
+                auto& extensions = glslangIntermediate->getRequestedExtensions();
+                if (extensions.find("GL_EXT_ray_query") != extensions.end()) {
+                    builder.addExtension(spv::E_SPV_KHR_ray_query);
+                    builder.addCapability(spv::CapabilityRayQueryKHR);
+                }
+            }
+            break;
+        }
         spvType = builder.makeAccelerationStructureType();
         break;
     case glslang::EbtRayQuery:
-        spvType = builder.makeRayQueryType();
+        {
+            auto& extensions = glslangIntermediate->getRequestedExtensions();
+            if (extensions.find("GL_EXT_ray_query") != extensions.end()) {
+                builder.addExtension(spv::E_SPV_KHR_ray_query);
+                builder.addCapability(spv::CapabilityRayQueryKHR);
+            }
+            spvType = builder.makeRayQueryType();
+        }
         break;
     case glslang::EbtReference:
         {
@@ -3927,6 +4102,8 @@
     // Name and decorate the non-hidden members
     int offset = -1;
     int locationOffset = 0;  // for use within the members of this struct
+    bool memberLocationInvalid = type.isArrayOfArrays() ||
+        (type.isArray() && (type.getQualifier().isArrayedIo(glslangIntermediate->getStage()) == false));
     for (int i = 0; i < (int)glslangMembers->size(); i++) {
         glslang::TType& glslangMember = *(*glslangMembers)[i].type;
         int member = i;
@@ -3979,7 +4156,7 @@
         // just track whether a member needs to be decorated.
         // Ignore member locations if the container is an array, as that's
         // ill-specified and decisions have been made to not allow this.
-        if (! type.isArray() && memberQualifier.hasLocation())
+        if (!memberLocationInvalid && memberQualifier.hasLocation())
             builder.addMemberDecoration(spvType, member, spv::DecorationLocation, memberQualifier.layoutLocation);
 
         if (qualifier.hasLocation())      // track for upcoming inheritance
@@ -4085,6 +4262,7 @@
     alignment |= type.getBufferReferenceAlignment();
 
     spv::Id loadedId = builder.accessChainLoad(TranslatePrecisionDecoration(type),
+        TranslateNonUniformDecoration(builder.getAccessChain().coherentFlags),
         TranslateNonUniformDecoration(type.getQualifier()),
         nominalTypeId,
         spv::MemoryAccessMask(TranslateMemoryAccess(coherentFlags) & ~spv::MemoryAccessMakePointerAvailableKHRMask),
@@ -4152,7 +4330,7 @@
     unsigned int alignment = builder.getAccessChain().alignment;
     alignment |= type.getBufferReferenceAlignment();
 
-    builder.accessChainStore(rvalue,
+    builder.accessChainStore(rvalue, TranslateNonUniformDecoration(builder.getAccessChain().coherentFlags),
                              spv::MemoryAccessMask(TranslateMemoryAccess(coherentFlags) &
                                 ~spv::MemoryAccessMakePointerVisibleKHRMask),
                              TranslateMemoryScope(coherentFlags), alignment);
@@ -4257,6 +4435,7 @@
     // has to be a uniform or buffer block or task in/out blocks
     if (type.getQualifier().storage != glslang::EvqUniform &&
         type.getQualifier().storage != glslang::EvqBuffer &&
+        type.getQualifier().storage != glslang::EvqShared &&
         !type.getQualifier().isTaskMemory())
         return glslang::ElpNone;
 
@@ -4540,7 +4719,39 @@
         }
     }
 }
+// Walk over all linker objects to create a map for payload and callable data linker objects
+// and their location to be used during codegen for OpTraceKHR and OpExecuteCallableKHR
+// This is done here since it is possible that these linker objects are not be referenced in the AST
+void TGlslangToSpvTraverser::collectRayTracingLinkerObjects()
+{
+    glslang::TIntermAggregate* linkerObjects = glslangIntermediate->findLinkerObjects();
+    for (auto& objSeq : linkerObjects->getSequence()) {
+        auto objNode = objSeq->getAsSymbolNode();
+        if (objNode != nullptr) {
+            if (objNode->getQualifier().hasLocation()) {
+                unsigned int location = objNode->getQualifier().layoutLocation;
+                auto st = objNode->getQualifier().storage;
+                int set;
+                switch (st)
+                {
+                case glslang::EvqPayload:
+                case glslang::EvqPayloadIn:
+                    set = 0;
+                    break;
+                case glslang::EvqCallableData:
+                case glslang::EvqCallableDataIn:
+                    set = 1;
+                    break;
 
+                default:
+                    set = -1;
+                }
+                if (set != -1)
+                    locationToSymbol[set].insert(std::make_pair(location, objNode));
+            }
+        }
+    }
+}
 // Process all the functions, while skipping initializers.
 void TGlslangToSpvTraverser::visitFunctions(const glslang::TIntermSequence& glslFunctions)
 {
@@ -4684,8 +4895,10 @@
         }
 
         if (lvalue) {
-            arguments.push_back(builder.accessChainGetLValue());
+            spv::Id lvalue_id = builder.accessChainGetLValue();
+            arguments.push_back(lvalue_id);
             lvalueCoherentFlags = builder.getAccessChain().coherentFlags;
+            builder.addDecoration(lvalue_id, TranslateNonUniformDecoration(lvalueCoherentFlags));
             lvalueCoherentFlags |= TranslateCoherent(glslangArguments[i]->getAsTyped()->getType());
         } else
 #endif
@@ -4748,12 +4961,15 @@
 
     const bool isUnsignedResult = node->getType().getBasicType() == glslang::EbtUint;
 
+    if (builder.isSampledImage(params.sampler) &&
+        ((cracked.query && node->getOp() != glslang::EOpTextureQueryLod) || cracked.fragMask || cracked.fetch)) {
+        params.sampler = builder.createUnaryOp(spv::OpImage, builder.getImageType(params.sampler), params.sampler);
+        if (imageType.getQualifier().isNonUniform()) {
+            builder.addDecoration(params.sampler, spv::DecorationNonUniformEXT);
+        }
+    }
     // Check for queries
     if (cracked.query) {
-        // OpImageQueryLod works on a sampled image, for other queries the image has to be extracted first
-        if (node->getOp() != glslang::EOpTextureQueryLod && builder.isSampledImage(params.sampler))
-            params.sampler = builder.createUnaryOp(spv::OpImage, builder.getImageType(params.sampler), params.sampler);
-
         switch (node->getOp()) {
         case glslang::EOpImageQuerySize:
         case glslang::EOpTextureQuerySize:
@@ -5007,10 +5223,6 @@
         auto opIt = arguments.begin();
         std::vector<spv::Id> operands;
 
-        // Extract the image if necessary
-        if (builder.isSampledImage(params.sampler))
-            params.sampler = builder.createUnaryOp(spv::OpImage, builder.getImageType(params.sampler), params.sampler);
-
         operands.push_back(params.sampler);
         ++opIt;
 
@@ -5071,13 +5283,6 @@
             bias = true;
     }
 
-    // See if the sampler param should really be just the SPV image part
-    if (cracked.fetch) {
-        // a fetch needs to have the image extracted first
-        if (builder.isSampledImage(params.sampler))
-            params.sampler = builder.createUnaryOp(spv::OpImage, builder.getImageType(params.sampler), params.sampler);
-    }
-
 #ifndef GLSLANG_WEB
     if (cracked.gather) {
         const auto& sourceExtensions = glslangIntermediate->getRequestedExtensions();
@@ -5237,7 +5442,7 @@
 
             builder.accessChainPush(builder.makeIntConstant(i), flags, 0);
             builder.accessChainStore(builder.createCompositeExtract(res, builder.getContainedTypeId(resType, i+1),
-                i+1));
+                i+1), TranslateNonUniformDecoration(imageType.getQualifier()));
         }
         return builder.createCompositeExtract(res, resultType(), 0);
     }
@@ -5373,6 +5578,7 @@
     // 3. Make the call.
     spv::Id result = builder.createFunctionCall(function, spvArgs);
     builder.setPrecision(result, TranslatePrecisionDecoration(node->getType()));
+    builder.addDecoration(result, TranslateNonUniformDecoration(node->getType().getQualifier()));
 
     // 4. Copy back out an "out" arguments.
     lValueCount = 0;
@@ -5382,6 +5588,7 @@
         else if (writableParam(qualifiers[a])) {
             if (qualifiers[a] == glslang::EvqOut || qualifiers[a] == glslang::EvqInOut) {
                 spv::Id copy = builder.createLoad(spvArgs[a], spv::NoPrecision);
+                builder.addDecoration(copy, TranslateNonUniformDecoration(argTypes[a]->getQualifier()));
                 builder.setAccessChain(lValues[lValueCount]);
                 multiTypeStore(*argTypes[a], copy);
             }
@@ -6169,6 +6376,11 @@
     case glslang::EOpConstructReference:
         unaryOp = spv::OpBitcast;
         break;
+
+    case glslang::EOpConvUint64ToAccStruct:
+    case glslang::EOpConvUvec2ToAccStruct:
+        unaryOp = spv::OpConvertUToAccelerationStructureKHR;
+        break;
 #endif
 
     case glslang::EOpCopyObject:
@@ -6631,9 +6843,6 @@
         break;
     case glslang::EOpConvPtrToUvec2:
     case glslang::EOpConvUvec2ToPtr:
-        if (builder.isVector(operand))
-            builder.promoteIncorporatedExtension(spv::E_SPV_EXT_physical_storage_buffer,
-                                                 spv::E_SPV_KHR_physical_storage_buffer, spv::Spv_1_5);
         convOp = spv::OpBitcast;
         break;
 #endif
@@ -6691,6 +6900,7 @@
                 builder.addCapability(spv::CapabilityAtomicFloat64AddEXT);
         }
         break;
+    case glslang::EOpAtomicSubtract:
     case glslang::EOpAtomicCounterSubtract:
         opCode = spv::OpAtomicISub;
         break;
@@ -6813,6 +7023,10 @@
         builder.addCapability(spv::CapabilityVulkanMemoryModelKHR);
     }
 
+    if (builder.getConstantScalar(scopeId) == spv::ScopeQueueFamily) {
+        builder.addCapability(spv::CapabilityVulkanMemoryModelKHR);
+    }
+
     if (glslangIntermediate->usingVulkanMemoryModel() && builder.getConstantScalar(scopeId) == spv::ScopeDevice) {
         builder.addCapability(spv::CapabilityVulkanMemoryModelDeviceScopeKHR);
     }
@@ -7755,10 +7969,16 @@
         typeId = builder.makeBoolType();
         opCode = spv::OpReportIntersectionKHR;
         break;
-    case glslang::EOpTrace:
+    case glslang::EOpTraceNV:
+        builder.createNoResultOp(spv::OpTraceNV, operands);
+        return 0;
+    case glslang::EOpTraceKHR:
         builder.createNoResultOp(spv::OpTraceRayKHR, operands);
         return 0;
-    case glslang::EOpExecuteCallable:
+    case glslang::EOpExecuteCallableNV:
+        builder.createNoResultOp(spv::OpExecuteCallableNV, operands);
+        return 0;
+    case glslang::EOpExecuteCallableKHR:
         builder.createNoResultOp(spv::OpExecuteCallableKHR, operands);
         return 0;
 
@@ -7803,7 +8023,7 @@
         opCode = spv::OpRayQueryGetIntersectionInstanceIdKHR;
         break;
     case glslang::EOpRayQueryGetIntersectionInstanceShaderBindingTableRecordOffset:
-        typeId = builder.makeIntType(32);
+        typeId = builder.makeUintType(32);
         opCode = spv::OpRayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR;
         break;
     case glslang::EOpRayQueryGetIntersectionGeometryIndex:
@@ -8046,11 +8266,11 @@
         spv::Id id = builder.createBuiltinCall(typeId, getExtBuiltins(spv::E_SPV_AMD_gcn_shader), spv::TimeAMD, args);
         return builder.setPrecision(id, precision);
     }
-    case glslang::EOpIgnoreIntersection:
-        builder.createNoResultOp(spv::OpIgnoreIntersectionKHR);
+    case glslang::EOpIgnoreIntersectionNV:
+        builder.createNoResultOp(spv::OpIgnoreIntersectionNV);
         return 0;
-    case glslang::EOpTerminateRay:
-        builder.createNoResultOp(spv::OpTerminateRayKHR);
+    case glslang::EOpTerminateRayNV:
+        builder.createNoResultOp(spv::OpTerminateRayNV);
         return 0;
     case glslang::EOpRayQueryInitialize:
         builder.createNoResultOp(spv::OpRayQueryInitializeKHR);
@@ -8178,7 +8398,8 @@
     }
 
 #ifndef GLSLANG_WEB
-    if (symbol->getType().isImage()) {
+    // Subgroup builtins which have input storage class are volatile for ray tracing stages.
+    if (symbol->getType().isImage() || symbol->getQualifier().isPipeInput()) {
         std::vector<spv::Decoration> memory;
         TranslateMemoryDecoration(symbol->getType().getQualifier(), memory,
             glslangIntermediate->usingVulkanMemoryModel());
@@ -8186,9 +8407,6 @@
             builder.addDecoration(id, memory[i]);
     }
 
-    // nonuniform
-    builder.addDecoration(id, TranslateNonUniformDecoration(symbol->getType().getQualifier()));
-
     if (builtIn == spv::BuiltInSampleMask) {
           spv::Decoration decoration;
           // GL_NV_sample_mask_override_coverage extension
@@ -8694,7 +8912,7 @@
 // Write SPIR-V out to a text file with 32-bit hexadecimal words
 void OutputSpvHex(const std::vector<unsigned int>& spirv, const char* baseName, const char* varName)
 {
-#ifndef GLSLANG_WEB
+#if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE)
     std::ofstream out;
     out.open(baseName, std::ios::binary | std::ios::out);
     if (out.fail())
@@ -8721,6 +8939,7 @@
     }
     if (varName != nullptr) {
         out << "};";
+        out << std::endl;
     }
     out.close();
 #endif
diff --git a/SPIRV/GlslangToSpv.h b/SPIRV/GlslangToSpv.h
old mode 100755
new mode 100644
diff --git a/SPIRV/SPVRemapper.cpp b/SPIRV/SPVRemapper.cpp
index 943b9b6..56d7f43 100644
--- a/SPIRV/SPVRemapper.cpp
+++ b/SPIRV/SPVRemapper.cpp
@@ -625,6 +625,9 @@
                 break;
             }
 
+            case spv::OperandVariableLiteralStrings:
+                return nextInst;
+
             // Execution mode might have extra literal operands.  Skip them.
             case spv::OperandExecutionMode:
                 return nextInst;
diff --git a/SPIRV/SpvBuilder.cpp b/SPIRV/SpvBuilder.cpp
index 582b6cb..1401bb0 100644
--- a/SPIRV/SpvBuilder.cpp
+++ b/SPIRV/SpvBuilder.cpp
@@ -621,13 +621,13 @@
 Id Builder::makeRayQueryType()
 {
     Instruction *type;
-    if (groupedTypes[OpTypeRayQueryProvisionalKHR].size() == 0) {
-        type = new Instruction(getUniqueId(), NoType, OpTypeRayQueryProvisionalKHR);
-        groupedTypes[OpTypeRayQueryProvisionalKHR].push_back(type);
+    if (groupedTypes[OpTypeRayQueryKHR].size() == 0) {
+        type = new Instruction(getUniqueId(), NoType, OpTypeRayQueryKHR);
+        groupedTypes[OpTypeRayQueryKHR].push_back(type);
         constantsTypesGlobals.push_back(std::unique_ptr<Instruction>(type));
         module.mapInstruction(type);
     } else {
-        type = groupedTypes[OpTypeRayQueryProvisionalKHR].back();
+        type = groupedTypes[OpTypeRayQueryKHR].back();
     }
 
     return type->getResultId();
@@ -869,6 +869,30 @@
     }
 }
 
+Id Builder::makeNullConstant(Id typeId)
+{
+    Instruction* constant;
+
+    // See if we already made it.
+    Id existing = NoResult;
+    for (int i = 0; i < (int)nullConstants.size(); ++i) {
+        constant = nullConstants[i];
+        if (constant->getTypeId() == typeId)
+            existing = constant->getResultId();
+    }
+
+    if (existing != NoResult)
+        return existing;
+
+    // Make it
+    Instruction* c = new Instruction(getUniqueId(), typeId, OpConstantNull);
+    constantsTypesGlobals.push_back(std::unique_ptr<Instruction>(c));
+    nullConstants.push_back(c);
+    module.mapInstruction(c);
+
+    return c->getResultId();
+}
+
 Id Builder::makeBoolConstant(bool b, bool specConstant)
 {
     Id typeId = makeBoolType();
@@ -1183,6 +1207,28 @@
     executionModes.push_back(std::unique_ptr<Instruction>(instr));
 }
 
+void Builder::addExecutionMode(Function* entryPoint, ExecutionMode mode, const std::vector<unsigned>& literals)
+{
+    Instruction* instr = new Instruction(OpExecutionMode);
+    instr->addIdOperand(entryPoint->getId());
+    instr->addImmediateOperand(mode);
+    for (auto literal : literals)
+        instr->addImmediateOperand(literal);
+
+    executionModes.push_back(std::unique_ptr<Instruction>(instr));
+}
+
+void Builder::addExecutionModeId(Function* entryPoint, ExecutionMode mode, const std::vector<Id>& operandIds)
+{
+    Instruction* instr = new Instruction(OpExecutionModeId);
+    instr->addIdOperand(entryPoint->getId());
+    instr->addImmediateOperand(mode);
+    for (auto operandId : operandIds)
+        instr->addIdOperand(operandId);
+
+    executionModes.push_back(std::unique_ptr<Instruction>(instr));
+}
+
 void Builder::addName(Id id, const char* string)
 {
     Instruction* name = new Instruction(OpName);
@@ -1221,7 +1267,7 @@
     if (decoration == spv::DecorationMax)
         return;
 
-    Instruction* dec = new Instruction(OpDecorateStringGOOGLE);
+    Instruction* dec = new Instruction(OpDecorateString);
     dec->addIdOperand(id);
     dec->addImmediateOperand(decoration);
     dec->addStringOperand(s);
@@ -1229,6 +1275,34 @@
     decorations.push_back(std::unique_ptr<Instruction>(dec));
 }
 
+void Builder::addDecoration(Id id, Decoration decoration, const std::vector<unsigned>& literals)
+{
+    if (decoration == spv::DecorationMax)
+        return;
+
+    Instruction* dec = new Instruction(OpDecorate);
+    dec->addIdOperand(id);
+    dec->addImmediateOperand(decoration);
+    for (auto literal : literals)
+        dec->addImmediateOperand(literal);
+
+    decorations.push_back(std::unique_ptr<Instruction>(dec));
+}
+
+void Builder::addDecoration(Id id, Decoration decoration, const std::vector<const char*>& strings)
+{
+    if (decoration == spv::DecorationMax)
+        return;
+
+    Instruction* dec = new Instruction(OpDecorateString);
+    dec->addIdOperand(id);
+    dec->addImmediateOperand(decoration);
+    for (auto string : strings)
+        dec->addStringOperand(string);
+
+    decorations.push_back(std::unique_ptr<Instruction>(dec));
+}
+
 void Builder::addDecorationId(Id id, Decoration decoration, Id idDecoration)
 {
     if (decoration == spv::DecorationMax)
@@ -1242,6 +1316,21 @@
     decorations.push_back(std::unique_ptr<Instruction>(dec));
 }
 
+void Builder::addDecorationId(Id id, Decoration decoration, const std::vector<Id>& operandIds)
+{
+    if(decoration == spv::DecorationMax)
+        return;
+
+    Instruction* dec = new Instruction(OpDecorateId);
+    dec->addIdOperand(id);
+    dec->addImmediateOperand(decoration);
+
+    for (auto operandId : operandIds)
+        dec->addIdOperand(operandId);
+
+    decorations.push_back(std::unique_ptr<Instruction>(dec));
+}
+
 void Builder::addMemberDecoration(Id id, unsigned int member, Decoration decoration, int num)
 {
     if (decoration == spv::DecorationMax)
@@ -1271,6 +1360,36 @@
     decorations.push_back(std::unique_ptr<Instruction>(dec));
 }
 
+void Builder::addMemberDecoration(Id id, unsigned int member, Decoration decoration, const std::vector<unsigned>& literals)
+{
+    if (decoration == spv::DecorationMax)
+        return;
+
+    Instruction* dec = new Instruction(OpMemberDecorate);
+    dec->addIdOperand(id);
+    dec->addImmediateOperand(member);
+    dec->addImmediateOperand(decoration);
+    for (auto literal : literals)
+        dec->addImmediateOperand(literal);
+
+    decorations.push_back(std::unique_ptr<Instruction>(dec));
+}
+
+void Builder::addMemberDecoration(Id id, unsigned int member, Decoration decoration, const std::vector<const char*>& strings)
+{
+    if (decoration == spv::DecorationMax)
+        return;
+
+    Instruction* dec = new Instruction(OpMemberDecorateString);
+    dec->addIdOperand(id);
+    dec->addImmediateOperand(member);
+    dec->addImmediateOperand(decoration);
+    for (auto string : strings)
+        dec->addStringOperand(string);
+
+    decorations.push_back(std::unique_ptr<Instruction>(dec));
+}
+
 // Comments in header
 Function* Builder::makeEntryPoint(const char* entryPoint)
 {
@@ -1352,10 +1471,10 @@
 }
 
 // Comments in header
-void Builder::makeDiscard()
+void Builder::makeStatementTerminator(spv::Op opcode, const char *name)
 {
-    buildPoint->addInstruction(std::unique_ptr<Instruction>(new Instruction(OpKill)));
-    createAndSetNoPredecessorBlock("post-discard");
+    buildPoint->addInstruction(std::unique_ptr<Instruction>(new Instruction(opcode)));
+    createAndSetNoPredecessorBlock(name);
 }
 
 // Comments in header
@@ -2666,12 +2785,14 @@
 }
 
 // Comments in header
-void Builder::accessChainStore(Id rvalue, spv::MemoryAccessMask memoryAccess, spv::Scope scope, unsigned int alignment)
+void Builder::accessChainStore(Id rvalue, Decoration nonUniform, spv::MemoryAccessMask memoryAccess, spv::Scope scope, unsigned int alignment)
 {
     assert(accessChain.isRValue == false);
 
     transferAccessChainSwizzle(true);
     Id base = collapseAccessChain();
+    addDecoration(base, nonUniform);
+
     Id source = rvalue;
 
     // dynamic component should be gone
@@ -2694,8 +2815,9 @@
 }
 
 // Comments in header
-Id Builder::accessChainLoad(Decoration precision, Decoration nonUniform, Id resultType,
-    spv::MemoryAccessMask memoryAccess, spv::Scope scope, unsigned int alignment)
+Id Builder::accessChainLoad(Decoration precision, Decoration l_nonUniform,
+    Decoration r_nonUniform, Id resultType, spv::MemoryAccessMask memoryAccess,
+    spv::Scope scope, unsigned int alignment)
 {
     Id id;
 
@@ -2759,9 +2881,9 @@
         // Buffer accesses need the access chain decorated, and this is where
         // loaded image types get decorated. TODO: This should maybe move to
         // createImageTextureFunctionCall.
-        addDecoration(id, nonUniform);
+        addDecoration(id, l_nonUniform);
         id = createLoad(id, precision, memoryAccess, scope, alignment);
-        addDecoration(id, nonUniform);
+        addDecoration(id, r_nonUniform);
     }
 
     // Done, unless there are swizzles to do
@@ -2782,7 +2904,7 @@
     if (accessChain.component != NoResult)
         id = setPrecision(createVectorExtractDynamic(id, resultType, accessChain.component), precision);
 
-    addDecoration(id, nonUniform);
+    addDecoration(id, r_nonUniform);
     return id;
 }
 
diff --git a/SPIRV/SpvBuilder.h b/SPIRV/SpvBuilder.h
index 83a7116..73847e1 100644
--- a/SPIRV/SpvBuilder.h
+++ b/SPIRV/SpvBuilder.h
@@ -293,6 +293,7 @@
     }
 
     // For making new constants (will return old constant if the requested one was already made).
+    Id makeNullConstant(Id typeId);
     Id makeBoolConstant(bool b, bool specConstant = false);
     Id makeInt8Constant(int i, bool specConstant = false)
         { return makeIntConstant(makeIntType(8),  (unsigned)i, specConstant); }
@@ -321,13 +322,20 @@
     // Methods for adding information outside the CFG.
     Instruction* addEntryPoint(ExecutionModel, Function*, const char* name);
     void addExecutionMode(Function*, ExecutionMode mode, int value1 = -1, int value2 = -1, int value3 = -1);
+    void addExecutionMode(Function*, ExecutionMode mode, const std::vector<unsigned>& literals);
+    void addExecutionModeId(Function*, ExecutionMode mode, const std::vector<Id>& operandIds);
     void addName(Id, const char* name);
     void addMemberName(Id, int member, const char* name);
     void addDecoration(Id, Decoration, int num = -1);
     void addDecoration(Id, Decoration, const char*);
+    void addDecoration(Id, Decoration, const std::vector<unsigned>& literals);
+    void addDecoration(Id, Decoration, const std::vector<const char*>& strings);
     void addDecorationId(Id id, Decoration, Id idDecoration);
+    void addDecorationId(Id id, Decoration, const std::vector<Id>& operandIds);
     void addMemberDecoration(Id, unsigned int member, Decoration, int num = -1);
     void addMemberDecoration(Id, unsigned int member, Decoration, const char*);
+    void addMemberDecoration(Id, unsigned int member, Decoration, const std::vector<unsigned>& literals);
+    void addMemberDecoration(Id, unsigned int member, Decoration, const std::vector<const char*>& strings);
 
     // At the end of what block do the next create*() instructions go?
     void setBuildPoint(Block* bp) { buildPoint = bp; }
@@ -350,8 +358,9 @@
     // Generate all the code needed to finish up a function.
     void leaveFunction();
 
-    // Create a discard.
-    void makeDiscard();
+    // Create block terminator instruction for certain statements like
+    // discard, terminate-invocation, terminateRayEXT, or ignoreIntersectionEXT
+    void makeStatementTerminator(spv::Op opcode, const char *name);
 
     // Create a global or function local or IO variable.
     Id createVariable(Decoration precision, StorageClass, Id type, const char* name = nullptr,
@@ -617,6 +626,7 @@
             CoherentFlags operator |=(const CoherentFlags &other) { return *this; }
 #else
             bool isVolatile() const { return volatil; }
+            bool isNonUniform() const { return nonUniform; }
             bool anyCoherent() const {
                 return coherent || devicecoherent || queuefamilycoherent || workgroupcoherent ||
                     subgroupcoherent || shadercallcoherent;
@@ -631,6 +641,7 @@
             unsigned nonprivate : 1;
             unsigned volatil : 1;
             unsigned isImage : 1;
+            unsigned nonUniform : 1;
 
             void clear() {
                 coherent = 0;
@@ -642,6 +653,7 @@
                 nonprivate = 0;
                 volatil = 0;
                 isImage = 0;
+                nonUniform = 0;
             }
 
             CoherentFlags operator |=(const CoherentFlags &other) {
@@ -654,6 +666,7 @@
                 nonprivate |= other.nonprivate;
                 volatil |= other.volatil;
                 isImage |= other.isImage;
+                nonUniform |= other.nonUniform;
                 return *this;
             }
 #endif
@@ -714,11 +727,12 @@
     }
 
     // use accessChain and swizzle to store value
-    void accessChainStore(Id rvalue, spv::MemoryAccessMask memoryAccess = spv::MemoryAccessMaskNone,
+    void accessChainStore(Id rvalue, Decoration nonUniform,
+        spv::MemoryAccessMask memoryAccess = spv::MemoryAccessMaskNone,
         spv::Scope scope = spv::ScopeMax, unsigned int alignment = 0);
 
     // use accessChain and swizzle to load an r-value
-    Id accessChainLoad(Decoration precision, Decoration nonUniform, Id ResultType,
+    Id accessChainLoad(Decoration precision, Decoration l_nonUniform, Decoration r_nonUniform, Id ResultType,
         spv::MemoryAccessMask memoryAccess = spv::MemoryAccessMaskNone, spv::Scope scope = spv::ScopeMax,
             unsigned int alignment = 0);
 
@@ -825,6 +839,8 @@
     std::unordered_map<unsigned int, std::vector<Instruction*>> groupedStructConstants;
     // map type opcodes to type instructions
     std::unordered_map<unsigned int, std::vector<Instruction*>> groupedTypes;
+    // list of OpConstantNull instructions
+    std::vector<Instruction*> nullConstants;
 
     // stack of switches
     std::stack<Block*> switchMerges;
diff --git a/SPIRV/SpvPostProcess.cpp b/SPIRV/SpvPostProcess.cpp
index d40174d..23d7b5a 100644
--- a/SPIRV/SpvPostProcess.cpp
+++ b/SPIRV/SpvPostProcess.cpp
@@ -436,6 +436,38 @@
             }
         }
     }
+
+    // If any Vulkan memory model-specific functionality is used, update the
+    // OpMemoryModel to match.
+    if (capabilities.find(spv::CapabilityVulkanMemoryModelKHR) != capabilities.end()) {
+        memoryModel = spv::MemoryModelVulkanKHR;
+        addIncorporatedExtension(spv::E_SPV_KHR_vulkan_memory_model, spv::Spv_1_5);
+    }
+
+    // Add Aliased decoration if there's more than one Workgroup Block variable.
+    if (capabilities.find(spv::CapabilityWorkgroupMemoryExplicitLayoutKHR) != capabilities.end()) {
+        assert(entryPoints.size() == 1);
+        auto &ep = entryPoints[0];
+
+        std::vector<Id> workgroup_variables;
+        for (int i = 0; i < (int)ep->getNumOperands(); i++) {
+            if (!ep->isIdOperand(i))
+                continue;
+
+            const Id id = ep->getIdOperand(i);
+            const Instruction *instr = module.getInstruction(id);
+            if (instr->getOpCode() != spv::OpVariable)
+                continue;
+
+            if (instr->getImmediateOperand(0) == spv::StorageClassWorkgroup)
+                workgroup_variables.push_back(id);
+        }
+
+        if (workgroup_variables.size() > 1) {
+            for (size_t i = 0; i < workgroup_variables.size(); i++)
+                addDecoration(workgroup_variables[i], spv::DecorationAliased);
+        }
+    }
 }
 #endif
 
diff --git a/SPIRV/SpvTools.cpp b/SPIRV/SpvTools.cpp
index 6d4d9ef..8acf9b1 100644
--- a/SPIRV/SpvTools.cpp
+++ b/SPIRV/SpvTools.cpp
@@ -44,7 +44,6 @@
 
 #include "SpvTools.h"
 #include "spirv-tools/optimizer.hpp"
-#include "spirv-tools/libspirv.h"
 
 namespace glslang {
 
@@ -114,11 +113,18 @@
     out << std::endl;
 }
 
-// Use the SPIRV-Tools disassembler to print SPIR-V.
+// Use the SPIRV-Tools disassembler to print SPIR-V using a SPV_ENV_UNIVERSAL_1_3 environment.
 void SpirvToolsDisassemble(std::ostream& out, const std::vector<unsigned int>& spirv)
 {
+    SpirvToolsDisassemble(out, spirv, spv_target_env::SPV_ENV_UNIVERSAL_1_3);
+}
+
+// Use the SPIRV-Tools disassembler to print SPIR-V with a provided SPIR-V environment.
+void SpirvToolsDisassemble(std::ostream& out, const std::vector<unsigned int>& spirv,
+                           spv_target_env requested_context)
+{
     // disassemble
-    spv_context context = spvContextCreate(SPV_ENV_UNIVERSAL_1_3);
+    spv_context context = spvContextCreate(requested_context);
     spv_text text;
     spv_diagnostic diagnostic = nullptr;
     spvBinaryToText(context, spirv.data(), spirv.size(),
@@ -147,6 +153,8 @@
     spv_validator_options options = spvValidatorOptionsCreate();
     spvValidatorOptionsSetRelaxBlockLayout(options, intermediate.usingHlslOffsets());
     spvValidatorOptionsSetBeforeHlslLegalization(options, prelegalization);
+    spvValidatorOptionsSetScalarBlockLayout(options, intermediate.usingScalarBlockLayout());
+    spvValidatorOptionsSetWorkgroupScalarBlockLayout(options, intermediate.usingScalarBlockLayout());
     spvValidateWithOptions(context, options, &binary, &diagnostic);
 
     // report
@@ -165,7 +173,7 @@
 void SpirvToolsTransform(const glslang::TIntermediate& intermediate, std::vector<unsigned int>& spirv,
                          spv::SpvBuildLogger* logger, const SpvOptions* options)
 {
-    spv_target_env target_env = SPV_ENV_UNIVERSAL_1_2;
+    spv_target_env target_env = MapToSpirvToolsEnv(intermediate.getSpv(), logger);
 
     spvtools::Optimizer optimizer(target_env);
     optimizer.SetMessageConsumer(OptimizerMesssageConsumer);
@@ -174,10 +182,7 @@
     // line information into all SPIR-V instructions. This avoids loss of
     // information when instructions are deleted or moved. Later, remove
     // redundant information to minimize final SPRIR-V size.
-    if (options->generateDebugInfo) {
-        optimizer.RegisterPass(spvtools::CreatePropagateLineInfoPass());
-    }
-    else if (options->stripDebugInfo) {
+    if (options->stripDebugInfo) {
         optimizer.RegisterPass(spvtools::CreateStripDebugInfoPass());
     }
     optimizer.RegisterPass(spvtools::CreateWrapOpKillPass());
@@ -202,14 +207,12 @@
     optimizer.RegisterPass(spvtools::CreateAggressiveDCEPass());
     optimizer.RegisterPass(spvtools::CreateVectorDCEPass());
     optimizer.RegisterPass(spvtools::CreateDeadInsertElimPass());
+    optimizer.RegisterPass(spvtools::CreateInterpolateFixupPass());
     if (options->optimizeSize) {
         optimizer.RegisterPass(spvtools::CreateRedundancyEliminationPass());
     }
     optimizer.RegisterPass(spvtools::CreateAggressiveDCEPass());
     optimizer.RegisterPass(spvtools::CreateCFGCleanupPass());
-    if (options->generateDebugInfo) {
-        optimizer.RegisterPass(spvtools::CreateRedundantLineInfoElimPass());
-    }
 
     spvtools::OptimizerOptions spvOptOptions;
     optimizer.SetTargetEnv(MapToSpirvToolsEnv(intermediate.getSpv(), logger));
@@ -223,7 +226,7 @@
 void SpirvToolsStripDebugInfo(const glslang::TIntermediate& intermediate,
         std::vector<unsigned int>& spirv, spv::SpvBuildLogger* logger)
 {
-    spv_target_env target_env = SPV_ENV_UNIVERSAL_1_2;
+    spv_target_env target_env = MapToSpirvToolsEnv(intermediate.getSpv(), logger);
 
     spvtools::Optimizer optimizer(target_env);
     optimizer.SetMessageConsumer(OptimizerMesssageConsumer);
diff --git a/SPIRV/SpvTools.h b/SPIRV/SpvTools.h
index 7779dfa..3fb3cba 100644
--- a/SPIRV/SpvTools.h
+++ b/SPIRV/SpvTools.h
@@ -41,9 +41,10 @@
 #ifndef GLSLANG_SPV_TOOLS_H
 #define GLSLANG_SPV_TOOLS_H
 
-#ifdef ENABLE_OPT
+#if ENABLE_OPT
 #include <vector>
 #include <ostream>
+#include "spirv-tools/libspirv.h"
 #endif
 
 #include "glslang/MachineIndependent/localintermediate.h"
@@ -62,11 +63,15 @@
     bool validate;
 };
 
-#ifdef ENABLE_OPT
+#if ENABLE_OPT
 
-// Use the SPIRV-Tools disassembler to print SPIR-V.
+// Use the SPIRV-Tools disassembler to print SPIR-V using a SPV_ENV_UNIVERSAL_1_3 environment.
 void SpirvToolsDisassemble(std::ostream& out, const std::vector<unsigned int>& spirv);
 
+// Use the SPIRV-Tools disassembler to print SPIR-V with a provided SPIR-V environment.
+void SpirvToolsDisassemble(std::ostream& out, const std::vector<unsigned int>& spirv,
+                           spv_target_env requested_context);
+
 // Apply the SPIRV-Tools validator to generated SPIR-V.
 void SpirvToolsValidate(const glslang::TIntermediate& intermediate, std::vector<unsigned int>& spirv,
                         spv::SpvBuildLogger*, bool prelegalization);
diff --git a/SPIRV/disassemble.cpp b/SPIRV/disassemble.cpp
index 4faa89e..73c988c 100644
--- a/SPIRV/disassemble.cpp
+++ b/SPIRV/disassemble.cpp
@@ -46,7 +46,6 @@
 
 #include "disassemble.h"
 #include "doc.h"
-#include "SpvTools.h"
 
 namespace spv {
     extern "C" {
@@ -519,6 +518,10 @@
         case OperandLiteralString:
             numOperands -= disassembleString();
             break;
+        case OperandVariableLiteralStrings:
+            while (numOperands > 0)
+                numOperands -= disassembleString();
+            return;
         case OperandMemoryAccess:
             outputMask(OperandMemoryAccess, stream[word++]);
             --numOperands;
diff --git a/SPIRV/doc.cpp b/SPIRV/doc.cpp
index 4829bb4..3da77bf 100644
--- a/SPIRV/doc.cpp
+++ b/SPIRV/doc.cpp
@@ -134,7 +134,7 @@
     }
 }
 
-const int ExecutionModeCeiling = 33;
+const int ExecutionModeCeiling = 40;
 
 const char* ExecutionModeString(int mode)
 {
@@ -173,7 +173,21 @@
     case 31: return "ContractionOff";
     case 32: return "Bad";
 
-    case 4446:  return "PostDepthCoverage";
+    case ExecutionModeInitializer:              return "Initializer";
+    case ExecutionModeFinalizer:                return "Finalizer";
+    case ExecutionModeSubgroupSize:             return "SubgroupSize";
+    case ExecutionModeSubgroupsPerWorkgroup:    return "SubgroupsPerWorkgroup";
+    case ExecutionModeSubgroupsPerWorkgroupId:  return "SubgroupsPerWorkgroupId";
+    case ExecutionModeLocalSizeId:              return "LocalSizeId";
+    case ExecutionModeLocalSizeHintId:          return "LocalSizeHintId";
+
+    case ExecutionModePostDepthCoverage:        return "PostDepthCoverage";
+    case ExecutionModeDenormPreserve:           return "DenormPreserve";
+    case ExecutionModeDenormFlushToZero:        return "DenormFlushToZero";
+    case ExecutionModeSignedZeroInfNanPreserve: return "SignedZeroInfNanPreserve";
+    case ExecutionModeRoundingModeRTE:          return "RoundingModeRTE";
+    case ExecutionModeRoundingModeRTZ:          return "RoundingModeRTZ";
+    case ExecutionModeStencilRefReplacingEXT:   return "StencilRefReplacingEXT";
 
     case ExecutionModeOutputLinesNV:            return "OutputLinesNV";
     case ExecutionModeOutputPrimitivesNV:       return "OutputPrimitivesNV";
@@ -188,6 +202,11 @@
     case ExecutionModeShadingRateInterlockOrderedEXT:   return "ShadingRateInterlockOrderedEXT";
     case ExecutionModeShadingRateInterlockUnorderedEXT: return "ShadingRateInterlockUnorderedEXT";
 
+    case ExecutionModeMaxWorkgroupSizeINTEL:    return "MaxWorkgroupSizeINTEL";
+    case ExecutionModeMaxWorkDimINTEL:          return "MaxWorkDimINTEL";
+    case ExecutionModeNoGlobalOffsetINTEL:      return "NoGlobalOffsetINTEL";
+    case ExecutionModeNumSIMDWorkitemsINTEL:    return "NumSIMDWorkitemsINTEL";
+
     case ExecutionModeCeiling:
     default: return "Bad";
     }
@@ -353,6 +372,8 @@
     case 4424: return "BaseVertex";
     case 4425: return "BaseInstance";
     case 4426: return "DrawIndex";
+    case 4432: return "PrimitiveShadingRateKHR";
+    case 4444: return "ShadingRateKHR";
     case 5014: return "FragStencilRefEXT";
 
     case 4992: return "BaryCoordNoPerspAMD";
@@ -374,7 +395,7 @@
     case BuiltInRayGeometryIndexKHR:         return "RayGeometryIndexKHR";
     case BuiltInObjectToWorldKHR:            return "ObjectToWorldKHR";
     case BuiltInWorldToObjectKHR:            return "WorldToObjectKHR";
-    case BuiltInHitTKHR:                     return "HitTKHR";
+    case BuiltInHitTNV:                      return "HitTNV";
     case BuiltInHitKindKHR:                  return "HitKindKHR";
     case BuiltInIncomingRayFlagsKHR:         return "IncomingRayFlagsKHR";
     case BuiltInViewportMaskNV:              return "ViewportMaskNV";
@@ -502,6 +523,8 @@
     case 37: return "Rg8ui";
     case 38: return "R16ui";
     case 39: return "R8ui";
+    case 40: return "R64ui";
+    case 41: return "R64i";
 
     default:
         return "Bad";
@@ -892,9 +915,10 @@
     case CapabilityPerViewAttributesNV:             return "PerViewAttributesNV";
     case CapabilityGroupNonUniformPartitionedNV:    return "GroupNonUniformPartitionedNV";
     case CapabilityRayTracingNV:                    return "RayTracingNV";
+    case CapabilityRayTracingKHR:                   return "RayTracingKHR";
+    case CapabilityRayQueryKHR:                     return "RayQueryKHR";
     case CapabilityRayTracingProvisionalKHR:        return "RayTracingProvisionalKHR";
-    case CapabilityRayQueryProvisionalKHR:          return "RayQueryProvisionalKHR";
-    case CapabilityRayTraversalPrimitiveCullingProvisionalKHR: return "RayTraversalPrimitiveCullingProvisionalKHR";
+    case CapabilityRayTraversalPrimitiveCullingKHR: return "RayTraversalPrimitiveCullingKHR";
     case CapabilityComputeDerivativeGroupQuadsNV:   return "ComputeDerivativeGroupQuadsNV";
     case CapabilityComputeDerivativeGroupLinearNV:  return "ComputeDerivativeGroupLinearNV";
     case CapabilityFragmentBarycentricNV:           return "FragmentBarycentricNV";
@@ -933,14 +957,21 @@
     case CapabilityFragmentShaderPixelInterlockEXT:         return "CapabilityFragmentShaderPixelInterlockEXT";
     case CapabilityFragmentShaderShadingRateInterlockEXT:   return "CapabilityFragmentShaderShadingRateInterlockEXT";
 
+    case CapabilityFragmentShadingRateKHR:                  return "FragmentShadingRateKHR";
+
     case CapabilityDemoteToHelperInvocationEXT:             return "DemoteToHelperInvocationEXT";
     case CapabilityShaderClockKHR:                          return "ShaderClockKHR";
+    case CapabilityInt64ImageEXT:                           return "Int64ImageEXT";
 
     case CapabilityIntegerFunctions2INTEL:              return "CapabilityIntegerFunctions2INTEL";
 
     case CapabilityAtomicFloat32AddEXT:                     return "AtomicFloat32AddEXT";
     case CapabilityAtomicFloat64AddEXT:                     return "AtomicFloat64AddEXT";
 
+    case CapabilityWorkgroupMemoryExplicitLayoutKHR:            return "CapabilityWorkgroupMemoryExplicitLayoutKHR";
+    case CapabilityWorkgroupMemoryExplicitLayout8BitAccessKHR:  return "CapabilityWorkgroupMemoryExplicitLayout8BitAccessKHR";
+    case CapabilityWorkgroupMemoryExplicitLayout16BitAccessKHR: return "CapabilityWorkgroupMemoryExplicitLayout16BitAccessKHR";
+
     default: return "Bad";
     }
 }
@@ -1272,6 +1303,7 @@
     case 320: return "OpImageSparseRead";
 
     case OpModuleProcessed: return "OpModuleProcessed";
+    case OpExecutionModeId: return "OpExecutionModeId";
     case OpDecorateId:      return "OpDecorateId";
 
     case 333: return "OpGroupNonUniformElect";
@@ -1309,6 +1341,8 @@
     case 365: return "OpGroupNonUniformQuadBroadcast";
     case 366: return "OpGroupNonUniformQuadSwap";
 
+    case OpTerminateInvocation: return "OpTerminateInvocation";
+
     case 4421: return "OpSubgroupBallotKHR";
     case 4422: return "OpSubgroupFirstInvocationKHR";
     case 4428: return "OpSubgroupAllKHR";
@@ -1335,17 +1369,23 @@
     case OpDecorateStringGOOGLE:       return "OpDecorateStringGOOGLE";
     case OpMemberDecorateStringGOOGLE: return "OpMemberDecorateStringGOOGLE";
 
+    case OpReportIntersectionKHR:             return "OpReportIntersectionKHR";
+    case OpIgnoreIntersectionNV:              return "OpIgnoreIntersectionNV";
+    case OpIgnoreIntersectionKHR:             return "OpIgnoreIntersectionKHR";
+    case OpTerminateRayNV:                    return "OpTerminateRayNV";
+    case OpTerminateRayKHR:                   return "OpTerminateRayKHR";
+    case OpTraceNV:                           return "OpTraceNV";
+    case OpTraceRayKHR:                       return "OpTraceRayKHR";
+    case OpTypeAccelerationStructureKHR:      return "OpTypeAccelerationStructureKHR";
+    case OpExecuteCallableNV:                 return "OpExecuteCallableNV";
+    case OpExecuteCallableKHR:                return "OpExecuteCallableKHR";
+    case OpConvertUToAccelerationStructureKHR: return "OpConvertUToAccelerationStructureKHR";
+
     case OpGroupNonUniformPartitionNV:       return "OpGroupNonUniformPartitionNV";
-    case OpReportIntersectionKHR:            return "OpReportIntersectionKHR";
-    case OpIgnoreIntersectionKHR:            return "OpIgnoreIntersectionKHR";
-    case OpTerminateRayKHR:                  return "OpTerminateRayKHR";
-    case OpTraceRayKHR:                      return "OpTraceRayKHR";
-    case OpTypeAccelerationStructureKHR:     return "OpTypeAccelerationStructureKHR";
-    case OpExecuteCallableKHR:               return "OpExecuteCallableKHR";
     case OpImageSampleFootprintNV:           return "OpImageSampleFootprintNV";
     case OpWritePackedPrimitiveIndices4x8NV: return "OpWritePackedPrimitiveIndices4x8NV";
 
-    case OpTypeRayQueryProvisionalKHR:                                        return "OpTypeRayQueryProvisionalKHR";
+    case OpTypeRayQueryKHR:                                                   return "OpTypeRayQueryKHR";
     case OpRayQueryInitializeKHR:                                             return "OpRayQueryInitializeKHR";
     case OpRayQueryTerminateKHR:                                              return "OpRayQueryTerminateKHR";
     case OpRayQueryGenerateIntersectionKHR:                                   return "OpRayQueryGenerateIntersectionKHR";
@@ -1423,6 +1463,7 @@
     InstructionDesc[OpMemoryModel].setResultAndType(false, false);
     InstructionDesc[OpEntryPoint].setResultAndType(false, false);
     InstructionDesc[OpExecutionMode].setResultAndType(false, false);
+    InstructionDesc[OpExecutionModeId].setResultAndType(false, false);
     InstructionDesc[OpTypeVoid].setResultAndType(true, false);
     InstructionDesc[OpTypeBool].setResultAndType(true, false);
     InstructionDesc[OpTypeInt].setResultAndType(true, false);
@@ -1476,6 +1517,7 @@
     InstructionDesc[OpBranchConditional].setResultAndType(false, false);
     InstructionDesc[OpSwitch].setResultAndType(false, false);
     InstructionDesc[OpKill].setResultAndType(false, false);
+    InstructionDesc[OpTerminateInvocation].setResultAndType(false, false);
     InstructionDesc[OpReturn].setResultAndType(false, false);
     InstructionDesc[OpReturnValue].setResultAndType(false, false);
     InstructionDesc[OpUnreachable].setResultAndType(false, false);
@@ -1609,6 +1651,10 @@
     InstructionDesc[OpExecutionMode].operands.push(OperandExecutionMode, "'Mode'");
     InstructionDesc[OpExecutionMode].operands.push(OperandOptionalLiteral, "See <<Execution_Mode,Execution Mode>>");
 
+    InstructionDesc[OpExecutionModeId].operands.push(OperandId, "'Entry Point'");
+    InstructionDesc[OpExecutionModeId].operands.push(OperandExecutionMode, "'Mode'");
+    InstructionDesc[OpExecutionModeId].operands.push(OperandVariableIds, "See <<Execution_Mode,Execution Mode>>");
+
     InstructionDesc[OpTypeInt].operands.push(OperandLiteralNumber, "'Width'");
     InstructionDesc[OpTypeInt].operands.push(OperandLiteralNumber, "'Signedness'");
 
@@ -1702,7 +1748,7 @@
 
     InstructionDesc[OpDecorateStringGOOGLE].operands.push(OperandId, "'Target'");
     InstructionDesc[OpDecorateStringGOOGLE].operands.push(OperandDecoration, "");
-    InstructionDesc[OpDecorateStringGOOGLE].operands.push(OperandLiteralString, "'Literal String'");
+    InstructionDesc[OpDecorateStringGOOGLE].operands.push(OperandVariableLiteralStrings, "'Literal Strings'");
 
     InstructionDesc[OpMemberDecorate].operands.push(OperandId, "'Structure Type'");
     InstructionDesc[OpMemberDecorate].operands.push(OperandLiteralNumber, "'Member'");
@@ -1712,7 +1758,7 @@
     InstructionDesc[OpMemberDecorateStringGOOGLE].operands.push(OperandId, "'Structure Type'");
     InstructionDesc[OpMemberDecorateStringGOOGLE].operands.push(OperandLiteralNumber, "'Member'");
     InstructionDesc[OpMemberDecorateStringGOOGLE].operands.push(OperandDecoration, "");
-    InstructionDesc[OpMemberDecorateStringGOOGLE].operands.push(OperandLiteralString, "'Literal String'");
+    InstructionDesc[OpMemberDecorateStringGOOGLE].operands.push(OperandVariableLiteralStrings, "'Literal Strings'");
 
     InstructionDesc[OpGroupDecorate].operands.push(OperandId, "'Decoration Group'");
     InstructionDesc[OpGroupDecorate].operands.push(OperandVariableIds, "'Targets'");
@@ -2673,7 +2719,7 @@
 
     InstructionDesc[OpGroupNonUniformQuadSwap].operands.push(OperandScope, "'Execution'");
     InstructionDesc[OpGroupNonUniformQuadSwap].operands.push(OperandId, "X");
-    InstructionDesc[OpGroupNonUniformQuadSwap].operands.push(OperandLiteralNumber, "'Direction'");
+    InstructionDesc[OpGroupNonUniformQuadSwap].operands.push(OperandId, "'Direction'");
 
     InstructionDesc[OpSubgroupBallotKHR].operands.push(OperandId, "'Predicate'");
 
@@ -2736,7 +2782,20 @@
 
     InstructionDesc[OpTypeAccelerationStructureKHR].setResultAndType(true, false);
 
-    InstructionDesc[OpTraceRayKHR].operands.push(OperandId, "'NV Acceleration Structure'");
+    InstructionDesc[OpTraceNV].operands.push(OperandId, "'Acceleration Structure'");
+    InstructionDesc[OpTraceNV].operands.push(OperandId, "'Ray Flags'");
+    InstructionDesc[OpTraceNV].operands.push(OperandId, "'Cull Mask'");
+    InstructionDesc[OpTraceNV].operands.push(OperandId, "'SBT Record Offset'");
+    InstructionDesc[OpTraceNV].operands.push(OperandId, "'SBT Record Stride'");
+    InstructionDesc[OpTraceNV].operands.push(OperandId, "'Miss Index'");
+    InstructionDesc[OpTraceNV].operands.push(OperandId, "'Ray Origin'");
+    InstructionDesc[OpTraceNV].operands.push(OperandId, "'TMin'");
+    InstructionDesc[OpTraceNV].operands.push(OperandId, "'Ray Direction'");
+    InstructionDesc[OpTraceNV].operands.push(OperandId, "'TMax'");
+    InstructionDesc[OpTraceNV].operands.push(OperandId, "'Payload'");
+    InstructionDesc[OpTraceNV].setResultAndType(false, false);
+
+    InstructionDesc[OpTraceRayKHR].operands.push(OperandId, "'Acceleration Structure'");
     InstructionDesc[OpTraceRayKHR].operands.push(OperandId, "'Ray Flags'");
     InstructionDesc[OpTraceRayKHR].operands.push(OperandId, "'Cull Mask'");
     InstructionDesc[OpTraceRayKHR].operands.push(OperandId, "'SBT Record Offset'");
@@ -2752,17 +2811,28 @@
     InstructionDesc[OpReportIntersectionKHR].operands.push(OperandId, "'Hit Parameter'");
     InstructionDesc[OpReportIntersectionKHR].operands.push(OperandId, "'Hit Kind'");
 
+    InstructionDesc[OpIgnoreIntersectionNV].setResultAndType(false, false);
+
     InstructionDesc[OpIgnoreIntersectionKHR].setResultAndType(false, false);
 
+    InstructionDesc[OpTerminateRayNV].setResultAndType(false, false);
+
     InstructionDesc[OpTerminateRayKHR].setResultAndType(false, false);
     
+    InstructionDesc[OpExecuteCallableNV].operands.push(OperandId, "SBT Record Index");
+    InstructionDesc[OpExecuteCallableNV].operands.push(OperandId, "CallableData ID");
+    InstructionDesc[OpExecuteCallableNV].setResultAndType(false, false);
+
     InstructionDesc[OpExecuteCallableKHR].operands.push(OperandId, "SBT Record Index");
-    InstructionDesc[OpExecuteCallableKHR].operands.push(OperandId, "CallableData ID");
+    InstructionDesc[OpExecuteCallableKHR].operands.push(OperandId, "CallableData");
     InstructionDesc[OpExecuteCallableKHR].setResultAndType(false, false);
 
+    InstructionDesc[OpConvertUToAccelerationStructureKHR].operands.push(OperandId, "Value");
+    InstructionDesc[OpConvertUToAccelerationStructureKHR].setResultAndType(true, true);
+
     // Ray Query
     InstructionDesc[OpTypeAccelerationStructureKHR].setResultAndType(true, false);
-    InstructionDesc[OpTypeRayQueryProvisionalKHR].setResultAndType(true, false);
+    InstructionDesc[OpTypeRayQueryKHR].setResultAndType(true, false);
 
     InstructionDesc[OpRayQueryInitializeKHR].operands.push(OperandId, "'RayQuery'");
     InstructionDesc[OpRayQueryInitializeKHR].operands.push(OperandId, "'AccelerationS'");
diff --git a/SPIRV/doc.h b/SPIRV/doc.h
index 293256a..2a0b28c 100644
--- a/SPIRV/doc.h
+++ b/SPIRV/doc.h
@@ -125,6 +125,7 @@
     OperandVariableLiteralId,
     OperandLiteralNumber,
     OperandLiteralString,
+    OperandVariableLiteralStrings,
     OperandSource,
     OperandExecutionModel,
     OperandAddressing,
diff --git a/SPIRV/spirv.hpp b/SPIRV/spirv.hpp
index 35482ea..af629ef 100644
--- a/SPIRV/spirv.hpp
+++ b/SPIRV/spirv.hpp
@@ -50,11 +50,11 @@
 typedef unsigned int Id;
 
 #define SPV_VERSION 0x10500
-#define SPV_REVISION 3
+#define SPV_REVISION 4
 
 static const unsigned int MagicNumber = 0x07230203;
 static const unsigned int Version = 0x00010500;
-static const unsigned int Revision = 3;
+static const unsigned int Revision = 4;
 static const unsigned int OpCodeMask = 0xffff;
 static const unsigned int WordCountShift = 16;
 
@@ -168,10 +168,16 @@
     ExecutionModeSampleInterlockUnorderedEXT = 5369,
     ExecutionModeShadingRateInterlockOrderedEXT = 5370,
     ExecutionModeShadingRateInterlockUnorderedEXT = 5371,
+    ExecutionModeSharedLocalMemorySizeINTEL = 5618,
+    ExecutionModeRoundingModeRTPINTEL = 5620,
+    ExecutionModeRoundingModeRTNINTEL = 5621,
+    ExecutionModeFloatingPointModeALTINTEL = 5622,
+    ExecutionModeFloatingPointModeIEEEINTEL = 5623,
     ExecutionModeMaxWorkgroupSizeINTEL = 5893,
     ExecutionModeMaxWorkDimINTEL = 5894,
     ExecutionModeNoGlobalOffsetINTEL = 5895,
     ExecutionModeNumSIMDWorkitemsINTEL = 5896,
+    ExecutionModeSchedulerTargetFmaxMhzINTEL = 5903,
     ExecutionModeMax = 0x7fffffff,
 };
 
@@ -204,6 +210,8 @@
     StorageClassPhysicalStorageBuffer = 5349,
     StorageClassPhysicalStorageBufferEXT = 5349,
     StorageClassCodeSectionINTEL = 5605,
+    StorageClassDeviceOnlyINTEL = 5936,
+    StorageClassHostOnlyINTEL = 5937,
     StorageClassMax = 0x7fffffff,
 };
 
@@ -274,6 +282,8 @@
     ImageFormatRg8ui = 37,
     ImageFormatR16ui = 38,
     ImageFormatR8ui = 39,
+    ImageFormatR64ui = 40,
+    ImageFormatR64i = 41,
     ImageFormatMax = 0x7fffffff,
 };
 
@@ -372,6 +382,8 @@
     FPFastMathModeNSZShift = 2,
     FPFastMathModeAllowRecipShift = 3,
     FPFastMathModeFastShift = 4,
+    FPFastMathModeAllowContractFastINTELShift = 16,
+    FPFastMathModeAllowReassocINTELShift = 17,
     FPFastMathModeMax = 0x7fffffff,
 };
 
@@ -382,6 +394,8 @@
     FPFastMathModeNSZMask = 0x00000004,
     FPFastMathModeAllowRecipMask = 0x00000008,
     FPFastMathModeFastMask = 0x00000010,
+    FPFastMathModeAllowContractFastINTELMask = 0x00010000,
+    FPFastMathModeAllowReassocINTELMask = 0x00020000,
 };
 
 enum FPRoundingMode {
@@ -482,12 +496,22 @@
     DecorationRestrictPointerEXT = 5355,
     DecorationAliasedPointer = 5356,
     DecorationAliasedPointerEXT = 5356,
+    DecorationSIMTCallINTEL = 5599,
     DecorationReferencedIndirectlyINTEL = 5602,
+    DecorationClobberINTEL = 5607,
+    DecorationSideEffectsINTEL = 5608,
+    DecorationVectorComputeVariableINTEL = 5624,
+    DecorationFuncParamIOKindINTEL = 5625,
+    DecorationVectorComputeFunctionINTEL = 5626,
+    DecorationStackCallINTEL = 5627,
+    DecorationGlobalVariableOffsetINTEL = 5628,
     DecorationCounterBuffer = 5634,
     DecorationHlslCounterBufferGOOGLE = 5634,
     DecorationHlslSemanticGOOGLE = 5635,
     DecorationUserSemantic = 5635,
     DecorationUserTypeGOOGLE = 5636,
+    DecorationFunctionRoundingModeINTEL = 5822,
+    DecorationFunctionDenormModeINTEL = 5823,
     DecorationRegisterINTEL = 5825,
     DecorationMemoryINTEL = 5826,
     DecorationNumbanksINTEL = 5827,
@@ -500,6 +524,17 @@
     DecorationMergeINTEL = 5834,
     DecorationBankBitsINTEL = 5835,
     DecorationForcePow2DepthINTEL = 5836,
+    DecorationBurstCoalesceINTEL = 5899,
+    DecorationCacheSizeINTEL = 5900,
+    DecorationDontStaticallyCoalesceINTEL = 5901,
+    DecorationPrefetchINTEL = 5902,
+    DecorationStallEnableINTEL = 5905,
+    DecorationFuseLoopsInFunctionINTEL = 5907,
+    DecorationBufferLocationINTEL = 5921,
+    DecorationIOPipeStorageINTEL = 5944,
+    DecorationFunctionFloatingPointModeINTEL = 6080,
+    DecorationSingleElementVectorINTEL = 6085,
+    DecorationVectorComputeCallableFunctionINTEL = 6087,
     DecorationMax = 0x7fffffff,
 };
 
@@ -558,8 +593,10 @@
     BuiltInBaseVertex = 4424,
     BuiltInBaseInstance = 4425,
     BuiltInDrawIndex = 4426,
+    BuiltInPrimitiveShadingRateKHR = 4432,
     BuiltInDeviceIndex = 4438,
     BuiltInViewIndex = 4440,
+    BuiltInShadingRateKHR = 4444,
     BuiltInBaryCoordNoPerspAMD = 4992,
     BuiltInBaryCoordNoPerspCentroidAMD = 4993,
     BuiltInBaryCoordNoPerspSampleAMD = 4994,
@@ -610,7 +647,6 @@
     BuiltInObjectToWorldNV = 5330,
     BuiltInWorldToObjectKHR = 5331,
     BuiltInWorldToObjectNV = 5331,
-    BuiltInHitTKHR = 5332,
     BuiltInHitTNV = 5332,
     BuiltInHitKindKHR = 5333,
     BuiltInHitKindNV = 5333,
@@ -653,6 +689,7 @@
     LoopControlLoopCoalesceINTELShift = 20,
     LoopControlMaxInterleavingINTELShift = 21,
     LoopControlSpeculatedIterationsINTELShift = 22,
+    LoopControlNoFusionINTELShift = 23,
     LoopControlMax = 0x7fffffff,
 };
 
@@ -674,6 +711,7 @@
     LoopControlLoopCoalesceINTELMask = 0x00100000,
     LoopControlMaxInterleavingINTELMask = 0x00200000,
     LoopControlSpeculatedIterationsINTELMask = 0x00400000,
+    LoopControlNoFusionINTELMask = 0x00800000,
 };
 
 enum FunctionControlShift {
@@ -870,8 +908,12 @@
     CapabilityGroupNonUniformQuad = 68,
     CapabilityShaderLayer = 69,
     CapabilityShaderViewportIndex = 70,
+    CapabilityFragmentShadingRateKHR = 4422,
     CapabilitySubgroupBallotKHR = 4423,
     CapabilityDrawParameters = 4427,
+    CapabilityWorkgroupMemoryExplicitLayoutKHR = 4428,
+    CapabilityWorkgroupMemoryExplicitLayout8BitAccessKHR = 4429,
+    CapabilityWorkgroupMemoryExplicitLayout16BitAccessKHR = 4430,
     CapabilitySubgroupVoteKHR = 4431,
     CapabilityStorageBuffer16BitAccess = 4433,
     CapabilityStorageUniformBufferBlock16 = 4433,
@@ -894,12 +936,15 @@
     CapabilityRoundingModeRTE = 4467,
     CapabilityRoundingModeRTZ = 4468,
     CapabilityRayQueryProvisionalKHR = 4471,
-    CapabilityRayTraversalPrimitiveCullingProvisionalKHR = 4478,
+    CapabilityRayQueryKHR = 4472,
+    CapabilityRayTraversalPrimitiveCullingKHR = 4478,
+    CapabilityRayTracingKHR = 4479,
     CapabilityFloat16ImageAMD = 5008,
     CapabilityImageGatherBiasLodAMD = 5009,
     CapabilityFragmentMaskAMD = 5010,
     CapabilityStencilExportEXT = 5013,
     CapabilityImageReadWriteLodAMD = 5015,
+    CapabilityInt64ImageEXT = 5016,
     CapabilityShaderClockKHR = 5055,
     CapabilitySampleMaskOverrideCoverageNV = 5249,
     CapabilityGeometryShaderPassthroughNV = 5251,
@@ -959,21 +1004,37 @@
     CapabilitySubgroupBufferBlockIOINTEL = 5569,
     CapabilitySubgroupImageBlockIOINTEL = 5570,
     CapabilitySubgroupImageMediaBlockIOINTEL = 5579,
+    CapabilityRoundToInfinityINTEL = 5582,
+    CapabilityFloatingPointModeINTEL = 5583,
     CapabilityIntegerFunctions2INTEL = 5584,
     CapabilityFunctionPointersINTEL = 5603,
     CapabilityIndirectReferencesINTEL = 5604,
+    CapabilityAsmINTEL = 5606,
+    CapabilityVectorComputeINTEL = 5617,
+    CapabilityVectorAnyINTEL = 5619,
     CapabilitySubgroupAvcMotionEstimationINTEL = 5696,
     CapabilitySubgroupAvcMotionEstimationIntraINTEL = 5697,
     CapabilitySubgroupAvcMotionEstimationChromaINTEL = 5698,
+    CapabilityVariableLengthArrayINTEL = 5817,
+    CapabilityFunctionFloatControlINTEL = 5821,
     CapabilityFPGAMemoryAttributesINTEL = 5824,
+    CapabilityFPFastMathModeINTEL = 5837,
+    CapabilityArbitraryPrecisionIntegersINTEL = 5844,
     CapabilityUnstructuredLoopControlsINTEL = 5886,
     CapabilityFPGALoopControlsINTEL = 5888,
     CapabilityKernelAttributesINTEL = 5892,
     CapabilityFPGAKernelAttributesINTEL = 5897,
+    CapabilityFPGAMemoryAccessesINTEL = 5898,
+    CapabilityFPGAClusterAttributesINTEL = 5904,
+    CapabilityLoopFuseINTEL = 5906,
+    CapabilityFPGABufferLocationINTEL = 5920,
+    CapabilityUSMStorageClassesINTEL = 5935,
+    CapabilityIOPipesINTEL = 5943,
     CapabilityBlockingPipesINTEL = 5945,
     CapabilityFPGARegINTEL = 5948,
     CapabilityAtomicFloat32AddEXT = 6033,
     CapabilityAtomicFloat64AddEXT = 6034,
+    CapabilityLongConstantCompositeINTEL = 6089,
     CapabilityMax = 0x7fffffff,
 };
 
@@ -1024,6 +1085,34 @@
     RayQueryCandidateIntersectionTypeMax = 0x7fffffff,
 };
 
+enum FragmentShadingRateShift {
+    FragmentShadingRateVertical2PixelsShift = 0,
+    FragmentShadingRateVertical4PixelsShift = 1,
+    FragmentShadingRateHorizontal2PixelsShift = 2,
+    FragmentShadingRateHorizontal4PixelsShift = 3,
+    FragmentShadingRateMax = 0x7fffffff,
+};
+
+enum FragmentShadingRateMask {
+    FragmentShadingRateMaskNone = 0,
+    FragmentShadingRateVertical2PixelsMask = 0x00000001,
+    FragmentShadingRateVertical4PixelsMask = 0x00000002,
+    FragmentShadingRateHorizontal2PixelsMask = 0x00000004,
+    FragmentShadingRateHorizontal4PixelsMask = 0x00000008,
+};
+
+enum FPDenormMode {
+  FPDenormModePreserve = 0,
+  FPDenormModeFlushToZero = 1,
+  FPDenormModeMax = 0x7fffffff,
+};
+
+enum FPOperationMode {
+  FPOperationModeIEEE = 0,
+  FPOperationModeALT = 1,
+  FPOperationModeMax = 0x7fffffff,
+};
+
 enum Op {
     OpNop = 0,
     OpUndef = 1,
@@ -1369,13 +1458,19 @@
     OpPtrEqual = 401,
     OpPtrNotEqual = 402,
     OpPtrDiff = 403,
+    OpTerminateInvocation = 4416,
     OpSubgroupBallotKHR = 4421,
     OpSubgroupFirstInvocationKHR = 4422,
     OpSubgroupAllKHR = 4428,
     OpSubgroupAnyKHR = 4429,
     OpSubgroupAllEqualKHR = 4430,
     OpSubgroupReadInvocationKHR = 4432,
-    OpTypeRayQueryProvisionalKHR = 4472,
+    OpTraceRayKHR = 4445,
+    OpExecuteCallableKHR = 4446,
+    OpConvertUToAccelerationStructureKHR = 4447,
+    OpIgnoreIntersectionKHR = 4448,
+    OpTerminateRayKHR = 4449,
+    OpTypeRayQueryKHR = 4472,
     OpRayQueryInitializeKHR = 4473,
     OpRayQueryTerminateKHR = 4474,
     OpRayQueryGenerateIntersectionKHR = 4475,
@@ -1398,15 +1493,11 @@
     OpWritePackedPrimitiveIndices4x8NV = 5299,
     OpReportIntersectionKHR = 5334,
     OpReportIntersectionNV = 5334,
-    OpIgnoreIntersectionKHR = 5335,
     OpIgnoreIntersectionNV = 5335,
-    OpTerminateRayKHR = 5336,
     OpTerminateRayNV = 5336,
     OpTraceNV = 5337,
-    OpTraceRayKHR = 5337,
     OpTypeAccelerationStructureKHR = 5341,
     OpTypeAccelerationStructureNV = 5341,
-    OpExecuteCallableKHR = 5344,
     OpExecuteCallableNV = 5344,
     OpTypeCooperativeMatrixNV = 5358,
     OpCooperativeMatrixLoadNV = 5359,
@@ -1441,8 +1532,11 @@
     OpUSubSatINTEL = 5596,
     OpIMul32x16INTEL = 5597,
     OpUMul32x16INTEL = 5598,
-    OpFunctionPointerINTEL = 5600,
+    OpConstFunctionPointerINTEL = 5600,
     OpFunctionPointerCallINTEL = 5601,
+    OpAsmTargetINTEL = 5609,
+    OpAsmINTEL = 5610,
+    OpAsmCallINTEL = 5611,
     OpDecorateString = 5632,
     OpDecorateStringGOOGLE = 5632,
     OpMemberDecorateString = 5633,
@@ -1565,7 +1659,12 @@
     OpSubgroupAvcSicGetPackedSkcLumaCountThresholdINTEL = 5814,
     OpSubgroupAvcSicGetPackedSkcLumaSumThresholdINTEL = 5815,
     OpSubgroupAvcSicGetInterRawSadsINTEL = 5816,
+    OpVariableLengthArrayINTEL = 5818,
+    OpSaveMemoryINTEL = 5819,
+    OpRestoreMemoryINTEL = 5820,
     OpLoopControlINTEL = 5887,
+    OpPtrCastToCrossWorkgroupINTEL = 5934,
+    OpCrossWorkgroupCastToPtrINTEL = 5938,
     OpReadPipeBlockingINTEL = 5946,
     OpWritePipeBlockingINTEL = 5947,
     OpFPGARegINTEL = 5949,
@@ -1587,6 +1686,10 @@
     OpRayQueryGetIntersectionObjectToWorldKHR = 6031,
     OpRayQueryGetIntersectionWorldToObjectKHR = 6032,
     OpAtomicFAddEXT = 6035,
+    OpTypeBufferSurfaceINTEL = 6086,
+    OpTypeStructContinuedINTEL = 6090,
+    OpConstantCompositeContinuedINTEL = 6091,
+    OpSpecConstantCompositeContinuedINTEL = 6092,
     OpMax = 0x7fffffff,
 };
 
@@ -1939,13 +2042,19 @@
     case OpPtrEqual: *hasResult = true; *hasResultType = true; break;
     case OpPtrNotEqual: *hasResult = true; *hasResultType = true; break;
     case OpPtrDiff: *hasResult = true; *hasResultType = true; break;
+    case OpTerminateInvocation: *hasResult = false; *hasResultType = false; break;
     case OpSubgroupBallotKHR: *hasResult = true; *hasResultType = true; break;
     case OpSubgroupFirstInvocationKHR: *hasResult = true; *hasResultType = true; break;
     case OpSubgroupAllKHR: *hasResult = true; *hasResultType = true; break;
     case OpSubgroupAnyKHR: *hasResult = true; *hasResultType = true; break;
     case OpSubgroupAllEqualKHR: *hasResult = true; *hasResultType = true; break;
     case OpSubgroupReadInvocationKHR: *hasResult = true; *hasResultType = true; break;
-    case OpTypeRayQueryProvisionalKHR: *hasResult = true; *hasResultType = false; break;
+    case OpTraceRayKHR: *hasResult = false; *hasResultType = false; break;
+    case OpExecuteCallableKHR: *hasResult = false; *hasResultType = false; break;
+    case OpConvertUToAccelerationStructureKHR: *hasResult = true; *hasResultType = true; break;
+    case OpIgnoreIntersectionKHR: *hasResult = false; *hasResultType = false; break;
+    case OpTerminateRayKHR: *hasResult = false; *hasResultType = false; break;
+    case OpTypeRayQueryKHR: *hasResult = true; *hasResultType = false; break;
     case OpRayQueryInitializeKHR: *hasResult = false; *hasResultType = false; break;
     case OpRayQueryTerminateKHR: *hasResult = false; *hasResultType = false; break;
     case OpRayQueryGenerateIntersectionKHR: *hasResult = false; *hasResultType = false; break;
@@ -2005,8 +2114,11 @@
     case OpUSubSatINTEL: *hasResult = true; *hasResultType = true; break;
     case OpIMul32x16INTEL: *hasResult = true; *hasResultType = true; break;
     case OpUMul32x16INTEL: *hasResult = true; *hasResultType = true; break;
-    case OpFunctionPointerINTEL: *hasResult = true; *hasResultType = true; break;
+    case OpConstFunctionPointerINTEL: *hasResult = true; *hasResultType = true; break;
     case OpFunctionPointerCallINTEL: *hasResult = true; *hasResultType = true; break;
+    case OpAsmTargetINTEL: *hasResult = true; *hasResultType = true; break;
+    case OpAsmINTEL: *hasResult = true; *hasResultType = true; break;
+    case OpAsmCallINTEL: *hasResult = true; *hasResultType = true; break;
     case OpDecorateString: *hasResult = false; *hasResultType = false; break;
     case OpMemberDecorateString: *hasResult = false; *hasResultType = false; break;
     case OpVmeImageINTEL: *hasResult = true; *hasResultType = true; break;
@@ -2127,7 +2239,12 @@
     case OpSubgroupAvcSicGetPackedSkcLumaCountThresholdINTEL: *hasResult = true; *hasResultType = true; break;
     case OpSubgroupAvcSicGetPackedSkcLumaSumThresholdINTEL: *hasResult = true; *hasResultType = true; break;
     case OpSubgroupAvcSicGetInterRawSadsINTEL: *hasResult = true; *hasResultType = true; break;
+    case OpVariableLengthArrayINTEL: *hasResult = true; *hasResultType = true; break;
+    case OpSaveMemoryINTEL: *hasResult = true; *hasResultType = true; break;
+    case OpRestoreMemoryINTEL: *hasResult = false; *hasResultType = false; break;
     case OpLoopControlINTEL: *hasResult = false; *hasResultType = false; break;
+    case OpPtrCastToCrossWorkgroupINTEL: *hasResult = true; *hasResultType = true; break;
+    case OpCrossWorkgroupCastToPtrINTEL: *hasResult = true; *hasResultType = true; break;
     case OpReadPipeBlockingINTEL: *hasResult = true; *hasResultType = true; break;
     case OpWritePipeBlockingINTEL: *hasResult = true; *hasResultType = true; break;
     case OpFPGARegINTEL: *hasResult = true; *hasResultType = true; break;
@@ -2149,6 +2266,10 @@
     case OpRayQueryGetIntersectionObjectToWorldKHR: *hasResult = true; *hasResultType = true; break;
     case OpRayQueryGetIntersectionWorldToObjectKHR: *hasResult = true; *hasResultType = true; break;
     case OpAtomicFAddEXT: *hasResult = true; *hasResultType = true; break;
+    case OpTypeBufferSurfaceINTEL: *hasResult = true; *hasResultType = false; break;
+    case OpTypeStructContinuedINTEL: *hasResult = false; *hasResultType = false; break;
+    case OpConstantCompositeContinuedINTEL: *hasResult = false; *hasResultType = false; break;
+    case OpSpecConstantCompositeContinuedINTEL: *hasResult = false; *hasResultType = false; break;
     }
 }
 #endif /* SPV_ENABLE_UTILITY_CODE */
@@ -2164,6 +2285,7 @@
 inline MemoryAccessMask operator|(MemoryAccessMask a, MemoryAccessMask b) { return MemoryAccessMask(unsigned(a) | unsigned(b)); }
 inline KernelProfilingInfoMask operator|(KernelProfilingInfoMask a, KernelProfilingInfoMask b) { return KernelProfilingInfoMask(unsigned(a) | unsigned(b)); }
 inline RayFlagsMask operator|(RayFlagsMask a, RayFlagsMask b) { return RayFlagsMask(unsigned(a) | unsigned(b)); }
+inline FragmentShadingRateMask operator|(FragmentShadingRateMask a, FragmentShadingRateMask b) { return FragmentShadingRateMask(unsigned(a) | unsigned(b)); }
 
 }  // end namespace spv
 
diff --git a/SPIRV/spvIR.h b/SPIRV/spvIR.h
old mode 100755
new mode 100644
index 868b9bf..486e80d
--- a/SPIRV/spvIR.h
+++ b/SPIRV/spvIR.h
@@ -263,6 +263,7 @@
         case OpBranchConditional:
         case OpSwitch:
         case OpKill:
+        case OpTerminateInvocation:
         case OpReturn:
         case OpReturnValue:
         case OpUnreachable:
diff --git a/StandAlone/CMakeLists.txt b/StandAlone/CMakeLists.txt
index 8038c04..751d1cd 100644
--- a/StandAlone/CMakeLists.txt
+++ b/StandAlone/CMakeLists.txt
@@ -41,7 +41,6 @@
                            PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
                            PUBLIC $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}>)
 
-
 set(SOURCES StandAlone.cpp DirStackFileIncluder.h)
 
 add_executable(glslangValidator ${SOURCES})
@@ -70,6 +69,12 @@
     $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/../External>
     $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/External>)
 
+if(ENABLE_OPT)
+    target_include_directories(glslangValidator
+        PRIVATE ${spirv-tools_SOURCE_DIR}/include
+    )
+endif(ENABLE_OPT)
+
 if(ENABLE_SPVREMAPPER)
     set(REMAPPER_SOURCES spirv-remap.cpp)
     add_executable(spirv-remap ${REMAPPER_SOURCES})
@@ -95,7 +100,12 @@
 
     if(BUILD_SHARED_LIBS)
         install(TARGETS glslang-default-resource-limits EXPORT glslang-default-resource-limitsTargets
-                LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
-        install(EXPORT glslang-default-resource-limitsTargets DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake)
+                ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
+                LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
+                RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
+    else()
+        install(TARGETS glslang-default-resource-limits EXPORT glslang-default-resource-limitsTargets
+                ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
     endif()
+    install(EXPORT glslang-default-resource-limitsTargets DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake)
 endif(ENABLE_GLSLANG_INSTALL)
diff --git a/StandAlone/StandAlone.cpp b/StandAlone/StandAlone.cpp
index 8836812..923ded3 100644
--- a/StandAlone/StandAlone.cpp
+++ b/StandAlone/StandAlone.cpp
@@ -110,6 +110,7 @@
 bool NaNClamp = false;
 bool stripDebugInfo = false;
 bool beQuiet = false;
+bool VulkanRulesRelaxed = false;
 
 //
 // Return codes from main/exit().
@@ -195,6 +196,17 @@
 std::array<std::array<TPerSetBaseBinding, EShLangCount>, glslang::EResCount> baseBindingForSet;
 std::array<std::vector<std::string>, EShLangCount> baseResourceSetBinding;
 
+std::vector<std::pair<std::string, glslang::TBlockStorageClass>> blockStorageOverrides;
+
+bool setGlobalUniformBlock = false;
+std::string globalUniformName;
+unsigned int globalUniformBinding;
+unsigned int globalUniformSet;
+
+bool setGlobalBufferBlock = false;
+std::string atomicCounterBlockName;
+unsigned int atomicCounterBlockSet;
+
 // Add things like "#define ..." to a preamble to use in the beginning of the shader.
 class TPreamble {
 public:
@@ -397,6 +409,115 @@
 }
 
 //
+// Process an optional binding base of one the forms:
+//   --argname name {uniform|buffer|push_constant}
+void ProcessBlockStorage(int& argc, char**& argv, std::vector<std::pair<std::string, glslang::TBlockStorageClass>>& storage)
+{
+    if (argc < 3)
+        usage();
+
+    glslang::TBlockStorageClass blockStorage = glslang::EbsNone;
+
+    std::string strBacking(argv[2]);
+    if (strBacking == "uniform")
+        blockStorage = glslang::EbsUniform;
+    else if (strBacking == "buffer")
+        blockStorage = glslang::EbsStorageBuffer;
+    else if (strBacking == "push_constant")
+        blockStorage = glslang::EbsPushConstant;
+    else {
+        printf("%s: invalid block storage\n", strBacking.c_str());
+        usage();
+    }
+
+    storage.push_back(std::make_pair(std::string(argv[1]), blockStorage));
+
+    argc -= 2;
+    argv += 2;
+}
+
+inline bool isNonDigit(char c) {
+    // a non-digit character valid in a glsl identifier
+    return (c == '_') || (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z');
+}
+
+// whether string isa  valid identifier to be used in glsl
+bool isValidIdentifier(const char* str) {
+    std::string idn(str);
+
+    if (idn.length() == 0) {
+        return false;
+    }
+
+    if (idn.length() >= 3 && idn.substr(0, 3) == "gl_") {
+        // identifiers startin with "gl_" are reserved
+        return false;
+    }
+
+    if (!isNonDigit(idn[0])) {
+        return false;
+    }
+
+    for (unsigned int i = 1; i < idn.length(); ++i) {
+        if (!(isdigit(idn[i]) || isNonDigit(idn[i]))) {
+            return false;
+        }
+    }
+
+    return true;
+}
+
+// Process settings for either the global buffer block or global unfirom block
+// of the form:
+//      --argname name set binding
+void ProcessGlobalBlockSettings(int& argc, char**& argv, std::string* name, unsigned int* set, unsigned int* binding)
+{
+    if (argc < 4)
+        usage();
+
+    unsigned int curArg = 1;
+
+    assert(name || set || binding);
+
+    if (name) {
+        if (!isValidIdentifier(argv[curArg])) {
+            printf("%s: invalid identifier\n", argv[curArg]);
+            usage();
+        }
+        *name = argv[curArg];
+
+        curArg++;
+    }
+
+    if (set) {
+        errno = 0;
+        int setVal = ::strtol(argv[curArg], NULL, 10);
+        if (errno || setVal < 0) {
+            printf("%s: invalid set\n", argv[curArg]);
+            usage();
+        }
+        *set = setVal;
+
+        curArg++;
+    }
+
+    if (binding) {
+        errno = 0;
+        int bindingVal = ::strtol(argv[curArg], NULL, 10);
+        if (errno || bindingVal < 0) {
+            printf("%s: invalid binding\n", argv[curArg]);
+            usage();
+        }
+        *binding = bindingVal;
+
+        curArg++;
+    }
+
+    argc -= (curArg - 1);
+    argv += (curArg - 1);
+}
+
+//
 // Do all command-line argument parsing.  This includes building up the work-items
 // to be processed later, and saving all the command-line options.
 //
@@ -569,6 +690,17 @@
                                lowerword == "resource-set-binding"  ||
                                lowerword == "rsb") {
                         ProcessResourceSetBindingBase(argc, argv, baseResourceSetBinding);
+                    } else if (lowerword == "set-block-storage" ||
+                               lowerword == "sbs") {
+                        ProcessBlockStorage(argc, argv, blockStorageOverrides);
+                    } else if (lowerword == "set-atomic-counter-block" ||
+                               lowerword == "sacb") {
+                        ProcessGlobalBlockSettings(argc, argv, &atomicCounterBlockName, &atomicCounterBlockSet, nullptr);
+                        setGlobalBufferBlock = true;
+                    } else if (lowerword == "set-default-uniform-block" ||
+                               lowerword == "sdub") {
+                        ProcessGlobalBlockSettings(argc, argv, &globalUniformName, &globalUniformSet, &globalUniformBinding);
+                        setGlobalUniformBlock = true;
                     } else if (lowerword == "shift-image-bindings" ||  // synonyms
                                lowerword == "shift-image-binding"  ||
                                lowerword == "sib") {
@@ -696,6 +828,8 @@
                 setOpenGlSpv();
                 if (argv[0][2] != 0)
                     ClientInputSemanticsVersion = getAttachedNumber("-G<num> client input semantics");
+                if (ClientInputSemanticsVersion != 100)
+                    Error("unknown client version for -G, should be 100");
                 break;
             case 'H':
                 Options |= EOptionHumanReadableSpv;
@@ -719,6 +853,9 @@
                 else
                     Error("unknown -O option");
                 break;
+            case 'R':
+                VulkanRulesRelaxed = true;
+                break;
             case 'S':
                 if (argc <= 1)
                     Error("no <stage> specified for -S");
@@ -732,6 +869,8 @@
                 setVulkanSpv();
                 if (argv[0][2] != 0)
                     ClientInputSemanticsVersion = getAttachedNumber("-V<num> client input semantics");
+                if (ClientInputSemanticsVersion != 100)
+                    Error("unknown client version for -V, should be 100");
                 break;
             case 'c':
                 Options |= EOptionDumpConfig;
@@ -840,6 +979,10 @@
         (Options & EOptionReadHlsl) == 0)
         Error("uniform array flattening only valid when compiling HLSL source.");
 
+    if ((Options & EOptionReadHlsl) && (Client == glslang::EShClientOpenGL)) {
+        Error("Using HLSL input under OpenGL semantics is not currently supported.");
+    }
+
     // rationalize client and target language
     if (TargetLanguage == glslang::EShTargetNone) {
         switch (ClientVersion) {
@@ -1060,6 +1203,24 @@
         shader->setUniformLocationBase(uniformBase);
 #endif
 
+        if (VulkanRulesRelaxed) {
+            for (auto& storageOverride : blockStorageOverrides) {
+                shader->addBlockStorageOverride(storageOverride.first.c_str(),
+                    storageOverride.second);
+            }
+
+            if (setGlobalBufferBlock) {
+                shader->setAtomicCounterBlockName(atomicCounterBlockName.c_str());
+                shader->setAtomicCounterBlockSet(atomicCounterBlockSet);
+            }
+
+            if (setGlobalUniformBlock) {
+                shader->setGlobalUniformBlockName(globalUniformName.c_str());
+                shader->setGlobalUniformSet(globalUniformSet);
+                shader->setGlobalUniformBinding(globalUniformBinding);
+            }
+        }
+
         shader->setNanMinMaxClamp(NaNClamp);
 
 #ifdef ENABLE_HLSL
@@ -1083,6 +1244,8 @@
             if (targetHlslFunctionality1)
                 shader->setEnvTargetHlslFunctionality1();
 #endif
+            if (VulkanRulesRelaxed)
+                shader->setEnvInputVulkanRulesRelaxed();
         }
 
         shaders.push_back(shader);
@@ -1557,12 +1720,16 @@
            "              'ver', when present, is the version of the input semantics,\n"
            "              which will appear in #define GL_SPIRV ver;\n"
            "              '--client opengl100' is the same as -G100;\n"
-           "              a '--target-env' for OpenGL will also imply '-G'\n"
+           "              a '--target-env' for OpenGL will also imply '-G';\n"
+           "              currently only supports GLSL\n"
            "  -H          print human readable form of SPIR-V; turns on -V\n"
            "  -I<dir>     add dir to the include search path; includer's directory\n"
            "              is searched first, followed by left-to-right order of -I\n"
            "  -Od         disables optimization; may cause illegal SPIR-V for HLSL\n"
            "  -Os         optimizes SPIR-V to minimize size\n"
+           "  -R          use relaxed verification rules for generating Vulkan SPIR-V,\n"
+           "              allowing the use of default uniforms, atomic_uints, and\n"
+           "              gl_VertexID and gl_InstanceID keywords.\n"
            "  -S <stage>  uses specified stage rather than parsing the file extension\n"
            "              choices for <stage> are vert, tesc, tese, geom, frag, or comp\n"
            "  -U<name> | --undef-macro <name> | --U <name>\n"
@@ -1640,6 +1807,22 @@
            "  --resource-set-binding [stage] set\n"
            "                                    set descriptor set for all resources\n"
            "  --rsb                             synonym for --resource-set-binding\n"
+           "  --set-block-backing name {uniform|buffer|push_constant}\n"
+           "                                    changes the backing type of a uniform, buffer,\n"
+           "                                    or push_constant block declared in\n"
+           "                                    in the program, when using -R option.\n"
+           "                                    This can be used to change the backing\n"
+           "                                    for existing blocks as well as implicit ones\n"
+           "                                    such as 'gl_DefaultUniformBlock'.\n"
+           "  --sbs                             synonym for set-block-storage\n"
+           "  --set-atomic-counter-block name set\n"
+           "                                    set name, and descriptor set for\n"
+           "                                    atomic counter blocks, with -R opt\n"
+           "  --sacb                            synonym for set-atomic-counter-block\n"
+           "  --set-default-uniform-block name set binding\n"
+           "                                    set name, descriptor set, and binding for\n"
+           "                                    global default-uniform-block, with -R opt\n"
+           "  --sdub                            synonym for set-default-uniform-block\n"
            "  --shift-image-binding [stage] num\n"
            "                                    base binding number for images (uav)\n"
            "  --shift-image-binding [stage] [num set]...\n"
diff --git a/Test/100scope.vert b/Test/100scope.vert
index b0a72d1..6643730 100644
--- a/Test/100scope.vert
+++ b/Test/100scope.vert
@@ -2,7 +2,7 @@
 
 int f(int a, int b, int c)
 {
-	int a = b;  // ERROR, redefinition
+	int a = b;
 
     {
 		float a = float(a) + 1.0;
diff --git a/Test/310.frag b/Test/310.frag
old mode 100755
new mode 100644
diff --git a/Test/420.vert b/Test/420.vert
index c7ffa90..cfae71f 100644
--- a/Test/420.vert
+++ b/Test/420.vert
@@ -159,3 +159,4 @@
 }
 
 layout(binding=0) writeonly uniform image1D badArray[];
+layout(binding = 74) uniform sampler2D u_sampler0[6];
diff --git a/Test/440.frag b/Test/440.frag
index 4eb1a3f..a3ec89d 100644
--- a/Test/440.frag
+++ b/Test/440.frag
@@ -151,3 +151,18 @@
 {
     return gl_Layer;
 }
+
+// The std140 layout qualifier should NOT propagate all the way down to
+// the vec3. It is unnecessary and it breaks downstream AST consumers,
+// notably LunarGlass.
+
+struct PointLight_t
+{
+    vec3 vPositionWs ;
+} ;
+
+layout( std140, row_major ) uniform PerViewLightData_t
+{
+
+    PointLight_t g_pointLightData [ 128 ] ;
+} ;
diff --git a/Test/450.frag b/Test/450.frag
index 076d0b3..abab34d 100644
--- a/Test/450.frag
+++ b/Test/450.frag
@@ -48,6 +48,31 @@
     float f = imageAtomicExchange(i2dmsa, ivec3(in3), 2, 4.5);
 }
 
+#extension GL_ARB_sparse_texture2: enable
+
+uniform sampler2D               s2D;
+uniform isampler2DArray         is2DArray;
+uniform sampler2DRectShadow     s2DRectShadow;
+
+in flat ivec2 offsets[4];
+in vec2 c2;
+in vec3 c3;
+
+void testOffsets()
+{
+    vec4  texel  = vec4(0.0);
+    ivec4 itexel = ivec4(0);
+    const ivec2 constOffsets[4] = ivec2[4](ivec2(1,2), ivec2(3,4), ivec2(15,16), ivec2(-2,0));
+    sparseTextureGatherOffsetsARB(s2D, c2, constOffsets, texel);
+    sparseTextureGatherOffsetsARB(is2DArray, c3, constOffsets, itexel, 2);
+    sparseTextureGatherOffsetsARB(s2DRectShadow, c2, 2.0, constOffsets, texel);
+
+    sparseTextureGatherOffsetsARB(s2D, c2, offsets, texel); // Error : Non constant offsets
+    sparseTextureGatherOffsetsARB(is2DArray, c3, offsets, itexel, 2); // Error : Non constant offsets
+    sparseTextureGatherOffsetsARB(s2DRectShadow, c2, 2.0, offsets, texel); // Error : Non constant offsets
+
+}
+
 in float gl_CullDistance[6];
 
 float cull(int i)
diff --git a/Test/baseLegalResults/hlsl.intrinsics.evalfns.frag.out b/Test/baseLegalResults/hlsl.intrinsics.evalfns.frag.out
new file mode 100644
index 0000000..564f0f4
--- /dev/null
+++ b/Test/baseLegalResults/hlsl.intrinsics.evalfns.frag.out
@@ -0,0 +1,110 @@
+hlsl.intrinsics.evalfns.frag
+// Module Version 10000
+// Generated by (magic number): 8000a
+// Id's are bound by 274
+
+                              Capability Shader
+                              Capability InterpolationFunction
+               1:             ExtInstImport  "GLSL.std.450"
+                              MemoryModel Logical GLSL450
+                              EntryPoint Fragment 4  "main" 138 142 146 150 154 157 161
+                              ExecutionMode 4 OriginUpperLeft
+                              Source HLSL 500
+                              Name 4  "main"
+                              Name 138  "inF1"
+                              Name 142  "inF2"
+                              Name 146  "inF3"
+                              Name 150  "inF4"
+                              Name 154  "inI2"
+                              Name 157  "i.vPos"
+                              Name 161  "@entryPointOutput"
+                              Decorate 138(inF1) Location 0
+                              Decorate 142(inF2) Location 1
+                              Decorate 146(inF3) Location 2
+                              Decorate 150(inF4) Location 3
+                              Decorate 154(inI2) Flat
+                              Decorate 154(inI2) Location 4
+                              Decorate 157(i.vPos) Location 5
+                              Decorate 161(@entryPointOutput) Location 0
+               2:             TypeVoid
+               3:             TypeFunction 2
+               6:             TypeFloat 32
+               8:             TypeVector 6(float) 2
+              10:             TypeVector 6(float) 3
+              12:             TypeVector 6(float) 4
+              14:             TypeInt 32 1
+              15:             TypeVector 14(int) 2
+              30:    6(float) Constant 3204448256
+              31:    6(float) Constant 3179282432
+              32:    8(fvec2) ConstantComposite 30 31
+              36:    6(float) Constant 0
+              37:    6(float) Constant 1031798784
+              38:    8(fvec2) ConstantComposite 36 37
+              42:    6(float) Constant 1044381696
+              43:    6(float) Constant 3200253952
+              44:    8(fvec2) ConstantComposite 42 43
+              48:    6(float) Constant 1054867456
+              49:    8(fvec2) ConstantComposite 48 30
+              53:     14(int) Constant 28
+              64:             TypeInt 32 0
+              65:     64(int) Constant 3
+             137:             TypePointer Input 6(float)
+       138(inF1):    137(ptr) Variable Input
+             141:             TypePointer Input 8(fvec2)
+       142(inF2):    141(ptr) Variable Input
+             145:             TypePointer Input 10(fvec3)
+       146(inF3):    145(ptr) Variable Input
+             149:             TypePointer Input 12(fvec4)
+       150(inF4):    149(ptr) Variable Input
+             153:             TypePointer Input 15(ivec2)
+       154(inI2):    153(ptr) Variable Input
+     157(i.vPos):    141(ptr) Variable Input
+             160:             TypePointer Output 12(fvec4)
+161(@entryPointOutput):    160(ptr) Variable Output
+             273:   15(ivec2) ConstantComposite 53 53
+         4(main):           2 Function None 3
+               5:             Label
+             155:   15(ivec2) Load 154(inI2)
+             183:    6(float) ExtInst 1(GLSL.std.450) 78(InterpolateAtOffset) 138(inF1) 32
+             185:    8(fvec2) ExtInst 1(GLSL.std.450) 78(InterpolateAtOffset) 142(inF2) 38
+             187:   10(fvec3) ExtInst 1(GLSL.std.450) 78(InterpolateAtOffset) 146(inF3) 44
+             189:   12(fvec4) ExtInst 1(GLSL.std.450) 78(InterpolateAtOffset) 150(inF4) 49
+             193:   15(ivec2) ShiftLeftLogical 155 273
+             195:   15(ivec2) ShiftRightArithmetic 193 273
+             196:    8(fvec2) ConvertSToF 195
+             197:    8(fvec2) VectorTimesScalar 196 37
+             198:    6(float) ExtInst 1(GLSL.std.450) 78(InterpolateAtOffset) 138(inF1) 197
+             200:    6(float) FAdd 183 198
+             202:    6(float) ExtInst 1(GLSL.std.450) 77(InterpolateAtSample) 138(inF1) 65
+             204:    6(float) FAdd 200 202
+             206:    8(fvec2) ExtInst 1(GLSL.std.450) 77(InterpolateAtSample) 142(inF2) 65
+             208:    8(fvec2) FAdd 185 206
+             210:   10(fvec3) ExtInst 1(GLSL.std.450) 77(InterpolateAtSample) 146(inF3) 65
+             212:   10(fvec3) FAdd 187 210
+             214:   12(fvec4) ExtInst 1(GLSL.std.450) 77(InterpolateAtSample) 150(inF4) 65
+             216:   12(fvec4) FAdd 189 214
+             219:     14(int) CompositeExtract 155 0
+             220:     64(int) Bitcast 219
+             221:    6(float) ExtInst 1(GLSL.std.450) 77(InterpolateAtSample) 138(inF1) 220
+             223:    6(float) FAdd 204 221
+             225:    6(float) ExtInst 1(GLSL.std.450) 76(InterpolateAtCentroid) 138(inF1)
+             227:    6(float) FAdd 223 225
+             229:    8(fvec2) ExtInst 1(GLSL.std.450) 76(InterpolateAtCentroid) 142(inF2)
+             231:    8(fvec2) FAdd 208 229
+             233:   10(fvec3) ExtInst 1(GLSL.std.450) 76(InterpolateAtCentroid) 146(inF3)
+             235:   10(fvec3) FAdd 212 233
+             237:   12(fvec4) ExtInst 1(GLSL.std.450) 76(InterpolateAtCentroid) 150(inF4)
+             239:   12(fvec4) FAdd 216 237
+             242:    8(fvec2) ExtInst 1(GLSL.std.450) 78(InterpolateAtOffset) 157(i.vPos) 38
+             244:    8(fvec2) FAdd 231 242
+             247:    8(fvec2) ExtInst 1(GLSL.std.450) 77(InterpolateAtSample) 157(i.vPos) 65
+             249:    8(fvec2) FAdd 244 247
+             252:    8(fvec2) ExtInst 1(GLSL.std.450) 76(InterpolateAtCentroid) 157(i.vPos)
+             254:    8(fvec2) FAdd 249 252
+             257:    6(float) CompositeExtract 254 1
+             259:    6(float) CompositeExtract 235 2
+             261:    6(float) CompositeExtract 239 3
+             262:   12(fvec4) CompositeConstruct 227 257 259 261
+                              Store 161(@entryPointOutput) 262
+                              Return
+                              FunctionEnd
diff --git a/Test/baseResults/100scope.vert.out b/Test/baseResults/100scope.vert.out
index c59c8fd..1696a2e 100644
--- a/Test/baseResults/100scope.vert.out
+++ b/Test/baseResults/100scope.vert.out
@@ -1,5 +1,4 @@
 100scope.vert
-ERROR: 0:5: 'a' : redefinition 
 ERROR: 0:17: 'b' : function name is redeclaration of existing name 
 ERROR: 0:20: 'c' : redefinition 
 ERROR: 0:22: 'f' : redefinition 
@@ -13,7 +12,7 @@
 ERROR: 0:57: 'z' : redefinition 
 ERROR: 0:73: 'degrees' : can't use function syntax on variable 
 ERROR: 0:76: 'vertex-shader struct output' : not supported for this version or the enabled extensions 
-ERROR: 14 compilation errors.  No code generated.
+ERROR: 13 compilation errors.  No code generated.
 
 
 Shader version: 100
@@ -23,18 +22,22 @@
 0:3      'a' ( in highp int)
 0:3      'b' ( in highp int)
 0:3      'c' ( in highp int)
-0:?     Sequence
+0:5    Sequence
+0:5      Sequence
+0:5        move second child to first child ( temp highp int)
+0:5          'a' ( temp highp int)
+0:5          'b' ( in highp int)
 0:8      Sequence
 0:8        Sequence
 0:8          move second child to first child ( temp highp float)
 0:8            'a' ( temp highp float)
 0:8            add ( temp highp float)
 0:8              Convert int to float ( temp highp float)
-0:8                'a' ( in highp int)
+0:8                'a' ( temp highp int)
 0:8              Constant:
 0:8                1.000000
 0:11      Branch: Return with expression
-0:11        'a' ( in highp int)
+0:11        'a' ( temp highp int)
 0:25  Function Definition: cos(f1; ( global highp float)
 0:25    Function Parameters: 
 0:25      'x' ( in highp float)
@@ -138,18 +141,22 @@
 0:3      'a' ( in highp int)
 0:3      'b' ( in highp int)
 0:3      'c' ( in highp int)
-0:?     Sequence
+0:5    Sequence
+0:5      Sequence
+0:5        move second child to first child ( temp highp int)
+0:5          'a' ( temp highp int)
+0:5          'b' ( in highp int)
 0:8      Sequence
 0:8        Sequence
 0:8          move second child to first child ( temp highp float)
 0:8            'a' ( temp highp float)
 0:8            add ( temp highp float)
 0:8              Convert int to float ( temp highp float)
-0:8                'a' ( in highp int)
+0:8                'a' ( temp highp int)
 0:8              Constant:
 0:8                1.000000
 0:11      Branch: Return with expression
-0:11        'a' ( in highp int)
+0:11        'a' ( temp highp int)
 0:36  Function Definition: main( ( global void)
 0:36    Function Parameters: 
 0:?     Sequence
diff --git a/Test/baseResults/300layout.vert.out b/Test/baseResults/300layout.vert.out
index e245cbc..527425b 100644
--- a/Test/baseResults/300layout.vert.out
+++ b/Test/baseResults/300layout.vert.out
@@ -1,6 +1,7 @@
 300layout.vert
 ERROR: 0:7: 'vertex input arrays' : not supported with this profile: es
 ERROR: 0:8: 'in' : cannot be a structure or array 
+ERROR: 0:8: 's' : A structure containing an array is not allowed as input in ES 
 ERROR: 0:8: 'vertex input arrays' : not supported with this profile: es
 ERROR: 0:8: 'location' : overlapping use of location 10
 ERROR: 0:12: 'layout' : cannot specify matrix layout on a variable declaration 
@@ -18,7 +19,7 @@
 ERROR: 0:50: 'shared' : not supported in this stage: vertex
 ERROR: 0:54: 'layout' : cannot specify packing on a variable declaration 
 ERROR: 0:57: 'location' : overlapping use of location 40
-ERROR: 19 compilation errors.  No code generated.
+ERROR: 20 compilation errors.  No code generated.
 
 
 Shader version: 300
diff --git a/Test/baseResults/310.comp.out b/Test/baseResults/310.comp.out
index 538b750..85b0116 100644
--- a/Test/baseResults/310.comp.out
+++ b/Test/baseResults/310.comp.out
@@ -7,9 +7,9 @@
 ERROR: 0:39: 'location qualifier on input' : not supported in this stage: compute
 ERROR: 0:40: 'in' : global storage input qualifier cannot be used in a compute shader 
 ERROR: 0:41: 'out' : global storage output qualifier cannot be used in a compute shader 
-ERROR: 0:44: 'shared' : cannot apply layout qualifiers to a shared variable 
+ERROR: 0:44: 'shared block' : not supported for this version or the enabled extensions 
 ERROR: 0:44: 'location' : can only apply to uniform, buffer, in, or out storage qualifiers 
-ERROR: 0:45: 'shared' :  cannot initialize this type of qualifier  
+ERROR: 0:45: 'shared' : initializer can only be a null initializer ('{}') 
 ERROR: 0:47: 'local_size' : can only apply to 'in' 
 ERROR: 0:47: 'local_size' : can only apply to 'in' 
 ERROR: 0:47: 'local_size' : can only apply to 'in' 
@@ -115,6 +115,11 @@
 0:36              Constant:
 0:36                1 (const uint)
 0:36            'gl_LocalInvocationIndex' ( in highp uint LocalInvocationIndex)
+0:45  Sequence
+0:45    move second child to first child ( temp highp float)
+0:45      'fs' ( shared highp float)
+0:45      Constant:
+0:45        4.200000
 0:59  Function Definition: foo( ( global void)
 0:59    Function Parameters: 
 0:61    Sequence
@@ -553,6 +558,11 @@
 0:36              Constant:
 0:36                1 (const uint)
 0:36            'gl_LocalInvocationIndex' ( in highp uint LocalInvocationIndex)
+0:45  Sequence
+0:45    move second child to first child ( temp highp float)
+0:45      'fs' ( shared highp float)
+0:45      Constant:
+0:45        4.200000
 0:?   Linker Objects
 0:?     'gl_WorkGroupSize' ( const highp 3-component vector of uint WorkGroupSize)
 0:?       2 (const uint)
diff --git a/Test/baseResults/310.frag.out b/Test/baseResults/310.frag.out
index 9fe93e9..9f73c67 100644
--- a/Test/baseResults/310.frag.out
+++ b/Test/baseResults/310.frag.out
@@ -40,10 +40,14 @@
 ERROR: 0:114: 'in' : cannot be bool 
 ERROR: 0:115: 'sampler2D' : sampler/image types can only be used in uniform variables or function parameters: ino
 ERROR: 0:117: 'fragment-shader array-of-array input' : not supported with this profile: es
+ERROR: 0:120: 'S' : A structure containing an array is not allowed as input in ES 
 ERROR: 0:120: 'fragment-shader array-of-struct input' : not supported with this profile: es
+ERROR: 0:121: 'S' : A structure containing an array is not allowed as input in ES 
 ERROR: 0:121: 'fragment-shader array-of-struct input' : not supported with this profile: es
 ERROR: 0:123: 'fragment-shader struct input containing an array' : not supported with this profile: es
+ERROR: 0:123: 'SA' : A structure containing an array is not allowed as input in ES 
 ERROR: 0:125: 'fragment-shader struct input containing structure' : not supported with this profile: es
+ERROR: 0:125: 'SS' : A structure containing an struct is not allowed as input in ES 
 ERROR: 0:133: 'output block' : not supported in this stage: fragment
 ERROR: 0:138: '' : cannot nest a structure definition inside a structure or block 
 ERROR: 0:146: 'location' : overlapping use of location 13
@@ -139,7 +143,7 @@
 ERROR: 0:463: 'return' : void function cannot return a value 
 ERROR: 0:472: '=' :  cannot convert from ' temp mediump uint' to ' temp mediump int'
 ERROR: 0:485: '=' :  cannot convert from ' global mediump int' to ' temp mediump uint'
-ERROR: 132 compilation errors.  No code generated.
+ERROR: 136 compilation errors.  No code generated.
 
 
 Shader version: 310
diff --git a/Test/baseResults/310.vert.out b/Test/baseResults/310.vert.out
index a910e34..1d2152d 100644
--- a/Test/baseResults/310.vert.out
+++ b/Test/baseResults/310.vert.out
@@ -21,6 +21,7 @@
 ERROR: 0:107: 'input block' : not supported in this stage: vertex
 ERROR: 0:109: 'gl_PerVertex' : block redeclaration has extra members 
 ERROR: 0:119: 'gl_PointSize' : member of nameless block was not redeclared 
+ERROR: 0:119: 'assign' :  l-value required "gl_PerVertex" (can't modify void)
 ERROR: 0:119: 'assign' :  cannot convert from ' const float' to ' gl_PointSize highp void PointSize'
 ERROR: 0:122: 'gl_PerVertex' : can only redeclare a built-in block once, and before any use 
 ERROR: 0:127: 'flat/smooth/noperspective' : cannot use interpolation qualifiers on an interface block 
@@ -96,7 +97,7 @@
 ERROR: 0:400: 'interpolateAtCentroid' : no matching overloaded function found 
 ERROR: 0:401: 'interpolateAtSample' : no matching overloaded function found 
 ERROR: 0:402: 'interpolateAtOffset' : no matching overloaded function found 
-ERROR: 93 compilation errors.  No code generated.
+ERROR: 94 compilation errors.  No code generated.
 
 
 Shader version: 310
diff --git a/Test/baseResults/320.vert.out b/Test/baseResults/320.vert.out
index bf127d4..0313b61 100644
--- a/Test/baseResults/320.vert.out
+++ b/Test/baseResults/320.vert.out
@@ -4,6 +4,7 @@
 ERROR: 0:16: 'input block' : not supported in this stage: vertex
 ERROR: 0:18: 'gl_PerVertex' : block redeclaration has extra members 
 ERROR: 0:28: 'gl_PointSize' : member of nameless block was not redeclared 
+ERROR: 0:28: 'assign' :  l-value required "gl_PerVertex" (can't modify void)
 ERROR: 0:28: 'assign' :  cannot convert from ' const float' to ' gl_PointSize highp void PointSize'
 ERROR: 0:31: 'gl_PerVertex' : can only redeclare a built-in block once, and before any use 
 ERROR: 0:36: 'flat/smooth/noperspective' : cannot use interpolation qualifiers on an interface block 
@@ -33,7 +34,7 @@
 ERROR: 0:252: 'interpolateAtCentroid' : no matching overloaded function found 
 ERROR: 0:253: 'interpolateAtSample' : no matching overloaded function found 
 ERROR: 0:254: 'interpolateAtOffset' : no matching overloaded function found 
-ERROR: 34 compilation errors.  No code generated.
+ERROR: 35 compilation errors.  No code generated.
 
 
 Shader version: 320
diff --git a/Test/baseResults/400.frag.out b/Test/baseResults/400.frag.out
index 90f73dc..b7e88df 100644
--- a/Test/baseResults/400.frag.out
+++ b/Test/baseResults/400.frag.out
@@ -34,7 +34,7 @@
 ERROR: 0:184: 'textureQueryLod' : no matching overloaded function found 
 ERROR: 0:184: 'assign' :  cannot convert from ' const float' to ' temp 2-component vector of float'
 ERROR: 0:197: 'subroutine' : feature not yet implemented 
-ERROR: 0:197: '' : default qualifier requires 'uniform', 'buffer', 'in', or 'out' storage qualification 
+ERROR: 0:197: '' : default qualifier requires 'uniform', 'buffer', 'in', 'out' or 'shared' storage qualification 
 ERROR: 0:198: 'subroutine' : feature not yet implemented 
 ERROR: 0:199: 'subroutine' : feature not yet implemented 
 ERROR: 0:201: '' :  syntax error, unexpected PRECISE, expecting IDENTIFIER
diff --git a/Test/baseResults/410.geom.out b/Test/baseResults/410.geom.out
index c38ba48..498da5a 100644
--- a/Test/baseResults/410.geom.out
+++ b/Test/baseResults/410.geom.out
@@ -5,9 +5,10 @@
 ERROR: 0:32: 'gl_Position' : no such field in structure 
 ERROR: 0:32: '=' :  cannot convert from ' temp block{ in float PointSize gl_PointSize}' to ' temp 4-component vector of float'
 ERROR: 0:33: 'gl_Position' : member of nameless block was not redeclared 
+ERROR: 0:33: 'assign' :  l-value required "gl_PerVertex" (can't modify void)
 ERROR: 0:33: 'assign' :  cannot convert from ' const 4-component vector of float' to 'layout( stream=0) gl_Position void Position'
 WARNING: 0:38: 'return' : type conversion on return values was not explicitly allowed until version 420 
-ERROR: 7 compilation errors.  No code generated.
+ERROR: 8 compilation errors.  No code generated.
 
 
 Shader version: 410
diff --git a/Test/baseResults/420.vert.out b/Test/baseResults/420.vert.out
index 1a57b34..b3d9e70 100644
--- a/Test/baseResults/420.vert.out
+++ b/Test/baseResults/420.vert.out
@@ -306,6 +306,7 @@
 0:?     'samp1D' ( uniform sampler1D)
 0:?     'samp1Ds' ( uniform sampler1DShadow)
 0:?     'badArray' (layout( binding=0) writeonly uniform unsized 1-element array of image1D)
+0:?     'u_sampler0' (layout( binding=74) uniform 6-element array of sampler2D)
 0:?     'gl_VertexID' ( gl_VertexId int VertexId)
 0:?     'gl_InstanceID' ( gl_InstanceId int InstanceId)
 
@@ -388,6 +389,7 @@
 0:?     'samp1D' ( uniform sampler1D)
 0:?     'samp1Ds' ( uniform sampler1DShadow)
 0:?     'badArray' (layout( binding=0) writeonly uniform 1-element array of image1D)
+0:?     'u_sampler0' (layout( binding=74) uniform 6-element array of sampler2D)
 0:?     'gl_VertexID' ( gl_VertexId int VertexId)
 0:?     'gl_InstanceID' ( gl_InstanceId int InstanceId)
 
diff --git a/Test/baseResults/430.comp.out b/Test/baseResults/430.comp.out
index 55c8238..4d8495b 100644
--- a/Test/baseResults/430.comp.out
+++ b/Test/baseResults/430.comp.out
@@ -5,9 +5,9 @@
 ERROR: 0:43: 'location qualifier on input' : not supported in this stage: compute
 ERROR: 0:44: 'in' : global storage input qualifier cannot be used in a compute shader 
 ERROR: 0:45: 'out' : global storage output qualifier cannot be used in a compute shader 
-ERROR: 0:48: 'shared' : cannot apply layout qualifiers to a shared variable 
+ERROR: 0:48: 'shared block' : not supported for this version or the enabled extensions 
 ERROR: 0:48: 'location' : can only apply to uniform, buffer, in, or out storage qualifiers 
-ERROR: 0:49: 'shared' :  cannot initialize this type of qualifier  
+ERROR: 0:49: 'shared' : initializer can only be a null initializer ('{}') 
 ERROR: 0:52: 'local_size' : cannot change previously set size 
 ERROR: 0:54: 'local_size' : can only apply to 'in' 
 ERROR: 0:54: 'local_size' : can only apply to 'in' 
@@ -52,6 +52,11 @@
 0:39            10 (const int)
 0:39        true case
 0:40        Barrier ( global void)
+0:49  Sequence
+0:49    move second child to first child ( temp float)
+0:49      'fs' ( shared float)
+0:49      Constant:
+0:49        4.200000
 0:66  Function Definition: foo( ( global void)
 0:66    Function Parameters: 
 0:68    Sequence
@@ -184,6 +189,11 @@
 0:39            10 (const int)
 0:39        true case
 0:40        Barrier ( global void)
+0:49  Sequence
+0:49    move second child to first child ( temp float)
+0:49      'fs' ( shared float)
+0:49      Constant:
+0:49        4.200000
 0:?   Linker Objects
 0:?     'gl_WorkGroupSize' ( const 3-component vector of uint WorkGroupSize)
 0:?       2 (const uint)
diff --git a/Test/baseResults/440.frag.out b/Test/baseResults/440.frag.out
index 1ac6e7c..c7ff728 100644
--- a/Test/baseResults/440.frag.out
+++ b/Test/baseResults/440.frag.out
@@ -118,6 +118,7 @@
 0:?     'aconst' ( global 4-element array of int)
 0:?     'bconst' ( global 64-element array of int)
 0:?     'sampInArray' ( smooth sample in 4-element array of 3-component vector of float)
+0:?     'anon@0' (layout( row_major std140) uniform block{layout( row_major std140 offset=0) uniform 128-element array of structure{ global 3-component vector of float vPositionWs} g_pointLightData})
 
 
 Linked fragment stage:
@@ -162,4 +163,5 @@
 0:?     'aconst' ( global 4-element array of int)
 0:?     'bconst' ( global 64-element array of int)
 0:?     'sampInArray' ( smooth sample in 4-element array of 3-component vector of float)
+0:?     'anon@0' (layout( row_major std140) uniform block{layout( row_major std140 offset=0) uniform 128-element array of structure{ global 3-component vector of float vPositionWs} g_pointLightData})
 
diff --git a/Test/baseResults/450.frag.out b/Test/baseResults/450.frag.out
index 9cbb4cb..ec184ac 100644
--- a/Test/baseResults/450.frag.out
+++ b/Test/baseResults/450.frag.out
@@ -1,10 +1,14 @@
 450.frag
-ERROR: 0:63: 'location' : cannot use in a block array where new locations are needed for each block element 
-ERROR: 0:68: 'early_fragment_tests' : can only apply to a standalone qualifier 
-ERROR: 2 compilation errors.  No code generated.
+ERROR: 0:70: 'offsets' : argument must be compile-time constant 
+ERROR: 0:71: 'offsets' : argument must be compile-time constant 
+ERROR: 0:72: 'offsets' : argument must be compile-time constant 
+ERROR: 0:88: 'location' : cannot use in a block array where new locations are needed for each block element 
+ERROR: 0:93: 'early_fragment_tests' : can only apply to a standalone qualifier 
+ERROR: 5 compilation errors.  No code generated.
 
 
 Shader version: 450
+Requested GL_ARB_sparse_texture2
 ERROR: node is still EOpNull!
 0:8  Function Definition: main( ( global void)
 0:8    Function Parameters: 
@@ -133,26 +137,107 @@
 0:48              2 (const int)
 0:48            Constant:
 0:48              4.500000
-0:53  Function Definition: cull(i1; ( global float)
-0:53    Function Parameters: 
-0:53      'i' ( in int)
-0:55    Sequence
-0:55      Branch: Return with expression
-0:55        Test condition and select ( temp float)
-0:55          Condition
-0:55          Compare Greater Than or Equal ( temp bool)
-0:55            'i' ( in int)
-0:55            Constant:
-0:55              6 (const int)
-0:55          true case
-0:55          direct index ( smooth temp float CullDistance)
-0:55            'gl_CullDistance' ( smooth in 6-element array of float CullDistance)
-0:55            Constant:
-0:55              5 (const int)
-0:55          false case
-0:55          indirect index ( smooth temp float CullDistance)
-0:55            'gl_CullDistance' ( smooth in 6-element array of float CullDistance)
-0:55            'i' ( in int)
+0:61  Function Definition: testOffsets( ( global void)
+0:61    Function Parameters: 
+0:63    Sequence
+0:63      Sequence
+0:63        move second child to first child ( temp 4-component vector of float)
+0:63          'texel' ( temp 4-component vector of float)
+0:63          Constant:
+0:63            0.000000
+0:63            0.000000
+0:63            0.000000
+0:63            0.000000
+0:64      Sequence
+0:64        move second child to first child ( temp 4-component vector of int)
+0:64          'itexel' ( temp 4-component vector of int)
+0:64          Constant:
+0:64            0 (const int)
+0:64            0 (const int)
+0:64            0 (const int)
+0:64            0 (const int)
+0:66      sparseTextureGatherOffsets ( global int)
+0:66        's2D' ( uniform sampler2D)
+0:66        'c2' ( smooth in 2-component vector of float)
+0:66        Constant:
+0:66          1 (const int)
+0:66          2 (const int)
+0:66          3 (const int)
+0:66          4 (const int)
+0:66          15 (const int)
+0:66          16 (const int)
+0:66          -2 (const int)
+0:66          0 (const int)
+0:66        'texel' ( temp 4-component vector of float)
+0:67      sparseTextureGatherOffsets ( global int)
+0:67        'is2DArray' ( uniform isampler2DArray)
+0:67        'c3' ( smooth in 3-component vector of float)
+0:67        Constant:
+0:67          1 (const int)
+0:67          2 (const int)
+0:67          3 (const int)
+0:67          4 (const int)
+0:67          15 (const int)
+0:67          16 (const int)
+0:67          -2 (const int)
+0:67          0 (const int)
+0:67        'itexel' ( temp 4-component vector of int)
+0:67        Constant:
+0:67          2 (const int)
+0:68      sparseTextureGatherOffsets ( global int)
+0:68        's2DRectShadow' ( uniform sampler2DRectShadow)
+0:68        'c2' ( smooth in 2-component vector of float)
+0:68        Constant:
+0:68          2.000000
+0:68        Constant:
+0:68          1 (const int)
+0:68          2 (const int)
+0:68          3 (const int)
+0:68          4 (const int)
+0:68          15 (const int)
+0:68          16 (const int)
+0:68          -2 (const int)
+0:68          0 (const int)
+0:68        'texel' ( temp 4-component vector of float)
+0:70      sparseTextureGatherOffsets ( global int)
+0:70        's2D' ( uniform sampler2D)
+0:70        'c2' ( smooth in 2-component vector of float)
+0:70        'offsets' ( flat in 4-element array of 2-component vector of int)
+0:70        'texel' ( temp 4-component vector of float)
+0:71      sparseTextureGatherOffsets ( global int)
+0:71        'is2DArray' ( uniform isampler2DArray)
+0:71        'c3' ( smooth in 3-component vector of float)
+0:71        'offsets' ( flat in 4-element array of 2-component vector of int)
+0:71        'itexel' ( temp 4-component vector of int)
+0:71        Constant:
+0:71          2 (const int)
+0:72      sparseTextureGatherOffsets ( global int)
+0:72        's2DRectShadow' ( uniform sampler2DRectShadow)
+0:72        'c2' ( smooth in 2-component vector of float)
+0:72        Constant:
+0:72          2.000000
+0:72        'offsets' ( flat in 4-element array of 2-component vector of int)
+0:72        'texel' ( temp 4-component vector of float)
+0:78  Function Definition: cull(i1; ( global float)
+0:78    Function Parameters: 
+0:78      'i' ( in int)
+0:80    Sequence
+0:80      Branch: Return with expression
+0:80        Test condition and select ( temp float)
+0:80          Condition
+0:80          Compare Greater Than or Equal ( temp bool)
+0:80            'i' ( in int)
+0:80            Constant:
+0:80              6 (const int)
+0:80          true case
+0:80          direct index ( smooth temp float CullDistance)
+0:80            'gl_CullDistance' ( smooth in 6-element array of float CullDistance)
+0:80            Constant:
+0:80              5 (const int)
+0:80          false case
+0:80          indirect index ( smooth temp float CullDistance)
+0:80            'gl_CullDistance' ( smooth in 6-element array of float CullDistance)
+0:80            'i' ( in int)
 0:?   Linker Objects
 0:?     'in1' ( smooth in float)
 0:?     'in2' ( smooth in 2-component vector of float)
@@ -163,6 +248,12 @@
 0:?     'us2dmsa' ( uniform usampler2DMSArray)
 0:?     'ii2dms' (layout( rgba32i) uniform iimage2DMS)
 0:?     'i2dmsa' (layout( rgba32f) uniform image2DMSArray)
+0:?     's2D' ( uniform sampler2D)
+0:?     'is2DArray' ( uniform isampler2DArray)
+0:?     's2DRectShadow' ( uniform sampler2DRectShadow)
+0:?     'offsets' ( flat in 4-element array of 2-component vector of int)
+0:?     'c2' ( smooth in 2-component vector of float)
+0:?     'c3' ( smooth in 3-component vector of float)
 0:?     'bInst1' ( in block{layout( location=6) in float f, layout( location=7) in float g, layout( location=8) in 4X4 matrix of float m})
 0:?     'bInst2' ( in 3-element array of block{layout( location=12) in float f, layout( location=13) in float g})
 0:?     'f' ( smooth in float)
@@ -172,6 +263,7 @@
 
 
 Shader version: 450
+Requested GL_ARB_sparse_texture2
 ERROR: node is still EOpNull!
 0:8  Function Definition: main( ( global void)
 0:8    Function Parameters: 
@@ -279,6 +371,12 @@
 0:?     'us2dmsa' ( uniform usampler2DMSArray)
 0:?     'ii2dms' (layout( rgba32i) uniform iimage2DMS)
 0:?     'i2dmsa' (layout( rgba32f) uniform image2DMSArray)
+0:?     's2D' ( uniform sampler2D)
+0:?     'is2DArray' ( uniform isampler2DArray)
+0:?     's2DRectShadow' ( uniform sampler2DRectShadow)
+0:?     'offsets' ( flat in 4-element array of 2-component vector of int)
+0:?     'c2' ( smooth in 2-component vector of float)
+0:?     'c3' ( smooth in 3-component vector of float)
 0:?     'bInst1' ( in block{layout( location=6) in float f, layout( location=7) in float g, layout( location=8) in 4X4 matrix of float m})
 0:?     'bInst2' ( in 3-element array of block{layout( location=12) in float f, layout( location=13) in float g})
 0:?     'f' ( smooth in float)
diff --git a/Test/baseResults/contradict_0.geom.out b/Test/baseResults/contradict_0.geom.out
old mode 100755
new mode 100644
diff --git a/Test/baseResults/cppBad3.vert.out b/Test/baseResults/cppBad3.vert.out
old mode 100755
new mode 100644
diff --git a/Test/baseResults/cppBad4.vert.out b/Test/baseResults/cppBad4.vert.out
old mode 100755
new mode 100644
diff --git a/Test/baseResults/cppBad5.vert.out b/Test/baseResults/cppBad5.vert.out
old mode 100755
new mode 100644
diff --git a/Test/baseResults/cppDeepNest.frag.out b/Test/baseResults/cppDeepNest.frag.out
index 969a256..49b9aa3 100644
--- a/Test/baseResults/cppDeepNest.frag.out
+++ b/Test/baseResults/cppDeepNest.frag.out
@@ -1,7 +1,7 @@
 cppDeepNest.frag
 ERROR: 0:66: '#if/#ifdef/#ifndef' : maximum nesting depth exceeded 
 ERROR: 0:66: '' : missing #endif 
-ERROR: 0:66: '' :  syntax error, unexpected $end
+ERROR: 0:66: '' :  syntax error, unexpected end of file
 ERROR: 3 compilation errors.  No code generated.
 
 
diff --git a/Test/baseResults/cppMerge.frag.out b/Test/baseResults/cppMerge.frag.out
old mode 100755
new mode 100644
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/hlsl.earlydepthstencil.frag.out b/Test/baseResults/hlsl.earlydepthstencil.frag.out
old mode 100755
new mode 100644
diff --git a/Test/baseResults/hlsl.intrinsics.evalfns.frag.out b/Test/baseResults/hlsl.intrinsics.evalfns.frag.out
deleted file mode 100644
index 502ad0f..0000000
--- a/Test/baseResults/hlsl.intrinsics.evalfns.frag.out
+++ /dev/null
@@ -1,287 +0,0 @@
-hlsl.intrinsics.evalfns.frag
-Shader version: 500
-gl_FragCoord origin is upper left
-0:? Sequence
-0:3  Function Definition: @main(f1;vf2;vf3;vf4;vi2; ( temp void)
-0:3    Function Parameters: 
-0:3      'inF1' ( in float)
-0:3      'inF2' ( in 2-component vector of float)
-0:3      'inF3' ( in 3-component vector of float)
-0:3      'inF4' ( in 4-component vector of float)
-0:3      'inI2' ( in 2-component vector of int)
-0:?     Sequence
-0:4      interpolateAtOffset ( temp float)
-0:4        'inF1' ( in float)
-0:?         Constant:
-0:?           -0.500000
-0:?           -0.062500
-0:5      interpolateAtOffset ( temp 2-component vector of float)
-0:5        'inF2' ( in 2-component vector of float)
-0:?         Constant:
-0:?           0.000000
-0:?           0.062500
-0:6      interpolateAtOffset ( temp 3-component vector of float)
-0:6        'inF3' ( in 3-component vector of float)
-0:?         Constant:
-0:?           0.187500
-0:?           -0.375000
-0:7      interpolateAtOffset ( temp 4-component vector of float)
-0:7        'inF4' ( in 4-component vector of float)
-0:?         Constant:
-0:?           0.437500
-0:?           -0.500000
-0:9      interpolateAtOffset ( temp float)
-0:9        'inF1' ( in float)
-0:9        vector-scale ( temp 2-component vector of float)
-0:9          Convert int to float ( temp 2-component vector of float)
-0:9            right-shift ( temp 2-component vector of int)
-0:9              left-shift ( temp 2-component vector of int)
-0:9                'inI2' ( in 2-component vector of int)
-0:9                Constant:
-0:9                  28 (const int)
-0:9              Constant:
-0:9                28 (const int)
-0:9          Constant:
-0:9            0.062500
-0:3  Function Definition: main( ( temp void)
-0:3    Function Parameters: 
-0:?     Sequence
-0:3      move second child to first child ( temp float)
-0:?         'inF1' ( temp float)
-0:?         'inF1' (layout( location=0) in float)
-0:3      move second child to first child ( temp 2-component vector of float)
-0:?         'inF2' ( temp 2-component vector of float)
-0:?         'inF2' (layout( location=1) in 2-component vector of float)
-0:3      move second child to first child ( temp 3-component vector of float)
-0:?         'inF3' ( temp 3-component vector of float)
-0:?         'inF3' (layout( location=2) in 3-component vector of float)
-0:3      move second child to first child ( temp 4-component vector of float)
-0:?         'inF4' ( temp 4-component vector of float)
-0:?         'inF4' (layout( location=3) in 4-component vector of float)
-0:3      move second child to first child ( temp 2-component vector of int)
-0:?         'inI2' ( temp 2-component vector of int)
-0:?         'inI2' (layout( location=4) flat in 2-component vector of int)
-0:3      Function Call: @main(f1;vf2;vf3;vf4;vi2; ( temp void)
-0:?         'inF1' ( temp float)
-0:?         'inF2' ( temp 2-component vector of float)
-0:?         'inF3' ( temp 3-component vector of float)
-0:?         'inF4' ( temp 4-component vector of float)
-0:?         'inI2' ( temp 2-component vector of int)
-0:?   Linker Objects
-0:?     'inF1' (layout( location=0) in float)
-0:?     'inF2' (layout( location=1) in 2-component vector of float)
-0:?     'inF3' (layout( location=2) in 3-component vector of float)
-0:?     'inF4' (layout( location=3) in 4-component vector of float)
-0:?     'inI2' (layout( location=4) flat in 2-component vector of int)
-
-
-Linked fragment stage:
-
-
-Shader version: 500
-gl_FragCoord origin is upper left
-0:? Sequence
-0:3  Function Definition: @main(f1;vf2;vf3;vf4;vi2; ( temp void)
-0:3    Function Parameters: 
-0:3      'inF1' ( in float)
-0:3      'inF2' ( in 2-component vector of float)
-0:3      'inF3' ( in 3-component vector of float)
-0:3      'inF4' ( in 4-component vector of float)
-0:3      'inI2' ( in 2-component vector of int)
-0:?     Sequence
-0:4      interpolateAtOffset ( temp float)
-0:4        'inF1' ( in float)
-0:?         Constant:
-0:?           -0.500000
-0:?           -0.062500
-0:5      interpolateAtOffset ( temp 2-component vector of float)
-0:5        'inF2' ( in 2-component vector of float)
-0:?         Constant:
-0:?           0.000000
-0:?           0.062500
-0:6      interpolateAtOffset ( temp 3-component vector of float)
-0:6        'inF3' ( in 3-component vector of float)
-0:?         Constant:
-0:?           0.187500
-0:?           -0.375000
-0:7      interpolateAtOffset ( temp 4-component vector of float)
-0:7        'inF4' ( in 4-component vector of float)
-0:?         Constant:
-0:?           0.437500
-0:?           -0.500000
-0:9      interpolateAtOffset ( temp float)
-0:9        'inF1' ( in float)
-0:9        vector-scale ( temp 2-component vector of float)
-0:9          Convert int to float ( temp 2-component vector of float)
-0:9            right-shift ( temp 2-component vector of int)
-0:9              left-shift ( temp 2-component vector of int)
-0:9                'inI2' ( in 2-component vector of int)
-0:9                Constant:
-0:9                  28 (const int)
-0:9              Constant:
-0:9                28 (const int)
-0:9          Constant:
-0:9            0.062500
-0:3  Function Definition: main( ( temp void)
-0:3    Function Parameters: 
-0:?     Sequence
-0:3      move second child to first child ( temp float)
-0:?         'inF1' ( temp float)
-0:?         'inF1' (layout( location=0) in float)
-0:3      move second child to first child ( temp 2-component vector of float)
-0:?         'inF2' ( temp 2-component vector of float)
-0:?         'inF2' (layout( location=1) in 2-component vector of float)
-0:3      move second child to first child ( temp 3-component vector of float)
-0:?         'inF3' ( temp 3-component vector of float)
-0:?         'inF3' (layout( location=2) in 3-component vector of float)
-0:3      move second child to first child ( temp 4-component vector of float)
-0:?         'inF4' ( temp 4-component vector of float)
-0:?         'inF4' (layout( location=3) in 4-component vector of float)
-0:3      move second child to first child ( temp 2-component vector of int)
-0:?         'inI2' ( temp 2-component vector of int)
-0:?         'inI2' (layout( location=4) flat in 2-component vector of int)
-0:3      Function Call: @main(f1;vf2;vf3;vf4;vi2; ( temp void)
-0:?         'inF1' ( temp float)
-0:?         'inF2' ( temp 2-component vector of float)
-0:?         'inF3' ( temp 3-component vector of float)
-0:?         'inF4' ( temp 4-component vector of float)
-0:?         'inI2' ( temp 2-component vector of int)
-0:?   Linker Objects
-0:?     'inF1' (layout( location=0) in float)
-0:?     'inF2' (layout( location=1) in 2-component vector of float)
-0:?     'inF3' (layout( location=2) in 3-component vector of float)
-0:?     'inF4' (layout( location=3) in 4-component vector of float)
-0:?     'inI2' (layout( location=4) flat in 2-component vector of int)
-
-Validation failed
-// Module Version 10000
-// Generated by (magic number): 8000a
-// Id's are bound by 80
-
-                              Capability Shader
-                              Capability InterpolationFunction
-               1:             ExtInstImport  "GLSL.std.450"
-                              MemoryModel Logical GLSL450
-                              EntryPoint Fragment 4  "main" 51 55 59 63 67
-                              ExecutionMode 4 OriginUpperLeft
-                              Source HLSL 500
-                              Name 4  "main"
-                              Name 23  "@main(f1;vf2;vf3;vf4;vi2;"
-                              Name 18  "inF1"
-                              Name 19  "inF2"
-                              Name 20  "inF3"
-                              Name 21  "inF4"
-                              Name 22  "inI2"
-                              Name 49  "inF1"
-                              Name 51  "inF1"
-                              Name 53  "inF2"
-                              Name 55  "inF2"
-                              Name 57  "inF3"
-                              Name 59  "inF3"
-                              Name 61  "inF4"
-                              Name 63  "inF4"
-                              Name 65  "inI2"
-                              Name 67  "inI2"
-                              Name 69  "param"
-                              Name 71  "param"
-                              Name 73  "param"
-                              Name 75  "param"
-                              Name 77  "param"
-                              Decorate 51(inF1) Location 0
-                              Decorate 55(inF2) Location 1
-                              Decorate 59(inF3) Location 2
-                              Decorate 63(inF4) Location 3
-                              Decorate 67(inI2) Flat
-                              Decorate 67(inI2) Location 4
-               2:             TypeVoid
-               3:             TypeFunction 2
-               6:             TypeFloat 32
-               7:             TypePointer Function 6(float)
-               8:             TypeVector 6(float) 2
-               9:             TypePointer Function 8(fvec2)
-              10:             TypeVector 6(float) 3
-              11:             TypePointer Function 10(fvec3)
-              12:             TypeVector 6(float) 4
-              13:             TypePointer Function 12(fvec4)
-              14:             TypeInt 32 1
-              15:             TypeVector 14(int) 2
-              16:             TypePointer Function 15(ivec2)
-              17:             TypeFunction 2 7(ptr) 9(ptr) 11(ptr) 13(ptr) 16(ptr)
-              25:    6(float) Constant 3204448256
-              26:    6(float) Constant 3179282432
-              27:    8(fvec2) ConstantComposite 25 26
-              29:    6(float) Constant 0
-              30:    6(float) Constant 1031798784
-              31:    8(fvec2) ConstantComposite 29 30
-              33:    6(float) Constant 1044381696
-              34:    6(float) Constant 3200253952
-              35:    8(fvec2) ConstantComposite 33 34
-              37:    6(float) Constant 1054867456
-              38:    8(fvec2) ConstantComposite 37 25
-              41:     14(int) Constant 28
-              50:             TypePointer Input 6(float)
-        51(inF1):     50(ptr) Variable Input
-              54:             TypePointer Input 8(fvec2)
-        55(inF2):     54(ptr) Variable Input
-              58:             TypePointer Input 10(fvec3)
-        59(inF3):     58(ptr) Variable Input
-              62:             TypePointer Input 12(fvec4)
-        63(inF4):     62(ptr) Variable Input
-              66:             TypePointer Input 15(ivec2)
-        67(inI2):     66(ptr) Variable Input
-         4(main):           2 Function None 3
-               5:             Label
-        49(inF1):      7(ptr) Variable Function
-        53(inF2):      9(ptr) Variable Function
-        57(inF3):     11(ptr) Variable Function
-        61(inF4):     13(ptr) Variable Function
-        65(inI2):     16(ptr) Variable Function
-       69(param):      7(ptr) Variable Function
-       71(param):      9(ptr) Variable Function
-       73(param):     11(ptr) Variable Function
-       75(param):     13(ptr) Variable Function
-       77(param):     16(ptr) Variable Function
-              52:    6(float) Load 51(inF1)
-                              Store 49(inF1) 52
-              56:    8(fvec2) Load 55(inF2)
-                              Store 53(inF2) 56
-              60:   10(fvec3) Load 59(inF3)
-                              Store 57(inF3) 60
-              64:   12(fvec4) Load 63(inF4)
-                              Store 61(inF4) 64
-              68:   15(ivec2) Load 67(inI2)
-                              Store 65(inI2) 68
-              70:    6(float) Load 49(inF1)
-                              Store 69(param) 70
-              72:    8(fvec2) Load 53(inF2)
-                              Store 71(param) 72
-              74:   10(fvec3) Load 57(inF3)
-                              Store 73(param) 74
-              76:   12(fvec4) Load 61(inF4)
-                              Store 75(param) 76
-              78:   15(ivec2) Load 65(inI2)
-                              Store 77(param) 78
-              79:           2 FunctionCall 23(@main(f1;vf2;vf3;vf4;vi2;) 69(param) 71(param) 73(param) 75(param) 77(param)
-                              Return
-                              FunctionEnd
-23(@main(f1;vf2;vf3;vf4;vi2;):           2 Function None 17
-        18(inF1):      7(ptr) FunctionParameter
-        19(inF2):      9(ptr) FunctionParameter
-        20(inF3):     11(ptr) FunctionParameter
-        21(inF4):     13(ptr) FunctionParameter
-        22(inI2):     16(ptr) FunctionParameter
-              24:             Label
-              28:    6(float) ExtInst 1(GLSL.std.450) 78(InterpolateAtOffset) 18(inF1) 27
-              32:    8(fvec2) ExtInst 1(GLSL.std.450) 78(InterpolateAtOffset) 19(inF2) 31
-              36:   10(fvec3) ExtInst 1(GLSL.std.450) 78(InterpolateAtOffset) 20(inF3) 35
-              39:   12(fvec4) ExtInst 1(GLSL.std.450) 78(InterpolateAtOffset) 21(inF4) 38
-              40:   15(ivec2) Load 22(inI2)
-              42:   15(ivec2) CompositeConstruct 41 41
-              43:   15(ivec2) ShiftLeftLogical 40 42
-              44:   15(ivec2) CompositeConstruct 41 41
-              45:   15(ivec2) ShiftRightArithmetic 43 44
-              46:    8(fvec2) ConvertSToF 45
-              47:    8(fvec2) VectorTimesScalar 46 30
-              48:    6(float) ExtInst 1(GLSL.std.450) 78(InterpolateAtOffset) 18(inF1) 47
-                              Return
-                              FunctionEnd
diff --git a/Test/baseResults/hlsl.load.2dms.dx10.frag.out b/Test/baseResults/hlsl.load.2dms.dx10.frag.out
index 9986074..02365b8 100644
--- a/Test/baseResults/hlsl.load.2dms.dx10.frag.out
+++ b/Test/baseResults/hlsl.load.2dms.dx10.frag.out
@@ -357,6 +357,7 @@
 0:?     '@entryPointOutput.Depth' ( out float FragDepth)
 0:?     '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
 
+Validation failed
 // Module Version 10000
 // Generated by (magic number): 8000a
 // Id's are bound by 130
diff --git a/Test/baseResults/hlsl.load.offset.dx10.frag.out b/Test/baseResults/hlsl.load.offset.dx10.frag.out
index d0fa5fd..135b4af 100644
--- a/Test/baseResults/hlsl.load.offset.dx10.frag.out
+++ b/Test/baseResults/hlsl.load.offset.dx10.frag.out
@@ -561,6 +561,7 @@
 0:?     '@entryPointOutput.Depth' ( out float FragDepth)
 0:?     '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
 
+Validation failed
 // Module Version 10000
 // Generated by (magic number): 8000a
 // Id's are bound by 201
diff --git a/Test/baseResults/hlsl.load.offsetarray.dx10.frag.out b/Test/baseResults/hlsl.load.offsetarray.dx10.frag.out
index a379068..24aa368 100644
--- a/Test/baseResults/hlsl.load.offsetarray.dx10.frag.out
+++ b/Test/baseResults/hlsl.load.offsetarray.dx10.frag.out
@@ -435,6 +435,7 @@
 0:?     '@entryPointOutput.Depth' ( out float FragDepth)
 0:?     '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
 
+Validation failed
 // Module Version 10000
 // Generated by (magic number): 8000a
 // Id's are bound by 174
diff --git a/Test/baseResults/hlsl.printf.comp.out b/Test/baseResults/hlsl.printf.comp.out
new file mode 100644
index 0000000..ea31c35
--- /dev/null
+++ b/Test/baseResults/hlsl.printf.comp.out
@@ -0,0 +1,178 @@
+hlsl.printf.comp
+Shader version: 500
+local_size = (1, 1, 1)
+0:? Sequence
+0:4  Function Definition: @main( ( temp void)
+0:4    Function Parameters: 
+0:?     Sequence
+0:5      Debug printf ( temp void)
+0:5        Constant:
+0:5          "first string"
+0:6      Debug printf ( temp void)
+0:6        Constant:
+0:6          "please print this message."
+0:7      Debug printf ( temp void)
+0:7        Constant:
+0:7          "Variables are: %d %d %.2f"
+0:7        Constant:
+0:7          1 (const uint)
+0:7        Constant:
+0:7          2 (const uint)
+0:7        Constant:
+0:7          1.500000
+0:8      Debug printf ( temp void)
+0:8        Constant:
+0:8          "Integers are: %d %d %d"
+0:8        Constant:
+0:8          1 (const int)
+0:8        Constant:
+0:8          2 (const int)
+0:8        Constant:
+0:8          3 (const int)
+0:9      Debug printf ( temp void)
+0:9        Constant:
+0:9          "More: %d %d %d %d %d %d %d %d %d %d"
+0:9        Constant:
+0:9          1 (const int)
+0:9        Constant:
+0:9          2 (const int)
+0:9        Constant:
+0:9          3 (const int)
+0:9        Constant:
+0:9          4 (const int)
+0:9        Constant:
+0:9          5 (const int)
+0:9        Constant:
+0:9          6 (const int)
+0:9        Constant:
+0:9          7 (const int)
+0:9        Constant:
+0:9          8 (const int)
+0:9        Constant:
+0:9          9 (const int)
+0:9        Constant:
+0:9          10 (const int)
+0:4  Function Definition: main( ( temp void)
+0:4    Function Parameters: 
+0:?     Sequence
+0:4      Function Call: @main( ( temp void)
+0:?   Linker Objects
+0:?     'first' ( const string)
+0:?       "first string"
+
+
+Linked compute stage:
+
+
+Shader version: 500
+local_size = (1, 1, 1)
+0:? Sequence
+0:4  Function Definition: @main( ( temp void)
+0:4    Function Parameters: 
+0:?     Sequence
+0:5      Debug printf ( temp void)
+0:5        Constant:
+0:5          "first string"
+0:6      Debug printf ( temp void)
+0:6        Constant:
+0:6          "please print this message."
+0:7      Debug printf ( temp void)
+0:7        Constant:
+0:7          "Variables are: %d %d %.2f"
+0:7        Constant:
+0:7          1 (const uint)
+0:7        Constant:
+0:7          2 (const uint)
+0:7        Constant:
+0:7          1.500000
+0:8      Debug printf ( temp void)
+0:8        Constant:
+0:8          "Integers are: %d %d %d"
+0:8        Constant:
+0:8          1 (const int)
+0:8        Constant:
+0:8          2 (const int)
+0:8        Constant:
+0:8          3 (const int)
+0:9      Debug printf ( temp void)
+0:9        Constant:
+0:9          "More: %d %d %d %d %d %d %d %d %d %d"
+0:9        Constant:
+0:9          1 (const int)
+0:9        Constant:
+0:9          2 (const int)
+0:9        Constant:
+0:9          3 (const int)
+0:9        Constant:
+0:9          4 (const int)
+0:9        Constant:
+0:9          5 (const int)
+0:9        Constant:
+0:9          6 (const int)
+0:9        Constant:
+0:9          7 (const int)
+0:9        Constant:
+0:9          8 (const int)
+0:9        Constant:
+0:9          9 (const int)
+0:9        Constant:
+0:9          10 (const int)
+0:4  Function Definition: main( ( temp void)
+0:4    Function Parameters: 
+0:?     Sequence
+0:4      Function Call: @main( ( temp void)
+0:?   Linker Objects
+0:?     'first' ( const string)
+0:?       "first string"
+
+// Module Version 10000
+// Generated by (magic number): 8000a
+// Id's are bound by 36
+
+                              Capability Shader
+                              Extension  "SPV_KHR_non_semantic_info"
+               1:             ExtInstImport  "GLSL.std.450"
+               9:             ExtInstImport  "NonSemantic.DebugPrintf"
+                              MemoryModel Logical GLSL450
+                              EntryPoint GLCompute 4  "main"
+                              ExecutionMode 4 LocalSize 1 1 1
+               8:             String  "first string"
+              11:             String  "please print this message."
+              13:             String  "Variables are: %d %d %.2f"
+              20:             String  "Integers are: %d %d %d"
+              26:             String  "More: %d %d %d %d %d %d %d %d %d %d"
+                              Source HLSL 500
+                              Name 4  "main"
+                              Name 6  "@main("
+               2:             TypeVoid
+               3:             TypeFunction 2
+              14:             TypeInt 32 0
+              15:     14(int) Constant 1
+              16:     14(int) Constant 2
+              17:             TypeFloat 32
+              18:   17(float) Constant 1069547520
+              21:             TypeInt 32 1
+              22:     21(int) Constant 1
+              23:     21(int) Constant 2
+              24:     21(int) Constant 3
+              27:     21(int) Constant 4
+              28:     21(int) Constant 5
+              29:     21(int) Constant 6
+              30:     21(int) Constant 7
+              31:     21(int) Constant 8
+              32:     21(int) Constant 9
+              33:     21(int) Constant 10
+         4(main):           2 Function None 3
+               5:             Label
+              35:           2 FunctionCall 6(@main()
+                              Return
+                              FunctionEnd
+       6(@main():           2 Function None 3
+               7:             Label
+              10:           2 ExtInst 9(NonSemantic.DebugPrintf) 1(DebugPrintf) 8
+              12:           2 ExtInst 9(NonSemantic.DebugPrintf) 1(DebugPrintf) 11
+              19:           2 ExtInst 9(NonSemantic.DebugPrintf) 1(DebugPrintf) 13 15 16 18
+              25:           2 ExtInst 9(NonSemantic.DebugPrintf) 1(DebugPrintf) 20 22 23 24
+              34:           2 ExtInst 9(NonSemantic.DebugPrintf) 1(DebugPrintf) 26 22 23 24 27 28 29 30 31 32 33
+                              Return
+                              FunctionEnd
diff --git a/Test/baseResults/hlsl.round.dx10.frag.out b/Test/baseResults/hlsl.round.dx10.frag.out
new file mode 100644
index 0000000..be72dc5
--- /dev/null
+++ b/Test/baseResults/hlsl.round.dx10.frag.out
@@ -0,0 +1,60 @@
+hlsl.round.dx10.frag
+Shader version: 500
+gl_FragCoord origin is upper left
+0:? Sequence
+0:2  Function Definition: PixelShaderFunction(vf4; ( temp 4-component vector of float)
+0:2    Function Parameters: 
+0:2      'input' ( in 4-component vector of float)
+0:?     Sequence
+0:3      Branch: Return with expression
+0:3        roundEven ( temp 4-component vector of float)
+0:3          'input' ( in 4-component vector of float)
+0:?   Linker Objects
+
+
+Linked fragment stage:
+
+WARNING: Linking fragment stage: Entry point not found
+
+Shader version: 500
+gl_FragCoord origin is upper left
+0:? Sequence
+0:2  Function Definition: PixelShaderFunction(vf4; ( temp 4-component vector of float)
+0:2    Function Parameters: 
+0:2      'input' ( in 4-component vector of float)
+0:?     Sequence
+0:3      Branch: Return with expression
+0:3        roundEven ( temp 4-component vector of float)
+0:3          'input' ( in 4-component vector of float)
+0:?   Linker Objects
+
+// Module Version 10000
+// Generated by (magic number): 8000a
+// Id's are bound by 17
+
+                              Capability Shader
+               1:             ExtInstImport  "GLSL.std.450"
+                              MemoryModel Logical GLSL450
+                              EntryPoint Fragment 4  "main"
+                              ExecutionMode 4 OriginUpperLeft
+                              Source HLSL 500
+                              Name 4  "main"
+                              Name 11  "PixelShaderFunction(vf4;"
+                              Name 10  "input"
+               2:             TypeVoid
+               3:             TypeFunction 2
+               6:             TypeFloat 32
+               7:             TypeVector 6(float) 4
+               8:             TypePointer Function 7(fvec4)
+               9:             TypeFunction 7(fvec4) 8(ptr)
+         4(main):           2 Function None 3
+               5:             Label
+                              Return
+                              FunctionEnd
+11(PixelShaderFunction(vf4;):    7(fvec4) Function None 9
+       10(input):      8(ptr) FunctionParameter
+              12:             Label
+              13:    7(fvec4) Load 10(input)
+              14:    7(fvec4) ExtInst 1(GLSL.std.450) 2(RoundEven) 13
+                              ReturnValue 14
+                              FunctionEnd
diff --git a/Test/baseResults/hlsl.round.dx9.frag.out b/Test/baseResults/hlsl.round.dx9.frag.out
new file mode 100644
index 0000000..9333c7d
--- /dev/null
+++ b/Test/baseResults/hlsl.round.dx9.frag.out
@@ -0,0 +1,70 @@
+hlsl.round.dx9.frag
+Shader version: 500
+gl_FragCoord origin is upper left
+0:? Sequence
+0:2  Function Definition: PixelShaderFunction(vf4; ( temp 4-component vector of float)
+0:2    Function Parameters: 
+0:2      'input' ( in 4-component vector of float)
+0:?     Sequence
+0:3      Branch: Return with expression
+0:3        round ( temp 4-component vector of float)
+0:3          'input' ( in 4-component vector of float)
+0:?   Linker Objects
+
+
+Linked fragment stage:
+
+WARNING: Linking fragment stage: Entry point not found
+
+Shader version: 500
+gl_FragCoord origin is upper left
+0:? Sequence
+0:2  Function Definition: PixelShaderFunction(vf4; ( temp 4-component vector of float)
+0:2    Function Parameters: 
+0:2      'input' ( in 4-component vector of float)
+0:?     Sequence
+0:3      Branch: Return with expression
+0:3        round ( temp 4-component vector of float)
+0:3          'input' ( in 4-component vector of float)
+0:?   Linker Objects
+
+// Module Version 10000
+// Generated by (magic number): 8000a
+// Id's are bound by 18
+
+                              Capability Shader
+               2:             ExtInstImport  "GLSL.std.450"
+                              MemoryModel Logical GLSL450
+                              EntryPoint Fragment 5  "main"
+                              ExecutionMode 5 OriginUpperLeft
+               1:             String  ""
+                              Source HLSL 500 1  "// OpModuleProcessed auto-map-locations
+// OpModuleProcessed auto-map-bindings
+// OpModuleProcessed entry-point main
+// OpModuleProcessed client vulkan100
+// OpModuleProcessed target-env vulkan1.0
+// OpModuleProcessed keep-uncalled
+// OpModuleProcessed hlsl-offsets
+#line 1
+"
+                              Name 5  "main"
+                              Name 12  "PixelShaderFunction(vf4;"
+                              Name 11  "input"
+               3:             TypeVoid
+               4:             TypeFunction 3
+               7:             TypeFloat 32
+               8:             TypeVector 7(float) 4
+               9:             TypePointer Function 8(fvec4)
+              10:             TypeFunction 8(fvec4) 9(ptr)
+         5(main):           3 Function None 4
+               6:             Label
+                              Return
+                              FunctionEnd
+12(PixelShaderFunction(vf4;):    8(fvec4) Function None 10
+       11(input):      9(ptr) FunctionParameter
+              13:             Label
+                              Line 1 3 0
+              14:    8(fvec4) Load 11(input)
+              15:    8(fvec4) ExtInst 2(GLSL.std.450) 1(Round) 14
+                              ReturnValue 15
+                              FunctionEnd
diff --git a/Test/baseResults/hlsl.rw.register.frag.out b/Test/baseResults/hlsl.rw.register.frag.out
index 35b4758..7bcecc9 100644
--- a/Test/baseResults/hlsl.rw.register.frag.out
+++ b/Test/baseResults/hlsl.rw.register.frag.out
@@ -97,6 +97,7 @@
 0:?     'g_tBuf1du1' (layout( binding=3 r32ui) uniform uimageBuffer)
 0:?     '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
 
+Validation failed
 // Module Version 10000
 // Generated by (magic number): 8000a
 // Id's are bound by 42
diff --git a/Test/baseResults/hlsl.rw.scalar.bracket.frag.out b/Test/baseResults/hlsl.rw.scalar.bracket.frag.out
index 2c67075..0614677 100644
--- a/Test/baseResults/hlsl.rw.scalar.bracket.frag.out
+++ b/Test/baseResults/hlsl.rw.scalar.bracket.frag.out
@@ -1689,6 +1689,7 @@
 0:?     'anon@0' (layout( row_major std140) uniform block{ uniform int c1,  uniform 2-component vector of int c2,  uniform 3-component vector of int c3,  uniform 4-component vector of int c4,  uniform int o1,  uniform 2-component vector of int o2,  uniform 3-component vector of int o3,  uniform 4-component vector of int o4,  uniform float uf1,  uniform int ui1,  uniform uint uu1})
 0:?     '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
 
+Validation failed
 // Module Version 10000
 // Generated by (magic number): 8000a
 // Id's are bound by 571
diff --git a/Test/baseResults/hlsl.rw.vec2.bracket.frag.out b/Test/baseResults/hlsl.rw.vec2.bracket.frag.out
index 093665c..68e40de 100644
--- a/Test/baseResults/hlsl.rw.vec2.bracket.frag.out
+++ b/Test/baseResults/hlsl.rw.vec2.bracket.frag.out
@@ -1707,6 +1707,7 @@
 0:?     'anon@0' (layout( row_major std140) uniform block{ uniform int c1,  uniform 2-component vector of int c2,  uniform 3-component vector of int c3,  uniform 4-component vector of int c4,  uniform int o1,  uniform 2-component vector of int o2,  uniform 3-component vector of int o3,  uniform 4-component vector of int o4,  uniform 2-component vector of float uf2,  uniform 2-component vector of int ui2,  uniform 2-component vector of uint uu2})
 0:?     '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
 
+Validation failed
 // Module Version 10000
 // Generated by (magic number): 8000a
 // Id's are bound by 605
diff --git a/Test/baseResults/hlsl.singleArgIntPromo.vert.out b/Test/baseResults/hlsl.singleArgIntPromo.vert.out
old mode 100755
new mode 100644
diff --git a/Test/baseResults/hlsl.specConstant.frag.out b/Test/baseResults/hlsl.specConstant.frag.out
old mode 100755
new mode 100644
diff --git a/Test/baseResults/hlsl.structbuffer.append.fn.frag.out b/Test/baseResults/hlsl.structbuffer.append.fn.frag.out
index 6a239da..2ac904e 100644
--- a/Test/baseResults/hlsl.structbuffer.append.fn.frag.out
+++ b/Test/baseResults/hlsl.structbuffer.append.fn.frag.out
@@ -190,13 +190,13 @@
                               Decorate 9 BufferBlock
                               Decorate 12 BufferBlock
                               Decorate 49(sbuf_a) DescriptorSet 0
-                              Decorate 49(sbuf_a) Binding 4
+                              Decorate 49(sbuf_a) Binding 0
                               Decorate 50(sbuf_a@count) DescriptorSet 0
-                              Decorate 50(sbuf_a@count) Binding 6
+                              Decorate 50(sbuf_a@count) Binding 0
                               Decorate 51(sbuf_c) DescriptorSet 0
-                              Decorate 51(sbuf_c) Binding 5
+                              Decorate 51(sbuf_c) Binding 1
                               Decorate 52(sbuf_c@count) DescriptorSet 0
-                              Decorate 52(sbuf_c@count) Binding 7
+                              Decorate 52(sbuf_c@count) Binding 0
                               Decorate 58(pos) Flat
                               Decorate 58(pos) Location 0
                               Decorate 61(@entryPointOutput) Location 0
diff --git a/Test/baseResults/hlsl.structbuffer.fn.frag.out b/Test/baseResults/hlsl.structbuffer.fn.frag.out
index c5afd35..bd2a4e6 100644
--- a/Test/baseResults/hlsl.structbuffer.fn.frag.out
+++ b/Test/baseResults/hlsl.structbuffer.fn.frag.out
@@ -191,9 +191,9 @@
                               Decorate 18 BufferBlock
                               Decorate 20 BufferBlock
                               Decorate 47(sbuf2) DescriptorSet 0
-                              Decorate 47(sbuf2) Binding 2
+                              Decorate 47(sbuf2) Binding 0
                               Decorate 48(sbuf2@count) DescriptorSet 0
-                              Decorate 48(sbuf2@count) Binding 3
+                              Decorate 48(sbuf2@count) Binding 0
                               Decorate 50(sbuf) DescriptorSet 0
                               Decorate 50(sbuf) Binding 10
                               Decorate 63(pos) Flat
diff --git a/Test/baseResults/iomap.crossStage.2.vert.out b/Test/baseResults/iomap.crossStage.2.vert.out
new file mode 100644
index 0000000..325c1b4
--- /dev/null
+++ b/Test/baseResults/iomap.crossStage.2.vert.out
@@ -0,0 +1,787 @@
+iomap.crossStage.2.vert
+Shader version: 460
+0:? Sequence
+0:32  Function Definition: main( ( global void)
+0:32    Function Parameters: 
+0:34    Sequence
+0:34      move second child to first child ( temp 4-component vector of float)
+0:34        'vgo1' ( smooth out 4-component vector of float)
+0:34        Constant:
+0:34          0.000000
+0:34          0.000000
+0:34          0.000000
+0:34          0.000000
+0:35      move second child to first child ( temp 2-component vector of float)
+0:35        'vgo2' ( smooth out 2-component vector of float)
+0:35        Constant:
+0:35          0.000000
+0:35          0.000000
+0:36      move second child to first child ( temp 4-component vector of float)
+0:36        o3: direct index for structure ( out 4-component vector of float)
+0:36          'anon@0' (layout( location=5) out block{ out 4-component vector of float o3})
+0:36          Constant:
+0:36            0 (const uint)
+0:36        Constant:
+0:36          0.000000
+0:36          0.000000
+0:36          0.000000
+0:36          0.000000
+0:?   Linker Objects
+0:?     'vgo1' ( smooth out 4-component vector of float)
+0:?     'vgo2' ( smooth out 2-component vector of float)
+0:?     'anon@0' (layout( location=5) out block{ out 4-component vector of float o3})
+0:?     'u1' ( uniform 2-component vector of float)
+0:?     'u2' ( uniform 3-component vector of float)
+0:?       0.000000
+0:?       0.000000
+0:?       0.000000
+0:?     'u3' ( uniform 4-component vector of float)
+0:?       0.000000
+0:?       0.000000
+0:?       0.000000
+0:?       0.000000
+0:?     'um2' ( uniform 2X2 matrix of float)
+0:?       4.000000
+0:?       0.000000
+0:?       0.000000
+0:?       4.000000
+0:?     'glass' (layout( location=0 binding=0) uniform sampler2D)
+0:?     'anon@1' (layout( column_major std140) uniform block{layout( column_major std140) uniform 4-component vector of float a, layout( column_major std140) uniform 4-component vector of float b})
+0:?     'anon@2' (layout( column_major std430) buffer block{layout( column_major std430) buffer 2-component vector of float vb1})
+0:?     'blockName1' (layout( column_major std140) uniform 2-element array of block{layout( column_major std140) uniform 4-component vector of float a, layout( column_major std140) uniform 2-component vector of float b})
+0:?     'gl_VertexID' ( gl_VertexId int VertexId)
+0:?     'gl_InstanceID' ( gl_InstanceId int InstanceId)
+
+iomap.crossStage.2.geom
+Shader version: 460
+invocations = -1
+max_vertices = 3
+input primitive = points
+output primitive = triangle_strip
+0:? Sequence
+0:29  Function Definition: main( ( global void)
+0:29    Function Parameters: 
+0:31    Sequence
+0:31      Sequence
+0:31        Sequence
+0:31          move second child to first child ( temp int)
+0:31            'i' ( temp int)
+0:31            Constant:
+0:31              0 (const int)
+0:31        Loop with condition tested first
+0:31          Loop Condition
+0:31          Compare Less Than ( temp bool)
+0:31            'i' ( temp int)
+0:31            Constant:
+0:31              3 (const int)
+0:31          Loop Body
+0:32          Sequence
+0:32            move second child to first child ( temp 4-component vector of float)
+0:32              'gfo1' (layout( stream=0) out 4-component vector of float)
+0:32              Constant:
+0:32                0.000000
+0:32                0.000000
+0:32                0.000000
+0:32                0.000000
+0:33            move second child to first child ( temp 2-component vector of float)
+0:33              'gfo2' (layout( stream=0) out 2-component vector of float)
+0:33              Constant:
+0:33                0.000000
+0:33                0.000000
+0:34            move second child to first child ( temp 4-component vector of float)
+0:34              o3: direct index for structure (layout( stream=0) out 4-component vector of float)
+0:34                'gf_out' (layout( location=5 stream=0) out block{layout( stream=0) out 4-component vector of float o3})
+0:34                Constant:
+0:34                  0 (const int)
+0:34              o3: direct index for structure ( in 4-component vector of float)
+0:34                indirect index (layout( location=5) temp block{ in 4-component vector of float o3})
+0:34                  'inBlock' (layout( location=5) in 1-element array of block{ in 4-component vector of float o3})
+0:34                  'i' ( temp int)
+0:34                Constant:
+0:34                  0 (const int)
+0:35            EmitVertex ( global void)
+0:31          Loop Terminal Expression
+0:31          Post-Increment ( temp int)
+0:31            'i' ( temp int)
+0:37      EndPrimitive ( global void)
+0:?   Linker Objects
+0:?     'vgo1' ( in 1-element array of 4-component vector of float)
+0:?     'vgo2' ( in 1-element array of 2-component vector of float)
+0:?     'inBlock' (layout( location=5) in 1-element array of block{ in 4-component vector of float o3})
+0:?     'gfo1' (layout( stream=0) out 4-component vector of float)
+0:?     'gfo2' (layout( stream=0) out 2-component vector of float)
+0:?     'gf_out' (layout( location=5 stream=0) out block{layout( stream=0) out 4-component vector of float o3})
+0:?     'u1' ( uniform 2-component vector of float)
+0:?     'u2' ( uniform 3-component vector of float)
+0:?       0.000000
+0:?       0.000000
+0:?       0.000000
+0:?     'u3' ( uniform 4-component vector of float)
+0:?       0.000000
+0:?       0.000000
+0:?       0.000000
+0:?       0.000000
+0:?     'blockName1' (layout( column_major std140) uniform 2-element array of block{layout( column_major std140) uniform 4-component vector of float a, layout( column_major std140) uniform 2-component vector of float b})
+
+iomap.crossStage.2.frag
+Shader version: 460
+0:? Sequence
+0:37  Function Definition: main( ( global void)
+0:37    Function Parameters: 
+0:39    Sequence
+0:39      Sequence
+0:39        move second child to first child ( temp 4-component vector of float)
+0:39          'color' ( temp 4-component vector of float)
+0:39          component-wise multiply ( temp 4-component vector of float)
+0:39            component-wise multiply ( temp 4-component vector of float)
+0:39              component-wise multiply ( temp 4-component vector of float)
+0:39                'gfo1' ( smooth in 4-component vector of float)
+0:39                vector swizzle ( temp 4-component vector of float)
+0:39                  'u1' ( uniform 2-component vector of float)
+0:39                  Sequence
+0:39                    Constant:
+0:39                      0 (const int)
+0:39                    Constant:
+0:39                      1 (const int)
+0:39                    Constant:
+0:39                      0 (const int)
+0:39                    Constant:
+0:39                      1 (const int)
+0:39              vector swizzle ( temp 4-component vector of float)
+0:39                'u2' ( uniform 3-component vector of float)
+0:39                Sequence
+0:39                  Constant:
+0:39                    0 (const int)
+0:39                  Constant:
+0:39                    1 (const int)
+0:39                  Constant:
+0:39                    2 (const int)
+0:39                  Constant:
+0:39                    0 (const int)
+0:39            vector swizzle ( temp 4-component vector of float)
+0:39              'u3' ( uniform 4-component vector of float)
+0:39                0.000000
+0:39                0.000000
+0:39                0.000000
+0:39                0.000000
+0:39              Sequence
+0:39                Constant:
+0:39                  0 (const int)
+0:39                Constant:
+0:39                  1 (const int)
+0:39                Constant:
+0:39                  2 (const int)
+0:39                Constant:
+0:39                  3 (const int)
+0:40      move second child to first child ( temp 4-component vector of float)
+0:40        'outColor' ( out 4-component vector of float)
+0:40        'color' ( temp 4-component vector of float)
+0:?   Linker Objects
+0:?     'anon@0' (layout( location=5) in block{ in 4-component vector of float o3})
+0:?     'gfo1' ( smooth in 4-component vector of float)
+0:?     'gfo2' ( smooth in 2-component vector of float)
+0:?     'outColor' ( out 4-component vector of float)
+0:?     'u1' ( uniform 2-component vector of float)
+0:?     'u2' ( uniform 3-component vector of float)
+0:?     'u3' ( uniform 4-component vector of float)
+0:?       0.000000
+0:?       0.000000
+0:?       0.000000
+0:?       0.000000
+0:?     'um2' ( uniform 2X2 matrix of float)
+0:?       4.000000
+0:?       0.000000
+0:?       0.000000
+0:?       4.000000
+0:?     'glass' (layout( location=0 binding=0) uniform sampler2D)
+0:?     'anon@1' (layout( column_major std140) uniform block{layout( column_major std140) uniform 4-component vector of float a, layout( column_major std140) uniform 4-component vector of float b})
+0:?     'anon@2' (layout( column_major std430) buffer block{layout( column_major std430) buffer 2-component vector of float fb1})
+0:?     'blockName2' (layout( column_major std140) uniform 2-element array of block{layout( column_major std140) uniform 4-component vector of float a, layout( column_major std140) uniform 2-component vector of float b})
+
+
+Linked vertex stage:
+
+
+Linked geometry stage:
+
+
+Linked fragment stage:
+
+WARNING: Linking unknown stage stage: Matched shader interfaces are using different instance names.
+    blockName1: "layout( column_major std140) uniform 2-element array of block{layout( column_major std140) uniform 4-component vector of float a, layout( column_major std140) uniform 2-component vector of float b}" versus blockName2: "layout( column_major std140) uniform 2-element array of block{layout( column_major std140) uniform 4-component vector of float a, layout( column_major std140) uniform 2-component vector of float b}"
+
+Shader version: 460
+0:? Sequence
+0:32  Function Definition: main( ( global void)
+0:32    Function Parameters: 
+0:34    Sequence
+0:34      move second child to first child ( temp 4-component vector of float)
+0:34        'vgo1' ( smooth out 4-component vector of float)
+0:34        Constant:
+0:34          0.000000
+0:34          0.000000
+0:34          0.000000
+0:34          0.000000
+0:35      move second child to first child ( temp 2-component vector of float)
+0:35        'vgo2' ( smooth out 2-component vector of float)
+0:35        Constant:
+0:35          0.000000
+0:35          0.000000
+0:36      move second child to first child ( temp 4-component vector of float)
+0:36        o3: direct index for structure ( out 4-component vector of float)
+0:36          'anon@0' (layout( location=5) out block{ out 4-component vector of float o3})
+0:36          Constant:
+0:36            0 (const uint)
+0:36        Constant:
+0:36          0.000000
+0:36          0.000000
+0:36          0.000000
+0:36          0.000000
+0:?   Linker Objects
+0:?     'vgo1' ( smooth out 4-component vector of float)
+0:?     'vgo2' ( smooth out 2-component vector of float)
+0:?     'anon@0' (layout( location=5) out block{ out 4-component vector of float o3})
+0:?     'u1' ( uniform 2-component vector of float)
+0:?     'u2' ( uniform 3-component vector of float)
+0:?       0.000000
+0:?       0.000000
+0:?       0.000000
+0:?     'u3' ( uniform 4-component vector of float)
+0:?       0.000000
+0:?       0.000000
+0:?       0.000000
+0:?       0.000000
+0:?     'um2' ( uniform 2X2 matrix of float)
+0:?       4.000000
+0:?       0.000000
+0:?       0.000000
+0:?       4.000000
+0:?     'glass' (layout( location=0 binding=0) uniform sampler2D)
+0:?     'anon@1' (layout( column_major std140) uniform block{layout( column_major std140) uniform 4-component vector of float a, layout( column_major std140) uniform 4-component vector of float b})
+0:?     'anon@2' (layout( column_major std430) buffer block{layout( column_major std430) buffer 2-component vector of float vb1})
+0:?     'blockName1' (layout( column_major std140) uniform 2-element array of block{layout( column_major std140) uniform 4-component vector of float a, layout( column_major std140) uniform 2-component vector of float b})
+0:?     'gl_VertexID' ( gl_VertexId int VertexId)
+0:?     'gl_InstanceID' ( gl_InstanceId int InstanceId)
+Shader version: 460
+invocations = 1
+max_vertices = 3
+input primitive = points
+output primitive = triangle_strip
+0:? Sequence
+0:29  Function Definition: main( ( global void)
+0:29    Function Parameters: 
+0:31    Sequence
+0:31      Sequence
+0:31        Sequence
+0:31          move second child to first child ( temp int)
+0:31            'i' ( temp int)
+0:31            Constant:
+0:31              0 (const int)
+0:31        Loop with condition tested first
+0:31          Loop Condition
+0:31          Compare Less Than ( temp bool)
+0:31            'i' ( temp int)
+0:31            Constant:
+0:31              3 (const int)
+0:31          Loop Body
+0:32          Sequence
+0:32            move second child to first child ( temp 4-component vector of float)
+0:32              'gfo1' (layout( stream=0) out 4-component vector of float)
+0:32              Constant:
+0:32                0.000000
+0:32                0.000000
+0:32                0.000000
+0:32                0.000000
+0:33            move second child to first child ( temp 2-component vector of float)
+0:33              'gfo2' (layout( stream=0) out 2-component vector of float)
+0:33              Constant:
+0:33                0.000000
+0:33                0.000000
+0:34            move second child to first child ( temp 4-component vector of float)
+0:34              o3: direct index for structure (layout( stream=0) out 4-component vector of float)
+0:34                'gf_out' (layout( location=5 stream=0) out block{layout( stream=0) out 4-component vector of float o3})
+0:34                Constant:
+0:34                  0 (const int)
+0:34              o3: direct index for structure ( in 4-component vector of float)
+0:34                indirect index (layout( location=5) temp block{ in 4-component vector of float o3})
+0:34                  'inBlock' (layout( location=5) in 1-element array of block{ in 4-component vector of float o3})
+0:34                  'i' ( temp int)
+0:34                Constant:
+0:34                  0 (const int)
+0:35            EmitVertex ( global void)
+0:31          Loop Terminal Expression
+0:31          Post-Increment ( temp int)
+0:31            'i' ( temp int)
+0:37      EndPrimitive ( global void)
+0:?   Linker Objects
+0:?     'vgo1' ( in 1-element array of 4-component vector of float)
+0:?     'vgo2' ( in 1-element array of 2-component vector of float)
+0:?     'inBlock' (layout( location=5) in 1-element array of block{ in 4-component vector of float o3})
+0:?     'gfo1' (layout( stream=0) out 4-component vector of float)
+0:?     'gfo2' (layout( stream=0) out 2-component vector of float)
+0:?     'gf_out' (layout( location=5 stream=0) out block{layout( stream=0) out 4-component vector of float o3})
+0:?     'u1' ( uniform 2-component vector of float)
+0:?     'u2' ( uniform 3-component vector of float)
+0:?       0.000000
+0:?       0.000000
+0:?       0.000000
+0:?     'u3' ( uniform 4-component vector of float)
+0:?       0.000000
+0:?       0.000000
+0:?       0.000000
+0:?       0.000000
+0:?     'blockName1' (layout( column_major std140) uniform 2-element array of block{layout( column_major std140) uniform 4-component vector of float a, layout( column_major std140) uniform 2-component vector of float b})
+Shader version: 460
+0:? Sequence
+0:37  Function Definition: main( ( global void)
+0:37    Function Parameters: 
+0:39    Sequence
+0:39      Sequence
+0:39        move second child to first child ( temp 4-component vector of float)
+0:39          'color' ( temp 4-component vector of float)
+0:39          component-wise multiply ( temp 4-component vector of float)
+0:39            component-wise multiply ( temp 4-component vector of float)
+0:39              component-wise multiply ( temp 4-component vector of float)
+0:39                'gfo1' ( smooth in 4-component vector of float)
+0:39                vector swizzle ( temp 4-component vector of float)
+0:39                  'u1' ( uniform 2-component vector of float)
+0:39                  Sequence
+0:39                    Constant:
+0:39                      0 (const int)
+0:39                    Constant:
+0:39                      1 (const int)
+0:39                    Constant:
+0:39                      0 (const int)
+0:39                    Constant:
+0:39                      1 (const int)
+0:39              vector swizzle ( temp 4-component vector of float)
+0:39                'u2' ( uniform 3-component vector of float)
+0:39                Sequence
+0:39                  Constant:
+0:39                    0 (const int)
+0:39                  Constant:
+0:39                    1 (const int)
+0:39                  Constant:
+0:39                    2 (const int)
+0:39                  Constant:
+0:39                    0 (const int)
+0:39            vector swizzle ( temp 4-component vector of float)
+0:39              'u3' ( uniform 4-component vector of float)
+0:39                0.000000
+0:39                0.000000
+0:39                0.000000
+0:39                0.000000
+0:39              Sequence
+0:39                Constant:
+0:39                  0 (const int)
+0:39                Constant:
+0:39                  1 (const int)
+0:39                Constant:
+0:39                  2 (const int)
+0:39                Constant:
+0:39                  3 (const int)
+0:40      move second child to first child ( temp 4-component vector of float)
+0:40        'outColor' ( out 4-component vector of float)
+0:40        'color' ( temp 4-component vector of float)
+0:?   Linker Objects
+0:?     'anon@0' (layout( location=5) in block{ in 4-component vector of float o3})
+0:?     'gfo1' ( smooth in 4-component vector of float)
+0:?     'gfo2' ( smooth in 2-component vector of float)
+0:?     'outColor' ( out 4-component vector of float)
+0:?     'u1' ( uniform 2-component vector of float)
+0:?     'u2' ( uniform 3-component vector of float)
+0:?     'u3' ( uniform 4-component vector of float)
+0:?       0.000000
+0:?       0.000000
+0:?       0.000000
+0:?       0.000000
+0:?     'um2' ( uniform 2X2 matrix of float)
+0:?       4.000000
+0:?       0.000000
+0:?       0.000000
+0:?       4.000000
+0:?     'glass' (layout( location=0 binding=0) uniform sampler2D)
+0:?     'anon@1' (layout( column_major std140) uniform block{layout( column_major std140) uniform 4-component vector of float a, layout( column_major std140) uniform 4-component vector of float b})
+0:?     'anon@2' (layout( column_major std430) buffer block{layout( column_major std430) buffer 2-component vector of float fb1})
+0:?     'blockName2' (layout( column_major std140) uniform 2-element array of block{layout( column_major std140) uniform 4-component vector of float a, layout( column_major std140) uniform 2-component vector of float b})
+
+// Module Version 10000
+// Generated by (magic number): 8000a
+// Id's are bound by 56
+
+                              Capability Shader
+               1:             ExtInstImport  "GLSL.std.450"
+                              MemoryModel Logical GLSL450
+                              EntryPoint Vertex 4  "main" 9 14 18 54 55
+                              Source GLSL 460
+                              Name 4  "main"
+                              Name 9  "vgo1"
+                              Name 14  "vgo2"
+                              Name 16  "outBlock"
+                              MemberName 16(outBlock) 0  "o3"
+                              Name 18  ""
+                              Name 23  "u1"
+                              Name 27  "u2"
+                              Name 29  "u3"
+                              Name 36  "um2"
+                              Name 40  "glass"
+                              Name 41  "crossStageBlock1"
+                              MemberName 41(crossStageBlock1) 0  "a"
+                              MemberName 41(crossStageBlock1) 1  "b"
+                              Name 43  ""
+                              Name 44  "vertOnlyBlock"
+                              MemberName 44(vertOnlyBlock) 0  "vb1"
+                              Name 46  ""
+                              Name 47  "crossStageBlock2"
+                              MemberName 47(crossStageBlock2) 0  "a"
+                              MemberName 47(crossStageBlock2) 1  "b"
+                              Name 52  "blockName1"
+                              Name 54  "gl_VertexID"
+                              Name 55  "gl_InstanceID"
+                              Decorate 9(vgo1) Location 0
+                              Decorate 14(vgo2) Location 1
+                              Decorate 16(outBlock) Block
+                              Decorate 18 Location 5
+                              Decorate 23(u1) Location 1
+                              Decorate 23(u1) DescriptorSet 0
+                              Decorate 27(u2) Location 2
+                              Decorate 27(u2) DescriptorSet 0
+                              Decorate 29(u3) Location 3
+                              Decorate 29(u3) DescriptorSet 0
+                              Decorate 36(um2) Location 4
+                              Decorate 36(um2) DescriptorSet 0
+                              Decorate 40(glass) Location 0
+                              Decorate 40(glass) DescriptorSet 0
+                              Decorate 40(glass) Binding 0
+                              MemberDecorate 41(crossStageBlock1) 0 Offset 0
+                              MemberDecorate 41(crossStageBlock1) 1 Offset 16
+                              Decorate 41(crossStageBlock1) Block
+                              Decorate 43 DescriptorSet 0
+                              Decorate 43 Binding 0
+                              MemberDecorate 44(vertOnlyBlock) 0 Offset 0
+                              Decorate 44(vertOnlyBlock) BufferBlock
+                              Decorate 46 DescriptorSet 0
+                              Decorate 46 Binding 0
+                              MemberDecorate 47(crossStageBlock2) 0 Offset 0
+                              MemberDecorate 47(crossStageBlock2) 1 Offset 16
+                              Decorate 47(crossStageBlock2) Block
+                              Decorate 52(blockName1) DescriptorSet 0
+                              Decorate 52(blockName1) Binding 0
+                              Decorate 54(gl_VertexID) BuiltIn VertexId
+                              Decorate 55(gl_InstanceID) BuiltIn InstanceId
+               2:             TypeVoid
+               3:             TypeFunction 2
+               6:             TypeFloat 32
+               7:             TypeVector 6(float) 4
+               8:             TypePointer Output 7(fvec4)
+         9(vgo1):      8(ptr) Variable Output
+              10:    6(float) Constant 0
+              11:    7(fvec4) ConstantComposite 10 10 10 10
+              12:             TypeVector 6(float) 2
+              13:             TypePointer Output 12(fvec2)
+        14(vgo2):     13(ptr) Variable Output
+              15:   12(fvec2) ConstantComposite 10 10
+    16(outBlock):             TypeStruct 7(fvec4)
+              17:             TypePointer Output 16(outBlock)
+              18:     17(ptr) Variable Output
+              19:             TypeInt 32 1
+              20:     19(int) Constant 0
+              22:             TypePointer UniformConstant 12(fvec2)
+          23(u1):     22(ptr) Variable UniformConstant
+              24:             TypeVector 6(float) 3
+              25:   24(fvec3) ConstantComposite 10 10 10
+              26:             TypePointer UniformConstant 24(fvec3)
+          27(u2):     26(ptr) Variable UniformConstant 25
+              28:             TypePointer UniformConstant 7(fvec4)
+          29(u3):     28(ptr) Variable UniformConstant 11
+              30:             TypeMatrix 12(fvec2) 2
+              31:    6(float) Constant 1082130432
+              32:   12(fvec2) ConstantComposite 31 10
+              33:   12(fvec2) ConstantComposite 10 31
+              34:          30 ConstantComposite 32 33
+              35:             TypePointer UniformConstant 30
+         36(um2):     35(ptr) Variable UniformConstant 34
+              37:             TypeImage 6(float) 2D sampled format:Unknown
+              38:             TypeSampledImage 37
+              39:             TypePointer UniformConstant 38
+       40(glass):     39(ptr) Variable UniformConstant
+41(crossStageBlock1):             TypeStruct 7(fvec4) 7(fvec4)
+              42:             TypePointer Uniform 41(crossStageBlock1)
+              43:     42(ptr) Variable Uniform
+44(vertOnlyBlock):             TypeStruct 12(fvec2)
+              45:             TypePointer Uniform 44(vertOnlyBlock)
+              46:     45(ptr) Variable Uniform
+47(crossStageBlock2):             TypeStruct 7(fvec4) 12(fvec2)
+              48:             TypeInt 32 0
+              49:     48(int) Constant 2
+              50:             TypeArray 47(crossStageBlock2) 49
+              51:             TypePointer Uniform 50
+  52(blockName1):     51(ptr) Variable Uniform
+              53:             TypePointer Input 19(int)
+ 54(gl_VertexID):     53(ptr) Variable Input
+55(gl_InstanceID):     53(ptr) Variable Input
+         4(main):           2 Function None 3
+               5:             Label
+                              Store 9(vgo1) 11
+                              Store 14(vgo2) 15
+              21:      8(ptr) AccessChain 18 20
+                              Store 21 11
+                              Return
+                              FunctionEnd
+// Module Version 10000
+// Generated by (magic number): 8000a
+// Id's are bound by 65
+
+                              Capability Geometry
+               1:             ExtInstImport  "GLSL.std.450"
+                              MemoryModel Logical GLSL450
+                              EntryPoint Geometry 4  "main" 22 27 31 37 48 51
+                              ExecutionMode 4 InputPoints
+                              ExecutionMode 4 Invocations 1
+                              ExecutionMode 4 OutputTriangleStrip
+                              ExecutionMode 4 OutputVertices 3
+                              Source GLSL 460
+                              Name 4  "main"
+                              Name 8  "i"
+                              Name 22  "gfo1"
+                              Name 27  "gfo2"
+                              Name 29  "outBlock"
+                              MemberName 29(outBlock) 0  "o3"
+                              Name 31  "gf_out"
+                              Name 32  "outBlock"
+                              MemberName 32(outBlock) 0  "o3"
+                              Name 37  "inBlock"
+                              Name 48  "vgo1"
+                              Name 51  "vgo2"
+                              Name 53  "u1"
+                              Name 57  "u2"
+                              Name 59  "u3"
+                              Name 60  "crossStageBlock2"
+                              MemberName 60(crossStageBlock2) 0  "a"
+                              MemberName 60(crossStageBlock2) 1  "b"
+                              Name 64  "blockName1"
+                              Decorate 22(gfo1) Location 0
+                              Decorate 27(gfo2) Location 1
+                              Decorate 29(outBlock) Block
+                              Decorate 31(gf_out) Location 5
+                              Decorate 32(outBlock) Block
+                              Decorate 37(inBlock) Location 5
+                              Decorate 48(vgo1) Location 0
+                              Decorate 51(vgo2) Location 1
+                              Decorate 53(u1) Location 1
+                              Decorate 53(u1) DescriptorSet 0
+                              Decorate 57(u2) Location 2
+                              Decorate 57(u2) DescriptorSet 0
+                              Decorate 59(u3) Location 3
+                              Decorate 59(u3) DescriptorSet 0
+                              MemberDecorate 60(crossStageBlock2) 0 Offset 0
+                              MemberDecorate 60(crossStageBlock2) 1 Offset 16
+                              Decorate 60(crossStageBlock2) Block
+                              Decorate 64(blockName1) DescriptorSet 0
+                              Decorate 64(blockName1) Binding 0
+               2:             TypeVoid
+               3:             TypeFunction 2
+               6:             TypeInt 32 1
+               7:             TypePointer Function 6(int)
+               9:      6(int) Constant 0
+              16:      6(int) Constant 3
+              17:             TypeBool
+              19:             TypeFloat 32
+              20:             TypeVector 19(float) 4
+              21:             TypePointer Output 20(fvec4)
+        22(gfo1):     21(ptr) Variable Output
+              23:   19(float) Constant 0
+              24:   20(fvec4) ConstantComposite 23 23 23 23
+              25:             TypeVector 19(float) 2
+              26:             TypePointer Output 25(fvec2)
+        27(gfo2):     26(ptr) Variable Output
+              28:   25(fvec2) ConstantComposite 23 23
+    29(outBlock):             TypeStruct 20(fvec4)
+              30:             TypePointer Output 29(outBlock)
+      31(gf_out):     30(ptr) Variable Output
+    32(outBlock):             TypeStruct 20(fvec4)
+              33:             TypeInt 32 0
+              34:     33(int) Constant 1
+              35:             TypeArray 32(outBlock) 34
+              36:             TypePointer Input 35
+     37(inBlock):     36(ptr) Variable Input
+              39:             TypePointer Input 20(fvec4)
+              44:      6(int) Constant 1
+              46:             TypeArray 20(fvec4) 34
+              47:             TypePointer Input 46
+        48(vgo1):     47(ptr) Variable Input
+              49:             TypeArray 25(fvec2) 34
+              50:             TypePointer Input 49
+        51(vgo2):     50(ptr) Variable Input
+              52:             TypePointer UniformConstant 25(fvec2)
+          53(u1):     52(ptr) Variable UniformConstant
+              54:             TypeVector 19(float) 3
+              55:   54(fvec3) ConstantComposite 23 23 23
+              56:             TypePointer UniformConstant 54(fvec3)
+          57(u2):     56(ptr) Variable UniformConstant 55
+              58:             TypePointer UniformConstant 20(fvec4)
+          59(u3):     58(ptr) Variable UniformConstant 24
+60(crossStageBlock2):             TypeStruct 20(fvec4) 25(fvec2)
+              61:     33(int) Constant 2
+              62:             TypeArray 60(crossStageBlock2) 61
+              63:             TypePointer Uniform 62
+  64(blockName1):     63(ptr) Variable Uniform
+         4(main):           2 Function None 3
+               5:             Label
+            8(i):      7(ptr) Variable Function
+                              Store 8(i) 9
+                              Branch 10
+              10:             Label
+                              LoopMerge 12 13 None
+                              Branch 14
+              14:             Label
+              15:      6(int) Load 8(i)
+              18:    17(bool) SLessThan 15 16
+                              BranchConditional 18 11 12
+              11:               Label
+                                Store 22(gfo1) 24
+                                Store 27(gfo2) 28
+              38:      6(int)   Load 8(i)
+              40:     39(ptr)   AccessChain 37(inBlock) 38 9
+              41:   20(fvec4)   Load 40
+              42:     21(ptr)   AccessChain 31(gf_out) 9
+                                Store 42 41
+                                EmitVertex
+                                Branch 13
+              13:               Label
+              43:      6(int)   Load 8(i)
+              45:      6(int)   IAdd 43 44
+                                Store 8(i) 45
+                                Branch 10
+              12:             Label
+                              EndPrimitive
+                              Return
+                              FunctionEnd
+// Module Version 10000
+// Generated by (magic number): 8000a
+// Id's are bound by 62
+
+                              Capability Shader
+               1:             ExtInstImport  "GLSL.std.450"
+                              MemoryModel Logical GLSL450
+                              EntryPoint Fragment 4  "main" 11 32 36 38
+                              ExecutionMode 4 OriginLowerLeft
+                              Source GLSL 460
+                              Name 4  "main"
+                              Name 9  "color"
+                              Name 11  "gfo1"
+                              Name 15  "u1"
+                              Name 21  "u2"
+                              Name 28  "u3"
+                              Name 32  "outColor"
+                              Name 34  "outBlock"
+                              MemberName 34(outBlock) 0  "o3"
+                              Name 36  ""
+                              Name 38  "gfo2"
+                              Name 45  "um2"
+                              Name 49  "glass"
+                              Name 50  "crossStageBlock1"
+                              MemberName 50(crossStageBlock1) 0  "a"
+                              MemberName 50(crossStageBlock1) 1  "b"
+                              Name 52  ""
+                              Name 53  "fragOnlyBlock"
+                              MemberName 53(fragOnlyBlock) 0  "fb1"
+                              Name 55  ""
+                              Name 56  "crossStageBlock2"
+                              MemberName 56(crossStageBlock2) 0  "a"
+                              MemberName 56(crossStageBlock2) 1  "b"
+                              Name 61  "blockName2"
+                              Decorate 11(gfo1) Location 0
+                              Decorate 15(u1) Location 1
+                              Decorate 15(u1) DescriptorSet 0
+                              Decorate 21(u2) Location 2
+                              Decorate 21(u2) DescriptorSet 0
+                              Decorate 28(u3) Location 3
+                              Decorate 28(u3) DescriptorSet 0
+                              Decorate 32(outColor) Location 0
+                              Decorate 34(outBlock) Block
+                              Decorate 36 Location 5
+                              Decorate 38(gfo2) Location 1
+                              Decorate 45(um2) Location 4
+                              Decorate 45(um2) DescriptorSet 0
+                              Decorate 49(glass) Location 0
+                              Decorate 49(glass) DescriptorSet 0
+                              Decorate 49(glass) Binding 0
+                              MemberDecorate 50(crossStageBlock1) 0 Offset 0
+                              MemberDecorate 50(crossStageBlock1) 1 Offset 16
+                              Decorate 50(crossStageBlock1) Block
+                              Decorate 52 DescriptorSet 0
+                              Decorate 52 Binding 0
+                              MemberDecorate 53(fragOnlyBlock) 0 Offset 0
+                              Decorate 53(fragOnlyBlock) BufferBlock
+                              Decorate 55 DescriptorSet 0
+                              Decorate 55 Binding 0
+                              MemberDecorate 56(crossStageBlock2) 0 Offset 0
+                              MemberDecorate 56(crossStageBlock2) 1 Offset 16
+                              Decorate 56(crossStageBlock2) Block
+                              Decorate 61(blockName2) DescriptorSet 0
+                              Decorate 61(blockName2) Binding 0
+               2:             TypeVoid
+               3:             TypeFunction 2
+               6:             TypeFloat 32
+               7:             TypeVector 6(float) 4
+               8:             TypePointer Function 7(fvec4)
+              10:             TypePointer Input 7(fvec4)
+        11(gfo1):     10(ptr) Variable Input
+              13:             TypeVector 6(float) 2
+              14:             TypePointer UniformConstant 13(fvec2)
+          15(u1):     14(ptr) Variable UniformConstant
+              19:             TypeVector 6(float) 3
+              20:             TypePointer UniformConstant 19(fvec3)
+          21(u2):     20(ptr) Variable UniformConstant
+              25:    6(float) Constant 0
+              26:    7(fvec4) ConstantComposite 25 25 25 25
+              27:             TypePointer UniformConstant 7(fvec4)
+          28(u3):     27(ptr) Variable UniformConstant 26
+              31:             TypePointer Output 7(fvec4)
+    32(outColor):     31(ptr) Variable Output
+    34(outBlock):             TypeStruct 7(fvec4)
+              35:             TypePointer Input 34(outBlock)
+              36:     35(ptr) Variable Input
+              37:             TypePointer Input 13(fvec2)
+        38(gfo2):     37(ptr) Variable Input
+              39:             TypeMatrix 13(fvec2) 2
+              40:    6(float) Constant 1082130432
+              41:   13(fvec2) ConstantComposite 40 25
+              42:   13(fvec2) ConstantComposite 25 40
+              43:          39 ConstantComposite 41 42
+              44:             TypePointer UniformConstant 39
+         45(um2):     44(ptr) Variable UniformConstant 43
+              46:             TypeImage 6(float) 2D sampled format:Unknown
+              47:             TypeSampledImage 46
+              48:             TypePointer UniformConstant 47
+       49(glass):     48(ptr) Variable UniformConstant
+50(crossStageBlock1):             TypeStruct 7(fvec4) 7(fvec4)
+              51:             TypePointer Uniform 50(crossStageBlock1)
+              52:     51(ptr) Variable Uniform
+53(fragOnlyBlock):             TypeStruct 13(fvec2)
+              54:             TypePointer Uniform 53(fragOnlyBlock)
+              55:     54(ptr) Variable Uniform
+56(crossStageBlock2):             TypeStruct 7(fvec4) 13(fvec2)
+              57:             TypeInt 32 0
+              58:     57(int) Constant 2
+              59:             TypeArray 56(crossStageBlock2) 58
+              60:             TypePointer Uniform 59
+  61(blockName2):     60(ptr) Variable Uniform
+         4(main):           2 Function None 3
+               5:             Label
+        9(color):      8(ptr) Variable Function
+              12:    7(fvec4) Load 11(gfo1)
+              16:   13(fvec2) Load 15(u1)
+              17:    7(fvec4) VectorShuffle 16 16 0 1 0 1
+              18:    7(fvec4) FMul 12 17
+              22:   19(fvec3) Load 21(u2)
+              23:    7(fvec4) VectorShuffle 22 22 0 1 2 0
+              24:    7(fvec4) FMul 18 23
+              29:    7(fvec4) Load 28(u3)
+              30:    7(fvec4) FMul 24 29
+                              Store 9(color) 30
+              33:    7(fvec4) Load 9(color)
+                              Store 32(outColor) 33
+                              Return
+                              FunctionEnd
diff --git a/Test/baseResults/iomap.crossStage.vert.out b/Test/baseResults/iomap.crossStage.vert.out
new file mode 100644
index 0000000..5338b80
--- /dev/null
+++ b/Test/baseResults/iomap.crossStage.vert.out
@@ -0,0 +1,515 @@
+iomap.crossStage.vert
+Shader version: 460
+0:? Sequence
+0:32  Function Definition: main( ( global void)
+0:32    Function Parameters: 
+0:34    Sequence
+0:34      move second child to first child ( temp 4-component vector of float)
+0:34        'o1' ( smooth out 4-component vector of float)
+0:34        Constant:
+0:34          0.000000
+0:34          0.000000
+0:34          0.000000
+0:34          0.000000
+0:35      move second child to first child ( temp 2-component vector of float)
+0:35        'o2' ( smooth out 2-component vector of float)
+0:35        Constant:
+0:35          0.000000
+0:35          0.000000
+0:36      move second child to first child ( temp 4-component vector of float)
+0:36        o3: direct index for structure ( out 4-component vector of float)
+0:36          'anon@0' (layout( location=5) out block{ out 4-component vector of float o3})
+0:36          Constant:
+0:36            0 (const uint)
+0:36        Constant:
+0:36          0.000000
+0:36          0.000000
+0:36          0.000000
+0:36          0.000000
+0:?   Linker Objects
+0:?     'o1' ( smooth out 4-component vector of float)
+0:?     'o2' ( smooth out 2-component vector of float)
+0:?     'anon@0' (layout( location=5) out block{ out 4-component vector of float o3})
+0:?     'u1' ( uniform 2-component vector of float)
+0:?     'u2' ( uniform 3-component vector of float)
+0:?       0.000000
+0:?       0.000000
+0:?       0.000000
+0:?     'u3' ( uniform 4-component vector of float)
+0:?       0.000000
+0:?       0.000000
+0:?       0.000000
+0:?       0.000000
+0:?     'um2' ( uniform 2X2 matrix of float)
+0:?       4.000000
+0:?       0.000000
+0:?       0.000000
+0:?       4.000000
+0:?     'glass' (layout( location=0 binding=0) uniform sampler2D)
+0:?     'anon@1' (layout( column_major std140) uniform block{layout( column_major std140) uniform 4-component vector of float a, layout( column_major std140) uniform 4-component vector of float b})
+0:?     'anon@2' (layout( column_major std430) buffer block{layout( column_major std430) buffer 2-component vector of float vb1})
+0:?     'blockName1' (layout( column_major std140) uniform 2-element array of block{layout( column_major std140) uniform 4-component vector of float a, layout( column_major std140) uniform 2-component vector of float b})
+0:?     'gl_VertexID' ( gl_VertexId int VertexId)
+0:?     'gl_InstanceID' ( gl_InstanceId int InstanceId)
+
+iomap.crossStage.frag
+Shader version: 460
+0:? Sequence
+0:36  Function Definition: main( ( global void)
+0:36    Function Parameters: 
+0:38    Sequence
+0:38      Sequence
+0:38        move second child to first child ( temp 4-component vector of float)
+0:38          'color' ( temp 4-component vector of float)
+0:38          component-wise multiply ( temp 4-component vector of float)
+0:38            component-wise multiply ( temp 4-component vector of float)
+0:38              component-wise multiply ( temp 4-component vector of float)
+0:38                'o1' ( smooth in 4-component vector of float)
+0:38                vector swizzle ( temp 4-component vector of float)
+0:38                  'u1' ( uniform 2-component vector of float)
+0:38                  Sequence
+0:38                    Constant:
+0:38                      0 (const int)
+0:38                    Constant:
+0:38                      1 (const int)
+0:38                    Constant:
+0:38                      0 (const int)
+0:38                    Constant:
+0:38                      1 (const int)
+0:38              vector swizzle ( temp 4-component vector of float)
+0:38                'u2' ( uniform 3-component vector of float)
+0:38                Sequence
+0:38                  Constant:
+0:38                    0 (const int)
+0:38                  Constant:
+0:38                    1 (const int)
+0:38                  Constant:
+0:38                    2 (const int)
+0:38                  Constant:
+0:38                    0 (const int)
+0:38            vector swizzle ( temp 4-component vector of float)
+0:38              'u3' ( uniform 4-component vector of float)
+0:38                0.000000
+0:38                0.000000
+0:38                0.000000
+0:38                0.000000
+0:38              Sequence
+0:38                Constant:
+0:38                  0 (const int)
+0:38                Constant:
+0:38                  1 (const int)
+0:38                Constant:
+0:38                  2 (const int)
+0:38                Constant:
+0:38                  3 (const int)
+0:39      move second child to first child ( temp 4-component vector of float)
+0:39        'outColor' ( out 4-component vector of float)
+0:39        'color' ( temp 4-component vector of float)
+0:?   Linker Objects
+0:?     'anon@0' (layout( location=5) in block{ in 4-component vector of float o3})
+0:?     'o2' ( smooth in 2-component vector of float)
+0:?     'o1' ( smooth in 4-component vector of float)
+0:?     'outColor' ( out 4-component vector of float)
+0:?     'u1' ( uniform 2-component vector of float)
+0:?     'u2' ( uniform 3-component vector of float)
+0:?     'u3' ( uniform 4-component vector of float)
+0:?       0.000000
+0:?       0.000000
+0:?       0.000000
+0:?       0.000000
+0:?     'um2' ( uniform 2X2 matrix of float)
+0:?       4.000000
+0:?       0.000000
+0:?       0.000000
+0:?       4.000000
+0:?     'glass' (layout( location=0 binding=0) uniform sampler2D)
+0:?     'anon@1' (layout( column_major std140) uniform block{layout( column_major std140) uniform 4-component vector of float a, layout( column_major std140) uniform 4-component vector of float b})
+0:?     'anon@2' (layout( column_major std430) buffer block{layout( column_major std430) buffer 2-component vector of float fb1})
+0:?     'blockName2' (layout( column_major std140) uniform 2-element array of block{layout( column_major std140) uniform 4-component vector of float a, layout( column_major std140) uniform 2-component vector of float b})
+
+
+Linked vertex stage:
+
+
+Linked fragment stage:
+
+WARNING: Linking unknown stage stage: Matched shader interfaces are using different instance names.
+    blockName1: "layout( column_major std140) uniform 2-element array of block{layout( column_major std140) uniform 4-component vector of float a, layout( column_major std140) uniform 2-component vector of float b}" versus blockName2: "layout( column_major std140) uniform 2-element array of block{layout( column_major std140) uniform 4-component vector of float a, layout( column_major std140) uniform 2-component vector of float b}"
+
+Shader version: 460
+0:? Sequence
+0:32  Function Definition: main( ( global void)
+0:32    Function Parameters: 
+0:34    Sequence
+0:34      move second child to first child ( temp 4-component vector of float)
+0:34        'o1' ( smooth out 4-component vector of float)
+0:34        Constant:
+0:34          0.000000
+0:34          0.000000
+0:34          0.000000
+0:34          0.000000
+0:35      move second child to first child ( temp 2-component vector of float)
+0:35        'o2' ( smooth out 2-component vector of float)
+0:35        Constant:
+0:35          0.000000
+0:35          0.000000
+0:36      move second child to first child ( temp 4-component vector of float)
+0:36        o3: direct index for structure ( out 4-component vector of float)
+0:36          'anon@0' (layout( location=5) out block{ out 4-component vector of float o3})
+0:36          Constant:
+0:36            0 (const uint)
+0:36        Constant:
+0:36          0.000000
+0:36          0.000000
+0:36          0.000000
+0:36          0.000000
+0:?   Linker Objects
+0:?     'o1' ( smooth out 4-component vector of float)
+0:?     'o2' ( smooth out 2-component vector of float)
+0:?     'anon@0' (layout( location=5) out block{ out 4-component vector of float o3})
+0:?     'u1' ( uniform 2-component vector of float)
+0:?     'u2' ( uniform 3-component vector of float)
+0:?       0.000000
+0:?       0.000000
+0:?       0.000000
+0:?     'u3' ( uniform 4-component vector of float)
+0:?       0.000000
+0:?       0.000000
+0:?       0.000000
+0:?       0.000000
+0:?     'um2' ( uniform 2X2 matrix of float)
+0:?       4.000000
+0:?       0.000000
+0:?       0.000000
+0:?       4.000000
+0:?     'glass' (layout( location=0 binding=0) uniform sampler2D)
+0:?     'anon@1' (layout( column_major std140) uniform block{layout( column_major std140) uniform 4-component vector of float a, layout( column_major std140) uniform 4-component vector of float b})
+0:?     'anon@2' (layout( column_major std430) buffer block{layout( column_major std430) buffer 2-component vector of float vb1})
+0:?     'blockName1' (layout( column_major std140) uniform 2-element array of block{layout( column_major std140) uniform 4-component vector of float a, layout( column_major std140) uniform 2-component vector of float b})
+0:?     'gl_VertexID' ( gl_VertexId int VertexId)
+0:?     'gl_InstanceID' ( gl_InstanceId int InstanceId)
+Shader version: 460
+0:? Sequence
+0:36  Function Definition: main( ( global void)
+0:36    Function Parameters: 
+0:38    Sequence
+0:38      Sequence
+0:38        move second child to first child ( temp 4-component vector of float)
+0:38          'color' ( temp 4-component vector of float)
+0:38          component-wise multiply ( temp 4-component vector of float)
+0:38            component-wise multiply ( temp 4-component vector of float)
+0:38              component-wise multiply ( temp 4-component vector of float)
+0:38                'o1' ( smooth in 4-component vector of float)
+0:38                vector swizzle ( temp 4-component vector of float)
+0:38                  'u1' ( uniform 2-component vector of float)
+0:38                  Sequence
+0:38                    Constant:
+0:38                      0 (const int)
+0:38                    Constant:
+0:38                      1 (const int)
+0:38                    Constant:
+0:38                      0 (const int)
+0:38                    Constant:
+0:38                      1 (const int)
+0:38              vector swizzle ( temp 4-component vector of float)
+0:38                'u2' ( uniform 3-component vector of float)
+0:38                Sequence
+0:38                  Constant:
+0:38                    0 (const int)
+0:38                  Constant:
+0:38                    1 (const int)
+0:38                  Constant:
+0:38                    2 (const int)
+0:38                  Constant:
+0:38                    0 (const int)
+0:38            vector swizzle ( temp 4-component vector of float)
+0:38              'u3' ( uniform 4-component vector of float)
+0:38                0.000000
+0:38                0.000000
+0:38                0.000000
+0:38                0.000000
+0:38              Sequence
+0:38                Constant:
+0:38                  0 (const int)
+0:38                Constant:
+0:38                  1 (const int)
+0:38                Constant:
+0:38                  2 (const int)
+0:38                Constant:
+0:38                  3 (const int)
+0:39      move second child to first child ( temp 4-component vector of float)
+0:39        'outColor' ( out 4-component vector of float)
+0:39        'color' ( temp 4-component vector of float)
+0:?   Linker Objects
+0:?     'anon@0' (layout( location=5) in block{ in 4-component vector of float o3})
+0:?     'o2' ( smooth in 2-component vector of float)
+0:?     'o1' ( smooth in 4-component vector of float)
+0:?     'outColor' ( out 4-component vector of float)
+0:?     'u1' ( uniform 2-component vector of float)
+0:?     'u2' ( uniform 3-component vector of float)
+0:?     'u3' ( uniform 4-component vector of float)
+0:?       0.000000
+0:?       0.000000
+0:?       0.000000
+0:?       0.000000
+0:?     'um2' ( uniform 2X2 matrix of float)
+0:?       4.000000
+0:?       0.000000
+0:?       0.000000
+0:?       4.000000
+0:?     'glass' (layout( location=0 binding=0) uniform sampler2D)
+0:?     'anon@1' (layout( column_major std140) uniform block{layout( column_major std140) uniform 4-component vector of float a, layout( column_major std140) uniform 4-component vector of float b})
+0:?     'anon@2' (layout( column_major std430) buffer block{layout( column_major std430) buffer 2-component vector of float fb1})
+0:?     'blockName2' (layout( column_major std140) uniform 2-element array of block{layout( column_major std140) uniform 4-component vector of float a, layout( column_major std140) uniform 2-component vector of float b})
+
+// Module Version 10000
+// Generated by (magic number): 8000a
+// Id's are bound by 56
+
+                              Capability Shader
+               1:             ExtInstImport  "GLSL.std.450"
+                              MemoryModel Logical GLSL450
+                              EntryPoint Vertex 4  "main" 9 14 18 54 55
+                              Source GLSL 460
+                              Name 4  "main"
+                              Name 9  "o1"
+                              Name 14  "o2"
+                              Name 16  "outBlock"
+                              MemberName 16(outBlock) 0  "o3"
+                              Name 18  ""
+                              Name 23  "u1"
+                              Name 27  "u2"
+                              Name 29  "u3"
+                              Name 36  "um2"
+                              Name 40  "glass"
+                              Name 41  "crossStageBlock1"
+                              MemberName 41(crossStageBlock1) 0  "a"
+                              MemberName 41(crossStageBlock1) 1  "b"
+                              Name 43  ""
+                              Name 44  "vertOnlyBlock"
+                              MemberName 44(vertOnlyBlock) 0  "vb1"
+                              Name 46  ""
+                              Name 47  "crossStageBlock2"
+                              MemberName 47(crossStageBlock2) 0  "a"
+                              MemberName 47(crossStageBlock2) 1  "b"
+                              Name 52  "blockName1"
+                              Name 54  "gl_VertexID"
+                              Name 55  "gl_InstanceID"
+                              Decorate 9(o1) Location 0
+                              Decorate 14(o2) Location 1
+                              Decorate 16(outBlock) Block
+                              Decorate 18 Location 5
+                              Decorate 23(u1) Location 1
+                              Decorate 23(u1) DescriptorSet 0
+                              Decorate 27(u2) Location 2
+                              Decorate 27(u2) DescriptorSet 0
+                              Decorate 29(u3) Location 3
+                              Decorate 29(u3) DescriptorSet 0
+                              Decorate 36(um2) Location 4
+                              Decorate 36(um2) DescriptorSet 0
+                              Decorate 40(glass) Location 0
+                              Decorate 40(glass) DescriptorSet 0
+                              Decorate 40(glass) Binding 0
+                              MemberDecorate 41(crossStageBlock1) 0 Offset 0
+                              MemberDecorate 41(crossStageBlock1) 1 Offset 16
+                              Decorate 41(crossStageBlock1) Block
+                              Decorate 43 DescriptorSet 0
+                              Decorate 43 Binding 0
+                              MemberDecorate 44(vertOnlyBlock) 0 Offset 0
+                              Decorate 44(vertOnlyBlock) BufferBlock
+                              Decorate 46 DescriptorSet 0
+                              Decorate 46 Binding 0
+                              MemberDecorate 47(crossStageBlock2) 0 Offset 0
+                              MemberDecorate 47(crossStageBlock2) 1 Offset 16
+                              Decorate 47(crossStageBlock2) Block
+                              Decorate 52(blockName1) DescriptorSet 0
+                              Decorate 52(blockName1) Binding 0
+                              Decorate 54(gl_VertexID) BuiltIn VertexId
+                              Decorate 55(gl_InstanceID) BuiltIn InstanceId
+               2:             TypeVoid
+               3:             TypeFunction 2
+               6:             TypeFloat 32
+               7:             TypeVector 6(float) 4
+               8:             TypePointer Output 7(fvec4)
+           9(o1):      8(ptr) Variable Output
+              10:    6(float) Constant 0
+              11:    7(fvec4) ConstantComposite 10 10 10 10
+              12:             TypeVector 6(float) 2
+              13:             TypePointer Output 12(fvec2)
+          14(o2):     13(ptr) Variable Output
+              15:   12(fvec2) ConstantComposite 10 10
+    16(outBlock):             TypeStruct 7(fvec4)
+              17:             TypePointer Output 16(outBlock)
+              18:     17(ptr) Variable Output
+              19:             TypeInt 32 1
+              20:     19(int) Constant 0
+              22:             TypePointer UniformConstant 12(fvec2)
+          23(u1):     22(ptr) Variable UniformConstant
+              24:             TypeVector 6(float) 3
+              25:   24(fvec3) ConstantComposite 10 10 10
+              26:             TypePointer UniformConstant 24(fvec3)
+          27(u2):     26(ptr) Variable UniformConstant 25
+              28:             TypePointer UniformConstant 7(fvec4)
+          29(u3):     28(ptr) Variable UniformConstant 11
+              30:             TypeMatrix 12(fvec2) 2
+              31:    6(float) Constant 1082130432
+              32:   12(fvec2) ConstantComposite 31 10
+              33:   12(fvec2) ConstantComposite 10 31
+              34:          30 ConstantComposite 32 33
+              35:             TypePointer UniformConstant 30
+         36(um2):     35(ptr) Variable UniformConstant 34
+              37:             TypeImage 6(float) 2D sampled format:Unknown
+              38:             TypeSampledImage 37
+              39:             TypePointer UniformConstant 38
+       40(glass):     39(ptr) Variable UniformConstant
+41(crossStageBlock1):             TypeStruct 7(fvec4) 7(fvec4)
+              42:             TypePointer Uniform 41(crossStageBlock1)
+              43:     42(ptr) Variable Uniform
+44(vertOnlyBlock):             TypeStruct 12(fvec2)
+              45:             TypePointer Uniform 44(vertOnlyBlock)
+              46:     45(ptr) Variable Uniform
+47(crossStageBlock2):             TypeStruct 7(fvec4) 12(fvec2)
+              48:             TypeInt 32 0
+              49:     48(int) Constant 2
+              50:             TypeArray 47(crossStageBlock2) 49
+              51:             TypePointer Uniform 50
+  52(blockName1):     51(ptr) Variable Uniform
+              53:             TypePointer Input 19(int)
+ 54(gl_VertexID):     53(ptr) Variable Input
+55(gl_InstanceID):     53(ptr) Variable Input
+         4(main):           2 Function None 3
+               5:             Label
+                              Store 9(o1) 11
+                              Store 14(o2) 15
+              21:      8(ptr) AccessChain 18 20
+                              Store 21 11
+                              Return
+                              FunctionEnd
+// Module Version 10000
+// Generated by (magic number): 8000a
+// Id's are bound by 62
+
+                              Capability Shader
+               1:             ExtInstImport  "GLSL.std.450"
+                              MemoryModel Logical GLSL450
+                              EntryPoint Fragment 4  "main" 11 32 36 38
+                              ExecutionMode 4 OriginLowerLeft
+                              Source GLSL 460
+                              Name 4  "main"
+                              Name 9  "color"
+                              Name 11  "o1"
+                              Name 15  "u1"
+                              Name 21  "u2"
+                              Name 28  "u3"
+                              Name 32  "outColor"
+                              Name 34  "outBlock"
+                              MemberName 34(outBlock) 0  "o3"
+                              Name 36  ""
+                              Name 38  "o2"
+                              Name 45  "um2"
+                              Name 49  "glass"
+                              Name 50  "crossStageBlock1"
+                              MemberName 50(crossStageBlock1) 0  "a"
+                              MemberName 50(crossStageBlock1) 1  "b"
+                              Name 52  ""
+                              Name 53  "fragOnlyBlock"
+                              MemberName 53(fragOnlyBlock) 0  "fb1"
+                              Name 55  ""
+                              Name 56  "crossStageBlock2"
+                              MemberName 56(crossStageBlock2) 0  "a"
+                              MemberName 56(crossStageBlock2) 1  "b"
+                              Name 61  "blockName2"
+                              Decorate 11(o1) Location 0
+                              Decorate 15(u1) Location 1
+                              Decorate 15(u1) DescriptorSet 0
+                              Decorate 21(u2) Location 2
+                              Decorate 21(u2) DescriptorSet 0
+                              Decorate 28(u3) Location 3
+                              Decorate 28(u3) DescriptorSet 0
+                              Decorate 32(outColor) Location 0
+                              Decorate 34(outBlock) Block
+                              Decorate 36 Location 5
+                              Decorate 38(o2) Location 1
+                              Decorate 45(um2) Location 4
+                              Decorate 45(um2) DescriptorSet 0
+                              Decorate 49(glass) Location 0
+                              Decorate 49(glass) DescriptorSet 0
+                              Decorate 49(glass) Binding 0
+                              MemberDecorate 50(crossStageBlock1) 0 Offset 0
+                              MemberDecorate 50(crossStageBlock1) 1 Offset 16
+                              Decorate 50(crossStageBlock1) Block
+                              Decorate 52 DescriptorSet 0
+                              Decorate 52 Binding 0
+                              MemberDecorate 53(fragOnlyBlock) 0 Offset 0
+                              Decorate 53(fragOnlyBlock) BufferBlock
+                              Decorate 55 DescriptorSet 0
+                              Decorate 55 Binding 0
+                              MemberDecorate 56(crossStageBlock2) 0 Offset 0
+                              MemberDecorate 56(crossStageBlock2) 1 Offset 16
+                              Decorate 56(crossStageBlock2) Block
+                              Decorate 61(blockName2) DescriptorSet 0
+                              Decorate 61(blockName2) Binding 0
+               2:             TypeVoid
+               3:             TypeFunction 2
+               6:             TypeFloat 32
+               7:             TypeVector 6(float) 4
+               8:             TypePointer Function 7(fvec4)
+              10:             TypePointer Input 7(fvec4)
+          11(o1):     10(ptr) Variable Input
+              13:             TypeVector 6(float) 2
+              14:             TypePointer UniformConstant 13(fvec2)
+          15(u1):     14(ptr) Variable UniformConstant
+              19:             TypeVector 6(float) 3
+              20:             TypePointer UniformConstant 19(fvec3)
+          21(u2):     20(ptr) Variable UniformConstant
+              25:    6(float) Constant 0
+              26:    7(fvec4) ConstantComposite 25 25 25 25
+              27:             TypePointer UniformConstant 7(fvec4)
+          28(u3):     27(ptr) Variable UniformConstant 26
+              31:             TypePointer Output 7(fvec4)
+    32(outColor):     31(ptr) Variable Output
+    34(outBlock):             TypeStruct 7(fvec4)
+              35:             TypePointer Input 34(outBlock)
+              36:     35(ptr) Variable Input
+              37:             TypePointer Input 13(fvec2)
+          38(o2):     37(ptr) Variable Input
+              39:             TypeMatrix 13(fvec2) 2
+              40:    6(float) Constant 1082130432
+              41:   13(fvec2) ConstantComposite 40 25
+              42:   13(fvec2) ConstantComposite 25 40
+              43:          39 ConstantComposite 41 42
+              44:             TypePointer UniformConstant 39
+         45(um2):     44(ptr) Variable UniformConstant 43
+              46:             TypeImage 6(float) 2D sampled format:Unknown
+              47:             TypeSampledImage 46
+              48:             TypePointer UniformConstant 47
+       49(glass):     48(ptr) Variable UniformConstant
+50(crossStageBlock1):             TypeStruct 7(fvec4) 7(fvec4)
+              51:             TypePointer Uniform 50(crossStageBlock1)
+              52:     51(ptr) Variable Uniform
+53(fragOnlyBlock):             TypeStruct 13(fvec2)
+              54:             TypePointer Uniform 53(fragOnlyBlock)
+              55:     54(ptr) Variable Uniform
+56(crossStageBlock2):             TypeStruct 7(fvec4) 13(fvec2)
+              57:             TypeInt 32 0
+              58:     57(int) Constant 2
+              59:             TypeArray 56(crossStageBlock2) 58
+              60:             TypePointer Uniform 59
+  61(blockName2):     60(ptr) Variable Uniform
+         4(main):           2 Function None 3
+               5:             Label
+        9(color):      8(ptr) Variable Function
+              12:    7(fvec4) Load 11(o1)
+              16:   13(fvec2) Load 15(u1)
+              17:    7(fvec4) VectorShuffle 16 16 0 1 0 1
+              18:    7(fvec4) FMul 12 17
+              22:   19(fvec3) Load 21(u2)
+              23:    7(fvec4) VectorShuffle 22 22 0 1 2 0
+              24:    7(fvec4) FMul 18 23
+              29:    7(fvec4) Load 28(u3)
+              30:    7(fvec4) FMul 24 29
+                              Store 9(color) 30
+              33:    7(fvec4) Load 9(color)
+                              Store 32(outColor) 33
+                              Return
+                              FunctionEnd
diff --git a/Test/baseResults/iomap.crossStage.vk.vert.out b/Test/baseResults/iomap.crossStage.vk.vert.out
new file mode 100644
index 0000000..e137bdf
--- /dev/null
+++ b/Test/baseResults/iomap.crossStage.vk.vert.out
@@ -0,0 +1,720 @@
+iomap.crossStage.vk.vert
+Shader version: 460
+0:? Sequence
+0:26  Function Definition: main( ( global void)
+0:26    Function Parameters: 
+0:28    Sequence
+0:28      move second child to first child ( temp highp 4-component vector of float)
+0:28        'vgo1' ( smooth out highp 4-component vector of float)
+0:28        Constant:
+0:28          0.000000
+0:28          0.000000
+0:28          0.000000
+0:28          0.000000
+0:29      move second child to first child ( temp highp 2-component vector of float)
+0:29        'vgo2' ( smooth out highp 2-component vector of float)
+0:29        Constant:
+0:29          0.000000
+0:29          0.000000
+0:30      move second child to first child ( temp highp 4-component vector of float)
+0:30        o3: direct index for structure ( out highp 4-component vector of float)
+0:30          'anon@0' (layout( location=5) out block{ out highp 4-component vector of float o3})
+0:30          Constant:
+0:30            0 (const uint)
+0:30        Constant:
+0:30          0.000000
+0:30          0.000000
+0:30          0.000000
+0:30          0.000000
+0:?   Linker Objects
+0:?     'vgo1' ( smooth out highp 4-component vector of float)
+0:?     'vgo2' ( smooth out highp 2-component vector of float)
+0:?     'anon@0' (layout( location=5) out block{ out highp 4-component vector of float o3})
+0:?     'glass' (layout( binding=0) uniform highp sampler2D)
+0:?     'anon@1' (layout( column_major std140) uniform block{layout( column_major std140) uniform highp 4-component vector of float a, layout( column_major std140) uniform highp 4-component vector of float b})
+0:?     'anon@2' (layout( column_major std430) readonly buffer block{layout( column_major std430) readonly buffer highp 2-component vector of float vb1})
+0:?     'blockName1' (layout( column_major std140) uniform 2-element array of block{layout( column_major std140) uniform highp 4-component vector of float a, layout( column_major std140) uniform highp 2-component vector of float b})
+
+iomap.crossStage.vk.geom
+Shader version: 460
+invocations = -1
+max_vertices = 3
+input primitive = points
+output primitive = triangle_strip
+0:? Sequence
+0:25  Function Definition: main( ( global void)
+0:25    Function Parameters: 
+0:27    Sequence
+0:27      Sequence
+0:27        Sequence
+0:27          move second child to first child ( temp highp int)
+0:27            'i' ( temp highp int)
+0:27            Constant:
+0:27              0 (const int)
+0:27        Loop with condition tested first
+0:27          Loop Condition
+0:27          Compare Less Than ( temp bool)
+0:27            'i' ( temp highp int)
+0:27            Constant:
+0:27              3 (const int)
+0:27          Loop Body
+0:28          Sequence
+0:28            move second child to first child ( temp highp 4-component vector of float)
+0:28              'gfo1' (layout( stream=0) out highp 4-component vector of float)
+0:28              Constant:
+0:28                0.000000
+0:28                0.000000
+0:28                0.000000
+0:28                0.000000
+0:29            move second child to first child ( temp highp 2-component vector of float)
+0:29              'gfo2' (layout( stream=0) out highp 2-component vector of float)
+0:29              Constant:
+0:29                0.000000
+0:29                0.000000
+0:30            move second child to first child ( temp highp 4-component vector of float)
+0:30              o3: direct index for structure (layout( stream=0) out highp 4-component vector of float)
+0:30                'gf_out' (layout( location=5 stream=0) out block{layout( stream=0) out highp 4-component vector of float o3})
+0:30                Constant:
+0:30                  0 (const int)
+0:30              o3: direct index for structure ( in highp 4-component vector of float)
+0:30                indirect index (layout( location=5) temp block{ in highp 4-component vector of float o3})
+0:30                  'inBlock' (layout( location=5) in 1-element array of block{ in highp 4-component vector of float o3})
+0:30                  'i' ( temp highp int)
+0:30                Constant:
+0:30                  0 (const int)
+0:31            EmitVertex ( global void)
+0:27          Loop Terminal Expression
+0:27          Post-Increment ( temp highp int)
+0:27            'i' ( temp highp int)
+0:33      EndPrimitive ( global void)
+0:?   Linker Objects
+0:?     'vgo1' ( in 1-element array of highp 4-component vector of float)
+0:?     'vgo2' ( in 1-element array of highp 2-component vector of float)
+0:?     'inBlock' (layout( location=5) in 1-element array of block{ in highp 4-component vector of float o3})
+0:?     'gfo1' (layout( stream=0) out highp 4-component vector of float)
+0:?     'gfo2' (layout( stream=0) out highp 2-component vector of float)
+0:?     'gf_out' (layout( location=5 stream=0) out block{layout( stream=0) out highp 4-component vector of float o3})
+0:?     'blockName1' (layout( column_major std140) uniform 2-element array of block{layout( column_major std140) uniform highp 4-component vector of float a, layout( column_major std140) uniform highp 2-component vector of float b})
+
+iomap.crossStage.vk.frag
+Shader version: 460
+gl_FragCoord origin is upper left
+0:? Sequence
+0:30  Function Definition: Bar( ( global highp 2-component vector of float)
+0:30    Function Parameters: 
+0:31    Sequence
+0:31      Branch: Return with expression
+0:32        add ( temp highp 2-component vector of float)
+0:31          add ( temp highp 2-component vector of float)
+0:31            fb1: direct index for structure (layout( column_major std430) readonly buffer highp 2-component vector of float)
+0:31              'anon@2' (layout( column_major std430) readonly buffer block{layout( column_major std430) readonly buffer highp 2-component vector of float fb1})
+0:31              Constant:
+0:31                0 (const uint)
+0:32            b: direct index for structure (layout( column_major std140) uniform highp 2-component vector of float)
+0:32              direct index (layout( column_major std140) temp block{layout( column_major std140) uniform highp 4-component vector of float a, layout( column_major std140) uniform highp 2-component vector of float b})
+0:32                'blockName2' (layout( column_major std140) uniform 2-element array of block{layout( column_major std140) uniform highp 4-component vector of float a, layout( column_major std140) uniform highp 2-component vector of float b})
+0:32                Constant:
+0:32                  0 (const int)
+0:32              Constant:
+0:32                1 (const int)
+0:33          b: direct index for structure (layout( column_major std140) uniform highp 2-component vector of float)
+0:33            direct index (layout( column_major std140) temp block{layout( column_major std140) uniform highp 4-component vector of float a, layout( column_major std140) uniform highp 2-component vector of float b})
+0:33              'blockName2' (layout( column_major std140) uniform 2-element array of block{layout( column_major std140) uniform highp 4-component vector of float a, layout( column_major std140) uniform highp 2-component vector of float b})
+0:33              Constant:
+0:33                1 (const int)
+0:33            Constant:
+0:33              1 (const int)
+0:36  Function Definition: Foo( ( global highp 4-component vector of float)
+0:36    Function Parameters: 
+0:37    Sequence
+0:37      Branch: Return with expression
+0:40        add ( temp highp 4-component vector of float)
+0:39          add ( temp highp 4-component vector of float)
+0:38            add ( temp highp 4-component vector of float)
+0:37              add ( temp highp 4-component vector of float)
+0:37                a: direct index for structure (layout( column_major std140) uniform highp 4-component vector of float)
+0:37                  'anon@1' (layout( column_major std140) uniform block{layout( column_major std140) uniform highp 4-component vector of float a, layout( column_major std140) uniform highp 4-component vector of float b})
+0:37                  Constant:
+0:37                    0 (const uint)
+0:38                b: direct index for structure (layout( column_major std140) uniform highp 4-component vector of float)
+0:38                  'anon@1' (layout( column_major std140) uniform block{layout( column_major std140) uniform highp 4-component vector of float a, layout( column_major std140) uniform highp 4-component vector of float b})
+0:38                  Constant:
+0:38                    1 (const uint)
+0:39              a: direct index for structure (layout( column_major std140) uniform highp 4-component vector of float)
+0:39                direct index (layout( column_major std140) temp block{layout( column_major std140) uniform highp 4-component vector of float a, layout( column_major std140) uniform highp 2-component vector of float b})
+0:39                  'blockName2' (layout( column_major std140) uniform 2-element array of block{layout( column_major std140) uniform highp 4-component vector of float a, layout( column_major std140) uniform highp 2-component vector of float b})
+0:39                  Constant:
+0:39                    0 (const int)
+0:39                Constant:
+0:39                  0 (const int)
+0:40            a: direct index for structure (layout( column_major std140) uniform highp 4-component vector of float)
+0:40              direct index (layout( column_major std140) temp block{layout( column_major std140) uniform highp 4-component vector of float a, layout( column_major std140) uniform highp 2-component vector of float b})
+0:40                'blockName2' (layout( column_major std140) uniform 2-element array of block{layout( column_major std140) uniform highp 4-component vector of float a, layout( column_major std140) uniform highp 2-component vector of float b})
+0:40                Constant:
+0:40                  1 (const int)
+0:40              Constant:
+0:40                0 (const int)
+0:41          Construct vec4 ( temp highp 4-component vector of float)
+0:41            Function Call: Bar( ( global highp 2-component vector of float)
+0:41            Constant:
+0:41              0.000000
+0:41            Constant:
+0:41              0.000000
+0:44  Function Definition: main( ( global void)
+0:44    Function Parameters: 
+0:46    Sequence
+0:46      Sequence
+0:46        move second child to first child ( temp highp 4-component vector of float)
+0:46          'color' ( temp highp 4-component vector of float)
+0:46          'gfo1' ( smooth in highp 4-component vector of float)
+0:47      move second child to first child ( temp highp 4-component vector of float)
+0:47        'color' ( temp highp 4-component vector of float)
+0:47        add ( temp highp 4-component vector of float)
+0:47          'color' ( temp highp 4-component vector of float)
+0:47          Function Call: Foo( ( global highp 4-component vector of float)
+0:48      move second child to first child ( temp highp 4-component vector of float)
+0:48        'outColor' ( out highp 4-component vector of float)
+0:48        'color' ( temp highp 4-component vector of float)
+0:?   Linker Objects
+0:?     'anon@0' (layout( location=5) in block{ in highp 4-component vector of float o3})
+0:?     'gfo1' ( smooth in highp 4-component vector of float)
+0:?     'gfo2' ( smooth in highp 2-component vector of float)
+0:?     'outColor' ( out highp 4-component vector of float)
+0:?     'glass' (layout( binding=0) uniform highp sampler2D)
+0:?     'anon@1' (layout( column_major std140) uniform block{layout( column_major std140) uniform highp 4-component vector of float a, layout( column_major std140) uniform highp 4-component vector of float b})
+0:?     'anon@2' (layout( column_major std430) readonly buffer block{layout( column_major std430) readonly buffer highp 2-component vector of float fb1})
+0:?     'blockName2' (layout( column_major std140) uniform 2-element array of block{layout( column_major std140) uniform highp 4-component vector of float a, layout( column_major std140) uniform highp 2-component vector of float b})
+
+
+Linked vertex stage:
+
+
+Linked geometry stage:
+
+
+Linked fragment stage:
+
+WARNING: Linking unknown stage stage: Matched shader interfaces are using different instance names.
+    blockName1: "layout( column_major std140) uniform 2-element array of block{layout( column_major std140) uniform highp 4-component vector of float a, layout( column_major std140) uniform highp 2-component vector of float b}" versus blockName2: "layout( column_major std140) uniform 2-element array of block{layout( column_major std140) uniform highp 4-component vector of float a, layout( column_major std140) uniform highp 2-component vector of float b}"
+
+Shader version: 460
+0:? Sequence
+0:26  Function Definition: main( ( global void)
+0:26    Function Parameters: 
+0:28    Sequence
+0:28      move second child to first child ( temp highp 4-component vector of float)
+0:28        'vgo1' ( smooth out highp 4-component vector of float)
+0:28        Constant:
+0:28          0.000000
+0:28          0.000000
+0:28          0.000000
+0:28          0.000000
+0:29      move second child to first child ( temp highp 2-component vector of float)
+0:29        'vgo2' ( smooth out highp 2-component vector of float)
+0:29        Constant:
+0:29          0.000000
+0:29          0.000000
+0:30      move second child to first child ( temp highp 4-component vector of float)
+0:30        o3: direct index for structure ( out highp 4-component vector of float)
+0:30          'anon@0' (layout( location=5) out block{ out highp 4-component vector of float o3})
+0:30          Constant:
+0:30            0 (const uint)
+0:30        Constant:
+0:30          0.000000
+0:30          0.000000
+0:30          0.000000
+0:30          0.000000
+0:?   Linker Objects
+0:?     'vgo1' ( smooth out highp 4-component vector of float)
+0:?     'vgo2' ( smooth out highp 2-component vector of float)
+0:?     'anon@0' (layout( location=5) out block{ out highp 4-component vector of float o3})
+0:?     'glass' (layout( binding=0) uniform highp sampler2D)
+0:?     'anon@1' (layout( column_major std140) uniform block{layout( column_major std140) uniform highp 4-component vector of float a, layout( column_major std140) uniform highp 4-component vector of float b})
+0:?     'anon@2' (layout( column_major std430) readonly buffer block{layout( column_major std430) readonly buffer highp 2-component vector of float vb1})
+0:?     'blockName1' (layout( column_major std140) uniform 2-element array of block{layout( column_major std140) uniform highp 4-component vector of float a, layout( column_major std140) uniform highp 2-component vector of float b})
+Shader version: 460
+invocations = 1
+max_vertices = 3
+input primitive = points
+output primitive = triangle_strip
+0:? Sequence
+0:25  Function Definition: main( ( global void)
+0:25    Function Parameters: 
+0:27    Sequence
+0:27      Sequence
+0:27        Sequence
+0:27          move second child to first child ( temp highp int)
+0:27            'i' ( temp highp int)
+0:27            Constant:
+0:27              0 (const int)
+0:27        Loop with condition tested first
+0:27          Loop Condition
+0:27          Compare Less Than ( temp bool)
+0:27            'i' ( temp highp int)
+0:27            Constant:
+0:27              3 (const int)
+0:27          Loop Body
+0:28          Sequence
+0:28            move second child to first child ( temp highp 4-component vector of float)
+0:28              'gfo1' (layout( stream=0) out highp 4-component vector of float)
+0:28              Constant:
+0:28                0.000000
+0:28                0.000000
+0:28                0.000000
+0:28                0.000000
+0:29            move second child to first child ( temp highp 2-component vector of float)
+0:29              'gfo2' (layout( stream=0) out highp 2-component vector of float)
+0:29              Constant:
+0:29                0.000000
+0:29                0.000000
+0:30            move second child to first child ( temp highp 4-component vector of float)
+0:30              o3: direct index for structure (layout( stream=0) out highp 4-component vector of float)
+0:30                'gf_out' (layout( location=5 stream=0) out block{layout( stream=0) out highp 4-component vector of float o3})
+0:30                Constant:
+0:30                  0 (const int)
+0:30              o3: direct index for structure ( in highp 4-component vector of float)
+0:30                indirect index (layout( location=5) temp block{ in highp 4-component vector of float o3})
+0:30                  'inBlock' (layout( location=5) in 1-element array of block{ in highp 4-component vector of float o3})
+0:30                  'i' ( temp highp int)
+0:30                Constant:
+0:30                  0 (const int)
+0:31            EmitVertex ( global void)
+0:27          Loop Terminal Expression
+0:27          Post-Increment ( temp highp int)
+0:27            'i' ( temp highp int)
+0:33      EndPrimitive ( global void)
+0:?   Linker Objects
+0:?     'vgo1' ( in 1-element array of highp 4-component vector of float)
+0:?     'vgo2' ( in 1-element array of highp 2-component vector of float)
+0:?     'inBlock' (layout( location=5) in 1-element array of block{ in highp 4-component vector of float o3})
+0:?     'gfo1' (layout( stream=0) out highp 4-component vector of float)
+0:?     'gfo2' (layout( stream=0) out highp 2-component vector of float)
+0:?     'gf_out' (layout( location=5 stream=0) out block{layout( stream=0) out highp 4-component vector of float o3})
+0:?     'blockName1' (layout( column_major std140) uniform 2-element array of block{layout( column_major std140) uniform highp 4-component vector of float a, layout( column_major std140) uniform highp 2-component vector of float b})
+Shader version: 460
+gl_FragCoord origin is upper left
+0:? Sequence
+0:30  Function Definition: Bar( ( global highp 2-component vector of float)
+0:30    Function Parameters: 
+0:31    Sequence
+0:31      Branch: Return with expression
+0:32        add ( temp highp 2-component vector of float)
+0:31          add ( temp highp 2-component vector of float)
+0:31            fb1: direct index for structure (layout( column_major std430) readonly buffer highp 2-component vector of float)
+0:31              'anon@2' (layout( column_major std430) readonly buffer block{layout( column_major std430) readonly buffer highp 2-component vector of float fb1})
+0:31              Constant:
+0:31                0 (const uint)
+0:32            b: direct index for structure (layout( column_major std140) uniform highp 2-component vector of float)
+0:32              direct index (layout( column_major std140) temp block{layout( column_major std140) uniform highp 4-component vector of float a, layout( column_major std140) uniform highp 2-component vector of float b})
+0:32                'blockName2' (layout( column_major std140) uniform 2-element array of block{layout( column_major std140) uniform highp 4-component vector of float a, layout( column_major std140) uniform highp 2-component vector of float b})
+0:32                Constant:
+0:32                  0 (const int)
+0:32              Constant:
+0:32                1 (const int)
+0:33          b: direct index for structure (layout( column_major std140) uniform highp 2-component vector of float)
+0:33            direct index (layout( column_major std140) temp block{layout( column_major std140) uniform highp 4-component vector of float a, layout( column_major std140) uniform highp 2-component vector of float b})
+0:33              'blockName2' (layout( column_major std140) uniform 2-element array of block{layout( column_major std140) uniform highp 4-component vector of float a, layout( column_major std140) uniform highp 2-component vector of float b})
+0:33              Constant:
+0:33                1 (const int)
+0:33            Constant:
+0:33              1 (const int)
+0:36  Function Definition: Foo( ( global highp 4-component vector of float)
+0:36    Function Parameters: 
+0:37    Sequence
+0:37      Branch: Return with expression
+0:40        add ( temp highp 4-component vector of float)
+0:39          add ( temp highp 4-component vector of float)
+0:38            add ( temp highp 4-component vector of float)
+0:37              add ( temp highp 4-component vector of float)
+0:37                a: direct index for structure (layout( column_major std140) uniform highp 4-component vector of float)
+0:37                  'anon@1' (layout( column_major std140) uniform block{layout( column_major std140) uniform highp 4-component vector of float a, layout( column_major std140) uniform highp 4-component vector of float b})
+0:37                  Constant:
+0:37                    0 (const uint)
+0:38                b: direct index for structure (layout( column_major std140) uniform highp 4-component vector of float)
+0:38                  'anon@1' (layout( column_major std140) uniform block{layout( column_major std140) uniform highp 4-component vector of float a, layout( column_major std140) uniform highp 4-component vector of float b})
+0:38                  Constant:
+0:38                    1 (const uint)
+0:39              a: direct index for structure (layout( column_major std140) uniform highp 4-component vector of float)
+0:39                direct index (layout( column_major std140) temp block{layout( column_major std140) uniform highp 4-component vector of float a, layout( column_major std140) uniform highp 2-component vector of float b})
+0:39                  'blockName2' (layout( column_major std140) uniform 2-element array of block{layout( column_major std140) uniform highp 4-component vector of float a, layout( column_major std140) uniform highp 2-component vector of float b})
+0:39                  Constant:
+0:39                    0 (const int)
+0:39                Constant:
+0:39                  0 (const int)
+0:40            a: direct index for structure (layout( column_major std140) uniform highp 4-component vector of float)
+0:40              direct index (layout( column_major std140) temp block{layout( column_major std140) uniform highp 4-component vector of float a, layout( column_major std140) uniform highp 2-component vector of float b})
+0:40                'blockName2' (layout( column_major std140) uniform 2-element array of block{layout( column_major std140) uniform highp 4-component vector of float a, layout( column_major std140) uniform highp 2-component vector of float b})
+0:40                Constant:
+0:40                  1 (const int)
+0:40              Constant:
+0:40                0 (const int)
+0:41          Construct vec4 ( temp highp 4-component vector of float)
+0:41            Function Call: Bar( ( global highp 2-component vector of float)
+0:41            Constant:
+0:41              0.000000
+0:41            Constant:
+0:41              0.000000
+0:44  Function Definition: main( ( global void)
+0:44    Function Parameters: 
+0:46    Sequence
+0:46      Sequence
+0:46        move second child to first child ( temp highp 4-component vector of float)
+0:46          'color' ( temp highp 4-component vector of float)
+0:46          'gfo1' ( smooth in highp 4-component vector of float)
+0:47      move second child to first child ( temp highp 4-component vector of float)
+0:47        'color' ( temp highp 4-component vector of float)
+0:47        add ( temp highp 4-component vector of float)
+0:47          'color' ( temp highp 4-component vector of float)
+0:47          Function Call: Foo( ( global highp 4-component vector of float)
+0:48      move second child to first child ( temp highp 4-component vector of float)
+0:48        'outColor' ( out highp 4-component vector of float)
+0:48        'color' ( temp highp 4-component vector of float)
+0:?   Linker Objects
+0:?     'anon@0' (layout( location=5) in block{ in highp 4-component vector of float o3})
+0:?     'gfo1' ( smooth in highp 4-component vector of float)
+0:?     'gfo2' ( smooth in highp 2-component vector of float)
+0:?     'outColor' ( out highp 4-component vector of float)
+0:?     'glass' (layout( binding=0) uniform highp sampler2D)
+0:?     'anon@1' (layout( column_major std140) uniform block{layout( column_major std140) uniform highp 4-component vector of float a, layout( column_major std140) uniform highp 4-component vector of float b})
+0:?     'anon@2' (layout( column_major std430) readonly buffer block{layout( column_major std430) readonly buffer highp 2-component vector of float fb1})
+0:?     'blockName2' (layout( column_major std140) uniform 2-element array of block{layout( column_major std140) uniform highp 4-component vector of float a, layout( column_major std140) uniform highp 2-component vector of float b})
+
+// Module Version 10000
+// Generated by (magic number): 8000a
+// Id's are bound by 38
+
+                              Capability Shader
+               1:             ExtInstImport  "GLSL.std.450"
+                              MemoryModel Logical GLSL450
+                              EntryPoint Vertex 4  "main" 9 14 18
+                              Source GLSL 460
+                              Name 4  "main"
+                              Name 9  "vgo1"
+                              Name 14  "vgo2"
+                              Name 16  "outBlock"
+                              MemberName 16(outBlock) 0  "o3"
+                              Name 18  ""
+                              Name 25  "glass"
+                              Name 26  "crossStageBlock1"
+                              MemberName 26(crossStageBlock1) 0  "a"
+                              MemberName 26(crossStageBlock1) 1  "b"
+                              Name 28  ""
+                              Name 29  "vertOnlyBlock"
+                              MemberName 29(vertOnlyBlock) 0  "vb1"
+                              Name 31  ""
+                              Name 32  "crossStageBlock2"
+                              MemberName 32(crossStageBlock2) 0  "a"
+                              MemberName 32(crossStageBlock2) 1  "b"
+                              Name 37  "blockName1"
+                              Decorate 9(vgo1) Location 0
+                              Decorate 14(vgo2) Location 1
+                              Decorate 16(outBlock) Block
+                              Decorate 18 Location 5
+                              Decorate 25(glass) DescriptorSet 0
+                              Decorate 25(glass) Binding 0
+                              MemberDecorate 26(crossStageBlock1) 0 Offset 0
+                              MemberDecorate 26(crossStageBlock1) 1 Offset 16
+                              Decorate 26(crossStageBlock1) Block
+                              Decorate 28 DescriptorSet 0
+                              Decorate 28 Binding 1
+                              MemberDecorate 29(vertOnlyBlock) 0 NonWritable
+                              MemberDecorate 29(vertOnlyBlock) 0 Offset 0
+                              Decorate 29(vertOnlyBlock) BufferBlock
+                              Decorate 31 DescriptorSet 0
+                              Decorate 31 Binding 0
+                              MemberDecorate 32(crossStageBlock2) 0 Offset 0
+                              MemberDecorate 32(crossStageBlock2) 1 Offset 16
+                              Decorate 32(crossStageBlock2) Block
+                              Decorate 37(blockName1) DescriptorSet 0
+                              Decorate 37(blockName1) Binding 3
+               2:             TypeVoid
+               3:             TypeFunction 2
+               6:             TypeFloat 32
+               7:             TypeVector 6(float) 4
+               8:             TypePointer Output 7(fvec4)
+         9(vgo1):      8(ptr) Variable Output
+              10:    6(float) Constant 0
+              11:    7(fvec4) ConstantComposite 10 10 10 10
+              12:             TypeVector 6(float) 2
+              13:             TypePointer Output 12(fvec2)
+        14(vgo2):     13(ptr) Variable Output
+              15:   12(fvec2) ConstantComposite 10 10
+    16(outBlock):             TypeStruct 7(fvec4)
+              17:             TypePointer Output 16(outBlock)
+              18:     17(ptr) Variable Output
+              19:             TypeInt 32 1
+              20:     19(int) Constant 0
+              22:             TypeImage 6(float) 2D sampled format:Unknown
+              23:             TypeSampledImage 22
+              24:             TypePointer UniformConstant 23
+       25(glass):     24(ptr) Variable UniformConstant
+26(crossStageBlock1):             TypeStruct 7(fvec4) 7(fvec4)
+              27:             TypePointer Uniform 26(crossStageBlock1)
+              28:     27(ptr) Variable Uniform
+29(vertOnlyBlock):             TypeStruct 12(fvec2)
+              30:             TypePointer Uniform 29(vertOnlyBlock)
+              31:     30(ptr) Variable Uniform
+32(crossStageBlock2):             TypeStruct 7(fvec4) 12(fvec2)
+              33:             TypeInt 32 0
+              34:     33(int) Constant 2
+              35:             TypeArray 32(crossStageBlock2) 34
+              36:             TypePointer Uniform 35
+  37(blockName1):     36(ptr) Variable Uniform
+         4(main):           2 Function None 3
+               5:             Label
+                              Store 9(vgo1) 11
+                              Store 14(vgo2) 15
+              21:      8(ptr) AccessChain 18 20
+                              Store 21 11
+                              Return
+                              FunctionEnd
+// Module Version 10000
+// Generated by (magic number): 8000a
+// Id's are bound by 57
+
+                              Capability Geometry
+               1:             ExtInstImport  "GLSL.std.450"
+                              MemoryModel Logical GLSL450
+                              EntryPoint Geometry 4  "main" 22 27 31 37 48 51
+                              ExecutionMode 4 InputPoints
+                              ExecutionMode 4 Invocations 1
+                              ExecutionMode 4 OutputTriangleStrip
+                              ExecutionMode 4 OutputVertices 3
+                              Source GLSL 460
+                              Name 4  "main"
+                              Name 8  "i"
+                              Name 22  "gfo1"
+                              Name 27  "gfo2"
+                              Name 29  "outBlock"
+                              MemberName 29(outBlock) 0  "o3"
+                              Name 31  "gf_out"
+                              Name 32  "outBlock"
+                              MemberName 32(outBlock) 0  "o3"
+                              Name 37  "inBlock"
+                              Name 48  "vgo1"
+                              Name 51  "vgo2"
+                              Name 52  "crossStageBlock2"
+                              MemberName 52(crossStageBlock2) 0  "a"
+                              MemberName 52(crossStageBlock2) 1  "b"
+                              Name 56  "blockName1"
+                              Decorate 22(gfo1) Location 0
+                              Decorate 27(gfo2) Location 1
+                              Decorate 29(outBlock) Block
+                              Decorate 31(gf_out) Location 5
+                              Decorate 32(outBlock) Block
+                              Decorate 37(inBlock) Location 5
+                              Decorate 48(vgo1) Location 0
+                              Decorate 51(vgo2) Location 1
+                              MemberDecorate 52(crossStageBlock2) 0 Offset 0
+                              MemberDecorate 52(crossStageBlock2) 1 Offset 16
+                              Decorate 52(crossStageBlock2) Block
+                              Decorate 56(blockName1) DescriptorSet 0
+                              Decorate 56(blockName1) Binding 3
+               2:             TypeVoid
+               3:             TypeFunction 2
+               6:             TypeInt 32 1
+               7:             TypePointer Function 6(int)
+               9:      6(int) Constant 0
+              16:      6(int) Constant 3
+              17:             TypeBool
+              19:             TypeFloat 32
+              20:             TypeVector 19(float) 4
+              21:             TypePointer Output 20(fvec4)
+        22(gfo1):     21(ptr) Variable Output
+              23:   19(float) Constant 0
+              24:   20(fvec4) ConstantComposite 23 23 23 23
+              25:             TypeVector 19(float) 2
+              26:             TypePointer Output 25(fvec2)
+        27(gfo2):     26(ptr) Variable Output
+              28:   25(fvec2) ConstantComposite 23 23
+    29(outBlock):             TypeStruct 20(fvec4)
+              30:             TypePointer Output 29(outBlock)
+      31(gf_out):     30(ptr) Variable Output
+    32(outBlock):             TypeStruct 20(fvec4)
+              33:             TypeInt 32 0
+              34:     33(int) Constant 1
+              35:             TypeArray 32(outBlock) 34
+              36:             TypePointer Input 35
+     37(inBlock):     36(ptr) Variable Input
+              39:             TypePointer Input 20(fvec4)
+              44:      6(int) Constant 1
+              46:             TypeArray 20(fvec4) 34
+              47:             TypePointer Input 46
+        48(vgo1):     47(ptr) Variable Input
+              49:             TypeArray 25(fvec2) 34
+              50:             TypePointer Input 49
+        51(vgo2):     50(ptr) Variable Input
+52(crossStageBlock2):             TypeStruct 20(fvec4) 25(fvec2)
+              53:     33(int) Constant 2
+              54:             TypeArray 52(crossStageBlock2) 53
+              55:             TypePointer Uniform 54
+  56(blockName1):     55(ptr) Variable Uniform
+         4(main):           2 Function None 3
+               5:             Label
+            8(i):      7(ptr) Variable Function
+                              Store 8(i) 9
+                              Branch 10
+              10:             Label
+                              LoopMerge 12 13 None
+                              Branch 14
+              14:             Label
+              15:      6(int) Load 8(i)
+              18:    17(bool) SLessThan 15 16
+                              BranchConditional 18 11 12
+              11:               Label
+                                Store 22(gfo1) 24
+                                Store 27(gfo2) 28
+              38:      6(int)   Load 8(i)
+              40:     39(ptr)   AccessChain 37(inBlock) 38 9
+              41:   20(fvec4)   Load 40
+              42:     21(ptr)   AccessChain 31(gf_out) 9
+                                Store 42 41
+                                EmitVertex
+                                Branch 13
+              13:               Label
+              43:      6(int)   Load 8(i)
+              45:      6(int)   IAdd 43 44
+                                Store 8(i) 45
+                                Branch 10
+              12:             Label
+                              EndPrimitive
+                              Return
+                              FunctionEnd
+// Module Version 10000
+// Generated by (magic number): 8000a
+// Id's are bound by 81
+
+                              Capability Shader
+               1:             ExtInstImport  "GLSL.std.450"
+                              MemoryModel Logical GLSL450
+                              EntryPoint Fragment 4  "main" 64 70 74 76
+                              ExecutionMode 4 OriginUpperLeft
+                              Source GLSL 460
+                              Name 4  "main"
+                              Name 9  "Bar("
+                              Name 13  "Foo("
+                              Name 15  "fragOnlyBlock"
+                              MemberName 15(fragOnlyBlock) 0  "fb1"
+                              Name 17  ""
+                              Name 23  "crossStageBlock2"
+                              MemberName 23(crossStageBlock2) 0  "a"
+                              MemberName 23(crossStageBlock2) 1  "b"
+                              Name 28  "blockName2"
+                              Name 38  "crossStageBlock1"
+                              MemberName 38(crossStageBlock1) 0  "a"
+                              MemberName 38(crossStageBlock1) 1  "b"
+                              Name 40  ""
+                              Name 62  "color"
+                              Name 64  "gfo1"
+                              Name 70  "outColor"
+                              Name 72  "outBlock"
+                              MemberName 72(outBlock) 0  "o3"
+                              Name 74  ""
+                              Name 76  "gfo2"
+                              Name 80  "glass"
+                              MemberDecorate 15(fragOnlyBlock) 0 NonWritable
+                              MemberDecorate 15(fragOnlyBlock) 0 Offset 0
+                              Decorate 15(fragOnlyBlock) BufferBlock
+                              Decorate 17 DescriptorSet 0
+                              Decorate 17 Binding 2
+                              MemberDecorate 23(crossStageBlock2) 0 Offset 0
+                              MemberDecorate 23(crossStageBlock2) 1 Offset 16
+                              Decorate 23(crossStageBlock2) Block
+                              Decorate 28(blockName2) DescriptorSet 0
+                              Decorate 28(blockName2) Binding 3
+                              MemberDecorate 38(crossStageBlock1) 0 Offset 0
+                              MemberDecorate 38(crossStageBlock1) 1 Offset 16
+                              Decorate 38(crossStageBlock1) Block
+                              Decorate 40 DescriptorSet 0
+                              Decorate 40 Binding 1
+                              Decorate 64(gfo1) Location 0
+                              Decorate 70(outColor) Location 0
+                              Decorate 72(outBlock) Block
+                              Decorate 74 Location 5
+                              Decorate 76(gfo2) Location 1
+                              Decorate 80(glass) DescriptorSet 0
+                              Decorate 80(glass) Binding 0
+               2:             TypeVoid
+               3:             TypeFunction 2
+               6:             TypeFloat 32
+               7:             TypeVector 6(float) 2
+               8:             TypeFunction 7(fvec2)
+              11:             TypeVector 6(float) 4
+              12:             TypeFunction 11(fvec4)
+15(fragOnlyBlock):             TypeStruct 7(fvec2)
+              16:             TypePointer Uniform 15(fragOnlyBlock)
+              17:     16(ptr) Variable Uniform
+              18:             TypeInt 32 1
+              19:     18(int) Constant 0
+              20:             TypePointer Uniform 7(fvec2)
+23(crossStageBlock2):             TypeStruct 11(fvec4) 7(fvec2)
+              24:             TypeInt 32 0
+              25:     24(int) Constant 2
+              26:             TypeArray 23(crossStageBlock2) 25
+              27:             TypePointer Uniform 26
+  28(blockName2):     27(ptr) Variable Uniform
+              29:     18(int) Constant 1
+38(crossStageBlock1):             TypeStruct 11(fvec4) 11(fvec4)
+              39:             TypePointer Uniform 38(crossStageBlock1)
+              40:     39(ptr) Variable Uniform
+              41:             TypePointer Uniform 11(fvec4)
+              54:    6(float) Constant 0
+              61:             TypePointer Function 11(fvec4)
+              63:             TypePointer Input 11(fvec4)
+        64(gfo1):     63(ptr) Variable Input
+              69:             TypePointer Output 11(fvec4)
+    70(outColor):     69(ptr) Variable Output
+    72(outBlock):             TypeStruct 11(fvec4)
+              73:             TypePointer Input 72(outBlock)
+              74:     73(ptr) Variable Input
+              75:             TypePointer Input 7(fvec2)
+        76(gfo2):     75(ptr) Variable Input
+              77:             TypeImage 6(float) 2D sampled format:Unknown
+              78:             TypeSampledImage 77
+              79:             TypePointer UniformConstant 78
+       80(glass):     79(ptr) Variable UniformConstant
+         4(main):           2 Function None 3
+               5:             Label
+       62(color):     61(ptr) Variable Function
+              65:   11(fvec4) Load 64(gfo1)
+                              Store 62(color) 65
+              66:   11(fvec4) Load 62(color)
+              67:   11(fvec4) FunctionCall 13(Foo()
+              68:   11(fvec4) FAdd 66 67
+                              Store 62(color) 68
+              71:   11(fvec4) Load 62(color)
+                              Store 70(outColor) 71
+                              Return
+                              FunctionEnd
+         9(Bar():    7(fvec2) Function None 8
+              10:             Label
+              21:     20(ptr) AccessChain 17 19
+              22:    7(fvec2) Load 21
+              30:     20(ptr) AccessChain 28(blockName2) 19 29
+              31:    7(fvec2) Load 30
+              32:    7(fvec2) FAdd 22 31
+              33:     20(ptr) AccessChain 28(blockName2) 29 29
+              34:    7(fvec2) Load 33
+              35:    7(fvec2) FAdd 32 34
+                              ReturnValue 35
+                              FunctionEnd
+        13(Foo():   11(fvec4) Function None 12
+              14:             Label
+              42:     41(ptr) AccessChain 40 19
+              43:   11(fvec4) Load 42
+              44:     41(ptr) AccessChain 40 29
+              45:   11(fvec4) Load 44
+              46:   11(fvec4) FAdd 43 45
+              47:     41(ptr) AccessChain 28(blockName2) 19 19
+              48:   11(fvec4) Load 47
+              49:   11(fvec4) FAdd 46 48
+              50:     41(ptr) AccessChain 28(blockName2) 29 19
+              51:   11(fvec4) Load 50
+              52:   11(fvec4) FAdd 49 51
+              53:    7(fvec2) FunctionCall 9(Bar()
+              55:    6(float) CompositeExtract 53 0
+              56:    6(float) CompositeExtract 53 1
+              57:   11(fvec4) CompositeConstruct 55 56 54 54
+              58:   11(fvec4) FAdd 52 57
+                              ReturnValue 58
+                              FunctionEnd
diff --git a/Test/baseResults/link.multiAnonBlocksInvalid.0.0.vert.out b/Test/baseResults/link.multiAnonBlocksInvalid.0.0.vert.out
old mode 100755
new mode 100644
diff --git a/Test/baseResults/link.multiAnonBlocksValid.0.0.vert.out b/Test/baseResults/link.multiAnonBlocksValid.0.0.vert.out
old mode 100755
new mode 100644
diff --git a/Test/baseResults/link.multiBlocksInvalid.0.0.vert.out b/Test/baseResults/link.multiBlocksInvalid.0.0.vert.out
old mode 100755
new mode 100644
diff --git a/Test/baseResults/link.multiBlocksValid.1.0.vert.out b/Test/baseResults/link.multiBlocksValid.1.0.vert.out
old mode 100755
new mode 100644
diff --git a/Test/baseResults/link.vk.differentPC.0.0.frag.out b/Test/baseResults/link.vk.differentPC.0.0.frag.out
old mode 100755
new mode 100644
diff --git a/Test/baseResults/link.vk.differentPC.1.0.frag.out b/Test/baseResults/link.vk.differentPC.1.0.frag.out
old mode 100755
new mode 100644
diff --git a/Test/baseResults/link.vk.inconsistentGLPerVertex.0.vert.out b/Test/baseResults/link.vk.inconsistentGLPerVertex.0.vert.out
new file mode 100755
index 0000000..3d76b2f
--- /dev/null
+++ b/Test/baseResults/link.vk.inconsistentGLPerVertex.0.vert.out
@@ -0,0 +1,315 @@
+link.vk.inconsistentGLPerVertex.0.vert
+Shader version: 460
+0:? Sequence
+0:15  Function Definition: main( ( global void)
+0:15    Function Parameters: 
+0:17    Sequence
+0:17      move second child to first child ( temp highp 4-component vector of float)
+0:17        color: direct index for structure ( out highp 4-component vector of float)
+0:17          'vs_out' ( out block{ out highp 4-component vector of float color})
+0:17          Constant:
+0:17            0 (const int)
+0:17        Constant:
+0:17          1.000000
+0:17          1.000000
+0:17          1.000000
+0:17          1.000000
+0:18      move second child to first child ( temp float)
+0:18        gl_PointSize: direct index for structure ( gl_PointSize float PointSize)
+0:18          'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position,  gl_PointSize float PointSize gl_PointSize,  out unsized 1-element array of float ClipDistance gl_ClipDistance,  out unsized 1-element array of float CullDistance gl_CullDistance})
+0:18          Constant:
+0:18            1 (const uint)
+0:18        Constant:
+0:18          1.000000
+0:19      move second child to first child ( temp highp 4-component vector of float)
+0:19        gl_Position: direct index for structure ( gl_Position highp 4-component vector of float Position)
+0:19          'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position,  gl_PointSize float PointSize gl_PointSize,  out unsized 1-element array of float ClipDistance gl_ClipDistance,  out unsized 1-element array of float CullDistance gl_CullDistance})
+0:19          Constant:
+0:19            0 (const uint)
+0:19        'P' ( in highp 4-component vector of float)
+0:?   Linker Objects
+0:?     'vs_out' ( out block{ out highp 4-component vector of float color})
+0:?     'P' ( in highp 4-component vector of float)
+0:?     'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position,  gl_PointSize float PointSize gl_PointSize,  out unsized 1-element array of float ClipDistance gl_ClipDistance,  out unsized 1-element array of float CullDistance gl_CullDistance})
+
+link.vk.inconsistentGLPerVertex.0.geom
+Shader version: 460
+invocations = -1
+max_vertices = 50
+input primitive = lines_adjacency
+output primitive = triangle_strip
+0:? Sequence
+0:16  Function Definition: main( ( global void)
+0:16    Function Parameters: 
+0:18    Sequence
+0:18      move second child to first child ( temp 4-component vector of float)
+0:18        gl_Position: direct index for structure (layout( stream=0) gl_Position 4-component vector of float Position)
+0:18          'anon@0' (layout( stream=0) out block{layout( stream=0) gl_Position 4-component vector of float Position gl_Position, layout( stream=0) gl_PointSize float PointSize gl_PointSize, layout( stream=0) out unsized 1-element array of float ClipDistance gl_ClipDistance, layout( stream=0) out unsized 1-element array of float CullDistance gl_CullDistance})
+0:18          Constant:
+0:18            0 (const uint)
+0:18        gl_Position: direct index for structure ( in 4-component vector of float Position)
+0:18          direct index ( temp block{ in 4-component vector of float Position gl_Position,  in float PointSize gl_PointSize,  in unsized 1-element array of float ClipDistance gl_ClipDistance,  in unsized 1-element array of float CullDistance gl_CullDistance,  in 4-component vector of float SecondaryPositionNV gl_SecondaryPositionNV,  in unsized 1-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV})
+0:18            'gl_in' ( in 4-element array of block{ in 4-component vector of float Position gl_Position,  in float PointSize gl_PointSize,  in unsized 1-element array of float ClipDistance gl_ClipDistance,  in unsized 1-element array of float CullDistance gl_CullDistance,  in 4-component vector of float SecondaryPositionNV gl_SecondaryPositionNV,  in unsized 1-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV})
+0:18            Constant:
+0:18              0 (const int)
+0:18          Constant:
+0:18            0 (const int)
+0:19      move second child to first child ( temp highp 4-component vector of float)
+0:19        color: direct index for structure (layout( stream=0) out highp 4-component vector of float)
+0:19          'gs_out' (layout( stream=0) out block{layout( stream=0) out highp 4-component vector of float color})
+0:19          Constant:
+0:19            0 (const int)
+0:19        color: direct index for structure ( in highp 4-component vector of float)
+0:19          direct index ( temp block{ in highp 4-component vector of float color})
+0:19            'gs_in' ( in 4-element array of block{ in highp 4-component vector of float color})
+0:19            Constant:
+0:19              0 (const int)
+0:19          Constant:
+0:19            0 (const int)
+0:20      EmitVertex ( global void)
+0:21      move second child to first child ( temp highp 4-component vector of float)
+0:21        color: direct index for structure (layout( stream=0) out highp 4-component vector of float)
+0:21          'gs_out' (layout( stream=0) out block{layout( stream=0) out highp 4-component vector of float color})
+0:21          Constant:
+0:21            0 (const int)
+0:21        color: direct index for structure ( in highp 4-component vector of float)
+0:21          direct index ( temp block{ in highp 4-component vector of float color})
+0:21            'gs_in' ( in 4-element array of block{ in highp 4-component vector of float color})
+0:21            Constant:
+0:21              1 (const int)
+0:21          Constant:
+0:21            0 (const int)
+0:22      move second child to first child ( temp 4-component vector of float)
+0:22        gl_Position: direct index for structure (layout( stream=0) gl_Position 4-component vector of float Position)
+0:22          'anon@0' (layout( stream=0) out block{layout( stream=0) gl_Position 4-component vector of float Position gl_Position, layout( stream=0) gl_PointSize float PointSize gl_PointSize, layout( stream=0) out unsized 1-element array of float ClipDistance gl_ClipDistance, layout( stream=0) out unsized 1-element array of float CullDistance gl_CullDistance})
+0:22          Constant:
+0:22            0 (const uint)
+0:22        gl_Position: direct index for structure ( in 4-component vector of float Position)
+0:22          direct index ( temp block{ in 4-component vector of float Position gl_Position,  in float PointSize gl_PointSize,  in unsized 1-element array of float ClipDistance gl_ClipDistance,  in unsized 1-element array of float CullDistance gl_CullDistance,  in 4-component vector of float SecondaryPositionNV gl_SecondaryPositionNV,  in unsized 1-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV})
+0:22            'gl_in' ( in 4-element array of block{ in 4-component vector of float Position gl_Position,  in float PointSize gl_PointSize,  in unsized 1-element array of float ClipDistance gl_ClipDistance,  in unsized 1-element array of float CullDistance gl_CullDistance,  in 4-component vector of float SecondaryPositionNV gl_SecondaryPositionNV,  in unsized 1-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV})
+0:22            Constant:
+0:22              1 (const int)
+0:22          Constant:
+0:22            0 (const int)
+0:23      EmitVertex ( global void)
+0:24      move second child to first child ( temp highp 4-component vector of float)
+0:24        color: direct index for structure (layout( stream=0) out highp 4-component vector of float)
+0:24          'gs_out' (layout( stream=0) out block{layout( stream=0) out highp 4-component vector of float color})
+0:24          Constant:
+0:24            0 (const int)
+0:24        color: direct index for structure ( in highp 4-component vector of float)
+0:24          direct index ( temp block{ in highp 4-component vector of float color})
+0:24            'gs_in' ( in 4-element array of block{ in highp 4-component vector of float color})
+0:24            Constant:
+0:24              0 (const int)
+0:24          Constant:
+0:24            0 (const int)
+0:25      move second child to first child ( temp 4-component vector of float)
+0:25        gl_Position: direct index for structure (layout( stream=0) gl_Position 4-component vector of float Position)
+0:25          'anon@0' (layout( stream=0) out block{layout( stream=0) gl_Position 4-component vector of float Position gl_Position, layout( stream=0) gl_PointSize float PointSize gl_PointSize, layout( stream=0) out unsized 1-element array of float ClipDistance gl_ClipDistance, layout( stream=0) out unsized 1-element array of float CullDistance gl_CullDistance})
+0:25          Constant:
+0:25            0 (const uint)
+0:25        gl_Position: direct index for structure ( in 4-component vector of float Position)
+0:25          direct index ( temp block{ in 4-component vector of float Position gl_Position,  in float PointSize gl_PointSize,  in unsized 1-element array of float ClipDistance gl_ClipDistance,  in unsized 1-element array of float CullDistance gl_CullDistance,  in 4-component vector of float SecondaryPositionNV gl_SecondaryPositionNV,  in unsized 1-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV})
+0:25            'gl_in' ( in 4-element array of block{ in 4-component vector of float Position gl_Position,  in float PointSize gl_PointSize,  in unsized 1-element array of float ClipDistance gl_ClipDistance,  in unsized 1-element array of float CullDistance gl_CullDistance,  in 4-component vector of float SecondaryPositionNV gl_SecondaryPositionNV,  in unsized 1-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV})
+0:25            Constant:
+0:25              0 (const int)
+0:25          Constant:
+0:25            0 (const int)
+0:26      EmitVertex ( global void)
+0:?   Linker Objects
+0:?     'gs_in' ( in 4-element array of block{ in highp 4-component vector of float color})
+0:?     'gs_out' (layout( stream=0) out block{layout( stream=0) out highp 4-component vector of float color})
+0:?     'anon@0' (layout( stream=0) out block{layout( stream=0) gl_Position 4-component vector of float Position gl_Position, layout( stream=0) gl_PointSize float PointSize gl_PointSize, layout( stream=0) out unsized 1-element array of float ClipDistance gl_ClipDistance, layout( stream=0) out unsized 1-element array of float CullDistance gl_CullDistance})
+0:?     'gl_in' ( in 4-element array of block{ in 4-component vector of float Position gl_Position,  in float PointSize gl_PointSize,  in unsized 1-element array of float ClipDistance gl_ClipDistance,  in unsized 1-element array of float CullDistance gl_CullDistance,  in 4-component vector of float SecondaryPositionNV gl_SecondaryPositionNV,  in unsized 1-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV})
+
+
+Linked vertex stage:
+
+
+Linked geometry stage:
+
+
+Shader version: 460
+0:? Sequence
+0:15  Function Definition: main( ( global void)
+0:15    Function Parameters: 
+0:17    Sequence
+0:17      move second child to first child ( temp highp 4-component vector of float)
+0:17        color: direct index for structure ( out highp 4-component vector of float)
+0:17          'vs_out' ( out block{ out highp 4-component vector of float color})
+0:17          Constant:
+0:17            0 (const int)
+0:17        Constant:
+0:17          1.000000
+0:17          1.000000
+0:17          1.000000
+0:17          1.000000
+0:18      move second child to first child ( temp float)
+0:18        gl_PointSize: direct index for structure ( gl_PointSize float PointSize)
+0:18          'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position,  gl_PointSize float PointSize gl_PointSize,  out 1-element array of float ClipDistance gl_ClipDistance,  out 1-element array of float CullDistance gl_CullDistance})
+0:18          Constant:
+0:18            1 (const uint)
+0:18        Constant:
+0:18          1.000000
+0:19      move second child to first child ( temp highp 4-component vector of float)
+0:19        gl_Position: direct index for structure ( gl_Position highp 4-component vector of float Position)
+0:19          'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position,  gl_PointSize float PointSize gl_PointSize,  out 1-element array of float ClipDistance gl_ClipDistance,  out 1-element array of float CullDistance gl_CullDistance})
+0:19          Constant:
+0:19            0 (const uint)
+0:19        'P' ( in highp 4-component vector of float)
+0:?   Linker Objects
+0:?     'vs_out' ( out block{ out highp 4-component vector of float color})
+0:?     'P' ( in highp 4-component vector of float)
+0:?     'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position,  gl_PointSize float PointSize gl_PointSize,  out 1-element array of float ClipDistance gl_ClipDistance,  out 1-element array of float CullDistance gl_CullDistance})
+Shader version: 460
+invocations = 1
+max_vertices = 50
+input primitive = lines_adjacency
+output primitive = triangle_strip
+0:? Sequence
+0:16  Function Definition: main( ( global void)
+0:16    Function Parameters: 
+0:18    Sequence
+0:18      move second child to first child ( temp 4-component vector of float)
+0:18        gl_Position: direct index for structure (layout( stream=0) gl_Position 4-component vector of float Position)
+0:18          'anon@0' (layout( stream=0) out block{layout( stream=0) gl_Position 4-component vector of float Position gl_Position, layout( stream=0) gl_PointSize float PointSize gl_PointSize, layout( stream=0) out 1-element array of float ClipDistance gl_ClipDistance, layout( stream=0) out 1-element array of float CullDistance gl_CullDistance})
+0:18          Constant:
+0:18            0 (const uint)
+0:18        gl_Position: direct index for structure ( in 4-component vector of float Position)
+0:18          direct index ( temp block{ in 4-component vector of float Position gl_Position,  in float PointSize gl_PointSize,  in 1-element array of float ClipDistance gl_ClipDistance,  in 1-element array of float CullDistance gl_CullDistance,  in 4-component vector of float SecondaryPositionNV gl_SecondaryPositionNV,  in 1-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV})
+0:18            'gl_in' ( in 4-element array of block{ in 4-component vector of float Position gl_Position,  in float PointSize gl_PointSize,  in 1-element array of float ClipDistance gl_ClipDistance,  in 1-element array of float CullDistance gl_CullDistance,  in 4-component vector of float SecondaryPositionNV gl_SecondaryPositionNV,  in 1-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV})
+0:18            Constant:
+0:18              0 (const int)
+0:18          Constant:
+0:18            0 (const int)
+0:19      move second child to first child ( temp highp 4-component vector of float)
+0:19        color: direct index for structure (layout( stream=0) out highp 4-component vector of float)
+0:19          'gs_out' (layout( stream=0) out block{layout( stream=0) out highp 4-component vector of float color})
+0:19          Constant:
+0:19            0 (const int)
+0:19        color: direct index for structure ( in highp 4-component vector of float)
+0:19          direct index ( temp block{ in highp 4-component vector of float color})
+0:19            'gs_in' ( in 4-element array of block{ in highp 4-component vector of float color})
+0:19            Constant:
+0:19              0 (const int)
+0:19          Constant:
+0:19            0 (const int)
+0:20      EmitVertex ( global void)
+0:21      move second child to first child ( temp highp 4-component vector of float)
+0:21        color: direct index for structure (layout( stream=0) out highp 4-component vector of float)
+0:21          'gs_out' (layout( stream=0) out block{layout( stream=0) out highp 4-component vector of float color})
+0:21          Constant:
+0:21            0 (const int)
+0:21        color: direct index for structure ( in highp 4-component vector of float)
+0:21          direct index ( temp block{ in highp 4-component vector of float color})
+0:21            'gs_in' ( in 4-element array of block{ in highp 4-component vector of float color})
+0:21            Constant:
+0:21              1 (const int)
+0:21          Constant:
+0:21            0 (const int)
+0:22      move second child to first child ( temp 4-component vector of float)
+0:22        gl_Position: direct index for structure (layout( stream=0) gl_Position 4-component vector of float Position)
+0:22          'anon@0' (layout( stream=0) out block{layout( stream=0) gl_Position 4-component vector of float Position gl_Position, layout( stream=0) gl_PointSize float PointSize gl_PointSize, layout( stream=0) out 1-element array of float ClipDistance gl_ClipDistance, layout( stream=0) out 1-element array of float CullDistance gl_CullDistance})
+0:22          Constant:
+0:22            0 (const uint)
+0:22        gl_Position: direct index for structure ( in 4-component vector of float Position)
+0:22          direct index ( temp block{ in 4-component vector of float Position gl_Position,  in float PointSize gl_PointSize,  in 1-element array of float ClipDistance gl_ClipDistance,  in 1-element array of float CullDistance gl_CullDistance,  in 4-component vector of float SecondaryPositionNV gl_SecondaryPositionNV,  in 1-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV})
+0:22            'gl_in' ( in 4-element array of block{ in 4-component vector of float Position gl_Position,  in float PointSize gl_PointSize,  in 1-element array of float ClipDistance gl_ClipDistance,  in 1-element array of float CullDistance gl_CullDistance,  in 4-component vector of float SecondaryPositionNV gl_SecondaryPositionNV,  in 1-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV})
+0:22            Constant:
+0:22              1 (const int)
+0:22          Constant:
+0:22            0 (const int)
+0:23      EmitVertex ( global void)
+0:24      move second child to first child ( temp highp 4-component vector of float)
+0:24        color: direct index for structure (layout( stream=0) out highp 4-component vector of float)
+0:24          'gs_out' (layout( stream=0) out block{layout( stream=0) out highp 4-component vector of float color})
+0:24          Constant:
+0:24            0 (const int)
+0:24        color: direct index for structure ( in highp 4-component vector of float)
+0:24          direct index ( temp block{ in highp 4-component vector of float color})
+0:24            'gs_in' ( in 4-element array of block{ in highp 4-component vector of float color})
+0:24            Constant:
+0:24              0 (const int)
+0:24          Constant:
+0:24            0 (const int)
+0:25      move second child to first child ( temp 4-component vector of float)
+0:25        gl_Position: direct index for structure (layout( stream=0) gl_Position 4-component vector of float Position)
+0:25          'anon@0' (layout( stream=0) out block{layout( stream=0) gl_Position 4-component vector of float Position gl_Position, layout( stream=0) gl_PointSize float PointSize gl_PointSize, layout( stream=0) out 1-element array of float ClipDistance gl_ClipDistance, layout( stream=0) out 1-element array of float CullDistance gl_CullDistance})
+0:25          Constant:
+0:25            0 (const uint)
+0:25        gl_Position: direct index for structure ( in 4-component vector of float Position)
+0:25          direct index ( temp block{ in 4-component vector of float Position gl_Position,  in float PointSize gl_PointSize,  in 1-element array of float ClipDistance gl_ClipDistance,  in 1-element array of float CullDistance gl_CullDistance,  in 4-component vector of float SecondaryPositionNV gl_SecondaryPositionNV,  in 1-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV})
+0:25            'gl_in' ( in 4-element array of block{ in 4-component vector of float Position gl_Position,  in float PointSize gl_PointSize,  in 1-element array of float ClipDistance gl_ClipDistance,  in 1-element array of float CullDistance gl_CullDistance,  in 4-component vector of float SecondaryPositionNV gl_SecondaryPositionNV,  in 1-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV})
+0:25            Constant:
+0:25              0 (const int)
+0:25          Constant:
+0:25            0 (const int)
+0:26      EmitVertex ( global void)
+0:?   Linker Objects
+0:?     'gs_in' ( in 4-element array of block{ in highp 4-component vector of float color})
+0:?     'gs_out' (layout( stream=0) out block{layout( stream=0) out highp 4-component vector of float color})
+0:?     'anon@0' (layout( stream=0) out block{layout( stream=0) gl_Position 4-component vector of float Position gl_Position, layout( stream=0) gl_PointSize float PointSize gl_PointSize, layout( stream=0) out 1-element array of float ClipDistance gl_ClipDistance, layout( stream=0) out 1-element array of float CullDistance gl_CullDistance})
+0:?     'gl_in' ( in 4-element array of block{ in 4-component vector of float Position gl_Position,  in float PointSize gl_PointSize,  in 1-element array of float ClipDistance gl_ClipDistance,  in 1-element array of float CullDistance gl_CullDistance,  in 4-component vector of float SecondaryPositionNV gl_SecondaryPositionNV,  in 1-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV})
+
+// Module Version 10000
+// Generated by (magic number): 8000a
+// Id's are bound by 30
+
+                              Capability Shader
+               1:             ExtInstImport  "GLSL.std.450"
+                              MemoryModel Logical GLSL450
+                              EntryPoint Vertex 4  "main" 10 22 27
+                              Source GLSL 460
+                              Name 4  "main"
+                              Name 8  "vs_output"
+                              MemberName 8(vs_output) 0  "color"
+                              Name 10  "vs_out"
+                              Name 20  "gl_PerVertex"
+                              MemberName 20(gl_PerVertex) 0  "gl_Position"
+                              MemberName 20(gl_PerVertex) 1  "gl_PointSize"
+                              MemberName 20(gl_PerVertex) 2  "gl_ClipDistance"
+                              MemberName 20(gl_PerVertex) 3  "gl_CullDistance"
+                              Name 22  ""
+                              Name 27  "P"
+                              Decorate 8(vs_output) Block
+                              Decorate 10(vs_out) Location 0
+                              MemberDecorate 20(gl_PerVertex) 0 BuiltIn Position
+                              MemberDecorate 20(gl_PerVertex) 1 BuiltIn PointSize
+                              MemberDecorate 20(gl_PerVertex) 2 BuiltIn ClipDistance
+                              MemberDecorate 20(gl_PerVertex) 3 BuiltIn CullDistance
+                              Decorate 20(gl_PerVertex) Block
+                              Decorate 27(P) Location 0
+               2:             TypeVoid
+               3:             TypeFunction 2
+               6:             TypeFloat 32
+               7:             TypeVector 6(float) 4
+    8(vs_output):             TypeStruct 7(fvec4)
+               9:             TypePointer Output 8(vs_output)
+      10(vs_out):      9(ptr) Variable Output
+              11:             TypeInt 32 1
+              12:     11(int) Constant 0
+              13:    6(float) Constant 1065353216
+              14:    7(fvec4) ConstantComposite 13 13 13 13
+              15:             TypePointer Output 7(fvec4)
+              17:             TypeInt 32 0
+              18:     17(int) Constant 1
+              19:             TypeArray 6(float) 18
+20(gl_PerVertex):             TypeStruct 7(fvec4) 6(float) 19 19
+              21:             TypePointer Output 20(gl_PerVertex)
+              22:     21(ptr) Variable Output
+              23:     11(int) Constant 1
+              24:             TypePointer Output 6(float)
+              26:             TypePointer Input 7(fvec4)
+           27(P):     26(ptr) Variable Input
+         4(main):           2 Function None 3
+               5:             Label
+              16:     15(ptr) AccessChain 10(vs_out) 12
+                              Store 16 14
+              25:     24(ptr) AccessChain 22 23
+                              Store 25 13
+              28:    7(fvec4) Load 27(P)
+              29:     15(ptr) AccessChain 22 12
+                              Store 29 28
+                              Return
+                              FunctionEnd
diff --git a/Test/baseResults/link.vk.matchingPC.0.0.frag.out b/Test/baseResults/link.vk.matchingPC.0.0.frag.out
old mode 100755
new mode 100644
diff --git a/Test/baseResults/link.vk.multiBlocksValid.0.0.vert.out b/Test/baseResults/link.vk.multiBlocksValid.0.0.vert.out
old mode 100755
new mode 100644
index ddb856d..bdabab1
--- a/Test/baseResults/link.vk.multiBlocksValid.0.0.vert.out
+++ b/Test/baseResults/link.vk.multiBlocksValid.0.0.vert.out
@@ -211,7 +211,7 @@
                               Name 70  "BufferBlock"
                               MemberName 70(BufferBlock) 0  "p"
                               Name 72  "uBuf"
-                              Decorate 14(oColor) Location 4
+                              Decorate 14(oColor) Location 2
                               MemberDecorate 16(ColorBlock) 0 Offset 0
                               MemberDecorate 16(ColorBlock) 1 Offset 16
                               MemberDecorate 16(ColorBlock) 2 Offset 32
@@ -224,7 +224,7 @@
                               Decorate 28(uColorBuf) DescriptorSet 0
                               Decorate 28(uColorBuf) Binding 0
                               Decorate 32(Vertex) Block
-                              Decorate 34(oV) Location 2
+                              Decorate 34(oV) Location 0
                               MemberDecorate 40(gl_PerVertex) 0 BuiltIn Position
                               MemberDecorate 40(gl_PerVertex) 1 BuiltIn PointSize
                               MemberDecorate 40(gl_PerVertex) 2 BuiltIn ClipDistance
diff --git a/Test/baseResults/link.vk.multiBlocksValid.1.0.geom.out b/Test/baseResults/link.vk.multiBlocksValid.1.0.geom.out
old mode 100755
new mode 100644
index 63be728..b0456a0
--- a/Test/baseResults/link.vk.multiBlocksValid.1.0.geom.out
+++ b/Test/baseResults/link.vk.multiBlocksValid.1.0.geom.out
@@ -304,7 +304,7 @@
                               MemberName 95(BufferBlock) 0  "p"
                               Name 97  "uBuf"
                               Name 100  "P"
-                              Decorate 18(oColor) Location 2
+                              Decorate 18(oColor) Location 1
                               MemberDecorate 20(ColorBlock) 0 Offset 0
                               MemberDecorate 20(ColorBlock) 1 Offset 16
                               MemberDecorate 20(ColorBlock) 2 Offset 32
@@ -326,7 +326,7 @@
                               Decorate 50(uM) DescriptorSet 0
                               Decorate 50(uM) Binding 0
                               Decorate 59(Vertex) Block
-                              Decorate 61(oV) Location 1
+                              Decorate 61(oV) Location 0
                               Decorate 64(Vertex) Block
                               Decorate 68(iV) Location 0
                               MemberDecorate 95(BufferBlock) 0 ColMajor
@@ -335,7 +335,7 @@
                               Decorate 95(BufferBlock) BufferBlock
                               Decorate 97(uBuf) DescriptorSet 0
                               Decorate 97(uBuf) Binding 1
-                              Decorate 100(P) Location 4
+                              Decorate 100(P) Location 2
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeFloat 32
diff --git a/Test/baseResults/link.vk.pcNamingInvalid.0.0.vert.out b/Test/baseResults/link.vk.pcNamingInvalid.0.0.vert.out
old mode 100755
new mode 100644
diff --git a/Test/baseResults/link.vk.pcNamingValid.0.0.vert.out b/Test/baseResults/link.vk.pcNamingValid.0.0.vert.out
old mode 100755
new mode 100644
diff --git a/Test/baseResults/negativeWorkGroupSize.comp.out b/Test/baseResults/negativeWorkGroupSize.comp.out
new file mode 100644
index 0000000..7ae3798
--- /dev/null
+++ b/Test/baseResults/negativeWorkGroupSize.comp.out
@@ -0,0 +1,69 @@
+negativeWorkGroupSize.comp
+ERROR: 0:4: 'initializer' : can't read from gl_WorkGroupSize before a fixed workgroup size has been declared 
+ERROR: 1 compilation errors.  No code generated.
+
+
+Shader version: 460
+local_size = (64, 1, 1)
+ERROR: node is still EOpNull!
+0:3  Function Definition: fn( ( global void)
+0:3    Function Parameters: 
+0:4    Sequence
+0:4      Sequence
+0:4        move second child to first child ( temp 3-component vector of uint)
+0:4          'wgs' ( temp 3-component vector of uint)
+0:4          Constant:
+0:4            1 (const uint)
+0:4            1 (const uint)
+0:4            1 (const uint)
+0:9  Function Definition: main( ( global void)
+0:9    Function Parameters: 
+0:10    Sequence
+0:10      Function Call: fn( ( global void)
+0:11      Sequence
+0:11        move second child to first child ( temp 3-component vector of uint)
+0:11          'wgs' ( temp 3-component vector of uint)
+0:11          Constant:
+0:11            64 (const uint)
+0:11            1 (const uint)
+0:11            1 (const uint)
+0:?   Linker Objects
+0:?     'gl_WorkGroupSize' ( const 3-component vector of uint WorkGroupSize)
+0:?       64 (const uint)
+0:?       1 (const uint)
+0:?       1 (const uint)
+
+
+Linked compute stage:
+
+
+Shader version: 460
+local_size = (64, 1, 1)
+ERROR: node is still EOpNull!
+0:3  Function Definition: fn( ( global void)
+0:3    Function Parameters: 
+0:4    Sequence
+0:4      Sequence
+0:4        move second child to first child ( temp 3-component vector of uint)
+0:4          'wgs' ( temp 3-component vector of uint)
+0:4          Constant:
+0:4            1 (const uint)
+0:4            1 (const uint)
+0:4            1 (const uint)
+0:9  Function Definition: main( ( global void)
+0:9    Function Parameters: 
+0:10    Sequence
+0:10      Function Call: fn( ( global void)
+0:11      Sequence
+0:11        move second child to first child ( temp 3-component vector of uint)
+0:11          'wgs' ( temp 3-component vector of uint)
+0:11          Constant:
+0:11            64 (const uint)
+0:11            1 (const uint)
+0:11            1 (const uint)
+0:?   Linker Objects
+0:?     'gl_WorkGroupSize' ( const 3-component vector of uint WorkGroupSize)
+0:?       64 (const uint)
+0:?       1 (const uint)
+0:?       1 (const uint)
+
diff --git a/Test/baseResults/numeral.frag.out b/Test/baseResults/numeral.frag.out
index b7c0a78..e2a7c64 100644
--- a/Test/baseResults/numeral.frag.out
+++ b/Test/baseResults/numeral.frag.out
@@ -12,7 +12,7 @@
 ERROR: 0:98: '' : numeric literal too big 
 ERROR: 0:101: '' : numeric literal too big 
 ERROR: 0:104: '#' : preprocessor directive cannot be preceded by another token 
-ERROR: 0:104: '' :  syntax error, unexpected $end, expecting COMMA or SEMICOLON
+ERROR: 0:104: '' :  syntax error, unexpected end of file, expecting COMMA or SEMICOLON
 ERROR: 14 compilation errors.  No code generated.
 
 
diff --git a/Test/baseResults/rayQuery-allOps.comp.out b/Test/baseResults/rayQuery-allOps.comp.out
index c0cc8aa..bf654f7 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
@@ -86,8 +86,9 @@
               35:             TypePointer Function 8(float)
               37:     18(int) Constant 3
               38:    8(float) Constant 1176255488
-              45:             TypeRayQueryProvisionalKHR
-              46:             TypePointer Function 45
+              45:             TypeRayQueryKHR
+              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
@@ -223,7 +223,7 @@
              129:           2       FunctionCall 6(doSomething()
                                     Branch 128
              128:                 Label
-             130:     18(int)     RayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR 47(rayQuery) 23
+             130:     14(int)     RayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR 47(rayQuery) 23
              131:    66(bool)     UGreaterThan 130 20
                                   SelectionMerge 133 None
                                   BranchConditional 131 132 133
diff --git a/Test/baseResults/rayQuery-allOps.frag.out b/Test/baseResults/rayQuery-allOps.frag.out
index 8182da3..90ebc4a 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
@@ -85,8 +85,9 @@
               35:             TypePointer Function 8(float)
               37:     18(int) Constant 3
               38:    8(float) Constant 1176255488
-              45:             TypeRayQueryProvisionalKHR
-              46:             TypePointer Function 45
+              45:             TypeRayQueryKHR
+              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
@@ -221,7 +221,7 @@
              129:           2       FunctionCall 6(doSomething()
                                     Branch 128
              128:                 Label
-             130:     18(int)     RayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR 47(rayQuery) 23
+             130:     14(int)     RayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR 47(rayQuery) 23
              131:    66(bool)     UGreaterThan 130 20
                                   SelectionMerge 133 None
                                   BranchConditional 131 132 133
diff --git a/Test/baseResults/rayQuery-allOps.rgen.out b/Test/baseResults/rayQuery-allOps.rgen.out
index 01b8f1d..b3a93b0 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"
@@ -85,8 +85,9 @@
               35:             TypePointer Function 8(float)
               37:     18(int) Constant 3
               38:    8(float) Constant 1176255488
-              45:             TypeRayQueryProvisionalKHR
-              46:             TypePointer Function 45
+              45:             TypeRayQueryKHR
+              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
@@ -221,7 +221,7 @@
              129:           2       FunctionCall 6(doSomething()
                                     Branch 128
              128:                 Label
-             130:     18(int)     RayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR 47(rayQuery) 23
+             130:     14(int)     RayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR 47(rayQuery) 23
              131:    66(bool)     UGreaterThan 130 20
                                   SelectionMerge 133 None
                                   BranchConditional 131 132 133
diff --git a/Test/baseResults/rayQuery-global.rgen.out b/Test/baseResults/rayQuery-global.rgen.out
new file mode 100644
index 0000000..7b05173
--- /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:             TypeRayQueryKHR
+               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-initialization.Error.comp.out b/Test/baseResults/rayQuery-initialization.Error.comp.out
new file mode 100644
index 0000000..6ce7fac
--- /dev/null
+++ b/Test/baseResults/rayQuery-initialization.Error.comp.out
@@ -0,0 +1,6 @@
+rayQuery-initialization.Error.comp
+ERROR: 0:7: '=' : ray queries can only be initialized by using the rayQueryInitializeEXT intrinsic: bar
+ERROR: 1 compilation errors.  No code generated.
+
+
+SPIR-V is not generated for failed compile or link
diff --git a/Test/baseResults/rayQuery-initialize.rgen.out b/Test/baseResults/rayQuery-initialize.rgen.out
index f97287f..f16facd 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"
@@ -55,8 +55,8 @@
                3:             TypeFunction 2
                6:             TypeInt 32 0
                7:             TypeFunction 6(int)
-              10:             TypeRayQueryProvisionalKHR
-              11:             TypePointer Function 10
+              10:             TypeRayQueryKHR
+              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..a44c41f 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"
@@ -57,8 +57,8 @@
                3:             TypeFunction 2
                6:             TypeInt 32 0
                7:             TypeFunction 6(int)
-              10:             TypeRayQueryProvisionalKHR
-              11:             TypePointer Function 10
+              10:             TypeRayQueryKHR
+              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-types.comp.out b/Test/baseResults/rayQuery-types.comp.out
new file mode 100644
index 0000000..87a1d68
--- /dev/null
+++ b/Test/baseResults/rayQuery-types.comp.out
@@ -0,0 +1,152 @@
+rayQuery-types.comp
+// Module Version 10000
+// Generated by (magic number): 8000a
+// Id's are bound by 86
+
+                              Capability Shader
+                              Capability RayQueryKHR
+                              Extension  "SPV_KHR_ray_query"
+               1:             ExtInstImport  "GLSL.std.450"
+                              MemoryModel Logical GLSL450
+                              EntryPoint GLCompute 4  "main"
+                              ExecutionMode 4 LocalSize 16 8 1
+                              Source GLSL 460
+                              SourceExtension  "GL_EXT_ray_query"
+                              Name 4  "main"
+                              Name 8  "rayQuery"
+                              Name 11  "tlas"
+                              Name 25  "rq_proceed"
+                              Name 35  "intersectionType"
+                              Name 41  "rayTMin"
+                              Name 43  "rayFlags"
+                              Name 46  "worldRayOrigin"
+                              Name 48  "worldDirection"
+                              Name 50  "intersectionT"
+                              Name 53  "customIndex"
+                              Name 55  "instanceId"
+                              Name 57  "sbtOffset"
+                              Name 59  "geometryIndex"
+                              Name 61  "primitiveIndex"
+                              Name 65  "barys"
+                              Name 67  "frontface"
+                              Name 69  "aabbOpaque"
+                              Name 71  "objRayDirection"
+                              Name 73  "objRayOrigin"
+                              Name 77  "objToWorld"
+                              Name 79  "worldToObj"
+                              Decorate 11(tlas) DescriptorSet 0
+                              Decorate 11(tlas) Binding 0
+                              Decorate 85 BuiltIn WorkgroupSize
+               2:             TypeVoid
+               3:             TypeFunction 2
+               6:             TypeRayQueryKHR
+               7:             TypePointer Private 6
+     8(rayQuery):      7(ptr) Variable Private
+               9:             TypeAccelerationStructureKHR
+              10:             TypePointer UniformConstant 9
+        11(tlas):     10(ptr) Variable UniformConstant
+              13:             TypeInt 32 0
+              14:     13(int) Constant 0
+              15:     13(int) Constant 255
+              16:             TypeFloat 32
+              17:             TypeVector 16(float) 3
+              18:   16(float) Constant 0
+              19:   17(fvec3) ConstantComposite 18 18 18
+              20:   16(float) Constant 1065353216
+              21:   17(fvec3) ConstantComposite 20 18 18
+              22:   16(float) Constant 1176256512
+              23:             TypeBool
+              24:             TypePointer Function 23(bool)
+              34:             TypePointer Function 13(int)
+              36:    23(bool) ConstantTrue
+              37:             TypeInt 32 1
+              38:     37(int) Constant 1
+              40:             TypePointer Function 16(float)
+              45:             TypePointer Function 17(fvec3)
+              52:             TypePointer Function 37(int)
+              63:             TypeVector 16(float) 2
+              64:             TypePointer Function 63(fvec2)
+              75:             TypeMatrix 17(fvec3) 4
+              76:             TypePointer Function 75
+              81:             TypeVector 13(int) 3
+              82:     13(int) Constant 16
+              83:     13(int) Constant 8
+              84:     13(int) Constant 1
+              85:   81(ivec3) ConstantComposite 82 83 84
+         4(main):           2 Function None 3
+               5:             Label
+  25(rq_proceed):     24(ptr) Variable Function
+35(intersectionType):     34(ptr) Variable Function
+     41(rayTMin):     40(ptr) Variable Function
+    43(rayFlags):     34(ptr) Variable Function
+46(worldRayOrigin):     45(ptr) Variable Function
+48(worldDirection):     45(ptr) Variable Function
+50(intersectionT):     40(ptr) Variable Function
+ 53(customIndex):     52(ptr) Variable Function
+  55(instanceId):     52(ptr) Variable Function
+   57(sbtOffset):     34(ptr) Variable Function
+59(geometryIndex):     52(ptr) Variable Function
+61(primitiveIndex):     52(ptr) Variable Function
+       65(barys):     64(ptr) Variable Function
+   67(frontface):     24(ptr) Variable Function
+  69(aabbOpaque):     24(ptr) Variable Function
+71(objRayDirection):     45(ptr) Variable Function
+73(objRayOrigin):     45(ptr) Variable Function
+  77(objToWorld):     76(ptr) Variable Function
+  79(worldToObj):     76(ptr) Variable Function
+              12:           9 Load 11(tlas)
+                              RayQueryInitializeKHR 8(rayQuery) 12 14 15 19 18 21 22
+              26:    23(bool) RayQueryProceedKHR 8(rayQuery)
+                              Store 25(rq_proceed) 26
+                              Branch 27
+              27:             Label
+                              LoopMerge 29 30 None
+                              Branch 31
+              31:             Label
+              32:    23(bool) Load 25(rq_proceed)
+                              BranchConditional 32 28 29
+              28:               Label
+              33:    23(bool)   RayQueryProceedKHR 8(rayQuery)
+                                Store 25(rq_proceed) 33
+                                Branch 30
+              30:               Label
+                                Branch 27
+              29:             Label
+              39:     13(int) RayQueryGetIntersectionTypeKHR 8(rayQuery) 38
+                              Store 35(intersectionType) 39
+              42:   16(float) RayQueryGetRayTMinKHR 8(rayQuery)
+                              Store 41(rayTMin) 42
+              44:     13(int) RayQueryGetRayFlagsKHR 8(rayQuery)
+                              Store 43(rayFlags) 44
+              47:   17(fvec3) RayQueryGetWorldRayOriginKHR 8(rayQuery)
+                              Store 46(worldRayOrigin) 47
+              49:   17(fvec3) RayQueryGetWorldRayDirectionKHR 8(rayQuery)
+                              Store 48(worldDirection) 49
+              51:   16(float) RayQueryGetIntersectionTKHR 8(rayQuery) 38
+                              Store 50(intersectionT) 51
+              54:     37(int) RayQueryGetIntersectionInstanceCustomIndexKHR 8(rayQuery) 38
+                              Store 53(customIndex) 54
+              56:     37(int) RayQueryGetIntersectionInstanceIdKHR 8(rayQuery) 38
+                              Store 55(instanceId) 56
+              58:     13(int) RayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR 8(rayQuery) 38
+                              Store 57(sbtOffset) 58
+              60:     37(int) RayQueryGetIntersectionGeometryIndexKHR 8(rayQuery) 38
+                              Store 59(geometryIndex) 60
+              62:     37(int) RayQueryGetIntersectionPrimitiveIndexKHR 8(rayQuery) 38
+                              Store 61(primitiveIndex) 62
+              66:   63(fvec2) RayQueryGetIntersectionBarycentricsKHR 8(rayQuery) 38
+                              Store 65(barys) 66
+              68:    23(bool) RayQueryGetIntersectionFrontFaceKHR 8(rayQuery) 38
+                              Store 67(frontface) 68
+              70:    23(bool) RayQueryGetIntersectionCandidateAABBOpaqueKHR 8(rayQuery)
+                              Store 69(aabbOpaque) 70
+              72:   17(fvec3) RayQueryGetIntersectionObjectRayDirectionKHR 8(rayQuery) 38
+                              Store 71(objRayDirection) 72
+              74:   17(fvec3) RayQueryGetIntersectionObjectRayOriginKHR 8(rayQuery) 38
+                              Store 73(objRayOrigin) 74
+              78:          75 RayQueryGetIntersectionObjectToWorldKHR 8(rayQuery) 38
+                              Store 77(objToWorld) 78
+              80:          75 RayQueryGetIntersectionWorldToObjectKHR 8(rayQuery) 38
+                              Store 79(worldToObj) 80
+                              Return
+                              FunctionEnd
diff --git a/Test/baseResults/rayQuery.rgen.out b/Test/baseResults/rayQuery.rgen.out
index bf142a3..80e9916 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"
@@ -39,8 +39,9 @@
               11:             TypePointer Function 10(float)
               13:   10(float) Constant 0
               15:   10(float) Constant 1148846080
-              16:             TypeRayQueryProvisionalKHR
-              17:             TypePointer Function 16
+              16:             TypeRayQueryKHR
+              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.1.4.NonWritable.frag.out b/Test/baseResults/spv.1.4.NonWritable.frag.out
old mode 100755
new mode 100644
diff --git a/Test/baseResults/spv.1.4.OpEntryPoint.opaqueParams.vert.out b/Test/baseResults/spv.1.4.OpEntryPoint.opaqueParams.vert.out
old mode 100755
new mode 100644
diff --git a/Test/baseResults/spv.1.4.OpSelect.frag.out b/Test/baseResults/spv.1.4.OpSelect.frag.out
old mode 100755
new mode 100644
diff --git a/Test/baseResults/spv.1.4.image.frag.out b/Test/baseResults/spv.1.4.image.frag.out
old mode 100755
new mode 100644
diff --git a/Test/baseResults/spv.1.4.sparseTexture.frag.out b/Test/baseResults/spv.1.4.sparseTexture.frag.out
old mode 100755
new mode 100644
diff --git a/Test/baseResults/spv.1.4.texture.frag.out b/Test/baseResults/spv.1.4.texture.frag.out
old mode 100755
new mode 100644
diff --git a/Test/baseResults/spv.AnyHitShader.rahit.out b/Test/baseResults/spv.AnyHitShader.rahit.out
index 755d60e..c893f88 100644
--- a/Test/baseResults/spv.AnyHitShader.rahit.out
+++ b/Test/baseResults/spv.AnyHitShader.rahit.out
@@ -53,7 +53,7 @@
                               Decorate 42(gl_ObjectRayDirectionNV) BuiltIn ObjectRayDirectionKHR
                               Decorate 47(gl_RayTminNV) BuiltIn RayTminKHR
                               Decorate 50(gl_RayTmaxNV) BuiltIn RayTmaxKHR
-                              Decorate 53(gl_HitTNV) BuiltIn HitTKHR
+                              Decorate 53(gl_HitTNV) BuiltIn HitTNV
                               Decorate 58(gl_HitKindNV) BuiltIn HitKindKHR
                               Decorate 64(gl_ObjectToWorldNV) BuiltIn ObjectToWorldKHR
                               Decorate 67(gl_WorldToObjectNV) BuiltIn WorldToObjectKHR
@@ -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..b76629c 100644
--- a/Test/baseResults/spv.ClosestHitShader.rchit.out
+++ b/Test/baseResults/spv.ClosestHitShader.rchit.out
@@ -55,7 +55,7 @@
                               Decorate 42(gl_ObjectRayDirectionNV) BuiltIn ObjectRayDirectionKHR
                               Decorate 47(gl_RayTminNV) BuiltIn RayTminKHR
                               Decorate 50(gl_RayTmaxNV) BuiltIn RayTmaxKHR
-                              Decorate 53(gl_HitTNV) BuiltIn HitTKHR
+                              Decorate 53(gl_HitTNV) BuiltIn HitTNV
                               Decorate 58(gl_HitKindNV) BuiltIn HitKindKHR
                               Decorate 64(gl_ObjectToWorldNV) BuiltIn ObjectToWorldKHR
                               Decorate 67(gl_WorldToObjectNV) BuiltIn WorldToObjectKHR
@@ -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..e573bba 100644
--- a/Test/baseResults/spv.MissShader.rmiss.out
+++ b/Test/baseResults/spv.MissShader.rmiss.out
@@ -1,13 +1,13 @@
 spv.MissShader.rmiss
 // Module Version 10000
 // Generated by (magic number): 8000a
-// Id's are bound by 60
+// Id's are bound by 59
 
                               Capability RayTracingNV
                               Extension  "SPV_NV_ray_tracing"
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450
-                              EntryPoint MissKHR 4  "main" 11 14 21 24 27 30 35 38
+                              EntryPoint MissKHR 4  "main" 11 14 21 24 29 34 37
                               Source GLSL 460
                               SourceExtension  "GL_NV_ray_tracing"
                               Name 4  "main"
@@ -19,29 +19,26 @@
                               Name 21  "gl_WorldRayOriginNV"
                               Name 23  "v3"
                               Name 24  "gl_WorldRayDirectionNV"
-                              Name 26  "v4"
-                              Name 27  "gl_ObjectRayOriginNV"
-                              Name 29  "v5"
-                              Name 30  "gl_ObjectRayDirectionNV"
-                              Name 33  "v6"
-                              Name 35  "gl_RayTminNV"
-                              Name 37  "v7"
-                              Name 38  "gl_RayTmaxNV"
-                              Name 42  "accNV"
-                              Name 57  "localPayload"
-                              Name 59  "incomingPayload"
+                              Name 27  "v4"
+                              Name 29  "gl_IncomingRayFlagsNV"
+                              Name 32  "v6"
+                              Name 34  "gl_RayTminNV"
+                              Name 36  "v7"
+                              Name 37  "gl_RayTmaxNV"
+                              Name 41  "accNV"
+                              Name 56  "localPayload"
+                              Name 58  "incomingPayload"
                               Decorate 11(gl_LaunchIDNV) BuiltIn LaunchIdKHR
                               Decorate 14(gl_LaunchSizeNV) BuiltIn LaunchSizeKHR
                               Decorate 21(gl_WorldRayOriginNV) BuiltIn WorldRayOriginKHR
                               Decorate 24(gl_WorldRayDirectionNV) BuiltIn WorldRayDirectionKHR
-                              Decorate 27(gl_ObjectRayOriginNV) BuiltIn ObjectRayOriginKHR
-                              Decorate 30(gl_ObjectRayDirectionNV) BuiltIn ObjectRayDirectionKHR
-                              Decorate 35(gl_RayTminNV) BuiltIn RayTminKHR
-                              Decorate 38(gl_RayTmaxNV) BuiltIn RayTmaxKHR
-                              Decorate 42(accNV) DescriptorSet 0
-                              Decorate 42(accNV) Binding 0
-                              Decorate 57(localPayload) Location 0
-                              Decorate 59(incomingPayload) Location 1
+                              Decorate 29(gl_IncomingRayFlagsNV) BuiltIn IncomingRayFlagsKHR
+                              Decorate 34(gl_RayTminNV) BuiltIn RayTminKHR
+                              Decorate 37(gl_RayTmaxNV) BuiltIn RayTmaxKHR
+                              Decorate 41(accNV) DescriptorSet 0
+                              Decorate 41(accNV) Binding 0
+                              Decorate 56(localPayload) Location 0
+                              Decorate 58(incomingPayload) Location 1
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeInt 32 0
@@ -56,41 +53,41 @@
               20:             TypePointer Input 17(fvec3)
 21(gl_WorldRayOriginNV):     20(ptr) Variable Input
 24(gl_WorldRayDirectionNV):     20(ptr) Variable Input
-27(gl_ObjectRayOriginNV):     20(ptr) Variable Input
-30(gl_ObjectRayDirectionNV):     20(ptr) Variable Input
-              32:             TypePointer Function 16(float)
-              34:             TypePointer Input 16(float)
-35(gl_RayTminNV):     34(ptr) Variable Input
-38(gl_RayTmaxNV):     34(ptr) Variable Input
-              40:             TypeAccelerationStructureKHR
-              41:             TypePointer UniformConstant 40
-       42(accNV):     41(ptr) Variable UniformConstant
-              44:      6(int) Constant 0
-              45:      6(int) Constant 1
-              46:      6(int) Constant 2
-              47:      6(int) Constant 3
-              48:   16(float) Constant 1056964608
-              49:   17(fvec3) ConstantComposite 48 48 48
-              50:   16(float) Constant 1065353216
-              51:   17(fvec3) ConstantComposite 50 50 50
-              52:   16(float) Constant 1061158912
-              53:             TypeInt 32 1
-              54:     53(int) Constant 1
-              55:             TypeVector 16(float) 4
-              56:             TypePointer RayPayloadKHR 55(fvec4)
-57(localPayload):     56(ptr) Variable RayPayloadKHR
-              58:             TypePointer IncomingRayPayloadKHR 55(fvec4)
-59(incomingPayload):     58(ptr) Variable IncomingRayPayloadKHR
+              26:             TypePointer Function 6(int)
+              28:             TypePointer Input 6(int)
+29(gl_IncomingRayFlagsNV):     28(ptr) Variable Input
+              31:             TypePointer Function 16(float)
+              33:             TypePointer Input 16(float)
+34(gl_RayTminNV):     33(ptr) Variable Input
+37(gl_RayTmaxNV):     33(ptr) Variable Input
+              39:             TypeAccelerationStructureKHR
+              40:             TypePointer UniformConstant 39
+       41(accNV):     40(ptr) Variable UniformConstant
+              43:      6(int) Constant 0
+              44:      6(int) Constant 1
+              45:      6(int) Constant 2
+              46:      6(int) Constant 3
+              47:   16(float) Constant 1056964608
+              48:   17(fvec3) ConstantComposite 47 47 47
+              49:   16(float) Constant 1065353216
+              50:   17(fvec3) ConstantComposite 49 49 49
+              51:   16(float) Constant 1061158912
+              52:             TypeInt 32 1
+              53:     52(int) Constant 1
+              54:             TypeVector 16(float) 4
+              55:             TypePointer RayPayloadKHR 54(fvec4)
+56(localPayload):     55(ptr) Variable RayPayloadKHR
+              57:             TypePointer IncomingRayPayloadKHR 54(fvec4)
+58(incomingPayload):     57(ptr) Variable IncomingRayPayloadKHR
          4(main):           2 Function None 3
                5:             Label
            9(v0):      8(ptr) Variable Function
           13(v1):      8(ptr) Variable Function
           19(v2):     18(ptr) Variable Function
           23(v3):     18(ptr) Variable Function
-          26(v4):     18(ptr) Variable Function
-          29(v5):     18(ptr) Variable Function
-          33(v6):     32(ptr) Variable Function
-          37(v7):     32(ptr) Variable Function
+          27(v4):     26(ptr) Variable Function
+          32(v6):     31(ptr) Variable Function
+          36(v7):     31(ptr) Variable Function
               12:    7(ivec3) Load 11(gl_LaunchIDNV)
                               Store 9(v0) 12
               15:    7(ivec3) Load 14(gl_LaunchSizeNV)
@@ -99,15 +96,13 @@
                               Store 19(v2) 22
               25:   17(fvec3) Load 24(gl_WorldRayDirectionNV)
                               Store 23(v3) 25
-              28:   17(fvec3) Load 27(gl_ObjectRayOriginNV)
-                              Store 26(v4) 28
-              31:   17(fvec3) Load 30(gl_ObjectRayDirectionNV)
-                              Store 29(v5) 31
-              36:   16(float) Load 35(gl_RayTminNV)
-                              Store 33(v6) 36
-              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
+              30:      6(int) Load 29(gl_IncomingRayFlagsNV)
+                              Store 27(v4) 30
+              35:   16(float) Load 34(gl_RayTminNV)
+                              Store 32(v6) 35
+              38:   16(float) Load 37(gl_RayTmaxNV)
+                              Store 36(v7) 38
+              42:          39 Load 41(accNV)
+                              TraceNV 42 43 44 45 46 43 48 47 50 51 53
                               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
old mode 100755
new mode 100644
index 195071f..f6b79c5
--- 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.WorkgroupMemoryExplicitLayout.16BitAccess.comp.out b/Test/baseResults/spv.WorkgroupMemoryExplicitLayout.16BitAccess.comp.out
new file mode 100644
index 0000000..31dd2dd
--- /dev/null
+++ b/Test/baseResults/spv.WorkgroupMemoryExplicitLayout.16BitAccess.comp.out
@@ -0,0 +1,54 @@
+spv.WorkgroupMemoryExplicitLayout.16BitAccess.comp
+// Module Version 10400
+// Generated by (magic number): 8000a
+// Id's are bound by 25
+
+                              Capability Shader
+                              Capability Float16
+                              Capability Int16
+                              Capability CapabilityWorkgroupMemoryExplicitLayoutKHR
+                              Capability CapabilityWorkgroupMemoryExplicitLayout16BitAccessKHR
+                              Extension  "SPV_KHR_workgroup_memory_explicit_layout"
+               1:             ExtInstImport  "GLSL.std.450"
+                              MemoryModel Logical GLSL450
+                              EntryPoint GLCompute 4  "main" 10
+                              ExecutionMode 4 LocalSize 2 1 1
+                              Source GLSL 430
+                              SourceExtension  "GL_EXT_shader_explicit_arithmetic_types"
+                              SourceExtension  "GL_EXT_shared_memory_block"
+                              Name 4  "main"
+                              Name 8  "first"
+                              MemberName 8(first) 0  "a"
+                              MemberName 8(first) 1  "f"
+                              Name 10  ""
+                              MemberDecorate 8(first) 0 Offset 0
+                              MemberDecorate 8(first) 1 Offset 2
+                              Decorate 8(first) Block
+                              Decorate 24 BuiltIn WorkgroupSize
+               2:             TypeVoid
+               3:             TypeFunction 2
+               6:             TypeInt 16 1
+               7:             TypeFloat 16
+        8(first):             TypeStruct 6(int16_t) 7(float16_t)
+               9:             TypePointer Workgroup 8(first)
+              10:      9(ptr) Variable Workgroup
+              11:             TypeInt 32 1
+              12:     11(int) Constant 0
+              13:  6(int16_t) Constant 3
+              14:             TypePointer Workgroup 6(int16_t)
+              16:     11(int) Constant 1
+              17:7(float16_t) Constant 18982
+              18:             TypePointer Workgroup 7(float16_t)
+              20:             TypeInt 32 0
+              21:             TypeVector 20(int) 3
+              22:     20(int) Constant 2
+              23:     20(int) Constant 1
+              24:   21(ivec3) ConstantComposite 22 23 23
+         4(main):           2 Function None 3
+               5:             Label
+              15:     14(ptr) AccessChain 10 12
+                              Store 15 13
+              19:     18(ptr) AccessChain 10 16
+                              Store 19 17
+                              Return
+                              FunctionEnd
diff --git a/Test/baseResults/spv.WorkgroupMemoryExplicitLayout.8BitAccess.comp.out b/Test/baseResults/spv.WorkgroupMemoryExplicitLayout.8BitAccess.comp.out
new file mode 100644
index 0000000..3447791
--- /dev/null
+++ b/Test/baseResults/spv.WorkgroupMemoryExplicitLayout.8BitAccess.comp.out
@@ -0,0 +1,45 @@
+spv.WorkgroupMemoryExplicitLayout.8BitAccess.comp
+// Module Version 10400
+// Generated by (magic number): 8000a
+// Id's are bound by 20
+
+                              Capability Shader
+                              Capability Int8
+                              Capability CapabilityWorkgroupMemoryExplicitLayoutKHR
+                              Capability CapabilityWorkgroupMemoryExplicitLayout8BitAccessKHR
+                              Extension  "SPV_KHR_workgroup_memory_explicit_layout"
+               1:             ExtInstImport  "GLSL.std.450"
+                              MemoryModel Logical GLSL450
+                              EntryPoint GLCompute 4  "main" 9
+                              ExecutionMode 4 LocalSize 2 1 1
+                              Source GLSL 430
+                              SourceExtension  "GL_EXT_shader_explicit_arithmetic_types"
+                              SourceExtension  "GL_EXT_shared_memory_block"
+                              Name 4  "main"
+                              Name 7  "first"
+                              MemberName 7(first) 0  "a"
+                              Name 9  ""
+                              MemberDecorate 7(first) 0 Offset 0
+                              Decorate 7(first) Block
+                              Decorate 19 BuiltIn WorkgroupSize
+               2:             TypeVoid
+               3:             TypeFunction 2
+               6:             TypeInt 8 1
+        7(first):             TypeStruct 6(int8_t)
+               8:             TypePointer Workgroup 7(first)
+               9:      8(ptr) Variable Workgroup
+              10:             TypeInt 32 1
+              11:     10(int) Constant 0
+              12:   6(int8_t) Constant 2
+              13:             TypePointer Workgroup 6(int8_t)
+              15:             TypeInt 32 0
+              16:             TypeVector 15(int) 3
+              17:     15(int) Constant 2
+              18:     15(int) Constant 1
+              19:   16(ivec3) ConstantComposite 17 18 18
+         4(main):           2 Function None 3
+               5:             Label
+              14:     13(ptr) AccessChain 9 11
+                              Store 14 12
+                              Return
+                              FunctionEnd
diff --git a/Test/baseResults/spv.WorkgroupMemoryExplicitLayout.MixBlockNonBlock_Errors.comp.out b/Test/baseResults/spv.WorkgroupMemoryExplicitLayout.MixBlockNonBlock_Errors.comp.out
new file mode 100644
index 0000000..82495d1
--- /dev/null
+++ b/Test/baseResults/spv.WorkgroupMemoryExplicitLayout.MixBlockNonBlock_Errors.comp.out
@@ -0,0 +1,4 @@
+spv.WorkgroupMemoryExplicitLayout.MixBlockNonBlock_Errors.comp
+ERROR: Linking compute stage: cannot mix use of shared variables inside and outside blocks
+
+SPIR-V is not generated for failed compile or link
diff --git a/Test/baseResults/spv.WorkgroupMemoryExplicitLayout.MultiBlock.comp.out b/Test/baseResults/spv.WorkgroupMemoryExplicitLayout.MultiBlock.comp.out
new file mode 100644
index 0000000..b578bd3
--- /dev/null
+++ b/Test/baseResults/spv.WorkgroupMemoryExplicitLayout.MultiBlock.comp.out
@@ -0,0 +1,54 @@
+spv.WorkgroupMemoryExplicitLayout.MultiBlock.comp
+// Module Version 10400
+// Generated by (magic number): 8000a
+// Id's are bound by 24
+
+                              Capability Shader
+                              Capability CapabilityWorkgroupMemoryExplicitLayoutKHR
+                              Extension  "SPV_KHR_workgroup_memory_explicit_layout"
+               1:             ExtInstImport  "GLSL.std.450"
+                              MemoryModel Logical GLSL450
+                              EntryPoint GLCompute 4  "main" 9 16
+                              ExecutionMode 4 LocalSize 8 1 1
+                              Source GLSL 430
+                              SourceExtension  "GL_EXT_shared_memory_block"
+                              Name 4  "main"
+                              Name 7  "first"
+                              MemberName 7(first) 0  "a"
+                              Name 9  ""
+                              Name 14  "second"
+                              MemberName 14(second) 0  "b"
+                              Name 16  ""
+                              MemberDecorate 7(first) 0 Offset 0
+                              Decorate 7(first) Block
+                              MemberDecorate 14(second) 0 Offset 0
+                              Decorate 14(second) Block
+                              Decorate 23 BuiltIn WorkgroupSize
+                              Decorate 9 Aliased
+                              Decorate 16 Aliased
+               2:             TypeVoid
+               3:             TypeFunction 2
+               6:             TypeInt 32 1
+        7(first):             TypeStruct 6(int)
+               8:             TypePointer Workgroup 7(first)
+               9:      8(ptr) Variable Workgroup
+              10:      6(int) Constant 0
+              11:      6(int) Constant 2
+              12:             TypePointer Workgroup 6(int)
+      14(second):             TypeStruct 6(int)
+              15:             TypePointer Workgroup 14(second)
+              16:     15(ptr) Variable Workgroup
+              17:      6(int) Constant 3
+              19:             TypeInt 32 0
+              20:             TypeVector 19(int) 3
+              21:     19(int) Constant 8
+              22:     19(int) Constant 1
+              23:   20(ivec3) ConstantComposite 21 22 22
+         4(main):           2 Function None 3
+               5:             Label
+              13:     12(ptr) AccessChain 9 10
+                              Store 13 11
+              18:     12(ptr) AccessChain 16 10
+                              Store 18 17
+                              Return
+                              FunctionEnd
diff --git a/Test/baseResults/spv.WorkgroupMemoryExplicitLayout.NonBlock.comp.out b/Test/baseResults/spv.WorkgroupMemoryExplicitLayout.NonBlock.comp.out
new file mode 100644
index 0000000..19bcff6
--- /dev/null
+++ b/Test/baseResults/spv.WorkgroupMemoryExplicitLayout.NonBlock.comp.out
@@ -0,0 +1,35 @@
+spv.WorkgroupMemoryExplicitLayout.NonBlock.comp
+// Module Version 10400
+// Generated by (magic number): 8000a
+// Id's are bound by 17
+
+                              Capability Shader
+               1:             ExtInstImport  "GLSL.std.450"
+                              MemoryModel Logical GLSL450
+                              EntryPoint GLCompute 4  "main" 8 10
+                              ExecutionMode 4 LocalSize 8 1 1
+                              Source GLSL 430
+                              SourceExtension  "GL_EXT_shared_memory_block"
+                              Name 4  "main"
+                              Name 8  "a"
+                              Name 10  "b"
+                              Decorate 16 BuiltIn WorkgroupSize
+               2:             TypeVoid
+               3:             TypeFunction 2
+               6:             TypeInt 32 1
+               7:             TypePointer Workgroup 6(int)
+            8(a):      7(ptr) Variable Workgroup
+               9:      6(int) Constant 2
+           10(b):      7(ptr) Variable Workgroup
+              11:      6(int) Constant 3
+              12:             TypeInt 32 0
+              13:             TypeVector 12(int) 3
+              14:     12(int) Constant 8
+              15:     12(int) Constant 1
+              16:   13(ivec3) ConstantComposite 14 15 15
+         4(main):           2 Function None 3
+               5:             Label
+                              Store 8(a) 9
+                              Store 10(b) 11
+                              Return
+                              FunctionEnd
diff --git a/Test/baseResults/spv.WorkgroupMemoryExplicitLayout.SingleBlock.comp.out b/Test/baseResults/spv.WorkgroupMemoryExplicitLayout.SingleBlock.comp.out
new file mode 100644
index 0000000..413fd2e
--- /dev/null
+++ b/Test/baseResults/spv.WorkgroupMemoryExplicitLayout.SingleBlock.comp.out
@@ -0,0 +1,41 @@
+spv.WorkgroupMemoryExplicitLayout.SingleBlock.comp
+// Module Version 10400
+// Generated by (magic number): 8000a
+// Id's are bound by 19
+
+                              Capability Shader
+                              Capability CapabilityWorkgroupMemoryExplicitLayoutKHR
+                              Extension  "SPV_KHR_workgroup_memory_explicit_layout"
+               1:             ExtInstImport  "GLSL.std.450"
+                              MemoryModel Logical GLSL450
+                              EntryPoint GLCompute 4  "main" 9
+                              ExecutionMode 4 LocalSize 8 1 1
+                              Source GLSL 430
+                              SourceExtension  "GL_EXT_shared_memory_block"
+                              Name 4  "main"
+                              Name 7  "first"
+                              MemberName 7(first) 0  "a"
+                              Name 9  ""
+                              MemberDecorate 7(first) 0 Offset 0
+                              Decorate 7(first) Block
+                              Decorate 18 BuiltIn WorkgroupSize
+               2:             TypeVoid
+               3:             TypeFunction 2
+               6:             TypeInt 32 1
+        7(first):             TypeStruct 6(int)
+               8:             TypePointer Workgroup 7(first)
+               9:      8(ptr) Variable Workgroup
+              10:      6(int) Constant 0
+              11:      6(int) Constant 2
+              12:             TypePointer Workgroup 6(int)
+              14:             TypeInt 32 0
+              15:             TypeVector 14(int) 3
+              16:     14(int) Constant 8
+              17:     14(int) Constant 1
+              18:   15(ivec3) ConstantComposite 16 17 17
+         4(main):           2 Function None 3
+               5:             Label
+              13:     12(ptr) AccessChain 9 10
+                              Store 13 11
+                              Return
+                              FunctionEnd
diff --git a/Test/baseResults/spv.WorkgroupMemoryExplicitLayout.scalar.comp.out b/Test/baseResults/spv.WorkgroupMemoryExplicitLayout.scalar.comp.out
new file mode 100644
index 0000000..6a43e23
--- /dev/null
+++ b/Test/baseResults/spv.WorkgroupMemoryExplicitLayout.scalar.comp.out
@@ -0,0 +1,84 @@
+spv.WorkgroupMemoryExplicitLayout.scalar.comp
+// Module Version 10400
+// Generated by (magic number): 8000a
+// Id's are bound by 29
+
+                              Capability Shader
+                              Capability CapabilityWorkgroupMemoryExplicitLayoutKHR
+                              Extension  "SPV_KHR_workgroup_memory_explicit_layout"
+               1:             ExtInstImport  "GLSL.std.450"
+                              MemoryModel Logical GLSL450
+                              EntryPoint GLCompute 4  "main" 28
+                              ExecutionMode 4 LocalSize 8 1 1
+                              Source GLSL 430
+                              SourceExtension  "GL_EXT_scalar_block_layout"
+                              SourceExtension  "GL_EXT_shared_memory_block"
+                              Name 4  "main"
+                              Name 17  "T"
+                              MemberName 17(T) 0  "t"
+                              Name 24  "S"
+                              MemberName 24(S) 0  "f"
+                              MemberName 24(S) 1  "v2"
+                              MemberName 24(S) 2  "v3"
+                              MemberName 24(S) 3  "v4"
+                              MemberName 24(S) 4  "t"
+                              MemberName 24(S) 5  "f_array"
+                              MemberName 24(S) 6  "v2_array"
+                              MemberName 24(S) 7  "v3_array"
+                              MemberName 24(S) 8  "v4_array"
+                              MemberName 24(S) 9  "t_array"
+                              Name 26  "Block"
+                              MemberName 26(Block) 0  "s"
+                              MemberName 26(Block) 1  "s_array"
+                              Name 28  ""
+                              Decorate 10 BuiltIn WorkgroupSize
+                              Decorate 16 ArrayStride 4
+                              MemberDecorate 17(T) 0 Offset 0
+                              Decorate 19 ArrayStride 4
+                              Decorate 20 ArrayStride 8
+                              Decorate 21 ArrayStride 12
+                              Decorate 22 ArrayStride 16
+                              Decorate 23 ArrayStride 12
+                              MemberDecorate 24(S) 0 Offset 0
+                              MemberDecorate 24(S) 1 Offset 4
+                              MemberDecorate 24(S) 2 Offset 12
+                              MemberDecorate 24(S) 3 Offset 24
+                              MemberDecorate 24(S) 4 Offset 40
+                              MemberDecorate 24(S) 5 Offset 52
+                              MemberDecorate 24(S) 6 Offset 76
+                              MemberDecorate 24(S) 7 Offset 124
+                              MemberDecorate 24(S) 8 Offset 196
+                              MemberDecorate 24(S) 9 Offset 292
+                              Decorate 25 ArrayStride 364
+                              MemberDecorate 26(Block) 0 Offset 0
+                              MemberDecorate 26(Block) 1 Offset 364
+                              Decorate 26(Block) Block
+               2:             TypeVoid
+               3:             TypeFunction 2
+               6:             TypeInt 32 0
+               7:             TypeVector 6(int) 3
+               8:      6(int) Constant 8
+               9:      6(int) Constant 1
+              10:    7(ivec3) ConstantComposite 8 9 9
+              11:             TypeFloat 32
+              12:             TypeVector 11(float) 2
+              13:             TypeVector 11(float) 3
+              14:             TypeVector 11(float) 4
+              15:      6(int) Constant 3
+              16:             TypeArray 11(float) 15
+           17(T):             TypeStruct 16
+              18:      6(int) Constant 6
+              19:             TypeArray 11(float) 18
+              20:             TypeArray 12(fvec2) 18
+              21:             TypeArray 13(fvec3) 18
+              22:             TypeArray 14(fvec4) 18
+              23:             TypeArray 17(T) 18
+           24(S):             TypeStruct 11(float) 12(fvec2) 13(fvec3) 14(fvec4) 17(T) 19 20 21 22 23
+              25:             TypeArray 24(S) 18
+       26(Block):             TypeStruct 24(S) 25
+              27:             TypePointer Workgroup 26(Block)
+              28:     27(ptr) Variable Workgroup
+         4(main):           2 Function None 3
+               5:             Label
+                              Return
+                              FunctionEnd
diff --git a/Test/baseResults/spv.WorkgroupMemoryExplicitLayout.std140.comp.out b/Test/baseResults/spv.WorkgroupMemoryExplicitLayout.std140.comp.out
new file mode 100644
index 0000000..df4b8ae
--- /dev/null
+++ b/Test/baseResults/spv.WorkgroupMemoryExplicitLayout.std140.comp.out
@@ -0,0 +1,83 @@
+spv.WorkgroupMemoryExplicitLayout.std140.comp
+// Module Version 10400
+// Generated by (magic number): 8000a
+// Id's are bound by 29
+
+                              Capability Shader
+                              Capability CapabilityWorkgroupMemoryExplicitLayoutKHR
+                              Extension  "SPV_KHR_workgroup_memory_explicit_layout"
+               1:             ExtInstImport  "GLSL.std.450"
+                              MemoryModel Logical GLSL450
+                              EntryPoint GLCompute 4  "main" 28
+                              ExecutionMode 4 LocalSize 8 1 1
+                              Source GLSL 430
+                              SourceExtension  "GL_EXT_shared_memory_block"
+                              Name 4  "main"
+                              Name 17  "T"
+                              MemberName 17(T) 0  "t"
+                              Name 24  "S"
+                              MemberName 24(S) 0  "f"
+                              MemberName 24(S) 1  "v2"
+                              MemberName 24(S) 2  "v3"
+                              MemberName 24(S) 3  "v4"
+                              MemberName 24(S) 4  "t"
+                              MemberName 24(S) 5  "f_array"
+                              MemberName 24(S) 6  "v2_array"
+                              MemberName 24(S) 7  "v3_array"
+                              MemberName 24(S) 8  "v4_array"
+                              MemberName 24(S) 9  "t_array"
+                              Name 26  "Block"
+                              MemberName 26(Block) 0  "s"
+                              MemberName 26(Block) 1  "s_array"
+                              Name 28  ""
+                              Decorate 10 BuiltIn WorkgroupSize
+                              Decorate 16 ArrayStride 16
+                              MemberDecorate 17(T) 0 Offset 0
+                              Decorate 19 ArrayStride 16
+                              Decorate 20 ArrayStride 16
+                              Decorate 21 ArrayStride 16
+                              Decorate 22 ArrayStride 16
+                              Decorate 23 ArrayStride 48
+                              MemberDecorate 24(S) 0 Offset 0
+                              MemberDecorate 24(S) 1 Offset 8
+                              MemberDecorate 24(S) 2 Offset 16
+                              MemberDecorate 24(S) 3 Offset 32
+                              MemberDecorate 24(S) 4 Offset 48
+                              MemberDecorate 24(S) 5 Offset 96
+                              MemberDecorate 24(S) 6 Offset 192
+                              MemberDecorate 24(S) 7 Offset 288
+                              MemberDecorate 24(S) 8 Offset 384
+                              MemberDecorate 24(S) 9 Offset 480
+                              Decorate 25 ArrayStride 768
+                              MemberDecorate 26(Block) 0 Offset 0
+                              MemberDecorate 26(Block) 1 Offset 768
+                              Decorate 26(Block) Block
+               2:             TypeVoid
+               3:             TypeFunction 2
+               6:             TypeInt 32 0
+               7:             TypeVector 6(int) 3
+               8:      6(int) Constant 8
+               9:      6(int) Constant 1
+              10:    7(ivec3) ConstantComposite 8 9 9
+              11:             TypeFloat 32
+              12:             TypeVector 11(float) 2
+              13:             TypeVector 11(float) 3
+              14:             TypeVector 11(float) 4
+              15:      6(int) Constant 3
+              16:             TypeArray 11(float) 15
+           17(T):             TypeStruct 16
+              18:      6(int) Constant 6
+              19:             TypeArray 11(float) 18
+              20:             TypeArray 12(fvec2) 18
+              21:             TypeArray 13(fvec3) 18
+              22:             TypeArray 14(fvec4) 18
+              23:             TypeArray 17(T) 18
+           24(S):             TypeStruct 11(float) 12(fvec2) 13(fvec3) 14(fvec4) 17(T) 19 20 21 22 23
+              25:             TypeArray 24(S) 18
+       26(Block):             TypeStruct 24(S) 25
+              27:             TypePointer Workgroup 26(Block)
+              28:     27(ptr) Variable Workgroup
+         4(main):           2 Function None 3
+               5:             Label
+                              Return
+                              FunctionEnd
diff --git a/Test/baseResults/spv.WorkgroupMemoryExplicitLayout.std430.comp.out b/Test/baseResults/spv.WorkgroupMemoryExplicitLayout.std430.comp.out
new file mode 100644
index 0000000..e782784
--- /dev/null
+++ b/Test/baseResults/spv.WorkgroupMemoryExplicitLayout.std430.comp.out
@@ -0,0 +1,83 @@
+spv.WorkgroupMemoryExplicitLayout.std430.comp
+// Module Version 10400
+// Generated by (magic number): 8000a
+// Id's are bound by 29
+
+                              Capability Shader
+                              Capability CapabilityWorkgroupMemoryExplicitLayoutKHR
+                              Extension  "SPV_KHR_workgroup_memory_explicit_layout"
+               1:             ExtInstImport  "GLSL.std.450"
+                              MemoryModel Logical GLSL450
+                              EntryPoint GLCompute 4  "main" 28
+                              ExecutionMode 4 LocalSize 8 1 1
+                              Source GLSL 430
+                              SourceExtension  "GL_EXT_shared_memory_block"
+                              Name 4  "main"
+                              Name 17  "T"
+                              MemberName 17(T) 0  "t"
+                              Name 24  "S"
+                              MemberName 24(S) 0  "f"
+                              MemberName 24(S) 1  "v2"
+                              MemberName 24(S) 2  "v3"
+                              MemberName 24(S) 3  "v4"
+                              MemberName 24(S) 4  "t"
+                              MemberName 24(S) 5  "f_array"
+                              MemberName 24(S) 6  "v2_array"
+                              MemberName 24(S) 7  "v3_array"
+                              MemberName 24(S) 8  "v4_array"
+                              MemberName 24(S) 9  "t_array"
+                              Name 26  "Block"
+                              MemberName 26(Block) 0  "s"
+                              MemberName 26(Block) 1  "s_array"
+                              Name 28  ""
+                              Decorate 10 BuiltIn WorkgroupSize
+                              Decorate 16 ArrayStride 4
+                              MemberDecorate 17(T) 0 Offset 0
+                              Decorate 19 ArrayStride 4
+                              Decorate 20 ArrayStride 8
+                              Decorate 21 ArrayStride 16
+                              Decorate 22 ArrayStride 16
+                              Decorate 23 ArrayStride 12
+                              MemberDecorate 24(S) 0 Offset 0
+                              MemberDecorate 24(S) 1 Offset 8
+                              MemberDecorate 24(S) 2 Offset 16
+                              MemberDecorate 24(S) 3 Offset 32
+                              MemberDecorate 24(S) 4 Offset 48
+                              MemberDecorate 24(S) 5 Offset 60
+                              MemberDecorate 24(S) 6 Offset 88
+                              MemberDecorate 24(S) 7 Offset 144
+                              MemberDecorate 24(S) 8 Offset 240
+                              MemberDecorate 24(S) 9 Offset 336
+                              Decorate 25 ArrayStride 416
+                              MemberDecorate 26(Block) 0 Offset 0
+                              MemberDecorate 26(Block) 1 Offset 416
+                              Decorate 26(Block) Block
+               2:             TypeVoid
+               3:             TypeFunction 2
+               6:             TypeInt 32 0
+               7:             TypeVector 6(int) 3
+               8:      6(int) Constant 8
+               9:      6(int) Constant 1
+              10:    7(ivec3) ConstantComposite 8 9 9
+              11:             TypeFloat 32
+              12:             TypeVector 11(float) 2
+              13:             TypeVector 11(float) 3
+              14:             TypeVector 11(float) 4
+              15:      6(int) Constant 3
+              16:             TypeArray 11(float) 15
+           17(T):             TypeStruct 16
+              18:      6(int) Constant 6
+              19:             TypeArray 11(float) 18
+              20:             TypeArray 12(fvec2) 18
+              21:             TypeArray 13(fvec3) 18
+              22:             TypeArray 14(fvec4) 18
+              23:             TypeArray 17(T) 18
+           24(S):             TypeStruct 11(float) 12(fvec2) 13(fvec3) 14(fvec4) 17(T) 19 20 21 22 23
+              25:             TypeArray 24(S) 18
+       26(Block):             TypeStruct 24(S) 25
+              27:             TypePointer Workgroup 26(Block)
+              28:     27(ptr) Variable Workgroup
+         4(main):           2 Function None 3
+               5:             Label
+                              Return
+                              FunctionEnd
diff --git a/Test/baseResults/spv.atomicFloat.comp.out b/Test/baseResults/spv.atomicFloat.comp.out
old mode 100755
new mode 100644
diff --git a/Test/baseResults/spv.atomicFloat_Error.comp.out b/Test/baseResults/spv.atomicFloat_Error.comp.out
old mode 100755
new mode 100644
diff --git a/Test/baseResults/spv.atomicStoreInt64.comp.out b/Test/baseResults/spv.atomicStoreInt64.comp.out
new file mode 100644
index 0000000..3adadcb
--- /dev/null
+++ b/Test/baseResults/spv.atomicStoreInt64.comp.out
@@ -0,0 +1,57 @@
+spv.atomicStoreInt64.comp
+// Module Version 10000
+// Generated by (magic number): 8000a
+// Id's are bound by 25
+
+                              Capability Shader
+                              Capability Int64
+                              Capability Int64Atomics
+               1:             ExtInstImport  "GLSL.std.450"
+                              MemoryModel Logical GLSL450
+                              EntryPoint GLCompute 4  "main"
+                              ExecutionMode 4 LocalSize 1 1 1
+                              Source GLSL 450
+                              SourceExtension  "GL_EXT_shader_atomic_int64"
+                              SourceExtension  "GL_EXT_shader_explicit_arithmetic_types_int64"
+                              SourceExtension  "GL_KHR_memory_scope_semantics"
+                              Name 4  "main"
+                              Name 7  "ssbo"
+                              MemberName 7(ssbo) 0  "y"
+                              Name 9  ""
+                              Name 14  "ubo"
+                              MemberName 14(ubo) 0  "z"
+                              Name 16  ""
+                              MemberDecorate 7(ssbo) 0 Offset 0
+                              Decorate 7(ssbo) BufferBlock
+                              Decorate 9 DescriptorSet 0
+                              Decorate 9 Binding 0
+                              MemberDecorate 14(ubo) 0 Offset 0
+                              Decorate 14(ubo) Block
+                              Decorate 16 DescriptorSet 0
+                              Decorate 16 Binding 1
+               2:             TypeVoid
+               3:             TypeFunction 2
+               6:             TypeInt 64 0
+         7(ssbo):             TypeStruct 6(int64_t)
+               8:             TypePointer Uniform 7(ssbo)
+               9:      8(ptr) Variable Uniform
+              10:             TypeInt 32 1
+              11:     10(int) Constant 0
+              12:             TypePointer Uniform 6(int64_t)
+         14(ubo):             TypeStruct 6(int64_t)
+              15:             TypePointer Uniform 14(ubo)
+              16:     15(ptr) Variable Uniform
+              19:     10(int) Constant 1
+              20:     10(int) Constant 64
+              21:             TypeInt 32 0
+              22:     21(int) Constant 1
+              23:     21(int) Constant 0
+              24:     21(int) Constant 64
+         4(main):           2 Function None 3
+               5:             Label
+              13:     12(ptr) AccessChain 9 11
+              17:     12(ptr) AccessChain 16 11
+              18:  6(int64_t) Load 17
+                              AtomicStore 13 19 24 18
+                              Return
+                              FunctionEnd
diff --git a/Test/baseResults/spv.bufferhandle1.frag.out b/Test/baseResults/spv.bufferhandle1.frag.out
index 59bcc78..b49c129 100644
--- a/Test/baseResults/spv.bufferhandle1.frag.out
+++ b/Test/baseResults/spv.bufferhandle1.frag.out
@@ -6,7 +6,7 @@
                               Capability Shader
                               Capability VulkanMemoryModelKHR
                               Capability PhysicalStorageBufferAddressesEXT
-                              Extension  "SPV_EXT_physical_storage_buffer"
+                              Extension  "SPV_KHR_physical_storage_buffer"
                               Extension  "SPV_KHR_storage_buffer_storage_class"
                               Extension  "SPV_KHR_vulkan_memory_model"
                1:             ExtInstImport  "GLSL.std.450"
diff --git a/Test/baseResults/spv.bufferhandle10.frag.out b/Test/baseResults/spv.bufferhandle10.frag.out
index 3a33c42..f9ab60d 100644
--- a/Test/baseResults/spv.bufferhandle10.frag.out
+++ b/Test/baseResults/spv.bufferhandle10.frag.out
@@ -6,7 +6,7 @@
                               Capability Shader
                               Capability VulkanMemoryModelKHR
                               Capability PhysicalStorageBufferAddressesEXT
-                              Extension  "SPV_EXT_physical_storage_buffer"
+                              Extension  "SPV_KHR_physical_storage_buffer"
                               Extension  "SPV_KHR_storage_buffer_storage_class"
                               Extension  "SPV_KHR_vulkan_memory_model"
                1:             ExtInstImport  "GLSL.std.450"
diff --git a/Test/baseResults/spv.bufferhandle11.frag.out b/Test/baseResults/spv.bufferhandle11.frag.out
index bd034aa..9dd1c7b 100644
--- a/Test/baseResults/spv.bufferhandle11.frag.out
+++ b/Test/baseResults/spv.bufferhandle11.frag.out
@@ -9,8 +9,8 @@
                               Capability Shader
                               Capability StorageBuffer8BitAccess
                               Capability PhysicalStorageBufferAddressesEXT
-                              Extension  "SPV_EXT_physical_storage_buffer"
                               Extension  "SPV_KHR_8bit_storage"
+                              Extension  "SPV_KHR_physical_storage_buffer"
                               Extension  "SPV_KHR_storage_buffer_storage_class"
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel PhysicalStorageBuffer64EXT GLSL450
diff --git a/Test/baseResults/spv.bufferhandle12.frag.out b/Test/baseResults/spv.bufferhandle12.frag.out
index c47c718..7cd5cb5 100644
--- a/Test/baseResults/spv.bufferhandle12.frag.out
+++ b/Test/baseResults/spv.bufferhandle12.frag.out
@@ -9,8 +9,8 @@
                               Capability Shader
                               Capability StorageUniformBufferBlock16
                               Capability PhysicalStorageBufferAddressesEXT
-                              Extension  "SPV_EXT_physical_storage_buffer"
                               Extension  "SPV_KHR_16bit_storage"
+                              Extension  "SPV_KHR_physical_storage_buffer"
                               Extension  "SPV_KHR_storage_buffer_storage_class"
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel PhysicalStorageBuffer64EXT GLSL450
diff --git a/Test/baseResults/spv.bufferhandle13.frag.out b/Test/baseResults/spv.bufferhandle13.frag.out
index bfc1524..5ce24ac 100644
--- a/Test/baseResults/spv.bufferhandle13.frag.out
+++ b/Test/baseResults/spv.bufferhandle13.frag.out
@@ -5,7 +5,7 @@
 
                               Capability Shader
                               Capability PhysicalStorageBufferAddressesEXT
-                              Extension  "SPV_EXT_physical_storage_buffer"
+                              Extension  "SPV_KHR_physical_storage_buffer"
                               Extension  "SPV_KHR_storage_buffer_storage_class"
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel PhysicalStorageBuffer64EXT GLSL450
diff --git a/Test/baseResults/spv.bufferhandle14.frag.out b/Test/baseResults/spv.bufferhandle14.frag.out
index 514a798..34df753 100644
--- a/Test/baseResults/spv.bufferhandle14.frag.out
+++ b/Test/baseResults/spv.bufferhandle14.frag.out
@@ -5,7 +5,7 @@
 
                               Capability Shader
                               Capability PhysicalStorageBufferAddressesEXT
-                              Extension  "SPV_EXT_physical_storage_buffer"
+                              Extension  "SPV_KHR_physical_storage_buffer"
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel PhysicalStorageBuffer64EXT GLSL450
                               EntryPoint Fragment 4  "main"
diff --git a/Test/baseResults/spv.bufferhandle15.frag.out b/Test/baseResults/spv.bufferhandle15.frag.out
index bfa5d94..ab1b4db 100644
--- a/Test/baseResults/spv.bufferhandle15.frag.out
+++ b/Test/baseResults/spv.bufferhandle15.frag.out
@@ -8,7 +8,7 @@
 
                               Capability Shader
                               Capability PhysicalStorageBufferAddressesEXT
-                              Extension  "SPV_EXT_physical_storage_buffer"
+                              Extension  "SPV_KHR_physical_storage_buffer"
                               Extension  "SPV_KHR_storage_buffer_storage_class"
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel PhysicalStorageBuffer64EXT GLSL450
diff --git a/Test/baseResults/spv.bufferhandle16.frag.out b/Test/baseResults/spv.bufferhandle16.frag.out
index 284bcb0..a9d9dcf 100644
--- a/Test/baseResults/spv.bufferhandle16.frag.out
+++ b/Test/baseResults/spv.bufferhandle16.frag.out
@@ -6,7 +6,7 @@
                               Capability Shader
                               Capability Int64
                               Capability PhysicalStorageBufferAddressesEXT
-                              Extension  "SPV_EXT_physical_storage_buffer"
+                              Extension  "SPV_KHR_physical_storage_buffer"
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel PhysicalStorageBuffer64EXT GLSL450
                               EntryPoint Fragment 4  "main"
diff --git a/Test/baseResults/spv.bufferhandle17_Errors.frag.out b/Test/baseResults/spv.bufferhandle17_Errors.frag.out
index cdcfb9c..9c7ddf9 100644
--- a/Test/baseResults/spv.bufferhandle17_Errors.frag.out
+++ b/Test/baseResults/spv.bufferhandle17_Errors.frag.out
@@ -2,8 +2,12 @@
 ERROR: 0:11: 'qualifier' : variables with reference type can't have qualifier 'const' 
 ERROR: 0:16: 'qualifier' : variables with reference type can't have qualifier 'const' 
 ERROR: 0:18: '==' : can't use with reference types 
+ERROR: 0:18: 'buffer reference math' : required extension not requested: GL_EXT_buffer_reference2
+ERROR: 0:18: '==' :  wrong operand types: no operation '==' exists that takes a left-hand operand of type ' temp reference' and a right operand of type ' temp reference' (or there is no acceptable conversion)
 ERROR: 0:19: '!=' : can't use with reference types 
-ERROR: 4 compilation errors.  No code generated.
+ERROR: 0:19: 'buffer reference math' : required extension not requested: GL_EXT_buffer_reference2
+ERROR: 0:19: '!=' :  wrong operand types: no operation '!=' exists that takes a left-hand operand of type ' temp reference' and a right operand of type ' temp reference' (or there is no acceptable conversion)
+ERROR: 8 compilation errors.  No code generated.
 
 
 SPIR-V is not generated for failed compile or link
diff --git a/Test/baseResults/spv.bufferhandle18.frag.out b/Test/baseResults/spv.bufferhandle18.frag.out
index 21dddc5..59ad6d0 100644
--- a/Test/baseResults/spv.bufferhandle18.frag.out
+++ b/Test/baseResults/spv.bufferhandle18.frag.out
@@ -6,7 +6,7 @@
                               Capability Shader
                               Capability Int64
                               Capability PhysicalStorageBufferAddressesEXT
-                              Extension  "SPV_EXT_physical_storage_buffer"
+                              Extension  "SPV_KHR_physical_storage_buffer"
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel PhysicalStorageBuffer64EXT GLSL450
                               EntryPoint Fragment 4  "main"
diff --git a/Test/baseResults/spv.bufferhandle2.frag.out b/Test/baseResults/spv.bufferhandle2.frag.out
index f66c92a..e20f3b7 100644
--- a/Test/baseResults/spv.bufferhandle2.frag.out
+++ b/Test/baseResults/spv.bufferhandle2.frag.out
@@ -5,7 +5,7 @@
 
                               Capability Shader
                               Capability PhysicalStorageBufferAddressesEXT
-                              Extension  "SPV_EXT_physical_storage_buffer"
+                              Extension  "SPV_KHR_physical_storage_buffer"
                               Extension  "SPV_KHR_storage_buffer_storage_class"
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel PhysicalStorageBuffer64EXT GLSL450
diff --git a/Test/baseResults/spv.bufferhandle3.frag.out b/Test/baseResults/spv.bufferhandle3.frag.out
index 95d4dcf..65ad1ca 100644
--- a/Test/baseResults/spv.bufferhandle3.frag.out
+++ b/Test/baseResults/spv.bufferhandle3.frag.out
@@ -5,7 +5,7 @@
 
                               Capability Shader
                               Capability PhysicalStorageBufferAddressesEXT
-                              Extension  "SPV_EXT_physical_storage_buffer"
+                              Extension  "SPV_KHR_physical_storage_buffer"
                               Extension  "SPV_KHR_storage_buffer_storage_class"
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel PhysicalStorageBuffer64EXT GLSL450
diff --git a/Test/baseResults/spv.bufferhandle4.frag.out b/Test/baseResults/spv.bufferhandle4.frag.out
index 6751d6f..e06bca4 100644
--- a/Test/baseResults/spv.bufferhandle4.frag.out
+++ b/Test/baseResults/spv.bufferhandle4.frag.out
@@ -5,7 +5,7 @@
 
                               Capability Shader
                               Capability PhysicalStorageBufferAddressesEXT
-                              Extension  "SPV_EXT_physical_storage_buffer"
+                              Extension  "SPV_KHR_physical_storage_buffer"
                               Extension  "SPV_KHR_storage_buffer_storage_class"
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel PhysicalStorageBuffer64EXT GLSL450
diff --git a/Test/baseResults/spv.bufferhandle5.frag.out b/Test/baseResults/spv.bufferhandle5.frag.out
index 9f78166..bf4d3a2 100644
--- a/Test/baseResults/spv.bufferhandle5.frag.out
+++ b/Test/baseResults/spv.bufferhandle5.frag.out
@@ -5,7 +5,7 @@
 
                               Capability Shader
                               Capability PhysicalStorageBufferAddressesEXT
-                              Extension  "SPV_EXT_physical_storage_buffer"
+                              Extension  "SPV_KHR_physical_storage_buffer"
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel PhysicalStorageBuffer64EXT GLSL450
                               EntryPoint Fragment 4  "main"
diff --git a/Test/baseResults/spv.bufferhandle6.frag.out b/Test/baseResults/spv.bufferhandle6.frag.out
index 441c762..abc9187 100644
--- a/Test/baseResults/spv.bufferhandle6.frag.out
+++ b/Test/baseResults/spv.bufferhandle6.frag.out
@@ -5,7 +5,7 @@
 
                               Capability Shader
                               Capability PhysicalStorageBufferAddressesEXT
-                              Extension  "SPV_EXT_physical_storage_buffer"
+                              Extension  "SPV_KHR_physical_storage_buffer"
                               Extension  "SPV_KHR_storage_buffer_storage_class"
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel PhysicalStorageBuffer64EXT GLSL450
diff --git a/Test/baseResults/spv.bufferhandle7.frag.out b/Test/baseResults/spv.bufferhandle7.frag.out
index 3c8e86c..4282a36 100644
--- a/Test/baseResults/spv.bufferhandle7.frag.out
+++ b/Test/baseResults/spv.bufferhandle7.frag.out
@@ -5,7 +5,7 @@
 
                               Capability Shader
                               Capability PhysicalStorageBufferAddressesEXT
-                              Extension  "SPV_EXT_physical_storage_buffer"
+                              Extension  "SPV_KHR_physical_storage_buffer"
                               Extension  "SPV_KHR_storage_buffer_storage_class"
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel PhysicalStorageBuffer64EXT GLSL450
diff --git a/Test/baseResults/spv.bufferhandle8.frag.out b/Test/baseResults/spv.bufferhandle8.frag.out
index b9f23c5..65d4665 100644
--- a/Test/baseResults/spv.bufferhandle8.frag.out
+++ b/Test/baseResults/spv.bufferhandle8.frag.out
@@ -5,7 +5,7 @@
 
                               Capability Shader
                               Capability PhysicalStorageBufferAddressesEXT
-                              Extension  "SPV_EXT_physical_storage_buffer"
+                              Extension  "SPV_KHR_physical_storage_buffer"
                               Extension  "SPV_KHR_storage_buffer_storage_class"
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel PhysicalStorageBuffer64EXT GLSL450
diff --git a/Test/baseResults/spv.bufferhandle9.frag.out b/Test/baseResults/spv.bufferhandle9.frag.out
index 7e534df..1e5091c 100644
--- a/Test/baseResults/spv.bufferhandle9.frag.out
+++ b/Test/baseResults/spv.bufferhandle9.frag.out
@@ -6,7 +6,7 @@
                               Capability Shader
                               Capability Int64
                               Capability PhysicalStorageBufferAddressesEXT
-                              Extension  "SPV_EXT_physical_storage_buffer"
+                              Extension  "SPV_KHR_physical_storage_buffer"
                               Extension  "SPV_KHR_storage_buffer_storage_class"
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel PhysicalStorageBuffer64EXT GLSL450
diff --git a/Test/baseResults/spv.bufferhandleUvec2.frag.out b/Test/baseResults/spv.bufferhandleUvec2.frag.out
old mode 100755
new mode 100644
diff --git a/Test/baseResults/spv.builtin.PrimitiveShadingRateEXT.vert.out b/Test/baseResults/spv.builtin.PrimitiveShadingRateEXT.vert.out
new file mode 100644
index 0000000..8daa79e
--- /dev/null
+++ b/Test/baseResults/spv.builtin.PrimitiveShadingRateEXT.vert.out
@@ -0,0 +1,53 @@
+spv.builtin.PrimitiveShadingRateEXT.vert
+// Module Version 10000
+// Generated by (magic number): 8000a
+// Id's are bound by 26
+
+                              Capability Shader
+                              Capability FragmentShadingRateKHR
+                              Extension  "SPV_KHR_fragment_shading_rate"
+               1:             ExtInstImport  "GLSL.std.450"
+                              MemoryModel Logical GLSL450
+                              EntryPoint Vertex 4  "main" 8 16
+                              Source GLSL 450
+                              SourceExtension  "GL_EXT_fragment_shading_rate"
+                              Name 4  "main"
+                              Name 8  "id"
+                              Name 16  "gl_PrimitiveShadingRateEXT"
+                              Decorate 8(id) Location 0
+                              Decorate 16(gl_PrimitiveShadingRateEXT) BuiltIn PrimitiveShadingRateKHR
+               2:             TypeVoid
+               3:             TypeFunction 2
+               6:             TypeInt 32 1
+               7:             TypePointer Input 6(int)
+           8(id):      7(ptr) Variable Input
+              15:             TypePointer Output 6(int)
+16(gl_PrimitiveShadingRateEXT):     15(ptr) Variable Output
+              17:      6(int) Constant 5
+              19:      6(int) Constant 9
+              21:      6(int) Constant 6
+              23:      6(int) Constant 10
+         4(main):           2 Function None 3
+               5:             Label
+               9:      6(int) Load 8(id)
+                              SelectionMerge 14 None
+                              Switch 9 14 
+                                     case 0: 10
+                                     case 1: 11
+                                     case 2: 12
+                                     case 3: 13
+              10:               Label
+                                Store 16(gl_PrimitiveShadingRateEXT) 17
+                                Branch 14
+              11:               Label
+                                Store 16(gl_PrimitiveShadingRateEXT) 19
+                                Branch 14
+              12:               Label
+                                Store 16(gl_PrimitiveShadingRateEXT) 21
+                                Branch 14
+              13:               Label
+                                Store 16(gl_PrimitiveShadingRateEXT) 23
+                                Branch 14
+              14:             Label
+                              Return
+                              FunctionEnd
diff --git a/Test/baseResults/spv.builtin.ShadingRateEXT.frag.out b/Test/baseResults/spv.builtin.ShadingRateEXT.frag.out
new file mode 100644
index 0000000..95b94d2
--- /dev/null
+++ b/Test/baseResults/spv.builtin.ShadingRateEXT.frag.out
@@ -0,0 +1,36 @@
+spv.builtin.ShadingRateEXT.frag
+WARNING: 0:5: '' : all default precisions are highp; use precision statements to quiet warning, e.g.:
+         "precision mediump int; precision highp float;" 
+
+// Module Version 10000
+// Generated by (magic number): 8000a
+// Id's are bound by 12
+
+                              Capability Shader
+                              Capability FragmentShadingRateKHR
+                              Extension  "SPV_KHR_fragment_shading_rate"
+               1:             ExtInstImport  "GLSL.std.450"
+                              MemoryModel Logical GLSL450
+                              EntryPoint Fragment 4  "main" 8 10
+                              ExecutionMode 4 OriginUpperLeft
+                              Source GLSL 450
+                              SourceExtension  "GL_EXT_fragment_shading_rate"
+                              Name 4  "main"
+                              Name 8  "val"
+                              Name 10  "gl_ShadingRateEXT"
+                              Decorate 8(val) Location 0
+                              Decorate 10(gl_ShadingRateEXT) Flat
+                              Decorate 10(gl_ShadingRateEXT) BuiltIn ShadingRateKHR
+               2:             TypeVoid
+               3:             TypeFunction 2
+               6:             TypeInt 32 1
+               7:             TypePointer Output 6(int)
+          8(val):      7(ptr) Variable Output
+               9:             TypePointer Input 6(int)
+10(gl_ShadingRateEXT):      9(ptr) Variable Input
+         4(main):           2 Function None 3
+               5:             Label
+              11:      6(int) Load 10(gl_ShadingRateEXT)
+                              Store 8(val) 11
+                              Return
+                              FunctionEnd
diff --git a/Test/baseResults/spv.coopmat.comp.out b/Test/baseResults/spv.coopmat.comp.out
index 6838bfc..0a609df 100644
--- a/Test/baseResults/spv.coopmat.comp.out
+++ b/Test/baseResults/spv.coopmat.comp.out
@@ -9,8 +9,8 @@
                               Capability VulkanMemoryModelKHR
                               Capability PhysicalStorageBufferAddressesEXT
                               Capability CooperativeMatrixNV
-                              Extension  "SPV_EXT_physical_storage_buffer"
                               Extension  "SPV_KHR_16bit_storage"
+                              Extension  "SPV_KHR_physical_storage_buffer"
                               Extension  "SPV_KHR_storage_buffer_storage_class"
                               Extension  "SPV_KHR_vulkan_memory_model"
                               Extension  "SPV_NV_cooperative_matrix"
diff --git a/Test/baseResults/spv.debugInfo.1.1.frag.out b/Test/baseResults/spv.debugInfo.1.1.frag.out
index eec50a3..78044ff 100644
--- a/Test/baseResults/spv.debugInfo.1.1.frag.out
+++ b/Test/baseResults/spv.debugInfo.1.1.frag.out
@@ -1,6 +1,4 @@
 spv.debugInfo.frag
-error: SPIRV-Tools Validation Errors
-error: Invalid SPIR-V binary version 1.3 for target environment SPIR-V 1.0 (under OpenGL 4.5 semantics).
 // Module Version 10300
 // Generated by (magic number): 8000a
 // Id's are bound by 124
@@ -9,7 +7,7 @@
                2:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450
                               EntryPoint Fragment 5  "main" 24 52
-                              ExecutionMode 5 OriginLowerLeft
+                              ExecutionMode 5 OriginUpperLeft
                1:             String  "spv.debugInfo.frag"
                               Source GLSL 450 1  "#version 450
 
@@ -83,14 +81,13 @@
                               ModuleProcessed  "resource-set-binding 3"
                               ModuleProcessed  "auto-map-bindings"
                               ModuleProcessed  "auto-map-locations"
-                              ModuleProcessed  "client opengl100"
+                              ModuleProcessed  "client vulkan100"
                               ModuleProcessed  "target-env spirv1.3"
-                              ModuleProcessed  "target-env opengl"
+                              ModuleProcessed  "target-env vulkan1.1"
                               ModuleProcessed  "relaxed-errors"
                               ModuleProcessed  "suppress-warnings"
                               ModuleProcessed  "hlsl-offsets"
                               ModuleProcessed  "entry-point main"
-                              ModuleProcessed  "use-storage-buffer"
                               Decorate 24(inv) Location 0
                               Decorate 52(outv) Location 0
                               MemberDecorate 53(S) 0 Offset 0
@@ -98,7 +95,6 @@
                               Decorate 54(ubuf) Block
                               Decorate 56 DescriptorSet 3
                               Decorate 56 Binding 0
-                              Decorate 67(s2d) Location 0
                               Decorate 67(s2d) DescriptorSet 3
                               Decorate 67(s2d) Binding 1
                3:             TypeVoid
diff --git a/Test/baseResults/spv.depthUnchanged.frag.out b/Test/baseResults/spv.depthUnchanged.frag.out
new file mode 100644
index 0000000..0074007
--- /dev/null
+++ b/Test/baseResults/spv.depthUnchanged.frag.out
@@ -0,0 +1,44 @@
+spv.depthUnchanged.frag
+// Module Version 10000
+// Generated by (magic number): 8000a
+// Id's are bound by 22
+
+                              Capability Shader
+               1:             ExtInstImport  "GLSL.std.450"
+                              MemoryModel Logical GLSL450
+                              EntryPoint Fragment 4  "main" 9 14 16
+                              ExecutionMode 4 OriginUpperLeft
+                              ExecutionMode 4 DepthReplacing
+                              ExecutionMode 4 DepthUnchanged
+                              Source GLSL 430
+                              Name 4  "main"
+                              Name 9  "outColor"
+                              Name 14  "gl_FragDepth"
+                              Name 16  "gl_FragCoord"
+                              Decorate 9(outColor) Location 0
+                              Decorate 14(gl_FragDepth) BuiltIn FragDepth
+                              Decorate 16(gl_FragCoord) BuiltIn FragCoord
+               2:             TypeVoid
+               3:             TypeFunction 2
+               6:             TypeFloat 32
+               7:             TypeVector 6(float) 4
+               8:             TypePointer Output 7(fvec4)
+     9(outColor):      8(ptr) Variable Output
+              10:    6(float) Constant 1065353216
+              11:    6(float) Constant 0
+              12:    7(fvec4) ConstantComposite 10 11 11 10
+              13:             TypePointer Output 6(float)
+14(gl_FragDepth):     13(ptr) Variable Output
+              15:             TypePointer Input 7(fvec4)
+16(gl_FragCoord):     15(ptr) Variable Input
+              17:             TypeInt 32 0
+              18:     17(int) Constant 1
+              19:             TypePointer Input 6(float)
+         4(main):           2 Function None 3
+               5:             Label
+                              Store 9(outColor) 12
+              20:     19(ptr) AccessChain 16(gl_FragCoord) 18
+              21:    6(float) Load 20
+                              Store 14(gl_FragDepth) 21
+                              Return
+                              FunctionEnd
diff --git a/Test/baseResults/spv.ext.AccelDecl.frag.out b/Test/baseResults/spv.ext.AccelDecl.frag.out
new file mode 100644
index 0000000..11d4560
--- /dev/null
+++ b/Test/baseResults/spv.ext.AccelDecl.frag.out
@@ -0,0 +1,41 @@
+spv.ext.AccelDecl.frag
+// Module Version 10400
+// Generated by (magic number): 8000a
+// Id's are bound by 15
+
+                              Capability Shader
+                              Capability RayQueryKHR
+                              Extension  "SPV_KHR_ray_query"
+               1:             ExtInstImport  "GLSL.std.450"
+                              MemoryModel Logical GLSL450
+                              EntryPoint Fragment 4  "main" 9 14
+                              ExecutionMode 4 OriginUpperLeft
+                              Source GLSL 460
+                              SourceExtension  "GL_ARB_separate_shader_objects"
+                              SourceExtension  "GL_EXT_nonuniform_qualifier"
+                              SourceExtension  "GL_EXT_ray_query"
+                              SourceExtension  "GL_EXT_scalar_block_layout"
+                              SourceExtension  "GL_GOOGLE_cpp_style_line_directive"
+                              SourceExtension  "GL_GOOGLE_include_directive"
+                              Name 4  "main"
+                              Name 9  "outColor"
+                              Name 14  "topLevelAS"
+                              Decorate 9(outColor) Location 0
+                              Decorate 14(topLevelAS) DescriptorSet 0
+                              Decorate 14(topLevelAS) Binding 1
+               2:             TypeVoid
+               3:             TypeFunction 2
+               6:             TypeFloat 32
+               7:             TypeVector 6(float) 4
+               8:             TypePointer Output 7(fvec4)
+     9(outColor):      8(ptr) Variable Output
+              10:    6(float) Constant 0
+              11:    7(fvec4) ConstantComposite 10 10 10 10
+              12:             TypeAccelerationStructureKHR
+              13:             TypePointer UniformConstant 12
+  14(topLevelAS):     13(ptr) Variable UniformConstant
+         4(main):           2 Function None 3
+               5:             Label
+                              Store 9(outColor) 11
+                              Return
+                              FunctionEnd
diff --git a/Test/baseResults/spv.ext.AnyHitShader.rahit.out b/Test/baseResults/spv.ext.AnyHitShader.rahit.out
index 39e43a7..7bcf812 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
@@ -59,7 +62,7 @@
                               Decorate 42(gl_ObjectRayDirectionEXT) BuiltIn ObjectRayDirectionKHR
                               Decorate 47(gl_RayTminEXT) BuiltIn RayTminKHR
                               Decorate 50(gl_RayTmaxEXT) BuiltIn RayTmaxKHR
-                              Decorate 53(gl_HitTEXT) BuiltIn HitTKHR
+                              Decorate 53(gl_HitTEXT) BuiltIn RayTmaxKHR
                               Decorate 58(gl_HitKindEXT) BuiltIn HitKindKHR
                               Decorate 64(gl_ObjectToWorldEXT) BuiltIn ObjectToWorldKHR
                               Decorate 67(gl_WorldToObjectEXT) BuiltIn WorldToObjectKHR
@@ -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..40903e6 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
@@ -61,7 +61,7 @@
                               Decorate 42(gl_ObjectRayDirectionEXT) BuiltIn ObjectRayDirectionKHR
                               Decorate 47(gl_RayTminEXT) BuiltIn RayTminKHR
                               Decorate 50(gl_RayTmaxEXT) BuiltIn RayTmaxKHR
-                              Decorate 53(gl_HitTEXT) BuiltIn HitTKHR
+                              Decorate 53(gl_HitTEXT) BuiltIn RayTmaxKHR
                               Decorate 58(gl_HitKindEXT) BuiltIn HitKindKHR
                               Decorate 64(gl_ObjectToWorldEXT) BuiltIn ObjectToWorldKHR
                               Decorate 67(gl_WorldToObjectEXT) BuiltIn WorldToObjectKHR
@@ -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..d2dfc17 100644
--- a/Test/baseResults/spv.ext.MissShader.rmiss.out
+++ b/Test/baseResults/spv.ext.MissShader.rmiss.out
@@ -1,15 +1,27 @@
 spv.ext.MissShader.rmiss
 // Module Version 10400
 // Generated by (magic number): 8000a
-// Id's are bound by 54
+// Id's are bound by 90
 
-                              Capability RayTracingProvisionalKHR
+                              Capability MinLod
+                              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 74 78 85 89
                               Source GLSL 460
+                              SourceExtension  "GL_ARB_shader_ballot"
+                              SourceExtension  "GL_ARB_sparse_texture_clamp"
                               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 +36,15 @@
                               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  "texel"
+                              Name 74  "s2D"
+                              Name 78  "c2"
+                              Name 85  "lodClamp"
+                              Name 89  "localPayload"
                               Decorate 11(gl_LaunchIDEXT) BuiltIn LaunchIdKHR
                               Decorate 14(gl_LaunchSizeEXT) BuiltIn LaunchSizeKHR
                               Decorate 21(gl_WorldRayOriginEXT) BuiltIn WorldRayOriginKHR
@@ -34,8 +53,21 @@
                               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 74(s2D) DescriptorSet 0
+                              Decorate 74(s2D) Binding 1
+                              Decorate 78(c2) Location 2
+                              Decorate 85(lodClamp) Location 3
+                              Decorate 89(localPayload) Location 0
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeInt 32 0
@@ -69,10 +101,29 @@
               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 Function 49(fvec4)
+              71:             TypeImage 16(float) 2D sampled format:Unknown
+              72:             TypeSampledImage 71
+              73:             TypePointer UniformConstant 72
+         74(s2D):     73(ptr) Variable UniformConstant
+              76:             TypeVector 16(float) 2
+              77:             TypePointer Input 76(fvec2)
+          78(c2):     77(ptr) Variable Input
+              82:             TypeVector 47(int) 2
+              83:     47(int) Constant 5
+              84:   82(ivec2) ConstantComposite 83 83
+    85(lodClamp):     28(ptr) Variable Input
+              88:             TypePointer RayPayloadKHR 49(fvec4)
+89(localPayload):     88(ptr) Variable RayPayloadKHR
          4(main):           2 Function None 3
                5:             Label
            9(v0):      8(ptr) Variable Function
@@ -81,6 +132,7 @@
           23(v3):     18(ptr) Variable Function
           27(v4):     26(ptr) Variable Function
           31(v5):     26(ptr) Variable Function
+       70(texel):     69(ptr) Variable Function
               12:    7(ivec3) Load 11(gl_LaunchIDEXT)
                               Store 9(v0) 12
               15:    7(ivec3) Load 14(gl_LaunchSizeEXT)
@@ -94,6 +146,24 @@
               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
+              75:          72 Load 74(s2D)
+              79:   76(fvec2) Load 78(c2)
+              80:   76(fvec2) Load 78(c2)
+              81:   76(fvec2) Load 78(c2)
+              86:   16(float) Load 85(lodClamp)
+              87:   49(fvec4) ImageSampleExplicitLod 75 79 Grad ConstOffset MinLod 80 81 84 86
+                              Store 70(texel) 87
                               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.RayQueryDecl.frag.out b/Test/baseResults/spv.ext.RayQueryDecl.frag.out
new file mode 100644
index 0000000..97681e9
--- /dev/null
+++ b/Test/baseResults/spv.ext.RayQueryDecl.frag.out
@@ -0,0 +1,39 @@
+spv.ext.RayQueryDecl.frag
+// Module Version 10400
+// Generated by (magic number): 8000a
+// Id's are bound by 15
+
+                              Capability Shader
+                              Capability RayQueryKHR
+                              Extension  "SPV_KHR_ray_query"
+               1:             ExtInstImport  "GLSL.std.450"
+                              MemoryModel Logical GLSL450
+                              EntryPoint Fragment 4  "main" 9 14
+                              ExecutionMode 4 OriginUpperLeft
+                              Source GLSL 460
+                              SourceExtension  "GL_ARB_separate_shader_objects"
+                              SourceExtension  "GL_EXT_nonuniform_qualifier"
+                              SourceExtension  "GL_EXT_ray_query"
+                              SourceExtension  "GL_EXT_scalar_block_layout"
+                              SourceExtension  "GL_GOOGLE_cpp_style_line_directive"
+                              SourceExtension  "GL_GOOGLE_include_directive"
+                              Name 4  "main"
+                              Name 9  "outColor"
+                              Name 14  "rq"
+                              Decorate 9(outColor) Location 0
+               2:             TypeVoid
+               3:             TypeFunction 2
+               6:             TypeFloat 32
+               7:             TypeVector 6(float) 4
+               8:             TypePointer Output 7(fvec4)
+     9(outColor):      8(ptr) Variable Output
+              10:    6(float) Constant 0
+              11:    7(fvec4) ConstantComposite 10 10 10 10
+              12:             TypeRayQueryKHR
+              13:             TypePointer Private 12
+          14(rq):     13(ptr) Variable Private
+         4(main):           2 Function None 3
+               5:             Label
+                              Store 9(outColor) 11
+                              Return
+                              FunctionEnd
diff --git a/Test/baseResults/spv.ext.World3x4.rahit.out b/Test/baseResults/spv.ext.World3x4.rahit.out
old mode 100755
new mode 100644
index ad877bd..40d73d1
--- 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.float16Fetch.frag.out b/Test/baseResults/spv.float16Fetch.frag.out
index 38c5478..3b2c36f 100644
--- a/Test/baseResults/spv.float16Fetch.frag.out
+++ b/Test/baseResults/spv.float16Fetch.frag.out
@@ -2,7 +2,7 @@
 Validation failed
 // Module Version 10000
 // Generated by (magic number): 8000a
-// Id's are bound by 5923
+// Id's are bound by 5933
 
                               Capability Shader
                               Capability Float16
@@ -29,7 +29,7 @@
                               Extension  "SPV_KHR_16bit_storage"
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450
-                              EntryPoint Fragment 4  "main" 128 135 137 148 156 169 177 215 251 309 565 572 1393 1401 1409 1417 1425 1433 4257 4264 5913 5922
+                              EntryPoint Fragment 4  "main" 128 135 137 148 156 169 177 215 251 309 565 572 1393 1401 1409 1417 1425 1433 4267 4274 5923 5932
                               ExecutionMode 4 OriginUpperLeft
                               Source GLSL 450
                               SourceExtension  "GL_AMD_gpu_shader_half_float"
@@ -173,40 +173,40 @@
                               Name 3832  "texel"
                               Name 3950  "texel"
                               Name 4022  "texel"
-                              Name 4094  "texel"
-                              Name 4146  "texel"
-                              Name 4174  "texel"
-                              Name 4202  "texel"
-                              Name 4254  "texel"
-                              Name 4257  "lodClamp"
-                              Name 4264  "f16lodClamp"
-                              Name 4391  "texel"
-                              Name 4598  "texel"
-                              Name 4674  "texel"
-                              Name 4818  "texel"
-                              Name 4962  "texel"
-                              Name 5188  "texel"
-                              Name 5280  "texel"
-                              Name 5452  "texel"
-                              Name 5454  "t1D"
-                              Name 5458  "s"
-                              Name 5474  "t2D"
-                              Name 5491  "t3D"
-                              Name 5508  "tCube"
-                              Name 5525  "sShadow"
-                              Name 5589  "t1DArray"
-                              Name 5606  "t2DArray"
-                              Name 5623  "tCubeArray"
-                              Name 5681  "t2DRect"
-                              Name 5741  "subpass"
-                              Name 5747  "subpassMS"
-                              Name 5753  "result"
-                              Name 5834  "param"
-                              Name 5913  "fragColor"
-                              Name 5917  "tBuffer"
-                              Name 5919  "t2DMS"
-                              Name 5921  "t2DMSArray"
-                              Name 5922  "bias"
+                              Name 4104  "texel"
+                              Name 4156  "texel"
+                              Name 4184  "texel"
+                              Name 4212  "texel"
+                              Name 4264  "texel"
+                              Name 4267  "lodClamp"
+                              Name 4274  "f16lodClamp"
+                              Name 4401  "texel"
+                              Name 4608  "texel"
+                              Name 4684  "texel"
+                              Name 4828  "texel"
+                              Name 4972  "texel"
+                              Name 5198  "texel"
+                              Name 5290  "texel"
+                              Name 5462  "texel"
+                              Name 5464  "t1D"
+                              Name 5468  "s"
+                              Name 5484  "t2D"
+                              Name 5501  "t3D"
+                              Name 5518  "tCube"
+                              Name 5535  "sShadow"
+                              Name 5599  "t1DArray"
+                              Name 5616  "t2DArray"
+                              Name 5633  "tCubeArray"
+                              Name 5691  "t2DRect"
+                              Name 5751  "subpass"
+                              Name 5757  "subpassMS"
+                              Name 5763  "result"
+                              Name 5844  "param"
+                              Name 5923  "fragColor"
+                              Name 5927  "tBuffer"
+                              Name 5929  "t2DMS"
+                              Name 5931  "t2DMSArray"
+                              Name 5932  "bias"
                               Decorate 125(s1D) DescriptorSet 0
                               Decorate 125(s1D) Binding 0
                               Decorate 128(c1) Location 0
@@ -283,42 +283,42 @@
                               Decorate 3036(i2DMS) Binding 9
                               Decorate 3045(i2DMSArray) DescriptorSet 1
                               Decorate 3045(i2DMSArray) Binding 10
-                              Decorate 4257(lodClamp) Location 7
-                              Decorate 4264(f16lodClamp) Location 17
-                              Decorate 5454(t1D) DescriptorSet 2
-                              Decorate 5454(t1D) Binding 0
-                              Decorate 5458(s) DescriptorSet 2
-                              Decorate 5458(s) Binding 11
-                              Decorate 5474(t2D) DescriptorSet 2
-                              Decorate 5474(t2D) Binding 1
-                              Decorate 5491(t3D) DescriptorSet 2
-                              Decorate 5491(t3D) Binding 2
-                              Decorate 5508(tCube) DescriptorSet 2
-                              Decorate 5508(tCube) Binding 4
-                              Decorate 5525(sShadow) DescriptorSet 2
-                              Decorate 5525(sShadow) Binding 12
-                              Decorate 5589(t1DArray) DescriptorSet 2
-                              Decorate 5589(t1DArray) Binding 5
-                              Decorate 5606(t2DArray) DescriptorSet 2
-                              Decorate 5606(t2DArray) Binding 6
-                              Decorate 5623(tCubeArray) DescriptorSet 2
-                              Decorate 5623(tCubeArray) Binding 7
-                              Decorate 5681(t2DRect) DescriptorSet 2
-                              Decorate 5681(t2DRect) Binding 3
-                              Decorate 5741(subpass) DescriptorSet 3
-                              Decorate 5741(subpass) Binding 0
-                              Decorate 5741(subpass) InputAttachmentIndex 0
-                              Decorate 5747(subpassMS) DescriptorSet 3
-                              Decorate 5747(subpassMS) Binding 1
-                              Decorate 5747(subpassMS) InputAttachmentIndex 0
-                              Decorate 5913(fragColor) Location 0
-                              Decorate 5917(tBuffer) DescriptorSet 2
-                              Decorate 5917(tBuffer) Binding 8
-                              Decorate 5919(t2DMS) DescriptorSet 2
-                              Decorate 5919(t2DMS) Binding 9
-                              Decorate 5921(t2DMSArray) DescriptorSet 2
-                              Decorate 5921(t2DMSArray) Binding 10
-                              Decorate 5922(bias) Location 6
+                              Decorate 4267(lodClamp) Location 7
+                              Decorate 4274(f16lodClamp) Location 17
+                              Decorate 5464(t1D) DescriptorSet 2
+                              Decorate 5464(t1D) Binding 0
+                              Decorate 5468(s) DescriptorSet 2
+                              Decorate 5468(s) Binding 11
+                              Decorate 5484(t2D) DescriptorSet 2
+                              Decorate 5484(t2D) Binding 1
+                              Decorate 5501(t3D) DescriptorSet 2
+                              Decorate 5501(t3D) Binding 2
+                              Decorate 5518(tCube) DescriptorSet 2
+                              Decorate 5518(tCube) Binding 4
+                              Decorate 5535(sShadow) DescriptorSet 2
+                              Decorate 5535(sShadow) Binding 12
+                              Decorate 5599(t1DArray) DescriptorSet 2
+                              Decorate 5599(t1DArray) Binding 5
+                              Decorate 5616(t2DArray) DescriptorSet 2
+                              Decorate 5616(t2DArray) Binding 6
+                              Decorate 5633(tCubeArray) DescriptorSet 2
+                              Decorate 5633(tCubeArray) Binding 7
+                              Decorate 5691(t2DRect) DescriptorSet 2
+                              Decorate 5691(t2DRect) Binding 3
+                              Decorate 5751(subpass) DescriptorSet 3
+                              Decorate 5751(subpass) Binding 0
+                              Decorate 5751(subpass) InputAttachmentIndex 0
+                              Decorate 5757(subpassMS) DescriptorSet 3
+                              Decorate 5757(subpassMS) Binding 1
+                              Decorate 5757(subpassMS) InputAttachmentIndex 0
+                              Decorate 5923(fragColor) Location 0
+                              Decorate 5927(tBuffer) DescriptorSet 2
+                              Decorate 5927(tBuffer) Binding 8
+                              Decorate 5929(t2DMS) DescriptorSet 2
+                              Decorate 5929(t2DMS) Binding 9
+                              Decorate 5931(t2DMSArray) DescriptorSet 2
+                              Decorate 5931(t2DMSArray) Binding 10
+                              Decorate 5932(bias) Location 6
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeFloat 16
@@ -491,258 +491,268 @@
 3045(i2DMSArray):   3044(ptr) Variable UniformConstant
    3102(ResType):             TypeStruct 47(int) 7(f16vec4)
    3138(ResType):             TypeStruct 47(int) 6(float16_t)
-  4257(lodClamp):    127(ptr) Variable Input
-4264(f16lodClamp):    134(ptr) Variable Input
-            5453:             TypePointer UniformConstant 122
-       5454(t1D):   5453(ptr) Variable UniformConstant
-            5456:             TypeSampler
-            5457:             TypePointer UniformConstant 5456
-         5458(s):   5457(ptr) Variable UniformConstant
-            5473:             TypePointer UniformConstant 142
-       5474(t2D):   5473(ptr) Variable UniformConstant
-            5490:             TypePointer UniformConstant 162
-       5491(t3D):   5490(ptr) Variable UniformConstant
-            5507:             TypePointer UniformConstant 183
-     5508(tCube):   5507(ptr) Variable UniformConstant
-   5525(sShadow):   5457(ptr) Variable UniformConstant
-            5588:             TypePointer UniformConstant 268
-  5589(t1DArray):   5588(ptr) Variable UniformConstant
-            5605:             TypePointer UniformConstant 283
-  5606(t2DArray):   5605(ptr) Variable UniformConstant
-            5622:             TypePointer UniformConstant 298
-5623(tCubeArray):   5622(ptr) Variable UniformConstant
-            5680:             TypePointer UniformConstant 356
-   5681(t2DRect):   5680(ptr) Variable UniformConstant
-            5739:             TypeImage 6(float16_t) SubpassData nonsampled format:Unknown
-            5740:             TypePointer UniformConstant 5739
-   5741(subpass):   5740(ptr) Variable UniformConstant
-            5743:  721(ivec2) ConstantComposite 2187 2187
-            5745:             TypeImage 6(float16_t) SubpassData multi-sampled nonsampled format:Unknown
-            5746:             TypePointer UniformConstant 5745
- 5747(subpassMS):   5746(ptr) Variable UniformConstant
-            5912:             TypePointer Output 249(fvec4)
- 5913(fragColor):   5912(ptr) Variable Output
-            5916:             TypePointer UniformConstant 1297
-   5917(tBuffer):   5916(ptr) Variable UniformConstant
-            5918:             TypePointer UniformConstant 1308
-     5919(t2DMS):   5918(ptr) Variable UniformConstant
-            5920:             TypePointer UniformConstant 1319
-5921(t2DMSArray):   5920(ptr) Variable UniformConstant
-      5922(bias):    127(ptr) Variable Input
+            4025:  721(ivec2) ConstantComposite 709 1326
+            4026:     47(int) Constant 3
+            4027:     47(int) Constant 4
+            4028:  721(ivec2) ConstantComposite 4026 4027
+            4029:     47(int) Constant 15
+            4030:     47(int) Constant 16
+            4031:  721(ivec2) ConstantComposite 4029 4030
+            4032:     47(int) Constant 4294967294
+            4033:  721(ivec2) ConstantComposite 4032 2187
+            4034:        2379 ConstantComposite 4025 4028 4031 4033
+  4267(lodClamp):    127(ptr) Variable Input
+4274(f16lodClamp):    134(ptr) Variable Input
+            5463:             TypePointer UniformConstant 122
+       5464(t1D):   5463(ptr) Variable UniformConstant
+            5466:             TypeSampler
+            5467:             TypePointer UniformConstant 5466
+         5468(s):   5467(ptr) Variable UniformConstant
+            5483:             TypePointer UniformConstant 142
+       5484(t2D):   5483(ptr) Variable UniformConstant
+            5500:             TypePointer UniformConstant 162
+       5501(t3D):   5500(ptr) Variable UniformConstant
+            5517:             TypePointer UniformConstant 183
+     5518(tCube):   5517(ptr) Variable UniformConstant
+   5535(sShadow):   5467(ptr) Variable UniformConstant
+            5598:             TypePointer UniformConstant 268
+  5599(t1DArray):   5598(ptr) Variable UniformConstant
+            5615:             TypePointer UniformConstant 283
+  5616(t2DArray):   5615(ptr) Variable UniformConstant
+            5632:             TypePointer UniformConstant 298
+5633(tCubeArray):   5632(ptr) Variable UniformConstant
+            5690:             TypePointer UniformConstant 356
+   5691(t2DRect):   5690(ptr) Variable UniformConstant
+            5749:             TypeImage 6(float16_t) SubpassData nonsampled format:Unknown
+            5750:             TypePointer UniformConstant 5749
+   5751(subpass):   5750(ptr) Variable UniformConstant
+            5753:  721(ivec2) ConstantComposite 2187 2187
+            5755:             TypeImage 6(float16_t) SubpassData multi-sampled nonsampled format:Unknown
+            5756:             TypePointer UniformConstant 5755
+ 5757(subpassMS):   5756(ptr) Variable UniformConstant
+            5922:             TypePointer Output 249(fvec4)
+ 5923(fragColor):   5922(ptr) Variable Output
+            5926:             TypePointer UniformConstant 1297
+   5927(tBuffer):   5926(ptr) Variable UniformConstant
+            5928:             TypePointer UniformConstant 1308
+     5929(t2DMS):   5928(ptr) Variable UniformConstant
+            5930:             TypePointer UniformConstant 1319
+5931(t2DMSArray):   5930(ptr) Variable UniformConstant
+      5932(bias):    127(ptr) Variable Input
          4(main):           2 Function None 3
                5:             Label
-    5753(result):     64(ptr) Variable Function
-     5834(param):     64(ptr) Variable Function
-                              Store 5753(result) 121
-            5754:  7(f16vec4) FunctionCall 9(testTexture()
-            5755:  7(f16vec4) Load 5753(result)
-            5756:  7(f16vec4) FAdd 5755 5754
-                              Store 5753(result) 5756
-            5757:  7(f16vec4) FunctionCall 11(testTextureProj()
-            5758:  7(f16vec4) Load 5753(result)
-            5759:  7(f16vec4) FAdd 5758 5757
-                              Store 5753(result) 5759
-            5760:  7(f16vec4) FunctionCall 13(testTextureLod()
-            5761:  7(f16vec4) Load 5753(result)
-            5762:  7(f16vec4) FAdd 5761 5760
-                              Store 5753(result) 5762
-            5763:  7(f16vec4) FunctionCall 15(testTextureOffset()
-            5764:  7(f16vec4) Load 5753(result)
-            5765:  7(f16vec4) FAdd 5764 5763
-                              Store 5753(result) 5765
-            5766:  7(f16vec4) FunctionCall 19(testTextureLodOffset()
-            5767:  7(f16vec4) Load 5753(result)
-            5768:  7(f16vec4) FAdd 5767 5766
-                              Store 5753(result) 5768
-            5769:  7(f16vec4) FunctionCall 21(testTextureProjLodOffset()
-            5770:  7(f16vec4) Load 5753(result)
-            5771:  7(f16vec4) FAdd 5770 5769
-                              Store 5753(result) 5771
-            5772:  7(f16vec4) FunctionCall 23(testTexelFetch()
-            5773:  7(f16vec4) Load 5753(result)
-            5774:  7(f16vec4) FAdd 5773 5772
-                              Store 5753(result) 5774
-            5775:  7(f16vec4) FunctionCall 25(testTexelFetchOffset()
-            5776:  7(f16vec4) Load 5753(result)
-            5777:  7(f16vec4) FAdd 5776 5775
-                              Store 5753(result) 5777
-            5778:  7(f16vec4) FunctionCall 27(testTextureGrad()
-            5779:  7(f16vec4) Load 5753(result)
-            5780:  7(f16vec4) FAdd 5779 5778
-                              Store 5753(result) 5780
-            5781:  7(f16vec4) FunctionCall 29(testTextureGradOffset()
-            5782:  7(f16vec4) Load 5753(result)
-            5783:  7(f16vec4) FAdd 5782 5781
-                              Store 5753(result) 5783
-            5784:  7(f16vec4) FunctionCall 31(testTextureProjGrad()
-            5785:  7(f16vec4) Load 5753(result)
-            5786:  7(f16vec4) FAdd 5785 5784
-                              Store 5753(result) 5786
-            5787:  7(f16vec4) FunctionCall 33(testTextureProjGradoffset()
-            5788:  7(f16vec4) Load 5753(result)
-            5789:  7(f16vec4) FAdd 5788 5787
-                              Store 5753(result) 5789
-            5790:  7(f16vec4) FunctionCall 35(testTextureGather()
-            5791:  7(f16vec4) Load 5753(result)
-            5792:  7(f16vec4) FAdd 5791 5790
-                              Store 5753(result) 5792
-            5793:  7(f16vec4) FunctionCall 37(testTextureGatherOffset()
-            5794:  7(f16vec4) Load 5753(result)
-            5795:  7(f16vec4) FAdd 5794 5793
-                              Store 5753(result) 5795
-            5796:  7(f16vec4) FunctionCall 39(testTextureGatherOffsets()
-            5797:  7(f16vec4) Load 5753(result)
-            5798:  7(f16vec4) FAdd 5797 5796
-                              Store 5753(result) 5798
-            5799:  7(f16vec4) FunctionCall 41(testTextureGatherLod()
-            5800:  7(f16vec4) Load 5753(result)
-            5801:  7(f16vec4) FAdd 5800 5799
-                              Store 5753(result) 5801
-            5802:  7(f16vec4) FunctionCall 43(testTextureGatherLodOffset()
-            5803:  7(f16vec4) Load 5753(result)
-            5804:  7(f16vec4) FAdd 5803 5802
-                              Store 5753(result) 5804
-            5805:  7(f16vec4) FunctionCall 45(testTextureGatherLodOffsets()
-            5806:  7(f16vec4) Load 5753(result)
-            5807:  7(f16vec4) FAdd 5806 5805
-                              Store 5753(result) 5807
-            5808:   48(ivec4) FunctionCall 50(testTextureSize()
-            5809:  7(f16vec4) ConvertSToF 5808
-            5810:  7(f16vec4) Load 5753(result)
+    5763(result):     64(ptr) Variable Function
+     5844(param):     64(ptr) Variable Function
+                              Store 5763(result) 121
+            5764:  7(f16vec4) FunctionCall 9(testTexture()
+            5765:  7(f16vec4) Load 5763(result)
+            5766:  7(f16vec4) FAdd 5765 5764
+                              Store 5763(result) 5766
+            5767:  7(f16vec4) FunctionCall 11(testTextureProj()
+            5768:  7(f16vec4) Load 5763(result)
+            5769:  7(f16vec4) FAdd 5768 5767
+                              Store 5763(result) 5769
+            5770:  7(f16vec4) FunctionCall 13(testTextureLod()
+            5771:  7(f16vec4) Load 5763(result)
+            5772:  7(f16vec4) FAdd 5771 5770
+                              Store 5763(result) 5772
+            5773:  7(f16vec4) FunctionCall 15(testTextureOffset()
+            5774:  7(f16vec4) Load 5763(result)
+            5775:  7(f16vec4) FAdd 5774 5773
+                              Store 5763(result) 5775
+            5776:  7(f16vec4) FunctionCall 19(testTextureLodOffset()
+            5777:  7(f16vec4) Load 5763(result)
+            5778:  7(f16vec4) FAdd 5777 5776
+                              Store 5763(result) 5778
+            5779:  7(f16vec4) FunctionCall 21(testTextureProjLodOffset()
+            5780:  7(f16vec4) Load 5763(result)
+            5781:  7(f16vec4) FAdd 5780 5779
+                              Store 5763(result) 5781
+            5782:  7(f16vec4) FunctionCall 23(testTexelFetch()
+            5783:  7(f16vec4) Load 5763(result)
+            5784:  7(f16vec4) FAdd 5783 5782
+                              Store 5763(result) 5784
+            5785:  7(f16vec4) FunctionCall 25(testTexelFetchOffset()
+            5786:  7(f16vec4) Load 5763(result)
+            5787:  7(f16vec4) FAdd 5786 5785
+                              Store 5763(result) 5787
+            5788:  7(f16vec4) FunctionCall 27(testTextureGrad()
+            5789:  7(f16vec4) Load 5763(result)
+            5790:  7(f16vec4) FAdd 5789 5788
+                              Store 5763(result) 5790
+            5791:  7(f16vec4) FunctionCall 29(testTextureGradOffset()
+            5792:  7(f16vec4) Load 5763(result)
+            5793:  7(f16vec4) FAdd 5792 5791
+                              Store 5763(result) 5793
+            5794:  7(f16vec4) FunctionCall 31(testTextureProjGrad()
+            5795:  7(f16vec4) Load 5763(result)
+            5796:  7(f16vec4) FAdd 5795 5794
+                              Store 5763(result) 5796
+            5797:  7(f16vec4) FunctionCall 33(testTextureProjGradoffset()
+            5798:  7(f16vec4) Load 5763(result)
+            5799:  7(f16vec4) FAdd 5798 5797
+                              Store 5763(result) 5799
+            5800:  7(f16vec4) FunctionCall 35(testTextureGather()
+            5801:  7(f16vec4) Load 5763(result)
+            5802:  7(f16vec4) FAdd 5801 5800
+                              Store 5763(result) 5802
+            5803:  7(f16vec4) FunctionCall 37(testTextureGatherOffset()
+            5804:  7(f16vec4) Load 5763(result)
+            5805:  7(f16vec4) FAdd 5804 5803
+                              Store 5763(result) 5805
+            5806:  7(f16vec4) FunctionCall 39(testTextureGatherOffsets()
+            5807:  7(f16vec4) Load 5763(result)
+            5808:  7(f16vec4) FAdd 5807 5806
+                              Store 5763(result) 5808
+            5809:  7(f16vec4) FunctionCall 41(testTextureGatherLod()
+            5810:  7(f16vec4) Load 5763(result)
             5811:  7(f16vec4) FAdd 5810 5809
-                              Store 5753(result) 5811
-            5812:   53(fvec2) FunctionCall 55(testTextureQueryLod()
-            5813:154(f16vec2) FConvert 5812
-            5814:  7(f16vec4) Load 5753(result)
-            5815:154(f16vec2) VectorShuffle 5814 5814 0 1
-            5816:154(f16vec2) FAdd 5815 5813
-            5817:  7(f16vec4) Load 5753(result)
-            5818:  7(f16vec4) VectorShuffle 5817 5816 4 5 2 3
-                              Store 5753(result) 5818
-            5819:     47(int) FunctionCall 58(testTextureQueryLevels()
-            5820:6(float16_t) ConvertSToF 5819
-            5821:    208(ptr) AccessChain 5753(result) 207
-            5822:6(float16_t) Load 5821
-            5823:6(float16_t) FAdd 5822 5820
-            5824:    208(ptr) AccessChain 5753(result) 207
-                              Store 5824 5823
-            5825:     47(int) FunctionCall 60(testTextureSamples()
-            5826:6(float16_t) ConvertSToF 5825
-            5827:    208(ptr) AccessChain 5753(result) 207
-            5828:6(float16_t) Load 5827
-            5829:6(float16_t) FAdd 5828 5826
-            5830:    208(ptr) AccessChain 5753(result) 207
-                              Store 5830 5829
-            5831:  7(f16vec4) FunctionCall 62(testImageLoad()
-            5832:  7(f16vec4) Load 5753(result)
-            5833:  7(f16vec4) FAdd 5832 5831
-                              Store 5753(result) 5833
-            5835:  7(f16vec4) Load 5753(result)
-                              Store 5834(param) 5835
-            5836:           2 FunctionCall 67(testImageStore(vf164;) 5834(param)
-            5837:  7(f16vec4) FunctionCall 69(testSparseTexture()
-            5838:  7(f16vec4) Load 5753(result)
-            5839:  7(f16vec4) FAdd 5838 5837
-                              Store 5753(result) 5839
-            5840:  7(f16vec4) FunctionCall 71(testSparseTextureLod()
-            5841:  7(f16vec4) Load 5753(result)
-            5842:  7(f16vec4) FAdd 5841 5840
-                              Store 5753(result) 5842
-            5843:  7(f16vec4) FunctionCall 73(testSparseTextureOffset()
-            5844:  7(f16vec4) Load 5753(result)
-            5845:  7(f16vec4) FAdd 5844 5843
-                              Store 5753(result) 5845
-            5846:  7(f16vec4) FunctionCall 75(testSparseTextureLodOffset()
-            5847:  7(f16vec4) Load 5753(result)
-            5848:  7(f16vec4) FAdd 5847 5846
-                              Store 5753(result) 5848
-            5849:  7(f16vec4) FunctionCall 77(testSparseTextureGrad()
-            5850:  7(f16vec4) Load 5753(result)
-            5851:  7(f16vec4) FAdd 5850 5849
-                              Store 5753(result) 5851
-            5852:  7(f16vec4) FunctionCall 79(testSparseTextureGradOffset()
-            5853:  7(f16vec4) Load 5753(result)
-            5854:  7(f16vec4) FAdd 5853 5852
-                              Store 5753(result) 5854
-            5855:  7(f16vec4) FunctionCall 81(testSparseTexelFetch()
-            5856:  7(f16vec4) Load 5753(result)
-            5857:  7(f16vec4) FAdd 5856 5855
-                              Store 5753(result) 5857
-            5858:  7(f16vec4) FunctionCall 83(testSparseTexelFetchOffset()
-            5859:  7(f16vec4) Load 5753(result)
-            5860:  7(f16vec4) FAdd 5859 5858
-                              Store 5753(result) 5860
-            5861:  7(f16vec4) FunctionCall 85(testSparseTextureGather()
-            5862:  7(f16vec4) Load 5753(result)
-            5863:  7(f16vec4) FAdd 5862 5861
-                              Store 5753(result) 5863
-            5864:  7(f16vec4) FunctionCall 87(testSparseTextureGatherOffset()
-            5865:  7(f16vec4) Load 5753(result)
-            5866:  7(f16vec4) FAdd 5865 5864
-                              Store 5753(result) 5866
-            5867:  7(f16vec4) FunctionCall 89(testSparseTextureGatherOffsets()
-            5868:  7(f16vec4) Load 5753(result)
-            5869:  7(f16vec4) FAdd 5868 5867
-                              Store 5753(result) 5869
-            5870:  7(f16vec4) FunctionCall 91(testSparseTextureGatherLod()
-            5871:  7(f16vec4) Load 5753(result)
-            5872:  7(f16vec4) FAdd 5871 5870
-                              Store 5753(result) 5872
-            5873:  7(f16vec4) FunctionCall 93(testSparseTextureGatherLodOffset()
-            5874:  7(f16vec4) Load 5753(result)
-            5875:  7(f16vec4) FAdd 5874 5873
-                              Store 5753(result) 5875
-            5876:  7(f16vec4) FunctionCall 95(testSparseTextureGatherLodOffsets()
-            5877:  7(f16vec4) Load 5753(result)
-            5878:  7(f16vec4) FAdd 5877 5876
-                              Store 5753(result) 5878
-            5879:  7(f16vec4) FunctionCall 97(testSparseImageLoad()
-            5880:  7(f16vec4) Load 5753(result)
-            5881:  7(f16vec4) FAdd 5880 5879
-                              Store 5753(result) 5881
-            5882:  7(f16vec4) FunctionCall 99(testSparseTextureClamp()
-            5883:  7(f16vec4) Load 5753(result)
-            5884:  7(f16vec4) FAdd 5883 5882
-                              Store 5753(result) 5884
-            5885:  7(f16vec4) FunctionCall 101(testTextureClamp()
-            5886:  7(f16vec4) Load 5753(result)
-            5887:  7(f16vec4) FAdd 5886 5885
-                              Store 5753(result) 5887
-            5888:  7(f16vec4) FunctionCall 103(testSparseTextureOffsetClamp()
-            5889:  7(f16vec4) Load 5753(result)
-            5890:  7(f16vec4) FAdd 5889 5888
-                              Store 5753(result) 5890
-            5891:  7(f16vec4) FunctionCall 105(testTextureOffsetClamp()
-            5892:  7(f16vec4) Load 5753(result)
-            5893:  7(f16vec4) FAdd 5892 5891
-                              Store 5753(result) 5893
-            5894:  7(f16vec4) FunctionCall 77(testSparseTextureGrad()
-            5895:  7(f16vec4) Load 5753(result)
-            5896:  7(f16vec4) FAdd 5895 5894
-                              Store 5753(result) 5896
-            5897:  7(f16vec4) FunctionCall 27(testTextureGrad()
-            5898:  7(f16vec4) Load 5753(result)
-            5899:  7(f16vec4) FAdd 5898 5897
-                              Store 5753(result) 5899
-            5900:  7(f16vec4) FunctionCall 111(testSparseTextureGradOffsetClamp()
-            5901:  7(f16vec4) Load 5753(result)
-            5902:  7(f16vec4) FAdd 5901 5900
-                              Store 5753(result) 5902
-            5903:  7(f16vec4) FunctionCall 113(testTextureGradOffsetClamp()
-            5904:  7(f16vec4) Load 5753(result)
-            5905:  7(f16vec4) FAdd 5904 5903
-                              Store 5753(result) 5905
-            5906:  7(f16vec4) FunctionCall 115(testCombinedTextureSampler()
-            5907:  7(f16vec4) Load 5753(result)
-            5908:  7(f16vec4) FAdd 5907 5906
-                              Store 5753(result) 5908
-            5909:  7(f16vec4) FunctionCall 117(testSubpassLoad()
-            5910:  7(f16vec4) Load 5753(result)
-            5911:  7(f16vec4) FAdd 5910 5909
-                              Store 5753(result) 5911
-            5914:  7(f16vec4) Load 5753(result)
-            5915:  249(fvec4) FConvert 5914
-                              Store 5913(fragColor) 5915
+                              Store 5763(result) 5811
+            5812:  7(f16vec4) FunctionCall 43(testTextureGatherLodOffset()
+            5813:  7(f16vec4) Load 5763(result)
+            5814:  7(f16vec4) FAdd 5813 5812
+                              Store 5763(result) 5814
+            5815:  7(f16vec4) FunctionCall 45(testTextureGatherLodOffsets()
+            5816:  7(f16vec4) Load 5763(result)
+            5817:  7(f16vec4) FAdd 5816 5815
+                              Store 5763(result) 5817
+            5818:   48(ivec4) FunctionCall 50(testTextureSize()
+            5819:  7(f16vec4) ConvertSToF 5818
+            5820:  7(f16vec4) Load 5763(result)
+            5821:  7(f16vec4) FAdd 5820 5819
+                              Store 5763(result) 5821
+            5822:   53(fvec2) FunctionCall 55(testTextureQueryLod()
+            5823:154(f16vec2) FConvert 5822
+            5824:  7(f16vec4) Load 5763(result)
+            5825:154(f16vec2) VectorShuffle 5824 5824 0 1
+            5826:154(f16vec2) FAdd 5825 5823
+            5827:  7(f16vec4) Load 5763(result)
+            5828:  7(f16vec4) VectorShuffle 5827 5826 4 5 2 3
+                              Store 5763(result) 5828
+            5829:     47(int) FunctionCall 58(testTextureQueryLevels()
+            5830:6(float16_t) ConvertSToF 5829
+            5831:    208(ptr) AccessChain 5763(result) 207
+            5832:6(float16_t) Load 5831
+            5833:6(float16_t) FAdd 5832 5830
+            5834:    208(ptr) AccessChain 5763(result) 207
+                              Store 5834 5833
+            5835:     47(int) FunctionCall 60(testTextureSamples()
+            5836:6(float16_t) ConvertSToF 5835
+            5837:    208(ptr) AccessChain 5763(result) 207
+            5838:6(float16_t) Load 5837
+            5839:6(float16_t) FAdd 5838 5836
+            5840:    208(ptr) AccessChain 5763(result) 207
+                              Store 5840 5839
+            5841:  7(f16vec4) FunctionCall 62(testImageLoad()
+            5842:  7(f16vec4) Load 5763(result)
+            5843:  7(f16vec4) FAdd 5842 5841
+                              Store 5763(result) 5843
+            5845:  7(f16vec4) Load 5763(result)
+                              Store 5844(param) 5845
+            5846:           2 FunctionCall 67(testImageStore(vf164;) 5844(param)
+            5847:  7(f16vec4) FunctionCall 69(testSparseTexture()
+            5848:  7(f16vec4) Load 5763(result)
+            5849:  7(f16vec4) FAdd 5848 5847
+                              Store 5763(result) 5849
+            5850:  7(f16vec4) FunctionCall 71(testSparseTextureLod()
+            5851:  7(f16vec4) Load 5763(result)
+            5852:  7(f16vec4) FAdd 5851 5850
+                              Store 5763(result) 5852
+            5853:  7(f16vec4) FunctionCall 73(testSparseTextureOffset()
+            5854:  7(f16vec4) Load 5763(result)
+            5855:  7(f16vec4) FAdd 5854 5853
+                              Store 5763(result) 5855
+            5856:  7(f16vec4) FunctionCall 75(testSparseTextureLodOffset()
+            5857:  7(f16vec4) Load 5763(result)
+            5858:  7(f16vec4) FAdd 5857 5856
+                              Store 5763(result) 5858
+            5859:  7(f16vec4) FunctionCall 77(testSparseTextureGrad()
+            5860:  7(f16vec4) Load 5763(result)
+            5861:  7(f16vec4) FAdd 5860 5859
+                              Store 5763(result) 5861
+            5862:  7(f16vec4) FunctionCall 79(testSparseTextureGradOffset()
+            5863:  7(f16vec4) Load 5763(result)
+            5864:  7(f16vec4) FAdd 5863 5862
+                              Store 5763(result) 5864
+            5865:  7(f16vec4) FunctionCall 81(testSparseTexelFetch()
+            5866:  7(f16vec4) Load 5763(result)
+            5867:  7(f16vec4) FAdd 5866 5865
+                              Store 5763(result) 5867
+            5868:  7(f16vec4) FunctionCall 83(testSparseTexelFetchOffset()
+            5869:  7(f16vec4) Load 5763(result)
+            5870:  7(f16vec4) FAdd 5869 5868
+                              Store 5763(result) 5870
+            5871:  7(f16vec4) FunctionCall 85(testSparseTextureGather()
+            5872:  7(f16vec4) Load 5763(result)
+            5873:  7(f16vec4) FAdd 5872 5871
+                              Store 5763(result) 5873
+            5874:  7(f16vec4) FunctionCall 87(testSparseTextureGatherOffset()
+            5875:  7(f16vec4) Load 5763(result)
+            5876:  7(f16vec4) FAdd 5875 5874
+                              Store 5763(result) 5876
+            5877:  7(f16vec4) FunctionCall 89(testSparseTextureGatherOffsets()
+            5878:  7(f16vec4) Load 5763(result)
+            5879:  7(f16vec4) FAdd 5878 5877
+                              Store 5763(result) 5879
+            5880:  7(f16vec4) FunctionCall 91(testSparseTextureGatherLod()
+            5881:  7(f16vec4) Load 5763(result)
+            5882:  7(f16vec4) FAdd 5881 5880
+                              Store 5763(result) 5882
+            5883:  7(f16vec4) FunctionCall 93(testSparseTextureGatherLodOffset()
+            5884:  7(f16vec4) Load 5763(result)
+            5885:  7(f16vec4) FAdd 5884 5883
+                              Store 5763(result) 5885
+            5886:  7(f16vec4) FunctionCall 95(testSparseTextureGatherLodOffsets()
+            5887:  7(f16vec4) Load 5763(result)
+            5888:  7(f16vec4) FAdd 5887 5886
+                              Store 5763(result) 5888
+            5889:  7(f16vec4) FunctionCall 97(testSparseImageLoad()
+            5890:  7(f16vec4) Load 5763(result)
+            5891:  7(f16vec4) FAdd 5890 5889
+                              Store 5763(result) 5891
+            5892:  7(f16vec4) FunctionCall 99(testSparseTextureClamp()
+            5893:  7(f16vec4) Load 5763(result)
+            5894:  7(f16vec4) FAdd 5893 5892
+                              Store 5763(result) 5894
+            5895:  7(f16vec4) FunctionCall 101(testTextureClamp()
+            5896:  7(f16vec4) Load 5763(result)
+            5897:  7(f16vec4) FAdd 5896 5895
+                              Store 5763(result) 5897
+            5898:  7(f16vec4) FunctionCall 103(testSparseTextureOffsetClamp()
+            5899:  7(f16vec4) Load 5763(result)
+            5900:  7(f16vec4) FAdd 5899 5898
+                              Store 5763(result) 5900
+            5901:  7(f16vec4) FunctionCall 105(testTextureOffsetClamp()
+            5902:  7(f16vec4) Load 5763(result)
+            5903:  7(f16vec4) FAdd 5902 5901
+                              Store 5763(result) 5903
+            5904:  7(f16vec4) FunctionCall 77(testSparseTextureGrad()
+            5905:  7(f16vec4) Load 5763(result)
+            5906:  7(f16vec4) FAdd 5905 5904
+                              Store 5763(result) 5906
+            5907:  7(f16vec4) FunctionCall 27(testTextureGrad()
+            5908:  7(f16vec4) Load 5763(result)
+            5909:  7(f16vec4) FAdd 5908 5907
+                              Store 5763(result) 5909
+            5910:  7(f16vec4) FunctionCall 111(testSparseTextureGradOffsetClamp()
+            5911:  7(f16vec4) Load 5763(result)
+            5912:  7(f16vec4) FAdd 5911 5910
+                              Store 5763(result) 5912
+            5913:  7(f16vec4) FunctionCall 113(testTextureGradOffsetClamp()
+            5914:  7(f16vec4) Load 5763(result)
+            5915:  7(f16vec4) FAdd 5914 5913
+                              Store 5763(result) 5915
+            5916:  7(f16vec4) FunctionCall 115(testCombinedTextureSampler()
+            5917:  7(f16vec4) Load 5763(result)
+            5918:  7(f16vec4) FAdd 5917 5916
+                              Store 5763(result) 5918
+            5919:  7(f16vec4) FunctionCall 117(testSubpassLoad()
+            5920:  7(f16vec4) Load 5763(result)
+            5921:  7(f16vec4) FAdd 5920 5919
+                              Store 5763(result) 5921
+            5924:  7(f16vec4) Load 5763(result)
+            5925:  249(fvec4) FConvert 5924
+                              Store 5923(fragColor) 5925
                               Return
                               FunctionEnd
  9(testTexture():  7(f16vec4) Function None 8
@@ -5123,1949 +5133,1949 @@
                               Store 4022(texel) 121
             4023:         143 Load 145(s2D)
             4024:   53(fvec2) Load 148(c2)
-            4025:3102(ResType) ImageSparseGather 4023 4024 2187 ConstOffsets 2380
-            4026:  7(f16vec4) CompositeExtract 4025 1
-                              Store 4022(texel) 4026
-            4027:     47(int) CompositeExtract 4025 0
-            4028:         143 Load 145(s2D)
-            4029:154(f16vec2) Load 156(f16c2)
-            4030:6(float16_t) Load 137(f16bias)
-            4031:3102(ResType) ImageSparseGather 4028 4029 2187 Bias ConstOffsets 4030 2380
-            4032:  7(f16vec4) CompositeExtract 4031 1
-                              Store 4022(texel) 4032
-            4033:     47(int) CompositeExtract 4031 0
-            4034:         284 Load 286(s2DArray)
-            4035:  167(fvec3) Load 169(c3)
-            4036:3102(ResType) ImageSparseGather 4034 4035 2187 ConstOffsets 2380
-            4037:  7(f16vec4) CompositeExtract 4036 1
-                              Store 4022(texel) 4037
-            4038:     47(int) CompositeExtract 4036 0
-            4039:         284 Load 286(s2DArray)
-            4040:175(f16vec3) Load 177(f16c3)
-            4041:6(float16_t) Load 137(f16bias)
-            4042:3102(ResType) ImageSparseGather 4039 4040 2187 Bias ConstOffsets 4041 2380
-            4043:  7(f16vec4) CompositeExtract 4042 1
-                              Store 4022(texel) 4043
-            4044:     47(int) CompositeExtract 4042 0
-            4045:         357 Load 359(s2DRect)
-            4046:   53(fvec2) Load 148(c2)
-            4047:3102(ResType) ImageSparseGather 4045 4046 2187 ConstOffsets 2380
-            4048:  7(f16vec4) CompositeExtract 4047 1
-                              Store 4022(texel) 4048
-            4049:     47(int) CompositeExtract 4047 0
-            4050:         357 Load 359(s2DRect)
-            4051:154(f16vec2) Load 156(f16c2)
-            4052:3102(ResType) ImageSparseGather 4050 4051 2187 ConstOffsets 2380
+            4035:3102(ResType) ImageSparseGather 4023 4024 2187 ConstOffsets 4034
+            4036:  7(f16vec4) CompositeExtract 4035 1
+                              Store 4022(texel) 4036
+            4037:     47(int) CompositeExtract 4035 0
+            4038:         143 Load 145(s2D)
+            4039:154(f16vec2) Load 156(f16c2)
+            4040:6(float16_t) Load 137(f16bias)
+            4041:3102(ResType) ImageSparseGather 4038 4039 2187 Bias ConstOffsets 4040 4034
+            4042:  7(f16vec4) CompositeExtract 4041 1
+                              Store 4022(texel) 4042
+            4043:     47(int) CompositeExtract 4041 0
+            4044:         284 Load 286(s2DArray)
+            4045:  167(fvec3) Load 169(c3)
+            4046:3102(ResType) ImageSparseGather 4044 4045 2187 ConstOffsets 4034
+            4047:  7(f16vec4) CompositeExtract 4046 1
+                              Store 4022(texel) 4047
+            4048:     47(int) CompositeExtract 4046 0
+            4049:         284 Load 286(s2DArray)
+            4050:175(f16vec3) Load 177(f16c3)
+            4051:6(float16_t) Load 137(f16bias)
+            4052:3102(ResType) ImageSparseGather 4049 4050 2187 Bias ConstOffsets 4051 4034
             4053:  7(f16vec4) CompositeExtract 4052 1
                               Store 4022(texel) 4053
             4054:     47(int) CompositeExtract 4052 0
-            4055:         224 Load 226(s2DShadow)
+            4055:         357 Load 359(s2DRect)
             4056:   53(fvec2) Load 148(c2)
-            4057:   52(float) Load 215(compare)
-            4058:3102(ResType) ImageSparseDrefGather 4055 4056 4057 ConstOffsets 2380
-            4059:  7(f16vec4) CompositeExtract 4058 1
-                              Store 4022(texel) 4059
-            4060:     47(int) CompositeExtract 4058 0
-            4061:         224 Load 226(s2DShadow)
-            4062:154(f16vec2) Load 156(f16c2)
-            4063:   52(float) Load 215(compare)
-            4064:3102(ResType) ImageSparseDrefGather 4061 4062 4063 ConstOffsets 2380
-            4065:  7(f16vec4) CompositeExtract 4064 1
-                              Store 4022(texel) 4065
-            4066:     47(int) CompositeExtract 4064 0
-            4067:         337 Load 339(s2DArrayShadow)
-            4068:  167(fvec3) Load 169(c3)
-            4069:   52(float) Load 215(compare)
-            4070:3102(ResType) ImageSparseDrefGather 4067 4068 4069 ConstOffsets 2380
-            4071:  7(f16vec4) CompositeExtract 4070 1
-                              Store 4022(texel) 4071
-            4072:     47(int) CompositeExtract 4070 0
-            4073:         337 Load 339(s2DArrayShadow)
-            4074:175(f16vec3) Load 177(f16c3)
-            4075:   52(float) Load 215(compare)
-            4076:3102(ResType) ImageSparseDrefGather 4073 4074 4075 ConstOffsets 2380
-            4077:  7(f16vec4) CompositeExtract 4076 1
-                              Store 4022(texel) 4077
-            4078:     47(int) CompositeExtract 4076 0
-            4079:         371 Load 373(s2DRectShadow)
-            4080:   53(fvec2) Load 148(c2)
-            4081:   52(float) Load 215(compare)
-            4082:3102(ResType) ImageSparseDrefGather 4079 4080 4081 ConstOffsets 2380
-            4083:  7(f16vec4) CompositeExtract 4082 1
-                              Store 4022(texel) 4083
-            4084:     47(int) CompositeExtract 4082 0
-            4085:         371 Load 373(s2DRectShadow)
-            4086:154(f16vec2) Load 156(f16c2)
-            4087:   52(float) Load 215(compare)
-            4088:3102(ResType) ImageSparseDrefGather 4085 4086 4087 ConstOffsets 2380
-            4089:  7(f16vec4) CompositeExtract 4088 1
-                              Store 4022(texel) 4089
-            4090:     47(int) CompositeExtract 4088 0
-            4091:  7(f16vec4) Load 4022(texel)
-                              ReturnValue 4091
+            4057:3102(ResType) ImageSparseGather 4055 4056 2187 ConstOffsets 4034
+            4058:  7(f16vec4) CompositeExtract 4057 1
+                              Store 4022(texel) 4058
+            4059:     47(int) CompositeExtract 4057 0
+            4060:         357 Load 359(s2DRect)
+            4061:154(f16vec2) Load 156(f16c2)
+            4062:3102(ResType) ImageSparseGather 4060 4061 2187 ConstOffsets 4034
+            4063:  7(f16vec4) CompositeExtract 4062 1
+                              Store 4022(texel) 4063
+            4064:     47(int) CompositeExtract 4062 0
+            4065:         224 Load 226(s2DShadow)
+            4066:   53(fvec2) Load 148(c2)
+            4067:   52(float) Load 215(compare)
+            4068:3102(ResType) ImageSparseDrefGather 4065 4066 4067 ConstOffsets 4034
+            4069:  7(f16vec4) CompositeExtract 4068 1
+                              Store 4022(texel) 4069
+            4070:     47(int) CompositeExtract 4068 0
+            4071:         224 Load 226(s2DShadow)
+            4072:154(f16vec2) Load 156(f16c2)
+            4073:   52(float) Load 215(compare)
+            4074:3102(ResType) ImageSparseDrefGather 4071 4072 4073 ConstOffsets 4034
+            4075:  7(f16vec4) CompositeExtract 4074 1
+                              Store 4022(texel) 4075
+            4076:     47(int) CompositeExtract 4074 0
+            4077:         337 Load 339(s2DArrayShadow)
+            4078:  167(fvec3) Load 169(c3)
+            4079:   52(float) Load 215(compare)
+            4080:3102(ResType) ImageSparseDrefGather 4077 4078 4079 ConstOffsets 4034
+            4081:  7(f16vec4) CompositeExtract 4080 1
+                              Store 4022(texel) 4081
+            4082:     47(int) CompositeExtract 4080 0
+            4083:         337 Load 339(s2DArrayShadow)
+            4084:175(f16vec3) Load 177(f16c3)
+            4085:   52(float) Load 215(compare)
+            4086:3102(ResType) ImageSparseDrefGather 4083 4084 4085 ConstOffsets 4034
+            4087:  7(f16vec4) CompositeExtract 4086 1
+                              Store 4022(texel) 4087
+            4088:     47(int) CompositeExtract 4086 0
+            4089:         371 Load 373(s2DRectShadow)
+            4090:   53(fvec2) Load 148(c2)
+            4091:   52(float) Load 215(compare)
+            4092:3102(ResType) ImageSparseDrefGather 4089 4090 4091 ConstOffsets 4034
+            4093:  7(f16vec4) CompositeExtract 4092 1
+                              Store 4022(texel) 4093
+            4094:     47(int) CompositeExtract 4092 0
+            4095:         371 Load 373(s2DRectShadow)
+            4096:154(f16vec2) Load 156(f16c2)
+            4097:   52(float) Load 215(compare)
+            4098:3102(ResType) ImageSparseDrefGather 4095 4096 4097 ConstOffsets 4034
+            4099:  7(f16vec4) CompositeExtract 4098 1
+                              Store 4022(texel) 4099
+            4100:     47(int) CompositeExtract 4098 0
+            4101:  7(f16vec4) Load 4022(texel)
+                              ReturnValue 4101
                               FunctionEnd
 91(testSparseTextureGatherLod():  7(f16vec4) Function None 8
               92:             Label
-     4094(texel):     64(ptr) Variable Function
-                              Store 4094(texel) 121
-            4095:         143 Load 145(s2D)
-            4096:   53(fvec2) Load 148(c2)
-            4097:   52(float) Load 565(lod)
-            4098:3102(ResType) ImageSparseGather 4095 4096 2187 Lod 4097
-            4099:  7(f16vec4) CompositeExtract 4098 1
-                              Store 4094(texel) 4099
-            4100:     47(int) CompositeExtract 4098 0
-            4101:         143 Load 145(s2D)
-            4102:154(f16vec2) Load 156(f16c2)
-            4103:6(float16_t) Load 572(f16lod)
-            4104:3102(ResType) ImageSparseGather 4101 4102 2187 Lod 4103
-            4105:  7(f16vec4) CompositeExtract 4104 1
-                              Store 4094(texel) 4105
-            4106:     47(int) CompositeExtract 4104 0
-            4107:         284 Load 286(s2DArray)
-            4108:  167(fvec3) Load 169(c3)
-            4109:   52(float) Load 565(lod)
-            4110:3102(ResType) ImageSparseGather 4107 4108 2187 Lod 4109
-            4111:  7(f16vec4) CompositeExtract 4110 1
-                              Store 4094(texel) 4111
-            4112:     47(int) CompositeExtract 4110 0
-            4113:         284 Load 286(s2DArray)
-            4114:175(f16vec3) Load 177(f16c3)
-            4115:6(float16_t) Load 572(f16lod)
-            4116:3102(ResType) ImageSparseGather 4113 4114 2187 Lod 4115
-            4117:  7(f16vec4) CompositeExtract 4116 1
-                              Store 4094(texel) 4117
-            4118:     47(int) CompositeExtract 4116 0
-            4119:         184 Load 186(sCube)
-            4120:  167(fvec3) Load 169(c3)
-            4121:   52(float) Load 565(lod)
-            4122:3102(ResType) ImageSparseGather 4119 4120 2187 Lod 4121
-            4123:  7(f16vec4) CompositeExtract 4122 1
-                              Store 4094(texel) 4123
-            4124:     47(int) CompositeExtract 4122 0
-            4125:         184 Load 186(sCube)
-            4126:175(f16vec3) Load 177(f16c3)
-            4127:6(float16_t) Load 572(f16lod)
-            4128:3102(ResType) ImageSparseGather 4125 4126 2187 Lod 4127
-            4129:  7(f16vec4) CompositeExtract 4128 1
-                              Store 4094(texel) 4129
-            4130:     47(int) CompositeExtract 4128 0
-            4131:         299 Load 301(sCubeArray)
-            4132:  249(fvec4) Load 251(c4)
-            4133:   52(float) Load 565(lod)
-            4134:3102(ResType) ImageSparseGather 4131 4132 2187 Lod 4133
-            4135:  7(f16vec4) CompositeExtract 4134 1
-                              Store 4094(texel) 4135
-            4136:     47(int) CompositeExtract 4134 0
-            4137:         299 Load 301(sCubeArray)
-            4138:  7(f16vec4) Load 309(f16c4)
-            4139:6(float16_t) Load 572(f16lod)
-            4140:3102(ResType) ImageSparseGather 4137 4138 2187 Lod 4139
-            4141:  7(f16vec4) CompositeExtract 4140 1
-                              Store 4094(texel) 4141
-            4142:     47(int) CompositeExtract 4140 0
-            4143:  7(f16vec4) Load 4094(texel)
-                              ReturnValue 4143
+     4104(texel):     64(ptr) Variable Function
+                              Store 4104(texel) 121
+            4105:         143 Load 145(s2D)
+            4106:   53(fvec2) Load 148(c2)
+            4107:   52(float) Load 565(lod)
+            4108:3102(ResType) ImageSparseGather 4105 4106 2187 Lod 4107
+            4109:  7(f16vec4) CompositeExtract 4108 1
+                              Store 4104(texel) 4109
+            4110:     47(int) CompositeExtract 4108 0
+            4111:         143 Load 145(s2D)
+            4112:154(f16vec2) Load 156(f16c2)
+            4113:6(float16_t) Load 572(f16lod)
+            4114:3102(ResType) ImageSparseGather 4111 4112 2187 Lod 4113
+            4115:  7(f16vec4) CompositeExtract 4114 1
+                              Store 4104(texel) 4115
+            4116:     47(int) CompositeExtract 4114 0
+            4117:         284 Load 286(s2DArray)
+            4118:  167(fvec3) Load 169(c3)
+            4119:   52(float) Load 565(lod)
+            4120:3102(ResType) ImageSparseGather 4117 4118 2187 Lod 4119
+            4121:  7(f16vec4) CompositeExtract 4120 1
+                              Store 4104(texel) 4121
+            4122:     47(int) CompositeExtract 4120 0
+            4123:         284 Load 286(s2DArray)
+            4124:175(f16vec3) Load 177(f16c3)
+            4125:6(float16_t) Load 572(f16lod)
+            4126:3102(ResType) ImageSparseGather 4123 4124 2187 Lod 4125
+            4127:  7(f16vec4) CompositeExtract 4126 1
+                              Store 4104(texel) 4127
+            4128:     47(int) CompositeExtract 4126 0
+            4129:         184 Load 186(sCube)
+            4130:  167(fvec3) Load 169(c3)
+            4131:   52(float) Load 565(lod)
+            4132:3102(ResType) ImageSparseGather 4129 4130 2187 Lod 4131
+            4133:  7(f16vec4) CompositeExtract 4132 1
+                              Store 4104(texel) 4133
+            4134:     47(int) CompositeExtract 4132 0
+            4135:         184 Load 186(sCube)
+            4136:175(f16vec3) Load 177(f16c3)
+            4137:6(float16_t) Load 572(f16lod)
+            4138:3102(ResType) ImageSparseGather 4135 4136 2187 Lod 4137
+            4139:  7(f16vec4) CompositeExtract 4138 1
+                              Store 4104(texel) 4139
+            4140:     47(int) CompositeExtract 4138 0
+            4141:         299 Load 301(sCubeArray)
+            4142:  249(fvec4) Load 251(c4)
+            4143:   52(float) Load 565(lod)
+            4144:3102(ResType) ImageSparseGather 4141 4142 2187 Lod 4143
+            4145:  7(f16vec4) CompositeExtract 4144 1
+                              Store 4104(texel) 4145
+            4146:     47(int) CompositeExtract 4144 0
+            4147:         299 Load 301(sCubeArray)
+            4148:  7(f16vec4) Load 309(f16c4)
+            4149:6(float16_t) Load 572(f16lod)
+            4150:3102(ResType) ImageSparseGather 4147 4148 2187 Lod 4149
+            4151:  7(f16vec4) CompositeExtract 4150 1
+                              Store 4104(texel) 4151
+            4152:     47(int) CompositeExtract 4150 0
+            4153:  7(f16vec4) Load 4104(texel)
+                              ReturnValue 4153
                               FunctionEnd
 93(testSparseTextureGatherLodOffset():  7(f16vec4) Function None 8
               94:             Label
-     4146(texel):     64(ptr) Variable Function
-                              Store 4146(texel) 121
-            4147:         143 Load 145(s2D)
-            4148:   53(fvec2) Load 148(c2)
-            4149:   52(float) Load 565(lod)
-            4150:3102(ResType) ImageSparseGather 4147 4148 2187 Lod ConstOffset 4149 722
-            4151:  7(f16vec4) CompositeExtract 4150 1
-                              Store 4146(texel) 4151
-            4152:     47(int) CompositeExtract 4150 0
-            4153:         143 Load 145(s2D)
-            4154:154(f16vec2) Load 156(f16c2)
-            4155:6(float16_t) Load 572(f16lod)
-            4156:3102(ResType) ImageSparseGather 4153 4154 2187 Lod ConstOffset 4155 722
-            4157:  7(f16vec4) CompositeExtract 4156 1
-                              Store 4146(texel) 4157
-            4158:     47(int) CompositeExtract 4156 0
-            4159:         284 Load 286(s2DArray)
-            4160:  167(fvec3) Load 169(c3)
-            4161:   52(float) Load 565(lod)
-            4162:3102(ResType) ImageSparseGather 4159 4160 2187 Lod ConstOffset 4161 722
-            4163:  7(f16vec4) CompositeExtract 4162 1
-                              Store 4146(texel) 4163
-            4164:     47(int) CompositeExtract 4162 0
-            4165:         284 Load 286(s2DArray)
-            4166:175(f16vec3) Load 177(f16c3)
-            4167:6(float16_t) Load 572(f16lod)
-            4168:3102(ResType) ImageSparseGather 4165 4166 2187 Lod ConstOffset 4167 722
-            4169:  7(f16vec4) CompositeExtract 4168 1
-                              Store 4146(texel) 4169
-            4170:     47(int) CompositeExtract 4168 0
-            4171:  7(f16vec4) Load 4146(texel)
-                              ReturnValue 4171
+     4156(texel):     64(ptr) Variable Function
+                              Store 4156(texel) 121
+            4157:         143 Load 145(s2D)
+            4158:   53(fvec2) Load 148(c2)
+            4159:   52(float) Load 565(lod)
+            4160:3102(ResType) ImageSparseGather 4157 4158 2187 Lod ConstOffset 4159 722
+            4161:  7(f16vec4) CompositeExtract 4160 1
+                              Store 4156(texel) 4161
+            4162:     47(int) CompositeExtract 4160 0
+            4163:         143 Load 145(s2D)
+            4164:154(f16vec2) Load 156(f16c2)
+            4165:6(float16_t) Load 572(f16lod)
+            4166:3102(ResType) ImageSparseGather 4163 4164 2187 Lod ConstOffset 4165 722
+            4167:  7(f16vec4) CompositeExtract 4166 1
+                              Store 4156(texel) 4167
+            4168:     47(int) CompositeExtract 4166 0
+            4169:         284 Load 286(s2DArray)
+            4170:  167(fvec3) Load 169(c3)
+            4171:   52(float) Load 565(lod)
+            4172:3102(ResType) ImageSparseGather 4169 4170 2187 Lod ConstOffset 4171 722
+            4173:  7(f16vec4) CompositeExtract 4172 1
+                              Store 4156(texel) 4173
+            4174:     47(int) CompositeExtract 4172 0
+            4175:         284 Load 286(s2DArray)
+            4176:175(f16vec3) Load 177(f16c3)
+            4177:6(float16_t) Load 572(f16lod)
+            4178:3102(ResType) ImageSparseGather 4175 4176 2187 Lod ConstOffset 4177 722
+            4179:  7(f16vec4) CompositeExtract 4178 1
+                              Store 4156(texel) 4179
+            4180:     47(int) CompositeExtract 4178 0
+            4181:  7(f16vec4) Load 4156(texel)
+                              ReturnValue 4181
                               FunctionEnd
 95(testSparseTextureGatherLodOffsets():  7(f16vec4) Function None 8
               96:             Label
-     4174(texel):     64(ptr) Variable Function
-                              Store 4174(texel) 121
-            4175:         143 Load 145(s2D)
-            4176:   53(fvec2) Load 148(c2)
-            4177:   52(float) Load 565(lod)
-            4178:3102(ResType) ImageSparseGather 4175 4176 2187 Lod ConstOffsets 4177 2380
-            4179:  7(f16vec4) CompositeExtract 4178 1
-                              Store 4174(texel) 4179
-            4180:     47(int) CompositeExtract 4178 0
-            4181:         143 Load 145(s2D)
-            4182:154(f16vec2) Load 156(f16c2)
-            4183:6(float16_t) Load 572(f16lod)
-            4184:3102(ResType) ImageSparseGather 4181 4182 2187 Lod ConstOffsets 4183 2380
-            4185:  7(f16vec4) CompositeExtract 4184 1
-                              Store 4174(texel) 4185
-            4186:     47(int) CompositeExtract 4184 0
-            4187:         284 Load 286(s2DArray)
-            4188:  167(fvec3) Load 169(c3)
-            4189:   52(float) Load 565(lod)
-            4190:3102(ResType) ImageSparseGather 4187 4188 2187 Lod ConstOffsets 4189 2380
-            4191:  7(f16vec4) CompositeExtract 4190 1
-                              Store 4174(texel) 4191
-            4192:     47(int) CompositeExtract 4190 0
-            4193:         284 Load 286(s2DArray)
-            4194:175(f16vec3) Load 177(f16c3)
-            4195:6(float16_t) Load 572(f16lod)
-            4196:3102(ResType) ImageSparseGather 4193 4194 2187 Lod ConstOffsets 4195 2380
-            4197:  7(f16vec4) CompositeExtract 4196 1
-                              Store 4174(texel) 4197
-            4198:     47(int) CompositeExtract 4196 0
-            4199:  7(f16vec4) Load 4174(texel)
-                              ReturnValue 4199
+     4184(texel):     64(ptr) Variable Function
+                              Store 4184(texel) 121
+            4185:         143 Load 145(s2D)
+            4186:   53(fvec2) Load 148(c2)
+            4187:   52(float) Load 565(lod)
+            4188:3102(ResType) ImageSparseGather 4185 4186 2187 Lod ConstOffsets 4187 2380
+            4189:  7(f16vec4) CompositeExtract 4188 1
+                              Store 4184(texel) 4189
+            4190:     47(int) CompositeExtract 4188 0
+            4191:         143 Load 145(s2D)
+            4192:154(f16vec2) Load 156(f16c2)
+            4193:6(float16_t) Load 572(f16lod)
+            4194:3102(ResType) ImageSparseGather 4191 4192 2187 Lod ConstOffsets 4193 2380
+            4195:  7(f16vec4) CompositeExtract 4194 1
+                              Store 4184(texel) 4195
+            4196:     47(int) CompositeExtract 4194 0
+            4197:         284 Load 286(s2DArray)
+            4198:  167(fvec3) Load 169(c3)
+            4199:   52(float) Load 565(lod)
+            4200:3102(ResType) ImageSparseGather 4197 4198 2187 Lod ConstOffsets 4199 2380
+            4201:  7(f16vec4) CompositeExtract 4200 1
+                              Store 4184(texel) 4201
+            4202:     47(int) CompositeExtract 4200 0
+            4203:         284 Load 286(s2DArray)
+            4204:175(f16vec3) Load 177(f16c3)
+            4205:6(float16_t) Load 572(f16lod)
+            4206:3102(ResType) ImageSparseGather 4203 4204 2187 Lod ConstOffsets 4205 2380
+            4207:  7(f16vec4) CompositeExtract 4206 1
+                              Store 4184(texel) 4207
+            4208:     47(int) CompositeExtract 4206 0
+            4209:  7(f16vec4) Load 4184(texel)
+                              ReturnValue 4209
                               FunctionEnd
 97(testSparseImageLoad():  7(f16vec4) Function None 8
               98:             Label
-     4202(texel):     64(ptr) Variable Function
-                              Store 4202(texel) 121
-            4203:        2962 Load 2964(i2D)
-            4204:   53(fvec2) Load 148(c2)
-            4205:  721(ivec2) ConvertFToS 4204
-            4206:3102(ResType) ImageSparseRead 4203 4205
-            4207:  7(f16vec4) CompositeExtract 4206 1
-                              Store 4202(texel) 4207
-            4208:     47(int) CompositeExtract 4206 0
-            4209:        2971 Load 2973(i3D)
-            4210:  167(fvec3) Load 169(c3)
-            4211:  734(ivec3) ConvertFToS 4210
-            4212:3102(ResType) ImageSparseRead 4209 4211
-            4213:  7(f16vec4) CompositeExtract 4212 1
-                              Store 4202(texel) 4213
-            4214:     47(int) CompositeExtract 4212 0
-            4215:        2980 Load 2982(i2DRect)
-            4216:   53(fvec2) Load 148(c2)
-            4217:  721(ivec2) ConvertFToS 4216
-            4218:3102(ResType) ImageSparseRead 4215 4217
-            4219:  7(f16vec4) CompositeExtract 4218 1
-                              Store 4202(texel) 4219
-            4220:     47(int) CompositeExtract 4218 0
-            4221:        2989 Load 2991(iCube)
-            4222:  167(fvec3) Load 169(c3)
-            4223:  734(ivec3) ConvertFToS 4222
-            4224:3102(ResType) ImageSparseRead 4221 4223
-            4225:  7(f16vec4) CompositeExtract 4224 1
-                              Store 4202(texel) 4225
-            4226:     47(int) CompositeExtract 4224 0
-            4227:        3016 Load 3018(i2DArray)
-            4228:  167(fvec3) Load 169(c3)
-            4229:  734(ivec3) ConvertFToS 4228
-            4230:3102(ResType) ImageSparseRead 4227 4229
-            4231:  7(f16vec4) CompositeExtract 4230 1
-                              Store 4202(texel) 4231
-            4232:     47(int) CompositeExtract 4230 0
-            4233:        3025 Load 3027(iCubeArray)
-            4234:  167(fvec3) Load 169(c3)
-            4235:  734(ivec3) ConvertFToS 4234
-            4236:3102(ResType) ImageSparseRead 4233 4235
-            4237:  7(f16vec4) CompositeExtract 4236 1
-                              Store 4202(texel) 4237
-            4238:     47(int) CompositeExtract 4236 0
-            4239:        3034 Load 3036(i2DMS)
-            4240:   53(fvec2) Load 148(c2)
-            4241:  721(ivec2) ConvertFToS 4240
-            4242:3102(ResType) ImageSparseRead 4239 4241 Sample 709
-            4243:  7(f16vec4) CompositeExtract 4242 1
-                              Store 4202(texel) 4243
-            4244:     47(int) CompositeExtract 4242 0
-            4245:        3043 Load 3045(i2DMSArray)
-            4246:  167(fvec3) Load 169(c3)
-            4247:  734(ivec3) ConvertFToS 4246
-            4248:3102(ResType) ImageSparseRead 4245 4247 Sample 1326
-            4249:  7(f16vec4) CompositeExtract 4248 1
-                              Store 4202(texel) 4249
-            4250:     47(int) CompositeExtract 4248 0
-            4251:  7(f16vec4) Load 4202(texel)
-                              ReturnValue 4251
+     4212(texel):     64(ptr) Variable Function
+                              Store 4212(texel) 121
+            4213:        2962 Load 2964(i2D)
+            4214:   53(fvec2) Load 148(c2)
+            4215:  721(ivec2) ConvertFToS 4214
+            4216:3102(ResType) ImageSparseRead 4213 4215
+            4217:  7(f16vec4) CompositeExtract 4216 1
+                              Store 4212(texel) 4217
+            4218:     47(int) CompositeExtract 4216 0
+            4219:        2971 Load 2973(i3D)
+            4220:  167(fvec3) Load 169(c3)
+            4221:  734(ivec3) ConvertFToS 4220
+            4222:3102(ResType) ImageSparseRead 4219 4221
+            4223:  7(f16vec4) CompositeExtract 4222 1
+                              Store 4212(texel) 4223
+            4224:     47(int) CompositeExtract 4222 0
+            4225:        2980 Load 2982(i2DRect)
+            4226:   53(fvec2) Load 148(c2)
+            4227:  721(ivec2) ConvertFToS 4226
+            4228:3102(ResType) ImageSparseRead 4225 4227
+            4229:  7(f16vec4) CompositeExtract 4228 1
+                              Store 4212(texel) 4229
+            4230:     47(int) CompositeExtract 4228 0
+            4231:        2989 Load 2991(iCube)
+            4232:  167(fvec3) Load 169(c3)
+            4233:  734(ivec3) ConvertFToS 4232
+            4234:3102(ResType) ImageSparseRead 4231 4233
+            4235:  7(f16vec4) CompositeExtract 4234 1
+                              Store 4212(texel) 4235
+            4236:     47(int) CompositeExtract 4234 0
+            4237:        3016 Load 3018(i2DArray)
+            4238:  167(fvec3) Load 169(c3)
+            4239:  734(ivec3) ConvertFToS 4238
+            4240:3102(ResType) ImageSparseRead 4237 4239
+            4241:  7(f16vec4) CompositeExtract 4240 1
+                              Store 4212(texel) 4241
+            4242:     47(int) CompositeExtract 4240 0
+            4243:        3025 Load 3027(iCubeArray)
+            4244:  167(fvec3) Load 169(c3)
+            4245:  734(ivec3) ConvertFToS 4244
+            4246:3102(ResType) ImageSparseRead 4243 4245
+            4247:  7(f16vec4) CompositeExtract 4246 1
+                              Store 4212(texel) 4247
+            4248:     47(int) CompositeExtract 4246 0
+            4249:        3034 Load 3036(i2DMS)
+            4250:   53(fvec2) Load 148(c2)
+            4251:  721(ivec2) ConvertFToS 4250
+            4252:3102(ResType) ImageSparseRead 4249 4251 Sample 709
+            4253:  7(f16vec4) CompositeExtract 4252 1
+                              Store 4212(texel) 4253
+            4254:     47(int) CompositeExtract 4252 0
+            4255:        3043 Load 3045(i2DMSArray)
+            4256:  167(fvec3) Load 169(c3)
+            4257:  734(ivec3) ConvertFToS 4256
+            4258:3102(ResType) ImageSparseRead 4255 4257 Sample 1326
+            4259:  7(f16vec4) CompositeExtract 4258 1
+                              Store 4212(texel) 4259
+            4260:     47(int) CompositeExtract 4258 0
+            4261:  7(f16vec4) Load 4212(texel)
+                              ReturnValue 4261
                               FunctionEnd
 99(testSparseTextureClamp():  7(f16vec4) Function None 8
              100:             Label
-     4254(texel):     64(ptr) Variable Function
-                              Store 4254(texel) 121
-            4255:         143 Load 145(s2D)
-            4256:   53(fvec2) Load 148(c2)
-            4258:   52(float) Load 4257(lodClamp)
-            4259:3102(ResType) ImageSparseSampleImplicitLod 4255 4256 MinLod 4258
-            4260:  7(f16vec4) CompositeExtract 4259 1
-                              Store 4254(texel) 4260
-            4261:     47(int) CompositeExtract 4259 0
-            4262:         143 Load 145(s2D)
-            4263:154(f16vec2) Load 156(f16c2)
-            4265:6(float16_t) Load 4264(f16lodClamp)
-            4266:6(float16_t) Load 137(f16bias)
-            4267:3102(ResType) ImageSparseSampleImplicitLod 4262 4263 Bias MinLod 4266 4265
-            4268:  7(f16vec4) CompositeExtract 4267 1
-                              Store 4254(texel) 4268
-            4269:     47(int) CompositeExtract 4267 0
-            4270:         163 Load 165(s3D)
-            4271:  167(fvec3) Load 169(c3)
-            4272:   52(float) Load 4257(lodClamp)
-            4273:3102(ResType) ImageSparseSampleImplicitLod 4270 4271 MinLod 4272
-            4274:  7(f16vec4) CompositeExtract 4273 1
-                              Store 4254(texel) 4274
-            4275:     47(int) CompositeExtract 4273 0
-            4276:         163 Load 165(s3D)
-            4277:175(f16vec3) Load 177(f16c3)
-            4278:6(float16_t) Load 4264(f16lodClamp)
-            4279:6(float16_t) Load 137(f16bias)
-            4280:3102(ResType) ImageSparseSampleImplicitLod 4276 4277 Bias MinLod 4279 4278
-            4281:  7(f16vec4) CompositeExtract 4280 1
-                              Store 4254(texel) 4281
-            4282:     47(int) CompositeExtract 4280 0
-            4283:         184 Load 186(sCube)
-            4284:  167(fvec3) Load 169(c3)
-            4285:   52(float) Load 4257(lodClamp)
-            4286:3102(ResType) ImageSparseSampleImplicitLod 4283 4284 MinLod 4285
-            4287:  7(f16vec4) CompositeExtract 4286 1
-                              Store 4254(texel) 4287
-            4288:     47(int) CompositeExtract 4286 0
-            4289:         184 Load 186(sCube)
-            4290:175(f16vec3) Load 177(f16c3)
-            4291:6(float16_t) Load 4264(f16lodClamp)
-            4292:6(float16_t) Load 137(f16bias)
-            4293:3102(ResType) ImageSparseSampleImplicitLod 4289 4290 Bias MinLod 4292 4291
-            4294:  7(f16vec4) CompositeExtract 4293 1
-                              Store 4254(texel) 4294
-            4295:     47(int) CompositeExtract 4293 0
-            4296:         224 Load 226(s2DShadow)
-            4297:  167(fvec3) Load 169(c3)
-            4298:   52(float) Load 4257(lodClamp)
-            4299:    208(ptr) AccessChain 4254(texel) 207
-            4300:   52(float) CompositeExtract 4297 2
-            4301:3138(ResType) ImageSparseSampleDrefImplicitLod 4296 4297 4300 MinLod 4298
-            4302:6(float16_t) CompositeExtract 4301 1
-                              Store 4299 4302
-            4303:     47(int) CompositeExtract 4301 0
-            4304:         224 Load 226(s2DShadow)
-            4305:154(f16vec2) Load 156(f16c2)
-            4306:   52(float) Load 215(compare)
-            4307:6(float16_t) Load 4264(f16lodClamp)
-            4308:    208(ptr) AccessChain 4254(texel) 207
-            4309:6(float16_t) Load 137(f16bias)
-            4310:3138(ResType) ImageSparseSampleDrefImplicitLod 4304 4305 4306 Bias MinLod 4309 4307
-            4311:6(float16_t) CompositeExtract 4310 1
-                              Store 4308 4311
-            4312:     47(int) CompositeExtract 4310 0
-            4313:         245 Load 247(sCubeShadow)
-            4314:  249(fvec4) Load 251(c4)
-            4315:   52(float) Load 4257(lodClamp)
-            4316:    208(ptr) AccessChain 4254(texel) 207
-            4317:   52(float) CompositeExtract 4314 3
-            4318:3138(ResType) ImageSparseSampleDrefImplicitLod 4313 4314 4317 MinLod 4315
-            4319:6(float16_t) CompositeExtract 4318 1
-                              Store 4316 4319
-            4320:     47(int) CompositeExtract 4318 0
-            4321:         245 Load 247(sCubeShadow)
-            4322:175(f16vec3) Load 177(f16c3)
-            4323:   52(float) Load 215(compare)
-            4324:6(float16_t) Load 4264(f16lodClamp)
-            4325:    208(ptr) AccessChain 4254(texel) 207
-            4326:6(float16_t) Load 137(f16bias)
-            4327:3138(ResType) ImageSparseSampleDrefImplicitLod 4321 4322 4323 Bias MinLod 4326 4324
-            4328:6(float16_t) CompositeExtract 4327 1
-                              Store 4325 4328
-            4329:     47(int) CompositeExtract 4327 0
-            4330:         284 Load 286(s2DArray)
-            4331:  167(fvec3) Load 169(c3)
-            4332:   52(float) Load 4257(lodClamp)
-            4333:3102(ResType) ImageSparseSampleImplicitLod 4330 4331 MinLod 4332
-            4334:  7(f16vec4) CompositeExtract 4333 1
-                              Store 4254(texel) 4334
-            4335:     47(int) CompositeExtract 4333 0
-            4336:         284 Load 286(s2DArray)
-            4337:175(f16vec3) Load 177(f16c3)
-            4338:6(float16_t) Load 4264(f16lodClamp)
-            4339:6(float16_t) Load 137(f16bias)
-            4340:3102(ResType) ImageSparseSampleImplicitLod 4336 4337 Bias MinLod 4339 4338
-            4341:  7(f16vec4) CompositeExtract 4340 1
-                              Store 4254(texel) 4341
-            4342:     47(int) CompositeExtract 4340 0
-            4343:         299 Load 301(sCubeArray)
-            4344:  249(fvec4) Load 251(c4)
-            4345:   52(float) Load 4257(lodClamp)
-            4346:3102(ResType) ImageSparseSampleImplicitLod 4343 4344 MinLod 4345
-            4347:  7(f16vec4) CompositeExtract 4346 1
-                              Store 4254(texel) 4347
-            4348:     47(int) CompositeExtract 4346 0
-            4349:         299 Load 301(sCubeArray)
-            4350:  7(f16vec4) Load 309(f16c4)
-            4351:6(float16_t) Load 4264(f16lodClamp)
-            4352:6(float16_t) Load 137(f16bias)
-            4353:3102(ResType) ImageSparseSampleImplicitLod 4349 4350 Bias MinLod 4352 4351
-            4354:  7(f16vec4) CompositeExtract 4353 1
-                              Store 4254(texel) 4354
-            4355:     47(int) CompositeExtract 4353 0
-            4356:         337 Load 339(s2DArrayShadow)
-            4357:  249(fvec4) Load 251(c4)
-            4358:   52(float) Load 4257(lodClamp)
-            4359:    208(ptr) AccessChain 4254(texel) 207
-            4360:   52(float) CompositeExtract 4357 3
-            4361:3138(ResType) ImageSparseSampleDrefImplicitLod 4356 4357 4360 MinLod 4358
-            4362:6(float16_t) CompositeExtract 4361 1
-                              Store 4359 4362
-            4363:     47(int) CompositeExtract 4361 0
-            4364:         337 Load 339(s2DArrayShadow)
-            4365:175(f16vec3) Load 177(f16c3)
-            4366:   52(float) Load 215(compare)
-            4367:6(float16_t) Load 4264(f16lodClamp)
-            4368:    208(ptr) AccessChain 4254(texel) 207
-            4369:3138(ResType) ImageSparseSampleDrefImplicitLod 4364 4365 4366 MinLod 4367
-            4370:6(float16_t) CompositeExtract 4369 1
-                              Store 4368 4370
-            4371:     47(int) CompositeExtract 4369 0
-            4372:         391 Load 393(sCubeArrayShadow)
-            4373:  249(fvec4) Load 251(c4)
-            4374:   52(float) Load 215(compare)
-            4375:   52(float) Load 4257(lodClamp)
-            4376:    208(ptr) AccessChain 4254(texel) 207
-            4377:3138(ResType) ImageSparseSampleDrefImplicitLod 4372 4373 4374 MinLod 4375
-            4378:6(float16_t) CompositeExtract 4377 1
-                              Store 4376 4378
-            4379:     47(int) CompositeExtract 4377 0
-            4380:         391 Load 393(sCubeArrayShadow)
-            4381:  7(f16vec4) Load 309(f16c4)
-            4382:   52(float) Load 215(compare)
-            4383:6(float16_t) Load 4264(f16lodClamp)
-            4384:    208(ptr) AccessChain 4254(texel) 207
-            4385:3138(ResType) ImageSparseSampleDrefImplicitLod 4380 4381 4382 MinLod 4383
-            4386:6(float16_t) CompositeExtract 4385 1
-                              Store 4384 4386
-            4387:     47(int) CompositeExtract 4385 0
-            4388:  7(f16vec4) Load 4254(texel)
-                              ReturnValue 4388
+     4264(texel):     64(ptr) Variable Function
+                              Store 4264(texel) 121
+            4265:         143 Load 145(s2D)
+            4266:   53(fvec2) Load 148(c2)
+            4268:   52(float) Load 4267(lodClamp)
+            4269:3102(ResType) ImageSparseSampleImplicitLod 4265 4266 MinLod 4268
+            4270:  7(f16vec4) CompositeExtract 4269 1
+                              Store 4264(texel) 4270
+            4271:     47(int) CompositeExtract 4269 0
+            4272:         143 Load 145(s2D)
+            4273:154(f16vec2) Load 156(f16c2)
+            4275:6(float16_t) Load 4274(f16lodClamp)
+            4276:6(float16_t) Load 137(f16bias)
+            4277:3102(ResType) ImageSparseSampleImplicitLod 4272 4273 Bias MinLod 4276 4275
+            4278:  7(f16vec4) CompositeExtract 4277 1
+                              Store 4264(texel) 4278
+            4279:     47(int) CompositeExtract 4277 0
+            4280:         163 Load 165(s3D)
+            4281:  167(fvec3) Load 169(c3)
+            4282:   52(float) Load 4267(lodClamp)
+            4283:3102(ResType) ImageSparseSampleImplicitLod 4280 4281 MinLod 4282
+            4284:  7(f16vec4) CompositeExtract 4283 1
+                              Store 4264(texel) 4284
+            4285:     47(int) CompositeExtract 4283 0
+            4286:         163 Load 165(s3D)
+            4287:175(f16vec3) Load 177(f16c3)
+            4288:6(float16_t) Load 4274(f16lodClamp)
+            4289:6(float16_t) Load 137(f16bias)
+            4290:3102(ResType) ImageSparseSampleImplicitLod 4286 4287 Bias MinLod 4289 4288
+            4291:  7(f16vec4) CompositeExtract 4290 1
+                              Store 4264(texel) 4291
+            4292:     47(int) CompositeExtract 4290 0
+            4293:         184 Load 186(sCube)
+            4294:  167(fvec3) Load 169(c3)
+            4295:   52(float) Load 4267(lodClamp)
+            4296:3102(ResType) ImageSparseSampleImplicitLod 4293 4294 MinLod 4295
+            4297:  7(f16vec4) CompositeExtract 4296 1
+                              Store 4264(texel) 4297
+            4298:     47(int) CompositeExtract 4296 0
+            4299:         184 Load 186(sCube)
+            4300:175(f16vec3) Load 177(f16c3)
+            4301:6(float16_t) Load 4274(f16lodClamp)
+            4302:6(float16_t) Load 137(f16bias)
+            4303:3102(ResType) ImageSparseSampleImplicitLod 4299 4300 Bias MinLod 4302 4301
+            4304:  7(f16vec4) CompositeExtract 4303 1
+                              Store 4264(texel) 4304
+            4305:     47(int) CompositeExtract 4303 0
+            4306:         224 Load 226(s2DShadow)
+            4307:  167(fvec3) Load 169(c3)
+            4308:   52(float) Load 4267(lodClamp)
+            4309:    208(ptr) AccessChain 4264(texel) 207
+            4310:   52(float) CompositeExtract 4307 2
+            4311:3138(ResType) ImageSparseSampleDrefImplicitLod 4306 4307 4310 MinLod 4308
+            4312:6(float16_t) CompositeExtract 4311 1
+                              Store 4309 4312
+            4313:     47(int) CompositeExtract 4311 0
+            4314:         224 Load 226(s2DShadow)
+            4315:154(f16vec2) Load 156(f16c2)
+            4316:   52(float) Load 215(compare)
+            4317:6(float16_t) Load 4274(f16lodClamp)
+            4318:    208(ptr) AccessChain 4264(texel) 207
+            4319:6(float16_t) Load 137(f16bias)
+            4320:3138(ResType) ImageSparseSampleDrefImplicitLod 4314 4315 4316 Bias MinLod 4319 4317
+            4321:6(float16_t) CompositeExtract 4320 1
+                              Store 4318 4321
+            4322:     47(int) CompositeExtract 4320 0
+            4323:         245 Load 247(sCubeShadow)
+            4324:  249(fvec4) Load 251(c4)
+            4325:   52(float) Load 4267(lodClamp)
+            4326:    208(ptr) AccessChain 4264(texel) 207
+            4327:   52(float) CompositeExtract 4324 3
+            4328:3138(ResType) ImageSparseSampleDrefImplicitLod 4323 4324 4327 MinLod 4325
+            4329:6(float16_t) CompositeExtract 4328 1
+                              Store 4326 4329
+            4330:     47(int) CompositeExtract 4328 0
+            4331:         245 Load 247(sCubeShadow)
+            4332:175(f16vec3) Load 177(f16c3)
+            4333:   52(float) Load 215(compare)
+            4334:6(float16_t) Load 4274(f16lodClamp)
+            4335:    208(ptr) AccessChain 4264(texel) 207
+            4336:6(float16_t) Load 137(f16bias)
+            4337:3138(ResType) ImageSparseSampleDrefImplicitLod 4331 4332 4333 Bias MinLod 4336 4334
+            4338:6(float16_t) CompositeExtract 4337 1
+                              Store 4335 4338
+            4339:     47(int) CompositeExtract 4337 0
+            4340:         284 Load 286(s2DArray)
+            4341:  167(fvec3) Load 169(c3)
+            4342:   52(float) Load 4267(lodClamp)
+            4343:3102(ResType) ImageSparseSampleImplicitLod 4340 4341 MinLod 4342
+            4344:  7(f16vec4) CompositeExtract 4343 1
+                              Store 4264(texel) 4344
+            4345:     47(int) CompositeExtract 4343 0
+            4346:         284 Load 286(s2DArray)
+            4347:175(f16vec3) Load 177(f16c3)
+            4348:6(float16_t) Load 4274(f16lodClamp)
+            4349:6(float16_t) Load 137(f16bias)
+            4350:3102(ResType) ImageSparseSampleImplicitLod 4346 4347 Bias MinLod 4349 4348
+            4351:  7(f16vec4) CompositeExtract 4350 1
+                              Store 4264(texel) 4351
+            4352:     47(int) CompositeExtract 4350 0
+            4353:         299 Load 301(sCubeArray)
+            4354:  249(fvec4) Load 251(c4)
+            4355:   52(float) Load 4267(lodClamp)
+            4356:3102(ResType) ImageSparseSampleImplicitLod 4353 4354 MinLod 4355
+            4357:  7(f16vec4) CompositeExtract 4356 1
+                              Store 4264(texel) 4357
+            4358:     47(int) CompositeExtract 4356 0
+            4359:         299 Load 301(sCubeArray)
+            4360:  7(f16vec4) Load 309(f16c4)
+            4361:6(float16_t) Load 4274(f16lodClamp)
+            4362:6(float16_t) Load 137(f16bias)
+            4363:3102(ResType) ImageSparseSampleImplicitLod 4359 4360 Bias MinLod 4362 4361
+            4364:  7(f16vec4) CompositeExtract 4363 1
+                              Store 4264(texel) 4364
+            4365:     47(int) CompositeExtract 4363 0
+            4366:         337 Load 339(s2DArrayShadow)
+            4367:  249(fvec4) Load 251(c4)
+            4368:   52(float) Load 4267(lodClamp)
+            4369:    208(ptr) AccessChain 4264(texel) 207
+            4370:   52(float) CompositeExtract 4367 3
+            4371:3138(ResType) ImageSparseSampleDrefImplicitLod 4366 4367 4370 MinLod 4368
+            4372:6(float16_t) CompositeExtract 4371 1
+                              Store 4369 4372
+            4373:     47(int) CompositeExtract 4371 0
+            4374:         337 Load 339(s2DArrayShadow)
+            4375:175(f16vec3) Load 177(f16c3)
+            4376:   52(float) Load 215(compare)
+            4377:6(float16_t) Load 4274(f16lodClamp)
+            4378:    208(ptr) AccessChain 4264(texel) 207
+            4379:3138(ResType) ImageSparseSampleDrefImplicitLod 4374 4375 4376 MinLod 4377
+            4380:6(float16_t) CompositeExtract 4379 1
+                              Store 4378 4380
+            4381:     47(int) CompositeExtract 4379 0
+            4382:         391 Load 393(sCubeArrayShadow)
+            4383:  249(fvec4) Load 251(c4)
+            4384:   52(float) Load 215(compare)
+            4385:   52(float) Load 4267(lodClamp)
+            4386:    208(ptr) AccessChain 4264(texel) 207
+            4387:3138(ResType) ImageSparseSampleDrefImplicitLod 4382 4383 4384 MinLod 4385
+            4388:6(float16_t) CompositeExtract 4387 1
+                              Store 4386 4388
+            4389:     47(int) CompositeExtract 4387 0
+            4390:         391 Load 393(sCubeArrayShadow)
+            4391:  7(f16vec4) Load 309(f16c4)
+            4392:   52(float) Load 215(compare)
+            4393:6(float16_t) Load 4274(f16lodClamp)
+            4394:    208(ptr) AccessChain 4264(texel) 207
+            4395:3138(ResType) ImageSparseSampleDrefImplicitLod 4390 4391 4392 MinLod 4393
+            4396:6(float16_t) CompositeExtract 4395 1
+                              Store 4394 4396
+            4397:     47(int) CompositeExtract 4395 0
+            4398:  7(f16vec4) Load 4264(texel)
+                              ReturnValue 4398
                               FunctionEnd
 101(testTextureClamp():  7(f16vec4) Function None 8
              102:             Label
-     4391(texel):     64(ptr) Variable Function
-                              Store 4391(texel) 121
-            4392:         123 Load 125(s1D)
-            4393:   52(float) Load 128(c1)
-            4394:   52(float) Load 4257(lodClamp)
-            4395:  7(f16vec4) ImageSampleImplicitLod 4392 4393 MinLod 4394
-            4396:  7(f16vec4) Load 4391(texel)
-            4397:  7(f16vec4) FAdd 4396 4395
-                              Store 4391(texel) 4397
-            4398:         123 Load 125(s1D)
-            4399:6(float16_t) Load 135(f16c1)
-            4400:6(float16_t) Load 4264(f16lodClamp)
-            4401:6(float16_t) Load 137(f16bias)
-            4402:  7(f16vec4) ImageSampleImplicitLod 4398 4399 Bias MinLod 4401 4400
-            4403:  7(f16vec4) Load 4391(texel)
-            4404:  7(f16vec4) FAdd 4403 4402
-                              Store 4391(texel) 4404
-            4405:         143 Load 145(s2D)
-            4406:   53(fvec2) Load 148(c2)
-            4407:   52(float) Load 4257(lodClamp)
-            4408:  7(f16vec4) ImageSampleImplicitLod 4405 4406 MinLod 4407
-            4409:  7(f16vec4) Load 4391(texel)
-            4410:  7(f16vec4) FAdd 4409 4408
-                              Store 4391(texel) 4410
-            4411:         143 Load 145(s2D)
-            4412:154(f16vec2) Load 156(f16c2)
-            4413:6(float16_t) Load 4264(f16lodClamp)
-            4414:6(float16_t) Load 137(f16bias)
-            4415:  7(f16vec4) ImageSampleImplicitLod 4411 4412 Bias MinLod 4414 4413
-            4416:  7(f16vec4) Load 4391(texel)
-            4417:  7(f16vec4) FAdd 4416 4415
-                              Store 4391(texel) 4417
-            4418:         163 Load 165(s3D)
-            4419:  167(fvec3) Load 169(c3)
-            4420:   52(float) Load 4257(lodClamp)
-            4421:  7(f16vec4) ImageSampleImplicitLod 4418 4419 MinLod 4420
-            4422:  7(f16vec4) Load 4391(texel)
-            4423:  7(f16vec4) FAdd 4422 4421
-                              Store 4391(texel) 4423
-            4424:         163 Load 165(s3D)
-            4425:175(f16vec3) Load 177(f16c3)
-            4426:6(float16_t) Load 4264(f16lodClamp)
-            4427:6(float16_t) Load 137(f16bias)
-            4428:  7(f16vec4) ImageSampleImplicitLod 4424 4425 Bias MinLod 4427 4426
-            4429:  7(f16vec4) Load 4391(texel)
-            4430:  7(f16vec4) FAdd 4429 4428
-                              Store 4391(texel) 4430
-            4431:         184 Load 186(sCube)
-            4432:  167(fvec3) Load 169(c3)
-            4433:   52(float) Load 4257(lodClamp)
-            4434:  7(f16vec4) ImageSampleImplicitLod 4431 4432 MinLod 4433
-            4435:  7(f16vec4) Load 4391(texel)
-            4436:  7(f16vec4) FAdd 4435 4434
-                              Store 4391(texel) 4436
-            4437:         184 Load 186(sCube)
-            4438:175(f16vec3) Load 177(f16c3)
-            4439:6(float16_t) Load 4264(f16lodClamp)
-            4440:6(float16_t) Load 137(f16bias)
-            4441:  7(f16vec4) ImageSampleImplicitLod 4437 4438 Bias MinLod 4440 4439
-            4442:  7(f16vec4) Load 4391(texel)
-            4443:  7(f16vec4) FAdd 4442 4441
-                              Store 4391(texel) 4443
-            4444:         199 Load 201(s1DShadow)
-            4445:  167(fvec3) Load 169(c3)
-            4446:   52(float) Load 4257(lodClamp)
-            4447:   52(float) CompositeExtract 4445 2
-            4448:6(float16_t) ImageSampleDrefImplicitLod 4444 4445 4447 MinLod 4446
-            4449:    208(ptr) AccessChain 4391(texel) 207
-            4450:6(float16_t) Load 4449
-            4451:6(float16_t) FAdd 4450 4448
-            4452:    208(ptr) AccessChain 4391(texel) 207
-                              Store 4452 4451
-            4453:         199 Load 201(s1DShadow)
-            4454:154(f16vec2) Load 156(f16c2)
-            4455:   52(float) Load 215(compare)
-            4456:6(float16_t) Load 4264(f16lodClamp)
-            4457:6(float16_t) Load 137(f16bias)
-            4458:6(float16_t) ImageSampleDrefImplicitLod 4453 4454 4455 Bias MinLod 4457 4456
-            4459:    208(ptr) AccessChain 4391(texel) 207
+     4401(texel):     64(ptr) Variable Function
+                              Store 4401(texel) 121
+            4402:         123 Load 125(s1D)
+            4403:   52(float) Load 128(c1)
+            4404:   52(float) Load 4267(lodClamp)
+            4405:  7(f16vec4) ImageSampleImplicitLod 4402 4403 MinLod 4404
+            4406:  7(f16vec4) Load 4401(texel)
+            4407:  7(f16vec4) FAdd 4406 4405
+                              Store 4401(texel) 4407
+            4408:         123 Load 125(s1D)
+            4409:6(float16_t) Load 135(f16c1)
+            4410:6(float16_t) Load 4274(f16lodClamp)
+            4411:6(float16_t) Load 137(f16bias)
+            4412:  7(f16vec4) ImageSampleImplicitLod 4408 4409 Bias MinLod 4411 4410
+            4413:  7(f16vec4) Load 4401(texel)
+            4414:  7(f16vec4) FAdd 4413 4412
+                              Store 4401(texel) 4414
+            4415:         143 Load 145(s2D)
+            4416:   53(fvec2) Load 148(c2)
+            4417:   52(float) Load 4267(lodClamp)
+            4418:  7(f16vec4) ImageSampleImplicitLod 4415 4416 MinLod 4417
+            4419:  7(f16vec4) Load 4401(texel)
+            4420:  7(f16vec4) FAdd 4419 4418
+                              Store 4401(texel) 4420
+            4421:         143 Load 145(s2D)
+            4422:154(f16vec2) Load 156(f16c2)
+            4423:6(float16_t) Load 4274(f16lodClamp)
+            4424:6(float16_t) Load 137(f16bias)
+            4425:  7(f16vec4) ImageSampleImplicitLod 4421 4422 Bias MinLod 4424 4423
+            4426:  7(f16vec4) Load 4401(texel)
+            4427:  7(f16vec4) FAdd 4426 4425
+                              Store 4401(texel) 4427
+            4428:         163 Load 165(s3D)
+            4429:  167(fvec3) Load 169(c3)
+            4430:   52(float) Load 4267(lodClamp)
+            4431:  7(f16vec4) ImageSampleImplicitLod 4428 4429 MinLod 4430
+            4432:  7(f16vec4) Load 4401(texel)
+            4433:  7(f16vec4) FAdd 4432 4431
+                              Store 4401(texel) 4433
+            4434:         163 Load 165(s3D)
+            4435:175(f16vec3) Load 177(f16c3)
+            4436:6(float16_t) Load 4274(f16lodClamp)
+            4437:6(float16_t) Load 137(f16bias)
+            4438:  7(f16vec4) ImageSampleImplicitLod 4434 4435 Bias MinLod 4437 4436
+            4439:  7(f16vec4) Load 4401(texel)
+            4440:  7(f16vec4) FAdd 4439 4438
+                              Store 4401(texel) 4440
+            4441:         184 Load 186(sCube)
+            4442:  167(fvec3) Load 169(c3)
+            4443:   52(float) Load 4267(lodClamp)
+            4444:  7(f16vec4) ImageSampleImplicitLod 4441 4442 MinLod 4443
+            4445:  7(f16vec4) Load 4401(texel)
+            4446:  7(f16vec4) FAdd 4445 4444
+                              Store 4401(texel) 4446
+            4447:         184 Load 186(sCube)
+            4448:175(f16vec3) Load 177(f16c3)
+            4449:6(float16_t) Load 4274(f16lodClamp)
+            4450:6(float16_t) Load 137(f16bias)
+            4451:  7(f16vec4) ImageSampleImplicitLod 4447 4448 Bias MinLod 4450 4449
+            4452:  7(f16vec4) Load 4401(texel)
+            4453:  7(f16vec4) FAdd 4452 4451
+                              Store 4401(texel) 4453
+            4454:         199 Load 201(s1DShadow)
+            4455:  167(fvec3) Load 169(c3)
+            4456:   52(float) Load 4267(lodClamp)
+            4457:   52(float) CompositeExtract 4455 2
+            4458:6(float16_t) ImageSampleDrefImplicitLod 4454 4455 4457 MinLod 4456
+            4459:    208(ptr) AccessChain 4401(texel) 207
             4460:6(float16_t) Load 4459
             4461:6(float16_t) FAdd 4460 4458
-            4462:    208(ptr) AccessChain 4391(texel) 207
+            4462:    208(ptr) AccessChain 4401(texel) 207
                               Store 4462 4461
-            4463:         224 Load 226(s2DShadow)
-            4464:  167(fvec3) Load 169(c3)
-            4465:   52(float) Load 4257(lodClamp)
-            4466:   52(float) CompositeExtract 4464 2
-            4467:6(float16_t) ImageSampleDrefImplicitLod 4463 4464 4466 MinLod 4465
-            4468:    208(ptr) AccessChain 4391(texel) 207
-            4469:6(float16_t) Load 4468
-            4470:6(float16_t) FAdd 4469 4467
-            4471:    208(ptr) AccessChain 4391(texel) 207
-                              Store 4471 4470
-            4472:         224 Load 226(s2DShadow)
-            4473:154(f16vec2) Load 156(f16c2)
-            4474:   52(float) Load 215(compare)
-            4475:6(float16_t) Load 4264(f16lodClamp)
-            4476:6(float16_t) Load 137(f16bias)
-            4477:6(float16_t) ImageSampleDrefImplicitLod 4472 4473 4474 Bias MinLod 4476 4475
-            4478:    208(ptr) AccessChain 4391(texel) 207
+            4463:         199 Load 201(s1DShadow)
+            4464:154(f16vec2) Load 156(f16c2)
+            4465:   52(float) Load 215(compare)
+            4466:6(float16_t) Load 4274(f16lodClamp)
+            4467:6(float16_t) Load 137(f16bias)
+            4468:6(float16_t) ImageSampleDrefImplicitLod 4463 4464 4465 Bias MinLod 4467 4466
+            4469:    208(ptr) AccessChain 4401(texel) 207
+            4470:6(float16_t) Load 4469
+            4471:6(float16_t) FAdd 4470 4468
+            4472:    208(ptr) AccessChain 4401(texel) 207
+                              Store 4472 4471
+            4473:         224 Load 226(s2DShadow)
+            4474:  167(fvec3) Load 169(c3)
+            4475:   52(float) Load 4267(lodClamp)
+            4476:   52(float) CompositeExtract 4474 2
+            4477:6(float16_t) ImageSampleDrefImplicitLod 4473 4474 4476 MinLod 4475
+            4478:    208(ptr) AccessChain 4401(texel) 207
             4479:6(float16_t) Load 4478
             4480:6(float16_t) FAdd 4479 4477
-            4481:    208(ptr) AccessChain 4391(texel) 207
+            4481:    208(ptr) AccessChain 4401(texel) 207
                               Store 4481 4480
-            4482:         245 Load 247(sCubeShadow)
-            4483:  249(fvec4) Load 251(c4)
-            4484:   52(float) Load 4257(lodClamp)
-            4485:   52(float) CompositeExtract 4483 3
-            4486:6(float16_t) ImageSampleDrefImplicitLod 4482 4483 4485 MinLod 4484
-            4487:    208(ptr) AccessChain 4391(texel) 207
-            4488:6(float16_t) Load 4487
-            4489:6(float16_t) FAdd 4488 4486
-            4490:    208(ptr) AccessChain 4391(texel) 207
-                              Store 4490 4489
-            4491:         245 Load 247(sCubeShadow)
-            4492:175(f16vec3) Load 177(f16c3)
-            4493:   52(float) Load 215(compare)
-            4494:6(float16_t) Load 4264(f16lodClamp)
-            4495:6(float16_t) Load 137(f16bias)
-            4496:6(float16_t) ImageSampleDrefImplicitLod 4491 4492 4493 Bias MinLod 4495 4494
-            4497:    208(ptr) AccessChain 4391(texel) 207
+            4482:         224 Load 226(s2DShadow)
+            4483:154(f16vec2) Load 156(f16c2)
+            4484:   52(float) Load 215(compare)
+            4485:6(float16_t) Load 4274(f16lodClamp)
+            4486:6(float16_t) Load 137(f16bias)
+            4487:6(float16_t) ImageSampleDrefImplicitLod 4482 4483 4484 Bias MinLod 4486 4485
+            4488:    208(ptr) AccessChain 4401(texel) 207
+            4489:6(float16_t) Load 4488
+            4490:6(float16_t) FAdd 4489 4487
+            4491:    208(ptr) AccessChain 4401(texel) 207
+                              Store 4491 4490
+            4492:         245 Load 247(sCubeShadow)
+            4493:  249(fvec4) Load 251(c4)
+            4494:   52(float) Load 4267(lodClamp)
+            4495:   52(float) CompositeExtract 4493 3
+            4496:6(float16_t) ImageSampleDrefImplicitLod 4492 4493 4495 MinLod 4494
+            4497:    208(ptr) AccessChain 4401(texel) 207
             4498:6(float16_t) Load 4497
             4499:6(float16_t) FAdd 4498 4496
-            4500:    208(ptr) AccessChain 4391(texel) 207
+            4500:    208(ptr) AccessChain 4401(texel) 207
                               Store 4500 4499
-            4501:         269 Load 271(s1DArray)
-            4502:   53(fvec2) Load 148(c2)
-            4503:   52(float) Load 4257(lodClamp)
-            4504:  7(f16vec4) ImageSampleImplicitLod 4501 4502 MinLod 4503
-            4505:  7(f16vec4) Load 4391(texel)
-            4506:  7(f16vec4) FAdd 4505 4504
-                              Store 4391(texel) 4506
-            4507:         269 Load 271(s1DArray)
-            4508:154(f16vec2) Load 156(f16c2)
-            4509:6(float16_t) Load 4264(f16lodClamp)
-            4510:6(float16_t) Load 137(f16bias)
-            4511:  7(f16vec4) ImageSampleImplicitLod 4507 4508 Bias MinLod 4510 4509
-            4512:  7(f16vec4) Load 4391(texel)
-            4513:  7(f16vec4) FAdd 4512 4511
-                              Store 4391(texel) 4513
-            4514:         284 Load 286(s2DArray)
-            4515:  167(fvec3) Load 169(c3)
-            4516:   52(float) Load 4257(lodClamp)
-            4517:  7(f16vec4) ImageSampleImplicitLod 4514 4515 MinLod 4516
-            4518:  7(f16vec4) Load 4391(texel)
-            4519:  7(f16vec4) FAdd 4518 4517
-                              Store 4391(texel) 4519
-            4520:         284 Load 286(s2DArray)
-            4521:175(f16vec3) Load 177(f16c3)
-            4522:6(float16_t) Load 4264(f16lodClamp)
-            4523:6(float16_t) Load 137(f16bias)
-            4524:  7(f16vec4) ImageSampleImplicitLod 4520 4521 Bias MinLod 4523 4522
-            4525:  7(f16vec4) Load 4391(texel)
-            4526:  7(f16vec4) FAdd 4525 4524
-                              Store 4391(texel) 4526
-            4527:         299 Load 301(sCubeArray)
-            4528:  249(fvec4) Load 251(c4)
-            4529:   52(float) Load 4257(lodClamp)
-            4530:  7(f16vec4) ImageSampleImplicitLod 4527 4528 MinLod 4529
-            4531:  7(f16vec4) Load 4391(texel)
-            4532:  7(f16vec4) FAdd 4531 4530
-                              Store 4391(texel) 4532
-            4533:         299 Load 301(sCubeArray)
-            4534:  7(f16vec4) Load 309(f16c4)
-            4535:6(float16_t) Load 4264(f16lodClamp)
-            4536:6(float16_t) Load 137(f16bias)
-            4537:  7(f16vec4) ImageSampleImplicitLod 4533 4534 Bias MinLod 4536 4535
-            4538:  7(f16vec4) Load 4391(texel)
-            4539:  7(f16vec4) FAdd 4538 4537
-                              Store 4391(texel) 4539
-            4540:         316 Load 318(s1DArrayShadow)
-            4541:  167(fvec3) Load 169(c3)
-            4542:   52(float) Load 4257(lodClamp)
-            4543:   52(float) CompositeExtract 4541 2
-            4544:6(float16_t) ImageSampleDrefImplicitLod 4540 4541 4543 MinLod 4542
-            4545:    208(ptr) AccessChain 4391(texel) 207
-            4546:6(float16_t) Load 4545
-            4547:6(float16_t) FAdd 4546 4544
-            4548:    208(ptr) AccessChain 4391(texel) 207
-                              Store 4548 4547
-            4549:         316 Load 318(s1DArrayShadow)
-            4550:154(f16vec2) Load 156(f16c2)
-            4551:   52(float) Load 215(compare)
-            4552:6(float16_t) Load 4264(f16lodClamp)
-            4553:6(float16_t) Load 137(f16bias)
-            4554:6(float16_t) ImageSampleDrefImplicitLod 4549 4550 4551 Bias MinLod 4553 4552
-            4555:    208(ptr) AccessChain 4391(texel) 207
+            4501:         245 Load 247(sCubeShadow)
+            4502:175(f16vec3) Load 177(f16c3)
+            4503:   52(float) Load 215(compare)
+            4504:6(float16_t) Load 4274(f16lodClamp)
+            4505:6(float16_t) Load 137(f16bias)
+            4506:6(float16_t) ImageSampleDrefImplicitLod 4501 4502 4503 Bias MinLod 4505 4504
+            4507:    208(ptr) AccessChain 4401(texel) 207
+            4508:6(float16_t) Load 4507
+            4509:6(float16_t) FAdd 4508 4506
+            4510:    208(ptr) AccessChain 4401(texel) 207
+                              Store 4510 4509
+            4511:         269 Load 271(s1DArray)
+            4512:   53(fvec2) Load 148(c2)
+            4513:   52(float) Load 4267(lodClamp)
+            4514:  7(f16vec4) ImageSampleImplicitLod 4511 4512 MinLod 4513
+            4515:  7(f16vec4) Load 4401(texel)
+            4516:  7(f16vec4) FAdd 4515 4514
+                              Store 4401(texel) 4516
+            4517:         269 Load 271(s1DArray)
+            4518:154(f16vec2) Load 156(f16c2)
+            4519:6(float16_t) Load 4274(f16lodClamp)
+            4520:6(float16_t) Load 137(f16bias)
+            4521:  7(f16vec4) ImageSampleImplicitLod 4517 4518 Bias MinLod 4520 4519
+            4522:  7(f16vec4) Load 4401(texel)
+            4523:  7(f16vec4) FAdd 4522 4521
+                              Store 4401(texel) 4523
+            4524:         284 Load 286(s2DArray)
+            4525:  167(fvec3) Load 169(c3)
+            4526:   52(float) Load 4267(lodClamp)
+            4527:  7(f16vec4) ImageSampleImplicitLod 4524 4525 MinLod 4526
+            4528:  7(f16vec4) Load 4401(texel)
+            4529:  7(f16vec4) FAdd 4528 4527
+                              Store 4401(texel) 4529
+            4530:         284 Load 286(s2DArray)
+            4531:175(f16vec3) Load 177(f16c3)
+            4532:6(float16_t) Load 4274(f16lodClamp)
+            4533:6(float16_t) Load 137(f16bias)
+            4534:  7(f16vec4) ImageSampleImplicitLod 4530 4531 Bias MinLod 4533 4532
+            4535:  7(f16vec4) Load 4401(texel)
+            4536:  7(f16vec4) FAdd 4535 4534
+                              Store 4401(texel) 4536
+            4537:         299 Load 301(sCubeArray)
+            4538:  249(fvec4) Load 251(c4)
+            4539:   52(float) Load 4267(lodClamp)
+            4540:  7(f16vec4) ImageSampleImplicitLod 4537 4538 MinLod 4539
+            4541:  7(f16vec4) Load 4401(texel)
+            4542:  7(f16vec4) FAdd 4541 4540
+                              Store 4401(texel) 4542
+            4543:         299 Load 301(sCubeArray)
+            4544:  7(f16vec4) Load 309(f16c4)
+            4545:6(float16_t) Load 4274(f16lodClamp)
+            4546:6(float16_t) Load 137(f16bias)
+            4547:  7(f16vec4) ImageSampleImplicitLod 4543 4544 Bias MinLod 4546 4545
+            4548:  7(f16vec4) Load 4401(texel)
+            4549:  7(f16vec4) FAdd 4548 4547
+                              Store 4401(texel) 4549
+            4550:         316 Load 318(s1DArrayShadow)
+            4551:  167(fvec3) Load 169(c3)
+            4552:   52(float) Load 4267(lodClamp)
+            4553:   52(float) CompositeExtract 4551 2
+            4554:6(float16_t) ImageSampleDrefImplicitLod 4550 4551 4553 MinLod 4552
+            4555:    208(ptr) AccessChain 4401(texel) 207
             4556:6(float16_t) Load 4555
             4557:6(float16_t) FAdd 4556 4554
-            4558:    208(ptr) AccessChain 4391(texel) 207
+            4558:    208(ptr) AccessChain 4401(texel) 207
                               Store 4558 4557
-            4559:         337 Load 339(s2DArrayShadow)
-            4560:  249(fvec4) Load 251(c4)
-            4561:   52(float) Load 4257(lodClamp)
-            4562:   52(float) CompositeExtract 4560 3
-            4563:6(float16_t) ImageSampleDrefImplicitLod 4559 4560 4562 MinLod 4561
-            4564:    208(ptr) AccessChain 4391(texel) 207
-            4565:6(float16_t) Load 4564
-            4566:6(float16_t) FAdd 4565 4563
-            4567:    208(ptr) AccessChain 4391(texel) 207
-                              Store 4567 4566
-            4568:         337 Load 339(s2DArrayShadow)
-            4569:175(f16vec3) Load 177(f16c3)
-            4570:   52(float) Load 215(compare)
-            4571:6(float16_t) Load 4264(f16lodClamp)
-            4572:6(float16_t) ImageSampleDrefImplicitLod 4568 4569 4570 MinLod 4571
-            4573:    208(ptr) AccessChain 4391(texel) 207
-            4574:6(float16_t) Load 4573
-            4575:6(float16_t) FAdd 4574 4572
-            4576:    208(ptr) AccessChain 4391(texel) 207
-                              Store 4576 4575
-            4577:         391 Load 393(sCubeArrayShadow)
-            4578:  249(fvec4) Load 251(c4)
-            4579:   52(float) Load 215(compare)
-            4580:   52(float) Load 4257(lodClamp)
-            4581:6(float16_t) ImageSampleDrefImplicitLod 4577 4578 4579 MinLod 4580
-            4582:    208(ptr) AccessChain 4391(texel) 207
-            4583:6(float16_t) Load 4582
-            4584:6(float16_t) FAdd 4583 4581
-            4585:    208(ptr) AccessChain 4391(texel) 207
-                              Store 4585 4584
-            4586:         391 Load 393(sCubeArrayShadow)
-            4587:  7(f16vec4) Load 309(f16c4)
-            4588:   52(float) Load 215(compare)
-            4589:6(float16_t) Load 4264(f16lodClamp)
-            4590:6(float16_t) ImageSampleDrefImplicitLod 4586 4587 4588 MinLod 4589
-            4591:    208(ptr) AccessChain 4391(texel) 207
-            4592:6(float16_t) Load 4591
-            4593:6(float16_t) FAdd 4592 4590
-            4594:    208(ptr) AccessChain 4391(texel) 207
-                              Store 4594 4593
-            4595:  7(f16vec4) Load 4391(texel)
-                              ReturnValue 4595
+            4559:         316 Load 318(s1DArrayShadow)
+            4560:154(f16vec2) Load 156(f16c2)
+            4561:   52(float) Load 215(compare)
+            4562:6(float16_t) Load 4274(f16lodClamp)
+            4563:6(float16_t) Load 137(f16bias)
+            4564:6(float16_t) ImageSampleDrefImplicitLod 4559 4560 4561 Bias MinLod 4563 4562
+            4565:    208(ptr) AccessChain 4401(texel) 207
+            4566:6(float16_t) Load 4565
+            4567:6(float16_t) FAdd 4566 4564
+            4568:    208(ptr) AccessChain 4401(texel) 207
+                              Store 4568 4567
+            4569:         337 Load 339(s2DArrayShadow)
+            4570:  249(fvec4) Load 251(c4)
+            4571:   52(float) Load 4267(lodClamp)
+            4572:   52(float) CompositeExtract 4570 3
+            4573:6(float16_t) ImageSampleDrefImplicitLod 4569 4570 4572 MinLod 4571
+            4574:    208(ptr) AccessChain 4401(texel) 207
+            4575:6(float16_t) Load 4574
+            4576:6(float16_t) FAdd 4575 4573
+            4577:    208(ptr) AccessChain 4401(texel) 207
+                              Store 4577 4576
+            4578:         337 Load 339(s2DArrayShadow)
+            4579:175(f16vec3) Load 177(f16c3)
+            4580:   52(float) Load 215(compare)
+            4581:6(float16_t) Load 4274(f16lodClamp)
+            4582:6(float16_t) ImageSampleDrefImplicitLod 4578 4579 4580 MinLod 4581
+            4583:    208(ptr) AccessChain 4401(texel) 207
+            4584:6(float16_t) Load 4583
+            4585:6(float16_t) FAdd 4584 4582
+            4586:    208(ptr) AccessChain 4401(texel) 207
+                              Store 4586 4585
+            4587:         391 Load 393(sCubeArrayShadow)
+            4588:  249(fvec4) Load 251(c4)
+            4589:   52(float) Load 215(compare)
+            4590:   52(float) Load 4267(lodClamp)
+            4591:6(float16_t) ImageSampleDrefImplicitLod 4587 4588 4589 MinLod 4590
+            4592:    208(ptr) AccessChain 4401(texel) 207
+            4593:6(float16_t) Load 4592
+            4594:6(float16_t) FAdd 4593 4591
+            4595:    208(ptr) AccessChain 4401(texel) 207
+                              Store 4595 4594
+            4596:         391 Load 393(sCubeArrayShadow)
+            4597:  7(f16vec4) Load 309(f16c4)
+            4598:   52(float) Load 215(compare)
+            4599:6(float16_t) Load 4274(f16lodClamp)
+            4600:6(float16_t) ImageSampleDrefImplicitLod 4596 4597 4598 MinLod 4599
+            4601:    208(ptr) AccessChain 4401(texel) 207
+            4602:6(float16_t) Load 4601
+            4603:6(float16_t) FAdd 4602 4600
+            4604:    208(ptr) AccessChain 4401(texel) 207
+                              Store 4604 4603
+            4605:  7(f16vec4) Load 4401(texel)
+                              ReturnValue 4605
                               FunctionEnd
 103(testSparseTextureOffsetClamp():  7(f16vec4) Function None 8
              104:             Label
-     4598(texel):     64(ptr) Variable Function
-                              Store 4598(texel) 121
-            4599:         143 Load 145(s2D)
-            4600:   53(fvec2) Load 148(c2)
-            4601:   52(float) Load 4257(lodClamp)
-            4602:3102(ResType) ImageSparseSampleImplicitLod 4599 4600 ConstOffset MinLod 722 4601
-            4603:  7(f16vec4) CompositeExtract 4602 1
-                              Store 4598(texel) 4603
-            4604:     47(int) CompositeExtract 4602 0
-            4605:         143 Load 145(s2D)
-            4606:154(f16vec2) Load 156(f16c2)
-            4607:6(float16_t) Load 4264(f16lodClamp)
-            4608:6(float16_t) Load 137(f16bias)
-            4609:3102(ResType) ImageSparseSampleImplicitLod 4605 4606 Bias ConstOffset MinLod 4608 722 4607
-            4610:  7(f16vec4) CompositeExtract 4609 1
-                              Store 4598(texel) 4610
-            4611:     47(int) CompositeExtract 4609 0
-            4612:         163 Load 165(s3D)
-            4613:  167(fvec3) Load 169(c3)
-            4614:   52(float) Load 4257(lodClamp)
-            4615:3102(ResType) ImageSparseSampleImplicitLod 4612 4613 ConstOffset MinLod 735 4614
-            4616:  7(f16vec4) CompositeExtract 4615 1
-                              Store 4598(texel) 4616
-            4617:     47(int) CompositeExtract 4615 0
-            4618:         163 Load 165(s3D)
-            4619:175(f16vec3) Load 177(f16c3)
-            4620:6(float16_t) Load 4264(f16lodClamp)
-            4621:6(float16_t) Load 137(f16bias)
-            4622:3102(ResType) ImageSparseSampleImplicitLod 4618 4619 Bias ConstOffset MinLod 4621 735 4620
-            4623:  7(f16vec4) CompositeExtract 4622 1
-                              Store 4598(texel) 4623
-            4624:     47(int) CompositeExtract 4622 0
-            4625:         224 Load 226(s2DShadow)
-            4626:  167(fvec3) Load 169(c3)
-            4627:   52(float) Load 4257(lodClamp)
-            4628:    208(ptr) AccessChain 4598(texel) 207
-            4629:   52(float) CompositeExtract 4626 2
-            4630:3138(ResType) ImageSparseSampleDrefImplicitLod 4625 4626 4629 ConstOffset MinLod 722 4627
-            4631:6(float16_t) CompositeExtract 4630 1
-                              Store 4628 4631
-            4632:     47(int) CompositeExtract 4630 0
-            4633:         224 Load 226(s2DShadow)
-            4634:154(f16vec2) Load 156(f16c2)
-            4635:   52(float) Load 215(compare)
-            4636:6(float16_t) Load 4264(f16lodClamp)
-            4637:    208(ptr) AccessChain 4598(texel) 207
-            4638:6(float16_t) Load 137(f16bias)
-            4639:3138(ResType) ImageSparseSampleDrefImplicitLod 4633 4634 4635 Bias ConstOffset MinLod 4638 722 4636
-            4640:6(float16_t) CompositeExtract 4639 1
-                              Store 4637 4640
-            4641:     47(int) CompositeExtract 4639 0
-            4642:         284 Load 286(s2DArray)
-            4643:  167(fvec3) Load 169(c3)
-            4644:   52(float) Load 4257(lodClamp)
-            4645:3102(ResType) ImageSparseSampleImplicitLod 4642 4643 ConstOffset MinLod 722 4644
-            4646:  7(f16vec4) CompositeExtract 4645 1
-                              Store 4598(texel) 4646
-            4647:     47(int) CompositeExtract 4645 0
-            4648:         284 Load 286(s2DArray)
-            4649:175(f16vec3) Load 177(f16c3)
-            4650:6(float16_t) Load 4264(f16lodClamp)
-            4651:6(float16_t) Load 137(f16bias)
-            4652:3102(ResType) ImageSparseSampleImplicitLod 4648 4649 Bias ConstOffset MinLod 4651 722 4650
-            4653:  7(f16vec4) CompositeExtract 4652 1
-                              Store 4598(texel) 4653
-            4654:     47(int) CompositeExtract 4652 0
-            4655:         337 Load 339(s2DArrayShadow)
-            4656:  249(fvec4) Load 251(c4)
-            4657:   52(float) Load 4257(lodClamp)
-            4658:    208(ptr) AccessChain 4598(texel) 207
-            4659:   52(float) CompositeExtract 4656 3
-            4660:3138(ResType) ImageSparseSampleDrefImplicitLod 4655 4656 4659 ConstOffset MinLod 722 4657
-            4661:6(float16_t) CompositeExtract 4660 1
-                              Store 4658 4661
-            4662:     47(int) CompositeExtract 4660 0
-            4663:         337 Load 339(s2DArrayShadow)
-            4664:175(f16vec3) Load 177(f16c3)
-            4665:   52(float) Load 215(compare)
-            4666:6(float16_t) Load 4264(f16lodClamp)
-            4667:    208(ptr) AccessChain 4598(texel) 207
-            4668:3138(ResType) ImageSparseSampleDrefImplicitLod 4663 4664 4665 ConstOffset MinLod 722 4666
-            4669:6(float16_t) CompositeExtract 4668 1
-                              Store 4667 4669
-            4670:     47(int) CompositeExtract 4668 0
-            4671:  7(f16vec4) Load 4598(texel)
-                              ReturnValue 4671
+     4608(texel):     64(ptr) Variable Function
+                              Store 4608(texel) 121
+            4609:         143 Load 145(s2D)
+            4610:   53(fvec2) Load 148(c2)
+            4611:   52(float) Load 4267(lodClamp)
+            4612:3102(ResType) ImageSparseSampleImplicitLod 4609 4610 ConstOffset MinLod 722 4611
+            4613:  7(f16vec4) CompositeExtract 4612 1
+                              Store 4608(texel) 4613
+            4614:     47(int) CompositeExtract 4612 0
+            4615:         143 Load 145(s2D)
+            4616:154(f16vec2) Load 156(f16c2)
+            4617:6(float16_t) Load 4274(f16lodClamp)
+            4618:6(float16_t) Load 137(f16bias)
+            4619:3102(ResType) ImageSparseSampleImplicitLod 4615 4616 Bias ConstOffset MinLod 4618 722 4617
+            4620:  7(f16vec4) CompositeExtract 4619 1
+                              Store 4608(texel) 4620
+            4621:     47(int) CompositeExtract 4619 0
+            4622:         163 Load 165(s3D)
+            4623:  167(fvec3) Load 169(c3)
+            4624:   52(float) Load 4267(lodClamp)
+            4625:3102(ResType) ImageSparseSampleImplicitLod 4622 4623 ConstOffset MinLod 735 4624
+            4626:  7(f16vec4) CompositeExtract 4625 1
+                              Store 4608(texel) 4626
+            4627:     47(int) CompositeExtract 4625 0
+            4628:         163 Load 165(s3D)
+            4629:175(f16vec3) Load 177(f16c3)
+            4630:6(float16_t) Load 4274(f16lodClamp)
+            4631:6(float16_t) Load 137(f16bias)
+            4632:3102(ResType) ImageSparseSampleImplicitLod 4628 4629 Bias ConstOffset MinLod 4631 735 4630
+            4633:  7(f16vec4) CompositeExtract 4632 1
+                              Store 4608(texel) 4633
+            4634:     47(int) CompositeExtract 4632 0
+            4635:         224 Load 226(s2DShadow)
+            4636:  167(fvec3) Load 169(c3)
+            4637:   52(float) Load 4267(lodClamp)
+            4638:    208(ptr) AccessChain 4608(texel) 207
+            4639:   52(float) CompositeExtract 4636 2
+            4640:3138(ResType) ImageSparseSampleDrefImplicitLod 4635 4636 4639 ConstOffset MinLod 722 4637
+            4641:6(float16_t) CompositeExtract 4640 1
+                              Store 4638 4641
+            4642:     47(int) CompositeExtract 4640 0
+            4643:         224 Load 226(s2DShadow)
+            4644:154(f16vec2) Load 156(f16c2)
+            4645:   52(float) Load 215(compare)
+            4646:6(float16_t) Load 4274(f16lodClamp)
+            4647:    208(ptr) AccessChain 4608(texel) 207
+            4648:6(float16_t) Load 137(f16bias)
+            4649:3138(ResType) ImageSparseSampleDrefImplicitLod 4643 4644 4645 Bias ConstOffset MinLod 4648 722 4646
+            4650:6(float16_t) CompositeExtract 4649 1
+                              Store 4647 4650
+            4651:     47(int) CompositeExtract 4649 0
+            4652:         284 Load 286(s2DArray)
+            4653:  167(fvec3) Load 169(c3)
+            4654:   52(float) Load 4267(lodClamp)
+            4655:3102(ResType) ImageSparseSampleImplicitLod 4652 4653 ConstOffset MinLod 722 4654
+            4656:  7(f16vec4) CompositeExtract 4655 1
+                              Store 4608(texel) 4656
+            4657:     47(int) CompositeExtract 4655 0
+            4658:         284 Load 286(s2DArray)
+            4659:175(f16vec3) Load 177(f16c3)
+            4660:6(float16_t) Load 4274(f16lodClamp)
+            4661:6(float16_t) Load 137(f16bias)
+            4662:3102(ResType) ImageSparseSampleImplicitLod 4658 4659 Bias ConstOffset MinLod 4661 722 4660
+            4663:  7(f16vec4) CompositeExtract 4662 1
+                              Store 4608(texel) 4663
+            4664:     47(int) CompositeExtract 4662 0
+            4665:         337 Load 339(s2DArrayShadow)
+            4666:  249(fvec4) Load 251(c4)
+            4667:   52(float) Load 4267(lodClamp)
+            4668:    208(ptr) AccessChain 4608(texel) 207
+            4669:   52(float) CompositeExtract 4666 3
+            4670:3138(ResType) ImageSparseSampleDrefImplicitLod 4665 4666 4669 ConstOffset MinLod 722 4667
+            4671:6(float16_t) CompositeExtract 4670 1
+                              Store 4668 4671
+            4672:     47(int) CompositeExtract 4670 0
+            4673:         337 Load 339(s2DArrayShadow)
+            4674:175(f16vec3) Load 177(f16c3)
+            4675:   52(float) Load 215(compare)
+            4676:6(float16_t) Load 4274(f16lodClamp)
+            4677:    208(ptr) AccessChain 4608(texel) 207
+            4678:3138(ResType) ImageSparseSampleDrefImplicitLod 4673 4674 4675 ConstOffset MinLod 722 4676
+            4679:6(float16_t) CompositeExtract 4678 1
+                              Store 4677 4679
+            4680:     47(int) CompositeExtract 4678 0
+            4681:  7(f16vec4) Load 4608(texel)
+                              ReturnValue 4681
                               FunctionEnd
 105(testTextureOffsetClamp():  7(f16vec4) Function None 8
              106:             Label
-     4674(texel):     64(ptr) Variable Function
-                              Store 4674(texel) 121
-            4675:         123 Load 125(s1D)
-            4676:   52(float) Load 128(c1)
-            4677:   52(float) Load 4257(lodClamp)
-            4678:  7(f16vec4) ImageSampleImplicitLod 4675 4676 ConstOffset MinLod 709 4677
-            4679:  7(f16vec4) Load 4674(texel)
-            4680:  7(f16vec4) FAdd 4679 4678
-                              Store 4674(texel) 4680
-            4681:         123 Load 125(s1D)
-            4682:6(float16_t) Load 135(f16c1)
-            4683:6(float16_t) Load 4264(f16lodClamp)
-            4684:6(float16_t) Load 137(f16bias)
-            4685:  7(f16vec4) ImageSampleImplicitLod 4681 4682 Bias ConstOffset MinLod 4684 709 4683
-            4686:  7(f16vec4) Load 4674(texel)
-            4687:  7(f16vec4) FAdd 4686 4685
-                              Store 4674(texel) 4687
-            4688:         143 Load 145(s2D)
-            4689:   53(fvec2) Load 148(c2)
-            4690:   52(float) Load 4257(lodClamp)
-            4691:  7(f16vec4) ImageSampleImplicitLod 4688 4689 ConstOffset MinLod 722 4690
-            4692:  7(f16vec4) Load 4674(texel)
-            4693:  7(f16vec4) FAdd 4692 4691
-                              Store 4674(texel) 4693
-            4694:         143 Load 145(s2D)
-            4695:154(f16vec2) Load 156(f16c2)
-            4696:6(float16_t) Load 4264(f16lodClamp)
-            4697:6(float16_t) Load 137(f16bias)
-            4698:  7(f16vec4) ImageSampleImplicitLod 4694 4695 Bias ConstOffset MinLod 4697 722 4696
-            4699:  7(f16vec4) Load 4674(texel)
-            4700:  7(f16vec4) FAdd 4699 4698
-                              Store 4674(texel) 4700
-            4701:         163 Load 165(s3D)
-            4702:  167(fvec3) Load 169(c3)
-            4703:   52(float) Load 4257(lodClamp)
-            4704:  7(f16vec4) ImageSampleImplicitLod 4701 4702 ConstOffset MinLod 735 4703
-            4705:  7(f16vec4) Load 4674(texel)
-            4706:  7(f16vec4) FAdd 4705 4704
-                              Store 4674(texel) 4706
-            4707:         163 Load 165(s3D)
-            4708:175(f16vec3) Load 177(f16c3)
-            4709:6(float16_t) Load 4264(f16lodClamp)
-            4710:6(float16_t) Load 137(f16bias)
-            4711:  7(f16vec4) ImageSampleImplicitLod 4707 4708 Bias ConstOffset MinLod 4710 735 4709
-            4712:  7(f16vec4) Load 4674(texel)
-            4713:  7(f16vec4) FAdd 4712 4711
-                              Store 4674(texel) 4713
-            4714:         199 Load 201(s1DShadow)
-            4715:  167(fvec3) Load 169(c3)
-            4716:   52(float) Load 4257(lodClamp)
-            4717:   52(float) CompositeExtract 4715 2
-            4718:6(float16_t) ImageSampleDrefImplicitLod 4714 4715 4717 ConstOffset MinLod 709 4716
-            4719:    208(ptr) AccessChain 4674(texel) 207
-            4720:6(float16_t) Load 4719
-            4721:6(float16_t) FAdd 4720 4718
-            4722:    208(ptr) AccessChain 4674(texel) 207
-                              Store 4722 4721
-            4723:         199 Load 201(s1DShadow)
-            4724:154(f16vec2) Load 156(f16c2)
-            4725:   52(float) Load 215(compare)
-            4726:6(float16_t) Load 4264(f16lodClamp)
-            4727:6(float16_t) Load 137(f16bias)
-            4728:6(float16_t) ImageSampleDrefImplicitLod 4723 4724 4725 Bias ConstOffset MinLod 4727 709 4726
-            4729:    208(ptr) AccessChain 4674(texel) 207
+     4684(texel):     64(ptr) Variable Function
+                              Store 4684(texel) 121
+            4685:         123 Load 125(s1D)
+            4686:   52(float) Load 128(c1)
+            4687:   52(float) Load 4267(lodClamp)
+            4688:  7(f16vec4) ImageSampleImplicitLod 4685 4686 ConstOffset MinLod 709 4687
+            4689:  7(f16vec4) Load 4684(texel)
+            4690:  7(f16vec4) FAdd 4689 4688
+                              Store 4684(texel) 4690
+            4691:         123 Load 125(s1D)
+            4692:6(float16_t) Load 135(f16c1)
+            4693:6(float16_t) Load 4274(f16lodClamp)
+            4694:6(float16_t) Load 137(f16bias)
+            4695:  7(f16vec4) ImageSampleImplicitLod 4691 4692 Bias ConstOffset MinLod 4694 709 4693
+            4696:  7(f16vec4) Load 4684(texel)
+            4697:  7(f16vec4) FAdd 4696 4695
+                              Store 4684(texel) 4697
+            4698:         143 Load 145(s2D)
+            4699:   53(fvec2) Load 148(c2)
+            4700:   52(float) Load 4267(lodClamp)
+            4701:  7(f16vec4) ImageSampleImplicitLod 4698 4699 ConstOffset MinLod 722 4700
+            4702:  7(f16vec4) Load 4684(texel)
+            4703:  7(f16vec4) FAdd 4702 4701
+                              Store 4684(texel) 4703
+            4704:         143 Load 145(s2D)
+            4705:154(f16vec2) Load 156(f16c2)
+            4706:6(float16_t) Load 4274(f16lodClamp)
+            4707:6(float16_t) Load 137(f16bias)
+            4708:  7(f16vec4) ImageSampleImplicitLod 4704 4705 Bias ConstOffset MinLod 4707 722 4706
+            4709:  7(f16vec4) Load 4684(texel)
+            4710:  7(f16vec4) FAdd 4709 4708
+                              Store 4684(texel) 4710
+            4711:         163 Load 165(s3D)
+            4712:  167(fvec3) Load 169(c3)
+            4713:   52(float) Load 4267(lodClamp)
+            4714:  7(f16vec4) ImageSampleImplicitLod 4711 4712 ConstOffset MinLod 735 4713
+            4715:  7(f16vec4) Load 4684(texel)
+            4716:  7(f16vec4) FAdd 4715 4714
+                              Store 4684(texel) 4716
+            4717:         163 Load 165(s3D)
+            4718:175(f16vec3) Load 177(f16c3)
+            4719:6(float16_t) Load 4274(f16lodClamp)
+            4720:6(float16_t) Load 137(f16bias)
+            4721:  7(f16vec4) ImageSampleImplicitLod 4717 4718 Bias ConstOffset MinLod 4720 735 4719
+            4722:  7(f16vec4) Load 4684(texel)
+            4723:  7(f16vec4) FAdd 4722 4721
+                              Store 4684(texel) 4723
+            4724:         199 Load 201(s1DShadow)
+            4725:  167(fvec3) Load 169(c3)
+            4726:   52(float) Load 4267(lodClamp)
+            4727:   52(float) CompositeExtract 4725 2
+            4728:6(float16_t) ImageSampleDrefImplicitLod 4724 4725 4727 ConstOffset MinLod 709 4726
+            4729:    208(ptr) AccessChain 4684(texel) 207
             4730:6(float16_t) Load 4729
             4731:6(float16_t) FAdd 4730 4728
-            4732:    208(ptr) AccessChain 4674(texel) 207
+            4732:    208(ptr) AccessChain 4684(texel) 207
                               Store 4732 4731
-            4733:         224 Load 226(s2DShadow)
-            4734:  167(fvec3) Load 169(c3)
-            4735:   52(float) Load 4257(lodClamp)
-            4736:   52(float) CompositeExtract 4734 2
-            4737:6(float16_t) ImageSampleDrefImplicitLod 4733 4734 4736 ConstOffset MinLod 722 4735
-            4738:    208(ptr) AccessChain 4674(texel) 207
-            4739:6(float16_t) Load 4738
-            4740:6(float16_t) FAdd 4739 4737
-            4741:    208(ptr) AccessChain 4674(texel) 207
-                              Store 4741 4740
-            4742:         224 Load 226(s2DShadow)
-            4743:154(f16vec2) Load 156(f16c2)
-            4744:   52(float) Load 215(compare)
-            4745:6(float16_t) Load 4264(f16lodClamp)
-            4746:6(float16_t) Load 137(f16bias)
-            4747:6(float16_t) ImageSampleDrefImplicitLod 4742 4743 4744 Bias ConstOffset MinLod 4746 722 4745
-            4748:    208(ptr) AccessChain 4674(texel) 207
+            4733:         199 Load 201(s1DShadow)
+            4734:154(f16vec2) Load 156(f16c2)
+            4735:   52(float) Load 215(compare)
+            4736:6(float16_t) Load 4274(f16lodClamp)
+            4737:6(float16_t) Load 137(f16bias)
+            4738:6(float16_t) ImageSampleDrefImplicitLod 4733 4734 4735 Bias ConstOffset MinLod 4737 709 4736
+            4739:    208(ptr) AccessChain 4684(texel) 207
+            4740:6(float16_t) Load 4739
+            4741:6(float16_t) FAdd 4740 4738
+            4742:    208(ptr) AccessChain 4684(texel) 207
+                              Store 4742 4741
+            4743:         224 Load 226(s2DShadow)
+            4744:  167(fvec3) Load 169(c3)
+            4745:   52(float) Load 4267(lodClamp)
+            4746:   52(float) CompositeExtract 4744 2
+            4747:6(float16_t) ImageSampleDrefImplicitLod 4743 4744 4746 ConstOffset MinLod 722 4745
+            4748:    208(ptr) AccessChain 4684(texel) 207
             4749:6(float16_t) Load 4748
             4750:6(float16_t) FAdd 4749 4747
-            4751:    208(ptr) AccessChain 4674(texel) 207
+            4751:    208(ptr) AccessChain 4684(texel) 207
                               Store 4751 4750
-            4752:         269 Load 271(s1DArray)
-            4753:   53(fvec2) Load 148(c2)
-            4754:   52(float) Load 4257(lodClamp)
-            4755:  7(f16vec4) ImageSampleImplicitLod 4752 4753 ConstOffset MinLod 709 4754
-            4756:  7(f16vec4) Load 4674(texel)
-            4757:  7(f16vec4) FAdd 4756 4755
-                              Store 4674(texel) 4757
-            4758:         269 Load 271(s1DArray)
-            4759:154(f16vec2) Load 156(f16c2)
-            4760:6(float16_t) Load 4264(f16lodClamp)
-            4761:6(float16_t) Load 137(f16bias)
-            4762:  7(f16vec4) ImageSampleImplicitLod 4758 4759 Bias ConstOffset MinLod 4761 709 4760
-            4763:  7(f16vec4) Load 4674(texel)
-            4764:  7(f16vec4) FAdd 4763 4762
-                              Store 4674(texel) 4764
-            4765:         284 Load 286(s2DArray)
-            4766:  167(fvec3) Load 169(c3)
-            4767:   52(float) Load 4257(lodClamp)
-            4768:  7(f16vec4) ImageSampleImplicitLod 4765 4766 ConstOffset MinLod 722 4767
-            4769:  7(f16vec4) Load 4674(texel)
-            4770:  7(f16vec4) FAdd 4769 4768
-                              Store 4674(texel) 4770
-            4771:         284 Load 286(s2DArray)
-            4772:175(f16vec3) Load 177(f16c3)
-            4773:6(float16_t) Load 4264(f16lodClamp)
-            4774:6(float16_t) Load 137(f16bias)
-            4775:  7(f16vec4) ImageSampleImplicitLod 4771 4772 Bias ConstOffset MinLod 4774 722 4773
-            4776:  7(f16vec4) Load 4674(texel)
-            4777:  7(f16vec4) FAdd 4776 4775
-                              Store 4674(texel) 4777
-            4778:         316 Load 318(s1DArrayShadow)
-            4779:  167(fvec3) Load 169(c3)
-            4780:   52(float) Load 4257(lodClamp)
-            4781:   52(float) CompositeExtract 4779 2
-            4782:6(float16_t) ImageSampleDrefImplicitLod 4778 4779 4781 ConstOffset MinLod 709 4780
-            4783:    208(ptr) AccessChain 4674(texel) 207
-            4784:6(float16_t) Load 4783
-            4785:6(float16_t) FAdd 4784 4782
-            4786:    208(ptr) AccessChain 4674(texel) 207
-                              Store 4786 4785
-            4787:         316 Load 318(s1DArrayShadow)
-            4788:154(f16vec2) Load 156(f16c2)
-            4789:   52(float) Load 215(compare)
-            4790:6(float16_t) Load 4264(f16lodClamp)
-            4791:6(float16_t) Load 137(f16bias)
-            4792:6(float16_t) ImageSampleDrefImplicitLod 4787 4788 4789 Bias ConstOffset MinLod 4791 709 4790
-            4793:    208(ptr) AccessChain 4674(texel) 207
+            4752:         224 Load 226(s2DShadow)
+            4753:154(f16vec2) Load 156(f16c2)
+            4754:   52(float) Load 215(compare)
+            4755:6(float16_t) Load 4274(f16lodClamp)
+            4756:6(float16_t) Load 137(f16bias)
+            4757:6(float16_t) ImageSampleDrefImplicitLod 4752 4753 4754 Bias ConstOffset MinLod 4756 722 4755
+            4758:    208(ptr) AccessChain 4684(texel) 207
+            4759:6(float16_t) Load 4758
+            4760:6(float16_t) FAdd 4759 4757
+            4761:    208(ptr) AccessChain 4684(texel) 207
+                              Store 4761 4760
+            4762:         269 Load 271(s1DArray)
+            4763:   53(fvec2) Load 148(c2)
+            4764:   52(float) Load 4267(lodClamp)
+            4765:  7(f16vec4) ImageSampleImplicitLod 4762 4763 ConstOffset MinLod 709 4764
+            4766:  7(f16vec4) Load 4684(texel)
+            4767:  7(f16vec4) FAdd 4766 4765
+                              Store 4684(texel) 4767
+            4768:         269 Load 271(s1DArray)
+            4769:154(f16vec2) Load 156(f16c2)
+            4770:6(float16_t) Load 4274(f16lodClamp)
+            4771:6(float16_t) Load 137(f16bias)
+            4772:  7(f16vec4) ImageSampleImplicitLod 4768 4769 Bias ConstOffset MinLod 4771 709 4770
+            4773:  7(f16vec4) Load 4684(texel)
+            4774:  7(f16vec4) FAdd 4773 4772
+                              Store 4684(texel) 4774
+            4775:         284 Load 286(s2DArray)
+            4776:  167(fvec3) Load 169(c3)
+            4777:   52(float) Load 4267(lodClamp)
+            4778:  7(f16vec4) ImageSampleImplicitLod 4775 4776 ConstOffset MinLod 722 4777
+            4779:  7(f16vec4) Load 4684(texel)
+            4780:  7(f16vec4) FAdd 4779 4778
+                              Store 4684(texel) 4780
+            4781:         284 Load 286(s2DArray)
+            4782:175(f16vec3) Load 177(f16c3)
+            4783:6(float16_t) Load 4274(f16lodClamp)
+            4784:6(float16_t) Load 137(f16bias)
+            4785:  7(f16vec4) ImageSampleImplicitLod 4781 4782 Bias ConstOffset MinLod 4784 722 4783
+            4786:  7(f16vec4) Load 4684(texel)
+            4787:  7(f16vec4) FAdd 4786 4785
+                              Store 4684(texel) 4787
+            4788:         316 Load 318(s1DArrayShadow)
+            4789:  167(fvec3) Load 169(c3)
+            4790:   52(float) Load 4267(lodClamp)
+            4791:   52(float) CompositeExtract 4789 2
+            4792:6(float16_t) ImageSampleDrefImplicitLod 4788 4789 4791 ConstOffset MinLod 709 4790
+            4793:    208(ptr) AccessChain 4684(texel) 207
             4794:6(float16_t) Load 4793
             4795:6(float16_t) FAdd 4794 4792
-            4796:    208(ptr) AccessChain 4674(texel) 207
+            4796:    208(ptr) AccessChain 4684(texel) 207
                               Store 4796 4795
-            4797:         337 Load 339(s2DArrayShadow)
-            4798:  249(fvec4) Load 251(c4)
-            4799:   52(float) Load 4257(lodClamp)
-            4800:   52(float) CompositeExtract 4798 3
-            4801:6(float16_t) ImageSampleDrefImplicitLod 4797 4798 4800 ConstOffset MinLod 722 4799
-            4802:    208(ptr) AccessChain 4674(texel) 207
-            4803:6(float16_t) Load 4802
-            4804:6(float16_t) FAdd 4803 4801
-            4805:    208(ptr) AccessChain 4674(texel) 207
-                              Store 4805 4804
-            4806:         337 Load 339(s2DArrayShadow)
-            4807:175(f16vec3) Load 177(f16c3)
-            4808:   52(float) Load 215(compare)
-            4809:6(float16_t) Load 4264(f16lodClamp)
-            4810:6(float16_t) ImageSampleDrefImplicitLod 4806 4807 4808 ConstOffset MinLod 722 4809
-            4811:    208(ptr) AccessChain 4674(texel) 207
-            4812:6(float16_t) Load 4811
-            4813:6(float16_t) FAdd 4812 4810
-            4814:    208(ptr) AccessChain 4674(texel) 207
-                              Store 4814 4813
-            4815:  7(f16vec4) Load 4674(texel)
-                              ReturnValue 4815
+            4797:         316 Load 318(s1DArrayShadow)
+            4798:154(f16vec2) Load 156(f16c2)
+            4799:   52(float) Load 215(compare)
+            4800:6(float16_t) Load 4274(f16lodClamp)
+            4801:6(float16_t) Load 137(f16bias)
+            4802:6(float16_t) ImageSampleDrefImplicitLod 4797 4798 4799 Bias ConstOffset MinLod 4801 709 4800
+            4803:    208(ptr) AccessChain 4684(texel) 207
+            4804:6(float16_t) Load 4803
+            4805:6(float16_t) FAdd 4804 4802
+            4806:    208(ptr) AccessChain 4684(texel) 207
+                              Store 4806 4805
+            4807:         337 Load 339(s2DArrayShadow)
+            4808:  249(fvec4) Load 251(c4)
+            4809:   52(float) Load 4267(lodClamp)
+            4810:   52(float) CompositeExtract 4808 3
+            4811:6(float16_t) ImageSampleDrefImplicitLod 4807 4808 4810 ConstOffset MinLod 722 4809
+            4812:    208(ptr) AccessChain 4684(texel) 207
+            4813:6(float16_t) Load 4812
+            4814:6(float16_t) FAdd 4813 4811
+            4815:    208(ptr) AccessChain 4684(texel) 207
+                              Store 4815 4814
+            4816:         337 Load 339(s2DArrayShadow)
+            4817:175(f16vec3) Load 177(f16c3)
+            4818:   52(float) Load 215(compare)
+            4819:6(float16_t) Load 4274(f16lodClamp)
+            4820:6(float16_t) ImageSampleDrefImplicitLod 4816 4817 4818 ConstOffset MinLod 722 4819
+            4821:    208(ptr) AccessChain 4684(texel) 207
+            4822:6(float16_t) Load 4821
+            4823:6(float16_t) FAdd 4822 4820
+            4824:    208(ptr) AccessChain 4684(texel) 207
+                              Store 4824 4823
+            4825:  7(f16vec4) Load 4684(texel)
+                              ReturnValue 4825
                               FunctionEnd
 107(testSparseTextureGradClamp():  7(f16vec4) Function None 8
              108:             Label
-     4818(texel):     64(ptr) Variable Function
-                              Store 4818(texel) 121
-            4819:         143 Load 145(s2D)
-            4820:   53(fvec2) Load 148(c2)
-            4821:   53(fvec2) Load 1409(dPdxy2)
-            4822:   53(fvec2) Load 1409(dPdxy2)
-            4823:   52(float) Load 4257(lodClamp)
-            4824:3102(ResType) ImageSparseSampleExplicitLod 4819 4820 Grad MinLod 4821 4822 4823
-            4825:  7(f16vec4) CompositeExtract 4824 1
-                              Store 4818(texel) 4825
-            4826:     47(int) CompositeExtract 4824 0
-            4827:         143 Load 145(s2D)
-            4828:154(f16vec2) Load 156(f16c2)
-            4829:154(f16vec2) Load 1417(f16dPdxy2)
-            4830:154(f16vec2) Load 1417(f16dPdxy2)
-            4831:6(float16_t) Load 4264(f16lodClamp)
-            4832:3102(ResType) ImageSparseSampleExplicitLod 4827 4828 Grad MinLod 4829 4830 4831
-            4833:  7(f16vec4) CompositeExtract 4832 1
-                              Store 4818(texel) 4833
-            4834:     47(int) CompositeExtract 4832 0
-            4835:         163 Load 165(s3D)
-            4836:  167(fvec3) Load 169(c3)
-            4837:  167(fvec3) Load 1425(dPdxy3)
-            4838:  167(fvec3) Load 1425(dPdxy3)
-            4839:   52(float) Load 4257(lodClamp)
-            4840:3102(ResType) ImageSparseSampleExplicitLod 4835 4836 Grad MinLod 4837 4838 4839
-            4841:  7(f16vec4) CompositeExtract 4840 1
-                              Store 4818(texel) 4841
-            4842:     47(int) CompositeExtract 4840 0
-            4843:         163 Load 165(s3D)
-            4844:175(f16vec3) Load 177(f16c3)
-            4845:175(f16vec3) Load 1433(f16dPdxy3)
-            4846:175(f16vec3) Load 1433(f16dPdxy3)
-            4847:6(float16_t) Load 4264(f16lodClamp)
-            4848:3102(ResType) ImageSparseSampleExplicitLod 4843 4844 Grad MinLod 4845 4846 4847
-            4849:  7(f16vec4) CompositeExtract 4848 1
-                              Store 4818(texel) 4849
-            4850:     47(int) CompositeExtract 4848 0
-            4851:         184 Load 186(sCube)
-            4852:  167(fvec3) Load 169(c3)
-            4853:  167(fvec3) Load 1425(dPdxy3)
-            4854:  167(fvec3) Load 1425(dPdxy3)
-            4855:   52(float) Load 4257(lodClamp)
-            4856:3102(ResType) ImageSparseSampleExplicitLod 4851 4852 Grad MinLod 4853 4854 4855
-            4857:  7(f16vec4) CompositeExtract 4856 1
-                              Store 4818(texel) 4857
-            4858:     47(int) CompositeExtract 4856 0
-            4859:         184 Load 186(sCube)
-            4860:175(f16vec3) Load 177(f16c3)
-            4861:175(f16vec3) Load 1433(f16dPdxy3)
-            4862:175(f16vec3) Load 1433(f16dPdxy3)
-            4863:6(float16_t) Load 4264(f16lodClamp)
-            4864:3102(ResType) ImageSparseSampleExplicitLod 4859 4860 Grad MinLod 4861 4862 4863
-            4865:  7(f16vec4) CompositeExtract 4864 1
-                              Store 4818(texel) 4865
-            4866:     47(int) CompositeExtract 4864 0
-            4867:         224 Load 226(s2DShadow)
-            4868:  167(fvec3) Load 169(c3)
-            4869:   53(fvec2) Load 1409(dPdxy2)
-            4870:   53(fvec2) Load 1409(dPdxy2)
-            4871:   52(float) Load 4257(lodClamp)
-            4872:    208(ptr) AccessChain 4818(texel) 207
-            4873:   52(float) CompositeExtract 4868 2
-            4874:3138(ResType) ImageSparseSampleDrefExplicitLod 4867 4868 4873 Grad MinLod 4869 4870 4871
-            4875:6(float16_t) CompositeExtract 4874 1
-                              Store 4872 4875
+     4828(texel):     64(ptr) Variable Function
+                              Store 4828(texel) 121
+            4829:         143 Load 145(s2D)
+            4830:   53(fvec2) Load 148(c2)
+            4831:   53(fvec2) Load 1409(dPdxy2)
+            4832:   53(fvec2) Load 1409(dPdxy2)
+            4833:   52(float) Load 4267(lodClamp)
+            4834:3102(ResType) ImageSparseSampleExplicitLod 4829 4830 Grad MinLod 4831 4832 4833
+            4835:  7(f16vec4) CompositeExtract 4834 1
+                              Store 4828(texel) 4835
+            4836:     47(int) CompositeExtract 4834 0
+            4837:         143 Load 145(s2D)
+            4838:154(f16vec2) Load 156(f16c2)
+            4839:154(f16vec2) Load 1417(f16dPdxy2)
+            4840:154(f16vec2) Load 1417(f16dPdxy2)
+            4841:6(float16_t) Load 4274(f16lodClamp)
+            4842:3102(ResType) ImageSparseSampleExplicitLod 4837 4838 Grad MinLod 4839 4840 4841
+            4843:  7(f16vec4) CompositeExtract 4842 1
+                              Store 4828(texel) 4843
+            4844:     47(int) CompositeExtract 4842 0
+            4845:         163 Load 165(s3D)
+            4846:  167(fvec3) Load 169(c3)
+            4847:  167(fvec3) Load 1425(dPdxy3)
+            4848:  167(fvec3) Load 1425(dPdxy3)
+            4849:   52(float) Load 4267(lodClamp)
+            4850:3102(ResType) ImageSparseSampleExplicitLod 4845 4846 Grad MinLod 4847 4848 4849
+            4851:  7(f16vec4) CompositeExtract 4850 1
+                              Store 4828(texel) 4851
+            4852:     47(int) CompositeExtract 4850 0
+            4853:         163 Load 165(s3D)
+            4854:175(f16vec3) Load 177(f16c3)
+            4855:175(f16vec3) Load 1433(f16dPdxy3)
+            4856:175(f16vec3) Load 1433(f16dPdxy3)
+            4857:6(float16_t) Load 4274(f16lodClamp)
+            4858:3102(ResType) ImageSparseSampleExplicitLod 4853 4854 Grad MinLod 4855 4856 4857
+            4859:  7(f16vec4) CompositeExtract 4858 1
+                              Store 4828(texel) 4859
+            4860:     47(int) CompositeExtract 4858 0
+            4861:         184 Load 186(sCube)
+            4862:  167(fvec3) Load 169(c3)
+            4863:  167(fvec3) Load 1425(dPdxy3)
+            4864:  167(fvec3) Load 1425(dPdxy3)
+            4865:   52(float) Load 4267(lodClamp)
+            4866:3102(ResType) ImageSparseSampleExplicitLod 4861 4862 Grad MinLod 4863 4864 4865
+            4867:  7(f16vec4) CompositeExtract 4866 1
+                              Store 4828(texel) 4867
+            4868:     47(int) CompositeExtract 4866 0
+            4869:         184 Load 186(sCube)
+            4870:175(f16vec3) Load 177(f16c3)
+            4871:175(f16vec3) Load 1433(f16dPdxy3)
+            4872:175(f16vec3) Load 1433(f16dPdxy3)
+            4873:6(float16_t) Load 4274(f16lodClamp)
+            4874:3102(ResType) ImageSparseSampleExplicitLod 4869 4870 Grad MinLod 4871 4872 4873
+            4875:  7(f16vec4) CompositeExtract 4874 1
+                              Store 4828(texel) 4875
             4876:     47(int) CompositeExtract 4874 0
             4877:         224 Load 226(s2DShadow)
-            4878:154(f16vec2) Load 156(f16c2)
-            4879:   52(float) Load 215(compare)
-            4880:154(f16vec2) Load 1417(f16dPdxy2)
-            4881:154(f16vec2) Load 1417(f16dPdxy2)
-            4882:6(float16_t) Load 4264(f16lodClamp)
-            4883:    208(ptr) AccessChain 4818(texel) 207
-            4884:3138(ResType) ImageSparseSampleDrefExplicitLod 4877 4878 4879 Grad MinLod 4880 4881 4882
+            4878:  167(fvec3) Load 169(c3)
+            4879:   53(fvec2) Load 1409(dPdxy2)
+            4880:   53(fvec2) Load 1409(dPdxy2)
+            4881:   52(float) Load 4267(lodClamp)
+            4882:    208(ptr) AccessChain 4828(texel) 207
+            4883:   52(float) CompositeExtract 4878 2
+            4884:3138(ResType) ImageSparseSampleDrefExplicitLod 4877 4878 4883 Grad MinLod 4879 4880 4881
             4885:6(float16_t) CompositeExtract 4884 1
-                              Store 4883 4885
+                              Store 4882 4885
             4886:     47(int) CompositeExtract 4884 0
-            4887:         245 Load 247(sCubeShadow)
-            4888:  249(fvec4) Load 251(c4)
-            4889:  167(fvec3) Load 1425(dPdxy3)
-            4890:  167(fvec3) Load 1425(dPdxy3)
-            4891:   52(float) Load 4257(lodClamp)
-            4892:    208(ptr) AccessChain 4818(texel) 207
-            4893:   52(float) CompositeExtract 4888 3
-            4894:3138(ResType) ImageSparseSampleDrefExplicitLod 4887 4888 4893 Grad MinLod 4889 4890 4891
+            4887:         224 Load 226(s2DShadow)
+            4888:154(f16vec2) Load 156(f16c2)
+            4889:   52(float) Load 215(compare)
+            4890:154(f16vec2) Load 1417(f16dPdxy2)
+            4891:154(f16vec2) Load 1417(f16dPdxy2)
+            4892:6(float16_t) Load 4274(f16lodClamp)
+            4893:    208(ptr) AccessChain 4828(texel) 207
+            4894:3138(ResType) ImageSparseSampleDrefExplicitLod 4887 4888 4889 Grad MinLod 4890 4891 4892
             4895:6(float16_t) CompositeExtract 4894 1
-                              Store 4892 4895
+                              Store 4893 4895
             4896:     47(int) CompositeExtract 4894 0
             4897:         245 Load 247(sCubeShadow)
-            4898:175(f16vec3) Load 177(f16c3)
-            4899:   52(float) Load 215(compare)
-            4900:175(f16vec3) Load 1433(f16dPdxy3)
-            4901:175(f16vec3) Load 1433(f16dPdxy3)
-            4902:6(float16_t) Load 4264(f16lodClamp)
-            4903:    208(ptr) AccessChain 4818(texel) 207
-            4904:3138(ResType) ImageSparseSampleDrefExplicitLod 4897 4898 4899 Grad MinLod 4900 4901 4902
+            4898:  249(fvec4) Load 251(c4)
+            4899:  167(fvec3) Load 1425(dPdxy3)
+            4900:  167(fvec3) Load 1425(dPdxy3)
+            4901:   52(float) Load 4267(lodClamp)
+            4902:    208(ptr) AccessChain 4828(texel) 207
+            4903:   52(float) CompositeExtract 4898 3
+            4904:3138(ResType) ImageSparseSampleDrefExplicitLod 4897 4898 4903 Grad MinLod 4899 4900 4901
             4905:6(float16_t) CompositeExtract 4904 1
-                              Store 4903 4905
+                              Store 4902 4905
             4906:     47(int) CompositeExtract 4904 0
-            4907:         284 Load 286(s2DArray)
-            4908:  167(fvec3) Load 169(c3)
-            4909:   53(fvec2) Load 1409(dPdxy2)
-            4910:   53(fvec2) Load 1409(dPdxy2)
-            4911:   52(float) Load 4257(lodClamp)
-            4912:3102(ResType) ImageSparseSampleExplicitLod 4907 4908 Grad MinLod 4909 4910 4911
-            4913:  7(f16vec4) CompositeExtract 4912 1
-                              Store 4818(texel) 4913
-            4914:     47(int) CompositeExtract 4912 0
-            4915:         284 Load 286(s2DArray)
-            4916:175(f16vec3) Load 177(f16c3)
-            4917:154(f16vec2) Load 1417(f16dPdxy2)
-            4918:154(f16vec2) Load 1417(f16dPdxy2)
-            4919:6(float16_t) Load 4264(f16lodClamp)
-            4920:3102(ResType) ImageSparseSampleExplicitLod 4915 4916 Grad MinLod 4917 4918 4919
-            4921:  7(f16vec4) CompositeExtract 4920 1
-                              Store 4818(texel) 4921
-            4922:     47(int) CompositeExtract 4920 0
-            4923:         337 Load 339(s2DArrayShadow)
-            4924:  249(fvec4) Load 251(c4)
-            4925:   53(fvec2) Load 1409(dPdxy2)
-            4926:   53(fvec2) Load 1409(dPdxy2)
-            4927:   52(float) Load 4257(lodClamp)
-            4928:    208(ptr) AccessChain 4818(texel) 207
-            4929:   52(float) CompositeExtract 4924 3
-            4930:3138(ResType) ImageSparseSampleDrefExplicitLod 4923 4924 4929 Grad MinLod 4925 4926 4927
-            4931:6(float16_t) CompositeExtract 4930 1
-                              Store 4928 4931
+            4907:         245 Load 247(sCubeShadow)
+            4908:175(f16vec3) Load 177(f16c3)
+            4909:   52(float) Load 215(compare)
+            4910:175(f16vec3) Load 1433(f16dPdxy3)
+            4911:175(f16vec3) Load 1433(f16dPdxy3)
+            4912:6(float16_t) Load 4274(f16lodClamp)
+            4913:    208(ptr) AccessChain 4828(texel) 207
+            4914:3138(ResType) ImageSparseSampleDrefExplicitLod 4907 4908 4909 Grad MinLod 4910 4911 4912
+            4915:6(float16_t) CompositeExtract 4914 1
+                              Store 4913 4915
+            4916:     47(int) CompositeExtract 4914 0
+            4917:         284 Load 286(s2DArray)
+            4918:  167(fvec3) Load 169(c3)
+            4919:   53(fvec2) Load 1409(dPdxy2)
+            4920:   53(fvec2) Load 1409(dPdxy2)
+            4921:   52(float) Load 4267(lodClamp)
+            4922:3102(ResType) ImageSparseSampleExplicitLod 4917 4918 Grad MinLod 4919 4920 4921
+            4923:  7(f16vec4) CompositeExtract 4922 1
+                              Store 4828(texel) 4923
+            4924:     47(int) CompositeExtract 4922 0
+            4925:         284 Load 286(s2DArray)
+            4926:175(f16vec3) Load 177(f16c3)
+            4927:154(f16vec2) Load 1417(f16dPdxy2)
+            4928:154(f16vec2) Load 1417(f16dPdxy2)
+            4929:6(float16_t) Load 4274(f16lodClamp)
+            4930:3102(ResType) ImageSparseSampleExplicitLod 4925 4926 Grad MinLod 4927 4928 4929
+            4931:  7(f16vec4) CompositeExtract 4930 1
+                              Store 4828(texel) 4931
             4932:     47(int) CompositeExtract 4930 0
             4933:         337 Load 339(s2DArrayShadow)
-            4934:175(f16vec3) Load 177(f16c3)
-            4935:   52(float) Load 215(compare)
-            4936:154(f16vec2) Load 1417(f16dPdxy2)
-            4937:154(f16vec2) Load 1417(f16dPdxy2)
-            4938:6(float16_t) Load 4264(f16lodClamp)
-            4939:    208(ptr) AccessChain 4818(texel) 207
-            4940:3138(ResType) ImageSparseSampleDrefExplicitLod 4933 4934 4935 Grad MinLod 4936 4937 4938
+            4934:  249(fvec4) Load 251(c4)
+            4935:   53(fvec2) Load 1409(dPdxy2)
+            4936:   53(fvec2) Load 1409(dPdxy2)
+            4937:   52(float) Load 4267(lodClamp)
+            4938:    208(ptr) AccessChain 4828(texel) 207
+            4939:   52(float) CompositeExtract 4934 3
+            4940:3138(ResType) ImageSparseSampleDrefExplicitLod 4933 4934 4939 Grad MinLod 4935 4936 4937
             4941:6(float16_t) CompositeExtract 4940 1
-                              Store 4939 4941
+                              Store 4938 4941
             4942:     47(int) CompositeExtract 4940 0
-            4943:         299 Load 301(sCubeArray)
-            4944:  249(fvec4) Load 251(c4)
-            4945:  167(fvec3) Load 1425(dPdxy3)
-            4946:  167(fvec3) Load 1425(dPdxy3)
-            4947:   52(float) Load 4257(lodClamp)
-            4948:3102(ResType) ImageSparseSampleExplicitLod 4943 4944 Grad MinLod 4945 4946 4947
-            4949:  7(f16vec4) CompositeExtract 4948 1
-                              Store 4818(texel) 4949
-            4950:     47(int) CompositeExtract 4948 0
-            4951:         299 Load 301(sCubeArray)
-            4952:  7(f16vec4) Load 309(f16c4)
-            4953:175(f16vec3) Load 1433(f16dPdxy3)
-            4954:175(f16vec3) Load 1433(f16dPdxy3)
-            4955:6(float16_t) Load 4264(f16lodClamp)
-            4956:3102(ResType) ImageSparseSampleExplicitLod 4951 4952 Grad MinLod 4953 4954 4955
-            4957:  7(f16vec4) CompositeExtract 4956 1
-                              Store 4818(texel) 4957
-            4958:     47(int) CompositeExtract 4956 0
-            4959:  7(f16vec4) Load 4818(texel)
-                              ReturnValue 4959
+            4943:         337 Load 339(s2DArrayShadow)
+            4944:175(f16vec3) Load 177(f16c3)
+            4945:   52(float) Load 215(compare)
+            4946:154(f16vec2) Load 1417(f16dPdxy2)
+            4947:154(f16vec2) Load 1417(f16dPdxy2)
+            4948:6(float16_t) Load 4274(f16lodClamp)
+            4949:    208(ptr) AccessChain 4828(texel) 207
+            4950:3138(ResType) ImageSparseSampleDrefExplicitLod 4943 4944 4945 Grad MinLod 4946 4947 4948
+            4951:6(float16_t) CompositeExtract 4950 1
+                              Store 4949 4951
+            4952:     47(int) CompositeExtract 4950 0
+            4953:         299 Load 301(sCubeArray)
+            4954:  249(fvec4) Load 251(c4)
+            4955:  167(fvec3) Load 1425(dPdxy3)
+            4956:  167(fvec3) Load 1425(dPdxy3)
+            4957:   52(float) Load 4267(lodClamp)
+            4958:3102(ResType) ImageSparseSampleExplicitLod 4953 4954 Grad MinLod 4955 4956 4957
+            4959:  7(f16vec4) CompositeExtract 4958 1
+                              Store 4828(texel) 4959
+            4960:     47(int) CompositeExtract 4958 0
+            4961:         299 Load 301(sCubeArray)
+            4962:  7(f16vec4) Load 309(f16c4)
+            4963:175(f16vec3) Load 1433(f16dPdxy3)
+            4964:175(f16vec3) Load 1433(f16dPdxy3)
+            4965:6(float16_t) Load 4274(f16lodClamp)
+            4966:3102(ResType) ImageSparseSampleExplicitLod 4961 4962 Grad MinLod 4963 4964 4965
+            4967:  7(f16vec4) CompositeExtract 4966 1
+                              Store 4828(texel) 4967
+            4968:     47(int) CompositeExtract 4966 0
+            4969:  7(f16vec4) Load 4828(texel)
+                              ReturnValue 4969
                               FunctionEnd
 109(testTextureGradClamp():  7(f16vec4) Function None 8
              110:             Label
-     4962(texel):     64(ptr) Variable Function
-                              Store 4962(texel) 121
-            4963:         123 Load 125(s1D)
-            4964:   52(float) Load 128(c1)
-            4965:   52(float) Load 1393(dPdxy1)
-            4966:   52(float) Load 1393(dPdxy1)
-            4967:   52(float) Load 4257(lodClamp)
-            4968:  7(f16vec4) ImageSampleExplicitLod 4963 4964 Grad MinLod 4965 4966 4967
-            4969:  7(f16vec4) Load 4962(texel)
-            4970:  7(f16vec4) FAdd 4969 4968
-                              Store 4962(texel) 4970
-            4971:         123 Load 125(s1D)
-            4972:6(float16_t) Load 135(f16c1)
-            4973:6(float16_t) Load 1401(f16dPdxy1)
-            4974:6(float16_t) Load 1401(f16dPdxy1)
-            4975:6(float16_t) Load 4264(f16lodClamp)
-            4976:  7(f16vec4) ImageSampleExplicitLod 4971 4972 Grad MinLod 4973 4974 4975
-            4977:  7(f16vec4) Load 4962(texel)
-            4978:  7(f16vec4) FAdd 4977 4976
-                              Store 4962(texel) 4978
-            4979:         143 Load 145(s2D)
-            4980:   53(fvec2) Load 148(c2)
-            4981:   53(fvec2) Load 1409(dPdxy2)
-            4982:   53(fvec2) Load 1409(dPdxy2)
-            4983:   52(float) Load 4257(lodClamp)
-            4984:  7(f16vec4) ImageSampleExplicitLod 4979 4980 Grad MinLod 4981 4982 4983
-            4985:  7(f16vec4) Load 4962(texel)
-            4986:  7(f16vec4) FAdd 4985 4984
-                              Store 4962(texel) 4986
-            4987:         143 Load 145(s2D)
-            4988:154(f16vec2) Load 156(f16c2)
-            4989:154(f16vec2) Load 1417(f16dPdxy2)
-            4990:154(f16vec2) Load 1417(f16dPdxy2)
-            4991:6(float16_t) Load 4264(f16lodClamp)
-            4992:  7(f16vec4) ImageSampleExplicitLod 4987 4988 Grad MinLod 4989 4990 4991
-            4993:  7(f16vec4) Load 4962(texel)
-            4994:  7(f16vec4) FAdd 4993 4992
-                              Store 4962(texel) 4994
-            4995:         163 Load 165(s3D)
-            4996:  167(fvec3) Load 169(c3)
-            4997:  167(fvec3) Load 1425(dPdxy3)
-            4998:  167(fvec3) Load 1425(dPdxy3)
-            4999:   52(float) Load 4257(lodClamp)
-            5000:  7(f16vec4) ImageSampleExplicitLod 4995 4996 Grad MinLod 4997 4998 4999
-            5001:  7(f16vec4) Load 4962(texel)
-            5002:  7(f16vec4) FAdd 5001 5000
-                              Store 4962(texel) 5002
-            5003:         163 Load 165(s3D)
-            5004:175(f16vec3) Load 177(f16c3)
-            5005:175(f16vec3) Load 1433(f16dPdxy3)
-            5006:175(f16vec3) Load 1433(f16dPdxy3)
-            5007:6(float16_t) Load 4264(f16lodClamp)
-            5008:  7(f16vec4) ImageSampleExplicitLod 5003 5004 Grad MinLod 5005 5006 5007
-            5009:  7(f16vec4) Load 4962(texel)
-            5010:  7(f16vec4) FAdd 5009 5008
-                              Store 4962(texel) 5010
-            5011:         184 Load 186(sCube)
-            5012:  167(fvec3) Load 169(c3)
-            5013:  167(fvec3) Load 1425(dPdxy3)
-            5014:  167(fvec3) Load 1425(dPdxy3)
-            5015:   52(float) Load 4257(lodClamp)
-            5016:  7(f16vec4) ImageSampleExplicitLod 5011 5012 Grad MinLod 5013 5014 5015
-            5017:  7(f16vec4) Load 4962(texel)
-            5018:  7(f16vec4) FAdd 5017 5016
-                              Store 4962(texel) 5018
-            5019:         184 Load 186(sCube)
-            5020:175(f16vec3) Load 177(f16c3)
-            5021:175(f16vec3) Load 1433(f16dPdxy3)
-            5022:175(f16vec3) Load 1433(f16dPdxy3)
-            5023:6(float16_t) Load 4264(f16lodClamp)
-            5024:  7(f16vec4) ImageSampleExplicitLod 5019 5020 Grad MinLod 5021 5022 5023
-            5025:  7(f16vec4) Load 4962(texel)
-            5026:  7(f16vec4) FAdd 5025 5024
-                              Store 4962(texel) 5026
-            5027:         199 Load 201(s1DShadow)
-            5028:  167(fvec3) Load 169(c3)
-            5029:   52(float) Load 1393(dPdxy1)
-            5030:   52(float) Load 1393(dPdxy1)
-            5031:   52(float) Load 4257(lodClamp)
-            5032:   52(float) CompositeExtract 5028 2
-            5033:6(float16_t) ImageSampleDrefExplicitLod 5027 5028 5032 Grad MinLod 5029 5030 5031
-            5034:    208(ptr) AccessChain 4962(texel) 207
-            5035:6(float16_t) Load 5034
-            5036:6(float16_t) FAdd 5035 5033
-            5037:    208(ptr) AccessChain 4962(texel) 207
-                              Store 5037 5036
-            5038:         199 Load 201(s1DShadow)
-            5039:154(f16vec2) Load 156(f16c2)
-            5040:   52(float) Load 215(compare)
-            5041:6(float16_t) Load 1401(f16dPdxy1)
-            5042:6(float16_t) Load 1401(f16dPdxy1)
-            5043:6(float16_t) Load 4264(f16lodClamp)
-            5044:6(float16_t) ImageSampleDrefExplicitLod 5038 5039 5040 Grad MinLod 5041 5042 5043
-            5045:    208(ptr) AccessChain 4962(texel) 207
-            5046:6(float16_t) Load 5045
-            5047:6(float16_t) FAdd 5046 5044
-            5048:    208(ptr) AccessChain 4962(texel) 207
-                              Store 5048 5047
-            5049:         224 Load 226(s2DShadow)
-            5050:  167(fvec3) Load 169(c3)
-            5051:   53(fvec2) Load 1409(dPdxy2)
-            5052:   53(fvec2) Load 1409(dPdxy2)
-            5053:   52(float) Load 4257(lodClamp)
-            5054:   52(float) CompositeExtract 5050 2
-            5055:6(float16_t) ImageSampleDrefExplicitLod 5049 5050 5054 Grad MinLod 5051 5052 5053
-            5056:    208(ptr) AccessChain 4962(texel) 207
-            5057:6(float16_t) Load 5056
-            5058:6(float16_t) FAdd 5057 5055
-            5059:    208(ptr) AccessChain 4962(texel) 207
-                              Store 5059 5058
-            5060:         224 Load 226(s2DShadow)
-            5061:154(f16vec2) Load 156(f16c2)
-            5062:   52(float) Load 215(compare)
-            5063:154(f16vec2) Load 1417(f16dPdxy2)
-            5064:154(f16vec2) Load 1417(f16dPdxy2)
-            5065:6(float16_t) Load 4264(f16lodClamp)
-            5066:6(float16_t) ImageSampleDrefExplicitLod 5060 5061 5062 Grad MinLod 5063 5064 5065
-            5067:    208(ptr) AccessChain 4962(texel) 207
-            5068:6(float16_t) Load 5067
-            5069:6(float16_t) FAdd 5068 5066
-            5070:    208(ptr) AccessChain 4962(texel) 207
-                              Store 5070 5069
-            5071:         245 Load 247(sCubeShadow)
-            5072:  249(fvec4) Load 251(c4)
-            5073:  167(fvec3) Load 1425(dPdxy3)
-            5074:  167(fvec3) Load 1425(dPdxy3)
-            5075:   52(float) Load 4257(lodClamp)
-            5076:   52(float) CompositeExtract 5072 3
-            5077:6(float16_t) ImageSampleDrefExplicitLod 5071 5072 5076 Grad MinLod 5073 5074 5075
-            5078:    208(ptr) AccessChain 4962(texel) 207
-            5079:6(float16_t) Load 5078
-            5080:6(float16_t) FAdd 5079 5077
-            5081:    208(ptr) AccessChain 4962(texel) 207
-                              Store 5081 5080
-            5082:         245 Load 247(sCubeShadow)
-            5083:175(f16vec3) Load 177(f16c3)
-            5084:   52(float) Load 215(compare)
-            5085:175(f16vec3) Load 1433(f16dPdxy3)
-            5086:175(f16vec3) Load 1433(f16dPdxy3)
-            5087:6(float16_t) Load 4264(f16lodClamp)
-            5088:6(float16_t) ImageSampleDrefExplicitLod 5082 5083 5084 Grad MinLod 5085 5086 5087
-            5089:    208(ptr) AccessChain 4962(texel) 207
-            5090:6(float16_t) Load 5089
-            5091:6(float16_t) FAdd 5090 5088
-            5092:    208(ptr) AccessChain 4962(texel) 207
-                              Store 5092 5091
-            5093:         269 Load 271(s1DArray)
-            5094:   53(fvec2) Load 148(c2)
-            5095:   52(float) Load 1393(dPdxy1)
-            5096:   52(float) Load 1393(dPdxy1)
-            5097:   52(float) Load 4257(lodClamp)
-            5098:  7(f16vec4) ImageSampleExplicitLod 5093 5094 Grad MinLod 5095 5096 5097
-            5099:  7(f16vec4) Load 4962(texel)
-            5100:  7(f16vec4) FAdd 5099 5098
-                              Store 4962(texel) 5100
-            5101:         269 Load 271(s1DArray)
-            5102:154(f16vec2) Load 156(f16c2)
-            5103:6(float16_t) Load 1401(f16dPdxy1)
-            5104:6(float16_t) Load 1401(f16dPdxy1)
-            5105:6(float16_t) Load 4264(f16lodClamp)
-            5106:  7(f16vec4) ImageSampleExplicitLod 5101 5102 Grad MinLod 5103 5104 5105
-            5107:  7(f16vec4) Load 4962(texel)
-            5108:  7(f16vec4) FAdd 5107 5106
-                              Store 4962(texel) 5108
-            5109:         284 Load 286(s2DArray)
-            5110:  167(fvec3) Load 169(c3)
-            5111:   53(fvec2) Load 1409(dPdxy2)
-            5112:   53(fvec2) Load 1409(dPdxy2)
-            5113:   52(float) Load 4257(lodClamp)
-            5114:  7(f16vec4) ImageSampleExplicitLod 5109 5110 Grad MinLod 5111 5112 5113
-            5115:  7(f16vec4) Load 4962(texel)
-            5116:  7(f16vec4) FAdd 5115 5114
-                              Store 4962(texel) 5116
-            5117:         284 Load 286(s2DArray)
-            5118:175(f16vec3) Load 177(f16c3)
-            5119:154(f16vec2) Load 1417(f16dPdxy2)
-            5120:154(f16vec2) Load 1417(f16dPdxy2)
-            5121:6(float16_t) Load 4264(f16lodClamp)
-            5122:  7(f16vec4) ImageSampleExplicitLod 5117 5118 Grad MinLod 5119 5120 5121
-            5123:  7(f16vec4) Load 4962(texel)
-            5124:  7(f16vec4) FAdd 5123 5122
-                              Store 4962(texel) 5124
-            5125:         316 Load 318(s1DArrayShadow)
-            5126:  167(fvec3) Load 169(c3)
-            5127:   52(float) Load 1393(dPdxy1)
-            5128:   52(float) Load 1393(dPdxy1)
-            5129:   52(float) Load 4257(lodClamp)
-            5130:   52(float) CompositeExtract 5126 2
-            5131:6(float16_t) ImageSampleDrefExplicitLod 5125 5126 5130 Grad MinLod 5127 5128 5129
-            5132:    208(ptr) AccessChain 4962(texel) 207
-            5133:6(float16_t) Load 5132
-            5134:6(float16_t) FAdd 5133 5131
-            5135:    208(ptr) AccessChain 4962(texel) 207
-                              Store 5135 5134
-            5136:         316 Load 318(s1DArrayShadow)
-            5137:154(f16vec2) Load 156(f16c2)
-            5138:   52(float) Load 215(compare)
-            5139:6(float16_t) Load 1401(f16dPdxy1)
-            5140:6(float16_t) Load 1401(f16dPdxy1)
-            5141:6(float16_t) Load 4264(f16lodClamp)
-            5142:6(float16_t) ImageSampleDrefExplicitLod 5136 5137 5138 Grad MinLod 5139 5140 5141
-            5143:    208(ptr) AccessChain 4962(texel) 207
-            5144:6(float16_t) Load 5143
-            5145:6(float16_t) FAdd 5144 5142
-            5146:    208(ptr) AccessChain 4962(texel) 207
-                              Store 5146 5145
-            5147:         337 Load 339(s2DArrayShadow)
-            5148:  249(fvec4) Load 251(c4)
-            5149:   53(fvec2) Load 1409(dPdxy2)
-            5150:   53(fvec2) Load 1409(dPdxy2)
-            5151:   52(float) Load 4257(lodClamp)
-            5152:   52(float) CompositeExtract 5148 3
-            5153:6(float16_t) ImageSampleDrefExplicitLod 5147 5148 5152 Grad MinLod 5149 5150 5151
-            5154:    208(ptr) AccessChain 4962(texel) 207
-            5155:6(float16_t) Load 5154
-            5156:6(float16_t) FAdd 5155 5153
-            5157:    208(ptr) AccessChain 4962(texel) 207
-                              Store 5157 5156
-            5158:         337 Load 339(s2DArrayShadow)
-            5159:175(f16vec3) Load 177(f16c3)
-            5160:   52(float) Load 215(compare)
-            5161:154(f16vec2) Load 1417(f16dPdxy2)
-            5162:154(f16vec2) Load 1417(f16dPdxy2)
-            5163:6(float16_t) Load 4264(f16lodClamp)
-            5164:6(float16_t) ImageSampleDrefExplicitLod 5158 5159 5160 Grad MinLod 5161 5162 5163
-            5165:    208(ptr) AccessChain 4962(texel) 207
-            5166:6(float16_t) Load 5165
-            5167:6(float16_t) FAdd 5166 5164
-            5168:    208(ptr) AccessChain 4962(texel) 207
-                              Store 5168 5167
-            5169:         299 Load 301(sCubeArray)
-            5170:  249(fvec4) Load 251(c4)
-            5171:  167(fvec3) Load 1425(dPdxy3)
-            5172:  167(fvec3) Load 1425(dPdxy3)
-            5173:   52(float) Load 4257(lodClamp)
-            5174:  7(f16vec4) ImageSampleExplicitLod 5169 5170 Grad MinLod 5171 5172 5173
-            5175:  7(f16vec4) Load 4962(texel)
-            5176:  7(f16vec4) FAdd 5175 5174
-                              Store 4962(texel) 5176
-            5177:         299 Load 301(sCubeArray)
-            5178:  7(f16vec4) Load 309(f16c4)
-            5179:175(f16vec3) Load 1433(f16dPdxy3)
-            5180:175(f16vec3) Load 1433(f16dPdxy3)
-            5181:6(float16_t) Load 4264(f16lodClamp)
-            5182:  7(f16vec4) ImageSampleExplicitLod 5177 5178 Grad MinLod 5179 5180 5181
-            5183:  7(f16vec4) Load 4962(texel)
-            5184:  7(f16vec4) FAdd 5183 5182
-                              Store 4962(texel) 5184
-            5185:  7(f16vec4) Load 4962(texel)
-                              ReturnValue 5185
+     4972(texel):     64(ptr) Variable Function
+                              Store 4972(texel) 121
+            4973:         123 Load 125(s1D)
+            4974:   52(float) Load 128(c1)
+            4975:   52(float) Load 1393(dPdxy1)
+            4976:   52(float) Load 1393(dPdxy1)
+            4977:   52(float) Load 4267(lodClamp)
+            4978:  7(f16vec4) ImageSampleExplicitLod 4973 4974 Grad MinLod 4975 4976 4977
+            4979:  7(f16vec4) Load 4972(texel)
+            4980:  7(f16vec4) FAdd 4979 4978
+                              Store 4972(texel) 4980
+            4981:         123 Load 125(s1D)
+            4982:6(float16_t) Load 135(f16c1)
+            4983:6(float16_t) Load 1401(f16dPdxy1)
+            4984:6(float16_t) Load 1401(f16dPdxy1)
+            4985:6(float16_t) Load 4274(f16lodClamp)
+            4986:  7(f16vec4) ImageSampleExplicitLod 4981 4982 Grad MinLod 4983 4984 4985
+            4987:  7(f16vec4) Load 4972(texel)
+            4988:  7(f16vec4) FAdd 4987 4986
+                              Store 4972(texel) 4988
+            4989:         143 Load 145(s2D)
+            4990:   53(fvec2) Load 148(c2)
+            4991:   53(fvec2) Load 1409(dPdxy2)
+            4992:   53(fvec2) Load 1409(dPdxy2)
+            4993:   52(float) Load 4267(lodClamp)
+            4994:  7(f16vec4) ImageSampleExplicitLod 4989 4990 Grad MinLod 4991 4992 4993
+            4995:  7(f16vec4) Load 4972(texel)
+            4996:  7(f16vec4) FAdd 4995 4994
+                              Store 4972(texel) 4996
+            4997:         143 Load 145(s2D)
+            4998:154(f16vec2) Load 156(f16c2)
+            4999:154(f16vec2) Load 1417(f16dPdxy2)
+            5000:154(f16vec2) Load 1417(f16dPdxy2)
+            5001:6(float16_t) Load 4274(f16lodClamp)
+            5002:  7(f16vec4) ImageSampleExplicitLod 4997 4998 Grad MinLod 4999 5000 5001
+            5003:  7(f16vec4) Load 4972(texel)
+            5004:  7(f16vec4) FAdd 5003 5002
+                              Store 4972(texel) 5004
+            5005:         163 Load 165(s3D)
+            5006:  167(fvec3) Load 169(c3)
+            5007:  167(fvec3) Load 1425(dPdxy3)
+            5008:  167(fvec3) Load 1425(dPdxy3)
+            5009:   52(float) Load 4267(lodClamp)
+            5010:  7(f16vec4) ImageSampleExplicitLod 5005 5006 Grad MinLod 5007 5008 5009
+            5011:  7(f16vec4) Load 4972(texel)
+            5012:  7(f16vec4) FAdd 5011 5010
+                              Store 4972(texel) 5012
+            5013:         163 Load 165(s3D)
+            5014:175(f16vec3) Load 177(f16c3)
+            5015:175(f16vec3) Load 1433(f16dPdxy3)
+            5016:175(f16vec3) Load 1433(f16dPdxy3)
+            5017:6(float16_t) Load 4274(f16lodClamp)
+            5018:  7(f16vec4) ImageSampleExplicitLod 5013 5014 Grad MinLod 5015 5016 5017
+            5019:  7(f16vec4) Load 4972(texel)
+            5020:  7(f16vec4) FAdd 5019 5018
+                              Store 4972(texel) 5020
+            5021:         184 Load 186(sCube)
+            5022:  167(fvec3) Load 169(c3)
+            5023:  167(fvec3) Load 1425(dPdxy3)
+            5024:  167(fvec3) Load 1425(dPdxy3)
+            5025:   52(float) Load 4267(lodClamp)
+            5026:  7(f16vec4) ImageSampleExplicitLod 5021 5022 Grad MinLod 5023 5024 5025
+            5027:  7(f16vec4) Load 4972(texel)
+            5028:  7(f16vec4) FAdd 5027 5026
+                              Store 4972(texel) 5028
+            5029:         184 Load 186(sCube)
+            5030:175(f16vec3) Load 177(f16c3)
+            5031:175(f16vec3) Load 1433(f16dPdxy3)
+            5032:175(f16vec3) Load 1433(f16dPdxy3)
+            5033:6(float16_t) Load 4274(f16lodClamp)
+            5034:  7(f16vec4) ImageSampleExplicitLod 5029 5030 Grad MinLod 5031 5032 5033
+            5035:  7(f16vec4) Load 4972(texel)
+            5036:  7(f16vec4) FAdd 5035 5034
+                              Store 4972(texel) 5036
+            5037:         199 Load 201(s1DShadow)
+            5038:  167(fvec3) Load 169(c3)
+            5039:   52(float) Load 1393(dPdxy1)
+            5040:   52(float) Load 1393(dPdxy1)
+            5041:   52(float) Load 4267(lodClamp)
+            5042:   52(float) CompositeExtract 5038 2
+            5043:6(float16_t) ImageSampleDrefExplicitLod 5037 5038 5042 Grad MinLod 5039 5040 5041
+            5044:    208(ptr) AccessChain 4972(texel) 207
+            5045:6(float16_t) Load 5044
+            5046:6(float16_t) FAdd 5045 5043
+            5047:    208(ptr) AccessChain 4972(texel) 207
+                              Store 5047 5046
+            5048:         199 Load 201(s1DShadow)
+            5049:154(f16vec2) Load 156(f16c2)
+            5050:   52(float) Load 215(compare)
+            5051:6(float16_t) Load 1401(f16dPdxy1)
+            5052:6(float16_t) Load 1401(f16dPdxy1)
+            5053:6(float16_t) Load 4274(f16lodClamp)
+            5054:6(float16_t) ImageSampleDrefExplicitLod 5048 5049 5050 Grad MinLod 5051 5052 5053
+            5055:    208(ptr) AccessChain 4972(texel) 207
+            5056:6(float16_t) Load 5055
+            5057:6(float16_t) FAdd 5056 5054
+            5058:    208(ptr) AccessChain 4972(texel) 207
+                              Store 5058 5057
+            5059:         224 Load 226(s2DShadow)
+            5060:  167(fvec3) Load 169(c3)
+            5061:   53(fvec2) Load 1409(dPdxy2)
+            5062:   53(fvec2) Load 1409(dPdxy2)
+            5063:   52(float) Load 4267(lodClamp)
+            5064:   52(float) CompositeExtract 5060 2
+            5065:6(float16_t) ImageSampleDrefExplicitLod 5059 5060 5064 Grad MinLod 5061 5062 5063
+            5066:    208(ptr) AccessChain 4972(texel) 207
+            5067:6(float16_t) Load 5066
+            5068:6(float16_t) FAdd 5067 5065
+            5069:    208(ptr) AccessChain 4972(texel) 207
+                              Store 5069 5068
+            5070:         224 Load 226(s2DShadow)
+            5071:154(f16vec2) Load 156(f16c2)
+            5072:   52(float) Load 215(compare)
+            5073:154(f16vec2) Load 1417(f16dPdxy2)
+            5074:154(f16vec2) Load 1417(f16dPdxy2)
+            5075:6(float16_t) Load 4274(f16lodClamp)
+            5076:6(float16_t) ImageSampleDrefExplicitLod 5070 5071 5072 Grad MinLod 5073 5074 5075
+            5077:    208(ptr) AccessChain 4972(texel) 207
+            5078:6(float16_t) Load 5077
+            5079:6(float16_t) FAdd 5078 5076
+            5080:    208(ptr) AccessChain 4972(texel) 207
+                              Store 5080 5079
+            5081:         245 Load 247(sCubeShadow)
+            5082:  249(fvec4) Load 251(c4)
+            5083:  167(fvec3) Load 1425(dPdxy3)
+            5084:  167(fvec3) Load 1425(dPdxy3)
+            5085:   52(float) Load 4267(lodClamp)
+            5086:   52(float) CompositeExtract 5082 3
+            5087:6(float16_t) ImageSampleDrefExplicitLod 5081 5082 5086 Grad MinLod 5083 5084 5085
+            5088:    208(ptr) AccessChain 4972(texel) 207
+            5089:6(float16_t) Load 5088
+            5090:6(float16_t) FAdd 5089 5087
+            5091:    208(ptr) AccessChain 4972(texel) 207
+                              Store 5091 5090
+            5092:         245 Load 247(sCubeShadow)
+            5093:175(f16vec3) Load 177(f16c3)
+            5094:   52(float) Load 215(compare)
+            5095:175(f16vec3) Load 1433(f16dPdxy3)
+            5096:175(f16vec3) Load 1433(f16dPdxy3)
+            5097:6(float16_t) Load 4274(f16lodClamp)
+            5098:6(float16_t) ImageSampleDrefExplicitLod 5092 5093 5094 Grad MinLod 5095 5096 5097
+            5099:    208(ptr) AccessChain 4972(texel) 207
+            5100:6(float16_t) Load 5099
+            5101:6(float16_t) FAdd 5100 5098
+            5102:    208(ptr) AccessChain 4972(texel) 207
+                              Store 5102 5101
+            5103:         269 Load 271(s1DArray)
+            5104:   53(fvec2) Load 148(c2)
+            5105:   52(float) Load 1393(dPdxy1)
+            5106:   52(float) Load 1393(dPdxy1)
+            5107:   52(float) Load 4267(lodClamp)
+            5108:  7(f16vec4) ImageSampleExplicitLod 5103 5104 Grad MinLod 5105 5106 5107
+            5109:  7(f16vec4) Load 4972(texel)
+            5110:  7(f16vec4) FAdd 5109 5108
+                              Store 4972(texel) 5110
+            5111:         269 Load 271(s1DArray)
+            5112:154(f16vec2) Load 156(f16c2)
+            5113:6(float16_t) Load 1401(f16dPdxy1)
+            5114:6(float16_t) Load 1401(f16dPdxy1)
+            5115:6(float16_t) Load 4274(f16lodClamp)
+            5116:  7(f16vec4) ImageSampleExplicitLod 5111 5112 Grad MinLod 5113 5114 5115
+            5117:  7(f16vec4) Load 4972(texel)
+            5118:  7(f16vec4) FAdd 5117 5116
+                              Store 4972(texel) 5118
+            5119:         284 Load 286(s2DArray)
+            5120:  167(fvec3) Load 169(c3)
+            5121:   53(fvec2) Load 1409(dPdxy2)
+            5122:   53(fvec2) Load 1409(dPdxy2)
+            5123:   52(float) Load 4267(lodClamp)
+            5124:  7(f16vec4) ImageSampleExplicitLod 5119 5120 Grad MinLod 5121 5122 5123
+            5125:  7(f16vec4) Load 4972(texel)
+            5126:  7(f16vec4) FAdd 5125 5124
+                              Store 4972(texel) 5126
+            5127:         284 Load 286(s2DArray)
+            5128:175(f16vec3) Load 177(f16c3)
+            5129:154(f16vec2) Load 1417(f16dPdxy2)
+            5130:154(f16vec2) Load 1417(f16dPdxy2)
+            5131:6(float16_t) Load 4274(f16lodClamp)
+            5132:  7(f16vec4) ImageSampleExplicitLod 5127 5128 Grad MinLod 5129 5130 5131
+            5133:  7(f16vec4) Load 4972(texel)
+            5134:  7(f16vec4) FAdd 5133 5132
+                              Store 4972(texel) 5134
+            5135:         316 Load 318(s1DArrayShadow)
+            5136:  167(fvec3) Load 169(c3)
+            5137:   52(float) Load 1393(dPdxy1)
+            5138:   52(float) Load 1393(dPdxy1)
+            5139:   52(float) Load 4267(lodClamp)
+            5140:   52(float) CompositeExtract 5136 2
+            5141:6(float16_t) ImageSampleDrefExplicitLod 5135 5136 5140 Grad MinLod 5137 5138 5139
+            5142:    208(ptr) AccessChain 4972(texel) 207
+            5143:6(float16_t) Load 5142
+            5144:6(float16_t) FAdd 5143 5141
+            5145:    208(ptr) AccessChain 4972(texel) 207
+                              Store 5145 5144
+            5146:         316 Load 318(s1DArrayShadow)
+            5147:154(f16vec2) Load 156(f16c2)
+            5148:   52(float) Load 215(compare)
+            5149:6(float16_t) Load 1401(f16dPdxy1)
+            5150:6(float16_t) Load 1401(f16dPdxy1)
+            5151:6(float16_t) Load 4274(f16lodClamp)
+            5152:6(float16_t) ImageSampleDrefExplicitLod 5146 5147 5148 Grad MinLod 5149 5150 5151
+            5153:    208(ptr) AccessChain 4972(texel) 207
+            5154:6(float16_t) Load 5153
+            5155:6(float16_t) FAdd 5154 5152
+            5156:    208(ptr) AccessChain 4972(texel) 207
+                              Store 5156 5155
+            5157:         337 Load 339(s2DArrayShadow)
+            5158:  249(fvec4) Load 251(c4)
+            5159:   53(fvec2) Load 1409(dPdxy2)
+            5160:   53(fvec2) Load 1409(dPdxy2)
+            5161:   52(float) Load 4267(lodClamp)
+            5162:   52(float) CompositeExtract 5158 3
+            5163:6(float16_t) ImageSampleDrefExplicitLod 5157 5158 5162 Grad MinLod 5159 5160 5161
+            5164:    208(ptr) AccessChain 4972(texel) 207
+            5165:6(float16_t) Load 5164
+            5166:6(float16_t) FAdd 5165 5163
+            5167:    208(ptr) AccessChain 4972(texel) 207
+                              Store 5167 5166
+            5168:         337 Load 339(s2DArrayShadow)
+            5169:175(f16vec3) Load 177(f16c3)
+            5170:   52(float) Load 215(compare)
+            5171:154(f16vec2) Load 1417(f16dPdxy2)
+            5172:154(f16vec2) Load 1417(f16dPdxy2)
+            5173:6(float16_t) Load 4274(f16lodClamp)
+            5174:6(float16_t) ImageSampleDrefExplicitLod 5168 5169 5170 Grad MinLod 5171 5172 5173
+            5175:    208(ptr) AccessChain 4972(texel) 207
+            5176:6(float16_t) Load 5175
+            5177:6(float16_t) FAdd 5176 5174
+            5178:    208(ptr) AccessChain 4972(texel) 207
+                              Store 5178 5177
+            5179:         299 Load 301(sCubeArray)
+            5180:  249(fvec4) Load 251(c4)
+            5181:  167(fvec3) Load 1425(dPdxy3)
+            5182:  167(fvec3) Load 1425(dPdxy3)
+            5183:   52(float) Load 4267(lodClamp)
+            5184:  7(f16vec4) ImageSampleExplicitLod 5179 5180 Grad MinLod 5181 5182 5183
+            5185:  7(f16vec4) Load 4972(texel)
+            5186:  7(f16vec4) FAdd 5185 5184
+                              Store 4972(texel) 5186
+            5187:         299 Load 301(sCubeArray)
+            5188:  7(f16vec4) Load 309(f16c4)
+            5189:175(f16vec3) Load 1433(f16dPdxy3)
+            5190:175(f16vec3) Load 1433(f16dPdxy3)
+            5191:6(float16_t) Load 4274(f16lodClamp)
+            5192:  7(f16vec4) ImageSampleExplicitLod 5187 5188 Grad MinLod 5189 5190 5191
+            5193:  7(f16vec4) Load 4972(texel)
+            5194:  7(f16vec4) FAdd 5193 5192
+                              Store 4972(texel) 5194
+            5195:  7(f16vec4) Load 4972(texel)
+                              ReturnValue 5195
                               FunctionEnd
 111(testSparseTextureGradOffsetClamp():  7(f16vec4) Function None 8
              112:             Label
-     5188(texel):     64(ptr) Variable Function
-                              Store 5188(texel) 121
-            5189:         143 Load 145(s2D)
-            5190:   53(fvec2) Load 148(c2)
-            5191:   53(fvec2) Load 1409(dPdxy2)
-            5192:   53(fvec2) Load 1409(dPdxy2)
-            5193:   52(float) Load 4257(lodClamp)
-            5194:3102(ResType) ImageSparseSampleExplicitLod 5189 5190 Grad ConstOffset MinLod 5191 5192 722 5193
-            5195:  7(f16vec4) CompositeExtract 5194 1
-                              Store 5188(texel) 5195
-            5196:     47(int) CompositeExtract 5194 0
-            5197:         143 Load 145(s2D)
-            5198:154(f16vec2) Load 156(f16c2)
-            5199:154(f16vec2) Load 1417(f16dPdxy2)
-            5200:154(f16vec2) Load 1417(f16dPdxy2)
-            5201:6(float16_t) Load 4264(f16lodClamp)
-            5202:3102(ResType) ImageSparseSampleExplicitLod 5197 5198 Grad ConstOffset MinLod 5199 5200 722 5201
-            5203:  7(f16vec4) CompositeExtract 5202 1
-                              Store 5188(texel) 5203
-            5204:     47(int) CompositeExtract 5202 0
-            5205:         163 Load 165(s3D)
-            5206:  167(fvec3) Load 169(c3)
-            5207:  167(fvec3) Load 1425(dPdxy3)
-            5208:  167(fvec3) Load 1425(dPdxy3)
-            5209:   52(float) Load 4257(lodClamp)
-            5210:3102(ResType) ImageSparseSampleExplicitLod 5205 5206 Grad ConstOffset MinLod 5207 5208 735 5209
-            5211:  7(f16vec4) CompositeExtract 5210 1
-                              Store 5188(texel) 5211
-            5212:     47(int) CompositeExtract 5210 0
-            5213:         163 Load 165(s3D)
-            5214:175(f16vec3) Load 177(f16c3)
-            5215:175(f16vec3) Load 1433(f16dPdxy3)
-            5216:175(f16vec3) Load 1433(f16dPdxy3)
-            5217:6(float16_t) Load 4264(f16lodClamp)
-            5218:3102(ResType) ImageSparseSampleExplicitLod 5213 5214 Grad ConstOffset MinLod 5215 5216 735 5217
-            5219:  7(f16vec4) CompositeExtract 5218 1
-                              Store 5188(texel) 5219
-            5220:     47(int) CompositeExtract 5218 0
-            5221:         224 Load 226(s2DShadow)
-            5222:  167(fvec3) Load 169(c3)
-            5223:   53(fvec2) Load 1409(dPdxy2)
-            5224:   53(fvec2) Load 1409(dPdxy2)
-            5225:   52(float) Load 4257(lodClamp)
-            5226:    208(ptr) AccessChain 5188(texel) 207
-            5227:   52(float) CompositeExtract 5222 2
-            5228:3138(ResType) ImageSparseSampleDrefExplicitLod 5221 5222 5227 Grad ConstOffset MinLod 5223 5224 722 5225
-            5229:6(float16_t) CompositeExtract 5228 1
-                              Store 5226 5229
+     5198(texel):     64(ptr) Variable Function
+                              Store 5198(texel) 121
+            5199:         143 Load 145(s2D)
+            5200:   53(fvec2) Load 148(c2)
+            5201:   53(fvec2) Load 1409(dPdxy2)
+            5202:   53(fvec2) Load 1409(dPdxy2)
+            5203:   52(float) Load 4267(lodClamp)
+            5204:3102(ResType) ImageSparseSampleExplicitLod 5199 5200 Grad ConstOffset MinLod 5201 5202 722 5203
+            5205:  7(f16vec4) CompositeExtract 5204 1
+                              Store 5198(texel) 5205
+            5206:     47(int) CompositeExtract 5204 0
+            5207:         143 Load 145(s2D)
+            5208:154(f16vec2) Load 156(f16c2)
+            5209:154(f16vec2) Load 1417(f16dPdxy2)
+            5210:154(f16vec2) Load 1417(f16dPdxy2)
+            5211:6(float16_t) Load 4274(f16lodClamp)
+            5212:3102(ResType) ImageSparseSampleExplicitLod 5207 5208 Grad ConstOffset MinLod 5209 5210 722 5211
+            5213:  7(f16vec4) CompositeExtract 5212 1
+                              Store 5198(texel) 5213
+            5214:     47(int) CompositeExtract 5212 0
+            5215:         163 Load 165(s3D)
+            5216:  167(fvec3) Load 169(c3)
+            5217:  167(fvec3) Load 1425(dPdxy3)
+            5218:  167(fvec3) Load 1425(dPdxy3)
+            5219:   52(float) Load 4267(lodClamp)
+            5220:3102(ResType) ImageSparseSampleExplicitLod 5215 5216 Grad ConstOffset MinLod 5217 5218 735 5219
+            5221:  7(f16vec4) CompositeExtract 5220 1
+                              Store 5198(texel) 5221
+            5222:     47(int) CompositeExtract 5220 0
+            5223:         163 Load 165(s3D)
+            5224:175(f16vec3) Load 177(f16c3)
+            5225:175(f16vec3) Load 1433(f16dPdxy3)
+            5226:175(f16vec3) Load 1433(f16dPdxy3)
+            5227:6(float16_t) Load 4274(f16lodClamp)
+            5228:3102(ResType) ImageSparseSampleExplicitLod 5223 5224 Grad ConstOffset MinLod 5225 5226 735 5227
+            5229:  7(f16vec4) CompositeExtract 5228 1
+                              Store 5198(texel) 5229
             5230:     47(int) CompositeExtract 5228 0
             5231:         224 Load 226(s2DShadow)
-            5232:154(f16vec2) Load 156(f16c2)
-            5233:   52(float) Load 215(compare)
-            5234:154(f16vec2) Load 1417(f16dPdxy2)
-            5235:154(f16vec2) Load 1417(f16dPdxy2)
-            5236:6(float16_t) Load 4264(f16lodClamp)
-            5237:    208(ptr) AccessChain 5188(texel) 207
-            5238:3138(ResType) ImageSparseSampleDrefExplicitLod 5231 5232 5233 Grad ConstOffset MinLod 5234 5235 722 5236
+            5232:  167(fvec3) Load 169(c3)
+            5233:   53(fvec2) Load 1409(dPdxy2)
+            5234:   53(fvec2) Load 1409(dPdxy2)
+            5235:   52(float) Load 4267(lodClamp)
+            5236:    208(ptr) AccessChain 5198(texel) 207
+            5237:   52(float) CompositeExtract 5232 2
+            5238:3138(ResType) ImageSparseSampleDrefExplicitLod 5231 5232 5237 Grad ConstOffset MinLod 5233 5234 722 5235
             5239:6(float16_t) CompositeExtract 5238 1
-                              Store 5237 5239
+                              Store 5236 5239
             5240:     47(int) CompositeExtract 5238 0
-            5241:         284 Load 286(s2DArray)
-            5242:  167(fvec3) Load 169(c3)
-            5243:   53(fvec2) Load 1409(dPdxy2)
-            5244:   53(fvec2) Load 1409(dPdxy2)
-            5245:   52(float) Load 4257(lodClamp)
-            5246:3102(ResType) ImageSparseSampleExplicitLod 5241 5242 Grad ConstOffset MinLod 5243 5244 722 5245
-            5247:  7(f16vec4) CompositeExtract 5246 1
-                              Store 5188(texel) 5247
-            5248:     47(int) CompositeExtract 5246 0
-            5249:         284 Load 286(s2DArray)
-            5250:175(f16vec3) Load 177(f16c3)
-            5251:154(f16vec2) Load 1417(f16dPdxy2)
-            5252:154(f16vec2) Load 1417(f16dPdxy2)
-            5253:6(float16_t) Load 4264(f16lodClamp)
-            5254:3102(ResType) ImageSparseSampleExplicitLod 5249 5250 Grad ConstOffset MinLod 5251 5252 722 5253
-            5255:  7(f16vec4) CompositeExtract 5254 1
-                              Store 5188(texel) 5255
-            5256:     47(int) CompositeExtract 5254 0
-            5257:         337 Load 339(s2DArrayShadow)
-            5258:  249(fvec4) Load 251(c4)
-            5259:   53(fvec2) Load 1409(dPdxy2)
-            5260:   53(fvec2) Load 1409(dPdxy2)
-            5261:   52(float) Load 4257(lodClamp)
-            5262:    208(ptr) AccessChain 5188(texel) 207
-            5263:   52(float) CompositeExtract 5258 3
-            5264:3138(ResType) ImageSparseSampleDrefExplicitLod 5257 5258 5263 Grad ConstOffset MinLod 5259 5260 722 5261
-            5265:6(float16_t) CompositeExtract 5264 1
-                              Store 5262 5265
+            5241:         224 Load 226(s2DShadow)
+            5242:154(f16vec2) Load 156(f16c2)
+            5243:   52(float) Load 215(compare)
+            5244:154(f16vec2) Load 1417(f16dPdxy2)
+            5245:154(f16vec2) Load 1417(f16dPdxy2)
+            5246:6(float16_t) Load 4274(f16lodClamp)
+            5247:    208(ptr) AccessChain 5198(texel) 207
+            5248:3138(ResType) ImageSparseSampleDrefExplicitLod 5241 5242 5243 Grad ConstOffset MinLod 5244 5245 722 5246
+            5249:6(float16_t) CompositeExtract 5248 1
+                              Store 5247 5249
+            5250:     47(int) CompositeExtract 5248 0
+            5251:         284 Load 286(s2DArray)
+            5252:  167(fvec3) Load 169(c3)
+            5253:   53(fvec2) Load 1409(dPdxy2)
+            5254:   53(fvec2) Load 1409(dPdxy2)
+            5255:   52(float) Load 4267(lodClamp)
+            5256:3102(ResType) ImageSparseSampleExplicitLod 5251 5252 Grad ConstOffset MinLod 5253 5254 722 5255
+            5257:  7(f16vec4) CompositeExtract 5256 1
+                              Store 5198(texel) 5257
+            5258:     47(int) CompositeExtract 5256 0
+            5259:         284 Load 286(s2DArray)
+            5260:175(f16vec3) Load 177(f16c3)
+            5261:154(f16vec2) Load 1417(f16dPdxy2)
+            5262:154(f16vec2) Load 1417(f16dPdxy2)
+            5263:6(float16_t) Load 4274(f16lodClamp)
+            5264:3102(ResType) ImageSparseSampleExplicitLod 5259 5260 Grad ConstOffset MinLod 5261 5262 722 5263
+            5265:  7(f16vec4) CompositeExtract 5264 1
+                              Store 5198(texel) 5265
             5266:     47(int) CompositeExtract 5264 0
             5267:         337 Load 339(s2DArrayShadow)
-            5268:175(f16vec3) Load 177(f16c3)
-            5269:   52(float) Load 215(compare)
-            5270:154(f16vec2) Load 1417(f16dPdxy2)
-            5271:154(f16vec2) Load 1417(f16dPdxy2)
-            5272:6(float16_t) Load 4264(f16lodClamp)
-            5273:    208(ptr) AccessChain 5188(texel) 207
-            5274:3138(ResType) ImageSparseSampleDrefExplicitLod 5267 5268 5269 Grad ConstOffset MinLod 5270 5271 722 5272
+            5268:  249(fvec4) Load 251(c4)
+            5269:   53(fvec2) Load 1409(dPdxy2)
+            5270:   53(fvec2) Load 1409(dPdxy2)
+            5271:   52(float) Load 4267(lodClamp)
+            5272:    208(ptr) AccessChain 5198(texel) 207
+            5273:   52(float) CompositeExtract 5268 3
+            5274:3138(ResType) ImageSparseSampleDrefExplicitLod 5267 5268 5273 Grad ConstOffset MinLod 5269 5270 722 5271
             5275:6(float16_t) CompositeExtract 5274 1
-                              Store 5273 5275
+                              Store 5272 5275
             5276:     47(int) CompositeExtract 5274 0
-            5277:  7(f16vec4) Load 5188(texel)
-                              ReturnValue 5277
+            5277:         337 Load 339(s2DArrayShadow)
+            5278:175(f16vec3) Load 177(f16c3)
+            5279:   52(float) Load 215(compare)
+            5280:154(f16vec2) Load 1417(f16dPdxy2)
+            5281:154(f16vec2) Load 1417(f16dPdxy2)
+            5282:6(float16_t) Load 4274(f16lodClamp)
+            5283:    208(ptr) AccessChain 5198(texel) 207
+            5284:3138(ResType) ImageSparseSampleDrefExplicitLod 5277 5278 5279 Grad ConstOffset MinLod 5280 5281 722 5282
+            5285:6(float16_t) CompositeExtract 5284 1
+                              Store 5283 5285
+            5286:     47(int) CompositeExtract 5284 0
+            5287:  7(f16vec4) Load 5198(texel)
+                              ReturnValue 5287
                               FunctionEnd
 113(testTextureGradOffsetClamp():  7(f16vec4) Function None 8
              114:             Label
-     5280(texel):     64(ptr) Variable Function
-                              Store 5280(texel) 121
-            5281:         123 Load 125(s1D)
-            5282:   52(float) Load 128(c1)
-            5283:   52(float) Load 1393(dPdxy1)
-            5284:   52(float) Load 1393(dPdxy1)
-            5285:   52(float) Load 4257(lodClamp)
-            5286:  7(f16vec4) ImageSampleExplicitLod 5281 5282 Grad ConstOffset MinLod 5283 5284 709 5285
-            5287:  7(f16vec4) Load 5280(texel)
-            5288:  7(f16vec4) FAdd 5287 5286
-                              Store 5280(texel) 5288
-            5289:         123 Load 125(s1D)
-            5290:6(float16_t) Load 135(f16c1)
-            5291:6(float16_t) Load 1401(f16dPdxy1)
-            5292:6(float16_t) Load 1401(f16dPdxy1)
-            5293:6(float16_t) Load 4264(f16lodClamp)
-            5294:  7(f16vec4) ImageSampleExplicitLod 5289 5290 Grad ConstOffset MinLod 5291 5292 709 5293
-            5295:  7(f16vec4) Load 5280(texel)
-            5296:  7(f16vec4) FAdd 5295 5294
-                              Store 5280(texel) 5296
-            5297:         143 Load 145(s2D)
-            5298:   53(fvec2) Load 148(c2)
-            5299:   53(fvec2) Load 1409(dPdxy2)
-            5300:   53(fvec2) Load 1409(dPdxy2)
-            5301:   52(float) Load 4257(lodClamp)
-            5302:  7(f16vec4) ImageSampleExplicitLod 5297 5298 Grad ConstOffset MinLod 5299 5300 722 5301
-            5303:  7(f16vec4) Load 5280(texel)
-            5304:  7(f16vec4) FAdd 5303 5302
-                              Store 5280(texel) 5304
-            5305:         143 Load 145(s2D)
-            5306:154(f16vec2) Load 156(f16c2)
-            5307:154(f16vec2) Load 1417(f16dPdxy2)
-            5308:154(f16vec2) Load 1417(f16dPdxy2)
-            5309:6(float16_t) Load 4264(f16lodClamp)
-            5310:  7(f16vec4) ImageSampleExplicitLod 5305 5306 Grad ConstOffset MinLod 5307 5308 722 5309
-            5311:  7(f16vec4) Load 5280(texel)
-            5312:  7(f16vec4) FAdd 5311 5310
-                              Store 5280(texel) 5312
-            5313:         163 Load 165(s3D)
-            5314:  167(fvec3) Load 169(c3)
-            5315:  167(fvec3) Load 1425(dPdxy3)
-            5316:  167(fvec3) Load 1425(dPdxy3)
-            5317:   52(float) Load 4257(lodClamp)
-            5318:  7(f16vec4) ImageSampleExplicitLod 5313 5314 Grad ConstOffset MinLod 5315 5316 735 5317
-            5319:  7(f16vec4) Load 5280(texel)
-            5320:  7(f16vec4) FAdd 5319 5318
-                              Store 5280(texel) 5320
-            5321:         163 Load 165(s3D)
-            5322:175(f16vec3) Load 177(f16c3)
-            5323:175(f16vec3) Load 1433(f16dPdxy3)
-            5324:175(f16vec3) Load 1433(f16dPdxy3)
-            5325:6(float16_t) Load 4264(f16lodClamp)
-            5326:  7(f16vec4) ImageSampleExplicitLod 5321 5322 Grad ConstOffset MinLod 5323 5324 735 5325
-            5327:  7(f16vec4) Load 5280(texel)
-            5328:  7(f16vec4) FAdd 5327 5326
-                              Store 5280(texel) 5328
-            5329:         199 Load 201(s1DShadow)
-            5330:  167(fvec3) Load 169(c3)
-            5331:   52(float) Load 1393(dPdxy1)
-            5332:   52(float) Load 1393(dPdxy1)
-            5333:   52(float) Load 4257(lodClamp)
-            5334:   52(float) CompositeExtract 5330 2
-            5335:6(float16_t) ImageSampleDrefExplicitLod 5329 5330 5334 Grad ConstOffset MinLod 5331 5332 709 5333
-            5336:    208(ptr) AccessChain 5280(texel) 207
-            5337:6(float16_t) Load 5336
-            5338:6(float16_t) FAdd 5337 5335
-            5339:    208(ptr) AccessChain 5280(texel) 207
-                              Store 5339 5338
-            5340:         199 Load 201(s1DShadow)
-            5341:154(f16vec2) Load 156(f16c2)
-            5342:   52(float) Load 215(compare)
-            5343:6(float16_t) Load 1401(f16dPdxy1)
-            5344:6(float16_t) Load 1401(f16dPdxy1)
-            5345:6(float16_t) Load 4264(f16lodClamp)
-            5346:6(float16_t) ImageSampleDrefExplicitLod 5340 5341 5342 Grad ConstOffset MinLod 5343 5344 709 5345
-            5347:    208(ptr) AccessChain 5280(texel) 207
-            5348:6(float16_t) Load 5347
-            5349:6(float16_t) FAdd 5348 5346
-            5350:    208(ptr) AccessChain 5280(texel) 207
-                              Store 5350 5349
-            5351:         224 Load 226(s2DShadow)
-            5352:  167(fvec3) Load 169(c3)
-            5353:   53(fvec2) Load 1409(dPdxy2)
-            5354:   53(fvec2) Load 1409(dPdxy2)
-            5355:   52(float) Load 4257(lodClamp)
-            5356:   52(float) CompositeExtract 5352 2
-            5357:6(float16_t) ImageSampleDrefExplicitLod 5351 5352 5356 Grad ConstOffset MinLod 5353 5354 722 5355
-            5358:    208(ptr) AccessChain 5280(texel) 207
-            5359:6(float16_t) Load 5358
-            5360:6(float16_t) FAdd 5359 5357
-            5361:    208(ptr) AccessChain 5280(texel) 207
-                              Store 5361 5360
-            5362:         224 Load 226(s2DShadow)
-            5363:154(f16vec2) Load 156(f16c2)
-            5364:   52(float) Load 215(compare)
-            5365:154(f16vec2) Load 1417(f16dPdxy2)
-            5366:154(f16vec2) Load 1417(f16dPdxy2)
-            5367:6(float16_t) Load 4264(f16lodClamp)
-            5368:6(float16_t) ImageSampleDrefExplicitLod 5362 5363 5364 Grad ConstOffset MinLod 5365 5366 722 5367
-            5369:    208(ptr) AccessChain 5280(texel) 207
-            5370:6(float16_t) Load 5369
-            5371:6(float16_t) FAdd 5370 5368
-            5372:    208(ptr) AccessChain 5280(texel) 207
-                              Store 5372 5371
-            5373:         269 Load 271(s1DArray)
-            5374:   53(fvec2) Load 148(c2)
-            5375:   52(float) Load 1393(dPdxy1)
-            5376:   52(float) Load 1393(dPdxy1)
-            5377:   52(float) Load 4257(lodClamp)
-            5378:  7(f16vec4) ImageSampleExplicitLod 5373 5374 Grad ConstOffset MinLod 5375 5376 709 5377
-            5379:  7(f16vec4) Load 5280(texel)
-            5380:  7(f16vec4) FAdd 5379 5378
-                              Store 5280(texel) 5380
-            5381:         269 Load 271(s1DArray)
-            5382:154(f16vec2) Load 156(f16c2)
-            5383:6(float16_t) Load 1401(f16dPdxy1)
-            5384:6(float16_t) Load 1401(f16dPdxy1)
-            5385:6(float16_t) Load 4264(f16lodClamp)
-            5386:  7(f16vec4) ImageSampleExplicitLod 5381 5382 Grad ConstOffset MinLod 5383 5384 709 5385
-            5387:  7(f16vec4) Load 5280(texel)
-            5388:  7(f16vec4) FAdd 5387 5386
-                              Store 5280(texel) 5388
-            5389:         284 Load 286(s2DArray)
-            5390:  167(fvec3) Load 169(c3)
-            5391:   53(fvec2) Load 1409(dPdxy2)
-            5392:   53(fvec2) Load 1409(dPdxy2)
-            5393:   52(float) Load 4257(lodClamp)
-            5394:  7(f16vec4) ImageSampleExplicitLod 5389 5390 Grad ConstOffset MinLod 5391 5392 722 5393
-            5395:  7(f16vec4) Load 5280(texel)
-            5396:  7(f16vec4) FAdd 5395 5394
-                              Store 5280(texel) 5396
-            5397:         284 Load 286(s2DArray)
-            5398:175(f16vec3) Load 177(f16c3)
-            5399:154(f16vec2) Load 1417(f16dPdxy2)
-            5400:154(f16vec2) Load 1417(f16dPdxy2)
-            5401:6(float16_t) Load 4264(f16lodClamp)
-            5402:  7(f16vec4) ImageSampleExplicitLod 5397 5398 Grad ConstOffset MinLod 5399 5400 722 5401
-            5403:  7(f16vec4) Load 5280(texel)
-            5404:  7(f16vec4) FAdd 5403 5402
-                              Store 5280(texel) 5404
-            5405:         316 Load 318(s1DArrayShadow)
-            5406:  167(fvec3) Load 169(c3)
-            5407:   52(float) Load 1393(dPdxy1)
-            5408:   52(float) Load 1393(dPdxy1)
-            5409:   52(float) Load 4257(lodClamp)
-            5410:   52(float) CompositeExtract 5406 2
-            5411:6(float16_t) ImageSampleDrefExplicitLod 5405 5406 5410 Grad ConstOffset MinLod 5407 5408 709 5409
-            5412:    208(ptr) AccessChain 5280(texel) 207
-            5413:6(float16_t) Load 5412
-            5414:6(float16_t) FAdd 5413 5411
-            5415:    208(ptr) AccessChain 5280(texel) 207
-                              Store 5415 5414
-            5416:         316 Load 318(s1DArrayShadow)
-            5417:154(f16vec2) Load 156(f16c2)
-            5418:   52(float) Load 215(compare)
-            5419:6(float16_t) Load 1401(f16dPdxy1)
-            5420:6(float16_t) Load 1401(f16dPdxy1)
-            5421:6(float16_t) Load 4264(f16lodClamp)
-            5422:6(float16_t) ImageSampleDrefExplicitLod 5416 5417 5418 Grad ConstOffset MinLod 5419 5420 709 5421
-            5423:    208(ptr) AccessChain 5280(texel) 207
-            5424:6(float16_t) Load 5423
-            5425:6(float16_t) FAdd 5424 5422
-            5426:    208(ptr) AccessChain 5280(texel) 207
-                              Store 5426 5425
-            5427:         337 Load 339(s2DArrayShadow)
-            5428:  249(fvec4) Load 251(c4)
-            5429:   53(fvec2) Load 1409(dPdxy2)
-            5430:   53(fvec2) Load 1409(dPdxy2)
-            5431:   52(float) Load 4257(lodClamp)
-            5432:   52(float) CompositeExtract 5428 3
-            5433:6(float16_t) ImageSampleDrefExplicitLod 5427 5428 5432 Grad ConstOffset MinLod 5429 5430 722 5431
-            5434:    208(ptr) AccessChain 5280(texel) 207
-            5435:6(float16_t) Load 5434
-            5436:6(float16_t) FAdd 5435 5433
-            5437:    208(ptr) AccessChain 5280(texel) 207
-                              Store 5437 5436
-            5438:         337 Load 339(s2DArrayShadow)
-            5439:175(f16vec3) Load 177(f16c3)
-            5440:   52(float) Load 215(compare)
-            5441:154(f16vec2) Load 1417(f16dPdxy2)
-            5442:154(f16vec2) Load 1417(f16dPdxy2)
-            5443:6(float16_t) Load 4264(f16lodClamp)
-            5444:6(float16_t) ImageSampleDrefExplicitLod 5438 5439 5440 Grad ConstOffset MinLod 5441 5442 722 5443
-            5445:    208(ptr) AccessChain 5280(texel) 207
-            5446:6(float16_t) Load 5445
-            5447:6(float16_t) FAdd 5446 5444
-            5448:    208(ptr) AccessChain 5280(texel) 207
-                              Store 5448 5447
-            5449:  7(f16vec4) Load 5280(texel)
-                              ReturnValue 5449
+     5290(texel):     64(ptr) Variable Function
+                              Store 5290(texel) 121
+            5291:         123 Load 125(s1D)
+            5292:   52(float) Load 128(c1)
+            5293:   52(float) Load 1393(dPdxy1)
+            5294:   52(float) Load 1393(dPdxy1)
+            5295:   52(float) Load 4267(lodClamp)
+            5296:  7(f16vec4) ImageSampleExplicitLod 5291 5292 Grad ConstOffset MinLod 5293 5294 709 5295
+            5297:  7(f16vec4) Load 5290(texel)
+            5298:  7(f16vec4) FAdd 5297 5296
+                              Store 5290(texel) 5298
+            5299:         123 Load 125(s1D)
+            5300:6(float16_t) Load 135(f16c1)
+            5301:6(float16_t) Load 1401(f16dPdxy1)
+            5302:6(float16_t) Load 1401(f16dPdxy1)
+            5303:6(float16_t) Load 4274(f16lodClamp)
+            5304:  7(f16vec4) ImageSampleExplicitLod 5299 5300 Grad ConstOffset MinLod 5301 5302 709 5303
+            5305:  7(f16vec4) Load 5290(texel)
+            5306:  7(f16vec4) FAdd 5305 5304
+                              Store 5290(texel) 5306
+            5307:         143 Load 145(s2D)
+            5308:   53(fvec2) Load 148(c2)
+            5309:   53(fvec2) Load 1409(dPdxy2)
+            5310:   53(fvec2) Load 1409(dPdxy2)
+            5311:   52(float) Load 4267(lodClamp)
+            5312:  7(f16vec4) ImageSampleExplicitLod 5307 5308 Grad ConstOffset MinLod 5309 5310 722 5311
+            5313:  7(f16vec4) Load 5290(texel)
+            5314:  7(f16vec4) FAdd 5313 5312
+                              Store 5290(texel) 5314
+            5315:         143 Load 145(s2D)
+            5316:154(f16vec2) Load 156(f16c2)
+            5317:154(f16vec2) Load 1417(f16dPdxy2)
+            5318:154(f16vec2) Load 1417(f16dPdxy2)
+            5319:6(float16_t) Load 4274(f16lodClamp)
+            5320:  7(f16vec4) ImageSampleExplicitLod 5315 5316 Grad ConstOffset MinLod 5317 5318 722 5319
+            5321:  7(f16vec4) Load 5290(texel)
+            5322:  7(f16vec4) FAdd 5321 5320
+                              Store 5290(texel) 5322
+            5323:         163 Load 165(s3D)
+            5324:  167(fvec3) Load 169(c3)
+            5325:  167(fvec3) Load 1425(dPdxy3)
+            5326:  167(fvec3) Load 1425(dPdxy3)
+            5327:   52(float) Load 4267(lodClamp)
+            5328:  7(f16vec4) ImageSampleExplicitLod 5323 5324 Grad ConstOffset MinLod 5325 5326 735 5327
+            5329:  7(f16vec4) Load 5290(texel)
+            5330:  7(f16vec4) FAdd 5329 5328
+                              Store 5290(texel) 5330
+            5331:         163 Load 165(s3D)
+            5332:175(f16vec3) Load 177(f16c3)
+            5333:175(f16vec3) Load 1433(f16dPdxy3)
+            5334:175(f16vec3) Load 1433(f16dPdxy3)
+            5335:6(float16_t) Load 4274(f16lodClamp)
+            5336:  7(f16vec4) ImageSampleExplicitLod 5331 5332 Grad ConstOffset MinLod 5333 5334 735 5335
+            5337:  7(f16vec4) Load 5290(texel)
+            5338:  7(f16vec4) FAdd 5337 5336
+                              Store 5290(texel) 5338
+            5339:         199 Load 201(s1DShadow)
+            5340:  167(fvec3) Load 169(c3)
+            5341:   52(float) Load 1393(dPdxy1)
+            5342:   52(float) Load 1393(dPdxy1)
+            5343:   52(float) Load 4267(lodClamp)
+            5344:   52(float) CompositeExtract 5340 2
+            5345:6(float16_t) ImageSampleDrefExplicitLod 5339 5340 5344 Grad ConstOffset MinLod 5341 5342 709 5343
+            5346:    208(ptr) AccessChain 5290(texel) 207
+            5347:6(float16_t) Load 5346
+            5348:6(float16_t) FAdd 5347 5345
+            5349:    208(ptr) AccessChain 5290(texel) 207
+                              Store 5349 5348
+            5350:         199 Load 201(s1DShadow)
+            5351:154(f16vec2) Load 156(f16c2)
+            5352:   52(float) Load 215(compare)
+            5353:6(float16_t) Load 1401(f16dPdxy1)
+            5354:6(float16_t) Load 1401(f16dPdxy1)
+            5355:6(float16_t) Load 4274(f16lodClamp)
+            5356:6(float16_t) ImageSampleDrefExplicitLod 5350 5351 5352 Grad ConstOffset MinLod 5353 5354 709 5355
+            5357:    208(ptr) AccessChain 5290(texel) 207
+            5358:6(float16_t) Load 5357
+            5359:6(float16_t) FAdd 5358 5356
+            5360:    208(ptr) AccessChain 5290(texel) 207
+                              Store 5360 5359
+            5361:         224 Load 226(s2DShadow)
+            5362:  167(fvec3) Load 169(c3)
+            5363:   53(fvec2) Load 1409(dPdxy2)
+            5364:   53(fvec2) Load 1409(dPdxy2)
+            5365:   52(float) Load 4267(lodClamp)
+            5366:   52(float) CompositeExtract 5362 2
+            5367:6(float16_t) ImageSampleDrefExplicitLod 5361 5362 5366 Grad ConstOffset MinLod 5363 5364 722 5365
+            5368:    208(ptr) AccessChain 5290(texel) 207
+            5369:6(float16_t) Load 5368
+            5370:6(float16_t) FAdd 5369 5367
+            5371:    208(ptr) AccessChain 5290(texel) 207
+                              Store 5371 5370
+            5372:         224 Load 226(s2DShadow)
+            5373:154(f16vec2) Load 156(f16c2)
+            5374:   52(float) Load 215(compare)
+            5375:154(f16vec2) Load 1417(f16dPdxy2)
+            5376:154(f16vec2) Load 1417(f16dPdxy2)
+            5377:6(float16_t) Load 4274(f16lodClamp)
+            5378:6(float16_t) ImageSampleDrefExplicitLod 5372 5373 5374 Grad ConstOffset MinLod 5375 5376 722 5377
+            5379:    208(ptr) AccessChain 5290(texel) 207
+            5380:6(float16_t) Load 5379
+            5381:6(float16_t) FAdd 5380 5378
+            5382:    208(ptr) AccessChain 5290(texel) 207
+                              Store 5382 5381
+            5383:         269 Load 271(s1DArray)
+            5384:   53(fvec2) Load 148(c2)
+            5385:   52(float) Load 1393(dPdxy1)
+            5386:   52(float) Load 1393(dPdxy1)
+            5387:   52(float) Load 4267(lodClamp)
+            5388:  7(f16vec4) ImageSampleExplicitLod 5383 5384 Grad ConstOffset MinLod 5385 5386 709 5387
+            5389:  7(f16vec4) Load 5290(texel)
+            5390:  7(f16vec4) FAdd 5389 5388
+                              Store 5290(texel) 5390
+            5391:         269 Load 271(s1DArray)
+            5392:154(f16vec2) Load 156(f16c2)
+            5393:6(float16_t) Load 1401(f16dPdxy1)
+            5394:6(float16_t) Load 1401(f16dPdxy1)
+            5395:6(float16_t) Load 4274(f16lodClamp)
+            5396:  7(f16vec4) ImageSampleExplicitLod 5391 5392 Grad ConstOffset MinLod 5393 5394 709 5395
+            5397:  7(f16vec4) Load 5290(texel)
+            5398:  7(f16vec4) FAdd 5397 5396
+                              Store 5290(texel) 5398
+            5399:         284 Load 286(s2DArray)
+            5400:  167(fvec3) Load 169(c3)
+            5401:   53(fvec2) Load 1409(dPdxy2)
+            5402:   53(fvec2) Load 1409(dPdxy2)
+            5403:   52(float) Load 4267(lodClamp)
+            5404:  7(f16vec4) ImageSampleExplicitLod 5399 5400 Grad ConstOffset MinLod 5401 5402 722 5403
+            5405:  7(f16vec4) Load 5290(texel)
+            5406:  7(f16vec4) FAdd 5405 5404
+                              Store 5290(texel) 5406
+            5407:         284 Load 286(s2DArray)
+            5408:175(f16vec3) Load 177(f16c3)
+            5409:154(f16vec2) Load 1417(f16dPdxy2)
+            5410:154(f16vec2) Load 1417(f16dPdxy2)
+            5411:6(float16_t) Load 4274(f16lodClamp)
+            5412:  7(f16vec4) ImageSampleExplicitLod 5407 5408 Grad ConstOffset MinLod 5409 5410 722 5411
+            5413:  7(f16vec4) Load 5290(texel)
+            5414:  7(f16vec4) FAdd 5413 5412
+                              Store 5290(texel) 5414
+            5415:         316 Load 318(s1DArrayShadow)
+            5416:  167(fvec3) Load 169(c3)
+            5417:   52(float) Load 1393(dPdxy1)
+            5418:   52(float) Load 1393(dPdxy1)
+            5419:   52(float) Load 4267(lodClamp)
+            5420:   52(float) CompositeExtract 5416 2
+            5421:6(float16_t) ImageSampleDrefExplicitLod 5415 5416 5420 Grad ConstOffset MinLod 5417 5418 709 5419
+            5422:    208(ptr) AccessChain 5290(texel) 207
+            5423:6(float16_t) Load 5422
+            5424:6(float16_t) FAdd 5423 5421
+            5425:    208(ptr) AccessChain 5290(texel) 207
+                              Store 5425 5424
+            5426:         316 Load 318(s1DArrayShadow)
+            5427:154(f16vec2) Load 156(f16c2)
+            5428:   52(float) Load 215(compare)
+            5429:6(float16_t) Load 1401(f16dPdxy1)
+            5430:6(float16_t) Load 1401(f16dPdxy1)
+            5431:6(float16_t) Load 4274(f16lodClamp)
+            5432:6(float16_t) ImageSampleDrefExplicitLod 5426 5427 5428 Grad ConstOffset MinLod 5429 5430 709 5431
+            5433:    208(ptr) AccessChain 5290(texel) 207
+            5434:6(float16_t) Load 5433
+            5435:6(float16_t) FAdd 5434 5432
+            5436:    208(ptr) AccessChain 5290(texel) 207
+                              Store 5436 5435
+            5437:         337 Load 339(s2DArrayShadow)
+            5438:  249(fvec4) Load 251(c4)
+            5439:   53(fvec2) Load 1409(dPdxy2)
+            5440:   53(fvec2) Load 1409(dPdxy2)
+            5441:   52(float) Load 4267(lodClamp)
+            5442:   52(float) CompositeExtract 5438 3
+            5443:6(float16_t) ImageSampleDrefExplicitLod 5437 5438 5442 Grad ConstOffset MinLod 5439 5440 722 5441
+            5444:    208(ptr) AccessChain 5290(texel) 207
+            5445:6(float16_t) Load 5444
+            5446:6(float16_t) FAdd 5445 5443
+            5447:    208(ptr) AccessChain 5290(texel) 207
+                              Store 5447 5446
+            5448:         337 Load 339(s2DArrayShadow)
+            5449:175(f16vec3) Load 177(f16c3)
+            5450:   52(float) Load 215(compare)
+            5451:154(f16vec2) Load 1417(f16dPdxy2)
+            5452:154(f16vec2) Load 1417(f16dPdxy2)
+            5453:6(float16_t) Load 4274(f16lodClamp)
+            5454:6(float16_t) ImageSampleDrefExplicitLod 5448 5449 5450 Grad ConstOffset MinLod 5451 5452 722 5453
+            5455:    208(ptr) AccessChain 5290(texel) 207
+            5456:6(float16_t) Load 5455
+            5457:6(float16_t) FAdd 5456 5454
+            5458:    208(ptr) AccessChain 5290(texel) 207
+                              Store 5458 5457
+            5459:  7(f16vec4) Load 5290(texel)
+                              ReturnValue 5459
                               FunctionEnd
 115(testCombinedTextureSampler():  7(f16vec4) Function None 8
              116:             Label
-     5452(texel):     64(ptr) Variable Function
-                              Store 5452(texel) 121
-            5455:         122 Load 5454(t1D)
-            5459:        5456 Load 5458(s)
-            5460:         123 SampledImage 5455 5459
-            5461:   52(float) Load 128(c1)
-            5462:  7(f16vec4) ImageSampleImplicitLod 5460 5461
-            5463:  7(f16vec4) Load 5452(texel)
-            5464:  7(f16vec4) FAdd 5463 5462
-                              Store 5452(texel) 5464
-            5465:         122 Load 5454(t1D)
-            5466:        5456 Load 5458(s)
-            5467:         123 SampledImage 5465 5466
-            5468:6(float16_t) Load 135(f16c1)
-            5469:6(float16_t) Load 137(f16bias)
-            5470:  7(f16vec4) ImageSampleImplicitLod 5467 5468 Bias 5469
-            5471:  7(f16vec4) Load 5452(texel)
-            5472:  7(f16vec4) FAdd 5471 5470
-                              Store 5452(texel) 5472
-            5475:         142 Load 5474(t2D)
-            5476:        5456 Load 5458(s)
-            5477:         143 SampledImage 5475 5476
-            5478:   53(fvec2) Load 148(c2)
-            5479:  7(f16vec4) ImageSampleImplicitLod 5477 5478
-            5480:  7(f16vec4) Load 5452(texel)
-            5481:  7(f16vec4) FAdd 5480 5479
-                              Store 5452(texel) 5481
-            5482:         142 Load 5474(t2D)
-            5483:        5456 Load 5458(s)
-            5484:         143 SampledImage 5482 5483
-            5485:154(f16vec2) Load 156(f16c2)
-            5486:6(float16_t) Load 137(f16bias)
-            5487:  7(f16vec4) ImageSampleImplicitLod 5484 5485 Bias 5486
-            5488:  7(f16vec4) Load 5452(texel)
-            5489:  7(f16vec4) FAdd 5488 5487
-                              Store 5452(texel) 5489
-            5492:         162 Load 5491(t3D)
-            5493:        5456 Load 5458(s)
-            5494:         163 SampledImage 5492 5493
-            5495:  167(fvec3) Load 169(c3)
-            5496:  7(f16vec4) ImageSampleImplicitLod 5494 5495
-            5497:  7(f16vec4) Load 5452(texel)
-            5498:  7(f16vec4) FAdd 5497 5496
-                              Store 5452(texel) 5498
-            5499:         162 Load 5491(t3D)
-            5500:        5456 Load 5458(s)
-            5501:         163 SampledImage 5499 5500
-            5502:175(f16vec3) Load 177(f16c3)
-            5503:6(float16_t) Load 137(f16bias)
-            5504:  7(f16vec4) ImageSampleImplicitLod 5501 5502 Bias 5503
-            5505:  7(f16vec4) Load 5452(texel)
-            5506:  7(f16vec4) FAdd 5505 5504
-                              Store 5452(texel) 5506
-            5509:         183 Load 5508(tCube)
-            5510:        5456 Load 5458(s)
-            5511:         184 SampledImage 5509 5510
-            5512:  167(fvec3) Load 169(c3)
-            5513:  7(f16vec4) ImageSampleImplicitLod 5511 5512
-            5514:  7(f16vec4) Load 5452(texel)
-            5515:  7(f16vec4) FAdd 5514 5513
-                              Store 5452(texel) 5515
-            5516:         183 Load 5508(tCube)
-            5517:        5456 Load 5458(s)
-            5518:         184 SampledImage 5516 5517
-            5519:175(f16vec3) Load 177(f16c3)
-            5520:6(float16_t) Load 137(f16bias)
-            5521:  7(f16vec4) ImageSampleImplicitLod 5518 5519 Bias 5520
-            5522:  7(f16vec4) Load 5452(texel)
-            5523:  7(f16vec4) FAdd 5522 5521
-                              Store 5452(texel) 5523
-            5524:         122 Load 5454(t1D)
-            5526:        5456 Load 5525(sShadow)
-            5527:         199 SampledImage 5524 5526
-            5528:  167(fvec3) Load 169(c3)
-            5529:   52(float) CompositeExtract 5528 2
-            5530:6(float16_t) ImageSampleDrefImplicitLod 5527 5528 5529
-            5531:    208(ptr) AccessChain 5452(texel) 207
-            5532:6(float16_t) Load 5531
-            5533:6(float16_t) FAdd 5532 5530
-            5534:    208(ptr) AccessChain 5452(texel) 207
-                              Store 5534 5533
-            5535:         122 Load 5454(t1D)
-            5536:        5456 Load 5525(sShadow)
-            5537:         199 SampledImage 5535 5536
-            5538:154(f16vec2) Load 156(f16c2)
-            5539:   52(float) Load 215(compare)
-            5540:6(float16_t) Load 137(f16bias)
-            5541:6(float16_t) ImageSampleDrefImplicitLod 5537 5538 5539 Bias 5540
-            5542:    208(ptr) AccessChain 5452(texel) 207
-            5543:6(float16_t) Load 5542
-            5544:6(float16_t) FAdd 5543 5541
-            5545:    208(ptr) AccessChain 5452(texel) 207
-                              Store 5545 5544
-            5546:         142 Load 5474(t2D)
-            5547:        5456 Load 5525(sShadow)
-            5548:         224 SampledImage 5546 5547
-            5549:  167(fvec3) Load 169(c3)
-            5550:   52(float) CompositeExtract 5549 2
-            5551:6(float16_t) ImageSampleDrefImplicitLod 5548 5549 5550
-            5552:    208(ptr) AccessChain 5452(texel) 207
+     5462(texel):     64(ptr) Variable Function
+                              Store 5462(texel) 121
+            5465:         122 Load 5464(t1D)
+            5469:        5466 Load 5468(s)
+            5470:         123 SampledImage 5465 5469
+            5471:   52(float) Load 128(c1)
+            5472:  7(f16vec4) ImageSampleImplicitLod 5470 5471
+            5473:  7(f16vec4) Load 5462(texel)
+            5474:  7(f16vec4) FAdd 5473 5472
+                              Store 5462(texel) 5474
+            5475:         122 Load 5464(t1D)
+            5476:        5466 Load 5468(s)
+            5477:         123 SampledImage 5475 5476
+            5478:6(float16_t) Load 135(f16c1)
+            5479:6(float16_t) Load 137(f16bias)
+            5480:  7(f16vec4) ImageSampleImplicitLod 5477 5478 Bias 5479
+            5481:  7(f16vec4) Load 5462(texel)
+            5482:  7(f16vec4) FAdd 5481 5480
+                              Store 5462(texel) 5482
+            5485:         142 Load 5484(t2D)
+            5486:        5466 Load 5468(s)
+            5487:         143 SampledImage 5485 5486
+            5488:   53(fvec2) Load 148(c2)
+            5489:  7(f16vec4) ImageSampleImplicitLod 5487 5488
+            5490:  7(f16vec4) Load 5462(texel)
+            5491:  7(f16vec4) FAdd 5490 5489
+                              Store 5462(texel) 5491
+            5492:         142 Load 5484(t2D)
+            5493:        5466 Load 5468(s)
+            5494:         143 SampledImage 5492 5493
+            5495:154(f16vec2) Load 156(f16c2)
+            5496:6(float16_t) Load 137(f16bias)
+            5497:  7(f16vec4) ImageSampleImplicitLod 5494 5495 Bias 5496
+            5498:  7(f16vec4) Load 5462(texel)
+            5499:  7(f16vec4) FAdd 5498 5497
+                              Store 5462(texel) 5499
+            5502:         162 Load 5501(t3D)
+            5503:        5466 Load 5468(s)
+            5504:         163 SampledImage 5502 5503
+            5505:  167(fvec3) Load 169(c3)
+            5506:  7(f16vec4) ImageSampleImplicitLod 5504 5505
+            5507:  7(f16vec4) Load 5462(texel)
+            5508:  7(f16vec4) FAdd 5507 5506
+                              Store 5462(texel) 5508
+            5509:         162 Load 5501(t3D)
+            5510:        5466 Load 5468(s)
+            5511:         163 SampledImage 5509 5510
+            5512:175(f16vec3) Load 177(f16c3)
+            5513:6(float16_t) Load 137(f16bias)
+            5514:  7(f16vec4) ImageSampleImplicitLod 5511 5512 Bias 5513
+            5515:  7(f16vec4) Load 5462(texel)
+            5516:  7(f16vec4) FAdd 5515 5514
+                              Store 5462(texel) 5516
+            5519:         183 Load 5518(tCube)
+            5520:        5466 Load 5468(s)
+            5521:         184 SampledImage 5519 5520
+            5522:  167(fvec3) Load 169(c3)
+            5523:  7(f16vec4) ImageSampleImplicitLod 5521 5522
+            5524:  7(f16vec4) Load 5462(texel)
+            5525:  7(f16vec4) FAdd 5524 5523
+                              Store 5462(texel) 5525
+            5526:         183 Load 5518(tCube)
+            5527:        5466 Load 5468(s)
+            5528:         184 SampledImage 5526 5527
+            5529:175(f16vec3) Load 177(f16c3)
+            5530:6(float16_t) Load 137(f16bias)
+            5531:  7(f16vec4) ImageSampleImplicitLod 5528 5529 Bias 5530
+            5532:  7(f16vec4) Load 5462(texel)
+            5533:  7(f16vec4) FAdd 5532 5531
+                              Store 5462(texel) 5533
+            5534:         122 Load 5464(t1D)
+            5536:        5466 Load 5535(sShadow)
+            5537:         199 SampledImage 5534 5536
+            5538:  167(fvec3) Load 169(c3)
+            5539:   52(float) CompositeExtract 5538 2
+            5540:6(float16_t) ImageSampleDrefImplicitLod 5537 5538 5539
+            5541:    208(ptr) AccessChain 5462(texel) 207
+            5542:6(float16_t) Load 5541
+            5543:6(float16_t) FAdd 5542 5540
+            5544:    208(ptr) AccessChain 5462(texel) 207
+                              Store 5544 5543
+            5545:         122 Load 5464(t1D)
+            5546:        5466 Load 5535(sShadow)
+            5547:         199 SampledImage 5545 5546
+            5548:154(f16vec2) Load 156(f16c2)
+            5549:   52(float) Load 215(compare)
+            5550:6(float16_t) Load 137(f16bias)
+            5551:6(float16_t) ImageSampleDrefImplicitLod 5547 5548 5549 Bias 5550
+            5552:    208(ptr) AccessChain 5462(texel) 207
             5553:6(float16_t) Load 5552
             5554:6(float16_t) FAdd 5553 5551
-            5555:    208(ptr) AccessChain 5452(texel) 207
+            5555:    208(ptr) AccessChain 5462(texel) 207
                               Store 5555 5554
-            5556:         142 Load 5474(t2D)
-            5557:        5456 Load 5525(sShadow)
+            5556:         142 Load 5484(t2D)
+            5557:        5466 Load 5535(sShadow)
             5558:         224 SampledImage 5556 5557
-            5559:154(f16vec2) Load 156(f16c2)
-            5560:   52(float) Load 215(compare)
-            5561:6(float16_t) Load 137(f16bias)
-            5562:6(float16_t) ImageSampleDrefImplicitLod 5558 5559 5560 Bias 5561
-            5563:    208(ptr) AccessChain 5452(texel) 207
-            5564:6(float16_t) Load 5563
-            5565:6(float16_t) FAdd 5564 5562
-            5566:    208(ptr) AccessChain 5452(texel) 207
-                              Store 5566 5565
-            5567:         183 Load 5508(tCube)
-            5568:        5456 Load 5525(sShadow)
-            5569:         245 SampledImage 5567 5568
-            5570:  249(fvec4) Load 251(c4)
-            5571:   52(float) CompositeExtract 5570 3
-            5572:6(float16_t) ImageSampleDrefImplicitLod 5569 5570 5571
-            5573:    208(ptr) AccessChain 5452(texel) 207
+            5559:  167(fvec3) Load 169(c3)
+            5560:   52(float) CompositeExtract 5559 2
+            5561:6(float16_t) ImageSampleDrefImplicitLod 5558 5559 5560
+            5562:    208(ptr) AccessChain 5462(texel) 207
+            5563:6(float16_t) Load 5562
+            5564:6(float16_t) FAdd 5563 5561
+            5565:    208(ptr) AccessChain 5462(texel) 207
+                              Store 5565 5564
+            5566:         142 Load 5484(t2D)
+            5567:        5466 Load 5535(sShadow)
+            5568:         224 SampledImage 5566 5567
+            5569:154(f16vec2) Load 156(f16c2)
+            5570:   52(float) Load 215(compare)
+            5571:6(float16_t) Load 137(f16bias)
+            5572:6(float16_t) ImageSampleDrefImplicitLod 5568 5569 5570 Bias 5571
+            5573:    208(ptr) AccessChain 5462(texel) 207
             5574:6(float16_t) Load 5573
             5575:6(float16_t) FAdd 5574 5572
-            5576:    208(ptr) AccessChain 5452(texel) 207
+            5576:    208(ptr) AccessChain 5462(texel) 207
                               Store 5576 5575
-            5577:         183 Load 5508(tCube)
-            5578:        5456 Load 5525(sShadow)
+            5577:         183 Load 5518(tCube)
+            5578:        5466 Load 5535(sShadow)
             5579:         245 SampledImage 5577 5578
-            5580:175(f16vec3) Load 177(f16c3)
-            5581:   52(float) Load 215(compare)
-            5582:6(float16_t) Load 137(f16bias)
-            5583:6(float16_t) ImageSampleDrefImplicitLod 5579 5580 5581 Bias 5582
-            5584:    208(ptr) AccessChain 5452(texel) 207
-            5585:6(float16_t) Load 5584
-            5586:6(float16_t) FAdd 5585 5583
-            5587:    208(ptr) AccessChain 5452(texel) 207
-                              Store 5587 5586
-            5590:         268 Load 5589(t1DArray)
-            5591:        5456 Load 5458(s)
-            5592:         269 SampledImage 5590 5591
-            5593:   53(fvec2) Load 148(c2)
-            5594:  7(f16vec4) ImageSampleImplicitLod 5592 5593
-            5595:  7(f16vec4) Load 5452(texel)
-            5596:  7(f16vec4) FAdd 5595 5594
-                              Store 5452(texel) 5596
-            5597:         268 Load 5589(t1DArray)
-            5598:        5456 Load 5458(s)
-            5599:         269 SampledImage 5597 5598
-            5600:154(f16vec2) Load 156(f16c2)
-            5601:6(float16_t) Load 137(f16bias)
-            5602:  7(f16vec4) ImageSampleImplicitLod 5599 5600 Bias 5601
-            5603:  7(f16vec4) Load 5452(texel)
-            5604:  7(f16vec4) FAdd 5603 5602
-                              Store 5452(texel) 5604
-            5607:         283 Load 5606(t2DArray)
-            5608:        5456 Load 5458(s)
-            5609:         284 SampledImage 5607 5608
-            5610:  167(fvec3) Load 169(c3)
-            5611:  7(f16vec4) ImageSampleImplicitLod 5609 5610
-            5612:  7(f16vec4) Load 5452(texel)
-            5613:  7(f16vec4) FAdd 5612 5611
-                              Store 5452(texel) 5613
-            5614:         283 Load 5606(t2DArray)
-            5615:        5456 Load 5458(s)
-            5616:         284 SampledImage 5614 5615
-            5617:175(f16vec3) Load 177(f16c3)
-            5618:6(float16_t) Load 137(f16bias)
-            5619:  7(f16vec4) ImageSampleImplicitLod 5616 5617 Bias 5618
-            5620:  7(f16vec4) Load 5452(texel)
-            5621:  7(f16vec4) FAdd 5620 5619
-                              Store 5452(texel) 5621
-            5624:         298 Load 5623(tCubeArray)
-            5625:        5456 Load 5458(s)
-            5626:         299 SampledImage 5624 5625
-            5627:  249(fvec4) Load 251(c4)
-            5628:  7(f16vec4) ImageSampleImplicitLod 5626 5627
-            5629:  7(f16vec4) Load 5452(texel)
-            5630:  7(f16vec4) FAdd 5629 5628
-                              Store 5452(texel) 5630
-            5631:         298 Load 5623(tCubeArray)
-            5632:        5456 Load 5458(s)
-            5633:         299 SampledImage 5631 5632
-            5634:  7(f16vec4) Load 309(f16c4)
-            5635:6(float16_t) Load 137(f16bias)
-            5636:  7(f16vec4) ImageSampleImplicitLod 5633 5634 Bias 5635
-            5637:  7(f16vec4) Load 5452(texel)
-            5638:  7(f16vec4) FAdd 5637 5636
-                              Store 5452(texel) 5638
-            5639:         268 Load 5589(t1DArray)
-            5640:        5456 Load 5525(sShadow)
-            5641:         316 SampledImage 5639 5640
-            5642:  167(fvec3) Load 169(c3)
-            5643:   52(float) CompositeExtract 5642 2
-            5644:6(float16_t) ImageSampleDrefImplicitLod 5641 5642 5643
-            5645:    208(ptr) AccessChain 5452(texel) 207
-            5646:6(float16_t) Load 5645
-            5647:6(float16_t) FAdd 5646 5644
-            5648:    208(ptr) AccessChain 5452(texel) 207
-                              Store 5648 5647
-            5649:         268 Load 5589(t1DArray)
-            5650:        5456 Load 5525(sShadow)
+            5580:  249(fvec4) Load 251(c4)
+            5581:   52(float) CompositeExtract 5580 3
+            5582:6(float16_t) ImageSampleDrefImplicitLod 5579 5580 5581
+            5583:    208(ptr) AccessChain 5462(texel) 207
+            5584:6(float16_t) Load 5583
+            5585:6(float16_t) FAdd 5584 5582
+            5586:    208(ptr) AccessChain 5462(texel) 207
+                              Store 5586 5585
+            5587:         183 Load 5518(tCube)
+            5588:        5466 Load 5535(sShadow)
+            5589:         245 SampledImage 5587 5588
+            5590:175(f16vec3) Load 177(f16c3)
+            5591:   52(float) Load 215(compare)
+            5592:6(float16_t) Load 137(f16bias)
+            5593:6(float16_t) ImageSampleDrefImplicitLod 5589 5590 5591 Bias 5592
+            5594:    208(ptr) AccessChain 5462(texel) 207
+            5595:6(float16_t) Load 5594
+            5596:6(float16_t) FAdd 5595 5593
+            5597:    208(ptr) AccessChain 5462(texel) 207
+                              Store 5597 5596
+            5600:         268 Load 5599(t1DArray)
+            5601:        5466 Load 5468(s)
+            5602:         269 SampledImage 5600 5601
+            5603:   53(fvec2) Load 148(c2)
+            5604:  7(f16vec4) ImageSampleImplicitLod 5602 5603
+            5605:  7(f16vec4) Load 5462(texel)
+            5606:  7(f16vec4) FAdd 5605 5604
+                              Store 5462(texel) 5606
+            5607:         268 Load 5599(t1DArray)
+            5608:        5466 Load 5468(s)
+            5609:         269 SampledImage 5607 5608
+            5610:154(f16vec2) Load 156(f16c2)
+            5611:6(float16_t) Load 137(f16bias)
+            5612:  7(f16vec4) ImageSampleImplicitLod 5609 5610 Bias 5611
+            5613:  7(f16vec4) Load 5462(texel)
+            5614:  7(f16vec4) FAdd 5613 5612
+                              Store 5462(texel) 5614
+            5617:         283 Load 5616(t2DArray)
+            5618:        5466 Load 5468(s)
+            5619:         284 SampledImage 5617 5618
+            5620:  167(fvec3) Load 169(c3)
+            5621:  7(f16vec4) ImageSampleImplicitLod 5619 5620
+            5622:  7(f16vec4) Load 5462(texel)
+            5623:  7(f16vec4) FAdd 5622 5621
+                              Store 5462(texel) 5623
+            5624:         283 Load 5616(t2DArray)
+            5625:        5466 Load 5468(s)
+            5626:         284 SampledImage 5624 5625
+            5627:175(f16vec3) Load 177(f16c3)
+            5628:6(float16_t) Load 137(f16bias)
+            5629:  7(f16vec4) ImageSampleImplicitLod 5626 5627 Bias 5628
+            5630:  7(f16vec4) Load 5462(texel)
+            5631:  7(f16vec4) FAdd 5630 5629
+                              Store 5462(texel) 5631
+            5634:         298 Load 5633(tCubeArray)
+            5635:        5466 Load 5468(s)
+            5636:         299 SampledImage 5634 5635
+            5637:  249(fvec4) Load 251(c4)
+            5638:  7(f16vec4) ImageSampleImplicitLod 5636 5637
+            5639:  7(f16vec4) Load 5462(texel)
+            5640:  7(f16vec4) FAdd 5639 5638
+                              Store 5462(texel) 5640
+            5641:         298 Load 5633(tCubeArray)
+            5642:        5466 Load 5468(s)
+            5643:         299 SampledImage 5641 5642
+            5644:  7(f16vec4) Load 309(f16c4)
+            5645:6(float16_t) Load 137(f16bias)
+            5646:  7(f16vec4) ImageSampleImplicitLod 5643 5644 Bias 5645
+            5647:  7(f16vec4) Load 5462(texel)
+            5648:  7(f16vec4) FAdd 5647 5646
+                              Store 5462(texel) 5648
+            5649:         268 Load 5599(t1DArray)
+            5650:        5466 Load 5535(sShadow)
             5651:         316 SampledImage 5649 5650
-            5652:154(f16vec2) Load 156(f16c2)
-            5653:   52(float) Load 215(compare)
-            5654:6(float16_t) Load 137(f16bias)
-            5655:6(float16_t) ImageSampleDrefImplicitLod 5651 5652 5653 Bias 5654
-            5656:    208(ptr) AccessChain 5452(texel) 207
-            5657:6(float16_t) Load 5656
-            5658:6(float16_t) FAdd 5657 5655
-            5659:    208(ptr) AccessChain 5452(texel) 207
-                              Store 5659 5658
-            5660:         283 Load 5606(t2DArray)
-            5661:        5456 Load 5525(sShadow)
-            5662:         337 SampledImage 5660 5661
-            5663:  249(fvec4) Load 251(c4)
-            5664:   52(float) CompositeExtract 5663 3
-            5665:6(float16_t) ImageSampleDrefImplicitLod 5662 5663 5664
-            5666:    208(ptr) AccessChain 5452(texel) 207
+            5652:  167(fvec3) Load 169(c3)
+            5653:   52(float) CompositeExtract 5652 2
+            5654:6(float16_t) ImageSampleDrefImplicitLod 5651 5652 5653
+            5655:    208(ptr) AccessChain 5462(texel) 207
+            5656:6(float16_t) Load 5655
+            5657:6(float16_t) FAdd 5656 5654
+            5658:    208(ptr) AccessChain 5462(texel) 207
+                              Store 5658 5657
+            5659:         268 Load 5599(t1DArray)
+            5660:        5466 Load 5535(sShadow)
+            5661:         316 SampledImage 5659 5660
+            5662:154(f16vec2) Load 156(f16c2)
+            5663:   52(float) Load 215(compare)
+            5664:6(float16_t) Load 137(f16bias)
+            5665:6(float16_t) ImageSampleDrefImplicitLod 5661 5662 5663 Bias 5664
+            5666:    208(ptr) AccessChain 5462(texel) 207
             5667:6(float16_t) Load 5666
             5668:6(float16_t) FAdd 5667 5665
-            5669:    208(ptr) AccessChain 5452(texel) 207
+            5669:    208(ptr) AccessChain 5462(texel) 207
                               Store 5669 5668
-            5670:         283 Load 5606(t2DArray)
-            5671:        5456 Load 5525(sShadow)
+            5670:         283 Load 5616(t2DArray)
+            5671:        5466 Load 5535(sShadow)
             5672:         337 SampledImage 5670 5671
-            5673:175(f16vec3) Load 177(f16c3)
-            5674:   52(float) Load 215(compare)
+            5673:  249(fvec4) Load 251(c4)
+            5674:   52(float) CompositeExtract 5673 3
             5675:6(float16_t) ImageSampleDrefImplicitLod 5672 5673 5674
-            5676:    208(ptr) AccessChain 5452(texel) 207
+            5676:    208(ptr) AccessChain 5462(texel) 207
             5677:6(float16_t) Load 5676
             5678:6(float16_t) FAdd 5677 5675
-            5679:    208(ptr) AccessChain 5452(texel) 207
+            5679:    208(ptr) AccessChain 5462(texel) 207
                               Store 5679 5678
-            5682:         356 Load 5681(t2DRect)
-            5683:        5456 Load 5458(s)
-            5684:         357 SampledImage 5682 5683
-            5685:   53(fvec2) Load 148(c2)
-            5686:  7(f16vec4) ImageSampleImplicitLod 5684 5685
-            5687:  7(f16vec4) Load 5452(texel)
-            5688:  7(f16vec4) FAdd 5687 5686
-                              Store 5452(texel) 5688
-            5689:         356 Load 5681(t2DRect)
-            5690:        5456 Load 5458(s)
-            5691:         357 SampledImage 5689 5690
-            5692:154(f16vec2) Load 156(f16c2)
-            5693:  7(f16vec4) ImageSampleImplicitLod 5691 5692
-            5694:  7(f16vec4) Load 5452(texel)
-            5695:  7(f16vec4) FAdd 5694 5693
-                              Store 5452(texel) 5695
-            5696:         356 Load 5681(t2DRect)
-            5697:        5456 Load 5525(sShadow)
-            5698:         371 SampledImage 5696 5697
-            5699:  167(fvec3) Load 169(c3)
-            5700:   52(float) CompositeExtract 5699 2
-            5701:6(float16_t) ImageSampleDrefImplicitLod 5698 5699 5700
-            5702:    208(ptr) AccessChain 5452(texel) 207
-            5703:6(float16_t) Load 5702
-            5704:6(float16_t) FAdd 5703 5701
-            5705:    208(ptr) AccessChain 5452(texel) 207
-                              Store 5705 5704
-            5706:         356 Load 5681(t2DRect)
-            5707:        5456 Load 5525(sShadow)
+            5680:         283 Load 5616(t2DArray)
+            5681:        5466 Load 5535(sShadow)
+            5682:         337 SampledImage 5680 5681
+            5683:175(f16vec3) Load 177(f16c3)
+            5684:   52(float) Load 215(compare)
+            5685:6(float16_t) ImageSampleDrefImplicitLod 5682 5683 5684
+            5686:    208(ptr) AccessChain 5462(texel) 207
+            5687:6(float16_t) Load 5686
+            5688:6(float16_t) FAdd 5687 5685
+            5689:    208(ptr) AccessChain 5462(texel) 207
+                              Store 5689 5688
+            5692:         356 Load 5691(t2DRect)
+            5693:        5466 Load 5468(s)
+            5694:         357 SampledImage 5692 5693
+            5695:   53(fvec2) Load 148(c2)
+            5696:  7(f16vec4) ImageSampleImplicitLod 5694 5695
+            5697:  7(f16vec4) Load 5462(texel)
+            5698:  7(f16vec4) FAdd 5697 5696
+                              Store 5462(texel) 5698
+            5699:         356 Load 5691(t2DRect)
+            5700:        5466 Load 5468(s)
+            5701:         357 SampledImage 5699 5700
+            5702:154(f16vec2) Load 156(f16c2)
+            5703:  7(f16vec4) ImageSampleImplicitLod 5701 5702
+            5704:  7(f16vec4) Load 5462(texel)
+            5705:  7(f16vec4) FAdd 5704 5703
+                              Store 5462(texel) 5705
+            5706:         356 Load 5691(t2DRect)
+            5707:        5466 Load 5535(sShadow)
             5708:         371 SampledImage 5706 5707
-            5709:154(f16vec2) Load 156(f16c2)
-            5710:   52(float) Load 215(compare)
+            5709:  167(fvec3) Load 169(c3)
+            5710:   52(float) CompositeExtract 5709 2
             5711:6(float16_t) ImageSampleDrefImplicitLod 5708 5709 5710
-            5712:    208(ptr) AccessChain 5452(texel) 207
+            5712:    208(ptr) AccessChain 5462(texel) 207
             5713:6(float16_t) Load 5712
             5714:6(float16_t) FAdd 5713 5711
-            5715:    208(ptr) AccessChain 5452(texel) 207
+            5715:    208(ptr) AccessChain 5462(texel) 207
                               Store 5715 5714
-            5716:         298 Load 5623(tCubeArray)
-            5717:        5456 Load 5525(sShadow)
-            5718:         391 SampledImage 5716 5717
-            5719:  249(fvec4) Load 251(c4)
+            5716:         356 Load 5691(t2DRect)
+            5717:        5466 Load 5535(sShadow)
+            5718:         371 SampledImage 5716 5717
+            5719:154(f16vec2) Load 156(f16c2)
             5720:   52(float) Load 215(compare)
             5721:6(float16_t) ImageSampleDrefImplicitLod 5718 5719 5720
-            5722:    208(ptr) AccessChain 5452(texel) 207
+            5722:    208(ptr) AccessChain 5462(texel) 207
             5723:6(float16_t) Load 5722
             5724:6(float16_t) FAdd 5723 5721
-            5725:    208(ptr) AccessChain 5452(texel) 207
+            5725:    208(ptr) AccessChain 5462(texel) 207
                               Store 5725 5724
-            5726:         298 Load 5623(tCubeArray)
-            5727:        5456 Load 5525(sShadow)
+            5726:         298 Load 5633(tCubeArray)
+            5727:        5466 Load 5535(sShadow)
             5728:         391 SampledImage 5726 5727
-            5729:  7(f16vec4) Load 309(f16c4)
+            5729:  249(fvec4) Load 251(c4)
             5730:   52(float) Load 215(compare)
             5731:6(float16_t) ImageSampleDrefImplicitLod 5728 5729 5730
-            5732:    208(ptr) AccessChain 5452(texel) 207
+            5732:    208(ptr) AccessChain 5462(texel) 207
             5733:6(float16_t) Load 5732
             5734:6(float16_t) FAdd 5733 5731
-            5735:    208(ptr) AccessChain 5452(texel) 207
+            5735:    208(ptr) AccessChain 5462(texel) 207
                               Store 5735 5734
-            5736:  7(f16vec4) Load 5452(texel)
-                              ReturnValue 5736
+            5736:         298 Load 5633(tCubeArray)
+            5737:        5466 Load 5535(sShadow)
+            5738:         391 SampledImage 5736 5737
+            5739:  7(f16vec4) Load 309(f16c4)
+            5740:   52(float) Load 215(compare)
+            5741:6(float16_t) ImageSampleDrefImplicitLod 5738 5739 5740
+            5742:    208(ptr) AccessChain 5462(texel) 207
+            5743:6(float16_t) Load 5742
+            5744:6(float16_t) FAdd 5743 5741
+            5745:    208(ptr) AccessChain 5462(texel) 207
+                              Store 5745 5744
+            5746:  7(f16vec4) Load 5462(texel)
+                              ReturnValue 5746
                               FunctionEnd
 117(testSubpassLoad():  7(f16vec4) Function None 8
              118:             Label
-            5742:        5739 Load 5741(subpass)
-            5744:  7(f16vec4) ImageRead 5742 5743
-            5748:        5745 Load 5747(subpassMS)
-            5749:  7(f16vec4) ImageRead 5748 5743 Sample 1326
-            5750:  7(f16vec4) FAdd 5744 5749
-                              ReturnValue 5750
+            5752:        5749 Load 5751(subpass)
+            5754:  7(f16vec4) ImageRead 5752 5753
+            5758:        5755 Load 5757(subpassMS)
+            5759:  7(f16vec4) ImageRead 5758 5753 Sample 1326
+            5760:  7(f16vec4) FAdd 5754 5759
+                              ReturnValue 5760
                               FunctionEnd
diff --git a/Test/baseResults/spv.imageAtomic64.frag.out b/Test/baseResults/spv.imageAtomic64.frag.out
new file mode 100644
index 0000000..3083697
--- /dev/null
+++ b/Test/baseResults/spv.imageAtomic64.frag.out
@@ -0,0 +1,634 @@
+spv.imageAtomic64.frag
+Validation failed
+// Module Version 10000
+// Generated by (magic number): 8000a
+// Id's are bound by 503
+
+                              Capability Shader
+                              Capability Int64
+                              Capability Int64Atomics
+                              Capability StorageImageMultisample
+                              Capability ImageCubeArray
+                              Capability ImageRect
+                              Capability SparseResidency
+                              Capability Image1D
+                              Capability ImageBuffer
+                              Capability ImageMSArray
+                              Capability Int64ImageEXT
+                              Extension  "SPV_EXT_shader_image_int64"
+               1:             ExtInstImport  "GLSL.std.450"
+                              MemoryModel Logical GLSL450
+                              EntryPoint Fragment 4  "main"
+                              ExecutionMode 4 OriginUpperLeft
+                              Source GLSL 450
+                              SourceExtension  "GL_ARB_gpu_shader_int64"
+                              SourceExtension  "GL_ARB_sparse_texture2"
+                              SourceExtension  "GL_EXT_shader_image_int64"
+                              SourceExtension  "GL_KHR_memory_scope_semantics"
+                              Name 4  "main"
+                              Name 12  "Buf"
+                              MemberName 12(Buf) 0  "i64"
+                              MemberName 12(Buf) 1  "u64"
+                              MemberName 12(Buf) 2  "i64v4"
+                              MemberName 12(Buf) 3  "u64v4"
+                              MemberName 12(Buf) 4  "i32v4"
+                              Name 14  ""
+                              Name 18  "i1D"
+                              Name 35  "i3D"
+                              Name 48  "iBuf"
+                              Name 58  "i2DArray"
+                              Name 69  "i2DRect"
+                              Name 81  "i2DMSArray"
+                              Name 194  "u2D"
+                              Name 207  "uCube"
+                              Name 218  "u1DArray"
+                              Name 229  "uCubeArray"
+                              Name 240  "u2DMS"
+                              Name 458  "ResType"
+                              Name 483  "ResType"
+                              MemberDecorate 12(Buf) 0 Offset 0
+                              MemberDecorate 12(Buf) 1 Offset 8
+                              MemberDecorate 12(Buf) 2 Offset 32
+                              MemberDecorate 12(Buf) 3 Offset 64
+                              MemberDecorate 12(Buf) 4 Offset 96
+                              Decorate 12(Buf) BufferBlock
+                              Decorate 14 DescriptorSet 0
+                              Decorate 14 Binding 11
+                              Decorate 18(i1D) DescriptorSet 0
+                              Decorate 18(i1D) Binding 0
+                              Decorate 35(i3D) DescriptorSet 0
+                              Decorate 35(i3D) Binding 2
+                              Decorate 48(iBuf) DescriptorSet 0
+                              Decorate 48(iBuf) Binding 4
+                              Decorate 58(i2DArray) DescriptorSet 0
+                              Decorate 58(i2DArray) Binding 6
+                              Decorate 69(i2DRect) DescriptorSet 0
+                              Decorate 69(i2DRect) Binding 8
+                              Decorate 81(i2DMSArray) DescriptorSet 0
+                              Decorate 81(i2DMSArray) Binding 10
+                              Decorate 194(u2D) DescriptorSet 0
+                              Decorate 194(u2D) Binding 1
+                              Decorate 207(uCube) DescriptorSet 0
+                              Decorate 207(uCube) Binding 3
+                              Decorate 218(u1DArray) DescriptorSet 0
+                              Decorate 218(u1DArray) Binding 5
+                              Decorate 229(uCubeArray) DescriptorSet 0
+                              Decorate 229(uCubeArray) Binding 7
+                              Decorate 240(u2DMS) DescriptorSet 0
+                              Decorate 240(u2DMS) Binding 9
+               2:             TypeVoid
+               3:             TypeFunction 2
+               6:             TypeInt 64 1
+               7:             TypeInt 64 0
+               8:             TypeVector 6(int64_t) 4
+               9:             TypeVector 7(int64_t) 4
+              10:             TypeInt 32 1
+              11:             TypeVector 10(int) 4
+         12(Buf):             TypeStruct 6(int64_t) 7(int64_t) 8(i64vec4) 9(i64vec4) 11(ivec4)
+              13:             TypePointer Uniform 12(Buf)
+              14:     13(ptr) Variable Uniform
+              15:     10(int) Constant 0
+              16:             TypeImage 6(int64_t) 1D nonsampled format:R64i
+              17:             TypePointer UniformConstant 16
+         18(i1D):     17(ptr) Variable UniformConstant
+              19:     10(int) Constant 4
+              20:             TypeInt 32 0
+              21:     20(int) Constant 0
+              22:             TypePointer Uniform 10(int)
+              25:             TypePointer Uniform 6(int64_t)
+              28:             TypePointer Image 6(int64_t)
+              30:     20(int) Constant 1
+              33:             TypeImage 6(int64_t) 3D nonsampled format:R64i
+              34:             TypePointer UniformConstant 33
+         35(i3D):     34(ptr) Variable UniformConstant
+              36:             TypeVector 10(int) 3
+              37:             TypePointer Uniform 11(ivec4)
+              46:             TypeImage 6(int64_t) Buffer nonsampled format:R64i
+              47:             TypePointer UniformConstant 46
+        48(iBuf):     47(ptr) Variable UniformConstant
+              56:             TypeImage 6(int64_t) 2D array nonsampled format:R64i
+              57:             TypePointer UniformConstant 56
+    58(i2DArray):     57(ptr) Variable UniformConstant
+              67:             TypeImage 6(int64_t) Rect nonsampled format:R64i
+              68:             TypePointer UniformConstant 67
+     69(i2DRect):     68(ptr) Variable UniformConstant
+              70:             TypeVector 10(int) 2
+              79:             TypeImage 6(int64_t) 2D array multi-sampled nonsampled format:R64i
+              80:             TypePointer UniformConstant 79
+  81(i2DMSArray):     80(ptr) Variable UniformConstant
+              85:     20(int) Constant 3
+             107:  6(int64_t) Constant 1 0
+             116:     10(int) Constant 1
+             117:     10(int) Constant 2048
+             119:     20(int) Constant 2048
+             192:             TypeImage 7(int64_t) 2D nonsampled format:R64ui
+             193:             TypePointer UniformConstant 192
+        194(u2D):    193(ptr) Variable UniformConstant
+             198:             TypePointer Uniform 7(int64_t)
+             201:             TypePointer Image 7(int64_t)
+             205:             TypeImage 7(int64_t) Cube nonsampled format:R64ui
+             206:             TypePointer UniformConstant 205
+      207(uCube):    206(ptr) Variable UniformConstant
+             216:             TypeImage 7(int64_t) 1D array nonsampled format:R64ui
+             217:             TypePointer UniformConstant 216
+   218(u1DArray):    217(ptr) Variable UniformConstant
+             227:             TypeImage 7(int64_t) Cube array nonsampled format:R64ui
+             228:             TypePointer UniformConstant 227
+ 229(uCubeArray):    228(ptr) Variable UniformConstant
+             238:             TypeImage 7(int64_t) 2D multi-sampled nonsampled format:R64ui
+             239:             TypePointer UniformConstant 238
+      240(u2DMS):    239(ptr) Variable UniformConstant
+             244:     20(int) Constant 2
+             275:  7(int64_t) Constant 1 0
+             363:     10(int) Constant 2
+             368:             TypePointer Uniform 8(i64vec4)
+             423:     10(int) Constant 3
+             424:             TypePointer Uniform 9(i64vec4)
+    458(ResType):             TypeStruct 10(int) 8(i64vec4)
+    483(ResType):             TypeStruct 10(int) 9(i64vec4)
+         4(main):           2 Function None 3
+               5:             Label
+              23:     22(ptr) AccessChain 14 19 21
+              24:     10(int) Load 23
+              26:     25(ptr) AccessChain 14 15
+              27:  6(int64_t) Load 26
+              29:     28(ptr) ImageTexelPointer 18(i1D) 24 21
+              31:  6(int64_t) AtomicIAdd 29 30 21 27
+              32:     25(ptr) AccessChain 14 15
+                              Store 32 31
+              38:     37(ptr) AccessChain 14 19
+              39:   11(ivec4) Load 38
+              40:   36(ivec3) VectorShuffle 39 39 0 1 2
+              41:     25(ptr) AccessChain 14 15
+              42:  6(int64_t) Load 41
+              43:     28(ptr) ImageTexelPointer 35(i3D) 40 21
+              44:  6(int64_t) AtomicSMin 43 30 21 42
+              45:     25(ptr) AccessChain 14 15
+                              Store 45 44
+              49:     22(ptr) AccessChain 14 19 21
+              50:     10(int) Load 49
+              51:     25(ptr) AccessChain 14 15
+              52:  6(int64_t) Load 51
+              53:     28(ptr) ImageTexelPointer 48(iBuf) 50 21
+              54:  6(int64_t) AtomicSMax 53 30 21 52
+              55:     25(ptr) AccessChain 14 15
+                              Store 55 54
+              59:     37(ptr) AccessChain 14 19
+              60:   11(ivec4) Load 59
+              61:   36(ivec3) VectorShuffle 60 60 0 1 2
+              62:     25(ptr) AccessChain 14 15
+              63:  6(int64_t) Load 62
+              64:     28(ptr) ImageTexelPointer 58(i2DArray) 61 21
+              65:  6(int64_t) AtomicAnd 64 30 21 63
+              66:     25(ptr) AccessChain 14 15
+                              Store 66 65
+              71:     37(ptr) AccessChain 14 19
+              72:   11(ivec4) Load 71
+              73:   70(ivec2) VectorShuffle 72 72 0 1
+              74:     25(ptr) AccessChain 14 15
+              75:  6(int64_t) Load 74
+              76:     28(ptr) ImageTexelPointer 69(i2DRect) 73 21
+              77:  6(int64_t) AtomicOr 76 30 21 75
+              78:     25(ptr) AccessChain 14 15
+                              Store 78 77
+              82:     37(ptr) AccessChain 14 19
+              83:   11(ivec4) Load 82
+              84:   36(ivec3) VectorShuffle 83 83 0 1 2
+              86:     22(ptr) AccessChain 14 19 85
+              87:     10(int) Load 86
+              88:     25(ptr) AccessChain 14 15
+              89:  6(int64_t) Load 88
+              90:     28(ptr) ImageTexelPointer 81(i2DMSArray) 84 87
+              91:  6(int64_t) AtomicXor 90 30 21 89
+              92:     25(ptr) AccessChain 14 15
+                              Store 92 91
+              93:     22(ptr) AccessChain 14 19 21
+              94:     10(int) Load 93
+              95:     25(ptr) AccessChain 14 15
+              96:  6(int64_t) Load 95
+              97:     28(ptr) ImageTexelPointer 18(i1D) 94 21
+              98:  6(int64_t) AtomicExchange 97 30 21 96
+              99:     25(ptr) AccessChain 14 15
+                              Store 99 98
+             100:     37(ptr) AccessChain 14 19
+             101:   11(ivec4) Load 100
+             102:   36(ivec3) VectorShuffle 101 101 0 1 2
+             103:     25(ptr) AccessChain 14 15
+             104:  6(int64_t) Load 103
+             105:     25(ptr) AccessChain 14 15
+             106:  6(int64_t) Load 105
+             108:  6(int64_t) IAdd 106 107
+             109:     28(ptr) ImageTexelPointer 35(i3D) 102 21
+             110:  6(int64_t) AtomicCompareExchange 109 30 21 21 108 104
+             111:     25(ptr) AccessChain 14 15
+                              Store 111 110
+             112:     22(ptr) AccessChain 14 19 21
+             113:     10(int) Load 112
+             114:     25(ptr) AccessChain 14 15
+             115:  6(int64_t) Load 114
+             118:     28(ptr) ImageTexelPointer 18(i1D) 113 21
+             120:  6(int64_t) AtomicIAdd 118 116 119 115
+             121:     25(ptr) AccessChain 14 15
+                              Store 121 120
+             122:     37(ptr) AccessChain 14 19
+             123:   11(ivec4) Load 122
+             124:   36(ivec3) VectorShuffle 123 123 0 1 2
+             125:     25(ptr) AccessChain 14 15
+             126:  6(int64_t) Load 125
+             127:     28(ptr) ImageTexelPointer 35(i3D) 124 21
+             128:  6(int64_t) AtomicSMin 127 116 119 126
+             129:     25(ptr) AccessChain 14 15
+                              Store 129 128
+             130:     22(ptr) AccessChain 14 19 21
+             131:     10(int) Load 130
+             132:     25(ptr) AccessChain 14 15
+             133:  6(int64_t) Load 132
+             134:     28(ptr) ImageTexelPointer 48(iBuf) 131 21
+             135:  6(int64_t) AtomicSMax 134 116 119 133
+             136:     25(ptr) AccessChain 14 15
+                              Store 136 135
+             137:     37(ptr) AccessChain 14 19
+             138:   11(ivec4) Load 137
+             139:   36(ivec3) VectorShuffle 138 138 0 1 2
+             140:     25(ptr) AccessChain 14 15
+             141:  6(int64_t) Load 140
+             142:     28(ptr) ImageTexelPointer 58(i2DArray) 139 21
+             143:  6(int64_t) AtomicAnd 142 116 119 141
+             144:     25(ptr) AccessChain 14 15
+                              Store 144 143
+             145:     37(ptr) AccessChain 14 19
+             146:   11(ivec4) Load 145
+             147:   70(ivec2) VectorShuffle 146 146 0 1
+             148:     25(ptr) AccessChain 14 15
+             149:  6(int64_t) Load 148
+             150:     28(ptr) ImageTexelPointer 69(i2DRect) 147 21
+             151:  6(int64_t) AtomicOr 150 116 119 149
+             152:     25(ptr) AccessChain 14 15
+                              Store 152 151
+             153:     37(ptr) AccessChain 14 19
+             154:   11(ivec4) Load 153
+             155:   36(ivec3) VectorShuffle 154 154 0 1 2
+             156:     22(ptr) AccessChain 14 19 85
+             157:     10(int) Load 156
+             158:     25(ptr) AccessChain 14 15
+             159:  6(int64_t) Load 158
+             160:     28(ptr) ImageTexelPointer 81(i2DMSArray) 155 157
+             161:  6(int64_t) AtomicXor 160 116 119 159
+             162:     25(ptr) AccessChain 14 15
+                              Store 162 161
+             163:     22(ptr) AccessChain 14 19 21
+             164:     10(int) Load 163
+             165:     25(ptr) AccessChain 14 15
+             166:  6(int64_t) Load 165
+             167:     28(ptr) ImageTexelPointer 18(i1D) 164 21
+             168:  6(int64_t) AtomicExchange 167 116 119 166
+             169:     25(ptr) AccessChain 14 15
+                              Store 169 168
+             170:     37(ptr) AccessChain 14 19
+             171:   11(ivec4) Load 170
+             172:   36(ivec3) VectorShuffle 171 171 0 1 2
+             173:     25(ptr) AccessChain 14 15
+             174:  6(int64_t) Load 173
+             175:     25(ptr) AccessChain 14 15
+             176:  6(int64_t) Load 175
+             177:  6(int64_t) IAdd 176 107
+             178:     28(ptr) ImageTexelPointer 35(i3D) 172 21
+             179:  6(int64_t) AtomicCompareExchange 178 116 119 119 177 174
+             180:     25(ptr) AccessChain 14 15
+                              Store 180 179
+             181:     22(ptr) AccessChain 14 19 21
+             182:     10(int) Load 181
+             183:     28(ptr) ImageTexelPointer 48(iBuf) 182 21
+             184:  6(int64_t) AtomicLoad 183 116 119
+             185:     25(ptr) AccessChain 14 15
+                              Store 185 184
+             186:     37(ptr) AccessChain 14 19
+             187:   11(ivec4) Load 186
+             188:   36(ivec3) VectorShuffle 187 187 0 1 2
+             189:     25(ptr) AccessChain 14 15
+             190:  6(int64_t) Load 189
+             191:     28(ptr) ImageTexelPointer 58(i2DArray) 188 21
+                              AtomicStore 191 116 119 190
+             195:     37(ptr) AccessChain 14 19
+             196:   11(ivec4) Load 195
+             197:   70(ivec2) VectorShuffle 196 196 0 1
+             199:    198(ptr) AccessChain 14 116
+             200:  7(int64_t) Load 199
+             202:    201(ptr) ImageTexelPointer 194(u2D) 197 21
+             203:  7(int64_t) AtomicIAdd 202 30 21 200
+             204:    198(ptr) AccessChain 14 116
+                              Store 204 203
+             208:     37(ptr) AccessChain 14 19
+             209:   11(ivec4) Load 208
+             210:   36(ivec3) VectorShuffle 209 209 0 1 2
+             211:    198(ptr) AccessChain 14 116
+             212:  7(int64_t) Load 211
+             213:    201(ptr) ImageTexelPointer 207(uCube) 210 21
+             214:  7(int64_t) AtomicUMin 213 30 21 212
+             215:    198(ptr) AccessChain 14 116
+                              Store 215 214
+             219:     37(ptr) AccessChain 14 19
+             220:   11(ivec4) Load 219
+             221:   70(ivec2) VectorShuffle 220 220 0 1
+             222:    198(ptr) AccessChain 14 116
+             223:  7(int64_t) Load 222
+             224:    201(ptr) ImageTexelPointer 218(u1DArray) 221 21
+             225:  7(int64_t) AtomicUMax 224 30 21 223
+             226:    198(ptr) AccessChain 14 116
+                              Store 226 225
+             230:     37(ptr) AccessChain 14 19
+             231:   11(ivec4) Load 230
+             232:   36(ivec3) VectorShuffle 231 231 0 1 2
+             233:    198(ptr) AccessChain 14 116
+             234:  7(int64_t) Load 233
+             235:    201(ptr) ImageTexelPointer 229(uCubeArray) 232 21
+             236:  7(int64_t) AtomicAnd 235 30 21 234
+             237:    198(ptr) AccessChain 14 116
+                              Store 237 236
+             241:     37(ptr) AccessChain 14 19
+             242:   11(ivec4) Load 241
+             243:   70(ivec2) VectorShuffle 242 242 0 1
+             245:     22(ptr) AccessChain 14 19 244
+             246:     10(int) Load 245
+             247:    198(ptr) AccessChain 14 116
+             248:  7(int64_t) Load 247
+             249:    201(ptr) ImageTexelPointer 240(u2DMS) 243 246
+             250:  7(int64_t) AtomicOr 249 30 21 248
+             251:    198(ptr) AccessChain 14 116
+                              Store 251 250
+             252:     37(ptr) AccessChain 14 19
+             253:   11(ivec4) Load 252
+             254:   70(ivec2) VectorShuffle 253 253 0 1
+             255:    198(ptr) AccessChain 14 116
+             256:  7(int64_t) Load 255
+             257:    201(ptr) ImageTexelPointer 194(u2D) 254 21
+             258:  7(int64_t) AtomicXor 257 30 21 256
+             259:    198(ptr) AccessChain 14 116
+                              Store 259 258
+             260:     37(ptr) AccessChain 14 19
+             261:   11(ivec4) Load 260
+             262:   36(ivec3) VectorShuffle 261 261 0 1 2
+             263:    198(ptr) AccessChain 14 116
+             264:  7(int64_t) Load 263
+             265:    201(ptr) ImageTexelPointer 207(uCube) 262 21
+             266:  7(int64_t) AtomicExchange 265 30 21 264
+             267:    198(ptr) AccessChain 14 116
+                              Store 267 266
+             268:     37(ptr) AccessChain 14 19
+             269:   11(ivec4) Load 268
+             270:   70(ivec2) VectorShuffle 269 269 0 1
+             271:    198(ptr) AccessChain 14 116
+             272:  7(int64_t) Load 271
+             273:    198(ptr) AccessChain 14 116
+             274:  7(int64_t) Load 273
+             276:  7(int64_t) IAdd 274 275
+             277:    201(ptr) ImageTexelPointer 218(u1DArray) 270 21
+             278:  7(int64_t) AtomicCompareExchange 277 30 21 21 276 272
+             279:    198(ptr) AccessChain 14 116
+                              Store 279 278
+             280:     37(ptr) AccessChain 14 19
+             281:   11(ivec4) Load 280
+             282:   70(ivec2) VectorShuffle 281 281 0 1
+             283:    198(ptr) AccessChain 14 116
+             284:  7(int64_t) Load 283
+             285:    201(ptr) ImageTexelPointer 194(u2D) 282 21
+             286:  7(int64_t) AtomicIAdd 285 116 119 284
+             287:    198(ptr) AccessChain 14 116
+                              Store 287 286
+             288:     37(ptr) AccessChain 14 19
+             289:   11(ivec4) Load 288
+             290:   36(ivec3) VectorShuffle 289 289 0 1 2
+             291:    198(ptr) AccessChain 14 116
+             292:  7(int64_t) Load 291
+             293:    201(ptr) ImageTexelPointer 207(uCube) 290 21
+             294:  7(int64_t) AtomicUMin 293 116 119 292
+             295:    198(ptr) AccessChain 14 116
+                              Store 295 294
+             296:     37(ptr) AccessChain 14 19
+             297:   11(ivec4) Load 296
+             298:   70(ivec2) VectorShuffle 297 297 0 1
+             299:    198(ptr) AccessChain 14 116
+             300:  7(int64_t) Load 299
+             301:    201(ptr) ImageTexelPointer 218(u1DArray) 298 21
+             302:  7(int64_t) AtomicUMax 301 116 119 300
+             303:    198(ptr) AccessChain 14 116
+                              Store 303 302
+             304:     37(ptr) AccessChain 14 19
+             305:   11(ivec4) Load 304
+             306:   36(ivec3) VectorShuffle 305 305 0 1 2
+             307:    198(ptr) AccessChain 14 116
+             308:  7(int64_t) Load 307
+             309:    201(ptr) ImageTexelPointer 229(uCubeArray) 306 21
+             310:  7(int64_t) AtomicAnd 309 116 119 308
+             311:    198(ptr) AccessChain 14 116
+                              Store 311 310
+             312:     37(ptr) AccessChain 14 19
+             313:   11(ivec4) Load 312
+             314:   70(ivec2) VectorShuffle 313 313 0 1
+             315:     22(ptr) AccessChain 14 19 244
+             316:     10(int) Load 315
+             317:    198(ptr) AccessChain 14 116
+             318:  7(int64_t) Load 317
+             319:    201(ptr) ImageTexelPointer 240(u2DMS) 314 316
+             320:  7(int64_t) AtomicOr 319 116 119 318
+             321:    198(ptr) AccessChain 14 116
+                              Store 321 320
+             322:     37(ptr) AccessChain 14 19
+             323:   11(ivec4) Load 322
+             324:   70(ivec2) VectorShuffle 323 323 0 1
+             325:    198(ptr) AccessChain 14 116
+             326:  7(int64_t) Load 325
+             327:    201(ptr) ImageTexelPointer 194(u2D) 324 21
+             328:  7(int64_t) AtomicXor 327 116 119 326
+             329:    198(ptr) AccessChain 14 116
+                              Store 329 328
+             330:     37(ptr) AccessChain 14 19
+             331:   11(ivec4) Load 330
+             332:   36(ivec3) VectorShuffle 331 331 0 1 2
+             333:    198(ptr) AccessChain 14 116
+             334:  7(int64_t) Load 333
+             335:    201(ptr) ImageTexelPointer 207(uCube) 332 21
+             336:  7(int64_t) AtomicExchange 335 116 119 334
+             337:    198(ptr) AccessChain 14 116
+                              Store 337 336
+             338:     37(ptr) AccessChain 14 19
+             339:   11(ivec4) Load 338
+             340:   70(ivec2) VectorShuffle 339 339 0 1
+             341:    198(ptr) AccessChain 14 116
+             342:  7(int64_t) Load 341
+             343:    198(ptr) AccessChain 14 116
+             344:  7(int64_t) Load 343
+             345:  7(int64_t) IAdd 344 275
+             346:    201(ptr) ImageTexelPointer 218(u1DArray) 340 21
+             347:  7(int64_t) AtomicCompareExchange 346 116 119 119 345 342
+             348:    198(ptr) AccessChain 14 116
+                              Store 348 347
+             349:     37(ptr) AccessChain 14 19
+             350:   11(ivec4) Load 349
+             351:   36(ivec3) VectorShuffle 350 350 0 1 2
+             352:    201(ptr) ImageTexelPointer 229(uCubeArray) 351 21
+             353:  7(int64_t) AtomicLoad 352 116 119
+             354:    198(ptr) AccessChain 14 116
+                              Store 354 353
+             355:     37(ptr) AccessChain 14 19
+             356:   11(ivec4) Load 355
+             357:   70(ivec2) VectorShuffle 356 356 0 1
+             358:     22(ptr) AccessChain 14 19 244
+             359:     10(int) Load 358
+             360:    198(ptr) AccessChain 14 116
+             361:  7(int64_t) Load 360
+             362:    201(ptr) ImageTexelPointer 240(u2DMS) 357 359
+                              AtomicStore 362 116 119 361
+             364:          16 Load 18(i1D)
+             365:     22(ptr) AccessChain 14 19 21
+             366:     10(int) Load 365
+             367:  8(i64vec4) ImageRead 364 366
+             369:    368(ptr) AccessChain 14 363
+             370:  8(i64vec4) Load 369
+             371:  8(i64vec4) IAdd 370 367
+             372:    368(ptr) AccessChain 14 363
+                              Store 372 371
+             373:          33 Load 35(i3D)
+             374:     37(ptr) AccessChain 14 19
+             375:   11(ivec4) Load 374
+             376:   36(ivec3) VectorShuffle 375 375 0 1 2
+             377:  8(i64vec4) ImageRead 373 376
+             378:    368(ptr) AccessChain 14 363
+             379:  8(i64vec4) Load 378
+             380:  8(i64vec4) IAdd 379 377
+             381:    368(ptr) AccessChain 14 363
+                              Store 381 380
+             382:          46 Load 48(iBuf)
+             383:     22(ptr) AccessChain 14 19 21
+             384:     10(int) Load 383
+             385:  8(i64vec4) ImageRead 382 384
+             386:    368(ptr) AccessChain 14 363
+             387:  8(i64vec4) Load 386
+             388:  8(i64vec4) IAdd 387 385
+             389:    368(ptr) AccessChain 14 363
+                              Store 389 388
+             390:          56 Load 58(i2DArray)
+             391:     37(ptr) AccessChain 14 19
+             392:   11(ivec4) Load 391
+             393:   36(ivec3) VectorShuffle 392 392 0 1 2
+             394:  8(i64vec4) ImageRead 390 393
+             395:    368(ptr) AccessChain 14 363
+             396:  8(i64vec4) Load 395
+             397:  8(i64vec4) IAdd 396 394
+             398:    368(ptr) AccessChain 14 363
+                              Store 398 397
+             399:          67 Load 69(i2DRect)
+             400:     37(ptr) AccessChain 14 19
+             401:   11(ivec4) Load 400
+             402:   70(ivec2) VectorShuffle 401 401 0 1
+             403:  8(i64vec4) ImageRead 399 402
+             404:    368(ptr) AccessChain 14 363
+             405:  8(i64vec4) Load 404
+             406:  8(i64vec4) IAdd 405 403
+             407:    368(ptr) AccessChain 14 363
+                              Store 407 406
+             408:          79 Load 81(i2DMSArray)
+             409:     37(ptr) AccessChain 14 19
+             410:   11(ivec4) Load 409
+             411:   36(ivec3) VectorShuffle 410 410 0 1 2
+             412:     22(ptr) AccessChain 14 19 85
+             413:     10(int) Load 412
+             414:  8(i64vec4) ImageRead 408 411 Sample 413
+             415:    368(ptr) AccessChain 14 363
+             416:  8(i64vec4) Load 415
+             417:  8(i64vec4) IAdd 416 414
+             418:    368(ptr) AccessChain 14 363
+                              Store 418 417
+             419:         192 Load 194(u2D)
+             420:     37(ptr) AccessChain 14 19
+             421:   11(ivec4) Load 420
+             422:   70(ivec2) VectorShuffle 421 421 0 1
+             425:    424(ptr) AccessChain 14 423
+             426:  9(i64vec4) Load 425
+                              ImageWrite 419 422 426
+             427:         205 Load 207(uCube)
+             428:     37(ptr) AccessChain 14 19
+             429:   11(ivec4) Load 428
+             430:   36(ivec3) VectorShuffle 429 429 0 1 2
+             431:    424(ptr) AccessChain 14 423
+             432:  9(i64vec4) Load 431
+                              ImageWrite 427 430 432
+             433:         216 Load 218(u1DArray)
+             434:     37(ptr) AccessChain 14 19
+             435:   11(ivec4) Load 434
+             436:   70(ivec2) VectorShuffle 435 435 0 1
+             437:    424(ptr) AccessChain 14 423
+             438:  9(i64vec4) Load 437
+                              ImageWrite 433 436 438
+             439:         227 Load 229(uCubeArray)
+             440:     37(ptr) AccessChain 14 19
+             441:   11(ivec4) Load 440
+             442:   36(ivec3) VectorShuffle 441 441 0 1 2
+             443:    424(ptr) AccessChain 14 423
+             444:  9(i64vec4) Load 443
+                              ImageWrite 439 442 444
+             445:         238 Load 240(u2DMS)
+             446:     37(ptr) AccessChain 14 19
+             447:   11(ivec4) Load 446
+             448:   70(ivec2) VectorShuffle 447 447 0 1
+             449:     22(ptr) AccessChain 14 19 244
+             450:     10(int) Load 449
+             451:    424(ptr) AccessChain 14 423
+             452:  9(i64vec4) Load 451
+                              ImageWrite 445 448 452 Sample 450
+             453:          33 Load 35(i3D)
+             454:     37(ptr) AccessChain 14 19
+             455:   11(ivec4) Load 454
+             456:   36(ivec3) VectorShuffle 455 455 0 1 2
+             457:    368(ptr) AccessChain 14 363
+             459:458(ResType) ImageSparseRead 453 456
+             460:  8(i64vec4) CompositeExtract 459 1
+                              Store 457 460
+             461:     10(int) CompositeExtract 459 0
+             462:          56 Load 58(i2DArray)
+             463:     37(ptr) AccessChain 14 19
+             464:   11(ivec4) Load 463
+             465:   36(ivec3) VectorShuffle 464 464 0 1 2
+             466:    368(ptr) AccessChain 14 363
+             467:458(ResType) ImageSparseRead 462 465
+             468:  8(i64vec4) CompositeExtract 467 1
+                              Store 466 468
+             469:     10(int) CompositeExtract 467 0
+             470:          67 Load 69(i2DRect)
+             471:     37(ptr) AccessChain 14 19
+             472:   11(ivec4) Load 471
+             473:   70(ivec2) VectorShuffle 472 472 0 1
+             474:    368(ptr) AccessChain 14 363
+             475:458(ResType) ImageSparseRead 470 473
+             476:  8(i64vec4) CompositeExtract 475 1
+                              Store 474 476
+             477:     10(int) CompositeExtract 475 0
+             478:         192 Load 194(u2D)
+             479:     37(ptr) AccessChain 14 19
+             480:   11(ivec4) Load 479
+             481:   70(ivec2) VectorShuffle 480 480 0 1
+             482:    424(ptr) AccessChain 14 423
+             484:483(ResType) ImageSparseRead 478 481
+             485:  9(i64vec4) CompositeExtract 484 1
+                              Store 482 485
+             486:     10(int) CompositeExtract 484 0
+             487:         205 Load 207(uCube)
+             488:     37(ptr) AccessChain 14 19
+             489:   11(ivec4) Load 488
+             490:   36(ivec3) VectorShuffle 489 489 0 1 2
+             491:    424(ptr) AccessChain 14 423
+             492:483(ResType) ImageSparseRead 487 490
+             493:  9(i64vec4) CompositeExtract 492 1
+                              Store 491 493
+             494:     10(int) CompositeExtract 492 0
+             495:         227 Load 229(uCubeArray)
+             496:     37(ptr) AccessChain 14 19
+             497:   11(ivec4) Load 496
+             498:   36(ivec3) VectorShuffle 497 497 0 1 2
+             499:    424(ptr) AccessChain 14 423
+             500:483(ResType) ImageSparseRead 495 498
+             501:  9(i64vec4) CompositeExtract 500 1
+                              Store 499 501
+             502:     10(int) CompositeExtract 500 0
+                              Return
+                              FunctionEnd
diff --git a/Test/baseResults/spv.imageLoadStoreLod.frag.out b/Test/baseResults/spv.imageLoadStoreLod.frag.out
index 2f83604..b809474 100644
--- a/Test/baseResults/spv.imageLoadStoreLod.frag.out
+++ b/Test/baseResults/spv.imageLoadStoreLod.frag.out
@@ -1,20 +1,25 @@
 spv.imageLoadStoreLod.frag
 // Module Version 10000
 // Generated by (magic number): 8000a
-// Id's are bound by 82
+// Id's are bound by 148
 
                               Capability Shader
+                              Capability Int64
                               Capability ImageCubeArray
                               Capability SparseResidency
                               Capability Image1D
                               Capability ImageReadWriteLodAMD
+                              Capability Int64ImageEXT
                               Extension  "SPV_AMD_shader_image_load_store_lod"
+                              Extension  "SPV_EXT_shader_image_int64"
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450
                               EntryPoint Fragment 4  "main" 77
                               ExecutionMode 4 OriginUpperLeft
                               Source GLSL 450
                               SourceExtension  "GL_AMD_shader_image_load_store_lod"
+                              SourceExtension  "GL_ARB_gpu_shader_int64"
+                              SourceExtension  "GL_EXT_shader_image_int64"
                               Name 4  "main"
                               Name 9  "f4"
                               Name 14  "i1D"
@@ -27,6 +32,18 @@
                               Name 65  "ResType"
                               Name 71  "uiCubeArray"
                               Name 77  "fragColor"
+                              Name 86  "Buf"
+                              MemberName 86(Buf) 0  "i64v4"
+                              MemberName 86(Buf) 1  "u64v4"
+                              Name 88  ""
+                              Name 92  "i64i1D"
+                              Name 102  "i64i2D"
+                              Name 111  "i64i3D"
+                              Name 120  "u64iCube"
+                              Name 127  "u64i1DArray"
+                              Name 133  "u64i2DArray"
+                              Name 136  "ResType"
+                              Name 142  "u64iCubeArray"
                               Decorate 14(i1D) DescriptorSet 0
                               Decorate 14(i1D) Binding 0
                               Decorate 24(i2D) DescriptorSet 0
@@ -42,6 +59,25 @@
                               Decorate 71(uiCubeArray) DescriptorSet 0
                               Decorate 71(uiCubeArray) Binding 6
                               Decorate 77(fragColor) Location 0
+                              MemberDecorate 86(Buf) 0 Offset 0
+                              MemberDecorate 86(Buf) 1 Offset 32
+                              Decorate 86(Buf) BufferBlock
+                              Decorate 88 DescriptorSet 0
+                              Decorate 88 Binding 14
+                              Decorate 92(i64i1D) DescriptorSet 0
+                              Decorate 92(i64i1D) Binding 7
+                              Decorate 102(i64i2D) DescriptorSet 0
+                              Decorate 102(i64i2D) Binding 8
+                              Decorate 111(i64i3D) DescriptorSet 0
+                              Decorate 111(i64i3D) Binding 9
+                              Decorate 120(u64iCube) DescriptorSet 0
+                              Decorate 120(u64iCube) Binding 10
+                              Decorate 127(u64i1DArray) DescriptorSet 0
+                              Decorate 127(u64i1DArray) Binding 11
+                              Decorate 133(u64i2DArray) DescriptorSet 0
+                              Decorate 133(u64i2DArray) Binding 12
+                              Decorate 142(u64iCubeArray) DescriptorSet 0
+                              Decorate 142(u64iCubeArray) Binding 13
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeFloat 32
@@ -88,6 +124,38 @@
  71(uiCubeArray):     70(ptr) Variable UniformConstant
               76:             TypePointer Output 7(fvec4)
    77(fragColor):     76(ptr) Variable Output
+              82:             TypeInt 64 1
+              83:             TypeVector 82(int64_t) 4
+              84:             TypeInt 64 0
+              85:             TypeVector 84(int64_t) 4
+         86(Buf):             TypeStruct 83(i64vec4) 85(i64vec4)
+              87:             TypePointer Uniform 86(Buf)
+              88:     87(ptr) Variable Uniform
+              89:     16(int) Constant 0
+              90:             TypeImage 82(int64_t) 1D nonsampled format:R64i
+              91:             TypePointer UniformConstant 90
+      92(i64i1D):     91(ptr) Variable UniformConstant
+              95:             TypePointer Uniform 83(i64vec4)
+             100:             TypeImage 82(int64_t) 2D nonsampled format:R64i
+             101:             TypePointer UniformConstant 100
+     102(i64i2D):    101(ptr) Variable UniformConstant
+             109:             TypeImage 82(int64_t) 3D nonsampled format:R64i
+             110:             TypePointer UniformConstant 109
+     111(i64i3D):    110(ptr) Variable UniformConstant
+             118:             TypeImage 84(int64_t) Cube nonsampled format:R64ui
+             119:             TypePointer UniformConstant 118
+   120(u64iCube):    119(ptr) Variable UniformConstant
+             122:             TypePointer Uniform 85(i64vec4)
+             125:             TypeImage 84(int64_t) 1D array nonsampled format:R64ui
+             126:             TypePointer UniformConstant 125
+127(u64i1DArray):    126(ptr) Variable UniformConstant
+             131:             TypeImage 84(int64_t) 2D array nonsampled format:R64ui
+             132:             TypePointer UniformConstant 131
+133(u64i2DArray):    132(ptr) Variable UniformConstant
+    136(ResType):             TypeStruct 16(int) 85(i64vec4)
+             140:             TypeImage 84(int64_t) Cube array nonsampled format:R64ui
+             141:             TypePointer UniformConstant 140
+142(u64iCubeArray):    141(ptr) Variable UniformConstant
          4(main):           2 Function None 3
                5:             Label
            9(f4):      8(ptr) Variable Function
@@ -131,5 +199,46 @@
               80:    7(fvec4) ConvertUToF 79
               81:    7(fvec4) FAdd 78 80
                               Store 77(fragColor) 81
+              93:          90 Load 92(i64i1D)
+              94: 83(i64vec4) ImageRead 93 17 Lod 18
+              96:     95(ptr) AccessChain 88 89
+              97: 83(i64vec4) Load 96
+              98: 83(i64vec4) IAdd 97 94
+              99:     95(ptr) AccessChain 88 89
+                              Store 99 98
+             103:         100 Load 102(i64i2D)
+             104: 83(i64vec4) ImageRead 103 28 Lod 18
+             105:     95(ptr) AccessChain 88 89
+             106: 83(i64vec4) Load 105
+             107: 83(i64vec4) IAdd 106 104
+             108:     95(ptr) AccessChain 88 89
+                              Store 108 107
+             112:         109 Load 111(i64i3D)
+             113: 83(i64vec4) ImageRead 112 40 Lod 18
+             114:     95(ptr) AccessChain 88 89
+             115: 83(i64vec4) Load 114
+             116: 83(i64vec4) IAdd 115 113
+             117:     95(ptr) AccessChain 88 89
+                              Store 117 116
+             121:         118 Load 120(u64iCube)
+             123:    122(ptr) AccessChain 88 17
+             124: 85(i64vec4) Load 123
+                              ImageWrite 121 40 124 Lod 18
+             128:         125 Load 127(u64i1DArray)
+             129:    122(ptr) AccessChain 88 17
+             130: 85(i64vec4) Load 129
+                              ImageWrite 128 28 130 Lod 18
+             134:         131 Load 133(u64i2DArray)
+             135:    122(ptr) AccessChain 88 17
+             137:136(ResType) ImageSparseRead 134 40 Lod 18
+             138: 85(i64vec4) CompositeExtract 137 1
+                              Store 135 138
+             139:     16(int) CompositeExtract 137 0
+             143:         140 Load 142(u64iCubeArray)
+             144:    122(ptr) AccessChain 88 17
+             145:136(ResType) ImageSparseRead 143 40 Lod 18
+             146: 85(i64vec4) CompositeExtract 145 1
+                              Store 144 146
+             147:     16(int) CompositeExtract 145 0
                               Return
                               FunctionEnd
diff --git a/Test/baseResults/spv.intcoopmat.comp.out b/Test/baseResults/spv.intcoopmat.comp.out
index e74f44e..6a69743 100644
--- a/Test/baseResults/spv.intcoopmat.comp.out
+++ b/Test/baseResults/spv.intcoopmat.comp.out
@@ -10,8 +10,8 @@
                               Capability VulkanMemoryModelKHR
                               Capability PhysicalStorageBufferAddressesEXT
                               Capability CooperativeMatrixNV
-                              Extension  "SPV_EXT_physical_storage_buffer"
                               Extension  "SPV_KHR_8bit_storage"
+                              Extension  "SPV_KHR_physical_storage_buffer"
                               Extension  "SPV_KHR_storage_buffer_storage_class"
                               Extension  "SPV_KHR_vulkan_memory_model"
                               Extension  "SPV_NV_cooperative_matrix"
diff --git a/Test/baseResults/spv.layer.tese.out b/Test/baseResults/spv.layer.tese.out
new file mode 100644
index 0000000..906340f
--- /dev/null
+++ b/Test/baseResults/spv.layer.tese.out
@@ -0,0 +1,30 @@
+spv.layer.tese
+// Module Version 10000
+// Generated by (magic number): 8000a
+// Id's are bound by 10
+
+                              Capability Tessellation
+                              Capability ShaderViewportIndexLayerNV
+                              Extension  "SPV_EXT_shader_viewport_index_layer"
+               1:             ExtInstImport  "GLSL.std.450"
+                              MemoryModel Logical GLSL450
+                              EntryPoint TessellationEvaluation 4  "main" 8
+                              ExecutionMode 4 Triangles
+                              ExecutionMode 4 SpacingEqual
+                              ExecutionMode 4 VertexOrderCcw
+                              Source GLSL 450
+                              SourceExtension  "GL_ARB_shader_viewport_layer_array"
+                              Name 4  "main"
+                              Name 8  "gl_Layer"
+                              Decorate 8(gl_Layer) BuiltIn Layer
+               2:             TypeVoid
+               3:             TypeFunction 2
+               6:             TypeInt 32 1
+               7:             TypePointer Output 6(int)
+     8(gl_Layer):      7(ptr) Variable Output
+               9:      6(int) Constant 1
+         4(main):           2 Function None 3
+               5:             Label
+                              Store 8(gl_Layer) 9
+                              Return
+                              FunctionEnd
diff --git a/Test/baseResults/spv.meshShaderBuiltins.mesh.out b/Test/baseResults/spv.meshShaderBuiltins.mesh.out
index f0c252a..b26122e 100644
--- a/Test/baseResults/spv.meshShaderBuiltins.mesh.out
+++ b/Test/baseResults/spv.meshShaderBuiltins.mesh.out
@@ -5,7 +5,6 @@
 
                               Capability ClipDistance
                               Capability CullDistance
-                              Capability MultiViewport
                               Capability DrawParameters
                               Capability ShaderViewportMaskNV
                               Capability MeshShadingNV
diff --git a/Test/baseResults/spv.meshShaderPerViewBuiltins.mesh.out b/Test/baseResults/spv.meshShaderPerViewBuiltins.mesh.out
index 907ae28..86a4fd2 100644
--- a/Test/baseResults/spv.meshShaderPerViewBuiltins.mesh.out
+++ b/Test/baseResults/spv.meshShaderPerViewBuiltins.mesh.out
@@ -3,7 +3,6 @@
 // Generated by (magic number): 8000a
 // Id's are bound by 126
 
-                              Capability MultiViewport
                               Capability PerViewAttributesNV
                               Capability MeshShadingNV
                               Extension  "SPV_NVX_multiview_per_view_attributes"
diff --git a/Test/baseResults/spv.meshShaderPerViewUserDefined.mesh.out b/Test/baseResults/spv.meshShaderPerViewUserDefined.mesh.out
index 26e8624..e9eaed3 100644
--- a/Test/baseResults/spv.meshShaderPerViewUserDefined.mesh.out
+++ b/Test/baseResults/spv.meshShaderPerViewUserDefined.mesh.out
@@ -1,5 +1,4 @@
 spv.meshShaderPerViewUserDefined.mesh
-Validation failed
 // Module Version 10000
 // Generated by (magic number): 8000a
 // Id's are bound by 108
diff --git a/Test/baseResults/spv.meshShaderRedeclBuiltins.mesh.out b/Test/baseResults/spv.meshShaderRedeclBuiltins.mesh.out
index 66c3a0d..bfd2d85 100644
--- a/Test/baseResults/spv.meshShaderRedeclBuiltins.mesh.out
+++ b/Test/baseResults/spv.meshShaderRedeclBuiltins.mesh.out
@@ -5,7 +5,6 @@
 
                               Capability ClipDistance
                               Capability CullDistance
-                              Capability MultiViewport
                               Capability ShaderViewportMaskNV
                               Capability MeshShadingNV
                               Extension  "SPV_NV_mesh_shader"
diff --git a/Test/baseResults/spv.nonuniform.frag.out b/Test/baseResults/spv.nonuniform.frag.out
index 8d61619..f6febc9 100644
--- a/Test/baseResults/spv.nonuniform.frag.out
+++ b/Test/baseResults/spv.nonuniform.frag.out
@@ -1,7 +1,7 @@
 spv.nonuniform.frag
 // Module Version 10000
 // Generated by (magic number): 8000a
-// Id's are bound by 212
+// Id's are bound by 289
 
                               Capability Shader
                               Capability InputAttachment
@@ -22,7 +22,7 @@
                               Extension  "SPV_EXT_descriptor_indexing"
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450
-                              EntryPoint Fragment 4  "main" 35 92
+                              EntryPoint Fragment 4  "main" 41 98 188
                               ExecutionMode 4 OriginUpperLeft
                               Source GLSL 450
                               SourceExtension  "GL_EXT_nonuniform_qualifier"
@@ -34,217 +34,268 @@
                               Name 17  "nu_li"
                               Name 18  "param"
                               Name 20  "param"
-                              Name 32  "b"
-                              Name 35  "nu_inv4"
-                              Name 41  "nu_gf"
-                              Name 47  "inputAttachmentDyn"
-                              Name 48  "dyn_i"
-                              Name 64  "uniformTexelBufferDyn"
-                              Name 78  "storageTexelBufferDyn"
-                              Name 87  "uname"
-                              MemberName 87(uname) 0  "a"
-                              Name 90  "uniformBuffer"
-                              Name 92  "nu_ii"
-                              Name 99  "bname"
-                              MemberName 99(bname) 0  "b"
-                              Name 102  "storageBuffer"
-                              Name 112  "sampledImage"
-                              Name 127  "storageImage"
-                              Name 139  "inputAttachment"
-                              Name 149  "uniformTexelBuffer"
-                              Name 160  "storageTexelBuffer"
-                              Name 170  "v"
-                              Name 185  "uv"
-                              Name 195  "m"
-                              Name 203  "S"
-                              MemberName 203(S) 0  "a"
-                              Name 205  "s"
-                              Decorate 9(nupi) DecorationNonUniformEXT
+                              Name 30  "nu_li2"
+                              Name 38  "b"
+                              Name 41  "nu_inv4"
+                              Name 47  "nu_gf"
+                              Name 53  "inputAttachmentDyn"
+                              Name 54  "dyn_i"
+                              Name 70  "uniformTexelBufferDyn"
+                              Name 84  "storageTexelBufferDyn"
+                              Name 93  "uname"
+                              MemberName 93(uname) 0  "a"
+                              Name 96  "uniformBuffer"
+                              Name 98  "nu_ii"
+                              Name 105  "bname"
+                              MemberName 105(bname) 0  "b"
+                              Name 108  "storageBuffer"
+                              Name 118  "sampledImage"
+                              Name 133  "storageImage"
+                              Name 145  "inputAttachment"
+                              Name 155  "uniformTexelBuffer"
+                              Name 166  "storageTexelBuffer"
+                              Name 177  "uniformTexArr"
+                              Name 184  "uniformSampler"
+                              Name 188  "inTexcoord"
+                              Name 207  "v"
+                              Name 222  "uv"
+                              Name 232  "m"
+                              Name 240  "S"
+                              MemberName 240(S) 0  "a"
+                              Name 242  "s"
+                              Name 252  "arr"
+                              Name 259  "um"
+                              Name 268  "US"
+                              MemberName 268(US) 0  "a"
+                              Name 270  "us"
+                              Name 278  "uarr"
                               Decorate 13 DecorationNonUniformEXT
-                              Decorate 17(nu_li) DecorationNonUniformEXT
-                              Decorate 17(nu_li) DecorationNonUniformEXT
                               Decorate 19 DecorationNonUniformEXT
+                              Decorate 21 DecorationNonUniformEXT
+                              Decorate 22 DecorationNonUniformEXT
                               Decorate 24 DecorationNonUniformEXT
                               Decorate 28 DecorationNonUniformEXT
                               Decorate 29 DecorationNonUniformEXT
-                              Decorate 35(nu_inv4) Location 0
-                              Decorate 35(nu_inv4) DecorationNonUniformEXT
-                              Decorate 39 DecorationNonUniformEXT
-                              Decorate 40 DecorationNonUniformEXT
-                              Decorate 41(nu_gf) DecorationNonUniformEXT
-                              Decorate 41(nu_gf) DecorationNonUniformEXT
-                              Decorate 42 DecorationNonUniformEXT
-                              Decorate 43 DecorationNonUniformEXT
-                              Decorate 47(inputAttachmentDyn) DescriptorSet 0
-                              Decorate 47(inputAttachmentDyn) Binding 0
-                              Decorate 47(inputAttachmentDyn) InputAttachmentIndex 0
-                              Decorate 64(uniformTexelBufferDyn) DescriptorSet 0
-                              Decorate 64(uniformTexelBufferDyn) Binding 1
-                              Decorate 78(storageTexelBufferDyn) DescriptorSet 0
-                              Decorate 78(storageTexelBufferDyn) Binding 2
-                              MemberDecorate 87(uname) 0 Offset 0
-                              Decorate 87(uname) Block
-                              Decorate 90(uniformBuffer) DescriptorSet 0
-                              Decorate 90(uniformBuffer) Binding 3
-                              Decorate 92(nu_ii) Flat
-                              Decorate 92(nu_ii) Location 1
-                              Decorate 92(nu_ii) DecorationNonUniformEXT
-                              Decorate 92(nu_ii) DecorationNonUniformEXT
-                              Decorate 93 DecorationNonUniformEXT
-                              Decorate 95 DecorationNonUniformEXT
-                              Decorate 96 DecorationNonUniformEXT
-                              MemberDecorate 99(bname) 0 Offset 0
-                              Decorate 99(bname) BufferBlock
-                              Decorate 102(storageBuffer) DescriptorSet 0
-                              Decorate 102(storageBuffer) Binding 4
-                              Decorate 92(nu_ii) DecorationNonUniformEXT
-                              Decorate 103 DecorationNonUniformEXT
+                              Decorate 34 DecorationNonUniformEXT
+                              Decorate 35 DecorationNonUniformEXT
+                              Decorate 41(nu_inv4) Location 0
+                              Decorate 46 DecorationNonUniformEXT
+                              Decorate 48 DecorationNonUniformEXT
+                              Decorate 49 DecorationNonUniformEXT
+                              Decorate 53(inputAttachmentDyn) DescriptorSet 0
+                              Decorate 53(inputAttachmentDyn) Binding 0
+                              Decorate 53(inputAttachmentDyn) InputAttachmentIndex 0
+                              Decorate 70(uniformTexelBufferDyn) DescriptorSet 0
+                              Decorate 70(uniformTexelBufferDyn) Binding 1
+                              Decorate 84(storageTexelBufferDyn) DescriptorSet 0
+                              Decorate 84(storageTexelBufferDyn) Binding 2
+                              MemberDecorate 93(uname) 0 Offset 0
+                              Decorate 93(uname) Block
+                              Decorate 96(uniformBuffer) DescriptorSet 0
+                              Decorate 96(uniformBuffer) Binding 3
+                              Decorate 98(nu_ii) Flat
+                              Decorate 98(nu_ii) Location 1
+                              Decorate 99 DecorationNonUniformEXT
+                              Decorate 101 DecorationNonUniformEXT
+                              Decorate 102 DecorationNonUniformEXT
                               Decorate 104 DecorationNonUniformEXT
-                              Decorate 105 DecorationNonUniformEXT
-                              Decorate 112(sampledImage) DescriptorSet 0
-                              Decorate 112(sampledImage) Binding 5
-                              Decorate 92(nu_ii) DecorationNonUniformEXT
+                              MemberDecorate 105(bname) 0 Offset 0
+                              Decorate 105(bname) BufferBlock
+                              Decorate 108(storageBuffer) DescriptorSet 0
+                              Decorate 108(storageBuffer) Binding 4
+                              Decorate 109 DecorationNonUniformEXT
+                              Decorate 110 DecorationNonUniformEXT
+                              Decorate 111 DecorationNonUniformEXT
                               Decorate 113 DecorationNonUniformEXT
-                              Decorate 115 DecorationNonUniformEXT
-                              Decorate 116 DecorationNonUniformEXT
-                              Decorate 127(storageImage) DescriptorSet 0
-                              Decorate 127(storageImage) Binding 6
-                              Decorate 92(nu_ii) DecorationNonUniformEXT
-                              Decorate 128 DecorationNonUniformEXT
-                              Decorate 130 DecorationNonUniformEXT
-                              Decorate 131 DecorationNonUniformEXT
-                              Decorate 139(inputAttachment) DescriptorSet 0
-                              Decorate 139(inputAttachment) Binding 7
-                              Decorate 139(inputAttachment) InputAttachmentIndex 1
-                              Decorate 92(nu_ii) DecorationNonUniformEXT
-                              Decorate 140 DecorationNonUniformEXT
-                              Decorate 141 DecorationNonUniformEXT
-                              Decorate 142 DecorationNonUniformEXT
-                              Decorate 149(uniformTexelBuffer) DescriptorSet 0
-                              Decorate 149(uniformTexelBuffer) Binding 8
-                              Decorate 92(nu_ii) DecorationNonUniformEXT
-                              Decorate 150 DecorationNonUniformEXT
-                              Decorate 151 DecorationNonUniformEXT
-                              Decorate 152 DecorationNonUniformEXT
-                              Decorate 160(storageTexelBuffer) DescriptorSet 0
-                              Decorate 160(storageTexelBuffer) Binding 9
-                              Decorate 92(nu_ii) DecorationNonUniformEXT
-                              Decorate 161 DecorationNonUniformEXT
-                              Decorate 162 DecorationNonUniformEXT
-                              Decorate 163 DecorationNonUniformEXT
-                              Decorate 170(v) DecorationNonUniformEXT
-                              Decorate 172 DecorationNonUniformEXT
-                              Decorate 173 DecorationNonUniformEXT
-                              Decorate 174 DecorationNonUniformEXT
-                              Decorate 175 DecorationNonUniformEXT
-                              Decorate 179 DecorationNonUniformEXT
+                              Decorate 118(sampledImage) DescriptorSet 0
+                              Decorate 118(sampledImage) Binding 5
+                              Decorate 119 DecorationNonUniformEXT
+                              Decorate 121 DecorationNonUniformEXT
+                              Decorate 122 DecorationNonUniformEXT
+                              Decorate 133(storageImage) DescriptorSet 0
+                              Decorate 133(storageImage) Binding 6
+                              Decorate 134 DecorationNonUniformEXT
+                              Decorate 136 DecorationNonUniformEXT
+                              Decorate 137 DecorationNonUniformEXT
+                              Decorate 145(inputAttachment) DescriptorSet 0
+                              Decorate 145(inputAttachment) Binding 7
+                              Decorate 145(inputAttachment) InputAttachmentIndex 1
+                              Decorate 146 DecorationNonUniformEXT
+                              Decorate 147 DecorationNonUniformEXT
+                              Decorate 148 DecorationNonUniformEXT
+                              Decorate 155(uniformTexelBuffer) DescriptorSet 0
+                              Decorate 155(uniformTexelBuffer) Binding 8
+                              Decorate 156 DecorationNonUniformEXT
+                              Decorate 157 DecorationNonUniformEXT
+                              Decorate 158 DecorationNonUniformEXT
+                              Decorate 159 DecorationNonUniformEXT
+                              Decorate 166(storageTexelBuffer) DescriptorSet 0
+                              Decorate 166(storageTexelBuffer) Binding 9
+                              Decorate 167 DecorationNonUniformEXT
+                              Decorate 168 DecorationNonUniformEXT
+                              Decorate 169 DecorationNonUniformEXT
+                              Decorate 177(uniformTexArr) DescriptorSet 0
+                              Decorate 177(uniformTexArr) Binding 10
+                              Decorate 178 DecorationNonUniformEXT
                               Decorate 180 DecorationNonUniformEXT
                               Decorate 181 DecorationNonUniformEXT
-                              Decorate 182 DecorationNonUniformEXT
-                              Decorate 92(nu_ii) DecorationNonUniformEXT
-                              Decorate 186 DecorationNonUniformEXT
-                              Decorate 187 DecorationNonUniformEXT
-                              Decorate 188 DecorationNonUniformEXT
-                              Decorate 189 DecorationNonUniformEXT
-                              Decorate 190 DecorationNonUniformEXT
-                              Decorate 195(m) DecorationNonUniformEXT
+                              Decorate 184(uniformSampler) DescriptorSet 0
+                              Decorate 184(uniformSampler) Binding 11
+                              Decorate 188(inTexcoord) Location 2
+                              Decorate 194 DecorationNonUniformEXT
+                              Decorate 195 DecorationNonUniformEXT
                               Decorate 196 DecorationNonUniformEXT
-                              Decorate 197 DecorationNonUniformEXT
-                              Decorate 205(s) DecorationNonUniformEXT
-                              Decorate 206 DecorationNonUniformEXT
-                              Decorate 207 DecorationNonUniformEXT
-                              Decorate 208 DecorationNonUniformEXT
-                              Decorate 209 DecorationNonUniformEXT
+                              Decorate 199 DecorationNonUniformEXT
+                              Decorate 210 DecorationNonUniformEXT
+                              Decorate 211 DecorationNonUniformEXT
+                              Decorate 212 DecorationNonUniformEXT
+                              Decorate 214 DecorationNonUniformEXT
+                              Decorate 217 DecorationNonUniformEXT
+                              Decorate 218 DecorationNonUniformEXT
+                              Decorate 219 DecorationNonUniformEXT
+                              Decorate 221 DecorationNonUniformEXT
+                              Decorate 223 DecorationNonUniformEXT
+                              Decorate 224 DecorationNonUniformEXT
+                              Decorate 225 DecorationNonUniformEXT
+                              Decorate 226 DecorationNonUniformEXT
+                              Decorate 227 DecorationNonUniformEXT
+                              Decorate 229 DecorationNonUniformEXT
+                              Decorate 234 DecorationNonUniformEXT
+                              Decorate 244 DecorationNonUniformEXT
+                              Decorate 245 DecorationNonUniformEXT
+                              Decorate 246 DecorationNonUniformEXT
+                              Decorate 248 DecorationNonUniformEXT
+                              Decorate 254 DecorationNonUniformEXT
+                              Decorate 255 DecorationNonUniformEXT
+                              Decorate 256 DecorationNonUniformEXT
+                              Decorate 258 DecorationNonUniformEXT
+                              Decorate 260 DecorationNonUniformEXT
+                              Decorate 261 DecorationNonUniformEXT
+                              Decorate 262 DecorationNonUniformEXT
+                              Decorate 271 DecorationNonUniformEXT
+                              Decorate 272 DecorationNonUniformEXT
+                              Decorate 273 DecorationNonUniformEXT
+                              Decorate 274 DecorationNonUniformEXT
+                              Decorate 275 DecorationNonUniformEXT
+                              Decorate 277 DecorationNonUniformEXT
+                              Decorate 279 DecorationNonUniformEXT
+                              Decorate 280 DecorationNonUniformEXT
+                              Decorate 281 DecorationNonUniformEXT
+                              Decorate 282 DecorationNonUniformEXT
+                              Decorate 283 DecorationNonUniformEXT
+                              Decorate 285 DecorationNonUniformEXT
+                              Decorate 286 DecorationNonUniformEXT
+                              Decorate 288 DecorationNonUniformEXT
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeInt 32 1
                7:             TypePointer Function 6(int)
                8:             TypeFunction 6(int) 7(ptr) 7(ptr)
               26:      6(int) Constant 2
-              30:             TypeFloat 32
-              31:             TypePointer Function 30(float)
-              33:             TypeVector 30(float) 4
-              34:             TypePointer Input 33(fvec4)
-     35(nu_inv4):     34(ptr) Variable Input
-              36:             TypeInt 32 0
-              37:     36(int) Constant 0
-              38:             TypePointer Input 30(float)
-              44:             TypeImage 30(float) SubpassData nonsampled format:Unknown
-              45:             TypeRuntimeArray 44
-              46:             TypePointer UniformConstant 45
-47(inputAttachmentDyn):     46(ptr) Variable UniformConstant
-              50:             TypePointer UniformConstant 44
-              53:      6(int) Constant 0
-              54:             TypeVector 6(int) 2
-              55:   54(ivec2) ConstantComposite 53 53
-              60:             TypeImage 30(float) Buffer sampled format:Unknown
-              61:             TypeSampledImage 60
-              62:             TypeRuntimeArray 61
-              63:             TypePointer UniformConstant 62
-64(uniformTexelBufferDyn):     63(ptr) Variable UniformConstant
-              66:             TypePointer UniformConstant 61
-              69:      6(int) Constant 1
-              75:             TypeImage 30(float) Buffer nonsampled format:R32f
-              76:             TypeRuntimeArray 75
-              77:             TypePointer UniformConstant 76
-78(storageTexelBufferDyn):     77(ptr) Variable UniformConstant
-              80:             TypePointer UniformConstant 75
-       87(uname):             TypeStruct 30(float)
-              88:             TypeRuntimeArray 87(uname)
-              89:             TypePointer Uniform 88
-90(uniformBuffer):     89(ptr) Variable Uniform
-              91:             TypePointer Input 6(int)
-       92(nu_ii):     91(ptr) Variable Input
-              94:             TypePointer Uniform 30(float)
-       99(bname):             TypeStruct 30(float)
-             100:             TypeRuntimeArray 99(bname)
-             101:             TypePointer Uniform 100
-102(storageBuffer):    101(ptr) Variable Uniform
-             108:             TypeImage 30(float) 2D sampled format:Unknown
-             109:             TypeSampledImage 108
-             110:             TypeRuntimeArray 109
-             111:             TypePointer UniformConstant 110
-112(sampledImage):    111(ptr) Variable UniformConstant
-             114:             TypePointer UniformConstant 109
-             117:             TypeVector 30(float) 2
-             118:   30(float) Constant 1056964608
-             119:  117(fvec2) ConstantComposite 118 118
-             124:             TypeImage 30(float) 2D nonsampled format:R32f
-             125:             TypeRuntimeArray 124
-             126:             TypePointer UniformConstant 125
-127(storageImage):    126(ptr) Variable UniformConstant
-             129:             TypePointer UniformConstant 124
-             132:   54(ivec2) ConstantComposite 69 69
-             137:             TypeRuntimeArray 44
-             138:             TypePointer UniformConstant 137
-139(inputAttachment):    138(ptr) Variable UniformConstant
-             147:             TypeRuntimeArray 61
-             148:             TypePointer UniformConstant 147
-149(uniformTexelBuffer):    148(ptr) Variable UniformConstant
-             158:             TypeRuntimeArray 75
-             159:             TypePointer UniformConstant 158
-160(storageTexelBuffer):    159(ptr) Variable UniformConstant
-             168:             TypeVector 6(int) 4
-             169:             TypePointer Function 168(ivec4)
-             171:     36(int) Constant 1
-             178:     36(int) Constant 2
-             193:             TypeMatrix 33(fvec4) 4
-             194:             TypePointer Function 193
-          203(S):             TypeStruct 6(int)
-             204:             TypePointer Function 203(S)
+              36:             TypeFloat 32
+              37:             TypePointer Function 36(float)
+              39:             TypeVector 36(float) 4
+              40:             TypePointer Input 39(fvec4)
+     41(nu_inv4):     40(ptr) Variable Input
+              42:             TypeInt 32 0
+              43:     42(int) Constant 0
+              44:             TypePointer Input 36(float)
+              50:             TypeImage 36(float) SubpassData nonsampled format:Unknown
+              51:             TypeRuntimeArray 50
+              52:             TypePointer UniformConstant 51
+53(inputAttachmentDyn):     52(ptr) Variable UniformConstant
+              56:             TypePointer UniformConstant 50
+              59:      6(int) Constant 0
+              60:             TypeVector 6(int) 2
+              61:   60(ivec2) ConstantComposite 59 59
+              66:             TypeImage 36(float) Buffer sampled format:Unknown
+              67:             TypeSampledImage 66
+              68:             TypeRuntimeArray 67
+              69:             TypePointer UniformConstant 68
+70(uniformTexelBufferDyn):     69(ptr) Variable UniformConstant
+              72:             TypePointer UniformConstant 67
+              75:      6(int) Constant 1
+              81:             TypeImage 36(float) Buffer nonsampled format:R32f
+              82:             TypeRuntimeArray 81
+              83:             TypePointer UniformConstant 82
+84(storageTexelBufferDyn):     83(ptr) Variable UniformConstant
+              86:             TypePointer UniformConstant 81
+       93(uname):             TypeStruct 36(float)
+              94:             TypeRuntimeArray 93(uname)
+              95:             TypePointer Uniform 94
+96(uniformBuffer):     95(ptr) Variable Uniform
+              97:             TypePointer Input 6(int)
+       98(nu_ii):     97(ptr) Variable Input
+             100:             TypePointer Uniform 36(float)
+      105(bname):             TypeStruct 36(float)
+             106:             TypeRuntimeArray 105(bname)
+             107:             TypePointer Uniform 106
+108(storageBuffer):    107(ptr) Variable Uniform
+             114:             TypeImage 36(float) 2D sampled format:Unknown
+             115:             TypeSampledImage 114
+             116:             TypeRuntimeArray 115
+             117:             TypePointer UniformConstant 116
+118(sampledImage):    117(ptr) Variable UniformConstant
+             120:             TypePointer UniformConstant 115
+             123:             TypeVector 36(float) 2
+             124:   36(float) Constant 1056964608
+             125:  123(fvec2) ConstantComposite 124 124
+             130:             TypeImage 36(float) 2D nonsampled format:R32f
+             131:             TypeRuntimeArray 130
+             132:             TypePointer UniformConstant 131
+133(storageImage):    132(ptr) Variable UniformConstant
+             135:             TypePointer UniformConstant 130
+             138:   60(ivec2) ConstantComposite 75 75
+             143:             TypeRuntimeArray 50
+             144:             TypePointer UniformConstant 143
+145(inputAttachment):    144(ptr) Variable UniformConstant
+             153:             TypeRuntimeArray 67
+             154:             TypePointer UniformConstant 153
+155(uniformTexelBuffer):    154(ptr) Variable UniformConstant
+             164:             TypeRuntimeArray 81
+             165:             TypePointer UniformConstant 164
+166(storageTexelBuffer):    165(ptr) Variable UniformConstant
+             174:     42(int) Constant 8
+             175:             TypeArray 114 174
+             176:             TypePointer UniformConstant 175
+177(uniformTexArr):    176(ptr) Variable UniformConstant
+             179:             TypePointer UniformConstant 114
+             182:             TypeSampler
+             183:             TypePointer UniformConstant 182
+184(uniformSampler):    183(ptr) Variable UniformConstant
+             187:             TypePointer Input 123(fvec2)
+ 188(inTexcoord):    187(ptr) Variable Input
+             205:             TypeVector 6(int) 4
+             206:             TypePointer Function 205(ivec4)
+             208:     42(int) Constant 1
+             215:     42(int) Constant 2
+             230:             TypeMatrix 39(fvec4) 4
+             231:             TypePointer Function 230
+          240(S):             TypeStruct 6(int)
+             241:             TypePointer Function 240(S)
+             249:     42(int) Constant 10
+             250:             TypeArray 6(int) 249
+             251:             TypePointer Function 250
+         268(US):             TypeStruct 250
+             269:             TypePointer Function 268(US)
          4(main):           2 Function None 3
                5:             Label
            16(a):      7(ptr) Variable Function
        17(nu_li):      7(ptr) Variable Function
        18(param):      7(ptr) Variable Function
        20(param):      7(ptr) Variable Function
-           32(b):     31(ptr) Variable Function
-       41(nu_gf):     31(ptr) Variable Function
-       48(dyn_i):      7(ptr) Variable Function
-          170(v):    169(ptr) Variable Function
-         185(uv):    169(ptr) Variable Function
-          195(m):    194(ptr) Variable Function
-          205(s):    204(ptr) Variable Function
+      30(nu_li2):      7(ptr) Variable Function
+           38(b):     37(ptr) Variable Function
+       47(nu_gf):     37(ptr) Variable Function
+       54(dyn_i):      7(ptr) Variable Function
+          207(v):    206(ptr) Variable Function
+         222(uv):    206(ptr) Variable Function
+          232(m):    231(ptr) Variable Function
+          242(s):    241(ptr) Variable Function
+        252(arr):    251(ptr) Variable Function
+         259(um):    231(ptr) Variable Function
+         270(us):    269(ptr) Variable Function
+       278(uarr):    251(ptr) Variable Function
               19:      6(int) Load 17(nu_li)
                               Store 18(param) 19
               21:      6(int) FunctionCall 11(foo(i1;i1;) 18(param) 20(param)
@@ -258,126 +309,191 @@
               28:      6(int) CopyObject 27
               29:      6(int) IAdd 24 28
                               Store 17(nu_li) 29
-              39:     38(ptr) AccessChain 35(nu_inv4) 37
-              40:   30(float) Load 39
-              42:   30(float) Load 41(nu_gf)
-              43:   30(float) FMul 40 42
-                              Store 32(b) 43
-              49:      6(int) Load 48(dyn_i)
-              51:     50(ptr) AccessChain 47(inputAttachmentDyn) 49
-              52:          44 Load 51
-              56:   33(fvec4) ImageRead 52 55
-              57:   30(float) CompositeExtract 56 0
-              58:   30(float) Load 32(b)
-              59:   30(float) FAdd 58 57
-                              Store 32(b) 59
-              65:      6(int) Load 48(dyn_i)
-              67:     66(ptr) AccessChain 64(uniformTexelBufferDyn) 65
-              68:          61 Load 67
-              70:          60 Image 68
-              71:   33(fvec4) ImageFetch 70 69
-              72:   30(float) CompositeExtract 71 0
-              73:   30(float) Load 32(b)
-              74:   30(float) FAdd 73 72
-                              Store 32(b) 74
-              79:      6(int) Load 48(dyn_i)
-              81:     80(ptr) AccessChain 78(storageTexelBufferDyn) 79
-              82:          75 Load 81
-              83:   33(fvec4) ImageRead 82 69
-              84:   30(float) CompositeExtract 83 0
-              85:   30(float) Load 32(b)
-              86:   30(float) FAdd 85 84
-                              Store 32(b) 86
-              93:      6(int) Load 92(nu_ii)
-              95:     94(ptr) AccessChain 90(uniformBuffer) 93 53
-              96:   30(float) Load 95
-              97:   30(float) Load 32(b)
-              98:   30(float) FAdd 97 96
-                              Store 32(b) 98
-             103:      6(int) Load 92(nu_ii)
-             104:     94(ptr) AccessChain 102(storageBuffer) 103 53
-             105:   30(float) Load 104
-             106:   30(float) Load 32(b)
-             107:   30(float) FAdd 106 105
-                              Store 32(b) 107
-             113:      6(int) Load 92(nu_ii)
-             115:    114(ptr) AccessChain 112(sampledImage) 113
-             116:         109 Load 115
-             120:   33(fvec4) ImageSampleImplicitLod 116 119
-             121:   30(float) CompositeExtract 120 0
-             122:   30(float) Load 32(b)
-             123:   30(float) FAdd 122 121
-                              Store 32(b) 123
-             128:      6(int) Load 92(nu_ii)
-             130:    129(ptr) AccessChain 127(storageImage) 128
-             131:         124 Load 130
-             133:   33(fvec4) ImageRead 131 132
-             134:   30(float) CompositeExtract 133 0
-             135:   30(float) Load 32(b)
-             136:   30(float) FAdd 135 134
-                              Store 32(b) 136
-             140:      6(int) Load 92(nu_ii)
-             141:     50(ptr) AccessChain 139(inputAttachment) 140
-             142:          44 Load 141
-             143:   33(fvec4) ImageRead 142 55
-             144:   30(float) CompositeExtract 143 0
-             145:   30(float) Load 32(b)
-             146:   30(float) FAdd 145 144
-                              Store 32(b) 146
-             150:      6(int) Load 92(nu_ii)
-             151:     66(ptr) AccessChain 149(uniformTexelBuffer) 150
-             152:          61 Load 151
-             153:          60 Image 152
-             154:   33(fvec4) ImageFetch 153 69
-             155:   30(float) CompositeExtract 154 0
-             156:   30(float) Load 32(b)
-             157:   30(float) FAdd 156 155
-                              Store 32(b) 157
-             161:      6(int) Load 92(nu_ii)
-             162:     80(ptr) AccessChain 160(storageTexelBuffer) 161
-             163:          75 Load 162
-             164:   33(fvec4) ImageRead 163 69
-             165:   30(float) CompositeExtract 164 0
-             166:   30(float) Load 32(b)
-             167:   30(float) FAdd 166 165
-                              Store 32(b) 167
-             172:      7(ptr) AccessChain 170(v) 171
-             173:      6(int) Load 172
-             174:     94(ptr) AccessChain 90(uniformBuffer) 173 53
-             175:   30(float) Load 174
-             176:   30(float) Load 32(b)
-             177:   30(float) FAdd 176 175
-                              Store 32(b) 177
-             179:      7(ptr) AccessChain 170(v) 178
-             180:      6(int) Load 179
-             181:     94(ptr) AccessChain 90(uniformBuffer) 180 53
-             182:   30(float) Load 181
-             183:   30(float) Load 32(b)
-             184:   30(float) FAdd 183 182
-                              Store 32(b) 184
-             186:      6(int) Load 92(nu_ii)
-             187:      7(ptr) AccessChain 185(uv) 186
-             188:      6(int) Load 187
-             189:     94(ptr) AccessChain 90(uniformBuffer) 188 53
-             190:   30(float) Load 189
-             191:   30(float) Load 32(b)
-             192:   30(float) FAdd 191 190
-                              Store 32(b) 192
-             196:     31(ptr) AccessChain 195(m) 26 178
-             197:   30(float) Load 196
-             198:      6(int) ConvertFToS 197
-             199:     94(ptr) AccessChain 90(uniformBuffer) 198 53
-             200:   30(float) Load 199
-             201:   30(float) Load 32(b)
-             202:   30(float) FAdd 201 200
-                              Store 32(b) 202
-             206:      7(ptr) AccessChain 205(s) 53
-             207:      6(int) Load 206
-             208:     94(ptr) AccessChain 90(uniformBuffer) 207 53
-             209:   30(float) Load 208
-             210:   30(float) Load 32(b)
-             211:   30(float) FAdd 210 209
-                              Store 32(b) 211
+              31:      6(int) Load 16(a)
+              32:      6(int) Load 16(a)
+              33:      6(int) IMul 32 26
+              34:      6(int) CopyObject 33
+              35:      6(int) IAdd 31 34
+                              Store 30(nu_li2) 35
+              45:     44(ptr) AccessChain 41(nu_inv4) 43
+              46:   36(float) Load 45
+              48:   36(float) Load 47(nu_gf)
+              49:   36(float) FMul 46 48
+                              Store 38(b) 49
+              55:      6(int) Load 54(dyn_i)
+              57:     56(ptr) AccessChain 53(inputAttachmentDyn) 55
+              58:          50 Load 57
+              62:   39(fvec4) ImageRead 58 61
+              63:   36(float) CompositeExtract 62 0
+              64:   36(float) Load 38(b)
+              65:   36(float) FAdd 64 63
+                              Store 38(b) 65
+              71:      6(int) Load 54(dyn_i)
+              73:     72(ptr) AccessChain 70(uniformTexelBufferDyn) 71
+              74:          67 Load 73
+              76:          66 Image 74
+              77:   39(fvec4) ImageFetch 76 75
+              78:   36(float) CompositeExtract 77 0
+              79:   36(float) Load 38(b)
+              80:   36(float) FAdd 79 78
+                              Store 38(b) 80
+              85:      6(int) Load 54(dyn_i)
+              87:     86(ptr) AccessChain 84(storageTexelBufferDyn) 85
+              88:          81 Load 87
+              89:   39(fvec4) ImageRead 88 75
+              90:   36(float) CompositeExtract 89 0
+              91:   36(float) Load 38(b)
+              92:   36(float) FAdd 91 90
+                              Store 38(b) 92
+              99:      6(int) Load 98(nu_ii)
+             101:    100(ptr) AccessChain 96(uniformBuffer) 99 59
+             102:   36(float) Load 101
+             103:   36(float) Load 38(b)
+             104:   36(float) FAdd 103 102
+                              Store 38(b) 104
+             109:      6(int) Load 98(nu_ii)
+             110:    100(ptr) AccessChain 108(storageBuffer) 109 59
+             111:   36(float) Load 110
+             112:   36(float) Load 38(b)
+             113:   36(float) FAdd 112 111
+                              Store 38(b) 113
+             119:      6(int) Load 98(nu_ii)
+             121:    120(ptr) AccessChain 118(sampledImage) 119
+             122:         115 Load 121
+             126:   39(fvec4) ImageSampleImplicitLod 122 125
+             127:   36(float) CompositeExtract 126 0
+             128:   36(float) Load 38(b)
+             129:   36(float) FAdd 128 127
+                              Store 38(b) 129
+             134:      6(int) Load 98(nu_ii)
+             136:    135(ptr) AccessChain 133(storageImage) 134
+             137:         130 Load 136
+             139:   39(fvec4) ImageRead 137 138
+             140:   36(float) CompositeExtract 139 0
+             141:   36(float) Load 38(b)
+             142:   36(float) FAdd 141 140
+                              Store 38(b) 142
+             146:      6(int) Load 98(nu_ii)
+             147:     56(ptr) AccessChain 145(inputAttachment) 146
+             148:          50 Load 147
+             149:   39(fvec4) ImageRead 148 61
+             150:   36(float) CompositeExtract 149 0
+             151:   36(float) Load 38(b)
+             152:   36(float) FAdd 151 150
+                              Store 38(b) 152
+             156:      6(int) Load 98(nu_ii)
+             157:     72(ptr) AccessChain 155(uniformTexelBuffer) 156
+             158:          67 Load 157
+             159:          66 Image 158
+             160:   39(fvec4) ImageFetch 159 75
+             161:   36(float) CompositeExtract 160 0
+             162:   36(float) Load 38(b)
+             163:   36(float) FAdd 162 161
+                              Store 38(b) 163
+             167:      6(int) Load 98(nu_ii)
+             168:     86(ptr) AccessChain 166(storageTexelBuffer) 167
+             169:          81 Load 168
+             170:   39(fvec4) ImageRead 169 75
+             171:   36(float) CompositeExtract 170 0
+             172:   36(float) Load 38(b)
+             173:   36(float) FAdd 172 171
+                              Store 38(b) 173
+             178:      6(int) Load 98(nu_ii)
+             180:    179(ptr) AccessChain 177(uniformTexArr) 178
+             181:         114 Load 180
+             185:         182 Load 184(uniformSampler)
+             186:         115 SampledImage 181 185
+             189:  123(fvec2) Load 188(inTexcoord)
+             190:   39(fvec4) ImageSampleImplicitLod 186 189
+             191:   36(float) CompositeExtract 190 0
+             192:   36(float) Load 38(b)
+             193:   36(float) FAdd 192 191
+                              Store 38(b) 193
+             194:      6(int) Load 98(nu_ii)
+             195:    179(ptr) AccessChain 177(uniformTexArr) 194
+             196:         114 Load 195
+             197:         182 Load 184(uniformSampler)
+             198:         115 SampledImage 196 197
+             199:         115 CopyObject 198
+             200:  123(fvec2) Load 188(inTexcoord)
+             201:   39(fvec4) ImageSampleImplicitLod 199 200
+             202:   36(float) CompositeExtract 201 0
+             203:   36(float) Load 38(b)
+             204:   36(float) FAdd 203 202
+                              Store 38(b) 204
+             209:      7(ptr) AccessChain 207(v) 208
+             210:      6(int) Load 209
+             211:    100(ptr) AccessChain 96(uniformBuffer) 210 59
+             212:   36(float) Load 211
+             213:   36(float) Load 38(b)
+             214:   36(float) FAdd 213 212
+                              Store 38(b) 214
+             216:      7(ptr) AccessChain 207(v) 215
+             217:      6(int) Load 216
+             218:    100(ptr) AccessChain 96(uniformBuffer) 217 59
+             219:   36(float) Load 218
+             220:   36(float) Load 38(b)
+             221:   36(float) FAdd 220 219
+                              Store 38(b) 221
+             223:      6(int) Load 98(nu_ii)
+             224:      7(ptr) AccessChain 222(uv) 223
+             225:      6(int) Load 224
+             226:    100(ptr) AccessChain 96(uniformBuffer) 225 59
+             227:   36(float) Load 226
+             228:   36(float) Load 38(b)
+             229:   36(float) FAdd 228 227
+                              Store 38(b) 229
+             233:     37(ptr) AccessChain 232(m) 26 215
+             234:   36(float) Load 233
+             235:      6(int) ConvertFToS 234
+             236:    100(ptr) AccessChain 96(uniformBuffer) 235 59
+             237:   36(float) Load 236
+             238:   36(float) Load 38(b)
+             239:   36(float) FAdd 238 237
+                              Store 38(b) 239
+             243:      7(ptr) AccessChain 242(s) 59
+             244:      6(int) Load 243
+             245:    100(ptr) AccessChain 96(uniformBuffer) 244 59
+             246:   36(float) Load 245
+             247:   36(float) Load 38(b)
+             248:   36(float) FAdd 247 246
+                              Store 38(b) 248
+             253:      7(ptr) AccessChain 252(arr) 26
+             254:      6(int) Load 253
+             255:    100(ptr) AccessChain 96(uniformBuffer) 254 59
+             256:   36(float) Load 255
+             257:   36(float) Load 38(b)
+             258:   36(float) FAdd 257 256
+                              Store 38(b) 258
+             260:      6(int) Load 98(nu_ii)
+             261:     37(ptr) AccessChain 259(um) 260 215
+             262:   36(float) Load 261
+             263:      6(int) ConvertFToS 262
+             264:    100(ptr) AccessChain 96(uniformBuffer) 263 59
+             265:   36(float) Load 264
+             266:   36(float) Load 38(b)
+             267:   36(float) FAdd 266 265
+                              Store 38(b) 267
+             271:      6(int) Load 98(nu_ii)
+             272:      7(ptr) AccessChain 270(us) 59 271
+             273:      6(int) Load 272
+             274:    100(ptr) AccessChain 96(uniformBuffer) 273 59
+             275:   36(float) Load 274
+             276:   36(float) Load 38(b)
+             277:   36(float) FAdd 276 275
+                              Store 38(b) 277
+             279:      6(int) Load 98(nu_ii)
+             280:      7(ptr) AccessChain 278(uarr) 279
+             281:      6(int) Load 280
+             282:    100(ptr) AccessChain 96(uniformBuffer) 281 59
+             283:   36(float) Load 282
+             284:   36(float) Load 38(b)
+             285:   36(float) FAdd 284 283
+                              Store 38(b) 285
+             286:      6(int) Load 98(nu_ii)
+             287:   36(float) Load 38(b)
+             288:    100(ptr) AccessChain 108(storageBuffer) 286 59
+                              Store 288 287
                               Return
                               FunctionEnd
   11(foo(i1;i1;):      6(int) Function None 8
diff --git a/Test/baseResults/spv.nonuniform4.frag.out b/Test/baseResults/spv.nonuniform4.frag.out
index 92cbd36..6bfc957 100644
--- a/Test/baseResults/spv.nonuniform4.frag.out
+++ b/Test/baseResults/spv.nonuniform4.frag.out
@@ -23,6 +23,7 @@
                               Decorate 13(rIndex) Flat
                               Decorate 13(rIndex) Location 3
                               Decorate 15 DecorationNonUniformEXT
+                              Decorate 17 DecorationNonUniformEXT
                               Decorate 21 DecorationNonUniformEXT
                2:             TypeVoid
                3:             TypeFunction 2
diff --git a/Test/baseResults/spv.nullInit.comp.out b/Test/baseResults/spv.nullInit.comp.out
new file mode 100755
index 0000000..b7908b5
--- /dev/null
+++ b/Test/baseResults/spv.nullInit.comp.out
@@ -0,0 +1,65 @@
+spv.nullInit.comp
+// Module Version 10000
+// Generated by (magic number): 8000a
+// Id's are bound by 37
+
+                              Capability Shader
+               1:             ExtInstImport  "GLSL.std.450"
+                              MemoryModel Logical GLSL450
+                              EntryPoint GLCompute 4  "main"
+                              ExecutionMode 4 LocalSize 1 1 1
+                              Source GLSL 460
+                              SourceExtension  "GL_EXT_null_initializer"
+                              Name 4  "main"
+                              Name 12  "S"
+                              MemberName 12(S) 0  "v"
+                              MemberName 12(S) 1  "a"
+                              Name 15  "local"
+                              Name 23  "f"
+                              Name 24  "T"
+                              MemberName 24(T) 0  "b"
+                              MemberName 24(T) 1  "s"
+                              Name 27  "t1"
+                              Name 28  "t2"
+                              Name 30  "s"
+                              Name 31  "g"
+                              Name 34  "i"
+                              Name 36  "global"
+               2:             TypeVoid
+               3:             TypeFunction 2
+               6:             TypeFloat 32
+               7:             TypeVector 6(float) 3
+               8:             TypeInt 32 0
+               9:      8(int) Constant 4
+              10:             TypeArray 7(fvec3) 9
+              11:             TypeInt 32 1
+           12(S):             TypeStruct 10 11(int)
+              13:       12(S) ConstantNull
+              14:             TypePointer Function 12(S)
+              16:     11(int) Constant 1
+              17:             TypePointer Function 11(int)
+              21:    6(float) ConstantNull
+              22:             TypePointer Workgroup 6(float)
+           23(f):     22(ptr) Variable Workgroup 21
+           24(T):             TypeStruct 11(int) 12(S)
+              25:       24(T) ConstantNull
+              26:             TypePointer Workgroup 24(T)
+          27(t1):     26(ptr) Variable Workgroup 25
+          28(t2):     26(ptr) Variable Workgroup 25
+              29:             TypePointer Workgroup 12(S)
+           30(s):     29(ptr) Variable Workgroup 13
+           31(g):     22(ptr) Variable Workgroup 21
+              32:     11(int) ConstantNull
+              33:             TypePointer Workgroup 11(int)
+           34(i):     33(ptr) Variable Workgroup 32
+              35:             TypePointer Private 12(S)
+      36(global):     35(ptr) Variable Private 13
+         4(main):           2 Function None 3
+               5:             Label
+       15(local):     14(ptr) Variable Function 13
+              18:     17(ptr) AccessChain 15(local) 16
+              19:     11(int) Load 18
+              20:     11(int) IAdd 19 16
+                              Store 18 20
+                              Return
+                              FunctionEnd
diff --git a/Test/baseResults/spv.paramMemory.420.frag.out b/Test/baseResults/spv.paramMemory.420.frag.out
new file mode 100644
index 0000000..4cdc35f
--- /dev/null
+++ b/Test/baseResults/spv.paramMemory.420.frag.out
@@ -0,0 +1,139 @@
+spv.paramMemory.420.frag
+Validation failed
+// Module Version 10000
+// Generated by (magic number): 8000a
+// Id's are bound by 69
+
+                              Capability Shader
+                              Capability StorageImageReadWithoutFormat
+                              Capability StorageImageWriteWithoutFormat
+               1:             ExtInstImport  "GLSL.std.450"
+                              MemoryModel Logical GLSL450
+                              EntryPoint Fragment 4  "main" 27 66
+                              ExecutionMode 4 OriginUpperLeft
+                              Source GLSL 420
+                              SourceExtension  "GL_EXT_shader_image_load_formatted"
+                              Name 4  "main"
+                              Name 16  "image_load(I21;vi2;"
+                              Name 14  "image"
+                              Name 15  "coords"
+                              Name 23  "image_store(I21;vi2;vf4;"
+                              Name 20  "image"
+                              Name 21  "coords"
+                              Name 22  "data"
+                              Name 27  "in_coords"
+                              Name 35  "read1"
+                              Name 36  "image1"
+                              Name 37  "param"
+                              Name 40  "read2"
+                              Name 41  "image2"
+                              Name 42  "param"
+                              Name 47  "image3"
+                              Name 51  "param"
+                              Name 53  "param"
+                              Name 57  "image4"
+                              Name 61  "param"
+                              Name 63  "param"
+                              Name 66  "out_color"
+                              Decorate 14(image) Coherent
+                              Decorate 14(image) NonWritable
+                              Decorate 20(image) Coherent
+                              Decorate 20(image) NonReadable
+                              Decorate 27(in_coords) Flat
+                              Decorate 27(in_coords) Location 0
+                              Decorate 36(image1) DescriptorSet 0
+                              Decorate 36(image1) Binding 0
+                              Decorate 36(image1) Coherent
+                              Decorate 36(image1) NonWritable
+                              Decorate 41(image2) DescriptorSet 0
+                              Decorate 41(image2) Binding 2
+                              Decorate 41(image2) NonWritable
+                              Decorate 47(image3) DescriptorSet 0
+                              Decorate 47(image3) Binding 1
+                              Decorate 47(image3) Coherent
+                              Decorate 47(image3) NonReadable
+                              Decorate 57(image4) DescriptorSet 0
+                              Decorate 57(image4) Binding 3
+                              Decorate 57(image4) NonReadable
+                              Decorate 66(out_color) Location 0
+               2:             TypeVoid
+               3:             TypeFunction 2
+               6:             TypeFloat 32
+               7:             TypeImage 6(float) 2D nonsampled format:Unknown
+               8:             TypePointer UniformConstant 7
+               9:             TypeInt 32 1
+              10:             TypeVector 9(int) 2
+              11:             TypePointer Function 10(ivec2)
+              12:             TypeVector 6(float) 4
+              13:             TypeFunction 12(fvec4) 8(ptr) 11(ptr)
+              18:             TypePointer Function 12(fvec4)
+              19:             TypeFunction 2 8(ptr) 11(ptr) 18(ptr)
+              26:             TypePointer Input 10(ivec2)
+   27(in_coords):     26(ptr) Variable Input
+      36(image1):      8(ptr) Variable UniformConstant
+      41(image2):      8(ptr) Variable UniformConstant
+              45:             TypeImage 6(float) 2D nonsampled format:Rgba32f
+              46:             TypePointer UniformConstant 45
+      47(image3):     46(ptr) Variable UniformConstant
+              49:    6(float) Constant 1056964608
+              55:             TypeImage 6(float) 2D nonsampled format:Rgba16f
+              56:             TypePointer UniformConstant 55
+      57(image4):     56(ptr) Variable UniformConstant
+              59:    6(float) Constant 1073741824
+              65:             TypePointer Output 12(fvec4)
+   66(out_color):     65(ptr) Variable Output
+              67:    6(float) Constant 0
+              68:   12(fvec4) ConstantComposite 67 67 67 67
+         4(main):           2 Function None 3
+               5:             Label
+       35(read1):     18(ptr) Variable Function
+       37(param):     11(ptr) Variable Function
+       40(read2):     18(ptr) Variable Function
+       42(param):     11(ptr) Variable Function
+       51(param):     11(ptr) Variable Function
+       53(param):     18(ptr) Variable Function
+       61(param):     11(ptr) Variable Function
+       63(param):     18(ptr) Variable Function
+              38:   10(ivec2) Load 27(in_coords)
+                              Store 37(param) 38
+              39:   12(fvec4) FunctionCall 16(image_load(I21;vi2;) 36(image1) 37(param)
+                              Store 35(read1) 39
+              43:   10(ivec2) Load 27(in_coords)
+                              Store 42(param) 43
+              44:   12(fvec4) FunctionCall 16(image_load(I21;vi2;) 41(image2) 42(param)
+                              Store 40(read2) 44
+              48:   12(fvec4) Load 35(read1)
+              50:   12(fvec4) VectorTimesScalar 48 49
+              52:   10(ivec2) Load 27(in_coords)
+                              Store 51(param) 52
+                              Store 53(param) 50
+              54:           2 FunctionCall 23(image_store(I21;vi2;vf4;) 47(image3) 51(param) 53(param)
+              58:   12(fvec4) Load 40(read2)
+              60:   12(fvec4) VectorTimesScalar 58 59
+              62:   10(ivec2) Load 27(in_coords)
+                              Store 61(param) 62
+                              Store 63(param) 60
+              64:           2 FunctionCall 23(image_store(I21;vi2;vf4;) 57(image4) 61(param) 63(param)
+                              Store 66(out_color) 68
+                              Return
+                              FunctionEnd
+16(image_load(I21;vi2;):   12(fvec4) Function None 13
+       14(image):      8(ptr) FunctionParameter
+      15(coords):     11(ptr) FunctionParameter
+              17:             Label
+              25:           7 Load 14(image)
+              28:   10(ivec2) Load 27(in_coords)
+              29:   12(fvec4) ImageRead 25 28
+                              ReturnValue 29
+                              FunctionEnd
+23(image_store(I21;vi2;vf4;):           2 Function None 19
+       20(image):      8(ptr) FunctionParameter
+      21(coords):     11(ptr) FunctionParameter
+        22(data):     18(ptr) FunctionParameter
+              24:             Label
+              32:           7 Load 20(image)
+              33:   10(ivec2) Load 27(in_coords)
+              34:   12(fvec4) Load 22(data)
+                              ImageWrite 32 33 34
+                              Return
+                              FunctionEnd
diff --git a/Test/baseResults/spv.precision.frag.out b/Test/baseResults/spv.precision.frag.out
index 973147d..1d31230 100644
--- a/Test/baseResults/spv.precision.frag.out
+++ b/Test/baseResults/spv.precision.frag.out
@@ -1,14 +1,15 @@
 spv.precision.frag
 // Module Version 10000
 // Generated by (magic number): 8000a
-// Id's are bound by 146
+// Id's are bound by 165
 
                               Capability Shader
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450
-                              EntryPoint Fragment 4  "main" 23 62 64 76 119
+                              EntryPoint Fragment 4  "main" 23 62 64 76 119 149
                               ExecutionMode 4 OriginUpperLeft
                               Source ESSL 310
+                              SourceExtension  "GL_OES_sample_variables"
                               Name 4  "main"
                               Name 12  "foo(vf3;"
                               Name 11  "mv3"
@@ -33,6 +34,7 @@
                               MemberName 117(S) 0  "a"
                               MemberName 117(S) 1  "b"
                               Name 119  "s"
+                              Name 149  "gl_SampleMaskIn"
                               Decorate 12(foo(vf3;) RelaxedPrecision
                               Decorate 11(mv3) RelaxedPrecision
                               Decorate 23(highfin) Location 2
@@ -97,6 +99,15 @@
                               Decorate 143 RelaxedPrecision
                               Decorate 144 RelaxedPrecision
                               Decorate 145 RelaxedPrecision
+                              Decorate 149(gl_SampleMaskIn) Flat
+                              Decorate 149(gl_SampleMaskIn) BuiltIn SampleMask
+                              Decorate 153 RelaxedPrecision
+                              Decorate 156 RelaxedPrecision
+                              Decorate 159 RelaxedPrecision
+                              Decorate 160 RelaxedPrecision
+                              Decorate 162 RelaxedPrecision
+                              Decorate 163 RelaxedPrecision
+                              Decorate 164 RelaxedPrecision
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeFloat 32
@@ -147,6 +158,11 @@
              133:    6(float) Constant 1082549862
              138:    6(float) Constant 1073741824
              142:    6(float) Constant 1077936128
+             146:     95(int) Constant 1
+             147:             TypeArray 39(int) 146
+             148:             TypePointer Input 147
+149(gl_SampleMaskIn):    148(ptr) Variable Input
+             150:             TypePointer Input 39(int)
          4(main):           2 Function None 3
                5:             Label
          41(sum):     40(ptr) Variable Function
@@ -156,6 +172,7 @@
  72(local_highp):     71(ptr) Variable Function
       108(param):     16(ptr) Variable Function
              135:     71(ptr) Variable Function
+             156:     71(ptr) Variable Function
               44:     39(int) Load 43(uniform_medium)
               46:     39(int) Load 45(uniform_high)
               47:     39(int) IAdd 44 46
@@ -249,6 +266,26 @@
              137:             Label
              145:   21(fvec4) Load 135
                               Store 76(mediumfout) 145
+             151:    150(ptr) AccessChain 149(gl_SampleMaskIn) 120
+             152:     39(int) Load 151
+             153:     39(int) Load 43(uniform_medium)
+             154:     39(int) ShiftRightArithmetic 152 153
+             155:    14(bool) SGreaterThan 154 120
+                              SelectionMerge 158 None
+                              BranchConditional 155 157 161
+             157:               Label
+             159:   21(fvec4)   Load 76(mediumfout)
+             160:   21(fvec4)   VectorTimesScalar 159 138
+                                Store 156 160
+                                Branch 158
+             161:               Label
+             162:   21(fvec4)   Load 76(mediumfout)
+             163:   21(fvec4)   VectorTimesScalar 162 142
+                                Store 156 163
+                                Branch 158
+             158:             Label
+             164:   21(fvec4) Load 156
+                              Store 76(mediumfout) 164
                               Return
                               FunctionEnd
     12(foo(vf3;):    9(fvec2) Function None 10
diff --git a/Test/baseResults/spv.precisionArgs.frag.out b/Test/baseResults/spv.precisionArgs.frag.out
old mode 100755
new mode 100644
diff --git a/Test/baseResults/spv.precisionTexture.frag.out b/Test/baseResults/spv.precisionTexture.frag.out
old mode 100755
new mode 100644
diff --git a/Test/baseResults/spv.queueFamilyScope.comp.out b/Test/baseResults/spv.queueFamilyScope.comp.out
new file mode 100644
index 0000000..9c239df
--- /dev/null
+++ b/Test/baseResults/spv.queueFamilyScope.comp.out
@@ -0,0 +1,43 @@
+spv.queueFamilyScope.comp
+// Module Version 10300
+// Generated by (magic number): 8000a
+// Id's are bound by 21
+
+                              Capability Shader
+                              Capability VulkanMemoryModelKHR
+                              Extension  "SPV_KHR_vulkan_memory_model"
+               1:             ExtInstImport  "GLSL.std.450"
+                              MemoryModel Logical VulkanKHR
+                              EntryPoint GLCompute 4  "main"
+                              ExecutionMode 4 LocalSize 1 1 1
+                              Source GLSL 450
+                              SourceExtension  "GL_KHR_memory_scope_semantics"
+                              Name 4  "main"
+                              Name 7  "Buffer"
+                              MemberName 7(Buffer) 0  "a"
+                              Name 9  "A"
+                              MemberDecorate 7(Buffer) 0 Offset 0
+                              Decorate 7(Buffer) Block
+                              Decorate 9(A) DescriptorSet 0
+                              Decorate 9(A) Binding 0
+               2:             TypeVoid
+               3:             TypeFunction 2
+               6:             TypeInt 32 0
+       7(Buffer):             TypeStruct 6(int)
+               8:             TypePointer StorageBuffer 7(Buffer)
+            9(A):      8(ptr) Variable StorageBuffer
+              10:             TypeInt 32 1
+              11:     10(int) Constant 0
+              12:             TypePointer StorageBuffer 6(int)
+              14:     10(int) Constant 5
+              15:     10(int) Constant 64
+              16:     10(int) Constant 2
+              17:      6(int) Constant 1
+              18:      6(int) Constant 0
+              19:      6(int) Constant 66
+         4(main):           2 Function None 3
+               5:             Label
+              13:     12(ptr) AccessChain 9(A) 11
+              20:      6(int) AtomicLoad 13 14 19
+                              Return
+                              FunctionEnd
diff --git a/Test/baseResults/spv.rw.autoassign.frag.out b/Test/baseResults/spv.rw.autoassign.frag.out
index 43adedd..c696c52 100644
--- a/Test/baseResults/spv.rw.autoassign.frag.out
+++ b/Test/baseResults/spv.rw.autoassign.frag.out
@@ -1,4 +1,5 @@
 spv.rw.autoassign.frag
+Validation failed
 // Module Version 10000
 // Generated by (magic number): 8000a
 // Id's are bound by 42
diff --git a/Test/baseResults/spv.scalarlayout.frag.out b/Test/baseResults/spv.scalarlayout.frag.out
index 549efaa..e08721f 100644
--- a/Test/baseResults/spv.scalarlayout.frag.out
+++ b/Test/baseResults/spv.scalarlayout.frag.out
@@ -1,5 +1,4 @@
 spv.scalarlayout.frag
-Validation failed
 // Module Version 10000
 // Generated by (magic number): 8000a
 // Id's are bound by 20
diff --git a/Test/baseResults/spv.scalarlayoutfloat16.frag.out b/Test/baseResults/spv.scalarlayoutfloat16.frag.out
index fc0dca8..4f22730 100644
--- a/Test/baseResults/spv.scalarlayoutfloat16.frag.out
+++ b/Test/baseResults/spv.scalarlayoutfloat16.frag.out
@@ -1,5 +1,4 @@
 spv.scalarlayoutfloat16.frag
-Validation failed
 // Module Version 10000
 // Generated by (magic number): 8000a
 // Id's are bound by 18
diff --git a/Test/baseResults/spv.sparseTexture.frag.out b/Test/baseResults/spv.sparseTexture.frag.out
index 0f7c687..bf44b81 100644
--- a/Test/baseResults/spv.sparseTexture.frag.out
+++ b/Test/baseResults/spv.sparseTexture.frag.out
@@ -2,7 +2,7 @@
 Validation failed
 // Module Version 10000
 // Generated by (magic number): 8000a
-// Id's are bound by 438
+// Id's are bound by 442
 
                               Capability Shader
                               Capability ImageGatherExtended
@@ -12,7 +12,7 @@
                               Capability SampledCubeArray
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450
-                              EntryPoint Fragment 4  "main" 33 48 89 365 393 405 423
+                              EntryPoint Fragment 4  "main" 33 48 89 397 409 427
                               ExecutionMode 4 OriginUpperLeft
                               Source GLSL 450
                               SourceExtension  "GL_ARB_sparse_texture2"
@@ -40,13 +40,12 @@
                               Name 228  "is2DArray"
                               Name 261  "sCubeShadow"
                               Name 294  "s2DRectShadow"
-                              Name 365  "offsets"
-                              Name 390  "i2D"
-                              Name 393  "ic2"
-                              Name 402  "ii3D"
-                              Name 405  "ic3"
-                              Name 414  "i2DMS"
-                              Name 423  "outColor"
+                              Name 394  "i2D"
+                              Name 397  "ic2"
+                              Name 406  "ii3D"
+                              Name 409  "ic3"
+                              Name 418  "i2DMS"
+                              Name 427  "outColor"
                               Decorate 29(s2D) DescriptorSet 0
                               Decorate 29(s2D) Binding 0
                               Decorate 33(c2) Location 0
@@ -74,19 +73,17 @@
                               Decorate 261(sCubeShadow) Binding 3
                               Decorate 294(s2DRectShadow) DescriptorSet 0
                               Decorate 294(s2DRectShadow) Binding 5
-                              Decorate 365(offsets) Flat
-                              Decorate 365(offsets) Location 5
-                              Decorate 390(i2D) DescriptorSet 0
-                              Decorate 390(i2D) Binding 12
-                              Decorate 393(ic2) Flat
-                              Decorate 393(ic2) Location 3
-                              Decorate 402(ii3D) DescriptorSet 0
-                              Decorate 402(ii3D) Binding 13
-                              Decorate 405(ic3) Flat
-                              Decorate 405(ic3) Location 4
-                              Decorate 414(i2DMS) DescriptorSet 0
-                              Decorate 414(i2DMS) Binding 14
-                              Decorate 423(outColor) Location 0
+                              Decorate 394(i2D) DescriptorSet 0
+                              Decorate 394(i2D) Binding 12
+                              Decorate 397(ic2) Flat
+                              Decorate 397(ic2) Location 3
+                              Decorate 406(ii3D) DescriptorSet 0
+                              Decorate 406(ii3D) Binding 13
+                              Decorate 409(ic3) Flat
+                              Decorate 409(ic3) Location 4
+                              Decorate 418(i2DMS) DescriptorSet 0
+                              Decorate 418(i2DMS) Binding 14
+                              Decorate 427(outColor) Location 0
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeInt 32 1
@@ -189,31 +186,38 @@
              340:  143(ivec2) ConstantComposite 192 192
              362:     20(int) Constant 4
              363:             TypeArray 143(ivec2) 362
-             364:             TypePointer Input 363
-    365(offsets):    364(ptr) Variable Input
-             388:             TypeImage 10(float) 2D nonsampled format:Rgba32f
-             389:             TypePointer UniformConstant 388
-        390(i2D):    389(ptr) Variable UniformConstant
-             392:             TypePointer Input 143(ivec2)
-        393(ic2):    392(ptr) Variable Input
-             400:             TypeImage 6(int) 3D nonsampled format:Rgba32i
-             401:             TypePointer UniformConstant 400
-       402(ii3D):    401(ptr) Variable UniformConstant
-             404:             TypePointer Input 129(ivec3)
-        405(ic3):    404(ptr) Variable Input
-             412:             TypeImage 10(float) 2D multi-sampled nonsampled format:Rgba32f
-             413:             TypePointer UniformConstant 412
-      414(i2DMS):    413(ptr) Variable UniformConstant
-             422:             TypePointer Output 11(fvec4)
-   423(outColor):    422(ptr) Variable Output
-             425:             TypeBool
+             364:      6(int) Constant 1
+             365:  143(ivec2) ConstantComposite 364 130
+             366:  143(ivec2) ConstantComposite 144 192
+             367:      6(int) Constant 15
+             368:      6(int) Constant 16
+             369:  143(ivec2) ConstantComposite 367 368
+             370:      6(int) Constant 4294967294
+             371:  143(ivec2) ConstantComposite 370 9
+             372:         363 ConstantComposite 365 366 369 371
+             392:             TypeImage 10(float) 2D nonsampled format:Rgba32f
+             393:             TypePointer UniformConstant 392
+        394(i2D):    393(ptr) Variable UniformConstant
+             396:             TypePointer Input 143(ivec2)
+        397(ic2):    396(ptr) Variable Input
+             404:             TypeImage 6(int) 3D nonsampled format:Rgba32i
+             405:             TypePointer UniformConstant 404
+       406(ii3D):    405(ptr) Variable UniformConstant
+             408:             TypePointer Input 129(ivec3)
+        409(ic3):    408(ptr) Variable Input
+             416:             TypeImage 10(float) 2D multi-sampled nonsampled format:Rgba32f
+             417:             TypePointer UniformConstant 416
+      418(i2DMS):    417(ptr) Variable UniformConstant
+             426:             TypePointer Output 11(fvec4)
+   427(outColor):    426(ptr) Variable Output
+             429:             TypeBool
          4(main):           2 Function None 3
                5:             Label
      8(resident):      7(ptr) Variable Function
        13(texel):     12(ptr) Variable Function
       18(itexel):     17(ptr) Variable Function
       23(utexel):     22(ptr) Variable Function
-             427:     12(ptr) Variable Function
+             431:     12(ptr) Variable Function
                               Store 8(resident) 9
                               Store 13(texel) 15
                               Store 18(itexel) 19
@@ -534,79 +538,76 @@
                               Store 8(resident) 359
              360:          27 Load 29(s2D)
              361:   31(fvec2) Load 33(c2)
-             366:         363 Load 365(offsets)
-             367: 35(ResType) ImageSparseGather 360 361 9 ConstOffsets 366
-             368:   11(fvec4) CompositeExtract 367 1
-                              Store 13(texel) 368
-             369:      6(int) CompositeExtract 367 0
-             370:      6(int) Load 8(resident)
-             371:      6(int) BitwiseOr 370 369
-                              Store 8(resident) 371
-             372:         226 Load 228(is2DArray)
-             373:   46(fvec3) Load 48(c3)
-             374:         363 Load 365(offsets)
-             375: 62(ResType) ImageSparseGather 372 373 130 ConstOffsets 374
-             376:   16(ivec4) CompositeExtract 375 1
-                              Store 18(itexel) 376
-             377:      6(int) CompositeExtract 375 0
-             378:      6(int) Load 8(resident)
-             379:      6(int) BitwiseOr 378 377
-                              Store 8(resident) 379
-             380:         292 Load 294(s2DRectShadow)
-             381:   31(fvec2) Load 33(c2)
-             382:         363 Load 365(offsets)
-             383: 35(ResType) ImageSparseDrefGather 380 381 50 ConstOffsets 382
-             384:   11(fvec4) CompositeExtract 383 1
-                              Store 13(texel) 384
-             385:      6(int) CompositeExtract 383 0
-             386:      6(int) Load 8(resident)
-             387:      6(int) BitwiseOr 386 385
-                              Store 8(resident) 387
-             391:         388 Load 390(i2D)
-             394:  143(ivec2) Load 393(ic2)
-             395: 35(ResType) ImageSparseRead 391 394
-             396:   11(fvec4) CompositeExtract 395 1
-                              Store 13(texel) 396
-             397:      6(int) CompositeExtract 395 0
-             398:      6(int) Load 8(resident)
-             399:      6(int) BitwiseOr 398 397
-                              Store 8(resident) 399
-             403:         400 Load 402(ii3D)
-             406:  129(ivec3) Load 405(ic3)
-             407: 62(ResType) ImageSparseRead 403 406
-             408:   16(ivec4) CompositeExtract 407 1
-                              Store 18(itexel) 408
-             409:      6(int) CompositeExtract 407 0
-             410:      6(int) Load 8(resident)
-             411:      6(int) BitwiseOr 410 409
-                              Store 8(resident) 411
-             415:         412 Load 414(i2DMS)
-             416:  143(ivec2) Load 393(ic2)
-             417: 35(ResType) ImageSparseRead 415 416 Sample 144
-             418:   11(fvec4) CompositeExtract 417 1
-                              Store 13(texel) 418
-             419:      6(int) CompositeExtract 417 0
-             420:      6(int) Load 8(resident)
-             421:      6(int) BitwiseOr 420 419
-                              Store 8(resident) 421
+             373: 35(ResType) ImageSparseGather 360 361 9 ConstOffsets 372
+             374:   11(fvec4) CompositeExtract 373 1
+                              Store 13(texel) 374
+             375:      6(int) CompositeExtract 373 0
+             376:      6(int) Load 8(resident)
+             377:      6(int) BitwiseOr 376 375
+                              Store 8(resident) 377
+             378:         226 Load 228(is2DArray)
+             379:   46(fvec3) Load 48(c3)
+             380: 62(ResType) ImageSparseGather 378 379 130 ConstOffsets 372
+             381:   16(ivec4) CompositeExtract 380 1
+                              Store 18(itexel) 381
+             382:      6(int) CompositeExtract 380 0
+             383:      6(int) Load 8(resident)
+             384:      6(int) BitwiseOr 383 382
+                              Store 8(resident) 384
+             385:         292 Load 294(s2DRectShadow)
+             386:   31(fvec2) Load 33(c2)
+             387: 35(ResType) ImageSparseDrefGather 385 386 50 ConstOffsets 372
+             388:   11(fvec4) CompositeExtract 387 1
+                              Store 13(texel) 388
+             389:      6(int) CompositeExtract 387 0
+             390:      6(int) Load 8(resident)
+             391:      6(int) BitwiseOr 390 389
+                              Store 8(resident) 391
+             395:         392 Load 394(i2D)
+             398:  143(ivec2) Load 397(ic2)
+             399: 35(ResType) ImageSparseRead 395 398
+             400:   11(fvec4) CompositeExtract 399 1
+                              Store 13(texel) 400
+             401:      6(int) CompositeExtract 399 0
+             402:      6(int) Load 8(resident)
+             403:      6(int) BitwiseOr 402 401
+                              Store 8(resident) 403
+             407:         404 Load 406(ii3D)
+             410:  129(ivec3) Load 409(ic3)
+             411: 62(ResType) ImageSparseRead 407 410
+             412:   16(ivec4) CompositeExtract 411 1
+                              Store 18(itexel) 412
+             413:      6(int) CompositeExtract 411 0
+             414:      6(int) Load 8(resident)
+             415:      6(int) BitwiseOr 414 413
+                              Store 8(resident) 415
+             419:         416 Load 418(i2DMS)
+             420:  143(ivec2) Load 397(ic2)
+             421: 35(ResType) ImageSparseRead 419 420 Sample 144
+             422:   11(fvec4) CompositeExtract 421 1
+                              Store 13(texel) 422
+             423:      6(int) CompositeExtract 421 0
              424:      6(int) Load 8(resident)
-             426:   425(bool) ImageSparseTexelsResident 424
-                              SelectionMerge 429 None
-                              BranchConditional 426 428 431
-             428:               Label
-             430:   11(fvec4)   Load 13(texel)
-                                Store 427 430
-                                Branch 429
-             431:               Label
-             432:   16(ivec4)   Load 18(itexel)
-             433:   11(fvec4)   ConvertSToF 432
-             434:   21(ivec4)   Load 23(utexel)
-             435:   11(fvec4)   ConvertUToF 434
-             436:   11(fvec4)   FAdd 433 435
-                                Store 427 436
-                                Branch 429
-             429:             Label
-             437:   11(fvec4) Load 427
-                              Store 423(outColor) 437
+             425:      6(int) BitwiseOr 424 423
+                              Store 8(resident) 425
+             428:      6(int) Load 8(resident)
+             430:   429(bool) ImageSparseTexelsResident 428
+                              SelectionMerge 433 None
+                              BranchConditional 430 432 435
+             432:               Label
+             434:   11(fvec4)   Load 13(texel)
+                                Store 431 434
+                                Branch 433
+             435:               Label
+             436:   16(ivec4)   Load 18(itexel)
+             437:   11(fvec4)   ConvertSToF 436
+             438:   21(ivec4)   Load 23(utexel)
+             439:   11(fvec4)   ConvertUToF 438
+             440:   11(fvec4)   FAdd 437 439
+                                Store 431 440
+                                Branch 433
+             433:             Label
+             441:   11(fvec4) Load 431
+                              Store 427(outColor) 441
                               Return
                               FunctionEnd
diff --git a/Test/baseResults/spv.specConstArrayCheck.vert.out b/Test/baseResults/spv.specConstArrayCheck.vert.out
old mode 100755
new mode 100644
diff --git a/Test/baseResults/spv.specConstant.vert.out b/Test/baseResults/spv.specConstant.vert.out
index 921cc68..f7d4381 100644
--- a/Test/baseResults/spv.specConstant.vert.out
+++ b/Test/baseResults/spv.specConstant.vert.out
@@ -11,7 +11,7 @@
                               Source GLSL 400
                               Name 4  "main"
                               Name 9  "arraySize"
-                              Name 14  "foo(vf4[s4546];"
+                              Name 14  "foo(vf4[s216172782];"
                               Name 13  "p"
                               Name 17  "builtin_spec_constant("
                               Name 20  "color"
@@ -106,10 +106,10 @@
                               Store 20(color) 46
               48:          10 Load 22(ucol)
                               Store 47(param) 48
-              49:           2 FunctionCall 14(foo(vf4[s4546];) 47(param)
+              49:           2 FunctionCall 14(foo(vf4[s216172782];) 47(param)
                               Return
                               FunctionEnd
-14(foo(vf4[s4546];):           2 Function None 12
+14(foo(vf4[s216172782];):           2 Function None 12
            13(p):     11(ptr) FunctionParameter
               15:             Label
               54:     24(ptr) AccessChain 53(dupUcol) 23
diff --git a/Test/baseResults/spv.specTexture.frag.out b/Test/baseResults/spv.specTexture.frag.out
old mode 100755
new mode 100644
diff --git a/Test/baseResults/spv.stereoViewRendering.tesc.out b/Test/baseResults/spv.stereoViewRendering.tesc.out
index a357346..f01e53b 100644
--- a/Test/baseResults/spv.stereoViewRendering.tesc.out
+++ b/Test/baseResults/spv.stereoViewRendering.tesc.out
@@ -3,7 +3,6 @@
 // Generated by (magic number): 8000a
 // Id's are bound by 42
 
-                              Capability Geometry
                               Capability Tessellation
                               Capability ShaderViewportIndexLayerNV
                               Capability ShaderViewportMaskNV
diff --git a/Test/baseResults/spv.stereoViewRendering.vert.out b/Test/baseResults/spv.stereoViewRendering.vert.out
index 0667cb8..e74921a 100644
--- a/Test/baseResults/spv.stereoViewRendering.vert.out
+++ b/Test/baseResults/spv.stereoViewRendering.vert.out
@@ -4,7 +4,6 @@
 // Id's are bound by 27
 
                               Capability Shader
-                              Capability Geometry
                               Capability ShaderViewportIndexLayerNV
                               Capability ShaderViewportMaskNV
                               Capability ShaderStereoViewNV
diff --git a/Test/baseResults/spv.terminate.frag.out b/Test/baseResults/spv.terminate.frag.out
new file mode 100755
index 0000000..39cb151
--- /dev/null
+++ b/Test/baseResults/spv.terminate.frag.out
@@ -0,0 +1,20 @@
+spv.terminate.frag
+// Module Version 10000
+// Generated by (magic number): 8000a
+// Id's are bound by 7
+
+                              Capability Shader
+                              Extension  "SPV_KHR_terminate_invocation"
+               1:             ExtInstImport  "GLSL.std.450"
+                              MemoryModel Logical GLSL450
+                              EntryPoint Fragment 4  "main"
+                              ExecutionMode 4 OriginUpperLeft
+                              Source GLSL 400
+                              SourceExtension  "GL_EXT_terminate_invocation"
+                              Name 4  "main"
+               2:             TypeVoid
+               3:             TypeFunction 2
+         4(main):           2 Function None 3
+               5:             Label
+                              TerminateInvocation
+                              FunctionEnd
diff --git a/Test/baseResults/spv.viewportArray2.tesc.out b/Test/baseResults/spv.viewportArray2.tesc.out
index 6a9dccc..74235a5 100644
--- a/Test/baseResults/spv.viewportArray2.tesc.out
+++ b/Test/baseResults/spv.viewportArray2.tesc.out
@@ -4,9 +4,7 @@
 // Generated by (magic number): 8000a
 // Id's are bound by 25
 
-                              Capability Geometry
                               Capability Tessellation
-                              Capability MultiViewport
                               Capability ShaderViewportIndexLayerNV
                               Capability ShaderViewportMaskNV
                               Extension  "SPV_EXT_shader_viewport_index_layer"
diff --git a/Test/baseResults/spv.viewportArray2.vert.out b/Test/baseResults/spv.viewportArray2.vert.out
index 96e5b07..cf29cd7 100644
--- a/Test/baseResults/spv.viewportArray2.vert.out
+++ b/Test/baseResults/spv.viewportArray2.vert.out
@@ -4,8 +4,6 @@
 // Id's are bound by 19
 
                               Capability Shader
-                              Capability Geometry
-                              Capability MultiViewport
                               Capability ShaderViewportIndexLayerNV
                               Capability ShaderViewportMaskNV
                               Extension  "SPV_EXT_shader_viewport_index_layer"
diff --git a/Test/baseResults/spv.viewportindex.tese.out b/Test/baseResults/spv.viewportindex.tese.out
new file mode 100644
index 0000000..12a30cf
--- /dev/null
+++ b/Test/baseResults/spv.viewportindex.tese.out
@@ -0,0 +1,30 @@
+spv.viewportindex.tese
+// Module Version 10000
+// Generated by (magic number): 8000a
+// Id's are bound by 10
+
+                              Capability Tessellation
+                              Capability ShaderViewportIndexLayerNV
+                              Extension  "SPV_EXT_shader_viewport_index_layer"
+               1:             ExtInstImport  "GLSL.std.450"
+                              MemoryModel Logical GLSL450
+                              EntryPoint TessellationEvaluation 4  "main" 8
+                              ExecutionMode 4 Triangles
+                              ExecutionMode 4 SpacingEqual
+                              ExecutionMode 4 VertexOrderCcw
+                              Source GLSL 450
+                              SourceExtension  "GL_ARB_shader_viewport_layer_array"
+                              Name 4  "main"
+                              Name 8  "gl_ViewportIndex"
+                              Decorate 8(gl_ViewportIndex) BuiltIn ViewportIndex
+               2:             TypeVoid
+               3:             TypeFunction 2
+               6:             TypeInt 32 1
+               7:             TypePointer Output 6(int)
+8(gl_ViewportIndex):      7(ptr) Variable Output
+               9:      6(int) Constant 1
+         4(main):           2 Function None 3
+               5:             Label
+                              Store 8(gl_ViewportIndex) 9
+                              Return
+                              FunctionEnd
diff --git a/Test/baseResults/terminate.frag.out b/Test/baseResults/terminate.frag.out
new file mode 100755
index 0000000..4f72c9b
--- /dev/null
+++ b/Test/baseResults/terminate.frag.out
@@ -0,0 +1,24 @@
+terminate.frag
+ERROR: 0:3: 'terminateInvocation' : undeclared identifier 
+ERROR: 0:9: '' :  syntax error, unexpected TERMINATE_INVOCATION, expecting COMMA or SEMICOLON
+ERROR: 2 compilation errors.  No code generated.
+
+
+Shader version: 400
+Requested GL_EXT_terminate_invocation
+ERROR: node is still EOpNull!
+0:3  Function Definition: foo( ( global void)
+0:3    Function Parameters: 
+0:3    Sequence
+0:3      'terminateInvocation' ( temp float)
+0:?   Linker Objects
+
+
+Linked fragment stage:
+
+
+Shader version: 400
+Requested GL_EXT_terminate_invocation
+ERROR: node is still EOpNull!
+0:?   Linker Objects
+
diff --git a/Test/baseResults/terminate.vert.out b/Test/baseResults/terminate.vert.out
new file mode 100755
index 0000000..cd984af
--- /dev/null
+++ b/Test/baseResults/terminate.vert.out
@@ -0,0 +1,36 @@
+terminate.vert
+ERROR: 0:3: 'terminateInvocation' : undeclared identifier 
+ERROR: 0:9: 'terminateInvocation' : not supported in this stage: vertex
+ERROR: 2 compilation errors.  No code generated.
+
+
+Shader version: 400
+Requested GL_EXT_terminate_invocation
+ERROR: node is still EOpNull!
+0:3  Function Definition: foo( ( global void)
+0:3    Function Parameters: 
+0:3    Sequence
+0:3      'terminateInvocation' ( temp float)
+0:7  Function Definition: main( ( global void)
+0:7    Function Parameters: 
+0:9    Sequence
+0:9      Branch: TerminateInvocation
+0:?   Linker Objects
+0:?     'gl_VertexID' ( gl_VertexId int VertexId)
+0:?     'gl_InstanceID' ( gl_InstanceId int InstanceId)
+
+
+Linked vertex stage:
+
+
+Shader version: 400
+Requested GL_EXT_terminate_invocation
+ERROR: node is still EOpNull!
+0:7  Function Definition: main( ( global void)
+0:7    Function Parameters: 
+0:9    Sequence
+0:9      Branch: TerminateInvocation
+0:?   Linker Objects
+0:?     'gl_VertexID' ( gl_VertexId int VertexId)
+0:?     'gl_InstanceID' ( gl_InstanceId int InstanceId)
+
diff --git a/Test/baseResults/tokenPaste.vert.out b/Test/baseResults/tokenPaste.vert.out
index b5ba9a5..5ae1f75 100644
--- a/Test/baseResults/tokenPaste.vert.out
+++ b/Test/baseResults/tokenPaste.vert.out
@@ -3,11 +3,11 @@
 ERROR: 0:40: '##' : unexpected location; end of replacement list 
 ERROR: 0:49: '##' : combined tokens are too long 
 ERROR: 0:52: '##' : not supported for these tokens 
-ERROR: 0:69: '##' : combined token is invalid 
-ERROR: 0:82: 'macro expansion' : Too few args in Macro rec
-ERROR: 0:82: '##' : unexpected location 
-ERROR: 0:82: '##' : unexpected location 
-ERROR: 0:86: '##' : unexpected location; end of argument 
+ERROR: 0:81: '##' : combined token is invalid 
+ERROR: 0:94: 'macro expansion' : Too few args in Macro rec
+ERROR: 0:94: '##' : unexpected location 
+ERROR: 0:94: '##' : unexpected location 
+ERROR: 0:98: '##' : unexpected location; end of argument 
 ERROR: 9 compilation errors.  No code generated.
 
 
@@ -18,35 +18,35 @@
 0:52      'a' ( global int)
 0:52      Constant:
 0:52        11 (const int)
-0:58  Sequence
-0:58    move second child to first child ( temp int)
-0:58      'cop' ( global int)
-0:58      Constant:
-0:58        160 (const int)
-0:59  Sequence
-0:59    move second child to first child ( temp bool)
-0:59      'dop' ( global bool)
-0:59      Constant:
-0:59        true (const bool)
-0:63  Function Definition: ShouldntExpandToThis( ( global void)
-0:63    Function Parameters: 
-0:65    Sequence
-0:65      Sequence
-0:65        move second child to first child ( temp int)
-0:65          'e' ( temp int)
-0:65          Constant:
-0:65            16 (const int)
-0:66      right shift second child into first child ( temp int)
-0:66        'e' ( temp int)
-0:66        Constant:
-0:66          2 (const int)
-0:69      Sequence
-0:69        move second child to first child ( temp bool)
-0:69          'f' ( temp bool)
-0:69          Compare Greater Than ( temp bool)
-0:69            'e' ( temp int)
-0:69            Constant:
-0:69              5 (const int)
+0:70  Sequence
+0:70    move second child to first child ( temp int)
+0:70      'cop' ( global int)
+0:70      Constant:
+0:70        160 (const int)
+0:71  Sequence
+0:71    move second child to first child ( temp bool)
+0:71      'dop' ( global bool)
+0:71      Constant:
+0:71        true (const bool)
+0:75  Function Definition: ShouldntExpandToThis( ( global void)
+0:75    Function Parameters: 
+0:77    Sequence
+0:77      Sequence
+0:77        move second child to first child ( temp int)
+0:77          'e' ( temp int)
+0:77          Constant:
+0:77            16 (const int)
+0:78      right shift second child into first child ( temp int)
+0:78        'e' ( temp int)
+0:78        Constant:
+0:78          2 (const int)
+0:81      Sequence
+0:81        move second child to first child ( temp bool)
+0:81          'f' ( temp bool)
+0:81          Compare Greater Than ( temp bool)
+0:81            'e' ( temp int)
+0:81            Constant:
+0:81              5 (const int)
 0:?   Linker Objects
 0:?     'SecondExpansion' ( global int)
 0:?     'PostPasteExpansion' ( global int)
@@ -60,6 +60,8 @@
 0:?     'foo875' ( uniform float)
 0:?     'ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF012345' ( global float)
 0:?     'a' ( global int)
+0:?     'seahorse_var' ( uniform float)
+0:?     'sealion_var' ( uniform float)
 0:?     'aop' ( const int)
 0:?       10 (const int)
 0:?     'bop' ( const int)
@@ -83,16 +85,16 @@
 0:52      'a' ( global int)
 0:52      Constant:
 0:52        11 (const int)
-0:58  Sequence
-0:58    move second child to first child ( temp int)
-0:58      'cop' ( global int)
-0:58      Constant:
-0:58        160 (const int)
-0:59  Sequence
-0:59    move second child to first child ( temp bool)
-0:59      'dop' ( global bool)
-0:59      Constant:
-0:59        true (const bool)
+0:70  Sequence
+0:70    move second child to first child ( temp int)
+0:70      'cop' ( global int)
+0:70      Constant:
+0:70        160 (const int)
+0:71  Sequence
+0:71    move second child to first child ( temp bool)
+0:71      'dop' ( global bool)
+0:71      Constant:
+0:71        true (const bool)
 0:?   Linker Objects
 0:?     'SecondExpansion' ( global int)
 0:?     'PostPasteExpansion' ( global int)
@@ -106,6 +108,8 @@
 0:?     'foo875' ( uniform float)
 0:?     'ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF012345' ( global float)
 0:?     'a' ( global int)
+0:?     'seahorse_var' ( uniform float)
+0:?     'sealion_var' ( uniform float)
 0:?     'aop' ( const int)
 0:?       10 (const int)
 0:?     'bop' ( const int)
diff --git a/Test/baseResults/versionsErrors.frag.out b/Test/baseResults/versionsErrors.frag.out
index b072669..dbeb941 100644
--- a/Test/baseResults/versionsErrors.frag.out
+++ b/Test/baseResults/versionsErrors.frag.out
@@ -7,7 +7,6 @@
 
 
 Shader version: 110
-Requested GL_ARB_texture_rectangle
 ERROR: node is still EOpNull!
 0:42  Function Definition: main( ( global void)
 0:42    Function Parameters: 
@@ -28,7 +27,6 @@
 
 
 Shader version: 110
-Requested GL_ARB_texture_rectangle
 ERROR: node is still EOpNull!
 0:42  Function Definition: main( ( global void)
 0:42    Function Parameters: 
diff --git a/Test/baseResults/vk.relaxed.changeSet.vert.out b/Test/baseResults/vk.relaxed.changeSet.vert.out
new file mode 100755
index 0000000..f6bce29
--- /dev/null
+++ b/Test/baseResults/vk.relaxed.changeSet.vert.out
@@ -0,0 +1,281 @@
+vk.relaxed.changeSet.vert
+Shader version: 460
+0:? Sequence
+0:11  Function Definition: main( ( global void)
+0:11    Function Parameters: 
+0:13    Sequence
+0:13      move second child to first child ( temp highp 4-component vector of float)
+0:13        'Color' ( smooth out highp 4-component vector of float)
+0:13        'aColor' ( in highp 4-component vector of float)
+0:14      move second child to first child ( temp highp 2-component vector of float)
+0:14        'UV' ( smooth out highp 2-component vector of float)
+0:14        'aUV' ( in highp 2-component vector of float)
+0:15      move second child to first child ( temp highp 4-component vector of float)
+0:15        gl_Position: direct index for structure ( gl_Position highp 4-component vector of float Position)
+0:15          'anon@1' ( out block{ gl_Position 4-component vector of float Position gl_Position,  gl_PointSize float PointSize gl_PointSize,  out unsized 1-element array of float ClipDistance gl_ClipDistance,  out unsized 1-element array of float CullDistance gl_CullDistance})
+0:15          Constant:
+0:15            0 (const uint)
+0:15        matrix-times-vector ( temp highp 4-component vector of float)
+0:15          projectionMatrix: direct index for structure ( uniform highp 4X4 matrix of float)
+0:15            'anon@0' (layout( column_major std140) uniform block{ uniform highp 4X4 matrix of float projectionMatrix})
+0:15            Constant:
+0:15              0 (const uint)
+0:15          Construct vec4 ( temp highp 4-component vector of float)
+0:15            'aPos' ( in highp 2-component vector of float)
+0:15            Constant:
+0:15              0.000000
+0:15            Constant:
+0:15              1.000000
+0:?   Linker Objects
+0:?     'aPos' ( in highp 2-component vector of float)
+0:?     'aUV' ( in highp 2-component vector of float)
+0:?     'aColor' ( in highp 4-component vector of float)
+0:?     'anon@0' (layout( column_major std140) uniform block{ uniform highp 4X4 matrix of float projectionMatrix})
+0:?     'Color' ( smooth out highp 4-component vector of float)
+0:?     'UV' ( smooth out highp 2-component vector of float)
+0:?     'anon@1' ( out block{ gl_Position 4-component vector of float Position gl_Position,  gl_PointSize float PointSize gl_PointSize,  out unsized 1-element array of float ClipDistance gl_ClipDistance,  out unsized 1-element array of float CullDistance gl_CullDistance})
+0:?     'gl_VertexID' ( in int VertexIndex)
+0:?     'gl_InstanceID' ( in int InstanceIndex)
+
+vk.relaxed.changeSet.frag
+Shader version: 460
+gl_FragCoord origin is upper left
+0:? Sequence
+0:10  Function Definition: main( ( global void)
+0:10    Function Parameters: 
+0:12    Sequence
+0:12      move second child to first child ( temp highp 4-component vector of float)
+0:12        'fragColor' (layout( location=0) out highp 4-component vector of float)
+0:12        vector-scale ( temp highp 4-component vector of float)
+0:12          'Color' ( smooth in highp 4-component vector of float)
+0:12          direct index ( temp highp float)
+0:12            texture ( global highp 4-component vector of float)
+0:12              'sTexture' ( uniform highp sampler2D)
+0:12              vector swizzle ( temp highp 2-component vector of float)
+0:12                'UV' ( smooth in highp 2-component vector of float)
+0:12                Sequence
+0:12                  Constant:
+0:12                    0 (const int)
+0:12                  Constant:
+0:12                    1 (const int)
+0:12            Constant:
+0:12              0 (const int)
+0:?   Linker Objects
+0:?     'fragColor' (layout( location=0) out highp 4-component vector of float)
+0:?     'sTexture' ( uniform highp sampler2D)
+0:?     'Color' ( smooth in highp 4-component vector of float)
+0:?     'UV' ( smooth in highp 2-component vector of float)
+
+
+Linked vertex stage:
+
+
+Linked fragment stage:
+
+
+Shader version: 460
+0:? Sequence
+0:11  Function Definition: main( ( global void)
+0:11    Function Parameters: 
+0:13    Sequence
+0:13      move second child to first child ( temp highp 4-component vector of float)
+0:13        'Color' ( smooth out highp 4-component vector of float)
+0:13        'aColor' ( in highp 4-component vector of float)
+0:14      move second child to first child ( temp highp 2-component vector of float)
+0:14        'UV' ( smooth out highp 2-component vector of float)
+0:14        'aUV' ( in highp 2-component vector of float)
+0:15      move second child to first child ( temp highp 4-component vector of float)
+0:15        gl_Position: direct index for structure ( gl_Position highp 4-component vector of float Position)
+0:15          'anon@1' ( out block{ gl_Position 4-component vector of float Position gl_Position,  gl_PointSize float PointSize gl_PointSize,  out 1-element array of float ClipDistance gl_ClipDistance,  out 1-element array of float CullDistance gl_CullDistance})
+0:15          Constant:
+0:15            0 (const uint)
+0:15        matrix-times-vector ( temp highp 4-component vector of float)
+0:15          projectionMatrix: direct index for structure ( uniform highp 4X4 matrix of float)
+0:15            'anon@0' (layout( column_major std140) uniform block{ uniform highp 4X4 matrix of float projectionMatrix})
+0:15            Constant:
+0:15              0 (const uint)
+0:15          Construct vec4 ( temp highp 4-component vector of float)
+0:15            'aPos' ( in highp 2-component vector of float)
+0:15            Constant:
+0:15              0.000000
+0:15            Constant:
+0:15              1.000000
+0:?   Linker Objects
+0:?     'aPos' ( in highp 2-component vector of float)
+0:?     'aUV' ( in highp 2-component vector of float)
+0:?     'aColor' ( in highp 4-component vector of float)
+0:?     'anon@0' (layout( column_major std140) uniform block{ uniform highp 4X4 matrix of float projectionMatrix})
+0:?     'Color' ( smooth out highp 4-component vector of float)
+0:?     'UV' ( smooth out highp 2-component vector of float)
+0:?     'anon@1' ( out block{ gl_Position 4-component vector of float Position gl_Position,  gl_PointSize float PointSize gl_PointSize,  out 1-element array of float ClipDistance gl_ClipDistance,  out 1-element array of float CullDistance gl_CullDistance})
+0:?     'gl_VertexID' ( in int VertexIndex)
+0:?     'gl_InstanceID' ( in int InstanceIndex)
+Shader version: 460
+gl_FragCoord origin is upper left
+0:? Sequence
+0:10  Function Definition: main( ( global void)
+0:10    Function Parameters: 
+0:12    Sequence
+0:12      move second child to first child ( temp highp 4-component vector of float)
+0:12        'fragColor' (layout( location=0) out highp 4-component vector of float)
+0:12        vector-scale ( temp highp 4-component vector of float)
+0:12          'Color' ( smooth in highp 4-component vector of float)
+0:12          direct index ( temp highp float)
+0:12            texture ( global highp 4-component vector of float)
+0:12              'sTexture' ( uniform highp sampler2D)
+0:12              vector swizzle ( temp highp 2-component vector of float)
+0:12                'UV' ( smooth in highp 2-component vector of float)
+0:12                Sequence
+0:12                  Constant:
+0:12                    0 (const int)
+0:12                  Constant:
+0:12                    1 (const int)
+0:12            Constant:
+0:12              0 (const int)
+0:?   Linker Objects
+0:?     'fragColor' (layout( location=0) out highp 4-component vector of float)
+0:?     'sTexture' ( uniform highp sampler2D)
+0:?     'Color' ( smooth in highp 4-component vector of float)
+0:?     'UV' ( smooth in highp 2-component vector of float)
+
+// Module Version 10000
+// Generated by (magic number): 8000a
+// Id's are bound by 46
+
+                              Capability Shader
+               1:             ExtInstImport  "GLSL.std.450"
+                              MemoryModel Logical GLSL450
+                              EntryPoint Vertex 4  "main" 9 11 15 17 24 34 44 45
+                              Source GLSL 460
+                              Name 4  "main"
+                              Name 9  "Color"
+                              Name 11  "aColor"
+                              Name 15  "UV"
+                              Name 17  "aUV"
+                              Name 22  "gl_PerVertex"
+                              MemberName 22(gl_PerVertex) 0  "gl_Position"
+                              MemberName 22(gl_PerVertex) 1  "gl_PointSize"
+                              MemberName 22(gl_PerVertex) 2  "gl_ClipDistance"
+                              MemberName 22(gl_PerVertex) 3  "gl_CullDistance"
+                              Name 24  ""
+                              Name 28  "gl_DefaultUniformBlock"
+                              MemberName 28(gl_DefaultUniformBlock) 0  "projectionMatrix"
+                              Name 30  ""
+                              Name 34  "aPos"
+                              Name 44  "gl_VertexID"
+                              Name 45  "gl_InstanceID"
+                              Decorate 9(Color) Location 0
+                              Decorate 11(aColor) Location 2
+                              Decorate 15(UV) Location 1
+                              Decorate 17(aUV) Location 1
+                              MemberDecorate 22(gl_PerVertex) 0 BuiltIn Position
+                              MemberDecorate 22(gl_PerVertex) 1 BuiltIn PointSize
+                              MemberDecorate 22(gl_PerVertex) 2 BuiltIn ClipDistance
+                              MemberDecorate 22(gl_PerVertex) 3 BuiltIn CullDistance
+                              Decorate 22(gl_PerVertex) Block
+                              MemberDecorate 28(gl_DefaultUniformBlock) 0 ColMajor
+                              MemberDecorate 28(gl_DefaultUniformBlock) 0 Offset 0
+                              MemberDecorate 28(gl_DefaultUniformBlock) 0 MatrixStride 16
+                              Decorate 28(gl_DefaultUniformBlock) Block
+                              Decorate 30 DescriptorSet 0
+                              Decorate 30 Binding 0
+                              Decorate 34(aPos) Location 0
+                              Decorate 44(gl_VertexID) BuiltIn VertexIndex
+                              Decorate 45(gl_InstanceID) BuiltIn InstanceIndex
+               2:             TypeVoid
+               3:             TypeFunction 2
+               6:             TypeFloat 32
+               7:             TypeVector 6(float) 4
+               8:             TypePointer Output 7(fvec4)
+        9(Color):      8(ptr) Variable Output
+              10:             TypePointer Input 7(fvec4)
+      11(aColor):     10(ptr) Variable Input
+              13:             TypeVector 6(float) 2
+              14:             TypePointer Output 13(fvec2)
+          15(UV):     14(ptr) Variable Output
+              16:             TypePointer Input 13(fvec2)
+         17(aUV):     16(ptr) Variable Input
+              19:             TypeInt 32 0
+              20:     19(int) Constant 1
+              21:             TypeArray 6(float) 20
+22(gl_PerVertex):             TypeStruct 7(fvec4) 6(float) 21 21
+              23:             TypePointer Output 22(gl_PerVertex)
+              24:     23(ptr) Variable Output
+              25:             TypeInt 32 1
+              26:     25(int) Constant 0
+              27:             TypeMatrix 7(fvec4) 4
+28(gl_DefaultUniformBlock):             TypeStruct 27
+              29:             TypePointer Uniform 28(gl_DefaultUniformBlock)
+              30:     29(ptr) Variable Uniform
+              31:             TypePointer Uniform 27
+        34(aPos):     16(ptr) Variable Input
+              36:    6(float) Constant 0
+              37:    6(float) Constant 1065353216
+              43:             TypePointer Input 25(int)
+ 44(gl_VertexID):     43(ptr) Variable Input
+45(gl_InstanceID):     43(ptr) Variable Input
+         4(main):           2 Function None 3
+               5:             Label
+              12:    7(fvec4) Load 11(aColor)
+                              Store 9(Color) 12
+              18:   13(fvec2) Load 17(aUV)
+                              Store 15(UV) 18
+              32:     31(ptr) AccessChain 30 26
+              33:          27 Load 32
+              35:   13(fvec2) Load 34(aPos)
+              38:    6(float) CompositeExtract 35 0
+              39:    6(float) CompositeExtract 35 1
+              40:    7(fvec4) CompositeConstruct 38 39 36 37
+              41:    7(fvec4) MatrixTimesVector 33 40
+              42:      8(ptr) AccessChain 24 26
+                              Store 42 41
+                              Return
+                              FunctionEnd
+// Module Version 10000
+// Generated by (magic number): 8000a
+// Id's are bound by 27
+
+                              Capability Shader
+               1:             ExtInstImport  "GLSL.std.450"
+                              MemoryModel Logical GLSL450
+                              EntryPoint Fragment 4  "main" 9 11 20
+                              ExecutionMode 4 OriginUpperLeft
+                              Source GLSL 460
+                              Name 4  "main"
+                              Name 9  "fragColor"
+                              Name 11  "Color"
+                              Name 16  "sTexture"
+                              Name 20  "UV"
+                              Decorate 9(fragColor) Location 0
+                              Decorate 11(Color) Location 0
+                              Decorate 16(sTexture) DescriptorSet 1
+                              Decorate 16(sTexture) Binding 0
+                              Decorate 20(UV) Location 1
+               2:             TypeVoid
+               3:             TypeFunction 2
+               6:             TypeFloat 32
+               7:             TypeVector 6(float) 4
+               8:             TypePointer Output 7(fvec4)
+    9(fragColor):      8(ptr) Variable Output
+              10:             TypePointer Input 7(fvec4)
+       11(Color):     10(ptr) Variable Input
+              13:             TypeImage 6(float) 2D sampled format:Unknown
+              14:             TypeSampledImage 13
+              15:             TypePointer UniformConstant 14
+    16(sTexture):     15(ptr) Variable UniformConstant
+              18:             TypeVector 6(float) 2
+              19:             TypePointer Input 18(fvec2)
+          20(UV):     19(ptr) Variable Input
+              23:             TypeInt 32 0
+              24:     23(int) Constant 0
+         4(main):           2 Function None 3
+               5:             Label
+              12:    7(fvec4) Load 11(Color)
+              17:          14 Load 16(sTexture)
+              21:   18(fvec2) Load 20(UV)
+              22:    7(fvec4) ImageSampleImplicitLod 17 21
+              25:    6(float) CompositeExtract 22 0
+              26:    7(fvec4) VectorTimesScalar 12 25
+                              Store 9(fragColor) 26
+                              Return
+                              FunctionEnd
diff --git a/Test/baseResults/vk.relaxed.errorcheck.vert.out b/Test/baseResults/vk.relaxed.errorcheck.vert.out
new file mode 100644
index 0000000..f19eae6
--- /dev/null
+++ b/Test/baseResults/vk.relaxed.errorcheck.vert.out
@@ -0,0 +1,124 @@
+vk.relaxed.errorcheck.vert
+Shader version: 460
+0:? Sequence
+0:9  Function Definition: foo( ( global highp 4-component vector of float)
+0:9    Function Parameters: 
+0:10    Sequence
+0:10      Branch: Return with expression
+0:10        vector swizzle ( temp highp 4-component vector of float)
+0:10          a: direct index for structure ( uniform highp 2-component vector of float)
+0:10            'anon@0' (layout( column_major std140) uniform block{ uniform highp 2-component vector of float a})
+0:10            Constant:
+0:10              0 (const uint)
+0:10          Sequence
+0:10            Constant:
+0:10              0 (const int)
+0:10            Constant:
+0:10              1 (const int)
+0:10            Constant:
+0:10              0 (const int)
+0:10            Constant:
+0:10              1 (const int)
+0:13  Function Definition: main( ( global void)
+0:13    Function Parameters: 
+0:14    Sequence
+0:14      move second child to first child ( temp highp 4-component vector of float)
+0:14        'io' (layout( location=0) smooth out highp 4-component vector of float)
+0:14        Function Call: foo( ( global highp 4-component vector of float)
+0:?   Linker Objects
+0:?     'io' (layout( location=0) smooth out highp 4-component vector of float)
+0:?     'anon@0' (layout( column_major std140) uniform block{ uniform highp 2-component vector of float a})
+0:?     'gl_VertexID' ( in int VertexIndex)
+0:?     'gl_InstanceID' ( in int InstanceIndex)
+
+vk.relaxed.errorcheck.frag
+Shader version: 460
+gl_FragCoord origin is upper left
+0:? Sequence
+0:10  Function Definition: foo( ( global highp 4-component vector of float)
+0:10    Function Parameters: 
+0:11    Sequence
+0:11      Branch: Return with expression
+0:11        a: direct index for structure ( uniform highp 4-component vector of float)
+0:11          'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a})
+0:11          Constant:
+0:11            0 (const uint)
+0:14  Function Definition: main( ( global void)
+0:14    Function Parameters: 
+0:15    Sequence
+0:15      move second child to first child ( temp highp 4-component vector of float)
+0:15        'o' ( out highp 4-component vector of float)
+0:15        add ( temp highp 4-component vector of float)
+0:15          'io' (layout( location=0) smooth in highp 4-component vector of float)
+0:15          Function Call: foo( ( global highp 4-component vector of float)
+0:?   Linker Objects
+0:?     'io' (layout( location=0) smooth in highp 4-component vector of float)
+0:?     'o' ( out highp 4-component vector of float)
+0:?     'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a})
+
+
+Linked vertex stage:
+
+
+Linked fragment stage:
+
+ERROR: Linking unknown stage stage: Types must match:
+    a: " uniform highp 2-component vector of float" versus " uniform highp 4-component vector of float"
+
+Shader version: 460
+0:? Sequence
+0:9  Function Definition: foo( ( global highp 4-component vector of float)
+0:9    Function Parameters: 
+0:10    Sequence
+0:10      Branch: Return with expression
+0:10        vector swizzle ( temp highp 4-component vector of float)
+0:10          a: direct index for structure ( uniform highp 2-component vector of float)
+0:10            'anon@0' (layout( column_major std140) uniform block{ uniform highp 2-component vector of float a})
+0:10            Constant:
+0:10              0 (const uint)
+0:10          Sequence
+0:10            Constant:
+0:10              0 (const int)
+0:10            Constant:
+0:10              1 (const int)
+0:10            Constant:
+0:10              0 (const int)
+0:10            Constant:
+0:10              1 (const int)
+0:13  Function Definition: main( ( global void)
+0:13    Function Parameters: 
+0:14    Sequence
+0:14      move second child to first child ( temp highp 4-component vector of float)
+0:14        'io' (layout( location=0) smooth out highp 4-component vector of float)
+0:14        Function Call: foo( ( global highp 4-component vector of float)
+0:?   Linker Objects
+0:?     'io' (layout( location=0) smooth out highp 4-component vector of float)
+0:?     'anon@0' (layout( column_major std140) uniform block{ uniform highp 2-component vector of float a})
+0:?     'gl_VertexID' ( in int VertexIndex)
+0:?     'gl_InstanceID' ( in int InstanceIndex)
+Shader version: 460
+gl_FragCoord origin is upper left
+0:? Sequence
+0:10  Function Definition: foo( ( global highp 4-component vector of float)
+0:10    Function Parameters: 
+0:11    Sequence
+0:11      Branch: Return with expression
+0:11        a: direct index for structure ( uniform highp 4-component vector of float)
+0:11          'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a})
+0:11          Constant:
+0:11            0 (const uint)
+0:14  Function Definition: main( ( global void)
+0:14    Function Parameters: 
+0:15    Sequence
+0:15      move second child to first child ( temp highp 4-component vector of float)
+0:15        'o' ( out highp 4-component vector of float)
+0:15        add ( temp highp 4-component vector of float)
+0:15          'io' (layout( location=0) smooth in highp 4-component vector of float)
+0:15          Function Call: foo( ( global highp 4-component vector of float)
+0:?   Linker Objects
+0:?     'io' (layout( location=0) smooth in highp 4-component vector of float)
+0:?     'o' ( out highp 4-component vector of float)
+0:?     'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a})
+
+Validation failed
+SPIR-V is not generated for failed compile or link
diff --git a/Test/baseResults/vk.relaxed.frag.out b/Test/baseResults/vk.relaxed.frag.out
new file mode 100644
index 0000000..d98910e
--- /dev/null
+++ b/Test/baseResults/vk.relaxed.frag.out
@@ -0,0 +1,826 @@
+vk.relaxed.frag
+WARNING: 0:7: 'b' : Ignoring initializer for uniform 
+WARNING: 0:8: 'c' : ignoring layout qualifier for uniform location
+
+Shader version: 460
+gl_FragCoord origin is upper left
+0:? Sequence
+0:36  Function Definition: bar( ( global highp uint)
+0:36    Function Parameters: 
+0:37    Sequence
+0:37      Sequence
+0:37        move second child to first child ( temp highp uint)
+0:37          'j' ( temp highp uint)
+0:37          Constant:
+0:37            0 (const uint)
+0:38      move second child to first child ( temp highp uint)
+0:38        'j' ( temp highp uint)
+0:38        AtomicAdd ( global highp uint)
+0:38          counter1: direct index for structure ( coherent volatile buffer highp uint)
+0:38            'anon@2' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter1,  coherent volatile buffer highp uint counter2})
+0:38            Constant:
+0:38              0 (const uint)
+0:38          Constant:
+0:38            1 (const uint)
+0:39      move second child to first child ( temp highp uint)
+0:39        'j' ( temp highp uint)
+0:39        subtract ( temp highp uint)
+0:39          AtomicAdd ( global highp uint)
+0:39            counter1: direct index for structure ( coherent volatile buffer highp uint)
+0:39              'anon@2' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter1,  coherent volatile buffer highp uint counter2})
+0:39              Constant:
+0:39                0 (const uint)
+0:39            Constant:
+0:39              4294967295 (const uint)
+0:39          Constant:
+0:39            1 (const uint)
+0:40      move second child to first child ( temp highp uint)
+0:40        'j' ( temp highp uint)
+0:40        counter1: direct index for structure ( coherent volatile buffer highp uint)
+0:40          'anon@2' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter1,  coherent volatile buffer highp uint counter2})
+0:40          Constant:
+0:40            0 (const uint)
+0:42      move second child to first child ( temp highp uint)
+0:42        'j' ( temp highp uint)
+0:42        AtomicAdd ( global highp uint)
+0:42          counter1: direct index for structure ( coherent volatile buffer highp uint)
+0:42            'anon@2' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter1,  coherent volatile buffer highp uint counter2})
+0:42            Constant:
+0:42              0 (const uint)
+0:42          Constant:
+0:42            1 (const uint)
+0:43      move second child to first child ( temp highp uint)
+0:43        'j' ( temp highp uint)
+0:43        AtomicAdd ( global highp uint)
+0:43          counter1: direct index for structure ( coherent volatile buffer highp uint)
+0:43            'anon@2' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter1,  coherent volatile buffer highp uint counter2})
+0:43            Constant:
+0:43              0 (const uint)
+0:43          Constant:
+0:43            4294967295 (const uint)
+0:44      move second child to first child ( temp highp uint)
+0:44        'j' ( temp highp uint)
+0:44        AtomicSubtract ( global highp uint)
+0:44          counter1: direct index for structure ( coherent volatile buffer highp uint)
+0:44            'anon@2' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter1,  coherent volatile buffer highp uint counter2})
+0:44            Constant:
+0:44              0 (const uint)
+0:44          Constant:
+0:44            1 (const uint)
+0:46      move second child to first child ( temp highp uint)
+0:46        'j' ( temp highp uint)
+0:46        AtomicMin ( global highp uint)
+0:46          counter1: direct index for structure ( coherent volatile buffer highp uint)
+0:46            'anon@2' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter1,  coherent volatile buffer highp uint counter2})
+0:46            Constant:
+0:46              0 (const uint)
+0:46          'j' ( temp highp uint)
+0:47      move second child to first child ( temp highp uint)
+0:47        'j' ( temp highp uint)
+0:47        AtomicMax ( global highp uint)
+0:47          counter1: direct index for structure ( coherent volatile buffer highp uint)
+0:47            'anon@2' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter1,  coherent volatile buffer highp uint counter2})
+0:47            Constant:
+0:47              0 (const uint)
+0:47          'j' ( temp highp uint)
+0:48      move second child to first child ( temp highp uint)
+0:48        'j' ( temp highp uint)
+0:48        AtomicAnd ( global highp uint)
+0:48          counter1: direct index for structure ( coherent volatile buffer highp uint)
+0:48            'anon@2' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter1,  coherent volatile buffer highp uint counter2})
+0:48            Constant:
+0:48              0 (const uint)
+0:48          'j' ( temp highp uint)
+0:50      move second child to first child ( temp highp uint)
+0:50        'j' ( temp highp uint)
+0:50        AtomicOr ( global highp uint)
+0:50          counter1: direct index for structure ( coherent volatile buffer highp uint)
+0:50            'anon@2' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter1,  coherent volatile buffer highp uint counter2})
+0:50            Constant:
+0:50              0 (const uint)
+0:50          'j' ( temp highp uint)
+0:51      move second child to first child ( temp highp uint)
+0:51        'j' ( temp highp uint)
+0:51        AtomicXor ( global highp uint)
+0:51          counter1: direct index for structure ( coherent volatile buffer highp uint)
+0:51            'anon@2' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter1,  coherent volatile buffer highp uint counter2})
+0:51            Constant:
+0:51              0 (const uint)
+0:51          'j' ( temp highp uint)
+0:53      move second child to first child ( temp highp uint)
+0:53        'j' ( temp highp uint)
+0:53        AtomicExchange ( global highp uint)
+0:53          counter1: direct index for structure ( coherent volatile buffer highp uint)
+0:53            'anon@2' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter1,  coherent volatile buffer highp uint counter2})
+0:53            Constant:
+0:53              0 (const uint)
+0:53          'j' ( temp highp uint)
+0:54      move second child to first child ( temp highp uint)
+0:54        'j' ( temp highp uint)
+0:54        AtomicCompSwap ( global highp uint)
+0:54          counter1: direct index for structure ( coherent volatile buffer highp uint)
+0:54            'anon@2' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter1,  coherent volatile buffer highp uint counter2})
+0:54            Constant:
+0:54              0 (const uint)
+0:54          Constant:
+0:54            0 (const uint)
+0:54          'j' ( temp highp uint)
+0:56      AtomicAdd ( global highp uint)
+0:56        counter2: direct index for structure ( coherent volatile buffer highp uint)
+0:56          'anon@2' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter1,  coherent volatile buffer highp uint counter2})
+0:56          Constant:
+0:56            1 (const uint)
+0:56        Constant:
+0:56          1 (const uint)
+0:57      AtomicAdd ( global highp uint)
+0:57        counter3: direct index for structure ( coherent volatile buffer highp uint)
+0:57          'anon@3' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter3})
+0:57          Constant:
+0:57            0 (const uint)
+0:57        Constant:
+0:57          1 (const uint)
+0:59      MemoryBarrierBuffer ( global void)
+0:61      Branch: Return with expression
+0:61        'j' ( temp highp uint)
+0:64  Function Definition: foo( ( global highp 4-component vector of float)
+0:64    Function Parameters: 
+0:65    Sequence
+0:65      Sequence
+0:65        move second child to first child ( temp highp float)
+0:65          'f' ( temp highp float)
+0:65          add ( temp highp float)
+0:65            add ( temp highp float)
+0:65              add ( temp highp float)
+0:65                j: direct index for structure (layout( column_major std140) uniform highp float)
+0:65                  'anon@1' (layout( column_major std140) uniform block{layout( column_major std140) uniform highp float j, layout( column_major std140) uniform highp 4-component vector of float k})
+0:65                  Constant:
+0:65                    0 (const uint)
+0:65                j: direct index for structure (layout( column_major std430) buffer highp float)
+0:65                  'bufferInstance' (layout( column_major std430) buffer block{layout( column_major std430) buffer highp float j, layout( column_major std430) buffer highp 4-component vector of float k})
+0:65                  Constant:
+0:65                    0 (const int)
+0:65              y: direct index for structure ( global highp float)
+0:65                structUniform: direct index for structure ( uniform structure{ global highp 2-component vector of float x,  global highp float y,  global highp uint z})
+0:65                  'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a,  uniform highp 2-component vector of float b,  uniform highp 2-component vector of float c,  uniform 10-element array of highp 4-component vector of float d,  uniform structure{ global highp 2-component vector of float x,  global highp float y,  global highp uint z} structUniform})
+0:65                  Constant:
+0:65                    4 (const uint)
+0:65                Constant:
+0:65                  1 (const int)
+0:65            Convert uint to float ( temp highp float)
+0:65              z: direct index for structure ( global highp uint)
+0:65                structUniform: direct index for structure ( uniform structure{ global highp 2-component vector of float x,  global highp float y,  global highp uint z})
+0:65                  'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a,  uniform highp 2-component vector of float b,  uniform highp 2-component vector of float c,  uniform 10-element array of highp 4-component vector of float d,  uniform structure{ global highp 2-component vector of float x,  global highp float y,  global highp uint z} structUniform})
+0:65                  Constant:
+0:65                    4 (const uint)
+0:65                Constant:
+0:65                  2 (const int)
+0:66      Sequence
+0:66        move second child to first child ( temp highp 2-component vector of float)
+0:66          'v2' ( temp highp 2-component vector of float)
+0:66          add ( temp highp 2-component vector of float)
+0:66            add ( temp highp 2-component vector of float)
+0:66              b: direct index for structure ( uniform highp 2-component vector of float)
+0:66                'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a,  uniform highp 2-component vector of float b,  uniform highp 2-component vector of float c,  uniform 10-element array of highp 4-component vector of float d,  uniform structure{ global highp 2-component vector of float x,  global highp float y,  global highp uint z} structUniform})
+0:66                Constant:
+0:66                  1 (const uint)
+0:66              c: direct index for structure ( uniform highp 2-component vector of float)
+0:66                'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a,  uniform highp 2-component vector of float b,  uniform highp 2-component vector of float c,  uniform 10-element array of highp 4-component vector of float d,  uniform structure{ global highp 2-component vector of float x,  global highp float y,  global highp uint z} structUniform})
+0:66                Constant:
+0:66                  2 (const uint)
+0:66            x: direct index for structure ( global highp 2-component vector of float)
+0:66              structUniform: direct index for structure ( uniform structure{ global highp 2-component vector of float x,  global highp float y,  global highp uint z})
+0:66                'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a,  uniform highp 2-component vector of float b,  uniform highp 2-component vector of float c,  uniform 10-element array of highp 4-component vector of float d,  uniform structure{ global highp 2-component vector of float x,  global highp float y,  global highp uint z} structUniform})
+0:66                Constant:
+0:66                  4 (const uint)
+0:66              Constant:
+0:66                0 (const int)
+0:67      Sequence
+0:67        move second child to first child ( temp highp 4-component vector of float)
+0:67          'v4' ( temp highp 4-component vector of float)
+0:67          add ( temp highp 4-component vector of float)
+0:67            add ( temp highp 4-component vector of float)
+0:67              add ( temp highp 4-component vector of float)
+0:67                add ( temp highp 4-component vector of float)
+0:67                  add ( temp highp 4-component vector of float)
+0:67                    add ( temp highp 4-component vector of float)
+0:67                      a: direct index for structure ( uniform highp 4-component vector of float)
+0:67                        'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a,  uniform highp 2-component vector of float b,  uniform highp 2-component vector of float c,  uniform 10-element array of highp 4-component vector of float d,  uniform structure{ global highp 2-component vector of float x,  global highp float y,  global highp uint z} structUniform})
+0:67                        Constant:
+0:67                          0 (const uint)
+0:67                      direct index ( temp highp 4-component vector of float)
+0:67                        d: direct index for structure ( uniform 10-element array of highp 4-component vector of float)
+0:67                          'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a,  uniform highp 2-component vector of float b,  uniform highp 2-component vector of float c,  uniform 10-element array of highp 4-component vector of float d,  uniform structure{ global highp 2-component vector of float x,  global highp float y,  global highp uint z} structUniform})
+0:67                          Constant:
+0:67                            3 (const uint)
+0:67                        Constant:
+0:67                          0 (const int)
+0:67                    direct index ( temp highp 4-component vector of float)
+0:67                      d: direct index for structure ( uniform 10-element array of highp 4-component vector of float)
+0:67                        'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a,  uniform highp 2-component vector of float b,  uniform highp 2-component vector of float c,  uniform 10-element array of highp 4-component vector of float d,  uniform structure{ global highp 2-component vector of float x,  global highp float y,  global highp uint z} structUniform})
+0:67                        Constant:
+0:67                          3 (const uint)
+0:67                      Constant:
+0:67                        1 (const int)
+0:67                  direct index ( temp highp 4-component vector of float)
+0:67                    d: direct index for structure ( uniform 10-element array of highp 4-component vector of float)
+0:67                      'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a,  uniform highp 2-component vector of float b,  uniform highp 2-component vector of float c,  uniform 10-element array of highp 4-component vector of float d,  uniform structure{ global highp 2-component vector of float x,  global highp float y,  global highp uint z} structUniform})
+0:67                      Constant:
+0:67                        3 (const uint)
+0:67                    Constant:
+0:67                      2 (const int)
+0:67                k: direct index for structure (layout( column_major std140) uniform highp 4-component vector of float)
+0:67                  'anon@1' (layout( column_major std140) uniform block{layout( column_major std140) uniform highp float j, layout( column_major std140) uniform highp 4-component vector of float k})
+0:67                  Constant:
+0:67                    1 (const uint)
+0:67              k: direct index for structure (layout( column_major std430) buffer highp 4-component vector of float)
+0:67                'bufferInstance' (layout( column_major std430) buffer block{layout( column_major std430) buffer highp float j, layout( column_major std430) buffer highp 4-component vector of float k})
+0:67                Constant:
+0:67                  1 (const int)
+0:67            texture ( global highp 4-component vector of float)
+0:67              't1' ( uniform highp sampler2D)
+0:67              Constant:
+0:67                0.000000
+0:67                0.000000
+0:68      Branch: Return with expression
+0:68        component-wise multiply ( temp highp 4-component vector of float)
+0:68          component-wise multiply ( temp highp 4-component vector of float)
+0:68            Construct vec4 ( temp highp 4-component vector of float)
+0:68              'f' ( temp highp float)
+0:68            Construct vec4 ( temp highp 4-component vector of float)
+0:68              'v2' ( temp highp 2-component vector of float)
+0:68              Constant:
+0:68                1.000000
+0:68              Constant:
+0:68                1.000000
+0:68          'v4' ( temp highp 4-component vector of float)
+0:71  Function Definition: main( ( global void)
+0:71    Function Parameters: 
+0:72    Sequence
+0:72      Sequence
+0:72        move second child to first child ( temp highp float)
+0:72          'j' ( temp highp float)
+0:72          Convert uint to float ( temp highp float)
+0:72            Function Call: bar( ( global highp uint)
+0:73      move second child to first child ( temp highp 4-component vector of float)
+0:73        'o' ( out highp 4-component vector of float)
+0:73        vector-scale ( temp highp 4-component vector of float)
+0:73          'j' ( temp highp float)
+0:73          Function Call: foo( ( global highp 4-component vector of float)
+0:?   Linker Objects
+0:?     'o' ( out highp 4-component vector of float)
+0:?     'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a,  uniform highp 2-component vector of float b,  uniform highp 2-component vector of float c,  uniform 10-element array of highp 4-component vector of float d,  uniform structure{ global highp 2-component vector of float x,  global highp float y,  global highp uint z} structUniform})
+0:?     't1' ( uniform highp sampler2D)
+0:?     'anon@1' (layout( column_major std140) uniform block{layout( column_major std140) uniform highp float j, layout( column_major std140) uniform highp 4-component vector of float k})
+0:?     'bufferInstance' (layout( column_major std430) buffer block{layout( column_major std430) buffer highp float j, layout( column_major std430) buffer highp 4-component vector of float k})
+0:?     'anon@2' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter1,  coherent volatile buffer highp uint counter2})
+0:?     'anon@3' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter3})
+
+
+Linked fragment stage:
+
+
+Shader version: 460
+gl_FragCoord origin is upper left
+0:? Sequence
+0:36  Function Definition: bar( ( global highp uint)
+0:36    Function Parameters: 
+0:37    Sequence
+0:37      Sequence
+0:37        move second child to first child ( temp highp uint)
+0:37          'j' ( temp highp uint)
+0:37          Constant:
+0:37            0 (const uint)
+0:38      move second child to first child ( temp highp uint)
+0:38        'j' ( temp highp uint)
+0:38        AtomicAdd ( global highp uint)
+0:38          counter1: direct index for structure ( coherent volatile buffer highp uint)
+0:38            'anon@2' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter1,  coherent volatile buffer highp uint counter2})
+0:38            Constant:
+0:38              0 (const uint)
+0:38          Constant:
+0:38            1 (const uint)
+0:39      move second child to first child ( temp highp uint)
+0:39        'j' ( temp highp uint)
+0:39        subtract ( temp highp uint)
+0:39          AtomicAdd ( global highp uint)
+0:39            counter1: direct index for structure ( coherent volatile buffer highp uint)
+0:39              'anon@2' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter1,  coherent volatile buffer highp uint counter2})
+0:39              Constant:
+0:39                0 (const uint)
+0:39            Constant:
+0:39              4294967295 (const uint)
+0:39          Constant:
+0:39            1 (const uint)
+0:40      move second child to first child ( temp highp uint)
+0:40        'j' ( temp highp uint)
+0:40        counter1: direct index for structure ( coherent volatile buffer highp uint)
+0:40          'anon@2' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter1,  coherent volatile buffer highp uint counter2})
+0:40          Constant:
+0:40            0 (const uint)
+0:42      move second child to first child ( temp highp uint)
+0:42        'j' ( temp highp uint)
+0:42        AtomicAdd ( global highp uint)
+0:42          counter1: direct index for structure ( coherent volatile buffer highp uint)
+0:42            'anon@2' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter1,  coherent volatile buffer highp uint counter2})
+0:42            Constant:
+0:42              0 (const uint)
+0:42          Constant:
+0:42            1 (const uint)
+0:43      move second child to first child ( temp highp uint)
+0:43        'j' ( temp highp uint)
+0:43        AtomicAdd ( global highp uint)
+0:43          counter1: direct index for structure ( coherent volatile buffer highp uint)
+0:43            'anon@2' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter1,  coherent volatile buffer highp uint counter2})
+0:43            Constant:
+0:43              0 (const uint)
+0:43          Constant:
+0:43            4294967295 (const uint)
+0:44      move second child to first child ( temp highp uint)
+0:44        'j' ( temp highp uint)
+0:44        AtomicSubtract ( global highp uint)
+0:44          counter1: direct index for structure ( coherent volatile buffer highp uint)
+0:44            'anon@2' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter1,  coherent volatile buffer highp uint counter2})
+0:44            Constant:
+0:44              0 (const uint)
+0:44          Constant:
+0:44            1 (const uint)
+0:46      move second child to first child ( temp highp uint)
+0:46        'j' ( temp highp uint)
+0:46        AtomicMin ( global highp uint)
+0:46          counter1: direct index for structure ( coherent volatile buffer highp uint)
+0:46            'anon@2' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter1,  coherent volatile buffer highp uint counter2})
+0:46            Constant:
+0:46              0 (const uint)
+0:46          'j' ( temp highp uint)
+0:47      move second child to first child ( temp highp uint)
+0:47        'j' ( temp highp uint)
+0:47        AtomicMax ( global highp uint)
+0:47          counter1: direct index for structure ( coherent volatile buffer highp uint)
+0:47            'anon@2' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter1,  coherent volatile buffer highp uint counter2})
+0:47            Constant:
+0:47              0 (const uint)
+0:47          'j' ( temp highp uint)
+0:48      move second child to first child ( temp highp uint)
+0:48        'j' ( temp highp uint)
+0:48        AtomicAnd ( global highp uint)
+0:48          counter1: direct index for structure ( coherent volatile buffer highp uint)
+0:48            'anon@2' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter1,  coherent volatile buffer highp uint counter2})
+0:48            Constant:
+0:48              0 (const uint)
+0:48          'j' ( temp highp uint)
+0:50      move second child to first child ( temp highp uint)
+0:50        'j' ( temp highp uint)
+0:50        AtomicOr ( global highp uint)
+0:50          counter1: direct index for structure ( coherent volatile buffer highp uint)
+0:50            'anon@2' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter1,  coherent volatile buffer highp uint counter2})
+0:50            Constant:
+0:50              0 (const uint)
+0:50          'j' ( temp highp uint)
+0:51      move second child to first child ( temp highp uint)
+0:51        'j' ( temp highp uint)
+0:51        AtomicXor ( global highp uint)
+0:51          counter1: direct index for structure ( coherent volatile buffer highp uint)
+0:51            'anon@2' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter1,  coherent volatile buffer highp uint counter2})
+0:51            Constant:
+0:51              0 (const uint)
+0:51          'j' ( temp highp uint)
+0:53      move second child to first child ( temp highp uint)
+0:53        'j' ( temp highp uint)
+0:53        AtomicExchange ( global highp uint)
+0:53          counter1: direct index for structure ( coherent volatile buffer highp uint)
+0:53            'anon@2' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter1,  coherent volatile buffer highp uint counter2})
+0:53            Constant:
+0:53              0 (const uint)
+0:53          'j' ( temp highp uint)
+0:54      move second child to first child ( temp highp uint)
+0:54        'j' ( temp highp uint)
+0:54        AtomicCompSwap ( global highp uint)
+0:54          counter1: direct index for structure ( coherent volatile buffer highp uint)
+0:54            'anon@2' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter1,  coherent volatile buffer highp uint counter2})
+0:54            Constant:
+0:54              0 (const uint)
+0:54          Constant:
+0:54            0 (const uint)
+0:54          'j' ( temp highp uint)
+0:56      AtomicAdd ( global highp uint)
+0:56        counter2: direct index for structure ( coherent volatile buffer highp uint)
+0:56          'anon@2' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter1,  coherent volatile buffer highp uint counter2})
+0:56          Constant:
+0:56            1 (const uint)
+0:56        Constant:
+0:56          1 (const uint)
+0:57      AtomicAdd ( global highp uint)
+0:57        counter3: direct index for structure ( coherent volatile buffer highp uint)
+0:57          'anon@3' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter3})
+0:57          Constant:
+0:57            0 (const uint)
+0:57        Constant:
+0:57          1 (const uint)
+0:59      MemoryBarrierBuffer ( global void)
+0:61      Branch: Return with expression
+0:61        'j' ( temp highp uint)
+0:64  Function Definition: foo( ( global highp 4-component vector of float)
+0:64    Function Parameters: 
+0:65    Sequence
+0:65      Sequence
+0:65        move second child to first child ( temp highp float)
+0:65          'f' ( temp highp float)
+0:65          add ( temp highp float)
+0:65            add ( temp highp float)
+0:65              add ( temp highp float)
+0:65                j: direct index for structure (layout( column_major std140) uniform highp float)
+0:65                  'anon@1' (layout( column_major std140) uniform block{layout( column_major std140) uniform highp float j, layout( column_major std140) uniform highp 4-component vector of float k})
+0:65                  Constant:
+0:65                    0 (const uint)
+0:65                j: direct index for structure (layout( column_major std430) buffer highp float)
+0:65                  'bufferInstance' (layout( column_major std430) buffer block{layout( column_major std430) buffer highp float j, layout( column_major std430) buffer highp 4-component vector of float k})
+0:65                  Constant:
+0:65                    0 (const int)
+0:65              y: direct index for structure ( global highp float)
+0:65                structUniform: direct index for structure ( uniform structure{ global highp 2-component vector of float x,  global highp float y,  global highp uint z})
+0:65                  'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a,  uniform highp 2-component vector of float b,  uniform highp 2-component vector of float c,  uniform 10-element array of highp 4-component vector of float d,  uniform structure{ global highp 2-component vector of float x,  global highp float y,  global highp uint z} structUniform})
+0:65                  Constant:
+0:65                    4 (const uint)
+0:65                Constant:
+0:65                  1 (const int)
+0:65            Convert uint to float ( temp highp float)
+0:65              z: direct index for structure ( global highp uint)
+0:65                structUniform: direct index for structure ( uniform structure{ global highp 2-component vector of float x,  global highp float y,  global highp uint z})
+0:65                  'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a,  uniform highp 2-component vector of float b,  uniform highp 2-component vector of float c,  uniform 10-element array of highp 4-component vector of float d,  uniform structure{ global highp 2-component vector of float x,  global highp float y,  global highp uint z} structUniform})
+0:65                  Constant:
+0:65                    4 (const uint)
+0:65                Constant:
+0:65                  2 (const int)
+0:66      Sequence
+0:66        move second child to first child ( temp highp 2-component vector of float)
+0:66          'v2' ( temp highp 2-component vector of float)
+0:66          add ( temp highp 2-component vector of float)
+0:66            add ( temp highp 2-component vector of float)
+0:66              b: direct index for structure ( uniform highp 2-component vector of float)
+0:66                'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a,  uniform highp 2-component vector of float b,  uniform highp 2-component vector of float c,  uniform 10-element array of highp 4-component vector of float d,  uniform structure{ global highp 2-component vector of float x,  global highp float y,  global highp uint z} structUniform})
+0:66                Constant:
+0:66                  1 (const uint)
+0:66              c: direct index for structure ( uniform highp 2-component vector of float)
+0:66                'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a,  uniform highp 2-component vector of float b,  uniform highp 2-component vector of float c,  uniform 10-element array of highp 4-component vector of float d,  uniform structure{ global highp 2-component vector of float x,  global highp float y,  global highp uint z} structUniform})
+0:66                Constant:
+0:66                  2 (const uint)
+0:66            x: direct index for structure ( global highp 2-component vector of float)
+0:66              structUniform: direct index for structure ( uniform structure{ global highp 2-component vector of float x,  global highp float y,  global highp uint z})
+0:66                'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a,  uniform highp 2-component vector of float b,  uniform highp 2-component vector of float c,  uniform 10-element array of highp 4-component vector of float d,  uniform structure{ global highp 2-component vector of float x,  global highp float y,  global highp uint z} structUniform})
+0:66                Constant:
+0:66                  4 (const uint)
+0:66              Constant:
+0:66                0 (const int)
+0:67      Sequence
+0:67        move second child to first child ( temp highp 4-component vector of float)
+0:67          'v4' ( temp highp 4-component vector of float)
+0:67          add ( temp highp 4-component vector of float)
+0:67            add ( temp highp 4-component vector of float)
+0:67              add ( temp highp 4-component vector of float)
+0:67                add ( temp highp 4-component vector of float)
+0:67                  add ( temp highp 4-component vector of float)
+0:67                    add ( temp highp 4-component vector of float)
+0:67                      a: direct index for structure ( uniform highp 4-component vector of float)
+0:67                        'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a,  uniform highp 2-component vector of float b,  uniform highp 2-component vector of float c,  uniform 10-element array of highp 4-component vector of float d,  uniform structure{ global highp 2-component vector of float x,  global highp float y,  global highp uint z} structUniform})
+0:67                        Constant:
+0:67                          0 (const uint)
+0:67                      direct index ( temp highp 4-component vector of float)
+0:67                        d: direct index for structure ( uniform 10-element array of highp 4-component vector of float)
+0:67                          'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a,  uniform highp 2-component vector of float b,  uniform highp 2-component vector of float c,  uniform 10-element array of highp 4-component vector of float d,  uniform structure{ global highp 2-component vector of float x,  global highp float y,  global highp uint z} structUniform})
+0:67                          Constant:
+0:67                            3 (const uint)
+0:67                        Constant:
+0:67                          0 (const int)
+0:67                    direct index ( temp highp 4-component vector of float)
+0:67                      d: direct index for structure ( uniform 10-element array of highp 4-component vector of float)
+0:67                        'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a,  uniform highp 2-component vector of float b,  uniform highp 2-component vector of float c,  uniform 10-element array of highp 4-component vector of float d,  uniform structure{ global highp 2-component vector of float x,  global highp float y,  global highp uint z} structUniform})
+0:67                        Constant:
+0:67                          3 (const uint)
+0:67                      Constant:
+0:67                        1 (const int)
+0:67                  direct index ( temp highp 4-component vector of float)
+0:67                    d: direct index for structure ( uniform 10-element array of highp 4-component vector of float)
+0:67                      'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a,  uniform highp 2-component vector of float b,  uniform highp 2-component vector of float c,  uniform 10-element array of highp 4-component vector of float d,  uniform structure{ global highp 2-component vector of float x,  global highp float y,  global highp uint z} structUniform})
+0:67                      Constant:
+0:67                        3 (const uint)
+0:67                    Constant:
+0:67                      2 (const int)
+0:67                k: direct index for structure (layout( column_major std140) uniform highp 4-component vector of float)
+0:67                  'anon@1' (layout( column_major std140) uniform block{layout( column_major std140) uniform highp float j, layout( column_major std140) uniform highp 4-component vector of float k})
+0:67                  Constant:
+0:67                    1 (const uint)
+0:67              k: direct index for structure (layout( column_major std430) buffer highp 4-component vector of float)
+0:67                'bufferInstance' (layout( column_major std430) buffer block{layout( column_major std430) buffer highp float j, layout( column_major std430) buffer highp 4-component vector of float k})
+0:67                Constant:
+0:67                  1 (const int)
+0:67            texture ( global highp 4-component vector of float)
+0:67              't1' ( uniform highp sampler2D)
+0:67              Constant:
+0:67                0.000000
+0:67                0.000000
+0:68      Branch: Return with expression
+0:68        component-wise multiply ( temp highp 4-component vector of float)
+0:68          component-wise multiply ( temp highp 4-component vector of float)
+0:68            Construct vec4 ( temp highp 4-component vector of float)
+0:68              'f' ( temp highp float)
+0:68            Construct vec4 ( temp highp 4-component vector of float)
+0:68              'v2' ( temp highp 2-component vector of float)
+0:68              Constant:
+0:68                1.000000
+0:68              Constant:
+0:68                1.000000
+0:68          'v4' ( temp highp 4-component vector of float)
+0:71  Function Definition: main( ( global void)
+0:71    Function Parameters: 
+0:72    Sequence
+0:72      Sequence
+0:72        move second child to first child ( temp highp float)
+0:72          'j' ( temp highp float)
+0:72          Convert uint to float ( temp highp float)
+0:72            Function Call: bar( ( global highp uint)
+0:73      move second child to first child ( temp highp 4-component vector of float)
+0:73        'o' ( out highp 4-component vector of float)
+0:73        vector-scale ( temp highp 4-component vector of float)
+0:73          'j' ( temp highp float)
+0:73          Function Call: foo( ( global highp 4-component vector of float)
+0:?   Linker Objects
+0:?     'o' ( out highp 4-component vector of float)
+0:?     'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a,  uniform highp 2-component vector of float b,  uniform highp 2-component vector of float c,  uniform 10-element array of highp 4-component vector of float d,  uniform structure{ global highp 2-component vector of float x,  global highp float y,  global highp uint z} structUniform})
+0:?     't1' ( uniform highp sampler2D)
+0:?     'anon@1' (layout( column_major std140) uniform block{layout( column_major std140) uniform highp float j, layout( column_major std140) uniform highp 4-component vector of float k})
+0:?     'bufferInstance' (layout( column_major std430) buffer block{layout( column_major std430) buffer highp float j, layout( column_major std430) buffer highp 4-component vector of float k})
+0:?     'anon@2' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter1,  coherent volatile buffer highp uint counter2})
+0:?     'anon@3' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter3})
+
+// Module Version 10000
+// Generated by (magic number): 8000a
+// Id's are bound by 163
+
+                              Capability Shader
+               1:             ExtInstImport  "GLSL.std.450"
+                              MemoryModel Logical GLSL450
+                              EntryPoint Fragment 4  "main" 159
+                              ExecutionMode 4 OriginUpperLeft
+                              Source GLSL 460
+                              Name 4  "main"
+                              Name 8  "bar("
+                              Name 13  "foo("
+                              Name 16  "j"
+                              Name 18  "gl_AtomicCounterBlock_0"
+                              MemberName 18(gl_AtomicCounterBlock_0) 0  "counter1"
+                              MemberName 18(gl_AtomicCounterBlock_0) 1  "counter2"
+                              Name 20  ""
+                              Name 63  "gl_AtomicCounterBlock_1"
+                              MemberName 63(gl_AtomicCounterBlock_1) 0  "counter3"
+                              Name 65  ""
+                              Name 73  "f"
+                              Name 74  "UniformBlock"
+                              MemberName 74(UniformBlock) 0  "j"
+                              MemberName 74(UniformBlock) 1  "k"
+                              Name 76  ""
+                              Name 80  "BufferBlock"
+                              MemberName 80(BufferBlock) 0  "j"
+                              MemberName 80(BufferBlock) 1  "k"
+                              Name 82  "bufferInstance"
+                              Name 89  "e"
+                              MemberName 89(e) 0  "x"
+                              MemberName 89(e) 1  "y"
+                              MemberName 89(e) 2  "z"
+                              Name 90  "gl_DefaultUniformBlock"
+                              MemberName 90(gl_DefaultUniformBlock) 0  "a"
+                              MemberName 90(gl_DefaultUniformBlock) 1  "b"
+                              MemberName 90(gl_DefaultUniformBlock) 2  "c"
+                              MemberName 90(gl_DefaultUniformBlock) 3  "d"
+                              MemberName 90(gl_DefaultUniformBlock) 4  "structUniform"
+                              Name 92  ""
+                              Name 103  "v2"
+                              Name 114  "v4"
+                              Name 137  "t1"
+                              Name 155  "j"
+                              Name 159  "o"
+                              MemberDecorate 18(gl_AtomicCounterBlock_0) 0 Coherent
+                              MemberDecorate 18(gl_AtomicCounterBlock_0) 0 Volatile
+                              MemberDecorate 18(gl_AtomicCounterBlock_0) 0 Coherent
+                              MemberDecorate 18(gl_AtomicCounterBlock_0) 0 Offset 0
+                              MemberDecorate 18(gl_AtomicCounterBlock_0) 1 Coherent
+                              MemberDecorate 18(gl_AtomicCounterBlock_0) 1 Volatile
+                              MemberDecorate 18(gl_AtomicCounterBlock_0) 1 Coherent
+                              MemberDecorate 18(gl_AtomicCounterBlock_0) 1 Offset 4
+                              Decorate 18(gl_AtomicCounterBlock_0) BufferBlock
+                              Decorate 20 DescriptorSet 0
+                              Decorate 20 Binding 4
+                              MemberDecorate 63(gl_AtomicCounterBlock_1) 0 Coherent
+                              MemberDecorate 63(gl_AtomicCounterBlock_1) 0 Volatile
+                              MemberDecorate 63(gl_AtomicCounterBlock_1) 0 Coherent
+                              MemberDecorate 63(gl_AtomicCounterBlock_1) 0 Offset 0
+                              Decorate 63(gl_AtomicCounterBlock_1) BufferBlock
+                              Decorate 65 DescriptorSet 0
+                              Decorate 65 Binding 5
+                              MemberDecorate 74(UniformBlock) 0 Offset 0
+                              MemberDecorate 74(UniformBlock) 1 Offset 16
+                              Decorate 74(UniformBlock) Block
+                              Decorate 76 DescriptorSet 0
+                              Decorate 76 Binding 2
+                              MemberDecorate 80(BufferBlock) 0 Offset 0
+                              MemberDecorate 80(BufferBlock) 1 Offset 16
+                              Decorate 80(BufferBlock) BufferBlock
+                              Decorate 82(bufferInstance) DescriptorSet 0
+                              Decorate 82(bufferInstance) Binding 3
+                              Decorate 88 ArrayStride 16
+                              MemberDecorate 89(e) 0 Offset 0
+                              MemberDecorate 89(e) 1 Offset 8
+                              MemberDecorate 89(e) 2 Offset 12
+                              MemberDecorate 90(gl_DefaultUniformBlock) 0 Offset 0
+                              MemberDecorate 90(gl_DefaultUniformBlock) 1 Offset 16
+                              MemberDecorate 90(gl_DefaultUniformBlock) 2 Offset 24
+                              MemberDecorate 90(gl_DefaultUniformBlock) 3 Offset 32
+                              MemberDecorate 90(gl_DefaultUniformBlock) 4 Offset 192
+                              Decorate 90(gl_DefaultUniformBlock) Block
+                              Decorate 92 DescriptorSet 0
+                              Decorate 92 Binding 0
+                              Decorate 137(t1) DescriptorSet 0
+                              Decorate 137(t1) Binding 1
+                              Decorate 159(o) Location 0
+               2:             TypeVoid
+               3:             TypeFunction 2
+               6:             TypeInt 32 0
+               7:             TypeFunction 6(int)
+              10:             TypeFloat 32
+              11:             TypeVector 10(float) 4
+              12:             TypeFunction 11(fvec4)
+              15:             TypePointer Function 6(int)
+              17:      6(int) Constant 0
+18(gl_AtomicCounterBlock_0):             TypeStruct 6(int) 6(int)
+              19:             TypePointer Uniform 18(gl_AtomicCounterBlock_0)
+              20:     19(ptr) Variable Uniform
+              21:             TypeInt 32 1
+              22:     21(int) Constant 0
+              23:             TypePointer Uniform 6(int)
+              25:      6(int) Constant 1
+              28:      6(int) Constant 4294967295
+              60:     21(int) Constant 1
+63(gl_AtomicCounterBlock_1):             TypeStruct 6(int)
+              64:             TypePointer Uniform 63(gl_AtomicCounterBlock_1)
+              65:     64(ptr) Variable Uniform
+              68:      6(int) Constant 72
+              72:             TypePointer Function 10(float)
+74(UniformBlock):             TypeStruct 10(float) 11(fvec4)
+              75:             TypePointer Uniform 74(UniformBlock)
+              76:     75(ptr) Variable Uniform
+              77:             TypePointer Uniform 10(float)
+ 80(BufferBlock):             TypeStruct 10(float) 11(fvec4)
+              81:             TypePointer Uniform 80(BufferBlock)
+82(bufferInstance):     81(ptr) Variable Uniform
+              86:             TypeVector 10(float) 2
+              87:      6(int) Constant 10
+              88:             TypeArray 11(fvec4) 87
+           89(e):             TypeStruct 86(fvec2) 10(float) 6(int)
+90(gl_DefaultUniformBlock):             TypeStruct 11(fvec4) 86(fvec2) 86(fvec2) 88 89(e)
+              91:             TypePointer Uniform 90(gl_DefaultUniformBlock)
+              92:     91(ptr) Variable Uniform
+              93:     21(int) Constant 4
+              97:     21(int) Constant 2
+             102:             TypePointer Function 86(fvec2)
+             104:             TypePointer Uniform 86(fvec2)
+             113:             TypePointer Function 11(fvec4)
+             115:             TypePointer Uniform 11(fvec4)
+             118:     21(int) Constant 3
+             134:             TypeImage 10(float) 2D sampled format:Unknown
+             135:             TypeSampledImage 134
+             136:             TypePointer UniformConstant 135
+         137(t1):    136(ptr) Variable UniformConstant
+             139:   10(float) Constant 0
+             140:   86(fvec2) ConstantComposite 139 139
+             146:   10(float) Constant 1065353216
+             158:             TypePointer Output 11(fvec4)
+          159(o):    158(ptr) Variable Output
+         4(main):           2 Function None 3
+               5:             Label
+          155(j):     72(ptr) Variable Function
+             156:      6(int) FunctionCall 8(bar()
+             157:   10(float) ConvertUToF 156
+                              Store 155(j) 157
+             160:   10(float) Load 155(j)
+             161:   11(fvec4) FunctionCall 13(foo()
+             162:   11(fvec4) VectorTimesScalar 161 160
+                              Store 159(o) 162
+                              Return
+                              FunctionEnd
+         8(bar():      6(int) Function None 7
+               9:             Label
+           16(j):     15(ptr) Variable Function
+                              Store 16(j) 17
+              24:     23(ptr) AccessChain 20 22
+              26:      6(int) AtomicIAdd 24 25 17 25
+                              Store 16(j) 26
+              27:     23(ptr) AccessChain 20 22
+              29:      6(int) AtomicIAdd 27 25 17 28
+              30:      6(int) ISub 29 25
+                              Store 16(j) 30
+              31:     23(ptr) AccessChain 20 22
+              32:      6(int) Load 31
+                              Store 16(j) 32
+              33:     23(ptr) AccessChain 20 22
+              34:      6(int) AtomicIAdd 33 25 17 25
+                              Store 16(j) 34
+              35:     23(ptr) AccessChain 20 22
+              36:      6(int) AtomicIAdd 35 25 17 28
+                              Store 16(j) 36
+              37:     23(ptr) AccessChain 20 22
+              38:      6(int) AtomicISub 37 25 17 25
+                              Store 16(j) 38
+              39:     23(ptr) AccessChain 20 22
+              40:      6(int) Load 16(j)
+              41:      6(int) AtomicUMin 39 25 17 40
+                              Store 16(j) 41
+              42:     23(ptr) AccessChain 20 22
+              43:      6(int) Load 16(j)
+              44:      6(int) AtomicUMax 42 25 17 43
+                              Store 16(j) 44
+              45:     23(ptr) AccessChain 20 22
+              46:      6(int) Load 16(j)
+              47:      6(int) AtomicAnd 45 25 17 46
+                              Store 16(j) 47
+              48:     23(ptr) AccessChain 20 22
+              49:      6(int) Load 16(j)
+              50:      6(int) AtomicOr 48 25 17 49
+                              Store 16(j) 50
+              51:     23(ptr) AccessChain 20 22
+              52:      6(int) Load 16(j)
+              53:      6(int) AtomicXor 51 25 17 52
+                              Store 16(j) 53
+              54:     23(ptr) AccessChain 20 22
+              55:      6(int) Load 16(j)
+              56:      6(int) AtomicExchange 54 25 17 55
+                              Store 16(j) 56
+              57:     23(ptr) AccessChain 20 22
+              58:      6(int) Load 16(j)
+              59:      6(int) AtomicCompareExchange 57 25 17 17 58 17
+                              Store 16(j) 59
+              61:     23(ptr) AccessChain 20 60
+              62:      6(int) AtomicIAdd 61 25 17 25
+              66:     23(ptr) AccessChain 65 22
+              67:      6(int) AtomicIAdd 66 25 17 25
+                              MemoryBarrier 25 68
+              69:      6(int) Load 16(j)
+                              ReturnValue 69
+                              FunctionEnd
+        13(foo():   11(fvec4) Function None 12
+              14:             Label
+           73(f):     72(ptr) Variable Function
+         103(v2):    102(ptr) Variable Function
+         114(v4):    113(ptr) Variable Function
+              78:     77(ptr) AccessChain 76 22
+              79:   10(float) Load 78
+              83:     77(ptr) AccessChain 82(bufferInstance) 22
+              84:   10(float) Load 83
+              85:   10(float) FAdd 79 84
+              94:     77(ptr) AccessChain 92 93 60
+              95:   10(float) Load 94
+              96:   10(float) FAdd 85 95
+              98:     23(ptr) AccessChain 92 93 97
+              99:      6(int) Load 98
+             100:   10(float) ConvertUToF 99
+             101:   10(float) FAdd 96 100
+                              Store 73(f) 101
+             105:    104(ptr) AccessChain 92 60
+             106:   86(fvec2) Load 105
+             107:    104(ptr) AccessChain 92 97
+             108:   86(fvec2) Load 107
+             109:   86(fvec2) FAdd 106 108
+             110:    104(ptr) AccessChain 92 93 22
+             111:   86(fvec2) Load 110
+             112:   86(fvec2) FAdd 109 111
+                              Store 103(v2) 112
+             116:    115(ptr) AccessChain 92 22
+             117:   11(fvec4) Load 116
+             119:    115(ptr) AccessChain 92 118 22
+             120:   11(fvec4) Load 119
+             121:   11(fvec4) FAdd 117 120
+             122:    115(ptr) AccessChain 92 118 60
+             123:   11(fvec4) Load 122
+             124:   11(fvec4) FAdd 121 123
+             125:    115(ptr) AccessChain 92 118 97
+             126:   11(fvec4) Load 125
+             127:   11(fvec4) FAdd 124 126
+             128:    115(ptr) AccessChain 76 60
+             129:   11(fvec4) Load 128
+             130:   11(fvec4) FAdd 127 129
+             131:    115(ptr) AccessChain 82(bufferInstance) 60
+             132:   11(fvec4) Load 131
+             133:   11(fvec4) FAdd 130 132
+             138:         135 Load 137(t1)
+             141:   11(fvec4) ImageSampleImplicitLod 138 140
+             142:   11(fvec4) FAdd 133 141
+                              Store 114(v4) 142
+             143:   10(float) Load 73(f)
+             144:   11(fvec4) CompositeConstruct 143 143 143 143
+             145:   86(fvec2) Load 103(v2)
+             147:   10(float) CompositeExtract 145 0
+             148:   10(float) CompositeExtract 145 1
+             149:   11(fvec4) CompositeConstruct 147 148 146 146
+             150:   11(fvec4) FMul 144 149
+             151:   11(fvec4) Load 114(v4)
+             152:   11(fvec4) FMul 150 151
+                              ReturnValue 152
+                              FunctionEnd
diff --git a/Test/baseResults/vk.relaxed.link1.frag.out b/Test/baseResults/vk.relaxed.link1.frag.out
new file mode 100644
index 0000000..9dac4c6
--- /dev/null
+++ b/Test/baseResults/vk.relaxed.link1.frag.out
@@ -0,0 +1,515 @@
+vk.relaxed.link1.frag
+Shader version: 460
+gl_FragCoord origin is upper left
+0:? Sequence
+0:19  Function Definition: bar( ( global highp 4-component vector of float)
+0:19    Function Parameters: 
+0:20    Sequence
+0:20      Sequence
+0:20        move second child to first child ( temp highp uint)
+0:20          'j' ( temp highp uint)
+0:20          add ( temp highp uint)
+0:20            AtomicAdd ( global highp uint)
+0:20              counter1: direct index for structure ( coherent volatile buffer highp uint)
+0:20                'anon@1' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter1,  coherent volatile buffer highp uint counter2})
+0:20                Constant:
+0:20                  0 (const uint)
+0:20              Constant:
+0:20                1 (const uint)
+0:20            subtract ( temp highp uint)
+0:20              AtomicAdd ( global highp uint)
+0:20                counter2: direct index for structure ( coherent volatile buffer highp uint)
+0:20                  'anon@1' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter1,  coherent volatile buffer highp uint counter2})
+0:20                  Constant:
+0:20                    1 (const uint)
+0:20                Constant:
+0:20                  4294967295 (const uint)
+0:20              Constant:
+0:20                1 (const uint)
+0:21      Sequence
+0:21        move second child to first child ( temp highp 4-component vector of float)
+0:21          'v' ( temp highp 4-component vector of float)
+0:21          add ( temp highp 4-component vector of float)
+0:21            add ( temp highp 4-component vector of float)
+0:21              add ( temp highp 4-component vector of float)
+0:21                a: direct index for structure ( uniform highp 4-component vector of float)
+0:21                  'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a,  uniform highp 2-component vector of float b1,  uniform highp 2-component vector of float b2,  uniform highp 4-component vector of float c1,  uniform highp 4-component vector of float d})
+0:21                  Constant:
+0:21                    0 (const uint)
+0:21                Construct vec4 ( temp highp 4-component vector of float)
+0:21                  direct index ( temp highp float)
+0:21                    b1: direct index for structure ( uniform highp 2-component vector of float)
+0:21                      'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a,  uniform highp 2-component vector of float b1,  uniform highp 2-component vector of float b2,  uniform highp 4-component vector of float c1,  uniform highp 4-component vector of float d})
+0:21                      Constant:
+0:21                        1 (const uint)
+0:21                    Constant:
+0:21                      0 (const int)
+0:21                  direct index ( temp highp float)
+0:21                    b1: direct index for structure ( uniform highp 2-component vector of float)
+0:21                      'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a,  uniform highp 2-component vector of float b1,  uniform highp 2-component vector of float b2,  uniform highp 4-component vector of float c1,  uniform highp 4-component vector of float d})
+0:21                      Constant:
+0:21                        1 (const uint)
+0:21                    Constant:
+0:21                      1 (const int)
+0:21                  direct index ( temp highp float)
+0:21                    b2: direct index for structure ( uniform highp 2-component vector of float)
+0:21                      'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a,  uniform highp 2-component vector of float b1,  uniform highp 2-component vector of float b2,  uniform highp 4-component vector of float c1,  uniform highp 4-component vector of float d})
+0:21                      Constant:
+0:21                        2 (const uint)
+0:21                    Constant:
+0:21                      0 (const int)
+0:21                  direct index ( temp highp float)
+0:21                    b2: direct index for structure ( uniform highp 2-component vector of float)
+0:21                      'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a,  uniform highp 2-component vector of float b1,  uniform highp 2-component vector of float b2,  uniform highp 4-component vector of float c1,  uniform highp 4-component vector of float d})
+0:21                      Constant:
+0:21                        2 (const uint)
+0:21                    Constant:
+0:21                      1 (const int)
+0:21              c1: direct index for structure ( uniform highp 4-component vector of float)
+0:21                'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a,  uniform highp 2-component vector of float b1,  uniform highp 2-component vector of float b2,  uniform highp 4-component vector of float c1,  uniform highp 4-component vector of float d})
+0:21                Constant:
+0:21                  3 (const uint)
+0:21            d: direct index for structure ( uniform highp 4-component vector of float)
+0:21              'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a,  uniform highp 2-component vector of float b1,  uniform highp 2-component vector of float b2,  uniform highp 4-component vector of float c1,  uniform highp 4-component vector of float d})
+0:21              Constant:
+0:21                4 (const uint)
+0:23      Branch: Return with expression
+0:23        vector-scale ( temp highp 4-component vector of float)
+0:23          Convert uint to float ( temp highp float)
+0:23            'j' ( temp highp uint)
+0:23          'v' ( temp highp 4-component vector of float)
+0:26  Function Definition: main( ( global void)
+0:26    Function Parameters: 
+0:27    Sequence
+0:27      move second child to first child ( temp highp 4-component vector of float)
+0:27        'o' ( out highp 4-component vector of float)
+0:27        add ( temp highp 4-component vector of float)
+0:27          Function Call: foo( ( global highp 4-component vector of float)
+0:27          Function Call: bar( ( global highp 4-component vector of float)
+0:?   Linker Objects
+0:?     'o' ( out highp 4-component vector of float)
+0:?     'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a,  uniform highp 2-component vector of float b1,  uniform highp 2-component vector of float b2,  uniform highp 4-component vector of float c1,  uniform highp 4-component vector of float d})
+0:?     'anon@1' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter1,  coherent volatile buffer highp uint counter2})
+
+vk.relaxed.link2.frag
+Shader version: 460
+gl_FragCoord origin is upper left
+0:? Sequence
+0:14  Function Definition: foo( ( global highp 4-component vector of float)
+0:14    Function Parameters: 
+0:15    Sequence
+0:15      Sequence
+0:15        move second child to first child ( temp highp uint)
+0:15          'j' ( temp highp uint)
+0:15          add ( temp highp uint)
+0:15            AtomicAdd ( global highp uint)
+0:15              counter2: direct index for structure ( coherent volatile buffer highp uint)
+0:15                'anon@1' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter3,  coherent volatile buffer highp uint counter2})
+0:15                Constant:
+0:15                  1 (const uint)
+0:15              Constant:
+0:15                1 (const uint)
+0:15            subtract ( temp highp uint)
+0:15              AtomicAdd ( global highp uint)
+0:15                counter3: direct index for structure ( coherent volatile buffer highp uint)
+0:15                  'anon@1' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter3,  coherent volatile buffer highp uint counter2})
+0:15                  Constant:
+0:15                    0 (const uint)
+0:15                Constant:
+0:15                  4294967295 (const uint)
+0:15              Constant:
+0:15                1 (const uint)
+0:16      Sequence
+0:16        move second child to first child ( temp highp 4-component vector of float)
+0:16          'v' ( temp highp 4-component vector of float)
+0:16          add ( temp highp 4-component vector of float)
+0:16            add ( temp highp 4-component vector of float)
+0:16              add ( temp highp 4-component vector of float)
+0:16                a: direct index for structure ( uniform highp 4-component vector of float)
+0:16                  'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a,  uniform highp 2-component vector of float b2,  uniform highp 2-component vector of float b1,  uniform highp 4-component vector of float c2,  uniform highp 4-component vector of float d})
+0:16                  Constant:
+0:16                    0 (const uint)
+0:16                Construct vec4 ( temp highp 4-component vector of float)
+0:16                  direct index ( temp highp float)
+0:16                    b1: direct index for structure ( uniform highp 2-component vector of float)
+0:16                      'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a,  uniform highp 2-component vector of float b2,  uniform highp 2-component vector of float b1,  uniform highp 4-component vector of float c2,  uniform highp 4-component vector of float d})
+0:16                      Constant:
+0:16                        2 (const uint)
+0:16                    Constant:
+0:16                      0 (const int)
+0:16                  direct index ( temp highp float)
+0:16                    b1: direct index for structure ( uniform highp 2-component vector of float)
+0:16                      'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a,  uniform highp 2-component vector of float b2,  uniform highp 2-component vector of float b1,  uniform highp 4-component vector of float c2,  uniform highp 4-component vector of float d})
+0:16                      Constant:
+0:16                        2 (const uint)
+0:16                    Constant:
+0:16                      1 (const int)
+0:16                  direct index ( temp highp float)
+0:16                    b2: direct index for structure ( uniform highp 2-component vector of float)
+0:16                      'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a,  uniform highp 2-component vector of float b2,  uniform highp 2-component vector of float b1,  uniform highp 4-component vector of float c2,  uniform highp 4-component vector of float d})
+0:16                      Constant:
+0:16                        1 (const uint)
+0:16                    Constant:
+0:16                      0 (const int)
+0:16                  direct index ( temp highp float)
+0:16                    b2: direct index for structure ( uniform highp 2-component vector of float)
+0:16                      'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a,  uniform highp 2-component vector of float b2,  uniform highp 2-component vector of float b1,  uniform highp 4-component vector of float c2,  uniform highp 4-component vector of float d})
+0:16                      Constant:
+0:16                        1 (const uint)
+0:16                    Constant:
+0:16                      1 (const int)
+0:16              c2: direct index for structure ( uniform highp 4-component vector of float)
+0:16                'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a,  uniform highp 2-component vector of float b2,  uniform highp 2-component vector of float b1,  uniform highp 4-component vector of float c2,  uniform highp 4-component vector of float d})
+0:16                Constant:
+0:16                  3 (const uint)
+0:16            d: direct index for structure ( uniform highp 4-component vector of float)
+0:16              'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a,  uniform highp 2-component vector of float b2,  uniform highp 2-component vector of float b1,  uniform highp 4-component vector of float c2,  uniform highp 4-component vector of float d})
+0:16              Constant:
+0:16                4 (const uint)
+0:18      Branch: Return with expression
+0:18        vector-scale ( temp highp 4-component vector of float)
+0:18          Convert uint to float ( temp highp float)
+0:18            'j' ( temp highp uint)
+0:18          'v' ( temp highp 4-component vector of float)
+0:?   Linker Objects
+0:?     'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a,  uniform highp 2-component vector of float b2,  uniform highp 2-component vector of float b1,  uniform highp 4-component vector of float c2,  uniform highp 4-component vector of float d})
+0:?     'anon@1' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter3,  coherent volatile buffer highp uint counter2})
+
+
+Linked fragment stage:
+
+
+Shader version: 460
+gl_FragCoord origin is upper left
+0:? Sequence
+0:19  Function Definition: bar( ( global highp 4-component vector of float)
+0:19    Function Parameters: 
+0:20    Sequence
+0:20      Sequence
+0:20        move second child to first child ( temp highp uint)
+0:20          'j' ( temp highp uint)
+0:20          add ( temp highp uint)
+0:20            AtomicAdd ( global highp uint)
+0:20              counter1: direct index for structure ( coherent volatile buffer highp uint)
+0:20                'anon@1' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter1,  coherent volatile buffer highp uint counter2,  coherent volatile buffer highp uint counter3})
+0:20                Constant:
+0:20                  0 (const uint)
+0:20              Constant:
+0:20                1 (const uint)
+0:20            subtract ( temp highp uint)
+0:20              AtomicAdd ( global highp uint)
+0:20                counter2: direct index for structure ( coherent volatile buffer highp uint)
+0:20                  'anon@1' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter1,  coherent volatile buffer highp uint counter2,  coherent volatile buffer highp uint counter3})
+0:20                  Constant:
+0:20                    1 (const uint)
+0:20                Constant:
+0:20                  4294967295 (const uint)
+0:20              Constant:
+0:20                1 (const uint)
+0:21      Sequence
+0:21        move second child to first child ( temp highp 4-component vector of float)
+0:21          'v' ( temp highp 4-component vector of float)
+0:21          add ( temp highp 4-component vector of float)
+0:21            add ( temp highp 4-component vector of float)
+0:21              add ( temp highp 4-component vector of float)
+0:21                a: direct index for structure ( uniform highp 4-component vector of float)
+0:21                  'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a,  uniform highp 2-component vector of float b1,  uniform highp 2-component vector of float b2,  uniform highp 4-component vector of float c1,  uniform highp 4-component vector of float d,  uniform highp 4-component vector of float c2})
+0:21                  Constant:
+0:21                    0 (const uint)
+0:21                Construct vec4 ( temp highp 4-component vector of float)
+0:21                  direct index ( temp highp float)
+0:21                    b1: direct index for structure ( uniform highp 2-component vector of float)
+0:21                      'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a,  uniform highp 2-component vector of float b1,  uniform highp 2-component vector of float b2,  uniform highp 4-component vector of float c1,  uniform highp 4-component vector of float d,  uniform highp 4-component vector of float c2})
+0:21                      Constant:
+0:21                        1 (const uint)
+0:21                    Constant:
+0:21                      0 (const int)
+0:21                  direct index ( temp highp float)
+0:21                    b1: direct index for structure ( uniform highp 2-component vector of float)
+0:21                      'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a,  uniform highp 2-component vector of float b1,  uniform highp 2-component vector of float b2,  uniform highp 4-component vector of float c1,  uniform highp 4-component vector of float d,  uniform highp 4-component vector of float c2})
+0:21                      Constant:
+0:21                        1 (const uint)
+0:21                    Constant:
+0:21                      1 (const int)
+0:21                  direct index ( temp highp float)
+0:21                    b2: direct index for structure ( uniform highp 2-component vector of float)
+0:21                      'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a,  uniform highp 2-component vector of float b1,  uniform highp 2-component vector of float b2,  uniform highp 4-component vector of float c1,  uniform highp 4-component vector of float d,  uniform highp 4-component vector of float c2})
+0:21                      Constant:
+0:21                        2 (const uint)
+0:21                    Constant:
+0:21                      0 (const int)
+0:21                  direct index ( temp highp float)
+0:21                    b2: direct index for structure ( uniform highp 2-component vector of float)
+0:21                      'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a,  uniform highp 2-component vector of float b1,  uniform highp 2-component vector of float b2,  uniform highp 4-component vector of float c1,  uniform highp 4-component vector of float d,  uniform highp 4-component vector of float c2})
+0:21                      Constant:
+0:21                        2 (const uint)
+0:21                    Constant:
+0:21                      1 (const int)
+0:21              c1: direct index for structure ( uniform highp 4-component vector of float)
+0:21                'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a,  uniform highp 2-component vector of float b1,  uniform highp 2-component vector of float b2,  uniform highp 4-component vector of float c1,  uniform highp 4-component vector of float d,  uniform highp 4-component vector of float c2})
+0:21                Constant:
+0:21                  3 (const uint)
+0:21            d: direct index for structure ( uniform highp 4-component vector of float)
+0:21              'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a,  uniform highp 2-component vector of float b1,  uniform highp 2-component vector of float b2,  uniform highp 4-component vector of float c1,  uniform highp 4-component vector of float d,  uniform highp 4-component vector of float c2})
+0:21              Constant:
+0:21                4 (const uint)
+0:23      Branch: Return with expression
+0:23        vector-scale ( temp highp 4-component vector of float)
+0:23          Convert uint to float ( temp highp float)
+0:23            'j' ( temp highp uint)
+0:23          'v' ( temp highp 4-component vector of float)
+0:26  Function Definition: main( ( global void)
+0:26    Function Parameters: 
+0:27    Sequence
+0:27      move second child to first child ( temp highp 4-component vector of float)
+0:27        'o' ( out highp 4-component vector of float)
+0:27        add ( temp highp 4-component vector of float)
+0:27          Function Call: foo( ( global highp 4-component vector of float)
+0:27          Function Call: bar( ( global highp 4-component vector of float)
+0:14  Function Definition: foo( ( global highp 4-component vector of float)
+0:14    Function Parameters: 
+0:15    Sequence
+0:15      Sequence
+0:15        move second child to first child ( temp highp uint)
+0:15          'j' ( temp highp uint)
+0:15          add ( temp highp uint)
+0:15            AtomicAdd ( global highp uint)
+0:15              counter2: direct index for structure ( coherent volatile buffer highp uint)
+0:15                'anon@1' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter1,  coherent volatile buffer highp uint counter2,  coherent volatile buffer highp uint counter3})
+0:15                Constant:
+0:15                  1 (const uint)
+0:15              Constant:
+0:15                1 (const uint)
+0:15            subtract ( temp highp uint)
+0:15              AtomicAdd ( global highp uint)
+0:15                counter3: direct index for structure ( coherent volatile buffer highp uint)
+0:15                  'anon@1' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter1,  coherent volatile buffer highp uint counter2,  coherent volatile buffer highp uint counter3})
+0:15                  Constant:
+0:15                    2 (const uint)
+0:15                Constant:
+0:15                  4294967295 (const uint)
+0:15              Constant:
+0:15                1 (const uint)
+0:16      Sequence
+0:16        move second child to first child ( temp highp 4-component vector of float)
+0:16          'v' ( temp highp 4-component vector of float)
+0:16          add ( temp highp 4-component vector of float)
+0:16            add ( temp highp 4-component vector of float)
+0:16              add ( temp highp 4-component vector of float)
+0:16                a: direct index for structure ( uniform highp 4-component vector of float)
+0:16                  'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a,  uniform highp 2-component vector of float b1,  uniform highp 2-component vector of float b2,  uniform highp 4-component vector of float c1,  uniform highp 4-component vector of float d,  uniform highp 4-component vector of float c2})
+0:16                  Constant:
+0:16                    0 (const uint)
+0:16                Construct vec4 ( temp highp 4-component vector of float)
+0:16                  direct index ( temp highp float)
+0:16                    b1: direct index for structure ( uniform highp 2-component vector of float)
+0:16                      'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a,  uniform highp 2-component vector of float b1,  uniform highp 2-component vector of float b2,  uniform highp 4-component vector of float c1,  uniform highp 4-component vector of float d,  uniform highp 4-component vector of float c2})
+0:16                      Constant:
+0:16                        1 (const uint)
+0:16                    Constant:
+0:16                      0 (const int)
+0:16                  direct index ( temp highp float)
+0:16                    b1: direct index for structure ( uniform highp 2-component vector of float)
+0:16                      'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a,  uniform highp 2-component vector of float b1,  uniform highp 2-component vector of float b2,  uniform highp 4-component vector of float c1,  uniform highp 4-component vector of float d,  uniform highp 4-component vector of float c2})
+0:16                      Constant:
+0:16                        1 (const uint)
+0:16                    Constant:
+0:16                      1 (const int)
+0:16                  direct index ( temp highp float)
+0:16                    b2: direct index for structure ( uniform highp 2-component vector of float)
+0:16                      'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a,  uniform highp 2-component vector of float b1,  uniform highp 2-component vector of float b2,  uniform highp 4-component vector of float c1,  uniform highp 4-component vector of float d,  uniform highp 4-component vector of float c2})
+0:16                      Constant:
+0:16                        2 (const uint)
+0:16                    Constant:
+0:16                      0 (const int)
+0:16                  direct index ( temp highp float)
+0:16                    b2: direct index for structure ( uniform highp 2-component vector of float)
+0:16                      'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a,  uniform highp 2-component vector of float b1,  uniform highp 2-component vector of float b2,  uniform highp 4-component vector of float c1,  uniform highp 4-component vector of float d,  uniform highp 4-component vector of float c2})
+0:16                      Constant:
+0:16                        2 (const uint)
+0:16                    Constant:
+0:16                      1 (const int)
+0:16              c2: direct index for structure ( uniform highp 4-component vector of float)
+0:16                'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a,  uniform highp 2-component vector of float b1,  uniform highp 2-component vector of float b2,  uniform highp 4-component vector of float c1,  uniform highp 4-component vector of float d,  uniform highp 4-component vector of float c2})
+0:16                Constant:
+0:16                  5 (const uint)
+0:16            d: direct index for structure ( uniform highp 4-component vector of float)
+0:16              'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a,  uniform highp 2-component vector of float b1,  uniform highp 2-component vector of float b2,  uniform highp 4-component vector of float c1,  uniform highp 4-component vector of float d,  uniform highp 4-component vector of float c2})
+0:16              Constant:
+0:16                4 (const uint)
+0:18      Branch: Return with expression
+0:18        vector-scale ( temp highp 4-component vector of float)
+0:18          Convert uint to float ( temp highp float)
+0:18            'j' ( temp highp uint)
+0:18          'v' ( temp highp 4-component vector of float)
+0:?   Linker Objects
+0:?     'o' ( out highp 4-component vector of float)
+0:?     'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a,  uniform highp 2-component vector of float b1,  uniform highp 2-component vector of float b2,  uniform highp 4-component vector of float c1,  uniform highp 4-component vector of float d,  uniform highp 4-component vector of float c2})
+0:?     'anon@1' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter1,  coherent volatile buffer highp uint counter2,  coherent volatile buffer highp uint counter3})
+
+// Module Version 10000
+// Generated by (magic number): 8000a
+// Id's are bound by 105
+
+                              Capability Shader
+               1:             ExtInstImport  "GLSL.std.450"
+                              MemoryModel Logical GLSL450
+                              EntryPoint Fragment 4  "main" 68
+                              ExecutionMode 4 OriginUpperLeft
+                              Source GLSL 460
+                              Name 4  "main"
+                              Name 9  "bar("
+                              Name 11  "foo("
+                              Name 15  "j"
+                              Name 16  "gl_AtomicCounterBlock_0"
+                              MemberName 16(gl_AtomicCounterBlock_0) 0  "counter1"
+                              MemberName 16(gl_AtomicCounterBlock_0) 1  "counter2"
+                              MemberName 16(gl_AtomicCounterBlock_0) 2  "counter3"
+                              Name 18  ""
+                              Name 33  "v"
+                              Name 35  "gl_DefaultUniformBlock"
+                              MemberName 35(gl_DefaultUniformBlock) 0  "a"
+                              MemberName 35(gl_DefaultUniformBlock) 1  "b1"
+                              MemberName 35(gl_DefaultUniformBlock) 2  "b2"
+                              MemberName 35(gl_DefaultUniformBlock) 3  "c1"
+                              MemberName 35(gl_DefaultUniformBlock) 4  "d"
+                              MemberName 35(gl_DefaultUniformBlock) 5  "c2"
+                              Name 37  ""
+                              Name 68  "o"
+                              Name 72  "j"
+                              Name 79  "v"
+                              MemberDecorate 16(gl_AtomicCounterBlock_0) 0 Coherent
+                              MemberDecorate 16(gl_AtomicCounterBlock_0) 0 Volatile
+                              MemberDecorate 16(gl_AtomicCounterBlock_0) 0 Coherent
+                              MemberDecorate 16(gl_AtomicCounterBlock_0) 0 Offset 0
+                              MemberDecorate 16(gl_AtomicCounterBlock_0) 1 Coherent
+                              MemberDecorate 16(gl_AtomicCounterBlock_0) 1 Volatile
+                              MemberDecorate 16(gl_AtomicCounterBlock_0) 1 Coherent
+                              MemberDecorate 16(gl_AtomicCounterBlock_0) 1 Offset 4
+                              MemberDecorate 16(gl_AtomicCounterBlock_0) 2 Coherent
+                              MemberDecorate 16(gl_AtomicCounterBlock_0) 2 Volatile
+                              MemberDecorate 16(gl_AtomicCounterBlock_0) 2 Coherent
+                              MemberDecorate 16(gl_AtomicCounterBlock_0) 2 Offset 8
+                              Decorate 16(gl_AtomicCounterBlock_0) BufferBlock
+                              Decorate 18 DescriptorSet 0
+                              Decorate 18 Binding 1
+                              MemberDecorate 35(gl_DefaultUniformBlock) 0 Offset 0
+                              MemberDecorate 35(gl_DefaultUniformBlock) 1 Offset 16
+                              MemberDecorate 35(gl_DefaultUniformBlock) 2 Offset 24
+                              MemberDecorate 35(gl_DefaultUniformBlock) 3 Offset 32
+                              MemberDecorate 35(gl_DefaultUniformBlock) 4 Offset 48
+                              MemberDecorate 35(gl_DefaultUniformBlock) 5 Offset 64
+                              Decorate 35(gl_DefaultUniformBlock) Block
+                              Decorate 37 DescriptorSet 0
+                              Decorate 37 Binding 0
+                              Decorate 68(o) Location 0
+               2:             TypeVoid
+               3:             TypeFunction 2
+               6:             TypeFloat 32
+               7:             TypeVector 6(float) 4
+               8:             TypeFunction 7(fvec4)
+              13:             TypeInt 32 0
+              14:             TypePointer Function 13(int)
+16(gl_AtomicCounterBlock_0):             TypeStruct 13(int) 13(int) 13(int)
+              17:             TypePointer Uniform 16(gl_AtomicCounterBlock_0)
+              18:     17(ptr) Variable Uniform
+              19:             TypeInt 32 1
+              20:     19(int) Constant 0
+              21:             TypePointer Uniform 13(int)
+              23:     13(int) Constant 1
+              24:     13(int) Constant 0
+              26:     19(int) Constant 1
+              28:     13(int) Constant 4294967295
+              32:             TypePointer Function 7(fvec4)
+              34:             TypeVector 6(float) 2
+35(gl_DefaultUniformBlock):             TypeStruct 7(fvec4) 34(fvec2) 34(fvec2) 7(fvec4) 7(fvec4) 7(fvec4)
+              36:             TypePointer Uniform 35(gl_DefaultUniformBlock)
+              37:     36(ptr) Variable Uniform
+              38:             TypePointer Uniform 7(fvec4)
+              41:             TypePointer Uniform 6(float)
+              46:     19(int) Constant 2
+              53:     19(int) Constant 3
+              57:     19(int) Constant 4
+              67:             TypePointer Output 7(fvec4)
+           68(o):     67(ptr) Variable Output
+              92:     19(int) Constant 5
+         4(main):           2 Function None 3
+               5:             Label
+              69:    7(fvec4) FunctionCall 11(foo()
+              70:    7(fvec4) FunctionCall 9(bar()
+              71:    7(fvec4) FAdd 69 70
+                              Store 68(o) 71
+                              Return
+                              FunctionEnd
+         9(bar():    7(fvec4) Function None 8
+              10:             Label
+           15(j):     14(ptr) Variable Function
+           33(v):     32(ptr) Variable Function
+              22:     21(ptr) AccessChain 18 20
+              25:     13(int) AtomicIAdd 22 23 24 23
+              27:     21(ptr) AccessChain 18 26
+              29:     13(int) AtomicIAdd 27 23 24 28
+              30:     13(int) ISub 29 23
+              31:     13(int) IAdd 25 30
+                              Store 15(j) 31
+              39:     38(ptr) AccessChain 37 20
+              40:    7(fvec4) Load 39
+              42:     41(ptr) AccessChain 37 26 24
+              43:    6(float) Load 42
+              44:     41(ptr) AccessChain 37 26 23
+              45:    6(float) Load 44
+              47:     41(ptr) AccessChain 37 46 24
+              48:    6(float) Load 47
+              49:     41(ptr) AccessChain 37 46 23
+              50:    6(float) Load 49
+              51:    7(fvec4) CompositeConstruct 43 45 48 50
+              52:    7(fvec4) FAdd 40 51
+              54:     38(ptr) AccessChain 37 53
+              55:    7(fvec4) Load 54
+              56:    7(fvec4) FAdd 52 55
+              58:     38(ptr) AccessChain 37 57
+              59:    7(fvec4) Load 58
+              60:    7(fvec4) FAdd 56 59
+                              Store 33(v) 60
+              61:     13(int) Load 15(j)
+              62:    6(float) ConvertUToF 61
+              63:    7(fvec4) Load 33(v)
+              64:    7(fvec4) VectorTimesScalar 63 62
+                              ReturnValue 64
+                              FunctionEnd
+        11(foo():    7(fvec4) Function None 8
+              12:             Label
+           72(j):     14(ptr) Variable Function
+           79(v):     32(ptr) Variable Function
+              73:     21(ptr) AccessChain 18 26
+              74:     13(int) AtomicIAdd 73 23 24 23
+              75:     21(ptr) AccessChain 18 46
+              76:     13(int) AtomicIAdd 75 23 24 28
+              77:     13(int) ISub 76 23
+              78:     13(int) IAdd 74 77
+                              Store 72(j) 78
+              80:     38(ptr) AccessChain 37 20
+              81:    7(fvec4) Load 80
+              82:     41(ptr) AccessChain 37 26 24
+              83:    6(float) Load 82
+              84:     41(ptr) AccessChain 37 26 23
+              85:    6(float) Load 84
+              86:     41(ptr) AccessChain 37 46 24
+              87:    6(float) Load 86
+              88:     41(ptr) AccessChain 37 46 23
+              89:    6(float) Load 88
+              90:    7(fvec4) CompositeConstruct 83 85 87 89
+              91:    7(fvec4) FAdd 81 90
+              93:     38(ptr) AccessChain 37 92
+              94:    7(fvec4) Load 93
+              95:    7(fvec4) FAdd 91 94
+              96:     38(ptr) AccessChain 37 57
+              97:    7(fvec4) Load 96
+              98:    7(fvec4) FAdd 95 97
+                              Store 79(v) 98
+              99:     13(int) Load 72(j)
+             100:    6(float) ConvertUToF 99
+             101:    7(fvec4) Load 79(v)
+             102:    7(fvec4) VectorTimesScalar 101 100
+                              ReturnValue 102
+                              FunctionEnd
diff --git a/Test/baseResults/vk.relaxed.stagelink.vert.out b/Test/baseResults/vk.relaxed.stagelink.vert.out
new file mode 100644
index 0000000..a63f10c
--- /dev/null
+++ b/Test/baseResults/vk.relaxed.stagelink.vert.out
@@ -0,0 +1,717 @@
+vk.relaxed.stagelink.vert
+Shader version: 460
+0:? Sequence
+0:18  Function Definition: foo( ( global highp 4-component vector of float)
+0:18    Function Parameters: 
+0:19    Sequence
+0:19      Sequence
+0:19        move second child to first child ( temp highp uint)
+0:19          'j' ( temp highp uint)
+0:19          add ( temp highp uint)
+0:19            AtomicAdd ( global highp uint)
+0:19              counter2: direct index for structure ( coherent volatile buffer highp uint)
+0:19                'anon@1' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter3,  coherent volatile buffer highp uint counter2})
+0:19                Constant:
+0:19                  1 (const uint)
+0:19              Constant:
+0:19                1 (const uint)
+0:19            subtract ( temp highp uint)
+0:19              AtomicAdd ( global highp uint)
+0:19                counter3: direct index for structure ( coherent volatile buffer highp uint)
+0:19                  'anon@1' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter3,  coherent volatile buffer highp uint counter2})
+0:19                  Constant:
+0:19                    0 (const uint)
+0:19                Constant:
+0:19                  4294967295 (const uint)
+0:19              Constant:
+0:19                1 (const uint)
+0:20      Sequence
+0:20        move second child to first child ( temp highp 4-component vector of float)
+0:20          'v' ( temp highp 4-component vector of float)
+0:20          add ( temp highp 4-component vector of float)
+0:20            add ( temp highp 4-component vector of float)
+0:20              add ( temp highp 4-component vector of float)
+0:20                a: direct index for structure ( uniform highp 4-component vector of float)
+0:20                  'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a,  uniform highp 2-component vector of float b2,  uniform highp 2-component vector of float b1,  uniform highp 4-component vector of float c2,  uniform highp 4-component vector of float d,  uniform 4-element array of highp 4-component vector of float s})
+0:20                  Constant:
+0:20                    0 (const uint)
+0:20                Construct vec4 ( temp highp 4-component vector of float)
+0:20                  direct index ( temp highp float)
+0:20                    b1: direct index for structure ( uniform highp 2-component vector of float)
+0:20                      'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a,  uniform highp 2-component vector of float b2,  uniform highp 2-component vector of float b1,  uniform highp 4-component vector of float c2,  uniform highp 4-component vector of float d,  uniform 4-element array of highp 4-component vector of float s})
+0:20                      Constant:
+0:20                        2 (const uint)
+0:20                    Constant:
+0:20                      0 (const int)
+0:20                  direct index ( temp highp float)
+0:20                    b1: direct index for structure ( uniform highp 2-component vector of float)
+0:20                      'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a,  uniform highp 2-component vector of float b2,  uniform highp 2-component vector of float b1,  uniform highp 4-component vector of float c2,  uniform highp 4-component vector of float d,  uniform 4-element array of highp 4-component vector of float s})
+0:20                      Constant:
+0:20                        2 (const uint)
+0:20                    Constant:
+0:20                      1 (const int)
+0:20                  direct index ( temp highp float)
+0:20                    b2: direct index for structure ( uniform highp 2-component vector of float)
+0:20                      'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a,  uniform highp 2-component vector of float b2,  uniform highp 2-component vector of float b1,  uniform highp 4-component vector of float c2,  uniform highp 4-component vector of float d,  uniform 4-element array of highp 4-component vector of float s})
+0:20                      Constant:
+0:20                        1 (const uint)
+0:20                    Constant:
+0:20                      0 (const int)
+0:20                  direct index ( temp highp float)
+0:20                    b2: direct index for structure ( uniform highp 2-component vector of float)
+0:20                      'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a,  uniform highp 2-component vector of float b2,  uniform highp 2-component vector of float b1,  uniform highp 4-component vector of float c2,  uniform highp 4-component vector of float d,  uniform 4-element array of highp 4-component vector of float s})
+0:20                      Constant:
+0:20                        1 (const uint)
+0:20                    Constant:
+0:20                      1 (const int)
+0:20              c2: direct index for structure ( uniform highp 4-component vector of float)
+0:20                'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a,  uniform highp 2-component vector of float b2,  uniform highp 2-component vector of float b1,  uniform highp 4-component vector of float c2,  uniform highp 4-component vector of float d,  uniform 4-element array of highp 4-component vector of float s})
+0:20                Constant:
+0:20                  3 (const uint)
+0:20            d: direct index for structure ( uniform highp 4-component vector of float)
+0:20              'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a,  uniform highp 2-component vector of float b2,  uniform highp 2-component vector of float b1,  uniform highp 4-component vector of float c2,  uniform highp 4-component vector of float d,  uniform 4-element array of highp 4-component vector of float s})
+0:20              Constant:
+0:20                4 (const uint)
+0:22      Branch: Return with expression
+0:22        vector-scale ( temp highp 4-component vector of float)
+0:22          Convert uint to float ( temp highp float)
+0:22            'j' ( temp highp uint)
+0:22          'v' ( temp highp 4-component vector of float)
+0:25  Function Definition: main( ( global void)
+0:25    Function Parameters: 
+0:27    Sequence
+0:27      Sequence
+0:27        move second child to first child ( temp highp 4-component vector of float)
+0:27          'v' ( temp highp 4-component vector of float)
+0:27          Function Call: foo( ( global highp 4-component vector of float)
+0:28      move second child to first child ( temp highp 4-component vector of float)
+0:28        'v' ( temp highp 4-component vector of float)
+0:28        add ( temp highp 4-component vector of float)
+0:28          'v' ( temp highp 4-component vector of float)
+0:28          indirect index ( temp highp 4-component vector of float)
+0:28            s: direct index for structure ( uniform 4-element array of highp 4-component vector of float)
+0:28              'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a,  uniform highp 2-component vector of float b2,  uniform highp 2-component vector of float b1,  uniform highp 4-component vector of float c2,  uniform highp 4-component vector of float d,  uniform 4-element array of highp 4-component vector of float s})
+0:28              Constant:
+0:28                5 (const uint)
+0:28            'gl_VertexID' ( in int VertexIndex)
+0:29      move second child to first child ( temp highp float)
+0:29        direct index ( temp highp float)
+0:29          'v' ( temp highp 4-component vector of float)
+0:29          Constant:
+0:29            0 (const int)
+0:29        subtract ( temp highp float)
+0:29          direct index ( temp highp float)
+0:29            'v' ( temp highp 4-component vector of float)
+0:29            Constant:
+0:29              0 (const int)
+0:29          Convert int to float ( temp highp float)
+0:29            'gl_InstanceID' ( in highp int InstanceIndex)
+0:30      move second child to first child ( temp highp 4-component vector of float)
+0:30        'io' (layout( location=0) smooth out highp 4-component vector of float)
+0:30        'v' ( temp highp 4-component vector of float)
+0:?   Linker Objects
+0:?     'io' (layout( location=0) smooth out highp 4-component vector of float)
+0:?     'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a,  uniform highp 2-component vector of float b2,  uniform highp 2-component vector of float b1,  uniform highp 4-component vector of float c2,  uniform highp 4-component vector of float d,  uniform 4-element array of highp 4-component vector of float s})
+0:?     'anon@1' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter3,  coherent volatile buffer highp uint counter2})
+0:?     'gl_VertexID' ( in int VertexIndex)
+0:?     'gl_InstanceID' ( in int InstanceIndex)
+
+vk.relaxed.stagelink.frag
+Shader version: 460
+gl_FragCoord origin is upper left
+0:? Sequence
+0:19  Function Definition: foo( ( global highp 4-component vector of float)
+0:19    Function Parameters: 
+0:20    Sequence
+0:20      Sequence
+0:20        move second child to first child ( temp highp uint)
+0:20          'j' ( temp highp uint)
+0:20          add ( temp highp uint)
+0:20            AtomicAdd ( global highp uint)
+0:20              counter1: direct index for structure ( coherent volatile buffer highp uint)
+0:20                'anon@1' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter1,  coherent volatile buffer highp uint counter2})
+0:20                Constant:
+0:20                  0 (const uint)
+0:20              Constant:
+0:20                1 (const uint)
+0:20            subtract ( temp highp uint)
+0:20              AtomicAdd ( global highp uint)
+0:20                counter2: direct index for structure ( coherent volatile buffer highp uint)
+0:20                  'anon@1' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter1,  coherent volatile buffer highp uint counter2})
+0:20                  Constant:
+0:20                    1 (const uint)
+0:20                Constant:
+0:20                  4294967295 (const uint)
+0:20              Constant:
+0:20                1 (const uint)
+0:21      Sequence
+0:21        move second child to first child ( temp highp 4-component vector of float)
+0:21          'v' ( temp highp 4-component vector of float)
+0:21          add ( temp highp 4-component vector of float)
+0:21            add ( temp highp 4-component vector of float)
+0:21              add ( temp highp 4-component vector of float)
+0:21                a: direct index for structure ( uniform highp 4-component vector of float)
+0:21                  'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a,  uniform highp 2-component vector of float b1,  uniform highp 2-component vector of float b2,  uniform highp 4-component vector of float c1,  uniform highp 4-component vector of float d})
+0:21                  Constant:
+0:21                    0 (const uint)
+0:21                Construct vec4 ( temp highp 4-component vector of float)
+0:21                  direct index ( temp highp float)
+0:21                    b1: direct index for structure ( uniform highp 2-component vector of float)
+0:21                      'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a,  uniform highp 2-component vector of float b1,  uniform highp 2-component vector of float b2,  uniform highp 4-component vector of float c1,  uniform highp 4-component vector of float d})
+0:21                      Constant:
+0:21                        1 (const uint)
+0:21                    Constant:
+0:21                      0 (const int)
+0:21                  direct index ( temp highp float)
+0:21                    b1: direct index for structure ( uniform highp 2-component vector of float)
+0:21                      'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a,  uniform highp 2-component vector of float b1,  uniform highp 2-component vector of float b2,  uniform highp 4-component vector of float c1,  uniform highp 4-component vector of float d})
+0:21                      Constant:
+0:21                        1 (const uint)
+0:21                    Constant:
+0:21                      1 (const int)
+0:21                  direct index ( temp highp float)
+0:21                    b2: direct index for structure ( uniform highp 2-component vector of float)
+0:21                      'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a,  uniform highp 2-component vector of float b1,  uniform highp 2-component vector of float b2,  uniform highp 4-component vector of float c1,  uniform highp 4-component vector of float d})
+0:21                      Constant:
+0:21                        2 (const uint)
+0:21                    Constant:
+0:21                      0 (const int)
+0:21                  direct index ( temp highp float)
+0:21                    b2: direct index for structure ( uniform highp 2-component vector of float)
+0:21                      'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a,  uniform highp 2-component vector of float b1,  uniform highp 2-component vector of float b2,  uniform highp 4-component vector of float c1,  uniform highp 4-component vector of float d})
+0:21                      Constant:
+0:21                        2 (const uint)
+0:21                    Constant:
+0:21                      1 (const int)
+0:21              c1: direct index for structure ( uniform highp 4-component vector of float)
+0:21                'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a,  uniform highp 2-component vector of float b1,  uniform highp 2-component vector of float b2,  uniform highp 4-component vector of float c1,  uniform highp 4-component vector of float d})
+0:21                Constant:
+0:21                  3 (const uint)
+0:21            d: direct index for structure ( uniform highp 4-component vector of float)
+0:21              'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a,  uniform highp 2-component vector of float b1,  uniform highp 2-component vector of float b2,  uniform highp 4-component vector of float c1,  uniform highp 4-component vector of float d})
+0:21              Constant:
+0:21                4 (const uint)
+0:23      Branch: Return with expression
+0:23        vector-scale ( temp highp 4-component vector of float)
+0:23          Convert uint to float ( temp highp float)
+0:23            'j' ( temp highp uint)
+0:23          'v' ( temp highp 4-component vector of float)
+0:26  Function Definition: main( ( global void)
+0:26    Function Parameters: 
+0:27    Sequence
+0:27      move second child to first child ( temp highp 4-component vector of float)
+0:27        'o' ( out highp 4-component vector of float)
+0:27        add ( temp highp 4-component vector of float)
+0:27          'io' (layout( location=0) smooth in highp 4-component vector of float)
+0:27          Function Call: foo( ( global highp 4-component vector of float)
+0:?   Linker Objects
+0:?     'io' (layout( location=0) smooth in highp 4-component vector of float)
+0:?     'o' ( out highp 4-component vector of float)
+0:?     'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a,  uniform highp 2-component vector of float b1,  uniform highp 2-component vector of float b2,  uniform highp 4-component vector of float c1,  uniform highp 4-component vector of float d})
+0:?     'anon@1' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter1,  coherent volatile buffer highp uint counter2})
+
+
+Linked vertex stage:
+
+
+Linked fragment stage:
+
+
+Shader version: 460
+0:? Sequence
+0:18  Function Definition: foo( ( global highp 4-component vector of float)
+0:18    Function Parameters: 
+0:19    Sequence
+0:19      Sequence
+0:19        move second child to first child ( temp highp uint)
+0:19          'j' ( temp highp uint)
+0:19          add ( temp highp uint)
+0:19            AtomicAdd ( global highp uint)
+0:19              counter2: direct index for structure ( coherent volatile buffer highp uint)
+0:19                'anon@1' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter3,  coherent volatile buffer highp uint counter2})
+0:19                Constant:
+0:19                  1 (const uint)
+0:19              Constant:
+0:19                1 (const uint)
+0:19            subtract ( temp highp uint)
+0:19              AtomicAdd ( global highp uint)
+0:19                counter3: direct index for structure ( coherent volatile buffer highp uint)
+0:19                  'anon@1' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter3,  coherent volatile buffer highp uint counter2})
+0:19                  Constant:
+0:19                    0 (const uint)
+0:19                Constant:
+0:19                  4294967295 (const uint)
+0:19              Constant:
+0:19                1 (const uint)
+0:20      Sequence
+0:20        move second child to first child ( temp highp 4-component vector of float)
+0:20          'v' ( temp highp 4-component vector of float)
+0:20          add ( temp highp 4-component vector of float)
+0:20            add ( temp highp 4-component vector of float)
+0:20              add ( temp highp 4-component vector of float)
+0:20                a: direct index for structure ( uniform highp 4-component vector of float)
+0:20                  'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a,  uniform highp 2-component vector of float b2,  uniform highp 2-component vector of float b1,  uniform highp 4-component vector of float c2,  uniform highp 4-component vector of float d,  uniform 4-element array of highp 4-component vector of float s})
+0:20                  Constant:
+0:20                    0 (const uint)
+0:20                Construct vec4 ( temp highp 4-component vector of float)
+0:20                  direct index ( temp highp float)
+0:20                    b1: direct index for structure ( uniform highp 2-component vector of float)
+0:20                      'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a,  uniform highp 2-component vector of float b2,  uniform highp 2-component vector of float b1,  uniform highp 4-component vector of float c2,  uniform highp 4-component vector of float d,  uniform 4-element array of highp 4-component vector of float s})
+0:20                      Constant:
+0:20                        2 (const uint)
+0:20                    Constant:
+0:20                      0 (const int)
+0:20                  direct index ( temp highp float)
+0:20                    b1: direct index for structure ( uniform highp 2-component vector of float)
+0:20                      'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a,  uniform highp 2-component vector of float b2,  uniform highp 2-component vector of float b1,  uniform highp 4-component vector of float c2,  uniform highp 4-component vector of float d,  uniform 4-element array of highp 4-component vector of float s})
+0:20                      Constant:
+0:20                        2 (const uint)
+0:20                    Constant:
+0:20                      1 (const int)
+0:20                  direct index ( temp highp float)
+0:20                    b2: direct index for structure ( uniform highp 2-component vector of float)
+0:20                      'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a,  uniform highp 2-component vector of float b2,  uniform highp 2-component vector of float b1,  uniform highp 4-component vector of float c2,  uniform highp 4-component vector of float d,  uniform 4-element array of highp 4-component vector of float s})
+0:20                      Constant:
+0:20                        1 (const uint)
+0:20                    Constant:
+0:20                      0 (const int)
+0:20                  direct index ( temp highp float)
+0:20                    b2: direct index for structure ( uniform highp 2-component vector of float)
+0:20                      'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a,  uniform highp 2-component vector of float b2,  uniform highp 2-component vector of float b1,  uniform highp 4-component vector of float c2,  uniform highp 4-component vector of float d,  uniform 4-element array of highp 4-component vector of float s})
+0:20                      Constant:
+0:20                        1 (const uint)
+0:20                    Constant:
+0:20                      1 (const int)
+0:20              c2: direct index for structure ( uniform highp 4-component vector of float)
+0:20                'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a,  uniform highp 2-component vector of float b2,  uniform highp 2-component vector of float b1,  uniform highp 4-component vector of float c2,  uniform highp 4-component vector of float d,  uniform 4-element array of highp 4-component vector of float s})
+0:20                Constant:
+0:20                  3 (const uint)
+0:20            d: direct index for structure ( uniform highp 4-component vector of float)
+0:20              'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a,  uniform highp 2-component vector of float b2,  uniform highp 2-component vector of float b1,  uniform highp 4-component vector of float c2,  uniform highp 4-component vector of float d,  uniform 4-element array of highp 4-component vector of float s})
+0:20              Constant:
+0:20                4 (const uint)
+0:22      Branch: Return with expression
+0:22        vector-scale ( temp highp 4-component vector of float)
+0:22          Convert uint to float ( temp highp float)
+0:22            'j' ( temp highp uint)
+0:22          'v' ( temp highp 4-component vector of float)
+0:25  Function Definition: main( ( global void)
+0:25    Function Parameters: 
+0:27    Sequence
+0:27      Sequence
+0:27        move second child to first child ( temp highp 4-component vector of float)
+0:27          'v' ( temp highp 4-component vector of float)
+0:27          Function Call: foo( ( global highp 4-component vector of float)
+0:28      move second child to first child ( temp highp 4-component vector of float)
+0:28        'v' ( temp highp 4-component vector of float)
+0:28        add ( temp highp 4-component vector of float)
+0:28          'v' ( temp highp 4-component vector of float)
+0:28          indirect index ( temp highp 4-component vector of float)
+0:28            s: direct index for structure ( uniform 4-element array of highp 4-component vector of float)
+0:28              'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a,  uniform highp 2-component vector of float b2,  uniform highp 2-component vector of float b1,  uniform highp 4-component vector of float c2,  uniform highp 4-component vector of float d,  uniform 4-element array of highp 4-component vector of float s})
+0:28              Constant:
+0:28                5 (const uint)
+0:28            'gl_VertexID' ( in int VertexIndex)
+0:29      move second child to first child ( temp highp float)
+0:29        direct index ( temp highp float)
+0:29          'v' ( temp highp 4-component vector of float)
+0:29          Constant:
+0:29            0 (const int)
+0:29        subtract ( temp highp float)
+0:29          direct index ( temp highp float)
+0:29            'v' ( temp highp 4-component vector of float)
+0:29            Constant:
+0:29              0 (const int)
+0:29          Convert int to float ( temp highp float)
+0:29            'gl_InstanceID' ( in highp int InstanceIndex)
+0:30      move second child to first child ( temp highp 4-component vector of float)
+0:30        'io' (layout( location=0) smooth out highp 4-component vector of float)
+0:30        'v' ( temp highp 4-component vector of float)
+0:?   Linker Objects
+0:?     'io' (layout( location=0) smooth out highp 4-component vector of float)
+0:?     'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a,  uniform highp 2-component vector of float b2,  uniform highp 2-component vector of float b1,  uniform highp 4-component vector of float c2,  uniform highp 4-component vector of float d,  uniform 4-element array of highp 4-component vector of float s})
+0:?     'anon@1' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter3,  coherent volatile buffer highp uint counter2})
+0:?     'gl_VertexID' ( in int VertexIndex)
+0:?     'gl_InstanceID' ( in int InstanceIndex)
+Shader version: 460
+gl_FragCoord origin is upper left
+0:? Sequence
+0:19  Function Definition: foo( ( global highp 4-component vector of float)
+0:19    Function Parameters: 
+0:20    Sequence
+0:20      Sequence
+0:20        move second child to first child ( temp highp uint)
+0:20          'j' ( temp highp uint)
+0:20          add ( temp highp uint)
+0:20            AtomicAdd ( global highp uint)
+0:20              counter1: direct index for structure ( coherent volatile buffer highp uint)
+0:20                'anon@1' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter1,  coherent volatile buffer highp uint counter2})
+0:20                Constant:
+0:20                  0 (const uint)
+0:20              Constant:
+0:20                1 (const uint)
+0:20            subtract ( temp highp uint)
+0:20              AtomicAdd ( global highp uint)
+0:20                counter2: direct index for structure ( coherent volatile buffer highp uint)
+0:20                  'anon@1' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter1,  coherent volatile buffer highp uint counter2})
+0:20                  Constant:
+0:20                    1 (const uint)
+0:20                Constant:
+0:20                  4294967295 (const uint)
+0:20              Constant:
+0:20                1 (const uint)
+0:21      Sequence
+0:21        move second child to first child ( temp highp 4-component vector of float)
+0:21          'v' ( temp highp 4-component vector of float)
+0:21          add ( temp highp 4-component vector of float)
+0:21            add ( temp highp 4-component vector of float)
+0:21              add ( temp highp 4-component vector of float)
+0:21                a: direct index for structure ( uniform highp 4-component vector of float)
+0:21                  'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a,  uniform highp 2-component vector of float b1,  uniform highp 2-component vector of float b2,  uniform highp 4-component vector of float c1,  uniform highp 4-component vector of float d})
+0:21                  Constant:
+0:21                    0 (const uint)
+0:21                Construct vec4 ( temp highp 4-component vector of float)
+0:21                  direct index ( temp highp float)
+0:21                    b1: direct index for structure ( uniform highp 2-component vector of float)
+0:21                      'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a,  uniform highp 2-component vector of float b1,  uniform highp 2-component vector of float b2,  uniform highp 4-component vector of float c1,  uniform highp 4-component vector of float d})
+0:21                      Constant:
+0:21                        1 (const uint)
+0:21                    Constant:
+0:21                      0 (const int)
+0:21                  direct index ( temp highp float)
+0:21                    b1: direct index for structure ( uniform highp 2-component vector of float)
+0:21                      'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a,  uniform highp 2-component vector of float b1,  uniform highp 2-component vector of float b2,  uniform highp 4-component vector of float c1,  uniform highp 4-component vector of float d})
+0:21                      Constant:
+0:21                        1 (const uint)
+0:21                    Constant:
+0:21                      1 (const int)
+0:21                  direct index ( temp highp float)
+0:21                    b2: direct index for structure ( uniform highp 2-component vector of float)
+0:21                      'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a,  uniform highp 2-component vector of float b1,  uniform highp 2-component vector of float b2,  uniform highp 4-component vector of float c1,  uniform highp 4-component vector of float d})
+0:21                      Constant:
+0:21                        2 (const uint)
+0:21                    Constant:
+0:21                      0 (const int)
+0:21                  direct index ( temp highp float)
+0:21                    b2: direct index for structure ( uniform highp 2-component vector of float)
+0:21                      'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a,  uniform highp 2-component vector of float b1,  uniform highp 2-component vector of float b2,  uniform highp 4-component vector of float c1,  uniform highp 4-component vector of float d})
+0:21                      Constant:
+0:21                        2 (const uint)
+0:21                    Constant:
+0:21                      1 (const int)
+0:21              c1: direct index for structure ( uniform highp 4-component vector of float)
+0:21                'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a,  uniform highp 2-component vector of float b1,  uniform highp 2-component vector of float b2,  uniform highp 4-component vector of float c1,  uniform highp 4-component vector of float d})
+0:21                Constant:
+0:21                  3 (const uint)
+0:21            d: direct index for structure ( uniform highp 4-component vector of float)
+0:21              'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a,  uniform highp 2-component vector of float b1,  uniform highp 2-component vector of float b2,  uniform highp 4-component vector of float c1,  uniform highp 4-component vector of float d})
+0:21              Constant:
+0:21                4 (const uint)
+0:23      Branch: Return with expression
+0:23        vector-scale ( temp highp 4-component vector of float)
+0:23          Convert uint to float ( temp highp float)
+0:23            'j' ( temp highp uint)
+0:23          'v' ( temp highp 4-component vector of float)
+0:26  Function Definition: main( ( global void)
+0:26    Function Parameters: 
+0:27    Sequence
+0:27      move second child to first child ( temp highp 4-component vector of float)
+0:27        'o' ( out highp 4-component vector of float)
+0:27        add ( temp highp 4-component vector of float)
+0:27          'io' (layout( location=0) smooth in highp 4-component vector of float)
+0:27          Function Call: foo( ( global highp 4-component vector of float)
+0:?   Linker Objects
+0:?     'io' (layout( location=0) smooth in highp 4-component vector of float)
+0:?     'o' ( out highp 4-component vector of float)
+0:?     'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a,  uniform highp 2-component vector of float b1,  uniform highp 2-component vector of float b2,  uniform highp 4-component vector of float c1,  uniform highp 4-component vector of float d})
+0:?     'anon@1' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter1,  coherent volatile buffer highp uint counter2})
+
+// Module Version 10000
+// Generated by (magic number): 8000a
+// Id's are bound by 88
+
+                              Capability Shader
+               1:             ExtInstImport  "GLSL.std.450"
+                              MemoryModel Logical GLSL450
+                              EntryPoint Vertex 4  "main" 72 80 86
+                              Source GLSL 460
+                              Name 4  "main"
+                              Name 9  "foo("
+                              Name 13  "j"
+                              Name 14  "gl_AtomicCounterBlock_0"
+                              MemberName 14(gl_AtomicCounterBlock_0) 0  "counter3"
+                              MemberName 14(gl_AtomicCounterBlock_0) 1  "counter2"
+                              MemberName 14(gl_AtomicCounterBlock_0) 2  "counter1"
+                              Name 16  ""
+                              Name 31  "v"
+                              Name 35  "gl_DefaultUniformBlock"
+                              MemberName 35(gl_DefaultUniformBlock) 0  "a"
+                              MemberName 35(gl_DefaultUniformBlock) 1  "b2"
+                              MemberName 35(gl_DefaultUniformBlock) 2  "b1"
+                              MemberName 35(gl_DefaultUniformBlock) 3  "c2"
+                              MemberName 35(gl_DefaultUniformBlock) 4  "d"
+                              MemberName 35(gl_DefaultUniformBlock) 5  "s"
+                              MemberName 35(gl_DefaultUniformBlock) 6  "c1"
+                              Name 37  ""
+                              Name 67  "v"
+                              Name 72  "gl_VertexID"
+                              Name 80  "gl_InstanceID"
+                              Name 86  "io"
+                              MemberDecorate 14(gl_AtomicCounterBlock_0) 0 Coherent
+                              MemberDecorate 14(gl_AtomicCounterBlock_0) 0 Volatile
+                              MemberDecorate 14(gl_AtomicCounterBlock_0) 0 Coherent
+                              MemberDecorate 14(gl_AtomicCounterBlock_0) 0 Offset 0
+                              MemberDecorate 14(gl_AtomicCounterBlock_0) 1 Coherent
+                              MemberDecorate 14(gl_AtomicCounterBlock_0) 1 Volatile
+                              MemberDecorate 14(gl_AtomicCounterBlock_0) 1 Coherent
+                              MemberDecorate 14(gl_AtomicCounterBlock_0) 1 Offset 4
+                              MemberDecorate 14(gl_AtomicCounterBlock_0) 2 Coherent
+                              MemberDecorate 14(gl_AtomicCounterBlock_0) 2 Volatile
+                              MemberDecorate 14(gl_AtomicCounterBlock_0) 2 Coherent
+                              MemberDecorate 14(gl_AtomicCounterBlock_0) 2 Offset 8
+                              Decorate 14(gl_AtomicCounterBlock_0) BufferBlock
+                              Decorate 16 DescriptorSet 0
+                              Decorate 16 Binding 1
+                              Decorate 34 ArrayStride 16
+                              MemberDecorate 35(gl_DefaultUniformBlock) 0 Offset 0
+                              MemberDecorate 35(gl_DefaultUniformBlock) 1 Offset 16
+                              MemberDecorate 35(gl_DefaultUniformBlock) 2 Offset 24
+                              MemberDecorate 35(gl_DefaultUniformBlock) 3 Offset 32
+                              MemberDecorate 35(gl_DefaultUniformBlock) 4 Offset 48
+                              MemberDecorate 35(gl_DefaultUniformBlock) 5 Offset 64
+                              MemberDecorate 35(gl_DefaultUniformBlock) 6 Offset 128
+                              Decorate 35(gl_DefaultUniformBlock) Block
+                              Decorate 37 DescriptorSet 0
+                              Decorate 37 Binding 0
+                              Decorate 72(gl_VertexID) BuiltIn VertexIndex
+                              Decorate 80(gl_InstanceID) BuiltIn InstanceIndex
+                              Decorate 86(io) Location 0
+               2:             TypeVoid
+               3:             TypeFunction 2
+               6:             TypeFloat 32
+               7:             TypeVector 6(float) 4
+               8:             TypeFunction 7(fvec4)
+              11:             TypeInt 32 0
+              12:             TypePointer Function 11(int)
+14(gl_AtomicCounterBlock_0):             TypeStruct 11(int) 11(int) 11(int)
+              15:             TypePointer Uniform 14(gl_AtomicCounterBlock_0)
+              16:     15(ptr) Variable Uniform
+              17:             TypeInt 32 1
+              18:     17(int) Constant 1
+              19:             TypePointer Uniform 11(int)
+              21:     11(int) Constant 1
+              22:     11(int) Constant 0
+              24:     17(int) Constant 0
+              26:     11(int) Constant 4294967295
+              30:             TypePointer Function 7(fvec4)
+              32:             TypeVector 6(float) 2
+              33:     11(int) Constant 4
+              34:             TypeArray 7(fvec4) 33
+35(gl_DefaultUniformBlock):             TypeStruct 7(fvec4) 32(fvec2) 32(fvec2) 7(fvec4) 7(fvec4) 34 7(fvec4)
+              36:             TypePointer Uniform 35(gl_DefaultUniformBlock)
+              37:     36(ptr) Variable Uniform
+              38:             TypePointer Uniform 7(fvec4)
+              41:     17(int) Constant 2
+              42:             TypePointer Uniform 6(float)
+              53:     17(int) Constant 3
+              57:     17(int) Constant 4
+              70:     17(int) Constant 5
+              71:             TypePointer Input 17(int)
+ 72(gl_VertexID):     71(ptr) Variable Input
+              77:             TypePointer Function 6(float)
+80(gl_InstanceID):     71(ptr) Variable Input
+              85:             TypePointer Output 7(fvec4)
+          86(io):     85(ptr) Variable Output
+         4(main):           2 Function None 3
+               5:             Label
+           67(v):     30(ptr) Variable Function
+              68:    7(fvec4) FunctionCall 9(foo()
+                              Store 67(v) 68
+              69:    7(fvec4) Load 67(v)
+              73:     17(int) Load 72(gl_VertexID)
+              74:     38(ptr) AccessChain 37 70 73
+              75:    7(fvec4) Load 74
+              76:    7(fvec4) FAdd 69 75
+                              Store 67(v) 76
+              78:     77(ptr) AccessChain 67(v) 22
+              79:    6(float) Load 78
+              81:     17(int) Load 80(gl_InstanceID)
+              82:    6(float) ConvertSToF 81
+              83:    6(float) FSub 79 82
+              84:     77(ptr) AccessChain 67(v) 22
+                              Store 84 83
+              87:    7(fvec4) Load 67(v)
+                              Store 86(io) 87
+                              Return
+                              FunctionEnd
+         9(foo():    7(fvec4) Function None 8
+              10:             Label
+           13(j):     12(ptr) Variable Function
+           31(v):     30(ptr) Variable Function
+              20:     19(ptr) AccessChain 16 18
+              23:     11(int) AtomicIAdd 20 21 22 21
+              25:     19(ptr) AccessChain 16 24
+              27:     11(int) AtomicIAdd 25 21 22 26
+              28:     11(int) ISub 27 21
+              29:     11(int) IAdd 23 28
+                              Store 13(j) 29
+              39:     38(ptr) AccessChain 37 24
+              40:    7(fvec4) Load 39
+              43:     42(ptr) AccessChain 37 41 22
+              44:    6(float) Load 43
+              45:     42(ptr) AccessChain 37 41 21
+              46:    6(float) Load 45
+              47:     42(ptr) AccessChain 37 18 22
+              48:    6(float) Load 47
+              49:     42(ptr) AccessChain 37 18 21
+              50:    6(float) Load 49
+              51:    7(fvec4) CompositeConstruct 44 46 48 50
+              52:    7(fvec4) FAdd 40 51
+              54:     38(ptr) AccessChain 37 53
+              55:    7(fvec4) Load 54
+              56:    7(fvec4) FAdd 52 55
+              58:     38(ptr) AccessChain 37 57
+              59:    7(fvec4) Load 58
+              60:    7(fvec4) FAdd 56 59
+                              Store 31(v) 60
+              61:     11(int) Load 13(j)
+              62:    6(float) ConvertUToF 61
+              63:    7(fvec4) Load 31(v)
+              64:    7(fvec4) VectorTimesScalar 63 62
+                              ReturnValue 64
+                              FunctionEnd
+// Module Version 10000
+// Generated by (magic number): 8000a
+// Id's are bound by 74
+
+                              Capability Shader
+               1:             ExtInstImport  "GLSL.std.450"
+                              MemoryModel Logical GLSL450
+                              EntryPoint Fragment 4  "main" 68 70
+                              ExecutionMode 4 OriginUpperLeft
+                              Source GLSL 460
+                              Name 4  "main"
+                              Name 9  "foo("
+                              Name 13  "j"
+                              Name 14  "gl_AtomicCounterBlock_0"
+                              MemberName 14(gl_AtomicCounterBlock_0) 0  "counter3"
+                              MemberName 14(gl_AtomicCounterBlock_0) 1  "counter2"
+                              MemberName 14(gl_AtomicCounterBlock_0) 2  "counter1"
+                              Name 16  ""
+                              Name 31  "v"
+                              Name 35  "gl_DefaultUniformBlock"
+                              MemberName 35(gl_DefaultUniformBlock) 0  "a"
+                              MemberName 35(gl_DefaultUniformBlock) 1  "b2"
+                              MemberName 35(gl_DefaultUniformBlock) 2  "b1"
+                              MemberName 35(gl_DefaultUniformBlock) 3  "c2"
+                              MemberName 35(gl_DefaultUniformBlock) 4  "d"
+                              MemberName 35(gl_DefaultUniformBlock) 5  "s"
+                              MemberName 35(gl_DefaultUniformBlock) 6  "c1"
+                              Name 37  ""
+                              Name 68  "o"
+                              Name 70  "io"
+                              MemberDecorate 14(gl_AtomicCounterBlock_0) 0 Coherent
+                              MemberDecorate 14(gl_AtomicCounterBlock_0) 0 Volatile
+                              MemberDecorate 14(gl_AtomicCounterBlock_0) 0 Coherent
+                              MemberDecorate 14(gl_AtomicCounterBlock_0) 0 Offset 0
+                              MemberDecorate 14(gl_AtomicCounterBlock_0) 1 Coherent
+                              MemberDecorate 14(gl_AtomicCounterBlock_0) 1 Volatile
+                              MemberDecorate 14(gl_AtomicCounterBlock_0) 1 Coherent
+                              MemberDecorate 14(gl_AtomicCounterBlock_0) 1 Offset 4
+                              MemberDecorate 14(gl_AtomicCounterBlock_0) 2 Coherent
+                              MemberDecorate 14(gl_AtomicCounterBlock_0) 2 Volatile
+                              MemberDecorate 14(gl_AtomicCounterBlock_0) 2 Coherent
+                              MemberDecorate 14(gl_AtomicCounterBlock_0) 2 Offset 8
+                              Decorate 14(gl_AtomicCounterBlock_0) BufferBlock
+                              Decorate 16 DescriptorSet 0
+                              Decorate 16 Binding 1
+                              Decorate 34 ArrayStride 16
+                              MemberDecorate 35(gl_DefaultUniformBlock) 0 Offset 0
+                              MemberDecorate 35(gl_DefaultUniformBlock) 1 Offset 16
+                              MemberDecorate 35(gl_DefaultUniformBlock) 2 Offset 24
+                              MemberDecorate 35(gl_DefaultUniformBlock) 3 Offset 32
+                              MemberDecorate 35(gl_DefaultUniformBlock) 4 Offset 48
+                              MemberDecorate 35(gl_DefaultUniformBlock) 5 Offset 64
+                              MemberDecorate 35(gl_DefaultUniformBlock) 6 Offset 128
+                              Decorate 35(gl_DefaultUniformBlock) Block
+                              Decorate 37 DescriptorSet 0
+                              Decorate 37 Binding 0
+                              Decorate 68(o) Location 0
+                              Decorate 70(io) Location 0
+               2:             TypeVoid
+               3:             TypeFunction 2
+               6:             TypeFloat 32
+               7:             TypeVector 6(float) 4
+               8:             TypeFunction 7(fvec4)
+              11:             TypeInt 32 0
+              12:             TypePointer Function 11(int)
+14(gl_AtomicCounterBlock_0):             TypeStruct 11(int) 11(int) 11(int)
+              15:             TypePointer Uniform 14(gl_AtomicCounterBlock_0)
+              16:     15(ptr) Variable Uniform
+              17:             TypeInt 32 1
+              18:     17(int) Constant 2
+              19:             TypePointer Uniform 11(int)
+              21:     11(int) Constant 1
+              22:     11(int) Constant 0
+              24:     17(int) Constant 1
+              26:     11(int) Constant 4294967295
+              30:             TypePointer Function 7(fvec4)
+              32:             TypeVector 6(float) 2
+              33:     11(int) Constant 4
+              34:             TypeArray 7(fvec4) 33
+35(gl_DefaultUniformBlock):             TypeStruct 7(fvec4) 32(fvec2) 32(fvec2) 7(fvec4) 7(fvec4) 34 7(fvec4)
+              36:             TypePointer Uniform 35(gl_DefaultUniformBlock)
+              37:     36(ptr) Variable Uniform
+              38:     17(int) Constant 0
+              39:             TypePointer Uniform 7(fvec4)
+              42:             TypePointer Uniform 6(float)
+              53:     17(int) Constant 6
+              57:     17(int) Constant 4
+              67:             TypePointer Output 7(fvec4)
+           68(o):     67(ptr) Variable Output
+              69:             TypePointer Input 7(fvec4)
+          70(io):     69(ptr) Variable Input
+         4(main):           2 Function None 3
+               5:             Label
+              71:    7(fvec4) Load 70(io)
+              72:    7(fvec4) FunctionCall 9(foo()
+              73:    7(fvec4) FAdd 71 72
+                              Store 68(o) 73
+                              Return
+                              FunctionEnd
+         9(foo():    7(fvec4) Function None 8
+              10:             Label
+           13(j):     12(ptr) Variable Function
+           31(v):     30(ptr) Variable Function
+              20:     19(ptr) AccessChain 16 18
+              23:     11(int) AtomicIAdd 20 21 22 21
+              25:     19(ptr) AccessChain 16 24
+              27:     11(int) AtomicIAdd 25 21 22 26
+              28:     11(int) ISub 27 21
+              29:     11(int) IAdd 23 28
+                              Store 13(j) 29
+              40:     39(ptr) AccessChain 37 38
+              41:    7(fvec4) Load 40
+              43:     42(ptr) AccessChain 37 18 22
+              44:    6(float) Load 43
+              45:     42(ptr) AccessChain 37 18 21
+              46:    6(float) Load 45
+              47:     42(ptr) AccessChain 37 24 22
+              48:    6(float) Load 47
+              49:     42(ptr) AccessChain 37 24 21
+              50:    6(float) Load 49
+              51:    7(fvec4) CompositeConstruct 44 46 48 50
+              52:    7(fvec4) FAdd 41 51
+              54:     39(ptr) AccessChain 37 53
+              55:    7(fvec4) Load 54
+              56:    7(fvec4) FAdd 52 55
+              58:     39(ptr) AccessChain 37 57
+              59:    7(fvec4) Load 58
+              60:    7(fvec4) FAdd 56 59
+                              Store 31(v) 60
+              61:     11(int) Load 13(j)
+              62:    6(float) ConvertUToF 61
+              63:    7(fvec4) Load 31(v)
+              64:    7(fvec4) VectorTimesScalar 63 62
+                              ReturnValue 64
+                              FunctionEnd
diff --git a/Test/baseResults/vulkan.comp.out b/Test/baseResults/vulkan.comp.out
index e56dca4..3edb619 100644
--- a/Test/baseResults/vulkan.comp.out
+++ b/Test/baseResults/vulkan.comp.out
@@ -1,6 +1,17 @@
 vulkan.comp
 ERROR: 0:5: 'local_size' : cannot change previously set size 
-ERROR: 1 compilation errors.  No code generated.
+ERROR: 0:10: 'empty { } initializer' : not supported for this version or the enabled extensions 
+ERROR: 0:15: 'empty { } initializer' : not supported for this version or the enabled extensions 
+ERROR: 0:15: 'initialization with shared qualifier' : not supported for this version or the enabled extensions 
+ERROR: 0:16: 'empty { } initializer' : not supported for this version or the enabled extensions 
+ERROR: 0:26: '{}' : null initializers can't size unsized arrays 
+ERROR: 0:31: 'structure' : non-uniform struct contains a sampler or image: sampVar
+ERROR: 0:31: '{}' : null initializers can't be used on opaque values 
+ERROR: 0:33: 'atomic counter types' : not allowed when using GLSL for Vulkan 
+ERROR: 0:33: 'atomic_uint' : atomic_uints can only be used in uniform variables or function parameters: a
+ERROR: 0:33: '{}' : null initializers can't be used on opaque values 
+ERROR: 0:33: 'atomic_uint' : layout(binding=X) is required 
+ERROR: 12 compilation errors.  No code generated.
 
 
 SPIR-V is not generated for failed compile or link
diff --git a/Test/contradict_0.geom b/Test/contradict_0.geom
old mode 100755
new mode 100644
diff --git a/Test/contradict_1.geom b/Test/contradict_1.geom
old mode 100755
new mode 100644
diff --git a/Test/cppBad4.vert b/Test/cppBad4.vert
old mode 100755
new mode 100644
diff --git a/Test/cppBad5.vert b/Test/cppBad5.vert
old mode 100755
new mode 100644
diff --git a/Test/cppMerge.frag b/Test/cppMerge.frag
old mode 100755
new mode 100644
diff --git a/Test/hlsl.intrinsics.evalfns.frag b/Test/hlsl.intrinsics.evalfns.frag
index 9638706..7b7509d 100644
--- a/Test/hlsl.intrinsics.evalfns.frag
+++ b/Test/hlsl.intrinsics.evalfns.frag
@@ -1,10 +1,33 @@
-
-void main(float inF1, float2 inF2, float3 inF3, float4 inF4, int2 inI2) : COLOR
+struct PS_INPUT
 {
-    EvaluateAttributeSnapped(inF1, int2(8,15));
-    EvaluateAttributeSnapped(inF2, int2(0,1));
-    EvaluateAttributeSnapped(inF3, int2(3,10));
-    EvaluateAttributeSnapped(inF4, int2(7,8));
+        float2 vPos: TEXCOORD0;
+};
 
-    EvaluateAttributeSnapped(inF1, inI2);
+float4 main(float inF1, float2 inF2, float3 inF3, float4 inF4, int2 inI2, PS_INPUT i) : COLOR
+{
+    float  oF1 = EvaluateAttributeSnapped(inF1, int2(8,15));
+    float2 oF2 = EvaluateAttributeSnapped(inF2, int2(0,1));
+    float3 oF3 = EvaluateAttributeSnapped(inF3, int2(3,10));
+    float4 oF4 = EvaluateAttributeSnapped(inF4, int2(7,8));
+
+    oF1 += EvaluateAttributeSnapped(inF1, inI2);
+
+    oF1 += EvaluateAttributeAtSample(inF1, 3);
+    oF2 += EvaluateAttributeAtSample(inF2, 3);
+    oF3 += EvaluateAttributeAtSample(inF3, 3);
+    oF4 += EvaluateAttributeAtSample(inF4, 3);
+
+    oF1 += EvaluateAttributeAtSample(inF1, inI2.x);
+
+    oF1 += EvaluateAttributeAtCentroid(inF1);
+    oF2 += EvaluateAttributeAtCentroid(inF2);
+    oF3 += EvaluateAttributeAtCentroid(inF3);
+    oF4 += EvaluateAttributeAtCentroid(inF4);
+
+    oF2 += EvaluateAttributeSnapped(i.vPos, int2(0,1));
+    oF2 += EvaluateAttributeAtSample(i.vPos, 3);
+    oF2 += EvaluateAttributeAtCentroid(i.vPos);
+
+    float4 color = float4(oF1, oF2.y, oF3.z, oF4.w);
+    return color;
 }
diff --git a/Test/hlsl.intrinsics.frag b/Test/hlsl.intrinsics.frag
old mode 100755
new mode 100644
diff --git a/Test/hlsl.printf.comp b/Test/hlsl.printf.comp
new file mode 100644
index 0000000..d117299
--- /dev/null
+++ b/Test/hlsl.printf.comp
@@ -0,0 +1,11 @@
+const string first = "first string";
+
+[numthreads(1,1,1)]
+void main() {
+    printf(first);
+    printf("please print this message.");
+    printf("Variables are: %d %d %.2f", 1u, 2u, 1.5f);
+    printf("Integers are: %d %d %d", 1, 2, 3);
+    printf("More: %d %d %d %d %d %d %d %d %d %d", 1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
+}
+
diff --git a/Test/hlsl.round.dx10.frag b/Test/hlsl.round.dx10.frag
new file mode 100644
index 0000000..cd88334
--- /dev/null
+++ b/Test/hlsl.round.dx10.frag
@@ -0,0 +1,4 @@
+float4 PixelShaderFunction(float4 input) : COLOR0
+{
+    return round(input);
+}
diff --git a/Test/hlsl.round.dx9.frag b/Test/hlsl.round.dx9.frag
new file mode 100644
index 0000000..cd88334
--- /dev/null
+++ b/Test/hlsl.round.dx9.frag
@@ -0,0 +1,4 @@
+float4 PixelShaderFunction(float4 input) : COLOR0
+{
+    return round(input);
+}
diff --git a/Test/hlsl.singleArgIntPromo.vert b/Test/hlsl.singleArgIntPromo.vert
old mode 100755
new mode 100644
diff --git a/Test/hlsl.specConstant.frag b/Test/hlsl.specConstant.frag
old mode 100755
new mode 100644
diff --git a/Test/iomap.crossStage.2.frag b/Test/iomap.crossStage.2.frag
new file mode 100644
index 0000000..25756a6
--- /dev/null
+++ b/Test/iomap.crossStage.2.frag
@@ -0,0 +1,42 @@
+#version 460
+
+
+layout(location = 5) in outBlock {
+    vec4 o3;
+};
+
+
+in vec4 gfo1;
+in vec2 gfo2;
+
+out vec4 outColor;
+
+uniform vec2 u1;
+uniform vec3 u2;           // initializer present in vertex stage
+uniform vec4 u3 = vec4(0); // initializer matches initializer in vertex stage
+
+uniform mat2 um2 = mat2(4.0);
+
+layout (location = 0, binding = 0) uniform sampler2D glass;
+
+uniform crossStageBlock1 {
+    uniform vec4 a;
+    vec4 b;
+};
+
+buffer fragOnlyBlock {
+    vec2 fb1;
+};
+
+uniform crossStageBlock2 {
+    uniform vec4 a;
+    vec2 b;
+} blockName2 [2]; // instance name different from vert
+
+
+void main()
+{
+    vec4 color = gfo1 * u1.rgrg * u2.rgbr * u3.rgba;        // o1 is statically used
+    outColor = color;
+}
+
diff --git a/Test/iomap.crossStage.2.geom b/Test/iomap.crossStage.2.geom
new file mode 100644
index 0000000..91508ab
--- /dev/null
+++ b/Test/iomap.crossStage.2.geom
@@ -0,0 +1,39 @@
+#version 460
+
+layout(points) in;
+layout(triangle_strip, max_vertices=3) out;
+
+in vec4 vgo1[];
+in vec2 vgo2[];
+
+layout(location = 5) in outBlock {
+    vec4 o3;
+} inBlock[];
+
+out vec4 gfo1;
+out vec2 gfo2;
+
+layout(location = 5) out outBlock {
+    vec4 o3;
+} gf_out;
+
+uniform vec2 u1;
+uniform vec3 u2 = vec3(0); // initializer not present in fragment stage
+uniform vec4 u3 = vec4(0); // initializer matches initializer in fragment stage
+
+uniform crossStageBlock2 {
+    uniform vec4 a;
+    vec2 b;
+} blockName1 [2]; // instance name different from frag
+
+void main()
+{
+    for (int i = 0; i < 3; i++) {
+        gfo1 = vec4(0);
+        gfo2 = vec2(0);
+        gf_out.o3 = inBlock[i].o3;
+        EmitVertex();
+    }
+    EndPrimitive();
+}
+
diff --git a/Test/iomap.crossStage.2.vert b/Test/iomap.crossStage.2.vert
new file mode 100644
index 0000000..ebb0d9d
--- /dev/null
+++ b/Test/iomap.crossStage.2.vert
@@ -0,0 +1,38 @@
+#version 460
+
+out vec4 vgo1; // declaration order different than fragment shader
+out vec2 vgo2; // declaration order different than fragment shader
+
+layout(location = 5) out outBlock {
+    vec4 o3;
+};
+
+uniform vec2 u1;
+uniform vec3 u2 = vec3(0); // initializer not present in fragment stage
+uniform vec4 u3 = vec4(0); // initializer matches initializer in fragment stage
+
+uniform mat2 um2 = mat2(4.0);
+
+layout (location = 0, binding = 0) uniform sampler2D glass;
+
+uniform crossStageBlock1 {
+    uniform vec4 a;
+    vec4 b;
+};
+
+buffer vertOnlyBlock {
+    vec2 vb1;
+};
+
+uniform crossStageBlock2 {
+    uniform vec4 a;
+    vec2 b;
+} blockName1 [2]; // instance name different from frag
+
+void main()
+{
+    vgo1 = vec4(0);
+    vgo2 = vec2(0);
+    o3 = vec4(0);
+}
+
diff --git a/Test/iomap.crossStage.frag b/Test/iomap.crossStage.frag
new file mode 100644
index 0000000..1624703
--- /dev/null
+++ b/Test/iomap.crossStage.frag
@@ -0,0 +1,41 @@
+#version 460
+
+
+layout(location = 5) in outBlock {
+    vec4 o3;
+};
+
+in vec2 o2; // declaration order different than vertex shader
+in vec4 o1; // declaration order different than vertex shader
+
+out vec4 outColor;
+
+uniform vec2 u1;
+uniform vec3 u2;    // initializer present in vertex stage
+uniform vec4 u3 = vec4(0); // initializer matches initializer in vertex stage
+
+uniform mat2 um2 = mat2(4.0);
+
+layout (location = 0, binding = 0) uniform sampler2D glass;
+
+uniform crossStageBlock1 {
+    uniform vec4 a;
+    vec4 b;
+};
+
+buffer fragOnlyBlock {
+    vec2 fb1;
+};
+
+uniform crossStageBlock2 {
+    uniform vec4 a;
+    vec2 b;
+} blockName2 [2]; // instance name different from vert
+
+
+void main()
+{
+    vec4 color = o1 * u1.rgrg * u2.rgbr * u3.rgba;        // o1 is statically used
+    outColor = color;
+}
+
diff --git a/Test/iomap.crossStage.vert b/Test/iomap.crossStage.vert
new file mode 100644
index 0000000..d05874f
--- /dev/null
+++ b/Test/iomap.crossStage.vert
@@ -0,0 +1,38 @@
+#version 460
+
+out vec4 o1; // declaration order different than fragment shader
+out vec2 o2; // declaration order different than fragment shader
+
+layout(location = 5) out outBlock {
+    vec4 o3;
+};
+
+uniform vec2 u1;
+uniform vec3 u2 = vec3(0); // initializer not present in fragment stage
+uniform vec4 u3 = vec4(0); // initializer matches initializer in fragment stage
+
+uniform mat2 um2 = mat2(4.0);
+
+layout (location = 0, binding = 0) uniform sampler2D glass;
+
+uniform crossStageBlock1 {
+    uniform vec4 a;
+    vec4 b;
+};
+
+buffer vertOnlyBlock {
+    vec2 vb1;
+};
+
+uniform crossStageBlock2 {
+    uniform vec4 a;
+    vec2 b;
+} blockName1 [2]; // instance name different from frag
+
+void main()
+{
+    o1 = vec4(0);
+    o2 = vec2(0);
+    o3 = vec4(0);
+}
+
diff --git a/Test/iomap.crossStage.vk.frag b/Test/iomap.crossStage.vk.frag
new file mode 100644
index 0000000..d09e687
--- /dev/null
+++ b/Test/iomap.crossStage.vk.frag
@@ -0,0 +1,50 @@
+#version 460
+
+
+layout(location = 5) in outBlock {
+    vec4 o3;
+};
+
+
+in vec4 gfo1;
+in vec2 gfo2;
+
+out vec4 outColor;
+
+layout (binding = 0) uniform sampler2D glass;
+
+uniform crossStageBlock1 {
+    uniform vec4 a;
+    vec4 b;
+};
+
+readonly buffer fragOnlyBlock {
+    vec2 fb1;
+};
+
+uniform crossStageBlock2 {
+    uniform vec4 a;
+    vec2 b;
+} blockName2 [2]; // instance name different from vert
+
+vec2 Bar() {
+    return  fb1 + 
+            blockName2[0].b +
+            blockName2[1].b;
+}
+
+vec4 Foo() {
+    return  a + 
+            b + 
+            blockName2[0].a +
+            blockName2[1].a +
+            vec4(Bar(), 0.0, 0.0);
+}
+
+void main()
+{
+    vec4 color = gfo1; // o1 is statically used
+    color = color + Foo();
+    outColor = color;
+}
+
diff --git a/Test/iomap.crossStage.vk.geom b/Test/iomap.crossStage.vk.geom
new file mode 100644
index 0000000..b951737
--- /dev/null
+++ b/Test/iomap.crossStage.vk.geom
@@ -0,0 +1,35 @@
+#version 460
+
+layout(points) in;
+layout(triangle_strip, max_vertices=3) out;
+
+in vec4 vgo1[];
+in vec2 vgo2[];
+
+layout(location = 5) in outBlock {
+    vec4 o3;
+} inBlock[];
+
+out vec4 gfo1;
+out vec2 gfo2;
+
+layout(location = 5) out outBlock {
+    vec4 o3;
+} gf_out;
+
+uniform crossStageBlock2 {
+    uniform vec4 a;
+    vec2 b;
+} blockName1 [2]; // instance name different from frag
+
+void main()
+{
+    for (int i = 0; i < 3; i++) {
+        gfo1 = vec4(0);
+        gfo2 = vec2(0);
+        gf_out.o3 = inBlock[i].o3;
+        EmitVertex();
+    }
+    EndPrimitive();
+}
+
diff --git a/Test/iomap.crossStage.vk.vert b/Test/iomap.crossStage.vk.vert
new file mode 100644
index 0000000..e422131
--- /dev/null
+++ b/Test/iomap.crossStage.vk.vert
@@ -0,0 +1,32 @@
+#version 460
+
+out vec4 vgo1; // declaration order different than fragment shader
+out vec2 vgo2; // declaration order different than fragment shader
+
+layout(location = 5) out outBlock {
+    vec4 o3;
+};
+
+layout (binding = 0) uniform sampler2D glass;
+
+uniform crossStageBlock1 {
+    uniform vec4 a;
+    vec4 b;
+};
+
+readonly buffer vertOnlyBlock {
+    vec2 vb1;
+};
+
+uniform crossStageBlock2 {
+    uniform vec4 a;
+    vec2 b;
+} blockName1 [2]; // instance name different from frag
+
+void main()
+{
+    vgo1 = vec4(0);
+    vgo2 = vec2(0);
+    o3 = vec4(0);
+}
+
diff --git a/Test/link.multiAnonBlocksInvalid.0.0.vert b/Test/link.multiAnonBlocksInvalid.0.0.vert
old mode 100755
new mode 100644
diff --git a/Test/link.multiAnonBlocksInvalid.0.1.vert b/Test/link.multiAnonBlocksInvalid.0.1.vert
old mode 100755
new mode 100644
diff --git a/Test/link.multiAnonBlocksValid.0.0.vert b/Test/link.multiAnonBlocksValid.0.0.vert
old mode 100755
new mode 100644
diff --git a/Test/link.multiAnonBlocksValid.0.1.vert b/Test/link.multiAnonBlocksValid.0.1.vert
old mode 100755
new mode 100644
diff --git a/Test/link.multiBlocksInvalid.0.0.vert b/Test/link.multiBlocksInvalid.0.0.vert
old mode 100755
new mode 100644
diff --git a/Test/link.multiBlocksInvalid.0.1.vert b/Test/link.multiBlocksInvalid.0.1.vert
old mode 100755
new mode 100644
diff --git a/Test/link.multiBlocksValid.1.0.vert b/Test/link.multiBlocksValid.1.0.vert
old mode 100755
new mode 100644
diff --git a/Test/link.multiBlocksValid.1.1.vert b/Test/link.multiBlocksValid.1.1.vert
old mode 100755
new mode 100644
diff --git a/Test/link.vk.differentPC.0.0.frag b/Test/link.vk.differentPC.0.0.frag
old mode 100755
new mode 100644
diff --git a/Test/link.vk.differentPC.0.1.frag b/Test/link.vk.differentPC.0.1.frag
old mode 100755
new mode 100644
diff --git a/Test/link.vk.differentPC.0.2.frag b/Test/link.vk.differentPC.0.2.frag
old mode 100755
new mode 100644
diff --git a/Test/link.vk.differentPC.1.0.frag b/Test/link.vk.differentPC.1.0.frag
old mode 100755
new mode 100644
diff --git a/Test/link.vk.differentPC.1.1.frag b/Test/link.vk.differentPC.1.1.frag
old mode 100755
new mode 100644
diff --git a/Test/link.vk.differentPC.1.2.frag b/Test/link.vk.differentPC.1.2.frag
old mode 100755
new mode 100644
diff --git a/Test/link.vk.inconsistentGLPerVertex.0.geom b/Test/link.vk.inconsistentGLPerVertex.0.geom
new file mode 100755
index 0000000..4d192d6
--- /dev/null
+++ b/Test/link.vk.inconsistentGLPerVertex.0.geom
@@ -0,0 +1,27 @@
+#version 460 core
+
+layout(lines_adjacency) in; 
+layout(triangle_strip, max_vertices = 50) out;
+
+in vs_output 
+{ 
+	vec4 color;
+} gs_in[]; 
+
+out gs_output
+{
+	vec4 color;
+} gs_out;
+
+void main()
+{
+	gl_Position = gl_in[0].gl_Position;
+	gs_out.color = gs_in[0].color;
+	EmitVertex();
+	gs_out.color = gs_in[1].color;
+	gl_Position = gl_in[1].gl_Position;
+	EmitVertex();
+	gs_out.color = gs_in[0].color;
+	gl_Position = gl_in[0].gl_Position;
+	EmitVertex();
+}
diff --git a/Test/link.vk.inconsistentGLPerVertex.0.vert b/Test/link.vk.inconsistentGLPerVertex.0.vert
new file mode 100755
index 0000000..7658c68
--- /dev/null
+++ b/Test/link.vk.inconsistentGLPerVertex.0.vert
@@ -0,0 +1,20 @@
+#version 460 core
+
+// This test is to test isInconsistentGLPerVertexMember() workarounds.
+// Without that workaround this compile fails due to block declarations
+// in gl_PerVertex not being consistent for:
+// gl_SecondaryPositionNV
+// gl_PositionPerViewNV
+
+out vs_output 
+{ 
+	vec4 color;
+} vs_out; 
+
+in vec4 P;
+void main()
+{
+	vs_out.color = vec4(1.);
+	gl_PointSize = 1.0;
+	gl_Position = P;
+}
diff --git a/Test/link.vk.matchingPC.0.0.frag b/Test/link.vk.matchingPC.0.0.frag
old mode 100755
new mode 100644
diff --git a/Test/link.vk.matchingPC.0.1.frag b/Test/link.vk.matchingPC.0.1.frag
old mode 100755
new mode 100644
diff --git a/Test/link.vk.matchingPC.0.2.frag b/Test/link.vk.matchingPC.0.2.frag
old mode 100755
new mode 100644
diff --git a/Test/link.vk.multiBlocksValid.0.0.vert b/Test/link.vk.multiBlocksValid.0.0.vert
old mode 100755
new mode 100644
diff --git a/Test/link.vk.multiBlocksValid.0.1.vert b/Test/link.vk.multiBlocksValid.0.1.vert
old mode 100755
new mode 100644
diff --git a/Test/link.vk.multiBlocksValid.1.0.geom b/Test/link.vk.multiBlocksValid.1.0.geom
old mode 100755
new mode 100644
diff --git a/Test/link.vk.multiBlocksValid.1.1.geom b/Test/link.vk.multiBlocksValid.1.1.geom
old mode 100755
new mode 100644
diff --git a/Test/link.vk.pcNamingInvalid.0.0.vert b/Test/link.vk.pcNamingInvalid.0.0.vert
old mode 100755
new mode 100644
diff --git a/Test/link.vk.pcNamingInvalid.0.1.vert b/Test/link.vk.pcNamingInvalid.0.1.vert
old mode 100755
new mode 100644
diff --git a/Test/link.vk.pcNamingValid.0.0.vert b/Test/link.vk.pcNamingValid.0.0.vert
old mode 100755
new mode 100644
diff --git a/Test/link.vk.pcNamingValid.0.1.vert b/Test/link.vk.pcNamingValid.0.1.vert
old mode 100755
new mode 100644
diff --git a/Test/negativeWorkGroupSize.comp b/Test/negativeWorkGroupSize.comp
new file mode 100644
index 0000000..1f007d0
--- /dev/null
+++ b/Test/negativeWorkGroupSize.comp
@@ -0,0 +1,12 @@
+#version 460
+
+void fn(){
+    uvec3 wgs = gl_WorkGroupSize; // error: fixed workgroup size has not been declared
+}
+
+layout(local_size_x = 64) in; // declare workgroup size
+
+void main(){
+    fn();
+    uvec3 wgs = gl_WorkGroupSize; // valid
+}
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/rayQuery-initialization.Error.comp b/Test/rayQuery-initialization.Error.comp
new file mode 100644
index 0000000..1c7757c
--- /dev/null
+++ b/Test/rayQuery-initialization.Error.comp
@@ -0,0 +1,8 @@
+#version 460
+
+#extension GL_EXT_ray_query : enable
+
+void main () {
+    rayQueryEXT foo;
+    rayQueryEXT bar = foo;
+}
\ No newline at end of file
diff --git a/Test/rayQuery-types.comp b/Test/rayQuery-types.comp
new file mode 100644
index 0000000..c70a3fc
--- /dev/null
+++ b/Test/rayQuery-types.comp
@@ -0,0 +1,45 @@
+#version 460
+#extension GL_EXT_ray_query : require
+
+layout(local_size_x = 16, local_size_y = 8, local_size_z = 1) in;
+
+layout(binding = 0, set = 0) uniform accelerationStructureEXT tlas;
+
+void main()
+{
+  rayQueryEXT rayQuery;
+  rayQueryInitializeEXT(rayQuery,       // Ray query
+                        tlas,           // Top-level acceleration structure
+                        0,              // Ray flags
+                        0xFF,           // 8-bit instance mask
+                        vec3(0),        // Ray origin
+                        0.0,            // Minimum t-value
+                        vec3(1, 0, 0),  // Ray direction
+                        10000.0);       // Maximum t-value
+
+  // yes this is silly, just want to verify the return types
+  bool rq_proceed = rayQueryProceedEXT(rayQuery);
+  while(rq_proceed)
+  {
+    rq_proceed = rayQueryProceedEXT(rayQuery);
+  }
+
+  const uint intersectionType = rayQueryGetIntersectionTypeEXT(rayQuery, true);
+  const float rayTMin = rayQueryGetRayTMinEXT(rayQuery);
+  const uint rayFlags = rayQueryGetRayFlagsEXT(rayQuery);
+  const vec3 worldRayOrigin = rayQueryGetWorldRayOriginEXT(rayQuery);
+  const vec3 worldDirection = rayQueryGetWorldRayDirectionEXT(rayQuery);
+  const float intersectionT = rayQueryGetIntersectionTEXT(rayQuery, true);
+  const int customIndex = rayQueryGetIntersectionInstanceCustomIndexEXT(rayQuery, true);
+  const int instanceId = rayQueryGetIntersectionInstanceIdEXT(rayQuery, true);
+  const uint sbtOffset = rayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetEXT(rayQuery, true);
+  const int geometryIndex = rayQueryGetIntersectionGeometryIndexEXT(rayQuery, true);
+  const int primitiveIndex = rayQueryGetIntersectionPrimitiveIndexEXT(rayQuery, true);
+  const vec2 barys = rayQueryGetIntersectionBarycentricsEXT(rayQuery, true);
+  const bool frontface = rayQueryGetIntersectionFrontFaceEXT(rayQuery, true);
+  const bool aabbOpaque = rayQueryGetIntersectionCandidateAABBOpaqueEXT(rayQuery);
+  const vec3 objRayDirection = rayQueryGetIntersectionObjectRayDirectionEXT(rayQuery, true);
+  const vec3 objRayOrigin = rayQueryGetIntersectionObjectRayOriginEXT(rayQuery, true);
+  const mat4x3 objToWorld = rayQueryGetIntersectionObjectToWorldEXT(rayQuery, true);
+  const mat4x3 worldToObj = rayQueryGetIntersectionWorldToObjectEXT(rayQuery, true);
+}
diff --git a/Test/runtests b/Test/runtests
index df07046..51f1a6a 100755
--- a/Test/runtests
+++ b/Test/runtests
@@ -169,7 +169,7 @@
      -G -H spv.debugInfo.frag --rsb frag 3 > $TARGETDIR/spv.debugInfo.frag.out
 diff -b $BASEDIR/spv.debugInfo.frag.out $TARGETDIR/spv.debugInfo.frag.out || HASERROR=1
 run -g -Od --target-env vulkan1.1 --relaxed-errors --suppress-warnings --aml --amb --hlsl-offsets --nsf --spirv-val \
-     -G -H spv.debugInfo.frag --rsb frag 3 > $TARGETDIR/spv.debugInfo.1.1.frag.out
+     -V -H spv.debugInfo.frag --rsb frag 3 > $TARGETDIR/spv.debugInfo.1.1.frag.out
 diff -b $BASEDIR/spv.debugInfo.1.1.frag.out $TARGETDIR/spv.debugInfo.1.1.frag.out || HASERROR=1
 run -g -D -Od -e newMain -g --amb --aml --fua --hlsl-iomap --nsf --spirv-val --sib 1 --ssb 2 --sbb 3 --stb 4 --suavb 5 --sub 6 \
      --sep origMain -H -Od spv.hlslDebugInfo.vert --rsb vert t0 0 0 > $TARGETDIR/spv.hlslDebugInfo.frag.out
diff --git a/Test/spv.1.4.NonWritable.frag b/Test/spv.1.4.NonWritable.frag
old mode 100755
new mode 100644
diff --git a/Test/spv.1.4.OpSelect.frag b/Test/spv.1.4.OpSelect.frag
old mode 100755
new mode 100644
diff --git a/Test/spv.MissShader.rmiss b/Test/spv.MissShader.rmiss
index 06113de..3c6b31c 100644
--- a/Test/spv.MissShader.rmiss
+++ b/Test/spv.MissShader.rmiss
@@ -9,8 +9,7 @@
 	uvec3 v1 = gl_LaunchSizeNV;
 	vec3 v2 = gl_WorldRayOriginNV;
 	vec3 v3 = gl_WorldRayDirectionNV;
-	vec3 v4 = gl_ObjectRayOriginNV;
-	vec3 v5 = gl_ObjectRayDirectionNV;
+	uint v4 = gl_IncomingRayFlagsNV;
 	float v6 = gl_RayTminNV;
 	float v7 = gl_RayTmaxNV;
 	traceNV(accNV, 0u, 1u, 2u, 3u, 0u, vec3(0.5f), 0.5f, vec3(1.0f), 0.75f, 1);
diff --git a/Test/spv.WorkgroupMemoryExplicitLayout.16BitAccess.comp b/Test/spv.WorkgroupMemoryExplicitLayout.16BitAccess.comp
new file mode 100644
index 0000000..e06555e
--- /dev/null
+++ b/Test/spv.WorkgroupMemoryExplicitLayout.16BitAccess.comp
@@ -0,0 +1,18 @@
+#version 430 core
+
+#extension GL_EXT_shared_memory_block : enable
+#extension GL_EXT_shader_explicit_arithmetic_types: enable
+
+layout(local_size_x = 2) in;
+
+shared first
+{
+    int16_t a;
+    float16_t f;
+};
+
+void main()
+{
+    a = int16_t(3);
+    f = float16_t(12.3);
+}
diff --git a/Test/spv.WorkgroupMemoryExplicitLayout.8BitAccess.comp b/Test/spv.WorkgroupMemoryExplicitLayout.8BitAccess.comp
new file mode 100644
index 0000000..aaa512c
--- /dev/null
+++ b/Test/spv.WorkgroupMemoryExplicitLayout.8BitAccess.comp
@@ -0,0 +1,16 @@
+#version 430 core
+
+#extension GL_EXT_shared_memory_block : enable
+#extension GL_EXT_shader_explicit_arithmetic_types: enable
+
+layout(local_size_x = 2) in;
+
+shared first
+{
+    int8_t a;
+};
+
+void main()
+{
+    a = int8_t(2);
+}
diff --git a/Test/spv.WorkgroupMemoryExplicitLayout.MixBlockNonBlock_Errors.comp b/Test/spv.WorkgroupMemoryExplicitLayout.MixBlockNonBlock_Errors.comp
new file mode 100644
index 0000000..573d092
--- /dev/null
+++ b/Test/spv.WorkgroupMemoryExplicitLayout.MixBlockNonBlock_Errors.comp
@@ -0,0 +1,20 @@
+#version 430 core
+
+#extension GL_EXT_shared_memory_block : enable
+
+layout(local_size_x = 8) in;
+
+shared first
+{
+    int a;
+};
+
+shared int b;
+
+// Cannot mix shared block and shared non-block, will fail at linking.
+
+void main()
+{
+    a = 2;
+    b = 3;
+}
diff --git a/Test/spv.WorkgroupMemoryExplicitLayout.MultiBlock.comp b/Test/spv.WorkgroupMemoryExplicitLayout.MultiBlock.comp
new file mode 100644
index 0000000..675a443
--- /dev/null
+++ b/Test/spv.WorkgroupMemoryExplicitLayout.MultiBlock.comp
@@ -0,0 +1,21 @@
+#version 430 core
+
+#extension GL_EXT_shared_memory_block : enable
+
+layout(local_size_x = 8) in;
+
+shared first
+{
+    int a;
+};
+
+shared second
+{
+    int b;
+};
+
+void main()
+{
+    a = 2;
+    b = 3;
+}
diff --git a/Test/spv.WorkgroupMemoryExplicitLayout.NonBlock.comp b/Test/spv.WorkgroupMemoryExplicitLayout.NonBlock.comp
new file mode 100644
index 0000000..38316a5
--- /dev/null
+++ b/Test/spv.WorkgroupMemoryExplicitLayout.NonBlock.comp
@@ -0,0 +1,14 @@
+#version 430 core
+
+#extension GL_EXT_shared_memory_block : enable
+
+layout(local_size_x = 8) in;
+
+shared int a;
+shared int b;
+
+void main()
+{
+    a = 2;
+    b = 3;
+}
diff --git a/Test/spv.WorkgroupMemoryExplicitLayout.SingleBlock.comp b/Test/spv.WorkgroupMemoryExplicitLayout.SingleBlock.comp
new file mode 100644
index 0000000..2a17c61
--- /dev/null
+++ b/Test/spv.WorkgroupMemoryExplicitLayout.SingleBlock.comp
@@ -0,0 +1,15 @@
+#version 430 core
+
+#extension GL_EXT_shared_memory_block : enable
+
+layout(local_size_x = 8) in;
+
+shared first
+{
+    int a;
+};
+
+void main()
+{
+    a = 2;
+}
diff --git a/Test/spv.WorkgroupMemoryExplicitLayout.scalar.comp b/Test/spv.WorkgroupMemoryExplicitLayout.scalar.comp
new file mode 100644
index 0000000..38085b4
--- /dev/null
+++ b/Test/spv.WorkgroupMemoryExplicitLayout.scalar.comp
@@ -0,0 +1,39 @@
+#version 430 core
+
+#extension GL_EXT_scalar_block_layout : enable
+#extension GL_EXT_shared_memory_block : enable
+
+layout(local_size_x = 8) in;
+
+struct T
+{
+    float t[3];
+};
+
+struct S
+{
+    float f;
+    vec2 v2;
+    vec3 v3;
+    vec4 v4;
+    T t;
+
+    float f_array[6];
+    vec2 v2_array[6];
+    vec3 v3_array[6];
+    vec4 v4_array[6];
+    T t_array[6];
+};
+
+// Use a default qualifier.
+layout(scalar) shared;
+
+shared Block
+{
+    S s;
+    S s_array[6];
+};
+
+void main()
+{
+}
diff --git a/Test/spv.WorkgroupMemoryExplicitLayout.std140.comp b/Test/spv.WorkgroupMemoryExplicitLayout.std140.comp
new file mode 100644
index 0000000..f4f2475
--- /dev/null
+++ b/Test/spv.WorkgroupMemoryExplicitLayout.std140.comp
@@ -0,0 +1,35 @@
+#version 430 core
+
+#extension GL_EXT_shared_memory_block : enable
+
+layout(local_size_x = 8) in;
+
+struct T
+{
+    float t[3];
+};
+
+struct S
+{
+    float f;
+    vec2 v2;
+    vec3 v3;
+    vec4 v4;
+    T t;
+
+    float f_array[6];
+    vec2 v2_array[6];
+    vec3 v3_array[6];
+    vec4 v4_array[6];
+    T t_array[6];
+};
+
+layout(std140) shared Block
+{
+    S s;
+    S s_array[6];
+};
+
+void main()
+{
+}
diff --git a/Test/spv.WorkgroupMemoryExplicitLayout.std430.comp b/Test/spv.WorkgroupMemoryExplicitLayout.std430.comp
new file mode 100644
index 0000000..717593b
--- /dev/null
+++ b/Test/spv.WorkgroupMemoryExplicitLayout.std430.comp
@@ -0,0 +1,35 @@
+#version 430 core
+
+#extension GL_EXT_shared_memory_block : enable
+
+layout(local_size_x = 8) in;
+
+struct T
+{
+    float t[3];
+};
+
+struct S
+{
+    float f;
+    vec2 v2;
+    vec3 v3;
+    vec4 v4;
+    T t;
+
+    float f_array[6];
+    vec2 v2_array[6];
+    vec3 v3_array[6];
+    vec4 v4_array[6];
+    T t_array[6];
+};
+
+layout(std430) shared Block
+{
+    S s;
+    S s_array[6];
+};
+
+void main()
+{
+}
diff --git a/Test/spv.atomicFloat.comp b/Test/spv.atomicFloat.comp
old mode 100755
new mode 100644
diff --git a/Test/spv.atomicFloat_Error.comp b/Test/spv.atomicFloat_Error.comp
old mode 100755
new mode 100644
diff --git a/Test/spv.atomicStoreInt64.comp b/Test/spv.atomicStoreInt64.comp
new file mode 100644
index 0000000..879c37a
--- /dev/null
+++ b/Test/spv.atomicStoreInt64.comp
@@ -0,0 +1,11 @@
+#version 450
+#extension GL_EXT_shader_explicit_arithmetic_types_int64 : enable
+#extension GL_EXT_shader_atomic_int64 : enable
+#extension GL_KHR_memory_scope_semantics : enable
+
+layout(set = 0, binding = 0) buffer ssbo { uint64_t y; };
+layout(set = 0, binding = 1) uniform ubo { uint64_t z; };
+
+void main() {
+    atomicStore(y, z, gl_ScopeDevice, gl_StorageSemanticsBuffer, gl_SemanticsRelaxed);
+}
diff --git a/Test/spv.builtin.PrimitiveShadingRateEXT.vert b/Test/spv.builtin.PrimitiveShadingRateEXT.vert
new file mode 100644
index 0000000..6fd98c3
--- /dev/null
+++ b/Test/spv.builtin.PrimitiveShadingRateEXT.vert
@@ -0,0 +1,28 @@
+#version 450
+
+#extension GL_EXT_fragment_shading_rate : enable
+
+layout(location = 0) in int id;
+
+void main()
+{
+    switch (id)
+    {
+    case 0:
+        // V2 | H2 => 5
+        gl_PrimitiveShadingRateEXT = gl_ShadingRateFlag2VerticalPixelsEXT | gl_ShadingRateFlag2HorizontalPixelsEXT;
+        break;
+    case 1:
+        // V2 | H4 => 9
+        gl_PrimitiveShadingRateEXT = gl_ShadingRateFlag2VerticalPixelsEXT | gl_ShadingRateFlag4HorizontalPixelsEXT;
+        break;
+    case 2:
+        // V4 | H2 => 6
+        gl_PrimitiveShadingRateEXT = gl_ShadingRateFlag4VerticalPixelsEXT | gl_ShadingRateFlag2HorizontalPixelsEXT;
+        break;
+    case 3:
+        // V4 | H4 => 10
+        gl_PrimitiveShadingRateEXT = gl_ShadingRateFlag4VerticalPixelsEXT | gl_ShadingRateFlag4HorizontalPixelsEXT;
+        break;
+    }
+}
\ No newline at end of file
diff --git a/Test/spv.builtin.ShadingRateEXT.frag b/Test/spv.builtin.ShadingRateEXT.frag
new file mode 100644
index 0000000..616baec
--- /dev/null
+++ b/Test/spv.builtin.ShadingRateEXT.frag
@@ -0,0 +1,8 @@
+#version 450
+
+#extension GL_EXT_fragment_shading_rate : enable
+
+out highp int val;
+void main () {
+    val = gl_ShadingRateEXT;
+}
diff --git a/Test/spv.depthUnchanged.frag b/Test/spv.depthUnchanged.frag
new file mode 100644
index 0000000..bbc5139
--- /dev/null
+++ b/Test/spv.depthUnchanged.frag
@@ -0,0 +1,8 @@
+#version 430
+layout(location = 0) out vec4 outColor;
+layout(depth_unchanged) out float gl_FragDepth;
+void main() {
+  outColor = vec4(1.0, 0.0, 0.0, 1.0);
+  gl_FragDepth = gl_FragCoord.y;
+}
+
diff --git a/Test/spv.ext.AccelDecl.frag b/Test/spv.ext.AccelDecl.frag
new file mode 100644
index 0000000..4374bf3
--- /dev/null
+++ b/Test/spv.ext.AccelDecl.frag
@@ -0,0 +1,14 @@
+#version 460
+#extension GL_ARB_separate_shader_objects : enable
+#extension GL_EXT_nonuniform_qualifier : enable
+#extension GL_GOOGLE_include_directive : enable
+#extension GL_EXT_scalar_block_layout : enable
+#extension GL_EXT_ray_query : enable
+
+layout(location = 0) out vec4 outColor;
+
+layout(binding = 1, set = 0) uniform accelerationStructureEXT topLevelAS;
+
+void main() {
+  outColor = vec4(0.0);
+}
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..05311c9 100644
--- a/Test/spv.ext.MissShader.rmiss
+++ b/Test/spv.ext.MissShader.rmiss
@@ -1,8 +1,19 @@
 #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
+#extension GL_ARB_sparse_texture_clamp: enable
+
 layout(binding = 0, set = 0) uniform accelerationStructureEXT accEXT;
 layout(location = 0) rayPayloadEXT vec4 localPayload;
 layout(location = 1) rayPayloadInEXT vec4 incomingPayload;
+
+layout(binding = 1, set = 0) uniform sampler2D    s2D;
+layout(location = 2) in vec2 c2;
+layout(location = 3) in float lodClamp;
+
 void main()
 {
 	uvec3 v0 = gl_LaunchIDEXT;
@@ -12,4 +23,6 @@
 	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);
+        vec4 texel = textureGradOffsetClampARB(s2D, c2, c2, c2, ivec2(5), lodClamp);
 }
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
 }
diff --git a/Test/spv.ext.RayQueryDecl.frag b/Test/spv.ext.RayQueryDecl.frag
new file mode 100644
index 0000000..8a144d6
--- /dev/null
+++ b/Test/spv.ext.RayQueryDecl.frag
@@ -0,0 +1,14 @@
+#version 460
+#extension GL_ARB_separate_shader_objects : enable
+#extension GL_EXT_nonuniform_qualifier : enable
+#extension GL_GOOGLE_include_directive : enable
+#extension GL_EXT_scalar_block_layout : enable
+#extension GL_EXT_ray_query : enable
+
+layout(location = 0) out vec4 outColor;
+
+rayQueryEXT rq;
+
+void main() {
+  outColor = vec4(0.0);
+}
diff --git a/Test/spv.float16Fetch.frag b/Test/spv.float16Fetch.frag
index b1ba98c..eeda1dd 100644
--- a/Test/spv.float16Fetch.frag
+++ b/Test/spv.float16Fetch.frag
@@ -889,19 +889,20 @@
 f16vec4 testSparseTextureGatherOffsets()
 {
     f16vec4 texel = f16vec4(0.0hf);
+    const ivec2 constOffsets[4] = ivec2[4](ivec2(1,2), ivec2(3,4), ivec2(15,16), ivec2(-2,0));
 
-    sparseTextureGatherOffsetsARB(s2D, c2, offsets, texel, 0);
-    sparseTextureGatherOffsetsARB(s2D, f16c2, offsets, texel, 0, f16bias);
-    sparseTextureGatherOffsetsARB(s2DArray, c3, offsets, texel, 0);
-    sparseTextureGatherOffsetsARB(s2DArray, f16c3, offsets, texel, 0, f16bias);
-    sparseTextureGatherOffsetsARB(s2DRect, c2, offsets, texel, 0);
-    sparseTextureGatherOffsetsARB(s2DRect, f16c2, offsets, texel, 0);
-    sparseTextureGatherOffsetsARB(s2DShadow, c2, compare, offsets, texel);
-    sparseTextureGatherOffsetsARB(s2DShadow, f16c2, compare, offsets, texel);
-    sparseTextureGatherOffsetsARB(s2DArrayShadow, c3, compare, offsets, texel);
-    sparseTextureGatherOffsetsARB(s2DArrayShadow, f16c3, compare, offsets, texel);
-    sparseTextureGatherOffsetsARB(s2DRectShadow, c2, compare, offsets, texel);
-    sparseTextureGatherOffsetsARB(s2DRectShadow, f16c2, compare, offsets, texel);
+    sparseTextureGatherOffsetsARB(s2D, c2, constOffsets, texel, 0);
+    sparseTextureGatherOffsetsARB(s2D, f16c2, constOffsets, texel, 0, f16bias);
+    sparseTextureGatherOffsetsARB(s2DArray, c3, constOffsets, texel, 0);
+    sparseTextureGatherOffsetsARB(s2DArray, f16c3, constOffsets, texel, 0, f16bias);
+    sparseTextureGatherOffsetsARB(s2DRect, c2, constOffsets, texel, 0);
+    sparseTextureGatherOffsetsARB(s2DRect, f16c2, constOffsets, texel, 0);
+    sparseTextureGatherOffsetsARB(s2DShadow, c2, compare, constOffsets, texel);
+    sparseTextureGatherOffsetsARB(s2DShadow, f16c2, compare, constOffsets, texel);
+    sparseTextureGatherOffsetsARB(s2DArrayShadow, c3, compare, constOffsets, texel);
+    sparseTextureGatherOffsetsARB(s2DArrayShadow, f16c3, compare, constOffsets, texel);
+    sparseTextureGatherOffsetsARB(s2DRectShadow, c2, compare, constOffsets, texel);
+    sparseTextureGatherOffsetsARB(s2DRectShadow, f16c2, compare, constOffsets, texel);
 
     return texel;
 }
diff --git a/Test/spv.imageAtomic64.frag b/Test/spv.imageAtomic64.frag
new file mode 100644
index 0000000..bd671d9
--- /dev/null
+++ b/Test/spv.imageAtomic64.frag
@@ -0,0 +1,92 @@
+#version 450 core
+
+#extension GL_ARB_gpu_shader_int64: enable
+#extension GL_EXT_shader_image_int64: enable
+#extension GL_KHR_memory_scope_semantics: enable
+#extension GL_ARB_sparse_texture2: enable
+ 
+layout(binding = 0, r64i)  uniform i64image1D i1D;
+layout(binding = 1, r64ui) uniform u64image2D u2D;
+layout(binding = 2, r64i)  uniform i64image3D i3D;
+layout(binding = 3, r64ui) uniform u64imageCube uCube;
+layout(binding = 4, r64i)  uniform i64imageBuffer iBuf;
+layout(binding = 5, r64ui) uniform u64image1DArray u1DArray;
+layout(binding = 6, r64i)  uniform i64image2DArray i2DArray;
+layout(binding = 7, r64ui) uniform u64imageCubeArray uCubeArray;
+layout(binding = 8, r64i)  uniform i64image2DRect i2DRect;
+layout(binding = 9, r64ui) uniform u64image2DMS u2DMS;
+layout(binding = 10, r64i) uniform i64image2DMSArray i2DMSArray;
+
+layout(binding = 11) buffer Buf
+{
+    int64_t i64;
+    uint64_t u64;
+    i64vec4 i64v4;
+    u64vec4 u64v4;
+    ivec4 i32v4;
+};
+
+void main()
+{
+    i64 = imageAtomicAdd(i1D, i32v4.x, i64);
+    i64 = imageAtomicMin(i3D, i32v4.xyz, i64);
+    i64 = imageAtomicMax(iBuf, i32v4.x, i64);
+    i64 = imageAtomicAnd(i2DArray, i32v4.xyz, i64);
+    i64 = imageAtomicOr(i2DRect, i32v4.xy, i64);
+    i64 = imageAtomicXor(i2DMSArray, i32v4.xyz, i32v4.w, i64);
+    i64 = imageAtomicExchange(i1D, i32v4.x, i64);
+    i64 = imageAtomicCompSwap(i3D, i32v4.xyz, i64, i64 + 1);
+
+    i64 = imageAtomicAdd(i1D, i32v4.x, i64, gl_ScopeDevice, gl_StorageSemanticsImage, gl_SemanticsRelaxed);
+    i64 = imageAtomicMin(i3D, i32v4.xyz, i64, gl_ScopeDevice, gl_StorageSemanticsImage, gl_SemanticsRelaxed);
+    i64 = imageAtomicMax(iBuf, i32v4.x, i64, gl_ScopeDevice, gl_StorageSemanticsImage, gl_SemanticsRelaxed);
+    i64 = imageAtomicAnd(i2DArray, i32v4.xyz, i64, gl_ScopeDevice, gl_StorageSemanticsImage, gl_SemanticsRelaxed);
+    i64 = imageAtomicOr(i2DRect, i32v4.xy, i64, gl_ScopeDevice, gl_StorageSemanticsImage, gl_SemanticsRelaxed);
+    i64 = imageAtomicXor(i2DMSArray, i32v4.xyz, i32v4.w, i64, gl_ScopeDevice, gl_StorageSemanticsImage, gl_SemanticsRelaxed);
+    i64 = imageAtomicExchange(i1D, i32v4.x, i64, gl_ScopeDevice, gl_StorageSemanticsImage, gl_SemanticsRelaxed);
+    i64 = imageAtomicCompSwap(i3D, i32v4.xyz, i64, i64 + 1, gl_ScopeDevice,
+            gl_StorageSemanticsImage, gl_SemanticsRelaxed, gl_StorageSemanticsImage, gl_SemanticsRelaxed);
+    i64 = imageAtomicLoad(iBuf, i32v4.x, gl_ScopeDevice, gl_StorageSemanticsImage, gl_SemanticsRelaxed);
+    imageAtomicStore(i2DArray, i32v4.xyz, i64, gl_ScopeDevice, gl_StorageSemanticsImage, gl_SemanticsRelaxed);
+
+    u64 = imageAtomicAdd(u2D, i32v4.xy, u64);
+    u64 = imageAtomicMin(uCube, i32v4.xyz, u64);
+    u64 = imageAtomicMax(u1DArray, i32v4.xy, u64);
+    u64 = imageAtomicAnd(uCubeArray, i32v4.xyz, u64);
+    u64 = imageAtomicOr(u2DMS, i32v4.xy, i32v4.z, u64);
+    u64 = imageAtomicXor(u2D, i32v4.xy, u64);
+    u64 = imageAtomicExchange(uCube, i32v4.xyz, u64);
+    u64 = imageAtomicCompSwap(u1DArray, i32v4.xy, u64, u64 + 1);
+
+    u64 = imageAtomicAdd(u2D, i32v4.xy, u64, gl_ScopeDevice, gl_StorageSemanticsImage, gl_SemanticsRelaxed);
+    u64 = imageAtomicMin(uCube, i32v4.xyz, u64, gl_ScopeDevice, gl_StorageSemanticsImage, gl_SemanticsRelaxed);
+    u64 = imageAtomicMax(u1DArray, i32v4.xy, u64, gl_ScopeDevice, gl_StorageSemanticsImage, gl_SemanticsRelaxed);
+    u64 = imageAtomicAnd(uCubeArray, i32v4.xyz, u64, gl_ScopeDevice, gl_StorageSemanticsImage, gl_SemanticsRelaxed);
+    u64 = imageAtomicOr(u2DMS, i32v4.xy, i32v4.z, u64, gl_ScopeDevice, gl_StorageSemanticsImage, gl_SemanticsRelaxed);
+    u64 = imageAtomicXor(u2D, i32v4.xy, u64, gl_ScopeDevice, gl_StorageSemanticsImage, gl_SemanticsRelaxed);
+    u64 = imageAtomicExchange(uCube, i32v4.xyz, u64, gl_ScopeDevice, gl_StorageSemanticsImage, gl_SemanticsRelaxed);
+    u64 = imageAtomicCompSwap(u1DArray, i32v4.xy, u64, u64 + 1, gl_ScopeDevice,
+            gl_StorageSemanticsImage, gl_SemanticsRelaxed, gl_StorageSemanticsImage, gl_SemanticsRelaxed);
+    u64 = imageAtomicLoad(uCubeArray, i32v4.xyz, gl_ScopeDevice, gl_StorageSemanticsImage, gl_SemanticsRelaxed);
+    imageAtomicStore(u2DMS, i32v4.xy, i32v4.z, u64, gl_ScopeDevice, gl_StorageSemanticsImage, gl_SemanticsRelaxed);
+
+    i64v4 += imageLoad(i1D, i32v4.x);
+    i64v4 += imageLoad(i3D, i32v4.xyz);
+    i64v4 += imageLoad(iBuf, i32v4.x);
+    i64v4 += imageLoad(i2DArray, i32v4.xyz);
+    i64v4 += imageLoad(i2DRect, i32v4.xy);
+    i64v4 += imageLoad(i2DMSArray, i32v4.xyz, i32v4.w);
+
+    imageStore(u2D, i32v4.xy, u64v4);
+    imageStore(uCube, i32v4.xyz, u64v4);
+    imageStore(u1DArray, i32v4.xy, u64v4);
+    imageStore(uCubeArray, i32v4.xyz, u64v4);
+    imageStore(u2DMS, i32v4.xy, i32v4.z, u64v4);
+
+    sparseImageLoadARB(i3D, i32v4.xyz, i64v4);
+    sparseImageLoadARB(i2DArray, i32v4.xyz, i64v4);
+    sparseImageLoadARB(i2DRect, i32v4.xy, i64v4);
+    sparseImageLoadARB(u2D, i32v4.xy, u64v4);
+    sparseImageLoadARB(uCube, i32v4.xyz, u64v4);
+    sparseImageLoadARB(uCubeArray, i32v4.xyz, u64v4);
+}
\ No newline at end of file
diff --git a/Test/spv.imageLoadStoreLod.frag b/Test/spv.imageLoadStoreLod.frag
index 0da1da1..ed3cad2 100644
--- a/Test/spv.imageLoadStoreLod.frag
+++ b/Test/spv.imageLoadStoreLod.frag
@@ -1,6 +1,8 @@
 #version 450 core
 
 #extension GL_AMD_shader_image_load_store_lod: enable
+#extension GL_ARB_gpu_shader_int64: enable
+#extension GL_EXT_shader_image_int64: enable
 
 layout(rgba32f,  binding = 0) uniform image1D         i1D;
 layout(rgba32f,  binding = 1) uniform image2D         i2D;
@@ -12,6 +14,20 @@
 
 layout(location = 0) out vec4 fragColor;
 
+layout(r64i,  binding = 7)  uniform i64image1D        i64i1D;
+layout(r64i,  binding = 8)  uniform i64image2D        i64i2D;
+layout(r64i,  binding = 9)  uniform i64image3D        i64i3D;
+layout(r64ui, binding = 10) uniform u64imageCube      u64iCube;
+layout(r64ui, binding = 11) uniform u64image1DArray   u64i1DArray;
+layout(r64ui, binding = 12) uniform u64image2DArray   u64i2DArray;
+layout(r64ui, binding = 13) uniform u64imageCubeArray u64iCubeArray;
+
+layout(binding = 14) buffer Buf
+{
+    i64vec4 i64v4;
+    u64vec4 u64v4;
+};
+
 void main()
 {
     const int c1 = 1;
@@ -33,4 +49,14 @@
     sparseImageLoadLodAMD(uiCubeArray, c3, lod, u4);
 
     fragColor = f4 + vec4(u4);
+
+    i64v4 += imageLoadLodAMD(i64i1D, c1, lod);
+    i64v4 += imageLoadLodAMD(i64i2D, c2, lod);
+    i64v4 += imageLoadLodAMD(i64i3D, c3, lod);
+
+    imageStoreLodAMD(u64iCube, c3, lod, u64v4);
+    imageStoreLodAMD(u64i1DArray, c2, lod, u64v4);
+
+    sparseImageLoadLodAMD(u64i2DArray, c3, lod, u64v4);
+    sparseImageLoadLodAMD(u64iCubeArray, c3, lod, u64v4);
 }
\ No newline at end of file
diff --git a/Test/spv.layer.tese b/Test/spv.layer.tese
new file mode 100644
index 0000000..b0ce079
--- /dev/null
+++ b/Test/spv.layer.tese
@@ -0,0 +1,8 @@
+#version 450
+
+#extension GL_ARB_shader_viewport_layer_array : require
+
+layout(triangles) in;
+void main() {
+  gl_Layer = 1;
+}
diff --git a/Test/spv.nonuniform.frag b/Test/spv.nonuniform.frag
index d3b05a5..cf7ebed 100644
--- a/Test/spv.nonuniform.frag
+++ b/Test/spv.nonuniform.frag
@@ -5,6 +5,7 @@
 layout(location=0) nonuniformEXT in vec4 nu_inv4;
 nonuniformEXT float nu_gf;
 layout(location=1) in nonuniformEXT flat int nu_ii;
+layout(location = 2) in vec2 inTexcoord;
 
 layout(binding=0, input_attachment_index = 0) uniform subpassInput        inputAttachmentDyn[];
 layout(binding=1)                             uniform samplerBuffer       uniformTexelBufferDyn[];
@@ -16,6 +17,8 @@
 layout(binding=7, input_attachment_index = 1) uniform subpassInput        inputAttachment[];
 layout(binding=8)                             uniform samplerBuffer       uniformTexelBuffer[];
 layout(binding=9, r32f)                       uniform imageBuffer         storageTexelBuffer[];
+layout(binding = 10)                          uniform texture2D           uniformTexArr[8];
+layout(binding = 11)                          uniform sampler             uniformSampler;
 
 nonuniformEXT int foo(nonuniformEXT int nupi, nonuniformEXT out int f)
 {
@@ -25,10 +28,12 @@
 void main()
 {
     nonuniformEXT int nu_li;
+    nonuniformEXT int nu_li2;
     int dyn_i;
 
     int a = foo(nu_li, nu_li);
     nu_li = nonuniformEXT(a) + nonuniformEXT(a * 2);
+    nu_li2 = a + nonuniformEXT(a * 2);
 
     float b;
     b = nu_inv4.x * nu_gf;
@@ -42,14 +47,26 @@
     b += subpassLoad(inputAttachment[nu_ii]).x;
     b += texelFetch(uniformTexelBuffer[nu_ii], 1).x;
     b += imageLoad(storageTexelBuffer[nu_ii], 1).x;
+    b += texture(sampler2D(uniformTexArr[nu_ii], uniformSampler), inTexcoord.xy).x;
+    b += texture(nonuniformEXT(sampler2D(uniformTexArr[nu_ii], uniformSampler)), inTexcoord.xy).x;
 
     nonuniformEXT ivec4 v;
     nonuniformEXT mat4 m;
     nonuniformEXT struct S { int a; } s;
+    nonuniformEXT int arr[10];
     ivec4 uv;
+    mat4 um;
+    struct US { int a[10]; } us;
+    int uarr[10];
     b += uniformBuffer[v.y].a;
     b += uniformBuffer[v[2]].a;
     b += uniformBuffer[uv[nu_ii]].a;
     b += uniformBuffer[int(m[2].z)].a;
     b += uniformBuffer[s.a].a;
+    b += uniformBuffer[arr[2]].a;
+    b += uniformBuffer[int(um[nu_ii].z)].a;
+    b += uniformBuffer[us.a[nu_ii]].a;
+    b += uniformBuffer[uarr[nu_ii]].a;
+
+    storageBuffer[nu_ii].b = b;
 }
diff --git a/Test/spv.nullInit.comp b/Test/spv.nullInit.comp
new file mode 100644
index 0000000..256fd54
--- /dev/null
+++ b/Test/spv.nullInit.comp
@@ -0,0 +1,32 @@
+#version 460
+
+#extension GL_EXT_null_initializer : enable
+
+#ifdef GL_EXT_null_initializer
+
+struct S {
+    vec3[4] v;
+    int a;
+};
+
+struct T {
+    int b;
+    S s;
+};
+
+shared float f = { };
+shared T t1 = { };
+shared T t2 = { };
+shared S s = { };
+shared float g = { };
+shared int i = { };
+
+void main()
+{
+    S local = { };
+    ++local.a;
+}
+
+S global = { };
+
+#endif
diff --git a/Test/spv.paramMemory.420.frag b/Test/spv.paramMemory.420.frag
new file mode 100644
index 0000000..15f175a
--- /dev/null
+++ b/Test/spv.paramMemory.420.frag
@@ -0,0 +1,33 @@
+#version 420
+
+// Need this extension to permit passing a formatless readonly image to a helper function.
+#extension GL_EXT_shader_image_load_formatted : require
+
+readonly coherent uniform layout(set = 0, binding = 0) image2D image1;
+readonly uniform layout(set = 0, binding = 2) image2D image2;
+writeonly coherent uniform layout(set = 0, binding = 1, rgba32f) image2D image3;
+writeonly uniform layout(set = 0, binding = 3, rgba16f) image2D image4;
+
+flat in layout(location = 0) ivec2 in_coords;
+out layout(location = 0) vec4 out_color;
+
+vec4 image_load(readonly coherent image2D image, ivec2 coords)
+{
+	return imageLoad(image, in_coords);
+}
+
+void image_store(writeonly coherent image2D image, ivec2 coords, vec4 data)
+{
+	imageStore(image, in_coords, data);
+}
+
+void main()
+{
+	vec4 read1 = image_load(image1, in_coords);
+	vec4 read2 = image_load(image2, in_coords);
+
+	image_store(image3, in_coords, read1*0.5);
+	image_store(image4, in_coords, read2*2.0);
+
+	out_color = vec4(0.0);
+}
diff --git a/Test/spv.precision.frag b/Test/spv.precision.frag
index 463afdf..d887ce9 100644
--- a/Test/spv.precision.frag
+++ b/Test/spv.precision.frag
@@ -1,4 +1,5 @@
 #version 310 es
+#extension GL_OES_sample_variables : enable
 precision mediump float;
 in lowp float lowfin;
 in mediump float mediumfin;
@@ -59,4 +60,5 @@
     mediumfout *= s.b;
 
     mediumfout = ((mediumfin * mediumfin > 4.2) ? 2.0 * mediumfout : 3.0 * mediumfout);
+    mediumfout = ((gl_SampleMaskIn[0] >> uniform_medium > 0) ? 2.0 * mediumfout : 3.0 * mediumfout);
 }
diff --git a/Test/spv.queueFamilyScope.comp b/Test/spv.queueFamilyScope.comp
new file mode 100644
index 0000000..0d79850
--- /dev/null
+++ b/Test/spv.queueFamilyScope.comp
@@ -0,0 +1,10 @@
+#version 450
+#extension GL_KHR_memory_scope_semantics : require
+
+layout (binding = 0) buffer Buffer { uint a; } A;
+
+void main()
+{
+    atomicLoad(A.a, gl_ScopeQueueFamily, gl_StorageSemanticsBuffer, gl_SemanticsAcquire);
+}
+
diff --git a/Test/spv.sparseTexture.frag b/Test/spv.sparseTexture.frag
index c995ee2..50ea272 100644
--- a/Test/spv.sparseTexture.frag
+++ b/Test/spv.sparseTexture.frag
@@ -27,8 +27,6 @@
 in flat ivec2 ic2;
 in flat ivec3 ic3;
 
-in flat ivec2 offsets[4];
-
 out vec4 outColor;
 
 void main()
@@ -79,9 +77,10 @@
     resident |= sparseTextureGatherOffsetARB(is2DArray, c3, ivec2(5), itexel, 2);
     resident |= sparseTextureGatherOffsetARB(s2DRectShadow, c2, 2.0, ivec2(7), texel);
 
-    resident |= sparseTextureGatherOffsetsARB(s2D, c2, offsets, texel);
-    resident |= sparseTextureGatherOffsetsARB(is2DArray, c3, offsets, itexel, 2);
-    resident |= sparseTextureGatherOffsetsARB(s2DRectShadow, c2, 2.0, offsets, texel);
+    const ivec2 constOffsets[4] = ivec2[4](ivec2(1,2), ivec2(3,4), ivec2(15,16), ivec2(-2,0));
+    resident |= sparseTextureGatherOffsetsARB(s2D, c2, constOffsets, texel);
+    resident |= sparseTextureGatherOffsetsARB(is2DArray, c3, constOffsets, itexel, 2);
+    resident |= sparseTextureGatherOffsetsARB(s2DRectShadow, c2, 2.0, constOffsets, texel);
 
     resident |= sparseImageLoadARB(i2D, ic2, texel);
     resident |= sparseImageLoadARB(ii3D, ic3, itexel);
diff --git a/Test/spv.specConstArrayCheck.vert b/Test/spv.specConstArrayCheck.vert
old mode 100755
new mode 100644
diff --git a/Test/spv.terminate.frag b/Test/spv.terminate.frag
new file mode 100644
index 0000000..2555877
--- /dev/null
+++ b/Test/spv.terminate.frag
@@ -0,0 +1,8 @@
+#version 400
+
+#extension GL_EXT_terminate_invocation : enable
+
+void main()
+{
+    terminateInvocation;
+}
diff --git a/Test/spv.viewportindex.tese b/Test/spv.viewportindex.tese
new file mode 100644
index 0000000..0da4cc8
--- /dev/null
+++ b/Test/spv.viewportindex.tese
@@ -0,0 +1,8 @@
+#version 450
+
+#extension GL_ARB_shader_viewport_layer_array : require
+
+layout(triangles) in;
+void main() {
+  gl_ViewportIndex = 1;
+}
diff --git a/Test/terminate.frag b/Test/terminate.frag
new file mode 100644
index 0000000..32f1495
--- /dev/null
+++ b/Test/terminate.frag
@@ -0,0 +1,10 @@
+#version 400
+
+void foo() { terminateInvocation; } // ERROR: identifier undeclared
+
+#extension GL_EXT_terminate_invocation : enable
+
+void main()
+{
+    int terminateInvocation;  // syntax ERROR
+}
diff --git a/Test/terminate.vert b/Test/terminate.vert
new file mode 100644
index 0000000..1d4eea9
--- /dev/null
+++ b/Test/terminate.vert
@@ -0,0 +1,10 @@
+#version 400
+
+void foo() { terminateInvocation; } // ERROR: identifier undeclared
+
+#extension GL_EXT_terminate_invocation : enable
+
+void main()
+{
+    terminateInvocation;  // ERROR: wrong stage
+}
diff --git a/Test/tokenPaste.vert b/Test/tokenPaste.vert
index 40de6f9..c4515d4 100644
--- a/Test/tokenPaste.vert
+++ b/Test/tokenPaste.vert
@@ -51,6 +51,18 @@
 // non-identifiers
 int a = simplePaste(11,12);
 
+// should work in #if as well
+#define seahorse 1
+#define sealion 0
+#define marine_animal(suffix) (sea ## suffix)
+
+#if marine_animal(horse) // should pass
+uniform float seahorse_var;
+#endif
+#if !marine_animal(lion) // should pass
+uniform float sealion_var;
+#endif
+
 // operators
 #define MAKE_OP(L, R) L ## R
 const int aop = 10;
diff --git a/Test/vk.relaxed.changeSet.frag b/Test/vk.relaxed.changeSet.frag
new file mode 100755
index 0000000..e2f2403
--- /dev/null
+++ b/Test/vk.relaxed.changeSet.frag
@@ -0,0 +1,13 @@
+#version 460
+
+layout(location = 0) out vec4 fragColor;
+
+uniform sampler2D sTexture;
+
+in vec4 Color;
+in vec2 UV;
+
+void main()
+{
+    fragColor = Color * texture(sTexture, UV.st).r;
+}
diff --git a/Test/vk.relaxed.changeSet.vert b/Test/vk.relaxed.changeSet.vert
new file mode 100755
index 0000000..419adba
--- /dev/null
+++ b/Test/vk.relaxed.changeSet.vert
@@ -0,0 +1,16 @@
+#version 460
+
+in vec2 aPos;
+in vec2 aUV;
+in vec4 aColor;
+uniform mat4 projectionMatrix;
+
+out vec4 Color;
+out vec2 UV;
+
+void main()
+{
+    Color = aColor;
+    UV = aUV;
+    gl_Position = projectionMatrix * vec4(aPos, 0, 1);
+}
diff --git a/Test/vk.relaxed.errorcheck.frag b/Test/vk.relaxed.errorcheck.frag
new file mode 100644
index 0000000..b75b50b
--- /dev/null
+++ b/Test/vk.relaxed.errorcheck.frag
@@ -0,0 +1,16 @@
+#version 460
+
+layout (location = 0) in vec4 io;
+
+out vec4 o;
+
+// default uniforms will be gathered into a uniform block
+uniform vec4 a;     // declared in both stages with different types
+
+vec4 foo() {
+    return a;
+}
+
+void main() {
+    o = io + foo();
+}
\ No newline at end of file
diff --git a/Test/vk.relaxed.errorcheck.vert b/Test/vk.relaxed.errorcheck.vert
new file mode 100644
index 0000000..b1bdbbe
--- /dev/null
+++ b/Test/vk.relaxed.errorcheck.vert
@@ -0,0 +1,15 @@
+#version 460
+
+layout (location = 0) out vec4 io;
+
+// default uniforms will be gathered into a uniform block
+// final global block will merge uniforms from all linked files
+uniform vec2 a;     // declared in both stages with different type
+
+vec4 foo() {
+    return a.xyxy;
+}
+
+void main() {
+    io = foo();
+}
\ No newline at end of file
diff --git a/Test/vk.relaxed.frag b/Test/vk.relaxed.frag
new file mode 100644
index 0000000..d43416e
--- /dev/null
+++ b/Test/vk.relaxed.frag
@@ -0,0 +1,74 @@
+#version 460
+
+out vec4 o;
+
+// default uniforms will be gathered into a uniform block
+uniform vec4 a;
+uniform vec2 b = vec2(0, 0);            // initializer will be ignored
+layout(location = 0) uniform vec2 c;    // location qualifier will be ignored
+uniform vec4 d[10];
+uniform struct e {                      
+    vec2 x;
+    float y;
+    uint z;
+} structUniform; 
+
+// opaque types will not be grouped into uniform block
+uniform sampler2D t1;
+
+// shared and packed layout qualifier are silently ignored
+layout(shared) uniform UniformBlock {
+    float j;
+    vec4 k;
+};
+
+layout(packed) buffer BufferBlock {
+    float j;
+    vec4 k;
+} bufferInstance;
+
+// atomic_uint will be converted to uint and gathered in a buffer block
+layout(binding = 0) uniform atomic_uint counter1; // offset not used
+layout(binding = 0) uniform atomic_uint counter2; // offset not used
+layout(binding = 1) uniform atomic_uint counter3; // offset not used
+
+// atomic counter functions will be converted to equivalent integer atomic operations
+uint bar() {
+    uint j = 0;
+    j = atomicCounterIncrement(counter1);
+    j = atomicCounterDecrement(counter1);
+    j = atomicCounter(counter1);
+
+    j = atomicCounterAdd(counter1, 1);
+    j = atomicCounterAdd(counter1, -1);
+    j = atomicCounterSubtract(counter1, 1);
+
+    j = atomicCounterMin(counter1, j);
+    j = atomicCounterMax(counter1, j);
+    j = atomicCounterAnd(counter1, j);
+
+    j = atomicCounterOr(counter1, j);
+    j = atomicCounterXor(counter1, j);
+    
+    j = atomicCounterExchange(counter1, j);
+    j = atomicCounterCompSwap(counter1, 0, j);
+
+    atomicCounterIncrement(counter2);
+    atomicCounterIncrement(counter3);
+
+    memoryBarrierAtomicCounter();
+    
+    return j;
+}
+
+vec4 foo() {
+    float f = j + bufferInstance.j + structUniform.y + structUniform.z;
+    vec2 v2 = b + c + structUniform.x;
+    vec4 v4 = a + d[0] + d[1] + d[2] + k + bufferInstance.k + texture(t1, vec2(0, 0));
+    return vec4(f) * vec4(v2, 1, 1) * v4;
+}
+
+void main() {
+    float j = float(bar());
+    o = j * foo();
+}
\ No newline at end of file
diff --git a/Test/vk.relaxed.link1.frag b/Test/vk.relaxed.link1.frag
new file mode 100644
index 0000000..95b609f
--- /dev/null
+++ b/Test/vk.relaxed.link1.frag
@@ -0,0 +1,28 @@
+#version 460
+
+out vec4 o;
+
+// default uniforms will be gathered into a uniform block
+// final global block will merge uniforms from all linked files
+uniform vec4 a;     // declared in both stages
+uniform vec2 b1;    // declaration order swapped in other stage
+uniform vec2 b2;
+uniform vec4 c1;    // not delcared in other file
+uniform vec4 d;
+
+// final global buffer will berge buffers from all linked files
+layout (binding = 0) uniform atomic_uint counter1;
+layout (binding = 0) uniform atomic_uint counter2;
+
+vec4 foo();
+
+vec4 bar() {
+    uint j = atomicCounterIncrement(counter1) + atomicCounterDecrement(counter2);
+    vec4 v = a + vec4(b1.x, b1.y, b2.x, b2.y) + c1 + d;
+
+    return float(j) * v;
+}
+
+void main() {
+    o = foo() + bar();
+}
\ No newline at end of file
diff --git a/Test/vk.relaxed.link2.frag b/Test/vk.relaxed.link2.frag
new file mode 100644
index 0000000..a4f468a
--- /dev/null
+++ b/Test/vk.relaxed.link2.frag
@@ -0,0 +1,19 @@
+#version 460
+
+// default uniforms will be gathered into a uniform block
+// final global block will merge uniforms from all linked files
+uniform vec4 a;     // declared in both stages
+uniform vec2 b2;    // declaration order swapped in other stage
+uniform vec2 b1;
+uniform vec4 c2;    // not delcared in other file
+uniform vec4 d;
+
+layout (binding = 0) uniform atomic_uint counter3;
+layout (binding = 0) uniform atomic_uint counter2;
+
+vec4 foo() {
+    uint j = atomicCounterIncrement(counter2) + atomicCounterDecrement(counter3);
+    vec4 v = a + vec4(b1.x, b1.y, b2.x, b2.y) + c2 + d;
+
+    return float(j) * v;
+}
\ No newline at end of file
diff --git a/Test/vk.relaxed.stagelink.frag b/Test/vk.relaxed.stagelink.frag
new file mode 100644
index 0000000..d1eebba
--- /dev/null
+++ b/Test/vk.relaxed.stagelink.frag
@@ -0,0 +1,28 @@
+#version 460
+
+layout (location = 0) in vec4 io;
+
+out vec4 o;
+
+// default uniforms will be gathered into a uniform block
+// final global block will merge uniforms from all linked files
+uniform vec4 a;     // declared in both stages
+uniform vec2 b1;    // declaration order swapped in other stage
+uniform vec2 b2;
+uniform vec4 c1;    // not delcared in other file
+uniform vec4 d;
+
+// final global buffer will berge buffers from all linked files
+layout (binding = 0) uniform atomic_uint counter1;
+layout (binding = 0) uniform atomic_uint counter2;
+
+vec4 foo() {
+    uint j = atomicCounterIncrement(counter1) + atomicCounterDecrement(counter2);
+    vec4 v = a + vec4(b1.x, b1.y, b2.x, b2.y) + c1 + d;
+
+    return float(j) * v;
+}
+
+void main() {
+    o = io + foo();
+}
\ No newline at end of file
diff --git a/Test/vk.relaxed.stagelink.vert b/Test/vk.relaxed.stagelink.vert
new file mode 100644
index 0000000..52396ac
--- /dev/null
+++ b/Test/vk.relaxed.stagelink.vert
@@ -0,0 +1,31 @@
+#version 460
+
+layout (location = 0) out vec4 io;
+
+// default uniforms will be gathered into a uniform block
+// final global block will merge uniforms from all linked files
+uniform vec4 a;     // declared in both stages
+uniform vec2 b2;    // declaration order swapped in other stage
+uniform vec2 b1;
+uniform vec4 c2;    // not delcared in other file
+uniform vec4 d;
+
+uniform vec4 s[4];
+
+layout (binding = 0) uniform atomic_uint counter3;
+layout (binding = 0) uniform atomic_uint counter2;
+
+vec4 foo() {
+    uint j = atomicCounterIncrement(counter2) + atomicCounterDecrement(counter3);
+    vec4 v = a + vec4(b1.x, b1.y, b2.x, b2.y) + c2 + d;
+
+    return float(j) * v;
+}
+
+void main() {
+
+    vec4 v = foo();
+    v = v + s[gl_VertexID];
+    v.x = v.x - float(gl_InstanceID);
+    io = v;
+}
\ No newline at end of file
diff --git a/Test/vulkan.comp b/Test/vulkan.comp
index 6b6f4cf..98d93ed 100644
--- a/Test/vulkan.comp
+++ b/Test/vulkan.comp
@@ -7,6 +7,27 @@
 void main()
 {
     gl_WorkGroupSize;
+    int i = { };  // ERROR, need an extension
 }
 
 layout(local_size_y_id = 19) in; // ERROR, already used: TODO not yet reported
+
+shared float f = { };  // ERROR, need an extension
+float g = { };         // ERROR, need an extension
+
+#extension GL_EXT_null_initializer : enable
+
+shared float f2 = { };
+float g2 = { };
+
+void foo()
+{
+    int i = { };
+    float fa[] = { };
+}
+
+struct samp {
+    sampler2D s2D;
+} sampVar = { };
+
+atomic_uint a = { };
diff --git a/WORKSPACE b/WORKSPACE
index 3c38e61..488546c 100644
--- a/WORKSPACE
+++ b/WORKSPACE
@@ -6,9 +6,9 @@
 
 http_archive(
     name = "com_google_googletest",
-    sha256 = "ef9e2e12e7bf115ee48b427ae171fc869eeaf1b532c0fcfd982f6a353d2471b4",
-    strip_prefix = "googletest-37ae1fc5e6be26f367d76c078beabd7024fed53a",
-    urls = ["https://github.com/google/googletest/archive/37ae1fc5e6be26f367d76c078beabd7024fed53a.zip"],  # 2018-07-16
+    sha256 = "94c634d499558a76fa649edb13721dce6e98fb1e7018dfaeba3cd7a083945e91",
+    strip_prefix = "googletest-release-1.10.0",
+    urls = ["https://github.com/google/googletest/archive/release-1.10.0.zip"],  # 3-Oct-2019
 )
 
 http_archive(
diff --git a/build_info.h.tmpl b/build_info.h.tmpl
index eacecb0..5b5e9e6 100644
--- a/build_info.h.tmpl
+++ b/build_info.h.tmpl
@@ -34,10 +34,10 @@
 #ifndef GLSLANG_BUILD_INFO
 #define GLSLANG_BUILD_INFO
 
-#define GLSLANG_VERSION_MAJOR <major>
-#define GLSLANG_VERSION_MINOR <minor>
-#define GLSLANG_VERSION_PATCH <patch>
-#define GLSLANG_VERSION_FLAVOR "<flavor>"
+#define GLSLANG_VERSION_MAJOR @major@
+#define GLSLANG_VERSION_MINOR @minor@
+#define GLSLANG_VERSION_PATCH @patch@
+#define GLSLANG_VERSION_FLAVOR "@flavor@"
 
 #define GLSLANG_VERSION_GREATER_THAN(major, minor, patch) \
     (((major) > GLSLANG_VERSION_MAJOR) || ((major) == GLSLANG_VERSION_MAJOR && \
diff --git a/build_info.py b/build_info.py
index 2ac864b..7c1998f 100755
--- a/build_info.py
+++ b/build_info.py
@@ -201,13 +201,13 @@
     software_version = deduce_software_version(directory)
     commit = describe(directory)
     output = template \
-        .replace("<major>", software_version["major"]) \
-        .replace("<minor>", software_version["minor"]) \
-        .replace("<patch>", software_version["patch"]) \
-        .replace("<flavor>", software_version["flavor"]) \
-        .replace("<-flavor>", software_version["-flavor"]) \
-        .replace("<date>", software_version["date"]) \
-        .replace("<commit>", commit)
+        .replace("@major@", software_version["major"]) \
+        .replace("@minor@", software_version["minor"]) \
+        .replace("@patch@", software_version["patch"]) \
+        .replace("@flavor@", software_version["flavor"]) \
+        .replace("@-flavor@", software_version["-flavor"]) \
+        .replace("@date@", software_version["date"]) \
+        .replace("@commit@", commit)
 
     if output_file is None:
         print(output)
diff --git a/build_overrides/build.gni b/build_overrides/build.gni
new file mode 100644
index 0000000..3101a86
--- /dev/null
+++ b/build_overrides/build.gni
@@ -0,0 +1,39 @@
+# Copyright (C) 2020 The Khronos Group Inc.
+#
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+#    Redistributions of source code must retain the above copyright
+#    notice, this list of conditions and the following disclaimer.
+#
+#    Redistributions in binary form must reproduce the above
+#    copyright notice, this list of conditions and the following
+#    disclaimer in the documentation and/or other materials provided
+#    with the distribution.
+#
+#    Neither the name of The Khronos Group Inc. nor the names of its
+#    contributors may be used to endorse or promote products derived
+#    from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+# COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+# POSSIBILITY OF SUCH DAMAGE.
+
+declare_args() {
+    build_with_chromium = false
+    linux_use_bundled_binutils_override = true
+    ignore_elf32_limitations = true
+    use_system_xcode = true
+}
diff --git a/build_overrides/glslang.gni b/build_overrides/glslang.gni
index 500578c..003c78f 100644
--- a/build_overrides/glslang.gni
+++ b/build_overrides/glslang.gni
@@ -34,4 +34,4 @@
 # These are variables that are overridable by projects that include glslang.
 
 # The path to glslang dependencies.
-glslang_spirv_tools_dir = "//Externals/spirv-tools"
+glslang_spirv_tools_dir = "//External/spirv-tools"
diff --git a/build_overrides/spirv_tools.gni b/build_overrides/spirv_tools.gni
new file mode 100644
index 0000000..7cf7005
--- /dev/null
+++ b/build_overrides/spirv_tools.gni
@@ -0,0 +1,38 @@
+# Copyright (C) 2020 The Khronos Group Inc.
+#
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+#    Redistributions of source code must retain the above copyright
+#    notice, this list of conditions and the following disclaimer.
+#
+#    Redistributions in binary form must reproduce the above
+#    copyright notice, this list of conditions and the following
+#    disclaimer in the documentation and/or other materials provided
+#    with the distribution.
+#
+#    Neither the name of The Khronos Group Inc. nor the names of its
+#    contributors may be used to endorse or promote products derived
+#    from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+# COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+# POSSIBILITY OF SUCH DAMAGE.
+
+# We are building inside glslang
+spirv_tools_standalone = false
+
+# Paths to SPIRV-Tools dependencies
+spirv_tools_spirv_headers_dir = "//External/spirv-tools/external/spirv-headers"
diff --git a/glslang/CInterface/glslang_c_interface.cpp b/glslang/CInterface/glslang_c_interface.cpp
index 54283e6..2e04f53 100644
--- a/glslang/CInterface/glslang_c_interface.cpp
+++ b/glslang/CInterface/glslang_c_interface.cpp
@@ -160,9 +160,9 @@
     void* context;
 };
 
-int glslang_initialize_process() { return static_cast<int>(glslang::InitializeProcess()); }
+GLSLANG_EXPORT int glslang_initialize_process() { return static_cast<int>(glslang::InitializeProcess()); }
 
-void glslang_finalize_process() { glslang::FinalizeProcess(); }
+GLSLANG_EXPORT void glslang_finalize_process() { glslang::FinalizeProcess(); }
 
 static EShLanguage c_shader_stage(glslang_stage_t stage)
 {
@@ -320,7 +320,7 @@
     return EProfile();
 }
 
-glslang_shader_t* glslang_shader_create(const glslang_input_t* input)
+GLSLANG_EXPORT glslang_shader_t* glslang_shader_create(const glslang_input_t* input)
 {
     if (!input || !input->code) {
         printf("Error creating shader: null input(%p)/input->code\n", input);
@@ -344,12 +344,12 @@
     return shader;
 }
 
-const char* glslang_shader_get_preprocessed_code(glslang_shader_t* shader)
+GLSLANG_EXPORT const char* glslang_shader_get_preprocessed_code(glslang_shader_t* shader)
 {
     return shader->preprocessedGLSL.c_str();
 }
 
-int glslang_shader_preprocess(glslang_shader_t* shader, const glslang_input_t* input)
+GLSLANG_EXPORT int glslang_shader_preprocess(glslang_shader_t* shader, const glslang_input_t* input)
 {
     DirStackFileIncluder Includer;
     /* TODO: use custom callbacks if they are available in 'i->callbacks' */
@@ -365,7 +365,7 @@
     );
 }
 
-int glslang_shader_parse(glslang_shader_t* shader, const glslang_input_t* input)
+GLSLANG_EXPORT int glslang_shader_parse(glslang_shader_t* shader, const glslang_input_t* input)
 {
     const char* preprocessedCStr = shader->preprocessedGLSL.c_str();
     shader->shader->setStrings(&preprocessedCStr, 1);
@@ -378,11 +378,11 @@
     );
 }
 
-const char* glslang_shader_get_info_log(glslang_shader_t* shader) { return shader->shader->getInfoLog(); }
+GLSLANG_EXPORT const char* glslang_shader_get_info_log(glslang_shader_t* shader) { return shader->shader->getInfoLog(); }
 
-const char* glslang_shader_get_info_debug_log(glslang_shader_t* shader) { return shader->shader->getInfoDebugLog(); }
+GLSLANG_EXPORT const char* glslang_shader_get_info_debug_log(glslang_shader_t* shader) { return shader->shader->getInfoDebugLog(); }
 
-void glslang_shader_delete(glslang_shader_t* shader)
+GLSLANG_EXPORT void glslang_shader_delete(glslang_shader_t* shader)
 {
     if (!shader)
         return;
@@ -391,14 +391,14 @@
     delete (shader);
 }
 
-glslang_program_t* glslang_program_create()
+GLSLANG_EXPORT glslang_program_t* glslang_program_create()
 {
     glslang_program_t* p = new glslang_program_t();
     p->program = new glslang::TProgram();
     return p;
 }
 
-void glslang_program_delete(glslang_program_t* program)
+GLSLANG_EXPORT void glslang_program_delete(glslang_program_t* program)
 {
     if (!program)
         return;
@@ -407,22 +407,22 @@
     delete (program);
 }
 
-void glslang_program_add_shader(glslang_program_t* program, glslang_shader_t* shader)
+GLSLANG_EXPORT void glslang_program_add_shader(glslang_program_t* program, glslang_shader_t* shader)
 {
     program->program->addShader(shader->shader);
 }
 
-int glslang_program_link(glslang_program_t* program, int messages)
+GLSLANG_EXPORT int glslang_program_link(glslang_program_t* program, int messages)
 {
     return (int)program->program->link((EShMessages)messages);
 }
 
-const char* glslang_program_get_info_log(glslang_program_t* program)
+GLSLANG_EXPORT const char* glslang_program_get_info_log(glslang_program_t* program)
 {
     return program->program->getInfoLog();
 }
 
-const char* glslang_program_get_info_debug_log(glslang_program_t* program)
+GLSLANG_EXPORT const char* glslang_program_get_info_debug_log(glslang_program_t* program)
 {
     return program->program->getInfoDebugLog();
 }
diff --git a/glslang/CMakeLists.txt b/glslang/CMakeLists.txt
index 552da5e..fc925ea 100644
--- a/glslang/CMakeLists.txt
+++ b/glslang/CMakeLists.txt
@@ -52,7 +52,6 @@
     GenericCodeGen/Link.cpp)
 set_property(TARGET GenericCodeGen PROPERTY POSITION_INDEPENDENT_CODE ON)
 set_property(TARGET GenericCodeGen PROPERTY FOLDER glslang)
-glslang_default_to_hidden_visibility(GenericCodeGen)
 
 ################################################################################
 # MachineIndependent
@@ -134,7 +133,6 @@
 add_library(MachineIndependent STATIC ${MACHINEINDEPENDENT_SOURCES} ${MACHINEINDEPENDENT_HEADERS})
 set_property(TARGET MachineIndependent PROPERTY POSITION_INDEPENDENT_CODE ON)
 set_property(TARGET MachineIndependent PROPERTY FOLDER glslang)
-glslang_only_export_explicit_symbols(MachineIndependent)
 
 glslang_add_build_info_dependency(MachineIndependent)
 
@@ -170,7 +168,7 @@
     POSITION_INDEPENDENT_CODE ON
     VERSION   "${GLSLANG_VERSION}"
     SOVERSION "${GLSLANG_VERSION_MAJOR}")
-target_link_libraries(glslang PRIVATE OGLCompiler MachineIndependent)
+target_link_libraries(glslang PRIVATE OGLCompiler OSDependent MachineIndependent)
 target_include_directories(glslang PUBLIC
     $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/..>
     $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>)
diff --git a/glslang/HLSL/hlslGrammar.cpp b/glslang/HLSL/hlslGrammar.cpp
index 5bfc53f..f30c640 100644
--- a/glslang/HLSL/hlslGrammar.cpp
+++ b/glslang/HLSL/hlslGrammar.cpp
@@ -480,8 +480,9 @@
             }
 
             // TODO: things scoped within an annotation need their own name space;
-            // TODO: strings are not yet handled.
-            if (variableType.getBasicType() != EbtString && parseContext.getAnnotationNestingLevel() == 0) {
+            // TODO: non-constant strings are not yet handled.
+            if (!(variableType.getBasicType() == EbtString && !variableType.getQualifier().isConstant()) &&
+                parseContext.getAnnotationNestingLevel() == 0) {
                 if (typedefDecl)
                     parseContext.declareTypedef(idToken.loc, *fullName, variableType);
                 else if (variableType.getBasicType() == EbtBlock) {
diff --git a/glslang/HLSL/hlslParseHelper.cpp b/glslang/HLSL/hlslParseHelper.cpp
old mode 100755
new mode 100644
index ca0d207..d62f392
--- a/glslang/HLSL/hlslParseHelper.cpp
+++ b/glslang/HLSL/hlslParseHelper.cpp
@@ -1376,7 +1376,7 @@
 
     return flattened ? flattened : base;
 }
-TIntermTyped* HlslParseContext::flattenAccess(int uniqueId, int member, TStorageQualifier outerStorage,
+TIntermTyped* HlslParseContext::flattenAccess(long long uniqueId, int member, TStorageQualifier outerStorage,
     const TType& dereferencedType, int subset)
 {
     const auto flattenData = flattenMap.find(uniqueId);
@@ -1444,7 +1444,7 @@
 };
 
 // Find and return the split IO TVariable for id, or nullptr if none.
-TVariable* HlslParseContext::getSplitNonIoVar(int id) const
+TVariable* HlslParseContext::getSplitNonIoVar(long long id) const
 {
     const auto splitNonIoVar = splitNonIoVars.find(id);
     if (splitNonIoVar == splitNonIoVars.end())
@@ -1953,6 +1953,10 @@
             break;
         case EatConstantId:
             // specialization constant
+            if (type.getQualifier().storage != EvqConst) {
+                error(loc, "needs a const type", "constant_id", "");
+                break;
+            }
             if (it->getInt(value)) {
                 TSourceLoc loc;
                 loc.init();
@@ -3252,7 +3256,7 @@
         // shadow state.  This depends on downstream optimization to
         // DCE one variant in [shadow, nonshadow] if both are present,
         // or the SPIR-V module would be invalid.
-        int newId = texSymbol->getId();
+        long long newId = texSymbol->getId();
 
         // Check to see if this texture has been given a shadow mode already.
         // If so, look up the one we already have.
@@ -5488,6 +5492,10 @@
 
             op = fnCandidate->getBuiltInOp();
             if (builtIn && op != EOpNull) {
+                // SM 4.0 and above guarantees roundEven semantics for round()
+                if (!hlslDX9Compatible() && op == EOpRound)
+                    op = EOpRoundEven;
+
                 // A function call mapped to a built-in operation.
                 result = intermediate.addBuiltInFunctionCall(loc, op, fnCandidate->getParamCount() == 1, arguments,
                                                              fnCandidate->getType());
@@ -6067,8 +6075,12 @@
     case EOpInterpolateAtCentroid:
     case EOpInterpolateAtSample:
     case EOpInterpolateAtOffset:
+        // TODO(greg-lunarg): Re-enable this check. It currently gives false errors for builtins
+        // defined and passed as members of a struct. In this case the storage class is showing to be
+        // Function. See glslang #2584
+
         // Make sure the first argument is an interpolant, or an array element of an interpolant
-        if (arg0->getType().getQualifier().storage != EvqVaryingIn) {
+        // if (arg0->getType().getQualifier().storage != EvqVaryingIn) {
             // It might still be an array element.
             //
             // We could check more, but the semantics of the first argument are already met; the
@@ -6076,11 +6088,11 @@
             //
             // ES and desktop 4.3 and earlier:  swizzles may not be used
             // desktop 4.4 and later: swizzles may be used
-            const TIntermTyped* base = TIntermediate::findLValueBase(arg0, true);
-            if (base == nullptr || base->getType().getQualifier().storage != EvqVaryingIn)
-                error(loc, "first argument must be an interpolant, or interpolant-array element",
-                      fnCandidate.getName().c_str(), "");
-        }
+            // const TIntermTyped* base = TIntermediate::findLValueBase(arg0, true);
+            // if (base == nullptr || base->getType().getQualifier().storage != EvqVaryingIn)
+            //     error(loc, "first argument must be an interpolant, or interpolant-array element",
+            //           fnCandidate.getName().c_str(), "");
+        // }
         break;
 
     default:
@@ -7624,7 +7636,17 @@
     bool tie = false;
 
     // send to the generic selector
-    const TFunction* bestMatch = selectFunction(candidateList, call, convertible, better, tie);
+    const TFunction* bestMatch = nullptr;
+
+    // printf has var args and is in the symbol table as "printf()",
+    // mangled to "printf("
+    if (call.getName() == "printf") {
+        TSymbol* symbol = symbolTable.find("printf(", &builtIn);
+        if (symbol)
+            return symbol->getAsFunction();
+    }
+
+    bestMatch = selectFunction(candidateList, call, convertible, better, tie);
 
     if (bestMatch == nullptr) {
         // If there is nothing selected by allowing only up-conversions (to a larger linearize() value),
@@ -9851,7 +9873,7 @@
                 } else {
                     // Use the original declaration type for the linkage
                     paramType->getQualifier().builtIn = biType;
-                    if (biType == EbvTessLevelInner || biType == EbvTessLevelInner)
+                    if (biType == EbvTessLevelInner || biType == EbvTessLevelOuter)
                         paramType->getQualifier().patch = true;
 
                     if (notInEntryPoint.count(tInterstageIoData(biType, storage)) == 1)
diff --git a/glslang/HLSL/hlslParseHelper.h b/glslang/HLSL/hlslParseHelper.h
index b92856a..2d7165c 100644
--- a/glslang/HLSL/hlslParseHelper.h
+++ b/glslang/HLSL/hlslParseHelper.h
@@ -253,12 +253,12 @@
 
     // Array and struct flattening
     TIntermTyped* flattenAccess(TIntermTyped* base, int member);
-    TIntermTyped* flattenAccess(int uniqueId, int member, TStorageQualifier outerStorage, const TType&, int subset = -1);
+    TIntermTyped* flattenAccess(long long uniqueId, int member, TStorageQualifier outerStorage, const TType&, int subset = -1);
     int findSubtreeOffset(const TIntermNode&) const;
     int findSubtreeOffset(const TType&, int subset, const TVector<int>& offsets) const;
     bool shouldFlatten(const TType&, TStorageQualifier, bool topLevel) const;
     bool wasFlattened(const TIntermTyped* node) const;
-    bool wasFlattened(int id) const { return flattenMap.find(id) != flattenMap.end(); }
+    bool wasFlattened(long long id) const { return flattenMap.find(id) != flattenMap.end(); }
     int  addFlattenedMember(const TVariable&, const TType&, TFlattenData&, const TString& name, bool linkage,
                             const TQualifier& outerQualifier, const TArraySizes* builtInArraySizes);
 
@@ -267,8 +267,8 @@
     void splitBuiltIn(const TString& baseName, const TType& memberType, const TArraySizes*, const TQualifier&);
     const TType& split(const TType& type, const TString& name, const TQualifier&);
     bool wasSplit(const TIntermTyped* node) const;
-    bool wasSplit(int id) const { return splitNonIoVars.find(id) != splitNonIoVars.end(); }
-    TVariable* getSplitNonIoVar(int id) const;
+    bool wasSplit(long long id) const { return splitNonIoVars.find(id) != splitNonIoVars.end(); }
+    TVariable* getSplitNonIoVar(long long id) const;
     void addPatchConstantInvocation();
     void fixTextureShadowModes();
     void finalizeAppendMethods();
@@ -386,7 +386,7 @@
     //
     TVector<TSymbol*> ioArraySymbolResizeList;
 
-    TMap<int, TFlattenData> flattenMap;
+    TMap<long long, TFlattenData> flattenMap;
 
     // IO-type map. Maps a pure symbol-table form of a structure-member list into
     // each of the (up to) three kinds of IO, as each as different allowed decorations,
@@ -399,7 +399,7 @@
     TMap<const TTypeList*, tIoKinds> ioTypeMap;
 
     // Structure splitting data:
-    TMap<int, TVariable*> splitNonIoVars;  // variables with the built-in interstage IO removed, indexed by unique ID.
+    TMap<long long, TVariable*> splitNonIoVars;  // variables with the built-in interstage IO removed, indexed by unique ID.
 
     // Structuredbuffer shared types.  Typically there are only a few.
     TVector<TType*> structBufferTypes;
@@ -488,18 +488,18 @@
     struct tShadowTextureSymbols {
         tShadowTextureSymbols() { symId.fill(-1); }
 
-        void set(bool shadow, int id) { symId[int(shadow)] = id; }
-        int get(bool shadow) const { return symId[int(shadow)]; }
+        void set(bool shadow, long long id) { symId[int(shadow)] = id; }
+        long long get(bool shadow) const { return symId[int(shadow)]; }
 
         // True if this texture has been seen with both shadow and non-shadow modes
         bool overloaded() const { return symId[0] != -1 && symId[1] != -1; }
-        bool isShadowId(int id) const { return symId[1] == id; }
+        bool isShadowId(long long id) const { return symId[1] == id; }
 
     private:
-        std::array<int, 2> symId;
+        std::array<long long, 2> symId;
     };
 
-    TMap<int, tShadowTextureSymbols*> textureShadowVariant;
+    TMap<long long, tShadowTextureSymbols*> textureShadowVariant;
     bool parsingEntrypointParameters;
 };
 
diff --git a/glslang/HLSL/hlslParseables.cpp b/glslang/HLSL/hlslParseables.cpp
index 61c820b..4673b46 100644
--- a/glslang/HLSL/hlslParseables.cpp
+++ b/glslang/HLSL/hlslParseables.cpp
@@ -605,7 +605,7 @@
         { "noise",                            "S",     "F",       "V",              "F",             EShLangPS,     false },
         { "normalize",                        nullptr, nullptr,   "V",              "F",             EShLangAll,    false },
         { "pow",                              nullptr, nullptr,   "SVM,",           "F,",            EShLangAll,    false },
-        // { "printf",                           "-",     "-",       "",            "",              EShLangAll,    false }, TODO: varargs
+        { "printf",                           nullptr, nullptr,   "-",              "-",             EShLangAll,    false },
         { "Process2DQuadTessFactorsAvg",      "-",     "-",       "V4,V2,>V4,>V2,", "F,,,,",         EShLangHS,     false },
         { "Process2DQuadTessFactorsMax",      "-",     "-",       "V4,V2,>V4,>V2,", "F,,,,",         EShLangHS,     false },
         { "Process2DQuadTessFactorsMin",      "-",     "-",       "V4,V2,>V4,>V2,", "F,,,,",         EShLangHS,     false },
@@ -1107,7 +1107,7 @@
     // symbolTable.relateToOperator("noise",                    EOpNoise); // TODO: check return type
     symbolTable.relateToOperator("normalize",                   EOpNormalize);
     symbolTable.relateToOperator("pow",                         EOpPow);
-    // symbolTable.relateToOperator("printf",                     EOpPrintf);
+    symbolTable.relateToOperator("printf",                      EOpDebugPrintf);
     // symbolTable.relateToOperator("Process2DQuadTessFactorsAvg");
     // symbolTable.relateToOperator("Process2DQuadTessFactorsMax");
     // symbolTable.relateToOperator("Process2DQuadTessFactorsMin");
@@ -1123,7 +1123,7 @@
     symbolTable.relateToOperator("reflect",                     EOpReflect);
     symbolTable.relateToOperator("refract",                     EOpRefract);
     symbolTable.relateToOperator("reversebits",                 EOpBitFieldReverse);
-    symbolTable.relateToOperator("round",                       EOpRoundEven);
+    symbolTable.relateToOperator("round",                       EOpRound);
     symbolTable.relateToOperator("rsqrt",                       EOpInverseSqrt);
     symbolTable.relateToOperator("saturate",                    EOpSaturate);
     symbolTable.relateToOperator("sign",                        EOpSign);
diff --git a/glslang/Include/BaseTypes.h b/glslang/Include/BaseTypes.h
index b69eaeb..55bdd25 100644
--- a/glslang/Include/BaseTypes.h
+++ b/glslang/Include/BaseTypes.h
@@ -228,6 +228,9 @@
     EbvViewIndex,
     EbvDeviceIndex,
 
+    EbvShadingRateKHR,
+    EbvPrimitiveShadingRateKHR,
+
     EbvFragSizeEXT,
     EbvFragInvocationCountEXT,
 
@@ -480,6 +483,9 @@
     case EbvWarpID:                     return "WarpIDNV";
     case EbvSMID:                       return "SMIDNV";
 
+    case EbvShadingRateKHR:             return "ShadingRateKHR";
+    case EbvPrimitiveShadingRateKHR:    return "PrimitiveShadingRateKHR";
+
     default:                      return "unknown built-in variable";
     }
 }
diff --git a/glslang/Include/InitializeGlobals.h b/glslang/Include/InitializeGlobals.h
index b7fdd7a..95d0a40 100644
--- a/glslang/Include/InitializeGlobals.h
+++ b/glslang/Include/InitializeGlobals.h
@@ -37,7 +37,7 @@
 
 namespace glslang {
 
-inline bool InitializePoolIndex() { return true; } // DEPRECATED: No need to call
+bool InitializePoolIndex();
 
 } // end namespace glslang
 
diff --git a/glslang/Include/Types.h b/glslang/Include/Types.h
index 235ea3f..a3815ca 100644
--- a/glslang/Include/Types.h
+++ b/glslang/Include/Types.h
@@ -406,6 +406,7 @@
     ElfRg8i,
     ElfR16i,
     ElfR8i,
+    ElfR64i,
 
     ElfIntGuard,       // to help with comparisons
 
@@ -423,6 +424,7 @@
     ElfRg8ui,
     ElfR16ui,
     ElfR8ui,
+    ElfR64ui,
 
     ElfCount
 };
@@ -497,7 +499,9 @@
         declaredBuiltIn = EbvNone;
 #ifndef GLSLANG_WEB
         noContraction = false;
+        nullInit = false;
 #endif
+        defaultBlock = false;
     }
 
     // drop qualifiers that don't belong in a temporary variable
@@ -510,6 +514,8 @@
         clearMemory();
         specConstant = false;
         nonUniform = false;
+        nullInit = false;
+        defaultBlock = false;
         clearLayout();
     }
 
@@ -568,6 +574,7 @@
     bool specConstant : 1;
     bool nonUniform   : 1;
     bool explicitOffset   : 1;
+    bool defaultBlock : 1; // default blocks with matching names have structures merged when linking
 
 #ifdef GLSLANG_WEB
     bool isWriteOnly() const { return false; }
@@ -586,6 +593,8 @@
     bool isNoContraction() const { return false; }
     void setNoContraction() { }
     bool isPervertexNV() const { return false; }
+    void setNullInit() { }
+    bool isNullInit() const { return false; }
 #else
     bool noContraction: 1; // prevent contraction and reassociation, e.g., for 'precise' keyword, and expressions it affects
     bool nopersp      : 1;
@@ -607,6 +616,7 @@
     bool subgroupcoherent  : 1;
     bool shadercallcoherent : 1;
     bool nonprivate   : 1;
+    bool nullInit : 1;
     bool isWriteOnly() const { return writeonly; }
     bool isReadOnly() const { return readonly; }
     bool isRestrict() const { return restrict; }
@@ -642,6 +652,8 @@
     bool isNoContraction() const { return noContraction; }
     void setNoContraction() { noContraction = true; }
     bool isPervertexNV() const { return pervertexNV; }
+    void setNullInit() { nullInit = true; }
+    bool isNullInit() const { return nullInit; }
 #endif
 
     bool isPipeInput() const
@@ -747,6 +759,46 @@
         }
     }
 
+    TBlockStorageClass getBlockStorage() const {
+        if (storage == EvqUniform && !isPushConstant()) {
+            return EbsUniform;
+        }
+        else if (storage == EvqUniform) {
+            return EbsPushConstant;
+        }
+        else if (storage == EvqBuffer) {
+            return EbsStorageBuffer;
+        }
+        return EbsNone;
+    }
+
+    void setBlockStorage(TBlockStorageClass newBacking) {
+#ifndef GLSLANG_WEB
+        layoutPushConstant = (newBacking == EbsPushConstant);
+#endif
+        switch (newBacking) {
+        case EbsUniform :
+            if (layoutPacking == ElpStd430) {
+                // std430 would not be valid
+                layoutPacking = ElpStd140;
+            }
+            storage = EvqUniform;
+            break;
+        case EbsStorageBuffer : 
+            storage = EvqBuffer;
+            break;
+#ifndef GLSLANG_WEB
+        case EbsPushConstant :
+            storage = EvqUniform;
+            layoutSet = TQualifier::layoutSetEnd;
+            layoutBinding = TQualifier::layoutBindingEnd;
+            break;
+#endif
+        default:
+            break;
+        }
+    }
+
 #ifdef GLSLANG_WEB
     bool isPerView() const { return false; }
     bool isTaskMemory() const { return false; }
@@ -755,6 +807,12 @@
     bool isPerPrimitive() const { return perPrimitiveNV; }
     bool isPerView() const { return perViewNV; }
     bool isTaskMemory() const { return perTaskNV; }
+    bool isAnyPayload() const {
+        return storage == EvqPayload || storage == EvqPayloadIn;
+    }
+    bool isAnyCallable() const {
+        return storage == EvqCallableData || storage == EvqCallableDataIn;
+    }
 
     // True if this type of IO is supposed to be arrayed with extra level for per-vertex data
     bool isArrayedIo(EShLanguage language) const
@@ -837,6 +895,7 @@
         return hasNonXfbLayout() ||
                hasXfb();
     }
+
     TLayoutMatrix  layoutMatrix  : 3;
     TLayoutPacking layoutPacking : 4;
     int layoutOffset;
@@ -1117,6 +1176,8 @@
         case ElfR32ui:        return "r32ui";
         case ElfR16ui:        return "r16ui";
         case ElfR8ui:         return "r8ui";
+        case ElfR64ui:        return "r64ui";
+        case ElfR64i:         return "r64i";
         default:              return "none";
         }
     }
@@ -1677,6 +1738,7 @@
 
     virtual bool isScalar() const { return ! isVector() && ! isMatrix() && ! isStruct() && ! isArray(); }
     virtual bool isScalarOrVec1() const { return isScalar() || vector1; }
+    virtual bool isScalarOrVector() const { return !isMatrix() && !isStruct() && !isArray(); }
     virtual bool isVector() const { return vectorSize > 1 || vector1; }
     virtual bool isMatrix() const { return matrixCols ? true : false; }
     virtual bool isArray()  const { return arraySizes != nullptr; }
@@ -1986,6 +2048,7 @@
         case EbtAccStruct:         return "accelerationStructureNV";
         case EbtRayQuery:          return "rayQueryEXT";
         case EbtReference:         return "reference";
+        case EbtString:            return "string";
 #endif
         default:                   return "unknown type";
         }
@@ -2153,6 +2216,8 @@
             appendStr(" specialization-constant");
         if (qualifier.nonUniform)
             appendStr(" nonuniform");
+        if (qualifier.isNullInit())
+            appendStr(" null-init");
         appendStr(" ");
         appendStr(getStorageQualifierString());
         if (isArray()) {
@@ -2272,6 +2337,17 @@
         name += ';' ;
     }
 
+    // These variables are inconsistently declared inside and outside of gl_PerVertex in glslang right now.
+    // They are declared inside of 'in gl_PerVertex', but sitting as standalone when they are 'out'puts.
+    bool isInconsistentGLPerVertexMember(const TString& name) const
+    {
+        if (name == "gl_SecondaryPositionNV" ||
+            name == "gl_PositionPerViewNV")
+            return true;
+        return false;
+    }
+
+
     // Do two structure types match?  They could be declared independently,
     // in different places, but still might satisfy the definition of matching.
     // From the spec:
@@ -2287,22 +2363,48 @@
             (isStruct() && right.isStruct() && structure == right.structure))
             return true;
 
-        // Both being nullptr was caught above, now they both have to be structures of the same number of elements
-        if (!isStruct() || !right.isStruct() ||
-            structure->size() != right.structure->size())
-            return false;
-
         // Structure names have to match
         if (*typeName != *right.typeName)
             return false;
 
-        // Compare the names and types of all the members, which have to match
-        for (unsigned int i = 0; i < structure->size(); ++i) {
-            if ((*structure)[i].type->getFieldName() != (*right.structure)[i].type->getFieldName())
-                return false;
+        // There are inconsistencies with how gl_PerVertex is setup. For now ignore those as errors if they
+        // are known inconsistencies.
+        bool isGLPerVertex = *typeName == "gl_PerVertex";
 
-            if (*(*structure)[i].type != *(*right.structure)[i].type)
-                return false;
+        // Both being nullptr was caught above, now they both have to be structures of the same number of elements
+        if (!isStruct() || !right.isStruct() ||
+            (structure->size() != right.structure->size() && !isGLPerVertex))
+            return false;
+
+        // Compare the names and types of all the members, which have to match
+        for (size_t li = 0, ri = 0; li < structure->size() || ri < right.structure->size(); ++li, ++ri) {
+            if (li < structure->size() && ri < right.structure->size()) {
+                if ((*structure)[li].type->getFieldName() == (*right.structure)[ri].type->getFieldName()) {
+                    if (*(*structure)[li].type != *(*right.structure)[ri].type)
+                        return false;
+                } else {
+                    // If one of the members is something that's inconsistently declared, skip over it
+                    // for now.
+                    if (isGLPerVertex) {
+                        if (isInconsistentGLPerVertexMember((*structure)[li].type->getFieldName())) {
+                            ri--;
+                            continue;
+                        } else if (isInconsistentGLPerVertexMember((*right.structure)[ri].type->getFieldName())) {
+                            li--;
+                            continue;
+                        }
+                    } else {
+                        return false;
+                    }
+                }
+            // If we get here, then there should only be inconsistently declared members left
+            } else if (li < structure->size()) {
+                if (!isInconsistentGLPerVertexMember((*structure)[li].type->getFieldName()))
+                    return false;
+            } else {
+                if (!isInconsistentGLPerVertexMember((*right.structure)[ri].type->getFieldName()))
+                    return false;
+            }
         }
 
         return true;
diff --git a/glslang/Include/glslang_c_interface.h b/glslang/Include/glslang_c_interface.h
index 50e95b7..4b32e2b 100644
--- a/glslang/Include/glslang_c_interface.h
+++ b/glslang/Include/glslang_c_interface.h
@@ -203,28 +203,44 @@
 extern "C" {
 #endif
 
-int glslang_initialize_process();
-void glslang_finalize_process();
+#ifdef GLSLANG_IS_SHARED_LIBRARY
+    #ifdef _WIN32
+        #ifdef GLSLANG_EXPORTING
+            #define GLSLANG_EXPORT __declspec(dllexport)
+        #else
+            #define GLSLANG_EXPORT __declspec(dllimport)
+        #endif
+    #elif __GNUC__ >= 4
+        #define GLSLANG_EXPORT __attribute__((visibility("default")))
+    #endif
+#endif // GLSLANG_IS_SHARED_LIBRARY
 
-glslang_shader_t* glslang_shader_create(const glslang_input_t* input);
-void glslang_shader_delete(glslang_shader_t* shader);
-int glslang_shader_preprocess(glslang_shader_t* shader, const glslang_input_t* input);
-int glslang_shader_parse(glslang_shader_t* shader, const glslang_input_t* input);
-const char* glslang_shader_get_preprocessed_code(glslang_shader_t* shader);
-const char* glslang_shader_get_info_log(glslang_shader_t* shader);
-const char* glslang_shader_get_info_debug_log(glslang_shader_t* shader);
+#ifndef GLSLANG_EXPORT
+#define GLSLANG_EXPORT
+#endif
 
-glslang_program_t* glslang_program_create();
-void glslang_program_delete(glslang_program_t* program);
-void glslang_program_add_shader(glslang_program_t* program, glslang_shader_t* shader);
-int glslang_program_link(glslang_program_t* program, int messages); // glslang_messages_t
-void glslang_program_SPIRV_generate(glslang_program_t* program, glslang_stage_t stage);
-size_t glslang_program_SPIRV_get_size(glslang_program_t* program);
-void glslang_program_SPIRV_get(glslang_program_t* program, unsigned int*);
-unsigned int* glslang_program_SPIRV_get_ptr(glslang_program_t* program);
-const char* glslang_program_SPIRV_get_messages(glslang_program_t* program);
-const char* glslang_program_get_info_log(glslang_program_t* program);
-const char* glslang_program_get_info_debug_log(glslang_program_t* program);
+GLSLANG_EXPORT int glslang_initialize_process();
+GLSLANG_EXPORT void glslang_finalize_process();
+
+GLSLANG_EXPORT glslang_shader_t* glslang_shader_create(const glslang_input_t* input);
+GLSLANG_EXPORT void glslang_shader_delete(glslang_shader_t* shader);
+GLSLANG_EXPORT int glslang_shader_preprocess(glslang_shader_t* shader, const glslang_input_t* input);
+GLSLANG_EXPORT int glslang_shader_parse(glslang_shader_t* shader, const glslang_input_t* input);
+GLSLANG_EXPORT const char* glslang_shader_get_preprocessed_code(glslang_shader_t* shader);
+GLSLANG_EXPORT const char* glslang_shader_get_info_log(glslang_shader_t* shader);
+GLSLANG_EXPORT const char* glslang_shader_get_info_debug_log(glslang_shader_t* shader);
+
+GLSLANG_EXPORT glslang_program_t* glslang_program_create();
+GLSLANG_EXPORT void glslang_program_delete(glslang_program_t* program);
+GLSLANG_EXPORT void glslang_program_add_shader(glslang_program_t* program, glslang_shader_t* shader);
+GLSLANG_EXPORT int glslang_program_link(glslang_program_t* program, int messages); // glslang_messages_t
+GLSLANG_EXPORT void glslang_program_SPIRV_generate(glslang_program_t* program, glslang_stage_t stage);
+GLSLANG_EXPORT size_t glslang_program_SPIRV_get_size(glslang_program_t* program);
+GLSLANG_EXPORT void glslang_program_SPIRV_get(glslang_program_t* program, unsigned int*);
+GLSLANG_EXPORT unsigned int* glslang_program_SPIRV_get_ptr(glslang_program_t* program);
+GLSLANG_EXPORT const char* glslang_program_SPIRV_get_messages(glslang_program_t* program);
+GLSLANG_EXPORT const char* glslang_program_get_info_log(glslang_program_t* program);
+GLSLANG_EXPORT const char* glslang_program_get_info_debug_log(glslang_program_t* program);
 
 #ifdef __cplusplus
 }
diff --git a/glslang/Include/glslang_c_shader_types.h b/glslang/Include/glslang_c_shader_types.h
index d01a115..f100a9a 100644
--- a/glslang/Include/glslang_c_shader_types.h
+++ b/glslang/Include/glslang_c_shader_types.h
@@ -100,8 +100,9 @@
 typedef enum {
     GLSLANG_TARGET_VULKAN_1_0 = (1 << 22),
     GLSLANG_TARGET_VULKAN_1_1 = (1 << 22) | (1 << 12),
+    GLSLANG_TARGET_VULKAN_1_2 = (1 << 22) | (2 << 12),
     GLSLANG_TARGET_OPENGL_450 = 450,
-    LAST_ELEMENT_MARKER(GLSLANG_TARGET_CLIENT_VERSION_COUNT),
+    LAST_ELEMENT_MARKER(GLSLANG_TARGET_CLIENT_VERSION_COUNT = 4),
 } glslang_target_client_version_t;
 
 /* SH_TARGET_LanguageVersion counterpart */
@@ -112,7 +113,7 @@
     GLSLANG_TARGET_SPV_1_3 = (1 << 16) | (3 << 8),
     GLSLANG_TARGET_SPV_1_4 = (1 << 16) | (4 << 8),
     GLSLANG_TARGET_SPV_1_5 = (1 << 16) | (5 << 8),
-    LAST_ELEMENT_MARKER(GLSLANG_TARGET_LANGUAGE_VERSION_COUNT),
+    LAST_ELEMENT_MARKER(GLSLANG_TARGET_LANGUAGE_VERSION_COUNT = 6),
 } glslang_target_language_version_t;
 
 /* EShExecutable counterpart */
diff --git a/glslang/Include/intermediate.h b/glslang/Include/intermediate.h
index 30cb6fb..6b2fbd1 100644
--- a/glslang/Include/intermediate.h
+++ b/glslang/Include/intermediate.h
@@ -280,6 +280,12 @@
     EOpConvUvec2ToPtr,
     EOpConvPtrToUvec2,
 
+    // uint64_t -> accelerationStructureEXT
+    EOpConvUint64ToAccStruct,
+
+    // uvec2 -> accelerationStructureEXT
+    EOpConvUvec2ToAccStruct,
+
     //
     // binary operations
     //
@@ -587,6 +593,7 @@
     EOpTime,
 
     EOpAtomicAdd,
+    EOpAtomicSubtract,
     EOpAtomicMin,
     EOpAtomicMax,
     EOpAtomicAnd,
@@ -628,13 +635,16 @@
     // Branch
     //
 
-    EOpKill,            // Fragment only
+    EOpKill,                // Fragment only
+    EOpTerminateInvocation, // Fragment only
+    EOpDemote,              // Fragment only
+    EOpTerminateRayKHR,         // Any-hit only
+    EOpIgnoreIntersectionKHR,   // Any-hit only
     EOpReturn,
     EOpBreak,
     EOpContinue,
     EOpCase,
     EOpDefault,
-    EOpDemote,          // Fragment only
 
     //
     // Constructors
@@ -751,6 +761,7 @@
     EOpConstructNonuniform,     // expected to be transformed away, not present in final AST
     EOpConstructReference,
     EOpConstructCooperativeMatrix,
+    EOpConstructAccStruct,
     EOpConstructGuardEnd,
 
     //
@@ -911,11 +922,13 @@
     EOpAverageRounded,
     EOpMul32x16,
 
-    EOpTrace,
+    EOpTraceNV,
+    EOpTraceKHR,
     EOpReportIntersection,
-    EOpIgnoreIntersection,
-    EOpTerminateRay,
-    EOpExecuteCallable,
+    EOpIgnoreIntersectionNV,
+    EOpTerminateRayNV,
+    EOpExecuteCallableNV,
+    EOpExecuteCallableKHR,
     EOpWritePackedPrimitiveIndices4x8NV,
 
     //
@@ -1123,6 +1136,8 @@
     virtual TBasicType getBasicType() const { return type.getBasicType(); }
     virtual TQualifier& getQualifier() { return type.getQualifier(); }
     virtual const TQualifier& getQualifier() const { return type.getQualifier(); }
+    virtual TArraySizes* getArraySizes() { return type.getArraySizes(); }
+    virtual const TArraySizes* getArraySizes() const { return type.getArraySizes(); }
     virtual void propagatePrecision(TPrecisionQualifier);
     virtual int getVectorSize() const { return type.getVectorSize(); }
     virtual int getMatrixCols() const { return type.getMatrixCols(); }
@@ -1263,15 +1278,15 @@
     // if symbol is initialized as symbol(sym), the memory comes from the pool allocator of sym. If sym comes from
     // per process threadPoolAllocator, then it causes increased memory usage per compile
     // it is essential to use "symbol = sym" to assign to symbol
-    TIntermSymbol(int i, const TString& n, const TType& t)
+    TIntermSymbol(long long i, const TString& n, const TType& t)
         : TIntermTyped(t), id(i),
 #ifndef GLSLANG_WEB
         flattenSubset(-1),
 #endif
         constSubtree(nullptr)
           { name = n; }
-    virtual int getId() const { return id; }
-    virtual void changeId(int i) { id = i; }
+    virtual long long getId() const { return id; }
+    virtual void changeId(long long i) { id = i; }
     virtual const TString& getName() const { return name; }
     virtual void traverse(TIntermTraverser*);
     virtual       TIntermSymbol* getAsSymbolNode()       { return this; }
@@ -1282,15 +1297,17 @@
     TIntermTyped* getConstSubtree() const { return constSubtree; }
 #ifndef GLSLANG_WEB
     void setFlattenSubset(int subset) { flattenSubset = subset; }
+    virtual const TString& getAccessName() const;
+
     int getFlattenSubset() const { return flattenSubset; } // -1 means full object
 #endif
 
     // This is meant for cases where a node has already been constructed, and
     // later on, it becomes necessary to switch to a different symbol.
-    virtual void switchId(int newId) { id = newId; }
+    virtual void switchId(long long newId) { id = newId; }
 
 protected:
-    int id;                      // the unique id of the symbol this node represents
+    long long id;                // the unique id of the symbol this node represents
 #ifndef GLSLANG_WEB
     int flattenSubset;           // how deeply the flattened object rooted at id has been dereferenced
 #endif
@@ -1658,6 +1675,7 @@
         flatten(false), dontFlatten(false) {}
     virtual void traverse(TIntermTraverser*);
     virtual TIntermTyped* getCondition() const { return condition; }
+    virtual void setCondition(TIntermTyped* c) { condition = c; };
     virtual TIntermNode* getTrueBlock() const { return trueBlock; }
     virtual TIntermNode* getFalseBlock() const { return falseBlock; }
     virtual       TIntermSelection* getAsSelectionNode()       { return this; }
diff --git a/glslang/MachineIndependent/Constant.cpp b/glslang/MachineIndependent/Constant.cpp
index e21cf42..8dc04a4 100644
--- a/glslang/MachineIndependent/Constant.cpp
+++ b/glslang/MachineIndependent/Constant.cpp
@@ -599,17 +599,11 @@
             newConstArray[i].setDConst(log(unionArray[i].getDConst()));
             break;
         case EOpExp2:
-            {
-                const double inv_log2_e = 0.69314718055994530941723212145818;
-                newConstArray[i].setDConst(exp(unionArray[i].getDConst() * inv_log2_e));
-                break;
-            }
+            newConstArray[i].setDConst(exp2(unionArray[i].getDConst()));
+            break;
         case EOpLog2:
-            {
-                const double log2_e = 1.4426950408889634073599246810019;
-                newConstArray[i].setDConst(log2_e * log(unionArray[i].getDConst()));
-                break;
-            }
+            newConstArray[i].setDConst(log2(unionArray[i].getDConst()));
+            break;
         case EOpSqrt:
             newConstArray[i].setDConst(sqrt(unionArray[i].getDConst()));
             break;
diff --git a/glslang/MachineIndependent/Initialize.cpp b/glslang/MachineIndependent/Initialize.cpp
index 2a121b2..a9e5af4 100644
--- a/glslang/MachineIndependent/Initialize.cpp
+++ b/glslang/MachineIndependent/Initialize.cpp
@@ -147,6 +147,10 @@
 #ifdef GLSLANG_WEB
     const Versioning* Es300Desktop130 = nullptr;
     const Versioning* Es310Desktop420 = nullptr;
+#elif defined(GLSLANG_ANGLE)
+    const Versioning* Es300Desktop130 = nullptr;
+    const Versioning* Es310Desktop420 = nullptr;
+    const Versioning* Es310Desktop450 = nullptr;
 #else
     const Versioning Es300Desktop130Version[] = { { EEsProfile,      0, 300, 0, nullptr },
                                                   { EDesktopProfile, 0, 130, 0, nullptr },
@@ -415,7 +419,7 @@
 // See if the tabled versioning information allows the current version.
 bool ValidVersion(const BuiltInFunction& function, int version, EProfile profile, const SpvVersion& /* spVersion */)
 {
-#ifdef GLSLANG_WEB
+#if defined(GLSLANG_WEB) || defined(GLSLANG_ANGLE)
     // all entries in table are valid
     return true;
 #endif
@@ -499,12 +503,14 @@
     prefixes[EbtFloat] =  "";
     prefixes[EbtInt]   = "i";
     prefixes[EbtUint]  = "u";
-#ifndef GLSLANG_WEB
+#if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE)
     prefixes[EbtFloat16] = "f16";
     prefixes[EbtInt8]  = "i8";
     prefixes[EbtUint8] = "u8";
     prefixes[EbtInt16]  = "i16";
     prefixes[EbtUint16] = "u16";
+    prefixes[EbtInt64]  = "i64";
+    prefixes[EbtUint64] = "u64";
 #endif
 
     postfixes[2] = "2";
@@ -516,7 +522,9 @@
     dimMap[Esd3D] = 3;
     dimMap[EsdCube] = 3;
 #ifndef GLSLANG_WEB
+#ifndef GLSLANG_ANGLE
     dimMap[Esd1D] = 1;
+#endif
     dimMap[EsdRect] = 2;
     dimMap[EsdBuffer] = 1;
     dimMap[EsdSubpass] = 2;  // potentially unused for now
@@ -541,6 +549,9 @@
 #ifdef GLSLANG_WEB
     version = 310;
     profile = EEsProfile;
+#elif defined(GLSLANG_ANGLE)
+    version = 450;
+    profile = ECoreProfile;
 #endif
     addTabledBuiltins(version, profile, spvVersion);
 
@@ -586,6 +597,7 @@
         "vec4  fwidthCoarse(vec4  p);"
     );
 
+#ifndef GLSLANG_ANGLE
     TString derivativesAndControl16bits (
         "float16_t dFdx(float16_t);"
         "f16vec2   dFdx(f16vec2);"
@@ -1173,6 +1185,7 @@
             "\n"
         );
     }
+#endif // !GLSLANG_ANGLE
 
     if ((profile == EEsProfile && version >= 310) ||
         (profile != EEsProfile && version >= 430)) {
@@ -1210,6 +1223,7 @@
             "\n");
     }
 
+#ifndef GLSLANG_ANGLE
     if (profile != EEsProfile && version >= 440) {
         commonBuiltins.append(
             "uint64_t atomicMin(coherent volatile inout uint64_t, uint64_t);"
@@ -1271,7 +1285,8 @@
             "void atomicStore(coherent volatile out double, double, int, int, int);"
             "\n");
     }
-#endif
+#endif // !GLSLANG_ANGLE
+#endif // !GLSLANG_WEB
 
     if ((profile == EEsProfile && version >= 300) ||
         (profile != EEsProfile && version >= 150)) { // GL_ARB_shader_bit_encoding
@@ -1311,6 +1326,7 @@
             "\n");
     }
 
+#ifndef GLSLANG_ANGLE
     if (profile != EEsProfile && version >= 150) {  // ARB_gpu_shader_fp64
             commonBuiltins.append(
                 "double fma(double, double, double);"
@@ -1319,6 +1335,7 @@
                 "dvec4  fma(dvec4,  dvec4,  dvec4 );"
                 "\n");
     }
+#endif
 
     if ((profile == EEsProfile && version >= 310) ||
         (profile != EEsProfile && version >= 400)) {
@@ -1336,6 +1353,7 @@
             "\n");
     }
 
+#ifndef GLSLANG_ANGLE
     if (profile != EEsProfile && version >= 150) { // ARB_gpu_shader_fp64
         commonBuiltins.append(
             "double frexp(double, out int);"
@@ -1354,6 +1372,7 @@
             "\n");
     }
 #endif
+#endif
 
     if ((profile == EEsProfile && version >= 300) ||
         (profile != EEsProfile && version >= 150)) {
@@ -1462,6 +1481,7 @@
     }
 
 #ifndef GLSLANG_WEB
+#ifndef GLSLANG_ANGLE
     //
     // Original-style texture functions existing in all stages.
     // (Per-stage functions below.)
@@ -1610,6 +1630,37 @@
                 "\n");
         }
     }
+    else if (spvVersion.vulkanRelaxed) {
+        //
+        // Atomic counter functions act as aliases to normal atomic functions.
+        // replace definitions to take 'volatile coherent uint' instead of 'atomic_uint'
+        // and map to equivalent non-counter atomic op
+        //
+        if ((profile != EEsProfile && version >= 300) ||
+            (profile == EEsProfile && version >= 310)) {
+            commonBuiltins.append(
+                "uint atomicCounterIncrement(volatile coherent uint);"
+                "uint atomicCounterDecrement(volatile coherent uint);"
+                "uint atomicCounter(volatile coherent uint);"
+
+                "\n");
+        }
+        if (profile != EEsProfile && version >= 460) {
+            commonBuiltins.append(
+                "uint atomicCounterAdd(volatile coherent uint, uint);"
+                "uint atomicCounterSubtract(volatile coherent uint, uint);"
+                "uint atomicCounterMin(volatile coherent uint, uint);"
+                "uint atomicCounterMax(volatile coherent uint, uint);"
+                "uint atomicCounterAnd(volatile coherent uint, uint);"
+                "uint atomicCounterOr(volatile coherent uint, uint);"
+                "uint atomicCounterXor(volatile coherent uint, uint);"
+                "uint atomicCounterExchange(volatile coherent uint, uint);"
+                "uint atomicCounterCompSwap(volatile coherent uint, uint, uint);"
+
+                "\n");
+        }
+    }
+#endif // !GLSLANG_ANGLE
 
     // Bitfield
     if ((profile == EEsProfile && version >= 310) ||
@@ -1752,6 +1803,7 @@
             "\n");
     }
 
+#ifndef GLSLANG_ANGLE
     // GL_ARB_shader_ballot
     if (profile != EEsProfile && version >= 450) {
         commonBuiltins.append(
@@ -3072,6 +3124,7 @@
             "bool textureFootprintGradClampNV(sampler2D, vec2, vec2, vec2, float, int, bool, out gl_TextureFootprint2DNV);"
             "\n");
     }
+#endif // !GLSLANG_ANGLE
 
     if ((profile == EEsProfile && version >= 300 && version < 310) ||
         (profile != EEsProfile && version >= 150 && version < 450)) { // GL_EXT_shader_integer_mix
@@ -3091,6 +3144,7 @@
                               "\n");
     }
 
+#ifndef GLSLANG_ANGLE
     // GL_AMD_gpu_shader_half_float/Explicit types
     if (profile != EEsProfile && version >= 450) {
         commonBuiltins.append(
@@ -3941,28 +3995,30 @@
             "f64vec3   log2(f64vec3);"
             "f64vec4   log2(f64vec4);"
             "\n");
-        }
-        if (profile != EEsProfile && version >= 450) {
-            stageBuiltins[EShLangFragment].append(derivativesAndControl64bits);
-            stageBuiltins[EShLangFragment].append(
-                "float64_t interpolateAtCentroid(float64_t);"
-                "f64vec2   interpolateAtCentroid(f64vec2);"
-                "f64vec3   interpolateAtCentroid(f64vec3);"
-                "f64vec4   interpolateAtCentroid(f64vec4);"
+    }
 
-                "float64_t interpolateAtSample(float64_t, int);"
-                "f64vec2   interpolateAtSample(f64vec2,   int);"
-                "f64vec3   interpolateAtSample(f64vec3,   int);"
-                "f64vec4   interpolateAtSample(f64vec4,   int);"
+    if (profile != EEsProfile && version >= 450) {
+        stageBuiltins[EShLangFragment].append(derivativesAndControl64bits);
+        stageBuiltins[EShLangFragment].append(
+            "float64_t interpolateAtCentroid(float64_t);"
+            "f64vec2   interpolateAtCentroid(f64vec2);"
+            "f64vec3   interpolateAtCentroid(f64vec3);"
+            "f64vec4   interpolateAtCentroid(f64vec4);"
 
-                "float64_t interpolateAtOffset(float64_t, f64vec2);"
-                "f64vec2   interpolateAtOffset(f64vec2,   f64vec2);"
-                "f64vec3   interpolateAtOffset(f64vec3,   f64vec2);"
-                "f64vec4   interpolateAtOffset(f64vec4,   f64vec2);"
+            "float64_t interpolateAtSample(float64_t, int);"
+            "f64vec2   interpolateAtSample(f64vec2,   int);"
+            "f64vec3   interpolateAtSample(f64vec3,   int);"
+            "f64vec4   interpolateAtSample(f64vec4,   int);"
 
-                "\n");
+            "float64_t interpolateAtOffset(float64_t, f64vec2);"
+            "f64vec2   interpolateAtOffset(f64vec2,   f64vec2);"
+            "f64vec3   interpolateAtOffset(f64vec3,   f64vec2);"
+            "f64vec4   interpolateAtOffset(f64vec4,   f64vec2);"
+
+            "\n");
 
     }
+#endif // !GLSLANG_ANGLE
 
     //============================================================================
     //
@@ -3978,6 +4034,7 @@
     if (spvVersion.vulkan == 0 && IncludeLegacy(version, profile, spvVersion))
         stageBuiltins[EShLangVertex].append("vec4 ftransform();");
 
+#ifndef GLSLANG_ANGLE
     //
     // Original-style texture Functions with lod.
     //
@@ -4037,6 +4094,7 @@
                 "\n");
         }
     }
+#endif // !GLSLANG_ANGLE
 
     if ((profile != EEsProfile && version >= 150) ||
         (profile == EEsProfile && version >= 310)) {
@@ -4057,7 +4115,7 @@
             "void EndPrimitive();"
             "\n");
     }
-#endif
+#endif // !GLSLANG_WEB
 
     //============================================================================
     //
@@ -4096,7 +4154,7 @@
     }
 #ifndef GLSLANG_WEB
     if ((profile != EEsProfile && version >= 420) || esBarrier) {
-        if (spvVersion.vulkan == 0) {
+        if (spvVersion.vulkan == 0 || spvVersion.vulkanRelaxed) {
             commonBuiltins.append("void memoryBarrierAtomicCounter();");
         }
         commonBuiltins.append("void memoryBarrierImage();");
@@ -4117,6 +4175,7 @@
 
     commonBuiltins.append("void debugPrintfEXT();\n");
 
+#ifndef GLSLANG_ANGLE
     if (profile != EEsProfile && version >= 450) {
         // coopMatStoreNV perhaps ought to have "out" on the buf parameter, but
         // adding it introduces undesirable tempArgs on the stack. What we want
@@ -4240,6 +4299,7 @@
 
             "\n");
     }
+#endif // !GLSLANG_ANGLE
 
     // GL_ARB_derivative_control
     if (profile != EEsProfile && version >= 400) {
@@ -4277,6 +4337,7 @@
         "bool helperInvocationEXT();"
         "\n");
 
+#ifndef GLSLANG_ANGLE
     // GL_AMD_shader_explicit_vertex_parameter
     if (profile != EEsProfile && version >= 450) {
         stageBuiltins[EShLangFragment].append(
@@ -4390,9 +4451,7 @@
             "\n");
         stageBuiltins[EShLangAnyHit].append(
             "void ignoreIntersectionNV();"
-            "void ignoreIntersectionEXT();"
             "void terminateRayNV();"
-            "void terminateRayEXT();"
             "\n");
         stageBuiltins[EShLangClosestHit].append(
             "void traceNV(accelerationStructureNV,uint,uint,uint,uint,uint,vec3,float,vec3,float,int);"
@@ -4411,12 +4470,14 @@
             "void executeCallableEXT(uint, int);"
             "\n");
     }
+#endif // !GLSLANG_ANGLE
 
     //E_SPV_NV_compute_shader_derivatives
     if ((profile == EEsProfile && version >= 320) || (profile != EEsProfile && version >= 450)) {
         stageBuiltins[EShLangCompute].append(derivativeControls);
         stageBuiltins[EShLangCompute].append("\n");
     }
+#ifndef GLSLANG_ANGLE
     if (profile != EEsProfile && version >= 450) {
         stageBuiltins[EShLangCompute].append(derivativesAndControl16bits);
         stageBuiltins[EShLangCompute].append(derivativesAndControl64bits);
@@ -4429,7 +4490,8 @@
             "void writePackedPrimitiveIndices4x8NV(uint, uint);"
             "\n");
     }
-#endif
+#endif // !GLSLANG_ANGLE
+#endif // !GLSLANG_WEB
 
     //============================================================================
     //
@@ -4466,7 +4528,7 @@
             "\n");
     }
 
-#ifndef GLSLANG_WEB
+#if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE)
     if (spvVersion.spv == 0 && IncludeLegacy(version, profile, spvVersion)) {
         //
         // Matrix state. p. 31, 32, 37, 39, 40.
@@ -4584,7 +4646,7 @@
 
             "\n");
     }
-#endif
+#endif // !GLSLANG_WEB && !GLSLANG_ANGLE
 
     //============================================================================
     //
@@ -4615,6 +4677,7 @@
     }
 
 #ifndef GLSLANG_WEB
+#ifndef GLSLANG_ANGLE
     //============================================================================
     //
     // Define the interface to the mesh/task shader.
@@ -4702,6 +4765,7 @@
                 "\n");
         }
     }
+#endif // !GLSLANG_ANGLE
 
     //============================================================================
     //
@@ -4814,6 +4878,13 @@
                 "in int gl_VertexIndex;"
                 "in int gl_InstanceIndex;"
                 );
+
+        if (spvVersion.vulkan > 0 && version >= 140 && spvVersion.vulkanRelaxed)
+            stageBuiltins[EShLangVertex].append(
+                "in int gl_VertexID;"         // declare with 'in' qualifier
+                "in int gl_InstanceID;"
+                );
+
         if (version >= 440) {
             stageBuiltins[EShLangVertex].append(
                 "in int gl_BaseVertexARB;"
@@ -4851,7 +4922,7 @@
                 "mediump float gl_PointSize;" // needs qualifier fixed later
                 );
         } else {
-            if (spvVersion.vulkan == 0)
+            if (spvVersion.vulkan == 0 || spvVersion.vulkanRelaxed)
                 stageBuiltins[EShLangVertex].append(
                     "in highp int gl_VertexID;"      // needs qualifier fixed later
                     "in highp int gl_InstanceID;"    // needs qualifier fixed later
@@ -4894,6 +4965,11 @@
             "\n");
     }
 
+    if ((profile != EEsProfile && version >= 450) || (profile == EEsProfile && version >= 310)) {
+        stageBuiltins[EShLangVertex].append(
+            "out highp int gl_PrimitiveShadingRateEXT;" // GL_EXT_fragment_shading_rate
+            "\n");
+    }
 
     //============================================================================
     //
@@ -5007,6 +5083,12 @@
             "\n");
     }
 
+    if ((profile != EEsProfile && version >= 450) || (profile == EEsProfile && version >= 310)) {
+        stageBuiltins[EShLangGeometry].append(
+            "out highp int gl_PrimitiveShadingRateEXT;" // GL_EXT_fragment_shading_rate
+            "\n");
+    }
+
     //============================================================================
     //
     // Define the interface to the tessellation control shader.
@@ -5304,6 +5386,11 @@
                 "in vec3 gl_BaryCoordNoPerspNV;"
                 );
 
+        if (version >= 450)
+            stageBuiltins[EShLangFragment].append(
+                "flat in int gl_ShadingRateEXT;" // GL_EXT_fragment_shading_rate
+            );
+
     } else {
         // ES profile
 
@@ -5362,6 +5449,10 @@
                 "in vec3 gl_BaryCoordNV;"
                 "in vec3 gl_BaryCoordNoPerspNV;"
                 );
+        if (version >= 310)
+            stageBuiltins[EShLangFragment].append(
+                "flat in highp int gl_ShadingRateEXT;" // GL_EXT_fragment_shading_rate
+            );
     }
 #endif
 
@@ -5372,6 +5463,21 @@
 
 #ifndef GLSLANG_WEB
 
+    if ((profile != EEsProfile && version >= 140) ||
+        (profile == EEsProfile && version >= 310)) {
+        stageBuiltins[EShLangFragment].append(
+            "flat in highp int gl_DeviceIndex;"     // GL_EXT_device_group
+            "flat in highp int gl_ViewIndex;"       // GL_EXT_multiview
+            "\n");
+    }
+
+    if (version >= 300 /* both ES and non-ES */) {
+        stageBuiltins[EShLangFragment].append(
+            "flat in highp uint gl_ViewID_OVR;"     // GL_OVR_multiview, GL_OVR_multiview2
+            "\n");
+    }
+
+#ifndef GLSLANG_ANGLE
     // GL_ARB_shader_ballot
     if (profile != EEsProfile && version >= 450) {
         const char* ballotDecls =
@@ -5383,6 +5489,15 @@
             "in uint64_t gl_SubGroupLeMaskARB;"
             "in uint64_t gl_SubGroupLtMaskARB;"
             "\n";
+        const char* rtBallotDecls =
+            "uniform volatile uint gl_SubGroupSizeARB;"
+            "in volatile uint     gl_SubGroupInvocationARB;"
+            "in volatile uint64_t gl_SubGroupEqMaskARB;"
+            "in volatile uint64_t gl_SubGroupGeMaskARB;"
+            "in volatile uint64_t gl_SubGroupGtMaskARB;"
+            "in volatile uint64_t gl_SubGroupLeMaskARB;"
+            "in volatile uint64_t gl_SubGroupLtMaskARB;"
+            "\n";
         const char* fragmentBallotDecls =
             "uniform uint gl_SubGroupSizeARB;"
             "flat in uint     gl_SubGroupInvocationARB;"
@@ -5400,14 +5515,13 @@
         stageBuiltins[EShLangFragment]      .append(fragmentBallotDecls);
         stageBuiltins[EShLangMeshNV]        .append(ballotDecls);
         stageBuiltins[EShLangTaskNV]        .append(ballotDecls);
-    }
-
-    if ((profile != EEsProfile && version >= 140) ||
-        (profile == EEsProfile && version >= 310)) {
-        stageBuiltins[EShLangFragment].append(
-            "flat in highp int gl_DeviceIndex;"     // GL_EXT_device_group
-            "flat in highp int gl_ViewIndex;"       // GL_EXT_multiview
-            "\n");
+        stageBuiltins[EShLangRayGen]        .append(rtBallotDecls);
+        stageBuiltins[EShLangIntersect]     .append(rtBallotDecls);
+        // No volatile qualifier on these builtins in any-hit
+        stageBuiltins[EShLangAnyHit]        .append(ballotDecls);
+        stageBuiltins[EShLangClosestHit]    .append(rtBallotDecls);
+        stageBuiltins[EShLangMiss]          .append(rtBallotDecls);
+        stageBuiltins[EShLangCallable]      .append(rtBallotDecls);
     }
 
     // GL_KHR_shader_subgroup
@@ -5445,6 +5559,21 @@
             "in highp   uint  gl_NumSubgroups;"
             "in highp   uint  gl_SubgroupID;"
             "\n";
+        // These builtins are volatile for RT stages
+        const char* rtSubgroupDecls =
+            "in mediump volatile uint  gl_SubgroupSize;"
+            "in mediump volatile uint  gl_SubgroupInvocationID;"
+            "in highp   volatile uvec4 gl_SubgroupEqMask;"
+            "in highp   volatile uvec4 gl_SubgroupGeMask;"
+            "in highp   volatile uvec4 gl_SubgroupGtMask;"
+            "in highp   volatile uvec4 gl_SubgroupLeMask;"
+            "in highp   volatile uvec4 gl_SubgroupLtMask;"
+            // GL_NV_shader_sm_builtins
+            "in highp    uint  gl_WarpsPerSMNV;"
+            "in highp    uint  gl_SMCountNV;"
+            "in highp volatile uint  gl_WarpIDNV;"
+            "in highp volatile uint  gl_SMIDNV;"
+            "\n";
 
         stageBuiltins[EShLangVertex]        .append(subgroupDecls);
         stageBuiltins[EShLangTessControl]   .append(subgroupDecls);
@@ -5457,12 +5586,13 @@
         stageBuiltins[EShLangMeshNV]        .append(computeSubgroupDecls);
         stageBuiltins[EShLangTaskNV]        .append(subgroupDecls);
         stageBuiltins[EShLangTaskNV]        .append(computeSubgroupDecls);
-        stageBuiltins[EShLangRayGen]        .append(subgroupDecls);
-        stageBuiltins[EShLangIntersect]     .append(subgroupDecls);
+        stageBuiltins[EShLangRayGen]        .append(rtSubgroupDecls);
+        stageBuiltins[EShLangIntersect]     .append(rtSubgroupDecls);
+        // No volatile qualifier on these builtins in any-hit
         stageBuiltins[EShLangAnyHit]        .append(subgroupDecls);
-        stageBuiltins[EShLangClosestHit]    .append(subgroupDecls);
-        stageBuiltins[EShLangMiss]          .append(subgroupDecls);
-        stageBuiltins[EShLangCallable]      .append(subgroupDecls);
+        stageBuiltins[EShLangClosestHit]    .append(rtSubgroupDecls);
+        stageBuiltins[EShLangMiss]          .append(rtSubgroupDecls);
+        stageBuiltins[EShLangCallable]      .append(rtSubgroupDecls);
     }
 
     // GL_NV_ray_tracing/GL_EXT_ray_tracing
@@ -5530,7 +5660,7 @@
             "in    float  gl_RayTminNV;"
             "in    float  gl_RayTminEXT;"
             "in    float  gl_RayTmaxNV;"
-            "in    float  gl_RayTmaxEXT;"
+            "in volatile float gl_RayTmaxEXT;"
             "in    mat4x3 gl_ObjectToWorldNV;"
             "in    mat4x3 gl_ObjectToWorldEXT;"
             "in    mat3x4 gl_ObjectToWorld3x4EXT;"
@@ -5613,6 +5743,7 @@
         stageBuiltins[EShLangCallable].append(callableDecls);
 
     }
+
     if ((profile != EEsProfile && version >= 140)) {
         const char *deviceIndex =
             "in highp int gl_DeviceIndex;"     // GL_EXT_device_group
@@ -5625,12 +5756,6 @@
         stageBuiltins[EShLangMiss].append(deviceIndex);
     }
 
-    if (version >= 300 /* both ES and non-ES */) {
-        stageBuiltins[EShLangFragment].append(
-            "flat in highp uint gl_ViewID_OVR;"     // GL_OVR_multiview, GL_OVR_multiview2
-            "\n");
-    }
-
     if ((profile != EEsProfile && version >= 420) ||
         (profile == EEsProfile && version >= 310)) {
         commonBuiltins.append("const int gl_ScopeDevice      = 1;\n");
@@ -5654,7 +5779,59 @@
         commonBuiltins.append("const int gl_StorageSemanticsImage    = 0x800;\n");
         commonBuiltins.append("const int gl_StorageSemanticsOutput   = 0x1000;\n");
     }
-#endif
+
+    // Adding these to common built-ins triggers an assert due to a memory corruption in related code when testing
+    // So instead add to each stage individually, avoiding the GLSLang bug
+    if ((profile != EEsProfile && version >= 450) || (profile == EEsProfile && version >= 310)) {
+        for (int stage=EShLangVertex; stage<EShLangCount; stage++)
+        {
+            stageBuiltins[static_cast<EShLanguage>(stage)].append("const highp int gl_ShadingRateFlag2VerticalPixelsEXT       = 1;\n");
+            stageBuiltins[static_cast<EShLanguage>(stage)].append("const highp int gl_ShadingRateFlag4VerticalPixelsEXT       = 2;\n");
+            stageBuiltins[static_cast<EShLanguage>(stage)].append("const highp int gl_ShadingRateFlag2HorizontalPixelsEXT     = 4;\n");
+            stageBuiltins[static_cast<EShLanguage>(stage)].append("const highp int gl_ShadingRateFlag4HorizontalPixelsEXT     = 8;\n");
+        }
+    }
+    
+    // GL_EXT_shader_image_int64
+    if ((profile != EEsProfile && version >= 420) ||
+        (profile == EEsProfile && version >= 310)) {
+            
+        const TBasicType bTypes[] = { EbtInt64, EbtUint64 };
+        for (int ms = 0; ms <= 1; ++ms) { // loop over "bool" multisample or not
+            for (int arrayed = 0; arrayed <= 1; ++arrayed) { // loop over "bool" arrayed or not
+                for (int dim = Esd1D; dim < EsdSubpass; ++dim) { // 1D, ..., buffer
+                    if ((dim == Esd1D || dim == EsdRect) && profile == EEsProfile)
+                        continue;
+                    
+                    if ((dim == Esd3D || dim == EsdRect || dim == EsdBuffer) && arrayed)
+                        continue;
+                    
+                    if (dim != Esd2D && ms)
+                        continue;
+                    
+                    // Loop over the bTypes
+                    for (size_t bType = 0; bType < sizeof(bTypes)/sizeof(TBasicType); ++bType) {
+                        //
+                        // Now, make all the function prototypes for the type we just built...
+                        //
+                        TSampler sampler;
+                    
+                        sampler.setImage(bTypes[bType], (TSamplerDim)dim, arrayed ? true : false,
+                                                                          false,
+                                                                          ms      ? true : false);
+
+                        TString typeName = sampler.getString();
+
+                        addQueryFunctions(sampler, typeName, version, profile);
+                        addImageFunctions(sampler, typeName, version, profile);
+                    }
+                }
+            }
+        }
+    }
+#endif // !GLSLANG_ANGLE
+    
+#endif // !GLSLANG_WEB
 
     // printf("%s\n", commonBuiltins.c_str());
     // printf("%s\n", stageBuiltins[EShLangFragment].c_str());
@@ -5672,13 +5849,16 @@
     //
 
     // enumerate all the types
+    const TBasicType bTypes[] = { EbtFloat, EbtInt, EbtUint,
+#if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE)
+        EbtFloat16
+#endif
+    };
 #ifdef GLSLANG_WEB
-    const TBasicType bTypes[] = { EbtFloat, EbtInt, EbtUint };
     bool skipBuffer = true;
     bool skipCubeArrayed = true;
     const int image = 0;
 #else
-    const TBasicType bTypes[] = { EbtFloat, EbtInt, EbtUint, EbtFloat16 };
     bool skipBuffer = (profile == EEsProfile && version < 310) || (profile != EEsProfile && version < 140);
     bool skipCubeArrayed = (profile == EEsProfile && version < 310) || (profile != EEsProfile && version < 130);
     for (int image = 0; image <= 1; ++image) // loop over "bool" image vs sampler
@@ -5704,7 +5884,11 @@
 #ifdef GLSLANG_WEB
                     for (int dim = Esd2D; dim <= EsdCube; ++dim) { // 2D, 3D, and Cube
 #else
+#if defined(GLSLANG_ANGLE)
+                    for (int dim = Esd2D; dim < EsdNumDims; ++dim) { // 2D, ..., buffer, subpass
+#else
                     for (int dim = Esd1D; dim < EsdNumDims; ++dim) { // 1D, ..., buffer, subpass
+#endif
                         if (dim == EsdSubpass && spvVersion.vulkan == 0)
                             continue;
                         if (dim == EsdSubpass && (image || shadow || arrayed))
@@ -5743,7 +5927,6 @@
 #endif
                             if (shadow && (bTypes[bType] == EbtInt || bTypes[bType] == EbtUint))
                                 continue;
-
                             //
                             // Now, make all the function prototypes for the type we just built...
                             //
@@ -5968,8 +6151,16 @@
 
     if ( profile != EEsProfile ||
         (profile == EEsProfile && version >= 310)) {
-        if (sampler.type == EbtInt || sampler.type == EbtUint) {
-            const char* dataType = sampler.type == EbtInt ? "highp int" : "highp uint";
+        if (sampler.type == EbtInt || sampler.type == EbtUint || sampler.type == EbtInt64 || sampler.type == EbtUint64 ) {
+            
+            const char* dataType;
+            switch (sampler.type) {
+                case(EbtInt): dataType = "highp int"; break;
+                case(EbtUint): dataType = "highp uint"; break;
+                case(EbtInt64): dataType = "highp int64_t"; break;
+                case(EbtUint64): dataType = "highp uint64_t"; break;
+                default: dataType = "";
+            }
 
             const int numBuiltins = 7;
 
@@ -6125,6 +6316,9 @@
 #ifdef GLSLANG_WEB
     profile = EEsProfile;
     version = 310;
+#elif defined(GLSLANG_ANGLE)
+    profile = ECoreProfile;
+    version = 450;
 #endif
 
     //
@@ -6201,7 +6395,7 @@
                                     continue;
 
                                 // loop over 16-bit floating-point texel addressing
-#ifdef GLSLANG_WEB
+#if defined(GLSLANG_WEB) || defined(GLSLANG_ANGLE)
                                 const int f16TexAddr = 0;
 #else
                                 for (int f16TexAddr = 0; f16TexAddr <= 1; ++f16TexAddr)
@@ -6214,7 +6408,7 @@
                                         totalDims--;
                                     }
                                     // loop over "bool" lod clamp
-#ifdef GLSLANG_WEB
+#if defined(GLSLANG_WEB) || defined(GLSLANG_ANGLE)
                                     const int lodClamp = 0;
 #else
                                     for (int lodClamp = 0; lodClamp <= 1 ;++lodClamp)
@@ -6226,7 +6420,7 @@
                                             continue;
 
                                         // loop over "bool" sparse or not
-#ifdef GLSLANG_WEB
+#if defined(GLSLANG_WEB) || defined(GLSLANG_ANGLE)
                                         const int sparse = 0;
 #else
                                         for (int sparse = 0; sparse <= 1; ++sparse)
@@ -6281,7 +6475,7 @@
                                                 s.append("Offset");
                                             if (lodClamp)
                                                 s.append("Clamp");
-                                            if (lodClamp || sparse)
+                                            if (lodClamp != 0 || sparse)
                                                 s.append("ARB");
                                             s.append("(");
 
@@ -6381,7 +6575,7 @@
                                             s.append(");\n");
 
                                             // Add to the per-language set of built-ins
-                                            if (bias || lodClamp) {
+                                            if (!grad && (bias || lodClamp != 0)) {
                                                 stageBuiltins[EShLangFragment].append(s);
                                                 stageBuiltins[EShLangCompute].append(s);
                                             } else
@@ -6410,6 +6604,9 @@
 #ifdef GLSLANG_WEB
     profile = EEsProfile;
     version = 310;
+#elif defined(GLSLANG_ANGLE)
+    profile = ECoreProfile;
+    version = 450;
 #endif
 
     switch (sampler.dim) {
@@ -6653,6 +6850,9 @@
 #ifdef GLSLANG_WEB
     version = 310;
     profile = EEsProfile;
+#elif defined(GLSLANG_ANGLE)
+    version = 450;
+    profile = ECoreProfile;
 #endif
 
     //
@@ -7081,6 +7281,7 @@
         s.append("\n");
     }
 
+#ifndef GLSLANG_ANGLE
     // atomic counters (some in compute below)
     if ((profile == EEsProfile && version >= 310) ||
         (profile != EEsProfile && version >= 420)) {
@@ -7117,6 +7318,7 @@
 
         s.append("\n");
     }
+#endif // !GLSLANG_ANGLE
 
     // GL_ARB_cull_distance
     if (profile != EEsProfile && version >= 450) {
@@ -7133,6 +7335,7 @@
         s.append(builtInConstant);
     }
 
+#ifndef GLSLANG_ANGLE
     // SPV_NV_mesh_shader
     if ((profile != EEsProfile && version >= 450) || (profile == EEsProfile && version >= 320)) {
         snprintf(builtInConstant, maxSize, "const int gl_MaxMeshOutputVerticesNV = %d;", resources.maxMeshOutputVerticesNV);
@@ -7156,6 +7359,7 @@
         s.append("\n");
     }
 #endif
+#endif
 
     s.append("\n");
 }
@@ -7239,6 +7443,9 @@
 #ifdef GLSLANG_WEB
     version = 310;
     profile = EEsProfile;
+#elif defined(GLSLANG_ANGLE)
+    version = 450;
+    profile = ECoreProfile;
 #endif
 
     //
@@ -7266,6 +7473,12 @@
             SpecialQualifier("gl_InstanceID", EvqInstanceId, EbvInstanceId, symbolTable);
         }
 
+        if (spvVersion.vulkan > 0 && spvVersion.vulkanRelaxed) {
+            // treat these built-ins as aliases of VertexIndex and InstanceIndex
+            BuiltInVariable("gl_VertexID", EbvVertexIndex, symbolTable);
+            BuiltInVariable("gl_InstanceID", EbvInstanceIndex, symbolTable);
+        }
+
         if (profile != EEsProfile) {
             if (version >= 440) {
                 symbolTable.setVariableExtensions("gl_BaseVertexARB",   1, &E_GL_ARB_shader_draw_parameters);
@@ -7428,7 +7641,7 @@
 
     case EShLangTessEvaluation:
     case EShLangGeometry:
-#endif
+#endif // !GLSLANG_WEB
         SpecialQualifier("gl_Position",   EvqPosition,   EbvPosition,   symbolTable);
         SpecialQualifier("gl_PointSize",  EvqPointSize,  EbvPointSize,  symbolTable);
 
@@ -7589,7 +7802,21 @@
             BuiltInVariable("gl_WarpIDNV",              EbvWarpID,          symbolTable);
             BuiltInVariable("gl_SMIDNV",                EbvSMID,            symbolTable);
         }
-#endif
+
+		if (language == EShLangGeometry || language == EShLangVertex) {
+			if ((profile == EEsProfile && version >= 310) ||
+				(profile != EEsProfile && version >= 450)) {
+				symbolTable.setVariableExtensions("gl_PrimitiveShadingRateEXT", 1, &E_GL_EXT_fragment_shading_rate);
+				BuiltInVariable("gl_PrimitiveShadingRateEXT", EbvPrimitiveShadingRateKHR, symbolTable);
+
+				symbolTable.setVariableExtensions("gl_ShadingRateFlag2VerticalPixelsEXT", 1, &E_GL_EXT_fragment_shading_rate);
+				symbolTable.setVariableExtensions("gl_ShadingRateFlag4VerticalPixelsEXT", 1, &E_GL_EXT_fragment_shading_rate);
+				symbolTable.setVariableExtensions("gl_ShadingRateFlag2HorizontalPixelsEXT", 1, &E_GL_EXT_fragment_shading_rate);
+				symbolTable.setVariableExtensions("gl_ShadingRateFlag4HorizontalPixelsEXT", 1, &E_GL_EXT_fragment_shading_rate);
+			}
+		}
+
+#endif // !GLSLANG_WEB
         break;
 
     case EShLangFragment:
@@ -8095,7 +8322,18 @@
         }
 
         symbolTable.setFunctionExtensions("helperInvocationEXT",            1, &E_GL_EXT_demote_to_helper_invocation);
-#endif
+
+        if ((profile == EEsProfile && version >= 310) ||
+            (profile != EEsProfile && version >= 450)) {
+            symbolTable.setVariableExtensions("gl_ShadingRateEXT", 1, &E_GL_EXT_fragment_shading_rate);
+            BuiltInVariable("gl_ShadingRateEXT", EbvShadingRateKHR, symbolTable);
+
+            symbolTable.setVariableExtensions("gl_ShadingRateFlag2VerticalPixelsEXT", 1, &E_GL_EXT_fragment_shading_rate);
+            symbolTable.setVariableExtensions("gl_ShadingRateFlag4VerticalPixelsEXT", 1, &E_GL_EXT_fragment_shading_rate);
+            symbolTable.setVariableExtensions("gl_ShadingRateFlag2HorizontalPixelsEXT", 1, &E_GL_EXT_fragment_shading_rate);
+            symbolTable.setVariableExtensions("gl_ShadingRateFlag4HorizontalPixelsEXT", 1, &E_GL_EXT_fragment_shading_rate);
+        }
+#endif // !GLSLANG_WEB
         break;
 
     case EShLangCompute:
@@ -8227,10 +8465,18 @@
             symbolTable.setFunctionExtensions("dFdyCoarse",             1, &E_GL_NV_compute_shader_derivatives);
             symbolTable.setFunctionExtensions("fwidthCoarse",           1, &E_GL_NV_compute_shader_derivatives);
         }
-#endif
+
+        if ((profile == EEsProfile && version >= 310) ||
+            (profile != EEsProfile && version >= 450)) {
+            symbolTable.setVariableExtensions("gl_ShadingRateFlag2VerticalPixelsEXT", 1, &E_GL_EXT_fragment_shading_rate);
+            symbolTable.setVariableExtensions("gl_ShadingRateFlag4VerticalPixelsEXT", 1, &E_GL_EXT_fragment_shading_rate);
+            symbolTable.setVariableExtensions("gl_ShadingRateFlag2HorizontalPixelsEXT", 1, &E_GL_EXT_fragment_shading_rate);
+            symbolTable.setVariableExtensions("gl_ShadingRateFlag4HorizontalPixelsEXT", 1, &E_GL_EXT_fragment_shading_rate);
+        }
+#endif // !GLSLANG_WEB
         break;
 
-#ifndef GLSLANG_WEB
+#if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE)
     case EShLangRayGen:
     case EShLangIntersect:
     case EShLangAnyHit:
@@ -8281,9 +8527,7 @@
             symbolTable.setFunctionExtensions("reportIntersectionNV", 1, &E_GL_NV_ray_tracing);
             symbolTable.setFunctionExtensions("reportIntersectionEXT", 1, &E_GL_EXT_ray_tracing);
             symbolTable.setFunctionExtensions("ignoreIntersectionNV", 1, &E_GL_NV_ray_tracing);
-            symbolTable.setFunctionExtensions("ignoreIntersectionEXT", 1, &E_GL_EXT_ray_tracing);
             symbolTable.setFunctionExtensions("terminateRayNV", 1, &E_GL_NV_ray_tracing);
-            symbolTable.setFunctionExtensions("terminateRayEXT", 1, &E_GL_EXT_ray_tracing);
             symbolTable.setFunctionExtensions("executeCallableNV", 1, &E_GL_NV_ray_tracing);
             symbolTable.setFunctionExtensions("executeCallableEXT", 1, &E_GL_EXT_ray_tracing);
 
@@ -8376,6 +8620,13 @@
             BuiltInVariable("gl_WarpIDNV",              EbvWarpID,          symbolTable);
             BuiltInVariable("gl_SMIDNV",                EbvSMID,            symbolTable);
         }
+        if ((profile == EEsProfile && version >= 310) ||
+            (profile != EEsProfile && version >= 450)) {
+            symbolTable.setVariableExtensions("gl_ShadingRateFlag2VerticalPixelsEXT", 1, &E_GL_EXT_fragment_shading_rate);
+            symbolTable.setVariableExtensions("gl_ShadingRateFlag4VerticalPixelsEXT", 1, &E_GL_EXT_fragment_shading_rate);
+            symbolTable.setVariableExtensions("gl_ShadingRateFlag2HorizontalPixelsEXT", 1, &E_GL_EXT_fragment_shading_rate);
+            symbolTable.setVariableExtensions("gl_ShadingRateFlag4HorizontalPixelsEXT", 1, &E_GL_EXT_fragment_shading_rate);
+        }
         break;
 
     case EShLangMeshNV:
@@ -8520,6 +8771,14 @@
             BuiltInVariable("gl_WarpIDNV",              EbvWarpID,          symbolTable);
             BuiltInVariable("gl_SMIDNV",                EbvSMID,            symbolTable);
         }
+
+        if ((profile == EEsProfile && version >= 310) ||
+            (profile != EEsProfile && version >= 450)) {
+            symbolTable.setVariableExtensions("gl_ShadingRateFlag2VerticalPixelsEXT", 1, &E_GL_EXT_fragment_shading_rate);
+            symbolTable.setVariableExtensions("gl_ShadingRateFlag4VerticalPixelsEXT", 1, &E_GL_EXT_fragment_shading_rate);
+            symbolTable.setVariableExtensions("gl_ShadingRateFlag2HorizontalPixelsEXT", 1, &E_GL_EXT_fragment_shading_rate);
+            symbolTable.setVariableExtensions("gl_ShadingRateFlag4HorizontalPixelsEXT", 1, &E_GL_EXT_fragment_shading_rate);
+        }
         break;
 
     case EShLangTaskNV:
@@ -8620,6 +8879,13 @@
             BuiltInVariable("gl_WarpIDNV",              EbvWarpID,          symbolTable);
             BuiltInVariable("gl_SMIDNV",                EbvSMID,            symbolTable);
         }
+        if ((profile == EEsProfile && version >= 310) ||
+            (profile != EEsProfile && version >= 450)) {
+            symbolTable.setVariableExtensions("gl_ShadingRateFlag2VerticalPixelsEXT", 1, &E_GL_EXT_fragment_shading_rate);
+            symbolTable.setVariableExtensions("gl_ShadingRateFlag4VerticalPixelsEXT", 1, &E_GL_EXT_fragment_shading_rate);
+            symbolTable.setVariableExtensions("gl_ShadingRateFlag2HorizontalPixelsEXT", 1, &E_GL_EXT_fragment_shading_rate);
+            symbolTable.setVariableExtensions("gl_ShadingRateFlag4HorizontalPixelsEXT", 1, &E_GL_EXT_fragment_shading_rate);
+        }
         break;
 #endif
 
@@ -8689,6 +8955,14 @@
     symbolTable.relateToOperator("memoryBarrierAtomicCounter", EOpMemoryBarrierAtomicCounter);
     symbolTable.relateToOperator("memoryBarrierImage",         EOpMemoryBarrierImage);
 
+    if (spvVersion.vulkanRelaxed) {
+        //
+        // functions signature have been replaced to take uint operations on buffer variables
+        // remap atomic counter functions to atomic operations
+        //
+        symbolTable.relateToOperator("memoryBarrierAtomicCounter", EOpMemoryBarrierBuffer);
+    }
+
     symbolTable.relateToOperator("atomicLoad",     EOpAtomicLoad);
     symbolTable.relateToOperator("atomicStore",    EOpAtomicStore);
 
@@ -8696,6 +8970,20 @@
     symbolTable.relateToOperator("atomicCounterDecrement", EOpAtomicCounterDecrement);
     symbolTable.relateToOperator("atomicCounter",          EOpAtomicCounter);
 
+    if (spvVersion.vulkanRelaxed) {
+        //
+        // functions signature have been replaced to take uint operations
+        // remap atomic counter functions to atomic operations
+        //
+        // these atomic counter functions do not match signatures of glsl
+        // atomic functions, so they will be remapped to semantically
+        // equivalent functions in the parser
+        //
+        symbolTable.relateToOperator("atomicCounterIncrement", EOpNull);
+        symbolTable.relateToOperator("atomicCounterDecrement", EOpNull);
+        symbolTable.relateToOperator("atomicCounter", EOpNull);
+    }
+
     symbolTable.relateToOperator("clockARB",     EOpReadClockSubgroupKHR);
     symbolTable.relateToOperator("clock2x32ARB", EOpReadClockSubgroupKHR);
 
@@ -8714,6 +9002,23 @@
         symbolTable.relateToOperator("atomicCounterCompSwap", EOpAtomicCounterCompSwap);
     }
 
+    if (spvVersion.vulkanRelaxed) {
+        //
+        // functions signature have been replaced to take 'uint' instead of 'atomic_uint'
+        // remap atomic counter functions to non-counter atomic ops so
+        // functions act as aliases to non-counter atomic ops
+        //
+        symbolTable.relateToOperator("atomicCounterAdd", EOpAtomicAdd);
+        symbolTable.relateToOperator("atomicCounterSubtract", EOpAtomicSubtract);
+        symbolTable.relateToOperator("atomicCounterMin", EOpAtomicMin);
+        symbolTable.relateToOperator("atomicCounterMax", EOpAtomicMax);
+        symbolTable.relateToOperator("atomicCounterAnd", EOpAtomicAnd);
+        symbolTable.relateToOperator("atomicCounterOr", EOpAtomicOr);
+        symbolTable.relateToOperator("atomicCounterXor", EOpAtomicXor);
+        symbolTable.relateToOperator("atomicCounterExchange", EOpAtomicExchange);
+        symbolTable.relateToOperator("atomicCounterCompSwap", EOpAtomicCompSwap);
+    }
+
     symbolTable.relateToOperator("fma",               EOpFma);
     symbolTable.relateToOperator("frexp",             EOpFrexp);
     symbolTable.relateToOperator("ldexp",             EOpLdexp);
@@ -9091,10 +9396,10 @@
     case EShLangClosestHit:
     case EShLangMiss:
         if (profile != EEsProfile && version >= 460) {
-            symbolTable.relateToOperator("traceNV", EOpTrace);
-            symbolTable.relateToOperator("traceRayEXT", EOpTrace);
-            symbolTable.relateToOperator("executeCallableNV", EOpExecuteCallable);
-            symbolTable.relateToOperator("executeCallableEXT", EOpExecuteCallable);
+            symbolTable.relateToOperator("traceNV", EOpTraceNV);
+            symbolTable.relateToOperator("traceRayEXT", EOpTraceKHR);
+            symbolTable.relateToOperator("executeCallableNV", EOpExecuteCallableNV);
+            symbolTable.relateToOperator("executeCallableEXT", EOpExecuteCallableKHR);
         }
         break;
     case EShLangIntersect:
@@ -9105,16 +9410,14 @@
         break;
     case EShLangAnyHit:
         if (profile != EEsProfile && version >= 460) {
-            symbolTable.relateToOperator("ignoreIntersectionNV", EOpIgnoreIntersection);
-            symbolTable.relateToOperator("ignoreIntersectionEXT", EOpIgnoreIntersection);
-            symbolTable.relateToOperator("terminateRayNV", EOpTerminateRay);
-            symbolTable.relateToOperator("terminateRayEXT", EOpTerminateRay);
+            symbolTable.relateToOperator("ignoreIntersectionNV", EOpIgnoreIntersectionNV);
+            symbolTable.relateToOperator("terminateRayNV", EOpTerminateRayNV);
         }
         break;
     case EShLangCallable:
         if (profile != EEsProfile && version >= 460) {
-            symbolTable.relateToOperator("executeCallableNV", EOpExecuteCallable);
-            symbolTable.relateToOperator("executeCallableEXT", EOpExecuteCallable);
+            symbolTable.relateToOperator("executeCallableNV", EOpExecuteCallableNV);
+            symbolTable.relateToOperator("executeCallableEXT", EOpExecuteCallableKHR);
         }
         break;
     case EShLangMeshNV:
@@ -9133,7 +9436,7 @@
     default:
         assert(false && "Language not supported");
     }
-#endif
+#endif // !GLSLANG_WEB
 }
 
 //
@@ -9148,6 +9451,10 @@
 void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion& spvVersion, EShLanguage language, TSymbolTable& symbolTable, const TBuiltInResource &resources)
 {
 #ifndef GLSLANG_WEB
+#if defined(GLSLANG_ANGLE)
+    profile = ECoreProfile;
+    version = 450;
+#endif
     if (profile != EEsProfile && version >= 430 && version < 440) {
         symbolTable.setVariableExtensions("gl_MaxTransformFeedbackBuffers", 1, &E_GL_ARB_enhanced_layouts);
         symbolTable.setVariableExtensions("gl_MaxTransformFeedbackInterleavedComponents", 1, &E_GL_ARB_enhanced_layouts);
diff --git a/glslang/MachineIndependent/IntermTraverse.cpp b/glslang/MachineIndependent/IntermTraverse.cpp
index f46010b..553b1b5 100644
--- a/glslang/MachineIndependent/IntermTraverse.cpp
+++ b/glslang/MachineIndependent/IntermTraverse.cpp
@@ -71,6 +71,13 @@
     it->visitConstantUnion(this);
 }
 
+const TString& TIntermSymbol::getAccessName() const {
+    if (getBasicType() == EbtBlock)
+        return getType().getTypeName();
+    else
+        return getName();
+}
+
 //
 // Traverse a binary node.
 //
diff --git a/glslang/MachineIndependent/Intermediate.cpp b/glslang/MachineIndependent/Intermediate.cpp
old mode 100755
new mode 100644
index bb03aa0..d1123d4
--- a/glslang/MachineIndependent/Intermediate.cpp
+++ b/glslang/MachineIndependent/Intermediate.cpp
@@ -65,7 +65,7 @@
 // Returns the added node.
 //
 
-TIntermSymbol* TIntermediate::addSymbol(int id, const TString& name, const TType& type, const TConstUnionArray& constArray,
+TIntermSymbol* TIntermediate::addSymbol(long long id, const TString& name, const TType& type, const TConstUnionArray& constArray,
                                         TIntermTyped* constSubtree, const TSourceLoc& loc)
 {
     TIntermSymbol* node = new TIntermSymbol(id, name, type);
@@ -113,14 +113,14 @@
 //
 // Returns nullptr if the working conversions and promotions could not be found.
 //
-TIntermTyped* TIntermediate::addBinaryMath(TOperator op, TIntermTyped* left, TIntermTyped* right, TSourceLoc loc)
+TIntermTyped* TIntermediate::addBinaryMath(TOperator op, TIntermTyped* left, TIntermTyped* right, const TSourceLoc& loc)
 {
     // No operations work on blocks
     if (left->getType().getBasicType() == EbtBlock || right->getType().getBasicType() == EbtBlock)
         return nullptr;
 
     // Convert "reference +/- int" and "reference - reference" to integer math
-    if ((op == EOpAdd || op == EOpSub) && extensionRequested(E_GL_EXT_buffer_reference2)) {
+    if (op == EOpAdd || op == EOpSub) {
 
         // No addressing math on struct with unsized array.
         if ((left->isReference() && left->getType().getReferentType()->containsUnsizedArray()) ||
@@ -140,43 +140,44 @@
             node = addBuiltInFunctionCall(loc, EOpConvUint64ToPtr, true, node, referenceType);
             return node;
         }
-
-        if (op == EOpAdd && right->isReference() && isTypeInt(left->getBasicType())) {
-            const TType& referenceType = right->getType();
-            TIntermConstantUnion* size = addConstantUnion((unsigned long long)computeBufferReferenceTypeSize(right->getType()), loc, true);
-            right = addBuiltInFunctionCall(loc, EOpConvPtrToUint64, true, right, TType(EbtUint64));
-
-            left  = createConversion(EbtInt64, left);
-            left  = addBinaryMath(EOpMul, left, size, loc);
-
-            TIntermTyped *node = addBinaryMath(op, left, right, loc);
-            node = addBuiltInFunctionCall(loc, EOpConvUint64ToPtr, true, node, referenceType);
-            return node;
-        }
-
-        if (op == EOpSub && left->isReference() && right->isReference()) {
-            TIntermConstantUnion* size = addConstantUnion((long long)computeBufferReferenceTypeSize(left->getType()), loc, true);
-
-            left = addBuiltInFunctionCall(loc, EOpConvPtrToUint64, true, left, TType(EbtUint64));
-            right = addBuiltInFunctionCall(loc, EOpConvPtrToUint64, true, right, TType(EbtUint64));
-
-            left = addBuiltInFunctionCall(loc, EOpConvUint64ToInt64, true, left, TType(EbtInt64));
-            right = addBuiltInFunctionCall(loc, EOpConvUint64ToInt64, true, right, TType(EbtInt64));
-
-            left = addBinaryMath(EOpSub, left, right, loc);
-
-            TIntermTyped *node = addBinaryMath(EOpDiv, left, size, loc);
-            return node;
-        }
-
-        // No other math operators supported on references
-        if (left->isReference() || right->isReference()) {
-            return nullptr;
-        }
     }
 
+    if (op == EOpAdd && right->isReference() && isTypeInt(left->getBasicType())) {
+        const TType& referenceType = right->getType();
+        TIntermConstantUnion* size =
+            addConstantUnion((unsigned long long)computeBufferReferenceTypeSize(right->getType()), loc, true);
+        right = addBuiltInFunctionCall(loc, EOpConvPtrToUint64, true, right, TType(EbtUint64));
+
+        left  = createConversion(EbtInt64, left);
+        left  = addBinaryMath(EOpMul, left, size, loc);
+
+        TIntermTyped *node = addBinaryMath(op, left, right, loc);
+        node = addBuiltInFunctionCall(loc, EOpConvUint64ToPtr, true, node, referenceType);
+        return node;
+    }
+
+    if (op == EOpSub && left->isReference() && right->isReference()) {
+        TIntermConstantUnion* size =
+            addConstantUnion((long long)computeBufferReferenceTypeSize(left->getType()), loc, true);
+
+        left = addBuiltInFunctionCall(loc, EOpConvPtrToUint64, true, left, TType(EbtUint64));
+        right = addBuiltInFunctionCall(loc, EOpConvPtrToUint64, true, right, TType(EbtUint64));
+
+        left = addBuiltInFunctionCall(loc, EOpConvUint64ToInt64, true, left, TType(EbtInt64));
+        right = addBuiltInFunctionCall(loc, EOpConvUint64ToInt64, true, right, TType(EbtInt64));
+
+        left = addBinaryMath(EOpSub, left, right, loc);
+
+        TIntermTyped *node = addBinaryMath(EOpDiv, left, size, loc);
+        return node;
+    }
+
+    // No other math operators supported on references
+    if (left->isReference() || right->isReference())
+        return nullptr;
+
     // Try converting the children's base types to compatible types.
-    auto children = addConversion(op, left, right);
+    auto children = addPairConversion(op, left, right);
     left = std::get<0>(children);
     right = std::get<1>(children);
 
@@ -226,13 +227,12 @@
 //
 // Low level: add binary node (no promotions or other argument modifications)
 //
-TIntermBinary* TIntermediate::addBinaryNode(TOperator op, TIntermTyped* left, TIntermTyped* right, TSourceLoc loc) const
+TIntermBinary* TIntermediate::addBinaryNode(TOperator op, TIntermTyped* left, TIntermTyped* right,
+    const TSourceLoc& loc) const
 {
     // build the node
     TIntermBinary* node = new TIntermBinary(op);
-    if (loc.line == 0)
-        loc = left->getLoc();
-    node->setLoc(loc);
+    node->setLoc(loc.line != 0 ? loc : left->getLoc());
     node->setLeft(left);
     node->setRight(right);
 
@@ -242,7 +242,8 @@
 //
 // like non-type form, but sets node's type.
 //
-TIntermBinary* TIntermediate::addBinaryNode(TOperator op, TIntermTyped* left, TIntermTyped* right, TSourceLoc loc, const TType& type) const
+TIntermBinary* TIntermediate::addBinaryNode(TOperator op, TIntermTyped* left, TIntermTyped* right,
+    const TSourceLoc& loc, const TType& type) const
 {
     TIntermBinary* node = addBinaryNode(op, left, right, loc);
     node->setType(type);
@@ -252,12 +253,10 @@
 //
 // Low level: add unary node (no promotions or other argument modifications)
 //
-TIntermUnary* TIntermediate::addUnaryNode(TOperator op, TIntermTyped* child, TSourceLoc loc) const
+TIntermUnary* TIntermediate::addUnaryNode(TOperator op, TIntermTyped* child, const TSourceLoc& loc) const
 {
     TIntermUnary* node = new TIntermUnary(op);
-    if (loc.line == 0)
-        loc = child->getLoc();
-    node->setLoc(loc);
+    node->setLoc(loc.line != 0 ? loc : child->getLoc());
     node->setOperand(child);
 
     return node;
@@ -266,7 +265,8 @@
 //
 // like non-type form, but sets node's type.
 //
-TIntermUnary* TIntermediate::addUnaryNode(TOperator op, TIntermTyped* child, TSourceLoc loc, const TType& type) const
+TIntermUnary* TIntermediate::addUnaryNode(TOperator op, TIntermTyped* child, const TSourceLoc& loc, const TType& type)
+    const
 {
     TIntermUnary* node = addUnaryNode(op, child, loc);
     node->setType(type);
@@ -281,7 +281,8 @@
 // Returns nullptr if the 'right' type could not be converted to match the 'left' type,
 // or the resulting operation cannot be properly promoted.
 //
-TIntermTyped* TIntermediate::addAssign(TOperator op, TIntermTyped* left, TIntermTyped* right, TSourceLoc loc)
+TIntermTyped* TIntermediate::addAssign(TOperator op, TIntermTyped* left, TIntermTyped* right,
+    const TSourceLoc& loc)
 {
     // No block assignment
     if (left->getType().getBasicType() == EbtBlock || right->getType().getBasicType() == EbtBlock)
@@ -290,9 +291,7 @@
     // Convert "reference += int" to "reference = reference + int". We need this because the
     // "reference + int" calculation involves a cast back to the original type, which makes it
     // not an lvalue.
-    if ((op == EOpAddAssign || op == EOpSubAssign) && left->isReference() &&
-        extensionRequested(E_GL_EXT_buffer_reference2)) {
-
+    if ((op == EOpAddAssign || op == EOpSubAssign) && left->isReference()) {
         if (!(right->getType().isScalar() && right->getType().isIntegerDomain()))
             return nullptr;
 
@@ -338,7 +337,8 @@
 // Returns the added node.
 // The caller should set the type of the returned node.
 //
-TIntermTyped* TIntermediate::addIndex(TOperator op, TIntermTyped* base, TIntermTyped* index, TSourceLoc loc)
+TIntermTyped* TIntermediate::addIndex(TOperator op, TIntermTyped* base, TIntermTyped* index,
+    const TSourceLoc& loc)
 {
     // caller should set the type
     return addBinaryNode(op, base, index, loc);
@@ -349,7 +349,8 @@
 //
 // Returns the added node.
 //
-TIntermTyped* TIntermediate::addUnaryMath(TOperator op, TIntermTyped* child, TSourceLoc loc)
+TIntermTyped* TIntermediate::addUnaryMath(TOperator op, TIntermTyped* child,
+    const TSourceLoc& loc)
 {
     if (child == 0)
         return nullptr;
@@ -495,7 +496,8 @@
 // Returns an aggregate node, which could be the one passed in if
 // it was already an aggregate.
 //
-TIntermTyped* TIntermediate::setAggregateOperator(TIntermNode* node, TOperator op, const TType& type, TSourceLoc loc)
+TIntermTyped* TIntermediate::setAggregateOperator(TIntermNode* node, TOperator op, const TType& type,
+    const TSourceLoc& loc)
 {
     TIntermAggregate* aggNode;
 
@@ -510,8 +512,6 @@
             //
             aggNode = new TIntermAggregate();
             aggNode->getSequence().push_back(node);
-            if (loc.line == 0)
-                loc = node->getLoc();
         }
     } else
         aggNode = new TIntermAggregate();
@@ -520,8 +520,8 @@
     // Set the operator.
     //
     aggNode->setOperator(op);
-    if (loc.line != 0)
-        aggNode->setLoc(loc);
+    if (loc.line != 0 || node != nullptr)
+        aggNode->setLoc(loc.line != 0 ? loc : node->getLoc());
 
     aggNode->setType(type);
 
@@ -819,22 +819,25 @@
                                   node->getBasicType() == EbtFloat ||
                                   node->getBasicType() == EbtDouble);
 
-    if (! getArithemeticInt8Enabled()) {
-        if (((convertTo == EbtInt8 || convertTo == EbtUint8) && ! convertFromIntTypes) ||
-            ((node->getBasicType() == EbtInt8 || node->getBasicType() == EbtUint8) && ! convertToIntTypes))
+    if (((convertTo == EbtInt8 || convertTo == EbtUint8) && ! convertFromIntTypes) ||
+        ((node->getBasicType() == EbtInt8 || node->getBasicType() == EbtUint8) && ! convertToIntTypes)) {
+        if (! getArithemeticInt8Enabled()) {
             return nullptr;
+        }
     }
 
-    if (! getArithemeticInt16Enabled()) {
-        if (((convertTo == EbtInt16 || convertTo == EbtUint16) && ! convertFromIntTypes) ||
-            ((node->getBasicType() == EbtInt16 || node->getBasicType() == EbtUint16) && ! convertToIntTypes))
+    if (((convertTo == EbtInt16 || convertTo == EbtUint16) && ! convertFromIntTypes) ||
+        ((node->getBasicType() == EbtInt16 || node->getBasicType() == EbtUint16) && ! convertToIntTypes)) {
+        if (! getArithemeticInt16Enabled()) {
             return nullptr;
+        }
     }
 
-    if (! getArithemeticFloat16Enabled()) {
-        if ((convertTo == EbtFloat16 && ! convertFromFloatTypes) ||
-            (node->getBasicType() == EbtFloat16 && ! convertToFloatTypes))
+    if ((convertTo == EbtFloat16 && ! convertFromFloatTypes) ||
+        (node->getBasicType() == EbtFloat16 && ! convertToFloatTypes)) {
+        if (! getArithemeticFloat16Enabled()) {
             return nullptr;
+        }
     }
 #endif
 
@@ -887,7 +890,7 @@
 // Returns the converted pair of nodes.
 // Returns <nullptr, nullptr> when there is no conversion.
 std::tuple<TIntermTyped*, TIntermTyped*>
-TIntermediate::addConversion(TOperator op, TIntermTyped* node0, TIntermTyped* node1)
+TIntermediate::addPairConversion(TOperator op, TIntermTyped* node0, TIntermTyped* node1)
 {
     if (!isConversionAllowed(op, node0) || !isConversionAllowed(op, node1))
         return std::make_tuple(nullptr, nullptr);
@@ -940,7 +943,7 @@
         if (node0->getBasicType() == node1->getBasicType())
             return std::make_tuple(node0, node1);
 
-        promoteTo = getConversionDestinatonType(node0->getBasicType(), node1->getBasicType(), op);
+        promoteTo = getConversionDestinationType(node0->getBasicType(), node1->getBasicType(), op);
         if (std::get<0>(promoteTo) == EbtNumTypes || std::get<1>(promoteTo) == EbtNumTypes)
             return std::make_tuple(nullptr, nullptr);
 
@@ -1040,64 +1043,30 @@
     // Note: callers are responsible for other aspects of shape,
     // like vector and matrix sizes.
 
-    TBasicType promoteTo;
-    // GL_EXT_shader_16bit_storage can't do OpConstantComposite with
-    // 16-bit types, so disable promotion for those types.
-    bool canPromoteConstant = true;
-
     switch (op) {
     //
     // Explicit conversions (unary operations)
     //
     case EOpConstructBool:
-        promoteTo = EbtBool;
-        break;
     case EOpConstructFloat:
-        promoteTo = EbtFloat;
-        break;
     case EOpConstructInt:
-        promoteTo = EbtInt;
-        break;
     case EOpConstructUint:
-        promoteTo = EbtUint;
-        break;
 #ifndef GLSLANG_WEB
     case EOpConstructDouble:
-        promoteTo = EbtDouble;
-        break;
     case EOpConstructFloat16:
-        promoteTo = EbtFloat16;
-        canPromoteConstant = extensionRequested(E_GL_EXT_shader_explicit_arithmetic_types) ||
-                             extensionRequested(E_GL_EXT_shader_explicit_arithmetic_types_float16);
-        break;
     case EOpConstructInt8:
-        promoteTo = EbtInt8;
-        canPromoteConstant = extensionRequested(E_GL_EXT_shader_explicit_arithmetic_types) ||
-                             extensionRequested(E_GL_EXT_shader_explicit_arithmetic_types_int8);
-        break;
     case EOpConstructUint8:
-        promoteTo = EbtUint8;
-        canPromoteConstant = extensionRequested(E_GL_EXT_shader_explicit_arithmetic_types) ||
-                             extensionRequested(E_GL_EXT_shader_explicit_arithmetic_types_int8);
-        break;
     case EOpConstructInt16:
-        promoteTo = EbtInt16;
-        canPromoteConstant = extensionRequested(E_GL_EXT_shader_explicit_arithmetic_types) ||
-                             extensionRequested(E_GL_EXT_shader_explicit_arithmetic_types_int16);
-        break;
     case EOpConstructUint16:
-        promoteTo = EbtUint16;
-        canPromoteConstant = extensionRequested(E_GL_EXT_shader_explicit_arithmetic_types) ||
-                             extensionRequested(E_GL_EXT_shader_explicit_arithmetic_types_int16);
-        break;
     case EOpConstructInt64:
-        promoteTo = EbtInt64;
-        break;
     case EOpConstructUint64:
-        promoteTo = EbtUint64;
         break;
+
 #endif
 
+    //
+    // Implicit conversions
+    //
     case EOpLogicalNot:
 
     case EOpFunctionCall:
@@ -1152,9 +1121,7 @@
         if (type.getBasicType() == node->getType().getBasicType())
             return node;
 
-        if (canImplicitlyPromote(node->getBasicType(), type.getBasicType(), op))
-            promoteTo = type.getBasicType();
-        else
+        if (! canImplicitlyPromote(node->getBasicType(), type.getBasicType(), op))
             return nullptr;
         break;
 
@@ -1164,9 +1131,7 @@
     case EOpLeftShiftAssign:
     case EOpRightShiftAssign:
     {
-        if (getSource() == EShSourceHlsl && node->getType().getBasicType() == EbtBool)
-            promoteTo = type.getBasicType();
-        else {
+        if (!(getSource() == EShSourceHlsl && node->getType().getBasicType() == EbtBool)) {
             if (isTypeInt(type.getBasicType()) && isTypeInt(node->getBasicType()))
                 return node;
             else
@@ -1184,13 +1149,44 @@
             return nullptr;
     }
 
+    bool canPromoteConstant = true;
+#ifndef GLSLANG_WEB
+    // GL_EXT_shader_16bit_storage can't do OpConstantComposite with
+    // 16-bit types, so disable promotion for those types.
+    // Many issues with this, from JohnK:
+    //  - this isn't really right to discuss SPIR-V here
+    //  - this could easily be entirely about scalars, so is overstepping
+    //  - we should be looking at what the shader asked for, and saying whether or
+    //    not it can be done, in the parser, by calling requireExtensions(), not
+    //    changing language sementics on the fly by asking what extensions are in use
+    //  - at the time of this writing (14-Aug-2020), no test results are changed by this.
+    switch (op) {
+    case EOpConstructFloat16:
+        canPromoteConstant = numericFeatures.contains(TNumericFeatures::shader_explicit_arithmetic_types) ||
+                             numericFeatures.contains(TNumericFeatures::shader_explicit_arithmetic_types_float16);
+        break;
+    case EOpConstructInt8:
+    case EOpConstructUint8:
+        canPromoteConstant = numericFeatures.contains(TNumericFeatures::shader_explicit_arithmetic_types) ||
+                             numericFeatures.contains(TNumericFeatures::shader_explicit_arithmetic_types_int8);
+        break;
+    case EOpConstructInt16:
+    case EOpConstructUint16:
+        canPromoteConstant = numericFeatures.contains(TNumericFeatures::shader_explicit_arithmetic_types) ||
+                             numericFeatures.contains(TNumericFeatures::shader_explicit_arithmetic_types_int16);
+        break;
+    default:
+        break;
+    }
+#endif
+
     if (canPromoteConstant && node->getAsConstantUnion())
-        return promoteConstantUnion(promoteTo, node->getAsConstantUnion());
+        return promoteConstantUnion(type.getBasicType(), node->getAsConstantUnion());
 
     //
     // Add a new newNode for the conversion.
     //
-    TIntermTyped* newNode = createConversion(promoteTo, node);
+    TIntermTyped* newNode = createConversion(type.getBasicType(), node);
 
     return newNode;
 }
@@ -1659,64 +1655,45 @@
         }
     }
 
-    bool explicitTypesEnabled = extensionRequested(E_GL_EXT_shader_explicit_arithmetic_types) ||
-                                extensionRequested(E_GL_EXT_shader_explicit_arithmetic_types_int8) ||
-                                extensionRequested(E_GL_EXT_shader_explicit_arithmetic_types_int16) ||
-                                extensionRequested(E_GL_EXT_shader_explicit_arithmetic_types_int32) ||
-                                extensionRequested(E_GL_EXT_shader_explicit_arithmetic_types_int64) ||
-                                extensionRequested(E_GL_EXT_shader_explicit_arithmetic_types_float16) ||
-                                extensionRequested(E_GL_EXT_shader_explicit_arithmetic_types_float32) ||
-                                extensionRequested(E_GL_EXT_shader_explicit_arithmetic_types_float64);
-    
-    if (explicitTypesEnabled) {
-        // integral promotions
-        if (isIntegralPromotion(from, to)) {
+    if (getSource() == EShSourceHlsl) {
+        // HLSL
+        if (from == EbtBool && (to == EbtInt || to == EbtUint || to == EbtFloat))
             return true;
-        }
+    } else {
+        // GLSL
+        if (isIntegralPromotion(from, to) ||
+            isFPPromotion(from, to) ||
+            isIntegralConversion(from, to) ||
+            isFPConversion(from, to) ||
+            isFPIntegralConversion(from, to)) {
 
-        // floating-point promotions
-        if (isFPPromotion(from, to)) {
-            return true;
-        }
-
-        // integral conversions
-        if (isIntegralConversion(from, to)) {
-            return true;
-        }
-
-        // floating-point conversions
-        if (isFPConversion(from, to)) {
-           return true;
-        }
-
-        // floating-integral conversions
-        if (isFPIntegralConversion(from, to)) {
-           return true;
-        }
-
-        // hlsl supported conversions
-        if (getSource() == EShSourceHlsl) {
-            if (from == EbtBool && (to == EbtInt || to == EbtUint || to == EbtFloat))
+            if (numericFeatures.contains(TNumericFeatures::shader_explicit_arithmetic_types) ||
+                numericFeatures.contains(TNumericFeatures::shader_explicit_arithmetic_types_int8) ||
+                numericFeatures.contains(TNumericFeatures::shader_explicit_arithmetic_types_int16) ||
+                numericFeatures.contains(TNumericFeatures::shader_explicit_arithmetic_types_int32) ||
+                numericFeatures.contains(TNumericFeatures::shader_explicit_arithmetic_types_int64) ||
+                numericFeatures.contains(TNumericFeatures::shader_explicit_arithmetic_types_float16) ||
+                numericFeatures.contains(TNumericFeatures::shader_explicit_arithmetic_types_float32) ||
+                numericFeatures.contains(TNumericFeatures::shader_explicit_arithmetic_types_float64)) {
                 return true;
+            }
         }
-    } else if (isEsProfile()) {
+    }
+
+    if (isEsProfile()) {
         switch (to) {
             case EbtFloat:
                 switch (from) {
                 case EbtInt:
                 case EbtUint:
-                    return extensionRequested(E_GL_EXT_shader_implicit_conversions);
-                case EbtFloat:
-                    return true;
+                    return numericFeatures.contains(TNumericFeatures::shader_implicit_conversions);
                 default:
                     return false;
                 }
             case EbtUint:
                 switch (from) {
                 case EbtInt:
-                    return extensionRequested(E_GL_EXT_shader_implicit_conversions);
-                case EbtUint:
-                    return true;
+                    return numericFeatures.contains(TNumericFeatures::shader_implicit_conversions);
                 default:
                     return false;
                 }
@@ -1732,15 +1709,14 @@
             case EbtInt64:
             case EbtUint64:
             case EbtFloat:
-            case EbtDouble:
-                return version >= 400 || extensionRequested(E_GL_ARB_gpu_shader_fp64);
+                return version >= 400 || numericFeatures.contains(TNumericFeatures::gpu_shader_fp64);
             case EbtInt16:
             case EbtUint16:
-                return (version >= 400 || extensionRequested(E_GL_ARB_gpu_shader_fp64)) &&
-                       extensionRequested(E_GL_AMD_gpu_shader_int16);
+                return (version >= 400 || numericFeatures.contains(TNumericFeatures::gpu_shader_fp64)) &&
+                                          numericFeatures.contains(TNumericFeatures::gpu_shader_int16);
             case EbtFloat16:
-                return (version >= 400 || extensionRequested(E_GL_ARB_gpu_shader_fp64)) &&
-                       extensionRequested(E_GL_AMD_gpu_shader_half_float);
+                return (version >= 400 || numericFeatures.contains(TNumericFeatures::gpu_shader_fp64)) &&
+                                          numericFeatures.contains(TNumericFeatures::gpu_shader_half_float);
             default:
                 return false;
            }
@@ -1748,16 +1724,15 @@
             switch (from) {
             case EbtInt:
             case EbtUint:
-            case EbtFloat:
                  return true;
             case EbtBool:
                  return getSource() == EShSourceHlsl;
             case EbtInt16:
             case EbtUint16:
-                return extensionRequested(E_GL_AMD_gpu_shader_int16);
+                return numericFeatures.contains(TNumericFeatures::gpu_shader_int16);
             case EbtFloat16:
-                return 
-                    extensionRequested(E_GL_AMD_gpu_shader_half_float) || getSource() == EShSourceHlsl;
+                return numericFeatures.contains(TNumericFeatures::gpu_shader_half_float) ||
+                    getSource() == EShSourceHlsl;
             default:
                  return false;
             }
@@ -1765,24 +1740,20 @@
             switch (from) {
             case EbtInt:
                 return version >= 400 || getSource() == EShSourceHlsl;
-            case EbtUint:
-                return true;
             case EbtBool:
                 return getSource() == EShSourceHlsl;
             case EbtInt16:
             case EbtUint16:
-                return extensionRequested(E_GL_AMD_gpu_shader_int16);
+                return numericFeatures.contains(TNumericFeatures::gpu_shader_int16);
             default:
                 return false;
             }
         case EbtInt:
             switch (from) {
-            case EbtInt:
-                return true;
             case EbtBool:
                 return getSource() == EShSourceHlsl;
             case EbtInt16:
-                return extensionRequested(E_GL_AMD_gpu_shader_int16);
+                return numericFeatures.contains(TNumericFeatures::gpu_shader_int16);
             default:
                 return false;
             }
@@ -1791,21 +1762,19 @@
             case EbtInt:
             case EbtUint:
             case EbtInt64:
-            case EbtUint64:
                 return true;
             case EbtInt16:
             case EbtUint16:
-                return extensionRequested(E_GL_AMD_gpu_shader_int16);
+                return numericFeatures.contains(TNumericFeatures::gpu_shader_int16);
             default:
                 return false;
             }
         case EbtInt64:
             switch (from) {
             case EbtInt:
-            case EbtInt64:
                 return true;
             case EbtInt16:
-                return extensionRequested(E_GL_AMD_gpu_shader_int16);
+                return numericFeatures.contains(TNumericFeatures::gpu_shader_int16);
             default:
                 return false;
             }
@@ -1813,9 +1782,7 @@
             switch (from) {
             case EbtInt16:
             case EbtUint16:
-                return extensionRequested(E_GL_AMD_gpu_shader_int16);
-            case EbtFloat16:
-                return extensionRequested(E_GL_AMD_gpu_shader_half_float);
+                return numericFeatures.contains(TNumericFeatures::gpu_shader_int16);
             default:
                 break;
             }
@@ -1823,8 +1790,7 @@
         case EbtUint16:
             switch (from) {
             case EbtInt16:
-            case EbtUint16:
-                return extensionRequested(E_GL_AMD_gpu_shader_int16);
+                return numericFeatures.contains(TNumericFeatures::gpu_shader_int16);
             default:
                 break;
             }
@@ -1951,13 +1917,13 @@
 //        integer type corresponding to the type of the operand with signed
 //        integer type.
 
-std::tuple<TBasicType, TBasicType> TIntermediate::getConversionDestinatonType(TBasicType type0, TBasicType type1, TOperator op) const
+std::tuple<TBasicType, TBasicType> TIntermediate::getConversionDestinationType(TBasicType type0, TBasicType type1, TOperator op) const
 {
     TBasicType res0 = EbtNumTypes;
     TBasicType res1 = EbtNumTypes;
 
     if ((isEsProfile() && 
-        (version < 310 || !extensionRequested(E_GL_EXT_shader_implicit_conversions))) || 
+        (version < 310 || !numericFeatures.contains(TNumericFeatures::shader_implicit_conversions))) || 
         version == 110)
         return std::make_tuple(res0, res1);
 
@@ -2332,6 +2298,10 @@
     case EbtReference:
         op = EOpConstructReference;
         break;
+
+    case EbtAccStruct:
+        op = EOpConstructAccStruct;
+        break;
 #endif
     default:
         break;
@@ -2490,7 +2460,7 @@
     //
     // Get compatible types.
     //
-    auto children = addConversion(EOpSequence, trueBlock, falseBlock);
+    auto children = addPairConversion(EOpSequence, trueBlock, falseBlock);
     trueBlock = std::get<0>(children);
     falseBlock = std::get<1>(children);
 
@@ -2900,7 +2870,7 @@
             return;
     }
 
-    callGraph.push_front(TCall(caller, callee));
+    callGraph.emplace_front(caller, callee);
 }
 
 //
@@ -3806,11 +3776,16 @@
 {
      if (getBasicType() == EbtInt || getBasicType() == EbtUint ||
          getBasicType() == EbtFloat || getBasicType() == EbtFloat16) {
-        getQualifier().precision = std::max(right->getQualifier().precision, left->getQualifier().precision);
-        if (getQualifier().precision != EpqNone) {
-            left->propagatePrecision(getQualifier().precision);
-            right->propagatePrecision(getQualifier().precision);
-        }
+       if (op == EOpRightShift || op == EOpLeftShift) {
+         // For shifts get precision from left side only and thus no need to propagate
+         getQualifier().precision = left->getQualifier().precision;
+       } else {
+         getQualifier().precision = std::max(right->getQualifier().precision, left->getQualifier().precision);
+         if (getQualifier().precision != EpqNone) {
+           left->propagatePrecision(getQualifier().precision);
+           right->propagatePrecision(getQualifier().precision);
+         }
+       }
     }
 }
 
diff --git a/glslang/MachineIndependent/ParseContextBase.cpp b/glslang/MachineIndependent/ParseContextBase.cpp
index b464009..02cca40 100644
--- a/glslang/MachineIndependent/ParseContextBase.cpp
+++ b/glslang/MachineIndependent/ParseContextBase.cpp
@@ -127,22 +127,6 @@
 {
     TIntermBinary* binaryNode = node->getAsBinaryNode();
 
-    if (binaryNode) {
-        switch(binaryNode->getOp()) {
-        case EOpIndexDirect:
-        case EOpIndexIndirect:     // fall through
-        case EOpIndexDirectStruct: // fall through
-        case EOpVectorSwizzle:
-        case EOpMatrixSwizzle:
-            return lValueErrorCheck(loc, op, binaryNode->getLeft());
-        default:
-            break;
-        }
-        error(loc, " l-value required", op, "", "");
-
-        return true;
-    }
-
     const char* symbol = nullptr;
     TIntermSymbol* symNode = node->getAsSymbolNode();
     if (symNode != nullptr)
@@ -203,15 +187,40 @@
     // Everything else is okay, no error.
     //
     if (message == nullptr)
+    {
+        if (binaryNode) {
+            switch (binaryNode->getOp()) {
+            case EOpIndexDirect:
+            case EOpIndexIndirect:     // fall through
+            case EOpIndexDirectStruct: // fall through
+            case EOpVectorSwizzle:
+            case EOpMatrixSwizzle:
+                return lValueErrorCheck(loc, op, binaryNode->getLeft());
+            default:
+                break;
+            }
+            error(loc, " l-value required", op, "", "");
+
+            return true;
+        }
         return false;
+    }
 
     //
     // If we get here, we have an error and a message.
     //
+    const TIntermTyped* leftMostTypeNode = TIntermediate::findLValueBase(node, true);
+
     if (symNode)
         error(loc, " l-value required", op, "\"%s\" (%s)", symbol, message);
     else
-        error(loc, " l-value required", op, "(%s)", message);
+        if (binaryNode && binaryNode->getAsOperator()->getOp() == EOpIndexDirectStruct)
+            if(IsAnonymous(leftMostTypeNode->getAsSymbolNode()->getName()))
+                error(loc, " l-value required", op, "\"%s\" (%s)", leftMostTypeNode->getAsSymbolNode()->getAccessName().c_str(), message);
+            else
+                error(loc, " l-value required", op, "\"%s\" (%s)", leftMostTypeNode->getAsSymbolNode()->getName().c_str(), message);
+        else
+            error(loc, " l-value required", op, "(%s)", message);
 
     return true;
 }
@@ -219,28 +228,41 @@
 // Test for and give an error if the node can't be read from.
 void TParseContextBase::rValueErrorCheck(const TSourceLoc& loc, const char* op, TIntermTyped* node)
 {
+    TIntermBinary* binaryNode = node->getAsBinaryNode();
+    const TIntermSymbol* symNode = node->getAsSymbolNode();
+
     if (! node)
         return;
 
-    TIntermBinary* binaryNode = node->getAsBinaryNode();
-    if (binaryNode) {
-        switch(binaryNode->getOp()) {
-        case EOpIndexDirect:
-        case EOpIndexIndirect:
-        case EOpIndexDirectStruct:
-        case EOpVectorSwizzle:
-        case EOpMatrixSwizzle:
-            rValueErrorCheck(loc, op, binaryNode->getLeft());
-        default:
-            break;
+    if (node->getQualifier().isWriteOnly()) {
+        const TIntermTyped* leftMostTypeNode = TIntermediate::findLValueBase(node, true);
+
+        if (symNode != nullptr)
+            error(loc, "can't read from writeonly object: ", op, symNode->getName().c_str());
+        else if (binaryNode &&
+                (binaryNode->getAsOperator()->getOp() == EOpIndexDirectStruct ||
+                 binaryNode->getAsOperator()->getOp() == EOpIndexDirect))
+            if(IsAnonymous(leftMostTypeNode->getAsSymbolNode()->getName()))
+                error(loc, "can't read from writeonly object: ", op, leftMostTypeNode->getAsSymbolNode()->getAccessName().c_str());
+            else
+                error(loc, "can't read from writeonly object: ", op, leftMostTypeNode->getAsSymbolNode()->getName().c_str());
+        else
+            error(loc, "can't read from writeonly object: ", op, "");
+
+    } else {
+        if (binaryNode) {
+            switch (binaryNode->getOp()) {
+            case EOpIndexDirect:
+            case EOpIndexIndirect:
+            case EOpIndexDirectStruct:
+            case EOpVectorSwizzle:
+            case EOpMatrixSwizzle:
+                rValueErrorCheck(loc, op, binaryNode->getLeft());
+            default:
+                break;
+            }
         }
-
-        return;
     }
-
-    TIntermSymbol* symNode = node->getAsSymbolNode();
-    if (symNode && symNode->getQualifier().isWriteOnly())
-        error(loc, "can't read from writeonly object: ", op, symNode->getName().c_str());
 }
 
 // Add 'symbol' to the list of deferred linkage symbols, which
@@ -579,7 +601,6 @@
         selector.push_back(0);
 }
 
-#ifdef ENABLE_HLSL
 //
 // Make the passed-in variable information become a member of the
 // global uniform block.  If this doesn't exist yet, make it.
@@ -624,7 +645,67 @@
 
     ++firstNewMember;
 }
-#endif
+
+void TParseContextBase::growAtomicCounterBlock(int binding, const TSourceLoc& loc, TType& memberType, const TString& memberName, TTypeList* typeList) {
+    // Make the atomic counter block, if not yet made.
+    const auto &at  = atomicCounterBuffers.find(binding);
+    if (at == atomicCounterBuffers.end()) {
+        atomicCounterBuffers.insert({binding, (TVariable*)nullptr });
+        atomicCounterBlockFirstNewMember.insert({binding, 0});
+    }
+
+    TVariable*& atomicCounterBuffer = atomicCounterBuffers[binding];
+    int& bufferNewMember = atomicCounterBlockFirstNewMember[binding];
+
+    if (atomicCounterBuffer == nullptr) {
+        TQualifier blockQualifier;
+        blockQualifier.clear();
+        blockQualifier.storage = EvqBuffer;
+        
+        char charBuffer[512];
+        if (binding != TQualifier::layoutBindingEnd) {
+            snprintf(charBuffer, 512, "%s_%d", getAtomicCounterBlockName(), binding);
+        } else {
+            snprintf(charBuffer, 512, "%s_0", getAtomicCounterBlockName());
+        }
+        
+        TType blockType(new TTypeList, *NewPoolTString(charBuffer), blockQualifier);
+        setUniformBlockDefaults(blockType);
+        blockType.getQualifier().layoutPacking = ElpStd430;
+        atomicCounterBuffer = new TVariable(NewPoolTString(""), blockType, true);
+        // If we arn't auto mapping bindings then set the block to use the same
+        // binding as what the atomic was set to use
+        if (!intermediate.getAutoMapBindings()) {
+            atomicCounterBuffer->getWritableType().getQualifier().layoutBinding = binding;
+        }
+        bufferNewMember = 0;
+
+        atomicCounterBuffer->getWritableType().getQualifier().layoutSet = atomicCounterBlockSet;
+    }
+
+    // Add the requested member as a member to the global block.
+    TType* type = new TType;
+    type->shallowCopy(memberType);
+    type->setFieldName(memberName);
+    if (typeList)
+        type->setStruct(typeList);
+    TTypeLoc typeLoc = {type, loc};
+    atomicCounterBuffer->getType().getWritableStruct()->push_back(typeLoc);
+
+    // Insert into the symbol table.
+    if (bufferNewMember == 0) {
+        // This is the first request; we need a normal symbol table insert
+        if (symbolTable.insert(*atomicCounterBuffer))
+            trackLinkage(*atomicCounterBuffer);
+        else
+            error(loc, "failed to insert the global constant buffer", "buffer", "");
+    } else {
+        // This is a follow-on request; we need to amend the first insert
+        symbolTable.amend(*atomicCounterBuffer, bufferNewMember);
+    }
+
+    ++bufferNewMember;
+}
 
 void TParseContextBase::finish()
 {
diff --git a/glslang/MachineIndependent/ParseHelper.cpp b/glslang/MachineIndependent/ParseHelper.cpp
index c2e7021..bc2a38a 100644
--- a/glslang/MachineIndependent/ParseHelper.cpp
+++ b/glslang/MachineIndependent/ParseHelper.cpp
@@ -87,6 +87,10 @@
     globalInputDefaults.clear();
     globalOutputDefaults.clear();
 
+    globalSharedDefaults.clear();
+    globalSharedDefaults.layoutMatrix = ElmColumnMajor;
+    globalSharedDefaults.layoutPacking = ElpStd430;
+
 #ifndef GLSLANG_WEB
     // "Shaders in the transform
     // feedback capturing mode have an initial global default of
@@ -221,6 +225,108 @@
         error(getCurrentLoc(), "compilation terminated", "", "");
 }
 
+void TParseContext::growGlobalUniformBlock(const TSourceLoc& loc, TType& memberType, const TString& memberName, TTypeList* typeList)
+{
+    bool createBlock = globalUniformBlock == nullptr;
+
+    if (createBlock) {
+        globalUniformBinding = intermediate.getGlobalUniformBinding();
+        globalUniformSet = intermediate.getGlobalUniformSet();
+    }
+
+    // use base class function to create/expand block
+    TParseContextBase::growGlobalUniformBlock(loc, memberType, memberName, typeList);
+
+    if (spvVersion.vulkan > 0 && spvVersion.vulkanRelaxed) {
+        // check for a block storage override
+        TBlockStorageClass storageOverride = intermediate.getBlockStorageOverride(getGlobalUniformBlockName());
+        TQualifier& qualifier = globalUniformBlock->getWritableType().getQualifier();
+        qualifier.defaultBlock = true;
+
+        if (storageOverride != EbsNone) {
+            if (createBlock) {
+                // Remap block storage
+                qualifier.setBlockStorage(storageOverride);
+
+                // check that the change didn't create errors
+                blockQualifierCheck(loc, qualifier, false);
+            }
+
+            // remap meber storage as well
+            memberType.getQualifier().setBlockStorage(storageOverride);
+        }
+    }
+}
+
+void TParseContext::growAtomicCounterBlock(int binding, const TSourceLoc& loc, TType& memberType, const TString& memberName, TTypeList* typeList)
+{
+    bool createBlock = atomicCounterBuffers.find(binding) == atomicCounterBuffers.end();
+
+    if (createBlock) {
+        atomicCounterBlockSet = intermediate.getAtomicCounterBlockSet();
+    }
+
+    // use base class function to create/expand block
+    TParseContextBase::growAtomicCounterBlock(binding, loc, memberType, memberName, typeList);
+    TQualifier& qualifier = atomicCounterBuffers[binding]->getWritableType().getQualifier();
+    qualifier.defaultBlock = true;
+
+    if (spvVersion.vulkan > 0 && spvVersion.vulkanRelaxed) {
+        // check for a Block storage override
+        TBlockStorageClass storageOverride = intermediate.getBlockStorageOverride(getAtomicCounterBlockName());
+
+        if (storageOverride != EbsNone) {
+            if (createBlock) {
+                // Remap block storage
+
+                qualifier.setBlockStorage(storageOverride);
+
+                // check that the change didn't create errors
+                blockQualifierCheck(loc, qualifier, false);
+            }
+
+            // remap meber storage as well
+            memberType.getQualifier().setBlockStorage(storageOverride);
+        }
+    }
+}
+
+const char* TParseContext::getGlobalUniformBlockName() const
+{
+    const char* name = intermediate.getGlobalUniformBlockName();
+    if (std::string(name) == "")
+        return "gl_DefaultUniformBlock";
+    else
+        return name;
+}
+void TParseContext::finalizeGlobalUniformBlockLayout(TVariable&)
+{
+}
+void TParseContext::setUniformBlockDefaults(TType& block) const
+{
+    block.getQualifier().layoutPacking = ElpStd140;
+    block.getQualifier().layoutMatrix = ElmColumnMajor;
+}
+
+
+const char* TParseContext::getAtomicCounterBlockName() const
+{
+    const char* name = intermediate.getAtomicCounterBlockName();
+    if (std::string(name) == "")
+        return "gl_AtomicCounterBlock";
+    else
+        return name;
+}
+void TParseContext::finalizeAtomicCounterBlockLayout(TVariable&)
+{
+}
+
+void TParseContext::setAtomicCounterBlockDefaults(TType& block) const
+{
+    block.getQualifier().layoutPacking = ElpStd430;
+    block.getQualifier().layoutMatrix = ElmRowMajor;
+}
+
 void TParseContext::handlePragma(const TSourceLoc& loc, const TVector<TString>& tokens)
 {
 #ifndef GLSLANG_WEB
@@ -246,7 +352,9 @@
         else if (tokens[2].compare("off") == 0)
             contextPragma.optimize = false;
         else {
-            error(loc, "\"on\" or \"off\" expected after '(' for 'optimize' pragma", "#pragma", "");
+            if(relaxedErrors())
+                //  If an implementation does not recognize the tokens following #pragma, then it will ignore that pragma.
+                warn(loc, "\"on\" or \"off\" expected after '(' for 'optimize' pragma", "#pragma", "");
             return;
         }
 
@@ -270,7 +378,9 @@
         else if (tokens[2].compare("off") == 0)
             contextPragma.debug = false;
         else {
-            error(loc, "\"on\" or \"off\" expected after '(' for 'debug' pragma", "#pragma", "");
+            if(relaxedErrors())
+                //  If an implementation does not recognize the tokens following #pragma, then it will ignore that pragma.
+                warn(loc, "\"on\" or \"off\" expected after '(' for 'debug' pragma", "#pragma", "");
             return;
         }
 
@@ -751,8 +861,11 @@
     }
 
     TIntermTyped* result = nullptr;
-    if (allowed)
+    if (allowed) {
+        if ((left->isReference() || right->isReference()))
+            requireExtensions(loc, 1, &E_GL_EXT_buffer_reference2, "buffer reference math");
         result = intermediate.addBinaryMath(op, left, right, loc);
+    }
 
     if (result == nullptr)
         binaryOpError(loc, str, left->getCompleteString(), right->getCompleteString());
@@ -1124,6 +1237,14 @@
 {
     TIntermTyped* result = nullptr;
 
+    if (spvVersion.vulkan != 0 && spvVersion.vulkanRelaxed) {
+        // allow calls that are invalid in Vulkan Semantics to be invisibily
+        // remapped to equivalent valid functions
+        result = vkRelaxedRemapFunctionCall(loc, function, arguments);
+        if (result)
+            return result;
+    }
+
     if (function->getBuiltInOp() == EOpArrayLength)
         result = handleLengthMethod(loc, function, arguments);
     else if (function->getBuiltInOp() != EOpNull) {
@@ -1680,6 +1801,14 @@
 #endif
 }
 
+TIntermTyped* TParseContext::addAssign(const TSourceLoc& loc, TOperator op, TIntermTyped* left, TIntermTyped* right)
+{
+    if ((op == EOpAddAssign || op == EOpSubAssign) && left->isReference())
+        requireExtensions(loc, 1, &E_GL_EXT_buffer_reference2, "+= and -= on a buffer reference");
+
+    return intermediate.addAssign(op, left, right, loc);
+}
+
 void TParseContext::memorySemanticsCheck(const TSourceLoc& loc, const TFunction& fnCandidate, const TIntermOperator& callNode)
 {
     const TIntermSequence* argp = &callNode.getAsAggregate()->getSequence();
@@ -1708,6 +1837,7 @@
     // Grab the semantics and storage class semantics from the operands, based on opcode
     switch (callNode.getOp()) {
     case EOpAtomicAdd:
+    case EOpAtomicSubtract:
     case EOpAtomicMin:
     case EOpAtomicMax:
     case EOpAtomicAnd:
@@ -1966,7 +2096,13 @@
             profileRequires(loc, ~EEsProfile, 450, nullptr, feature);
             requireExtensions(loc, 1, &E_GL_AMD_texture_gather_bias_lod, feature);
         }
-
+        // As per GL_ARB_sparse_texture2 extension "Offsets" parameter must be constant integral expression
+        // for sparseTextureGatherOffsetsARB just as textureGatherOffsets
+        if (callNode.getOp() == EOpSparseTextureGatherOffsets) {
+            int offsetsArg = arg0->getType().getSampler().shadow ? 3 : 2;
+            if (!(*argp)[offsetsArg]->getAsConstantUnion())
+                error(loc, "argument must be compile-time constant", "offsets", "");
+        }
         break;
     }
 
@@ -2061,14 +2197,32 @@
     }
 
 #ifndef GLSLANG_WEB
-    case EOpTrace:
+    case EOpTraceNV:
         if (!(*argp)[10]->getAsConstantUnion())
-            error(loc, "argument must be compile-time constant", "payload number", "");
+            error(loc, "argument must be compile-time constant", "payload number", "a");
         break;
-    case EOpExecuteCallable:
+    case EOpTraceKHR:
+        if (!(*argp)[10]->getAsConstantUnion())
+            error(loc, "argument must be compile-time constant", "payload number", "a");
+        else {
+            unsigned int location = (*argp)[10]->getAsConstantUnion()->getAsConstantUnion()->getConstArray()[0].getUConst();
+            if (intermediate.checkLocationRT(0, location) < 0)
+                error(loc, "with layout(location =", "no rayPayloadEXT/rayPayloadInEXT declared", "%d)", location);
+        }
+        break;
+    case EOpExecuteCallableNV:
         if (!(*argp)[1]->getAsConstantUnion())
             error(loc, "argument must be compile-time constant", "callable data number", "");
         break;
+    case EOpExecuteCallableKHR:
+        if (!(*argp)[1]->getAsConstantUnion())
+            error(loc, "argument must be compile-time constant", "callable data number", "");
+        else {
+            unsigned int location = (*argp)[1]->getAsConstantUnion()->getAsConstantUnion()->getConstArray()[0].getUConst();
+            if (intermediate.checkLocationRT(1, location) < 0)
+                error(loc, "with layout(location =", "no callableDataEXT/callableDataInEXT declared", "%d)", location);
+        }
+        break;
 
     case EOpRayQueryGetIntersectionType:
     case EOpRayQueryGetIntersectionT:
@@ -2106,9 +2260,15 @@
     {
         // Make sure the image types have the correct layout() format and correct argument types
         const TType& imageType = arg0->getType();
-        if (imageType.getSampler().type == EbtInt || imageType.getSampler().type == EbtUint) {
-            if (imageType.getQualifier().getFormat() != ElfR32i && imageType.getQualifier().getFormat() != ElfR32ui)
+        if (imageType.getSampler().type == EbtInt || imageType.getSampler().type == EbtUint ||
+            imageType.getSampler().type == EbtInt64 || imageType.getSampler().type == EbtUint64) {
+            if (imageType.getQualifier().getFormat() != ElfR32i && imageType.getQualifier().getFormat() != ElfR32ui &&
+                imageType.getQualifier().getFormat() != ElfR64i && imageType.getQualifier().getFormat() != ElfR64ui)
                 error(loc, "only supported on image with format r32i or r32ui", fnCandidate.getName().c_str(), "");
+            if (callNode.getType().getBasicType() == EbtInt64 && imageType.getQualifier().getFormat() != ElfR64i)
+                error(loc, "only supported on image with format r64i", fnCandidate.getName().c_str(), "");
+            else if (callNode.getType().getBasicType() == EbtUint64 && imageType.getQualifier().getFormat() != ElfR64ui)
+                error(loc, "only supported on image with format r64ui", fnCandidate.getName().c_str(), "");
         } else {
             bool isImageAtomicOnFloatAllowed = ((fnCandidate.getName().compare(0, 14, "imageAtomicAdd") == 0) ||
                 (fnCandidate.getName().compare(0, 15, "imageAtomicLoad") == 0) ||
@@ -2133,6 +2293,7 @@
     }
 
     case EOpAtomicAdd:
+    case EOpAtomicSubtract:
     case EOpAtomicMin:
     case EOpAtomicMax:
     case EOpAtomicAnd:
@@ -2713,6 +2874,11 @@
     if (!(symNode && symNode->getQualifier().isWriteOnly())) // base class checks
         if (symNode && symNode->getQualifier().isExplicitInterpolation())
             error(loc, "can't read from explicitly-interpolated object: ", op, symNode->getName().c_str());
+
+    // local_size_{xyz} must be assigned or specialized before gl_WorkGroupSize can be assigned. 
+    if(node->getQualifier().builtIn == EbvWorkGroupSize &&
+       !(intermediate.isLocalSizeSet() || intermediate.isLocalSizeSpecialized()))
+        error(loc, "can't read from gl_WorkGroupSize before a fixed workgroup size has been declared", op, "");
 }
 
 //
@@ -2787,7 +2953,10 @@
     if (strncmp(identifier, "GL_", 3) == 0)
         ppError(loc, "names beginning with \"GL_\" can't be (un)defined:", op,  identifier);
     else if (strncmp(identifier, "defined", 8) == 0)
-        ppError(loc, "\"defined\" can't be (un)defined:", op,  identifier);
+        if (relaxedErrors())
+            ppWarn(loc, "\"defined\" is (un)defined:", op,  identifier);
+        else
+            ppError(loc, "\"defined\" can't be (un)defined:", op,  identifier);
     else if (strstr(identifier, "__") != 0) {
         if (isEsProfile() && version >= 300 &&
             (strcmp(identifier, "__LINE__") == 0 ||
@@ -2795,7 +2964,7 @@
              strcmp(identifier, "__VERSION__") == 0))
             ppError(loc, "predefined names can't be (un)defined:", op,  identifier);
         else {
-            if (isEsProfile() && version < 300)
+            if (isEsProfile() && version < 300 && !relaxedErrors())
                 ppError(loc, "names containing consecutive underscores are reserved, and an error if version < 300:", op, identifier);
             else
                 ppWarn(loc, "names containing consecutive underscores are reserved:", op, identifier);
@@ -3337,7 +3506,7 @@
 
     if (type.containsNonOpaque()) {
         // Vulkan doesn't allow transparent uniforms outside of blocks
-        if (spvVersion.vulkan > 0)
+        if (spvVersion.vulkan > 0 && !spvVersion.vulkanRelaxed)
             vulkanRemoved(loc, "non-opaque uniforms outside a block");
         // OpenGL wants locations on these (unless they are getting automapped)
         if (spvVersion.openGl > 0 && !type.getQualifier().hasLocation() && !intermediate.getAutoMapLocations())
@@ -3350,7 +3519,7 @@
 //
 void TParseContext::memberQualifierCheck(glslang::TPublicType& publicType)
 {
-    globalQualifierFixCheck(publicType.loc, publicType.qualifier);
+    globalQualifierFixCheck(publicType.loc, publicType.qualifier, true);
     checkNoShaderLayouts(publicType.loc, publicType.shaderQualifiers);
     if (publicType.qualifier.isNonUniform()) {
         error(publicType.loc, "not allowed on block or structure members", "nonuniformEXT", "");
@@ -3361,7 +3530,7 @@
 //
 // Check/fix just a full qualifier (no variables or types yet, but qualifier is complete) at global level.
 //
-void TParseContext::globalQualifierFixCheck(const TSourceLoc& loc, TQualifier& qualifier)
+void TParseContext::globalQualifierFixCheck(const TSourceLoc& loc, TQualifier& qualifier, bool isMemberCheck)
 {
     bool nonuniformOkay = false;
 
@@ -3386,6 +3555,16 @@
     case EvqTemporary:
         nonuniformOkay = true;
         break;
+    case EvqUniform:
+        // According to GLSL spec: The std430 qualifier is supported only for shader storage blocks; a shader using
+        // the std430 qualifier on a uniform block will fail to compile.
+        // Only check the global declaration: layout(std430) uniform;
+        if (blockName == nullptr &&
+            qualifier.layoutPacking == ElpStd430)
+        {
+            error(loc, "it is invalid to declare std430 qualifier on uniform", "", "");
+        }
+        break;
     default:
         break;
     }
@@ -3393,7 +3572,9 @@
     if (!nonuniformOkay && qualifier.isNonUniform())
         error(loc, "for non-parameter, can only apply to 'in' or no storage qualifier", "nonuniformEXT", "");
 
-    invariantCheck(loc, qualifier);
+    // Storage qualifier isn't ready for memberQualifierCheck, we should skip invariantCheck for it.
+    if (!isMemberCheck || structNestingLevel > 0)
+        invariantCheck(loc, qualifier);
 }
 
 //
@@ -3404,7 +3585,7 @@
     if (! symbolTable.atGlobalLevel())
         return;
 
-    if (!(publicType.userDef && publicType.userDef->isReference())) {
+    if (!(publicType.userDef && publicType.userDef->isReference()) && !parsingBuiltins) {
         if (qualifier.isMemoryQualifierImageAndSSBOOnly() && ! publicType.isImage() && publicType.qualifier.storage != EvqBuffer) {
             error(loc, "memory qualifiers cannot be used on this type", "", "");
         } else if (qualifier.isMemory() && (publicType.basicType != EbtSampler) && !publicType.qualifier.isUniformOrBuffer()) {
@@ -4065,6 +4246,9 @@
     if (isRuntimeLength(base))
         return;
 
+    if (base.getType().getQualifier().builtIn == EbvSampleMask)
+        return;
+
     // Check for last member of a bufferreference type, which is runtime sizeable
     // but doesn't support runtime length
     if (base.getType().getQualifier().storage == EvqBuffer) {
@@ -4208,6 +4392,8 @@
         (identifier == "gl_FragCoord"           && ((nonEsRedecls && version >= 150) || esRedecls)) ||
          identifier == "gl_ClipDistance"                                                            ||
          identifier == "gl_CullDistance"                                                            ||
+         identifier == "gl_ShadingRateEXT"                                                          ||
+         identifier == "gl_PrimitiveShadingRateEXT"                                                 ||
          identifier == "gl_FrontColor"                                                              ||
          identifier == "gl_BackColor"                                                               ||
          identifier == "gl_FrontSecondaryColor"                                                     ||
@@ -4233,8 +4419,10 @@
         // If it wasn't at a built-in level, then it's already been redeclared;
         // that is, this is a redeclaration of a redeclaration; reuse that initial
         // redeclaration.  Otherwise, make the new one.
-        if (builtIn)
+        if (builtIn) {
             makeEditable(symbol);
+            symbolTable.amendSymbolIdLevel(*symbol);
+        }
 
         // Now, modify the type of the copy, as per the type of the current redeclaration.
 
@@ -4614,14 +4802,14 @@
 
 void TParseContext::nestedBlockCheck(const TSourceLoc& loc)
 {
-    if (structNestingLevel > 0)
+    if (structNestingLevel > 0 || blockNestingLevel > 0)
         error(loc, "cannot nest a block definition inside a structure or block", "", "");
-    ++structNestingLevel;
+    ++blockNestingLevel;
 }
 
 void TParseContext::nestedStructCheck(const TSourceLoc& loc)
 {
-    if (structNestingLevel > 0)
+    if (structNestingLevel > 0 || blockNestingLevel > 0)
         error(loc, "cannot nest a structure definition inside a structure or block", "", "");
     ++structNestingLevel;
 }
@@ -4763,7 +4951,7 @@
     }
 
     // get the unique id of the loop index
-    int loopIndex = binaryInit->getLeft()->getAsSymbolNode()->getId();
+    long long loopIndex = binaryInit->getLeft()->getAsSymbolNode()->getId();
     inductiveLoopIds.insert(loopIndex);
 
     // condition's form must be "loop-index relational-operator constant-expression"
@@ -4949,14 +5137,22 @@
         return;
     }
     if (id == TQualifier::getLayoutPackingString(ElpPacked)) {
-        if (spvVersion.spv != 0)
-            spvRemoved(loc, "packed");
+        if (spvVersion.spv != 0) {
+            if (spvVersion.vulkanRelaxed)
+                return; // silently ignore qualifier
+            else
+                spvRemoved(loc, "packed");
+        }
         publicType.qualifier.layoutPacking = ElpPacked;
         return;
     }
     if (id == TQualifier::getLayoutPackingString(ElpShared)) {
-        if (spvVersion.spv != 0)
-            spvRemoved(loc, "shared");
+        if (spvVersion.spv != 0) {
+            if (spvVersion.vulkanRelaxed)
+                return; // silently ignore qualifier
+            else
+                spvRemoved(loc, "shared");
+        }
         publicType.qualifier.layoutPacking = ElpShared;
         return;
     }
@@ -5406,7 +5602,14 @@
         if (! IsPow2(value))
             error(loc, "must be a power of 2", "buffer_reference_align", "");
         else
+#ifdef __ANDROID__
+            // Android NDK r15c tageting ABI 15 doesn't have full support for C++11
+            // (no std::exp2/log2). ::exp2 is available from C99 but ::log2 isn't
+            // available up until ABI 18 so we use the mathematical equivalent form
+            publicType.qualifier.layoutBufferReferenceAlign = (unsigned int)(std::log(value) / std::log(2.0));
+#else
             publicType.qualifier.layoutBufferReferenceAlign = (unsigned int)std::log2(value);
+#endif
         if (nonLiteral)
             error(loc, "needs a literal integer", "buffer_reference_align", "");
         return;
@@ -5697,6 +5900,8 @@
                     error(loc, "can only specify on a uniform block", "push_constant", "");
                 if (qualifier.isShaderRecord())
                     error(loc, "can only specify on a buffer block", "shaderRecordNV", "");
+                if (qualifier.hasLocation() && type.isAtomic())
+                    error(loc, "cannot specify on atomic counter", "location", "");
             }
             break;
         default:
@@ -5834,16 +6039,12 @@
         if (type.getBasicType() == EbtSampler) {
             int lastBinding = qualifier.layoutBinding;
             if (type.isArray()) {
-                if (spvVersion.vulkan > 0)
-                    lastBinding += 1;
-                else {
+                if (spvVersion.vulkan == 0) {
                     if (type.isSizedArray())
-                        lastBinding += type.getCumulativeArraySize();
+                        lastBinding += (type.getCumulativeArraySize() - 1);
                     else {
-                        lastBinding += 1;
 #ifndef GLSLANG_WEB
-                        if (spvVersion.vulkan == 0)
-                            warn(loc, "assuming binding count of one for compile-time checking of binding numbers for unsized array", "[]", "");
+                        warn(loc, "assuming binding count of one for compile-time checking of binding numbers for unsized array", "[]", "");
 #endif
                     }
                 }
@@ -5853,7 +6054,7 @@
                 error(loc, "sampler binding not less than gl_MaxCombinedTextureImageUnits", "binding", type.isArray() ? "(using array)" : "");
 #endif
         }
-        if (type.isAtomic()) {
+        if (type.isAtomic() && !spvVersion.vulkanRelaxed) {
             if (qualifier.layoutBinding >= (unsigned int)resources.maxAtomicCounterBindings) {
                 error(loc, "atomic_uint binding is too large; see gl_MaxAtomicCounterBindings", "binding", "");
                 return;
@@ -5967,12 +6168,28 @@
     }
 }
 
+static bool storageCanHaveLayoutInBlock(const enum TStorageQualifier storage)
+{
+    switch (storage) {
+    case EvqUniform:
+    case EvqBuffer:
+    case EvqShared:
+        return true;
+    default:
+        return false;
+    }
+}
+
 // Do layout error checking that can be done within a layout qualifier proper, not needing to know
 // if there are blocks, atomic counters, variables, etc.
 void TParseContext::layoutQualifierCheck(const TSourceLoc& loc, const TQualifier& qualifier)
 {
-    if (qualifier.storage == EvqShared && qualifier.hasLayout())
-        error(loc, "cannot apply layout qualifiers to a shared variable", "shared", "");
+    if (qualifier.storage == EvqShared && qualifier.hasLayout()) {
+        if (spvVersion.spv > 0 && spvVersion.spv < EShTargetSpv_1_4) {
+            error(loc, "shared block requires at least SPIR-V 1.4", "shared block", "");
+        }
+        profileRequires(loc, EEsProfile | ECoreProfile | ECompatibilityProfile, 0, E_GL_EXT_shared_memory_block, "shared block");
+    }
 
     // "It is a compile-time error to use *component* without also specifying the location qualifier (order does not matter)."
     if (qualifier.hasComponent() && ! qualifier.hasLocation())
@@ -6055,7 +6272,7 @@
             error(loc, "can only be used on an output", "xfb layout qualifier", "");
     }
     if (qualifier.hasUniformLayout()) {
-        if (! qualifier.isUniformOrBuffer() && !qualifier.isTaskMemory()) {
+        if (!storageCanHaveLayoutInBlock(qualifier.storage) && !qualifier.isTaskMemory()) {
             if (qualifier.hasMatrix() || qualifier.hasPacking())
                 error(loc, "matrix or packing qualifiers can only be used on a uniform or buffer", "layout", "");
             if (qualifier.hasOffset() || qualifier.hasAlign())
@@ -6507,6 +6724,68 @@
     return bestMatch;
 }
 
+//
+// Adjust function calls that aren't declared in Vulkan to a
+// calls with equivalent effects
+//
+TIntermTyped* TParseContext::vkRelaxedRemapFunctionCall(const TSourceLoc& loc, TFunction* function, TIntermNode* arguments)
+{
+    TIntermTyped* result = nullptr;
+
+#ifndef GLSLANG_WEB
+    if (function->getBuiltInOp() != EOpNull) {
+        return nullptr;
+    }
+
+    if (function->getName() == "atomicCounterIncrement") {
+        // change atomicCounterIncrement into an atomicAdd of 1
+        TString name("atomicAdd");
+        TType uintType(EbtUint);
+
+        TFunction realFunc(&name, function->getType());
+
+        for (int i = 0; i < function->getParamCount(); ++i) {
+            realFunc.addParameter((*function)[i]);
+        }
+
+        TParameter tmpP = { 0, &uintType };
+        realFunc.addParameter(tmpP);
+        arguments = intermediate.growAggregate(arguments, intermediate.addConstantUnion(1, loc, true));
+
+        result = handleFunctionCall(loc, &realFunc, arguments);
+    } else if (function->getName() == "atomicCounterDecrement") {
+        // change atomicCounterDecrement into an atomicAdd with -1
+        // and subtract 1 from result, to return post-decrement value
+        TString name("atomicAdd");
+        TType uintType(EbtUint);
+
+        TFunction realFunc(&name, function->getType());
+
+        for (int i = 0; i < function->getParamCount(); ++i) {
+            realFunc.addParameter((*function)[i]);
+        }
+
+        TParameter tmpP = { 0, &uintType };
+        realFunc.addParameter(tmpP);
+        arguments = intermediate.growAggregate(arguments, intermediate.addConstantUnion(-1, loc, true));
+
+        result = handleFunctionCall(loc, &realFunc, arguments);
+
+        // post decrement, so that it matches AtomicCounterDecrement semantics
+        if (result) {
+            result = handleBinaryMath(loc, "-", EOpSub, result, intermediate.addConstantUnion(1, loc, true));
+        }
+    } else if (function->getName() == "atomicCounter") {
+        // change atomicCounter into a direct read of the variable
+        if (arguments->getAsTyped()) {
+            result = arguments->getAsTyped();
+        }
+    }
+#endif
+
+    return result;
+}
+
 // When a declaration includes a type, but not a variable name, it can be used
 // to establish defaults.
 void TParseContext::declareTypeDefaults(const TSourceLoc& loc, const TPublicType& publicType)
@@ -6517,18 +6796,105 @@
             error(loc, "atomic_uint binding is too large", "binding", "");
             return;
         }
-
-        if(publicType.qualifier.hasOffset()) {
+        if (publicType.qualifier.hasOffset())
             atomicUintOffsets[publicType.qualifier.layoutBinding] = publicType.qualifier.layoutOffset;
-        }
         return;
     }
 
+    if (publicType.arraySizes) {
+        error(loc, "expect an array name", "", "");
+    }
+
     if (publicType.qualifier.hasLayout() && !publicType.qualifier.hasBufferReference())
         warn(loc, "useless application of layout qualifier", "layout", "");
 #endif
 }
 
+bool TParseContext::vkRelaxedRemapUniformVariable(const TSourceLoc& loc, TString& identifier, const TPublicType&,
+    TArraySizes*, TIntermTyped* initializer, TType& type)
+{
+    if (parsingBuiltins || symbolTable.atBuiltInLevel() || !symbolTable.atGlobalLevel() ||
+        type.getQualifier().storage != EvqUniform ||
+        !(type.containsNonOpaque()
+#ifndef GLSLANG_WEB
+            || type.getBasicType() == EbtAtomicUint
+#endif
+        )) {
+        return false;
+    }
+
+    if (type.getQualifier().hasLocation()) {
+        warn(loc, "ignoring layout qualifier for uniform", identifier.c_str(), "location");
+        type.getQualifier().layoutLocation = TQualifier::layoutLocationEnd;
+    }
+
+    if (initializer) {
+        warn(loc, "Ignoring initializer for uniform", identifier.c_str(), "");
+        initializer = nullptr;
+    }
+
+    if (type.isArray()) {
+        // do array size checks here
+        arraySizesCheck(loc, type.getQualifier(), type.getArraySizes(), initializer, false);
+
+        if (arrayQualifierError(loc, type.getQualifier()) || arrayError(loc, type)) {
+            error(loc, "array param error", identifier.c_str(), "");
+        }
+    }
+
+    // do some checking on the type as it was declared
+    layoutTypeCheck(loc, type);
+
+    int bufferBinding = TQualifier::layoutBindingEnd;
+    TVariable* updatedBlock = nullptr;
+
+#ifndef GLSLANG_WEB
+    // Convert atomic_uint into members of a buffer block
+    if (type.isAtomic()) {
+        type.setBasicType(EbtUint);
+        type.getQualifier().storage = EvqBuffer;
+
+        type.getQualifier().volatil = true;
+        type.getQualifier().coherent = true;
+
+        // xxTODO: use logic from fixOffset() to apply explicit member offset
+        bufferBinding = type.getQualifier().layoutBinding;
+        type.getQualifier().layoutBinding = TQualifier::layoutBindingEnd;
+        type.getQualifier().explicitOffset = false;
+        growAtomicCounterBlock(bufferBinding, loc, type, identifier, nullptr);
+        updatedBlock = atomicCounterBuffers[bufferBinding];
+    }
+#endif
+
+    if (!updatedBlock) {
+        growGlobalUniformBlock(loc, type, identifier, nullptr);
+        updatedBlock = globalUniformBlock;
+    }
+
+    //
+    //      don't assign explicit member offsets here
+    //      if any are assigned, need to be updated here and in the merge/link step
+    // fixBlockUniformOffsets(updatedBlock->getWritableType().getQualifier(), *updatedBlock->getWritableType().getWritableStruct());
+
+    // checks on update buffer object
+    layoutObjectCheck(loc, *updatedBlock);
+
+    TSymbol* symbol = symbolTable.find(identifier);
+
+    if (!symbol) {
+        if (updatedBlock == globalUniformBlock)
+            error(loc, "error adding uniform to default uniform block", identifier.c_str(), "");
+        else
+            error(loc, "error adding atomic counter to atomic counter block", identifier.c_str(), "");
+        return false;
+    }
+
+    // merge qualifiers
+    mergeObjectLayoutQualifiers(updatedBlock->getWritableType().getQualifier(), type.getQualifier(), true);
+
+    return true;
+}
+
 //
 // Do everything necessary to handle a variable (non-block) declaration.
 // Either redeclaring a variable, or making a new one, updating the symbol
@@ -6550,6 +6916,12 @@
     type.copyArrayInnerSizes(publicType.arraySizes);
     arrayOfArrayVersionCheck(loc, type.getArraySizes());
 
+    if (initializer) {
+        if (type.getBasicType() == EbtRayQuery) {
+            error(loc, "ray queries can only be initialized by using the rayQueryInitializeEXT intrinsic:", "=", identifier.c_str());
+        }
+    }
+
     if (type.isCoopMat()) {
         intermediate.setUseVulkanMemoryModel();
         intermediate.setUseStorageBuffer();
@@ -6608,6 +6980,22 @@
     if (type.getQualifier().storage == EvqShared && type.containsCoopMat())
         error(loc, "qualifier", "Cooperative matrix types must not be used in shared memory", "");
 
+    if (profile == EEsProfile) {
+        if (type.getQualifier().isPipeInput() && type.getBasicType() == EbtStruct) {
+            if (type.getQualifier().isArrayedIo(language)) {
+                TType perVertexType(type, 0);
+                if (perVertexType.containsArray() && perVertexType.containsBuiltIn() == false) {
+                    error(loc, "A per vertex structure containing an array is not allowed as input in ES", type.getTypeName().c_str(), "");
+                }
+            }
+            else if (type.containsArray() && type.containsBuiltIn() == false) {
+                error(loc, "A structure containing an array is not allowed as input in ES", type.getTypeName().c_str(), "");
+            }
+            if (type.containsStructure())
+                error(loc, "A structure containing an struct is not allowed as input in ES", type.getTypeName().c_str(), "");
+        }
+    }
+
     if (identifier != "gl_FragCoord" && (publicType.shaderQualifiers.originUpperLeft || publicType.shaderQualifiers.pixelCenterInteger))
         error(loc, "can only apply origin_upper_left and pixel_center_origin to gl_FragCoord", "layout qualifier", "");
     if (identifier != "gl_FragDepth" && publicType.shaderQualifiers.getDepth() != EldNone)
@@ -6618,6 +7006,14 @@
     if (symbol == nullptr)
         reservedErrorCheck(loc, identifier);
 
+    if (symbol == nullptr && spvVersion.vulkan > 0 && spvVersion.vulkanRelaxed) {
+        bool remapped = vkRelaxedRemapUniformVariable(loc, identifier, publicType, arraySizes, initializer, type);
+
+        if (remapped) {
+            return nullptr;
+        }
+    }
+
     inheritGlobalDefaults(type.getQualifier());
 
     // Declare the variable
@@ -6725,6 +7121,11 @@
 //
 TIntermNode* TParseContext::executeInitializer(const TSourceLoc& loc, TIntermTyped* initializer, TVariable* variable)
 {
+    // A null initializer is an aggregate that hasn't had an op assigned yet
+    // (still EOpNull, no relation to nullInit), and has no children.
+    bool nullInit = initializer->getAsAggregate() && initializer->getAsAggregate()->getOp() == EOpNull &&
+        initializer->getAsAggregate()->getSequence().size() == 0;
+
     //
     // Identifier must be of type constant, a global, or a temporary, and
     // starting at version 120, desktop allows uniforms to have initializers.
@@ -6732,9 +7133,36 @@
     TStorageQualifier qualifier = variable->getType().getQualifier().storage;
     if (! (qualifier == EvqTemporary || qualifier == EvqGlobal || qualifier == EvqConst ||
            (qualifier == EvqUniform && !isEsProfile() && version >= 120))) {
-        error(loc, " cannot initialize this type of qualifier ", variable->getType().getStorageQualifierString(), "");
+        if (qualifier == EvqShared) {
+            // GL_EXT_null_initializer allows this for shared, if it's a null initializer
+            if (nullInit) {
+                const char* feature = "initialization with shared qualifier";
+                profileRequires(loc, EEsProfile, 0, E_GL_EXT_null_initializer, feature);
+                profileRequires(loc, ~EEsProfile, 0, E_GL_EXT_null_initializer, feature);
+            } else {
+                error(loc, "initializer can only be a null initializer ('{}')", "shared", "");
+            }
+        } else {
+            error(loc, " cannot initialize this type of qualifier ",
+                  variable->getType().getStorageQualifierString(), "");
+            return nullptr;
+        }
+    }
+
+    if (nullInit) {
+        // only some types can be null initialized
+        if (variable->getType().containsUnsizedArray()) {
+            error(loc, "null initializers can't size unsized arrays", "{}", "");
+            return nullptr;
+        }
+        if (variable->getType().containsOpaque()) {
+            error(loc, "null initializers can't be used on opaque values", "{}", "");
+            return nullptr;
+        }
+        variable->getWritableType().getQualifier().setNullInit();
         return nullptr;
     }
+
     arrayObjectCheck(loc, variable->getType(), "array initializer");
 
     //
@@ -6778,13 +7206,15 @@
 
     // Uniforms require a compile-time constant initializer
     if (qualifier == EvqUniform && ! initializer->getType().getQualifier().isFrontEndConstant()) {
-        error(loc, "uniform initializers must be constant", "=", "'%s'", variable->getType().getCompleteString().c_str());
+        error(loc, "uniform initializers must be constant", "=", "'%s'",
+              variable->getType().getCompleteString().c_str());
         variable->getWritableType().getQualifier().makeTemporary();
         return nullptr;
     }
     // Global consts require a constant initializer (specialization constant is okay)
     if (qualifier == EvqConst && symbolTable.atGlobalLevel() && ! initializer->getType().getQualifier().isConstant()) {
-        error(loc, "global const initializers must be constant", "=", "'%s'", variable->getType().getCompleteString().c_str());
+        error(loc, "global const initializers must be constant", "=", "'%s'",
+              variable->getType().getCompleteString().c_str());
         variable->getWritableType().getQualifier().makeTemporary();
         return nullptr;
     }
@@ -6804,7 +7234,8 @@
         // "In declarations of global variables with no storage qualifier or with a const
         // qualifier any initializer must be a constant expression."
         if (symbolTable.atGlobalLevel() && ! initializer->getType().getQualifier().isConstant()) {
-            const char* initFeature = "non-constant global initializer (needs GL_EXT_shader_non_constant_global_initializers)";
+            const char* initFeature =
+                "non-constant global initializer (needs GL_EXT_shader_non_constant_global_initializers)";
             if (isEsProfile()) {
                 if (relaxedErrors() && ! extensionTurnedOn(E_GL_EXT_shader_non_constant_global_initializers))
                     warn(loc, "not allowed in this version", initFeature, "");
@@ -6818,7 +7249,8 @@
         // Compile-time tagging of the variable with its constant value...
 
         initializer = intermediate.addConversion(EOpAssign, variable->getType(), initializer);
-        if (! initializer || ! initializer->getType().getQualifier().isConstant() || variable->getType() != initializer->getType()) {
+        if (! initializer || ! initializer->getType().getQualifier().isConstant() ||
+            variable->getType() != initializer->getType()) {
             error(loc, "non-matching or non-convertible constant type for const initializer",
                   variable->getType().getStorageQualifierString(), "");
             variable->getWritableType().getQualifier().makeTemporary();
@@ -6930,6 +7362,15 @@
             error(loc, "wrong vector size (or rows in a matrix column):", "initializer list", type.getCompleteString().c_str());
             return nullptr;
         }
+        TBasicType destType = type.getBasicType();
+        for (int i = 0; i < type.getVectorSize(); ++i) {
+            TBasicType initType = initList->getSequence()[i]->getAsTyped()->getBasicType();
+            if (destType != initType && !intermediate.canImplicitlyPromote(initType, destType)) {
+                error(loc, "type mismatch in initializer list", "initializer list", type.getCompleteString().c_str());
+                return nullptr;
+            }
+
+        }
     } else {
         error(loc, "unexpected initializer-list type:", "initializer list", type.getCompleteString().c_str());
         return nullptr;
@@ -7305,6 +7746,8 @@
         if (!node->getType().isCoopMat()) {
             if (type.getBasicType() != node->getType().getBasicType()) {
                 node = intermediate.addConversion(type.getBasicType(), node);
+                if (node == nullptr)
+                    return nullptr;
             }
             node = intermediate.setAggregateOperator(node, EOpConstructCooperativeMatrix, type, node->getLoc());
         } else {
@@ -7384,6 +7827,19 @@
 
         return node;
 
+    case EOpConstructAccStruct:
+        if ((node->getType().isScalar() && node->getType().getBasicType() == EbtUint64)) {
+            // construct acceleration structure from uint64
+            requireExtensions(loc, 1, &E_GL_EXT_ray_tracing, "uint64_t conversion to acclerationStructureEXT");
+            return intermediate.addBuiltInFunctionCall(node->getLoc(), EOpConvUint64ToAccStruct, true, node,
+                type);
+        } else if (node->getType().isVector() && node->getType().getBasicType() == EbtUint && node->getVectorSize() == 2) {
+            // construct acceleration structure from uint64
+            requireExtensions(loc, 1, &E_GL_EXT_ray_tracing, "uvec2 conversion to accelerationStructureEXT");
+            return intermediate.addBuiltInFunctionCall(node->getLoc(), EOpConvUvec2ToAccStruct, true, node,
+                type);
+        } else
+            return nullptr;
 #endif // GLSLANG_WEB
 
     default:
@@ -7450,6 +7906,8 @@
 void TParseContext::declareBlock(const TSourceLoc& loc, TTypeList& typeList, const TString* instanceName,
     TArraySizes* arraySizes)
 {
+    if (spvVersion.vulkan > 0 && spvVersion.vulkanRelaxed)
+        blockStorageRemap(loc, blockName, currentBlockQualifier);
     blockStageIoCheck(loc, currentBlockQualifier);
     blockQualifierCheck(loc, currentBlockQualifier, instanceName != nullptr);
     if (arraySizes != nullptr) {
@@ -7464,10 +7922,10 @@
         TType& memberType = *typeList[member].type;
         TQualifier& memberQualifier = memberType.getQualifier();
         const TSourceLoc& memberLoc = typeList[member].loc;
-        globalQualifierFixCheck(memberLoc, memberQualifier);
         if (memberQualifier.storage != EvqTemporary && memberQualifier.storage != EvqGlobal && memberQualifier.storage != currentBlockQualifier.storage)
             error(memberLoc, "member storage qualifier cannot contradict block storage qualifier", memberType.getFieldName().c_str(), "");
         memberQualifier.storage = currentBlockQualifier.storage;
+        globalQualifierFixCheck(memberLoc, memberQualifier);
 #ifndef GLSLANG_WEB
         inheritMemoryQualifiers(currentBlockQualifier, memberQualifier);
         if (currentBlockQualifier.perPrimitiveNV)
@@ -7517,6 +7975,7 @@
     case EvqBuffer:     defaultQualification = globalBufferDefaults;     break;
     case EvqVaryingIn:  defaultQualification = globalInputDefaults;      break;
     case EvqVaryingOut: defaultQualification = globalOutputDefaults;     break;
+    case EvqShared:     defaultQualification = globalSharedDefaults;     break;
     default:            defaultQualification.clear();                    break;
     }
 
@@ -7738,6 +8197,17 @@
     trackLinkage(variable);
 }
 
+//
+// allow storage type of block to be remapped at compile time
+//
+void TParseContext::blockStorageRemap(const TSourceLoc&, const TString* instanceName, TQualifier& qualifier)
+{
+    TBlockStorageClass type = intermediate.getBlockStorageOverride(instanceName->c_str());
+    if (type != EbsNone) {
+        qualifier.setBlockStorage(type);
+    }
+}
+
 // Do all block-declaration checking regarding the combination of in/out/uniform/buffer
 // with a particular stage.
 void TParseContext::blockStageIoCheck(const TSourceLoc& loc, const TQualifier& qualifier)
@@ -7780,6 +8250,12 @@
             error(loc, "output blocks cannot be used in a task shader", "out", "");
         }
         break;
+    case EvqShared:
+        if (spvVersion.spv > 0 && spvVersion.spv < EShTargetSpv_1_4) {
+            error(loc, "shared block requires at least SPIR-V 1.4", "shared block", "");
+        }
+        profileRequires(loc, EEsProfile | ECoreProfile | ECompatibilityProfile, 0, E_GL_EXT_shared_memory_block, "shared block");
+        break;
 #ifndef GLSLANG_WEB
     case EvqPayload:
         profileRequires(loc, ~EEsProfile, 460, 2, extsrt, "rayPayloadNV block");
@@ -7938,7 +8414,7 @@
 //
 void TParseContext::fixBlockUniformOffsets(TQualifier& qualifier, TTypeList& typeList)
 {
-    if (!qualifier.isUniformOrBuffer() && !qualifier.isTaskMemory())
+    if (!storageCanHaveLayoutInBlock(qualifier.storage) && !qualifier.isTaskMemory())
         return;
     if (qualifier.layoutPacking != ElpStd140 && qualifier.layoutPacking != ElpStd430 && qualifier.layoutPacking != ElpScalar)
         return;
@@ -8048,8 +8524,8 @@
 }
 
 //
-// Spread LayoutPacking to block member, if a  block member is a struct, we need spread LayoutPacking to
-// this struct member too. and keep this rule for recursive.
+// Spread LayoutPacking to matrix or aggregate block members. If a block member is a struct or
+// array of struct, spread LayoutPacking recursively to its matrix or aggregate members.
 //
 void TParseContext::fixBlockUniformLayoutPacking(TQualifier& qualifier, TTypeList* originTypeList,
                                                  TTypeList* tmpTypeList)
@@ -8058,11 +8534,13 @@
     for (unsigned int member = 0; member < originTypeList->size(); ++member) {
         if (qualifier.layoutPacking != ElpNone) {
             if (tmpTypeList == nullptr) {
-                if ((*originTypeList)[member].type->getQualifier().layoutPacking == ElpNone) {
+                if ((*originTypeList)[member].type->getQualifier().layoutPacking == ElpNone &&
+                    !(*originTypeList)[member].type->isScalarOrVector()) {
                     (*originTypeList)[member].type->getQualifier().layoutPacking = qualifier.layoutPacking;
                 }
             } else {
-                if ((*tmpTypeList)[member].type->getQualifier().layoutPacking == ElpNone) {
+                if ((*tmpTypeList)[member].type->getQualifier().layoutPacking == ElpNone &&
+                    !(*tmpTypeList)[member].type->isScalarOrVector()) {
                     (*tmpTypeList)[member].type->getQualifier().layoutPacking = qualifier.layoutPacking;
                 }
             }
@@ -8165,7 +8643,7 @@
 
     bool pipeOut = qualifier.isPipeOutput();
     bool pipeIn = qualifier.isPipeInput();
-    if (version >= 300 || (!isEsProfile() && version >= 420)) {
+    if ((version >= 300 && isEsProfile()) || (!isEsProfile() && version >= 420)) {
         if (! pipeOut)
             error(loc, "can only apply to an output", "invariant", "");
     } else {
@@ -8452,8 +8930,14 @@
         }
 #endif
         break;
+    case EvqShared:
+        if (qualifier.hasMatrix())
+            globalSharedDefaults.layoutMatrix = qualifier.layoutMatrix;
+        if (qualifier.hasPacking())
+            globalSharedDefaults.layoutPacking = qualifier.layoutPacking;
+        break;
     default:
-        error(loc, "default qualifier requires 'uniform', 'buffer', 'in', or 'out' storage qualification", "", "");
+        error(loc, "default qualifier requires 'uniform', 'buffer', 'in', 'out' or 'shared' storage qualification", "", "");
         return;
     }
 
diff --git a/glslang/MachineIndependent/ParseHelper.h b/glslang/MachineIndependent/ParseHelper.h
index 8b262c9..6f00621 100644
--- a/glslang/MachineIndependent/ParseHelper.h
+++ b/glslang/MachineIndependent/ParseHelper.h
@@ -67,7 +67,7 @@
 class TScanContext;
 class TPpContext;
 
-typedef std::set<int> TIdSetType;
+typedef std::set<long long> TIdSetType;
 typedef std::map<const TTypeList*, std::map<size_t, const TTypeList*>> TStructRecord;
 
 //
@@ -83,7 +83,8 @@
           : TParseVersions(interm, version, profile, spvVersion, language, infoSink, forwardCompatible, messages),
             scopeMangler("::"),
             symbolTable(symbolTable),
-            statementNestingLevel(0), loopNestingLevel(0), structNestingLevel(0), controlFlowNestingLevel(0),
+            statementNestingLevel(0), loopNestingLevel(0), structNestingLevel(0), blockNestingLevel(0), controlFlowNestingLevel(0),
+            currentFunctionType(nullptr),
             postEntryPointReturn(false),
             contextPragma(true, false),
             beginInvocationInterlockCount(0), endInvocationInterlockCount(0),
@@ -91,7 +92,8 @@
             limits(resources.limits),
             globalUniformBlock(nullptr),
             globalUniformBinding(TQualifier::layoutBindingEnd),
-            globalUniformSet(TQualifier::layoutSetEnd)
+            globalUniformSet(TQualifier::layoutSetEnd),
+            atomicCounterBlockSet(TQualifier::layoutSetEnd)
     {
         if (entryPoint != nullptr)
             sourceEntryPointName = *entryPoint;
@@ -153,10 +155,11 @@
             extensionCallback(line, extension, behavior);
     }
 
-#ifdef ENABLE_HLSL
     // Manage the global uniform block (default uniforms in GLSL, $Global in HLSL)
     virtual void growGlobalUniformBlock(const TSourceLoc&, TType&, const TString& memberName, TTypeList* typeList = nullptr);
-#endif
+
+    // Manage global buffer (used for backing atomic counters in GLSL when using relaxed Vulkan semantics)
+    virtual void growAtomicCounterBlock(int binding, const TSourceLoc&, TType&, const TString& memberName, TTypeList* typeList = nullptr);
 
     // Potentially rename shader entry point function
     void renameShaderFunction(TString*& name) const
@@ -177,7 +180,8 @@
     TSymbolTable& symbolTable;        // symbol table that goes with the current language, version, and profile
     int statementNestingLevel;        // 0 if outside all flow control or compound statements
     int loopNestingLevel;             // 0 if outside all loops
-    int structNestingLevel;           // 0 if outside blocks and structures
+    int structNestingLevel;           // 0 if outside structures
+    int blockNestingLevel;            // 0 if outside blocks
     int controlFlowNestingLevel;      // 0 if outside all flow control
     const TType* currentFunctionType; // the return type of the function that's currently being parsed
     bool functionReturnsValue;        // true if a non-void function has a return
@@ -228,7 +232,24 @@
     // override this to set the language-specific name
     virtual const char* getGlobalUniformBlockName() const { return ""; }
     virtual void setUniformBlockDefaults(TType&) const { }
-    virtual void finalizeGlobalUniformBlockLayout(TVariable&) { }
+    virtual void finalizeGlobalUniformBlockLayout(TVariable&) {}
+
+    // Manage the atomic counter block (used for atomic_uints with Vulkan-Relaxed)
+    TMap<int, TVariable*> atomicCounterBuffers;
+    unsigned int atomicCounterBlockSet;
+    TMap<int, int> atomicCounterBlockFirstNewMember;
+    // override this to set the language-specific name
+    virtual const char* getAtomicCounterBlockName() const { return ""; }
+    virtual void setAtomicCounterBlockDefaults(TType&) const {}
+    virtual void finalizeAtomicCounterBlockLayout(TVariable&) {}
+    bool isAtomicCounterBlock(const TSymbol& symbol) {
+        const TVariable* var = symbol.getAsVariable();
+        if (!var)
+            return false;
+        const auto& at = atomicCounterBuffers.find(var->getType().getQualifier().layoutBinding);
+        return (at != atomicCounterBuffers.end() && (*at).second->getType() == var->getType());
+    }
+
     virtual void outputMessage(const TSourceLoc&, const char* szReason, const char* szToken,
                                const char* szExtraInfoFormat, TPrefixType prefix,
                                va_list args);
@@ -291,6 +312,9 @@
     bool parseShaderStrings(TPpContext&, TInputScanner& input, bool versionWillBeError = false) override;
     void parserError(const char* s);     // for bison's yyerror
 
+    virtual void growGlobalUniformBlock(const TSourceLoc&, TType&, const TString& memberName, TTypeList* typeList = nullptr) override;
+    virtual void growAtomicCounterBlock(int binding, const TSourceLoc&, TType&, const TString& memberName, TTypeList* typeList = nullptr) override;
+
     void reservedErrorCheck(const TSourceLoc&, const TString&);
     void reservedPpErrorCheck(const TSourceLoc&, const char* name, const char* op) override;
     bool lineContinuationCheck(const TSourceLoc&, bool endOfComment) override;
@@ -328,6 +352,7 @@
     TIntermTyped* handleLengthMethod(const TSourceLoc&, TFunction*, TIntermNode*);
     void addInputArgumentConversions(const TFunction&, TIntermNode*&) const;
     TIntermTyped* addOutputArgumentConversions(const TFunction&, TIntermAggregate&) const;
+    TIntermTyped* addAssign(const TSourceLoc&, TOperator op, TIntermTyped* left, TIntermTyped* right);
     void builtInOpCheck(const TSourceLoc&, const TFunction&, TIntermOperator&);
     void nonOpBuiltInCheck(const TSourceLoc&, const TFunction&, TIntermAggregate&);
     void userFunctionCallCheck(const TSourceLoc&, TIntermAggregate&);
@@ -337,6 +362,10 @@
     void checkPrecisionQualifier(const TSourceLoc&, TPrecisionQualifier);
     void memorySemanticsCheck(const TSourceLoc&, const TFunction&, const TIntermOperator& callNode);
 
+    TIntermTyped* vkRelaxedRemapFunctionCall(const TSourceLoc&, TFunction*, TIntermNode*);
+    // returns true if the variable was remapped to something else
+    bool vkRelaxedRemapUniformVariable(const TSourceLoc&, TString&, const TPublicType&, TArraySizes*, TIntermTyped*, TType&);
+
     void assignError(const TSourceLoc&, const char* op, TString left, TString right);
     void unaryOpError(const TSourceLoc&, const char* op, TString operand);
     void binaryOpError(const TSourceLoc&, const char* op, TString left, TString right);
@@ -363,7 +392,7 @@
     void accStructCheck(const TSourceLoc & loc, const TType & type, const TString & identifier);
     void transparentOpaqueCheck(const TSourceLoc&, const TType&, const TString& identifier);
     void memberQualifierCheck(glslang::TPublicType&);
-    void globalQualifierFixCheck(const TSourceLoc&, TQualifier&);
+    void globalQualifierFixCheck(const TSourceLoc&, TQualifier&, bool isMemberCheck = false);
     void globalQualifierTypeCheck(const TSourceLoc&, const TQualifier&, const TPublicType&);
     bool structQualifierErrorCheck(const TSourceLoc&, const TPublicType& pType);
     void mergeQualifiers(const TSourceLoc&, TQualifier& dst, const TQualifier& src, bool force);
@@ -389,7 +418,7 @@
     void arrayLimitCheck(const TSourceLoc&, const TString&, int size);
     void limitCheck(const TSourceLoc&, int value, const char* limit, const char* feature);
 
-    void inductiveLoopBodyCheck(TIntermNode*, int loopIndexId, TSymbolTable&);
+    void inductiveLoopBodyCheck(TIntermNode*, long long loopIndexId, TSymbolTable&);
     void constantIndexExpressionCheck(TIntermNode*);
 
     void setLayoutQualifier(const TSourceLoc&, TPublicType&, TString&);
@@ -414,6 +443,7 @@
     TIntermTyped* constructBuiltIn(const TType&, TOperator, TIntermTyped*, const TSourceLoc&, bool subset);
     void inheritMemoryQualifiers(const TQualifier& from, TQualifier& to);
     void declareBlock(const TSourceLoc&, TTypeList& typeList, const TString* instanceName = 0, TArraySizes* arraySizes = 0);
+    void blockStorageRemap(const TSourceLoc&, const TString*, TQualifier&);
     void blockStageIoCheck(const TSourceLoc&, const TQualifier&);
     void blockQualifierCheck(const TSourceLoc&, const TQualifier&, bool instanceName);
     void fixBlockLocations(const TSourceLoc&, TQualifier&, TTypeList&, bool memberWithLocation, bool memberWithoutLocation);
@@ -458,6 +488,14 @@
     void finish() override;
 #endif
 
+    virtual const char* getGlobalUniformBlockName() const override;
+    virtual void finalizeGlobalUniformBlockLayout(TVariable&) override;
+    virtual void setUniformBlockDefaults(TType& block) const override;
+
+    virtual const char* getAtomicCounterBlockName() const override;
+    virtual void finalizeAtomicCounterBlockLayout(TVariable&) override;
+    virtual void setAtomicCounterBlockDefaults(TType& block) const override;
+
 public:
     //
     // Generally, bison productions, the scanner, and the PP need read/write access to these; just give them direct access
@@ -482,6 +520,7 @@
     TQualifier globalUniformDefaults;
     TQualifier globalInputDefaults;
     TQualifier globalOutputDefaults;
+    TQualifier globalSharedDefaults;
     TString currentCaller;        // name of last function body entered (not valid when at global scope)
 #ifndef GLSLANG_WEB
     int* atomicUintOffsets;       // to become an array of the right size to hold an offset per binding point
diff --git a/glslang/MachineIndependent/PoolAlloc.cpp b/glslang/MachineIndependent/PoolAlloc.cpp
index c269d7d..84c40f4 100644
--- a/glslang/MachineIndependent/PoolAlloc.cpp
+++ b/glslang/MachineIndependent/PoolAlloc.cpp
@@ -35,28 +35,34 @@
 #include "../Include/Common.h"
 #include "../Include/PoolAlloc.h"
 
+#include "../Include/InitializeGlobals.h"
+#include "../OSDependent/osinclude.h"
+
 namespace glslang {
 
-namespace {
-thread_local TPoolAllocator* threadPoolAllocator = nullptr;
-
-TPoolAllocator* GetDefaultThreadPoolAllocator()
-{
-    thread_local TPoolAllocator defaultAllocator;
-    return &defaultAllocator;
-}
-} // anonymous namespace
+// Process-wide TLS index
+OS_TLSIndex PoolIndex;
 
 // Return the thread-specific current pool.
 TPoolAllocator& GetThreadPoolAllocator()
 {
-    return *(threadPoolAllocator ? threadPoolAllocator : GetDefaultThreadPoolAllocator());
+    return *static_cast<TPoolAllocator*>(OS_GetTLSValue(PoolIndex));
 }
 
 // Set the thread-specific current pool.
 void SetThreadPoolAllocator(TPoolAllocator* poolAllocator)
 {
-    threadPoolAllocator = poolAllocator;
+    OS_SetTLSValue(PoolIndex, poolAllocator);
+}
+
+// Process-wide set up of the TLS pool storage.
+bool InitializePoolIndex()
+{
+    // Allocate a TLS index.
+    if ((PoolIndex = OS_AllocTLSIndex()) == OS_INVALID_TLS_INDEX)
+        return false;
+
+    return true;
 }
 
 //
diff --git a/glslang/MachineIndependent/Scan.cpp b/glslang/MachineIndependent/Scan.cpp
index bd3181a..78c8a36 100644
--- a/glslang/MachineIndependent/Scan.cpp
+++ b/glslang/MachineIndependent/Scan.cpp
@@ -365,6 +365,9 @@
     (*KeywordMap)["if"] =                      IF;
     (*KeywordMap)["else"] =                    ELSE;
     (*KeywordMap)["discard"] =                 DISCARD;
+    (*KeywordMap)["terminateInvocation"] =     TERMINATE_INVOCATION;
+    (*KeywordMap)["terminateRayEXT"] =         TERMINATE_RAY;
+    (*KeywordMap)["ignoreIntersectionEXT"] =   IGNORE_INTERSECTION;
     (*KeywordMap)["return"] =                  RETURN;
     (*KeywordMap)["void"] =                    VOID;
     (*KeywordMap)["bool"] =                    BOOL;
@@ -471,6 +474,28 @@
     (*KeywordMap)["image2DMSArray"] =          IMAGE2DMSARRAY;
     (*KeywordMap)["iimage2DMSArray"] =         IIMAGE2DMSARRAY;
     (*KeywordMap)["uimage2DMSArray"] =         UIMAGE2DMSARRAY;
+    (*KeywordMap)["i64image1D"] =              I64IMAGE1D;
+    (*KeywordMap)["u64image1D"] =              U64IMAGE1D;
+    (*KeywordMap)["i64image2D"] =              I64IMAGE2D;
+    (*KeywordMap)["u64image2D"] =              U64IMAGE2D;
+    (*KeywordMap)["i64image3D"] =              I64IMAGE3D;
+    (*KeywordMap)["u64image3D"] =              U64IMAGE3D;
+    (*KeywordMap)["i64image2DRect"] =          I64IMAGE2DRECT;
+    (*KeywordMap)["u64image2DRect"] =          U64IMAGE2DRECT;
+    (*KeywordMap)["i64imageCube"] =            I64IMAGECUBE;
+    (*KeywordMap)["u64imageCube"] =            U64IMAGECUBE;
+    (*KeywordMap)["i64imageBuffer"] =          I64IMAGEBUFFER;
+    (*KeywordMap)["u64imageBuffer"] =          U64IMAGEBUFFER;
+    (*KeywordMap)["i64image1DArray"] =         I64IMAGE1DARRAY;
+    (*KeywordMap)["u64image1DArray"] =         U64IMAGE1DARRAY;
+    (*KeywordMap)["i64image2DArray"] =         I64IMAGE2DARRAY;
+    (*KeywordMap)["u64image2DArray"] =         U64IMAGE2DARRAY;
+    (*KeywordMap)["i64imageCubeArray"] =       I64IMAGECUBEARRAY;
+    (*KeywordMap)["u64imageCubeArray"] =       U64IMAGECUBEARRAY;
+    (*KeywordMap)["i64image2DMS"] =            I64IMAGE2DMS;
+    (*KeywordMap)["u64image2DMS"] =            U64IMAGE2DMS;
+    (*KeywordMap)["i64image2DMSArray"] =       I64IMAGE2DMSARRAY;
+    (*KeywordMap)["u64image2DMSArray"] =       U64IMAGE2DMSARRAY;
     (*KeywordMap)["double"] =                  DOUBLE;
     (*KeywordMap)["dvec2"] =                   DVEC2;
     (*KeywordMap)["dvec3"] =                   DVEC3;
@@ -914,6 +939,17 @@
     case CASE:
         return keyword;
 
+    case TERMINATE_INVOCATION:
+        if (!parseContext.extensionTurnedOn(E_GL_EXT_terminate_invocation))
+            return identifierOrType();
+        return keyword;
+
+    case TERMINATE_RAY:
+    case IGNORE_INTERSECTION:
+        if (!parseContext.extensionTurnedOn(E_GL_EXT_ray_tracing))
+            return identifierOrType();
+        return keyword;
+
     case BUFFER:
         afterBuffer = true;
         if ((parseContext.isEsProfile() && parseContext.version < 310) ||
@@ -982,7 +1018,7 @@
         return keyword;
     case PACKED:
         if ((parseContext.isEsProfile() && parseContext.version < 300) ||
-            (!parseContext.isEsProfile() && parseContext.version < 330))
+            (!parseContext.isEsProfile() && parseContext.version < 140))
             return reservedWord();
         return identifierOrType();
 
@@ -1147,6 +1183,19 @@
         afterType = true;
         return firstGenerationImage(false);
 
+    case I64IMAGE1D:
+    case U64IMAGE1D:
+    case I64IMAGE1DARRAY:
+    case U64IMAGE1DARRAY:
+    case I64IMAGE2DRECT:
+    case U64IMAGE2DRECT:
+        afterType = true;
+        if (parseContext.symbolTable.atBuiltInLevel() ||
+            parseContext.extensionTurnedOn(E_GL_EXT_shader_image_int64)) {
+            return firstGenerationImage(false);
+        }
+        return identifierOrType();
+
     case IMAGEBUFFER:
     case IIMAGEBUFFER:
     case UIMAGEBUFFER:
@@ -1155,6 +1204,18 @@
             parseContext.extensionsTurnedOn(Num_AEP_texture_buffer, AEP_texture_buffer))
             return keyword;
         return firstGenerationImage(false);
+        
+    case I64IMAGEBUFFER:
+    case U64IMAGEBUFFER:
+        afterType = true;        
+        if (parseContext.symbolTable.atBuiltInLevel() ||
+            parseContext.extensionTurnedOn(E_GL_EXT_shader_image_int64)) {
+            if ((parseContext.isEsProfile() && parseContext.version >= 320) ||
+                parseContext.extensionsTurnedOn(Num_AEP_texture_buffer, AEP_texture_buffer))
+                return keyword;
+            return firstGenerationImage(false);
+        }
+        return identifierOrType();
 
     case IMAGE2D:
     case IIMAGE2D:
@@ -1171,6 +1232,20 @@
         afterType = true;
         return firstGenerationImage(true);
 
+    case I64IMAGE2D:
+    case U64IMAGE2D:
+    case I64IMAGE3D:
+    case U64IMAGE3D:
+    case I64IMAGECUBE:
+    case U64IMAGECUBE:
+    case I64IMAGE2DARRAY:
+    case U64IMAGE2DARRAY:
+        afterType = true;
+        if (parseContext.symbolTable.atBuiltInLevel() ||
+            parseContext.extensionTurnedOn(E_GL_EXT_shader_image_int64))
+            return firstGenerationImage(true);
+        return identifierOrType();
+        
     case IMAGECUBEARRAY:
     case IIMAGECUBEARRAY:
     case UIMAGECUBEARRAY:
@@ -1179,6 +1254,18 @@
             parseContext.extensionsTurnedOn(Num_AEP_texture_cube_map_array, AEP_texture_cube_map_array))
             return keyword;
         return secondGenerationImage();
+        
+    case I64IMAGECUBEARRAY:
+    case U64IMAGECUBEARRAY:
+        afterType = true;
+        if (parseContext.symbolTable.atBuiltInLevel() ||
+            parseContext.extensionTurnedOn(E_GL_EXT_shader_image_int64)) {
+            if ((parseContext.isEsProfile() && parseContext.version >= 320) ||
+                parseContext.extensionsTurnedOn(Num_AEP_texture_cube_map_array, AEP_texture_cube_map_array))
+                return keyword;
+            return secondGenerationImage();
+        }
+        return identifierOrType();
 
     case IMAGE2DMS:
     case IIMAGE2DMS:
@@ -1188,6 +1275,17 @@
     case UIMAGE2DMSARRAY:
         afterType = true;
         return secondGenerationImage();
+        
+    case I64IMAGE2DMS:
+    case U64IMAGE2DMS:
+    case I64IMAGE2DMSARRAY:
+    case U64IMAGE2DMSARRAY:
+        afterType = true;
+        if (parseContext.symbolTable.atBuiltInLevel() ||
+            parseContext.extensionTurnedOn(E_GL_EXT_shader_image_int64)) {
+            return secondGenerationImage();
+        }
+        return identifierOrType();
 
     case DOUBLE:
     case DVEC2:
diff --git a/glslang/MachineIndependent/ShaderLang.cpp b/glslang/MachineIndependent/ShaderLang.cpp
index 9c8610c..d02eae6 100644
--- a/glslang/MachineIndependent/ShaderLang.cpp
+++ b/glslang/MachineIndependent/ShaderLang.cpp
@@ -159,7 +159,7 @@
     return index;
 }
 
-const int SpvVersionCount = 3;  // index range in MapSpvVersionToIndex
+const int SpvVersionCount = 4;  // index range in MapSpvVersionToIndex
 
 int MapSpvVersionToIndex(const SpvVersion& spvVersion)
 {
@@ -167,8 +167,12 @@
 
     if (spvVersion.openGl > 0)
         index = 1;
-    else if (spvVersion.vulkan > 0)
-        index = 2;
+    else if (spvVersion.vulkan > 0) {
+        if (!spvVersion.vulkanRelaxed)
+            index = 2;
+        else
+            index = 3;
+    }
 
     assert(index < SpvVersionCount);
 
@@ -294,6 +298,9 @@
 #ifdef GLSLANG_WEB
     profile = EEsProfile;
     version = 310;
+#elif defined(GLSLANG_ANGLE)
+    profile = ECoreProfile;
+    version = 450;
 #endif
 
     (*symbolTables[language]).adoptLevels(*commonTable[CommonIndex(profile, language)]);
@@ -315,6 +322,9 @@
 #ifdef GLSLANG_WEB
     profile = EEsProfile;
     version = 310;
+#elif defined(GLSLANG_ANGLE)
+    profile = ECoreProfile;
+    version = 450;
 #endif
 
     std::unique_ptr<TBuiltInParseables> builtInParseables(CreateBuiltInParseables(infoSink, source));
@@ -354,7 +364,6 @@
         (profile == EEsProfile && version >= 310))
         InitializeStageSymbolTable(*builtInParseables, version, profile, spvVersion, EShLangGeometry, source,
                                    infoSink, commonTable, symbolTables);
-#endif
 
     // check for compute
     if ((profile != EEsProfile && version >= 420) ||
@@ -362,6 +371,7 @@
         InitializeStageSymbolTable(*builtInParseables, version, profile, spvVersion, EShLangCompute, source,
                                    infoSink, commonTable, symbolTables);
 
+#ifndef GLSLANG_ANGLE
     // check for ray tracing stages
     if (profile != EEsProfile && version >= 450) {
         InitializeStageSymbolTable(*builtInParseables, version, profile, spvVersion, EShLangRayGen, source,
@@ -389,6 +399,8 @@
         (profile == EEsProfile && version >= 320))
         InitializeStageSymbolTable(*builtInParseables, version, profile, spvVersion, EShLangTaskNV, source,
                                    infoSink, commonTable, symbolTables);
+#endif // !GLSLANG_ANGLE
+#endif // !GLSLANG_WEB
 
     return true;
 }
@@ -490,7 +502,7 @@
 // Function to Print all builtins
 void DumpBuiltinSymbolTable(TInfoSink& infoSink, const TSymbolTable& symbolTable)
 {
-#ifndef GLSLANG_WEB
+#if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE)
     infoSink.debug << "BuiltinSymbolTable {\n";
 
     symbolTable.dump(infoSink, true);
@@ -594,7 +606,7 @@
         break;
     }
 
-#ifndef GLSLANG_WEB
+#if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE)
     // Correct for stage type...
     switch (stage) {
     case EShLangGeometry:
@@ -715,6 +727,7 @@
                 break;
             case EShClientVulkan:
                 spvVersion.vulkanGlsl = environment->input.dialectVersion;
+                spvVersion.vulkanRelaxed = environment->input.vulkanRulesRelaxed;
                 break;
             case EShClientOpenGL:
                 spvVersion.openGl = environment->input.dialectVersion;
@@ -870,7 +883,7 @@
                                 : userInput.scanVersion(version, profile, versionNotFirstToken);
     bool versionNotFound = version == 0;
     if (forceDefaultVersionAndProfile && source == EShSourceGlsl) {
-#ifndef GLSLANG_WEB
+#if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE)
         if (! (messages & EShMsgSuppressWarnings) && ! versionNotFound &&
             (version != defaultVersion || profile != defaultProfile)) {
             compiler->infoSink.info << "Warning, (version, profile) forced to be ("
@@ -893,10 +906,13 @@
 #ifdef GLSLANG_WEB
     profile = EEsProfile;
     version = 310;
+#elif defined(GLSLANG_ANGLE)
+    profile = ECoreProfile;
+    version = 450;
 #endif
 
     bool versionWillBeError = (versionNotFound || (profile == EEsProfile && version >= 300 && versionNotFirst));
-#ifndef GLSLANG_WEB
+#if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE)
     bool warnVersionNotFirst = false;
     if (! versionWillBeError && versionNotFirstToken) {
         if (messages & EShMsgRelaxedErrors)
@@ -938,6 +954,9 @@
     if (cachedTable)
         symbolTable->adoptLevels(*cachedTable);
 
+    if (intermediate.getUniqueId() != 0)
+        symbolTable->overwriteUniqueId(intermediate.getUniqueId());
+
     // Add built-in symbols that are potentially context dependent;
     // they get popped again further down.
     if (! AddContextSpecificSymbols(resources, compiler->infoSink, *symbolTable, version, profile, spvVersion,
@@ -966,7 +985,7 @@
     parseContext->setLimits(*resources);
     if (! goodVersion)
         parseContext->addError();
-#ifndef GLSLANG_WEB
+#if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE)
     if (warnVersionNotFirst) {
         TSourceLoc loc;
         loc.init();
@@ -1000,10 +1019,11 @@
     bool success = processingContext(*parseContext, ppContext, fullInput,
                                      versionWillBeError, *symbolTable,
                                      intermediate, optLevel, messages);
+    intermediate.setUniqueId(symbolTable->getMaxSymbolId());
     return success;
 }
 
-#ifndef GLSLANG_WEB
+#if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE)
 
 // Responsible for keeping track of the most recent source string and line in
 // the preprocessor and outputting newlines appropriately if the source string
@@ -1226,14 +1246,16 @@
             parseContext.infoSink.info << parseContext.getNumErrors() << " compilation errors.  No code generated.\n\n";
         }
 
+#ifndef GLSLANG_ANGLE
         if (messages & EShMsgAST)
             intermediate.output(parseContext.infoSink, true);
+#endif
 
         return success;
     }
 };
 
-#ifndef GLSLANG_WEB
+#if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE)
 // Take a single compilation unit, and run the preprocessor on it.
 // Return: True if there were no issues found in preprocessing,
 //         False if during preprocessing any unknown version, pragmas or
@@ -1257,14 +1279,15 @@
     EShMessages messages,       // warnings/errors/AST; things to print out
     TShader::Includer& includer,
     TIntermediate& intermediate, // returned tree, etc.
-    std::string* outputString)
+    std::string* outputString,
+    TEnvironment* environment = nullptr)
 {
     DoPreprocessing parser(outputString);
     return ProcessDeferred(compiler, shaderStrings, numStrings, inputLengths, stringNames,
                            preamble, optLevel, resources, defaultVersion,
                            defaultProfile, forceDefaultVersionAndProfile,
                            forwardCompatible, messages, intermediate, parser,
-                           false, includer);
+                           false, includer, "", environment);
 }
 #endif
 
@@ -1744,6 +1767,7 @@
     // clear environment (avoid constructors in them for use in a C interface)
     environment.input.languageFamily = EShSourceNone;
     environment.input.dialect = EShClientNone;
+    environment.input.vulkanRulesRelaxed = false;
     environment.client.client = EShClientNone;
     environment.target.language = EShTargetNone;
     environment.target.hlslFunctionality1 = false;
@@ -1797,6 +1821,11 @@
     intermediate->addProcesses(p);
 }
 
+void  TShader::setUniqueId(unsigned long long id)
+{
+    intermediate->setUniqueId(id);
+}
+
 void TShader::setInvertY(bool invert)                   { intermediate->setInvertY(invert); }
 void TShader::setNanMinMaxClamp(bool useNonNan)         { intermediate->setNanMinMaxClamp(useNonNan); }
 
@@ -1845,6 +1874,15 @@
 void TShader::setTextureSamplerTransformMode(EShTextureSamplerTransformMode mode) { intermediate->setTextureSamplerTransformMode(mode); }
 #endif
 
+void TShader::addBlockStorageOverride(const char* nameStr, TBlockStorageClass backing) { intermediate->addBlockStorageOverride(nameStr, backing); }
+
+void TShader::setGlobalUniformBlockName(const char* name) { intermediate->setGlobalUniformBlockName(name); }
+void TShader::setGlobalUniformSet(unsigned int set) { intermediate->setGlobalUniformSet(set); }
+void TShader::setGlobalUniformBinding(unsigned int binding) { intermediate->setGlobalUniformBinding(binding); }
+
+void TShader::setAtomicCounterBlockName(const char* name) { intermediate->setAtomicCounterBlockName(name); }
+void TShader::setAtomicCounterBlockSet(unsigned int set) { intermediate->setAtomicCounterBlockSet(set); }
+
 #ifdef ENABLE_HLSL
 // See comment above TDefaultHlslIoMapper in iomapper.cpp:
 void TShader::setHlslIoMapping(bool hlslIoMap)          { intermediate->setHlslIoMapping(hlslIoMap); }
@@ -1873,7 +1911,7 @@
                            &environment);
 }
 
-#ifndef GLSLANG_WEB
+#if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE)
 // Fill in a string with the result of preprocessing ShaderStrings
 // Returns true if all extensions, pragmas and version strings were valid.
 //
@@ -1896,7 +1934,8 @@
     return PreprocessDeferred(compiler, strings, numStrings, lengths, stringNames, preamble,
                               EShOptNone, builtInResources, defaultVersion,
                               defaultProfile, forceDefaultVersionAndProfile,
-                              forwardCompatible, message, includer, *intermediate, output_string);
+                              forwardCompatible, message, includer, *intermediate, output_string,
+                              &environment);
 }
 #endif
 
@@ -1911,7 +1950,7 @@
 }
 
 TProgram::TProgram() :
-#ifndef GLSLANG_WEB
+#if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE)
     reflection(0),
 #endif
     linked(false)
@@ -1927,7 +1966,7 @@
 TProgram::~TProgram()
 {
     delete infoSink;
-#ifndef GLSLANG_WEB
+#if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE)
     delete reflection;
 #endif
 
@@ -1959,7 +1998,10 @@
             error = true;
     }
 
-    // TODO: Link: cross-stage error checking
+    if (!error) {
+        if (! crossStageCheck(messages))
+            error = true;
+    }
 
     return ! error;
 }
@@ -1974,7 +2016,7 @@
     if (stages[stage].size() == 0)
         return true;
 
-#ifndef GLSLANG_WEB
+#if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE)
     int numEsShaders = 0, numNonEsShaders = 0;
     for (auto it = stages[stage].begin(); it != stages[stage].end(); ++it) {
         if ((*it)->intermediate->getProfile() == EEsProfile) {
@@ -2003,7 +2045,7 @@
         intermediate[stage] = new TIntermediate(stage,
                                                 firstIntermediate->getVersion(),
                                                 firstIntermediate->getProfile());
-
+        intermediate[stage]->setLimits(firstIntermediate->getLimits());
 
         // The new TIntermediate must use the same origin as the original TIntermediates.
         // Otherwise linking will fail due to different coordinate systems.
@@ -2028,12 +2070,77 @@
 #endif
     intermediate[stage]->finalCheck(*infoSink, (messages & EShMsgKeepUncalled) != 0);
 
+#ifndef GLSLANG_ANGLE
     if (messages & EShMsgAST)
         intermediate[stage]->output(*infoSink, true);
+#endif
 
     return intermediate[stage]->getNumErrors() == 0;
 }
 
+//
+// Check that there are no errors in linker objects accross stages
+//
+// Return true if no errors.
+//
+bool TProgram::crossStageCheck(EShMessages) {
+
+    // make temporary intermediates to hold the linkage symbols for each linking interface
+    // while we do the checks
+    // Independent interfaces are:
+    //                  all uniform variables and blocks
+    //                  all buffer blocks
+    //                  all in/out on a stage boundary
+
+    TVector<TIntermediate*> activeStages;
+    for (int s = 0; s < EShLangCount; ++s) {
+        if (intermediate[s])
+            activeStages.push_back(intermediate[s]);
+    }
+
+    // no extra linking if there is only one stage
+    if (! (activeStages.size() > 1))
+        return true;
+
+    // setup temporary tree to hold unfirom objects from different stages
+    TIntermediate* firstIntermediate = activeStages.front();
+    TIntermediate uniforms(EShLangCount,
+                           firstIntermediate->getVersion(),
+                           firstIntermediate->getProfile());
+    uniforms.setSpv(firstIntermediate->getSpv());
+
+    TIntermAggregate uniformObjects(EOpLinkerObjects);
+    TIntermAggregate root(EOpSequence);
+    root.getSequence().push_back(&uniformObjects);
+    uniforms.setTreeRoot(&root);
+
+    bool error = false;
+
+    // merge uniforms from all stages into a single intermediate
+    for (unsigned int i = 0; i < activeStages.size(); ++i) {
+        uniforms.mergeUniformObjects(*infoSink, *activeStages[i]);
+    }
+    error |= uniforms.getNumErrors() != 0;
+
+    // copy final definition of global block back into each stage
+    for (unsigned int i = 0; i < activeStages.size(); ++i) {
+        // We only want to merge into already existing global uniform blocks.
+        // A stage that doesn't already know about the global doesn't care about it's content.
+        // Otherwise we end up pointing to the same object between different stages
+        // and that will break binding/set remappings
+        bool mergeExistingOnly = true;
+        activeStages[i]->mergeGlobalUniformBlocks(*infoSink, uniforms, mergeExistingOnly);
+    }
+
+    // compare cross stage symbols for each stage boundary
+    for (unsigned int i = 1; i < activeStages.size(); ++i) {
+        activeStages[i - 1]->checkStageIO(*infoSink, *activeStages[i]);
+        error |= (activeStages[i - 1]->getNumErrors() != 0);
+    }
+
+    return !error;
+}
+
 const char* TProgram::getInfoLog()
 {
     return infoSink->info.c_str();
@@ -2044,7 +2151,7 @@
     return infoSink->debug.c_str();
 }
 
-#ifndef GLSLANG_WEB
+#if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE)
 
 //
 // Reflection implementation.
@@ -2126,6 +2233,6 @@
     return ioMapper->doMap(pResolver, *infoSink);
 }
 
-#endif // GLSLANG_WEB
+#endif // !GLSLANG_WEB && !GLSLANG_ANGLE
 
 } // end namespace glslang
diff --git a/glslang/MachineIndependent/SymbolTable.cpp b/glslang/MachineIndependent/SymbolTable.cpp
index 06b5a81..0e5ee19 100644
--- a/glslang/MachineIndependent/SymbolTable.cpp
+++ b/glslang/MachineIndependent/SymbolTable.cpp
@@ -85,6 +85,8 @@
 #endif
         case EbtInt:   mangledName += "i"; break;
         case EbtUint:  mangledName += "u"; break;
+        case EbtInt64:   mangledName += "i64"; break;
+        case EbtUint64:  mangledName += "u64"; break;
         default: break; // some compilers want this
         }
         if (sampler.isImageClass())
@@ -146,6 +148,8 @@
         if (typeName)
             mangledName += *typeName;
         for (unsigned int i = 0; i < structure->size(); ++i) {
+            if ((*structure)[i].type->getBasicType() == EbtVoid)
+                continue;
             mangledName += '-';
             (*structure)[i].type->buildMangledName(mangledName);
         }
@@ -166,7 +170,7 @@
         for (int i = 0; i < arraySizes->getNumDims(); ++i) {
             if (arraySizes->getDimNode(i)) {
                 if (arraySizes->getDimNode(i)->getAsSymbolNode())
-                    snprintf(buf, maxSize, "s%d", arraySizes->getDimNode(i)->getAsSymbolNode()->getId());
+                    snprintf(buf, maxSize, "s%lld", arraySizes->getDimNode(i)->getAsSymbolNode()->getId());
                 else
                     snprintf(buf, maxSize, "s%p", arraySizes->getDimNode(i));
             } else
@@ -178,7 +182,7 @@
     }
 }
 
-#ifndef GLSLANG_WEB
+#if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE)
 
 //
 // Dump functions.
diff --git a/glslang/MachineIndependent/SymbolTable.h b/glslang/MachineIndependent/SymbolTable.h
index 40ca3da..152dc47 100644
--- a/glslang/MachineIndependent/SymbolTable.h
+++ b/glslang/MachineIndependent/SymbolTable.h
@@ -104,8 +104,8 @@
     virtual const TAnonMember* getAsAnonMember() const { return 0; }
     virtual const TType& getType() const = 0;
     virtual TType& getWritableType() = 0;
-    virtual void setUniqueId(int id) { uniqueId = id; }
-    virtual int getUniqueId() const { return uniqueId; }
+    virtual void setUniqueId(long long id) { uniqueId = id; }
+    virtual long long getUniqueId() const { return uniqueId; }
     virtual void setExtensions(int numExts, const char* const exts[])
     {
         assert(extensions == 0);
@@ -117,7 +117,7 @@
     virtual int getNumExtensions() const { return extensions == nullptr ? 0 : (int)extensions->size(); }
     virtual const char** getExtensions() const { return extensions->data(); }
 
-#ifndef GLSLANG_WEB
+#if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE)
     virtual void dump(TInfoSink& infoSink, bool complete = false) const = 0;
     void dumpExtensions(TInfoSink& infoSink) const;
 #endif
@@ -130,7 +130,7 @@
     TSymbol& operator=(const TSymbol&);
 
     const TString *name;
-    unsigned int uniqueId;      // For cross-scope comparing during code generation
+    unsigned long long uniqueId;      // For cross-scope comparing during code generation
 
     // For tracking what extensions must be present
     // (don't use if correct version/profile is present).
@@ -196,7 +196,7 @@
     }
     virtual const char** getMemberExtensions(int member) const { return (*memberExtensions)[member].data(); }
 
-#ifndef GLSLANG_WEB
+#if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE)
     virtual void dump(TInfoSink& infoSink, bool complete = false) const;
 #endif
 
@@ -319,7 +319,7 @@
     virtual TParameter& operator[](int i) { assert(writable); return parameters[i]; }
     virtual const TParameter& operator[](int i) const { return parameters[i]; }
 
-#ifndef GLSLANG_WEB
+#if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE)
     virtual void dump(TInfoSink& infoSink, bool complete = false) const override;
 #endif
 
@@ -381,7 +381,7 @@
     virtual const char** getExtensions() const override { return anonContainer.getMemberExtensions(memberNumber); }
 
     virtual int getAnonId() const { return anonId; }
-#ifndef GLSLANG_WEB
+#if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE)
     virtual void dump(TInfoSink& infoSink, bool complete = false) const override;
 #endif
 
@@ -551,7 +551,7 @@
 
     void relateToOperator(const char* name, TOperator op);
     void setFunctionExtensions(const char* name, int num, const char* const extensions[]);
-#ifndef GLSLANG_WEB
+#if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE)
     void dump(TInfoSink& infoSink, bool complete = false) const;
 #endif
     TSymbolTableLevel* clone() const;
@@ -612,21 +612,28 @@
     //   3: user-shader globals
     //
 protected:
+    static const uint32_t LevelFlagBitOffset = 56;
     static const int globalLevel = 3;
-    bool isSharedLevel(int level)  { return level <= 1; }              // exclude all per-compile levels
-    bool isBuiltInLevel(int level) { return level <= 2; }              // exclude user globals
-    bool isGlobalLevel(int level)  { return level <= globalLevel; }    // include user globals
+    static bool isSharedLevel(int level)  { return level <= 1; }            // exclude all per-compile levels
+    static bool isBuiltInLevel(int level) { return level <= 2; }            // exclude user globals
+    static bool isGlobalLevel(int level)  { return level <= globalLevel; }  // include user globals
 public:
     bool isEmpty() { return table.size() == 0; }
     bool atBuiltInLevel() { return isBuiltInLevel(currentLevel()); }
     bool atGlobalLevel()  { return isGlobalLevel(currentLevel()); }
-
+    static bool isBuiltInSymbol(long long uniqueId) {
+        int level = static_cast<int>(uniqueId >> LevelFlagBitOffset);
+        return isBuiltInLevel(level);
+    }
+    static constexpr uint64_t uniqueIdMask = (1LL << LevelFlagBitOffset) - 1;
+    static const uint32_t MaxLevelInUniqueID = 127;
     void setNoBuiltInRedeclarations() { noBuiltInRedeclarations = true; }
     void setSeparateNameSpaces() { separateNameSpaces = true; }
 
     void push()
     {
         table.push_back(new TSymbolTableLevel);
+        updateUniqueIdLevelFlag();
     }
 
     // Make a new symbol-table level to represent the scope introduced by a structure
@@ -639,6 +646,7 @@
     {
         assert(thisSymbol.getName().size() == 0);
         table.push_back(new TSymbolTableLevel);
+        updateUniqueIdLevelFlag();
         table.back()->setThisLevel();
         insert(thisSymbol);
     }
@@ -648,6 +656,7 @@
         table[currentLevel()]->getPreviousDefaultPrecisions(p);
         delete table.back();
         table.pop_back();
+        updateUniqueIdLevelFlag();
     }
 
     //
@@ -685,6 +694,16 @@
         return table[currentLevel()]->amend(symbol, firstNewMember);
     }
 
+    // Update the level info in symbol's unique ID to current level
+    void amendSymbolIdLevel(TSymbol& symbol)
+    {
+        // clamp level to avoid overflow
+        uint64_t level = (uint32_t)currentLevel() > MaxLevelInUniqueID ? MaxLevelInUniqueID : currentLevel();
+        uint64_t symbolId = symbol.getUniqueId();
+        symbolId &= uniqueIdMask;
+        symbolId |= (level << LevelFlagBitOffset);
+        symbol.setUniqueId(symbolId);
+    }
     //
     // To allocate an internal temporary, which will need to be uniquely
     // identified by the consumer of the AST, but never need to
@@ -853,8 +872,8 @@
         }
     }
 
-    int getMaxSymbolId() { return uniqueId; }
-#ifndef GLSLANG_WEB
+    long long getMaxSymbolId() { return uniqueId; }
+#if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE)
     void dump(TInfoSink& infoSink, bool complete = false) const;
 #endif
     void copyTable(const TSymbolTable& copyOf);
@@ -867,14 +886,27 @@
             table[level]->readOnly();
     }
 
+    // Add current level in the high-bits of unique id
+    void updateUniqueIdLevelFlag() {
+        // clamp level to avoid overflow
+        uint64_t level = (uint32_t)currentLevel() > MaxLevelInUniqueID ? MaxLevelInUniqueID : currentLevel();
+        uniqueId &= uniqueIdMask;
+        uniqueId |= (level << LevelFlagBitOffset);
+    }
+
+    void overwriteUniqueId(long long id)
+    {
+        uniqueId = id;
+        updateUniqueIdLevelFlag();
+    }
+
 protected:
     TSymbolTable(TSymbolTable&);
     TSymbolTable& operator=(TSymbolTableLevel&);
 
     int currentLevel() const { return static_cast<int>(table.size()) - 1; }
-
     std::vector<TSymbolTableLevel*> table;
-    int uniqueId;     // for unique identification in code generation
+    long long uniqueId;     // for unique identification in code generation
     bool noBuiltInRedeclarations;
     bool separateNameSpaces;
     unsigned int adoptedLevels;
diff --git a/glslang/MachineIndependent/Versions.cpp b/glslang/MachineIndependent/Versions.cpp
index b311024..94fe1ab 100644
--- a/glslang/MachineIndependent/Versions.cpp
+++ b/glslang/MachineIndependent/Versions.cpp
@@ -170,7 +170,7 @@
     for (size_t ii = 0; ii < sizeof(exts) / sizeof(exts[0]); ii++) {
         // Add only extensions which require > spv1.0 to save space in map
         if (exts[ii].minSpvVersion > EShTargetSpv_1_0) {
-            extensionMinSpv[E_GL_EXT_ray_tracing] = exts[ii].minSpvVersion;
+            extensionMinSpv[exts[ii].extensionName] = exts[ii].minSpvVersion;
         }
     }
 
@@ -305,6 +305,7 @@
     extensionBehavior[E_GL_EXT_tessellation_point_size]              = EBhDisable;
     extensionBehavior[E_GL_EXT_texture_buffer]                       = EBhDisable;
     extensionBehavior[E_GL_EXT_texture_cube_map_array]               = EBhDisable;
+    extensionBehavior[E_GL_EXT_null_initializer]                     = EBhDisable;
 
     // OES matching AEP
     extensionBehavior[E_GL_OES_geometry_shader]          = EBhDisable;
@@ -327,6 +328,10 @@
     extensionBehavior[E_GL_EXT_ray_flags_primitive_culling] = EBhDisable;
     extensionBehavior[E_GL_EXT_blend_func_extended]         = EBhDisable;
     extensionBehavior[E_GL_EXT_shader_implicit_conversions] = EBhDisable;
+    extensionBehavior[E_GL_EXT_fragment_shading_rate]       = EBhDisable;
+    extensionBehavior[E_GL_EXT_shader_image_int64]   = EBhDisable;
+    extensionBehavior[E_GL_EXT_terminate_invocation]        = EBhDisable;
+    extensionBehavior[E_GL_EXT_shared_memory_block]         = EBhDisable;
 
     // OVR extensions
     extensionBehavior[E_GL_OVR_multiview]                = EBhDisable;
@@ -371,6 +376,7 @@
             "#define GL_EXT_YUV_target 1\n"
             "#define GL_EXT_shader_texture_lod 1\n"
             "#define GL_EXT_shadow_samplers 1\n"
+            "#define GL_EXT_fragment_shading_rate 1\n"
 
             // AEP
             "#define GL_ANDROID_extension_pack_es31a 1\n"
@@ -404,11 +410,14 @@
             "#define GL_EXT_shader_non_constant_global_initializers 1\n"
             ;
 
-            if (isEsProfile() && version >= 300) {
+            if (version >= 300) {
                 preamble += "#define GL_NV_shader_noperspective_interpolation 1\n";
             }
+            if (version >= 310) {
+                preamble += "#define GL_EXT_null_initializer 1\n";
+            }
 
-    } else {
+    } else { // !isEsProfile()
         preamble =
             "#define GL_FRAGMENT_PRECISION_HIGH 1\n"
             "#define GL_ARB_texture_rectangle 1\n"
@@ -463,6 +472,8 @@
             "#define GL_EXT_buffer_reference_uvec2 1\n"
             "#define GL_EXT_demote_to_helper_invocation 1\n"
             "#define GL_EXT_debug_printf 1\n"
+            "#define GL_EXT_fragment_shading_rate 1\n"
+            "#define GL_EXT_shared_memory_block 1\n"
 
             // GL_KHR_shader_subgroup
             "#define GL_KHR_shader_subgroup_basic 1\n"
@@ -474,11 +485,12 @@
             "#define GL_KHR_shader_subgroup_clustered 1\n"
             "#define GL_KHR_shader_subgroup_quad 1\n"
 
-            "#define E_GL_EXT_shader_atomic_int64 1\n"
-            "#define E_GL_EXT_shader_realtime_clock 1\n"
-            "#define E_GL_EXT_ray_tracing 1\n"
-            "#define E_GL_EXT_ray_query 1\n"
-            "#define E_GL_EXT_ray_flags_primitive_culling 1\n"
+            "#define GL_EXT_shader_image_int64 1\n"
+            "#define GL_EXT_shader_atomic_int64 1\n"
+            "#define GL_EXT_shader_realtime_clock 1\n"
+            "#define GL_EXT_ray_tracing 1\n"
+            "#define GL_EXT_ray_query 1\n"
+            "#define GL_EXT_ray_flags_primitive_culling 1\n"
 
             "#define GL_AMD_shader_ballot 1\n"
             "#define GL_AMD_shader_trinary_minmax 1\n"
@@ -532,6 +544,9 @@
             if (profile == ECompatibilityProfile)
                 preamble += "#define GL_compatibility_profile 1\n";
         }
+        if (version >= 140) {
+            preamble += "#define GL_EXT_null_initializer 1\n";
+        }
 #endif // GLSLANG_WEB
     }
 
@@ -558,6 +573,11 @@
             "#define GL_GOOGLE_include_directive 1\n"
             "#define GL_KHR_blend_equation_advanced 1\n"
             ;
+
+    // other general extensions
+    preamble +=
+            "#define GL_EXT_terminate_invocation 1\n"
+            ;
 #endif
 
     // #define VULKAN XXXX
@@ -762,7 +782,8 @@
 // Use when there are no profile/version to check, it's just an error if one of the
 // extensions is not present.
 //
-void TParseVersions::requireExtensions(const TSourceLoc& loc, int numExtensions, const char* const extensions[], const char* featureDesc)
+void TParseVersions::requireExtensions(const TSourceLoc& loc, int numExtensions, const char* const extensions[],
+    const char* featureDesc)
 {
     if (checkExtensionsRequested(loc, numExtensions, extensions, featureDesc))
         return;
@@ -781,7 +802,8 @@
 // Use by preprocessor when there are no profile/version to check, it's just an error if one of the
 // extensions is not present.
 //
-void TParseVersions::ppRequireExtensions(const TSourceLoc& loc, int numExtensions, const char* const extensions[], const char* featureDesc)
+void TParseVersions::ppRequireExtensions(const TSourceLoc& loc, int numExtensions, const char* const extensions[],
+    const char* featureDesc)
 {
     if (checkExtensionsRequested(loc, numExtensions, extensions, featureDesc))
         return;
@@ -847,12 +869,13 @@
         error(getCurrentLoc(), "behavior not supported:", "#extension", behaviorString);
         return;
     }
+    bool on = behavior != EBhDisable;
 
     // check if extension is used with correct shader stage
     checkExtensionStage(getCurrentLoc(), extension);
 
     // check if extension has additional requirements
-    extensionRequires(getCurrentLoc(), extension ,behaviorString);
+    extensionRequires(getCurrentLoc(), extension, behaviorString);
 
     // update the requested extension
     updateExtensionBehavior(extension, behavior);
@@ -916,6 +939,32 @@
         updateExtensionBehavior(line, "GL_EXT_shader_explicit_arithmetic_types_int64", behaviorString);
     else if (strcmp(extension, "GL_EXT_shader_subgroup_extended_types_float16") == 0)
         updateExtensionBehavior(line, "GL_EXT_shader_explicit_arithmetic_types_float16", behaviorString);
+
+    // see if we need to update the numeric features
+    else if (strcmp(extension, "GL_EXT_shader_explicit_arithmetic_types") == 0)
+        intermediate.updateNumericFeature(TNumericFeatures::shader_explicit_arithmetic_types, on);
+    else if (strcmp(extension, "GL_EXT_shader_explicit_arithmetic_types_int8") == 0)
+        intermediate.updateNumericFeature(TNumericFeatures::shader_explicit_arithmetic_types_int8, on);
+    else if (strcmp(extension, "GL_EXT_shader_explicit_arithmetic_types_int16") == 0)
+        intermediate.updateNumericFeature(TNumericFeatures::shader_explicit_arithmetic_types_int16, on);
+    else if (strcmp(extension, "GL_EXT_shader_explicit_arithmetic_types_int32") == 0)
+        intermediate.updateNumericFeature(TNumericFeatures::shader_explicit_arithmetic_types_int32, on);
+    else if (strcmp(extension, "GL_EXT_shader_explicit_arithmetic_types_int64") == 0)
+        intermediate.updateNumericFeature(TNumericFeatures::shader_explicit_arithmetic_types_int64, on);
+    else if (strcmp(extension, "GL_EXT_shader_explicit_arithmetic_types_float16") == 0)
+        intermediate.updateNumericFeature(TNumericFeatures::shader_explicit_arithmetic_types_float16, on);
+    else if (strcmp(extension, "GL_EXT_shader_explicit_arithmetic_types_float32") == 0)
+        intermediate.updateNumericFeature(TNumericFeatures::shader_explicit_arithmetic_types_float32, on);
+    else if (strcmp(extension, "GL_EXT_shader_explicit_arithmetic_types_float64") == 0)
+        intermediate.updateNumericFeature(TNumericFeatures::shader_explicit_arithmetic_types_float64, on);
+    else if (strcmp(extension, "GL_EXT_shader_implicit_conversions") == 0)
+        intermediate.updateNumericFeature(TNumericFeatures::shader_implicit_conversions, on);
+    else if (strcmp(extension, "GL_ARB_gpu_shader_fp64") == 0)
+        intermediate.updateNumericFeature(TNumericFeatures::gpu_shader_fp64, on);
+    else if (strcmp(extension, "GL_AMD_gpu_shader_int16") == 0)
+        intermediate.updateNumericFeature(TNumericFeatures::gpu_shader_int16, on);
+    else if (strcmp(extension, "GL_AMD_gpu_shader_half_float") == 0)
+        intermediate.updateNumericFeature(TNumericFeatures::gpu_shader_half_float, on);
 }
 
 void TParseVersions::updateExtensionBehavior(const char* extension, TExtensionBehavior behavior)
@@ -951,8 +1000,8 @@
         } else {
             if (iter->second == EBhDisablePartial)
                 warn(getCurrentLoc(), "extension is only partially supported:", "#extension", extension);
-            if (behavior == EBhEnable || behavior == EBhRequire || behavior == EBhDisable)
-                intermediate.updateRequestedExtension(extension, behavior);
+            if (behavior != EBhDisable)
+                intermediate.addRequestedExtension(extension);
             iter->second = behavior;
         }
     }
@@ -1224,7 +1273,7 @@
 // Call for any operation removed because Vulkan SPIR-V is being generated.
 void TParseVersions::vulkanRemoved(const TSourceLoc& loc, const char* op)
 {
-    if (spvVersion.vulkan > 0)
+    if (spvVersion.vulkan > 0 && !spvVersion.vulkanRelaxed)
         error(loc, "not allowed when using GLSL for Vulkan", op, "");
 }
 
diff --git a/glslang/MachineIndependent/Versions.h b/glslang/MachineIndependent/Versions.h
index f52f605..25feb0b 100644
--- a/glslang/MachineIndependent/Versions.h
+++ b/glslang/MachineIndependent/Versions.h
@@ -87,11 +87,12 @@
 // The union of all requested rule sets will be applied.
 //
 struct SpvVersion {
-    SpvVersion() : spv(0), vulkanGlsl(0), vulkan(0), openGl(0) {}
+    SpvVersion() : spv(0), vulkanGlsl(0), vulkan(0), openGl(0), vulkanRelaxed(false) {}
     unsigned int spv; // the version of SPIR-V to target, as defined by "word 1" of the SPIR-V binary header
     int vulkanGlsl;   // the version of GLSL semantics for Vulkan, from GL_KHR_vulkan_glsl, for "#define VULKAN XXX"
     int vulkan;       // the version of Vulkan, for which SPIR-V execution environment rules to use
     int openGl;       // the version of GLSL semantics for OpenGL, from GL_ARB_gl_spirv, for "#define GL_SPIRV XXX"
+    bool vulkanRelaxed; // relax changes to GLSL for Vulkan, allowing some GL-specific to be compiled to Vulkan SPIR-V target
 };
 
 //
@@ -199,6 +200,10 @@
 const char* const E_GL_EXT_ray_flags_primitive_culling      = "GL_EXT_ray_flags_primitive_culling";
 const char* const E_GL_EXT_blend_func_extended              = "GL_EXT_blend_func_extended";
 const char* const E_GL_EXT_shader_implicit_conversions      = "GL_EXT_shader_implicit_conversions";
+const char* const E_GL_EXT_fragment_shading_rate            = "GL_EXT_fragment_shading_rate";
+const char* const E_GL_EXT_shader_image_int64               = "GL_EXT_shader_image_int64";
+const char* const E_GL_EXT_null_initializer                 = "GL_EXT_null_initializer";
+const char* const E_GL_EXT_shared_memory_block              = "GL_EXT_shared_memory_block";
 
 // Arrays of extensions for the above viewportEXTs duplications
 
@@ -297,6 +302,7 @@
 const char* const E_GL_EXT_shader_subgroup_extended_types_int16   = "GL_EXT_shader_subgroup_extended_types_int16";
 const char* const E_GL_EXT_shader_subgroup_extended_types_int64   = "GL_EXT_shader_subgroup_extended_types_int64";
 const char* const E_GL_EXT_shader_subgroup_extended_types_float16 = "GL_EXT_shader_subgroup_extended_types_float16";
+const char* const E_GL_EXT_terminate_invocation = "GL_EXT_terminate_invocation";
 
 const char* const E_GL_EXT_shader_atomic_float = "GL_EXT_shader_atomic_float";
 
diff --git a/glslang/MachineIndependent/gl_types.h b/glslang/MachineIndependent/gl_types.h
index b6f613b..d6c9393 100644
--- a/glslang/MachineIndependent/gl_types.h
+++ b/glslang/MachineIndependent/gl_types.h
@@ -49,9 +49,17 @@
 #define GL_INT64_VEC4_ARB                 0x8FEB
 
 #define GL_UNSIGNED_INT64_ARB             0x140F
-#define GL_UNSIGNED_INT64_VEC2_ARB        0x8FE5
-#define GL_UNSIGNED_INT64_VEC3_ARB        0x8FE6
-#define GL_UNSIGNED_INT64_VEC4_ARB        0x8FE7
+#define GL_UNSIGNED_INT64_VEC2_ARB        0x8FF5
+#define GL_UNSIGNED_INT64_VEC3_ARB        0x8FF6
+#define GL_UNSIGNED_INT64_VEC4_ARB        0x8FF7
+#define GL_UNSIGNED_INT16_VEC2_NV         0x8FF1
+#define GL_UNSIGNED_INT16_VEC3_NV         0x8FF2
+#define GL_UNSIGNED_INT16_VEC4_NV         0x8FF3
+
+#define GL_INT16_NV                       0x8FE4
+#define GL_INT16_VEC2_NV                  0x8FE5
+#define GL_INT16_VEC3_NV                  0x8FE6
+#define GL_INT16_VEC4_NV                  0x8FE7
 
 #define GL_BOOL                           0x8B56
 #define GL_BOOL_VEC2                      0x8B57
diff --git a/glslang/MachineIndependent/glslang.m4 b/glslang/MachineIndependent/glslang.m4
index 1432bf6..4d37639 100644
--- a/glslang/MachineIndependent/glslang.m4
+++ b/glslang/MachineIndependent/glslang.m4
@@ -242,6 +242,18 @@
 %token <lex> F16IMAGECUBE F16IMAGE1DARRAY F16IMAGE2DARRAY F16IMAGECUBEARRAY
 %token <lex> F16IMAGEBUFFER F16IMAGE2DMS F16IMAGE2DMSARRAY
 
+%token <lex> I64IMAGE1D U64IMAGE1D
+%token <lex> I64IMAGE2D U64IMAGE2D
+%token <lex> I64IMAGE3D U64IMAGE3D
+%token <lex> I64IMAGE2DRECT U64IMAGE2DRECT
+%token <lex> I64IMAGECUBE U64IMAGECUBE
+%token <lex> I64IMAGEBUFFER U64IMAGEBUFFER
+%token <lex> I64IMAGE1DARRAY U64IMAGE1DARRAY
+%token <lex> I64IMAGE2DARRAY U64IMAGE2DARRAY
+%token <lex> I64IMAGECUBEARRAY U64IMAGECUBEARRAY
+%token <lex> I64IMAGE2DMS U64IMAGE2DMS
+%token <lex> I64IMAGE2DMSARRAY U64IMAGE2DMSARRAY
+
 // texture without sampler
 %token <lex> TEXTURECUBEARRAY ITEXTURECUBEARRAY UTEXTURECUBEARRAY
 %token <lex> TEXTURE1D ITEXTURE1D UTEXTURE1D
@@ -281,6 +293,8 @@
 %token <lex> CENTROID IN OUT INOUT
 %token <lex> STRUCT VOID WHILE
 %token <lex> BREAK CONTINUE DO ELSE FOR IF DISCARD RETURN SWITCH CASE DEFAULT
+%token <lex> TERMINATE_INVOCATION
+%token <lex> TERMINATE_RAY IGNORE_INTERSECTION
 %token <lex> UNIFORM SHARED BUFFER
 %token <lex> FLAT SMOOTH LAYOUT
 
@@ -778,7 +792,7 @@
         parseContext.specializationCheck($2.loc, $1->getType(), "=");
         parseContext.lValueErrorCheck($2.loc, "assign", $1);
         parseContext.rValueErrorCheck($2.loc, "assign", $3);
-        $$ = parseContext.intermediate.addAssign($2.op, $1, $3, $2.loc);
+        $$ = parseContext.addAssign($2.loc, $2.op, $1, $3);
         if ($$ == 0) {
             parseContext.assignError($2.loc, "assign", $1->getCompleteString(), $3->getCompleteString());
             $$ = $1;
@@ -905,7 +919,7 @@
 
 block_structure
     : type_qualifier IDENTIFIER LEFT_BRACE { parseContext.nestedBlockCheck($1.loc); } struct_declaration_list RIGHT_BRACE {
-        --parseContext.structNestingLevel;
+        --parseContext.blockNestingLevel;
         parseContext.blockName = $2.string;
         parseContext.globalQualifierFixCheck($1.loc, $1.qualifier);
         parseContext.checkNoShaderLayouts($1.loc, $1.shaderQualifiers);
@@ -3203,6 +3217,116 @@
         $$.basicType = EbtSampler;
         $$.sampler.setImage(EbtUint, Esd2D, true, false, true);
     }
+    | I64IMAGE1D {
+        $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+        $$.basicType = EbtSampler;
+        $$.sampler.setImage(EbtInt64, Esd1D);
+    }
+    | U64IMAGE1D {
+        $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+        $$.basicType = EbtSampler;
+        $$.sampler.setImage(EbtUint64, Esd1D);
+    }
+    | I64IMAGE2D {
+        $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+        $$.basicType = EbtSampler;
+        $$.sampler.setImage(EbtInt64, Esd2D);
+    }
+    | U64IMAGE2D {
+        $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+        $$.basicType = EbtSampler;
+        $$.sampler.setImage(EbtUint64, Esd2D);
+    }
+    | I64IMAGE3D {
+        $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+        $$.basicType = EbtSampler;
+        $$.sampler.setImage(EbtInt64, Esd3D);
+    }
+    | U64IMAGE3D {
+        $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+        $$.basicType = EbtSampler;
+        $$.sampler.setImage(EbtUint64, Esd3D);
+    }
+    | I64IMAGE2DRECT {
+        $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+        $$.basicType = EbtSampler;
+        $$.sampler.setImage(EbtInt64, EsdRect);
+    }
+    | U64IMAGE2DRECT {
+        $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+        $$.basicType = EbtSampler;
+        $$.sampler.setImage(EbtUint64, EsdRect);
+    }
+    | I64IMAGECUBE {
+        $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+        $$.basicType = EbtSampler;
+        $$.sampler.setImage(EbtInt64, EsdCube);
+    }
+    | U64IMAGECUBE {
+        $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+        $$.basicType = EbtSampler;
+        $$.sampler.setImage(EbtUint64, EsdCube);
+    }
+    | I64IMAGEBUFFER {
+        $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+        $$.basicType = EbtSampler;
+        $$.sampler.setImage(EbtInt64, EsdBuffer);
+    }
+    | U64IMAGEBUFFER {
+        $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+        $$.basicType = EbtSampler;
+        $$.sampler.setImage(EbtUint64, EsdBuffer);
+    }
+    | I64IMAGE1DARRAY {
+        $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+        $$.basicType = EbtSampler;
+        $$.sampler.setImage(EbtInt64, Esd1D, true);
+    }
+    | U64IMAGE1DARRAY {
+        $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+        $$.basicType = EbtSampler;
+        $$.sampler.setImage(EbtUint64, Esd1D, true);
+    }
+    | I64IMAGE2DARRAY {
+        $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+        $$.basicType = EbtSampler;
+        $$.sampler.setImage(EbtInt64, Esd2D, true);
+    }
+    | U64IMAGE2DARRAY {
+        $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+        $$.basicType = EbtSampler;
+        $$.sampler.setImage(EbtUint64, Esd2D, true);
+    }
+    | I64IMAGECUBEARRAY {
+        $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+        $$.basicType = EbtSampler;
+        $$.sampler.setImage(EbtInt64, EsdCube, true);
+    }
+    | U64IMAGECUBEARRAY {
+        $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+        $$.basicType = EbtSampler;
+        $$.sampler.setImage(EbtUint64, EsdCube, true);
+    }
+    | I64IMAGE2DMS {
+        $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+        $$.basicType = EbtSampler;
+        $$.sampler.setImage(EbtInt64, Esd2D, false, false, true);
+    }
+    | U64IMAGE2DMS {
+        $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+        $$.basicType = EbtSampler;
+        $$.sampler.setImage(EbtUint64, Esd2D, false, false, true);
+    }
+    | I64IMAGE2DMSARRAY {
+        $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+        $$.basicType = EbtSampler;
+        $$.sampler.setImage(EbtInt64, Esd2D, true, false, true);
+    }
+    | U64IMAGE2DMSARRAY {
+        $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+        $$.basicType = EbtSampler;
+        $$.sampler.setImage(EbtUint64, Esd2D, true, false, true);
+    }
     | SAMPLEREXTERNALOES {  // GL_OES_EGL_image_external
         $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
         $$.basicType = EbtSampler;
@@ -3451,6 +3575,12 @@
         parseContext.profileRequires($1.loc, ~EEsProfile, 420, E_GL_ARB_shading_language_420pack, initFeature);
         $$ = $2;
     }
+    | LEFT_BRACE RIGHT_BRACE {
+        const char* initFeature = "empty { } initializer";
+        parseContext.profileRequires($1.loc, EEsProfile, 0, E_GL_EXT_null_initializer, initFeature);
+        parseContext.profileRequires($1.loc, ~EEsProfile, 0, E_GL_EXT_null_initializer, initFeature);
+        $$ = parseContext.intermediate.makeAggregate($1.loc);
+    }
 GLSLANG_WEB_EXCLUDE_OFF
     ;
 
@@ -3805,6 +3935,20 @@
         parseContext.requireStage($1.loc, EShLangFragment, "discard");
         $$ = parseContext.intermediate.addBranch(EOpKill, $1.loc);
     }
+    | TERMINATE_INVOCATION SEMICOLON {
+        parseContext.requireStage($1.loc, EShLangFragment, "terminateInvocation");
+        $$ = parseContext.intermediate.addBranch(EOpTerminateInvocation, $1.loc);
+    }
+GLSLANG_WEB_EXCLUDE_ON
+    | TERMINATE_RAY SEMICOLON {
+        parseContext.requireStage($1.loc, EShLangAnyHit, "terminateRayEXT");
+        $$ = parseContext.intermediate.addBranch(EOpTerminateRayKHR, $1.loc);
+    }
+    | IGNORE_INTERSECTION SEMICOLON {
+        parseContext.requireStage($1.loc, EShLangAnyHit, "ignoreIntersectionEXT");
+        $$ = parseContext.intermediate.addBranch(EOpIgnoreIntersectionKHR, $1.loc);
+    }
+GLSLANG_WEB_EXCLUDE_OFF
     ;
 
 // Grammar Note:  No 'goto'.  Gotos are not supported.
@@ -3842,6 +3986,14 @@
     : function_prototype {
         $1.function = parseContext.handleFunctionDeclarator($1.loc, *$1.function, false /* not prototype */);
         $1.intermNode = parseContext.handleFunctionDefinition($1.loc, *$1.function);
+
+        // For ES 100 only, according to ES shading language 100 spec: A function
+        // body has a scope nested inside the function's definition.
+        if (parseContext.profile == EEsProfile && parseContext.version == 100)
+        {
+            parseContext.symbolTable.push();
+            ++parseContext.statementNestingLevel;
+        }
     }
     compound_statement_no_new_scope {
         //   May be best done as post process phase on intermediate code
@@ -3857,6 +4009,17 @@
         $$->getAsAggregate()->setOptimize(parseContext.contextPragma.optimize);
         $$->getAsAggregate()->setDebug(parseContext.contextPragma.debug);
         $$->getAsAggregate()->setPragmaTable(parseContext.contextPragma.pragmaTable);
+
+        // Set currentFunctionType to empty pointer when goes outside of the function
+        parseContext.currentFunctionType = nullptr;
+
+        // For ES 100 only, according to ES shading language 100 spec: A function
+        // body has a scope nested inside the function's definition.
+        if (parseContext.profile == EEsProfile && parseContext.version == 100)
+        {
+            parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]);
+            --parseContext.statementNestingLevel;
+        }
     }
     ;
 
diff --git a/glslang/MachineIndependent/glslang.y b/glslang/MachineIndependent/glslang.y
index e33d7d1..0b711ae 100644
--- a/glslang/MachineIndependent/glslang.y
+++ b/glslang/MachineIndependent/glslang.y
@@ -242,6 +242,18 @@
 %token <lex> F16IMAGECUBE F16IMAGE1DARRAY F16IMAGE2DARRAY F16IMAGECUBEARRAY
 %token <lex> F16IMAGEBUFFER F16IMAGE2DMS F16IMAGE2DMSARRAY
 
+%token <lex> I64IMAGE1D U64IMAGE1D
+%token <lex> I64IMAGE2D U64IMAGE2D
+%token <lex> I64IMAGE3D U64IMAGE3D
+%token <lex> I64IMAGE2DRECT U64IMAGE2DRECT
+%token <lex> I64IMAGECUBE U64IMAGECUBE
+%token <lex> I64IMAGEBUFFER U64IMAGEBUFFER
+%token <lex> I64IMAGE1DARRAY U64IMAGE1DARRAY
+%token <lex> I64IMAGE2DARRAY U64IMAGE2DARRAY
+%token <lex> I64IMAGECUBEARRAY U64IMAGECUBEARRAY
+%token <lex> I64IMAGE2DMS U64IMAGE2DMS
+%token <lex> I64IMAGE2DMSARRAY U64IMAGE2DMSARRAY
+
 // texture without sampler
 %token <lex> TEXTURECUBEARRAY ITEXTURECUBEARRAY UTEXTURECUBEARRAY
 %token <lex> TEXTURE1D ITEXTURE1D UTEXTURE1D
@@ -281,6 +293,8 @@
 %token <lex> CENTROID IN OUT INOUT
 %token <lex> STRUCT VOID WHILE
 %token <lex> BREAK CONTINUE DO ELSE FOR IF DISCARD RETURN SWITCH CASE DEFAULT
+%token <lex> TERMINATE_INVOCATION
+%token <lex> TERMINATE_RAY IGNORE_INTERSECTION
 %token <lex> UNIFORM SHARED BUFFER
 %token <lex> FLAT SMOOTH LAYOUT
 
@@ -778,7 +792,7 @@
         parseContext.specializationCheck($2.loc, $1->getType(), "=");
         parseContext.lValueErrorCheck($2.loc, "assign", $1);
         parseContext.rValueErrorCheck($2.loc, "assign", $3);
-        $$ = parseContext.intermediate.addAssign($2.op, $1, $3, $2.loc);
+        $$ = parseContext.addAssign($2.loc, $2.op, $1, $3);
         if ($$ == 0) {
             parseContext.assignError($2.loc, "assign", $1->getCompleteString(), $3->getCompleteString());
             $$ = $1;
@@ -905,7 +919,7 @@
 
 block_structure
     : type_qualifier IDENTIFIER LEFT_BRACE { parseContext.nestedBlockCheck($1.loc); } struct_declaration_list RIGHT_BRACE {
-        --parseContext.structNestingLevel;
+        --parseContext.blockNestingLevel;
         parseContext.blockName = $2.string;
         parseContext.globalQualifierFixCheck($1.loc, $1.qualifier);
         parseContext.checkNoShaderLayouts($1.loc, $1.shaderQualifiers);
@@ -3203,6 +3217,116 @@
         $$.basicType = EbtSampler;
         $$.sampler.setImage(EbtUint, Esd2D, true, false, true);
     }
+    | I64IMAGE1D {
+        $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+        $$.basicType = EbtSampler;
+        $$.sampler.setImage(EbtInt64, Esd1D);
+    }
+    | U64IMAGE1D {
+        $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+        $$.basicType = EbtSampler;
+        $$.sampler.setImage(EbtUint64, Esd1D);
+    }
+    | I64IMAGE2D {
+        $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+        $$.basicType = EbtSampler;
+        $$.sampler.setImage(EbtInt64, Esd2D);
+    }
+    | U64IMAGE2D {
+        $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+        $$.basicType = EbtSampler;
+        $$.sampler.setImage(EbtUint64, Esd2D);
+    }
+    | I64IMAGE3D {
+        $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+        $$.basicType = EbtSampler;
+        $$.sampler.setImage(EbtInt64, Esd3D);
+    }
+    | U64IMAGE3D {
+        $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+        $$.basicType = EbtSampler;
+        $$.sampler.setImage(EbtUint64, Esd3D);
+    }
+    | I64IMAGE2DRECT {
+        $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+        $$.basicType = EbtSampler;
+        $$.sampler.setImage(EbtInt64, EsdRect);
+    }
+    | U64IMAGE2DRECT {
+        $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+        $$.basicType = EbtSampler;
+        $$.sampler.setImage(EbtUint64, EsdRect);
+    }
+    | I64IMAGECUBE {
+        $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+        $$.basicType = EbtSampler;
+        $$.sampler.setImage(EbtInt64, EsdCube);
+    }
+    | U64IMAGECUBE {
+        $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+        $$.basicType = EbtSampler;
+        $$.sampler.setImage(EbtUint64, EsdCube);
+    }
+    | I64IMAGEBUFFER {
+        $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+        $$.basicType = EbtSampler;
+        $$.sampler.setImage(EbtInt64, EsdBuffer);
+    }
+    | U64IMAGEBUFFER {
+        $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+        $$.basicType = EbtSampler;
+        $$.sampler.setImage(EbtUint64, EsdBuffer);
+    }
+    | I64IMAGE1DARRAY {
+        $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+        $$.basicType = EbtSampler;
+        $$.sampler.setImage(EbtInt64, Esd1D, true);
+    }
+    | U64IMAGE1DARRAY {
+        $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+        $$.basicType = EbtSampler;
+        $$.sampler.setImage(EbtUint64, Esd1D, true);
+    }
+    | I64IMAGE2DARRAY {
+        $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+        $$.basicType = EbtSampler;
+        $$.sampler.setImage(EbtInt64, Esd2D, true);
+    }
+    | U64IMAGE2DARRAY {
+        $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+        $$.basicType = EbtSampler;
+        $$.sampler.setImage(EbtUint64, Esd2D, true);
+    }
+    | I64IMAGECUBEARRAY {
+        $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+        $$.basicType = EbtSampler;
+        $$.sampler.setImage(EbtInt64, EsdCube, true);
+    }
+    | U64IMAGECUBEARRAY {
+        $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+        $$.basicType = EbtSampler;
+        $$.sampler.setImage(EbtUint64, EsdCube, true);
+    }
+    | I64IMAGE2DMS {
+        $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+        $$.basicType = EbtSampler;
+        $$.sampler.setImage(EbtInt64, Esd2D, false, false, true);
+    }
+    | U64IMAGE2DMS {
+        $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+        $$.basicType = EbtSampler;
+        $$.sampler.setImage(EbtUint64, Esd2D, false, false, true);
+    }
+    | I64IMAGE2DMSARRAY {
+        $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+        $$.basicType = EbtSampler;
+        $$.sampler.setImage(EbtInt64, Esd2D, true, false, true);
+    }
+    | U64IMAGE2DMSARRAY {
+        $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+        $$.basicType = EbtSampler;
+        $$.sampler.setImage(EbtUint64, Esd2D, true, false, true);
+    }
     | SAMPLEREXTERNALOES {  // GL_OES_EGL_image_external
         $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
         $$.basicType = EbtSampler;
@@ -3451,6 +3575,12 @@
         parseContext.profileRequires($1.loc, ~EEsProfile, 420, E_GL_ARB_shading_language_420pack, initFeature);
         $$ = $2;
     }
+    | LEFT_BRACE RIGHT_BRACE {
+        const char* initFeature = "empty { } initializer";
+        parseContext.profileRequires($1.loc, EEsProfile, 0, E_GL_EXT_null_initializer, initFeature);
+        parseContext.profileRequires($1.loc, ~EEsProfile, 0, E_GL_EXT_null_initializer, initFeature);
+        $$ = parseContext.intermediate.makeAggregate($1.loc);
+    }
 
     ;
 
@@ -3805,6 +3935,20 @@
         parseContext.requireStage($1.loc, EShLangFragment, "discard");
         $$ = parseContext.intermediate.addBranch(EOpKill, $1.loc);
     }
+    | TERMINATE_INVOCATION SEMICOLON {
+        parseContext.requireStage($1.loc, EShLangFragment, "terminateInvocation");
+        $$ = parseContext.intermediate.addBranch(EOpTerminateInvocation, $1.loc);
+    }
+
+    | TERMINATE_RAY SEMICOLON {
+        parseContext.requireStage($1.loc, EShLangAnyHit, "terminateRayEXT");
+        $$ = parseContext.intermediate.addBranch(EOpTerminateRayKHR, $1.loc);
+    }
+    | IGNORE_INTERSECTION SEMICOLON {
+        parseContext.requireStage($1.loc, EShLangAnyHit, "ignoreIntersectionEXT");
+        $$ = parseContext.intermediate.addBranch(EOpIgnoreIntersectionKHR, $1.loc);
+    }
+
     ;
 
 // Grammar Note:  No 'goto'.  Gotos are not supported.
@@ -3842,6 +3986,14 @@
     : function_prototype {
         $1.function = parseContext.handleFunctionDeclarator($1.loc, *$1.function, false /* not prototype */);
         $1.intermNode = parseContext.handleFunctionDefinition($1.loc, *$1.function);
+
+        // For ES 100 only, according to ES shading language 100 spec: A function
+        // body has a scope nested inside the function's definition.
+        if (parseContext.profile == EEsProfile && parseContext.version == 100)
+        {
+            parseContext.symbolTable.push();
+            ++parseContext.statementNestingLevel;
+        }
     }
     compound_statement_no_new_scope {
         //   May be best done as post process phase on intermediate code
@@ -3857,6 +4009,17 @@
         $$->getAsAggregate()->setOptimize(parseContext.contextPragma.optimize);
         $$->getAsAggregate()->setDebug(parseContext.contextPragma.debug);
         $$->getAsAggregate()->setPragmaTable(parseContext.contextPragma.pragmaTable);
+
+        // Set currentFunctionType to empty pointer when goes outside of the function
+        parseContext.currentFunctionType = nullptr;
+
+        // For ES 100 only, according to ES shading language 100 spec: A function
+        // body has a scope nested inside the function's definition.
+        if (parseContext.profile == EEsProfile && parseContext.version == 100)
+        {
+            parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]);
+            --parseContext.statementNestingLevel;
+        }
     }
     ;
 
@@ -3885,4 +4048,3 @@
 
 
 %%
-
diff --git a/glslang/MachineIndependent/glslang_tab.cpp b/glslang/MachineIndependent/glslang_tab.cpp
index 69f7f8e..da0658c 100644
--- a/glslang/MachineIndependent/glslang_tab.cpp
+++ b/glslang/MachineIndependent/glslang_tab.cpp
@@ -1,8 +1,9 @@
-/* A Bison parser, made by GNU Bison 3.0.4.  */
+/* A Bison parser, made by GNU Bison 3.7.4.  */
 
 /* Bison implementation for Yacc-like parsers in C
 
-   Copyright (C) 1984, 1989-1990, 2000-2015 Free Software Foundation, Inc.
+   Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2020 Free Software Foundation,
+   Inc.
 
    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
@@ -33,6 +34,10 @@
 /* C LALR(1) parser skeleton written by Richard Stallman, by
    simplifying the original so-called "semantic" parser.  */
 
+/* DO NOT RELY ON FEATURES THAT ARE NOT DOCUMENTED in the manual,
+   especially those whose name start with YY_ or yy_.  They are
+   private implementation details that can be changed or removed.  */
+
 /* All symbols defined below should begin with yy or YY, to avoid
    infringing on user name space.  This should be done even for local
    variables, as they might otherwise be expanded by user macros.
@@ -40,11 +45,11 @@
    define necessary library symbols; they are noted "INFRINGES ON
    USER NAME SPACE" below.  */
 
-/* Identify Bison output.  */
-#define YYBISON 1
+/* Identify Bison output, and Bison version.  */
+#define YYBISON 30704
 
-/* Bison version.  */
-#define YYBISON_VERSION "3.0.4"
+/* Bison version string.  */
+#define YYBISON_VERSION "3.7.4"
 
 /* Skeleton name.  */
 #define YYSKELETON_NAME "yacc.c"
@@ -61,8 +66,8 @@
 
 
 
-/* Copy the first part of user declarations.  */
-#line 69 "glslang.y" /* yacc.c:339  */
+/* First part of user prologue.  */
+#line 69 "MachineIndependent/glslang.y"
 
 
 /* Based on:
@@ -88,518 +93,596 @@
 using namespace glslang;
 
 
-#line 92 "glslang_tab.cpp" /* yacc.c:339  */
+#line 97 "MachineIndependent/glslang_tab.cpp"
 
-# ifndef YY_NULLPTR
-#  if defined __cplusplus && 201103L <= __cplusplus
-#   define YY_NULLPTR nullptr
+# ifndef YY_CAST
+#  ifdef __cplusplus
+#   define YY_CAST(Type, Val) static_cast<Type> (Val)
+#   define YY_REINTERPRET_CAST(Type, Val) reinterpret_cast<Type> (Val)
 #  else
-#   define YY_NULLPTR 0
+#   define YY_CAST(Type, Val) ((Type) (Val))
+#   define YY_REINTERPRET_CAST(Type, Val) ((Type) (Val))
+#  endif
+# endif
+# ifndef YY_NULLPTR
+#  if defined __cplusplus
+#   if 201103L <= __cplusplus
+#    define YY_NULLPTR nullptr
+#   else
+#    define YY_NULLPTR 0
+#   endif
+#  else
+#   define YY_NULLPTR ((void*)0)
 #  endif
 # endif
 
-/* Enabling verbose error messages.  */
-#ifdef YYERROR_VERBOSE
-# undef YYERROR_VERBOSE
-# define YYERROR_VERBOSE 1
-#else
-# define YYERROR_VERBOSE 1
-#endif
-
-/* In a future release of Bison, this section will be replaced
-   by #include "glslang_tab.cpp.h".  */
-#ifndef YY_YY_GLSLANG_TAB_CPP_H_INCLUDED
-# define YY_YY_GLSLANG_TAB_CPP_H_INCLUDED
-/* Debug traces.  */
-#ifndef YYDEBUG
-# define YYDEBUG 1
-#endif
-#if YYDEBUG
-extern int yydebug;
-#endif
-
-/* Token type.  */
-#ifndef YYTOKENTYPE
-# define YYTOKENTYPE
-  enum yytokentype
-  {
-    CONST = 258,
-    BOOL = 259,
-    INT = 260,
-    UINT = 261,
-    FLOAT = 262,
-    BVEC2 = 263,
-    BVEC3 = 264,
-    BVEC4 = 265,
-    IVEC2 = 266,
-    IVEC3 = 267,
-    IVEC4 = 268,
-    UVEC2 = 269,
-    UVEC3 = 270,
-    UVEC4 = 271,
-    VEC2 = 272,
-    VEC3 = 273,
-    VEC4 = 274,
-    MAT2 = 275,
-    MAT3 = 276,
-    MAT4 = 277,
-    MAT2X2 = 278,
-    MAT2X3 = 279,
-    MAT2X4 = 280,
-    MAT3X2 = 281,
-    MAT3X3 = 282,
-    MAT3X4 = 283,
-    MAT4X2 = 284,
-    MAT4X3 = 285,
-    MAT4X4 = 286,
-    SAMPLER2D = 287,
-    SAMPLER3D = 288,
-    SAMPLERCUBE = 289,
-    SAMPLER2DSHADOW = 290,
-    SAMPLERCUBESHADOW = 291,
-    SAMPLER2DARRAY = 292,
-    SAMPLER2DARRAYSHADOW = 293,
-    ISAMPLER2D = 294,
-    ISAMPLER3D = 295,
-    ISAMPLERCUBE = 296,
-    ISAMPLER2DARRAY = 297,
-    USAMPLER2D = 298,
-    USAMPLER3D = 299,
-    USAMPLERCUBE = 300,
-    USAMPLER2DARRAY = 301,
-    SAMPLER = 302,
-    SAMPLERSHADOW = 303,
-    TEXTURE2D = 304,
-    TEXTURE3D = 305,
-    TEXTURECUBE = 306,
-    TEXTURE2DARRAY = 307,
-    ITEXTURE2D = 308,
-    ITEXTURE3D = 309,
-    ITEXTURECUBE = 310,
-    ITEXTURE2DARRAY = 311,
-    UTEXTURE2D = 312,
-    UTEXTURE3D = 313,
-    UTEXTURECUBE = 314,
-    UTEXTURE2DARRAY = 315,
-    ATTRIBUTE = 316,
-    VARYING = 317,
-    FLOAT16_T = 318,
-    FLOAT32_T = 319,
-    DOUBLE = 320,
-    FLOAT64_T = 321,
-    INT64_T = 322,
-    UINT64_T = 323,
-    INT32_T = 324,
-    UINT32_T = 325,
-    INT16_T = 326,
-    UINT16_T = 327,
-    INT8_T = 328,
-    UINT8_T = 329,
-    I64VEC2 = 330,
-    I64VEC3 = 331,
-    I64VEC4 = 332,
-    U64VEC2 = 333,
-    U64VEC3 = 334,
-    U64VEC4 = 335,
-    I32VEC2 = 336,
-    I32VEC3 = 337,
-    I32VEC4 = 338,
-    U32VEC2 = 339,
-    U32VEC3 = 340,
-    U32VEC4 = 341,
-    I16VEC2 = 342,
-    I16VEC3 = 343,
-    I16VEC4 = 344,
-    U16VEC2 = 345,
-    U16VEC3 = 346,
-    U16VEC4 = 347,
-    I8VEC2 = 348,
-    I8VEC3 = 349,
-    I8VEC4 = 350,
-    U8VEC2 = 351,
-    U8VEC3 = 352,
-    U8VEC4 = 353,
-    DVEC2 = 354,
-    DVEC3 = 355,
-    DVEC4 = 356,
-    DMAT2 = 357,
-    DMAT3 = 358,
-    DMAT4 = 359,
-    F16VEC2 = 360,
-    F16VEC3 = 361,
-    F16VEC4 = 362,
-    F16MAT2 = 363,
-    F16MAT3 = 364,
-    F16MAT4 = 365,
-    F32VEC2 = 366,
-    F32VEC3 = 367,
-    F32VEC4 = 368,
-    F32MAT2 = 369,
-    F32MAT3 = 370,
-    F32MAT4 = 371,
-    F64VEC2 = 372,
-    F64VEC3 = 373,
-    F64VEC4 = 374,
-    F64MAT2 = 375,
-    F64MAT3 = 376,
-    F64MAT4 = 377,
-    DMAT2X2 = 378,
-    DMAT2X3 = 379,
-    DMAT2X4 = 380,
-    DMAT3X2 = 381,
-    DMAT3X3 = 382,
-    DMAT3X4 = 383,
-    DMAT4X2 = 384,
-    DMAT4X3 = 385,
-    DMAT4X4 = 386,
-    F16MAT2X2 = 387,
-    F16MAT2X3 = 388,
-    F16MAT2X4 = 389,
-    F16MAT3X2 = 390,
-    F16MAT3X3 = 391,
-    F16MAT3X4 = 392,
-    F16MAT4X2 = 393,
-    F16MAT4X3 = 394,
-    F16MAT4X4 = 395,
-    F32MAT2X2 = 396,
-    F32MAT2X3 = 397,
-    F32MAT2X4 = 398,
-    F32MAT3X2 = 399,
-    F32MAT3X3 = 400,
-    F32MAT3X4 = 401,
-    F32MAT4X2 = 402,
-    F32MAT4X3 = 403,
-    F32MAT4X4 = 404,
-    F64MAT2X2 = 405,
-    F64MAT2X3 = 406,
-    F64MAT2X4 = 407,
-    F64MAT3X2 = 408,
-    F64MAT3X3 = 409,
-    F64MAT3X4 = 410,
-    F64MAT4X2 = 411,
-    F64MAT4X3 = 412,
-    F64MAT4X4 = 413,
-    ATOMIC_UINT = 414,
-    ACCSTRUCTNV = 415,
-    ACCSTRUCTEXT = 416,
-    RAYQUERYEXT = 417,
-    FCOOPMATNV = 418,
-    ICOOPMATNV = 419,
-    UCOOPMATNV = 420,
-    SAMPLERCUBEARRAY = 421,
-    SAMPLERCUBEARRAYSHADOW = 422,
-    ISAMPLERCUBEARRAY = 423,
-    USAMPLERCUBEARRAY = 424,
-    SAMPLER1D = 425,
-    SAMPLER1DARRAY = 426,
-    SAMPLER1DARRAYSHADOW = 427,
-    ISAMPLER1D = 428,
-    SAMPLER1DSHADOW = 429,
-    SAMPLER2DRECT = 430,
-    SAMPLER2DRECTSHADOW = 431,
-    ISAMPLER2DRECT = 432,
-    USAMPLER2DRECT = 433,
-    SAMPLERBUFFER = 434,
-    ISAMPLERBUFFER = 435,
-    USAMPLERBUFFER = 436,
-    SAMPLER2DMS = 437,
-    ISAMPLER2DMS = 438,
-    USAMPLER2DMS = 439,
-    SAMPLER2DMSARRAY = 440,
-    ISAMPLER2DMSARRAY = 441,
-    USAMPLER2DMSARRAY = 442,
-    SAMPLEREXTERNALOES = 443,
-    SAMPLEREXTERNAL2DY2YEXT = 444,
-    ISAMPLER1DARRAY = 445,
-    USAMPLER1D = 446,
-    USAMPLER1DARRAY = 447,
-    F16SAMPLER1D = 448,
-    F16SAMPLER2D = 449,
-    F16SAMPLER3D = 450,
-    F16SAMPLER2DRECT = 451,
-    F16SAMPLERCUBE = 452,
-    F16SAMPLER1DARRAY = 453,
-    F16SAMPLER2DARRAY = 454,
-    F16SAMPLERCUBEARRAY = 455,
-    F16SAMPLERBUFFER = 456,
-    F16SAMPLER2DMS = 457,
-    F16SAMPLER2DMSARRAY = 458,
-    F16SAMPLER1DSHADOW = 459,
-    F16SAMPLER2DSHADOW = 460,
-    F16SAMPLER1DARRAYSHADOW = 461,
-    F16SAMPLER2DARRAYSHADOW = 462,
-    F16SAMPLER2DRECTSHADOW = 463,
-    F16SAMPLERCUBESHADOW = 464,
-    F16SAMPLERCUBEARRAYSHADOW = 465,
-    IMAGE1D = 466,
-    IIMAGE1D = 467,
-    UIMAGE1D = 468,
-    IMAGE2D = 469,
-    IIMAGE2D = 470,
-    UIMAGE2D = 471,
-    IMAGE3D = 472,
-    IIMAGE3D = 473,
-    UIMAGE3D = 474,
-    IMAGE2DRECT = 475,
-    IIMAGE2DRECT = 476,
-    UIMAGE2DRECT = 477,
-    IMAGECUBE = 478,
-    IIMAGECUBE = 479,
-    UIMAGECUBE = 480,
-    IMAGEBUFFER = 481,
-    IIMAGEBUFFER = 482,
-    UIMAGEBUFFER = 483,
-    IMAGE1DARRAY = 484,
-    IIMAGE1DARRAY = 485,
-    UIMAGE1DARRAY = 486,
-    IMAGE2DARRAY = 487,
-    IIMAGE2DARRAY = 488,
-    UIMAGE2DARRAY = 489,
-    IMAGECUBEARRAY = 490,
-    IIMAGECUBEARRAY = 491,
-    UIMAGECUBEARRAY = 492,
-    IMAGE2DMS = 493,
-    IIMAGE2DMS = 494,
-    UIMAGE2DMS = 495,
-    IMAGE2DMSARRAY = 496,
-    IIMAGE2DMSARRAY = 497,
-    UIMAGE2DMSARRAY = 498,
-    F16IMAGE1D = 499,
-    F16IMAGE2D = 500,
-    F16IMAGE3D = 501,
-    F16IMAGE2DRECT = 502,
-    F16IMAGECUBE = 503,
-    F16IMAGE1DARRAY = 504,
-    F16IMAGE2DARRAY = 505,
-    F16IMAGECUBEARRAY = 506,
-    F16IMAGEBUFFER = 507,
-    F16IMAGE2DMS = 508,
-    F16IMAGE2DMSARRAY = 509,
-    TEXTURECUBEARRAY = 510,
-    ITEXTURECUBEARRAY = 511,
-    UTEXTURECUBEARRAY = 512,
-    TEXTURE1D = 513,
-    ITEXTURE1D = 514,
-    UTEXTURE1D = 515,
-    TEXTURE1DARRAY = 516,
-    ITEXTURE1DARRAY = 517,
-    UTEXTURE1DARRAY = 518,
-    TEXTURE2DRECT = 519,
-    ITEXTURE2DRECT = 520,
-    UTEXTURE2DRECT = 521,
-    TEXTUREBUFFER = 522,
-    ITEXTUREBUFFER = 523,
-    UTEXTUREBUFFER = 524,
-    TEXTURE2DMS = 525,
-    ITEXTURE2DMS = 526,
-    UTEXTURE2DMS = 527,
-    TEXTURE2DMSARRAY = 528,
-    ITEXTURE2DMSARRAY = 529,
-    UTEXTURE2DMSARRAY = 530,
-    F16TEXTURE1D = 531,
-    F16TEXTURE2D = 532,
-    F16TEXTURE3D = 533,
-    F16TEXTURE2DRECT = 534,
-    F16TEXTURECUBE = 535,
-    F16TEXTURE1DARRAY = 536,
-    F16TEXTURE2DARRAY = 537,
-    F16TEXTURECUBEARRAY = 538,
-    F16TEXTUREBUFFER = 539,
-    F16TEXTURE2DMS = 540,
-    F16TEXTURE2DMSARRAY = 541,
-    SUBPASSINPUT = 542,
-    SUBPASSINPUTMS = 543,
-    ISUBPASSINPUT = 544,
-    ISUBPASSINPUTMS = 545,
-    USUBPASSINPUT = 546,
-    USUBPASSINPUTMS = 547,
-    F16SUBPASSINPUT = 548,
-    F16SUBPASSINPUTMS = 549,
-    LEFT_OP = 550,
-    RIGHT_OP = 551,
-    INC_OP = 552,
-    DEC_OP = 553,
-    LE_OP = 554,
-    GE_OP = 555,
-    EQ_OP = 556,
-    NE_OP = 557,
-    AND_OP = 558,
-    OR_OP = 559,
-    XOR_OP = 560,
-    MUL_ASSIGN = 561,
-    DIV_ASSIGN = 562,
-    ADD_ASSIGN = 563,
-    MOD_ASSIGN = 564,
-    LEFT_ASSIGN = 565,
-    RIGHT_ASSIGN = 566,
-    AND_ASSIGN = 567,
-    XOR_ASSIGN = 568,
-    OR_ASSIGN = 569,
-    SUB_ASSIGN = 570,
-    STRING_LITERAL = 571,
-    LEFT_PAREN = 572,
-    RIGHT_PAREN = 573,
-    LEFT_BRACKET = 574,
-    RIGHT_BRACKET = 575,
-    LEFT_BRACE = 576,
-    RIGHT_BRACE = 577,
-    DOT = 578,
-    COMMA = 579,
-    COLON = 580,
-    EQUAL = 581,
-    SEMICOLON = 582,
-    BANG = 583,
-    DASH = 584,
-    TILDE = 585,
-    PLUS = 586,
-    STAR = 587,
-    SLASH = 588,
-    PERCENT = 589,
-    LEFT_ANGLE = 590,
-    RIGHT_ANGLE = 591,
-    VERTICAL_BAR = 592,
-    CARET = 593,
-    AMPERSAND = 594,
-    QUESTION = 595,
-    INVARIANT = 596,
-    HIGH_PRECISION = 597,
-    MEDIUM_PRECISION = 598,
-    LOW_PRECISION = 599,
-    PRECISION = 600,
-    PACKED = 601,
-    RESOURCE = 602,
-    SUPERP = 603,
-    FLOATCONSTANT = 604,
-    INTCONSTANT = 605,
-    UINTCONSTANT = 606,
-    BOOLCONSTANT = 607,
-    IDENTIFIER = 608,
-    TYPE_NAME = 609,
-    CENTROID = 610,
-    IN = 611,
-    OUT = 612,
-    INOUT = 613,
-    STRUCT = 614,
-    VOID = 615,
-    WHILE = 616,
-    BREAK = 617,
-    CONTINUE = 618,
-    DO = 619,
-    ELSE = 620,
-    FOR = 621,
-    IF = 622,
-    DISCARD = 623,
-    RETURN = 624,
-    SWITCH = 625,
-    CASE = 626,
-    DEFAULT = 627,
-    UNIFORM = 628,
-    SHARED = 629,
-    BUFFER = 630,
-    FLAT = 631,
-    SMOOTH = 632,
-    LAYOUT = 633,
-    DOUBLECONSTANT = 634,
-    INT16CONSTANT = 635,
-    UINT16CONSTANT = 636,
-    FLOAT16CONSTANT = 637,
-    INT32CONSTANT = 638,
-    UINT32CONSTANT = 639,
-    INT64CONSTANT = 640,
-    UINT64CONSTANT = 641,
-    SUBROUTINE = 642,
-    DEMOTE = 643,
-    PAYLOADNV = 644,
-    PAYLOADINNV = 645,
-    HITATTRNV = 646,
-    CALLDATANV = 647,
-    CALLDATAINNV = 648,
-    PAYLOADEXT = 649,
-    PAYLOADINEXT = 650,
-    HITATTREXT = 651,
-    CALLDATAEXT = 652,
-    CALLDATAINEXT = 653,
-    PATCH = 654,
-    SAMPLE = 655,
-    NONUNIFORM = 656,
-    COHERENT = 657,
-    VOLATILE = 658,
-    RESTRICT = 659,
-    READONLY = 660,
-    WRITEONLY = 661,
-    DEVICECOHERENT = 662,
-    QUEUEFAMILYCOHERENT = 663,
-    WORKGROUPCOHERENT = 664,
-    SUBGROUPCOHERENT = 665,
-    NONPRIVATE = 666,
-    SHADERCALLCOHERENT = 667,
-    NOPERSPECTIVE = 668,
-    EXPLICITINTERPAMD = 669,
-    PERVERTEXNV = 670,
-    PERPRIMITIVENV = 671,
-    PERVIEWNV = 672,
-    PERTASKNV = 673,
-    PRECISE = 674
-  };
-#endif
-
-/* Value type.  */
-#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
-
-union YYSTYPE
+#include "glslang_tab.cpp.h"
+/* Symbol kind.  */
+enum yysymbol_kind_t
 {
-#line 97 "glslang.y" /* yacc.c:355  */
-
-    struct {
-        glslang::TSourceLoc loc;
-        union {
-            glslang::TString *string;
-            int i;
-            unsigned int u;
-            long long i64;
-            unsigned long long u64;
-            bool b;
-            double d;
-        };
-        glslang::TSymbol* symbol;
-    } lex;
-    struct {
-        glslang::TSourceLoc loc;
-        glslang::TOperator op;
-        union {
-            TIntermNode* intermNode;
-            glslang::TIntermNodePair nodePair;
-            glslang::TIntermTyped* intermTypedNode;
-            glslang::TAttributes* attributes;
-        };
-        union {
-            glslang::TPublicType type;
-            glslang::TFunction* function;
-            glslang::TParameter param;
-            glslang::TTypeLoc typeLine;
-            glslang::TTypeList* typeList;
-            glslang::TArraySizes* arraySizes;
-            glslang::TIdentifierList* identifierList;
-        };
-        glslang::TArraySizes* typeParameters;
-    } interm;
-
-#line 588 "glslang_tab.cpp" /* yacc.c:355  */
+  YYSYMBOL_YYEMPTY = -2,
+  YYSYMBOL_YYEOF = 0,                      /* "end of file"  */
+  YYSYMBOL_YYerror = 1,                    /* error  */
+  YYSYMBOL_YYUNDEF = 2,                    /* "invalid token"  */
+  YYSYMBOL_CONST = 3,                      /* CONST  */
+  YYSYMBOL_BOOL = 4,                       /* BOOL  */
+  YYSYMBOL_INT = 5,                        /* INT  */
+  YYSYMBOL_UINT = 6,                       /* UINT  */
+  YYSYMBOL_FLOAT = 7,                      /* FLOAT  */
+  YYSYMBOL_BVEC2 = 8,                      /* BVEC2  */
+  YYSYMBOL_BVEC3 = 9,                      /* BVEC3  */
+  YYSYMBOL_BVEC4 = 10,                     /* BVEC4  */
+  YYSYMBOL_IVEC2 = 11,                     /* IVEC2  */
+  YYSYMBOL_IVEC3 = 12,                     /* IVEC3  */
+  YYSYMBOL_IVEC4 = 13,                     /* IVEC4  */
+  YYSYMBOL_UVEC2 = 14,                     /* UVEC2  */
+  YYSYMBOL_UVEC3 = 15,                     /* UVEC3  */
+  YYSYMBOL_UVEC4 = 16,                     /* UVEC4  */
+  YYSYMBOL_VEC2 = 17,                      /* VEC2  */
+  YYSYMBOL_VEC3 = 18,                      /* VEC3  */
+  YYSYMBOL_VEC4 = 19,                      /* VEC4  */
+  YYSYMBOL_MAT2 = 20,                      /* MAT2  */
+  YYSYMBOL_MAT3 = 21,                      /* MAT3  */
+  YYSYMBOL_MAT4 = 22,                      /* MAT4  */
+  YYSYMBOL_MAT2X2 = 23,                    /* MAT2X2  */
+  YYSYMBOL_MAT2X3 = 24,                    /* MAT2X3  */
+  YYSYMBOL_MAT2X4 = 25,                    /* MAT2X4  */
+  YYSYMBOL_MAT3X2 = 26,                    /* MAT3X2  */
+  YYSYMBOL_MAT3X3 = 27,                    /* MAT3X3  */
+  YYSYMBOL_MAT3X4 = 28,                    /* MAT3X4  */
+  YYSYMBOL_MAT4X2 = 29,                    /* MAT4X2  */
+  YYSYMBOL_MAT4X3 = 30,                    /* MAT4X3  */
+  YYSYMBOL_MAT4X4 = 31,                    /* MAT4X4  */
+  YYSYMBOL_SAMPLER2D = 32,                 /* SAMPLER2D  */
+  YYSYMBOL_SAMPLER3D = 33,                 /* SAMPLER3D  */
+  YYSYMBOL_SAMPLERCUBE = 34,               /* SAMPLERCUBE  */
+  YYSYMBOL_SAMPLER2DSHADOW = 35,           /* SAMPLER2DSHADOW  */
+  YYSYMBOL_SAMPLERCUBESHADOW = 36,         /* SAMPLERCUBESHADOW  */
+  YYSYMBOL_SAMPLER2DARRAY = 37,            /* SAMPLER2DARRAY  */
+  YYSYMBOL_SAMPLER2DARRAYSHADOW = 38,      /* SAMPLER2DARRAYSHADOW  */
+  YYSYMBOL_ISAMPLER2D = 39,                /* ISAMPLER2D  */
+  YYSYMBOL_ISAMPLER3D = 40,                /* ISAMPLER3D  */
+  YYSYMBOL_ISAMPLERCUBE = 41,              /* ISAMPLERCUBE  */
+  YYSYMBOL_ISAMPLER2DARRAY = 42,           /* ISAMPLER2DARRAY  */
+  YYSYMBOL_USAMPLER2D = 43,                /* USAMPLER2D  */
+  YYSYMBOL_USAMPLER3D = 44,                /* USAMPLER3D  */
+  YYSYMBOL_USAMPLERCUBE = 45,              /* USAMPLERCUBE  */
+  YYSYMBOL_USAMPLER2DARRAY = 46,           /* USAMPLER2DARRAY  */
+  YYSYMBOL_SAMPLER = 47,                   /* SAMPLER  */
+  YYSYMBOL_SAMPLERSHADOW = 48,             /* SAMPLERSHADOW  */
+  YYSYMBOL_TEXTURE2D = 49,                 /* TEXTURE2D  */
+  YYSYMBOL_TEXTURE3D = 50,                 /* TEXTURE3D  */
+  YYSYMBOL_TEXTURECUBE = 51,               /* TEXTURECUBE  */
+  YYSYMBOL_TEXTURE2DARRAY = 52,            /* TEXTURE2DARRAY  */
+  YYSYMBOL_ITEXTURE2D = 53,                /* ITEXTURE2D  */
+  YYSYMBOL_ITEXTURE3D = 54,                /* ITEXTURE3D  */
+  YYSYMBOL_ITEXTURECUBE = 55,              /* ITEXTURECUBE  */
+  YYSYMBOL_ITEXTURE2DARRAY = 56,           /* ITEXTURE2DARRAY  */
+  YYSYMBOL_UTEXTURE2D = 57,                /* UTEXTURE2D  */
+  YYSYMBOL_UTEXTURE3D = 58,                /* UTEXTURE3D  */
+  YYSYMBOL_UTEXTURECUBE = 59,              /* UTEXTURECUBE  */
+  YYSYMBOL_UTEXTURE2DARRAY = 60,           /* UTEXTURE2DARRAY  */
+  YYSYMBOL_ATTRIBUTE = 61,                 /* ATTRIBUTE  */
+  YYSYMBOL_VARYING = 62,                   /* VARYING  */
+  YYSYMBOL_FLOAT16_T = 63,                 /* FLOAT16_T  */
+  YYSYMBOL_FLOAT32_T = 64,                 /* FLOAT32_T  */
+  YYSYMBOL_DOUBLE = 65,                    /* DOUBLE  */
+  YYSYMBOL_FLOAT64_T = 66,                 /* FLOAT64_T  */
+  YYSYMBOL_INT64_T = 67,                   /* INT64_T  */
+  YYSYMBOL_UINT64_T = 68,                  /* UINT64_T  */
+  YYSYMBOL_INT32_T = 69,                   /* INT32_T  */
+  YYSYMBOL_UINT32_T = 70,                  /* UINT32_T  */
+  YYSYMBOL_INT16_T = 71,                   /* INT16_T  */
+  YYSYMBOL_UINT16_T = 72,                  /* UINT16_T  */
+  YYSYMBOL_INT8_T = 73,                    /* INT8_T  */
+  YYSYMBOL_UINT8_T = 74,                   /* UINT8_T  */
+  YYSYMBOL_I64VEC2 = 75,                   /* I64VEC2  */
+  YYSYMBOL_I64VEC3 = 76,                   /* I64VEC3  */
+  YYSYMBOL_I64VEC4 = 77,                   /* I64VEC4  */
+  YYSYMBOL_U64VEC2 = 78,                   /* U64VEC2  */
+  YYSYMBOL_U64VEC3 = 79,                   /* U64VEC3  */
+  YYSYMBOL_U64VEC4 = 80,                   /* U64VEC4  */
+  YYSYMBOL_I32VEC2 = 81,                   /* I32VEC2  */
+  YYSYMBOL_I32VEC3 = 82,                   /* I32VEC3  */
+  YYSYMBOL_I32VEC4 = 83,                   /* I32VEC4  */
+  YYSYMBOL_U32VEC2 = 84,                   /* U32VEC2  */
+  YYSYMBOL_U32VEC3 = 85,                   /* U32VEC3  */
+  YYSYMBOL_U32VEC4 = 86,                   /* U32VEC4  */
+  YYSYMBOL_I16VEC2 = 87,                   /* I16VEC2  */
+  YYSYMBOL_I16VEC3 = 88,                   /* I16VEC3  */
+  YYSYMBOL_I16VEC4 = 89,                   /* I16VEC4  */
+  YYSYMBOL_U16VEC2 = 90,                   /* U16VEC2  */
+  YYSYMBOL_U16VEC3 = 91,                   /* U16VEC3  */
+  YYSYMBOL_U16VEC4 = 92,                   /* U16VEC4  */
+  YYSYMBOL_I8VEC2 = 93,                    /* I8VEC2  */
+  YYSYMBOL_I8VEC3 = 94,                    /* I8VEC3  */
+  YYSYMBOL_I8VEC4 = 95,                    /* I8VEC4  */
+  YYSYMBOL_U8VEC2 = 96,                    /* U8VEC2  */
+  YYSYMBOL_U8VEC3 = 97,                    /* U8VEC3  */
+  YYSYMBOL_U8VEC4 = 98,                    /* U8VEC4  */
+  YYSYMBOL_DVEC2 = 99,                     /* DVEC2  */
+  YYSYMBOL_DVEC3 = 100,                    /* DVEC3  */
+  YYSYMBOL_DVEC4 = 101,                    /* DVEC4  */
+  YYSYMBOL_DMAT2 = 102,                    /* DMAT2  */
+  YYSYMBOL_DMAT3 = 103,                    /* DMAT3  */
+  YYSYMBOL_DMAT4 = 104,                    /* DMAT4  */
+  YYSYMBOL_F16VEC2 = 105,                  /* F16VEC2  */
+  YYSYMBOL_F16VEC3 = 106,                  /* F16VEC3  */
+  YYSYMBOL_F16VEC4 = 107,                  /* F16VEC4  */
+  YYSYMBOL_F16MAT2 = 108,                  /* F16MAT2  */
+  YYSYMBOL_F16MAT3 = 109,                  /* F16MAT3  */
+  YYSYMBOL_F16MAT4 = 110,                  /* F16MAT4  */
+  YYSYMBOL_F32VEC2 = 111,                  /* F32VEC2  */
+  YYSYMBOL_F32VEC3 = 112,                  /* F32VEC3  */
+  YYSYMBOL_F32VEC4 = 113,                  /* F32VEC4  */
+  YYSYMBOL_F32MAT2 = 114,                  /* F32MAT2  */
+  YYSYMBOL_F32MAT3 = 115,                  /* F32MAT3  */
+  YYSYMBOL_F32MAT4 = 116,                  /* F32MAT4  */
+  YYSYMBOL_F64VEC2 = 117,                  /* F64VEC2  */
+  YYSYMBOL_F64VEC3 = 118,                  /* F64VEC3  */
+  YYSYMBOL_F64VEC4 = 119,                  /* F64VEC4  */
+  YYSYMBOL_F64MAT2 = 120,                  /* F64MAT2  */
+  YYSYMBOL_F64MAT3 = 121,                  /* F64MAT3  */
+  YYSYMBOL_F64MAT4 = 122,                  /* F64MAT4  */
+  YYSYMBOL_DMAT2X2 = 123,                  /* DMAT2X2  */
+  YYSYMBOL_DMAT2X3 = 124,                  /* DMAT2X3  */
+  YYSYMBOL_DMAT2X4 = 125,                  /* DMAT2X4  */
+  YYSYMBOL_DMAT3X2 = 126,                  /* DMAT3X2  */
+  YYSYMBOL_DMAT3X3 = 127,                  /* DMAT3X3  */
+  YYSYMBOL_DMAT3X4 = 128,                  /* DMAT3X4  */
+  YYSYMBOL_DMAT4X2 = 129,                  /* DMAT4X2  */
+  YYSYMBOL_DMAT4X3 = 130,                  /* DMAT4X3  */
+  YYSYMBOL_DMAT4X4 = 131,                  /* DMAT4X4  */
+  YYSYMBOL_F16MAT2X2 = 132,                /* F16MAT2X2  */
+  YYSYMBOL_F16MAT2X3 = 133,                /* F16MAT2X3  */
+  YYSYMBOL_F16MAT2X4 = 134,                /* F16MAT2X4  */
+  YYSYMBOL_F16MAT3X2 = 135,                /* F16MAT3X2  */
+  YYSYMBOL_F16MAT3X3 = 136,                /* F16MAT3X3  */
+  YYSYMBOL_F16MAT3X4 = 137,                /* F16MAT3X4  */
+  YYSYMBOL_F16MAT4X2 = 138,                /* F16MAT4X2  */
+  YYSYMBOL_F16MAT4X3 = 139,                /* F16MAT4X3  */
+  YYSYMBOL_F16MAT4X4 = 140,                /* F16MAT4X4  */
+  YYSYMBOL_F32MAT2X2 = 141,                /* F32MAT2X2  */
+  YYSYMBOL_F32MAT2X3 = 142,                /* F32MAT2X3  */
+  YYSYMBOL_F32MAT2X4 = 143,                /* F32MAT2X4  */
+  YYSYMBOL_F32MAT3X2 = 144,                /* F32MAT3X2  */
+  YYSYMBOL_F32MAT3X3 = 145,                /* F32MAT3X3  */
+  YYSYMBOL_F32MAT3X4 = 146,                /* F32MAT3X4  */
+  YYSYMBOL_F32MAT4X2 = 147,                /* F32MAT4X2  */
+  YYSYMBOL_F32MAT4X3 = 148,                /* F32MAT4X3  */
+  YYSYMBOL_F32MAT4X4 = 149,                /* F32MAT4X4  */
+  YYSYMBOL_F64MAT2X2 = 150,                /* F64MAT2X2  */
+  YYSYMBOL_F64MAT2X3 = 151,                /* F64MAT2X3  */
+  YYSYMBOL_F64MAT2X4 = 152,                /* F64MAT2X4  */
+  YYSYMBOL_F64MAT3X2 = 153,                /* F64MAT3X2  */
+  YYSYMBOL_F64MAT3X3 = 154,                /* F64MAT3X3  */
+  YYSYMBOL_F64MAT3X4 = 155,                /* F64MAT3X4  */
+  YYSYMBOL_F64MAT4X2 = 156,                /* F64MAT4X2  */
+  YYSYMBOL_F64MAT4X3 = 157,                /* F64MAT4X3  */
+  YYSYMBOL_F64MAT4X4 = 158,                /* F64MAT4X4  */
+  YYSYMBOL_ATOMIC_UINT = 159,              /* ATOMIC_UINT  */
+  YYSYMBOL_ACCSTRUCTNV = 160,              /* ACCSTRUCTNV  */
+  YYSYMBOL_ACCSTRUCTEXT = 161,             /* ACCSTRUCTEXT  */
+  YYSYMBOL_RAYQUERYEXT = 162,              /* RAYQUERYEXT  */
+  YYSYMBOL_FCOOPMATNV = 163,               /* FCOOPMATNV  */
+  YYSYMBOL_ICOOPMATNV = 164,               /* ICOOPMATNV  */
+  YYSYMBOL_UCOOPMATNV = 165,               /* UCOOPMATNV  */
+  YYSYMBOL_SAMPLERCUBEARRAY = 166,         /* SAMPLERCUBEARRAY  */
+  YYSYMBOL_SAMPLERCUBEARRAYSHADOW = 167,   /* SAMPLERCUBEARRAYSHADOW  */
+  YYSYMBOL_ISAMPLERCUBEARRAY = 168,        /* ISAMPLERCUBEARRAY  */
+  YYSYMBOL_USAMPLERCUBEARRAY = 169,        /* USAMPLERCUBEARRAY  */
+  YYSYMBOL_SAMPLER1D = 170,                /* SAMPLER1D  */
+  YYSYMBOL_SAMPLER1DARRAY = 171,           /* SAMPLER1DARRAY  */
+  YYSYMBOL_SAMPLER1DARRAYSHADOW = 172,     /* SAMPLER1DARRAYSHADOW  */
+  YYSYMBOL_ISAMPLER1D = 173,               /* ISAMPLER1D  */
+  YYSYMBOL_SAMPLER1DSHADOW = 174,          /* SAMPLER1DSHADOW  */
+  YYSYMBOL_SAMPLER2DRECT = 175,            /* SAMPLER2DRECT  */
+  YYSYMBOL_SAMPLER2DRECTSHADOW = 176,      /* SAMPLER2DRECTSHADOW  */
+  YYSYMBOL_ISAMPLER2DRECT = 177,           /* ISAMPLER2DRECT  */
+  YYSYMBOL_USAMPLER2DRECT = 178,           /* USAMPLER2DRECT  */
+  YYSYMBOL_SAMPLERBUFFER = 179,            /* SAMPLERBUFFER  */
+  YYSYMBOL_ISAMPLERBUFFER = 180,           /* ISAMPLERBUFFER  */
+  YYSYMBOL_USAMPLERBUFFER = 181,           /* USAMPLERBUFFER  */
+  YYSYMBOL_SAMPLER2DMS = 182,              /* SAMPLER2DMS  */
+  YYSYMBOL_ISAMPLER2DMS = 183,             /* ISAMPLER2DMS  */
+  YYSYMBOL_USAMPLER2DMS = 184,             /* USAMPLER2DMS  */
+  YYSYMBOL_SAMPLER2DMSARRAY = 185,         /* SAMPLER2DMSARRAY  */
+  YYSYMBOL_ISAMPLER2DMSARRAY = 186,        /* ISAMPLER2DMSARRAY  */
+  YYSYMBOL_USAMPLER2DMSARRAY = 187,        /* USAMPLER2DMSARRAY  */
+  YYSYMBOL_SAMPLEREXTERNALOES = 188,       /* SAMPLEREXTERNALOES  */
+  YYSYMBOL_SAMPLEREXTERNAL2DY2YEXT = 189,  /* SAMPLEREXTERNAL2DY2YEXT  */
+  YYSYMBOL_ISAMPLER1DARRAY = 190,          /* ISAMPLER1DARRAY  */
+  YYSYMBOL_USAMPLER1D = 191,               /* USAMPLER1D  */
+  YYSYMBOL_USAMPLER1DARRAY = 192,          /* USAMPLER1DARRAY  */
+  YYSYMBOL_F16SAMPLER1D = 193,             /* F16SAMPLER1D  */
+  YYSYMBOL_F16SAMPLER2D = 194,             /* F16SAMPLER2D  */
+  YYSYMBOL_F16SAMPLER3D = 195,             /* F16SAMPLER3D  */
+  YYSYMBOL_F16SAMPLER2DRECT = 196,         /* F16SAMPLER2DRECT  */
+  YYSYMBOL_F16SAMPLERCUBE = 197,           /* F16SAMPLERCUBE  */
+  YYSYMBOL_F16SAMPLER1DARRAY = 198,        /* F16SAMPLER1DARRAY  */
+  YYSYMBOL_F16SAMPLER2DARRAY = 199,        /* F16SAMPLER2DARRAY  */
+  YYSYMBOL_F16SAMPLERCUBEARRAY = 200,      /* F16SAMPLERCUBEARRAY  */
+  YYSYMBOL_F16SAMPLERBUFFER = 201,         /* F16SAMPLERBUFFER  */
+  YYSYMBOL_F16SAMPLER2DMS = 202,           /* F16SAMPLER2DMS  */
+  YYSYMBOL_F16SAMPLER2DMSARRAY = 203,      /* F16SAMPLER2DMSARRAY  */
+  YYSYMBOL_F16SAMPLER1DSHADOW = 204,       /* F16SAMPLER1DSHADOW  */
+  YYSYMBOL_F16SAMPLER2DSHADOW = 205,       /* F16SAMPLER2DSHADOW  */
+  YYSYMBOL_F16SAMPLER1DARRAYSHADOW = 206,  /* F16SAMPLER1DARRAYSHADOW  */
+  YYSYMBOL_F16SAMPLER2DARRAYSHADOW = 207,  /* F16SAMPLER2DARRAYSHADOW  */
+  YYSYMBOL_F16SAMPLER2DRECTSHADOW = 208,   /* F16SAMPLER2DRECTSHADOW  */
+  YYSYMBOL_F16SAMPLERCUBESHADOW = 209,     /* F16SAMPLERCUBESHADOW  */
+  YYSYMBOL_F16SAMPLERCUBEARRAYSHADOW = 210, /* F16SAMPLERCUBEARRAYSHADOW  */
+  YYSYMBOL_IMAGE1D = 211,                  /* IMAGE1D  */
+  YYSYMBOL_IIMAGE1D = 212,                 /* IIMAGE1D  */
+  YYSYMBOL_UIMAGE1D = 213,                 /* UIMAGE1D  */
+  YYSYMBOL_IMAGE2D = 214,                  /* IMAGE2D  */
+  YYSYMBOL_IIMAGE2D = 215,                 /* IIMAGE2D  */
+  YYSYMBOL_UIMAGE2D = 216,                 /* UIMAGE2D  */
+  YYSYMBOL_IMAGE3D = 217,                  /* IMAGE3D  */
+  YYSYMBOL_IIMAGE3D = 218,                 /* IIMAGE3D  */
+  YYSYMBOL_UIMAGE3D = 219,                 /* UIMAGE3D  */
+  YYSYMBOL_IMAGE2DRECT = 220,              /* IMAGE2DRECT  */
+  YYSYMBOL_IIMAGE2DRECT = 221,             /* IIMAGE2DRECT  */
+  YYSYMBOL_UIMAGE2DRECT = 222,             /* UIMAGE2DRECT  */
+  YYSYMBOL_IMAGECUBE = 223,                /* IMAGECUBE  */
+  YYSYMBOL_IIMAGECUBE = 224,               /* IIMAGECUBE  */
+  YYSYMBOL_UIMAGECUBE = 225,               /* UIMAGECUBE  */
+  YYSYMBOL_IMAGEBUFFER = 226,              /* IMAGEBUFFER  */
+  YYSYMBOL_IIMAGEBUFFER = 227,             /* IIMAGEBUFFER  */
+  YYSYMBOL_UIMAGEBUFFER = 228,             /* UIMAGEBUFFER  */
+  YYSYMBOL_IMAGE1DARRAY = 229,             /* IMAGE1DARRAY  */
+  YYSYMBOL_IIMAGE1DARRAY = 230,            /* IIMAGE1DARRAY  */
+  YYSYMBOL_UIMAGE1DARRAY = 231,            /* UIMAGE1DARRAY  */
+  YYSYMBOL_IMAGE2DARRAY = 232,             /* IMAGE2DARRAY  */
+  YYSYMBOL_IIMAGE2DARRAY = 233,            /* IIMAGE2DARRAY  */
+  YYSYMBOL_UIMAGE2DARRAY = 234,            /* UIMAGE2DARRAY  */
+  YYSYMBOL_IMAGECUBEARRAY = 235,           /* IMAGECUBEARRAY  */
+  YYSYMBOL_IIMAGECUBEARRAY = 236,          /* IIMAGECUBEARRAY  */
+  YYSYMBOL_UIMAGECUBEARRAY = 237,          /* UIMAGECUBEARRAY  */
+  YYSYMBOL_IMAGE2DMS = 238,                /* IMAGE2DMS  */
+  YYSYMBOL_IIMAGE2DMS = 239,               /* IIMAGE2DMS  */
+  YYSYMBOL_UIMAGE2DMS = 240,               /* UIMAGE2DMS  */
+  YYSYMBOL_IMAGE2DMSARRAY = 241,           /* IMAGE2DMSARRAY  */
+  YYSYMBOL_IIMAGE2DMSARRAY = 242,          /* IIMAGE2DMSARRAY  */
+  YYSYMBOL_UIMAGE2DMSARRAY = 243,          /* UIMAGE2DMSARRAY  */
+  YYSYMBOL_F16IMAGE1D = 244,               /* F16IMAGE1D  */
+  YYSYMBOL_F16IMAGE2D = 245,               /* F16IMAGE2D  */
+  YYSYMBOL_F16IMAGE3D = 246,               /* F16IMAGE3D  */
+  YYSYMBOL_F16IMAGE2DRECT = 247,           /* F16IMAGE2DRECT  */
+  YYSYMBOL_F16IMAGECUBE = 248,             /* F16IMAGECUBE  */
+  YYSYMBOL_F16IMAGE1DARRAY = 249,          /* F16IMAGE1DARRAY  */
+  YYSYMBOL_F16IMAGE2DARRAY = 250,          /* F16IMAGE2DARRAY  */
+  YYSYMBOL_F16IMAGECUBEARRAY = 251,        /* F16IMAGECUBEARRAY  */
+  YYSYMBOL_F16IMAGEBUFFER = 252,           /* F16IMAGEBUFFER  */
+  YYSYMBOL_F16IMAGE2DMS = 253,             /* F16IMAGE2DMS  */
+  YYSYMBOL_F16IMAGE2DMSARRAY = 254,        /* F16IMAGE2DMSARRAY  */
+  YYSYMBOL_I64IMAGE1D = 255,               /* I64IMAGE1D  */
+  YYSYMBOL_U64IMAGE1D = 256,               /* U64IMAGE1D  */
+  YYSYMBOL_I64IMAGE2D = 257,               /* I64IMAGE2D  */
+  YYSYMBOL_U64IMAGE2D = 258,               /* U64IMAGE2D  */
+  YYSYMBOL_I64IMAGE3D = 259,               /* I64IMAGE3D  */
+  YYSYMBOL_U64IMAGE3D = 260,               /* U64IMAGE3D  */
+  YYSYMBOL_I64IMAGE2DRECT = 261,           /* I64IMAGE2DRECT  */
+  YYSYMBOL_U64IMAGE2DRECT = 262,           /* U64IMAGE2DRECT  */
+  YYSYMBOL_I64IMAGECUBE = 263,             /* I64IMAGECUBE  */
+  YYSYMBOL_U64IMAGECUBE = 264,             /* U64IMAGECUBE  */
+  YYSYMBOL_I64IMAGEBUFFER = 265,           /* I64IMAGEBUFFER  */
+  YYSYMBOL_U64IMAGEBUFFER = 266,           /* U64IMAGEBUFFER  */
+  YYSYMBOL_I64IMAGE1DARRAY = 267,          /* I64IMAGE1DARRAY  */
+  YYSYMBOL_U64IMAGE1DARRAY = 268,          /* U64IMAGE1DARRAY  */
+  YYSYMBOL_I64IMAGE2DARRAY = 269,          /* I64IMAGE2DARRAY  */
+  YYSYMBOL_U64IMAGE2DARRAY = 270,          /* U64IMAGE2DARRAY  */
+  YYSYMBOL_I64IMAGECUBEARRAY = 271,        /* I64IMAGECUBEARRAY  */
+  YYSYMBOL_U64IMAGECUBEARRAY = 272,        /* U64IMAGECUBEARRAY  */
+  YYSYMBOL_I64IMAGE2DMS = 273,             /* I64IMAGE2DMS  */
+  YYSYMBOL_U64IMAGE2DMS = 274,             /* U64IMAGE2DMS  */
+  YYSYMBOL_I64IMAGE2DMSARRAY = 275,        /* I64IMAGE2DMSARRAY  */
+  YYSYMBOL_U64IMAGE2DMSARRAY = 276,        /* U64IMAGE2DMSARRAY  */
+  YYSYMBOL_TEXTURECUBEARRAY = 277,         /* TEXTURECUBEARRAY  */
+  YYSYMBOL_ITEXTURECUBEARRAY = 278,        /* ITEXTURECUBEARRAY  */
+  YYSYMBOL_UTEXTURECUBEARRAY = 279,        /* UTEXTURECUBEARRAY  */
+  YYSYMBOL_TEXTURE1D = 280,                /* TEXTURE1D  */
+  YYSYMBOL_ITEXTURE1D = 281,               /* ITEXTURE1D  */
+  YYSYMBOL_UTEXTURE1D = 282,               /* UTEXTURE1D  */
+  YYSYMBOL_TEXTURE1DARRAY = 283,           /* TEXTURE1DARRAY  */
+  YYSYMBOL_ITEXTURE1DARRAY = 284,          /* ITEXTURE1DARRAY  */
+  YYSYMBOL_UTEXTURE1DARRAY = 285,          /* UTEXTURE1DARRAY  */
+  YYSYMBOL_TEXTURE2DRECT = 286,            /* TEXTURE2DRECT  */
+  YYSYMBOL_ITEXTURE2DRECT = 287,           /* ITEXTURE2DRECT  */
+  YYSYMBOL_UTEXTURE2DRECT = 288,           /* UTEXTURE2DRECT  */
+  YYSYMBOL_TEXTUREBUFFER = 289,            /* TEXTUREBUFFER  */
+  YYSYMBOL_ITEXTUREBUFFER = 290,           /* ITEXTUREBUFFER  */
+  YYSYMBOL_UTEXTUREBUFFER = 291,           /* UTEXTUREBUFFER  */
+  YYSYMBOL_TEXTURE2DMS = 292,              /* TEXTURE2DMS  */
+  YYSYMBOL_ITEXTURE2DMS = 293,             /* ITEXTURE2DMS  */
+  YYSYMBOL_UTEXTURE2DMS = 294,             /* UTEXTURE2DMS  */
+  YYSYMBOL_TEXTURE2DMSARRAY = 295,         /* TEXTURE2DMSARRAY  */
+  YYSYMBOL_ITEXTURE2DMSARRAY = 296,        /* ITEXTURE2DMSARRAY  */
+  YYSYMBOL_UTEXTURE2DMSARRAY = 297,        /* UTEXTURE2DMSARRAY  */
+  YYSYMBOL_F16TEXTURE1D = 298,             /* F16TEXTURE1D  */
+  YYSYMBOL_F16TEXTURE2D = 299,             /* F16TEXTURE2D  */
+  YYSYMBOL_F16TEXTURE3D = 300,             /* F16TEXTURE3D  */
+  YYSYMBOL_F16TEXTURE2DRECT = 301,         /* F16TEXTURE2DRECT  */
+  YYSYMBOL_F16TEXTURECUBE = 302,           /* F16TEXTURECUBE  */
+  YYSYMBOL_F16TEXTURE1DARRAY = 303,        /* F16TEXTURE1DARRAY  */
+  YYSYMBOL_F16TEXTURE2DARRAY = 304,        /* F16TEXTURE2DARRAY  */
+  YYSYMBOL_F16TEXTURECUBEARRAY = 305,      /* F16TEXTURECUBEARRAY  */
+  YYSYMBOL_F16TEXTUREBUFFER = 306,         /* F16TEXTUREBUFFER  */
+  YYSYMBOL_F16TEXTURE2DMS = 307,           /* F16TEXTURE2DMS  */
+  YYSYMBOL_F16TEXTURE2DMSARRAY = 308,      /* F16TEXTURE2DMSARRAY  */
+  YYSYMBOL_SUBPASSINPUT = 309,             /* SUBPASSINPUT  */
+  YYSYMBOL_SUBPASSINPUTMS = 310,           /* SUBPASSINPUTMS  */
+  YYSYMBOL_ISUBPASSINPUT = 311,            /* ISUBPASSINPUT  */
+  YYSYMBOL_ISUBPASSINPUTMS = 312,          /* ISUBPASSINPUTMS  */
+  YYSYMBOL_USUBPASSINPUT = 313,            /* USUBPASSINPUT  */
+  YYSYMBOL_USUBPASSINPUTMS = 314,          /* USUBPASSINPUTMS  */
+  YYSYMBOL_F16SUBPASSINPUT = 315,          /* F16SUBPASSINPUT  */
+  YYSYMBOL_F16SUBPASSINPUTMS = 316,        /* F16SUBPASSINPUTMS  */
+  YYSYMBOL_LEFT_OP = 317,                  /* LEFT_OP  */
+  YYSYMBOL_RIGHT_OP = 318,                 /* RIGHT_OP  */
+  YYSYMBOL_INC_OP = 319,                   /* INC_OP  */
+  YYSYMBOL_DEC_OP = 320,                   /* DEC_OP  */
+  YYSYMBOL_LE_OP = 321,                    /* LE_OP  */
+  YYSYMBOL_GE_OP = 322,                    /* GE_OP  */
+  YYSYMBOL_EQ_OP = 323,                    /* EQ_OP  */
+  YYSYMBOL_NE_OP = 324,                    /* NE_OP  */
+  YYSYMBOL_AND_OP = 325,                   /* AND_OP  */
+  YYSYMBOL_OR_OP = 326,                    /* OR_OP  */
+  YYSYMBOL_XOR_OP = 327,                   /* XOR_OP  */
+  YYSYMBOL_MUL_ASSIGN = 328,               /* MUL_ASSIGN  */
+  YYSYMBOL_DIV_ASSIGN = 329,               /* DIV_ASSIGN  */
+  YYSYMBOL_ADD_ASSIGN = 330,               /* ADD_ASSIGN  */
+  YYSYMBOL_MOD_ASSIGN = 331,               /* MOD_ASSIGN  */
+  YYSYMBOL_LEFT_ASSIGN = 332,              /* LEFT_ASSIGN  */
+  YYSYMBOL_RIGHT_ASSIGN = 333,             /* RIGHT_ASSIGN  */
+  YYSYMBOL_AND_ASSIGN = 334,               /* AND_ASSIGN  */
+  YYSYMBOL_XOR_ASSIGN = 335,               /* XOR_ASSIGN  */
+  YYSYMBOL_OR_ASSIGN = 336,                /* OR_ASSIGN  */
+  YYSYMBOL_SUB_ASSIGN = 337,               /* SUB_ASSIGN  */
+  YYSYMBOL_STRING_LITERAL = 338,           /* STRING_LITERAL  */
+  YYSYMBOL_LEFT_PAREN = 339,               /* LEFT_PAREN  */
+  YYSYMBOL_RIGHT_PAREN = 340,              /* RIGHT_PAREN  */
+  YYSYMBOL_LEFT_BRACKET = 341,             /* LEFT_BRACKET  */
+  YYSYMBOL_RIGHT_BRACKET = 342,            /* RIGHT_BRACKET  */
+  YYSYMBOL_LEFT_BRACE = 343,               /* LEFT_BRACE  */
+  YYSYMBOL_RIGHT_BRACE = 344,              /* RIGHT_BRACE  */
+  YYSYMBOL_DOT = 345,                      /* DOT  */
+  YYSYMBOL_COMMA = 346,                    /* COMMA  */
+  YYSYMBOL_COLON = 347,                    /* COLON  */
+  YYSYMBOL_EQUAL = 348,                    /* EQUAL  */
+  YYSYMBOL_SEMICOLON = 349,                /* SEMICOLON  */
+  YYSYMBOL_BANG = 350,                     /* BANG  */
+  YYSYMBOL_DASH = 351,                     /* DASH  */
+  YYSYMBOL_TILDE = 352,                    /* TILDE  */
+  YYSYMBOL_PLUS = 353,                     /* PLUS  */
+  YYSYMBOL_STAR = 354,                     /* STAR  */
+  YYSYMBOL_SLASH = 355,                    /* SLASH  */
+  YYSYMBOL_PERCENT = 356,                  /* PERCENT  */
+  YYSYMBOL_LEFT_ANGLE = 357,               /* LEFT_ANGLE  */
+  YYSYMBOL_RIGHT_ANGLE = 358,              /* RIGHT_ANGLE  */
+  YYSYMBOL_VERTICAL_BAR = 359,             /* VERTICAL_BAR  */
+  YYSYMBOL_CARET = 360,                    /* CARET  */
+  YYSYMBOL_AMPERSAND = 361,                /* AMPERSAND  */
+  YYSYMBOL_QUESTION = 362,                 /* QUESTION  */
+  YYSYMBOL_INVARIANT = 363,                /* INVARIANT  */
+  YYSYMBOL_HIGH_PRECISION = 364,           /* HIGH_PRECISION  */
+  YYSYMBOL_MEDIUM_PRECISION = 365,         /* MEDIUM_PRECISION  */
+  YYSYMBOL_LOW_PRECISION = 366,            /* LOW_PRECISION  */
+  YYSYMBOL_PRECISION = 367,                /* PRECISION  */
+  YYSYMBOL_PACKED = 368,                   /* PACKED  */
+  YYSYMBOL_RESOURCE = 369,                 /* RESOURCE  */
+  YYSYMBOL_SUPERP = 370,                   /* SUPERP  */
+  YYSYMBOL_FLOATCONSTANT = 371,            /* FLOATCONSTANT  */
+  YYSYMBOL_INTCONSTANT = 372,              /* INTCONSTANT  */
+  YYSYMBOL_UINTCONSTANT = 373,             /* UINTCONSTANT  */
+  YYSYMBOL_BOOLCONSTANT = 374,             /* BOOLCONSTANT  */
+  YYSYMBOL_IDENTIFIER = 375,               /* IDENTIFIER  */
+  YYSYMBOL_TYPE_NAME = 376,                /* TYPE_NAME  */
+  YYSYMBOL_CENTROID = 377,                 /* CENTROID  */
+  YYSYMBOL_IN = 378,                       /* IN  */
+  YYSYMBOL_OUT = 379,                      /* OUT  */
+  YYSYMBOL_INOUT = 380,                    /* INOUT  */
+  YYSYMBOL_STRUCT = 381,                   /* STRUCT  */
+  YYSYMBOL_VOID = 382,                     /* VOID  */
+  YYSYMBOL_WHILE = 383,                    /* WHILE  */
+  YYSYMBOL_BREAK = 384,                    /* BREAK  */
+  YYSYMBOL_CONTINUE = 385,                 /* CONTINUE  */
+  YYSYMBOL_DO = 386,                       /* DO  */
+  YYSYMBOL_ELSE = 387,                     /* ELSE  */
+  YYSYMBOL_FOR = 388,                      /* FOR  */
+  YYSYMBOL_IF = 389,                       /* IF  */
+  YYSYMBOL_DISCARD = 390,                  /* DISCARD  */
+  YYSYMBOL_RETURN = 391,                   /* RETURN  */
+  YYSYMBOL_SWITCH = 392,                   /* SWITCH  */
+  YYSYMBOL_CASE = 393,                     /* CASE  */
+  YYSYMBOL_DEFAULT = 394,                  /* DEFAULT  */
+  YYSYMBOL_TERMINATE_INVOCATION = 395,     /* TERMINATE_INVOCATION  */
+  YYSYMBOL_TERMINATE_RAY = 396,            /* TERMINATE_RAY  */
+  YYSYMBOL_IGNORE_INTERSECTION = 397,      /* IGNORE_INTERSECTION  */
+  YYSYMBOL_UNIFORM = 398,                  /* UNIFORM  */
+  YYSYMBOL_SHARED = 399,                   /* SHARED  */
+  YYSYMBOL_BUFFER = 400,                   /* BUFFER  */
+  YYSYMBOL_FLAT = 401,                     /* FLAT  */
+  YYSYMBOL_SMOOTH = 402,                   /* SMOOTH  */
+  YYSYMBOL_LAYOUT = 403,                   /* LAYOUT  */
+  YYSYMBOL_DOUBLECONSTANT = 404,           /* DOUBLECONSTANT  */
+  YYSYMBOL_INT16CONSTANT = 405,            /* INT16CONSTANT  */
+  YYSYMBOL_UINT16CONSTANT = 406,           /* UINT16CONSTANT  */
+  YYSYMBOL_FLOAT16CONSTANT = 407,          /* FLOAT16CONSTANT  */
+  YYSYMBOL_INT32CONSTANT = 408,            /* INT32CONSTANT  */
+  YYSYMBOL_UINT32CONSTANT = 409,           /* UINT32CONSTANT  */
+  YYSYMBOL_INT64CONSTANT = 410,            /* INT64CONSTANT  */
+  YYSYMBOL_UINT64CONSTANT = 411,           /* UINT64CONSTANT  */
+  YYSYMBOL_SUBROUTINE = 412,               /* SUBROUTINE  */
+  YYSYMBOL_DEMOTE = 413,                   /* DEMOTE  */
+  YYSYMBOL_PAYLOADNV = 414,                /* PAYLOADNV  */
+  YYSYMBOL_PAYLOADINNV = 415,              /* PAYLOADINNV  */
+  YYSYMBOL_HITATTRNV = 416,                /* HITATTRNV  */
+  YYSYMBOL_CALLDATANV = 417,               /* CALLDATANV  */
+  YYSYMBOL_CALLDATAINNV = 418,             /* CALLDATAINNV  */
+  YYSYMBOL_PAYLOADEXT = 419,               /* PAYLOADEXT  */
+  YYSYMBOL_PAYLOADINEXT = 420,             /* PAYLOADINEXT  */
+  YYSYMBOL_HITATTREXT = 421,               /* HITATTREXT  */
+  YYSYMBOL_CALLDATAEXT = 422,              /* CALLDATAEXT  */
+  YYSYMBOL_CALLDATAINEXT = 423,            /* CALLDATAINEXT  */
+  YYSYMBOL_PATCH = 424,                    /* PATCH  */
+  YYSYMBOL_SAMPLE = 425,                   /* SAMPLE  */
+  YYSYMBOL_NONUNIFORM = 426,               /* NONUNIFORM  */
+  YYSYMBOL_COHERENT = 427,                 /* COHERENT  */
+  YYSYMBOL_VOLATILE = 428,                 /* VOLATILE  */
+  YYSYMBOL_RESTRICT = 429,                 /* RESTRICT  */
+  YYSYMBOL_READONLY = 430,                 /* READONLY  */
+  YYSYMBOL_WRITEONLY = 431,                /* WRITEONLY  */
+  YYSYMBOL_DEVICECOHERENT = 432,           /* DEVICECOHERENT  */
+  YYSYMBOL_QUEUEFAMILYCOHERENT = 433,      /* QUEUEFAMILYCOHERENT  */
+  YYSYMBOL_WORKGROUPCOHERENT = 434,        /* WORKGROUPCOHERENT  */
+  YYSYMBOL_SUBGROUPCOHERENT = 435,         /* SUBGROUPCOHERENT  */
+  YYSYMBOL_NONPRIVATE = 436,               /* NONPRIVATE  */
+  YYSYMBOL_SHADERCALLCOHERENT = 437,       /* SHADERCALLCOHERENT  */
+  YYSYMBOL_NOPERSPECTIVE = 438,            /* NOPERSPECTIVE  */
+  YYSYMBOL_EXPLICITINTERPAMD = 439,        /* EXPLICITINTERPAMD  */
+  YYSYMBOL_PERVERTEXNV = 440,              /* PERVERTEXNV  */
+  YYSYMBOL_PERPRIMITIVENV = 441,           /* PERPRIMITIVENV  */
+  YYSYMBOL_PERVIEWNV = 442,                /* PERVIEWNV  */
+  YYSYMBOL_PERTASKNV = 443,                /* PERTASKNV  */
+  YYSYMBOL_PRECISE = 444,                  /* PRECISE  */
+  YYSYMBOL_YYACCEPT = 445,                 /* $accept  */
+  YYSYMBOL_variable_identifier = 446,      /* variable_identifier  */
+  YYSYMBOL_primary_expression = 447,       /* primary_expression  */
+  YYSYMBOL_postfix_expression = 448,       /* postfix_expression  */
+  YYSYMBOL_integer_expression = 449,       /* integer_expression  */
+  YYSYMBOL_function_call = 450,            /* function_call  */
+  YYSYMBOL_function_call_or_method = 451,  /* function_call_or_method  */
+  YYSYMBOL_function_call_generic = 452,    /* function_call_generic  */
+  YYSYMBOL_function_call_header_no_parameters = 453, /* function_call_header_no_parameters  */
+  YYSYMBOL_function_call_header_with_parameters = 454, /* function_call_header_with_parameters  */
+  YYSYMBOL_function_call_header = 455,     /* function_call_header  */
+  YYSYMBOL_function_identifier = 456,      /* function_identifier  */
+  YYSYMBOL_unary_expression = 457,         /* unary_expression  */
+  YYSYMBOL_unary_operator = 458,           /* unary_operator  */
+  YYSYMBOL_multiplicative_expression = 459, /* multiplicative_expression  */
+  YYSYMBOL_additive_expression = 460,      /* additive_expression  */
+  YYSYMBOL_shift_expression = 461,         /* shift_expression  */
+  YYSYMBOL_relational_expression = 462,    /* relational_expression  */
+  YYSYMBOL_equality_expression = 463,      /* equality_expression  */
+  YYSYMBOL_and_expression = 464,           /* and_expression  */
+  YYSYMBOL_exclusive_or_expression = 465,  /* exclusive_or_expression  */
+  YYSYMBOL_inclusive_or_expression = 466,  /* inclusive_or_expression  */
+  YYSYMBOL_logical_and_expression = 467,   /* logical_and_expression  */
+  YYSYMBOL_logical_xor_expression = 468,   /* logical_xor_expression  */
+  YYSYMBOL_logical_or_expression = 469,    /* logical_or_expression  */
+  YYSYMBOL_conditional_expression = 470,   /* conditional_expression  */
+  YYSYMBOL_471_1 = 471,                    /* $@1  */
+  YYSYMBOL_assignment_expression = 472,    /* assignment_expression  */
+  YYSYMBOL_assignment_operator = 473,      /* assignment_operator  */
+  YYSYMBOL_expression = 474,               /* expression  */
+  YYSYMBOL_constant_expression = 475,      /* constant_expression  */
+  YYSYMBOL_declaration = 476,              /* declaration  */
+  YYSYMBOL_block_structure = 477,          /* block_structure  */
+  YYSYMBOL_478_2 = 478,                    /* $@2  */
+  YYSYMBOL_identifier_list = 479,          /* identifier_list  */
+  YYSYMBOL_function_prototype = 480,       /* function_prototype  */
+  YYSYMBOL_function_declarator = 481,      /* function_declarator  */
+  YYSYMBOL_function_header_with_parameters = 482, /* function_header_with_parameters  */
+  YYSYMBOL_function_header = 483,          /* function_header  */
+  YYSYMBOL_parameter_declarator = 484,     /* parameter_declarator  */
+  YYSYMBOL_parameter_declaration = 485,    /* parameter_declaration  */
+  YYSYMBOL_parameter_type_specifier = 486, /* parameter_type_specifier  */
+  YYSYMBOL_init_declarator_list = 487,     /* init_declarator_list  */
+  YYSYMBOL_single_declaration = 488,       /* single_declaration  */
+  YYSYMBOL_fully_specified_type = 489,     /* fully_specified_type  */
+  YYSYMBOL_invariant_qualifier = 490,      /* invariant_qualifier  */
+  YYSYMBOL_interpolation_qualifier = 491,  /* interpolation_qualifier  */
+  YYSYMBOL_layout_qualifier = 492,         /* layout_qualifier  */
+  YYSYMBOL_layout_qualifier_id_list = 493, /* layout_qualifier_id_list  */
+  YYSYMBOL_layout_qualifier_id = 494,      /* layout_qualifier_id  */
+  YYSYMBOL_precise_qualifier = 495,        /* precise_qualifier  */
+  YYSYMBOL_type_qualifier = 496,           /* type_qualifier  */
+  YYSYMBOL_single_type_qualifier = 497,    /* single_type_qualifier  */
+  YYSYMBOL_storage_qualifier = 498,        /* storage_qualifier  */
+  YYSYMBOL_non_uniform_qualifier = 499,    /* non_uniform_qualifier  */
+  YYSYMBOL_type_name_list = 500,           /* type_name_list  */
+  YYSYMBOL_type_specifier = 501,           /* type_specifier  */
+  YYSYMBOL_array_specifier = 502,          /* array_specifier  */
+  YYSYMBOL_type_parameter_specifier_opt = 503, /* type_parameter_specifier_opt  */
+  YYSYMBOL_type_parameter_specifier = 504, /* type_parameter_specifier  */
+  YYSYMBOL_type_parameter_specifier_list = 505, /* type_parameter_specifier_list  */
+  YYSYMBOL_type_specifier_nonarray = 506,  /* type_specifier_nonarray  */
+  YYSYMBOL_precision_qualifier = 507,      /* precision_qualifier  */
+  YYSYMBOL_struct_specifier = 508,         /* struct_specifier  */
+  YYSYMBOL_509_3 = 509,                    /* $@3  */
+  YYSYMBOL_510_4 = 510,                    /* $@4  */
+  YYSYMBOL_struct_declaration_list = 511,  /* struct_declaration_list  */
+  YYSYMBOL_struct_declaration = 512,       /* struct_declaration  */
+  YYSYMBOL_struct_declarator_list = 513,   /* struct_declarator_list  */
+  YYSYMBOL_struct_declarator = 514,        /* struct_declarator  */
+  YYSYMBOL_initializer = 515,              /* initializer  */
+  YYSYMBOL_initializer_list = 516,         /* initializer_list  */
+  YYSYMBOL_declaration_statement = 517,    /* declaration_statement  */
+  YYSYMBOL_statement = 518,                /* statement  */
+  YYSYMBOL_simple_statement = 519,         /* simple_statement  */
+  YYSYMBOL_demote_statement = 520,         /* demote_statement  */
+  YYSYMBOL_compound_statement = 521,       /* compound_statement  */
+  YYSYMBOL_522_5 = 522,                    /* $@5  */
+  YYSYMBOL_523_6 = 523,                    /* $@6  */
+  YYSYMBOL_statement_no_new_scope = 524,   /* statement_no_new_scope  */
+  YYSYMBOL_statement_scoped = 525,         /* statement_scoped  */
+  YYSYMBOL_526_7 = 526,                    /* $@7  */
+  YYSYMBOL_527_8 = 527,                    /* $@8  */
+  YYSYMBOL_compound_statement_no_new_scope = 528, /* compound_statement_no_new_scope  */
+  YYSYMBOL_statement_list = 529,           /* statement_list  */
+  YYSYMBOL_expression_statement = 530,     /* expression_statement  */
+  YYSYMBOL_selection_statement = 531,      /* selection_statement  */
+  YYSYMBOL_selection_statement_nonattributed = 532, /* selection_statement_nonattributed  */
+  YYSYMBOL_selection_rest_statement = 533, /* selection_rest_statement  */
+  YYSYMBOL_condition = 534,                /* condition  */
+  YYSYMBOL_switch_statement = 535,         /* switch_statement  */
+  YYSYMBOL_switch_statement_nonattributed = 536, /* switch_statement_nonattributed  */
+  YYSYMBOL_537_9 = 537,                    /* $@9  */
+  YYSYMBOL_switch_statement_list = 538,    /* switch_statement_list  */
+  YYSYMBOL_case_label = 539,               /* case_label  */
+  YYSYMBOL_iteration_statement = 540,      /* iteration_statement  */
+  YYSYMBOL_iteration_statement_nonattributed = 541, /* iteration_statement_nonattributed  */
+  YYSYMBOL_542_10 = 542,                   /* $@10  */
+  YYSYMBOL_543_11 = 543,                   /* $@11  */
+  YYSYMBOL_544_12 = 544,                   /* $@12  */
+  YYSYMBOL_for_init_statement = 545,       /* for_init_statement  */
+  YYSYMBOL_conditionopt = 546,             /* conditionopt  */
+  YYSYMBOL_for_rest_statement = 547,       /* for_rest_statement  */
+  YYSYMBOL_jump_statement = 548,           /* jump_statement  */
+  YYSYMBOL_translation_unit = 549,         /* translation_unit  */
+  YYSYMBOL_external_declaration = 550,     /* external_declaration  */
+  YYSYMBOL_function_definition = 551,      /* function_definition  */
+  YYSYMBOL_552_13 = 552,                   /* $@13  */
+  YYSYMBOL_attribute = 553,                /* attribute  */
+  YYSYMBOL_attribute_list = 554,           /* attribute_list  */
+  YYSYMBOL_single_attribute = 555          /* single_attribute  */
 };
-
-typedef union YYSTYPE YYSTYPE;
-# define YYSTYPE_IS_TRIVIAL 1
-# define YYSTYPE_IS_DECLARED 1
-#endif
+typedef enum yysymbol_kind_t yysymbol_kind_t;
 
 
-
-int yyparse (glslang::TParseContext* pParseContext);
-
-#endif /* !YY_YY_GLSLANG_TAB_CPP_H_INCLUDED  */
-
-/* Copy the second part of user declarations.  */
-#line 133 "glslang.y" /* yacc.c:358  */
+/* Second part of user prologue.  */
+#line 133 "MachineIndependent/glslang.y"
 
 
 /* windows only pragma */
@@ -615,34 +698,82 @@
 extern int yylex(YYSTYPE*, TParseContext&);
 
 
-#line 619 "glslang_tab.cpp" /* yacc.c:358  */
+#line 702 "MachineIndependent/glslang_tab.cpp"
+
 
 #ifdef short
 # undef short
 #endif
 
-#ifdef YYTYPE_UINT8
-typedef YYTYPE_UINT8 yytype_uint8;
-#else
-typedef unsigned char yytype_uint8;
+/* On compilers that do not define __PTRDIFF_MAX__ etc., make sure
+   <limits.h> and (if available) <stdint.h> are included
+   so that the code can choose integer types of a good width.  */
+
+#ifndef __PTRDIFF_MAX__
+# include <limits.h> /* INFRINGES ON USER NAME SPACE */
+# if defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
+#  include <stdint.h> /* INFRINGES ON USER NAME SPACE */
+#  define YY_STDINT_H
+# endif
 #endif
 
-#ifdef YYTYPE_INT8
-typedef YYTYPE_INT8 yytype_int8;
+/* Narrow types that promote to a signed type and that can represent a
+   signed or unsigned integer of at least N bits.  In tables they can
+   save space and decrease cache pressure.  Promoting to a signed type
+   helps avoid bugs in integer arithmetic.  */
+
+#ifdef __INT_LEAST8_MAX__
+typedef __INT_LEAST8_TYPE__ yytype_int8;
+#elif defined YY_STDINT_H
+typedef int_least8_t yytype_int8;
 #else
 typedef signed char yytype_int8;
 #endif
 
-#ifdef YYTYPE_UINT16
-typedef YYTYPE_UINT16 yytype_uint16;
+#ifdef __INT_LEAST16_MAX__
+typedef __INT_LEAST16_TYPE__ yytype_int16;
+#elif defined YY_STDINT_H
+typedef int_least16_t yytype_int16;
 #else
-typedef unsigned short int yytype_uint16;
+typedef short yytype_int16;
 #endif
 
-#ifdef YYTYPE_INT16
-typedef YYTYPE_INT16 yytype_int16;
+#if defined __UINT_LEAST8_MAX__ && __UINT_LEAST8_MAX__ <= __INT_MAX__
+typedef __UINT_LEAST8_TYPE__ yytype_uint8;
+#elif (!defined __UINT_LEAST8_MAX__ && defined YY_STDINT_H \
+       && UINT_LEAST8_MAX <= INT_MAX)
+typedef uint_least8_t yytype_uint8;
+#elif !defined __UINT_LEAST8_MAX__ && UCHAR_MAX <= INT_MAX
+typedef unsigned char yytype_uint8;
 #else
-typedef short int yytype_int16;
+typedef short yytype_uint8;
+#endif
+
+#if defined __UINT_LEAST16_MAX__ && __UINT_LEAST16_MAX__ <= __INT_MAX__
+typedef __UINT_LEAST16_TYPE__ yytype_uint16;
+#elif (!defined __UINT_LEAST16_MAX__ && defined YY_STDINT_H \
+       && UINT_LEAST16_MAX <= INT_MAX)
+typedef uint_least16_t yytype_uint16;
+#elif !defined __UINT_LEAST16_MAX__ && USHRT_MAX <= INT_MAX
+typedef unsigned short yytype_uint16;
+#else
+typedef int yytype_uint16;
+#endif
+
+#ifndef YYPTRDIFF_T
+# if defined __PTRDIFF_TYPE__ && defined __PTRDIFF_MAX__
+#  define YYPTRDIFF_T __PTRDIFF_TYPE__
+#  define YYPTRDIFF_MAXIMUM __PTRDIFF_MAX__
+# elif defined PTRDIFF_MAX
+#  ifndef ptrdiff_t
+#   include <stddef.h> /* INFRINGES ON USER NAME SPACE */
+#  endif
+#  define YYPTRDIFF_T ptrdiff_t
+#  define YYPTRDIFF_MAXIMUM PTRDIFF_MAX
+# else
+#  define YYPTRDIFF_T long
+#  define YYPTRDIFF_MAXIMUM LONG_MAX
+# endif
 #endif
 
 #ifndef YYSIZE_T
@@ -650,15 +781,28 @@
 #  define YYSIZE_T __SIZE_TYPE__
 # elif defined size_t
 #  define YYSIZE_T size_t
-# elif ! defined YYSIZE_T
+# elif defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
 #  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
 #  define YYSIZE_T size_t
 # else
-#  define YYSIZE_T unsigned int
+#  define YYSIZE_T unsigned
 # endif
 #endif
 
-#define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
+#define YYSIZE_MAXIMUM                                  \
+  YY_CAST (YYPTRDIFF_T,                                 \
+           (YYPTRDIFF_MAXIMUM < YY_CAST (YYSIZE_T, -1)  \
+            ? YYPTRDIFF_MAXIMUM                         \
+            : YY_CAST (YYSIZE_T, -1)))
+
+#define YYSIZEOF(X) YY_CAST (YYPTRDIFF_T, sizeof (X))
+
+
+/* Stored state numbers (used for stacks). */
+typedef yytype_int16 yy_state_t;
+
+/* State numbers in computations.  */
+typedef int yy_state_fast_t;
 
 #ifndef YY_
 # if defined YYENABLE_NLS && YYENABLE_NLS
@@ -672,30 +816,20 @@
 # endif
 #endif
 
-#ifndef YY_ATTRIBUTE
-# if (defined __GNUC__                                               \
-      && (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__)))  \
-     || defined __SUNPRO_C && 0x5110 <= __SUNPRO_C
-#  define YY_ATTRIBUTE(Spec) __attribute__(Spec)
+
+#ifndef YY_ATTRIBUTE_PURE
+# if defined __GNUC__ && 2 < __GNUC__ + (96 <= __GNUC_MINOR__)
+#  define YY_ATTRIBUTE_PURE __attribute__ ((__pure__))
 # else
-#  define YY_ATTRIBUTE(Spec) /* empty */
+#  define YY_ATTRIBUTE_PURE
 # endif
 #endif
 
-#ifndef YY_ATTRIBUTE_PURE
-# define YY_ATTRIBUTE_PURE   YY_ATTRIBUTE ((__pure__))
-#endif
-
 #ifndef YY_ATTRIBUTE_UNUSED
-# define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__))
-#endif
-
-#if !defined _Noreturn \
-     && (!defined __STDC_VERSION__ || __STDC_VERSION__ < 201112)
-# if defined _MSC_VER && 1200 <= _MSC_VER
-#  define _Noreturn __declspec (noreturn)
+# if defined __GNUC__ && 2 < __GNUC__ + (7 <= __GNUC_MINOR__)
+#  define YY_ATTRIBUTE_UNUSED __attribute__ ((__unused__))
 # else
-#  define _Noreturn YY_ATTRIBUTE ((__noreturn__))
+#  define YY_ATTRIBUTE_UNUSED
 # endif
 #endif
 
@@ -706,13 +840,13 @@
 # define YYUSE(E) /* empty */
 #endif
 
-#if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
+#if defined __GNUC__ && ! defined __ICC && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
 /* Suppress an incorrect diagnostic about yylval being uninitialized.  */
-# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
-    _Pragma ("GCC diagnostic push") \
-    _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\
+# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN                            \
+    _Pragma ("GCC diagnostic push")                                     \
+    _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")              \
     _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
-# define YY_IGNORE_MAYBE_UNINITIALIZED_END \
+# define YY_IGNORE_MAYBE_UNINITIALIZED_END      \
     _Pragma ("GCC diagnostic pop")
 #else
 # define YY_INITIAL_VALUE(Value) Value
@@ -725,8 +859,22 @@
 # define YY_INITIAL_VALUE(Value) /* Nothing. */
 #endif
 
+#if defined __cplusplus && defined __GNUC__ && ! defined __ICC && 6 <= __GNUC__
+# define YY_IGNORE_USELESS_CAST_BEGIN                          \
+    _Pragma ("GCC diagnostic push")                            \
+    _Pragma ("GCC diagnostic ignored \"-Wuseless-cast\"")
+# define YY_IGNORE_USELESS_CAST_END            \
+    _Pragma ("GCC diagnostic pop")
+#endif
+#ifndef YY_IGNORE_USELESS_CAST_BEGIN
+# define YY_IGNORE_USELESS_CAST_BEGIN
+# define YY_IGNORE_USELESS_CAST_END
+#endif
 
-#if ! defined yyoverflow || YYERROR_VERBOSE
+
+#define YY_ASSERT(E) ((void) (0 && (E)))
+
+#if 1
 
 /* The parser invokes alloca or malloc; define the necessary symbols.  */
 
@@ -791,8 +939,7 @@
 #   endif
 #  endif
 # endif
-#endif /* ! defined yyoverflow || YYERROR_VERBOSE */
-
+#endif /* 1 */
 
 #if (! defined yyoverflow \
      && (! defined __cplusplus \
@@ -801,17 +948,17 @@
 /* A type that is properly aligned for any stack member.  */
 union yyalloc
 {
-  yytype_int16 yyss_alloc;
+  yy_state_t yyss_alloc;
   YYSTYPE yyvs_alloc;
 };
 
 /* The size of the maximum gap between one aligned stack and the next.  */
-# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
+# define YYSTACK_GAP_MAXIMUM (YYSIZEOF (union yyalloc) - 1)
 
 /* The size of an array large to enough to hold all stacks, each with
    N elements.  */
 # define YYSTACK_BYTES(N) \
-     ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
+     ((N) * (YYSIZEOF (yy_state_t) + YYSIZEOF (YYSTYPE)) \
       + YYSTACK_GAP_MAXIMUM)
 
 # define YYCOPY_NEEDED 1
@@ -824,11 +971,11 @@
 # define YYSTACK_RELOCATE(Stack_alloc, Stack)                           \
     do                                                                  \
       {                                                                 \
-        YYSIZE_T yynewbytes;                                            \
+        YYPTRDIFF_T yynewbytes;                                         \
         YYCOPY (&yyptr->Stack_alloc, Stack, yysize);                    \
         Stack = &yyptr->Stack_alloc;                                    \
-        yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
-        yyptr += yynewbytes / sizeof (*yyptr);                          \
+        yynewbytes = yystacksize * YYSIZEOF (*Stack) + YYSTACK_GAP_MAXIMUM; \
+        yyptr += yynewbytes / YYSIZEOF (*yyptr);                        \
       }                                                                 \
     while (0)
 
@@ -840,12 +987,12 @@
 # ifndef YYCOPY
 #  if defined __GNUC__ && 1 < __GNUC__
 #   define YYCOPY(Dst, Src, Count) \
-      __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src)))
+      __builtin_memcpy (Dst, Src, YY_CAST (YYSIZE_T, (Count)) * sizeof (*(Src)))
 #  else
 #   define YYCOPY(Dst, Src, Count)              \
       do                                        \
         {                                       \
-          YYSIZE_T yyi;                         \
+          YYPTRDIFF_T yyi;                      \
           for (yyi = 0; yyi < (Count); yyi++)   \
             (Dst)[yyi] = (Src)[yyi];            \
         }                                       \
@@ -855,30 +1002,33 @@
 #endif /* !YYCOPY_NEEDED */
 
 /* YYFINAL -- State number of the termination state.  */
-#define YYFINAL  394
+#define YYFINAL  416
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   9550
+#define YYLAST   10537
 
 /* YYNTOKENS -- Number of terminals.  */
-#define YYNTOKENS  420
+#define YYNTOKENS  445
 /* YYNNTS -- Number of nonterminals.  */
 #define YYNNTS  111
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  591
+#define YYNRULES  617
 /* YYNSTATES -- Number of states.  */
-#define YYNSTATES  736
+#define YYNSTATES  765
 
-/* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned
-   by yylex, with out-of-bounds checking.  */
-#define YYUNDEFTOK  2
-#define YYMAXUTOK   674
+/* YYMAXUTOK -- Last valid token kind.  */
+#define YYMAXUTOK   699
 
-#define YYTRANSLATE(YYX)                                                \
-  ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
+
+/* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM
+   as returned by yylex, with out-of-bounds checking.  */
+#define YYTRANSLATE(YYX)                                \
+  (0 <= (YYX) && (YYX) <= YYMAXUTOK                     \
+   ? YY_CAST (yysymbol_kind_t, yytranslate[YYX])        \
+   : YYSYMBOL_YYUNDEF)
 
 /* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM
-   as returned by yylex, without out-of-bounds checking.  */
-static const yytype_uint16 yytranslate[] =
+   as returned by yylex.  */
+static const yytype_int16 yytranslate[] =
 {
        0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
@@ -947,120 +1097,131 @@
      385,   386,   387,   388,   389,   390,   391,   392,   393,   394,
      395,   396,   397,   398,   399,   400,   401,   402,   403,   404,
      405,   406,   407,   408,   409,   410,   411,   412,   413,   414,
-     415,   416,   417,   418,   419
+     415,   416,   417,   418,   419,   420,   421,   422,   423,   424,
+     425,   426,   427,   428,   429,   430,   431,   432,   433,   434,
+     435,   436,   437,   438,   439,   440,   441,   442,   443,   444
 };
 
 #if YYDEBUG
   /* YYRLINE[YYN] -- Source line where rule number YYN was defined.  */
-static const yytype_uint16 yyrline[] =
+static const yytype_int16 yyrline[] =
 {
-       0,   357,   357,   363,   366,   371,   374,   377,   381,   385,
-     388,   392,   396,   400,   404,   408,   412,   418,   426,   429,
-     432,   435,   438,   443,   451,   458,   465,   471,   475,   482,
-     485,   491,   498,   508,   516,   521,   549,   558,   564,   568,
-     572,   592,   593,   594,   595,   601,   602,   607,   612,   621,
-     622,   627,   635,   636,   642,   651,   652,   657,   662,   667,
-     675,   676,   685,   697,   698,   707,   708,   717,   718,   727,
-     728,   736,   737,   745,   746,   754,   755,   755,   773,   774,
-     790,   794,   798,   802,   807,   811,   815,   819,   823,   827,
-     831,   838,   841,   852,   859,   864,   869,   876,   880,   884,
-     888,   893,   898,   907,   907,   918,   922,   929,   936,   939,
-     946,   954,   974,   997,  1012,  1037,  1048,  1058,  1068,  1078,
-    1087,  1090,  1094,  1098,  1103,  1111,  1118,  1123,  1128,  1133,
-    1142,  1152,  1179,  1188,  1195,  1203,  1210,  1217,  1225,  1235,
-    1242,  1253,  1259,  1262,  1269,  1273,  1277,  1286,  1296,  1299,
-    1310,  1313,  1316,  1320,  1324,  1329,  1333,  1340,  1344,  1349,
-    1355,  1361,  1368,  1373,  1381,  1387,  1399,  1413,  1419,  1424,
-    1432,  1440,  1448,  1456,  1464,  1472,  1480,  1488,  1495,  1502,
-    1506,  1511,  1516,  1521,  1526,  1531,  1536,  1540,  1544,  1548,
-    1552,  1558,  1569,  1576,  1579,  1588,  1593,  1603,  1608,  1616,
-    1620,  1630,  1633,  1639,  1645,  1652,  1662,  1666,  1670,  1674,
-    1679,  1683,  1688,  1693,  1698,  1703,  1708,  1713,  1718,  1723,
-    1728,  1734,  1740,  1746,  1751,  1756,  1761,  1766,  1771,  1776,
-    1781,  1786,  1791,  1796,  1801,  1807,  1814,  1819,  1824,  1829,
-    1834,  1839,  1844,  1849,  1854,  1859,  1864,  1869,  1877,  1885,
-    1893,  1899,  1905,  1911,  1917,  1923,  1929,  1935,  1941,  1947,
-    1953,  1959,  1965,  1971,  1977,  1983,  1989,  1995,  2001,  2007,
-    2013,  2019,  2025,  2031,  2037,  2043,  2049,  2055,  2061,  2067,
-    2073,  2079,  2085,  2091,  2099,  2107,  2115,  2123,  2131,  2139,
-    2147,  2155,  2163,  2171,  2179,  2187,  2193,  2199,  2205,  2211,
-    2217,  2223,  2229,  2235,  2241,  2247,  2253,  2259,  2265,  2271,
-    2277,  2283,  2289,  2295,  2301,  2307,  2313,  2319,  2325,  2331,
-    2337,  2343,  2349,  2355,  2361,  2367,  2373,  2379,  2385,  2391,
-    2397,  2403,  2407,  2411,  2415,  2420,  2426,  2431,  2436,  2441,
-    2446,  2451,  2456,  2462,  2467,  2472,  2477,  2482,  2487,  2493,
-    2499,  2505,  2511,  2517,  2523,  2529,  2535,  2541,  2547,  2553,
-    2559,  2565,  2571,  2576,  2581,  2586,  2591,  2596,  2601,  2607,
-    2612,  2617,  2622,  2627,  2632,  2637,  2642,  2648,  2653,  2658,
-    2663,  2668,  2673,  2678,  2683,  2688,  2693,  2698,  2703,  2708,
-    2713,  2718,  2724,  2729,  2734,  2740,  2746,  2751,  2756,  2761,
-    2767,  2772,  2777,  2782,  2788,  2793,  2798,  2803,  2809,  2814,
-    2819,  2824,  2830,  2836,  2842,  2848,  2853,  2859,  2865,  2871,
-    2876,  2881,  2886,  2891,  2896,  2902,  2907,  2912,  2917,  2923,
-    2928,  2933,  2938,  2944,  2949,  2954,  2959,  2965,  2970,  2975,
-    2980,  2986,  2991,  2996,  3001,  3007,  3012,  3017,  3022,  3028,
-    3033,  3038,  3043,  3049,  3054,  3059,  3064,  3070,  3075,  3080,
-    3085,  3091,  3096,  3101,  3106,  3112,  3117,  3122,  3127,  3133,
-    3138,  3143,  3148,  3154,  3159,  3164,  3169,  3175,  3180,  3185,
-    3190,  3196,  3201,  3206,  3212,  3218,  3224,  3230,  3237,  3244,
-    3250,  3256,  3262,  3268,  3274,  3280,  3287,  3292,  3308,  3313,
-    3318,  3326,  3326,  3337,  3337,  3347,  3350,  3363,  3385,  3412,
-    3416,  3422,  3427,  3438,  3442,  3448,  3459,  3462,  3469,  3473,
-    3474,  3480,  3481,  3482,  3483,  3484,  3485,  3486,  3488,  3494,
-    3503,  3504,  3508,  3504,  3520,  3521,  3525,  3525,  3532,  3532,
-    3546,  3549,  3557,  3565,  3576,  3577,  3581,  3585,  3592,  3599,
-    3603,  3611,  3615,  3628,  3632,  3639,  3639,  3659,  3662,  3668,
-    3680,  3692,  3696,  3703,  3703,  3718,  3718,  3734,  3734,  3755,
-    3758,  3764,  3767,  3773,  3777,  3784,  3789,  3794,  3801,  3804,
-    3813,  3817,  3826,  3829,  3833,  3842,  3842,  3865,  3871,  3874,
-    3879,  3882
+       0,   371,   371,   377,   380,   385,   388,   391,   395,   399,
+     402,   406,   410,   414,   418,   422,   426,   432,   440,   443,
+     446,   449,   452,   457,   465,   472,   479,   485,   489,   496,
+     499,   505,   512,   522,   530,   535,   563,   572,   578,   582,
+     586,   606,   607,   608,   609,   615,   616,   621,   626,   635,
+     636,   641,   649,   650,   656,   665,   666,   671,   676,   681,
+     689,   690,   699,   711,   712,   721,   722,   731,   732,   741,
+     742,   750,   751,   759,   760,   768,   769,   769,   787,   788,
+     804,   808,   812,   816,   821,   825,   829,   833,   837,   841,
+     845,   852,   855,   866,   873,   878,   883,   890,   894,   898,
+     902,   907,   912,   921,   921,   932,   936,   943,   950,   953,
+     960,   968,   988,  1011,  1026,  1051,  1062,  1072,  1082,  1092,
+    1101,  1104,  1108,  1112,  1117,  1125,  1132,  1137,  1142,  1147,
+    1156,  1166,  1193,  1202,  1209,  1217,  1224,  1231,  1239,  1249,
+    1256,  1267,  1273,  1276,  1283,  1287,  1291,  1300,  1310,  1313,
+    1324,  1327,  1330,  1334,  1338,  1343,  1347,  1354,  1358,  1363,
+    1369,  1375,  1382,  1387,  1395,  1401,  1413,  1427,  1433,  1438,
+    1446,  1454,  1462,  1470,  1478,  1486,  1494,  1502,  1509,  1516,
+    1520,  1525,  1530,  1535,  1540,  1545,  1550,  1554,  1558,  1562,
+    1566,  1572,  1583,  1590,  1593,  1602,  1607,  1617,  1622,  1630,
+    1634,  1644,  1647,  1653,  1659,  1666,  1676,  1680,  1684,  1688,
+    1693,  1697,  1702,  1707,  1712,  1717,  1722,  1727,  1732,  1737,
+    1742,  1748,  1754,  1760,  1765,  1770,  1775,  1780,  1785,  1790,
+    1795,  1800,  1805,  1810,  1815,  1821,  1828,  1833,  1838,  1843,
+    1848,  1853,  1858,  1863,  1868,  1873,  1878,  1883,  1891,  1899,
+    1907,  1913,  1919,  1925,  1931,  1937,  1943,  1949,  1955,  1961,
+    1967,  1973,  1979,  1985,  1991,  1997,  2003,  2009,  2015,  2021,
+    2027,  2033,  2039,  2045,  2051,  2057,  2063,  2069,  2075,  2081,
+    2087,  2093,  2099,  2105,  2113,  2121,  2129,  2137,  2145,  2153,
+    2161,  2169,  2177,  2185,  2193,  2201,  2207,  2213,  2219,  2225,
+    2231,  2237,  2243,  2249,  2255,  2261,  2267,  2273,  2279,  2285,
+    2291,  2297,  2303,  2309,  2315,  2321,  2327,  2333,  2339,  2345,
+    2351,  2357,  2363,  2369,  2375,  2381,  2387,  2393,  2399,  2405,
+    2411,  2417,  2421,  2425,  2429,  2434,  2440,  2445,  2450,  2455,
+    2460,  2465,  2470,  2476,  2481,  2486,  2491,  2496,  2501,  2507,
+    2513,  2519,  2525,  2531,  2537,  2543,  2549,  2555,  2561,  2567,
+    2573,  2579,  2585,  2590,  2595,  2600,  2605,  2610,  2615,  2621,
+    2626,  2631,  2636,  2641,  2646,  2651,  2656,  2662,  2667,  2672,
+    2677,  2682,  2687,  2692,  2697,  2702,  2707,  2712,  2717,  2722,
+    2727,  2732,  2738,  2743,  2748,  2754,  2760,  2765,  2770,  2775,
+    2781,  2786,  2791,  2796,  2802,  2807,  2812,  2817,  2823,  2828,
+    2833,  2838,  2844,  2850,  2856,  2862,  2867,  2873,  2879,  2885,
+    2890,  2895,  2900,  2905,  2910,  2916,  2921,  2926,  2931,  2937,
+    2942,  2947,  2952,  2958,  2963,  2968,  2973,  2979,  2984,  2989,
+    2994,  3000,  3005,  3010,  3015,  3021,  3026,  3031,  3036,  3042,
+    3047,  3052,  3057,  3063,  3068,  3073,  3078,  3084,  3089,  3094,
+    3099,  3105,  3110,  3115,  3120,  3126,  3131,  3136,  3141,  3147,
+    3152,  3157,  3162,  3168,  3173,  3178,  3183,  3189,  3194,  3199,
+    3204,  3210,  3215,  3220,  3225,  3230,  3235,  3240,  3245,  3250,
+    3255,  3260,  3265,  3270,  3275,  3280,  3285,  3290,  3295,  3300,
+    3305,  3310,  3315,  3320,  3325,  3330,  3336,  3342,  3348,  3354,
+    3361,  3368,  3374,  3380,  3386,  3392,  3398,  3404,  3411,  3416,
+    3432,  3437,  3442,  3450,  3450,  3461,  3461,  3471,  3474,  3487,
+    3509,  3536,  3540,  3546,  3551,  3562,  3566,  3572,  3578,  3589,
+    3592,  3599,  3603,  3604,  3610,  3611,  3612,  3613,  3614,  3615,
+    3616,  3618,  3624,  3633,  3634,  3638,  3634,  3650,  3651,  3655,
+    3655,  3662,  3662,  3676,  3679,  3687,  3695,  3706,  3707,  3711,
+    3715,  3722,  3729,  3733,  3741,  3745,  3758,  3762,  3769,  3769,
+    3789,  3792,  3798,  3810,  3822,  3826,  3833,  3833,  3848,  3848,
+    3864,  3864,  3885,  3888,  3894,  3897,  3903,  3907,  3914,  3919,
+    3924,  3931,  3934,  3938,  3943,  3947,  3957,  3961,  3970,  3973,
+    3977,  3986,  3986,  4028,  4034,  4037,  4042,  4045
 };
 #endif
 
-#if YYDEBUG || YYERROR_VERBOSE || 1
+/** Accessing symbol of state STATE.  */
+#define YY_ACCESSING_SYMBOL(State) YY_CAST (yysymbol_kind_t, yystos[State])
+
+#if 1
+/* The user-facing name of the symbol whose (internal) number is
+   YYSYMBOL.  No bounds checking.  */
+static const char *yysymbol_name (yysymbol_kind_t yysymbol) YY_ATTRIBUTE_UNUSED;
+
 /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
    First, the terminals, then, starting at YYNTOKENS, nonterminals.  */
 static const char *const yytname[] =
 {
-  "$end", "error", "$undefined", "CONST", "BOOL", "INT", "UINT", "FLOAT",
-  "BVEC2", "BVEC3", "BVEC4", "IVEC2", "IVEC3", "IVEC4", "UVEC2", "UVEC3",
-  "UVEC4", "VEC2", "VEC3", "VEC4", "MAT2", "MAT3", "MAT4", "MAT2X2",
-  "MAT2X3", "MAT2X4", "MAT3X2", "MAT3X3", "MAT3X4", "MAT4X2", "MAT4X3",
-  "MAT4X4", "SAMPLER2D", "SAMPLER3D", "SAMPLERCUBE", "SAMPLER2DSHADOW",
-  "SAMPLERCUBESHADOW", "SAMPLER2DARRAY", "SAMPLER2DARRAYSHADOW",
-  "ISAMPLER2D", "ISAMPLER3D", "ISAMPLERCUBE", "ISAMPLER2DARRAY",
-  "USAMPLER2D", "USAMPLER3D", "USAMPLERCUBE", "USAMPLER2DARRAY", "SAMPLER",
-  "SAMPLERSHADOW", "TEXTURE2D", "TEXTURE3D", "TEXTURECUBE",
-  "TEXTURE2DARRAY", "ITEXTURE2D", "ITEXTURE3D", "ITEXTURECUBE",
-  "ITEXTURE2DARRAY", "UTEXTURE2D", "UTEXTURE3D", "UTEXTURECUBE",
-  "UTEXTURE2DARRAY", "ATTRIBUTE", "VARYING", "FLOAT16_T", "FLOAT32_T",
-  "DOUBLE", "FLOAT64_T", "INT64_T", "UINT64_T", "INT32_T", "UINT32_T",
-  "INT16_T", "UINT16_T", "INT8_T", "UINT8_T", "I64VEC2", "I64VEC3",
-  "I64VEC4", "U64VEC2", "U64VEC3", "U64VEC4", "I32VEC2", "I32VEC3",
-  "I32VEC4", "U32VEC2", "U32VEC3", "U32VEC4", "I16VEC2", "I16VEC3",
-  "I16VEC4", "U16VEC2", "U16VEC3", "U16VEC4", "I8VEC2", "I8VEC3", "I8VEC4",
-  "U8VEC2", "U8VEC3", "U8VEC4", "DVEC2", "DVEC3", "DVEC4", "DMAT2",
-  "DMAT3", "DMAT4", "F16VEC2", "F16VEC3", "F16VEC4", "F16MAT2", "F16MAT3",
-  "F16MAT4", "F32VEC2", "F32VEC3", "F32VEC4", "F32MAT2", "F32MAT3",
-  "F32MAT4", "F64VEC2", "F64VEC3", "F64VEC4", "F64MAT2", "F64MAT3",
-  "F64MAT4", "DMAT2X2", "DMAT2X3", "DMAT2X4", "DMAT3X2", "DMAT3X3",
-  "DMAT3X4", "DMAT4X2", "DMAT4X3", "DMAT4X4", "F16MAT2X2", "F16MAT2X3",
-  "F16MAT2X4", "F16MAT3X2", "F16MAT3X3", "F16MAT3X4", "F16MAT4X2",
-  "F16MAT4X3", "F16MAT4X4", "F32MAT2X2", "F32MAT2X3", "F32MAT2X4",
-  "F32MAT3X2", "F32MAT3X3", "F32MAT3X4", "F32MAT4X2", "F32MAT4X3",
-  "F32MAT4X4", "F64MAT2X2", "F64MAT2X3", "F64MAT2X4", "F64MAT3X2",
-  "F64MAT3X3", "F64MAT3X4", "F64MAT4X2", "F64MAT4X3", "F64MAT4X4",
-  "ATOMIC_UINT", "ACCSTRUCTNV", "ACCSTRUCTEXT", "RAYQUERYEXT",
-  "FCOOPMATNV", "ICOOPMATNV", "UCOOPMATNV", "SAMPLERCUBEARRAY",
-  "SAMPLERCUBEARRAYSHADOW", "ISAMPLERCUBEARRAY", "USAMPLERCUBEARRAY",
-  "SAMPLER1D", "SAMPLER1DARRAY", "SAMPLER1DARRAYSHADOW", "ISAMPLER1D",
-  "SAMPLER1DSHADOW", "SAMPLER2DRECT", "SAMPLER2DRECTSHADOW",
-  "ISAMPLER2DRECT", "USAMPLER2DRECT", "SAMPLERBUFFER", "ISAMPLERBUFFER",
-  "USAMPLERBUFFER", "SAMPLER2DMS", "ISAMPLER2DMS", "USAMPLER2DMS",
-  "SAMPLER2DMSARRAY", "ISAMPLER2DMSARRAY", "USAMPLER2DMSARRAY",
-  "SAMPLEREXTERNALOES", "SAMPLEREXTERNAL2DY2YEXT", "ISAMPLER1DARRAY",
-  "USAMPLER1D", "USAMPLER1DARRAY", "F16SAMPLER1D", "F16SAMPLER2D",
-  "F16SAMPLER3D", "F16SAMPLER2DRECT", "F16SAMPLERCUBE",
+  "\"end of file\"", "error", "\"invalid token\"", "CONST", "BOOL", "INT",
+  "UINT", "FLOAT", "BVEC2", "BVEC3", "BVEC4", "IVEC2", "IVEC3", "IVEC4",
+  "UVEC2", "UVEC3", "UVEC4", "VEC2", "VEC3", "VEC4", "MAT2", "MAT3",
+  "MAT4", "MAT2X2", "MAT2X3", "MAT2X4", "MAT3X2", "MAT3X3", "MAT3X4",
+  "MAT4X2", "MAT4X3", "MAT4X4", "SAMPLER2D", "SAMPLER3D", "SAMPLERCUBE",
+  "SAMPLER2DSHADOW", "SAMPLERCUBESHADOW", "SAMPLER2DARRAY",
+  "SAMPLER2DARRAYSHADOW", "ISAMPLER2D", "ISAMPLER3D", "ISAMPLERCUBE",
+  "ISAMPLER2DARRAY", "USAMPLER2D", "USAMPLER3D", "USAMPLERCUBE",
+  "USAMPLER2DARRAY", "SAMPLER", "SAMPLERSHADOW", "TEXTURE2D", "TEXTURE3D",
+  "TEXTURECUBE", "TEXTURE2DARRAY", "ITEXTURE2D", "ITEXTURE3D",
+  "ITEXTURECUBE", "ITEXTURE2DARRAY", "UTEXTURE2D", "UTEXTURE3D",
+  "UTEXTURECUBE", "UTEXTURE2DARRAY", "ATTRIBUTE", "VARYING", "FLOAT16_T",
+  "FLOAT32_T", "DOUBLE", "FLOAT64_T", "INT64_T", "UINT64_T", "INT32_T",
+  "UINT32_T", "INT16_T", "UINT16_T", "INT8_T", "UINT8_T", "I64VEC2",
+  "I64VEC3", "I64VEC4", "U64VEC2", "U64VEC3", "U64VEC4", "I32VEC2",
+  "I32VEC3", "I32VEC4", "U32VEC2", "U32VEC3", "U32VEC4", "I16VEC2",
+  "I16VEC3", "I16VEC4", "U16VEC2", "U16VEC3", "U16VEC4", "I8VEC2",
+  "I8VEC3", "I8VEC4", "U8VEC2", "U8VEC3", "U8VEC4", "DVEC2", "DVEC3",
+  "DVEC4", "DMAT2", "DMAT3", "DMAT4", "F16VEC2", "F16VEC3", "F16VEC4",
+  "F16MAT2", "F16MAT3", "F16MAT4", "F32VEC2", "F32VEC3", "F32VEC4",
+  "F32MAT2", "F32MAT3", "F32MAT4", "F64VEC2", "F64VEC3", "F64VEC4",
+  "F64MAT2", "F64MAT3", "F64MAT4", "DMAT2X2", "DMAT2X3", "DMAT2X4",
+  "DMAT3X2", "DMAT3X3", "DMAT3X4", "DMAT4X2", "DMAT4X3", "DMAT4X4",
+  "F16MAT2X2", "F16MAT2X3", "F16MAT2X4", "F16MAT3X2", "F16MAT3X3",
+  "F16MAT3X4", "F16MAT4X2", "F16MAT4X3", "F16MAT4X4", "F32MAT2X2",
+  "F32MAT2X3", "F32MAT2X4", "F32MAT3X2", "F32MAT3X3", "F32MAT3X4",
+  "F32MAT4X2", "F32MAT4X3", "F32MAT4X4", "F64MAT2X2", "F64MAT2X3",
+  "F64MAT2X4", "F64MAT3X2", "F64MAT3X3", "F64MAT3X4", "F64MAT4X2",
+  "F64MAT4X3", "F64MAT4X4", "ATOMIC_UINT", "ACCSTRUCTNV", "ACCSTRUCTEXT",
+  "RAYQUERYEXT", "FCOOPMATNV", "ICOOPMATNV", "UCOOPMATNV",
+  "SAMPLERCUBEARRAY", "SAMPLERCUBEARRAYSHADOW", "ISAMPLERCUBEARRAY",
+  "USAMPLERCUBEARRAY", "SAMPLER1D", "SAMPLER1DARRAY",
+  "SAMPLER1DARRAYSHADOW", "ISAMPLER1D", "SAMPLER1DSHADOW", "SAMPLER2DRECT",
+  "SAMPLER2DRECTSHADOW", "ISAMPLER2DRECT", "USAMPLER2DRECT",
+  "SAMPLERBUFFER", "ISAMPLERBUFFER", "USAMPLERBUFFER", "SAMPLER2DMS",
+  "ISAMPLER2DMS", "USAMPLER2DMS", "SAMPLER2DMSARRAY", "ISAMPLER2DMSARRAY",
+  "USAMPLER2DMSARRAY", "SAMPLEREXTERNALOES", "SAMPLEREXTERNAL2DY2YEXT",
+  "ISAMPLER1DARRAY", "USAMPLER1D", "USAMPLER1DARRAY", "F16SAMPLER1D",
+  "F16SAMPLER2D", "F16SAMPLER3D", "F16SAMPLER2DRECT", "F16SAMPLERCUBE",
   "F16SAMPLER1DARRAY", "F16SAMPLER2DARRAY", "F16SAMPLERCUBEARRAY",
   "F16SAMPLERBUFFER", "F16SAMPLER2DMS", "F16SAMPLER2DMSARRAY",
   "F16SAMPLER1DSHADOW", "F16SAMPLER2DSHADOW", "F16SAMPLER1DARRAYSHADOW",
@@ -1076,7 +1237,13 @@
   "F16IMAGE1D", "F16IMAGE2D", "F16IMAGE3D", "F16IMAGE2DRECT",
   "F16IMAGECUBE", "F16IMAGE1DARRAY", "F16IMAGE2DARRAY",
   "F16IMAGECUBEARRAY", "F16IMAGEBUFFER", "F16IMAGE2DMS",
-  "F16IMAGE2DMSARRAY", "TEXTURECUBEARRAY", "ITEXTURECUBEARRAY",
+  "F16IMAGE2DMSARRAY", "I64IMAGE1D", "U64IMAGE1D", "I64IMAGE2D",
+  "U64IMAGE2D", "I64IMAGE3D", "U64IMAGE3D", "I64IMAGE2DRECT",
+  "U64IMAGE2DRECT", "I64IMAGECUBE", "U64IMAGECUBE", "I64IMAGEBUFFER",
+  "U64IMAGEBUFFER", "I64IMAGE1DARRAY", "U64IMAGE1DARRAY",
+  "I64IMAGE2DARRAY", "U64IMAGE2DARRAY", "I64IMAGECUBEARRAY",
+  "U64IMAGECUBEARRAY", "I64IMAGE2DMS", "U64IMAGE2DMS", "I64IMAGE2DMSARRAY",
+  "U64IMAGE2DMSARRAY", "TEXTURECUBEARRAY", "ITEXTURECUBEARRAY",
   "UTEXTURECUBEARRAY", "TEXTURE1D", "ITEXTURE1D", "UTEXTURE1D",
   "TEXTURE1DARRAY", "ITEXTURE1DARRAY", "UTEXTURE1DARRAY", "TEXTURE2DRECT",
   "ITEXTURE2DRECT", "UTEXTURE2DRECT", "TEXTUREBUFFER", "ITEXTUREBUFFER",
@@ -1100,8 +1267,9 @@
   "FLOATCONSTANT", "INTCONSTANT", "UINTCONSTANT", "BOOLCONSTANT",
   "IDENTIFIER", "TYPE_NAME", "CENTROID", "IN", "OUT", "INOUT", "STRUCT",
   "VOID", "WHILE", "BREAK", "CONTINUE", "DO", "ELSE", "FOR", "IF",
-  "DISCARD", "RETURN", "SWITCH", "CASE", "DEFAULT", "UNIFORM", "SHARED",
-  "BUFFER", "FLAT", "SMOOTH", "LAYOUT", "DOUBLECONSTANT", "INT16CONSTANT",
+  "DISCARD", "RETURN", "SWITCH", "CASE", "DEFAULT", "TERMINATE_INVOCATION",
+  "TERMINATE_RAY", "IGNORE_INTERSECTION", "UNIFORM", "SHARED", "BUFFER",
+  "FLAT", "SMOOTH", "LAYOUT", "DOUBLECONSTANT", "INT16CONSTANT",
   "UINT16CONSTANT", "FLOAT16CONSTANT", "INT32CONSTANT", "UINT32CONSTANT",
   "INT64CONSTANT", "UINT64CONSTANT", "SUBROUTINE", "DEMOTE", "PAYLOADNV",
   "PAYLOADINNV", "HITATTRNV", "CALLDATANV", "CALLDATAINNV", "PAYLOADEXT",
@@ -1151,12 +1319,18 @@
   "function_definition", "$@13", "attribute", "attribute_list",
   "single_attribute", YY_NULLPTR
 };
+
+static const char *
+yysymbol_name (yysymbol_kind_t yysymbol)
+{
+  return yytname[yysymbol];
+}
 #endif
 
-# ifdef YYPRINT
+#ifdef YYPRINT
 /* YYTOKNUM[NUM] -- (External) token number corresponding to the
    (internal) symbol number NUM (which must be that of a token).  */
-static const yytype_uint16 yytoknum[] =
+static const yytype_int16 yytoknum[] =
 {
        0,   256,   257,   258,   259,   260,   261,   262,   263,   264,
      265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
@@ -1199,104 +1373,110 @@
      635,   636,   637,   638,   639,   640,   641,   642,   643,   644,
      645,   646,   647,   648,   649,   650,   651,   652,   653,   654,
      655,   656,   657,   658,   659,   660,   661,   662,   663,   664,
-     665,   666,   667,   668,   669,   670,   671,   672,   673,   674
+     665,   666,   667,   668,   669,   670,   671,   672,   673,   674,
+     675,   676,   677,   678,   679,   680,   681,   682,   683,   684,
+     685,   686,   687,   688,   689,   690,   691,   692,   693,   694,
+     695,   696,   697,   698,   699
 };
-# endif
+#endif
 
-#define YYPACT_NINF -457
+#define YYPACT_NINF (-733)
 
-#define yypact_value_is_default(Yystate) \
-  (!!((Yystate) == (-457)))
+#define yypact_value_is_default(Yyn) \
+  ((Yyn) == YYPACT_NINF)
 
-#define YYTABLE_NINF -537
+#define YYTABLE_NINF (-560)
 
-#define yytable_value_is_error(Yytable_value) \
+#define yytable_value_is_error(Yyn) \
   0
 
   /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
      STATE-NUM.  */
 static const yytype_int16 yypact[] =
 {
-    4075,  -457,  -457,  -457,  -457,  -457,  -457,  -457,  -457,  -457,
-    -457,  -457,  -457,  -457,  -457,  -457,  -457,  -457,  -457,  -457,
-    -457,  -457,  -457,  -457,  -457,  -457,  -457,  -457,  -457,  -457,
-    -457,  -457,  -457,  -457,  -457,  -457,  -457,  -457,  -457,  -457,
-    -457,  -457,  -457,  -457,  -457,  -457,  -457,  -457,  -457,  -457,
-    -457,  -457,  -457,  -457,  -457,  -457,  -457,  -457,  -457,  -457,
-    -457,  -457,  -457,  -457,  -457,  -457,  -457,  -457,  -457,  -457,
-    -457,  -457,  -457,  -457,  -457,  -457,  -457,  -457,  -457,  -457,
-    -457,  -457,  -457,  -457,  -457,  -457,  -457,  -457,  -457,  -457,
-    -457,  -457,  -457,  -457,  -457,  -457,  -457,  -457,  -457,  -457,
-    -457,  -457,  -457,  -457,  -457,  -457,  -457,  -457,  -457,  -457,
-    -457,  -457,  -457,  -457,  -457,  -457,  -457,  -457,  -457,  -457,
-    -457,  -457,  -457,  -457,  -457,  -457,  -457,  -457,  -457,  -457,
-    -457,  -457,  -457,  -457,  -457,  -457,  -457,  -457,  -457,  -457,
-    -457,  -457,  -457,  -457,  -457,  -457,  -457,  -457,  -457,  -457,
-    -457,  -457,  -457,  -457,  -457,  -457,  -457,  -457,  -457,  -457,
-    -457,  -457,  -457,  -457,  -457,  -457,  -457,  -457,  -457,  -457,
-    -457,  -457,  -457,  -457,  -457,  -457,  -457,  -457,  -457,  -457,
-    -457,  -457,  -457,  -457,  -457,  -457,  -457,  -457,  -457,  -457,
-    -457,  -457,  -457,  -457,  -457,  -457,  -457,  -457,  -457,  -457,
-    -457,  -457,  -457,  -457,  -457,  -457,  -457,  -457,  -457,  -457,
-    -457,  -457,  -457,  -457,  -457,  -457,  -457,  -457,  -457,  -457,
-    -457,  -457,  -457,  -457,  -457,  -457,  -457,  -457,  -457,  -457,
-    -457,  -457,  -457,  -457,  -457,  -457,  -457,  -457,  -457,  -457,
-    -457,  -457,  -457,  -457,  -457,  -457,  -457,  -457,  -457,  -457,
-    -457,  -457,  -457,  -457,  -457,  -457,  -457,  -457,  -457,  -457,
-    -457,  -457,  -457,  -457,  -457,  -457,  -457,  -457,  -457,  -457,
-    -457,  -457,  -457,  -457,  -457,  -457,  -457,  -457,  -457,  -457,
-    -457,  -457,  -457,  -457,  -457,  -457,  -457,  -457,  -457,  -457,
-    -457,  -457,  -457,  -457,  -457,  -457,  -457,  -457,   132,  -457,
-    -457,  -457,  -457,  -457,    -1,  -457,  -457,  -457,  -457,  -457,
-    -457,  -301,  -298,  -457,  -457,  -457,  -457,  -457,  -457,  -457,
-    -457,  -457,  -457,  -457,  -457,  -457,  -457,  -457,  -457,  -457,
-    -457,  -457,  -457,  -457,  -457,  -457,  -457,  -457,  -457,  -457,
-    -457,  -457,  -457,  -457,  -457,    11,  -249,    17,    30,  6160,
-      20,  -457,    28,  -457,  -457,  -457,  -457,  4492,  -457,  -457,
-    -457,  -457,    50,  -457,  -457,   739,  -457,  -457,    16,  -457,
-      81,   -29,    69,  -457,  -313,  -457,   111,  -457,  6160,  -457,
-    -457,  -457,  6160,   103,   106,  -457,  -314,  -457,    72,  -457,
-    -457,  8566,   142,  -457,  -457,  -457,   136,  6160,  -457,   144,
-    -457,    53,  -457,  -457,    76,  6974,  -457,  -312,  1156,  -457,
-    -457,  -457,  -457,   142,  -309,  -457,  7372,  -308,  -457,   119,
-    -457,    65,  8566,  8566,  -457,  8566,  -457,  -457,  -457,  -457,
-    -457,  -457,  -457,  -457,  -457,  -457,  -457,  -457,  -457,  -457,
-    -457,  -457,  -457,  -457,  -457,    36,  -457,  -457,  -457,   171,
-      85,  8964,   173,  -457,  8566,  -457,  -457,  -323,   174,  -457,
-    6160,   139,  4909,  -457,  6160,  8566,  -457,   -29,  -457,   141,
-    -457,  -457,   145,    99,    35,    26,    71,   156,   159,   161,
-     196,   195,    23,   181,  7770,  -457,   183,   182,  -457,  -457,
-     186,   179,   180,  -457,   191,   192,   187,  8168,   193,  8566,
-     188,   189,   127,  -457,  -457,    96,  -457,  -249,   200,   201,
-    -457,  -457,  -457,  -457,  -457,  1573,  -457,  -457,  -457,  -457,
-    -457,  -457,  -457,  -457,  -457,   -24,   174,  7372,    13,  7372,
-    -457,  -457,  7372,  6160,  -457,   166,  -457,  -457,  -457,    86,
-    -457,  -457,  8566,   168,  -457,  -457,  8566,   205,  -457,  -457,
-    -457,  8566,  -457,   139,   142,   124,  -457,  -457,  -457,  5326,
-    -457,  -457,  -457,  -457,  8566,  8566,  8566,  8566,  8566,  8566,
-    8566,  8566,  8566,  8566,  8566,  8566,  8566,  8566,  8566,  8566,
-    8566,  8566,  8566,  -457,  -457,  -457,   206,   172,  -457,  1990,
-    -457,  -457,  -457,  1990,  -457,  8566,  -457,  -457,   130,  8566,
-     125,  -457,  -457,  -457,  -457,  -457,  -457,  -457,  -457,  -457,
-    -457,  -457,  -457,  -457,  8566,  8566,  -457,  -457,  -457,  -457,
-    -457,  -457,  -457,  7372,  -457,    94,  -457,  5743,  -457,  -457,
-     207,   204,  -457,  -457,  -457,   131,   174,   139,  -457,  -457,
-    -457,  -457,  -457,   145,   145,    99,    99,    35,    35,    35,
-      35,    26,    26,    71,   156,   159,   161,   196,   195,  8566,
-    -457,   212,    60,  -457,  1990,  3658,   169,  3241,    87,  -457,
-      89,  -457,  -457,  -457,  -457,  -457,  6576,  -457,  -457,  -457,
-    -457,   143,  8566,   211,   172,   210,   204,   184,  6160,   217,
-     219,  -457,  -457,  3658,   218,  -457,  -457,  -457,  8566,   220,
-    -457,  -457,  -457,   214,  2407,  8566,  -457,   216,   223,   185,
-     224,  2824,  -457,   225,  -457,  -457,  7372,  -457,  -457,  -457,
-      97,  8566,  2407,   218,  -457,  -457,  1990,  -457,   222,   204,
-    -457,  -457,  1990,   229,  -457,  -457
+    4304,  -733,  -733,  -733,  -733,  -733,  -733,  -733,  -733,  -733,
+    -733,  -733,  -733,  -733,  -733,  -733,  -733,  -733,  -733,  -733,
+    -733,  -733,  -733,  -733,  -733,  -733,  -733,  -733,  -733,  -733,
+    -733,  -733,  -733,  -733,  -733,  -733,  -733,  -733,  -733,  -733,
+    -733,  -733,  -733,  -733,  -733,  -733,  -733,  -733,  -733,  -733,
+    -733,  -733,  -733,  -733,  -733,  -733,  -733,  -733,  -733,  -733,
+    -733,  -733,  -733,  -733,  -733,  -733,  -733,  -733,  -733,  -733,
+    -733,  -733,  -733,  -733,  -733,  -733,  -733,  -733,  -733,  -733,
+    -733,  -733,  -733,  -733,  -733,  -733,  -733,  -733,  -733,  -733,
+    -733,  -733,  -733,  -733,  -733,  -733,  -733,  -733,  -733,  -733,
+    -733,  -733,  -733,  -733,  -733,  -733,  -733,  -733,  -733,  -733,
+    -733,  -733,  -733,  -733,  -733,  -733,  -733,  -733,  -733,  -733,
+    -733,  -733,  -733,  -733,  -733,  -733,  -733,  -733,  -733,  -733,
+    -733,  -733,  -733,  -733,  -733,  -733,  -733,  -733,  -733,  -733,
+    -733,  -733,  -733,  -733,  -733,  -733,  -733,  -733,  -733,  -733,
+    -733,  -733,  -733,  -733,  -733,  -733,  -733,  -733,  -733,  -733,
+    -733,  -733,  -733,  -733,  -733,  -733,  -733,  -733,  -733,  -733,
+    -733,  -733,  -733,  -733,  -733,  -733,  -733,  -733,  -733,  -733,
+    -733,  -733,  -733,  -733,  -733,  -733,  -733,  -733,  -733,  -733,
+    -733,  -733,  -733,  -733,  -733,  -733,  -733,  -733,  -733,  -733,
+    -733,  -733,  -733,  -733,  -733,  -733,  -733,  -733,  -733,  -733,
+    -733,  -733,  -733,  -733,  -733,  -733,  -733,  -733,  -733,  -733,
+    -733,  -733,  -733,  -733,  -733,  -733,  -733,  -733,  -733,  -733,
+    -733,  -733,  -733,  -733,  -733,  -733,  -733,  -733,  -733,  -733,
+    -733,  -733,  -733,  -733,  -733,  -733,  -733,  -733,  -733,  -733,
+    -733,  -733,  -733,  -733,  -733,  -733,  -733,  -733,  -733,  -733,
+    -733,  -733,  -733,  -733,  -733,  -733,  -733,  -733,  -733,  -733,
+    -733,  -733,  -733,  -733,  -733,  -733,  -733,  -733,  -733,  -733,
+    -733,  -733,  -733,  -733,  -733,  -733,  -733,  -733,  -733,  -733,
+    -733,  -733,  -733,  -733,  -733,  -733,  -733,  -733,  -733,  -733,
+    -733,  -733,  -733,  -733,  -733,  -733,  -733,  -733,  -733,  -733,
+    -733,  -733,  -733,  -733,  -733,  -733,  -733,  -733,  -733,  -733,
+     109,  -733,  -733,  -733,  -733,  -733,     3,  -733,  -733,  -733,
+    -733,  -733,  -733,  -322,  -261,  -733,  -733,  -733,  -733,  -733,
+    -733,  -733,  -733,  -733,  -733,  -733,  -733,  -733,  -733,  -733,
+    -733,  -733,  -733,  -733,  -733,  -733,  -733,  -733,  -733,  -733,
+    -733,  -733,  -733,  -733,  -733,  -733,  -733,    19,   101,   140,
+      79,  6514,    57,  -733,    96,  -733,  -733,  -733,  -733,  4746,
+    -733,  -733,  -733,  -733,   133,  -733,  -733,   768,  -733,  -733,
+      16,  -733,   151,   -32,   125,  -733,  -335,  -733,   158,  -733,
+    6514,  -733,  -733,  -733,  6514,   127,   128,  -733,    13,  -733,
+      72,  -733,  -733,  9493,   163,  -733,  -733,  -733,   156,  6514,
+    -733,   160,  -733,    20,  -733,  -733,    61,  7801,  -733,    10,
+    1210,  -733,  -733,  -733,  -733,   163,  -330,  -733,  8224,    14,
+    -733,   134,  -733,    88,  9493,  9493,  -733,  9493,  -733,  -733,
+    -733,  -733,  -733,  -733,  -733,  -733,  -733,  -733,  -733,  -733,
+    -733,  -733,  -733,  -733,  -733,  -733,  -733,    54,  -733,  -733,
+    -733,   166,    62,  9916,   171,  -733,  9493,  -733,  -733,  -343,
+     173,  -733,  6514,   137,  5188,  -733,  6514,  9493,  -733,   -32,
+    -733,   141,  -733,  -733,   122,    93,    39,    28,    41,   157,
+     159,   161,   192,   195,    21,   181,  8647,  -733,   183,   182,
+    -733,  -733,   186,   178,   179,  -733,   190,   191,   184,  9070,
+     196,  9493,   187,   188,   189,   194,   197,   131,  -733,  -733,
+      99,  -733,   101,   200,   205,  -733,  -733,  -733,  -733,  -733,
+    1652,  -733,  -733,  -733,  -733,  -733,  -733,  -733,  -733,  -733,
+    -376,   173,  8224,    36,  6955,  -733,  -733,  8224,  6514,  -733,
+     170,  -733,  -733,  -733,    71,  -733,  -733,  9493,   176,  -733,
+    -733,  9493,   208,  -733,  -733,  -733,  9493,  -733,   137,   163,
+     106,  -733,  -733,  -733,  5630,  -733,  -733,  -733,  -733,  9493,
+    9493,  9493,  9493,  9493,  9493,  9493,  9493,  9493,  9493,  9493,
+    9493,  9493,  9493,  9493,  9493,  9493,  9493,  9493,  -733,  -733,
+    -733,   210,   180,  -733,  2094,  -733,  -733,  -733,  2094,  -733,
+    9493,  -733,  -733,   108,  9493,    29,  -733,  -733,  -733,  -733,
+    -733,  -733,  -733,  -733,  -733,  -733,  -733,  -733,  -733,  -733,
+    -733,  -733,  9493,  9493,  -733,  -733,  -733,  -733,  -733,  -733,
+    -733,  8224,  -733,  -733,   139,  -733,  6072,  -733,  -733,   211,
+     185,  -733,  -733,  -733,   123,   173,   137,  -733,  -733,  -733,
+    -733,  -733,   122,   122,    93,    93,    39,    39,    39,    39,
+      28,    28,    41,   157,   159,   161,   192,   195,  9493,  -733,
+     215,    85,  -733,  2094,  3862,   153,  3420,    76,  -733,    80,
+    -733,  -733,  -733,  -733,  -733,  7378,  -733,  -733,  -733,  -733,
+      86,  9493,   214,   180,   216,   185,   193,  6514,   219,   222,
+    -733,  -733,  3862,   220,  -733,  -733,  -733,  9493,   224,  -733,
+    -733,  -733,   217,  2536,  9493,  -733,   213,   226,   199,   227,
+    2978,  -733,   228,  -733,  -733,  8224,  -733,  -733,  -733,    83,
+    9493,  2536,   220,  -733,  -733,  2094,  -733,   223,   185,  -733,
+    -733,  2094,   225,  -733,  -733
 };
 
   /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
      Performed when YYTABLE does not specify something else to do.  Zero
      means the default is an error.  */
-static const yytype_uint16 yydefact[] =
+static const yytype_int16 yydefact[] =
 {
        0,   157,   210,   208,   209,   207,   214,   215,   216,   217,
      218,   219,   220,   221,   222,   211,   212,   213,   223,   224,
@@ -1314,98 +1494,101 @@
      298,   299,   300,   301,   302,   303,   304,   305,   306,   310,
      311,   312,   313,   314,   315,   316,   317,   318,   322,   323,
      324,   325,   326,   327,   328,   329,   330,   334,   331,   332,
-     333,   493,   494,   495,   346,   347,   370,   373,   335,   344,
+     333,   515,   516,   517,   346,   347,   370,   373,   335,   344,
      345,   361,   343,   392,   393,   396,   397,   398,   400,   401,
-     402,   404,   405,   406,   408,   409,   483,   484,   369,   371,
+     402,   404,   405,   406,   408,   409,   505,   506,   369,   371,
      372,   348,   349,   350,   394,   351,   355,   356,   359,   399,
      403,   407,   352,   353,   357,   358,   395,   354,   360,   439,
      441,   442,   443,   445,   446,   447,   449,   450,   451,   453,
      454,   455,   457,   458,   459,   461,   462,   463,   465,   466,
      467,   469,   470,   471,   473,   474,   475,   477,   478,   479,
      481,   482,   440,   444,   448,   452,   456,   464,   468,   472,
-     460,   476,   480,   374,   375,   376,   410,   419,   421,   415,
-     420,   422,   423,   425,   426,   427,   429,   430,   431,   433,
-     434,   435,   437,   438,   411,   412,   413,   424,   414,   416,
-     417,   418,   428,   432,   436,   485,   486,   489,   490,   491,
-     492,   487,   488,   584,   132,   498,   499,   500,     0,   497,
-     161,   159,   160,   158,     0,   206,   162,   163,   164,   134,
-     133,     0,   190,   171,   173,   169,   175,   177,   172,   174,
-     170,   176,   178,   167,   168,   192,   179,   186,   187,   188,
-     189,   180,   181,   182,   183,   184,   185,   135,   136,   137,
-     138,   139,   140,   147,   583,     0,   585,     0,   109,   108,
-       0,   120,   125,   154,   153,   151,   155,     0,   148,   150,
-     156,   130,   202,   152,   496,     0,   580,   582,     0,   503,
-       0,     0,     0,    97,     0,    94,     0,   107,     0,   116,
-     110,   118,     0,   119,     0,    95,   126,   100,     0,   149,
-     131,     0,   195,   201,     1,   581,     0,     0,   501,   144,
-     146,     0,   142,   193,     0,     0,    98,     0,     0,   586,
-     111,   115,   117,   113,   121,   112,     0,   127,   103,     0,
-     101,     0,     0,     0,     9,     0,    43,    42,    44,    41,
-       5,     6,     7,     8,     2,    16,    14,    15,    17,    10,
-      11,    12,    13,     3,    18,    37,    20,    25,    26,     0,
-       0,    30,     0,   204,     0,    36,    34,     0,   196,    96,
-       0,     0,     0,   505,     0,     0,   141,     0,   191,     0,
-     197,    45,    49,    52,    55,    60,    63,    65,    67,    69,
-      71,    73,    75,     0,     0,    99,     0,   531,   540,   544,
-       0,     0,     0,   565,     0,     0,     0,     0,     0,     0,
-       0,     0,    45,    78,    91,     0,   518,     0,   156,   130,
-     521,   542,   520,   528,   519,     0,   522,   523,   546,   524,
-     553,   525,   526,   561,   527,     0,   114,     0,   122,     0,
-     513,   129,     0,     0,   105,     0,   102,    38,    39,     0,
-      22,    23,     0,     0,    28,    27,     0,   206,    31,    33,
-      40,     0,   203,     0,   511,     0,   509,   504,   506,     0,
-      93,   145,   143,   194,     0,     0,     0,     0,     0,     0,
+     460,   476,   480,   483,   484,   485,   486,   487,   488,   489,
+     490,   491,   492,   493,   494,   495,   496,   497,   498,   499,
+     500,   501,   502,   503,   504,   374,   375,   376,   410,   419,
+     421,   415,   420,   422,   423,   425,   426,   427,   429,   430,
+     431,   433,   434,   435,   437,   438,   411,   412,   413,   424,
+     414,   416,   417,   418,   428,   432,   436,   507,   508,   511,
+     512,   513,   514,   509,   510,   610,   132,   520,   521,   522,
+       0,   519,   161,   159,   160,   158,     0,   206,   162,   163,
+     164,   134,   133,     0,   190,   171,   173,   169,   175,   177,
+     172,   174,   170,   176,   178,   167,   168,   192,   179,   186,
+     187,   188,   189,   180,   181,   182,   183,   184,   185,   135,
+     136,   137,   138,   139,   140,   147,   609,     0,   611,     0,
+     109,   108,     0,   120,   125,   154,   153,   151,   155,     0,
+     148,   150,   156,   130,   202,   152,   518,     0,   606,   608,
+       0,   525,     0,     0,     0,    97,     0,    94,     0,   107,
+       0,   116,   110,   118,     0,   119,     0,    95,   126,   100,
+       0,   149,   131,     0,   195,   201,     1,   607,     0,     0,
+     523,   144,   146,     0,   142,   193,     0,     0,    98,     0,
+       0,   612,   111,   115,   117,   113,   121,   112,     0,   127,
+     103,     0,   101,     0,     0,     0,     9,     0,    43,    42,
+      44,    41,     5,     6,     7,     8,     2,    16,    14,    15,
+      17,    10,    11,    12,    13,     3,    18,    37,    20,    25,
+      26,     0,     0,    30,     0,   204,     0,    36,    34,     0,
+     196,    96,     0,     0,     0,   527,     0,     0,   141,     0,
+     191,     0,   197,    45,    49,    52,    55,    60,    63,    65,
+      67,    69,    71,    73,    75,     0,     0,    99,     0,   554,
+     563,   567,     0,     0,     0,   588,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,    45,    78,    91,
+       0,   541,     0,   156,   130,   544,   565,   543,   551,   542,
+       0,   545,   546,   569,   547,   576,   548,   549,   584,   550,
+       0,   114,     0,   122,     0,   535,   129,     0,     0,   105,
+       0,   102,    38,    39,     0,    22,    23,     0,     0,    28,
+      27,     0,   206,    31,    33,    40,     0,   203,     0,   533,
+       0,   531,   526,   528,     0,    93,   145,   143,   194,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,    76,   198,   199,     0,     0,   530,     0,
-     563,   576,   575,     0,   567,     0,   579,   577,     0,     0,
-       0,   560,   529,    81,    82,    84,    83,    86,    87,    88,
-      89,    90,    85,    80,     0,     0,   545,   541,   543,   547,
-     554,   562,   124,     0,   516,     0,   128,     0,   106,     4,
-       0,    24,    21,    32,   205,     0,   512,     0,   507,   502,
-      46,    47,    48,    51,    50,    53,    54,    58,    59,    56,
-      57,    61,    62,    64,    66,    68,    70,    72,    74,     0,
-     200,   590,     0,   588,   532,     0,     0,     0,     0,   578,
-       0,   559,    79,    92,   123,   514,     0,   104,    19,   508,
-     510,     0,     0,     0,     0,     0,   551,     0,     0,     0,
-       0,   570,   569,   572,   538,   555,   515,   517,     0,     0,
-     587,   589,   533,     0,     0,     0,   571,     0,     0,   550,
-       0,     0,   548,     0,    77,   591,     0,   535,   564,   534,
-       0,   573,     0,   538,   537,   539,   557,   552,     0,   574,
-     568,   549,   558,     0,   566,   556
+       0,     0,     0,     0,     0,     0,     0,     0,    76,   198,
+     199,     0,     0,   553,     0,   586,   599,   598,     0,   590,
+       0,   602,   600,     0,     0,     0,   583,   603,   604,   605,
+     552,    81,    82,    84,    83,    86,    87,    88,    89,    90,
+      85,    80,     0,     0,   568,   564,   566,   570,   577,   585,
+     124,     0,   538,   539,     0,   128,     0,   106,     4,     0,
+      24,    21,    32,   205,     0,   534,     0,   529,   524,    46,
+      47,    48,    51,    50,    53,    54,    58,    59,    56,    57,
+      61,    62,    64,    66,    68,    70,    72,    74,     0,   200,
+     616,     0,   614,   555,     0,     0,     0,     0,   601,     0,
+     582,    79,    92,   123,   536,     0,   104,    19,   530,   532,
+       0,     0,     0,     0,     0,   574,     0,     0,     0,     0,
+     593,   592,   595,   561,   578,   537,   540,     0,     0,   613,
+     615,   556,     0,     0,     0,   594,     0,     0,   573,     0,
+       0,   571,     0,    77,   617,     0,   558,   587,   557,     0,
+     596,     0,   561,   560,   562,   580,   575,     0,   597,   591,
+     572,   581,     0,   589,   579
 };
 
   /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int16 yypgoto[] =
 {
-    -457,  -457,  -457,  -457,  -457,  -457,  -457,  -457,  -457,  -457,
-    -457,  -457,  8868,  -457,   -87,   -84,  -127,   -93,   -33,   -31,
-     -27,   -25,   -28,   -26,  -457,   -86,  -457,  -103,  -457,  -111,
-    -125,     2,  -457,  -457,  -457,     4,  -457,  -457,  -457,   176,
-     194,   178,  -457,  -457,  -337,  -457,  -457,  -457,  -457,    95,
-    -457,   -37,   -46,  -457,     9,  -457,     0,   -63,  -457,  -457,
-    -457,  -457,   263,  -457,  -457,  -457,  -456,  -140,    10,   -73,
-    -211,  -457,  -102,  -198,  -321,  -457,  -144,  -457,  -457,  -155,
-    -154,  -457,  -457,   198,  -274,   -97,  -457,    46,  -457,  -118,
-    -457,    51,  -457,  -457,  -457,  -457,    52,  -457,  -457,  -457,
-    -457,  -457,  -457,  -457,  -457,   213,  -457,  -457,  -457,  -457,
-    -105
+    -733,  -733,  -733,  -733,  -733,  -733,  -733,  -733,  -733,  -733,
+    -733,  -733,  9826,  -733,  -105,   -98,  -156,  -102,   -29,   -28,
+     -30,   -27,   -26,   -31,  -733,   -82,  -733,  -101,  -733,  -109,
+    -134,     2,  -733,  -733,  -733,     4,  -733,  -733,  -733,   177,
+     198,   201,  -733,  -733,  -341,  -733,  -733,  -733,  -733,    94,
+    -733,   -37,   -46,  -733,     9,  -733,     0,   -66,  -733,  -733,
+    -733,  -733,   262,  -733,  -733,  -733,  -481,  -149,    11,   -79,
+    -213,  -733,  -108,  -204,  -732,  -733,  -148,  -733,  -733,  -161,
+    -160,  -733,  -733,   202,  -274,  -100,  -733,    44,  -733,  -127,
+    -733,    47,  -733,  -733,  -733,  -733,    49,  -733,  -733,  -733,
+    -733,  -733,  -733,  -733,  -733,   221,  -733,  -733,  -733,  -733,
+    -112
 };
 
   /* YYDEFGOTO[NTERM-NUM].  */
 static const yytype_int16 yydefgoto[] =
 {
-      -1,   443,   444,   445,   630,   446,   447,   448,   449,   450,
-     451,   452,   502,   454,   472,   473,   474,   475,   476,   477,
-     478,   479,   480,   481,   482,   503,   659,   504,   614,   505,
-     561,   506,   345,   533,   421,   507,   347,   348,   349,   379,
-     380,   381,   350,   351,   352,   353,   354,   355,   401,   402,
-     356,   357,   358,   359,   455,   404,   456,   407,   392,   393,
-     457,   362,   363,   364,   464,   397,   462,   463,   555,   556,
-     531,   625,   510,   511,   512,   513,   514,   589,   685,   718,
-     709,   710,   711,   719,   515,   516,   517,   518,   712,   689,
-     519,   520,   713,   733,   521,   522,   523,   665,   593,   667,
-     693,   707,   708,   524,   365,   366,   367,   376,   525,   662,
-     663
+      -1,   465,   466,   467,   659,   468,   469,   470,   471,   472,
+     473,   474,   527,   476,   494,   495,   496,   497,   498,   499,
+     500,   501,   502,   503,   504,   528,   688,   529,   642,   530,
+     586,   531,   367,   558,   443,   532,   369,   370,   371,   401,
+     402,   403,   372,   373,   374,   375,   376,   377,   423,   424,
+     378,   379,   380,   381,   477,   426,   478,   429,   414,   415,
+     479,   384,   385,   386,   486,   419,   484,   485,   580,   581,
+     556,   654,   535,   536,   537,   538,   539,   614,   714,   747,
+     738,   739,   740,   748,   540,   541,   542,   543,   741,   718,
+     544,   545,   742,   762,   546,   547,   548,   694,   618,   696,
+     722,   736,   737,   549,   387,   388,   389,   398,   550,   691,
+     692
 };
 
   /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM.  If
@@ -1413,14 +1596,14 @@
      number is the opposite.  If YYTABLE_NINF, syntax error.  */
 static const yytype_int16 yytable[] =
 {
-     361,   551,   344,   415,   346,   405,   405,   484,   559,   360,
-     405,   484,   416,   552,   406,   485,   371,   527,   532,   372,
+     383,   746,   366,   576,   368,   584,   427,   512,   754,   382,
+     515,   427,   516,   517,   428,   577,   520,   393,   552,   746,
        2,     3,     4,     5,     6,     7,     8,     9,    10,    11,
       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
       22,    23,    24,    25,    26,    27,    28,    29,    30,    31,
       32,    33,    34,    35,    36,    37,    38,    39,    40,    41,
       42,    43,    44,    45,    46,    47,    48,    49,    50,    51,
-      52,    53,    54,    55,    56,    57,    58,   627,   375,    61,
+      52,    53,    54,    55,    56,    57,    58,   656,   394,    61,
       62,    63,    64,    65,    66,    67,    68,    69,    70,    71,
       72,    73,    74,    75,    76,    77,    78,    79,    80,    81,
       82,    83,    84,    85,    86,    87,    88,    89,    90,    91,
@@ -1444,342 +1627,53 @@
      262,   263,   264,   265,   266,   267,   268,   269,   270,   271,
      272,   273,   274,   275,   276,   277,   278,   279,   280,   281,
      282,   283,   284,   285,   286,   287,   288,   289,   290,   291,
-     292,   389,   382,   530,   539,   664,   622,   618,   624,   483,
-     369,   626,   558,   417,   399,   571,   572,   582,   687,   458,
-     569,   570,   484,   540,   541,   377,   389,   490,   373,   623,
-     493,   382,   494,   495,   384,   400,   498,   385,   548,   383,
-     526,   528,   370,   -35,   378,   542,   687,   390,   360,   543,
-     460,   573,   574,   583,   374,   361,   360,   344,   396,   346,
-     299,   466,   575,   576,   360,   304,   305,   467,   383,   560,
-     683,   386,   383,   717,   684,   391,   598,   360,   600,   535,
-     725,   360,   536,   418,   468,   666,   419,   461,   586,   420,
-     469,   717,   398,   545,   629,   694,   360,   695,   509,   546,
-     615,   615,   674,   615,   389,   728,   675,   508,   676,   558,
-     615,   615,   403,   616,   530,   460,   530,   460,   567,   530,
-     568,   631,   408,   603,   604,   605,   606,   607,   608,   609,
-     610,   611,   612,   633,   647,   648,   649,   650,   637,   615,
-     671,   638,   732,   613,   615,   637,   413,   669,   679,   414,
-     553,   405,   461,   459,   461,   697,   618,   615,   698,   360,
-     465,   360,   534,   360,   295,   296,   297,   564,   565,   566,
-     643,   644,   651,   652,   668,   645,   646,   558,   670,   544,
-     549,   636,   554,   484,   563,   577,   460,   578,   579,   580,
-     581,   584,   587,   590,   588,   727,   591,   592,   594,   595,
-     599,   672,   673,   601,   596,   509,   602,   -36,   -34,   628,
-     530,   632,   460,   -29,   508,   661,   660,   678,   615,   682,
-     690,   700,   702,   461,   618,   704,   705,   703,   715,  -536,
-     716,   722,   360,   721,   653,   487,   726,   654,   681,   734,
-     723,   735,   655,   657,   686,   656,   658,   699,   411,   461,
-     412,   368,   562,   635,   680,   691,   724,   730,   360,   731,
-     692,   619,   410,   530,   409,   706,   620,   621,   395,   701,
-       0,     0,   686,     0,     0,     0,     0,     0,     0,   509,
-     460,     0,     0,   509,   720,   714,   560,     0,   508,     0,
-       0,     0,   508,     0,     0,     0,     0,     0,     0,     0,
-     729,     0,     0,   530,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   461,   688,     0,
-       0,     0,     0,     0,     0,     0,   360,     0,     0,     0,
-       0,     0,   389,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   688,     0,     0,     0,
-       0,     0,     0,     0,   509,   509,     0,   509,     0,     0,
-       0,     0,     0,   508,   508,     0,   508,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   390,     0,
-       0,     0,     0,   509,     0,     0,     0,   360,     0,     0,
-       0,     0,   508,     0,   509,     0,     0,     0,     0,     0,
-       0,   509,     0,   508,     0,     0,     0,     0,     0,     0,
-     508,     0,   509,     0,     0,     0,   509,     0,     0,     0,
-       0,   508,   509,     0,     0,   508,     0,     0,     0,   394,
-       0,   508,     1,     2,     3,     4,     5,     6,     7,     8,
-       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
-      19,    20,    21,    22,    23,    24,    25,    26,    27,    28,
-      29,    30,    31,    32,    33,    34,    35,    36,    37,    38,
-      39,    40,    41,    42,    43,    44,    45,    46,    47,    48,
-      49,    50,    51,    52,    53,    54,    55,    56,    57,    58,
-      59,    60,    61,    62,    63,    64,    65,    66,    67,    68,
-      69,    70,    71,    72,    73,    74,    75,    76,    77,    78,
-      79,    80,    81,    82,    83,    84,    85,    86,    87,    88,
-      89,    90,    91,    92,    93,    94,    95,    96,    97,    98,
-      99,   100,   101,   102,   103,   104,   105,   106,   107,   108,
-     109,   110,   111,   112,   113,   114,   115,   116,   117,   118,
-     119,   120,   121,   122,   123,   124,   125,   126,   127,   128,
-     129,   130,   131,   132,   133,   134,   135,   136,   137,   138,
-     139,   140,   141,   142,   143,   144,   145,   146,   147,   148,
-     149,   150,   151,   152,   153,   154,   155,   156,   157,   158,
-     159,   160,   161,   162,   163,   164,   165,   166,   167,   168,
-     169,   170,   171,   172,   173,   174,   175,   176,   177,   178,
-     179,   180,   181,   182,   183,   184,   185,   186,   187,   188,
-     189,   190,   191,   192,   193,   194,   195,   196,   197,   198,
-     199,   200,   201,   202,   203,   204,   205,   206,   207,   208,
-     209,   210,   211,   212,   213,   214,   215,   216,   217,   218,
-     219,   220,   221,   222,   223,   224,   225,   226,   227,   228,
-     229,   230,   231,   232,   233,   234,   235,   236,   237,   238,
-     239,   240,   241,   242,   243,   244,   245,   246,   247,   248,
-     249,   250,   251,   252,   253,   254,   255,   256,   257,   258,
-     259,   260,   261,   262,   263,   264,   265,   266,   267,   268,
-     269,   270,   271,   272,   273,   274,   275,   276,   277,   278,
-     279,   280,   281,   282,   283,   284,   285,   286,   287,   288,
-     289,   290,   291,   292,     0,     0,     0,     0,     0,     0,
+     292,   293,   294,   295,   296,   297,   298,   299,   300,   301,
+     302,   303,   304,   305,   306,   307,   308,   309,   310,   311,
+     312,   313,   314,   411,   404,   583,   646,   555,   564,   650,
+     693,   653,   439,   421,   655,   505,   391,   607,   480,   596,
+     597,   506,   437,   716,   427,   506,   594,   595,   411,   507,
+     488,   438,   557,   404,   600,   601,   489,   422,   395,   551,
+     553,   405,   573,   565,   566,   643,   700,   506,   392,   412,
+     382,   716,   482,   608,   651,   598,   599,   383,   382,   366,
+     418,   368,   321,   -35,   396,   567,   382,   326,   327,   568,
+     405,   490,   570,   406,   405,   585,   407,   491,   571,   382,
+     623,   658,   625,   382,   695,   440,   723,   643,   441,   483,
+     724,   442,   643,   757,   611,   400,   643,   712,   382,   643,
+     534,   713,   643,   727,   560,   583,   411,   561,   703,   533,
+     676,   677,   678,   679,   592,   643,   593,   482,   644,   482,
+     397,   555,   666,   555,   643,   667,   555,   698,   660,   631,
+     632,   633,   634,   635,   636,   637,   638,   639,   640,   666,
+     662,   408,   708,   317,   318,   319,   589,   590,   591,   641,
+     399,   761,   578,   704,   483,   705,   483,   672,   673,   646,
+     413,   382,   726,   382,   420,   382,   674,   675,   680,   681,
+     425,   430,   435,   436,   427,   481,   569,   583,   487,   559,
+     574,   697,   579,   665,   506,   699,   588,   605,   602,   603,
+     604,   482,   606,   609,   612,   615,   613,   616,   617,   619,
+     620,   643,   756,   621,   626,   624,   719,   627,   628,   -36,
+     534,   701,   702,   629,   -34,   657,   630,   482,   -29,   533,
+     555,   661,   689,   707,   711,   690,   729,   646,   483,   733,
+     731,   734,   750,  -559,   744,   745,   751,   382,   732,   764,
+     509,   755,   763,   682,   684,   683,   687,   728,   685,   710,
+     686,   433,   390,   587,   483,   715,   752,   709,   720,   664,
+     759,   753,   760,   382,   647,   735,   721,   648,   432,   649,
+     431,   730,     0,     0,   555,   434,     0,     0,   417,     0,
+       0,     0,     0,   715,   534,     0,     0,     0,   534,   482,
+       0,     0,     0,   533,     0,   749,   743,   533,     0,   585,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   293,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     294,   295,   296,   297,   298,     0,     0,     0,     0,     0,
-       0,     0,     0,   299,   300,   301,   302,   303,   304,   305,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   306,   307,   308,   309,   310,   311,     0,     0,
-       0,     0,     0,     0,     0,     0,   312,     0,   313,   314,
-     315,   316,   317,   318,   319,   320,   321,   322,   323,   324,
-     325,   326,   327,   328,   329,   330,   331,   332,   333,   334,
-     335,   336,   337,   338,   339,   340,   341,   342,   343,     1,
-       2,     3,     4,     5,     6,     7,     8,     9,    10,    11,
-      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
-      22,    23,    24,    25,    26,    27,    28,    29,    30,    31,
-      32,    33,    34,    35,    36,    37,    38,    39,    40,    41,
-      42,    43,    44,    45,    46,    47,    48,    49,    50,    51,
-      52,    53,    54,    55,    56,    57,    58,    59,    60,    61,
-      62,    63,    64,    65,    66,    67,    68,    69,    70,    71,
-      72,    73,    74,    75,    76,    77,    78,    79,    80,    81,
-      82,    83,    84,    85,    86,    87,    88,    89,    90,    91,
-      92,    93,    94,    95,    96,    97,    98,    99,   100,   101,
-     102,   103,   104,   105,   106,   107,   108,   109,   110,   111,
-     112,   113,   114,   115,   116,   117,   118,   119,   120,   121,
-     122,   123,   124,   125,   126,   127,   128,   129,   130,   131,
-     132,   133,   134,   135,   136,   137,   138,   139,   140,   141,
-     142,   143,   144,   145,   146,   147,   148,   149,   150,   151,
-     152,   153,   154,   155,   156,   157,   158,   159,   160,   161,
-     162,   163,   164,   165,   166,   167,   168,   169,   170,   171,
-     172,   173,   174,   175,   176,   177,   178,   179,   180,   181,
-     182,   183,   184,   185,   186,   187,   188,   189,   190,   191,
-     192,   193,   194,   195,   196,   197,   198,   199,   200,   201,
-     202,   203,   204,   205,   206,   207,   208,   209,   210,   211,
-     212,   213,   214,   215,   216,   217,   218,   219,   220,   221,
-     222,   223,   224,   225,   226,   227,   228,   229,   230,   231,
-     232,   233,   234,   235,   236,   237,   238,   239,   240,   241,
-     242,   243,   244,   245,   246,   247,   248,   249,   250,   251,
-     252,   253,   254,   255,   256,   257,   258,   259,   260,   261,
-     262,   263,   264,   265,   266,   267,   268,   269,   270,   271,
-     272,   273,   274,   275,   276,   277,   278,   279,   280,   281,
-     282,   283,   284,   285,   286,   287,   288,   289,   290,   291,
-     292,     0,     0,   422,   423,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   424,   425,     0,   486,     0,   487,   488,     0,
-       0,     0,     0,   489,   426,   427,   428,   429,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   294,   295,   296,
-     297,   298,     0,     0,     0,   430,   431,   432,   433,   434,
-     299,   300,   301,   302,   303,   304,   305,   490,   491,   492,
-     493,     0,   494,   495,   496,   497,   498,   499,   500,   306,
-     307,   308,   309,   310,   311,   435,   436,   437,   438,   439,
-     440,   441,   442,   312,   501,   313,   314,   315,   316,   317,
-     318,   319,   320,   321,   322,   323,   324,   325,   326,   327,
-     328,   329,   330,   331,   332,   333,   334,   335,   336,   337,
-     338,   339,   340,   341,   342,   343,     1,     2,     3,     4,
-       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
-      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
-      25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
-      35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
-      45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
-      55,    56,    57,    58,    59,    60,    61,    62,    63,    64,
-      65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
-      75,    76,    77,    78,    79,    80,    81,    82,    83,    84,
-      85,    86,    87,    88,    89,    90,    91,    92,    93,    94,
-      95,    96,    97,    98,    99,   100,   101,   102,   103,   104,
-     105,   106,   107,   108,   109,   110,   111,   112,   113,   114,
-     115,   116,   117,   118,   119,   120,   121,   122,   123,   124,
-     125,   126,   127,   128,   129,   130,   131,   132,   133,   134,
-     135,   136,   137,   138,   139,   140,   141,   142,   143,   144,
-     145,   146,   147,   148,   149,   150,   151,   152,   153,   154,
-     155,   156,   157,   158,   159,   160,   161,   162,   163,   164,
-     165,   166,   167,   168,   169,   170,   171,   172,   173,   174,
-     175,   176,   177,   178,   179,   180,   181,   182,   183,   184,
-     185,   186,   187,   188,   189,   190,   191,   192,   193,   194,
-     195,   196,   197,   198,   199,   200,   201,   202,   203,   204,
-     205,   206,   207,   208,   209,   210,   211,   212,   213,   214,
-     215,   216,   217,   218,   219,   220,   221,   222,   223,   224,
-     225,   226,   227,   228,   229,   230,   231,   232,   233,   234,
-     235,   236,   237,   238,   239,   240,   241,   242,   243,   244,
-     245,   246,   247,   248,   249,   250,   251,   252,   253,   254,
-     255,   256,   257,   258,   259,   260,   261,   262,   263,   264,
-     265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
-     275,   276,   277,   278,   279,   280,   281,   282,   283,   284,
-     285,   286,   287,   288,   289,   290,   291,   292,     0,     0,
-     422,   423,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   424,
-     425,     0,   486,     0,   487,   617,     0,     0,     0,     0,
-     489,   426,   427,   428,   429,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   294,   295,   296,   297,   298,     0,
-       0,     0,   430,   431,   432,   433,   434,   299,   300,   301,
-     302,   303,   304,   305,   490,   491,   492,   493,     0,   494,
-     495,   496,   497,   498,   499,   500,   306,   307,   308,   309,
-     310,   311,   435,   436,   437,   438,   439,   440,   441,   442,
-     312,   501,   313,   314,   315,   316,   317,   318,   319,   320,
-     321,   322,   323,   324,   325,   326,   327,   328,   329,   330,
-     331,   332,   333,   334,   335,   336,   337,   338,   339,   340,
-     341,   342,   343,     1,     2,     3,     4,     5,     6,     7,
-       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
-      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
-      28,    29,    30,    31,    32,    33,    34,    35,    36,    37,
-      38,    39,    40,    41,    42,    43,    44,    45,    46,    47,
-      48,    49,    50,    51,    52,    53,    54,    55,    56,    57,
-      58,    59,    60,    61,    62,    63,    64,    65,    66,    67,
-      68,    69,    70,    71,    72,    73,    74,    75,    76,    77,
-      78,    79,    80,    81,    82,    83,    84,    85,    86,    87,
-      88,    89,    90,    91,    92,    93,    94,    95,    96,    97,
-      98,    99,   100,   101,   102,   103,   104,   105,   106,   107,
-     108,   109,   110,   111,   112,   113,   114,   115,   116,   117,
-     118,   119,   120,   121,   122,   123,   124,   125,   126,   127,
-     128,   129,   130,   131,   132,   133,   134,   135,   136,   137,
-     138,   139,   140,   141,   142,   143,   144,   145,   146,   147,
-     148,   149,   150,   151,   152,   153,   154,   155,   156,   157,
-     158,   159,   160,   161,   162,   163,   164,   165,   166,   167,
-     168,   169,   170,   171,   172,   173,   174,   175,   176,   177,
-     178,   179,   180,   181,   182,   183,   184,   185,   186,   187,
-     188,   189,   190,   191,   192,   193,   194,   195,   196,   197,
-     198,   199,   200,   201,   202,   203,   204,   205,   206,   207,
-     208,   209,   210,   211,   212,   213,   214,   215,   216,   217,
-     218,   219,   220,   221,   222,   223,   224,   225,   226,   227,
-     228,   229,   230,   231,   232,   233,   234,   235,   236,   237,
-     238,   239,   240,   241,   242,   243,   244,   245,   246,   247,
-     248,   249,   250,   251,   252,   253,   254,   255,   256,   257,
-     258,   259,   260,   261,   262,   263,   264,   265,   266,   267,
-     268,   269,   270,   271,   272,   273,   274,   275,   276,   277,
-     278,   279,   280,   281,   282,   283,   284,   285,   286,   287,
-     288,   289,   290,   291,   292,     0,     0,   422,   423,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   424,   425,     0,   486,
-       0,   487,     0,     0,     0,     0,     0,   489,   426,   427,
-     428,   429,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   294,   295,   296,   297,   298,     0,     0,     0,   430,
-     431,   432,   433,   434,   299,   300,   301,   302,   303,   304,
-     305,   490,   491,   492,   493,     0,   494,   495,   496,   497,
-     498,   499,   500,   306,   307,   308,   309,   310,   311,   435,
-     436,   437,   438,   439,   440,   441,   442,   312,   501,   313,
-     314,   315,   316,   317,   318,   319,   320,   321,   322,   323,
-     324,   325,   326,   327,   328,   329,   330,   331,   332,   333,
-     334,   335,   336,   337,   338,   339,   340,   341,   342,   343,
-       1,     2,     3,     4,     5,     6,     7,     8,     9,    10,
-      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
-      21,    22,    23,    24,    25,    26,    27,    28,    29,    30,
-      31,    32,    33,    34,    35,    36,    37,    38,    39,    40,
-      41,    42,    43,    44,    45,    46,    47,    48,    49,    50,
-      51,    52,    53,    54,    55,    56,    57,    58,    59,    60,
-      61,    62,    63,    64,    65,    66,    67,    68,    69,    70,
-      71,    72,    73,    74,    75,    76,    77,    78,    79,    80,
-      81,    82,    83,    84,    85,    86,    87,    88,    89,    90,
-      91,    92,    93,    94,    95,    96,    97,    98,    99,   100,
-     101,   102,   103,   104,   105,   106,   107,   108,   109,   110,
-     111,   112,   113,   114,   115,   116,   117,   118,   119,   120,
-     121,   122,   123,   124,   125,   126,   127,   128,   129,   130,
-     131,   132,   133,   134,   135,   136,   137,   138,   139,   140,
-     141,   142,   143,   144,   145,   146,   147,   148,   149,   150,
-     151,   152,   153,   154,   155,   156,   157,   158,   159,   160,
-     161,   162,   163,   164,   165,   166,   167,   168,   169,   170,
-     171,   172,   173,   174,   175,   176,   177,   178,   179,   180,
-     181,   182,   183,   184,   185,   186,   187,   188,   189,   190,
-     191,   192,   193,   194,   195,   196,   197,   198,   199,   200,
-     201,   202,   203,   204,   205,   206,   207,   208,   209,   210,
-     211,   212,   213,   214,   215,   216,   217,   218,   219,   220,
-     221,   222,   223,   224,   225,   226,   227,   228,   229,   230,
-     231,   232,   233,   234,   235,   236,   237,   238,   239,   240,
-     241,   242,   243,   244,   245,   246,   247,   248,   249,   250,
-     251,   252,   253,   254,   255,   256,   257,   258,   259,   260,
-     261,   262,   263,   264,   265,   266,   267,   268,   269,   270,
-     271,   272,   273,   274,   275,   276,   277,   278,   279,   280,
-     281,   282,   283,   284,   285,   286,   287,   288,   289,   290,
-     291,   292,     0,     0,   422,   423,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   424,   425,     0,   486,     0,   408,     0,
-       0,     0,     0,     0,   489,   426,   427,   428,   429,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   294,   295,
-     296,   297,   298,     0,     0,     0,   430,   431,   432,   433,
-     434,   299,   300,   301,   302,   303,   304,   305,   490,   491,
-     492,   493,     0,   494,   495,   496,   497,   498,   499,   500,
-     306,   307,   308,   309,   310,   311,   435,   436,   437,   438,
-     439,   440,   441,   442,   312,   501,   313,   314,   315,   316,
-     317,   318,   319,   320,   321,   322,   323,   324,   325,   326,
-     327,   328,   329,   330,   331,   332,   333,   334,   335,   336,
-     337,   338,   339,   340,   341,   342,   343,     1,     2,     3,
-       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
-      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
-      24,    25,    26,    27,    28,    29,    30,    31,    32,    33,
-      34,    35,    36,    37,    38,    39,    40,    41,    42,    43,
-      44,    45,    46,    47,    48,    49,    50,    51,    52,    53,
-      54,    55,    56,    57,    58,    59,    60,    61,    62,    63,
-      64,    65,    66,    67,    68,    69,    70,    71,    72,    73,
-      74,    75,    76,    77,    78,    79,    80,    81,    82,    83,
-      84,    85,    86,    87,    88,    89,    90,    91,    92,    93,
-      94,    95,    96,    97,    98,    99,   100,   101,   102,   103,
-     104,   105,   106,   107,   108,   109,   110,   111,   112,   113,
-     114,   115,   116,   117,   118,   119,   120,   121,   122,   123,
-     124,   125,   126,   127,   128,   129,   130,   131,   132,   133,
-     134,   135,   136,   137,   138,   139,   140,   141,   142,   143,
-     144,   145,   146,   147,   148,   149,   150,   151,   152,   153,
-     154,   155,   156,   157,   158,   159,   160,   161,   162,   163,
-     164,   165,   166,   167,   168,   169,   170,   171,   172,   173,
-     174,   175,   176,   177,   178,   179,   180,   181,   182,   183,
-     184,   185,   186,   187,   188,   189,   190,   191,   192,   193,
-     194,   195,   196,   197,   198,   199,   200,   201,   202,   203,
-     204,   205,   206,   207,   208,   209,   210,   211,   212,   213,
-     214,   215,   216,   217,   218,   219,   220,   221,   222,   223,
-     224,   225,   226,   227,   228,   229,   230,   231,   232,   233,
-     234,   235,   236,   237,   238,   239,   240,   241,   242,   243,
-     244,   245,   246,   247,   248,   249,   250,   251,   252,   253,
-     254,   255,   256,   257,   258,   259,   260,   261,   262,   263,
-     264,   265,   266,   267,   268,   269,   270,   271,   272,   273,
-     274,   275,   276,   277,   278,   279,   280,   281,   282,   283,
-     284,   285,   286,   287,   288,   289,   290,   291,   292,     0,
-       0,   422,   423,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     424,   425,     0,   486,     0,     0,     0,     0,     0,     0,
-       0,   489,   426,   427,   428,   429,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   294,   295,   296,   297,   298,
-       0,     0,     0,   430,   431,   432,   433,   434,   299,   300,
-     301,   302,   303,   304,   305,   490,   491,   492,   493,     0,
-     494,   495,   496,   497,   498,   499,   500,   306,   307,   308,
-     309,   310,   311,   435,   436,   437,   438,   439,   440,   441,
-     442,   312,   501,   313,   314,   315,   316,   317,   318,   319,
-     320,   321,   322,   323,   324,   325,   326,   327,   328,   329,
-     330,   331,   332,   333,   334,   335,   336,   337,   338,   339,
-     340,   341,   342,   343,     1,     2,     3,     4,     5,     6,
-       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
-      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
-      27,    28,    29,    30,    31,    32,    33,    34,    35,    36,
-      37,    38,    39,    40,    41,    42,    43,    44,    45,    46,
-      47,    48,    49,    50,    51,    52,    53,    54,    55,    56,
-      57,    58,    59,    60,    61,    62,    63,    64,    65,    66,
-      67,    68,    69,    70,    71,    72,    73,    74,    75,    76,
-      77,    78,    79,    80,    81,    82,    83,    84,    85,    86,
-      87,    88,    89,    90,    91,    92,    93,    94,    95,    96,
-      97,    98,    99,   100,   101,   102,   103,   104,   105,   106,
-     107,   108,   109,   110,   111,   112,   113,   114,   115,   116,
-     117,   118,   119,   120,   121,   122,   123,   124,   125,   126,
-     127,   128,   129,   130,   131,   132,   133,   134,   135,   136,
-     137,   138,   139,   140,   141,   142,   143,   144,   145,   146,
-     147,   148,   149,   150,   151,   152,   153,   154,   155,   156,
-     157,   158,   159,   160,   161,   162,   163,   164,   165,   166,
-     167,   168,   169,   170,   171,   172,   173,   174,   175,   176,
-     177,   178,   179,   180,   181,   182,   183,   184,   185,   186,
-     187,   188,   189,   190,   191,   192,   193,   194,   195,   196,
-     197,   198,   199,   200,   201,   202,   203,   204,   205,   206,
-     207,   208,   209,   210,   211,   212,   213,   214,   215,   216,
-     217,   218,   219,   220,   221,   222,   223,   224,   225,   226,
-     227,   228,   229,   230,   231,   232,   233,   234,   235,   236,
-     237,   238,   239,   240,   241,   242,   243,   244,   245,   246,
-     247,   248,   249,   250,   251,   252,   253,   254,   255,   256,
-     257,   258,   259,   260,   261,   262,   263,   264,   265,   266,
-     267,   268,   269,   270,   271,   272,   273,   274,   275,   276,
-     277,   278,   279,   280,   281,   282,   283,   284,   285,   286,
-     287,   288,   289,   290,   291,   292,     0,     0,   422,   423,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   424,   425,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   489,   426,
-     427,   428,   429,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   294,   295,   296,   297,   298,     0,     0,     0,
-     430,   431,   432,   433,   434,   299,   300,   301,   302,   303,
-     304,   305,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   306,   307,   308,   309,   310,   311,
-     435,   436,   437,   438,   439,   440,   441,   442,   312,     0,
-     313,   314,   315,   316,   317,   318,   319,   320,   321,   322,
-     323,   324,   325,   326,   327,   328,   329,   330,   331,   332,
-     333,   334,   335,   336,   337,   338,   339,   340,   341,   342,
-     343,     1,     2,     3,     4,     5,     6,     7,     8,     9,
+       0,   758,     0,     0,   555,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   483,   717,     0,     0,
+       0,     0,     0,     0,     0,   382,     0,     0,     0,     0,
+       0,   411,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   717,     0,     0,     0,     0,
+       0,     0,     0,   534,   534,     0,   534,     0,     0,     0,
+       0,     0,   533,   533,     0,   533,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   412,     0,     0,
+       0,     0,   534,     0,     0,     0,   382,     0,     0,     0,
+       0,   533,     0,   534,     0,     0,     0,     0,     0,     0,
+     534,     0,   533,     0,     0,     0,     0,     0,     0,   533,
+       0,   534,     0,     0,     0,   534,     0,     0,     0,     0,
+     533,   534,     0,     0,   533,     0,     0,     0,   416,     0,
+     533,     1,     2,     3,     4,     5,     6,     7,     8,     9,
       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
       20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
       30,    31,    32,    33,    34,    35,    36,    37,    38,    39,
@@ -1808,61 +1702,66 @@
      260,   261,   262,   263,   264,   265,   266,   267,   268,   269,
      270,   271,   272,   273,   274,   275,   276,   277,   278,   279,
      280,   281,   282,   283,   284,   285,   286,   287,   288,   289,
-     290,   291,   292,     0,     0,   422,   423,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   424,   425,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   426,   427,   428,   429,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   294,
-     295,   296,   297,     0,     0,     0,     0,   430,   431,   432,
-     433,   434,   299,   300,   301,   302,   303,   304,   305,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   306,   307,   308,   309,   310,   311,   435,   436,   437,
-     438,   439,   440,   441,   442,   312,     0,   313,   314,   315,
-     316,   317,   318,   319,   320,   321,   322,   323,   324,   325,
-     326,   327,   328,   329,   330,   331,   332,   333,   334,   335,
-     336,   337,   338,   339,   340,   341,   342,   343,     1,     2,
-       3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
-      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
-      23,    24,    25,    26,    27,    28,    29,    30,    31,    32,
-      33,    34,    35,    36,    37,    38,    39,    40,    41,    42,
-      43,    44,    45,    46,    47,    48,    49,    50,    51,    52,
-      53,    54,    55,    56,    57,    58,    59,    60,    61,    62,
-      63,    64,    65,    66,    67,    68,    69,    70,    71,    72,
-      73,    74,    75,    76,    77,    78,    79,    80,    81,    82,
-      83,    84,    85,    86,    87,    88,    89,    90,    91,    92,
-      93,    94,    95,    96,    97,    98,    99,   100,   101,   102,
-     103,   104,   105,   106,   107,   108,   109,   110,   111,   112,
-     113,   114,   115,   116,   117,   118,   119,   120,   121,   122,
-     123,   124,   125,   126,   127,   128,   129,   130,   131,   132,
-     133,   134,   135,   136,   137,   138,   139,   140,   141,   142,
-     143,   144,   145,   146,   147,   148,   149,   150,   151,   152,
-     153,   154,   155,   156,   157,   158,   159,   160,   161,   162,
-     163,   164,   165,   166,   167,   168,   169,   170,   171,   172,
-     173,   174,   175,   176,   177,   178,   179,   180,   181,   182,
-     183,   184,   185,   186,   187,   188,   189,   190,   191,   192,
-     193,   194,   195,   196,   197,   198,   199,   200,   201,   202,
-     203,   204,   205,   206,   207,   208,   209,   210,   211,   212,
-     213,   214,   215,   216,   217,   218,   219,   220,   221,   222,
-     223,   224,   225,   226,   227,   228,   229,   230,   231,   232,
-     233,   234,   235,   236,   237,   238,   239,   240,   241,   242,
-     243,   244,   245,   246,   247,   248,   249,   250,   251,   252,
-     253,   254,   255,   256,   257,   258,   259,   260,   261,   262,
-     263,   264,   265,   266,   267,   268,   269,   270,   271,   272,
-     273,   274,   275,   276,   277,   278,   279,   280,   281,   282,
-     283,   284,   285,   286,   287,   288,   289,   290,   291,   292,
+     290,   291,   292,   293,   294,   295,   296,   297,   298,   299,
+     300,   301,   302,   303,   304,   305,   306,   307,   308,   309,
+     310,   311,   312,   313,   314,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   315,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   293,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   294,   295,   296,   297,
-     298,     0,     0,     0,     0,     0,     0,     0,     0,   299,
-     300,   301,   302,   303,   304,   305,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   306,   307,
-     308,   309,   310,   311,     0,     0,     0,     0,     0,     0,
-       0,     0,   312,     0,   313,   314,   315,   316,   317,   318,
-     319,   320,   321,   322,   323,   324,   325,   326,   327,   328,
-     329,   330,   331,   332,   333,   334,   335,   336,   337,   338,
-     339,   340,   341,   342,   343,     1,     2,     3,     4,     5,
+       0,   316,   317,   318,   319,   320,     0,     0,     0,     0,
+       0,     0,     0,     0,   321,   322,   323,   324,   325,   326,
+     327,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   328,   329,   330,   331,
+     332,   333,     0,     0,     0,     0,     0,     0,     0,     0,
+     334,     0,   335,   336,   337,   338,   339,   340,   341,   342,
+     343,   344,   345,   346,   347,   348,   349,   350,   351,   352,
+     353,   354,   355,   356,   357,   358,   359,   360,   361,   362,
+     363,   364,   365,     1,     2,     3,     4,     5,     6,     7,
+       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
+      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
+      28,    29,    30,    31,    32,    33,    34,    35,    36,    37,
+      38,    39,    40,    41,    42,    43,    44,    45,    46,    47,
+      48,    49,    50,    51,    52,    53,    54,    55,    56,    57,
+      58,    59,    60,    61,    62,    63,    64,    65,    66,    67,
+      68,    69,    70,    71,    72,    73,    74,    75,    76,    77,
+      78,    79,    80,    81,    82,    83,    84,    85,    86,    87,
+      88,    89,    90,    91,    92,    93,    94,    95,    96,    97,
+      98,    99,   100,   101,   102,   103,   104,   105,   106,   107,
+     108,   109,   110,   111,   112,   113,   114,   115,   116,   117,
+     118,   119,   120,   121,   122,   123,   124,   125,   126,   127,
+     128,   129,   130,   131,   132,   133,   134,   135,   136,   137,
+     138,   139,   140,   141,   142,   143,   144,   145,   146,   147,
+     148,   149,   150,   151,   152,   153,   154,   155,   156,   157,
+     158,   159,   160,   161,   162,   163,   164,   165,   166,   167,
+     168,   169,   170,   171,   172,   173,   174,   175,   176,   177,
+     178,   179,   180,   181,   182,   183,   184,   185,   186,   187,
+     188,   189,   190,   191,   192,   193,   194,   195,   196,   197,
+     198,   199,   200,   201,   202,   203,   204,   205,   206,   207,
+     208,   209,   210,   211,   212,   213,   214,   215,   216,   217,
+     218,   219,   220,   221,   222,   223,   224,   225,   226,   227,
+     228,   229,   230,   231,   232,   233,   234,   235,   236,   237,
+     238,   239,   240,   241,   242,   243,   244,   245,   246,   247,
+     248,   249,   250,   251,   252,   253,   254,   255,   256,   257,
+     258,   259,   260,   261,   262,   263,   264,   265,   266,   267,
+     268,   269,   270,   271,   272,   273,   274,   275,   276,   277,
+     278,   279,   280,   281,   282,   283,   284,   285,   286,   287,
+     288,   289,   290,   291,   292,   293,   294,   295,   296,   297,
+     298,   299,   300,   301,   302,   303,   304,   305,   306,   307,
+     308,   309,   310,   311,   312,   313,   314,     0,     0,   444,
+     445,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   446,   447,
+       0,   508,     0,   509,   510,     0,     0,     0,     0,   511,
+     448,   449,   450,   451,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   316,   317,   318,   319,   320,     0,     0,
+       0,   452,   453,   454,   455,   456,   321,   322,   323,   324,
+     325,   326,   327,   512,   513,   514,   515,     0,   516,   517,
+     518,   519,   520,   521,   522,   523,   524,   525,   328,   329,
+     330,   331,   332,   333,   457,   458,   459,   460,   461,   462,
+     463,   464,   334,   526,   335,   336,   337,   338,   339,   340,
+     341,   342,   343,   344,   345,   346,   347,   348,   349,   350,
+     351,   352,   353,   354,   355,   356,   357,   358,   359,   360,
+     361,   362,   363,   364,   365,     1,     2,     3,     4,     5,
        6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
       26,    27,    28,    29,    30,    31,    32,    33,    34,    35,
@@ -1891,61 +1790,66 @@
      256,   257,   258,   259,   260,   261,   262,   263,   264,   265,
      266,   267,   268,   269,   270,   271,   272,   273,   274,   275,
      276,   277,   278,   279,   280,   281,   282,   283,   284,   285,
-     286,   287,   288,   289,   290,   291,   292,     0,     0,     0,
+     286,   287,   288,   289,   290,   291,   292,   293,   294,   295,
+     296,   297,   298,   299,   300,   301,   302,   303,   304,   305,
+     306,   307,   308,   309,   310,   311,   312,   313,   314,     0,
+       0,   444,   445,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     446,   447,     0,   508,     0,   509,   645,     0,     0,     0,
+       0,   511,   448,   449,   450,   451,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   316,   317,   318,   319,   320,
+       0,     0,     0,   452,   453,   454,   455,   456,   321,   322,
+     323,   324,   325,   326,   327,   512,   513,   514,   515,     0,
+     516,   517,   518,   519,   520,   521,   522,   523,   524,   525,
+     328,   329,   330,   331,   332,   333,   457,   458,   459,   460,
+     461,   462,   463,   464,   334,   526,   335,   336,   337,   338,
+     339,   340,   341,   342,   343,   344,   345,   346,   347,   348,
+     349,   350,   351,   352,   353,   354,   355,   356,   357,   358,
+     359,   360,   361,   362,   363,   364,   365,     1,     2,     3,
+       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
+      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
+      24,    25,    26,    27,    28,    29,    30,    31,    32,    33,
+      34,    35,    36,    37,    38,    39,    40,    41,    42,    43,
+      44,    45,    46,    47,    48,    49,    50,    51,    52,    53,
+      54,    55,    56,    57,    58,    59,    60,    61,    62,    63,
+      64,    65,    66,    67,    68,    69,    70,    71,    72,    73,
+      74,    75,    76,    77,    78,    79,    80,    81,    82,    83,
+      84,    85,    86,    87,    88,    89,    90,    91,    92,    93,
+      94,    95,    96,    97,    98,    99,   100,   101,   102,   103,
+     104,   105,   106,   107,   108,   109,   110,   111,   112,   113,
+     114,   115,   116,   117,   118,   119,   120,   121,   122,   123,
+     124,   125,   126,   127,   128,   129,   130,   131,   132,   133,
+     134,   135,   136,   137,   138,   139,   140,   141,   142,   143,
+     144,   145,   146,   147,   148,   149,   150,   151,   152,   153,
+     154,   155,   156,   157,   158,   159,   160,   161,   162,   163,
+     164,   165,   166,   167,   168,   169,   170,   171,   172,   173,
+     174,   175,   176,   177,   178,   179,   180,   181,   182,   183,
+     184,   185,   186,   187,   188,   189,   190,   191,   192,   193,
+     194,   195,   196,   197,   198,   199,   200,   201,   202,   203,
+     204,   205,   206,   207,   208,   209,   210,   211,   212,   213,
+     214,   215,   216,   217,   218,   219,   220,   221,   222,   223,
+     224,   225,   226,   227,   228,   229,   230,   231,   232,   233,
+     234,   235,   236,   237,   238,   239,   240,   241,   242,   243,
+     244,   245,   246,   247,   248,   249,   250,   251,   252,   253,
+     254,   255,   256,   257,   258,   259,   260,   261,   262,   263,
+     264,   265,   266,   267,   268,   269,   270,   271,   272,   273,
+     274,   275,   276,   277,   278,   279,   280,   281,   282,   283,
+     284,   285,   286,   287,   288,   289,   290,   291,   292,   293,
+     294,   295,   296,   297,   298,   299,   300,   301,   302,   303,
+     304,   305,   306,   307,   308,   309,   310,   311,   312,   313,
+     314,     0,     0,   444,   445,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   387,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   294,   295,   296,   297,     0,     0,     0,
-       0,     0,     0,     0,     0,   388,   299,   300,   301,   302,
-     303,   304,   305,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   306,   307,   308,   309,   310,
-     311,     0,     0,     0,     0,     0,     0,     0,     0,   312,
-       0,   313,   314,   315,   316,   317,   318,   319,   320,   321,
-     322,   323,   324,   325,   326,   327,   328,   329,   330,   331,
-     332,   333,   334,   335,   336,   337,   338,   339,   340,   341,
-     342,   343,     1,     2,     3,     4,     5,     6,     7,     8,
-       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
-      19,    20,    21,    22,    23,    24,    25,    26,    27,    28,
-      29,    30,    31,    32,    33,    34,    35,    36,    37,    38,
-      39,    40,    41,    42,    43,    44,    45,    46,    47,    48,
-      49,    50,    51,    52,    53,    54,    55,    56,    57,    58,
-      59,    60,    61,    62,    63,    64,    65,    66,    67,    68,
-      69,    70,    71,    72,    73,    74,    75,    76,    77,    78,
-      79,    80,    81,    82,    83,    84,    85,    86,    87,    88,
-      89,    90,    91,    92,    93,    94,    95,    96,    97,    98,
-      99,   100,   101,   102,   103,   104,   105,   106,   107,   108,
-     109,   110,   111,   112,   113,   114,   115,   116,   117,   118,
-     119,   120,   121,   122,   123,   124,   125,   126,   127,   128,
-     129,   130,   131,   132,   133,   134,   135,   136,   137,   138,
-     139,   140,   141,   142,   143,   144,   145,   146,   147,   148,
-     149,   150,   151,   152,   153,   154,   155,   156,   157,   158,
-     159,   160,   161,   162,   163,   164,   165,   166,   167,   168,
-     169,   170,   171,   172,   173,   174,   175,   176,   177,   178,
-     179,   180,   181,   182,   183,   184,   185,   186,   187,   188,
-     189,   190,   191,   192,   193,   194,   195,   196,   197,   198,
-     199,   200,   201,   202,   203,   204,   205,   206,   207,   208,
-     209,   210,   211,   212,   213,   214,   215,   216,   217,   218,
-     219,   220,   221,   222,   223,   224,   225,   226,   227,   228,
-     229,   230,   231,   232,   233,   234,   235,   236,   237,   238,
-     239,   240,   241,   242,   243,   244,   245,   246,   247,   248,
-     249,   250,   251,   252,   253,   254,   255,   256,   257,   258,
-     259,   260,   261,   262,   263,   264,   265,   266,   267,   268,
-     269,   270,   271,   272,   273,   274,   275,   276,   277,   278,
-     279,   280,   281,   282,   283,   284,   285,   286,   287,   288,
-     289,   290,   291,   292,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   557,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     294,   295,   296,   297,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   299,   300,   301,   302,   303,   304,   305,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   306,   307,   308,   309,   310,   311,     0,     0,
-       0,     0,     0,     0,     0,     0,   312,     0,   313,   314,
-     315,   316,   317,   318,   319,   320,   321,   322,   323,   324,
-     325,   326,   327,   328,   329,   330,   331,   332,   333,   334,
-     335,   336,   337,   338,   339,   340,   341,   342,   343,     1,
+       0,     0,   446,   447,     0,   508,     0,   509,     0,     0,
+       0,     0,     0,   511,   448,   449,   450,   451,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   316,   317,   318,
+     319,   320,     0,     0,     0,   452,   453,   454,   455,   456,
+     321,   322,   323,   324,   325,   326,   327,   512,   513,   514,
+     515,     0,   516,   517,   518,   519,   520,   521,   522,   523,
+     524,   525,   328,   329,   330,   331,   332,   333,   457,   458,
+     459,   460,   461,   462,   463,   464,   334,   526,   335,   336,
+     337,   338,   339,   340,   341,   342,   343,   344,   345,   346,
+     347,   348,   349,   350,   351,   352,   353,   354,   355,   356,
+     357,   358,   359,   360,   361,   362,   363,   364,   365,     1,
        2,     3,     4,     5,     6,     7,     8,     9,    10,    11,
       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
       22,    23,    24,    25,    26,    27,    28,    29,    30,    31,
@@ -1975,61 +1879,66 @@
      262,   263,   264,   265,   266,   267,   268,   269,   270,   271,
      272,   273,   274,   275,   276,   277,   278,   279,   280,   281,
      282,   283,   284,   285,   286,   287,   288,   289,   290,   291,
-     292,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     292,   293,   294,   295,   296,   297,   298,   299,   300,   301,
+     302,   303,   304,   305,   306,   307,   308,   309,   310,   311,
+     312,   313,   314,     0,     0,   444,   445,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   639,     0,
+       0,     0,     0,     0,   446,   447,     0,   508,     0,   430,
+       0,     0,     0,     0,     0,   511,   448,   449,   450,   451,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   316,
+     317,   318,   319,   320,     0,     0,     0,   452,   453,   454,
+     455,   456,   321,   322,   323,   324,   325,   326,   327,   512,
+     513,   514,   515,     0,   516,   517,   518,   519,   520,   521,
+     522,   523,   524,   525,   328,   329,   330,   331,   332,   333,
+     457,   458,   459,   460,   461,   462,   463,   464,   334,   526,
+     335,   336,   337,   338,   339,   340,   341,   342,   343,   344,
+     345,   346,   347,   348,   349,   350,   351,   352,   353,   354,
+     355,   356,   357,   358,   359,   360,   361,   362,   363,   364,
+     365,     1,     2,     3,     4,     5,     6,     7,     8,     9,
+      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
+      20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
+      30,    31,    32,    33,    34,    35,    36,    37,    38,    39,
+      40,    41,    42,    43,    44,    45,    46,    47,    48,    49,
+      50,    51,    52,    53,    54,    55,    56,    57,    58,    59,
+      60,    61,    62,    63,    64,    65,    66,    67,    68,    69,
+      70,    71,    72,    73,    74,    75,    76,    77,    78,    79,
+      80,    81,    82,    83,    84,    85,    86,    87,    88,    89,
+      90,    91,    92,    93,    94,    95,    96,    97,    98,    99,
+     100,   101,   102,   103,   104,   105,   106,   107,   108,   109,
+     110,   111,   112,   113,   114,   115,   116,   117,   118,   119,
+     120,   121,   122,   123,   124,   125,   126,   127,   128,   129,
+     130,   131,   132,   133,   134,   135,   136,   137,   138,   139,
+     140,   141,   142,   143,   144,   145,   146,   147,   148,   149,
+     150,   151,   152,   153,   154,   155,   156,   157,   158,   159,
+     160,   161,   162,   163,   164,   165,   166,   167,   168,   169,
+     170,   171,   172,   173,   174,   175,   176,   177,   178,   179,
+     180,   181,   182,   183,   184,   185,   186,   187,   188,   189,
+     190,   191,   192,   193,   194,   195,   196,   197,   198,   199,
+     200,   201,   202,   203,   204,   205,   206,   207,   208,   209,
+     210,   211,   212,   213,   214,   215,   216,   217,   218,   219,
+     220,   221,   222,   223,   224,   225,   226,   227,   228,   229,
+     230,   231,   232,   233,   234,   235,   236,   237,   238,   239,
+     240,   241,   242,   243,   244,   245,   246,   247,   248,   249,
+     250,   251,   252,   253,   254,   255,   256,   257,   258,   259,
+     260,   261,   262,   263,   264,   265,   266,   267,   268,   269,
+     270,   271,   272,   273,   274,   275,   276,   277,   278,   279,
+     280,   281,   282,   283,   284,   285,   286,   287,   288,   289,
+     290,   291,   292,   293,   294,   295,   296,   297,   298,   299,
+     300,   301,   302,   303,   304,   305,   306,   307,   308,   309,
+     310,   311,   312,   313,   314,     0,     0,   444,   445,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   294,   295,   296,
-     297,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     299,   300,   301,   302,   303,   304,   305,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   306,
-     307,   308,   309,   310,   311,     0,     0,     0,     0,     0,
-       0,     0,     0,   312,     0,   313,   314,   315,   316,   317,
-     318,   319,   320,   321,   322,   323,   324,   325,   326,   327,
-     328,   329,   330,   331,   332,   333,   334,   335,   336,   337,
-     338,   339,   340,   341,   342,   343,     1,     2,     3,     4,
-       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
-      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
-      25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
-      35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
-      45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
-      55,    56,    57,    58,    59,    60,    61,    62,    63,    64,
-      65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
-      75,    76,    77,    78,    79,    80,    81,    82,    83,    84,
-      85,    86,    87,    88,    89,    90,    91,    92,    93,    94,
-      95,    96,    97,    98,    99,   100,   101,   102,   103,   104,
-     105,   106,   107,   108,   109,   110,   111,   112,   113,   114,
-     115,   116,   117,   118,   119,   120,   121,   122,   123,   124,
-     125,   126,   127,   128,   129,   130,   131,   132,   133,   134,
-     135,   136,   137,   138,   139,   140,   141,   142,   143,   144,
-     145,   146,   147,   148,   149,   150,   151,   152,   153,   154,
-     155,   156,   157,   158,   159,   160,   161,   162,   163,   164,
-     165,   166,   167,   168,   169,   170,   171,   172,   173,   174,
-     175,   176,   177,   178,   179,   180,   181,   182,   183,   184,
-     185,   186,   187,   188,   189,   190,   191,   192,   193,   194,
-     195,   196,   197,   198,   199,   200,   201,   202,   203,   204,
-     205,   206,   207,   208,   209,   210,   211,   212,   213,   214,
-     215,   216,   217,   218,   219,   220,   221,   222,   223,   224,
-     225,   226,   227,   228,   229,   230,   231,   232,   233,   234,
-     235,   236,   237,   238,   239,   240,   241,   242,   243,   244,
-     245,   246,   247,   248,   249,   250,   251,   252,   253,   254,
-     255,   256,   257,   258,   259,   260,   261,   262,   263,   264,
-     265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
-     275,   276,   277,   278,   279,   280,   281,   282,   283,   284,
-     285,   286,   287,   288,   289,   290,   291,   292,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   677,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   294,   295,   296,   297,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   299,   300,   301,
-     302,   303,   304,   305,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   306,   307,   308,   309,
-     310,   311,     0,     0,     0,     0,     0,     0,     0,     0,
-     312,     0,   313,   314,   315,   316,   317,   318,   319,   320,
-     321,   322,   323,   324,   325,   326,   327,   328,   329,   330,
-     331,   332,   333,   334,   335,   336,   337,   338,   339,   340,
-     341,   342,   343,     1,     2,     3,     4,     5,     6,     7,
+       0,     0,     0,     0,     0,     0,   446,   447,     0,   508,
+       0,     0,     0,     0,     0,     0,     0,   511,   448,   449,
+     450,   451,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,   316,   317,   318,   319,   320,     0,     0,     0,   452,
+     453,   454,   455,   456,   321,   322,   323,   324,   325,   326,
+     327,   512,   513,   514,   515,     0,   516,   517,   518,   519,
+     520,   521,   522,   523,   524,   525,   328,   329,   330,   331,
+     332,   333,   457,   458,   459,   460,   461,   462,   463,   464,
+     334,   526,   335,   336,   337,   338,   339,   340,   341,   342,
+     343,   344,   345,   346,   347,   348,   349,   350,   351,   352,
+     353,   354,   355,   356,   357,   358,   359,   360,   361,   362,
+     363,   364,   365,     1,     2,     3,     4,     5,     6,     7,
        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
       18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
       28,    29,    30,    31,    32,    33,    34,    35,    36,    37,
@@ -2058,25 +1967,116 @@
      258,   259,   260,   261,   262,   263,   264,   265,   266,   267,
      268,   269,   270,   271,   272,   273,   274,   275,   276,   277,
      278,   279,   280,   281,   282,   283,   284,   285,   286,   287,
-     288,   289,   290,   291,   292,     0,     0,     0,     0,     0,
+     288,   289,   290,   291,   292,   293,   294,   295,   296,   297,
+     298,   299,   300,   301,   302,   303,   304,   305,   306,   307,
+     308,   309,   310,   311,   312,   313,   314,     0,     0,   444,
+     445,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   446,   447,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   511,
+     448,   449,   450,   451,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   316,   317,   318,   319,   320,     0,     0,
+       0,   452,   453,   454,   455,   456,   321,   322,   323,   324,
+     325,   326,   327,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   328,   329,
+     330,   331,   332,   333,   457,   458,   459,   460,   461,   462,
+     463,   464,   334,     0,   335,   336,   337,   338,   339,   340,
+     341,   342,   343,   344,   345,   346,   347,   348,   349,   350,
+     351,   352,   353,   354,   355,   356,   357,   358,   359,   360,
+     361,   362,   363,   364,   365,     1,     2,     3,     4,     5,
+       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
+      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
+      26,    27,    28,    29,    30,    31,    32,    33,    34,    35,
+      36,    37,    38,    39,    40,    41,    42,    43,    44,    45,
+      46,    47,    48,    49,    50,    51,    52,    53,    54,    55,
+      56,    57,    58,    59,    60,    61,    62,    63,    64,    65,
+      66,    67,    68,    69,    70,    71,    72,    73,    74,    75,
+      76,    77,    78,    79,    80,    81,    82,    83,    84,    85,
+      86,    87,    88,    89,    90,    91,    92,    93,    94,    95,
+      96,    97,    98,    99,   100,   101,   102,   103,   104,   105,
+     106,   107,   108,   109,   110,   111,   112,   113,   114,   115,
+     116,   117,   118,   119,   120,   121,   122,   123,   124,   125,
+     126,   127,   128,   129,   130,   131,   132,   133,   134,   135,
+     136,   137,   138,   139,   140,   141,   142,   143,   144,   145,
+     146,   147,   148,   149,   150,   151,   152,   153,   154,   155,
+     156,   157,   158,   159,   160,   161,   162,   163,   164,   165,
+     166,   167,   168,   169,   170,   171,   172,   173,   174,   175,
+     176,   177,   178,   179,   180,   181,   182,   183,   184,   185,
+     186,   187,   188,   189,   190,   191,   192,   193,   194,   195,
+     196,   197,   198,   199,   200,   201,   202,   203,   204,   205,
+     206,   207,   208,   209,   210,   211,   212,   213,   214,   215,
+     216,   217,   218,   219,   220,   221,   222,   223,   224,   225,
+     226,   227,   228,   229,   230,   231,   232,   233,   234,   235,
+     236,   237,   238,   239,   240,   241,   242,   243,   244,   245,
+     246,   247,   248,   249,   250,   251,   252,   253,   254,   255,
+     256,   257,   258,   259,   260,   261,   262,   263,   264,   265,
+     266,   267,   268,   269,   270,   271,   272,   273,   274,   275,
+     276,   277,   278,   279,   280,   281,   282,   283,   284,   285,
+     286,   287,   288,   289,   290,   291,   292,   293,   294,   295,
+     296,   297,   298,   299,   300,   301,   302,   303,   304,   305,
+     306,   307,   308,   309,   310,   311,   312,   313,   314,     0,
+       0,   444,   445,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     446,   447,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,   448,   449,   450,   451,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   316,   317,   318,   319,     0,
+       0,     0,     0,   452,   453,   454,   455,   456,   321,   322,
+     323,   324,   325,   326,   327,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     328,   329,   330,   331,   332,   333,   457,   458,   459,   460,
+     461,   462,   463,   464,   334,     0,   335,   336,   337,   338,
+     339,   340,   341,   342,   343,   344,   345,   346,   347,   348,
+     349,   350,   351,   352,   353,   354,   355,   356,   357,   358,
+     359,   360,   361,   362,   363,   364,   365,     1,     2,     3,
+       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
+      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
+      24,    25,    26,    27,    28,    29,    30,    31,    32,    33,
+      34,    35,    36,    37,    38,    39,    40,    41,    42,    43,
+      44,    45,    46,    47,    48,    49,    50,    51,    52,    53,
+      54,    55,    56,    57,    58,    59,    60,    61,    62,    63,
+      64,    65,    66,    67,    68,    69,    70,    71,    72,    73,
+      74,    75,    76,    77,    78,    79,    80,    81,    82,    83,
+      84,    85,    86,    87,    88,    89,    90,    91,    92,    93,
+      94,    95,    96,    97,    98,    99,   100,   101,   102,   103,
+     104,   105,   106,   107,   108,   109,   110,   111,   112,   113,
+     114,   115,   116,   117,   118,   119,   120,   121,   122,   123,
+     124,   125,   126,   127,   128,   129,   130,   131,   132,   133,
+     134,   135,   136,   137,   138,   139,   140,   141,   142,   143,
+     144,   145,   146,   147,   148,   149,   150,   151,   152,   153,
+     154,   155,   156,   157,   158,   159,   160,   161,   162,   163,
+     164,   165,   166,   167,   168,   169,   170,   171,   172,   173,
+     174,   175,   176,   177,   178,   179,   180,   181,   182,   183,
+     184,   185,   186,   187,   188,   189,   190,   191,   192,   193,
+     194,   195,   196,   197,   198,   199,   200,   201,   202,   203,
+     204,   205,   206,   207,   208,   209,   210,   211,   212,   213,
+     214,   215,   216,   217,   218,   219,   220,   221,   222,   223,
+     224,   225,   226,   227,   228,   229,   230,   231,   232,   233,
+     234,   235,   236,   237,   238,   239,   240,   241,   242,   243,
+     244,   245,   246,   247,   248,   249,   250,   251,   252,   253,
+     254,   255,   256,   257,   258,   259,   260,   261,   262,   263,
+     264,   265,   266,   267,   268,   269,   270,   271,   272,   273,
+     274,   275,   276,   277,   278,   279,   280,   281,   282,   283,
+     284,   285,   286,   287,   288,   289,   290,   291,   292,   293,
+     294,   295,   296,   297,   298,   299,   300,   301,   302,   303,
+     304,   305,   306,   307,   308,   309,   310,   311,   312,   313,
+     314,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   315,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   316,   317,   318,
+     319,   320,     0,     0,     0,     0,     0,     0,     0,     0,
+     321,   322,   323,   324,   325,   326,   327,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   294,   295,   296,   297,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   299,   300,   301,   302,   303,   304,
-     305,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   306,   307,   308,   309,   310,   311,     0,
-       0,     0,     0,     0,     0,     0,     0,   312,     0,   313,
-     314,   315,   316,   317,   318,   319,   320,   321,   322,   323,
-     324,   325,   326,   327,   328,   329,   330,   331,   332,   333,
-     334,   335,   336,   337,   338,   339,   340,   341,   342,   343,
+       0,     0,   328,   329,   330,   331,   332,   333,     0,     0,
+       0,     0,     0,     0,     0,     0,   334,     0,   335,   336,
+     337,   338,   339,   340,   341,   342,   343,   344,   345,   346,
+     347,   348,   349,   350,   351,   352,   353,   354,   355,   356,
+     357,   358,   359,   360,   361,   362,   363,   364,   365,     1,
        2,     3,     4,     5,     6,     7,     8,     9,    10,    11,
       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
       22,    23,    24,    25,    26,    27,    28,    29,    30,    31,
       32,    33,    34,    35,    36,    37,    38,    39,    40,    41,
       42,    43,    44,    45,    46,    47,    48,    49,    50,    51,
-      52,    53,    54,    55,    56,    57,    58,     0,     0,    61,
+      52,    53,    54,    55,    56,    57,    58,    59,    60,    61,
       62,    63,    64,    65,    66,    67,    68,    69,    70,    71,
       72,    73,    74,    75,    76,    77,    78,    79,    80,    81,
       82,    83,    84,    85,    86,    87,    88,    89,    90,    91,
@@ -2100,103 +2100,72 @@
      262,   263,   264,   265,   266,   267,   268,   269,   270,   271,
      272,   273,   274,   275,   276,   277,   278,   279,   280,   281,
      282,   283,   284,   285,   286,   287,   288,   289,   290,   291,
-     292,     0,     0,   422,   423,     0,     0,     0,     0,     0,
+     292,   293,   294,   295,   296,   297,   298,   299,   300,   301,
+     302,   303,   304,   305,   306,   307,   308,   309,   310,   311,
+     312,   313,   314,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   424,   425,     0,     0,     0,   529,   696,     0,
-       0,     0,     0,     0,   426,   427,   428,   429,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   430,   431,   432,   433,   434,
-     299,     0,     0,     0,     0,   304,   305,     0,     0,     0,
+       0,     0,     0,     0,     0,   409,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   316,
+     317,   318,   319,     0,     0,     0,     0,     0,     0,     0,
+       0,   410,   321,   322,   323,   324,   325,   326,   327,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   435,   436,   437,   438,   439,
-     440,   441,   442,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   325,     2,     3,
-       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
-      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
-      24,    25,    26,    27,    28,    29,    30,    31,    32,    33,
-      34,    35,    36,    37,    38,    39,    40,    41,    42,    43,
-      44,    45,    46,    47,    48,    49,    50,    51,    52,    53,
-      54,    55,    56,    57,    58,     0,     0,    61,    62,    63,
-      64,    65,    66,    67,    68,    69,    70,    71,    72,    73,
-      74,    75,    76,    77,    78,    79,    80,    81,    82,    83,
-      84,    85,    86,    87,    88,    89,    90,    91,    92,    93,
-      94,    95,    96,    97,    98,    99,   100,   101,   102,   103,
-     104,   105,   106,   107,   108,   109,   110,   111,   112,   113,
-     114,   115,   116,   117,   118,   119,   120,   121,   122,   123,
-     124,   125,   126,   127,   128,   129,   130,   131,   132,   133,
-     134,   135,   136,   137,   138,   139,   140,   141,   142,   143,
-     144,   145,   146,   147,   148,   149,   150,   151,   152,   153,
-     154,   155,   156,   157,   158,   159,   160,   161,   162,   163,
-     164,   165,   166,   167,   168,   169,   170,   171,   172,   173,
-     174,   175,   176,   177,   178,   179,   180,   181,   182,   183,
-     184,   185,   186,   187,   188,   189,   190,   191,   192,   193,
-     194,   195,   196,   197,   198,   199,   200,   201,   202,   203,
-     204,   205,   206,   207,   208,   209,   210,   211,   212,   213,
-     214,   215,   216,   217,   218,   219,   220,   221,   222,   223,
-     224,   225,   226,   227,   228,   229,   230,   231,   232,   233,
-     234,   235,   236,   237,   238,   239,   240,   241,   242,   243,
-     244,   245,   246,   247,   248,   249,   250,   251,   252,   253,
-     254,   255,   256,   257,   258,   259,   260,   261,   262,   263,
-     264,   265,   266,   267,   268,   269,   270,   271,   272,   273,
-     274,   275,   276,   277,   278,   279,   280,   281,   282,   283,
-     284,   285,   286,   287,   288,   289,   290,   291,   292,     0,
-       0,   422,   423,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,   328,   329,   330,   331,   332,   333,
+       0,     0,     0,     0,     0,     0,     0,     0,   334,     0,
+     335,   336,   337,   338,   339,   340,   341,   342,   343,   344,
+     345,   346,   347,   348,   349,   350,   351,   352,   353,   354,
+     355,   356,   357,   358,   359,   360,   361,   362,   363,   364,
+     365,     1,     2,     3,     4,     5,     6,     7,     8,     9,
+      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
+      20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
+      30,    31,    32,    33,    34,    35,    36,    37,    38,    39,
+      40,    41,    42,    43,    44,    45,    46,    47,    48,    49,
+      50,    51,    52,    53,    54,    55,    56,    57,    58,    59,
+      60,    61,    62,    63,    64,    65,    66,    67,    68,    69,
+      70,    71,    72,    73,    74,    75,    76,    77,    78,    79,
+      80,    81,    82,    83,    84,    85,    86,    87,    88,    89,
+      90,    91,    92,    93,    94,    95,    96,    97,    98,    99,
+     100,   101,   102,   103,   104,   105,   106,   107,   108,   109,
+     110,   111,   112,   113,   114,   115,   116,   117,   118,   119,
+     120,   121,   122,   123,   124,   125,   126,   127,   128,   129,
+     130,   131,   132,   133,   134,   135,   136,   137,   138,   139,
+     140,   141,   142,   143,   144,   145,   146,   147,   148,   149,
+     150,   151,   152,   153,   154,   155,   156,   157,   158,   159,
+     160,   161,   162,   163,   164,   165,   166,   167,   168,   169,
+     170,   171,   172,   173,   174,   175,   176,   177,   178,   179,
+     180,   181,   182,   183,   184,   185,   186,   187,   188,   189,
+     190,   191,   192,   193,   194,   195,   196,   197,   198,   199,
+     200,   201,   202,   203,   204,   205,   206,   207,   208,   209,
+     210,   211,   212,   213,   214,   215,   216,   217,   218,   219,
+     220,   221,   222,   223,   224,   225,   226,   227,   228,   229,
+     230,   231,   232,   233,   234,   235,   236,   237,   238,   239,
+     240,   241,   242,   243,   244,   245,   246,   247,   248,   249,
+     250,   251,   252,   253,   254,   255,   256,   257,   258,   259,
+     260,   261,   262,   263,   264,   265,   266,   267,   268,   269,
+     270,   271,   272,   273,   274,   275,   276,   277,   278,   279,
+     280,   281,   282,   283,   284,   285,   286,   287,   288,   289,
+     290,   291,   292,   293,   294,   295,   296,   297,   298,   299,
+     300,   301,   302,   303,   304,   305,   306,   307,   308,   309,
+     310,   311,   312,   313,   314,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     424,   425,     0,     0,   470,     0,     0,     0,     0,     0,
-       0,     0,   426,   427,   428,   429,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   430,   431,   432,   433,   434,   299,     0,
-       0,     0,     0,   304,   305,     0,     0,     0,     0,     0,
+       0,     0,   582,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   435,   436,   437,   438,   439,   440,   441,
-     442,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   325,     2,     3,     4,     5,
-       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
-      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
-      26,    27,    28,    29,    30,    31,    32,    33,    34,    35,
-      36,    37,    38,    39,    40,    41,    42,    43,    44,    45,
-      46,    47,    48,    49,    50,    51,    52,    53,    54,    55,
-      56,    57,    58,     0,     0,    61,    62,    63,    64,    65,
-      66,    67,    68,    69,    70,    71,    72,    73,    74,    75,
-      76,    77,    78,    79,    80,    81,    82,    83,    84,    85,
-      86,    87,    88,    89,    90,    91,    92,    93,    94,    95,
-      96,    97,    98,    99,   100,   101,   102,   103,   104,   105,
-     106,   107,   108,   109,   110,   111,   112,   113,   114,   115,
-     116,   117,   118,   119,   120,   121,   122,   123,   124,   125,
-     126,   127,   128,   129,   130,   131,   132,   133,   134,   135,
-     136,   137,   138,   139,   140,   141,   142,   143,   144,   145,
-     146,   147,   148,   149,   150,   151,   152,   153,   154,   155,
-     156,   157,   158,   159,   160,   161,   162,   163,   164,   165,
-     166,   167,   168,   169,   170,   171,   172,   173,   174,   175,
-     176,   177,   178,   179,   180,   181,   182,   183,   184,   185,
-     186,   187,   188,   189,   190,   191,   192,   193,   194,   195,
-     196,   197,   198,   199,   200,   201,   202,   203,   204,   205,
-     206,   207,   208,   209,   210,   211,   212,   213,   214,   215,
-     216,   217,   218,   219,   220,   221,   222,   223,   224,   225,
-     226,   227,   228,   229,   230,   231,   232,   233,   234,   235,
-     236,   237,   238,   239,   240,   241,   242,   243,   244,   245,
-     246,   247,   248,   249,   250,   251,   252,   253,   254,   255,
-     256,   257,   258,   259,   260,   261,   262,   263,   264,   265,
-     266,   267,   268,   269,   270,   271,   272,   273,   274,   275,
-     276,   277,   278,   279,   280,   281,   282,   283,   284,   285,
-     286,   287,   288,   289,   290,   291,   292,     0,     0,   422,
-     423,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   424,   425,
-       0,     0,     0,   529,     0,     0,     0,     0,     0,     0,
-     426,   427,   428,   429,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   430,   431,   432,   433,   434,   299,     0,     0,     0,
-       0,   304,   305,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   435,   436,   437,   438,   439,   440,   441,   442,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   325,     2,     3,     4,     5,     6,     7,
+       0,   316,   317,   318,   319,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,   321,   322,   323,   324,   325,   326,
+     327,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   328,   329,   330,   331,
+     332,   333,     0,     0,     0,     0,     0,     0,     0,     0,
+     334,     0,   335,   336,   337,   338,   339,   340,   341,   342,
+     343,   344,   345,   346,   347,   348,   349,   350,   351,   352,
+     353,   354,   355,   356,   357,   358,   359,   360,   361,   362,
+     363,   364,   365,     1,     2,     3,     4,     5,     6,     7,
        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
       18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
       28,    29,    30,    31,    32,    33,    34,    35,    36,    37,
       38,    39,    40,    41,    42,    43,    44,    45,    46,    47,
       48,    49,    50,    51,    52,    53,    54,    55,    56,    57,
-      58,     0,     0,    61,    62,    63,    64,    65,    66,    67,
+      58,    59,    60,    61,    62,    63,    64,    65,    66,    67,
       68,    69,    70,    71,    72,    73,    74,    75,    76,    77,
       78,    79,    80,    81,    82,    83,    84,    85,    86,    87,
       88,    89,    90,    91,    92,    93,    94,    95,    96,    97,
@@ -2219,18 +2188,153 @@
      258,   259,   260,   261,   262,   263,   264,   265,   266,   267,
      268,   269,   270,   271,   272,   273,   274,   275,   276,   277,
      278,   279,   280,   281,   282,   283,   284,   285,   286,   287,
-     288,   289,   290,   291,   292,     0,     0,   422,   423,     0,
+     288,   289,   290,   291,   292,   293,   294,   295,   296,   297,
+     298,   299,   300,   301,   302,   303,   304,   305,   306,   307,
+     308,   309,   310,   311,   312,   313,   314,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   424,   425,     0,     0,
-     585,     0,     0,     0,     0,     0,     0,     0,   426,   427,
-     428,   429,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   430,
-     431,   432,   433,   434,   299,     0,     0,     0,     0,   304,
-     305,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   435,
-     436,   437,   438,   439,   440,   441,   442,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   325,     2,     3,     4,     5,     6,     7,     8,     9,
+       0,     0,     0,     0,   668,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   316,   317,   318,   319,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   321,   322,   323,   324,
+     325,   326,   327,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   328,   329,
+     330,   331,   332,   333,     0,     0,     0,     0,     0,     0,
+       0,     0,   334,     0,   335,   336,   337,   338,   339,   340,
+     341,   342,   343,   344,   345,   346,   347,   348,   349,   350,
+     351,   352,   353,   354,   355,   356,   357,   358,   359,   360,
+     361,   362,   363,   364,   365,     1,     2,     3,     4,     5,
+       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
+      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
+      26,    27,    28,    29,    30,    31,    32,    33,    34,    35,
+      36,    37,    38,    39,    40,    41,    42,    43,    44,    45,
+      46,    47,    48,    49,    50,    51,    52,    53,    54,    55,
+      56,    57,    58,    59,    60,    61,    62,    63,    64,    65,
+      66,    67,    68,    69,    70,    71,    72,    73,    74,    75,
+      76,    77,    78,    79,    80,    81,    82,    83,    84,    85,
+      86,    87,    88,    89,    90,    91,    92,    93,    94,    95,
+      96,    97,    98,    99,   100,   101,   102,   103,   104,   105,
+     106,   107,   108,   109,   110,   111,   112,   113,   114,   115,
+     116,   117,   118,   119,   120,   121,   122,   123,   124,   125,
+     126,   127,   128,   129,   130,   131,   132,   133,   134,   135,
+     136,   137,   138,   139,   140,   141,   142,   143,   144,   145,
+     146,   147,   148,   149,   150,   151,   152,   153,   154,   155,
+     156,   157,   158,   159,   160,   161,   162,   163,   164,   165,
+     166,   167,   168,   169,   170,   171,   172,   173,   174,   175,
+     176,   177,   178,   179,   180,   181,   182,   183,   184,   185,
+     186,   187,   188,   189,   190,   191,   192,   193,   194,   195,
+     196,   197,   198,   199,   200,   201,   202,   203,   204,   205,
+     206,   207,   208,   209,   210,   211,   212,   213,   214,   215,
+     216,   217,   218,   219,   220,   221,   222,   223,   224,   225,
+     226,   227,   228,   229,   230,   231,   232,   233,   234,   235,
+     236,   237,   238,   239,   240,   241,   242,   243,   244,   245,
+     246,   247,   248,   249,   250,   251,   252,   253,   254,   255,
+     256,   257,   258,   259,   260,   261,   262,   263,   264,   265,
+     266,   267,   268,   269,   270,   271,   272,   273,   274,   275,
+     276,   277,   278,   279,   280,   281,   282,   283,   284,   285,
+     286,   287,   288,   289,   290,   291,   292,   293,   294,   295,
+     296,   297,   298,   299,   300,   301,   302,   303,   304,   305,
+     306,   307,   308,   309,   310,   311,   312,   313,   314,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   706,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   316,   317,   318,   319,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   321,   322,
+     323,   324,   325,   326,   327,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     328,   329,   330,   331,   332,   333,     0,     0,     0,     0,
+       0,     0,     0,     0,   334,     0,   335,   336,   337,   338,
+     339,   340,   341,   342,   343,   344,   345,   346,   347,   348,
+     349,   350,   351,   352,   353,   354,   355,   356,   357,   358,
+     359,   360,   361,   362,   363,   364,   365,     1,     2,     3,
+       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
+      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
+      24,    25,    26,    27,    28,    29,    30,    31,    32,    33,
+      34,    35,    36,    37,    38,    39,    40,    41,    42,    43,
+      44,    45,    46,    47,    48,    49,    50,    51,    52,    53,
+      54,    55,    56,    57,    58,    59,    60,    61,    62,    63,
+      64,    65,    66,    67,    68,    69,    70,    71,    72,    73,
+      74,    75,    76,    77,    78,    79,    80,    81,    82,    83,
+      84,    85,    86,    87,    88,    89,    90,    91,    92,    93,
+      94,    95,    96,    97,    98,    99,   100,   101,   102,   103,
+     104,   105,   106,   107,   108,   109,   110,   111,   112,   113,
+     114,   115,   116,   117,   118,   119,   120,   121,   122,   123,
+     124,   125,   126,   127,   128,   129,   130,   131,   132,   133,
+     134,   135,   136,   137,   138,   139,   140,   141,   142,   143,
+     144,   145,   146,   147,   148,   149,   150,   151,   152,   153,
+     154,   155,   156,   157,   158,   159,   160,   161,   162,   163,
+     164,   165,   166,   167,   168,   169,   170,   171,   172,   173,
+     174,   175,   176,   177,   178,   179,   180,   181,   182,   183,
+     184,   185,   186,   187,   188,   189,   190,   191,   192,   193,
+     194,   195,   196,   197,   198,   199,   200,   201,   202,   203,
+     204,   205,   206,   207,   208,   209,   210,   211,   212,   213,
+     214,   215,   216,   217,   218,   219,   220,   221,   222,   223,
+     224,   225,   226,   227,   228,   229,   230,   231,   232,   233,
+     234,   235,   236,   237,   238,   239,   240,   241,   242,   243,
+     244,   245,   246,   247,   248,   249,   250,   251,   252,   253,
+     254,   255,   256,   257,   258,   259,   260,   261,   262,   263,
+     264,   265,   266,   267,   268,   269,   270,   271,   272,   273,
+     274,   275,   276,   277,   278,   279,   280,   281,   282,   283,
+     284,   285,   286,   287,   288,   289,   290,   291,   292,   293,
+     294,   295,   296,   297,   298,   299,   300,   301,   302,   303,
+     304,   305,   306,   307,   308,   309,   310,   311,   312,   313,
+     314,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   316,   317,   318,
+     319,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     321,   322,   323,   324,   325,   326,   327,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,   328,   329,   330,   331,   332,   333,     0,     0,
+       0,     0,     0,     0,     0,     0,   334,     0,   335,   336,
+     337,   338,   339,   340,   341,   342,   343,   344,   345,   346,
+     347,   348,   349,   350,   351,   352,   353,   354,   355,   356,
+     357,   358,   359,   360,   361,   362,   363,   364,   365,     2,
+       3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
+      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
+      23,    24,    25,    26,    27,    28,    29,    30,    31,    32,
+      33,    34,    35,    36,    37,    38,    39,    40,    41,    42,
+      43,    44,    45,    46,    47,    48,    49,    50,    51,    52,
+      53,    54,    55,    56,    57,    58,     0,     0,    61,    62,
+      63,    64,    65,    66,    67,    68,    69,    70,    71,    72,
+      73,    74,    75,    76,    77,    78,    79,    80,    81,    82,
+      83,    84,    85,    86,    87,    88,    89,    90,    91,    92,
+      93,    94,    95,    96,    97,    98,    99,   100,   101,   102,
+     103,   104,   105,   106,   107,   108,   109,   110,   111,   112,
+     113,   114,   115,   116,   117,   118,   119,   120,   121,   122,
+     123,   124,   125,   126,   127,   128,   129,   130,   131,   132,
+     133,   134,   135,   136,   137,   138,   139,   140,   141,   142,
+     143,   144,   145,   146,   147,   148,   149,   150,   151,   152,
+     153,   154,   155,   156,   157,   158,   159,   160,   161,   162,
+     163,   164,   165,   166,   167,   168,   169,   170,   171,   172,
+     173,   174,   175,   176,   177,   178,   179,   180,   181,   182,
+     183,   184,   185,   186,   187,   188,   189,   190,   191,   192,
+     193,   194,   195,   196,   197,   198,   199,   200,   201,   202,
+     203,   204,   205,   206,   207,   208,   209,   210,   211,   212,
+     213,   214,   215,   216,   217,   218,   219,   220,   221,   222,
+     223,   224,   225,   226,   227,   228,   229,   230,   231,   232,
+     233,   234,   235,   236,   237,   238,   239,   240,   241,   242,
+     243,   244,   245,   246,   247,   248,   249,   250,   251,   252,
+     253,   254,   255,   256,   257,   258,   259,   260,   261,   262,
+     263,   264,   265,   266,   267,   268,   269,   270,   271,   272,
+     273,   274,   275,   276,   277,   278,   279,   280,   281,   282,
+     283,   284,   285,   286,   287,   288,   289,   290,   291,   292,
+     293,   294,   295,   296,   297,   298,   299,   300,   301,   302,
+     303,   304,   305,   306,   307,   308,   309,   310,   311,   312,
+     313,   314,     0,     0,   444,   445,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   446,   447,     0,     0,     0,   554,   652,
+       0,     0,     0,     0,     0,   448,   449,   450,   451,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   452,   453,   454,   455,
+     456,   321,     0,     0,     0,     0,   326,   327,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   457,
+     458,   459,   460,   461,   462,   463,   464,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,   347,     2,     3,     4,     5,     6,     7,     8,     9,
       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
       20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
       30,    31,    32,    33,    34,    35,    36,    37,    38,    39,
@@ -2259,17 +2363,231 @@
      260,   261,   262,   263,   264,   265,   266,   267,   268,   269,
      270,   271,   272,   273,   274,   275,   276,   277,   278,   279,
      280,   281,   282,   283,   284,   285,   286,   287,   288,   289,
-     290,   291,   292,     0,     0,   422,   423,     0,     0,     0,
+     290,   291,   292,   293,   294,   295,   296,   297,   298,   299,
+     300,   301,   302,   303,   304,   305,   306,   307,   308,   309,
+     310,   311,   312,   313,   314,     0,     0,   444,   445,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   424,   425,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   597,   426,   427,   428,   429,
+       0,     0,     0,     0,     0,     0,   446,   447,     0,     0,
+       0,   554,   725,     0,     0,     0,     0,     0,   448,   449,
+     450,   451,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   452,
+     453,   454,   455,   456,   321,     0,     0,     0,     0,   326,
+     327,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   430,   431,   432,
-     433,   434,   299,     0,     0,     0,     0,   304,   305,     0,
+       0,     0,   457,   458,   459,   460,   461,   462,   463,   464,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   435,   436,   437,
-     438,   439,   440,   441,   442,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   325,
+       0,     0,     0,     0,   347,     2,     3,     4,     5,     6,
+       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
+      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
+      27,    28,    29,    30,    31,    32,    33,    34,    35,    36,
+      37,    38,    39,    40,    41,    42,    43,    44,    45,    46,
+      47,    48,    49,    50,    51,    52,    53,    54,    55,    56,
+      57,    58,     0,     0,    61,    62,    63,    64,    65,    66,
+      67,    68,    69,    70,    71,    72,    73,    74,    75,    76,
+      77,    78,    79,    80,    81,    82,    83,    84,    85,    86,
+      87,    88,    89,    90,    91,    92,    93,    94,    95,    96,
+      97,    98,    99,   100,   101,   102,   103,   104,   105,   106,
+     107,   108,   109,   110,   111,   112,   113,   114,   115,   116,
+     117,   118,   119,   120,   121,   122,   123,   124,   125,   126,
+     127,   128,   129,   130,   131,   132,   133,   134,   135,   136,
+     137,   138,   139,   140,   141,   142,   143,   144,   145,   146,
+     147,   148,   149,   150,   151,   152,   153,   154,   155,   156,
+     157,   158,   159,   160,   161,   162,   163,   164,   165,   166,
+     167,   168,   169,   170,   171,   172,   173,   174,   175,   176,
+     177,   178,   179,   180,   181,   182,   183,   184,   185,   186,
+     187,   188,   189,   190,   191,   192,   193,   194,   195,   196,
+     197,   198,   199,   200,   201,   202,   203,   204,   205,   206,
+     207,   208,   209,   210,   211,   212,   213,   214,   215,   216,
+     217,   218,   219,   220,   221,   222,   223,   224,   225,   226,
+     227,   228,   229,   230,   231,   232,   233,   234,   235,   236,
+     237,   238,   239,   240,   241,   242,   243,   244,   245,   246,
+     247,   248,   249,   250,   251,   252,   253,   254,   255,   256,
+     257,   258,   259,   260,   261,   262,   263,   264,   265,   266,
+     267,   268,   269,   270,   271,   272,   273,   274,   275,   276,
+     277,   278,   279,   280,   281,   282,   283,   284,   285,   286,
+     287,   288,   289,   290,   291,   292,   293,   294,   295,   296,
+     297,   298,   299,   300,   301,   302,   303,   304,   305,   306,
+     307,   308,   309,   310,   311,   312,   313,   314,     0,     0,
+     444,   445,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   446,
+     447,     0,     0,   492,     0,     0,     0,     0,     0,     0,
+       0,   448,   449,   450,   451,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,   452,   453,   454,   455,   456,   321,     0,     0,
+       0,     0,   326,   327,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   457,   458,   459,   460,   461,
+     462,   463,   464,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   347,     2,     3,
+       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
+      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
+      24,    25,    26,    27,    28,    29,    30,    31,    32,    33,
+      34,    35,    36,    37,    38,    39,    40,    41,    42,    43,
+      44,    45,    46,    47,    48,    49,    50,    51,    52,    53,
+      54,    55,    56,    57,    58,     0,     0,    61,    62,    63,
+      64,    65,    66,    67,    68,    69,    70,    71,    72,    73,
+      74,    75,    76,    77,    78,    79,    80,    81,    82,    83,
+      84,    85,    86,    87,    88,    89,    90,    91,    92,    93,
+      94,    95,    96,    97,    98,    99,   100,   101,   102,   103,
+     104,   105,   106,   107,   108,   109,   110,   111,   112,   113,
+     114,   115,   116,   117,   118,   119,   120,   121,   122,   123,
+     124,   125,   126,   127,   128,   129,   130,   131,   132,   133,
+     134,   135,   136,   137,   138,   139,   140,   141,   142,   143,
+     144,   145,   146,   147,   148,   149,   150,   151,   152,   153,
+     154,   155,   156,   157,   158,   159,   160,   161,   162,   163,
+     164,   165,   166,   167,   168,   169,   170,   171,   172,   173,
+     174,   175,   176,   177,   178,   179,   180,   181,   182,   183,
+     184,   185,   186,   187,   188,   189,   190,   191,   192,   193,
+     194,   195,   196,   197,   198,   199,   200,   201,   202,   203,
+     204,   205,   206,   207,   208,   209,   210,   211,   212,   213,
+     214,   215,   216,   217,   218,   219,   220,   221,   222,   223,
+     224,   225,   226,   227,   228,   229,   230,   231,   232,   233,
+     234,   235,   236,   237,   238,   239,   240,   241,   242,   243,
+     244,   245,   246,   247,   248,   249,   250,   251,   252,   253,
+     254,   255,   256,   257,   258,   259,   260,   261,   262,   263,
+     264,   265,   266,   267,   268,   269,   270,   271,   272,   273,
+     274,   275,   276,   277,   278,   279,   280,   281,   282,   283,
+     284,   285,   286,   287,   288,   289,   290,   291,   292,   293,
+     294,   295,   296,   297,   298,   299,   300,   301,   302,   303,
+     304,   305,   306,   307,   308,   309,   310,   311,   312,   313,
+     314,     0,     0,   444,   445,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,   446,   447,     0,     0,     0,   554,     0,     0,
+       0,     0,     0,     0,   448,   449,   450,   451,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   452,   453,   454,   455,   456,
+     321,     0,     0,     0,     0,   326,   327,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   457,   458,
+     459,   460,   461,   462,   463,   464,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     347,     2,     3,     4,     5,     6,     7,     8,     9,    10,
+      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
+      21,    22,    23,    24,    25,    26,    27,    28,    29,    30,
+      31,    32,    33,    34,    35,    36,    37,    38,    39,    40,
+      41,    42,    43,    44,    45,    46,    47,    48,    49,    50,
+      51,    52,    53,    54,    55,    56,    57,    58,     0,     0,
+      61,    62,    63,    64,    65,    66,    67,    68,    69,    70,
+      71,    72,    73,    74,    75,    76,    77,    78,    79,    80,
+      81,    82,    83,    84,    85,    86,    87,    88,    89,    90,
+      91,    92,    93,    94,    95,    96,    97,    98,    99,   100,
+     101,   102,   103,   104,   105,   106,   107,   108,   109,   110,
+     111,   112,   113,   114,   115,   116,   117,   118,   119,   120,
+     121,   122,   123,   124,   125,   126,   127,   128,   129,   130,
+     131,   132,   133,   134,   135,   136,   137,   138,   139,   140,
+     141,   142,   143,   144,   145,   146,   147,   148,   149,   150,
+     151,   152,   153,   154,   155,   156,   157,   158,   159,   160,
+     161,   162,   163,   164,   165,   166,   167,   168,   169,   170,
+     171,   172,   173,   174,   175,   176,   177,   178,   179,   180,
+     181,   182,   183,   184,   185,   186,   187,   188,   189,   190,
+     191,   192,   193,   194,   195,   196,   197,   198,   199,   200,
+     201,   202,   203,   204,   205,   206,   207,   208,   209,   210,
+     211,   212,   213,   214,   215,   216,   217,   218,   219,   220,
+     221,   222,   223,   224,   225,   226,   227,   228,   229,   230,
+     231,   232,   233,   234,   235,   236,   237,   238,   239,   240,
+     241,   242,   243,   244,   245,   246,   247,   248,   249,   250,
+     251,   252,   253,   254,   255,   256,   257,   258,   259,   260,
+     261,   262,   263,   264,   265,   266,   267,   268,   269,   270,
+     271,   272,   273,   274,   275,   276,   277,   278,   279,   280,
+     281,   282,   283,   284,   285,   286,   287,   288,   289,   290,
+     291,   292,   293,   294,   295,   296,   297,   298,   299,   300,
+     301,   302,   303,   304,   305,   306,   307,   308,   309,   310,
+     311,   312,   313,   314,     0,     0,   444,   445,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   446,   447,     0,     0,   610,
+       0,     0,     0,     0,     0,     0,     0,   448,   449,   450,
+     451,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   452,   453,
+     454,   455,   456,   321,     0,     0,     0,     0,   326,   327,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,   457,   458,   459,   460,   461,   462,   463,   464,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   347,     2,     3,     4,     5,     6,     7,
+       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
+      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
+      28,    29,    30,    31,    32,    33,    34,    35,    36,    37,
+      38,    39,    40,    41,    42,    43,    44,    45,    46,    47,
+      48,    49,    50,    51,    52,    53,    54,    55,    56,    57,
+      58,     0,     0,    61,    62,    63,    64,    65,    66,    67,
+      68,    69,    70,    71,    72,    73,    74,    75,    76,    77,
+      78,    79,    80,    81,    82,    83,    84,    85,    86,    87,
+      88,    89,    90,    91,    92,    93,    94,    95,    96,    97,
+      98,    99,   100,   101,   102,   103,   104,   105,   106,   107,
+     108,   109,   110,   111,   112,   113,   114,   115,   116,   117,
+     118,   119,   120,   121,   122,   123,   124,   125,   126,   127,
+     128,   129,   130,   131,   132,   133,   134,   135,   136,   137,
+     138,   139,   140,   141,   142,   143,   144,   145,   146,   147,
+     148,   149,   150,   151,   152,   153,   154,   155,   156,   157,
+     158,   159,   160,   161,   162,   163,   164,   165,   166,   167,
+     168,   169,   170,   171,   172,   173,   174,   175,   176,   177,
+     178,   179,   180,   181,   182,   183,   184,   185,   186,   187,
+     188,   189,   190,   191,   192,   193,   194,   195,   196,   197,
+     198,   199,   200,   201,   202,   203,   204,   205,   206,   207,
+     208,   209,   210,   211,   212,   213,   214,   215,   216,   217,
+     218,   219,   220,   221,   222,   223,   224,   225,   226,   227,
+     228,   229,   230,   231,   232,   233,   234,   235,   236,   237,
+     238,   239,   240,   241,   242,   243,   244,   245,   246,   247,
+     248,   249,   250,   251,   252,   253,   254,   255,   256,   257,
+     258,   259,   260,   261,   262,   263,   264,   265,   266,   267,
+     268,   269,   270,   271,   272,   273,   274,   275,   276,   277,
+     278,   279,   280,   281,   282,   283,   284,   285,   286,   287,
+     288,   289,   290,   291,   292,   293,   294,   295,   296,   297,
+     298,   299,   300,   301,   302,   303,   304,   305,   306,   307,
+     308,   309,   310,   311,   312,   313,   314,     0,     0,   444,
+     445,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   446,   447,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   622,
+     448,   449,   450,   451,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,   452,   453,   454,   455,   456,   321,     0,     0,     0,
+       0,   326,   327,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,   457,   458,   459,   460,   461,   462,
+     463,   464,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   347,     2,     3,     4,
+       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
+      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
+      25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
+      35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
+      45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
+      55,    56,    57,    58,     0,     0,    61,    62,    63,    64,
+      65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
+      75,    76,    77,    78,    79,    80,    81,    82,    83,    84,
+      85,    86,    87,    88,    89,    90,    91,    92,    93,    94,
+      95,    96,    97,    98,    99,   100,   101,   102,   103,   104,
+     105,   106,   107,   108,   109,   110,   111,   112,   113,   114,
+     115,   116,   117,   118,   119,   120,   121,   122,   123,   124,
+     125,   126,   127,   128,   129,   130,   131,   132,   133,   134,
+     135,   136,   137,   138,   139,   140,   141,   142,   143,   144,
+     145,   146,   147,   148,   149,   150,   151,   152,   153,   154,
+     155,   156,   157,   158,   159,   160,   161,   162,   163,   164,
+     165,   166,   167,   168,   169,   170,   171,   172,   173,   174,
+     175,   176,   177,   178,   179,   180,   181,   182,   183,   184,
+     185,   186,   187,   188,   189,   190,   191,   192,   193,   194,
+     195,   196,   197,   198,   199,   200,   201,   202,   203,   204,
+     205,   206,   207,   208,   209,   210,   211,   212,   213,   214,
+     215,   216,   217,   218,   219,   220,   221,   222,   223,   224,
+     225,   226,   227,   228,   229,   230,   231,   232,   233,   234,
+     235,   236,   237,   238,   239,   240,   241,   242,   243,   244,
+     245,   246,   247,   248,   249,   250,   251,   252,   253,   254,
+     255,   256,   257,   258,   259,   260,   261,   262,   263,   264,
+     265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
+     275,   276,   277,   278,   279,   280,   281,   282,   283,   284,
+     285,   286,   287,   288,   289,   290,   291,   292,   293,   294,
+     295,   296,   297,   298,   299,   300,   301,   302,   303,   304,
+     305,   306,   307,   308,   309,   310,   311,   312,   313,   314,
+       0,     0,   444,   445,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,   446,   447,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   448,   449,   450,   451,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,   452,   453,   454,   455,   456,   321,
+       0,     0,     0,     0,   326,   327,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   457,   458,   459,
+     460,   461,   462,   463,   464,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   347,
        2,     3,     4,     5,     6,     7,     8,     9,    10,    11,
       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
       22,    23,    24,    25,    26,    27,    28,    29,    30,    31,
@@ -2299,66 +2617,29 @@
      262,   263,   264,   265,   266,   267,   268,   269,   270,   271,
      272,   273,   274,   275,   276,   277,   278,   279,   280,   281,
      282,   283,   284,   285,   286,   287,   288,   289,   290,   291,
-     292,     0,     0,   422,   423,     0,     0,     0,     0,     0,
+     292,   293,   294,   295,   296,   297,   298,   299,   300,   301,
+     302,   303,   304,   305,   306,   307,   308,   309,   310,   311,
+     312,   313,   314,     0,     0,   444,   445,     0,     0,   475,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   424,   425,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   426,   427,   428,   429,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   430,   431,   432,   433,   434,
-     299,     0,     0,     0,     0,   304,   305,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   435,   436,   437,   438,   439,
-     440,   441,   442,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   325,     2,     3,
-       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
-      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
-      24,    25,    26,    27,    28,    29,    30,    31,    32,    33,
-      34,    35,    36,    37,    38,    39,    40,    41,    42,    43,
-      44,    45,    46,    47,    48,    49,    50,    51,    52,    53,
-      54,    55,    56,    57,    58,     0,     0,    61,    62,    63,
-      64,    65,    66,    67,    68,    69,    70,    71,    72,    73,
-      74,    75,    76,    77,    78,    79,    80,    81,    82,    83,
-      84,    85,    86,    87,    88,    89,    90,    91,    92,    93,
-      94,    95,    96,    97,    98,    99,   100,   101,   102,   103,
-     104,   105,   106,   107,   108,   109,   110,   111,   112,   113,
-     114,   115,   116,   117,   118,   119,   120,   121,   122,   123,
-     124,   125,   126,   127,   128,   129,   130,   131,   132,   133,
-     134,   135,   136,   137,   138,   139,   140,   141,   142,   143,
-     144,   145,   146,   147,   148,   149,   150,   151,   152,   153,
-     154,   155,   156,   157,   158,   159,   160,   161,   162,   163,
-     164,   165,   166,   167,   168,   169,   170,   171,   172,   173,
-     174,   175,   176,   177,   178,   179,   180,   181,   182,   183,
-     184,   185,   186,   187,   188,   189,   190,   191,   192,   193,
-     194,   195,   196,   197,   198,   199,   200,   201,   202,   203,
-     204,   205,   206,   207,   208,   209,   210,   211,   212,   213,
-     214,   215,   216,   217,   218,   219,   220,   221,   222,   223,
-     224,   225,   226,   227,   228,   229,   230,   231,   232,   233,
-     234,   235,   236,   237,   238,   239,   240,   241,   242,   243,
-     244,   245,   246,   247,   248,   249,   250,   251,   252,   253,
-     254,   255,   256,   257,   258,   259,   260,   261,   262,   263,
-     264,   265,   266,   267,   268,   269,   270,   271,   272,   273,
-     274,   275,   276,   277,   278,   279,   280,   281,   282,   283,
-     284,   285,   286,   287,   288,   289,   290,   291,   292,   453,
-       0,   422,   423,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   471,     0,     0,     0,     0,     0,     0,
-     424,   425,     0,     0,     0,     0,     0,     0,     0,     0,
-     537,   538,   426,   427,   428,   429,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   430,   431,   432,   433,   434,   299,     0,
-       0,     0,   550,   304,   547,     0,     0,     0,     0,     0,
-       0,     0,     0,   471,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   435,   436,   437,   438,   439,   440,   441,
-     442,     0,   471,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   325,     0,     0,     0,     0,
+       0,     0,     0,   493,   446,   447,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   448,   449,   450,   451,
+     562,   563,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   452,   453,   454,
+     455,   456,   321,     0,     0,     0,     0,   326,   572,     0,
+       0,     0,   575,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   493,     0,     0,     0,     0,     0,     0,
+     457,   458,   459,   460,   461,   462,   463,   464,     0,     0,
+       0,     0,   493,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,   347,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   634,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   640,   641,   642,   471,   471,   471,   471,   471,
-     471,   471,   471,   471,   471,   471,   471,   471,   471,   471,
-     471,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,   663,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   669,   670,   671,   493,   493,
+     493,   493,   493,   493,   493,   493,   493,   493,   493,   493,
+     493,   493,   493,   493,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
@@ -2368,19 +2649,19 @@
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     471
+       0,     0,     0,     0,     0,     0,     0,   493
 };
 
 static const yytype_int16 yycheck[] =
 {
-       0,   324,     0,   317,     0,   319,   319,   319,   464,     0,
-     319,   319,   326,   336,   327,   327,   317,   326,   326,   317,
+       0,   733,     0,   346,     0,   486,   341,   383,   740,     0,
+     386,   341,   388,   389,   349,   358,   392,   339,   348,   751,
        4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
       24,    25,    26,    27,    28,    29,    30,    31,    32,    33,
       34,    35,    36,    37,    38,    39,    40,    41,    42,    43,
       44,    45,    46,    47,    48,    49,    50,    51,    52,    53,
-      54,    55,    56,    57,    58,    59,    60,   533,   327,    63,
+      54,    55,    56,    57,    58,    59,    60,   558,   339,    63,
       64,    65,    66,    67,    68,    69,    70,    71,    72,    73,
       74,    75,    76,    77,    78,    79,    80,    81,    82,    83,
       84,    85,    86,    87,    88,    89,    90,    91,    92,    93,
@@ -2404,342 +2685,53 @@
      264,   265,   266,   267,   268,   269,   270,   271,   272,   273,
      274,   275,   276,   277,   278,   279,   280,   281,   282,   283,
      284,   285,   286,   287,   288,   289,   290,   291,   292,   293,
-     294,   357,   349,   416,   425,   589,   527,   515,   529,   405,
-     321,   532,   462,   386,   353,   299,   300,   304,   665,   392,
-     295,   296,   319,   297,   298,   318,   382,   361,   327,   326,
-     364,   378,   366,   367,   324,   374,   370,   327,   451,   349,
-     413,   414,   353,   317,   324,   319,   693,   357,   349,   323,
-     397,   335,   336,   340,   353,   365,   357,   365,   368,   365,
-     354,   318,   301,   302,   365,   359,   360,   324,   378,   465,
-     320,   353,   382,   704,   324,   335,   497,   378,   499,   324,
-     711,   382,   327,   321,   318,   593,   324,   397,   484,   327,
-     324,   722,   321,   318,   318,   318,   397,   318,   408,   324,
-     324,   324,   623,   324,   460,   318,   322,   408,   324,   559,
-     324,   324,   353,   327,   527,   462,   529,   464,   329,   532,
-     331,   542,   321,   306,   307,   308,   309,   310,   311,   312,
-     313,   314,   315,   546,   571,   572,   573,   574,   324,   324,
-     325,   327,   726,   326,   324,   324,   353,   327,   327,   353,
-     460,   319,   462,   327,   464,   676,   664,   324,   325,   460,
-     326,   462,   353,   464,   342,   343,   344,   332,   333,   334,
-     567,   568,   575,   576,   595,   569,   570,   627,   599,   318,
-     317,   554,   353,   319,   353,   339,   533,   338,   337,   303,
-     305,   320,   319,   317,   322,   716,   327,   327,   317,   317,
-     317,   614,   615,   325,   327,   515,   327,   317,   317,   353,
-     623,   353,   559,   318,   515,   353,   320,   320,   324,   317,
-     361,   320,   322,   533,   732,   318,   317,   353,   318,   321,
-     326,   318,   533,   327,   577,   321,   321,   578,   659,   327,
-     365,   322,   579,   581,   665,   580,   582,   682,   382,   559,
-     382,   298,   467,   553,   637,   667,   710,   722,   559,   723,
-     667,   525,   378,   676,   376,   693,   525,   525,   365,   684,
-      -1,    -1,   693,    -1,    -1,    -1,    -1,    -1,    -1,   589,
-     627,    -1,    -1,   593,   705,   698,   682,    -1,   589,    -1,
-      -1,    -1,   593,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-     721,    -1,    -1,   716,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,   627,   665,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,   627,    -1,    -1,    -1,
-      -1,    -1,   688,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,   693,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,   664,   665,    -1,   667,    -1,    -1,
-      -1,    -1,    -1,   664,   665,    -1,   667,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   688,    -1,
-      -1,    -1,    -1,   693,    -1,    -1,    -1,   688,    -1,    -1,
-      -1,    -1,   693,    -1,   704,    -1,    -1,    -1,    -1,    -1,
-      -1,   711,    -1,   704,    -1,    -1,    -1,    -1,    -1,    -1,
-     711,    -1,   722,    -1,    -1,    -1,   726,    -1,    -1,    -1,
-      -1,   722,   732,    -1,    -1,   726,    -1,    -1,    -1,     0,
-      -1,   732,     3,     4,     5,     6,     7,     8,     9,    10,
-      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
-      21,    22,    23,    24,    25,    26,    27,    28,    29,    30,
-      31,    32,    33,    34,    35,    36,    37,    38,    39,    40,
-      41,    42,    43,    44,    45,    46,    47,    48,    49,    50,
-      51,    52,    53,    54,    55,    56,    57,    58,    59,    60,
-      61,    62,    63,    64,    65,    66,    67,    68,    69,    70,
-      71,    72,    73,    74,    75,    76,    77,    78,    79,    80,
-      81,    82,    83,    84,    85,    86,    87,    88,    89,    90,
-      91,    92,    93,    94,    95,    96,    97,    98,    99,   100,
-     101,   102,   103,   104,   105,   106,   107,   108,   109,   110,
-     111,   112,   113,   114,   115,   116,   117,   118,   119,   120,
-     121,   122,   123,   124,   125,   126,   127,   128,   129,   130,
-     131,   132,   133,   134,   135,   136,   137,   138,   139,   140,
-     141,   142,   143,   144,   145,   146,   147,   148,   149,   150,
-     151,   152,   153,   154,   155,   156,   157,   158,   159,   160,
-     161,   162,   163,   164,   165,   166,   167,   168,   169,   170,
-     171,   172,   173,   174,   175,   176,   177,   178,   179,   180,
-     181,   182,   183,   184,   185,   186,   187,   188,   189,   190,
-     191,   192,   193,   194,   195,   196,   197,   198,   199,   200,
-     201,   202,   203,   204,   205,   206,   207,   208,   209,   210,
-     211,   212,   213,   214,   215,   216,   217,   218,   219,   220,
-     221,   222,   223,   224,   225,   226,   227,   228,   229,   230,
-     231,   232,   233,   234,   235,   236,   237,   238,   239,   240,
-     241,   242,   243,   244,   245,   246,   247,   248,   249,   250,
-     251,   252,   253,   254,   255,   256,   257,   258,   259,   260,
-     261,   262,   263,   264,   265,   266,   267,   268,   269,   270,
-     271,   272,   273,   274,   275,   276,   277,   278,   279,   280,
-     281,   282,   283,   284,   285,   286,   287,   288,   289,   290,
-     291,   292,   293,   294,    -1,    -1,    -1,    -1,    -1,    -1,
+     294,   295,   296,   297,   298,   299,   300,   301,   302,   303,
+     304,   305,   306,   307,   308,   309,   310,   311,   312,   313,
+     314,   315,   316,   379,   371,   484,   540,   438,   447,   552,
+     614,   554,   408,   375,   557,   427,   343,   326,   414,   321,
+     322,   341,   339,   694,   341,   341,   317,   318,   404,   349,
+     340,   348,   348,   400,   323,   324,   346,   399,   349,   435,
+     436,   371,   473,   319,   320,   346,   347,   341,   375,   379,
+     371,   722,   419,   362,   348,   357,   358,   387,   379,   387,
+     390,   387,   376,   339,   375,   341,   387,   381,   382,   345,
+     400,   340,   340,   346,   404,   487,   349,   346,   346,   400,
+     519,   340,   521,   404,   618,   343,   340,   346,   346,   419,
+     340,   349,   346,   340,   506,   346,   346,   342,   419,   346,
+     430,   346,   346,   347,   346,   584,   482,   349,   651,   430,
+     596,   597,   598,   599,   351,   346,   353,   484,   349,   486,
+     349,   552,   346,   554,   346,   349,   557,   349,   567,   328,
+     329,   330,   331,   332,   333,   334,   335,   336,   337,   346,
+     571,   375,   349,   364,   365,   366,   354,   355,   356,   348,
+     340,   755,   482,   344,   484,   346,   486,   592,   593,   693,
+     357,   482,   705,   484,   343,   486,   594,   595,   600,   601,
+     375,   343,   375,   375,   341,   349,   340,   656,   348,   375,
+     339,   620,   375,   579,   341,   624,   375,   325,   361,   360,
+     359,   558,   327,   342,   341,   339,   344,   349,   349,   339,
+     339,   346,   745,   349,   347,   339,   383,   349,   349,   339,
+     540,   642,   643,   349,   339,   375,   349,   584,   340,   540,
+     651,   375,   342,   342,   339,   375,   342,   761,   558,   340,
+     344,   339,   349,   343,   340,   348,   340,   558,   375,   344,
+     343,   343,   349,   602,   604,   603,   607,   711,   605,   688,
+     606,   404,   320,   489,   584,   694,   387,   666,   696,   578,
+     751,   739,   752,   584,   550,   722,   696,   550,   400,   550,
+     398,   713,    -1,    -1,   705,   404,    -1,    -1,   387,    -1,
+      -1,    -1,    -1,   722,   614,    -1,    -1,    -1,   618,   656,
+      -1,    -1,    -1,   614,    -1,   734,   727,   618,    -1,   711,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,   327,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-     341,   342,   343,   344,   345,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,   354,   355,   356,   357,   358,   359,   360,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,   373,   374,   375,   376,   377,   378,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,   387,    -1,   389,   390,
-     391,   392,   393,   394,   395,   396,   397,   398,   399,   400,
-     401,   402,   403,   404,   405,   406,   407,   408,   409,   410,
-     411,   412,   413,   414,   415,   416,   417,   418,   419,     3,
-       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
-      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
-      24,    25,    26,    27,    28,    29,    30,    31,    32,    33,
-      34,    35,    36,    37,    38,    39,    40,    41,    42,    43,
-      44,    45,    46,    47,    48,    49,    50,    51,    52,    53,
-      54,    55,    56,    57,    58,    59,    60,    61,    62,    63,
-      64,    65,    66,    67,    68,    69,    70,    71,    72,    73,
-      74,    75,    76,    77,    78,    79,    80,    81,    82,    83,
-      84,    85,    86,    87,    88,    89,    90,    91,    92,    93,
-      94,    95,    96,    97,    98,    99,   100,   101,   102,   103,
-     104,   105,   106,   107,   108,   109,   110,   111,   112,   113,
-     114,   115,   116,   117,   118,   119,   120,   121,   122,   123,
-     124,   125,   126,   127,   128,   129,   130,   131,   132,   133,
-     134,   135,   136,   137,   138,   139,   140,   141,   142,   143,
-     144,   145,   146,   147,   148,   149,   150,   151,   152,   153,
-     154,   155,   156,   157,   158,   159,   160,   161,   162,   163,
-     164,   165,   166,   167,   168,   169,   170,   171,   172,   173,
-     174,   175,   176,   177,   178,   179,   180,   181,   182,   183,
-     184,   185,   186,   187,   188,   189,   190,   191,   192,   193,
-     194,   195,   196,   197,   198,   199,   200,   201,   202,   203,
-     204,   205,   206,   207,   208,   209,   210,   211,   212,   213,
-     214,   215,   216,   217,   218,   219,   220,   221,   222,   223,
-     224,   225,   226,   227,   228,   229,   230,   231,   232,   233,
-     234,   235,   236,   237,   238,   239,   240,   241,   242,   243,
-     244,   245,   246,   247,   248,   249,   250,   251,   252,   253,
-     254,   255,   256,   257,   258,   259,   260,   261,   262,   263,
-     264,   265,   266,   267,   268,   269,   270,   271,   272,   273,
-     274,   275,   276,   277,   278,   279,   280,   281,   282,   283,
-     284,   285,   286,   287,   288,   289,   290,   291,   292,   293,
-     294,    -1,    -1,   297,   298,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,   316,   317,    -1,   319,    -1,   321,   322,    -1,
-      -1,    -1,    -1,   327,   328,   329,   330,   331,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,   341,   342,   343,
-     344,   345,    -1,    -1,    -1,   349,   350,   351,   352,   353,
-     354,   355,   356,   357,   358,   359,   360,   361,   362,   363,
-     364,    -1,   366,   367,   368,   369,   370,   371,   372,   373,
-     374,   375,   376,   377,   378,   379,   380,   381,   382,   383,
-     384,   385,   386,   387,   388,   389,   390,   391,   392,   393,
-     394,   395,   396,   397,   398,   399,   400,   401,   402,   403,
-     404,   405,   406,   407,   408,   409,   410,   411,   412,   413,
-     414,   415,   416,   417,   418,   419,     3,     4,     5,     6,
-       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
-      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
-      27,    28,    29,    30,    31,    32,    33,    34,    35,    36,
-      37,    38,    39,    40,    41,    42,    43,    44,    45,    46,
-      47,    48,    49,    50,    51,    52,    53,    54,    55,    56,
-      57,    58,    59,    60,    61,    62,    63,    64,    65,    66,
-      67,    68,    69,    70,    71,    72,    73,    74,    75,    76,
-      77,    78,    79,    80,    81,    82,    83,    84,    85,    86,
-      87,    88,    89,    90,    91,    92,    93,    94,    95,    96,
-      97,    98,    99,   100,   101,   102,   103,   104,   105,   106,
-     107,   108,   109,   110,   111,   112,   113,   114,   115,   116,
-     117,   118,   119,   120,   121,   122,   123,   124,   125,   126,
-     127,   128,   129,   130,   131,   132,   133,   134,   135,   136,
-     137,   138,   139,   140,   141,   142,   143,   144,   145,   146,
-     147,   148,   149,   150,   151,   152,   153,   154,   155,   156,
-     157,   158,   159,   160,   161,   162,   163,   164,   165,   166,
-     167,   168,   169,   170,   171,   172,   173,   174,   175,   176,
-     177,   178,   179,   180,   181,   182,   183,   184,   185,   186,
-     187,   188,   189,   190,   191,   192,   193,   194,   195,   196,
-     197,   198,   199,   200,   201,   202,   203,   204,   205,   206,
-     207,   208,   209,   210,   211,   212,   213,   214,   215,   216,
-     217,   218,   219,   220,   221,   222,   223,   224,   225,   226,
-     227,   228,   229,   230,   231,   232,   233,   234,   235,   236,
-     237,   238,   239,   240,   241,   242,   243,   244,   245,   246,
-     247,   248,   249,   250,   251,   252,   253,   254,   255,   256,
-     257,   258,   259,   260,   261,   262,   263,   264,   265,   266,
-     267,   268,   269,   270,   271,   272,   273,   274,   275,   276,
-     277,   278,   279,   280,   281,   282,   283,   284,   285,   286,
-     287,   288,   289,   290,   291,   292,   293,   294,    -1,    -1,
-     297,   298,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   316,
-     317,    -1,   319,    -1,   321,   322,    -1,    -1,    -1,    -1,
-     327,   328,   329,   330,   331,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,   341,   342,   343,   344,   345,    -1,
-      -1,    -1,   349,   350,   351,   352,   353,   354,   355,   356,
-     357,   358,   359,   360,   361,   362,   363,   364,    -1,   366,
-     367,   368,   369,   370,   371,   372,   373,   374,   375,   376,
-     377,   378,   379,   380,   381,   382,   383,   384,   385,   386,
-     387,   388,   389,   390,   391,   392,   393,   394,   395,   396,
-     397,   398,   399,   400,   401,   402,   403,   404,   405,   406,
-     407,   408,   409,   410,   411,   412,   413,   414,   415,   416,
-     417,   418,   419,     3,     4,     5,     6,     7,     8,     9,
-      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
-      20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
-      30,    31,    32,    33,    34,    35,    36,    37,    38,    39,
-      40,    41,    42,    43,    44,    45,    46,    47,    48,    49,
-      50,    51,    52,    53,    54,    55,    56,    57,    58,    59,
-      60,    61,    62,    63,    64,    65,    66,    67,    68,    69,
-      70,    71,    72,    73,    74,    75,    76,    77,    78,    79,
-      80,    81,    82,    83,    84,    85,    86,    87,    88,    89,
-      90,    91,    92,    93,    94,    95,    96,    97,    98,    99,
-     100,   101,   102,   103,   104,   105,   106,   107,   108,   109,
-     110,   111,   112,   113,   114,   115,   116,   117,   118,   119,
-     120,   121,   122,   123,   124,   125,   126,   127,   128,   129,
-     130,   131,   132,   133,   134,   135,   136,   137,   138,   139,
-     140,   141,   142,   143,   144,   145,   146,   147,   148,   149,
-     150,   151,   152,   153,   154,   155,   156,   157,   158,   159,
-     160,   161,   162,   163,   164,   165,   166,   167,   168,   169,
-     170,   171,   172,   173,   174,   175,   176,   177,   178,   179,
-     180,   181,   182,   183,   184,   185,   186,   187,   188,   189,
-     190,   191,   192,   193,   194,   195,   196,   197,   198,   199,
-     200,   201,   202,   203,   204,   205,   206,   207,   208,   209,
-     210,   211,   212,   213,   214,   215,   216,   217,   218,   219,
-     220,   221,   222,   223,   224,   225,   226,   227,   228,   229,
-     230,   231,   232,   233,   234,   235,   236,   237,   238,   239,
-     240,   241,   242,   243,   244,   245,   246,   247,   248,   249,
-     250,   251,   252,   253,   254,   255,   256,   257,   258,   259,
-     260,   261,   262,   263,   264,   265,   266,   267,   268,   269,
-     270,   271,   272,   273,   274,   275,   276,   277,   278,   279,
-     280,   281,   282,   283,   284,   285,   286,   287,   288,   289,
-     290,   291,   292,   293,   294,    -1,    -1,   297,   298,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,   316,   317,    -1,   319,
-      -1,   321,    -1,    -1,    -1,    -1,    -1,   327,   328,   329,
-     330,   331,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,   341,   342,   343,   344,   345,    -1,    -1,    -1,   349,
-     350,   351,   352,   353,   354,   355,   356,   357,   358,   359,
-     360,   361,   362,   363,   364,    -1,   366,   367,   368,   369,
-     370,   371,   372,   373,   374,   375,   376,   377,   378,   379,
-     380,   381,   382,   383,   384,   385,   386,   387,   388,   389,
-     390,   391,   392,   393,   394,   395,   396,   397,   398,   399,
-     400,   401,   402,   403,   404,   405,   406,   407,   408,   409,
-     410,   411,   412,   413,   414,   415,   416,   417,   418,   419,
-       3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
-      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
-      23,    24,    25,    26,    27,    28,    29,    30,    31,    32,
-      33,    34,    35,    36,    37,    38,    39,    40,    41,    42,
-      43,    44,    45,    46,    47,    48,    49,    50,    51,    52,
-      53,    54,    55,    56,    57,    58,    59,    60,    61,    62,
-      63,    64,    65,    66,    67,    68,    69,    70,    71,    72,
-      73,    74,    75,    76,    77,    78,    79,    80,    81,    82,
-      83,    84,    85,    86,    87,    88,    89,    90,    91,    92,
-      93,    94,    95,    96,    97,    98,    99,   100,   101,   102,
-     103,   104,   105,   106,   107,   108,   109,   110,   111,   112,
-     113,   114,   115,   116,   117,   118,   119,   120,   121,   122,
-     123,   124,   125,   126,   127,   128,   129,   130,   131,   132,
-     133,   134,   135,   136,   137,   138,   139,   140,   141,   142,
-     143,   144,   145,   146,   147,   148,   149,   150,   151,   152,
-     153,   154,   155,   156,   157,   158,   159,   160,   161,   162,
-     163,   164,   165,   166,   167,   168,   169,   170,   171,   172,
-     173,   174,   175,   176,   177,   178,   179,   180,   181,   182,
-     183,   184,   185,   186,   187,   188,   189,   190,   191,   192,
-     193,   194,   195,   196,   197,   198,   199,   200,   201,   202,
-     203,   204,   205,   206,   207,   208,   209,   210,   211,   212,
-     213,   214,   215,   216,   217,   218,   219,   220,   221,   222,
-     223,   224,   225,   226,   227,   228,   229,   230,   231,   232,
-     233,   234,   235,   236,   237,   238,   239,   240,   241,   242,
-     243,   244,   245,   246,   247,   248,   249,   250,   251,   252,
-     253,   254,   255,   256,   257,   258,   259,   260,   261,   262,
-     263,   264,   265,   266,   267,   268,   269,   270,   271,   272,
-     273,   274,   275,   276,   277,   278,   279,   280,   281,   282,
-     283,   284,   285,   286,   287,   288,   289,   290,   291,   292,
-     293,   294,    -1,    -1,   297,   298,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,   316,   317,    -1,   319,    -1,   321,    -1,
-      -1,    -1,    -1,    -1,   327,   328,   329,   330,   331,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   341,   342,
-     343,   344,   345,    -1,    -1,    -1,   349,   350,   351,   352,
-     353,   354,   355,   356,   357,   358,   359,   360,   361,   362,
-     363,   364,    -1,   366,   367,   368,   369,   370,   371,   372,
-     373,   374,   375,   376,   377,   378,   379,   380,   381,   382,
-     383,   384,   385,   386,   387,   388,   389,   390,   391,   392,
-     393,   394,   395,   396,   397,   398,   399,   400,   401,   402,
-     403,   404,   405,   406,   407,   408,   409,   410,   411,   412,
-     413,   414,   415,   416,   417,   418,   419,     3,     4,     5,
-       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
-      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
-      26,    27,    28,    29,    30,    31,    32,    33,    34,    35,
-      36,    37,    38,    39,    40,    41,    42,    43,    44,    45,
-      46,    47,    48,    49,    50,    51,    52,    53,    54,    55,
-      56,    57,    58,    59,    60,    61,    62,    63,    64,    65,
-      66,    67,    68,    69,    70,    71,    72,    73,    74,    75,
-      76,    77,    78,    79,    80,    81,    82,    83,    84,    85,
-      86,    87,    88,    89,    90,    91,    92,    93,    94,    95,
-      96,    97,    98,    99,   100,   101,   102,   103,   104,   105,
-     106,   107,   108,   109,   110,   111,   112,   113,   114,   115,
-     116,   117,   118,   119,   120,   121,   122,   123,   124,   125,
-     126,   127,   128,   129,   130,   131,   132,   133,   134,   135,
-     136,   137,   138,   139,   140,   141,   142,   143,   144,   145,
-     146,   147,   148,   149,   150,   151,   152,   153,   154,   155,
-     156,   157,   158,   159,   160,   161,   162,   163,   164,   165,
-     166,   167,   168,   169,   170,   171,   172,   173,   174,   175,
-     176,   177,   178,   179,   180,   181,   182,   183,   184,   185,
-     186,   187,   188,   189,   190,   191,   192,   193,   194,   195,
-     196,   197,   198,   199,   200,   201,   202,   203,   204,   205,
-     206,   207,   208,   209,   210,   211,   212,   213,   214,   215,
-     216,   217,   218,   219,   220,   221,   222,   223,   224,   225,
-     226,   227,   228,   229,   230,   231,   232,   233,   234,   235,
-     236,   237,   238,   239,   240,   241,   242,   243,   244,   245,
-     246,   247,   248,   249,   250,   251,   252,   253,   254,   255,
-     256,   257,   258,   259,   260,   261,   262,   263,   264,   265,
-     266,   267,   268,   269,   270,   271,   272,   273,   274,   275,
-     276,   277,   278,   279,   280,   281,   282,   283,   284,   285,
-     286,   287,   288,   289,   290,   291,   292,   293,   294,    -1,
-      -1,   297,   298,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-     316,   317,    -1,   319,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,   327,   328,   329,   330,   331,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,   341,   342,   343,   344,   345,
-      -1,    -1,    -1,   349,   350,   351,   352,   353,   354,   355,
-     356,   357,   358,   359,   360,   361,   362,   363,   364,    -1,
-     366,   367,   368,   369,   370,   371,   372,   373,   374,   375,
-     376,   377,   378,   379,   380,   381,   382,   383,   384,   385,
-     386,   387,   388,   389,   390,   391,   392,   393,   394,   395,
-     396,   397,   398,   399,   400,   401,   402,   403,   404,   405,
-     406,   407,   408,   409,   410,   411,   412,   413,   414,   415,
-     416,   417,   418,   419,     3,     4,     5,     6,     7,     8,
-       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
-      19,    20,    21,    22,    23,    24,    25,    26,    27,    28,
-      29,    30,    31,    32,    33,    34,    35,    36,    37,    38,
-      39,    40,    41,    42,    43,    44,    45,    46,    47,    48,
-      49,    50,    51,    52,    53,    54,    55,    56,    57,    58,
-      59,    60,    61,    62,    63,    64,    65,    66,    67,    68,
-      69,    70,    71,    72,    73,    74,    75,    76,    77,    78,
-      79,    80,    81,    82,    83,    84,    85,    86,    87,    88,
-      89,    90,    91,    92,    93,    94,    95,    96,    97,    98,
-      99,   100,   101,   102,   103,   104,   105,   106,   107,   108,
-     109,   110,   111,   112,   113,   114,   115,   116,   117,   118,
-     119,   120,   121,   122,   123,   124,   125,   126,   127,   128,
-     129,   130,   131,   132,   133,   134,   135,   136,   137,   138,
-     139,   140,   141,   142,   143,   144,   145,   146,   147,   148,
-     149,   150,   151,   152,   153,   154,   155,   156,   157,   158,
-     159,   160,   161,   162,   163,   164,   165,   166,   167,   168,
-     169,   170,   171,   172,   173,   174,   175,   176,   177,   178,
-     179,   180,   181,   182,   183,   184,   185,   186,   187,   188,
-     189,   190,   191,   192,   193,   194,   195,   196,   197,   198,
-     199,   200,   201,   202,   203,   204,   205,   206,   207,   208,
-     209,   210,   211,   212,   213,   214,   215,   216,   217,   218,
-     219,   220,   221,   222,   223,   224,   225,   226,   227,   228,
-     229,   230,   231,   232,   233,   234,   235,   236,   237,   238,
-     239,   240,   241,   242,   243,   244,   245,   246,   247,   248,
-     249,   250,   251,   252,   253,   254,   255,   256,   257,   258,
-     259,   260,   261,   262,   263,   264,   265,   266,   267,   268,
-     269,   270,   271,   272,   273,   274,   275,   276,   277,   278,
-     279,   280,   281,   282,   283,   284,   285,   286,   287,   288,
-     289,   290,   291,   292,   293,   294,    -1,    -1,   297,   298,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,   316,   317,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   327,   328,
-     329,   330,   331,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,   341,   342,   343,   344,   345,    -1,    -1,    -1,
-     349,   350,   351,   352,   353,   354,   355,   356,   357,   358,
-     359,   360,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,   373,   374,   375,   376,   377,   378,
-     379,   380,   381,   382,   383,   384,   385,   386,   387,    -1,
-     389,   390,   391,   392,   393,   394,   395,   396,   397,   398,
-     399,   400,   401,   402,   403,   404,   405,   406,   407,   408,
-     409,   410,   411,   412,   413,   414,   415,   416,   417,   418,
-     419,     3,     4,     5,     6,     7,     8,     9,    10,    11,
+      -1,   750,    -1,    -1,   745,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   656,   694,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,   656,    -1,    -1,    -1,    -1,
+      -1,   717,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,   722,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   693,   694,    -1,   696,    -1,    -1,    -1,
+      -1,    -1,   693,   694,    -1,   696,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   717,    -1,    -1,
+      -1,    -1,   722,    -1,    -1,    -1,   717,    -1,    -1,    -1,
+      -1,   722,    -1,   733,    -1,    -1,    -1,    -1,    -1,    -1,
+     740,    -1,   733,    -1,    -1,    -1,    -1,    -1,    -1,   740,
+      -1,   751,    -1,    -1,    -1,   755,    -1,    -1,    -1,    -1,
+     751,   761,    -1,    -1,   755,    -1,    -1,    -1,     0,    -1,
+     761,     3,     4,     5,     6,     7,     8,     9,    10,    11,
       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
       22,    23,    24,    25,    26,    27,    28,    29,    30,    31,
       32,    33,    34,    35,    36,    37,    38,    39,    40,    41,
@@ -2768,61 +2760,66 @@
      262,   263,   264,   265,   266,   267,   268,   269,   270,   271,
      272,   273,   274,   275,   276,   277,   278,   279,   280,   281,
      282,   283,   284,   285,   286,   287,   288,   289,   290,   291,
-     292,   293,   294,    -1,    -1,   297,   298,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,   316,   317,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,   328,   329,   330,   331,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   341,
-     342,   343,   344,    -1,    -1,    -1,    -1,   349,   350,   351,
-     352,   353,   354,   355,   356,   357,   358,   359,   360,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,   373,   374,   375,   376,   377,   378,   379,   380,   381,
-     382,   383,   384,   385,   386,   387,    -1,   389,   390,   391,
-     392,   393,   394,   395,   396,   397,   398,   399,   400,   401,
-     402,   403,   404,   405,   406,   407,   408,   409,   410,   411,
-     412,   413,   414,   415,   416,   417,   418,   419,     3,     4,
-       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
-      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
-      25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
-      35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
-      45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
-      55,    56,    57,    58,    59,    60,    61,    62,    63,    64,
-      65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
-      75,    76,    77,    78,    79,    80,    81,    82,    83,    84,
-      85,    86,    87,    88,    89,    90,    91,    92,    93,    94,
-      95,    96,    97,    98,    99,   100,   101,   102,   103,   104,
-     105,   106,   107,   108,   109,   110,   111,   112,   113,   114,
-     115,   116,   117,   118,   119,   120,   121,   122,   123,   124,
-     125,   126,   127,   128,   129,   130,   131,   132,   133,   134,
-     135,   136,   137,   138,   139,   140,   141,   142,   143,   144,
-     145,   146,   147,   148,   149,   150,   151,   152,   153,   154,
-     155,   156,   157,   158,   159,   160,   161,   162,   163,   164,
-     165,   166,   167,   168,   169,   170,   171,   172,   173,   174,
-     175,   176,   177,   178,   179,   180,   181,   182,   183,   184,
-     185,   186,   187,   188,   189,   190,   191,   192,   193,   194,
-     195,   196,   197,   198,   199,   200,   201,   202,   203,   204,
-     205,   206,   207,   208,   209,   210,   211,   212,   213,   214,
-     215,   216,   217,   218,   219,   220,   221,   222,   223,   224,
-     225,   226,   227,   228,   229,   230,   231,   232,   233,   234,
-     235,   236,   237,   238,   239,   240,   241,   242,   243,   244,
-     245,   246,   247,   248,   249,   250,   251,   252,   253,   254,
-     255,   256,   257,   258,   259,   260,   261,   262,   263,   264,
-     265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
-     275,   276,   277,   278,   279,   280,   281,   282,   283,   284,
-     285,   286,   287,   288,   289,   290,   291,   292,   293,   294,
+     292,   293,   294,   295,   296,   297,   298,   299,   300,   301,
+     302,   303,   304,   305,   306,   307,   308,   309,   310,   311,
+     312,   313,   314,   315,   316,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   349,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,   327,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,   341,   342,   343,   344,
-     345,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   354,
-     355,   356,   357,   358,   359,   360,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   373,   374,
-     375,   376,   377,   378,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,   387,    -1,   389,   390,   391,   392,   393,   394,
-     395,   396,   397,   398,   399,   400,   401,   402,   403,   404,
-     405,   406,   407,   408,   409,   410,   411,   412,   413,   414,
-     415,   416,   417,   418,   419,     3,     4,     5,     6,     7,
+      -1,   363,   364,   365,   366,   367,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,   376,   377,   378,   379,   380,   381,
+     382,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   398,   399,   400,   401,
+     402,   403,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+     412,    -1,   414,   415,   416,   417,   418,   419,   420,   421,
+     422,   423,   424,   425,   426,   427,   428,   429,   430,   431,
+     432,   433,   434,   435,   436,   437,   438,   439,   440,   441,
+     442,   443,   444,     3,     4,     5,     6,     7,     8,     9,
+      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
+      20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
+      30,    31,    32,    33,    34,    35,    36,    37,    38,    39,
+      40,    41,    42,    43,    44,    45,    46,    47,    48,    49,
+      50,    51,    52,    53,    54,    55,    56,    57,    58,    59,
+      60,    61,    62,    63,    64,    65,    66,    67,    68,    69,
+      70,    71,    72,    73,    74,    75,    76,    77,    78,    79,
+      80,    81,    82,    83,    84,    85,    86,    87,    88,    89,
+      90,    91,    92,    93,    94,    95,    96,    97,    98,    99,
+     100,   101,   102,   103,   104,   105,   106,   107,   108,   109,
+     110,   111,   112,   113,   114,   115,   116,   117,   118,   119,
+     120,   121,   122,   123,   124,   125,   126,   127,   128,   129,
+     130,   131,   132,   133,   134,   135,   136,   137,   138,   139,
+     140,   141,   142,   143,   144,   145,   146,   147,   148,   149,
+     150,   151,   152,   153,   154,   155,   156,   157,   158,   159,
+     160,   161,   162,   163,   164,   165,   166,   167,   168,   169,
+     170,   171,   172,   173,   174,   175,   176,   177,   178,   179,
+     180,   181,   182,   183,   184,   185,   186,   187,   188,   189,
+     190,   191,   192,   193,   194,   195,   196,   197,   198,   199,
+     200,   201,   202,   203,   204,   205,   206,   207,   208,   209,
+     210,   211,   212,   213,   214,   215,   216,   217,   218,   219,
+     220,   221,   222,   223,   224,   225,   226,   227,   228,   229,
+     230,   231,   232,   233,   234,   235,   236,   237,   238,   239,
+     240,   241,   242,   243,   244,   245,   246,   247,   248,   249,
+     250,   251,   252,   253,   254,   255,   256,   257,   258,   259,
+     260,   261,   262,   263,   264,   265,   266,   267,   268,   269,
+     270,   271,   272,   273,   274,   275,   276,   277,   278,   279,
+     280,   281,   282,   283,   284,   285,   286,   287,   288,   289,
+     290,   291,   292,   293,   294,   295,   296,   297,   298,   299,
+     300,   301,   302,   303,   304,   305,   306,   307,   308,   309,
+     310,   311,   312,   313,   314,   315,   316,    -1,    -1,   319,
+     320,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   338,   339,
+      -1,   341,    -1,   343,   344,    -1,    -1,    -1,    -1,   349,
+     350,   351,   352,   353,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   363,   364,   365,   366,   367,    -1,    -1,
+      -1,   371,   372,   373,   374,   375,   376,   377,   378,   379,
+     380,   381,   382,   383,   384,   385,   386,    -1,   388,   389,
+     390,   391,   392,   393,   394,   395,   396,   397,   398,   399,
+     400,   401,   402,   403,   404,   405,   406,   407,   408,   409,
+     410,   411,   412,   413,   414,   415,   416,   417,   418,   419,
+     420,   421,   422,   423,   424,   425,   426,   427,   428,   429,
+     430,   431,   432,   433,   434,   435,   436,   437,   438,   439,
+     440,   441,   442,   443,   444,     3,     4,     5,     6,     7,
        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
       18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
       28,    29,    30,    31,    32,    33,    34,    35,    36,    37,
@@ -2851,61 +2848,66 @@
      258,   259,   260,   261,   262,   263,   264,   265,   266,   267,
      268,   269,   270,   271,   272,   273,   274,   275,   276,   277,
      278,   279,   280,   281,   282,   283,   284,   285,   286,   287,
-     288,   289,   290,   291,   292,   293,   294,    -1,    -1,    -1,
+     288,   289,   290,   291,   292,   293,   294,   295,   296,   297,
+     298,   299,   300,   301,   302,   303,   304,   305,   306,   307,
+     308,   309,   310,   311,   312,   313,   314,   315,   316,    -1,
+      -1,   319,   320,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   327,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,   341,   342,   343,   344,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,   353,   354,   355,   356,   357,
-     358,   359,   360,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,   373,   374,   375,   376,   377,
-     378,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   387,
-      -1,   389,   390,   391,   392,   393,   394,   395,   396,   397,
+     338,   339,    -1,   341,    -1,   343,   344,    -1,    -1,    -1,
+      -1,   349,   350,   351,   352,   353,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,   363,   364,   365,   366,   367,
+      -1,    -1,    -1,   371,   372,   373,   374,   375,   376,   377,
+     378,   379,   380,   381,   382,   383,   384,   385,   386,    -1,
+     388,   389,   390,   391,   392,   393,   394,   395,   396,   397,
      398,   399,   400,   401,   402,   403,   404,   405,   406,   407,
      408,   409,   410,   411,   412,   413,   414,   415,   416,   417,
-     418,   419,     3,     4,     5,     6,     7,     8,     9,    10,
-      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
-      21,    22,    23,    24,    25,    26,    27,    28,    29,    30,
-      31,    32,    33,    34,    35,    36,    37,    38,    39,    40,
-      41,    42,    43,    44,    45,    46,    47,    48,    49,    50,
-      51,    52,    53,    54,    55,    56,    57,    58,    59,    60,
-      61,    62,    63,    64,    65,    66,    67,    68,    69,    70,
-      71,    72,    73,    74,    75,    76,    77,    78,    79,    80,
-      81,    82,    83,    84,    85,    86,    87,    88,    89,    90,
-      91,    92,    93,    94,    95,    96,    97,    98,    99,   100,
-     101,   102,   103,   104,   105,   106,   107,   108,   109,   110,
-     111,   112,   113,   114,   115,   116,   117,   118,   119,   120,
-     121,   122,   123,   124,   125,   126,   127,   128,   129,   130,
-     131,   132,   133,   134,   135,   136,   137,   138,   139,   140,
-     141,   142,   143,   144,   145,   146,   147,   148,   149,   150,
-     151,   152,   153,   154,   155,   156,   157,   158,   159,   160,
-     161,   162,   163,   164,   165,   166,   167,   168,   169,   170,
-     171,   172,   173,   174,   175,   176,   177,   178,   179,   180,
-     181,   182,   183,   184,   185,   186,   187,   188,   189,   190,
-     191,   192,   193,   194,   195,   196,   197,   198,   199,   200,
-     201,   202,   203,   204,   205,   206,   207,   208,   209,   210,
-     211,   212,   213,   214,   215,   216,   217,   218,   219,   220,
-     221,   222,   223,   224,   225,   226,   227,   228,   229,   230,
-     231,   232,   233,   234,   235,   236,   237,   238,   239,   240,
-     241,   242,   243,   244,   245,   246,   247,   248,   249,   250,
-     251,   252,   253,   254,   255,   256,   257,   258,   259,   260,
-     261,   262,   263,   264,   265,   266,   267,   268,   269,   270,
-     271,   272,   273,   274,   275,   276,   277,   278,   279,   280,
-     281,   282,   283,   284,   285,   286,   287,   288,   289,   290,
-     291,   292,   293,   294,    -1,    -1,    -1,    -1,    -1,    -1,
+     418,   419,   420,   421,   422,   423,   424,   425,   426,   427,
+     428,   429,   430,   431,   432,   433,   434,   435,   436,   437,
+     438,   439,   440,   441,   442,   443,   444,     3,     4,     5,
+       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
+      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
+      26,    27,    28,    29,    30,    31,    32,    33,    34,    35,
+      36,    37,    38,    39,    40,    41,    42,    43,    44,    45,
+      46,    47,    48,    49,    50,    51,    52,    53,    54,    55,
+      56,    57,    58,    59,    60,    61,    62,    63,    64,    65,
+      66,    67,    68,    69,    70,    71,    72,    73,    74,    75,
+      76,    77,    78,    79,    80,    81,    82,    83,    84,    85,
+      86,    87,    88,    89,    90,    91,    92,    93,    94,    95,
+      96,    97,    98,    99,   100,   101,   102,   103,   104,   105,
+     106,   107,   108,   109,   110,   111,   112,   113,   114,   115,
+     116,   117,   118,   119,   120,   121,   122,   123,   124,   125,
+     126,   127,   128,   129,   130,   131,   132,   133,   134,   135,
+     136,   137,   138,   139,   140,   141,   142,   143,   144,   145,
+     146,   147,   148,   149,   150,   151,   152,   153,   154,   155,
+     156,   157,   158,   159,   160,   161,   162,   163,   164,   165,
+     166,   167,   168,   169,   170,   171,   172,   173,   174,   175,
+     176,   177,   178,   179,   180,   181,   182,   183,   184,   185,
+     186,   187,   188,   189,   190,   191,   192,   193,   194,   195,
+     196,   197,   198,   199,   200,   201,   202,   203,   204,   205,
+     206,   207,   208,   209,   210,   211,   212,   213,   214,   215,
+     216,   217,   218,   219,   220,   221,   222,   223,   224,   225,
+     226,   227,   228,   229,   230,   231,   232,   233,   234,   235,
+     236,   237,   238,   239,   240,   241,   242,   243,   244,   245,
+     246,   247,   248,   249,   250,   251,   252,   253,   254,   255,
+     256,   257,   258,   259,   260,   261,   262,   263,   264,   265,
+     266,   267,   268,   269,   270,   271,   272,   273,   274,   275,
+     276,   277,   278,   279,   280,   281,   282,   283,   284,   285,
+     286,   287,   288,   289,   290,   291,   292,   293,   294,   295,
+     296,   297,   298,   299,   300,   301,   302,   303,   304,   305,
+     306,   307,   308,   309,   310,   311,   312,   313,   314,   315,
+     316,    -1,    -1,   319,   320,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,   322,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-     341,   342,   343,   344,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,   354,   355,   356,   357,   358,   359,   360,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,   373,   374,   375,   376,   377,   378,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,   387,    -1,   389,   390,
-     391,   392,   393,   394,   395,   396,   397,   398,   399,   400,
-     401,   402,   403,   404,   405,   406,   407,   408,   409,   410,
-     411,   412,   413,   414,   415,   416,   417,   418,   419,     3,
+      -1,    -1,   338,   339,    -1,   341,    -1,   343,    -1,    -1,
+      -1,    -1,    -1,   349,   350,   351,   352,   353,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   363,   364,   365,
+     366,   367,    -1,    -1,    -1,   371,   372,   373,   374,   375,
+     376,   377,   378,   379,   380,   381,   382,   383,   384,   385,
+     386,    -1,   388,   389,   390,   391,   392,   393,   394,   395,
+     396,   397,   398,   399,   400,   401,   402,   403,   404,   405,
+     406,   407,   408,   409,   410,   411,   412,   413,   414,   415,
+     416,   417,   418,   419,   420,   421,   422,   423,   424,   425,
+     426,   427,   428,   429,   430,   431,   432,   433,   434,   435,
+     436,   437,   438,   439,   440,   441,   442,   443,   444,     3,
        4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
       24,    25,    26,    27,    28,    29,    30,    31,    32,    33,
@@ -2935,61 +2937,66 @@
      264,   265,   266,   267,   268,   269,   270,   271,   272,   273,
      274,   275,   276,   277,   278,   279,   280,   281,   282,   283,
      284,   285,   286,   287,   288,   289,   290,   291,   292,   293,
-     294,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+     294,   295,   296,   297,   298,   299,   300,   301,   302,   303,
+     304,   305,   306,   307,   308,   309,   310,   311,   312,   313,
+     314,   315,   316,    -1,    -1,   319,   320,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   322,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,   341,   342,   343,
-     344,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-     354,   355,   356,   357,   358,   359,   360,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   373,
-     374,   375,   376,   377,   378,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,   387,    -1,   389,   390,   391,   392,   393,
+      -1,    -1,    -1,    -1,   338,   339,    -1,   341,    -1,   343,
+      -1,    -1,    -1,    -1,    -1,   349,   350,   351,   352,   353,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   363,
+     364,   365,   366,   367,    -1,    -1,    -1,   371,   372,   373,
+     374,   375,   376,   377,   378,   379,   380,   381,   382,   383,
+     384,   385,   386,    -1,   388,   389,   390,   391,   392,   393,
      394,   395,   396,   397,   398,   399,   400,   401,   402,   403,
      404,   405,   406,   407,   408,   409,   410,   411,   412,   413,
-     414,   415,   416,   417,   418,   419,     3,     4,     5,     6,
-       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
-      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
-      27,    28,    29,    30,    31,    32,    33,    34,    35,    36,
-      37,    38,    39,    40,    41,    42,    43,    44,    45,    46,
-      47,    48,    49,    50,    51,    52,    53,    54,    55,    56,
-      57,    58,    59,    60,    61,    62,    63,    64,    65,    66,
-      67,    68,    69,    70,    71,    72,    73,    74,    75,    76,
-      77,    78,    79,    80,    81,    82,    83,    84,    85,    86,
-      87,    88,    89,    90,    91,    92,    93,    94,    95,    96,
-      97,    98,    99,   100,   101,   102,   103,   104,   105,   106,
-     107,   108,   109,   110,   111,   112,   113,   114,   115,   116,
-     117,   118,   119,   120,   121,   122,   123,   124,   125,   126,
-     127,   128,   129,   130,   131,   132,   133,   134,   135,   136,
-     137,   138,   139,   140,   141,   142,   143,   144,   145,   146,
-     147,   148,   149,   150,   151,   152,   153,   154,   155,   156,
-     157,   158,   159,   160,   161,   162,   163,   164,   165,   166,
-     167,   168,   169,   170,   171,   172,   173,   174,   175,   176,
-     177,   178,   179,   180,   181,   182,   183,   184,   185,   186,
-     187,   188,   189,   190,   191,   192,   193,   194,   195,   196,
-     197,   198,   199,   200,   201,   202,   203,   204,   205,   206,
-     207,   208,   209,   210,   211,   212,   213,   214,   215,   216,
-     217,   218,   219,   220,   221,   222,   223,   224,   225,   226,
-     227,   228,   229,   230,   231,   232,   233,   234,   235,   236,
-     237,   238,   239,   240,   241,   242,   243,   244,   245,   246,
-     247,   248,   249,   250,   251,   252,   253,   254,   255,   256,
-     257,   258,   259,   260,   261,   262,   263,   264,   265,   266,
-     267,   268,   269,   270,   271,   272,   273,   274,   275,   276,
-     277,   278,   279,   280,   281,   282,   283,   284,   285,   286,
-     287,   288,   289,   290,   291,   292,   293,   294,    -1,    -1,
+     414,   415,   416,   417,   418,   419,   420,   421,   422,   423,
+     424,   425,   426,   427,   428,   429,   430,   431,   432,   433,
+     434,   435,   436,   437,   438,   439,   440,   441,   442,   443,
+     444,     3,     4,     5,     6,     7,     8,     9,    10,    11,
+      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
+      22,    23,    24,    25,    26,    27,    28,    29,    30,    31,
+      32,    33,    34,    35,    36,    37,    38,    39,    40,    41,
+      42,    43,    44,    45,    46,    47,    48,    49,    50,    51,
+      52,    53,    54,    55,    56,    57,    58,    59,    60,    61,
+      62,    63,    64,    65,    66,    67,    68,    69,    70,    71,
+      72,    73,    74,    75,    76,    77,    78,    79,    80,    81,
+      82,    83,    84,    85,    86,    87,    88,    89,    90,    91,
+      92,    93,    94,    95,    96,    97,    98,    99,   100,   101,
+     102,   103,   104,   105,   106,   107,   108,   109,   110,   111,
+     112,   113,   114,   115,   116,   117,   118,   119,   120,   121,
+     122,   123,   124,   125,   126,   127,   128,   129,   130,   131,
+     132,   133,   134,   135,   136,   137,   138,   139,   140,   141,
+     142,   143,   144,   145,   146,   147,   148,   149,   150,   151,
+     152,   153,   154,   155,   156,   157,   158,   159,   160,   161,
+     162,   163,   164,   165,   166,   167,   168,   169,   170,   171,
+     172,   173,   174,   175,   176,   177,   178,   179,   180,   181,
+     182,   183,   184,   185,   186,   187,   188,   189,   190,   191,
+     192,   193,   194,   195,   196,   197,   198,   199,   200,   201,
+     202,   203,   204,   205,   206,   207,   208,   209,   210,   211,
+     212,   213,   214,   215,   216,   217,   218,   219,   220,   221,
+     222,   223,   224,   225,   226,   227,   228,   229,   230,   231,
+     232,   233,   234,   235,   236,   237,   238,   239,   240,   241,
+     242,   243,   244,   245,   246,   247,   248,   249,   250,   251,
+     252,   253,   254,   255,   256,   257,   258,   259,   260,   261,
+     262,   263,   264,   265,   266,   267,   268,   269,   270,   271,
+     272,   273,   274,   275,   276,   277,   278,   279,   280,   281,
+     282,   283,   284,   285,   286,   287,   288,   289,   290,   291,
+     292,   293,   294,   295,   296,   297,   298,   299,   300,   301,
+     302,   303,   304,   305,   306,   307,   308,   309,   310,   311,
+     312,   313,   314,   315,   316,    -1,    -1,   319,   320,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,   322,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,   341,   342,   343,   344,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,   354,   355,   356,
-     357,   358,   359,   360,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,   373,   374,   375,   376,
-     377,   378,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-     387,    -1,   389,   390,   391,   392,   393,   394,   395,   396,
-     397,   398,   399,   400,   401,   402,   403,   404,   405,   406,
-     407,   408,   409,   410,   411,   412,   413,   414,   415,   416,
-     417,   418,   419,     3,     4,     5,     6,     7,     8,     9,
+      -1,    -1,    -1,    -1,    -1,    -1,   338,   339,    -1,   341,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   349,   350,   351,
+     352,   353,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,   363,   364,   365,   366,   367,    -1,    -1,    -1,   371,
+     372,   373,   374,   375,   376,   377,   378,   379,   380,   381,
+     382,   383,   384,   385,   386,    -1,   388,   389,   390,   391,
+     392,   393,   394,   395,   396,   397,   398,   399,   400,   401,
+     402,   403,   404,   405,   406,   407,   408,   409,   410,   411,
+     412,   413,   414,   415,   416,   417,   418,   419,   420,   421,
+     422,   423,   424,   425,   426,   427,   428,   429,   430,   431,
+     432,   433,   434,   435,   436,   437,   438,   439,   440,   441,
+     442,   443,   444,     3,     4,     5,     6,     7,     8,     9,
       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
       20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
       30,    31,    32,    33,    34,    35,    36,    37,    38,    39,
@@ -3018,25 +3025,116 @@
      260,   261,   262,   263,   264,   265,   266,   267,   268,   269,
      270,   271,   272,   273,   274,   275,   276,   277,   278,   279,
      280,   281,   282,   283,   284,   285,   286,   287,   288,   289,
-     290,   291,   292,   293,   294,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,   341,   342,   343,   344,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,   354,   355,   356,   357,   358,   359,
-     360,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,   373,   374,   375,   376,   377,   378,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,   387,    -1,   389,
-     390,   391,   392,   393,   394,   395,   396,   397,   398,   399,
+     290,   291,   292,   293,   294,   295,   296,   297,   298,   299,
+     300,   301,   302,   303,   304,   305,   306,   307,   308,   309,
+     310,   311,   312,   313,   314,   315,   316,    -1,    -1,   319,
+     320,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   338,   339,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   349,
+     350,   351,   352,   353,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   363,   364,   365,   366,   367,    -1,    -1,
+      -1,   371,   372,   373,   374,   375,   376,   377,   378,   379,
+     380,   381,   382,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   398,   399,
      400,   401,   402,   403,   404,   405,   406,   407,   408,   409,
-     410,   411,   412,   413,   414,   415,   416,   417,   418,   419,
+     410,   411,   412,    -1,   414,   415,   416,   417,   418,   419,
+     420,   421,   422,   423,   424,   425,   426,   427,   428,   429,
+     430,   431,   432,   433,   434,   435,   436,   437,   438,   439,
+     440,   441,   442,   443,   444,     3,     4,     5,     6,     7,
+       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
+      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
+      28,    29,    30,    31,    32,    33,    34,    35,    36,    37,
+      38,    39,    40,    41,    42,    43,    44,    45,    46,    47,
+      48,    49,    50,    51,    52,    53,    54,    55,    56,    57,
+      58,    59,    60,    61,    62,    63,    64,    65,    66,    67,
+      68,    69,    70,    71,    72,    73,    74,    75,    76,    77,
+      78,    79,    80,    81,    82,    83,    84,    85,    86,    87,
+      88,    89,    90,    91,    92,    93,    94,    95,    96,    97,
+      98,    99,   100,   101,   102,   103,   104,   105,   106,   107,
+     108,   109,   110,   111,   112,   113,   114,   115,   116,   117,
+     118,   119,   120,   121,   122,   123,   124,   125,   126,   127,
+     128,   129,   130,   131,   132,   133,   134,   135,   136,   137,
+     138,   139,   140,   141,   142,   143,   144,   145,   146,   147,
+     148,   149,   150,   151,   152,   153,   154,   155,   156,   157,
+     158,   159,   160,   161,   162,   163,   164,   165,   166,   167,
+     168,   169,   170,   171,   172,   173,   174,   175,   176,   177,
+     178,   179,   180,   181,   182,   183,   184,   185,   186,   187,
+     188,   189,   190,   191,   192,   193,   194,   195,   196,   197,
+     198,   199,   200,   201,   202,   203,   204,   205,   206,   207,
+     208,   209,   210,   211,   212,   213,   214,   215,   216,   217,
+     218,   219,   220,   221,   222,   223,   224,   225,   226,   227,
+     228,   229,   230,   231,   232,   233,   234,   235,   236,   237,
+     238,   239,   240,   241,   242,   243,   244,   245,   246,   247,
+     248,   249,   250,   251,   252,   253,   254,   255,   256,   257,
+     258,   259,   260,   261,   262,   263,   264,   265,   266,   267,
+     268,   269,   270,   271,   272,   273,   274,   275,   276,   277,
+     278,   279,   280,   281,   282,   283,   284,   285,   286,   287,
+     288,   289,   290,   291,   292,   293,   294,   295,   296,   297,
+     298,   299,   300,   301,   302,   303,   304,   305,   306,   307,
+     308,   309,   310,   311,   312,   313,   314,   315,   316,    -1,
+      -1,   319,   320,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+     338,   339,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,   350,   351,   352,   353,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,   363,   364,   365,   366,    -1,
+      -1,    -1,    -1,   371,   372,   373,   374,   375,   376,   377,
+     378,   379,   380,   381,   382,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+     398,   399,   400,   401,   402,   403,   404,   405,   406,   407,
+     408,   409,   410,   411,   412,    -1,   414,   415,   416,   417,
+     418,   419,   420,   421,   422,   423,   424,   425,   426,   427,
+     428,   429,   430,   431,   432,   433,   434,   435,   436,   437,
+     438,   439,   440,   441,   442,   443,   444,     3,     4,     5,
+       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
+      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
+      26,    27,    28,    29,    30,    31,    32,    33,    34,    35,
+      36,    37,    38,    39,    40,    41,    42,    43,    44,    45,
+      46,    47,    48,    49,    50,    51,    52,    53,    54,    55,
+      56,    57,    58,    59,    60,    61,    62,    63,    64,    65,
+      66,    67,    68,    69,    70,    71,    72,    73,    74,    75,
+      76,    77,    78,    79,    80,    81,    82,    83,    84,    85,
+      86,    87,    88,    89,    90,    91,    92,    93,    94,    95,
+      96,    97,    98,    99,   100,   101,   102,   103,   104,   105,
+     106,   107,   108,   109,   110,   111,   112,   113,   114,   115,
+     116,   117,   118,   119,   120,   121,   122,   123,   124,   125,
+     126,   127,   128,   129,   130,   131,   132,   133,   134,   135,
+     136,   137,   138,   139,   140,   141,   142,   143,   144,   145,
+     146,   147,   148,   149,   150,   151,   152,   153,   154,   155,
+     156,   157,   158,   159,   160,   161,   162,   163,   164,   165,
+     166,   167,   168,   169,   170,   171,   172,   173,   174,   175,
+     176,   177,   178,   179,   180,   181,   182,   183,   184,   185,
+     186,   187,   188,   189,   190,   191,   192,   193,   194,   195,
+     196,   197,   198,   199,   200,   201,   202,   203,   204,   205,
+     206,   207,   208,   209,   210,   211,   212,   213,   214,   215,
+     216,   217,   218,   219,   220,   221,   222,   223,   224,   225,
+     226,   227,   228,   229,   230,   231,   232,   233,   234,   235,
+     236,   237,   238,   239,   240,   241,   242,   243,   244,   245,
+     246,   247,   248,   249,   250,   251,   252,   253,   254,   255,
+     256,   257,   258,   259,   260,   261,   262,   263,   264,   265,
+     266,   267,   268,   269,   270,   271,   272,   273,   274,   275,
+     276,   277,   278,   279,   280,   281,   282,   283,   284,   285,
+     286,   287,   288,   289,   290,   291,   292,   293,   294,   295,
+     296,   297,   298,   299,   300,   301,   302,   303,   304,   305,
+     306,   307,   308,   309,   310,   311,   312,   313,   314,   315,
+     316,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   349,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   363,   364,   365,
+     366,   367,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+     376,   377,   378,   379,   380,   381,   382,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,   398,   399,   400,   401,   402,   403,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   412,    -1,   414,   415,
+     416,   417,   418,   419,   420,   421,   422,   423,   424,   425,
+     426,   427,   428,   429,   430,   431,   432,   433,   434,   435,
+     436,   437,   438,   439,   440,   441,   442,   443,   444,     3,
        4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
       24,    25,    26,    27,    28,    29,    30,    31,    32,    33,
       34,    35,    36,    37,    38,    39,    40,    41,    42,    43,
       44,    45,    46,    47,    48,    49,    50,    51,    52,    53,
-      54,    55,    56,    57,    58,    59,    60,    -1,    -1,    63,
+      54,    55,    56,    57,    58,    59,    60,    61,    62,    63,
       64,    65,    66,    67,    68,    69,    70,    71,    72,    73,
       74,    75,    76,    77,    78,    79,    80,    81,    82,    83,
       84,    85,    86,    87,    88,    89,    90,    91,    92,    93,
@@ -3060,103 +3158,72 @@
      264,   265,   266,   267,   268,   269,   270,   271,   272,   273,
      274,   275,   276,   277,   278,   279,   280,   281,   282,   283,
      284,   285,   286,   287,   288,   289,   290,   291,   292,   293,
-     294,    -1,    -1,   297,   298,    -1,    -1,    -1,    -1,    -1,
+     294,   295,   296,   297,   298,   299,   300,   301,   302,   303,
+     304,   305,   306,   307,   308,   309,   310,   311,   312,   313,
+     314,   315,   316,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,   316,   317,    -1,    -1,    -1,   321,   322,    -1,
-      -1,    -1,    -1,    -1,   328,   329,   330,   331,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,   349,   350,   351,   352,   353,
-     354,    -1,    -1,    -1,    -1,   359,   360,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,   349,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   363,
+     364,   365,   366,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,   375,   376,   377,   378,   379,   380,   381,   382,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,   379,   380,   381,   382,   383,
-     384,   385,   386,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,   401,     4,     5,
-       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
-      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
-      26,    27,    28,    29,    30,    31,    32,    33,    34,    35,
-      36,    37,    38,    39,    40,    41,    42,    43,    44,    45,
-      46,    47,    48,    49,    50,    51,    52,    53,    54,    55,
-      56,    57,    58,    59,    60,    -1,    -1,    63,    64,    65,
-      66,    67,    68,    69,    70,    71,    72,    73,    74,    75,
-      76,    77,    78,    79,    80,    81,    82,    83,    84,    85,
-      86,    87,    88,    89,    90,    91,    92,    93,    94,    95,
-      96,    97,    98,    99,   100,   101,   102,   103,   104,   105,
-     106,   107,   108,   109,   110,   111,   112,   113,   114,   115,
-     116,   117,   118,   119,   120,   121,   122,   123,   124,   125,
-     126,   127,   128,   129,   130,   131,   132,   133,   134,   135,
-     136,   137,   138,   139,   140,   141,   142,   143,   144,   145,
-     146,   147,   148,   149,   150,   151,   152,   153,   154,   155,
-     156,   157,   158,   159,   160,   161,   162,   163,   164,   165,
-     166,   167,   168,   169,   170,   171,   172,   173,   174,   175,
-     176,   177,   178,   179,   180,   181,   182,   183,   184,   185,
-     186,   187,   188,   189,   190,   191,   192,   193,   194,   195,
-     196,   197,   198,   199,   200,   201,   202,   203,   204,   205,
-     206,   207,   208,   209,   210,   211,   212,   213,   214,   215,
-     216,   217,   218,   219,   220,   221,   222,   223,   224,   225,
-     226,   227,   228,   229,   230,   231,   232,   233,   234,   235,
-     236,   237,   238,   239,   240,   241,   242,   243,   244,   245,
-     246,   247,   248,   249,   250,   251,   252,   253,   254,   255,
-     256,   257,   258,   259,   260,   261,   262,   263,   264,   265,
-     266,   267,   268,   269,   270,   271,   272,   273,   274,   275,
-     276,   277,   278,   279,   280,   281,   282,   283,   284,   285,
-     286,   287,   288,   289,   290,   291,   292,   293,   294,    -1,
-      -1,   297,   298,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,   398,   399,   400,   401,   402,   403,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   412,    -1,
+     414,   415,   416,   417,   418,   419,   420,   421,   422,   423,
+     424,   425,   426,   427,   428,   429,   430,   431,   432,   433,
+     434,   435,   436,   437,   438,   439,   440,   441,   442,   443,
+     444,     3,     4,     5,     6,     7,     8,     9,    10,    11,
+      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
+      22,    23,    24,    25,    26,    27,    28,    29,    30,    31,
+      32,    33,    34,    35,    36,    37,    38,    39,    40,    41,
+      42,    43,    44,    45,    46,    47,    48,    49,    50,    51,
+      52,    53,    54,    55,    56,    57,    58,    59,    60,    61,
+      62,    63,    64,    65,    66,    67,    68,    69,    70,    71,
+      72,    73,    74,    75,    76,    77,    78,    79,    80,    81,
+      82,    83,    84,    85,    86,    87,    88,    89,    90,    91,
+      92,    93,    94,    95,    96,    97,    98,    99,   100,   101,
+     102,   103,   104,   105,   106,   107,   108,   109,   110,   111,
+     112,   113,   114,   115,   116,   117,   118,   119,   120,   121,
+     122,   123,   124,   125,   126,   127,   128,   129,   130,   131,
+     132,   133,   134,   135,   136,   137,   138,   139,   140,   141,
+     142,   143,   144,   145,   146,   147,   148,   149,   150,   151,
+     152,   153,   154,   155,   156,   157,   158,   159,   160,   161,
+     162,   163,   164,   165,   166,   167,   168,   169,   170,   171,
+     172,   173,   174,   175,   176,   177,   178,   179,   180,   181,
+     182,   183,   184,   185,   186,   187,   188,   189,   190,   191,
+     192,   193,   194,   195,   196,   197,   198,   199,   200,   201,
+     202,   203,   204,   205,   206,   207,   208,   209,   210,   211,
+     212,   213,   214,   215,   216,   217,   218,   219,   220,   221,
+     222,   223,   224,   225,   226,   227,   228,   229,   230,   231,
+     232,   233,   234,   235,   236,   237,   238,   239,   240,   241,
+     242,   243,   244,   245,   246,   247,   248,   249,   250,   251,
+     252,   253,   254,   255,   256,   257,   258,   259,   260,   261,
+     262,   263,   264,   265,   266,   267,   268,   269,   270,   271,
+     272,   273,   274,   275,   276,   277,   278,   279,   280,   281,
+     282,   283,   284,   285,   286,   287,   288,   289,   290,   291,
+     292,   293,   294,   295,   296,   297,   298,   299,   300,   301,
+     302,   303,   304,   305,   306,   307,   308,   309,   310,   311,
+     312,   313,   314,   315,   316,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-     316,   317,    -1,    -1,   320,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,   328,   329,   330,   331,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,   349,   350,   351,   352,   353,   354,    -1,
-      -1,    -1,    -1,   359,   360,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,   344,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,   379,   380,   381,   382,   383,   384,   385,
-     386,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,   401,     4,     5,     6,     7,
-       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
-      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
-      28,    29,    30,    31,    32,    33,    34,    35,    36,    37,
-      38,    39,    40,    41,    42,    43,    44,    45,    46,    47,
-      48,    49,    50,    51,    52,    53,    54,    55,    56,    57,
-      58,    59,    60,    -1,    -1,    63,    64,    65,    66,    67,
-      68,    69,    70,    71,    72,    73,    74,    75,    76,    77,
-      78,    79,    80,    81,    82,    83,    84,    85,    86,    87,
-      88,    89,    90,    91,    92,    93,    94,    95,    96,    97,
-      98,    99,   100,   101,   102,   103,   104,   105,   106,   107,
-     108,   109,   110,   111,   112,   113,   114,   115,   116,   117,
-     118,   119,   120,   121,   122,   123,   124,   125,   126,   127,
-     128,   129,   130,   131,   132,   133,   134,   135,   136,   137,
-     138,   139,   140,   141,   142,   143,   144,   145,   146,   147,
-     148,   149,   150,   151,   152,   153,   154,   155,   156,   157,
-     158,   159,   160,   161,   162,   163,   164,   165,   166,   167,
-     168,   169,   170,   171,   172,   173,   174,   175,   176,   177,
-     178,   179,   180,   181,   182,   183,   184,   185,   186,   187,
-     188,   189,   190,   191,   192,   193,   194,   195,   196,   197,
-     198,   199,   200,   201,   202,   203,   204,   205,   206,   207,
-     208,   209,   210,   211,   212,   213,   214,   215,   216,   217,
-     218,   219,   220,   221,   222,   223,   224,   225,   226,   227,
-     228,   229,   230,   231,   232,   233,   234,   235,   236,   237,
-     238,   239,   240,   241,   242,   243,   244,   245,   246,   247,
-     248,   249,   250,   251,   252,   253,   254,   255,   256,   257,
-     258,   259,   260,   261,   262,   263,   264,   265,   266,   267,
-     268,   269,   270,   271,   272,   273,   274,   275,   276,   277,
-     278,   279,   280,   281,   282,   283,   284,   285,   286,   287,
-     288,   289,   290,   291,   292,   293,   294,    -1,    -1,   297,
-     298,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   316,   317,
-      -1,    -1,    -1,   321,    -1,    -1,    -1,    -1,    -1,    -1,
-     328,   329,   330,   331,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,   349,   350,   351,   352,   353,   354,    -1,    -1,    -1,
-      -1,   359,   360,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,   379,   380,   381,   382,   383,   384,   385,   386,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,   401,     4,     5,     6,     7,     8,     9,
+      -1,   363,   364,   365,   366,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,   376,   377,   378,   379,   380,   381,
+     382,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   398,   399,   400,   401,
+     402,   403,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+     412,    -1,   414,   415,   416,   417,   418,   419,   420,   421,
+     422,   423,   424,   425,   426,   427,   428,   429,   430,   431,
+     432,   433,   434,   435,   436,   437,   438,   439,   440,   441,
+     442,   443,   444,     3,     4,     5,     6,     7,     8,     9,
       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
       20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
       30,    31,    32,    33,    34,    35,    36,    37,    38,    39,
       40,    41,    42,    43,    44,    45,    46,    47,    48,    49,
       50,    51,    52,    53,    54,    55,    56,    57,    58,    59,
-      60,    -1,    -1,    63,    64,    65,    66,    67,    68,    69,
+      60,    61,    62,    63,    64,    65,    66,    67,    68,    69,
       70,    71,    72,    73,    74,    75,    76,    77,    78,    79,
       80,    81,    82,    83,    84,    85,    86,    87,    88,    89,
       90,    91,    92,    93,    94,    95,    96,    97,    98,    99,
@@ -3179,18 +3246,153 @@
      260,   261,   262,   263,   264,   265,   266,   267,   268,   269,
      270,   271,   272,   273,   274,   275,   276,   277,   278,   279,
      280,   281,   282,   283,   284,   285,   286,   287,   288,   289,
-     290,   291,   292,   293,   294,    -1,    -1,   297,   298,    -1,
+     290,   291,   292,   293,   294,   295,   296,   297,   298,   299,
+     300,   301,   302,   303,   304,   305,   306,   307,   308,   309,
+     310,   311,   312,   313,   314,   315,   316,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,   316,   317,    -1,    -1,
-     320,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   328,   329,
-     330,   331,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   349,
-     350,   351,   352,   353,   354,    -1,    -1,    -1,    -1,   359,
-     360,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   379,
-     380,   381,   382,   383,   384,   385,   386,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,   401,     4,     5,     6,     7,     8,     9,    10,    11,
+      -1,    -1,    -1,    -1,   344,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   363,   364,   365,   366,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   376,   377,   378,   379,
+     380,   381,   382,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   398,   399,
+     400,   401,   402,   403,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,   412,    -1,   414,   415,   416,   417,   418,   419,
+     420,   421,   422,   423,   424,   425,   426,   427,   428,   429,
+     430,   431,   432,   433,   434,   435,   436,   437,   438,   439,
+     440,   441,   442,   443,   444,     3,     4,     5,     6,     7,
+       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
+      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
+      28,    29,    30,    31,    32,    33,    34,    35,    36,    37,
+      38,    39,    40,    41,    42,    43,    44,    45,    46,    47,
+      48,    49,    50,    51,    52,    53,    54,    55,    56,    57,
+      58,    59,    60,    61,    62,    63,    64,    65,    66,    67,
+      68,    69,    70,    71,    72,    73,    74,    75,    76,    77,
+      78,    79,    80,    81,    82,    83,    84,    85,    86,    87,
+      88,    89,    90,    91,    92,    93,    94,    95,    96,    97,
+      98,    99,   100,   101,   102,   103,   104,   105,   106,   107,
+     108,   109,   110,   111,   112,   113,   114,   115,   116,   117,
+     118,   119,   120,   121,   122,   123,   124,   125,   126,   127,
+     128,   129,   130,   131,   132,   133,   134,   135,   136,   137,
+     138,   139,   140,   141,   142,   143,   144,   145,   146,   147,
+     148,   149,   150,   151,   152,   153,   154,   155,   156,   157,
+     158,   159,   160,   161,   162,   163,   164,   165,   166,   167,
+     168,   169,   170,   171,   172,   173,   174,   175,   176,   177,
+     178,   179,   180,   181,   182,   183,   184,   185,   186,   187,
+     188,   189,   190,   191,   192,   193,   194,   195,   196,   197,
+     198,   199,   200,   201,   202,   203,   204,   205,   206,   207,
+     208,   209,   210,   211,   212,   213,   214,   215,   216,   217,
+     218,   219,   220,   221,   222,   223,   224,   225,   226,   227,
+     228,   229,   230,   231,   232,   233,   234,   235,   236,   237,
+     238,   239,   240,   241,   242,   243,   244,   245,   246,   247,
+     248,   249,   250,   251,   252,   253,   254,   255,   256,   257,
+     258,   259,   260,   261,   262,   263,   264,   265,   266,   267,
+     268,   269,   270,   271,   272,   273,   274,   275,   276,   277,
+     278,   279,   280,   281,   282,   283,   284,   285,   286,   287,
+     288,   289,   290,   291,   292,   293,   294,   295,   296,   297,
+     298,   299,   300,   301,   302,   303,   304,   305,   306,   307,
+     308,   309,   310,   311,   312,   313,   314,   315,   316,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   344,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,   363,   364,   365,   366,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   376,   377,
+     378,   379,   380,   381,   382,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+     398,   399,   400,   401,   402,   403,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,   412,    -1,   414,   415,   416,   417,
+     418,   419,   420,   421,   422,   423,   424,   425,   426,   427,
+     428,   429,   430,   431,   432,   433,   434,   435,   436,   437,
+     438,   439,   440,   441,   442,   443,   444,     3,     4,     5,
+       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
+      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
+      26,    27,    28,    29,    30,    31,    32,    33,    34,    35,
+      36,    37,    38,    39,    40,    41,    42,    43,    44,    45,
+      46,    47,    48,    49,    50,    51,    52,    53,    54,    55,
+      56,    57,    58,    59,    60,    61,    62,    63,    64,    65,
+      66,    67,    68,    69,    70,    71,    72,    73,    74,    75,
+      76,    77,    78,    79,    80,    81,    82,    83,    84,    85,
+      86,    87,    88,    89,    90,    91,    92,    93,    94,    95,
+      96,    97,    98,    99,   100,   101,   102,   103,   104,   105,
+     106,   107,   108,   109,   110,   111,   112,   113,   114,   115,
+     116,   117,   118,   119,   120,   121,   122,   123,   124,   125,
+     126,   127,   128,   129,   130,   131,   132,   133,   134,   135,
+     136,   137,   138,   139,   140,   141,   142,   143,   144,   145,
+     146,   147,   148,   149,   150,   151,   152,   153,   154,   155,
+     156,   157,   158,   159,   160,   161,   162,   163,   164,   165,
+     166,   167,   168,   169,   170,   171,   172,   173,   174,   175,
+     176,   177,   178,   179,   180,   181,   182,   183,   184,   185,
+     186,   187,   188,   189,   190,   191,   192,   193,   194,   195,
+     196,   197,   198,   199,   200,   201,   202,   203,   204,   205,
+     206,   207,   208,   209,   210,   211,   212,   213,   214,   215,
+     216,   217,   218,   219,   220,   221,   222,   223,   224,   225,
+     226,   227,   228,   229,   230,   231,   232,   233,   234,   235,
+     236,   237,   238,   239,   240,   241,   242,   243,   244,   245,
+     246,   247,   248,   249,   250,   251,   252,   253,   254,   255,
+     256,   257,   258,   259,   260,   261,   262,   263,   264,   265,
+     266,   267,   268,   269,   270,   271,   272,   273,   274,   275,
+     276,   277,   278,   279,   280,   281,   282,   283,   284,   285,
+     286,   287,   288,   289,   290,   291,   292,   293,   294,   295,
+     296,   297,   298,   299,   300,   301,   302,   303,   304,   305,
+     306,   307,   308,   309,   310,   311,   312,   313,   314,   315,
+     316,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   363,   364,   365,
+     366,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+     376,   377,   378,   379,   380,   381,   382,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,   398,   399,   400,   401,   402,   403,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   412,    -1,   414,   415,
+     416,   417,   418,   419,   420,   421,   422,   423,   424,   425,
+     426,   427,   428,   429,   430,   431,   432,   433,   434,   435,
+     436,   437,   438,   439,   440,   441,   442,   443,   444,     4,
+       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
+      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
+      25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
+      35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
+      45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
+      55,    56,    57,    58,    59,    60,    -1,    -1,    63,    64,
+      65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
+      75,    76,    77,    78,    79,    80,    81,    82,    83,    84,
+      85,    86,    87,    88,    89,    90,    91,    92,    93,    94,
+      95,    96,    97,    98,    99,   100,   101,   102,   103,   104,
+     105,   106,   107,   108,   109,   110,   111,   112,   113,   114,
+     115,   116,   117,   118,   119,   120,   121,   122,   123,   124,
+     125,   126,   127,   128,   129,   130,   131,   132,   133,   134,
+     135,   136,   137,   138,   139,   140,   141,   142,   143,   144,
+     145,   146,   147,   148,   149,   150,   151,   152,   153,   154,
+     155,   156,   157,   158,   159,   160,   161,   162,   163,   164,
+     165,   166,   167,   168,   169,   170,   171,   172,   173,   174,
+     175,   176,   177,   178,   179,   180,   181,   182,   183,   184,
+     185,   186,   187,   188,   189,   190,   191,   192,   193,   194,
+     195,   196,   197,   198,   199,   200,   201,   202,   203,   204,
+     205,   206,   207,   208,   209,   210,   211,   212,   213,   214,
+     215,   216,   217,   218,   219,   220,   221,   222,   223,   224,
+     225,   226,   227,   228,   229,   230,   231,   232,   233,   234,
+     235,   236,   237,   238,   239,   240,   241,   242,   243,   244,
+     245,   246,   247,   248,   249,   250,   251,   252,   253,   254,
+     255,   256,   257,   258,   259,   260,   261,   262,   263,   264,
+     265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
+     275,   276,   277,   278,   279,   280,   281,   282,   283,   284,
+     285,   286,   287,   288,   289,   290,   291,   292,   293,   294,
+     295,   296,   297,   298,   299,   300,   301,   302,   303,   304,
+     305,   306,   307,   308,   309,   310,   311,   312,   313,   314,
+     315,   316,    -1,    -1,   319,   320,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   338,   339,    -1,    -1,    -1,   343,   344,
+      -1,    -1,    -1,    -1,    -1,   350,   351,   352,   353,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   371,   372,   373,   374,
+     375,   376,    -1,    -1,    -1,    -1,   381,   382,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   404,
+     405,   406,   407,   408,   409,   410,   411,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,   426,     4,     5,     6,     7,     8,     9,    10,    11,
       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
       22,    23,    24,    25,    26,    27,    28,    29,    30,    31,
       32,    33,    34,    35,    36,    37,    38,    39,    40,    41,
@@ -3219,17 +3421,231 @@
      262,   263,   264,   265,   266,   267,   268,   269,   270,   271,
      272,   273,   274,   275,   276,   277,   278,   279,   280,   281,
      282,   283,   284,   285,   286,   287,   288,   289,   290,   291,
-     292,   293,   294,    -1,    -1,   297,   298,    -1,    -1,    -1,
+     292,   293,   294,   295,   296,   297,   298,   299,   300,   301,
+     302,   303,   304,   305,   306,   307,   308,   309,   310,   311,
+     312,   313,   314,   315,   316,    -1,    -1,   319,   320,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,   316,   317,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,   327,   328,   329,   330,   331,
+      -1,    -1,    -1,    -1,    -1,    -1,   338,   339,    -1,    -1,
+      -1,   343,   344,    -1,    -1,    -1,    -1,    -1,   350,   351,
+     352,   353,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   371,
+     372,   373,   374,   375,   376,    -1,    -1,    -1,    -1,   381,
+     382,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,   349,   350,   351,
-     352,   353,   354,    -1,    -1,    -1,    -1,   359,   360,    -1,
+      -1,    -1,   404,   405,   406,   407,   408,   409,   410,   411,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,   379,   380,   381,
-     382,   383,   384,   385,   386,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   401,
+      -1,    -1,    -1,    -1,   426,     4,     5,     6,     7,     8,
+       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
+      19,    20,    21,    22,    23,    24,    25,    26,    27,    28,
+      29,    30,    31,    32,    33,    34,    35,    36,    37,    38,
+      39,    40,    41,    42,    43,    44,    45,    46,    47,    48,
+      49,    50,    51,    52,    53,    54,    55,    56,    57,    58,
+      59,    60,    -1,    -1,    63,    64,    65,    66,    67,    68,
+      69,    70,    71,    72,    73,    74,    75,    76,    77,    78,
+      79,    80,    81,    82,    83,    84,    85,    86,    87,    88,
+      89,    90,    91,    92,    93,    94,    95,    96,    97,    98,
+      99,   100,   101,   102,   103,   104,   105,   106,   107,   108,
+     109,   110,   111,   112,   113,   114,   115,   116,   117,   118,
+     119,   120,   121,   122,   123,   124,   125,   126,   127,   128,
+     129,   130,   131,   132,   133,   134,   135,   136,   137,   138,
+     139,   140,   141,   142,   143,   144,   145,   146,   147,   148,
+     149,   150,   151,   152,   153,   154,   155,   156,   157,   158,
+     159,   160,   161,   162,   163,   164,   165,   166,   167,   168,
+     169,   170,   171,   172,   173,   174,   175,   176,   177,   178,
+     179,   180,   181,   182,   183,   184,   185,   186,   187,   188,
+     189,   190,   191,   192,   193,   194,   195,   196,   197,   198,
+     199,   200,   201,   202,   203,   204,   205,   206,   207,   208,
+     209,   210,   211,   212,   213,   214,   215,   216,   217,   218,
+     219,   220,   221,   222,   223,   224,   225,   226,   227,   228,
+     229,   230,   231,   232,   233,   234,   235,   236,   237,   238,
+     239,   240,   241,   242,   243,   244,   245,   246,   247,   248,
+     249,   250,   251,   252,   253,   254,   255,   256,   257,   258,
+     259,   260,   261,   262,   263,   264,   265,   266,   267,   268,
+     269,   270,   271,   272,   273,   274,   275,   276,   277,   278,
+     279,   280,   281,   282,   283,   284,   285,   286,   287,   288,
+     289,   290,   291,   292,   293,   294,   295,   296,   297,   298,
+     299,   300,   301,   302,   303,   304,   305,   306,   307,   308,
+     309,   310,   311,   312,   313,   314,   315,   316,    -1,    -1,
+     319,   320,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   338,
+     339,    -1,    -1,   342,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,   350,   351,   352,   353,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,   371,   372,   373,   374,   375,   376,    -1,    -1,
+      -1,    -1,   381,   382,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,   404,   405,   406,   407,   408,
+     409,   410,   411,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   426,     4,     5,
+       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
+      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
+      26,    27,    28,    29,    30,    31,    32,    33,    34,    35,
+      36,    37,    38,    39,    40,    41,    42,    43,    44,    45,
+      46,    47,    48,    49,    50,    51,    52,    53,    54,    55,
+      56,    57,    58,    59,    60,    -1,    -1,    63,    64,    65,
+      66,    67,    68,    69,    70,    71,    72,    73,    74,    75,
+      76,    77,    78,    79,    80,    81,    82,    83,    84,    85,
+      86,    87,    88,    89,    90,    91,    92,    93,    94,    95,
+      96,    97,    98,    99,   100,   101,   102,   103,   104,   105,
+     106,   107,   108,   109,   110,   111,   112,   113,   114,   115,
+     116,   117,   118,   119,   120,   121,   122,   123,   124,   125,
+     126,   127,   128,   129,   130,   131,   132,   133,   134,   135,
+     136,   137,   138,   139,   140,   141,   142,   143,   144,   145,
+     146,   147,   148,   149,   150,   151,   152,   153,   154,   155,
+     156,   157,   158,   159,   160,   161,   162,   163,   164,   165,
+     166,   167,   168,   169,   170,   171,   172,   173,   174,   175,
+     176,   177,   178,   179,   180,   181,   182,   183,   184,   185,
+     186,   187,   188,   189,   190,   191,   192,   193,   194,   195,
+     196,   197,   198,   199,   200,   201,   202,   203,   204,   205,
+     206,   207,   208,   209,   210,   211,   212,   213,   214,   215,
+     216,   217,   218,   219,   220,   221,   222,   223,   224,   225,
+     226,   227,   228,   229,   230,   231,   232,   233,   234,   235,
+     236,   237,   238,   239,   240,   241,   242,   243,   244,   245,
+     246,   247,   248,   249,   250,   251,   252,   253,   254,   255,
+     256,   257,   258,   259,   260,   261,   262,   263,   264,   265,
+     266,   267,   268,   269,   270,   271,   272,   273,   274,   275,
+     276,   277,   278,   279,   280,   281,   282,   283,   284,   285,
+     286,   287,   288,   289,   290,   291,   292,   293,   294,   295,
+     296,   297,   298,   299,   300,   301,   302,   303,   304,   305,
+     306,   307,   308,   309,   310,   311,   312,   313,   314,   315,
+     316,    -1,    -1,   319,   320,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,   338,   339,    -1,    -1,    -1,   343,    -1,    -1,
+      -1,    -1,    -1,    -1,   350,   351,   352,   353,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,   371,   372,   373,   374,   375,
+     376,    -1,    -1,    -1,    -1,   381,   382,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   404,   405,
+     406,   407,   408,   409,   410,   411,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+     426,     4,     5,     6,     7,     8,     9,    10,    11,    12,
+      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
+      23,    24,    25,    26,    27,    28,    29,    30,    31,    32,
+      33,    34,    35,    36,    37,    38,    39,    40,    41,    42,
+      43,    44,    45,    46,    47,    48,    49,    50,    51,    52,
+      53,    54,    55,    56,    57,    58,    59,    60,    -1,    -1,
+      63,    64,    65,    66,    67,    68,    69,    70,    71,    72,
+      73,    74,    75,    76,    77,    78,    79,    80,    81,    82,
+      83,    84,    85,    86,    87,    88,    89,    90,    91,    92,
+      93,    94,    95,    96,    97,    98,    99,   100,   101,   102,
+     103,   104,   105,   106,   107,   108,   109,   110,   111,   112,
+     113,   114,   115,   116,   117,   118,   119,   120,   121,   122,
+     123,   124,   125,   126,   127,   128,   129,   130,   131,   132,
+     133,   134,   135,   136,   137,   138,   139,   140,   141,   142,
+     143,   144,   145,   146,   147,   148,   149,   150,   151,   152,
+     153,   154,   155,   156,   157,   158,   159,   160,   161,   162,
+     163,   164,   165,   166,   167,   168,   169,   170,   171,   172,
+     173,   174,   175,   176,   177,   178,   179,   180,   181,   182,
+     183,   184,   185,   186,   187,   188,   189,   190,   191,   192,
+     193,   194,   195,   196,   197,   198,   199,   200,   201,   202,
+     203,   204,   205,   206,   207,   208,   209,   210,   211,   212,
+     213,   214,   215,   216,   217,   218,   219,   220,   221,   222,
+     223,   224,   225,   226,   227,   228,   229,   230,   231,   232,
+     233,   234,   235,   236,   237,   238,   239,   240,   241,   242,
+     243,   244,   245,   246,   247,   248,   249,   250,   251,   252,
+     253,   254,   255,   256,   257,   258,   259,   260,   261,   262,
+     263,   264,   265,   266,   267,   268,   269,   270,   271,   272,
+     273,   274,   275,   276,   277,   278,   279,   280,   281,   282,
+     283,   284,   285,   286,   287,   288,   289,   290,   291,   292,
+     293,   294,   295,   296,   297,   298,   299,   300,   301,   302,
+     303,   304,   305,   306,   307,   308,   309,   310,   311,   312,
+     313,   314,   315,   316,    -1,    -1,   319,   320,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,   338,   339,    -1,    -1,   342,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   350,   351,   352,
+     353,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   371,   372,
+     373,   374,   375,   376,    -1,    -1,    -1,    -1,   381,   382,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,   404,   405,   406,   407,   408,   409,   410,   411,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   426,     4,     5,     6,     7,     8,     9,
+      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
+      20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
+      30,    31,    32,    33,    34,    35,    36,    37,    38,    39,
+      40,    41,    42,    43,    44,    45,    46,    47,    48,    49,
+      50,    51,    52,    53,    54,    55,    56,    57,    58,    59,
+      60,    -1,    -1,    63,    64,    65,    66,    67,    68,    69,
+      70,    71,    72,    73,    74,    75,    76,    77,    78,    79,
+      80,    81,    82,    83,    84,    85,    86,    87,    88,    89,
+      90,    91,    92,    93,    94,    95,    96,    97,    98,    99,
+     100,   101,   102,   103,   104,   105,   106,   107,   108,   109,
+     110,   111,   112,   113,   114,   115,   116,   117,   118,   119,
+     120,   121,   122,   123,   124,   125,   126,   127,   128,   129,
+     130,   131,   132,   133,   134,   135,   136,   137,   138,   139,
+     140,   141,   142,   143,   144,   145,   146,   147,   148,   149,
+     150,   151,   152,   153,   154,   155,   156,   157,   158,   159,
+     160,   161,   162,   163,   164,   165,   166,   167,   168,   169,
+     170,   171,   172,   173,   174,   175,   176,   177,   178,   179,
+     180,   181,   182,   183,   184,   185,   186,   187,   188,   189,
+     190,   191,   192,   193,   194,   195,   196,   197,   198,   199,
+     200,   201,   202,   203,   204,   205,   206,   207,   208,   209,
+     210,   211,   212,   213,   214,   215,   216,   217,   218,   219,
+     220,   221,   222,   223,   224,   225,   226,   227,   228,   229,
+     230,   231,   232,   233,   234,   235,   236,   237,   238,   239,
+     240,   241,   242,   243,   244,   245,   246,   247,   248,   249,
+     250,   251,   252,   253,   254,   255,   256,   257,   258,   259,
+     260,   261,   262,   263,   264,   265,   266,   267,   268,   269,
+     270,   271,   272,   273,   274,   275,   276,   277,   278,   279,
+     280,   281,   282,   283,   284,   285,   286,   287,   288,   289,
+     290,   291,   292,   293,   294,   295,   296,   297,   298,   299,
+     300,   301,   302,   303,   304,   305,   306,   307,   308,   309,
+     310,   311,   312,   313,   314,   315,   316,    -1,    -1,   319,
+     320,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   338,   339,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   349,
+     350,   351,   352,   353,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,   371,   372,   373,   374,   375,   376,    -1,    -1,    -1,
+      -1,   381,   382,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,   404,   405,   406,   407,   408,   409,
+     410,   411,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   426,     4,     5,     6,
+       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
+      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
+      27,    28,    29,    30,    31,    32,    33,    34,    35,    36,
+      37,    38,    39,    40,    41,    42,    43,    44,    45,    46,
+      47,    48,    49,    50,    51,    52,    53,    54,    55,    56,
+      57,    58,    59,    60,    -1,    -1,    63,    64,    65,    66,
+      67,    68,    69,    70,    71,    72,    73,    74,    75,    76,
+      77,    78,    79,    80,    81,    82,    83,    84,    85,    86,
+      87,    88,    89,    90,    91,    92,    93,    94,    95,    96,
+      97,    98,    99,   100,   101,   102,   103,   104,   105,   106,
+     107,   108,   109,   110,   111,   112,   113,   114,   115,   116,
+     117,   118,   119,   120,   121,   122,   123,   124,   125,   126,
+     127,   128,   129,   130,   131,   132,   133,   134,   135,   136,
+     137,   138,   139,   140,   141,   142,   143,   144,   145,   146,
+     147,   148,   149,   150,   151,   152,   153,   154,   155,   156,
+     157,   158,   159,   160,   161,   162,   163,   164,   165,   166,
+     167,   168,   169,   170,   171,   172,   173,   174,   175,   176,
+     177,   178,   179,   180,   181,   182,   183,   184,   185,   186,
+     187,   188,   189,   190,   191,   192,   193,   194,   195,   196,
+     197,   198,   199,   200,   201,   202,   203,   204,   205,   206,
+     207,   208,   209,   210,   211,   212,   213,   214,   215,   216,
+     217,   218,   219,   220,   221,   222,   223,   224,   225,   226,
+     227,   228,   229,   230,   231,   232,   233,   234,   235,   236,
+     237,   238,   239,   240,   241,   242,   243,   244,   245,   246,
+     247,   248,   249,   250,   251,   252,   253,   254,   255,   256,
+     257,   258,   259,   260,   261,   262,   263,   264,   265,   266,
+     267,   268,   269,   270,   271,   272,   273,   274,   275,   276,
+     277,   278,   279,   280,   281,   282,   283,   284,   285,   286,
+     287,   288,   289,   290,   291,   292,   293,   294,   295,   296,
+     297,   298,   299,   300,   301,   302,   303,   304,   305,   306,
+     307,   308,   309,   310,   311,   312,   313,   314,   315,   316,
+      -1,    -1,   319,   320,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,   338,   339,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   350,   351,   352,   353,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,   371,   372,   373,   374,   375,   376,
+      -1,    -1,    -1,    -1,   381,   382,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   404,   405,   406,
+     407,   408,   409,   410,   411,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   426,
        4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
       24,    25,    26,    27,    28,    29,    30,    31,    32,    33,
@@ -3259,66 +3675,29 @@
      264,   265,   266,   267,   268,   269,   270,   271,   272,   273,
      274,   275,   276,   277,   278,   279,   280,   281,   282,   283,
      284,   285,   286,   287,   288,   289,   290,   291,   292,   293,
-     294,    -1,    -1,   297,   298,    -1,    -1,    -1,    -1,    -1,
+     294,   295,   296,   297,   298,   299,   300,   301,   302,   303,
+     304,   305,   306,   307,   308,   309,   310,   311,   312,   313,
+     314,   315,   316,    -1,    -1,   319,   320,    -1,    -1,   413,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,   316,   317,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,   328,   329,   330,   331,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,   349,   350,   351,   352,   353,
-     354,    -1,    -1,    -1,    -1,   359,   360,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,   379,   380,   381,   382,   383,
-     384,   385,   386,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,   401,     4,     5,
-       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
-      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
-      26,    27,    28,    29,    30,    31,    32,    33,    34,    35,
-      36,    37,    38,    39,    40,    41,    42,    43,    44,    45,
-      46,    47,    48,    49,    50,    51,    52,    53,    54,    55,
-      56,    57,    58,    59,    60,    -1,    -1,    63,    64,    65,
-      66,    67,    68,    69,    70,    71,    72,    73,    74,    75,
-      76,    77,    78,    79,    80,    81,    82,    83,    84,    85,
-      86,    87,    88,    89,    90,    91,    92,    93,    94,    95,
-      96,    97,    98,    99,   100,   101,   102,   103,   104,   105,
-     106,   107,   108,   109,   110,   111,   112,   113,   114,   115,
-     116,   117,   118,   119,   120,   121,   122,   123,   124,   125,
-     126,   127,   128,   129,   130,   131,   132,   133,   134,   135,
-     136,   137,   138,   139,   140,   141,   142,   143,   144,   145,
-     146,   147,   148,   149,   150,   151,   152,   153,   154,   155,
-     156,   157,   158,   159,   160,   161,   162,   163,   164,   165,
-     166,   167,   168,   169,   170,   171,   172,   173,   174,   175,
-     176,   177,   178,   179,   180,   181,   182,   183,   184,   185,
-     186,   187,   188,   189,   190,   191,   192,   193,   194,   195,
-     196,   197,   198,   199,   200,   201,   202,   203,   204,   205,
-     206,   207,   208,   209,   210,   211,   212,   213,   214,   215,
-     216,   217,   218,   219,   220,   221,   222,   223,   224,   225,
-     226,   227,   228,   229,   230,   231,   232,   233,   234,   235,
-     236,   237,   238,   239,   240,   241,   242,   243,   244,   245,
-     246,   247,   248,   249,   250,   251,   252,   253,   254,   255,
-     256,   257,   258,   259,   260,   261,   262,   263,   264,   265,
-     266,   267,   268,   269,   270,   271,   272,   273,   274,   275,
-     276,   277,   278,   279,   280,   281,   282,   283,   284,   285,
-     286,   287,   288,   289,   290,   291,   292,   293,   294,   391,
-      -1,   297,   298,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,   405,    -1,    -1,    -1,    -1,    -1,    -1,
-     316,   317,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-     422,   423,   328,   329,   330,   331,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,   349,   350,   351,   352,   353,   354,    -1,
-      -1,    -1,   454,   359,   360,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,   465,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,   379,   380,   381,   382,   383,   384,   385,
-     386,    -1,   484,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,   401,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   427,   338,   339,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   350,   351,   352,   353,
+     444,   445,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   371,   372,   373,
+     374,   375,   376,    -1,    -1,    -1,    -1,   381,   382,    -1,
+      -1,    -1,   476,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   487,    -1,    -1,    -1,    -1,    -1,    -1,
+     404,   405,   406,   407,   408,   409,   410,   411,    -1,    -1,
+      -1,    -1,   506,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,   426,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   551,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,   564,   565,   566,   567,   568,   569,   570,   571,
-     572,   573,   574,   575,   576,   577,   578,   579,   580,   581,
-     582,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,   576,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,   589,   590,   591,   592,   593,
+     594,   595,   596,   597,   598,   599,   600,   601,   602,   603,
+     604,   605,   606,   607,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
@@ -3328,12 +3707,12 @@
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-     682
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   711
 };
 
   /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
      symbol of state STATE-NUM.  */
-static const yytype_uint16 yystos[] =
+static const yytype_int16 yystos[] =
 {
        0,     3,     4,     5,     6,     7,     8,     9,    10,    11,
       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
@@ -3364,120 +3743,125 @@
      262,   263,   264,   265,   266,   267,   268,   269,   270,   271,
      272,   273,   274,   275,   276,   277,   278,   279,   280,   281,
      282,   283,   284,   285,   286,   287,   288,   289,   290,   291,
-     292,   293,   294,   327,   341,   342,   343,   344,   345,   354,
-     355,   356,   357,   358,   359,   360,   373,   374,   375,   376,
-     377,   378,   387,   389,   390,   391,   392,   393,   394,   395,
-     396,   397,   398,   399,   400,   401,   402,   403,   404,   405,
-     406,   407,   408,   409,   410,   411,   412,   413,   414,   415,
-     416,   417,   418,   419,   451,   452,   455,   456,   457,   458,
-     462,   463,   464,   465,   466,   467,   470,   471,   472,   473,
-     474,   476,   481,   482,   483,   524,   525,   526,   482,   321,
-     353,   317,   317,   327,   353,   327,   527,   318,   324,   459,
-     460,   461,   471,   476,   324,   327,   353,   327,   353,   472,
-     476,   335,   478,   479,     0,   525,   476,   485,   321,   353,
-     374,   468,   469,   353,   475,   319,   327,   477,   321,   503,
-     460,   459,   461,   353,   353,   317,   326,   477,   321,   324,
-     327,   454,   297,   298,   316,   317,   328,   329,   330,   331,
-     349,   350,   351,   352,   353,   379,   380,   381,   382,   383,
-     384,   385,   386,   421,   422,   423,   425,   426,   427,   428,
-     429,   430,   431,   432,   433,   474,   476,   480,   477,   327,
-     471,   476,   486,   487,   484,   326,   318,   324,   318,   324,
-     320,   432,   434,   435,   436,   437,   438,   439,   440,   441,
-     442,   443,   444,   445,   319,   327,   319,   321,   322,   327,
-     361,   362,   363,   364,   366,   367,   368,   369,   370,   371,
-     372,   388,   432,   445,   447,   449,   451,   455,   474,   476,
-     492,   493,   494,   495,   496,   504,   505,   506,   507,   510,
-     511,   514,   515,   516,   523,   528,   477,   326,   477,   321,
-     447,   490,   326,   453,   353,   324,   327,   432,   432,   449,
-     297,   298,   319,   323,   318,   318,   324,   360,   447,   317,
-     432,   324,   336,   476,   353,   488,   489,   322,   487,   486,
-     445,   450,   469,   353,   332,   333,   334,   329,   331,   295,
-     296,   299,   300,   335,   336,   301,   302,   339,   338,   337,
-     303,   305,   304,   340,   320,   320,   445,   319,   322,   497,
-     317,   327,   327,   518,   317,   317,   327,   327,   449,   317,
-     449,   325,   327,   306,   307,   308,   309,   310,   311,   312,
-     313,   314,   315,   326,   448,   324,   327,   322,   493,   507,
-     511,   516,   490,   326,   490,   491,   490,   486,   353,   318,
-     424,   449,   353,   447,   432,   488,   477,   324,   327,   322,
-     432,   432,   432,   434,   434,   435,   435,   436,   436,   436,
-     436,   437,   437,   438,   439,   440,   441,   442,   443,   446,
-     320,   353,   529,   530,   504,   517,   493,   519,   449,   327,
-     449,   325,   447,   447,   490,   322,   324,   322,   320,   327,
-     489,   449,   317,   320,   324,   498,   449,   464,   471,   509,
-     361,   492,   505,   520,   318,   318,   322,   490,   325,   450,
-     320,   530,   322,   353,   318,   317,   509,   521,   522,   500,
-     501,   502,   508,   512,   447,   318,   326,   494,   499,   503,
-     449,   327,   318,   365,   496,   494,   321,   490,   318,   449,
-     499,   500,   504,   513,   327,   322
+     292,   293,   294,   295,   296,   297,   298,   299,   300,   301,
+     302,   303,   304,   305,   306,   307,   308,   309,   310,   311,
+     312,   313,   314,   315,   316,   349,   363,   364,   365,   366,
+     367,   376,   377,   378,   379,   380,   381,   382,   398,   399,
+     400,   401,   402,   403,   412,   414,   415,   416,   417,   418,
+     419,   420,   421,   422,   423,   424,   425,   426,   427,   428,
+     429,   430,   431,   432,   433,   434,   435,   436,   437,   438,
+     439,   440,   441,   442,   443,   444,   476,   477,   480,   481,
+     482,   483,   487,   488,   489,   490,   491,   492,   495,   496,
+     497,   498,   499,   501,   506,   507,   508,   549,   550,   551,
+     507,   343,   375,   339,   339,   349,   375,   349,   552,   340,
+     346,   484,   485,   486,   496,   501,   346,   349,   375,   349,
+     375,   497,   501,   357,   503,   504,     0,   550,   501,   510,
+     343,   375,   399,   493,   494,   375,   500,   341,   349,   502,
+     343,   528,   485,   484,   486,   375,   375,   339,   348,   502,
+     343,   346,   349,   479,   319,   320,   338,   339,   350,   351,
+     352,   353,   371,   372,   373,   374,   375,   404,   405,   406,
+     407,   408,   409,   410,   411,   446,   447,   448,   450,   451,
+     452,   453,   454,   455,   456,   457,   458,   499,   501,   505,
+     502,   349,   496,   501,   511,   512,   509,   348,   340,   346,
+     340,   346,   342,   457,   459,   460,   461,   462,   463,   464,
+     465,   466,   467,   468,   469,   470,   341,   349,   341,   343,
+     344,   349,   383,   384,   385,   386,   388,   389,   390,   391,
+     392,   393,   394,   395,   396,   397,   413,   457,   470,   472,
+     474,   476,   480,   499,   501,   517,   518,   519,   520,   521,
+     529,   530,   531,   532,   535,   536,   539,   540,   541,   548,
+     553,   502,   348,   502,   343,   472,   515,   348,   478,   375,
+     346,   349,   457,   457,   474,   319,   320,   341,   345,   340,
+     340,   346,   382,   472,   339,   457,   346,   358,   501,   375,
+     513,   514,   344,   512,   511,   470,   475,   494,   375,   354,
+     355,   356,   351,   353,   317,   318,   321,   322,   357,   358,
+     323,   324,   361,   360,   359,   325,   327,   326,   362,   342,
+     342,   470,   341,   344,   522,   339,   349,   349,   543,   339,
+     339,   349,   349,   474,   339,   474,   347,   349,   349,   349,
+     349,   328,   329,   330,   331,   332,   333,   334,   335,   336,
+     337,   348,   473,   346,   349,   344,   518,   532,   536,   541,
+     515,   348,   344,   515,   516,   515,   511,   375,   340,   449,
+     474,   375,   472,   457,   513,   502,   346,   349,   344,   457,
+     457,   457,   459,   459,   460,   460,   461,   461,   461,   461,
+     462,   462,   463,   464,   465,   466,   467,   468,   471,   342,
+     375,   554,   555,   529,   542,   518,   544,   474,   349,   474,
+     347,   472,   472,   515,   344,   346,   344,   342,   349,   514,
+     474,   339,   342,   346,   523,   474,   489,   496,   534,   383,
+     517,   530,   545,   340,   340,   344,   515,   347,   475,   342,
+     555,   344,   375,   340,   339,   534,   546,   547,   525,   526,
+     527,   533,   537,   472,   340,   348,   519,   524,   528,   474,
+     349,   340,   387,   521,   519,   343,   515,   340,   474,   524,
+     525,   529,   538,   349,   344
 };
 
   /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
-static const yytype_uint16 yyr1[] =
+static const yytype_int16 yyr1[] =
 {
-       0,   420,   421,   422,   422,   422,   422,   422,   422,   422,
-     422,   422,   422,   422,   422,   422,   422,   422,   423,   423,
-     423,   423,   423,   423,   424,   425,   426,   427,   427,   428,
-     428,   429,   429,   430,   431,   431,   431,   432,   432,   432,
-     432,   433,   433,   433,   433,   434,   434,   434,   434,   435,
-     435,   435,   436,   436,   436,   437,   437,   437,   437,   437,
-     438,   438,   438,   439,   439,   440,   440,   441,   441,   442,
-     442,   443,   443,   444,   444,   445,   446,   445,   447,   447,
-     448,   448,   448,   448,   448,   448,   448,   448,   448,   448,
-     448,   449,   449,   450,   451,   451,   451,   451,   451,   451,
-     451,   451,   451,   453,   452,   454,   454,   455,   456,   456,
-     457,   457,   458,   459,   459,   460,   460,   460,   460,   461,
-     462,   462,   462,   462,   462,   463,   463,   463,   463,   463,
-     464,   464,   465,   466,   466,   466,   466,   466,   466,   466,
-     466,   467,   468,   468,   469,   469,   469,   470,   471,   471,
-     472,   472,   472,   472,   472,   472,   472,   473,   473,   473,
+       0,   445,   446,   447,   447,   447,   447,   447,   447,   447,
+     447,   447,   447,   447,   447,   447,   447,   447,   448,   448,
+     448,   448,   448,   448,   449,   450,   451,   452,   452,   453,
+     453,   454,   454,   455,   456,   456,   456,   457,   457,   457,
+     457,   458,   458,   458,   458,   459,   459,   459,   459,   460,
+     460,   460,   461,   461,   461,   462,   462,   462,   462,   462,
+     463,   463,   463,   464,   464,   465,   465,   466,   466,   467,
+     467,   468,   468,   469,   469,   470,   471,   470,   472,   472,
      473,   473,   473,   473,   473,   473,   473,   473,   473,   473,
-     473,   473,   473,   473,   473,   473,   473,   473,   473,   473,
-     473,   473,   473,   473,   473,   473,   473,   473,   473,   473,
-     473,   473,   474,   475,   475,   476,   476,   477,   477,   477,
-     477,   478,   478,   479,   480,   480,   481,   481,   481,   481,
-     481,   481,   481,   481,   481,   481,   481,   481,   481,   481,
-     481,   481,   481,   481,   481,   481,   481,   481,   481,   481,
-     481,   481,   481,   481,   481,   481,   481,   481,   481,   481,
-     481,   481,   481,   481,   481,   481,   481,   481,   481,   481,
-     481,   481,   481,   481,   481,   481,   481,   481,   481,   481,
-     481,   481,   481,   481,   481,   481,   481,   481,   481,   481,
-     481,   481,   481,   481,   481,   481,   481,   481,   481,   481,
-     481,   481,   481,   481,   481,   481,   481,   481,   481,   481,
-     481,   481,   481,   481,   481,   481,   481,   481,   481,   481,
-     481,   481,   481,   481,   481,   481,   481,   481,   481,   481,
-     481,   481,   481,   481,   481,   481,   481,   481,   481,   481,
-     481,   481,   481,   481,   481,   481,   481,   481,   481,   481,
-     481,   481,   481,   481,   481,   481,   481,   481,   481,   481,
-     481,   481,   481,   481,   481,   481,   481,   481,   481,   481,
-     481,   481,   481,   481,   481,   481,   481,   481,   481,   481,
-     481,   481,   481,   481,   481,   481,   481,   481,   481,   481,
-     481,   481,   481,   481,   481,   481,   481,   481,   481,   481,
-     481,   481,   481,   481,   481,   481,   481,   481,   481,   481,
-     481,   481,   481,   481,   481,   481,   481,   481,   481,   481,
-     481,   481,   481,   481,   481,   481,   481,   481,   481,   481,
-     481,   481,   481,   481,   481,   481,   481,   481,   481,   481,
-     481,   481,   481,   481,   481,   481,   481,   481,   481,   481,
-     481,   481,   481,   481,   481,   481,   481,   481,   481,   481,
-     481,   481,   481,   481,   481,   481,   481,   481,   481,   481,
-     481,   481,   481,   481,   481,   481,   481,   481,   481,   481,
-     481,   481,   481,   481,   481,   481,   481,   481,   481,   481,
-     481,   481,   481,   481,   481,   481,   481,   481,   481,   481,
-     481,   481,   481,   481,   481,   481,   481,   481,   481,   481,
-     481,   481,   481,   481,   481,   481,   481,   481,   482,   482,
-     482,   484,   483,   485,   483,   486,   486,   487,   487,   488,
-     488,   489,   489,   490,   490,   490,   491,   491,   492,   493,
-     493,   494,   494,   494,   494,   494,   494,   494,   494,   495,
-     496,   497,   498,   496,   499,   499,   501,   500,   502,   500,
-     503,   503,   504,   504,   505,   505,   506,   506,   507,   508,
-     508,   509,   509,   510,   510,   512,   511,   513,   513,   514,
-     514,   515,   515,   517,   516,   518,   516,   519,   516,   520,
-     520,   521,   521,   522,   522,   523,   523,   523,   523,   523,
-     524,   524,   525,   525,   525,   527,   526,   528,   529,   529,
-     530,   530
+     473,   474,   474,   475,   476,   476,   476,   476,   476,   476,
+     476,   476,   476,   478,   477,   479,   479,   480,   481,   481,
+     482,   482,   483,   484,   484,   485,   485,   485,   485,   486,
+     487,   487,   487,   487,   487,   488,   488,   488,   488,   488,
+     489,   489,   490,   491,   491,   491,   491,   491,   491,   491,
+     491,   492,   493,   493,   494,   494,   494,   495,   496,   496,
+     497,   497,   497,   497,   497,   497,   497,   498,   498,   498,
+     498,   498,   498,   498,   498,   498,   498,   498,   498,   498,
+     498,   498,   498,   498,   498,   498,   498,   498,   498,   498,
+     498,   498,   498,   498,   498,   498,   498,   498,   498,   498,
+     498,   498,   499,   500,   500,   501,   501,   502,   502,   502,
+     502,   503,   503,   504,   505,   505,   506,   506,   506,   506,
+     506,   506,   506,   506,   506,   506,   506,   506,   506,   506,
+     506,   506,   506,   506,   506,   506,   506,   506,   506,   506,
+     506,   506,   506,   506,   506,   506,   506,   506,   506,   506,
+     506,   506,   506,   506,   506,   506,   506,   506,   506,   506,
+     506,   506,   506,   506,   506,   506,   506,   506,   506,   506,
+     506,   506,   506,   506,   506,   506,   506,   506,   506,   506,
+     506,   506,   506,   506,   506,   506,   506,   506,   506,   506,
+     506,   506,   506,   506,   506,   506,   506,   506,   506,   506,
+     506,   506,   506,   506,   506,   506,   506,   506,   506,   506,
+     506,   506,   506,   506,   506,   506,   506,   506,   506,   506,
+     506,   506,   506,   506,   506,   506,   506,   506,   506,   506,
+     506,   506,   506,   506,   506,   506,   506,   506,   506,   506,
+     506,   506,   506,   506,   506,   506,   506,   506,   506,   506,
+     506,   506,   506,   506,   506,   506,   506,   506,   506,   506,
+     506,   506,   506,   506,   506,   506,   506,   506,   506,   506,
+     506,   506,   506,   506,   506,   506,   506,   506,   506,   506,
+     506,   506,   506,   506,   506,   506,   506,   506,   506,   506,
+     506,   506,   506,   506,   506,   506,   506,   506,   506,   506,
+     506,   506,   506,   506,   506,   506,   506,   506,   506,   506,
+     506,   506,   506,   506,   506,   506,   506,   506,   506,   506,
+     506,   506,   506,   506,   506,   506,   506,   506,   506,   506,
+     506,   506,   506,   506,   506,   506,   506,   506,   506,   506,
+     506,   506,   506,   506,   506,   506,   506,   506,   506,   506,
+     506,   506,   506,   506,   506,   506,   506,   506,   506,   506,
+     506,   506,   506,   506,   506,   506,   506,   506,   506,   506,
+     506,   506,   506,   506,   506,   506,   506,   506,   506,   506,
+     506,   506,   506,   506,   506,   506,   506,   506,   506,   506,
+     506,   506,   506,   506,   506,   506,   506,   506,   506,   506,
+     506,   506,   506,   506,   506,   506,   506,   506,   506,   506,
+     506,   506,   506,   506,   506,   506,   506,   506,   506,   506,
+     506,   506,   506,   506,   506,   506,   506,   506,   506,   506,
+     507,   507,   507,   509,   508,   510,   508,   511,   511,   512,
+     512,   513,   513,   514,   514,   515,   515,   515,   515,   516,
+     516,   517,   518,   518,   519,   519,   519,   519,   519,   519,
+     519,   519,   520,   521,   522,   523,   521,   524,   524,   526,
+     525,   527,   525,   528,   528,   529,   529,   530,   530,   531,
+     531,   532,   533,   533,   534,   534,   535,   535,   537,   536,
+     538,   538,   539,   539,   540,   540,   542,   541,   543,   541,
+     544,   541,   545,   545,   546,   546,   547,   547,   548,   548,
+     548,   548,   548,   548,   548,   548,   549,   549,   550,   550,
+     550,   552,   551,   553,   554,   554,   555,   555
 };
 
   /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.  */
-static const yytype_uint8 yyr2[] =
+static const yytype_int8 yyr2[] =
 {
        0,     2,     1,     1,     3,     1,     1,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     4,
@@ -3529,23 +3913,25 @@
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     0,     6,     0,     5,     1,     2,     3,     4,     1,
-       3,     1,     2,     1,     3,     4,     1,     3,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     1,     2,
-       2,     0,     0,     5,     1,     1,     0,     2,     0,     2,
-       2,     3,     1,     2,     1,     2,     1,     2,     5,     3,
-       1,     1,     4,     1,     2,     0,     8,     0,     1,     3,
-       2,     1,     2,     0,     6,     0,     8,     0,     7,     1,
-       1,     1,     0,     2,     3,     2,     2,     2,     3,     2,
-       1,     2,     1,     1,     1,     0,     3,     5,     1,     3,
-       1,     4
+       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+       1,     1,     1,     0,     6,     0,     5,     1,     2,     3,
+       4,     1,     3,     1,     2,     1,     3,     4,     2,     1,
+       3,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+       1,     1,     2,     2,     0,     0,     5,     1,     1,     0,
+       2,     0,     2,     2,     3,     1,     2,     1,     2,     1,
+       2,     5,     3,     1,     1,     4,     1,     2,     0,     8,
+       0,     1,     3,     2,     1,     2,     0,     6,     0,     8,
+       0,     7,     1,     1,     1,     0,     2,     3,     2,     2,
+       2,     3,     2,     2,     2,     2,     1,     2,     1,     1,
+       1,     0,     3,     5,     1,     3,     1,     4
 };
 
 
+enum { YYENOMEM = -2 };
+
 #define yyerrok         (yyerrstatus = 0)
 #define yyclearin       (yychar = YYEMPTY)
-#define YYEMPTY         (-2)
-#define YYEOF           0
 
 #define YYACCEPT        goto yyacceptlab
 #define YYABORT         goto yyabortlab
@@ -3554,27 +3940,26 @@
 
 #define YYRECOVERING()  (!!yyerrstatus)
 
-#define YYBACKUP(Token, Value)                                  \
-do                                                              \
-  if (yychar == YYEMPTY)                                        \
-    {                                                           \
-      yychar = (Token);                                         \
-      yylval = (Value);                                         \
-      YYPOPSTACK (yylen);                                       \
-      yystate = *yyssp;                                         \
-      goto yybackup;                                            \
-    }                                                           \
-  else                                                          \
-    {                                                           \
-      yyerror (pParseContext, YY_("syntax error: cannot back up")); \
-      YYERROR;                                                  \
-    }                                                           \
-while (0)
+#define YYBACKUP(Token, Value)                                    \
+  do                                                              \
+    if (yychar == YYEMPTY)                                        \
+      {                                                           \
+        yychar = (Token);                                         \
+        yylval = (Value);                                         \
+        YYPOPSTACK (yylen);                                       \
+        yystate = *yyssp;                                         \
+        goto yybackup;                                            \
+      }                                                           \
+    else                                                          \
+      {                                                           \
+        yyerror (pParseContext, YY_("syntax error: cannot back up")); \
+        YYERROR;                                                  \
+      }                                                           \
+  while (0)
 
-/* Error token number */
-#define YYTERROR        1
-#define YYERRCODE       256
-
+/* Backward compatibility with an undocumented macro.
+   Use YYerror or YYUNDEF. */
+#define YYERRCODE YYUNDEF
 
 
 /* Enable debugging if requested.  */
@@ -3592,55 +3977,59 @@
 } while (0)
 
 /* This macro is provided for backward compatibility. */
-#ifndef YY_LOCATION_PRINT
-# define YY_LOCATION_PRINT(File, Loc) ((void) 0)
-#endif
+# ifndef YY_LOCATION_PRINT
+#  define YY_LOCATION_PRINT(File, Loc) ((void) 0)
+# endif
 
 
-# define YY_SYMBOL_PRINT(Title, Type, Value, Location)                    \
+# define YY_SYMBOL_PRINT(Title, Kind, Value, Location)                    \
 do {                                                                      \
   if (yydebug)                                                            \
     {                                                                     \
       YYFPRINTF (stderr, "%s ", Title);                                   \
       yy_symbol_print (stderr,                                            \
-                  Type, Value, pParseContext); \
+                  Kind, Value, pParseContext); \
       YYFPRINTF (stderr, "\n");                                           \
     }                                                                     \
 } while (0)
 
 
-/*----------------------------------------.
-| Print this symbol's value on YYOUTPUT.  |
-`----------------------------------------*/
+/*-----------------------------------.
+| Print this symbol's value on YYO.  |
+`-----------------------------------*/
 
 static void
-yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, glslang::TParseContext* pParseContext)
+yy_symbol_value_print (FILE *yyo,
+                       yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep, glslang::TParseContext* pParseContext)
 {
-  FILE *yyo = yyoutput;
-  YYUSE (yyo);
+  FILE *yyoutput = yyo;
+  YYUSE (yyoutput);
   YYUSE (pParseContext);
   if (!yyvaluep)
     return;
 # ifdef YYPRINT
-  if (yytype < YYNTOKENS)
-    YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
+  if (yykind < YYNTOKENS)
+    YYPRINT (yyo, yytoknum[yykind], *yyvaluep);
 # endif
-  YYUSE (yytype);
+  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
+  YYUSE (yykind);
+  YY_IGNORE_MAYBE_UNINITIALIZED_END
 }
 
 
-/*--------------------------------.
-| Print this symbol on YYOUTPUT.  |
-`--------------------------------*/
+/*---------------------------.
+| Print this symbol on YYO.  |
+`---------------------------*/
 
 static void
-yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, glslang::TParseContext* pParseContext)
+yy_symbol_print (FILE *yyo,
+                 yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep, glslang::TParseContext* pParseContext)
 {
-  YYFPRINTF (yyoutput, "%s %s (",
-             yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]);
+  YYFPRINTF (yyo, "%s %s (",
+             yykind < YYNTOKENS ? "token" : "nterm", yysymbol_name (yykind));
 
-  yy_symbol_value_print (yyoutput, yytype, yyvaluep, pParseContext);
-  YYFPRINTF (yyoutput, ")");
+  yy_symbol_value_print (yyo, yykind, yyvaluep, pParseContext);
+  YYFPRINTF (yyo, ")");
 }
 
 /*------------------------------------------------------------------.
@@ -3649,7 +4038,7 @@
 `------------------------------------------------------------------*/
 
 static void
-yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop)
+yy_stack_print (yy_state_t *yybottom, yy_state_t *yytop)
 {
   YYFPRINTF (stderr, "Stack now");
   for (; yybottom <= yytop; yybottom++)
@@ -3672,21 +4061,21 @@
 `------------------------------------------------*/
 
 static void
-yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule, glslang::TParseContext* pParseContext)
+yy_reduce_print (yy_state_t *yyssp, YYSTYPE *yyvsp,
+                 int yyrule, glslang::TParseContext* pParseContext)
 {
-  unsigned long int yylno = yyrline[yyrule];
+  int yylno = yyrline[yyrule];
   int yynrhs = yyr2[yyrule];
   int yyi;
-  YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
+  YYFPRINTF (stderr, "Reducing stack by rule %d (line %d):\n",
              yyrule - 1, yylno);
   /* The symbols being reduced.  */
   for (yyi = 0; yyi < yynrhs; yyi++)
     {
       YYFPRINTF (stderr, "   $%d = ", yyi + 1);
       yy_symbol_print (stderr,
-                       yystos[yyssp[yyi + 1 - yynrhs]],
-                       &(yyvsp[(yyi + 1) - (yynrhs)])
-                                              , pParseContext);
+                       YY_ACCESSING_SYMBOL (+yyssp[yyi + 1 - yynrhs]),
+                       &yyvsp[(yyi + 1) - (yynrhs)], pParseContext);
       YYFPRINTF (stderr, "\n");
     }
 }
@@ -3701,8 +4090,8 @@
    multiple parsers can coexist.  */
 int yydebug;
 #else /* !YYDEBUG */
-# define YYDPRINTF(Args)
-# define YY_SYMBOL_PRINT(Title, Type, Value, Location)
+# define YYDPRINTF(Args) ((void) 0)
+# define YY_SYMBOL_PRINT(Title, Kind, Value, Location)
 # define YY_STACK_PRINT(Bottom, Top)
 # define YY_REDUCE_PRINT(Rule)
 #endif /* !YYDEBUG */
@@ -3725,28 +4114,76 @@
 #endif
 
 
-#if YYERROR_VERBOSE
+/* Context of a parse error.  */
+typedef struct
+{
+  yy_state_t *yyssp;
+  yysymbol_kind_t yytoken;
+} yypcontext_t;
 
-# ifndef yystrlen
-#  if defined __GLIBC__ && defined _STRING_H
-#   define yystrlen strlen
-#  else
+/* Put in YYARG at most YYARGN of the expected tokens given the
+   current YYCTX, and return the number of tokens stored in YYARG.  If
+   YYARG is null, return the number of expected tokens (guaranteed to
+   be less than YYNTOKENS).  Return YYENOMEM on memory exhaustion.
+   Return 0 if there are more than YYARGN expected tokens, yet fill
+   YYARG up to YYARGN. */
+static int
+yypcontext_expected_tokens (const yypcontext_t *yyctx,
+                            yysymbol_kind_t yyarg[], int yyargn)
+{
+  /* Actual size of YYARG. */
+  int yycount = 0;
+  int yyn = yypact[+*yyctx->yyssp];
+  if (!yypact_value_is_default (yyn))
+    {
+      /* Start YYX at -YYN if negative to avoid negative indexes in
+         YYCHECK.  In other words, skip the first -YYN actions for
+         this state because they are default actions.  */
+      int yyxbegin = yyn < 0 ? -yyn : 0;
+      /* Stay within bounds of both yycheck and yytname.  */
+      int yychecklim = YYLAST - yyn + 1;
+      int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
+      int yyx;
+      for (yyx = yyxbegin; yyx < yyxend; ++yyx)
+        if (yycheck[yyx + yyn] == yyx && yyx != YYSYMBOL_YYerror
+            && !yytable_value_is_error (yytable[yyx + yyn]))
+          {
+            if (!yyarg)
+              ++yycount;
+            else if (yycount == yyargn)
+              return 0;
+            else
+              yyarg[yycount++] = YY_CAST (yysymbol_kind_t, yyx);
+          }
+    }
+  if (yyarg && yycount == 0 && 0 < yyargn)
+    yyarg[0] = YYSYMBOL_YYEMPTY;
+  return yycount;
+}
+
+
+
+
+#ifndef yystrlen
+# if defined __GLIBC__ && defined _STRING_H
+#  define yystrlen(S) (YY_CAST (YYPTRDIFF_T, strlen (S)))
+# else
 /* Return the length of YYSTR.  */
-static YYSIZE_T
+static YYPTRDIFF_T
 yystrlen (const char *yystr)
 {
-  YYSIZE_T yylen;
+  YYPTRDIFF_T yylen;
   for (yylen = 0; yystr[yylen]; yylen++)
     continue;
   return yylen;
 }
-#  endif
 # endif
+#endif
 
-# ifndef yystpcpy
-#  if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
-#   define yystpcpy stpcpy
-#  else
+#ifndef yystpcpy
+# if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
+#  define yystpcpy stpcpy
+# else
 /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
    YYDEST.  */
 static char *
@@ -3760,10 +4197,10 @@
 
   return yyd - 1;
 }
-#  endif
 # endif
+#endif
 
-# ifndef yytnamerr
+#ifndef yytnamerr
 /* Copy to YYRES the contents of YYSTR after stripping away unnecessary
    quotes and backslashes, so that it's suitable for yyerror.  The
    heuristic is that double-quoting is unnecessary unless the string
@@ -3771,14 +4208,13 @@
    backslash-backslash).  YYSTR is taken from yytname.  If YYRES is
    null, do not copy; instead, return the length of what the result
    would have been.  */
-static YYSIZE_T
+static YYPTRDIFF_T
 yytnamerr (char *yyres, const char *yystr)
 {
   if (*yystr == '"')
     {
-      YYSIZE_T yyn = 0;
+      YYPTRDIFF_T yyn = 0;
       char const *yyp = yystr;
-
       for (;;)
         switch (*++yyp)
           {
@@ -3789,7 +4225,10 @@
           case '\\':
             if (*++yyp != '\\')
               goto do_not_strip_quotes;
-            /* Fall through.  */
+            else
+              goto append;
+
+          append:
           default:
             if (yyres)
               yyres[yyn] = *yyp;
@@ -3804,36 +4243,20 @@
     do_not_strip_quotes: ;
     }
 
-  if (! yyres)
+  if (yyres)
+    return yystpcpy (yyres, yystr) - yyres;
+  else
     return yystrlen (yystr);
-
-  return yystpcpy (yyres, yystr) - yyres;
 }
-# endif
+#endif
 
-/* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message
-   about the unexpected token YYTOKEN for the state stack whose top is
-   YYSSP.
 
-   Return 0 if *YYMSG was successfully written.  Return 1 if *YYMSG is
-   not large enough to hold the message.  In that case, also set
-   *YYMSG_ALLOC to the required number of bytes.  Return 2 if the
-   required number of bytes is too large to store.  */
 static int
-yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
-                yytype_int16 *yyssp, int yytoken)
+yy_syntax_error_arguments (const yypcontext_t *yyctx,
+                           yysymbol_kind_t yyarg[], int yyargn)
 {
-  YYSIZE_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]);
-  YYSIZE_T yysize = yysize0;
-  enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
-  /* Internationalized format string. */
-  const char *yyformat = YY_NULLPTR;
-  /* Arguments of yyformat. */
-  char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
-  /* Number of reported tokens (one for the "unexpected", one per
-     "expected"). */
+  /* Actual size of YYARG. */
   int yycount = 0;
-
   /* There are many possibilities here to consider:
      - If this state is a consistent state with a default action, then
        the only way this function was invoked is if the default action
@@ -3857,63 +4280,78 @@
        one exception: it will still contain any token that will not be
        accepted due to an error action in a later state.
   */
-  if (yytoken != YYEMPTY)
+  if (yyctx->yytoken != YYSYMBOL_YYEMPTY)
     {
-      int yyn = yypact[*yyssp];
-      yyarg[yycount++] = yytname[yytoken];
-      if (!yypact_value_is_default (yyn))
-        {
-          /* Start YYX at -YYN if negative to avoid negative indexes in
-             YYCHECK.  In other words, skip the first -YYN actions for
-             this state because they are default actions.  */
-          int yyxbegin = yyn < 0 ? -yyn : 0;
-          /* Stay within bounds of both yycheck and yytname.  */
-          int yychecklim = YYLAST - yyn + 1;
-          int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
-          int yyx;
-
-          for (yyx = yyxbegin; yyx < yyxend; ++yyx)
-            if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR
-                && !yytable_value_is_error (yytable[yyx + yyn]))
-              {
-                if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
-                  {
-                    yycount = 1;
-                    yysize = yysize0;
-                    break;
-                  }
-                yyarg[yycount++] = yytname[yyx];
-                {
-                  YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]);
-                  if (! (yysize <= yysize1
-                         && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
-                    return 2;
-                  yysize = yysize1;
-                }
-              }
-        }
+      int yyn;
+      if (yyarg)
+        yyarg[yycount] = yyctx->yytoken;
+      ++yycount;
+      yyn = yypcontext_expected_tokens (yyctx,
+                                        yyarg ? yyarg + 1 : yyarg, yyargn - 1);
+      if (yyn == YYENOMEM)
+        return YYENOMEM;
+      else
+        yycount += yyn;
     }
+  return yycount;
+}
+
+/* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message
+   about the unexpected token YYTOKEN for the state stack whose top is
+   YYSSP.
+
+   Return 0 if *YYMSG was successfully written.  Return -1 if *YYMSG is
+   not large enough to hold the message.  In that case, also set
+   *YYMSG_ALLOC to the required number of bytes.  Return YYENOMEM if the
+   required number of bytes is too large to store.  */
+static int
+yysyntax_error (YYPTRDIFF_T *yymsg_alloc, char **yymsg,
+                const yypcontext_t *yyctx)
+{
+  enum { YYARGS_MAX = 5 };
+  /* Internationalized format string. */
+  const char *yyformat = YY_NULLPTR;
+  /* Arguments of yyformat: reported tokens (one for the "unexpected",
+     one per "expected"). */
+  yysymbol_kind_t yyarg[YYARGS_MAX];
+  /* Cumulated lengths of YYARG.  */
+  YYPTRDIFF_T yysize = 0;
+
+  /* Actual size of YYARG. */
+  int yycount = yy_syntax_error_arguments (yyctx, yyarg, YYARGS_MAX);
+  if (yycount == YYENOMEM)
+    return YYENOMEM;
 
   switch (yycount)
     {
-# define YYCASE_(N, S)                      \
+#define YYCASE_(N, S)                       \
       case N:                               \
         yyformat = S;                       \
-      break
+        break
+    default: /* Avoid compiler warnings. */
       YYCASE_(0, YY_("syntax error"));
       YYCASE_(1, YY_("syntax error, unexpected %s"));
       YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s"));
       YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s"));
       YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s"));
       YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"));
-# undef YYCASE_
+#undef YYCASE_
     }
 
+  /* Compute error message size.  Don't count the "%s"s, but reserve
+     room for the terminator.  */
+  yysize = yystrlen (yyformat) - 2 * yycount + 1;
   {
-    YYSIZE_T yysize1 = yysize + yystrlen (yyformat);
-    if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
-      return 2;
-    yysize = yysize1;
+    int yyi;
+    for (yyi = 0; yyi < yycount; ++yyi)
+      {
+        YYPTRDIFF_T yysize1
+          = yysize + yytnamerr (YY_NULLPTR, yytname[yyarg[yyi]]);
+        if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)
+          yysize = yysize1;
+        else
+          return YYENOMEM;
+      }
   }
 
   if (*yymsg_alloc < yysize)
@@ -3922,7 +4360,7 @@
       if (! (yysize <= *yymsg_alloc
              && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM))
         *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM;
-      return 1;
+      return -1;
     }
 
   /* Avoid sprintf, as that infringes on the user's name space.
@@ -3934,40 +4372,43 @@
     while ((*yyp = *yyformat) != '\0')
       if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount)
         {
-          yyp += yytnamerr (yyp, yyarg[yyi++]);
+          yyp += yytnamerr (yyp, yytname[yyarg[yyi++]]);
           yyformat += 2;
         }
       else
         {
-          yyp++;
-          yyformat++;
+          ++yyp;
+          ++yyformat;
         }
   }
   return 0;
 }
-#endif /* YYERROR_VERBOSE */
+
 
 /*-----------------------------------------------.
 | Release the memory associated to this symbol.  |
 `-----------------------------------------------*/
 
 static void
-yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, glslang::TParseContext* pParseContext)
+yydestruct (const char *yymsg,
+            yysymbol_kind_t yykind, YYSTYPE *yyvaluep, glslang::TParseContext* pParseContext)
 {
   YYUSE (yyvaluep);
   YYUSE (pParseContext);
   if (!yymsg)
     yymsg = "Deleting";
-  YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
+  YY_SYMBOL_PRINT (yymsg, yykind, yyvaluep, yylocationp);
 
   YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
-  YYUSE (yytype);
+  YYUSE (yykind);
   YY_IGNORE_MAYBE_UNINITIALIZED_END
 }
 
 
 
 
+
+
 /*----------.
 | yyparse.  |
 `----------*/
@@ -3975,7 +4416,7 @@
 int
 yyparse (glslang::TParseContext* pParseContext)
 {
-/* The lookahead symbol.  */
+/* Lookahead token kind.  */
 int yychar;
 
 
@@ -3986,45 +4427,41 @@
 YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default);
 
     /* Number of syntax errors so far.  */
-    int yynerrs;
+    int yynerrs = 0;
 
-    int yystate;
+    yy_state_fast_t yystate = 0;
     /* Number of tokens to shift before error messages enabled.  */
-    int yyerrstatus;
+    int yyerrstatus = 0;
 
-    /* The stacks and their tools:
-       'yyss': related to states.
-       'yyvs': related to semantic values.
-
-       Refer to the stacks through separate pointers, to allow yyoverflow
+    /* Refer to the stacks through separate pointers, to allow yyoverflow
        to reallocate them elsewhere.  */
 
-    /* The state stack.  */
-    yytype_int16 yyssa[YYINITDEPTH];
-    yytype_int16 *yyss;
-    yytype_int16 *yyssp;
+    /* Their size.  */
+    YYPTRDIFF_T yystacksize = YYINITDEPTH;
 
-    /* The semantic value stack.  */
+    /* The state stack: array, bottom, top.  */
+    yy_state_t yyssa[YYINITDEPTH];
+    yy_state_t *yyss = yyssa;
+    yy_state_t *yyssp = yyss;
+
+    /* The semantic value stack: array, bottom, top.  */
     YYSTYPE yyvsa[YYINITDEPTH];
-    YYSTYPE *yyvs;
-    YYSTYPE *yyvsp;
-
-    YYSIZE_T yystacksize;
+    YYSTYPE *yyvs = yyvsa;
+    YYSTYPE *yyvsp = yyvs;
 
   int yyn;
+  /* The return value of yyparse.  */
   int yyresult;
-  /* Lookahead token as an internal (translated) token number.  */
-  int yytoken = 0;
+  /* Lookahead symbol kind.  */
+  yysymbol_kind_t yytoken = YYSYMBOL_YYEMPTY;
   /* The variables used to return semantic value and location from the
      action routines.  */
   YYSTYPE yyval;
 
-#if YYERROR_VERBOSE
   /* Buffer for error messages, and its allocated size.  */
   char yymsgbuf[128];
   char *yymsg = yymsgbuf;
-  YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
-#endif
+  YYPTRDIFF_T yymsg_alloc = sizeof yymsgbuf;
 
 #define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N))
 
@@ -4032,58 +4469,60 @@
      Keep to zero when no symbol should be popped.  */
   int yylen = 0;
 
-  yyssp = yyss = yyssa;
-  yyvsp = yyvs = yyvsa;
-  yystacksize = YYINITDEPTH;
-
   YYDPRINTF ((stderr, "Starting parse\n"));
 
-  yystate = 0;
-  yyerrstatus = 0;
-  yynerrs = 0;
   yychar = YYEMPTY; /* Cause a token to be read.  */
   goto yysetstate;
 
+
 /*------------------------------------------------------------.
-| yynewstate -- Push a new state, which is found in yystate.  |
+| yynewstate -- push a new state, which is found in yystate.  |
 `------------------------------------------------------------*/
- yynewstate:
+yynewstate:
   /* In all cases, when you get here, the value and location stacks
      have just been pushed.  So pushing a state here evens the stacks.  */
   yyssp++;
 
- yysetstate:
-  *yyssp = yystate;
+
+/*--------------------------------------------------------------------.
+| yysetstate -- set current state (the top of the stack) to yystate.  |
+`--------------------------------------------------------------------*/
+yysetstate:
+  YYDPRINTF ((stderr, "Entering state %d\n", yystate));
+  YY_ASSERT (0 <= yystate && yystate < YYNSTATES);
+  YY_IGNORE_USELESS_CAST_BEGIN
+  *yyssp = YY_CAST (yy_state_t, yystate);
+  YY_IGNORE_USELESS_CAST_END
+  YY_STACK_PRINT (yyss, yyssp);
 
   if (yyss + yystacksize - 1 <= yyssp)
+#if !defined yyoverflow && !defined YYSTACK_RELOCATE
+    goto yyexhaustedlab;
+#else
     {
       /* Get the current used size of the three stacks, in elements.  */
-      YYSIZE_T yysize = yyssp - yyss + 1;
+      YYPTRDIFF_T yysize = yyssp - yyss + 1;
 
-#ifdef yyoverflow
+# if defined yyoverflow
       {
         /* Give user a chance to reallocate the stack.  Use copies of
            these so that the &'s don't force the real ones into
            memory.  */
+        yy_state_t *yyss1 = yyss;
         YYSTYPE *yyvs1 = yyvs;
-        yytype_int16 *yyss1 = yyss;
 
         /* Each stack pointer address is followed by the size of the
            data in use in that stack, in bytes.  This used to be a
            conditional around just the two extra args, but that might
            be undefined if yyoverflow is a macro.  */
         yyoverflow (YY_("memory exhausted"),
-                    &yyss1, yysize * sizeof (*yyssp),
-                    &yyvs1, yysize * sizeof (*yyvsp),
+                    &yyss1, yysize * YYSIZEOF (*yyssp),
+                    &yyvs1, yysize * YYSIZEOF (*yyvsp),
                     &yystacksize);
-
         yyss = yyss1;
         yyvs = yyvs1;
       }
-#else /* no yyoverflow */
-# ifndef YYSTACK_RELOCATE
-      goto yyexhaustedlab;
-# else
+# else /* defined YYSTACK_RELOCATE */
       /* Extend the stack our own way.  */
       if (YYMAXDEPTH <= yystacksize)
         goto yyexhaustedlab;
@@ -4092,9 +4531,10 @@
         yystacksize = YYMAXDEPTH;
 
       {
-        yytype_int16 *yyss1 = yyss;
+        yy_state_t *yyss1 = yyss;
         union yyalloc *yyptr =
-          (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
+          YY_CAST (union yyalloc *,
+                   YYSTACK_ALLOC (YY_CAST (YYSIZE_T, YYSTACK_BYTES (yystacksize))));
         if (! yyptr)
           goto yyexhaustedlab;
         YYSTACK_RELOCATE (yyss_alloc, yyss);
@@ -4104,30 +4544,30 @@
           YYSTACK_FREE (yyss1);
       }
 # endif
-#endif /* no yyoverflow */
 
       yyssp = yyss + yysize - 1;
       yyvsp = yyvs + yysize - 1;
 
-      YYDPRINTF ((stderr, "Stack size increased to %lu\n",
-                  (unsigned long int) yystacksize));
+      YY_IGNORE_USELESS_CAST_BEGIN
+      YYDPRINTF ((stderr, "Stack size increased to %ld\n",
+                  YY_CAST (long, yystacksize)));
+      YY_IGNORE_USELESS_CAST_END
 
       if (yyss + yystacksize - 1 <= yyssp)
         YYABORT;
     }
-
-  YYDPRINTF ((stderr, "Entering state %d\n", yystate));
+#endif /* !defined yyoverflow && !defined YYSTACK_RELOCATE */
 
   if (yystate == YYFINAL)
     YYACCEPT;
 
   goto yybackup;
 
+
 /*-----------.
 | yybackup.  |
 `-----------*/
 yybackup:
-
   /* Do appropriate processing given the current state.  Read a
      lookahead token if we need one and don't already have one.  */
 
@@ -4138,18 +4578,29 @@
 
   /* Not known => get a lookahead token if don't already have one.  */
 
-  /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol.  */
+  /* YYCHAR is either empty, or end-of-input, or a valid lookahead.  */
   if (yychar == YYEMPTY)
     {
-      YYDPRINTF ((stderr, "Reading a token: "));
+      YYDPRINTF ((stderr, "Reading a token\n"));
       yychar = yylex (&yylval, parseContext);
     }
 
   if (yychar <= YYEOF)
     {
-      yychar = yytoken = YYEOF;
+      yychar = YYEOF;
+      yytoken = YYSYMBOL_YYEOF;
       YYDPRINTF ((stderr, "Now at end of input.\n"));
     }
+  else if (yychar == YYerror)
+    {
+      /* The scanner already issued an error message, process directly
+         to error recovery.  But do not keep the error token as
+         lookahead, it is too special and may lead us to an endless
+         loop in error recovery. */
+      yychar = YYUNDEF;
+      yytoken = YYSYMBOL_YYerror;
+      goto yyerrlab1;
+    }
   else
     {
       yytoken = YYTRANSLATE (yychar);
@@ -4177,15 +4628,13 @@
 
   /* Shift the lookahead token.  */
   YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
-
-  /* Discard the shifted token.  */
-  yychar = YYEMPTY;
-
   yystate = yyn;
   YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
   *++yyvsp = yylval;
   YY_IGNORE_MAYBE_UNINITIALIZED_END
 
+  /* Discard the shifted token.  */
+  yychar = YYEMPTY;
   goto yynewstate;
 
 
@@ -4200,7 +4649,7 @@
 
 
 /*-----------------------------.
-| yyreduce -- Do a reduction.  |
+| yyreduce -- do a reduction.  |
 `-----------------------------*/
 yyreduce:
   /* yyn is the number of a rule to reduce with.  */
@@ -4220,304 +4669,304 @@
   YY_REDUCE_PRINT (yyn);
   switch (yyn)
     {
-        case 2:
-#line 357 "glslang.y" /* yacc.c:1646  */
-    {
+  case 2: /* variable_identifier: IDENTIFIER  */
+#line 371 "MachineIndependent/glslang.y"
+                 {
         (yyval.interm.intermTypedNode) = parseContext.handleVariable((yyvsp[0].lex).loc, (yyvsp[0].lex).symbol, (yyvsp[0].lex).string);
     }
-#line 4229 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 4678 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 3:
-#line 363 "glslang.y" /* yacc.c:1646  */
-    {
+  case 3: /* primary_expression: variable_identifier  */
+#line 377 "MachineIndependent/glslang.y"
+                          {
         (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
     }
-#line 4237 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 4686 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 4:
-#line 366 "glslang.y" /* yacc.c:1646  */
-    {
+  case 4: /* primary_expression: LEFT_PAREN expression RIGHT_PAREN  */
+#line 380 "MachineIndependent/glslang.y"
+                                        {
         (yyval.interm.intermTypedNode) = (yyvsp[-1].interm.intermTypedNode);
         if ((yyval.interm.intermTypedNode)->getAsConstantUnion())
             (yyval.interm.intermTypedNode)->getAsConstantUnion()->setExpression();
     }
-#line 4247 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 4696 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 5:
-#line 371 "glslang.y" /* yacc.c:1646  */
-    {
+  case 5: /* primary_expression: FLOATCONSTANT  */
+#line 385 "MachineIndependent/glslang.y"
+                    {
         (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtFloat, (yyvsp[0].lex).loc, true);
     }
-#line 4255 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 4704 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 6:
-#line 374 "glslang.y" /* yacc.c:1646  */
-    {
+  case 6: /* primary_expression: INTCONSTANT  */
+#line 388 "MachineIndependent/glslang.y"
+                  {
         (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true);
     }
-#line 4263 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 4712 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 7:
-#line 377 "glslang.y" /* yacc.c:1646  */
-    {
+  case 7: /* primary_expression: UINTCONSTANT  */
+#line 391 "MachineIndependent/glslang.y"
+                   {
         parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned literal");
         (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u, (yyvsp[0].lex).loc, true);
     }
-#line 4272 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 4721 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 8:
-#line 381 "glslang.y" /* yacc.c:1646  */
-    {
+  case 8: /* primary_expression: BOOLCONSTANT  */
+#line 395 "MachineIndependent/glslang.y"
+                   {
         (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).b, (yyvsp[0].lex).loc, true);
     }
-#line 4280 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 4729 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 9:
-#line 385 "glslang.y" /* yacc.c:1646  */
-    {
+  case 9: /* primary_expression: STRING_LITERAL  */
+#line 399 "MachineIndependent/glslang.y"
+                     {
         (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).string, (yyvsp[0].lex).loc, true);
     }
-#line 4288 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 4737 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 10:
-#line 388 "glslang.y" /* yacc.c:1646  */
-    {
+  case 10: /* primary_expression: INT32CONSTANT  */
+#line 402 "MachineIndependent/glslang.y"
+                    {
         parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed literal");
         (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true);
     }
-#line 4297 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 4746 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 11:
-#line 392 "glslang.y" /* yacc.c:1646  */
-    {
+  case 11: /* primary_expression: UINT32CONSTANT  */
+#line 406 "MachineIndependent/glslang.y"
+                     {
         parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed literal");
         (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u, (yyvsp[0].lex).loc, true);
     }
-#line 4306 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 4755 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 12:
-#line 396 "glslang.y" /* yacc.c:1646  */
-    {
+  case 12: /* primary_expression: INT64CONSTANT  */
+#line 410 "MachineIndependent/glslang.y"
+                    {
         parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer literal");
         (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i64, (yyvsp[0].lex).loc, true);
     }
-#line 4315 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 4764 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 13:
-#line 400 "glslang.y" /* yacc.c:1646  */
-    {
+  case 13: /* primary_expression: UINT64CONSTANT  */
+#line 414 "MachineIndependent/glslang.y"
+                     {
         parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer literal");
         (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u64, (yyvsp[0].lex).loc, true);
     }
-#line 4324 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 4773 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 14:
-#line 404 "glslang.y" /* yacc.c:1646  */
-    {
+  case 14: /* primary_expression: INT16CONSTANT  */
+#line 418 "MachineIndependent/glslang.y"
+                    {
         parseContext.explicitInt16Check((yyvsp[0].lex).loc, "16-bit integer literal");
         (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((short)(yyvsp[0].lex).i, (yyvsp[0].lex).loc, true);
     }
-#line 4333 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 4782 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 15:
-#line 408 "glslang.y" /* yacc.c:1646  */
-    {
+  case 15: /* primary_expression: UINT16CONSTANT  */
+#line 422 "MachineIndependent/glslang.y"
+                     {
         parseContext.explicitInt16Check((yyvsp[0].lex).loc, "16-bit unsigned integer literal");
         (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((unsigned short)(yyvsp[0].lex).u, (yyvsp[0].lex).loc, true);
     }
-#line 4342 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 4791 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 16:
-#line 412 "glslang.y" /* yacc.c:1646  */
-    {
+  case 16: /* primary_expression: DOUBLECONSTANT  */
+#line 426 "MachineIndependent/glslang.y"
+                     {
         parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double literal");
         if (! parseContext.symbolTable.atBuiltInLevel())
             parseContext.doubleCheck((yyvsp[0].lex).loc, "double literal");
         (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtDouble, (yyvsp[0].lex).loc, true);
     }
-#line 4353 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 4802 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 17:
-#line 418 "glslang.y" /* yacc.c:1646  */
-    {
+  case 17: /* primary_expression: FLOAT16CONSTANT  */
+#line 432 "MachineIndependent/glslang.y"
+                      {
         parseContext.float16Check((yyvsp[0].lex).loc, "half float literal");
         (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtFloat16, (yyvsp[0].lex).loc, true);
     }
-#line 4362 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 4811 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 18:
-#line 426 "glslang.y" /* yacc.c:1646  */
-    {
+  case 18: /* postfix_expression: primary_expression  */
+#line 440 "MachineIndependent/glslang.y"
+                         {
         (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
     }
-#line 4370 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 4819 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 19:
-#line 429 "glslang.y" /* yacc.c:1646  */
-    {
+  case 19: /* postfix_expression: postfix_expression LEFT_BRACKET integer_expression RIGHT_BRACKET  */
+#line 443 "MachineIndependent/glslang.y"
+                                                                       {
         (yyval.interm.intermTypedNode) = parseContext.handleBracketDereference((yyvsp[-2].lex).loc, (yyvsp[-3].interm.intermTypedNode), (yyvsp[-1].interm.intermTypedNode));
     }
-#line 4378 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 4827 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 20:
-#line 432 "glslang.y" /* yacc.c:1646  */
-    {
+  case 20: /* postfix_expression: function_call  */
+#line 446 "MachineIndependent/glslang.y"
+                    {
         (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
     }
-#line 4386 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 4835 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 21:
-#line 435 "glslang.y" /* yacc.c:1646  */
-    {
+  case 21: /* postfix_expression: postfix_expression DOT IDENTIFIER  */
+#line 449 "MachineIndependent/glslang.y"
+                                        {
         (yyval.interm.intermTypedNode) = parseContext.handleDotDereference((yyvsp[0].lex).loc, (yyvsp[-2].interm.intermTypedNode), *(yyvsp[0].lex).string);
     }
-#line 4394 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 4843 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 22:
-#line 438 "glslang.y" /* yacc.c:1646  */
-    {
+  case 22: /* postfix_expression: postfix_expression INC_OP  */
+#line 452 "MachineIndependent/glslang.y"
+                                {
         parseContext.variableCheck((yyvsp[-1].interm.intermTypedNode));
         parseContext.lValueErrorCheck((yyvsp[0].lex).loc, "++", (yyvsp[-1].interm.intermTypedNode));
         (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[0].lex).loc, "++", EOpPostIncrement, (yyvsp[-1].interm.intermTypedNode));
     }
-#line 4404 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 4853 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 23:
-#line 443 "glslang.y" /* yacc.c:1646  */
-    {
+  case 23: /* postfix_expression: postfix_expression DEC_OP  */
+#line 457 "MachineIndependent/glslang.y"
+                                {
         parseContext.variableCheck((yyvsp[-1].interm.intermTypedNode));
         parseContext.lValueErrorCheck((yyvsp[0].lex).loc, "--", (yyvsp[-1].interm.intermTypedNode));
         (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[0].lex).loc, "--", EOpPostDecrement, (yyvsp[-1].interm.intermTypedNode));
     }
-#line 4414 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 4863 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 24:
-#line 451 "glslang.y" /* yacc.c:1646  */
-    {
+  case 24: /* integer_expression: expression  */
+#line 465 "MachineIndependent/glslang.y"
+                 {
         parseContext.integerCheck((yyvsp[0].interm.intermTypedNode), "[]");
         (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
     }
-#line 4423 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 4872 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 25:
-#line 458 "glslang.y" /* yacc.c:1646  */
-    {
+  case 25: /* function_call: function_call_or_method  */
+#line 472 "MachineIndependent/glslang.y"
+                              {
         (yyval.interm.intermTypedNode) = parseContext.handleFunctionCall((yyvsp[0].interm).loc, (yyvsp[0].interm).function, (yyvsp[0].interm).intermNode);
         delete (yyvsp[0].interm).function;
     }
-#line 4432 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 4881 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 26:
-#line 465 "glslang.y" /* yacc.c:1646  */
-    {
+  case 26: /* function_call_or_method: function_call_generic  */
+#line 479 "MachineIndependent/glslang.y"
+                            {
         (yyval.interm) = (yyvsp[0].interm);
     }
-#line 4440 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 4889 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 27:
-#line 471 "glslang.y" /* yacc.c:1646  */
-    {
+  case 27: /* function_call_generic: function_call_header_with_parameters RIGHT_PAREN  */
+#line 485 "MachineIndependent/glslang.y"
+                                                       {
         (yyval.interm) = (yyvsp[-1].interm);
         (yyval.interm).loc = (yyvsp[0].lex).loc;
     }
-#line 4449 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 4898 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 28:
-#line 475 "glslang.y" /* yacc.c:1646  */
-    {
+  case 28: /* function_call_generic: function_call_header_no_parameters RIGHT_PAREN  */
+#line 489 "MachineIndependent/glslang.y"
+                                                     {
         (yyval.interm) = (yyvsp[-1].interm);
         (yyval.interm).loc = (yyvsp[0].lex).loc;
     }
-#line 4458 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 4907 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 29:
-#line 482 "glslang.y" /* yacc.c:1646  */
-    {
+  case 29: /* function_call_header_no_parameters: function_call_header VOID  */
+#line 496 "MachineIndependent/glslang.y"
+                                {
         (yyval.interm) = (yyvsp[-1].interm);
     }
-#line 4466 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 4915 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 30:
-#line 485 "glslang.y" /* yacc.c:1646  */
-    {
+  case 30: /* function_call_header_no_parameters: function_call_header  */
+#line 499 "MachineIndependent/glslang.y"
+                           {
         (yyval.interm) = (yyvsp[0].interm);
     }
-#line 4474 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 4923 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 31:
-#line 491 "glslang.y" /* yacc.c:1646  */
-    {
+  case 31: /* function_call_header_with_parameters: function_call_header assignment_expression  */
+#line 505 "MachineIndependent/glslang.y"
+                                                 {
         TParameter param = { 0, new TType };
         param.type->shallowCopy((yyvsp[0].interm.intermTypedNode)->getType());
         (yyvsp[-1].interm).function->addParameter(param);
         (yyval.interm).function = (yyvsp[-1].interm).function;
         (yyval.interm).intermNode = (yyvsp[0].interm.intermTypedNode);
     }
-#line 4486 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 4935 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 32:
-#line 498 "glslang.y" /* yacc.c:1646  */
-    {
+  case 32: /* function_call_header_with_parameters: function_call_header_with_parameters COMMA assignment_expression  */
+#line 512 "MachineIndependent/glslang.y"
+                                                                       {
         TParameter param = { 0, new TType };
         param.type->shallowCopy((yyvsp[0].interm.intermTypedNode)->getType());
         (yyvsp[-2].interm).function->addParameter(param);
         (yyval.interm).function = (yyvsp[-2].interm).function;
         (yyval.interm).intermNode = parseContext.intermediate.growAggregate((yyvsp[-2].interm).intermNode, (yyvsp[0].interm.intermTypedNode), (yyvsp[-1].lex).loc);
     }
-#line 4498 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 4947 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 33:
-#line 508 "glslang.y" /* yacc.c:1646  */
-    {
+  case 33: /* function_call_header: function_identifier LEFT_PAREN  */
+#line 522 "MachineIndependent/glslang.y"
+                                     {
         (yyval.interm) = (yyvsp[-1].interm);
     }
-#line 4506 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 4955 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 34:
-#line 516 "glslang.y" /* yacc.c:1646  */
-    {
+  case 34: /* function_identifier: type_specifier  */
+#line 530 "MachineIndependent/glslang.y"
+                     {
         // Constructor
         (yyval.interm).intermNode = 0;
         (yyval.interm).function = parseContext.handleConstructorCall((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type));
     }
-#line 4516 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 4965 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 35:
-#line 521 "glslang.y" /* yacc.c:1646  */
-    {
+  case 35: /* function_identifier: postfix_expression  */
+#line 535 "MachineIndependent/glslang.y"
+                         {
         //
         // Should be a method or subroutine call, but we haven't recognized the arguments yet.
         //
@@ -4544,51 +4993,51 @@
             (yyval.interm).function = new TFunction(empty, TType(EbtVoid), EOpNull);
         }
     }
-#line 4548 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 4997 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 36:
-#line 549 "glslang.y" /* yacc.c:1646  */
-    {
+  case 36: /* function_identifier: non_uniform_qualifier  */
+#line 563 "MachineIndependent/glslang.y"
+                            {
         // Constructor
         (yyval.interm).intermNode = 0;
         (yyval.interm).function = parseContext.handleConstructorCall((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type));
     }
-#line 4558 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 5007 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 37:
-#line 558 "glslang.y" /* yacc.c:1646  */
-    {
+  case 37: /* unary_expression: postfix_expression  */
+#line 572 "MachineIndependent/glslang.y"
+                         {
         parseContext.variableCheck((yyvsp[0].interm.intermTypedNode));
         (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
         if (TIntermMethod* method = (yyvsp[0].interm.intermTypedNode)->getAsMethodNode())
             parseContext.error((yyvsp[0].interm.intermTypedNode)->getLoc(), "incomplete method syntax", method->getMethodName().c_str(), "");
     }
-#line 4569 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 5018 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 38:
-#line 564 "glslang.y" /* yacc.c:1646  */
-    {
+  case 38: /* unary_expression: INC_OP unary_expression  */
+#line 578 "MachineIndependent/glslang.y"
+                              {
         parseContext.lValueErrorCheck((yyvsp[-1].lex).loc, "++", (yyvsp[0].interm.intermTypedNode));
         (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[-1].lex).loc, "++", EOpPreIncrement, (yyvsp[0].interm.intermTypedNode));
     }
-#line 4578 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 5027 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 39:
-#line 568 "glslang.y" /* yacc.c:1646  */
-    {
+  case 39: /* unary_expression: DEC_OP unary_expression  */
+#line 582 "MachineIndependent/glslang.y"
+                              {
         parseContext.lValueErrorCheck((yyvsp[-1].lex).loc, "--", (yyvsp[0].interm.intermTypedNode));
         (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[-1].lex).loc, "--", EOpPreDecrement, (yyvsp[0].interm.intermTypedNode));
     }
-#line 4587 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 5036 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 40:
-#line 572 "glslang.y" /* yacc.c:1646  */
-    {
+  case 40: /* unary_expression: unary_operator unary_expression  */
+#line 586 "MachineIndependent/glslang.y"
+                                      {
         if ((yyvsp[-1].interm).op != EOpNull) {
             char errorOp[2] = {0, 0};
             switch((yyvsp[-1].interm).op) {
@@ -4604,180 +5053,180 @@
                 (yyval.interm.intermTypedNode)->getAsConstantUnion()->setExpression();
         }
     }
-#line 4608 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 5057 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 41:
-#line 592 "glslang.y" /* yacc.c:1646  */
-    { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpNull; }
-#line 4614 "glslang_tab.cpp" /* yacc.c:1646  */
+  case 41: /* unary_operator: PLUS  */
+#line 606 "MachineIndependent/glslang.y"
+            { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpNull; }
+#line 5063 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 42:
-#line 593 "glslang.y" /* yacc.c:1646  */
-    { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpNegative; }
-#line 4620 "glslang_tab.cpp" /* yacc.c:1646  */
+  case 42: /* unary_operator: DASH  */
+#line 607 "MachineIndependent/glslang.y"
+            { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpNegative; }
+#line 5069 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 43:
-#line 594 "glslang.y" /* yacc.c:1646  */
-    { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpLogicalNot; }
-#line 4626 "glslang_tab.cpp" /* yacc.c:1646  */
+  case 43: /* unary_operator: BANG  */
+#line 608 "MachineIndependent/glslang.y"
+            { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpLogicalNot; }
+#line 5075 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 44:
-#line 595 "glslang.y" /* yacc.c:1646  */
-    { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpBitwiseNot;
+  case 44: /* unary_operator: TILDE  */
+#line 609 "MachineIndependent/glslang.y"
+            { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpBitwiseNot;
               parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise not"); }
-#line 4633 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 5082 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 45:
-#line 601 "glslang.y" /* yacc.c:1646  */
-    { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
-#line 4639 "glslang_tab.cpp" /* yacc.c:1646  */
+  case 45: /* multiplicative_expression: unary_expression  */
+#line 615 "MachineIndependent/glslang.y"
+                       { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
+#line 5088 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 46:
-#line 602 "glslang.y" /* yacc.c:1646  */
-    {
+  case 46: /* multiplicative_expression: multiplicative_expression STAR unary_expression  */
+#line 616 "MachineIndependent/glslang.y"
+                                                      {
         (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "*", EOpMul, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
         if ((yyval.interm.intermTypedNode) == 0)
             (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode);
     }
-#line 4649 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 5098 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 47:
-#line 607 "glslang.y" /* yacc.c:1646  */
-    {
+  case 47: /* multiplicative_expression: multiplicative_expression SLASH unary_expression  */
+#line 621 "MachineIndependent/glslang.y"
+                                                       {
         (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "/", EOpDiv, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
         if ((yyval.interm.intermTypedNode) == 0)
             (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode);
     }
-#line 4659 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 5108 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 48:
-#line 612 "glslang.y" /* yacc.c:1646  */
-    {
+  case 48: /* multiplicative_expression: multiplicative_expression PERCENT unary_expression  */
+#line 626 "MachineIndependent/glslang.y"
+                                                         {
         parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "%");
         (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "%", EOpMod, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
         if ((yyval.interm.intermTypedNode) == 0)
             (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode);
     }
-#line 4670 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 5119 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 49:
-#line 621 "glslang.y" /* yacc.c:1646  */
-    { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
-#line 4676 "glslang_tab.cpp" /* yacc.c:1646  */
+  case 49: /* additive_expression: multiplicative_expression  */
+#line 635 "MachineIndependent/glslang.y"
+                                { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
+#line 5125 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 50:
-#line 622 "glslang.y" /* yacc.c:1646  */
-    {
+  case 50: /* additive_expression: additive_expression PLUS multiplicative_expression  */
+#line 636 "MachineIndependent/glslang.y"
+                                                         {
         (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "+", EOpAdd, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
         if ((yyval.interm.intermTypedNode) == 0)
             (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode);
     }
-#line 4686 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 5135 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 51:
-#line 627 "glslang.y" /* yacc.c:1646  */
-    {
+  case 51: /* additive_expression: additive_expression DASH multiplicative_expression  */
+#line 641 "MachineIndependent/glslang.y"
+                                                         {
         (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "-", EOpSub, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
         if ((yyval.interm.intermTypedNode) == 0)
             (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode);
     }
-#line 4696 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 5145 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 52:
-#line 635 "glslang.y" /* yacc.c:1646  */
-    { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
-#line 4702 "glslang_tab.cpp" /* yacc.c:1646  */
+  case 52: /* shift_expression: additive_expression  */
+#line 649 "MachineIndependent/glslang.y"
+                          { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
+#line 5151 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 53:
-#line 636 "glslang.y" /* yacc.c:1646  */
-    {
+  case 53: /* shift_expression: shift_expression LEFT_OP additive_expression  */
+#line 650 "MachineIndependent/glslang.y"
+                                                   {
         parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "bit shift left");
         (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "<<", EOpLeftShift, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
         if ((yyval.interm.intermTypedNode) == 0)
             (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode);
     }
-#line 4713 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 5162 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 54:
-#line 642 "glslang.y" /* yacc.c:1646  */
-    {
+  case 54: /* shift_expression: shift_expression RIGHT_OP additive_expression  */
+#line 656 "MachineIndependent/glslang.y"
+                                                    {
         parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "bit shift right");
         (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, ">>", EOpRightShift, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
         if ((yyval.interm.intermTypedNode) == 0)
             (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode);
     }
-#line 4724 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 5173 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 55:
-#line 651 "glslang.y" /* yacc.c:1646  */
-    { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
-#line 4730 "glslang_tab.cpp" /* yacc.c:1646  */
+  case 55: /* relational_expression: shift_expression  */
+#line 665 "MachineIndependent/glslang.y"
+                       { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
+#line 5179 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 56:
-#line 652 "glslang.y" /* yacc.c:1646  */
-    {
+  case 56: /* relational_expression: relational_expression LEFT_ANGLE shift_expression  */
+#line 666 "MachineIndependent/glslang.y"
+                                                        {
         (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "<", EOpLessThan, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
         if ((yyval.interm.intermTypedNode) == 0)
             (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc);
     }
-#line 4740 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 5189 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 57:
-#line 657 "glslang.y" /* yacc.c:1646  */
-    {
+  case 57: /* relational_expression: relational_expression RIGHT_ANGLE shift_expression  */
+#line 671 "MachineIndependent/glslang.y"
+                                                          {
         (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, ">", EOpGreaterThan, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
         if ((yyval.interm.intermTypedNode) == 0)
             (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc);
     }
-#line 4750 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 5199 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 58:
-#line 662 "glslang.y" /* yacc.c:1646  */
-    {
+  case 58: /* relational_expression: relational_expression LE_OP shift_expression  */
+#line 676 "MachineIndependent/glslang.y"
+                                                    {
         (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "<=", EOpLessThanEqual, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
         if ((yyval.interm.intermTypedNode) == 0)
             (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc);
     }
-#line 4760 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 5209 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 59:
-#line 667 "glslang.y" /* yacc.c:1646  */
-    {
+  case 59: /* relational_expression: relational_expression GE_OP shift_expression  */
+#line 681 "MachineIndependent/glslang.y"
+                                                    {
         (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, ">=", EOpGreaterThanEqual, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
         if ((yyval.interm.intermTypedNode) == 0)
             (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc);
     }
-#line 4770 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 5219 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 60:
-#line 675 "glslang.y" /* yacc.c:1646  */
-    { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
-#line 4776 "glslang_tab.cpp" /* yacc.c:1646  */
+  case 60: /* equality_expression: relational_expression  */
+#line 689 "MachineIndependent/glslang.y"
+                            { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
+#line 5225 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 61:
-#line 676 "glslang.y" /* yacc.c:1646  */
-    {
+  case 61: /* equality_expression: equality_expression EQ_OP relational_expression  */
+#line 690 "MachineIndependent/glslang.y"
+                                                       {
         parseContext.arrayObjectCheck((yyvsp[-1].lex).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "array comparison");
         parseContext.opaqueCheck((yyvsp[-1].lex).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "==");
         parseContext.specializationCheck((yyvsp[-1].lex).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "==");
@@ -4786,12 +5235,12 @@
         if ((yyval.interm.intermTypedNode) == 0)
             (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc);
     }
-#line 4790 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 5239 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 62:
-#line 685 "glslang.y" /* yacc.c:1646  */
-    {
+  case 62: /* equality_expression: equality_expression NE_OP relational_expression  */
+#line 699 "MachineIndependent/glslang.y"
+                                                      {
         parseContext.arrayObjectCheck((yyvsp[-1].lex).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "array comparison");
         parseContext.opaqueCheck((yyvsp[-1].lex).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "!=");
         parseContext.specializationCheck((yyvsp[-1].lex).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "!=");
@@ -4800,125 +5249,125 @@
         if ((yyval.interm.intermTypedNode) == 0)
             (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc);
     }
-#line 4804 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 5253 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 63:
-#line 697 "glslang.y" /* yacc.c:1646  */
-    { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
-#line 4810 "glslang_tab.cpp" /* yacc.c:1646  */
+  case 63: /* and_expression: equality_expression  */
+#line 711 "MachineIndependent/glslang.y"
+                          { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
+#line 5259 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 64:
-#line 698 "glslang.y" /* yacc.c:1646  */
-    {
+  case 64: /* and_expression: and_expression AMPERSAND equality_expression  */
+#line 712 "MachineIndependent/glslang.y"
+                                                   {
         parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "bitwise and");
         (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "&", EOpAnd, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
         if ((yyval.interm.intermTypedNode) == 0)
             (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode);
     }
-#line 4821 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 5270 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 65:
-#line 707 "glslang.y" /* yacc.c:1646  */
-    { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
-#line 4827 "glslang_tab.cpp" /* yacc.c:1646  */
+  case 65: /* exclusive_or_expression: and_expression  */
+#line 721 "MachineIndependent/glslang.y"
+                     { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
+#line 5276 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 66:
-#line 708 "glslang.y" /* yacc.c:1646  */
-    {
+  case 66: /* exclusive_or_expression: exclusive_or_expression CARET and_expression  */
+#line 722 "MachineIndependent/glslang.y"
+                                                   {
         parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "bitwise exclusive or");
         (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "^", EOpExclusiveOr, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
         if ((yyval.interm.intermTypedNode) == 0)
             (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode);
     }
-#line 4838 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 5287 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 67:
-#line 717 "glslang.y" /* yacc.c:1646  */
-    { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
-#line 4844 "glslang_tab.cpp" /* yacc.c:1646  */
+  case 67: /* inclusive_or_expression: exclusive_or_expression  */
+#line 731 "MachineIndependent/glslang.y"
+                              { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
+#line 5293 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 68:
-#line 718 "glslang.y" /* yacc.c:1646  */
-    {
+  case 68: /* inclusive_or_expression: inclusive_or_expression VERTICAL_BAR exclusive_or_expression  */
+#line 732 "MachineIndependent/glslang.y"
+                                                                   {
         parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "bitwise inclusive or");
         (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "|", EOpInclusiveOr, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
         if ((yyval.interm.intermTypedNode) == 0)
             (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode);
     }
-#line 4855 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 5304 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 69:
-#line 727 "glslang.y" /* yacc.c:1646  */
-    { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
-#line 4861 "glslang_tab.cpp" /* yacc.c:1646  */
+  case 69: /* logical_and_expression: inclusive_or_expression  */
+#line 741 "MachineIndependent/glslang.y"
+                              { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
+#line 5310 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 70:
-#line 728 "glslang.y" /* yacc.c:1646  */
-    {
+  case 70: /* logical_and_expression: logical_and_expression AND_OP inclusive_or_expression  */
+#line 742 "MachineIndependent/glslang.y"
+                                                            {
         (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "&&", EOpLogicalAnd, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
         if ((yyval.interm.intermTypedNode) == 0)
             (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc);
     }
-#line 4871 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 5320 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 71:
-#line 736 "glslang.y" /* yacc.c:1646  */
-    { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
-#line 4877 "glslang_tab.cpp" /* yacc.c:1646  */
+  case 71: /* logical_xor_expression: logical_and_expression  */
+#line 750 "MachineIndependent/glslang.y"
+                             { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
+#line 5326 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 72:
-#line 737 "glslang.y" /* yacc.c:1646  */
-    {
+  case 72: /* logical_xor_expression: logical_xor_expression XOR_OP logical_and_expression  */
+#line 751 "MachineIndependent/glslang.y"
+                                                            {
         (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "^^", EOpLogicalXor, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
         if ((yyval.interm.intermTypedNode) == 0)
             (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc);
     }
-#line 4887 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 5336 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 73:
-#line 745 "glslang.y" /* yacc.c:1646  */
-    { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
-#line 4893 "glslang_tab.cpp" /* yacc.c:1646  */
+  case 73: /* logical_or_expression: logical_xor_expression  */
+#line 759 "MachineIndependent/glslang.y"
+                             { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
+#line 5342 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 74:
-#line 746 "glslang.y" /* yacc.c:1646  */
-    {
+  case 74: /* logical_or_expression: logical_or_expression OR_OP logical_xor_expression  */
+#line 760 "MachineIndependent/glslang.y"
+                                                          {
         (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "||", EOpLogicalOr, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
         if ((yyval.interm.intermTypedNode) == 0)
             (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc);
     }
-#line 4903 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 5352 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 75:
-#line 754 "glslang.y" /* yacc.c:1646  */
-    { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
-#line 4909 "glslang_tab.cpp" /* yacc.c:1646  */
+  case 75: /* conditional_expression: logical_or_expression  */
+#line 768 "MachineIndependent/glslang.y"
+                            { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
+#line 5358 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 76:
-#line 755 "glslang.y" /* yacc.c:1646  */
-    {
+  case 76: /* $@1: %empty  */
+#line 769 "MachineIndependent/glslang.y"
+                                     {
         ++parseContext.controlFlowNestingLevel;
     }
-#line 4917 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 5366 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 77:
-#line 758 "glslang.y" /* yacc.c:1646  */
-    {
+  case 77: /* conditional_expression: logical_or_expression QUESTION $@1 expression COLON assignment_expression  */
+#line 772 "MachineIndependent/glslang.y"
+                                             {
         --parseContext.controlFlowNestingLevel;
         parseContext.boolCheck((yyvsp[-4].lex).loc, (yyvsp[-5].interm.intermTypedNode));
         parseContext.rValueErrorCheck((yyvsp[-4].lex).loc, "?", (yyvsp[-5].interm.intermTypedNode));
@@ -4930,144 +5379,144 @@
             (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
         }
     }
-#line 4934 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 5383 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 78:
-#line 773 "glslang.y" /* yacc.c:1646  */
-    { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
-#line 4940 "glslang_tab.cpp" /* yacc.c:1646  */
+  case 78: /* assignment_expression: conditional_expression  */
+#line 787 "MachineIndependent/glslang.y"
+                             { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
+#line 5389 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 79:
-#line 774 "glslang.y" /* yacc.c:1646  */
-    {
+  case 79: /* assignment_expression: unary_expression assignment_operator assignment_expression  */
+#line 788 "MachineIndependent/glslang.y"
+                                                                 {
         parseContext.arrayObjectCheck((yyvsp[-1].interm).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "array assignment");
         parseContext.opaqueCheck((yyvsp[-1].interm).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "=");
         parseContext.storage16BitAssignmentCheck((yyvsp[-1].interm).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "=");
         parseContext.specializationCheck((yyvsp[-1].interm).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "=");
         parseContext.lValueErrorCheck((yyvsp[-1].interm).loc, "assign", (yyvsp[-2].interm.intermTypedNode));
         parseContext.rValueErrorCheck((yyvsp[-1].interm).loc, "assign", (yyvsp[0].interm.intermTypedNode));
-        (yyval.interm.intermTypedNode) = parseContext.intermediate.addAssign((yyvsp[-1].interm).op, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode), (yyvsp[-1].interm).loc);
+        (yyval.interm.intermTypedNode) = parseContext.addAssign((yyvsp[-1].interm).loc, (yyvsp[-1].interm).op, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
         if ((yyval.interm.intermTypedNode) == 0) {
             parseContext.assignError((yyvsp[-1].interm).loc, "assign", (yyvsp[-2].interm.intermTypedNode)->getCompleteString(), (yyvsp[0].interm.intermTypedNode)->getCompleteString());
             (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode);
         }
     }
-#line 4958 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 5407 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 80:
-#line 790 "glslang.y" /* yacc.c:1646  */
-    {
+  case 80: /* assignment_operator: EQUAL  */
+#line 804 "MachineIndependent/glslang.y"
+            {
         (yyval.interm).loc = (yyvsp[0].lex).loc;
         (yyval.interm).op = EOpAssign;
     }
-#line 4967 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 5416 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 81:
-#line 794 "glslang.y" /* yacc.c:1646  */
-    {
+  case 81: /* assignment_operator: MUL_ASSIGN  */
+#line 808 "MachineIndependent/glslang.y"
+                 {
         (yyval.interm).loc = (yyvsp[0].lex).loc;
         (yyval.interm).op = EOpMulAssign;
     }
-#line 4976 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 5425 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 82:
-#line 798 "glslang.y" /* yacc.c:1646  */
-    {
+  case 82: /* assignment_operator: DIV_ASSIGN  */
+#line 812 "MachineIndependent/glslang.y"
+                 {
         (yyval.interm).loc = (yyvsp[0].lex).loc;
         (yyval.interm).op = EOpDivAssign;
     }
-#line 4985 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 5434 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 83:
-#line 802 "glslang.y" /* yacc.c:1646  */
-    {
+  case 83: /* assignment_operator: MOD_ASSIGN  */
+#line 816 "MachineIndependent/glslang.y"
+                 {
         parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "%=");
         (yyval.interm).loc = (yyvsp[0].lex).loc;
         (yyval.interm).op = EOpModAssign;
     }
-#line 4995 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 5444 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 84:
-#line 807 "glslang.y" /* yacc.c:1646  */
-    {
+  case 84: /* assignment_operator: ADD_ASSIGN  */
+#line 821 "MachineIndependent/glslang.y"
+                 {
         (yyval.interm).loc = (yyvsp[0].lex).loc;
         (yyval.interm).op = EOpAddAssign;
     }
-#line 5004 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 5453 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 85:
-#line 811 "glslang.y" /* yacc.c:1646  */
-    {
+  case 85: /* assignment_operator: SUB_ASSIGN  */
+#line 825 "MachineIndependent/glslang.y"
+                 {
         (yyval.interm).loc = (yyvsp[0].lex).loc;
         (yyval.interm).op = EOpSubAssign;
     }
-#line 5013 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 5462 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 86:
-#line 815 "glslang.y" /* yacc.c:1646  */
-    {
+  case 86: /* assignment_operator: LEFT_ASSIGN  */
+#line 829 "MachineIndependent/glslang.y"
+                  {
         parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bit-shift left assign");
         (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpLeftShiftAssign;
     }
-#line 5022 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 5471 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 87:
-#line 819 "glslang.y" /* yacc.c:1646  */
-    {
+  case 87: /* assignment_operator: RIGHT_ASSIGN  */
+#line 833 "MachineIndependent/glslang.y"
+                   {
         parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bit-shift right assign");
         (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpRightShiftAssign;
     }
-#line 5031 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 5480 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 88:
-#line 823 "glslang.y" /* yacc.c:1646  */
-    {
+  case 88: /* assignment_operator: AND_ASSIGN  */
+#line 837 "MachineIndependent/glslang.y"
+                 {
         parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise-and assign");
         (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpAndAssign;
     }
-#line 5040 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 5489 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 89:
-#line 827 "glslang.y" /* yacc.c:1646  */
-    {
+  case 89: /* assignment_operator: XOR_ASSIGN  */
+#line 841 "MachineIndependent/glslang.y"
+                 {
         parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise-xor assign");
         (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpExclusiveOrAssign;
     }
-#line 5049 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 5498 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 90:
-#line 831 "glslang.y" /* yacc.c:1646  */
-    {
+  case 90: /* assignment_operator: OR_ASSIGN  */
+#line 845 "MachineIndependent/glslang.y"
+                {
         parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise-or assign");
         (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpInclusiveOrAssign;
     }
-#line 5058 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 5507 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 91:
-#line 838 "glslang.y" /* yacc.c:1646  */
-    {
+  case 91: /* expression: assignment_expression  */
+#line 852 "MachineIndependent/glslang.y"
+                            {
         (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
     }
-#line 5066 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 5515 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 92:
-#line 841 "glslang.y" /* yacc.c:1646  */
-    {
+  case 92: /* expression: expression COMMA assignment_expression  */
+#line 855 "MachineIndependent/glslang.y"
+                                             {
         parseContext.samplerConstructorLocationCheck((yyvsp[-1].lex).loc, ",", (yyvsp[0].interm.intermTypedNode));
         (yyval.interm.intermTypedNode) = parseContext.intermediate.addComma((yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode), (yyvsp[-1].lex).loc);
         if ((yyval.interm.intermTypedNode) == 0) {
@@ -5075,118 +5524,118 @@
             (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
         }
     }
-#line 5079 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 5528 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 93:
-#line 852 "glslang.y" /* yacc.c:1646  */
-    {
+  case 93: /* constant_expression: conditional_expression  */
+#line 866 "MachineIndependent/glslang.y"
+                             {
         parseContext.constantValueCheck((yyvsp[0].interm.intermTypedNode), "");
         (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
     }
-#line 5088 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 5537 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 94:
-#line 859 "glslang.y" /* yacc.c:1646  */
-    {
+  case 94: /* declaration: function_prototype SEMICOLON  */
+#line 873 "MachineIndependent/glslang.y"
+                                   {
         parseContext.handleFunctionDeclarator((yyvsp[-1].interm).loc, *(yyvsp[-1].interm).function, true /* prototype */);
         (yyval.interm.intermNode) = 0;
         // TODO: 4.0 functionality: subroutines: make the identifier a user type for this signature
     }
-#line 5098 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 5547 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 95:
-#line 864 "glslang.y" /* yacc.c:1646  */
-    {
+  case 95: /* declaration: init_declarator_list SEMICOLON  */
+#line 878 "MachineIndependent/glslang.y"
+                                     {
         if ((yyvsp[-1].interm).intermNode && (yyvsp[-1].interm).intermNode->getAsAggregate())
             (yyvsp[-1].interm).intermNode->getAsAggregate()->setOperator(EOpSequence);
         (yyval.interm.intermNode) = (yyvsp[-1].interm).intermNode;
     }
-#line 5108 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 5557 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 96:
-#line 869 "glslang.y" /* yacc.c:1646  */
-    {
+  case 96: /* declaration: PRECISION precision_qualifier type_specifier SEMICOLON  */
+#line 883 "MachineIndependent/glslang.y"
+                                                             {
         parseContext.profileRequires((yyvsp[-3].lex).loc, ENoProfile, 130, 0, "precision statement");
         // lazy setting of the previous scope's defaults, has effect only the first time it is called in a particular scope
         parseContext.symbolTable.setPreviousDefaultPrecisions(&parseContext.defaultPrecision[0]);
         parseContext.setDefaultPrecision((yyvsp[-3].lex).loc, (yyvsp[-1].interm.type), (yyvsp[-2].interm.type).qualifier.precision);
         (yyval.interm.intermNode) = 0;
     }
-#line 5120 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 5569 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 97:
-#line 876 "glslang.y" /* yacc.c:1646  */
-    {
+  case 97: /* declaration: block_structure SEMICOLON  */
+#line 890 "MachineIndependent/glslang.y"
+                                {
         parseContext.declareBlock((yyvsp[-1].interm).loc, *(yyvsp[-1].interm).typeList);
         (yyval.interm.intermNode) = 0;
     }
-#line 5129 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 5578 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 98:
-#line 880 "glslang.y" /* yacc.c:1646  */
-    {
+  case 98: /* declaration: block_structure IDENTIFIER SEMICOLON  */
+#line 894 "MachineIndependent/glslang.y"
+                                           {
         parseContext.declareBlock((yyvsp[-2].interm).loc, *(yyvsp[-2].interm).typeList, (yyvsp[-1].lex).string);
         (yyval.interm.intermNode) = 0;
     }
-#line 5138 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 5587 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 99:
-#line 884 "glslang.y" /* yacc.c:1646  */
-    {
+  case 99: /* declaration: block_structure IDENTIFIER array_specifier SEMICOLON  */
+#line 898 "MachineIndependent/glslang.y"
+                                                           {
         parseContext.declareBlock((yyvsp[-3].interm).loc, *(yyvsp[-3].interm).typeList, (yyvsp[-2].lex).string, (yyvsp[-1].interm).arraySizes);
         (yyval.interm.intermNode) = 0;
     }
-#line 5147 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 5596 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 100:
-#line 888 "glslang.y" /* yacc.c:1646  */
-    {
+  case 100: /* declaration: type_qualifier SEMICOLON  */
+#line 902 "MachineIndependent/glslang.y"
+                               {
         parseContext.globalQualifierFixCheck((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier);
         parseContext.updateStandaloneQualifierDefaults((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type));
         (yyval.interm.intermNode) = 0;
     }
-#line 5157 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 5606 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 101:
-#line 893 "glslang.y" /* yacc.c:1646  */
-    {
+  case 101: /* declaration: type_qualifier IDENTIFIER SEMICOLON  */
+#line 907 "MachineIndependent/glslang.y"
+                                          {
         parseContext.checkNoShaderLayouts((yyvsp[-2].interm.type).loc, (yyvsp[-2].interm.type).shaderQualifiers);
         parseContext.addQualifierToExisting((yyvsp[-2].interm.type).loc, (yyvsp[-2].interm.type).qualifier, *(yyvsp[-1].lex).string);
         (yyval.interm.intermNode) = 0;
     }
-#line 5167 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 5616 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 102:
-#line 898 "glslang.y" /* yacc.c:1646  */
-    {
+  case 102: /* declaration: type_qualifier IDENTIFIER identifier_list SEMICOLON  */
+#line 912 "MachineIndependent/glslang.y"
+                                                          {
         parseContext.checkNoShaderLayouts((yyvsp[-3].interm.type).loc, (yyvsp[-3].interm.type).shaderQualifiers);
         (yyvsp[-1].interm.identifierList)->push_back((yyvsp[-2].lex).string);
         parseContext.addQualifierToExisting((yyvsp[-3].interm.type).loc, (yyvsp[-3].interm.type).qualifier, *(yyvsp[-1].interm.identifierList));
         (yyval.interm.intermNode) = 0;
     }
-#line 5178 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 5627 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 103:
-#line 907 "glslang.y" /* yacc.c:1646  */
-    { parseContext.nestedBlockCheck((yyvsp[-2].interm.type).loc); }
-#line 5184 "glslang_tab.cpp" /* yacc.c:1646  */
+  case 103: /* $@2: %empty  */
+#line 921 "MachineIndependent/glslang.y"
+                                           { parseContext.nestedBlockCheck((yyvsp[-2].interm.type).loc); }
+#line 5633 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 104:
-#line 907 "glslang.y" /* yacc.c:1646  */
-    {
-        --parseContext.structNestingLevel;
+  case 104: /* block_structure: type_qualifier IDENTIFIER LEFT_BRACE $@2 struct_declaration_list RIGHT_BRACE  */
+#line 921 "MachineIndependent/glslang.y"
+                                                                                                                          {
+        --parseContext.blockNestingLevel;
         parseContext.blockName = (yyvsp[-4].lex).string;
         parseContext.globalQualifierFixCheck((yyvsp[-5].interm.type).loc, (yyvsp[-5].interm.type).qualifier);
         parseContext.checkNoShaderLayouts((yyvsp[-5].interm.type).loc, (yyvsp[-5].interm.type).shaderQualifiers);
@@ -5194,55 +5643,55 @@
         (yyval.interm).loc = (yyvsp[-5].interm.type).loc;
         (yyval.interm).typeList = (yyvsp[-1].interm.typeList);
     }
-#line 5198 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 5647 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 105:
-#line 918 "glslang.y" /* yacc.c:1646  */
-    {
+  case 105: /* identifier_list: COMMA IDENTIFIER  */
+#line 932 "MachineIndependent/glslang.y"
+                       {
         (yyval.interm.identifierList) = new TIdentifierList;
         (yyval.interm.identifierList)->push_back((yyvsp[0].lex).string);
     }
-#line 5207 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 5656 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 106:
-#line 922 "glslang.y" /* yacc.c:1646  */
-    {
+  case 106: /* identifier_list: identifier_list COMMA IDENTIFIER  */
+#line 936 "MachineIndependent/glslang.y"
+                                       {
         (yyval.interm.identifierList) = (yyvsp[-2].interm.identifierList);
         (yyval.interm.identifierList)->push_back((yyvsp[0].lex).string);
     }
-#line 5216 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 5665 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 107:
-#line 929 "glslang.y" /* yacc.c:1646  */
-    {
+  case 107: /* function_prototype: function_declarator RIGHT_PAREN  */
+#line 943 "MachineIndependent/glslang.y"
+                                       {
         (yyval.interm).function = (yyvsp[-1].interm.function);
         (yyval.interm).loc = (yyvsp[0].lex).loc;
     }
-#line 5225 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 5674 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 108:
-#line 936 "glslang.y" /* yacc.c:1646  */
-    {
+  case 108: /* function_declarator: function_header  */
+#line 950 "MachineIndependent/glslang.y"
+                      {
         (yyval.interm.function) = (yyvsp[0].interm.function);
     }
-#line 5233 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 5682 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 109:
-#line 939 "glslang.y" /* yacc.c:1646  */
-    {
+  case 109: /* function_declarator: function_header_with_parameters  */
+#line 953 "MachineIndependent/glslang.y"
+                                      {
         (yyval.interm.function) = (yyvsp[0].interm.function);
     }
-#line 5241 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 5690 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 110:
-#line 946 "glslang.y" /* yacc.c:1646  */
-    {
+  case 110: /* function_header_with_parameters: function_header parameter_declaration  */
+#line 960 "MachineIndependent/glslang.y"
+                                            {
         // Add the parameter
         (yyval.interm.function) = (yyvsp[-1].interm.function);
         if ((yyvsp[0].interm).param.type->getBasicType() != EbtVoid)
@@ -5250,12 +5699,12 @@
         else
             delete (yyvsp[0].interm).param.type;
     }
-#line 5254 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 5703 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 111:
-#line 954 "glslang.y" /* yacc.c:1646  */
-    {
+  case 111: /* function_header_with_parameters: function_header_with_parameters COMMA parameter_declaration  */
+#line 968 "MachineIndependent/glslang.y"
+                                                                  {
         //
         // Only first parameter of one-parameter functions can be void
         // The check for named parameters not being void is done in parameter_declarator
@@ -5272,12 +5721,12 @@
             (yyvsp[-2].interm.function)->addParameter((yyvsp[0].interm).param);
         }
     }
-#line 5276 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 5725 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 112:
-#line 974 "glslang.y" /* yacc.c:1646  */
-    {
+  case 112: /* function_header: fully_specified_type IDENTIFIER LEFT_PAREN  */
+#line 988 "MachineIndependent/glslang.y"
+                                                 {
         if ((yyvsp[-2].interm.type).qualifier.storage != EvqGlobal && (yyvsp[-2].interm.type).qualifier.storage != EvqTemporary) {
             parseContext.error((yyvsp[-1].lex).loc, "no qualifiers allowed for function return",
                                GetStorageQualifierString((yyvsp[-2].interm.type).qualifier.storage), "");
@@ -5296,12 +5745,12 @@
         function = new TFunction((yyvsp[-1].lex).string, type);
         (yyval.interm.function) = function;
     }
-#line 5300 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 5749 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 113:
-#line 997 "glslang.y" /* yacc.c:1646  */
-    {
+  case 113: /* parameter_declarator: type_specifier IDENTIFIER  */
+#line 1011 "MachineIndependent/glslang.y"
+                                {
         if ((yyvsp[-1].interm.type).arraySizes) {
             parseContext.profileRequires((yyvsp[-1].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type");
             parseContext.profileRequires((yyvsp[-1].interm.type).loc, EEsProfile, 300, 0, "arrayed type");
@@ -5316,12 +5765,12 @@
         (yyval.interm).loc = (yyvsp[0].lex).loc;
         (yyval.interm).param = param;
     }
-#line 5320 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 5769 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 114:
-#line 1012 "glslang.y" /* yacc.c:1646  */
-    {
+  case 114: /* parameter_declarator: type_specifier IDENTIFIER array_specifier  */
+#line 1026 "MachineIndependent/glslang.y"
+                                                {
         if ((yyvsp[-2].interm.type).arraySizes) {
             parseContext.profileRequires((yyvsp[-2].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type");
             parseContext.profileRequires((yyvsp[-2].interm.type).loc, EEsProfile, 300, 0, "arrayed type");
@@ -5340,12 +5789,12 @@
         (yyval.interm).loc = (yyvsp[-1].lex).loc;
         (yyval.interm).param = param;
     }
-#line 5344 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 5793 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 115:
-#line 1037 "glslang.y" /* yacc.c:1646  */
-    {
+  case 115: /* parameter_declaration: type_qualifier parameter_declarator  */
+#line 1051 "MachineIndependent/glslang.y"
+                                          {
         (yyval.interm) = (yyvsp[0].interm);
         if ((yyvsp[-1].interm.type).qualifier.precision != EpqNone)
             (yyval.interm).param.type->getQualifier().precision = (yyvsp[-1].interm.type).qualifier.precision;
@@ -5356,24 +5805,24 @@
         parseContext.paramCheckFix((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier, *(yyval.interm).param.type);
 
     }
-#line 5360 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 5809 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 116:
-#line 1048 "glslang.y" /* yacc.c:1646  */
-    {
+  case 116: /* parameter_declaration: parameter_declarator  */
+#line 1062 "MachineIndependent/glslang.y"
+                           {
         (yyval.interm) = (yyvsp[0].interm);
 
         parseContext.parameterTypeCheck((yyvsp[0].interm).loc, EvqIn, *(yyvsp[0].interm).param.type);
         parseContext.paramCheckFixStorage((yyvsp[0].interm).loc, EvqTemporary, *(yyval.interm).param.type);
         parseContext.precisionQualifierCheck((yyval.interm).loc, (yyval.interm).param.type->getBasicType(), (yyval.interm).param.type->getQualifier());
     }
-#line 5372 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 5821 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 117:
-#line 1058 "glslang.y" /* yacc.c:1646  */
-    {
+  case 117: /* parameter_declaration: type_qualifier parameter_type_specifier  */
+#line 1072 "MachineIndependent/glslang.y"
+                                              {
         (yyval.interm) = (yyvsp[0].interm);
         if ((yyvsp[-1].interm.type).qualifier.precision != EpqNone)
             (yyval.interm).param.type->getQualifier().precision = (yyvsp[-1].interm.type).qualifier.precision;
@@ -5383,133 +5832,133 @@
         parseContext.parameterTypeCheck((yyvsp[0].interm).loc, (yyvsp[-1].interm.type).qualifier.storage, *(yyval.interm).param.type);
         parseContext.paramCheckFix((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier, *(yyval.interm).param.type);
     }
-#line 5387 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 5836 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 118:
-#line 1068 "glslang.y" /* yacc.c:1646  */
-    {
+  case 118: /* parameter_declaration: parameter_type_specifier  */
+#line 1082 "MachineIndependent/glslang.y"
+                               {
         (yyval.interm) = (yyvsp[0].interm);
 
         parseContext.parameterTypeCheck((yyvsp[0].interm).loc, EvqIn, *(yyvsp[0].interm).param.type);
         parseContext.paramCheckFixStorage((yyvsp[0].interm).loc, EvqTemporary, *(yyval.interm).param.type);
         parseContext.precisionQualifierCheck((yyval.interm).loc, (yyval.interm).param.type->getBasicType(), (yyval.interm).param.type->getQualifier());
     }
-#line 5399 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 5848 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 119:
-#line 1078 "glslang.y" /* yacc.c:1646  */
-    {
+  case 119: /* parameter_type_specifier: type_specifier  */
+#line 1092 "MachineIndependent/glslang.y"
+                     {
         TParameter param = { 0, new TType((yyvsp[0].interm.type)) };
         (yyval.interm).param = param;
         if ((yyvsp[0].interm.type).arraySizes)
             parseContext.arraySizeRequiredCheck((yyvsp[0].interm.type).loc, *(yyvsp[0].interm.type).arraySizes);
     }
-#line 5410 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 5859 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 120:
-#line 1087 "glslang.y" /* yacc.c:1646  */
-    {
+  case 120: /* init_declarator_list: single_declaration  */
+#line 1101 "MachineIndependent/glslang.y"
+                         {
         (yyval.interm) = (yyvsp[0].interm);
     }
-#line 5418 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 5867 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 121:
-#line 1090 "glslang.y" /* yacc.c:1646  */
-    {
+  case 121: /* init_declarator_list: init_declarator_list COMMA IDENTIFIER  */
+#line 1104 "MachineIndependent/glslang.y"
+                                            {
         (yyval.interm) = (yyvsp[-2].interm);
         parseContext.declareVariable((yyvsp[0].lex).loc, *(yyvsp[0].lex).string, (yyvsp[-2].interm).type);
     }
-#line 5427 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 5876 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 122:
-#line 1094 "glslang.y" /* yacc.c:1646  */
-    {
+  case 122: /* init_declarator_list: init_declarator_list COMMA IDENTIFIER array_specifier  */
+#line 1108 "MachineIndependent/glslang.y"
+                                                            {
         (yyval.interm) = (yyvsp[-3].interm);
         parseContext.declareVariable((yyvsp[-1].lex).loc, *(yyvsp[-1].lex).string, (yyvsp[-3].interm).type, (yyvsp[0].interm).arraySizes);
     }
-#line 5436 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 5885 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 123:
-#line 1098 "glslang.y" /* yacc.c:1646  */
-    {
+  case 123: /* init_declarator_list: init_declarator_list COMMA IDENTIFIER array_specifier EQUAL initializer  */
+#line 1112 "MachineIndependent/glslang.y"
+                                                                              {
         (yyval.interm).type = (yyvsp[-5].interm).type;
         TIntermNode* initNode = parseContext.declareVariable((yyvsp[-3].lex).loc, *(yyvsp[-3].lex).string, (yyvsp[-5].interm).type, (yyvsp[-2].interm).arraySizes, (yyvsp[0].interm.intermTypedNode));
         (yyval.interm).intermNode = parseContext.intermediate.growAggregate((yyvsp[-5].interm).intermNode, initNode, (yyvsp[-1].lex).loc);
     }
-#line 5446 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 5895 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 124:
-#line 1103 "glslang.y" /* yacc.c:1646  */
-    {
+  case 124: /* init_declarator_list: init_declarator_list COMMA IDENTIFIER EQUAL initializer  */
+#line 1117 "MachineIndependent/glslang.y"
+                                                              {
         (yyval.interm).type = (yyvsp[-4].interm).type;
         TIntermNode* initNode = parseContext.declareVariable((yyvsp[-2].lex).loc, *(yyvsp[-2].lex).string, (yyvsp[-4].interm).type, 0, (yyvsp[0].interm.intermTypedNode));
         (yyval.interm).intermNode = parseContext.intermediate.growAggregate((yyvsp[-4].interm).intermNode, initNode, (yyvsp[-1].lex).loc);
     }
-#line 5456 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 5905 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 125:
-#line 1111 "glslang.y" /* yacc.c:1646  */
-    {
+  case 125: /* single_declaration: fully_specified_type  */
+#line 1125 "MachineIndependent/glslang.y"
+                           {
         (yyval.interm).type = (yyvsp[0].interm.type);
         (yyval.interm).intermNode = 0;
 
         parseContext.declareTypeDefaults((yyval.interm).loc, (yyval.interm).type);
 
     }
-#line 5468 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 5917 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 126:
-#line 1118 "glslang.y" /* yacc.c:1646  */
-    {
+  case 126: /* single_declaration: fully_specified_type IDENTIFIER  */
+#line 1132 "MachineIndependent/glslang.y"
+                                      {
         (yyval.interm).type = (yyvsp[-1].interm.type);
         (yyval.interm).intermNode = 0;
         parseContext.declareVariable((yyvsp[0].lex).loc, *(yyvsp[0].lex).string, (yyvsp[-1].interm.type));
     }
-#line 5478 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 5927 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 127:
-#line 1123 "glslang.y" /* yacc.c:1646  */
-    {
+  case 127: /* single_declaration: fully_specified_type IDENTIFIER array_specifier  */
+#line 1137 "MachineIndependent/glslang.y"
+                                                      {
         (yyval.interm).type = (yyvsp[-2].interm.type);
         (yyval.interm).intermNode = 0;
         parseContext.declareVariable((yyvsp[-1].lex).loc, *(yyvsp[-1].lex).string, (yyvsp[-2].interm.type), (yyvsp[0].interm).arraySizes);
     }
-#line 5488 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 5937 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 128:
-#line 1128 "glslang.y" /* yacc.c:1646  */
-    {
+  case 128: /* single_declaration: fully_specified_type IDENTIFIER array_specifier EQUAL initializer  */
+#line 1142 "MachineIndependent/glslang.y"
+                                                                        {
         (yyval.interm).type = (yyvsp[-4].interm.type);
         TIntermNode* initNode = parseContext.declareVariable((yyvsp[-3].lex).loc, *(yyvsp[-3].lex).string, (yyvsp[-4].interm.type), (yyvsp[-2].interm).arraySizes, (yyvsp[0].interm.intermTypedNode));
         (yyval.interm).intermNode = parseContext.intermediate.growAggregate(0, initNode, (yyvsp[-1].lex).loc);
     }
-#line 5498 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 5947 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 129:
-#line 1133 "glslang.y" /* yacc.c:1646  */
-    {
+  case 129: /* single_declaration: fully_specified_type IDENTIFIER EQUAL initializer  */
+#line 1147 "MachineIndependent/glslang.y"
+                                                        {
         (yyval.interm).type = (yyvsp[-3].interm.type);
         TIntermNode* initNode = parseContext.declareVariable((yyvsp[-2].lex).loc, *(yyvsp[-2].lex).string, (yyvsp[-3].interm.type), 0, (yyvsp[0].interm.intermTypedNode));
         (yyval.interm).intermNode = parseContext.intermediate.growAggregate(0, initNode, (yyvsp[-1].lex).loc);
     }
-#line 5508 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 5957 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 130:
-#line 1142 "glslang.y" /* yacc.c:1646  */
-    {
+  case 130: /* fully_specified_type: type_specifier  */
+#line 1156 "MachineIndependent/glslang.y"
+                     {
         (yyval.interm.type) = (yyvsp[0].interm.type);
 
         parseContext.globalQualifierTypeCheck((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type).qualifier, (yyval.interm.type));
@@ -5519,12 +5968,12 @@
         }
         parseContext.precisionQualifierCheck((yyval.interm.type).loc, (yyval.interm.type).basicType, (yyval.interm.type).qualifier);
     }
-#line 5523 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 5972 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 131:
-#line 1152 "glslang.y" /* yacc.c:1646  */
-    {
+  case 131: /* fully_specified_type: type_qualifier type_specifier  */
+#line 1166 "MachineIndependent/glslang.y"
+                                     {
         parseContext.globalQualifierFixCheck((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier);
         parseContext.globalQualifierTypeCheck((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier, (yyvsp[0].interm.type));
 
@@ -5548,71 +5997,71 @@
              (parseContext.language == EShLangFragment && (yyval.interm.type).qualifier.storage == EvqVaryingIn)))
             (yyval.interm.type).qualifier.smooth = true;
     }
-#line 5552 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 6001 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 132:
-#line 1179 "glslang.y" /* yacc.c:1646  */
-    {
+  case 132: /* invariant_qualifier: INVARIANT  */
+#line 1193 "MachineIndependent/glslang.y"
+                {
         parseContext.globalCheck((yyvsp[0].lex).loc, "invariant");
         parseContext.profileRequires((yyval.interm.type).loc, ENoProfile, 120, 0, "invariant");
         (yyval.interm.type).init((yyvsp[0].lex).loc);
         (yyval.interm.type).qualifier.invariant = true;
     }
-#line 5563 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 6012 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 133:
-#line 1188 "glslang.y" /* yacc.c:1646  */
-    {
+  case 133: /* interpolation_qualifier: SMOOTH  */
+#line 1202 "MachineIndependent/glslang.y"
+             {
         parseContext.globalCheck((yyvsp[0].lex).loc, "smooth");
         parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "smooth");
         parseContext.profileRequires((yyvsp[0].lex).loc, EEsProfile, 300, 0, "smooth");
         (yyval.interm.type).init((yyvsp[0].lex).loc);
         (yyval.interm.type).qualifier.smooth = true;
     }
-#line 5575 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 6024 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 134:
-#line 1195 "glslang.y" /* yacc.c:1646  */
-    {
+  case 134: /* interpolation_qualifier: FLAT  */
+#line 1209 "MachineIndependent/glslang.y"
+           {
         parseContext.globalCheck((yyvsp[0].lex).loc, "flat");
         parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "flat");
         parseContext.profileRequires((yyvsp[0].lex).loc, EEsProfile, 300, 0, "flat");
         (yyval.interm.type).init((yyvsp[0].lex).loc);
         (yyval.interm.type).qualifier.flat = true;
     }
-#line 5587 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 6036 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 135:
-#line 1203 "glslang.y" /* yacc.c:1646  */
-    {
+  case 135: /* interpolation_qualifier: NOPERSPECTIVE  */
+#line 1217 "MachineIndependent/glslang.y"
+                    {
         parseContext.globalCheck((yyvsp[0].lex).loc, "noperspective");
         parseContext.profileRequires((yyvsp[0].lex).loc, EEsProfile, 0, E_GL_NV_shader_noperspective_interpolation, "noperspective");
         parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "noperspective");
         (yyval.interm.type).init((yyvsp[0].lex).loc);
         (yyval.interm.type).qualifier.nopersp = true;
     }
-#line 5599 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 6048 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 136:
-#line 1210 "glslang.y" /* yacc.c:1646  */
-    {
+  case 136: /* interpolation_qualifier: EXPLICITINTERPAMD  */
+#line 1224 "MachineIndependent/glslang.y"
+                        {
         parseContext.globalCheck((yyvsp[0].lex).loc, "__explicitInterpAMD");
         parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile, 450, E_GL_AMD_shader_explicit_vertex_parameter, "explicit interpolation");
         parseContext.profileRequires((yyvsp[0].lex).loc, ECompatibilityProfile, 450, E_GL_AMD_shader_explicit_vertex_parameter, "explicit interpolation");
         (yyval.interm.type).init((yyvsp[0].lex).loc);
         (yyval.interm.type).qualifier.explicitInterp = true;
     }
-#line 5611 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 6060 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 137:
-#line 1217 "glslang.y" /* yacc.c:1646  */
-    {
+  case 137: /* interpolation_qualifier: PERVERTEXNV  */
+#line 1231 "MachineIndependent/glslang.y"
+                  {
         parseContext.globalCheck((yyvsp[0].lex).loc, "pervertexNV");
         parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile, 0, E_GL_NV_fragment_shader_barycentric, "fragment shader barycentric");
         parseContext.profileRequires((yyvsp[0].lex).loc, ECompatibilityProfile, 0, E_GL_NV_fragment_shader_barycentric, "fragment shader barycentric");
@@ -5620,12 +6069,12 @@
         (yyval.interm.type).init((yyvsp[0].lex).loc);
         (yyval.interm.type).qualifier.pervertexNV = true;
     }
-#line 5624 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 6073 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 138:
-#line 1225 "glslang.y" /* yacc.c:1646  */
-    {
+  case 138: /* interpolation_qualifier: PERPRIMITIVENV  */
+#line 1239 "MachineIndependent/glslang.y"
+                     {
         // No need for profile version or extension check. Shader stage already checks both.
         parseContext.globalCheck((yyvsp[0].lex).loc, "perprimitiveNV");
         parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangFragmentMask | EShLangMeshNVMask), "perprimitiveNV");
@@ -5635,109 +6084,109 @@
         (yyval.interm.type).init((yyvsp[0].lex).loc);
         (yyval.interm.type).qualifier.perPrimitiveNV = true;
     }
-#line 5639 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 6088 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 139:
-#line 1235 "glslang.y" /* yacc.c:1646  */
-    {
+  case 139: /* interpolation_qualifier: PERVIEWNV  */
+#line 1249 "MachineIndependent/glslang.y"
+                {
         // No need for profile version or extension check. Shader stage already checks both.
         parseContext.globalCheck((yyvsp[0].lex).loc, "perviewNV");
         parseContext.requireStage((yyvsp[0].lex).loc, EShLangMeshNV, "perviewNV");
         (yyval.interm.type).init((yyvsp[0].lex).loc);
         (yyval.interm.type).qualifier.perViewNV = true;
     }
-#line 5651 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 6100 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 140:
-#line 1242 "glslang.y" /* yacc.c:1646  */
-    {
+  case 140: /* interpolation_qualifier: PERTASKNV  */
+#line 1256 "MachineIndependent/glslang.y"
+                {
         // No need for profile version or extension check. Shader stage already checks both.
         parseContext.globalCheck((yyvsp[0].lex).loc, "taskNV");
         parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangTaskNVMask | EShLangMeshNVMask), "taskNV");
         (yyval.interm.type).init((yyvsp[0].lex).loc);
         (yyval.interm.type).qualifier.perTaskNV = true;
     }
-#line 5663 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 6112 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 141:
-#line 1253 "glslang.y" /* yacc.c:1646  */
-    {
+  case 141: /* layout_qualifier: LAYOUT LEFT_PAREN layout_qualifier_id_list RIGHT_PAREN  */
+#line 1267 "MachineIndependent/glslang.y"
+                                                             {
         (yyval.interm.type) = (yyvsp[-1].interm.type);
     }
-#line 5671 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 6120 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 142:
-#line 1259 "glslang.y" /* yacc.c:1646  */
-    {
+  case 142: /* layout_qualifier_id_list: layout_qualifier_id  */
+#line 1273 "MachineIndependent/glslang.y"
+                          {
         (yyval.interm.type) = (yyvsp[0].interm.type);
     }
-#line 5679 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 6128 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 143:
-#line 1262 "glslang.y" /* yacc.c:1646  */
-    {
+  case 143: /* layout_qualifier_id_list: layout_qualifier_id_list COMMA layout_qualifier_id  */
+#line 1276 "MachineIndependent/glslang.y"
+                                                         {
         (yyval.interm.type) = (yyvsp[-2].interm.type);
         (yyval.interm.type).shaderQualifiers.merge((yyvsp[0].interm.type).shaderQualifiers);
         parseContext.mergeObjectLayoutQualifiers((yyval.interm.type).qualifier, (yyvsp[0].interm.type).qualifier, false);
     }
-#line 5689 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 6138 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 144:
-#line 1269 "glslang.y" /* yacc.c:1646  */
-    {
+  case 144: /* layout_qualifier_id: IDENTIFIER  */
+#line 1283 "MachineIndependent/glslang.y"
+                 {
         (yyval.interm.type).init((yyvsp[0].lex).loc);
         parseContext.setLayoutQualifier((yyvsp[0].lex).loc, (yyval.interm.type), *(yyvsp[0].lex).string);
     }
-#line 5698 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 6147 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 145:
-#line 1273 "glslang.y" /* yacc.c:1646  */
-    {
+  case 145: /* layout_qualifier_id: IDENTIFIER EQUAL constant_expression  */
+#line 1287 "MachineIndependent/glslang.y"
+                                           {
         (yyval.interm.type).init((yyvsp[-2].lex).loc);
         parseContext.setLayoutQualifier((yyvsp[-2].lex).loc, (yyval.interm.type), *(yyvsp[-2].lex).string, (yyvsp[0].interm.intermTypedNode));
     }
-#line 5707 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 6156 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 146:
-#line 1277 "glslang.y" /* yacc.c:1646  */
-    { // because "shared" is both an identifier and a keyword
+  case 146: /* layout_qualifier_id: SHARED  */
+#line 1291 "MachineIndependent/glslang.y"
+             { // because "shared" is both an identifier and a keyword
         (yyval.interm.type).init((yyvsp[0].lex).loc);
         TString strShared("shared");
         parseContext.setLayoutQualifier((yyvsp[0].lex).loc, (yyval.interm.type), strShared);
     }
-#line 5717 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 6166 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 147:
-#line 1286 "glslang.y" /* yacc.c:1646  */
-    {
+  case 147: /* precise_qualifier: PRECISE  */
+#line 1300 "MachineIndependent/glslang.y"
+              {
         parseContext.profileRequires((yyval.interm.type).loc, ECoreProfile | ECompatibilityProfile, 400, E_GL_ARB_gpu_shader5, "precise");
         parseContext.profileRequires((yyvsp[0].lex).loc, EEsProfile, 320, Num_AEP_gpu_shader5, AEP_gpu_shader5, "precise");
         (yyval.interm.type).init((yyvsp[0].lex).loc);
         (yyval.interm.type).qualifier.noContraction = true;
     }
-#line 5728 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 6177 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 148:
-#line 1296 "glslang.y" /* yacc.c:1646  */
-    {
+  case 148: /* type_qualifier: single_type_qualifier  */
+#line 1310 "MachineIndependent/glslang.y"
+                            {
         (yyval.interm.type) = (yyvsp[0].interm.type);
     }
-#line 5736 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 6185 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 149:
-#line 1299 "glslang.y" /* yacc.c:1646  */
-    {
+  case 149: /* type_qualifier: type_qualifier single_type_qualifier  */
+#line 1313 "MachineIndependent/glslang.y"
+                                           {
         (yyval.interm.type) = (yyvsp[-1].interm.type);
         if ((yyval.interm.type).basicType == EbtVoid)
             (yyval.interm.type).basicType = (yyvsp[0].interm.type).basicType;
@@ -5745,135 +6194,135 @@
         (yyval.interm.type).shaderQualifiers.merge((yyvsp[0].interm.type).shaderQualifiers);
         parseContext.mergeQualifiers((yyval.interm.type).loc, (yyval.interm.type).qualifier, (yyvsp[0].interm.type).qualifier, false);
     }
-#line 5749 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 6198 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 150:
-#line 1310 "glslang.y" /* yacc.c:1646  */
-    {
+  case 150: /* single_type_qualifier: storage_qualifier  */
+#line 1324 "MachineIndependent/glslang.y"
+                        {
         (yyval.interm.type) = (yyvsp[0].interm.type);
     }
-#line 5757 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 6206 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 151:
-#line 1313 "glslang.y" /* yacc.c:1646  */
-    {
+  case 151: /* single_type_qualifier: layout_qualifier  */
+#line 1327 "MachineIndependent/glslang.y"
+                       {
         (yyval.interm.type) = (yyvsp[0].interm.type);
     }
-#line 5765 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 6214 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 152:
-#line 1316 "glslang.y" /* yacc.c:1646  */
-    {
+  case 152: /* single_type_qualifier: precision_qualifier  */
+#line 1330 "MachineIndependent/glslang.y"
+                          {
         parseContext.checkPrecisionQualifier((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type).qualifier.precision);
         (yyval.interm.type) = (yyvsp[0].interm.type);
     }
-#line 5774 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 6223 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 153:
-#line 1320 "glslang.y" /* yacc.c:1646  */
-    {
+  case 153: /* single_type_qualifier: interpolation_qualifier  */
+#line 1334 "MachineIndependent/glslang.y"
+                              {
         // allow inheritance of storage qualifier from block declaration
         (yyval.interm.type) = (yyvsp[0].interm.type);
     }
-#line 5783 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 6232 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 154:
-#line 1324 "glslang.y" /* yacc.c:1646  */
-    {
+  case 154: /* single_type_qualifier: invariant_qualifier  */
+#line 1338 "MachineIndependent/glslang.y"
+                          {
         // allow inheritance of storage qualifier from block declaration
         (yyval.interm.type) = (yyvsp[0].interm.type);
     }
-#line 5792 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 6241 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 155:
-#line 1329 "glslang.y" /* yacc.c:1646  */
-    {
+  case 155: /* single_type_qualifier: precise_qualifier  */
+#line 1343 "MachineIndependent/glslang.y"
+                        {
         // allow inheritance of storage qualifier from block declaration
         (yyval.interm.type) = (yyvsp[0].interm.type);
     }
-#line 5801 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 6250 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 156:
-#line 1333 "glslang.y" /* yacc.c:1646  */
-    {
+  case 156: /* single_type_qualifier: non_uniform_qualifier  */
+#line 1347 "MachineIndependent/glslang.y"
+                            {
         (yyval.interm.type) = (yyvsp[0].interm.type);
     }
-#line 5809 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 6258 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 157:
-#line 1340 "glslang.y" /* yacc.c:1646  */
-    {
+  case 157: /* storage_qualifier: CONST  */
+#line 1354 "MachineIndependent/glslang.y"
+            {
         (yyval.interm.type).init((yyvsp[0].lex).loc);
         (yyval.interm.type).qualifier.storage = EvqConst;  // will later turn into EvqConstReadOnly, if the initializer is not constant
     }
-#line 5818 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 6267 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 158:
-#line 1344 "glslang.y" /* yacc.c:1646  */
-    {
+  case 158: /* storage_qualifier: INOUT  */
+#line 1358 "MachineIndependent/glslang.y"
+            {
         parseContext.globalCheck((yyvsp[0].lex).loc, "inout");
         (yyval.interm.type).init((yyvsp[0].lex).loc);
         (yyval.interm.type).qualifier.storage = EvqInOut;
     }
-#line 5828 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 6277 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 159:
-#line 1349 "glslang.y" /* yacc.c:1646  */
-    {
+  case 159: /* storage_qualifier: IN  */
+#line 1363 "MachineIndependent/glslang.y"
+         {
         parseContext.globalCheck((yyvsp[0].lex).loc, "in");
         (yyval.interm.type).init((yyvsp[0].lex).loc);
         // whether this is a parameter "in" or a pipeline "in" will get sorted out a bit later
         (yyval.interm.type).qualifier.storage = EvqIn;
     }
-#line 5839 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 6288 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 160:
-#line 1355 "glslang.y" /* yacc.c:1646  */
-    {
+  case 160: /* storage_qualifier: OUT  */
+#line 1369 "MachineIndependent/glslang.y"
+          {
         parseContext.globalCheck((yyvsp[0].lex).loc, "out");
         (yyval.interm.type).init((yyvsp[0].lex).loc);
         // whether this is a parameter "out" or a pipeline "out" will get sorted out a bit later
         (yyval.interm.type).qualifier.storage = EvqOut;
     }
-#line 5850 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 6299 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 161:
-#line 1361 "glslang.y" /* yacc.c:1646  */
-    {
+  case 161: /* storage_qualifier: CENTROID  */
+#line 1375 "MachineIndependent/glslang.y"
+               {
         parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 120, 0, "centroid");
         parseContext.profileRequires((yyvsp[0].lex).loc, EEsProfile, 300, 0, "centroid");
         parseContext.globalCheck((yyvsp[0].lex).loc, "centroid");
         (yyval.interm.type).init((yyvsp[0].lex).loc);
         (yyval.interm.type).qualifier.centroid = true;
     }
-#line 5862 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 6311 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 162:
-#line 1368 "glslang.y" /* yacc.c:1646  */
-    {
+  case 162: /* storage_qualifier: UNIFORM  */
+#line 1382 "MachineIndependent/glslang.y"
+              {
         parseContext.globalCheck((yyvsp[0].lex).loc, "uniform");
         (yyval.interm.type).init((yyvsp[0].lex).loc);
         (yyval.interm.type).qualifier.storage = EvqUniform;
     }
-#line 5872 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 6321 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 163:
-#line 1373 "glslang.y" /* yacc.c:1646  */
-    {
+  case 163: /* storage_qualifier: SHARED  */
+#line 1387 "MachineIndependent/glslang.y"
+             {
         parseContext.globalCheck((yyvsp[0].lex).loc, "shared");
         parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, 430, E_GL_ARB_compute_shader, "shared");
         parseContext.profileRequires((yyvsp[0].lex).loc, EEsProfile, 310, 0, "shared");
@@ -5881,22 +6330,22 @@
         (yyval.interm.type).init((yyvsp[0].lex).loc);
         (yyval.interm.type).qualifier.storage = EvqShared;
     }
-#line 5885 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 6334 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 164:
-#line 1381 "glslang.y" /* yacc.c:1646  */
-    {
+  case 164: /* storage_qualifier: BUFFER  */
+#line 1395 "MachineIndependent/glslang.y"
+             {
         parseContext.globalCheck((yyvsp[0].lex).loc, "buffer");
         (yyval.interm.type).init((yyvsp[0].lex).loc);
         (yyval.interm.type).qualifier.storage = EvqBuffer;
     }
-#line 5895 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 6344 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 165:
-#line 1387 "glslang.y" /* yacc.c:1646  */
-    {
+  case 165: /* storage_qualifier: ATTRIBUTE  */
+#line 1401 "MachineIndependent/glslang.y"
+                {
         parseContext.requireStage((yyvsp[0].lex).loc, EShLangVertex, "attribute");
         parseContext.checkDeprecated((yyvsp[0].lex).loc, ECoreProfile, 130, "attribute");
         parseContext.checkDeprecated((yyvsp[0].lex).loc, ENoProfile, 130, "attribute");
@@ -5908,12 +6357,12 @@
         (yyval.interm.type).init((yyvsp[0].lex).loc);
         (yyval.interm.type).qualifier.storage = EvqVaryingIn;
     }
-#line 5912 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 6361 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 166:
-#line 1399 "glslang.y" /* yacc.c:1646  */
-    {
+  case 166: /* storage_qualifier: VARYING  */
+#line 1413 "MachineIndependent/glslang.y"
+              {
         parseContext.checkDeprecated((yyvsp[0].lex).loc, ENoProfile, 130, "varying");
         parseContext.checkDeprecated((yyvsp[0].lex).loc, ECoreProfile, 130, "varying");
         parseContext.requireNotRemoved((yyvsp[0].lex).loc, ECoreProfile, 420, "varying");
@@ -5927,33 +6376,33 @@
         else
             (yyval.interm.type).qualifier.storage = EvqVaryingIn;
     }
-#line 5931 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 6380 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 167:
-#line 1413 "glslang.y" /* yacc.c:1646  */
-    {
+  case 167: /* storage_qualifier: PATCH  */
+#line 1427 "MachineIndependent/glslang.y"
+            {
         parseContext.globalCheck((yyvsp[0].lex).loc, "patch");
         parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangTessControlMask | EShLangTessEvaluationMask), "patch");
         (yyval.interm.type).init((yyvsp[0].lex).loc);
         (yyval.interm.type).qualifier.patch = true;
     }
-#line 5942 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 6391 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 168:
-#line 1419 "glslang.y" /* yacc.c:1646  */
-    {
+  case 168: /* storage_qualifier: SAMPLE  */
+#line 1433 "MachineIndependent/glslang.y"
+             {
         parseContext.globalCheck((yyvsp[0].lex).loc, "sample");
         (yyval.interm.type).init((yyvsp[0].lex).loc);
         (yyval.interm.type).qualifier.sample = true;
     }
-#line 5952 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 6401 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 169:
-#line 1424 "glslang.y" /* yacc.c:1646  */
-    {
+  case 169: /* storage_qualifier: HITATTRNV  */
+#line 1438 "MachineIndependent/glslang.y"
+                {
         parseContext.globalCheck((yyvsp[0].lex).loc, "hitAttributeNV");
         parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangIntersectMask | EShLangClosestHitMask
             | EShLangAnyHitMask), "hitAttributeNV");
@@ -5961,12 +6410,12 @@
         (yyval.interm.type).init((yyvsp[0].lex).loc);
         (yyval.interm.type).qualifier.storage = EvqHitAttr;
     }
-#line 5965 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 6414 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 170:
-#line 1432 "glslang.y" /* yacc.c:1646  */
-    {
+  case 170: /* storage_qualifier: HITATTREXT  */
+#line 1446 "MachineIndependent/glslang.y"
+                 {
         parseContext.globalCheck((yyvsp[0].lex).loc, "hitAttributeEXT");
         parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangIntersectMask | EShLangClosestHitMask
             | EShLangAnyHitMask), "hitAttributeEXT");
@@ -5974,12 +6423,12 @@
         (yyval.interm.type).init((yyvsp[0].lex).loc);
         (yyval.interm.type).qualifier.storage = EvqHitAttr;
     }
-#line 5978 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 6427 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 171:
-#line 1440 "glslang.y" /* yacc.c:1646  */
-    {
+  case 171: /* storage_qualifier: PAYLOADNV  */
+#line 1454 "MachineIndependent/glslang.y"
+                {
         parseContext.globalCheck((yyvsp[0].lex).loc, "rayPayloadNV");
         parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangRayGenMask | EShLangClosestHitMask |
             EShLangAnyHitMask | EShLangMissMask), "rayPayloadNV");
@@ -5987,12 +6436,12 @@
         (yyval.interm.type).init((yyvsp[0].lex).loc);
         (yyval.interm.type).qualifier.storage = EvqPayload;
     }
-#line 5991 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 6440 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 172:
-#line 1448 "glslang.y" /* yacc.c:1646  */
-    {
+  case 172: /* storage_qualifier: PAYLOADEXT  */
+#line 1462 "MachineIndependent/glslang.y"
+                 {
         parseContext.globalCheck((yyvsp[0].lex).loc, "rayPayloadEXT");
         parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangRayGenMask | EShLangClosestHitMask |
             EShLangAnyHitMask | EShLangMissMask), "rayPayloadEXT");
@@ -6000,12 +6449,12 @@
         (yyval.interm.type).init((yyvsp[0].lex).loc);
         (yyval.interm.type).qualifier.storage = EvqPayload;
     }
-#line 6004 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 6453 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 173:
-#line 1456 "glslang.y" /* yacc.c:1646  */
-    {
+  case 173: /* storage_qualifier: PAYLOADINNV  */
+#line 1470 "MachineIndependent/glslang.y"
+                  {
         parseContext.globalCheck((yyvsp[0].lex).loc, "rayPayloadInNV");
         parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangClosestHitMask |
             EShLangAnyHitMask | EShLangMissMask), "rayPayloadInNV");
@@ -6013,12 +6462,12 @@
         (yyval.interm.type).init((yyvsp[0].lex).loc);
         (yyval.interm.type).qualifier.storage = EvqPayloadIn;
     }
-#line 6017 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 6466 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 174:
-#line 1464 "glslang.y" /* yacc.c:1646  */
-    {
+  case 174: /* storage_qualifier: PAYLOADINEXT  */
+#line 1478 "MachineIndependent/glslang.y"
+                   {
         parseContext.globalCheck((yyvsp[0].lex).loc, "rayPayloadInEXT");
         parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangClosestHitMask |
             EShLangAnyHitMask | EShLangMissMask), "rayPayloadInEXT");
@@ -6026,12 +6475,12 @@
         (yyval.interm.type).init((yyvsp[0].lex).loc);
         (yyval.interm.type).qualifier.storage = EvqPayloadIn;
     }
-#line 6030 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 6479 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 175:
-#line 1472 "glslang.y" /* yacc.c:1646  */
-    {
+  case 175: /* storage_qualifier: CALLDATANV  */
+#line 1486 "MachineIndependent/glslang.y"
+                 {
         parseContext.globalCheck((yyvsp[0].lex).loc, "callableDataNV");
         parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangRayGenMask |
             EShLangClosestHitMask | EShLangMissMask | EShLangCallableMask), "callableDataNV");
@@ -6039,12 +6488,12 @@
         (yyval.interm.type).init((yyvsp[0].lex).loc);
         (yyval.interm.type).qualifier.storage = EvqCallableData;
     }
-#line 6043 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 6492 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 176:
-#line 1480 "glslang.y" /* yacc.c:1646  */
-    {
+  case 176: /* storage_qualifier: CALLDATAEXT  */
+#line 1494 "MachineIndependent/glslang.y"
+                  {
         parseContext.globalCheck((yyvsp[0].lex).loc, "callableDataEXT");
         parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangRayGenMask |
             EShLangClosestHitMask | EShLangMissMask | EShLangCallableMask), "callableDataEXT");
@@ -6052,222 +6501,222 @@
         (yyval.interm.type).init((yyvsp[0].lex).loc);
         (yyval.interm.type).qualifier.storage = EvqCallableData;
     }
-#line 6056 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 6505 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 177:
-#line 1488 "glslang.y" /* yacc.c:1646  */
-    {
+  case 177: /* storage_qualifier: CALLDATAINNV  */
+#line 1502 "MachineIndependent/glslang.y"
+                   {
         parseContext.globalCheck((yyvsp[0].lex).loc, "callableDataInNV");
         parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangCallableMask), "callableDataInNV");
         parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile, 460, E_GL_NV_ray_tracing, "callableDataInNV");
         (yyval.interm.type).init((yyvsp[0].lex).loc);
         (yyval.interm.type).qualifier.storage = EvqCallableDataIn;
     }
-#line 6068 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 6517 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 178:
-#line 1495 "glslang.y" /* yacc.c:1646  */
-    {
+  case 178: /* storage_qualifier: CALLDATAINEXT  */
+#line 1509 "MachineIndependent/glslang.y"
+                    {
         parseContext.globalCheck((yyvsp[0].lex).loc, "callableDataInEXT");
         parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangCallableMask), "callableDataInEXT");
         parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile, 460, E_GL_EXT_ray_tracing, "callableDataInEXT");
         (yyval.interm.type).init((yyvsp[0].lex).loc);
         (yyval.interm.type).qualifier.storage = EvqCallableDataIn;
     }
-#line 6080 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 6529 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 179:
-#line 1502 "glslang.y" /* yacc.c:1646  */
-    {
+  case 179: /* storage_qualifier: COHERENT  */
+#line 1516 "MachineIndependent/glslang.y"
+               {
         (yyval.interm.type).init((yyvsp[0].lex).loc);
         (yyval.interm.type).qualifier.coherent = true;
     }
-#line 6089 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 6538 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 180:
-#line 1506 "glslang.y" /* yacc.c:1646  */
-    {
+  case 180: /* storage_qualifier: DEVICECOHERENT  */
+#line 1520 "MachineIndependent/glslang.y"
+                     {
         (yyval.interm.type).init((yyvsp[0].lex).loc);
         parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_KHR_memory_scope_semantics, "devicecoherent");
         (yyval.interm.type).qualifier.devicecoherent = true;
     }
-#line 6099 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 6548 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 181:
-#line 1511 "glslang.y" /* yacc.c:1646  */
-    {
+  case 181: /* storage_qualifier: QUEUEFAMILYCOHERENT  */
+#line 1525 "MachineIndependent/glslang.y"
+                          {
         (yyval.interm.type).init((yyvsp[0].lex).loc);
         parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_KHR_memory_scope_semantics, "queuefamilycoherent");
         (yyval.interm.type).qualifier.queuefamilycoherent = true;
     }
-#line 6109 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 6558 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 182:
-#line 1516 "glslang.y" /* yacc.c:1646  */
-    {
+  case 182: /* storage_qualifier: WORKGROUPCOHERENT  */
+#line 1530 "MachineIndependent/glslang.y"
+                        {
         (yyval.interm.type).init((yyvsp[0].lex).loc);
         parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_KHR_memory_scope_semantics, "workgroupcoherent");
         (yyval.interm.type).qualifier.workgroupcoherent = true;
     }
-#line 6119 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 6568 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 183:
-#line 1521 "glslang.y" /* yacc.c:1646  */
-    {
+  case 183: /* storage_qualifier: SUBGROUPCOHERENT  */
+#line 1535 "MachineIndependent/glslang.y"
+                       {
         (yyval.interm.type).init((yyvsp[0].lex).loc);
         parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_KHR_memory_scope_semantics, "subgroupcoherent");
         (yyval.interm.type).qualifier.subgroupcoherent = true;
     }
-#line 6129 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 6578 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 184:
-#line 1526 "glslang.y" /* yacc.c:1646  */
-    {
+  case 184: /* storage_qualifier: NONPRIVATE  */
+#line 1540 "MachineIndependent/glslang.y"
+                 {
         (yyval.interm.type).init((yyvsp[0].lex).loc);
         parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_KHR_memory_scope_semantics, "nonprivate");
         (yyval.interm.type).qualifier.nonprivate = true;
     }
-#line 6139 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 6588 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 185:
-#line 1531 "glslang.y" /* yacc.c:1646  */
-    {
+  case 185: /* storage_qualifier: SHADERCALLCOHERENT  */
+#line 1545 "MachineIndependent/glslang.y"
+                         {
         (yyval.interm.type).init((yyvsp[0].lex).loc);
         parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_EXT_ray_tracing, "shadercallcoherent");
         (yyval.interm.type).qualifier.shadercallcoherent = true;
     }
-#line 6149 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 6598 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 186:
-#line 1536 "glslang.y" /* yacc.c:1646  */
-    {
+  case 186: /* storage_qualifier: VOLATILE  */
+#line 1550 "MachineIndependent/glslang.y"
+               {
         (yyval.interm.type).init((yyvsp[0].lex).loc);
         (yyval.interm.type).qualifier.volatil = true;
     }
-#line 6158 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 6607 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 187:
-#line 1540 "glslang.y" /* yacc.c:1646  */
-    {
+  case 187: /* storage_qualifier: RESTRICT  */
+#line 1554 "MachineIndependent/glslang.y"
+               {
         (yyval.interm.type).init((yyvsp[0].lex).loc);
         (yyval.interm.type).qualifier.restrict = true;
     }
-#line 6167 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 6616 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 188:
-#line 1544 "glslang.y" /* yacc.c:1646  */
-    {
+  case 188: /* storage_qualifier: READONLY  */
+#line 1558 "MachineIndependent/glslang.y"
+               {
         (yyval.interm.type).init((yyvsp[0].lex).loc);
         (yyval.interm.type).qualifier.readonly = true;
     }
-#line 6176 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 6625 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 189:
-#line 1548 "glslang.y" /* yacc.c:1646  */
-    {
+  case 189: /* storage_qualifier: WRITEONLY  */
+#line 1562 "MachineIndependent/glslang.y"
+                {
         (yyval.interm.type).init((yyvsp[0].lex).loc);
         (yyval.interm.type).qualifier.writeonly = true;
     }
-#line 6185 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 6634 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 190:
-#line 1552 "glslang.y" /* yacc.c:1646  */
-    {
+  case 190: /* storage_qualifier: SUBROUTINE  */
+#line 1566 "MachineIndependent/glslang.y"
+                 {
         parseContext.spvRemoved((yyvsp[0].lex).loc, "subroutine");
         parseContext.globalCheck((yyvsp[0].lex).loc, "subroutine");
         parseContext.unimplemented((yyvsp[0].lex).loc, "subroutine");
         (yyval.interm.type).init((yyvsp[0].lex).loc);
     }
-#line 6196 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 6645 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 191:
-#line 1558 "glslang.y" /* yacc.c:1646  */
-    {
+  case 191: /* storage_qualifier: SUBROUTINE LEFT_PAREN type_name_list RIGHT_PAREN  */
+#line 1572 "MachineIndependent/glslang.y"
+                                                       {
         parseContext.spvRemoved((yyvsp[-3].lex).loc, "subroutine");
         parseContext.globalCheck((yyvsp[-3].lex).loc, "subroutine");
         parseContext.unimplemented((yyvsp[-3].lex).loc, "subroutine");
         (yyval.interm.type).init((yyvsp[-3].lex).loc);
     }
-#line 6207 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 6656 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 192:
-#line 1569 "glslang.y" /* yacc.c:1646  */
-    {
+  case 192: /* non_uniform_qualifier: NONUNIFORM  */
+#line 1583 "MachineIndependent/glslang.y"
+                 {
         (yyval.interm.type).init((yyvsp[0].lex).loc);
         (yyval.interm.type).qualifier.nonUniform = true;
     }
-#line 6216 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 6665 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 193:
-#line 1576 "glslang.y" /* yacc.c:1646  */
-    {
+  case 193: /* type_name_list: IDENTIFIER  */
+#line 1590 "MachineIndependent/glslang.y"
+                 {
         // TODO
     }
-#line 6224 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 6673 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 194:
-#line 1579 "glslang.y" /* yacc.c:1646  */
-    {
+  case 194: /* type_name_list: type_name_list COMMA IDENTIFIER  */
+#line 1593 "MachineIndependent/glslang.y"
+                                      {
         // TODO: 4.0 semantics: subroutines
         // 1) make sure each identifier is a type declared earlier with SUBROUTINE
         // 2) save all of the identifiers for future comparison with the declared function
     }
-#line 6234 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 6683 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 195:
-#line 1588 "glslang.y" /* yacc.c:1646  */
-    {
+  case 195: /* type_specifier: type_specifier_nonarray type_parameter_specifier_opt  */
+#line 1602 "MachineIndependent/glslang.y"
+                                                           {
         (yyval.interm.type) = (yyvsp[-1].interm.type);
         (yyval.interm.type).qualifier.precision = parseContext.getDefaultPrecision((yyval.interm.type));
         (yyval.interm.type).typeParameters = (yyvsp[0].interm.typeParameters);
     }
-#line 6244 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 6693 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 196:
-#line 1593 "glslang.y" /* yacc.c:1646  */
-    {
+  case 196: /* type_specifier: type_specifier_nonarray type_parameter_specifier_opt array_specifier  */
+#line 1607 "MachineIndependent/glslang.y"
+                                                                           {
         parseContext.arrayOfArrayVersionCheck((yyvsp[0].interm).loc, (yyvsp[0].interm).arraySizes);
         (yyval.interm.type) = (yyvsp[-2].interm.type);
         (yyval.interm.type).qualifier.precision = parseContext.getDefaultPrecision((yyval.interm.type));
         (yyval.interm.type).typeParameters = (yyvsp[-1].interm.typeParameters);
         (yyval.interm.type).arraySizes = (yyvsp[0].interm).arraySizes;
     }
-#line 6256 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 6705 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 197:
-#line 1603 "glslang.y" /* yacc.c:1646  */
-    {
+  case 197: /* array_specifier: LEFT_BRACKET RIGHT_BRACKET  */
+#line 1617 "MachineIndependent/glslang.y"
+                                 {
         (yyval.interm).loc = (yyvsp[-1].lex).loc;
         (yyval.interm).arraySizes = new TArraySizes;
         (yyval.interm).arraySizes->addInnerSize();
     }
-#line 6266 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 6715 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 198:
-#line 1608 "glslang.y" /* yacc.c:1646  */
-    {
+  case 198: /* array_specifier: LEFT_BRACKET conditional_expression RIGHT_BRACKET  */
+#line 1622 "MachineIndependent/glslang.y"
+                                                        {
         (yyval.interm).loc = (yyvsp[-2].lex).loc;
         (yyval.interm).arraySizes = new TArraySizes;
 
@@ -6275,492 +6724,492 @@
         parseContext.arraySizeCheck((yyvsp[-1].interm.intermTypedNode)->getLoc(), (yyvsp[-1].interm.intermTypedNode), size, "array size");
         (yyval.interm).arraySizes->addInnerSize(size);
     }
-#line 6279 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 6728 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 199:
-#line 1616 "glslang.y" /* yacc.c:1646  */
-    {
+  case 199: /* array_specifier: array_specifier LEFT_BRACKET RIGHT_BRACKET  */
+#line 1630 "MachineIndependent/glslang.y"
+                                                 {
         (yyval.interm) = (yyvsp[-2].interm);
         (yyval.interm).arraySizes->addInnerSize();
     }
-#line 6288 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 6737 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 200:
-#line 1620 "glslang.y" /* yacc.c:1646  */
-    {
+  case 200: /* array_specifier: array_specifier LEFT_BRACKET conditional_expression RIGHT_BRACKET  */
+#line 1634 "MachineIndependent/glslang.y"
+                                                                        {
         (yyval.interm) = (yyvsp[-3].interm);
 
         TArraySize size;
         parseContext.arraySizeCheck((yyvsp[-1].interm.intermTypedNode)->getLoc(), (yyvsp[-1].interm.intermTypedNode), size, "array size");
         (yyval.interm).arraySizes->addInnerSize(size);
     }
-#line 6300 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 6749 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 201:
-#line 1630 "glslang.y" /* yacc.c:1646  */
-    {
+  case 201: /* type_parameter_specifier_opt: type_parameter_specifier  */
+#line 1644 "MachineIndependent/glslang.y"
+                               {
         (yyval.interm.typeParameters) = (yyvsp[0].interm.typeParameters);
     }
-#line 6308 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 6757 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 202:
-#line 1633 "glslang.y" /* yacc.c:1646  */
-    {
+  case 202: /* type_parameter_specifier_opt: %empty  */
+#line 1647 "MachineIndependent/glslang.y"
+                        {
         (yyval.interm.typeParameters) = 0;
     }
-#line 6316 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 6765 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 203:
-#line 1639 "glslang.y" /* yacc.c:1646  */
-    {
+  case 203: /* type_parameter_specifier: LEFT_ANGLE type_parameter_specifier_list RIGHT_ANGLE  */
+#line 1653 "MachineIndependent/glslang.y"
+                                                           {
         (yyval.interm.typeParameters) = (yyvsp[-1].interm.typeParameters);
     }
-#line 6324 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 6773 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 204:
-#line 1645 "glslang.y" /* yacc.c:1646  */
-    {
+  case 204: /* type_parameter_specifier_list: unary_expression  */
+#line 1659 "MachineIndependent/glslang.y"
+                       {
         (yyval.interm.typeParameters) = new TArraySizes;
 
         TArraySize size;
         parseContext.arraySizeCheck((yyvsp[0].interm.intermTypedNode)->getLoc(), (yyvsp[0].interm.intermTypedNode), size, "type parameter");
         (yyval.interm.typeParameters)->addInnerSize(size);
     }
-#line 6336 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 6785 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 205:
-#line 1652 "glslang.y" /* yacc.c:1646  */
-    {
+  case 205: /* type_parameter_specifier_list: type_parameter_specifier_list COMMA unary_expression  */
+#line 1666 "MachineIndependent/glslang.y"
+                                                           {
         (yyval.interm.typeParameters) = (yyvsp[-2].interm.typeParameters);
 
         TArraySize size;
         parseContext.arraySizeCheck((yyvsp[0].interm.intermTypedNode)->getLoc(), (yyvsp[0].interm.intermTypedNode), size, "type parameter");
         (yyval.interm.typeParameters)->addInnerSize(size);
     }
-#line 6348 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 6797 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 206:
-#line 1662 "glslang.y" /* yacc.c:1646  */
-    {
+  case 206: /* type_specifier_nonarray: VOID  */
+#line 1676 "MachineIndependent/glslang.y"
+           {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtVoid;
     }
-#line 6357 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 6806 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 207:
-#line 1666 "glslang.y" /* yacc.c:1646  */
-    {
+  case 207: /* type_specifier_nonarray: FLOAT  */
+#line 1680 "MachineIndependent/glslang.y"
+            {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat;
     }
-#line 6366 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 6815 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 208:
-#line 1670 "glslang.y" /* yacc.c:1646  */
-    {
+  case 208: /* type_specifier_nonarray: INT  */
+#line 1684 "MachineIndependent/glslang.y"
+          {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtInt;
     }
-#line 6375 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 6824 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 209:
-#line 1674 "glslang.y" /* yacc.c:1646  */
-    {
+  case 209: /* type_specifier_nonarray: UINT  */
+#line 1688 "MachineIndependent/glslang.y"
+           {
         parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer");
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtUint;
     }
-#line 6385 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 6834 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 210:
-#line 1679 "glslang.y" /* yacc.c:1646  */
-    {
+  case 210: /* type_specifier_nonarray: BOOL  */
+#line 1693 "MachineIndependent/glslang.y"
+           {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtBool;
     }
-#line 6394 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 6843 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 211:
-#line 1683 "glslang.y" /* yacc.c:1646  */
-    {
+  case 211: /* type_specifier_nonarray: VEC2  */
+#line 1697 "MachineIndependent/glslang.y"
+           {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat;
         (yyval.interm.type).setVector(2);
     }
-#line 6404 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 6853 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 212:
-#line 1688 "glslang.y" /* yacc.c:1646  */
-    {
+  case 212: /* type_specifier_nonarray: VEC3  */
+#line 1702 "MachineIndependent/glslang.y"
+           {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat;
         (yyval.interm.type).setVector(3);
     }
-#line 6414 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 6863 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 213:
-#line 1693 "glslang.y" /* yacc.c:1646  */
-    {
+  case 213: /* type_specifier_nonarray: VEC4  */
+#line 1707 "MachineIndependent/glslang.y"
+           {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat;
         (yyval.interm.type).setVector(4);
     }
-#line 6424 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 6873 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 214:
-#line 1698 "glslang.y" /* yacc.c:1646  */
-    {
+  case 214: /* type_specifier_nonarray: BVEC2  */
+#line 1712 "MachineIndependent/glslang.y"
+            {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtBool;
         (yyval.interm.type).setVector(2);
     }
-#line 6434 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 6883 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 215:
-#line 1703 "glslang.y" /* yacc.c:1646  */
-    {
+  case 215: /* type_specifier_nonarray: BVEC3  */
+#line 1717 "MachineIndependent/glslang.y"
+            {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtBool;
         (yyval.interm.type).setVector(3);
     }
-#line 6444 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 6893 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 216:
-#line 1708 "glslang.y" /* yacc.c:1646  */
-    {
+  case 216: /* type_specifier_nonarray: BVEC4  */
+#line 1722 "MachineIndependent/glslang.y"
+            {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtBool;
         (yyval.interm.type).setVector(4);
     }
-#line 6454 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 6903 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 217:
-#line 1713 "glslang.y" /* yacc.c:1646  */
-    {
+  case 217: /* type_specifier_nonarray: IVEC2  */
+#line 1727 "MachineIndependent/glslang.y"
+            {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtInt;
         (yyval.interm.type).setVector(2);
     }
-#line 6464 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 6913 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 218:
-#line 1718 "glslang.y" /* yacc.c:1646  */
-    {
+  case 218: /* type_specifier_nonarray: IVEC3  */
+#line 1732 "MachineIndependent/glslang.y"
+            {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtInt;
         (yyval.interm.type).setVector(3);
     }
-#line 6474 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 6923 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 219:
-#line 1723 "glslang.y" /* yacc.c:1646  */
-    {
+  case 219: /* type_specifier_nonarray: IVEC4  */
+#line 1737 "MachineIndependent/glslang.y"
+            {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtInt;
         (yyval.interm.type).setVector(4);
     }
-#line 6484 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 6933 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 220:
-#line 1728 "glslang.y" /* yacc.c:1646  */
-    {
+  case 220: /* type_specifier_nonarray: UVEC2  */
+#line 1742 "MachineIndependent/glslang.y"
+            {
         parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer vector");
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtUint;
         (yyval.interm.type).setVector(2);
     }
-#line 6495 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 6944 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 221:
-#line 1734 "glslang.y" /* yacc.c:1646  */
-    {
+  case 221: /* type_specifier_nonarray: UVEC3  */
+#line 1748 "MachineIndependent/glslang.y"
+            {
         parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer vector");
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtUint;
         (yyval.interm.type).setVector(3);
     }
-#line 6506 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 6955 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 222:
-#line 1740 "glslang.y" /* yacc.c:1646  */
-    {
+  case 222: /* type_specifier_nonarray: UVEC4  */
+#line 1754 "MachineIndependent/glslang.y"
+            {
         parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer vector");
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtUint;
         (yyval.interm.type).setVector(4);
     }
-#line 6517 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 6966 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 223:
-#line 1746 "glslang.y" /* yacc.c:1646  */
-    {
+  case 223: /* type_specifier_nonarray: MAT2  */
+#line 1760 "MachineIndependent/glslang.y"
+           {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat;
         (yyval.interm.type).setMatrix(2, 2);
     }
-#line 6527 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 6976 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 224:
-#line 1751 "glslang.y" /* yacc.c:1646  */
-    {
+  case 224: /* type_specifier_nonarray: MAT3  */
+#line 1765 "MachineIndependent/glslang.y"
+           {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat;
         (yyval.interm.type).setMatrix(3, 3);
     }
-#line 6537 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 6986 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 225:
-#line 1756 "glslang.y" /* yacc.c:1646  */
-    {
+  case 225: /* type_specifier_nonarray: MAT4  */
+#line 1770 "MachineIndependent/glslang.y"
+           {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat;
         (yyval.interm.type).setMatrix(4, 4);
     }
-#line 6547 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 6996 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 226:
-#line 1761 "glslang.y" /* yacc.c:1646  */
-    {
+  case 226: /* type_specifier_nonarray: MAT2X2  */
+#line 1775 "MachineIndependent/glslang.y"
+             {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat;
         (yyval.interm.type).setMatrix(2, 2);
     }
-#line 6557 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 7006 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 227:
-#line 1766 "glslang.y" /* yacc.c:1646  */
-    {
+  case 227: /* type_specifier_nonarray: MAT2X3  */
+#line 1780 "MachineIndependent/glslang.y"
+             {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat;
         (yyval.interm.type).setMatrix(2, 3);
     }
-#line 6567 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 7016 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 228:
-#line 1771 "glslang.y" /* yacc.c:1646  */
-    {
+  case 228: /* type_specifier_nonarray: MAT2X4  */
+#line 1785 "MachineIndependent/glslang.y"
+             {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat;
         (yyval.interm.type).setMatrix(2, 4);
     }
-#line 6577 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 7026 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 229:
-#line 1776 "glslang.y" /* yacc.c:1646  */
-    {
+  case 229: /* type_specifier_nonarray: MAT3X2  */
+#line 1790 "MachineIndependent/glslang.y"
+             {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat;
         (yyval.interm.type).setMatrix(3, 2);
     }
-#line 6587 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 7036 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 230:
-#line 1781 "glslang.y" /* yacc.c:1646  */
-    {
+  case 230: /* type_specifier_nonarray: MAT3X3  */
+#line 1795 "MachineIndependent/glslang.y"
+             {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat;
         (yyval.interm.type).setMatrix(3, 3);
     }
-#line 6597 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 7046 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 231:
-#line 1786 "glslang.y" /* yacc.c:1646  */
-    {
+  case 231: /* type_specifier_nonarray: MAT3X4  */
+#line 1800 "MachineIndependent/glslang.y"
+             {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat;
         (yyval.interm.type).setMatrix(3, 4);
     }
-#line 6607 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 7056 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 232:
-#line 1791 "glslang.y" /* yacc.c:1646  */
-    {
+  case 232: /* type_specifier_nonarray: MAT4X2  */
+#line 1805 "MachineIndependent/glslang.y"
+             {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat;
         (yyval.interm.type).setMatrix(4, 2);
     }
-#line 6617 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 7066 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 233:
-#line 1796 "glslang.y" /* yacc.c:1646  */
-    {
+  case 233: /* type_specifier_nonarray: MAT4X3  */
+#line 1810 "MachineIndependent/glslang.y"
+             {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat;
         (yyval.interm.type).setMatrix(4, 3);
     }
-#line 6627 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 7076 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 234:
-#line 1801 "glslang.y" /* yacc.c:1646  */
-    {
+  case 234: /* type_specifier_nonarray: MAT4X4  */
+#line 1815 "MachineIndependent/glslang.y"
+             {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat;
         (yyval.interm.type).setMatrix(4, 4);
     }
-#line 6637 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 7086 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 235:
-#line 1807 "glslang.y" /* yacc.c:1646  */
-    {
+  case 235: /* type_specifier_nonarray: DOUBLE  */
+#line 1821 "MachineIndependent/glslang.y"
+             {
         parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double");
         if (! parseContext.symbolTable.atBuiltInLevel())
             parseContext.doubleCheck((yyvsp[0].lex).loc, "double");
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtDouble;
     }
-#line 6649 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 7098 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 236:
-#line 1814 "glslang.y" /* yacc.c:1646  */
-    {
+  case 236: /* type_specifier_nonarray: FLOAT16_T  */
+#line 1828 "MachineIndependent/glslang.y"
+                {
         parseContext.float16ScalarVectorCheck((yyvsp[0].lex).loc, "float16_t", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat16;
     }
-#line 6659 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 7108 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 237:
-#line 1819 "glslang.y" /* yacc.c:1646  */
-    {
+  case 237: /* type_specifier_nonarray: FLOAT32_T  */
+#line 1833 "MachineIndependent/glslang.y"
+                {
         parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat;
     }
-#line 6669 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 7118 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 238:
-#line 1824 "glslang.y" /* yacc.c:1646  */
-    {
+  case 238: /* type_specifier_nonarray: FLOAT64_T  */
+#line 1838 "MachineIndependent/glslang.y"
+                {
         parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtDouble;
     }
-#line 6679 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 7128 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 239:
-#line 1829 "glslang.y" /* yacc.c:1646  */
-    {
+  case 239: /* type_specifier_nonarray: INT8_T  */
+#line 1843 "MachineIndependent/glslang.y"
+             {
         parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit signed integer", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtInt8;
     }
-#line 6689 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 7138 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 240:
-#line 1834 "glslang.y" /* yacc.c:1646  */
-    {
+  case 240: /* type_specifier_nonarray: UINT8_T  */
+#line 1848 "MachineIndependent/glslang.y"
+              {
         parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit unsigned integer", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtUint8;
     }
-#line 6699 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 7148 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 241:
-#line 1839 "glslang.y" /* yacc.c:1646  */
-    {
+  case 241: /* type_specifier_nonarray: INT16_T  */
+#line 1853 "MachineIndependent/glslang.y"
+              {
         parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit signed integer", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtInt16;
     }
-#line 6709 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 7158 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 242:
-#line 1844 "glslang.y" /* yacc.c:1646  */
-    {
+  case 242: /* type_specifier_nonarray: UINT16_T  */
+#line 1858 "MachineIndependent/glslang.y"
+               {
         parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit unsigned integer", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtUint16;
     }
-#line 6719 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 7168 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 243:
-#line 1849 "glslang.y" /* yacc.c:1646  */
-    {
+  case 243: /* type_specifier_nonarray: INT32_T  */
+#line 1863 "MachineIndependent/glslang.y"
+              {
         parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed integer", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtInt;
     }
-#line 6729 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 7178 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 244:
-#line 1854 "glslang.y" /* yacc.c:1646  */
-    {
+  case 244: /* type_specifier_nonarray: UINT32_T  */
+#line 1868 "MachineIndependent/glslang.y"
+               {
         parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit unsigned integer", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtUint;
     }
-#line 6739 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 7188 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 245:
-#line 1859 "glslang.y" /* yacc.c:1646  */
-    {
+  case 245: /* type_specifier_nonarray: INT64_T  */
+#line 1873 "MachineIndependent/glslang.y"
+              {
         parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtInt64;
     }
-#line 6749 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 7198 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 246:
-#line 1864 "glslang.y" /* yacc.c:1646  */
-    {
+  case 246: /* type_specifier_nonarray: UINT64_T  */
+#line 1878 "MachineIndependent/glslang.y"
+               {
         parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtUint64;
     }
-#line 6759 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 7208 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 247:
-#line 1869 "glslang.y" /* yacc.c:1646  */
-    {
+  case 247: /* type_specifier_nonarray: DVEC2  */
+#line 1883 "MachineIndependent/glslang.y"
+            {
         parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double vector");
         if (! parseContext.symbolTable.atBuiltInLevel())
             parseContext.doubleCheck((yyvsp[0].lex).loc, "double vector");
@@ -6768,12 +7217,12 @@
         (yyval.interm.type).basicType = EbtDouble;
         (yyval.interm.type).setVector(2);
     }
-#line 6772 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 7221 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 248:
-#line 1877 "glslang.y" /* yacc.c:1646  */
-    {
+  case 248: /* type_specifier_nonarray: DVEC3  */
+#line 1891 "MachineIndependent/glslang.y"
+            {
         parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double vector");
         if (! parseContext.symbolTable.atBuiltInLevel())
             parseContext.doubleCheck((yyvsp[0].lex).loc, "double vector");
@@ -6781,12 +7230,12 @@
         (yyval.interm.type).basicType = EbtDouble;
         (yyval.interm.type).setVector(3);
     }
-#line 6785 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 7234 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 249:
-#line 1885 "glslang.y" /* yacc.c:1646  */
-    {
+  case 249: /* type_specifier_nonarray: DVEC4  */
+#line 1899 "MachineIndependent/glslang.y"
+            {
         parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double vector");
         if (! parseContext.symbolTable.atBuiltInLevel())
             parseContext.doubleCheck((yyvsp[0].lex).loc, "double vector");
@@ -6794,375 +7243,375 @@
         (yyval.interm.type).basicType = EbtDouble;
         (yyval.interm.type).setVector(4);
     }
-#line 6798 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 7247 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 250:
-#line 1893 "glslang.y" /* yacc.c:1646  */
-    {
+  case 250: /* type_specifier_nonarray: F16VEC2  */
+#line 1907 "MachineIndependent/glslang.y"
+              {
         parseContext.float16ScalarVectorCheck((yyvsp[0].lex).loc, "half float vector", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat16;
         (yyval.interm.type).setVector(2);
     }
-#line 6809 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 7258 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 251:
-#line 1899 "glslang.y" /* yacc.c:1646  */
-    {
+  case 251: /* type_specifier_nonarray: F16VEC3  */
+#line 1913 "MachineIndependent/glslang.y"
+              {
         parseContext.float16ScalarVectorCheck((yyvsp[0].lex).loc, "half float vector", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat16;
         (yyval.interm.type).setVector(3);
     }
-#line 6820 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 7269 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 252:
-#line 1905 "glslang.y" /* yacc.c:1646  */
-    {
+  case 252: /* type_specifier_nonarray: F16VEC4  */
+#line 1919 "MachineIndependent/glslang.y"
+              {
         parseContext.float16ScalarVectorCheck((yyvsp[0].lex).loc, "half float vector", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat16;
         (yyval.interm.type).setVector(4);
     }
-#line 6831 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 7280 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 253:
-#line 1911 "glslang.y" /* yacc.c:1646  */
-    {
+  case 253: /* type_specifier_nonarray: F32VEC2  */
+#line 1925 "MachineIndependent/glslang.y"
+              {
         parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t vector", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat;
         (yyval.interm.type).setVector(2);
     }
-#line 6842 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 7291 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 254:
-#line 1917 "glslang.y" /* yacc.c:1646  */
-    {
+  case 254: /* type_specifier_nonarray: F32VEC3  */
+#line 1931 "MachineIndependent/glslang.y"
+              {
         parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t vector", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat;
         (yyval.interm.type).setVector(3);
     }
-#line 6853 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 7302 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 255:
-#line 1923 "glslang.y" /* yacc.c:1646  */
-    {
+  case 255: /* type_specifier_nonarray: F32VEC4  */
+#line 1937 "MachineIndependent/glslang.y"
+              {
         parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t vector", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat;
         (yyval.interm.type).setVector(4);
     }
-#line 6864 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 7313 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 256:
-#line 1929 "glslang.y" /* yacc.c:1646  */
-    {
+  case 256: /* type_specifier_nonarray: F64VEC2  */
+#line 1943 "MachineIndependent/glslang.y"
+              {
         parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t vector", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtDouble;
         (yyval.interm.type).setVector(2);
     }
-#line 6875 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 7324 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 257:
-#line 1935 "glslang.y" /* yacc.c:1646  */
-    {
+  case 257: /* type_specifier_nonarray: F64VEC3  */
+#line 1949 "MachineIndependent/glslang.y"
+              {
         parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t vector", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtDouble;
         (yyval.interm.type).setVector(3);
     }
-#line 6886 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 7335 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 258:
-#line 1941 "glslang.y" /* yacc.c:1646  */
-    {
+  case 258: /* type_specifier_nonarray: F64VEC4  */
+#line 1955 "MachineIndependent/glslang.y"
+              {
         parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t vector", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtDouble;
         (yyval.interm.type).setVector(4);
     }
-#line 6897 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 7346 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 259:
-#line 1947 "glslang.y" /* yacc.c:1646  */
-    {
+  case 259: /* type_specifier_nonarray: I8VEC2  */
+#line 1961 "MachineIndependent/glslang.y"
+             {
         parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtInt8;
         (yyval.interm.type).setVector(2);
     }
-#line 6908 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 7357 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 260:
-#line 1953 "glslang.y" /* yacc.c:1646  */
-    {
+  case 260: /* type_specifier_nonarray: I8VEC3  */
+#line 1967 "MachineIndependent/glslang.y"
+             {
         parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtInt8;
         (yyval.interm.type).setVector(3);
     }
-#line 6919 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 7368 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 261:
-#line 1959 "glslang.y" /* yacc.c:1646  */
-    {
+  case 261: /* type_specifier_nonarray: I8VEC4  */
+#line 1973 "MachineIndependent/glslang.y"
+             {
         parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtInt8;
         (yyval.interm.type).setVector(4);
     }
-#line 6930 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 7379 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 262:
-#line 1965 "glslang.y" /* yacc.c:1646  */
-    {
+  case 262: /* type_specifier_nonarray: I16VEC2  */
+#line 1979 "MachineIndependent/glslang.y"
+              {
         parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtInt16;
         (yyval.interm.type).setVector(2);
     }
-#line 6941 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 7390 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 263:
-#line 1971 "glslang.y" /* yacc.c:1646  */
-    {
+  case 263: /* type_specifier_nonarray: I16VEC3  */
+#line 1985 "MachineIndependent/glslang.y"
+              {
         parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtInt16;
         (yyval.interm.type).setVector(3);
     }
-#line 6952 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 7401 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 264:
-#line 1977 "glslang.y" /* yacc.c:1646  */
-    {
+  case 264: /* type_specifier_nonarray: I16VEC4  */
+#line 1991 "MachineIndependent/glslang.y"
+              {
         parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtInt16;
         (yyval.interm.type).setVector(4);
     }
-#line 6963 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 7412 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 265:
-#line 1983 "glslang.y" /* yacc.c:1646  */
-    {
+  case 265: /* type_specifier_nonarray: I32VEC2  */
+#line 1997 "MachineIndependent/glslang.y"
+              {
         parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtInt;
         (yyval.interm.type).setVector(2);
     }
-#line 6974 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 7423 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 266:
-#line 1989 "glslang.y" /* yacc.c:1646  */
-    {
+  case 266: /* type_specifier_nonarray: I32VEC3  */
+#line 2003 "MachineIndependent/glslang.y"
+              {
         parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtInt;
         (yyval.interm.type).setVector(3);
     }
-#line 6985 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 7434 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 267:
-#line 1995 "glslang.y" /* yacc.c:1646  */
-    {
+  case 267: /* type_specifier_nonarray: I32VEC4  */
+#line 2009 "MachineIndependent/glslang.y"
+              {
         parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtInt;
         (yyval.interm.type).setVector(4);
     }
-#line 6996 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 7445 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 268:
-#line 2001 "glslang.y" /* yacc.c:1646  */
-    {
+  case 268: /* type_specifier_nonarray: I64VEC2  */
+#line 2015 "MachineIndependent/glslang.y"
+              {
         parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer vector", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtInt64;
         (yyval.interm.type).setVector(2);
     }
-#line 7007 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 7456 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 269:
-#line 2007 "glslang.y" /* yacc.c:1646  */
-    {
+  case 269: /* type_specifier_nonarray: I64VEC3  */
+#line 2021 "MachineIndependent/glslang.y"
+              {
         parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer vector", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtInt64;
         (yyval.interm.type).setVector(3);
     }
-#line 7018 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 7467 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 270:
-#line 2013 "glslang.y" /* yacc.c:1646  */
-    {
+  case 270: /* type_specifier_nonarray: I64VEC4  */
+#line 2027 "MachineIndependent/glslang.y"
+              {
         parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer vector", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtInt64;
         (yyval.interm.type).setVector(4);
     }
-#line 7029 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 7478 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 271:
-#line 2019 "glslang.y" /* yacc.c:1646  */
-    {
+  case 271: /* type_specifier_nonarray: U8VEC2  */
+#line 2033 "MachineIndependent/glslang.y"
+             {
         parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtUint8;
         (yyval.interm.type).setVector(2);
     }
-#line 7040 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 7489 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 272:
-#line 2025 "glslang.y" /* yacc.c:1646  */
-    {
+  case 272: /* type_specifier_nonarray: U8VEC3  */
+#line 2039 "MachineIndependent/glslang.y"
+             {
         parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtUint8;
         (yyval.interm.type).setVector(3);
     }
-#line 7051 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 7500 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 273:
-#line 2031 "glslang.y" /* yacc.c:1646  */
-    {
+  case 273: /* type_specifier_nonarray: U8VEC4  */
+#line 2045 "MachineIndependent/glslang.y"
+             {
         parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtUint8;
         (yyval.interm.type).setVector(4);
     }
-#line 7062 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 7511 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 274:
-#line 2037 "glslang.y" /* yacc.c:1646  */
-    {
+  case 274: /* type_specifier_nonarray: U16VEC2  */
+#line 2051 "MachineIndependent/glslang.y"
+              {
         parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtUint16;
         (yyval.interm.type).setVector(2);
     }
-#line 7073 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 7522 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 275:
-#line 2043 "glslang.y" /* yacc.c:1646  */
-    {
+  case 275: /* type_specifier_nonarray: U16VEC3  */
+#line 2057 "MachineIndependent/glslang.y"
+              {
         parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtUint16;
         (yyval.interm.type).setVector(3);
     }
-#line 7084 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 7533 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 276:
-#line 2049 "glslang.y" /* yacc.c:1646  */
-    {
+  case 276: /* type_specifier_nonarray: U16VEC4  */
+#line 2063 "MachineIndependent/glslang.y"
+              {
         parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtUint16;
         (yyval.interm.type).setVector(4);
     }
-#line 7095 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 7544 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 277:
-#line 2055 "glslang.y" /* yacc.c:1646  */
-    {
+  case 277: /* type_specifier_nonarray: U32VEC2  */
+#line 2069 "MachineIndependent/glslang.y"
+              {
         parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtUint;
         (yyval.interm.type).setVector(2);
     }
-#line 7106 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 7555 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 278:
-#line 2061 "glslang.y" /* yacc.c:1646  */
-    {
+  case 278: /* type_specifier_nonarray: U32VEC3  */
+#line 2075 "MachineIndependent/glslang.y"
+              {
         parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtUint;
         (yyval.interm.type).setVector(3);
     }
-#line 7117 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 7566 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 279:
-#line 2067 "glslang.y" /* yacc.c:1646  */
-    {
+  case 279: /* type_specifier_nonarray: U32VEC4  */
+#line 2081 "MachineIndependent/glslang.y"
+              {
         parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtUint;
         (yyval.interm.type).setVector(4);
     }
-#line 7128 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 7577 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 280:
-#line 2073 "glslang.y" /* yacc.c:1646  */
-    {
+  case 280: /* type_specifier_nonarray: U64VEC2  */
+#line 2087 "MachineIndependent/glslang.y"
+              {
         parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtUint64;
         (yyval.interm.type).setVector(2);
     }
-#line 7139 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 7588 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 281:
-#line 2079 "glslang.y" /* yacc.c:1646  */
-    {
+  case 281: /* type_specifier_nonarray: U64VEC3  */
+#line 2093 "MachineIndependent/glslang.y"
+              {
         parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtUint64;
         (yyval.interm.type).setVector(3);
     }
-#line 7150 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 7599 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 282:
-#line 2085 "glslang.y" /* yacc.c:1646  */
-    {
+  case 282: /* type_specifier_nonarray: U64VEC4  */
+#line 2099 "MachineIndependent/glslang.y"
+              {
         parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtUint64;
         (yyval.interm.type).setVector(4);
     }
-#line 7161 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 7610 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 283:
-#line 2091 "glslang.y" /* yacc.c:1646  */
-    {
+  case 283: /* type_specifier_nonarray: DMAT2  */
+#line 2105 "MachineIndependent/glslang.y"
+            {
         parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix");
         if (! parseContext.symbolTable.atBuiltInLevel())
             parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix");
@@ -7170,12 +7619,12 @@
         (yyval.interm.type).basicType = EbtDouble;
         (yyval.interm.type).setMatrix(2, 2);
     }
-#line 7174 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 7623 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 284:
-#line 2099 "glslang.y" /* yacc.c:1646  */
-    {
+  case 284: /* type_specifier_nonarray: DMAT3  */
+#line 2113 "MachineIndependent/glslang.y"
+            {
         parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix");
         if (! parseContext.symbolTable.atBuiltInLevel())
             parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix");
@@ -7183,12 +7632,12 @@
         (yyval.interm.type).basicType = EbtDouble;
         (yyval.interm.type).setMatrix(3, 3);
     }
-#line 7187 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 7636 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 285:
-#line 2107 "glslang.y" /* yacc.c:1646  */
-    {
+  case 285: /* type_specifier_nonarray: DMAT4  */
+#line 2121 "MachineIndependent/glslang.y"
+            {
         parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix");
         if (! parseContext.symbolTable.atBuiltInLevel())
             parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix");
@@ -7196,12 +7645,12 @@
         (yyval.interm.type).basicType = EbtDouble;
         (yyval.interm.type).setMatrix(4, 4);
     }
-#line 7200 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 7649 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 286:
-#line 2115 "glslang.y" /* yacc.c:1646  */
-    {
+  case 286: /* type_specifier_nonarray: DMAT2X2  */
+#line 2129 "MachineIndependent/glslang.y"
+              {
         parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix");
         if (! parseContext.symbolTable.atBuiltInLevel())
             parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix");
@@ -7209,12 +7658,12 @@
         (yyval.interm.type).basicType = EbtDouble;
         (yyval.interm.type).setMatrix(2, 2);
     }
-#line 7213 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 7662 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 287:
-#line 2123 "glslang.y" /* yacc.c:1646  */
-    {
+  case 287: /* type_specifier_nonarray: DMAT2X3  */
+#line 2137 "MachineIndependent/glslang.y"
+              {
         parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix");
         if (! parseContext.symbolTable.atBuiltInLevel())
             parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix");
@@ -7222,12 +7671,12 @@
         (yyval.interm.type).basicType = EbtDouble;
         (yyval.interm.type).setMatrix(2, 3);
     }
-#line 7226 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 7675 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 288:
-#line 2131 "glslang.y" /* yacc.c:1646  */
-    {
+  case 288: /* type_specifier_nonarray: DMAT2X4  */
+#line 2145 "MachineIndependent/glslang.y"
+              {
         parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix");
         if (! parseContext.symbolTable.atBuiltInLevel())
             parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix");
@@ -7235,12 +7684,12 @@
         (yyval.interm.type).basicType = EbtDouble;
         (yyval.interm.type).setMatrix(2, 4);
     }
-#line 7239 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 7688 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 289:
-#line 2139 "glslang.y" /* yacc.c:1646  */
-    {
+  case 289: /* type_specifier_nonarray: DMAT3X2  */
+#line 2153 "MachineIndependent/glslang.y"
+              {
         parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix");
         if (! parseContext.symbolTable.atBuiltInLevel())
             parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix");
@@ -7248,12 +7697,12 @@
         (yyval.interm.type).basicType = EbtDouble;
         (yyval.interm.type).setMatrix(3, 2);
     }
-#line 7252 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 7701 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 290:
-#line 2147 "glslang.y" /* yacc.c:1646  */
-    {
+  case 290: /* type_specifier_nonarray: DMAT3X3  */
+#line 2161 "MachineIndependent/glslang.y"
+              {
         parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix");
         if (! parseContext.symbolTable.atBuiltInLevel())
             parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix");
@@ -7261,12 +7710,12 @@
         (yyval.interm.type).basicType = EbtDouble;
         (yyval.interm.type).setMatrix(3, 3);
     }
-#line 7265 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 7714 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 291:
-#line 2155 "glslang.y" /* yacc.c:1646  */
-    {
+  case 291: /* type_specifier_nonarray: DMAT3X4  */
+#line 2169 "MachineIndependent/glslang.y"
+              {
         parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix");
         if (! parseContext.symbolTable.atBuiltInLevel())
             parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix");
@@ -7274,12 +7723,12 @@
         (yyval.interm.type).basicType = EbtDouble;
         (yyval.interm.type).setMatrix(3, 4);
     }
-#line 7278 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 7727 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 292:
-#line 2163 "glslang.y" /* yacc.c:1646  */
-    {
+  case 292: /* type_specifier_nonarray: DMAT4X2  */
+#line 2177 "MachineIndependent/glslang.y"
+              {
         parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix");
         if (! parseContext.symbolTable.atBuiltInLevel())
             parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix");
@@ -7287,12 +7736,12 @@
         (yyval.interm.type).basicType = EbtDouble;
         (yyval.interm.type).setMatrix(4, 2);
     }
-#line 7291 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 7740 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 293:
-#line 2171 "glslang.y" /* yacc.c:1646  */
-    {
+  case 293: /* type_specifier_nonarray: DMAT4X3  */
+#line 2185 "MachineIndependent/glslang.y"
+              {
         parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix");
         if (! parseContext.symbolTable.atBuiltInLevel())
             parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix");
@@ -7300,12 +7749,12 @@
         (yyval.interm.type).basicType = EbtDouble;
         (yyval.interm.type).setMatrix(4, 3);
     }
-#line 7304 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 7753 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 294:
-#line 2179 "glslang.y" /* yacc.c:1646  */
-    {
+  case 294: /* type_specifier_nonarray: DMAT4X4  */
+#line 2193 "MachineIndependent/glslang.y"
+              {
         parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix");
         if (! parseContext.symbolTable.atBuiltInLevel())
             parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix");
@@ -7313,2120 +7762,2340 @@
         (yyval.interm.type).basicType = EbtDouble;
         (yyval.interm.type).setMatrix(4, 4);
     }
-#line 7317 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 7766 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 295:
-#line 2187 "glslang.y" /* yacc.c:1646  */
-    {
+  case 295: /* type_specifier_nonarray: F16MAT2  */
+#line 2201 "MachineIndependent/glslang.y"
+              {
         parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat16;
         (yyval.interm.type).setMatrix(2, 2);
     }
-#line 7328 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 7777 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 296:
-#line 2193 "glslang.y" /* yacc.c:1646  */
-    {
+  case 296: /* type_specifier_nonarray: F16MAT3  */
+#line 2207 "MachineIndependent/glslang.y"
+              {
         parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat16;
         (yyval.interm.type).setMatrix(3, 3);
     }
-#line 7339 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 7788 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 297:
-#line 2199 "glslang.y" /* yacc.c:1646  */
-    {
+  case 297: /* type_specifier_nonarray: F16MAT4  */
+#line 2213 "MachineIndependent/glslang.y"
+              {
         parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat16;
         (yyval.interm.type).setMatrix(4, 4);
     }
-#line 7350 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 7799 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 298:
-#line 2205 "glslang.y" /* yacc.c:1646  */
-    {
+  case 298: /* type_specifier_nonarray: F16MAT2X2  */
+#line 2219 "MachineIndependent/glslang.y"
+                {
         parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat16;
         (yyval.interm.type).setMatrix(2, 2);
     }
-#line 7361 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 7810 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 299:
-#line 2211 "glslang.y" /* yacc.c:1646  */
-    {
+  case 299: /* type_specifier_nonarray: F16MAT2X3  */
+#line 2225 "MachineIndependent/glslang.y"
+                {
         parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat16;
         (yyval.interm.type).setMatrix(2, 3);
     }
-#line 7372 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 7821 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 300:
-#line 2217 "glslang.y" /* yacc.c:1646  */
-    {
+  case 300: /* type_specifier_nonarray: F16MAT2X4  */
+#line 2231 "MachineIndependent/glslang.y"
+                {
         parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat16;
         (yyval.interm.type).setMatrix(2, 4);
     }
-#line 7383 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 7832 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 301:
-#line 2223 "glslang.y" /* yacc.c:1646  */
-    {
+  case 301: /* type_specifier_nonarray: F16MAT3X2  */
+#line 2237 "MachineIndependent/glslang.y"
+                {
         parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat16;
         (yyval.interm.type).setMatrix(3, 2);
     }
-#line 7394 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 7843 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 302:
-#line 2229 "glslang.y" /* yacc.c:1646  */
-    {
+  case 302: /* type_specifier_nonarray: F16MAT3X3  */
+#line 2243 "MachineIndependent/glslang.y"
+                {
         parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat16;
         (yyval.interm.type).setMatrix(3, 3);
     }
-#line 7405 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 7854 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 303:
-#line 2235 "glslang.y" /* yacc.c:1646  */
-    {
+  case 303: /* type_specifier_nonarray: F16MAT3X4  */
+#line 2249 "MachineIndependent/glslang.y"
+                {
         parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat16;
         (yyval.interm.type).setMatrix(3, 4);
     }
-#line 7416 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 7865 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 304:
-#line 2241 "glslang.y" /* yacc.c:1646  */
-    {
+  case 304: /* type_specifier_nonarray: F16MAT4X2  */
+#line 2255 "MachineIndependent/glslang.y"
+                {
         parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat16;
         (yyval.interm.type).setMatrix(4, 2);
     }
-#line 7427 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 7876 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 305:
-#line 2247 "glslang.y" /* yacc.c:1646  */
-    {
+  case 305: /* type_specifier_nonarray: F16MAT4X3  */
+#line 2261 "MachineIndependent/glslang.y"
+                {
         parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat16;
         (yyval.interm.type).setMatrix(4, 3);
     }
-#line 7438 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 7887 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 306:
-#line 2253 "glslang.y" /* yacc.c:1646  */
-    {
+  case 306: /* type_specifier_nonarray: F16MAT4X4  */
+#line 2267 "MachineIndependent/glslang.y"
+                {
         parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat16;
         (yyval.interm.type).setMatrix(4, 4);
     }
-#line 7449 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 7898 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 307:
-#line 2259 "glslang.y" /* yacc.c:1646  */
-    {
+  case 307: /* type_specifier_nonarray: F32MAT2  */
+#line 2273 "MachineIndependent/glslang.y"
+              {
         parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat;
         (yyval.interm.type).setMatrix(2, 2);
     }
-#line 7460 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 7909 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 308:
-#line 2265 "glslang.y" /* yacc.c:1646  */
-    {
+  case 308: /* type_specifier_nonarray: F32MAT3  */
+#line 2279 "MachineIndependent/glslang.y"
+              {
         parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat;
         (yyval.interm.type).setMatrix(3, 3);
     }
-#line 7471 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 7920 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 309:
-#line 2271 "glslang.y" /* yacc.c:1646  */
-    {
+  case 309: /* type_specifier_nonarray: F32MAT4  */
+#line 2285 "MachineIndependent/glslang.y"
+              {
         parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat;
         (yyval.interm.type).setMatrix(4, 4);
     }
-#line 7482 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 7931 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 310:
-#line 2277 "glslang.y" /* yacc.c:1646  */
-    {
+  case 310: /* type_specifier_nonarray: F32MAT2X2  */
+#line 2291 "MachineIndependent/glslang.y"
+                {
         parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat;
         (yyval.interm.type).setMatrix(2, 2);
     }
-#line 7493 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 7942 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 311:
-#line 2283 "glslang.y" /* yacc.c:1646  */
-    {
+  case 311: /* type_specifier_nonarray: F32MAT2X3  */
+#line 2297 "MachineIndependent/glslang.y"
+                {
         parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat;
         (yyval.interm.type).setMatrix(2, 3);
     }
-#line 7504 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 7953 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 312:
-#line 2289 "glslang.y" /* yacc.c:1646  */
-    {
+  case 312: /* type_specifier_nonarray: F32MAT2X4  */
+#line 2303 "MachineIndependent/glslang.y"
+                {
         parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat;
         (yyval.interm.type).setMatrix(2, 4);
     }
-#line 7515 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 7964 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 313:
-#line 2295 "glslang.y" /* yacc.c:1646  */
-    {
+  case 313: /* type_specifier_nonarray: F32MAT3X2  */
+#line 2309 "MachineIndependent/glslang.y"
+                {
         parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat;
         (yyval.interm.type).setMatrix(3, 2);
     }
-#line 7526 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 7975 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 314:
-#line 2301 "glslang.y" /* yacc.c:1646  */
-    {
+  case 314: /* type_specifier_nonarray: F32MAT3X3  */
+#line 2315 "MachineIndependent/glslang.y"
+                {
         parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat;
         (yyval.interm.type).setMatrix(3, 3);
     }
-#line 7537 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 7986 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 315:
-#line 2307 "glslang.y" /* yacc.c:1646  */
-    {
+  case 315: /* type_specifier_nonarray: F32MAT3X4  */
+#line 2321 "MachineIndependent/glslang.y"
+                {
         parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat;
         (yyval.interm.type).setMatrix(3, 4);
     }
-#line 7548 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 7997 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 316:
-#line 2313 "glslang.y" /* yacc.c:1646  */
-    {
+  case 316: /* type_specifier_nonarray: F32MAT4X2  */
+#line 2327 "MachineIndependent/glslang.y"
+                {
         parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat;
         (yyval.interm.type).setMatrix(4, 2);
     }
-#line 7559 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 8008 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 317:
-#line 2319 "glslang.y" /* yacc.c:1646  */
-    {
+  case 317: /* type_specifier_nonarray: F32MAT4X3  */
+#line 2333 "MachineIndependent/glslang.y"
+                {
         parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat;
         (yyval.interm.type).setMatrix(4, 3);
     }
-#line 7570 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 8019 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 318:
-#line 2325 "glslang.y" /* yacc.c:1646  */
-    {
+  case 318: /* type_specifier_nonarray: F32MAT4X4  */
+#line 2339 "MachineIndependent/glslang.y"
+                {
         parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat;
         (yyval.interm.type).setMatrix(4, 4);
     }
-#line 7581 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 8030 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 319:
-#line 2331 "glslang.y" /* yacc.c:1646  */
-    {
+  case 319: /* type_specifier_nonarray: F64MAT2  */
+#line 2345 "MachineIndependent/glslang.y"
+              {
         parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtDouble;
         (yyval.interm.type).setMatrix(2, 2);
     }
-#line 7592 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 8041 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 320:
-#line 2337 "glslang.y" /* yacc.c:1646  */
-    {
+  case 320: /* type_specifier_nonarray: F64MAT3  */
+#line 2351 "MachineIndependent/glslang.y"
+              {
         parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtDouble;
         (yyval.interm.type).setMatrix(3, 3);
     }
-#line 7603 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 8052 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 321:
-#line 2343 "glslang.y" /* yacc.c:1646  */
-    {
+  case 321: /* type_specifier_nonarray: F64MAT4  */
+#line 2357 "MachineIndependent/glslang.y"
+              {
         parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtDouble;
         (yyval.interm.type).setMatrix(4, 4);
     }
-#line 7614 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 8063 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 322:
-#line 2349 "glslang.y" /* yacc.c:1646  */
-    {
+  case 322: /* type_specifier_nonarray: F64MAT2X2  */
+#line 2363 "MachineIndependent/glslang.y"
+                {
         parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtDouble;
         (yyval.interm.type).setMatrix(2, 2);
     }
-#line 7625 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 8074 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 323:
-#line 2355 "glslang.y" /* yacc.c:1646  */
-    {
+  case 323: /* type_specifier_nonarray: F64MAT2X3  */
+#line 2369 "MachineIndependent/glslang.y"
+                {
         parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtDouble;
         (yyval.interm.type).setMatrix(2, 3);
     }
-#line 7636 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 8085 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 324:
-#line 2361 "glslang.y" /* yacc.c:1646  */
-    {
+  case 324: /* type_specifier_nonarray: F64MAT2X4  */
+#line 2375 "MachineIndependent/glslang.y"
+                {
         parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtDouble;
         (yyval.interm.type).setMatrix(2, 4);
     }
-#line 7647 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 8096 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 325:
-#line 2367 "glslang.y" /* yacc.c:1646  */
-    {
+  case 325: /* type_specifier_nonarray: F64MAT3X2  */
+#line 2381 "MachineIndependent/glslang.y"
+                {
         parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtDouble;
         (yyval.interm.type).setMatrix(3, 2);
     }
-#line 7658 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 8107 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 326:
-#line 2373 "glslang.y" /* yacc.c:1646  */
-    {
+  case 326: /* type_specifier_nonarray: F64MAT3X3  */
+#line 2387 "MachineIndependent/glslang.y"
+                {
         parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtDouble;
         (yyval.interm.type).setMatrix(3, 3);
     }
-#line 7669 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 8118 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 327:
-#line 2379 "glslang.y" /* yacc.c:1646  */
-    {
+  case 327: /* type_specifier_nonarray: F64MAT3X4  */
+#line 2393 "MachineIndependent/glslang.y"
+                {
         parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtDouble;
         (yyval.interm.type).setMatrix(3, 4);
     }
-#line 7680 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 8129 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 328:
-#line 2385 "glslang.y" /* yacc.c:1646  */
-    {
+  case 328: /* type_specifier_nonarray: F64MAT4X2  */
+#line 2399 "MachineIndependent/glslang.y"
+                {
         parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtDouble;
         (yyval.interm.type).setMatrix(4, 2);
     }
-#line 7691 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 8140 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 329:
-#line 2391 "glslang.y" /* yacc.c:1646  */
-    {
+  case 329: /* type_specifier_nonarray: F64MAT4X3  */
+#line 2405 "MachineIndependent/glslang.y"
+                {
         parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtDouble;
         (yyval.interm.type).setMatrix(4, 3);
     }
-#line 7702 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 8151 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 330:
-#line 2397 "glslang.y" /* yacc.c:1646  */
-    {
+  case 330: /* type_specifier_nonarray: F64MAT4X4  */
+#line 2411 "MachineIndependent/glslang.y"
+                {
         parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtDouble;
         (yyval.interm.type).setMatrix(4, 4);
     }
-#line 7713 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 8162 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 331:
-#line 2403 "glslang.y" /* yacc.c:1646  */
-    {
+  case 331: /* type_specifier_nonarray: ACCSTRUCTNV  */
+#line 2417 "MachineIndependent/glslang.y"
+                  {
        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
        (yyval.interm.type).basicType = EbtAccStruct;
     }
-#line 7722 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 8171 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 332:
-#line 2407 "glslang.y" /* yacc.c:1646  */
-    {
+  case 332: /* type_specifier_nonarray: ACCSTRUCTEXT  */
+#line 2421 "MachineIndependent/glslang.y"
+                   {
        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
        (yyval.interm.type).basicType = EbtAccStruct;
     }
-#line 7731 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 8180 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 333:
-#line 2411 "glslang.y" /* yacc.c:1646  */
-    {
+  case 333: /* type_specifier_nonarray: RAYQUERYEXT  */
+#line 2425 "MachineIndependent/glslang.y"
+                  {
        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
        (yyval.interm.type).basicType = EbtRayQuery;
     }
-#line 7740 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 8189 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 334:
-#line 2415 "glslang.y" /* yacc.c:1646  */
-    {
+  case 334: /* type_specifier_nonarray: ATOMIC_UINT  */
+#line 2429 "MachineIndependent/glslang.y"
+                  {
         parseContext.vulkanRemoved((yyvsp[0].lex).loc, "atomic counter types");
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtAtomicUint;
     }
-#line 7750 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 8199 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 335:
-#line 2420 "glslang.y" /* yacc.c:1646  */
-    {
+  case 335: /* type_specifier_nonarray: SAMPLER1D  */
+#line 2434 "MachineIndependent/glslang.y"
+                {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.set(EbtFloat, Esd1D);
     }
-#line 7760 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 8209 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 336:
-#line 2426 "glslang.y" /* yacc.c:1646  */
-    {
+  case 336: /* type_specifier_nonarray: SAMPLER2D  */
+#line 2440 "MachineIndependent/glslang.y"
+                {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.set(EbtFloat, Esd2D);
     }
-#line 7770 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 8219 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 337:
-#line 2431 "glslang.y" /* yacc.c:1646  */
-    {
+  case 337: /* type_specifier_nonarray: SAMPLER3D  */
+#line 2445 "MachineIndependent/glslang.y"
+                {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.set(EbtFloat, Esd3D);
     }
-#line 7780 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 8229 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 338:
-#line 2436 "glslang.y" /* yacc.c:1646  */
-    {
+  case 338: /* type_specifier_nonarray: SAMPLERCUBE  */
+#line 2450 "MachineIndependent/glslang.y"
+                  {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.set(EbtFloat, EsdCube);
     }
-#line 7790 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 8239 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 339:
-#line 2441 "glslang.y" /* yacc.c:1646  */
-    {
+  case 339: /* type_specifier_nonarray: SAMPLER2DSHADOW  */
+#line 2455 "MachineIndependent/glslang.y"
+                      {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.set(EbtFloat, Esd2D, false, true);
     }
-#line 7800 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 8249 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 340:
-#line 2446 "glslang.y" /* yacc.c:1646  */
-    {
+  case 340: /* type_specifier_nonarray: SAMPLERCUBESHADOW  */
+#line 2460 "MachineIndependent/glslang.y"
+                        {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.set(EbtFloat, EsdCube, false, true);
     }
-#line 7810 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 8259 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 341:
-#line 2451 "glslang.y" /* yacc.c:1646  */
-    {
+  case 341: /* type_specifier_nonarray: SAMPLER2DARRAY  */
+#line 2465 "MachineIndependent/glslang.y"
+                     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.set(EbtFloat, Esd2D, true);
     }
-#line 7820 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 8269 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 342:
-#line 2456 "glslang.y" /* yacc.c:1646  */
-    {
+  case 342: /* type_specifier_nonarray: SAMPLER2DARRAYSHADOW  */
+#line 2470 "MachineIndependent/glslang.y"
+                           {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.set(EbtFloat, Esd2D, true, true);
     }
-#line 7830 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 8279 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 343:
-#line 2462 "glslang.y" /* yacc.c:1646  */
-    {
+  case 343: /* type_specifier_nonarray: SAMPLER1DSHADOW  */
+#line 2476 "MachineIndependent/glslang.y"
+                      {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.set(EbtFloat, Esd1D, false, true);
     }
-#line 7840 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 8289 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 344:
-#line 2467 "glslang.y" /* yacc.c:1646  */
-    {
+  case 344: /* type_specifier_nonarray: SAMPLER1DARRAY  */
+#line 2481 "MachineIndependent/glslang.y"
+                     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.set(EbtFloat, Esd1D, true);
     }
-#line 7850 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 8299 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 345:
-#line 2472 "glslang.y" /* yacc.c:1646  */
-    {
+  case 345: /* type_specifier_nonarray: SAMPLER1DARRAYSHADOW  */
+#line 2486 "MachineIndependent/glslang.y"
+                           {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.set(EbtFloat, Esd1D, true, true);
     }
-#line 7860 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 8309 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 346:
-#line 2477 "glslang.y" /* yacc.c:1646  */
-    {
+  case 346: /* type_specifier_nonarray: SAMPLERCUBEARRAY  */
+#line 2491 "MachineIndependent/glslang.y"
+                       {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.set(EbtFloat, EsdCube, true);
     }
-#line 7870 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 8319 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 347:
-#line 2482 "glslang.y" /* yacc.c:1646  */
-    {
+  case 347: /* type_specifier_nonarray: SAMPLERCUBEARRAYSHADOW  */
+#line 2496 "MachineIndependent/glslang.y"
+                             {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.set(EbtFloat, EsdCube, true, true);
     }
-#line 7880 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 8329 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 348:
-#line 2487 "glslang.y" /* yacc.c:1646  */
-    {
+  case 348: /* type_specifier_nonarray: F16SAMPLER1D  */
+#line 2501 "MachineIndependent/glslang.y"
+                   {
         parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.set(EbtFloat16, Esd1D);
     }
-#line 7891 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 8340 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 349:
-#line 2493 "glslang.y" /* yacc.c:1646  */
-    {
+  case 349: /* type_specifier_nonarray: F16SAMPLER2D  */
+#line 2507 "MachineIndependent/glslang.y"
+                   {
         parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.set(EbtFloat16, Esd2D);
     }
-#line 7902 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 8351 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 350:
-#line 2499 "glslang.y" /* yacc.c:1646  */
-    {
+  case 350: /* type_specifier_nonarray: F16SAMPLER3D  */
+#line 2513 "MachineIndependent/glslang.y"
+                   {
         parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.set(EbtFloat16, Esd3D);
     }
-#line 7913 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 8362 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 351:
-#line 2505 "glslang.y" /* yacc.c:1646  */
-    {
+  case 351: /* type_specifier_nonarray: F16SAMPLERCUBE  */
+#line 2519 "MachineIndependent/glslang.y"
+                     {
         parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.set(EbtFloat16, EsdCube);
     }
-#line 7924 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 8373 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 352:
-#line 2511 "glslang.y" /* yacc.c:1646  */
-    {
+  case 352: /* type_specifier_nonarray: F16SAMPLER1DSHADOW  */
+#line 2525 "MachineIndependent/glslang.y"
+                         {
         parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.set(EbtFloat16, Esd1D, false, true);
     }
-#line 7935 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 8384 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 353:
-#line 2517 "glslang.y" /* yacc.c:1646  */
-    {
+  case 353: /* type_specifier_nonarray: F16SAMPLER2DSHADOW  */
+#line 2531 "MachineIndependent/glslang.y"
+                         {
         parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.set(EbtFloat16, Esd2D, false, true);
     }
-#line 7946 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 8395 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 354:
-#line 2523 "glslang.y" /* yacc.c:1646  */
-    {
+  case 354: /* type_specifier_nonarray: F16SAMPLERCUBESHADOW  */
+#line 2537 "MachineIndependent/glslang.y"
+                           {
         parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.set(EbtFloat16, EsdCube, false, true);
     }
-#line 7957 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 8406 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 355:
-#line 2529 "glslang.y" /* yacc.c:1646  */
-    {
+  case 355: /* type_specifier_nonarray: F16SAMPLER1DARRAY  */
+#line 2543 "MachineIndependent/glslang.y"
+                        {
         parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.set(EbtFloat16, Esd1D, true);
     }
-#line 7968 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 8417 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 356:
-#line 2535 "glslang.y" /* yacc.c:1646  */
-    {
+  case 356: /* type_specifier_nonarray: F16SAMPLER2DARRAY  */
+#line 2549 "MachineIndependent/glslang.y"
+                        {
         parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.set(EbtFloat16, Esd2D, true);
     }
-#line 7979 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 8428 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 357:
-#line 2541 "glslang.y" /* yacc.c:1646  */
-    {
+  case 357: /* type_specifier_nonarray: F16SAMPLER1DARRAYSHADOW  */
+#line 2555 "MachineIndependent/glslang.y"
+                              {
         parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.set(EbtFloat16, Esd1D, true, true);
     }
-#line 7990 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 8439 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 358:
-#line 2547 "glslang.y" /* yacc.c:1646  */
-    {
+  case 358: /* type_specifier_nonarray: F16SAMPLER2DARRAYSHADOW  */
+#line 2561 "MachineIndependent/glslang.y"
+                              {
         parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.set(EbtFloat16, Esd2D, true, true);
     }
-#line 8001 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 8450 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 359:
-#line 2553 "glslang.y" /* yacc.c:1646  */
-    {
+  case 359: /* type_specifier_nonarray: F16SAMPLERCUBEARRAY  */
+#line 2567 "MachineIndependent/glslang.y"
+                          {
         parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.set(EbtFloat16, EsdCube, true);
     }
-#line 8012 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 8461 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 360:
-#line 2559 "glslang.y" /* yacc.c:1646  */
-    {
+  case 360: /* type_specifier_nonarray: F16SAMPLERCUBEARRAYSHADOW  */
+#line 2573 "MachineIndependent/glslang.y"
+                                {
         parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.set(EbtFloat16, EsdCube, true, true);
     }
-#line 8023 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 8472 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 361:
-#line 2565 "glslang.y" /* yacc.c:1646  */
-    {
+  case 361: /* type_specifier_nonarray: ISAMPLER1D  */
+#line 2579 "MachineIndependent/glslang.y"
+                 {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.set(EbtInt, Esd1D);
     }
-#line 8033 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 8482 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 362:
-#line 2571 "glslang.y" /* yacc.c:1646  */
-    {
+  case 362: /* type_specifier_nonarray: ISAMPLER2D  */
+#line 2585 "MachineIndependent/glslang.y"
+                 {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.set(EbtInt, Esd2D);
     }
-#line 8043 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 8492 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 363:
-#line 2576 "glslang.y" /* yacc.c:1646  */
-    {
+  case 363: /* type_specifier_nonarray: ISAMPLER3D  */
+#line 2590 "MachineIndependent/glslang.y"
+                 {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.set(EbtInt, Esd3D);
     }
-#line 8053 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 8502 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 364:
-#line 2581 "glslang.y" /* yacc.c:1646  */
-    {
+  case 364: /* type_specifier_nonarray: ISAMPLERCUBE  */
+#line 2595 "MachineIndependent/glslang.y"
+                   {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.set(EbtInt, EsdCube);
     }
-#line 8063 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 8512 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 365:
-#line 2586 "glslang.y" /* yacc.c:1646  */
-    {
+  case 365: /* type_specifier_nonarray: ISAMPLER2DARRAY  */
+#line 2600 "MachineIndependent/glslang.y"
+                      {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.set(EbtInt, Esd2D, true);
     }
-#line 8073 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 8522 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 366:
-#line 2591 "glslang.y" /* yacc.c:1646  */
-    {
+  case 366: /* type_specifier_nonarray: USAMPLER2D  */
+#line 2605 "MachineIndependent/glslang.y"
+                 {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.set(EbtUint, Esd2D);
     }
-#line 8083 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 8532 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 367:
-#line 2596 "glslang.y" /* yacc.c:1646  */
-    {
+  case 367: /* type_specifier_nonarray: USAMPLER3D  */
+#line 2610 "MachineIndependent/glslang.y"
+                 {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.set(EbtUint, Esd3D);
     }
-#line 8093 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 8542 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 368:
-#line 2601 "glslang.y" /* yacc.c:1646  */
-    {
+  case 368: /* type_specifier_nonarray: USAMPLERCUBE  */
+#line 2615 "MachineIndependent/glslang.y"
+                   {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.set(EbtUint, EsdCube);
     }
-#line 8103 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 8552 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 369:
-#line 2607 "glslang.y" /* yacc.c:1646  */
-    {
+  case 369: /* type_specifier_nonarray: ISAMPLER1DARRAY  */
+#line 2621 "MachineIndependent/glslang.y"
+                      {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.set(EbtInt, Esd1D, true);
     }
-#line 8113 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 8562 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 370:
-#line 2612 "glslang.y" /* yacc.c:1646  */
-    {
+  case 370: /* type_specifier_nonarray: ISAMPLERCUBEARRAY  */
+#line 2626 "MachineIndependent/glslang.y"
+                        {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.set(EbtInt, EsdCube, true);
     }
-#line 8123 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 8572 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 371:
-#line 2617 "glslang.y" /* yacc.c:1646  */
-    {
+  case 371: /* type_specifier_nonarray: USAMPLER1D  */
+#line 2631 "MachineIndependent/glslang.y"
+                 {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.set(EbtUint, Esd1D);
     }
-#line 8133 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 8582 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 372:
-#line 2622 "glslang.y" /* yacc.c:1646  */
-    {
+  case 372: /* type_specifier_nonarray: USAMPLER1DARRAY  */
+#line 2636 "MachineIndependent/glslang.y"
+                      {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.set(EbtUint, Esd1D, true);
     }
-#line 8143 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 8592 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 373:
-#line 2627 "glslang.y" /* yacc.c:1646  */
-    {
+  case 373: /* type_specifier_nonarray: USAMPLERCUBEARRAY  */
+#line 2641 "MachineIndependent/glslang.y"
+                        {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.set(EbtUint, EsdCube, true);
     }
-#line 8153 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 8602 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 374:
-#line 2632 "glslang.y" /* yacc.c:1646  */
-    {
+  case 374: /* type_specifier_nonarray: TEXTURECUBEARRAY  */
+#line 2646 "MachineIndependent/glslang.y"
+                       {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setTexture(EbtFloat, EsdCube, true);
     }
-#line 8163 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 8612 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 375:
-#line 2637 "glslang.y" /* yacc.c:1646  */
-    {
+  case 375: /* type_specifier_nonarray: ITEXTURECUBEARRAY  */
+#line 2651 "MachineIndependent/glslang.y"
+                        {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setTexture(EbtInt, EsdCube, true);
     }
-#line 8173 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 8622 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 376:
-#line 2642 "glslang.y" /* yacc.c:1646  */
-    {
+  case 376: /* type_specifier_nonarray: UTEXTURECUBEARRAY  */
+#line 2656 "MachineIndependent/glslang.y"
+                        {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setTexture(EbtUint, EsdCube, true);
     }
-#line 8183 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 8632 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 377:
-#line 2648 "glslang.y" /* yacc.c:1646  */
-    {
+  case 377: /* type_specifier_nonarray: USAMPLER2DARRAY  */
+#line 2662 "MachineIndependent/glslang.y"
+                      {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.set(EbtUint, Esd2D, true);
     }
-#line 8193 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 8642 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 378:
-#line 2653 "glslang.y" /* yacc.c:1646  */
-    {
+  case 378: /* type_specifier_nonarray: TEXTURE2D  */
+#line 2667 "MachineIndependent/glslang.y"
+                {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D);
     }
-#line 8203 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 8652 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 379:
-#line 2658 "glslang.y" /* yacc.c:1646  */
-    {
+  case 379: /* type_specifier_nonarray: TEXTURE3D  */
+#line 2672 "MachineIndependent/glslang.y"
+                {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setTexture(EbtFloat, Esd3D);
     }
-#line 8213 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 8662 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 380:
-#line 2663 "glslang.y" /* yacc.c:1646  */
-    {
+  case 380: /* type_specifier_nonarray: TEXTURE2DARRAY  */
+#line 2677 "MachineIndependent/glslang.y"
+                     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D, true);
     }
-#line 8223 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 8672 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 381:
-#line 2668 "glslang.y" /* yacc.c:1646  */
-    {
+  case 381: /* type_specifier_nonarray: TEXTURECUBE  */
+#line 2682 "MachineIndependent/glslang.y"
+                  {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setTexture(EbtFloat, EsdCube);
     }
-#line 8233 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 8682 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 382:
-#line 2673 "glslang.y" /* yacc.c:1646  */
-    {
+  case 382: /* type_specifier_nonarray: ITEXTURE2D  */
+#line 2687 "MachineIndependent/glslang.y"
+                 {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D);
     }
-#line 8243 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 8692 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 383:
-#line 2678 "glslang.y" /* yacc.c:1646  */
-    {
+  case 383: /* type_specifier_nonarray: ITEXTURE3D  */
+#line 2692 "MachineIndependent/glslang.y"
+                 {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setTexture(EbtInt, Esd3D);
     }
-#line 8253 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 8702 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 384:
-#line 2683 "glslang.y" /* yacc.c:1646  */
-    {
+  case 384: /* type_specifier_nonarray: ITEXTURECUBE  */
+#line 2697 "MachineIndependent/glslang.y"
+                   {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setTexture(EbtInt, EsdCube);
     }
-#line 8263 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 8712 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 385:
-#line 2688 "glslang.y" /* yacc.c:1646  */
-    {
+  case 385: /* type_specifier_nonarray: ITEXTURE2DARRAY  */
+#line 2702 "MachineIndependent/glslang.y"
+                      {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D, true);
     }
-#line 8273 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 8722 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 386:
-#line 2693 "glslang.y" /* yacc.c:1646  */
-    {
+  case 386: /* type_specifier_nonarray: UTEXTURE2D  */
+#line 2707 "MachineIndependent/glslang.y"
+                 {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D);
     }
-#line 8283 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 8732 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 387:
-#line 2698 "glslang.y" /* yacc.c:1646  */
-    {
+  case 387: /* type_specifier_nonarray: UTEXTURE3D  */
+#line 2712 "MachineIndependent/glslang.y"
+                 {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setTexture(EbtUint, Esd3D);
     }
-#line 8293 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 8742 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 388:
-#line 2703 "glslang.y" /* yacc.c:1646  */
-    {
+  case 388: /* type_specifier_nonarray: UTEXTURECUBE  */
+#line 2717 "MachineIndependent/glslang.y"
+                   {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setTexture(EbtUint, EsdCube);
     }
-#line 8303 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 8752 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 389:
-#line 2708 "glslang.y" /* yacc.c:1646  */
-    {
+  case 389: /* type_specifier_nonarray: UTEXTURE2DARRAY  */
+#line 2722 "MachineIndependent/glslang.y"
+                      {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D, true);
     }
-#line 8313 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 8762 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 390:
-#line 2713 "glslang.y" /* yacc.c:1646  */
-    {
+  case 390: /* type_specifier_nonarray: SAMPLER  */
+#line 2727 "MachineIndependent/glslang.y"
+              {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setPureSampler(false);
     }
-#line 8323 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 8772 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 391:
-#line 2718 "glslang.y" /* yacc.c:1646  */
-    {
+  case 391: /* type_specifier_nonarray: SAMPLERSHADOW  */
+#line 2732 "MachineIndependent/glslang.y"
+                    {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setPureSampler(true);
     }
-#line 8333 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 8782 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 392:
-#line 2724 "glslang.y" /* yacc.c:1646  */
-    {
+  case 392: /* type_specifier_nonarray: SAMPLER2DRECT  */
+#line 2738 "MachineIndependent/glslang.y"
+                    {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.set(EbtFloat, EsdRect);
     }
-#line 8343 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 8792 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 393:
-#line 2729 "glslang.y" /* yacc.c:1646  */
-    {
+  case 393: /* type_specifier_nonarray: SAMPLER2DRECTSHADOW  */
+#line 2743 "MachineIndependent/glslang.y"
+                          {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.set(EbtFloat, EsdRect, false, true);
     }
-#line 8353 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 8802 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 394:
-#line 2734 "glslang.y" /* yacc.c:1646  */
-    {
+  case 394: /* type_specifier_nonarray: F16SAMPLER2DRECT  */
+#line 2748 "MachineIndependent/glslang.y"
+                       {
         parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.set(EbtFloat16, EsdRect);
     }
-#line 8364 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 8813 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 395:
-#line 2740 "glslang.y" /* yacc.c:1646  */
-    {
+  case 395: /* type_specifier_nonarray: F16SAMPLER2DRECTSHADOW  */
+#line 2754 "MachineIndependent/glslang.y"
+                             {
         parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.set(EbtFloat16, EsdRect, false, true);
     }
-#line 8375 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 8824 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 396:
-#line 2746 "glslang.y" /* yacc.c:1646  */
-    {
+  case 396: /* type_specifier_nonarray: ISAMPLER2DRECT  */
+#line 2760 "MachineIndependent/glslang.y"
+                     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.set(EbtInt, EsdRect);
     }
-#line 8385 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 8834 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 397:
-#line 2751 "glslang.y" /* yacc.c:1646  */
-    {
+  case 397: /* type_specifier_nonarray: USAMPLER2DRECT  */
+#line 2765 "MachineIndependent/glslang.y"
+                     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.set(EbtUint, EsdRect);
     }
-#line 8395 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 8844 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 398:
-#line 2756 "glslang.y" /* yacc.c:1646  */
-    {
+  case 398: /* type_specifier_nonarray: SAMPLERBUFFER  */
+#line 2770 "MachineIndependent/glslang.y"
+                    {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.set(EbtFloat, EsdBuffer);
     }
-#line 8405 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 8854 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 399:
-#line 2761 "glslang.y" /* yacc.c:1646  */
-    {
+  case 399: /* type_specifier_nonarray: F16SAMPLERBUFFER  */
+#line 2775 "MachineIndependent/glslang.y"
+                       {
         parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.set(EbtFloat16, EsdBuffer);
     }
-#line 8416 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 8865 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 400:
-#line 2767 "glslang.y" /* yacc.c:1646  */
-    {
+  case 400: /* type_specifier_nonarray: ISAMPLERBUFFER  */
+#line 2781 "MachineIndependent/glslang.y"
+                     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.set(EbtInt, EsdBuffer);
     }
-#line 8426 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 8875 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 401:
-#line 2772 "glslang.y" /* yacc.c:1646  */
-    {
+  case 401: /* type_specifier_nonarray: USAMPLERBUFFER  */
+#line 2786 "MachineIndependent/glslang.y"
+                     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.set(EbtUint, EsdBuffer);
     }
-#line 8436 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 8885 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 402:
-#line 2777 "glslang.y" /* yacc.c:1646  */
-    {
+  case 402: /* type_specifier_nonarray: SAMPLER2DMS  */
+#line 2791 "MachineIndependent/glslang.y"
+                  {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.set(EbtFloat, Esd2D, false, false, true);
     }
-#line 8446 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 8895 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 403:
-#line 2782 "glslang.y" /* yacc.c:1646  */
-    {
+  case 403: /* type_specifier_nonarray: F16SAMPLER2DMS  */
+#line 2796 "MachineIndependent/glslang.y"
+                     {
         parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.set(EbtFloat16, Esd2D, false, false, true);
     }
-#line 8457 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 8906 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 404:
-#line 2788 "glslang.y" /* yacc.c:1646  */
-    {
+  case 404: /* type_specifier_nonarray: ISAMPLER2DMS  */
+#line 2802 "MachineIndependent/glslang.y"
+                   {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.set(EbtInt, Esd2D, false, false, true);
     }
-#line 8467 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 8916 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 405:
-#line 2793 "glslang.y" /* yacc.c:1646  */
-    {
+  case 405: /* type_specifier_nonarray: USAMPLER2DMS  */
+#line 2807 "MachineIndependent/glslang.y"
+                   {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.set(EbtUint, Esd2D, false, false, true);
     }
-#line 8477 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 8926 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 406:
-#line 2798 "glslang.y" /* yacc.c:1646  */
-    {
+  case 406: /* type_specifier_nonarray: SAMPLER2DMSARRAY  */
+#line 2812 "MachineIndependent/glslang.y"
+                       {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.set(EbtFloat, Esd2D, true, false, true);
     }
-#line 8487 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 8936 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 407:
-#line 2803 "glslang.y" /* yacc.c:1646  */
-    {
+  case 407: /* type_specifier_nonarray: F16SAMPLER2DMSARRAY  */
+#line 2817 "MachineIndependent/glslang.y"
+                          {
         parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.set(EbtFloat16, Esd2D, true, false, true);
     }
-#line 8498 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 8947 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 408:
-#line 2809 "glslang.y" /* yacc.c:1646  */
-    {
+  case 408: /* type_specifier_nonarray: ISAMPLER2DMSARRAY  */
+#line 2823 "MachineIndependent/glslang.y"
+                        {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.set(EbtInt, Esd2D, true, false, true);
     }
-#line 8508 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 8957 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 409:
-#line 2814 "glslang.y" /* yacc.c:1646  */
-    {
+  case 409: /* type_specifier_nonarray: USAMPLER2DMSARRAY  */
+#line 2828 "MachineIndependent/glslang.y"
+                        {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.set(EbtUint, Esd2D, true, false, true);
     }
-#line 8518 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 8967 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 410:
-#line 2819 "glslang.y" /* yacc.c:1646  */
-    {
+  case 410: /* type_specifier_nonarray: TEXTURE1D  */
+#line 2833 "MachineIndependent/glslang.y"
+                {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setTexture(EbtFloat, Esd1D);
     }
-#line 8528 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 8977 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 411:
-#line 2824 "glslang.y" /* yacc.c:1646  */
-    {
+  case 411: /* type_specifier_nonarray: F16TEXTURE1D  */
+#line 2838 "MachineIndependent/glslang.y"
+                   {
         parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd1D);
     }
-#line 8539 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 8988 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 412:
-#line 2830 "glslang.y" /* yacc.c:1646  */
-    {
+  case 412: /* type_specifier_nonarray: F16TEXTURE2D  */
+#line 2844 "MachineIndependent/glslang.y"
+                   {
         parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd2D);
     }
-#line 8550 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 8999 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 413:
-#line 2836 "glslang.y" /* yacc.c:1646  */
-    {
+  case 413: /* type_specifier_nonarray: F16TEXTURE3D  */
+#line 2850 "MachineIndependent/glslang.y"
+                   {
         parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd3D);
     }
-#line 8561 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 9010 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 414:
-#line 2842 "glslang.y" /* yacc.c:1646  */
-    {
+  case 414: /* type_specifier_nonarray: F16TEXTURECUBE  */
+#line 2856 "MachineIndependent/glslang.y"
+                     {
         parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setTexture(EbtFloat16, EsdCube);
     }
-#line 8572 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 9021 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 415:
-#line 2848 "glslang.y" /* yacc.c:1646  */
-    {
+  case 415: /* type_specifier_nonarray: TEXTURE1DARRAY  */
+#line 2862 "MachineIndependent/glslang.y"
+                     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setTexture(EbtFloat, Esd1D, true);
     }
-#line 8582 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 9031 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 416:
-#line 2853 "glslang.y" /* yacc.c:1646  */
-    {
+  case 416: /* type_specifier_nonarray: F16TEXTURE1DARRAY  */
+#line 2867 "MachineIndependent/glslang.y"
+                        {
         parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd1D, true);
     }
-#line 8593 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 9042 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 417:
-#line 2859 "glslang.y" /* yacc.c:1646  */
-    {
+  case 417: /* type_specifier_nonarray: F16TEXTURE2DARRAY  */
+#line 2873 "MachineIndependent/glslang.y"
+                        {
         parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd2D, true);
     }
-#line 8604 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 9053 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 418:
-#line 2865 "glslang.y" /* yacc.c:1646  */
-    {
+  case 418: /* type_specifier_nonarray: F16TEXTURECUBEARRAY  */
+#line 2879 "MachineIndependent/glslang.y"
+                          {
         parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setTexture(EbtFloat16, EsdCube, true);
     }
-#line 8615 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 9064 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 419:
-#line 2871 "glslang.y" /* yacc.c:1646  */
-    {
+  case 419: /* type_specifier_nonarray: ITEXTURE1D  */
+#line 2885 "MachineIndependent/glslang.y"
+                 {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setTexture(EbtInt, Esd1D);
     }
-#line 8625 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 9074 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 420:
-#line 2876 "glslang.y" /* yacc.c:1646  */
-    {
+  case 420: /* type_specifier_nonarray: ITEXTURE1DARRAY  */
+#line 2890 "MachineIndependent/glslang.y"
+                      {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setTexture(EbtInt, Esd1D, true);
     }
-#line 8635 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 9084 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 421:
-#line 2881 "glslang.y" /* yacc.c:1646  */
-    {
+  case 421: /* type_specifier_nonarray: UTEXTURE1D  */
+#line 2895 "MachineIndependent/glslang.y"
+                 {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setTexture(EbtUint, Esd1D);
     }
-#line 8645 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 9094 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 422:
-#line 2886 "glslang.y" /* yacc.c:1646  */
-    {
+  case 422: /* type_specifier_nonarray: UTEXTURE1DARRAY  */
+#line 2900 "MachineIndependent/glslang.y"
+                      {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setTexture(EbtUint, Esd1D, true);
     }
-#line 8655 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 9104 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 423:
-#line 2891 "glslang.y" /* yacc.c:1646  */
-    {
+  case 423: /* type_specifier_nonarray: TEXTURE2DRECT  */
+#line 2905 "MachineIndependent/glslang.y"
+                    {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setTexture(EbtFloat, EsdRect);
     }
-#line 8665 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 9114 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 424:
-#line 2896 "glslang.y" /* yacc.c:1646  */
-    {
+  case 424: /* type_specifier_nonarray: F16TEXTURE2DRECT  */
+#line 2910 "MachineIndependent/glslang.y"
+                       {
         parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setTexture(EbtFloat16, EsdRect);
     }
-#line 8676 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 9125 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 425:
-#line 2902 "glslang.y" /* yacc.c:1646  */
-    {
+  case 425: /* type_specifier_nonarray: ITEXTURE2DRECT  */
+#line 2916 "MachineIndependent/glslang.y"
+                     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setTexture(EbtInt, EsdRect);
     }
-#line 8686 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 9135 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 426:
-#line 2907 "glslang.y" /* yacc.c:1646  */
-    {
+  case 426: /* type_specifier_nonarray: UTEXTURE2DRECT  */
+#line 2921 "MachineIndependent/glslang.y"
+                     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setTexture(EbtUint, EsdRect);
     }
-#line 8696 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 9145 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 427:
-#line 2912 "glslang.y" /* yacc.c:1646  */
-    {
+  case 427: /* type_specifier_nonarray: TEXTUREBUFFER  */
+#line 2926 "MachineIndependent/glslang.y"
+                    {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setTexture(EbtFloat, EsdBuffer);
     }
-#line 8706 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 9155 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 428:
-#line 2917 "glslang.y" /* yacc.c:1646  */
-    {
+  case 428: /* type_specifier_nonarray: F16TEXTUREBUFFER  */
+#line 2931 "MachineIndependent/glslang.y"
+                       {
         parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setTexture(EbtFloat16, EsdBuffer);
     }
-#line 8717 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 9166 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 429:
-#line 2923 "glslang.y" /* yacc.c:1646  */
-    {
+  case 429: /* type_specifier_nonarray: ITEXTUREBUFFER  */
+#line 2937 "MachineIndependent/glslang.y"
+                     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setTexture(EbtInt, EsdBuffer);
     }
-#line 8727 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 9176 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 430:
-#line 2928 "glslang.y" /* yacc.c:1646  */
-    {
+  case 430: /* type_specifier_nonarray: UTEXTUREBUFFER  */
+#line 2942 "MachineIndependent/glslang.y"
+                     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setTexture(EbtUint, EsdBuffer);
     }
-#line 8737 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 9186 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 431:
-#line 2933 "glslang.y" /* yacc.c:1646  */
-    {
+  case 431: /* type_specifier_nonarray: TEXTURE2DMS  */
+#line 2947 "MachineIndependent/glslang.y"
+                  {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D, false, false, true);
     }
-#line 8747 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 9196 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 432:
-#line 2938 "glslang.y" /* yacc.c:1646  */
-    {
+  case 432: /* type_specifier_nonarray: F16TEXTURE2DMS  */
+#line 2952 "MachineIndependent/glslang.y"
+                     {
         parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd2D, false, false, true);
     }
-#line 8758 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 9207 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 433:
-#line 2944 "glslang.y" /* yacc.c:1646  */
-    {
+  case 433: /* type_specifier_nonarray: ITEXTURE2DMS  */
+#line 2958 "MachineIndependent/glslang.y"
+                   {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D, false, false, true);
     }
-#line 8768 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 9217 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 434:
-#line 2949 "glslang.y" /* yacc.c:1646  */
-    {
+  case 434: /* type_specifier_nonarray: UTEXTURE2DMS  */
+#line 2963 "MachineIndependent/glslang.y"
+                   {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D, false, false, true);
     }
-#line 8778 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 9227 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 435:
-#line 2954 "glslang.y" /* yacc.c:1646  */
-    {
+  case 435: /* type_specifier_nonarray: TEXTURE2DMSARRAY  */
+#line 2968 "MachineIndependent/glslang.y"
+                       {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D, true, false, true);
     }
-#line 8788 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 9237 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 436:
-#line 2959 "glslang.y" /* yacc.c:1646  */
-    {
+  case 436: /* type_specifier_nonarray: F16TEXTURE2DMSARRAY  */
+#line 2973 "MachineIndependent/glslang.y"
+                          {
         parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd2D, true, false, true);
     }
-#line 8799 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 9248 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 437:
-#line 2965 "glslang.y" /* yacc.c:1646  */
-    {
+  case 437: /* type_specifier_nonarray: ITEXTURE2DMSARRAY  */
+#line 2979 "MachineIndependent/glslang.y"
+                        {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D, true, false, true);
     }
-#line 8809 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 9258 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 438:
-#line 2970 "glslang.y" /* yacc.c:1646  */
-    {
+  case 438: /* type_specifier_nonarray: UTEXTURE2DMSARRAY  */
+#line 2984 "MachineIndependent/glslang.y"
+                        {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D, true, false, true);
     }
-#line 8819 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 9268 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 439:
-#line 2975 "glslang.y" /* yacc.c:1646  */
-    {
+  case 439: /* type_specifier_nonarray: IMAGE1D  */
+#line 2989 "MachineIndependent/glslang.y"
+              {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setImage(EbtFloat, Esd1D);
     }
-#line 8829 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 9278 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 440:
-#line 2980 "glslang.y" /* yacc.c:1646  */
-    {
+  case 440: /* type_specifier_nonarray: F16IMAGE1D  */
+#line 2994 "MachineIndependent/glslang.y"
+                 {
         parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setImage(EbtFloat16, Esd1D);
     }
-#line 8840 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 9289 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 441:
-#line 2986 "glslang.y" /* yacc.c:1646  */
-    {
+  case 441: /* type_specifier_nonarray: IIMAGE1D  */
+#line 3000 "MachineIndependent/glslang.y"
+               {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setImage(EbtInt, Esd1D);
     }
-#line 8850 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 9299 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 442:
-#line 2991 "glslang.y" /* yacc.c:1646  */
-    {
+  case 442: /* type_specifier_nonarray: UIMAGE1D  */
+#line 3005 "MachineIndependent/glslang.y"
+               {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setImage(EbtUint, Esd1D);
     }
-#line 8860 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 9309 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 443:
-#line 2996 "glslang.y" /* yacc.c:1646  */
-    {
+  case 443: /* type_specifier_nonarray: IMAGE2D  */
+#line 3010 "MachineIndependent/glslang.y"
+              {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setImage(EbtFloat, Esd2D);
     }
-#line 8870 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 9319 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 444:
-#line 3001 "glslang.y" /* yacc.c:1646  */
-    {
+  case 444: /* type_specifier_nonarray: F16IMAGE2D  */
+#line 3015 "MachineIndependent/glslang.y"
+                 {
         parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setImage(EbtFloat16, Esd2D);
     }
-#line 8881 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 9330 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 445:
-#line 3007 "glslang.y" /* yacc.c:1646  */
-    {
+  case 445: /* type_specifier_nonarray: IIMAGE2D  */
+#line 3021 "MachineIndependent/glslang.y"
+               {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setImage(EbtInt, Esd2D);
     }
-#line 8891 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 9340 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 446:
-#line 3012 "glslang.y" /* yacc.c:1646  */
-    {
+  case 446: /* type_specifier_nonarray: UIMAGE2D  */
+#line 3026 "MachineIndependent/glslang.y"
+               {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setImage(EbtUint, Esd2D);
     }
-#line 8901 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 9350 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 447:
-#line 3017 "glslang.y" /* yacc.c:1646  */
-    {
+  case 447: /* type_specifier_nonarray: IMAGE3D  */
+#line 3031 "MachineIndependent/glslang.y"
+              {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setImage(EbtFloat, Esd3D);
     }
-#line 8911 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 9360 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 448:
-#line 3022 "glslang.y" /* yacc.c:1646  */
-    {
+  case 448: /* type_specifier_nonarray: F16IMAGE3D  */
+#line 3036 "MachineIndependent/glslang.y"
+                 {
         parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setImage(EbtFloat16, Esd3D);
     }
-#line 8922 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 9371 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 449:
-#line 3028 "glslang.y" /* yacc.c:1646  */
-    {
+  case 449: /* type_specifier_nonarray: IIMAGE3D  */
+#line 3042 "MachineIndependent/glslang.y"
+               {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setImage(EbtInt, Esd3D);
     }
-#line 8932 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 9381 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 450:
-#line 3033 "glslang.y" /* yacc.c:1646  */
-    {
+  case 450: /* type_specifier_nonarray: UIMAGE3D  */
+#line 3047 "MachineIndependent/glslang.y"
+               {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setImage(EbtUint, Esd3D);
     }
-#line 8942 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 9391 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 451:
-#line 3038 "glslang.y" /* yacc.c:1646  */
-    {
+  case 451: /* type_specifier_nonarray: IMAGE2DRECT  */
+#line 3052 "MachineIndependent/glslang.y"
+                  {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setImage(EbtFloat, EsdRect);
     }
-#line 8952 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 9401 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 452:
-#line 3043 "glslang.y" /* yacc.c:1646  */
-    {
+  case 452: /* type_specifier_nonarray: F16IMAGE2DRECT  */
+#line 3057 "MachineIndependent/glslang.y"
+                     {
         parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setImage(EbtFloat16, EsdRect);
     }
-#line 8963 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 9412 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 453:
-#line 3049 "glslang.y" /* yacc.c:1646  */
-    {
+  case 453: /* type_specifier_nonarray: IIMAGE2DRECT  */
+#line 3063 "MachineIndependent/glslang.y"
+                   {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setImage(EbtInt, EsdRect);
     }
-#line 8973 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 9422 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 454:
-#line 3054 "glslang.y" /* yacc.c:1646  */
-    {
+  case 454: /* type_specifier_nonarray: UIMAGE2DRECT  */
+#line 3068 "MachineIndependent/glslang.y"
+                   {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setImage(EbtUint, EsdRect);
     }
-#line 8983 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 9432 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 455:
-#line 3059 "glslang.y" /* yacc.c:1646  */
-    {
+  case 455: /* type_specifier_nonarray: IMAGECUBE  */
+#line 3073 "MachineIndependent/glslang.y"
+                {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setImage(EbtFloat, EsdCube);
     }
-#line 8993 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 9442 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 456:
-#line 3064 "glslang.y" /* yacc.c:1646  */
-    {
+  case 456: /* type_specifier_nonarray: F16IMAGECUBE  */
+#line 3078 "MachineIndependent/glslang.y"
+                   {
         parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setImage(EbtFloat16, EsdCube);
     }
-#line 9004 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 9453 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 457:
-#line 3070 "glslang.y" /* yacc.c:1646  */
-    {
+  case 457: /* type_specifier_nonarray: IIMAGECUBE  */
+#line 3084 "MachineIndependent/glslang.y"
+                 {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setImage(EbtInt, EsdCube);
     }
-#line 9014 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 9463 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 458:
-#line 3075 "glslang.y" /* yacc.c:1646  */
-    {
+  case 458: /* type_specifier_nonarray: UIMAGECUBE  */
+#line 3089 "MachineIndependent/glslang.y"
+                 {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setImage(EbtUint, EsdCube);
     }
-#line 9024 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 9473 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 459:
-#line 3080 "glslang.y" /* yacc.c:1646  */
-    {
+  case 459: /* type_specifier_nonarray: IMAGEBUFFER  */
+#line 3094 "MachineIndependent/glslang.y"
+                  {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setImage(EbtFloat, EsdBuffer);
     }
-#line 9034 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 9483 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 460:
-#line 3085 "glslang.y" /* yacc.c:1646  */
-    {
+  case 460: /* type_specifier_nonarray: F16IMAGEBUFFER  */
+#line 3099 "MachineIndependent/glslang.y"
+                     {
         parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setImage(EbtFloat16, EsdBuffer);
     }
-#line 9045 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 9494 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 461:
-#line 3091 "glslang.y" /* yacc.c:1646  */
-    {
+  case 461: /* type_specifier_nonarray: IIMAGEBUFFER  */
+#line 3105 "MachineIndependent/glslang.y"
+                   {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setImage(EbtInt, EsdBuffer);
     }
-#line 9055 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 9504 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 462:
-#line 3096 "glslang.y" /* yacc.c:1646  */
-    {
+  case 462: /* type_specifier_nonarray: UIMAGEBUFFER  */
+#line 3110 "MachineIndependent/glslang.y"
+                   {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setImage(EbtUint, EsdBuffer);
     }
-#line 9065 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 9514 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 463:
-#line 3101 "glslang.y" /* yacc.c:1646  */
-    {
+  case 463: /* type_specifier_nonarray: IMAGE1DARRAY  */
+#line 3115 "MachineIndependent/glslang.y"
+                   {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setImage(EbtFloat, Esd1D, true);
     }
-#line 9075 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 9524 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 464:
-#line 3106 "glslang.y" /* yacc.c:1646  */
-    {
+  case 464: /* type_specifier_nonarray: F16IMAGE1DARRAY  */
+#line 3120 "MachineIndependent/glslang.y"
+                      {
         parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setImage(EbtFloat16, Esd1D, true);
     }
-#line 9086 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 9535 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 465:
-#line 3112 "glslang.y" /* yacc.c:1646  */
-    {
+  case 465: /* type_specifier_nonarray: IIMAGE1DARRAY  */
+#line 3126 "MachineIndependent/glslang.y"
+                    {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setImage(EbtInt, Esd1D, true);
     }
-#line 9096 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 9545 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 466:
-#line 3117 "glslang.y" /* yacc.c:1646  */
-    {
+  case 466: /* type_specifier_nonarray: UIMAGE1DARRAY  */
+#line 3131 "MachineIndependent/glslang.y"
+                    {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setImage(EbtUint, Esd1D, true);
     }
-#line 9106 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 9555 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 467:
-#line 3122 "glslang.y" /* yacc.c:1646  */
-    {
+  case 467: /* type_specifier_nonarray: IMAGE2DARRAY  */
+#line 3136 "MachineIndependent/glslang.y"
+                   {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setImage(EbtFloat, Esd2D, true);
     }
-#line 9116 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 9565 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 468:
-#line 3127 "glslang.y" /* yacc.c:1646  */
-    {
+  case 468: /* type_specifier_nonarray: F16IMAGE2DARRAY  */
+#line 3141 "MachineIndependent/glslang.y"
+                      {
         parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setImage(EbtFloat16, Esd2D, true);
     }
-#line 9127 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 9576 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 469:
-#line 3133 "glslang.y" /* yacc.c:1646  */
-    {
+  case 469: /* type_specifier_nonarray: IIMAGE2DARRAY  */
+#line 3147 "MachineIndependent/glslang.y"
+                    {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setImage(EbtInt, Esd2D, true);
     }
-#line 9137 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 9586 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 470:
-#line 3138 "glslang.y" /* yacc.c:1646  */
-    {
+  case 470: /* type_specifier_nonarray: UIMAGE2DARRAY  */
+#line 3152 "MachineIndependent/glslang.y"
+                    {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setImage(EbtUint, Esd2D, true);
     }
-#line 9147 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 9596 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 471:
-#line 3143 "glslang.y" /* yacc.c:1646  */
-    {
+  case 471: /* type_specifier_nonarray: IMAGECUBEARRAY  */
+#line 3157 "MachineIndependent/glslang.y"
+                     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setImage(EbtFloat, EsdCube, true);
     }
-#line 9157 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 9606 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 472:
-#line 3148 "glslang.y" /* yacc.c:1646  */
-    {
+  case 472: /* type_specifier_nonarray: F16IMAGECUBEARRAY  */
+#line 3162 "MachineIndependent/glslang.y"
+                        {
         parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setImage(EbtFloat16, EsdCube, true);
     }
-#line 9168 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 9617 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 473:
-#line 3154 "glslang.y" /* yacc.c:1646  */
-    {
+  case 473: /* type_specifier_nonarray: IIMAGECUBEARRAY  */
+#line 3168 "MachineIndependent/glslang.y"
+                      {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setImage(EbtInt, EsdCube, true);
     }
-#line 9178 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 9627 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 474:
-#line 3159 "glslang.y" /* yacc.c:1646  */
-    {
+  case 474: /* type_specifier_nonarray: UIMAGECUBEARRAY  */
+#line 3173 "MachineIndependent/glslang.y"
+                      {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setImage(EbtUint, EsdCube, true);
     }
-#line 9188 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 9637 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 475:
-#line 3164 "glslang.y" /* yacc.c:1646  */
-    {
+  case 475: /* type_specifier_nonarray: IMAGE2DMS  */
+#line 3178 "MachineIndependent/glslang.y"
+                {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setImage(EbtFloat, Esd2D, false, false, true);
     }
-#line 9198 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 9647 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 476:
-#line 3169 "glslang.y" /* yacc.c:1646  */
-    {
+  case 476: /* type_specifier_nonarray: F16IMAGE2DMS  */
+#line 3183 "MachineIndependent/glslang.y"
+                   {
         parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setImage(EbtFloat16, Esd2D, false, false, true);
     }
-#line 9209 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 9658 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 477:
-#line 3175 "glslang.y" /* yacc.c:1646  */
-    {
+  case 477: /* type_specifier_nonarray: IIMAGE2DMS  */
+#line 3189 "MachineIndependent/glslang.y"
+                 {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setImage(EbtInt, Esd2D, false, false, true);
     }
-#line 9219 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 9668 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 478:
-#line 3180 "glslang.y" /* yacc.c:1646  */
-    {
+  case 478: /* type_specifier_nonarray: UIMAGE2DMS  */
+#line 3194 "MachineIndependent/glslang.y"
+                 {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setImage(EbtUint, Esd2D, false, false, true);
     }
-#line 9229 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 9678 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 479:
-#line 3185 "glslang.y" /* yacc.c:1646  */
-    {
+  case 479: /* type_specifier_nonarray: IMAGE2DMSARRAY  */
+#line 3199 "MachineIndependent/glslang.y"
+                     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setImage(EbtFloat, Esd2D, true, false, true);
     }
-#line 9239 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 9688 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 480:
-#line 3190 "glslang.y" /* yacc.c:1646  */
-    {
+  case 480: /* type_specifier_nonarray: F16IMAGE2DMSARRAY  */
+#line 3204 "MachineIndependent/glslang.y"
+                        {
         parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setImage(EbtFloat16, Esd2D, true, false, true);
     }
-#line 9250 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 9699 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 481:
-#line 3196 "glslang.y" /* yacc.c:1646  */
-    {
+  case 481: /* type_specifier_nonarray: IIMAGE2DMSARRAY  */
+#line 3210 "MachineIndependent/glslang.y"
+                      {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setImage(EbtInt, Esd2D, true, false, true);
     }
-#line 9260 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 9709 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 482:
-#line 3201 "glslang.y" /* yacc.c:1646  */
-    {
+  case 482: /* type_specifier_nonarray: UIMAGE2DMSARRAY  */
+#line 3215 "MachineIndependent/glslang.y"
+                      {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setImage(EbtUint, Esd2D, true, false, true);
     }
-#line 9270 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 9719 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 483:
-#line 3206 "glslang.y" /* yacc.c:1646  */
-    {  // GL_OES_EGL_image_external
+  case 483: /* type_specifier_nonarray: I64IMAGE1D  */
+#line 3220 "MachineIndependent/glslang.y"
+                 {
+        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).basicType = EbtSampler;
+        (yyval.interm.type).sampler.setImage(EbtInt64, Esd1D);
+    }
+#line 9729 "MachineIndependent/glslang_tab.cpp"
+    break;
+
+  case 484: /* type_specifier_nonarray: U64IMAGE1D  */
+#line 3225 "MachineIndependent/glslang.y"
+                 {
+        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).basicType = EbtSampler;
+        (yyval.interm.type).sampler.setImage(EbtUint64, Esd1D);
+    }
+#line 9739 "MachineIndependent/glslang_tab.cpp"
+    break;
+
+  case 485: /* type_specifier_nonarray: I64IMAGE2D  */
+#line 3230 "MachineIndependent/glslang.y"
+                 {
+        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).basicType = EbtSampler;
+        (yyval.interm.type).sampler.setImage(EbtInt64, Esd2D);
+    }
+#line 9749 "MachineIndependent/glslang_tab.cpp"
+    break;
+
+  case 486: /* type_specifier_nonarray: U64IMAGE2D  */
+#line 3235 "MachineIndependent/glslang.y"
+                 {
+        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).basicType = EbtSampler;
+        (yyval.interm.type).sampler.setImage(EbtUint64, Esd2D);
+    }
+#line 9759 "MachineIndependent/glslang_tab.cpp"
+    break;
+
+  case 487: /* type_specifier_nonarray: I64IMAGE3D  */
+#line 3240 "MachineIndependent/glslang.y"
+                 {
+        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).basicType = EbtSampler;
+        (yyval.interm.type).sampler.setImage(EbtInt64, Esd3D);
+    }
+#line 9769 "MachineIndependent/glslang_tab.cpp"
+    break;
+
+  case 488: /* type_specifier_nonarray: U64IMAGE3D  */
+#line 3245 "MachineIndependent/glslang.y"
+                 {
+        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).basicType = EbtSampler;
+        (yyval.interm.type).sampler.setImage(EbtUint64, Esd3D);
+    }
+#line 9779 "MachineIndependent/glslang_tab.cpp"
+    break;
+
+  case 489: /* type_specifier_nonarray: I64IMAGE2DRECT  */
+#line 3250 "MachineIndependent/glslang.y"
+                     {
+        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).basicType = EbtSampler;
+        (yyval.interm.type).sampler.setImage(EbtInt64, EsdRect);
+    }
+#line 9789 "MachineIndependent/glslang_tab.cpp"
+    break;
+
+  case 490: /* type_specifier_nonarray: U64IMAGE2DRECT  */
+#line 3255 "MachineIndependent/glslang.y"
+                     {
+        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).basicType = EbtSampler;
+        (yyval.interm.type).sampler.setImage(EbtUint64, EsdRect);
+    }
+#line 9799 "MachineIndependent/glslang_tab.cpp"
+    break;
+
+  case 491: /* type_specifier_nonarray: I64IMAGECUBE  */
+#line 3260 "MachineIndependent/glslang.y"
+                   {
+        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).basicType = EbtSampler;
+        (yyval.interm.type).sampler.setImage(EbtInt64, EsdCube);
+    }
+#line 9809 "MachineIndependent/glslang_tab.cpp"
+    break;
+
+  case 492: /* type_specifier_nonarray: U64IMAGECUBE  */
+#line 3265 "MachineIndependent/glslang.y"
+                   {
+        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).basicType = EbtSampler;
+        (yyval.interm.type).sampler.setImage(EbtUint64, EsdCube);
+    }
+#line 9819 "MachineIndependent/glslang_tab.cpp"
+    break;
+
+  case 493: /* type_specifier_nonarray: I64IMAGEBUFFER  */
+#line 3270 "MachineIndependent/glslang.y"
+                     {
+        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).basicType = EbtSampler;
+        (yyval.interm.type).sampler.setImage(EbtInt64, EsdBuffer);
+    }
+#line 9829 "MachineIndependent/glslang_tab.cpp"
+    break;
+
+  case 494: /* type_specifier_nonarray: U64IMAGEBUFFER  */
+#line 3275 "MachineIndependent/glslang.y"
+                     {
+        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).basicType = EbtSampler;
+        (yyval.interm.type).sampler.setImage(EbtUint64, EsdBuffer);
+    }
+#line 9839 "MachineIndependent/glslang_tab.cpp"
+    break;
+
+  case 495: /* type_specifier_nonarray: I64IMAGE1DARRAY  */
+#line 3280 "MachineIndependent/glslang.y"
+                      {
+        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).basicType = EbtSampler;
+        (yyval.interm.type).sampler.setImage(EbtInt64, Esd1D, true);
+    }
+#line 9849 "MachineIndependent/glslang_tab.cpp"
+    break;
+
+  case 496: /* type_specifier_nonarray: U64IMAGE1DARRAY  */
+#line 3285 "MachineIndependent/glslang.y"
+                      {
+        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).basicType = EbtSampler;
+        (yyval.interm.type).sampler.setImage(EbtUint64, Esd1D, true);
+    }
+#line 9859 "MachineIndependent/glslang_tab.cpp"
+    break;
+
+  case 497: /* type_specifier_nonarray: I64IMAGE2DARRAY  */
+#line 3290 "MachineIndependent/glslang.y"
+                      {
+        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).basicType = EbtSampler;
+        (yyval.interm.type).sampler.setImage(EbtInt64, Esd2D, true);
+    }
+#line 9869 "MachineIndependent/glslang_tab.cpp"
+    break;
+
+  case 498: /* type_specifier_nonarray: U64IMAGE2DARRAY  */
+#line 3295 "MachineIndependent/glslang.y"
+                      {
+        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).basicType = EbtSampler;
+        (yyval.interm.type).sampler.setImage(EbtUint64, Esd2D, true);
+    }
+#line 9879 "MachineIndependent/glslang_tab.cpp"
+    break;
+
+  case 499: /* type_specifier_nonarray: I64IMAGECUBEARRAY  */
+#line 3300 "MachineIndependent/glslang.y"
+                        {
+        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).basicType = EbtSampler;
+        (yyval.interm.type).sampler.setImage(EbtInt64, EsdCube, true);
+    }
+#line 9889 "MachineIndependent/glslang_tab.cpp"
+    break;
+
+  case 500: /* type_specifier_nonarray: U64IMAGECUBEARRAY  */
+#line 3305 "MachineIndependent/glslang.y"
+                        {
+        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).basicType = EbtSampler;
+        (yyval.interm.type).sampler.setImage(EbtUint64, EsdCube, true);
+    }
+#line 9899 "MachineIndependent/glslang_tab.cpp"
+    break;
+
+  case 501: /* type_specifier_nonarray: I64IMAGE2DMS  */
+#line 3310 "MachineIndependent/glslang.y"
+                   {
+        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).basicType = EbtSampler;
+        (yyval.interm.type).sampler.setImage(EbtInt64, Esd2D, false, false, true);
+    }
+#line 9909 "MachineIndependent/glslang_tab.cpp"
+    break;
+
+  case 502: /* type_specifier_nonarray: U64IMAGE2DMS  */
+#line 3315 "MachineIndependent/glslang.y"
+                   {
+        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).basicType = EbtSampler;
+        (yyval.interm.type).sampler.setImage(EbtUint64, Esd2D, false, false, true);
+    }
+#line 9919 "MachineIndependent/glslang_tab.cpp"
+    break;
+
+  case 503: /* type_specifier_nonarray: I64IMAGE2DMSARRAY  */
+#line 3320 "MachineIndependent/glslang.y"
+                        {
+        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).basicType = EbtSampler;
+        (yyval.interm.type).sampler.setImage(EbtInt64, Esd2D, true, false, true);
+    }
+#line 9929 "MachineIndependent/glslang_tab.cpp"
+    break;
+
+  case 504: /* type_specifier_nonarray: U64IMAGE2DMSARRAY  */
+#line 3325 "MachineIndependent/glslang.y"
+                        {
+        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).basicType = EbtSampler;
+        (yyval.interm.type).sampler.setImage(EbtUint64, Esd2D, true, false, true);
+    }
+#line 9939 "MachineIndependent/glslang_tab.cpp"
+    break;
+
+  case 505: /* type_specifier_nonarray: SAMPLEREXTERNALOES  */
+#line 3330 "MachineIndependent/glslang.y"
+                         {  // GL_OES_EGL_image_external
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.set(EbtFloat, Esd2D);
         (yyval.interm.type).sampler.external = true;
     }
-#line 9281 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 9950 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 484:
-#line 3212 "glslang.y" /* yacc.c:1646  */
-    { // GL_EXT_YUV_target
+  case 506: /* type_specifier_nonarray: SAMPLEREXTERNAL2DY2YEXT  */
+#line 3336 "MachineIndependent/glslang.y"
+                              { // GL_EXT_YUV_target
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.set(EbtFloat, Esd2D);
         (yyval.interm.type).sampler.yuv = true;
     }
-#line 9292 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 9961 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 485:
-#line 3218 "glslang.y" /* yacc.c:1646  */
-    {
+  case 507: /* type_specifier_nonarray: SUBPASSINPUT  */
+#line 3342 "MachineIndependent/glslang.y"
+                   {
         parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input");
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setSubpass(EbtFloat);
     }
-#line 9303 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 9972 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 486:
-#line 3224 "glslang.y" /* yacc.c:1646  */
-    {
+  case 508: /* type_specifier_nonarray: SUBPASSINPUTMS  */
+#line 3348 "MachineIndependent/glslang.y"
+                     {
         parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input");
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setSubpass(EbtFloat, true);
     }
-#line 9314 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 9983 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 487:
-#line 3230 "glslang.y" /* yacc.c:1646  */
-    {
+  case 509: /* type_specifier_nonarray: F16SUBPASSINPUT  */
+#line 3354 "MachineIndependent/glslang.y"
+                      {
         parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float subpass input", parseContext.symbolTable.atBuiltInLevel());
         parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input");
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setSubpass(EbtFloat16);
     }
-#line 9326 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 9995 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 488:
-#line 3237 "glslang.y" /* yacc.c:1646  */
-    {
+  case 510: /* type_specifier_nonarray: F16SUBPASSINPUTMS  */
+#line 3361 "MachineIndependent/glslang.y"
+                        {
         parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float subpass input", parseContext.symbolTable.atBuiltInLevel());
         parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input");
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setSubpass(EbtFloat16, true);
     }
-#line 9338 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 10007 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 489:
-#line 3244 "glslang.y" /* yacc.c:1646  */
-    {
+  case 511: /* type_specifier_nonarray: ISUBPASSINPUT  */
+#line 3368 "MachineIndependent/glslang.y"
+                    {
         parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input");
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setSubpass(EbtInt);
     }
-#line 9349 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 10018 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 490:
-#line 3250 "glslang.y" /* yacc.c:1646  */
-    {
+  case 512: /* type_specifier_nonarray: ISUBPASSINPUTMS  */
+#line 3374 "MachineIndependent/glslang.y"
+                      {
         parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input");
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setSubpass(EbtInt, true);
     }
-#line 9360 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 10029 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 491:
-#line 3256 "glslang.y" /* yacc.c:1646  */
-    {
+  case 513: /* type_specifier_nonarray: USUBPASSINPUT  */
+#line 3380 "MachineIndependent/glslang.y"
+                    {
         parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input");
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setSubpass(EbtUint);
     }
-#line 9371 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 10040 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 492:
-#line 3262 "glslang.y" /* yacc.c:1646  */
-    {
+  case 514: /* type_specifier_nonarray: USUBPASSINPUTMS  */
+#line 3386 "MachineIndependent/glslang.y"
+                      {
         parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input");
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setSubpass(EbtUint, true);
     }
-#line 9382 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 10051 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 493:
-#line 3268 "glslang.y" /* yacc.c:1646  */
-    {
+  case 515: /* type_specifier_nonarray: FCOOPMATNV  */
+#line 3392 "MachineIndependent/glslang.y"
+                 {
         parseContext.fcoopmatCheck((yyvsp[0].lex).loc, "fcoopmatNV", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat;
         (yyval.interm.type).coopmat = true;
     }
-#line 9393 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 10062 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 494:
-#line 3274 "glslang.y" /* yacc.c:1646  */
-    {
+  case 516: /* type_specifier_nonarray: ICOOPMATNV  */
+#line 3398 "MachineIndependent/glslang.y"
+                 {
         parseContext.intcoopmatCheck((yyvsp[0].lex).loc, "icoopmatNV", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtInt;
         (yyval.interm.type).coopmat = true;
     }
-#line 9404 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 10073 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 495:
-#line 3280 "glslang.y" /* yacc.c:1646  */
-    {
+  case 517: /* type_specifier_nonarray: UCOOPMATNV  */
+#line 3404 "MachineIndependent/glslang.y"
+                 {
         parseContext.intcoopmatCheck((yyvsp[0].lex).loc, "ucoopmatNV", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtUint;
         (yyval.interm.type).coopmat = true;
     }
-#line 9415 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 10084 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 496:
-#line 3287 "glslang.y" /* yacc.c:1646  */
-    {
+  case 518: /* type_specifier_nonarray: struct_specifier  */
+#line 3411 "MachineIndependent/glslang.y"
+                       {
         (yyval.interm.type) = (yyvsp[0].interm.type);
         (yyval.interm.type).qualifier.storage = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
         parseContext.structTypeCheck((yyval.interm.type).loc, (yyval.interm.type));
     }
-#line 9425 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 10094 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 497:
-#line 3292 "glslang.y" /* yacc.c:1646  */
-    {
+  case 519: /* type_specifier_nonarray: TYPE_NAME  */
+#line 3416 "MachineIndependent/glslang.y"
+                {
         //
         // This is for user defined type names.  The lexical phase looked up the
         // type.
@@ -9439,48 +10108,48 @@
         } else
             parseContext.error((yyvsp[0].lex).loc, "expected type name", (yyvsp[0].lex).string->c_str(), "");
     }
-#line 9443 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 10112 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 498:
-#line 3308 "glslang.y" /* yacc.c:1646  */
-    {
+  case 520: /* precision_qualifier: HIGH_PRECISION  */
+#line 3432 "MachineIndependent/glslang.y"
+                     {
         parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "highp precision qualifier");
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         parseContext.handlePrecisionQualifier((yyvsp[0].lex).loc, (yyval.interm.type).qualifier, EpqHigh);
     }
-#line 9453 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 10122 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 499:
-#line 3313 "glslang.y" /* yacc.c:1646  */
-    {
+  case 521: /* precision_qualifier: MEDIUM_PRECISION  */
+#line 3437 "MachineIndependent/glslang.y"
+                       {
         parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "mediump precision qualifier");
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         parseContext.handlePrecisionQualifier((yyvsp[0].lex).loc, (yyval.interm.type).qualifier, EpqMedium);
     }
-#line 9463 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 10132 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 500:
-#line 3318 "glslang.y" /* yacc.c:1646  */
-    {
+  case 522: /* precision_qualifier: LOW_PRECISION  */
+#line 3442 "MachineIndependent/glslang.y"
+                    {
         parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "lowp precision qualifier");
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         parseContext.handlePrecisionQualifier((yyvsp[0].lex).loc, (yyval.interm.type).qualifier, EpqLow);
     }
-#line 9473 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 10142 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 501:
-#line 3326 "glslang.y" /* yacc.c:1646  */
-    { parseContext.nestedStructCheck((yyvsp[-2].lex).loc); }
-#line 9479 "glslang_tab.cpp" /* yacc.c:1646  */
+  case 523: /* $@3: %empty  */
+#line 3450 "MachineIndependent/glslang.y"
+                                   { parseContext.nestedStructCheck((yyvsp[-2].lex).loc); }
+#line 10148 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 502:
-#line 3326 "glslang.y" /* yacc.c:1646  */
-    {
+  case 524: /* struct_specifier: STRUCT IDENTIFIER LEFT_BRACE $@3 struct_declaration_list RIGHT_BRACE  */
+#line 3450 "MachineIndependent/glslang.y"
+                                                                                                                   {
         TType* structure = new TType((yyvsp[-1].interm.typeList), *(yyvsp[-4].lex).string);
         parseContext.structArrayCheck((yyvsp[-4].lex).loc, *structure);
         TVariable* userTypeDef = new TVariable((yyvsp[-4].lex).string, *structure, true);
@@ -9491,38 +10160,38 @@
         (yyval.interm.type).userDef = structure;
         --parseContext.structNestingLevel;
     }
-#line 9495 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 10164 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 503:
-#line 3337 "glslang.y" /* yacc.c:1646  */
-    { parseContext.nestedStructCheck((yyvsp[-1].lex).loc); }
-#line 9501 "glslang_tab.cpp" /* yacc.c:1646  */
+  case 525: /* $@4: %empty  */
+#line 3461 "MachineIndependent/glslang.y"
+                        { parseContext.nestedStructCheck((yyvsp[-1].lex).loc); }
+#line 10170 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 504:
-#line 3337 "glslang.y" /* yacc.c:1646  */
-    {
+  case 526: /* struct_specifier: STRUCT LEFT_BRACE $@4 struct_declaration_list RIGHT_BRACE  */
+#line 3461 "MachineIndependent/glslang.y"
+                                                                                                        {
         TType* structure = new TType((yyvsp[-1].interm.typeList), TString(""));
         (yyval.interm.type).init((yyvsp[-4].lex).loc);
         (yyval.interm.type).basicType = EbtStruct;
         (yyval.interm.type).userDef = structure;
         --parseContext.structNestingLevel;
     }
-#line 9513 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 10182 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 505:
-#line 3347 "glslang.y" /* yacc.c:1646  */
-    {
+  case 527: /* struct_declaration_list: struct_declaration  */
+#line 3471 "MachineIndependent/glslang.y"
+                         {
         (yyval.interm.typeList) = (yyvsp[0].interm.typeList);
     }
-#line 9521 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 10190 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 506:
-#line 3350 "glslang.y" /* yacc.c:1646  */
-    {
+  case 528: /* struct_declaration_list: struct_declaration_list struct_declaration  */
+#line 3474 "MachineIndependent/glslang.y"
+                                                 {
         (yyval.interm.typeList) = (yyvsp[-1].interm.typeList);
         for (unsigned int i = 0; i < (yyvsp[0].interm.typeList)->size(); ++i) {
             for (unsigned int j = 0; j < (yyval.interm.typeList)->size(); ++j) {
@@ -9532,12 +10201,12 @@
             (yyval.interm.typeList)->push_back((*(yyvsp[0].interm.typeList))[i]);
         }
     }
-#line 9536 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 10205 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 507:
-#line 3363 "glslang.y" /* yacc.c:1646  */
-    {
+  case 529: /* struct_declaration: type_specifier struct_declarator_list SEMICOLON  */
+#line 3487 "MachineIndependent/glslang.y"
+                                                      {
         if ((yyvsp[-2].interm.type).arraySizes) {
             parseContext.profileRequires((yyvsp[-2].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type");
             parseContext.profileRequires((yyvsp[-2].interm.type).loc, EEsProfile, 300, 0, "arrayed type");
@@ -9559,12 +10228,12 @@
             (*(yyval.interm.typeList))[i].type->shallowCopy(type);
         }
     }
-#line 9563 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 10232 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 508:
-#line 3385 "glslang.y" /* yacc.c:1646  */
-    {
+  case 530: /* struct_declaration: type_qualifier type_specifier struct_declarator_list SEMICOLON  */
+#line 3509 "MachineIndependent/glslang.y"
+                                                                     {
         if ((yyvsp[-2].interm.type).arraySizes) {
             parseContext.profileRequires((yyvsp[-2].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type");
             parseContext.profileRequires((yyvsp[-2].interm.type).loc, EEsProfile, 300, 0, "arrayed type");
@@ -9588,39 +10257,39 @@
             (*(yyval.interm.typeList))[i].type->shallowCopy(type);
         }
     }
-#line 9592 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 10261 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 509:
-#line 3412 "glslang.y" /* yacc.c:1646  */
-    {
+  case 531: /* struct_declarator_list: struct_declarator  */
+#line 3536 "MachineIndependent/glslang.y"
+                        {
         (yyval.interm.typeList) = new TTypeList;
         (yyval.interm.typeList)->push_back((yyvsp[0].interm.typeLine));
     }
-#line 9601 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 10270 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 510:
-#line 3416 "glslang.y" /* yacc.c:1646  */
-    {
+  case 532: /* struct_declarator_list: struct_declarator_list COMMA struct_declarator  */
+#line 3540 "MachineIndependent/glslang.y"
+                                                     {
         (yyval.interm.typeList)->push_back((yyvsp[0].interm.typeLine));
     }
-#line 9609 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 10278 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 511:
-#line 3422 "glslang.y" /* yacc.c:1646  */
-    {
+  case 533: /* struct_declarator: IDENTIFIER  */
+#line 3546 "MachineIndependent/glslang.y"
+                 {
         (yyval.interm.typeLine).type = new TType(EbtVoid);
         (yyval.interm.typeLine).loc = (yyvsp[0].lex).loc;
         (yyval.interm.typeLine).type->setFieldName(*(yyvsp[0].lex).string);
     }
-#line 9619 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 10288 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 512:
-#line 3427 "glslang.y" /* yacc.c:1646  */
-    {
+  case 534: /* struct_declarator: IDENTIFIER array_specifier  */
+#line 3551 "MachineIndependent/glslang.y"
+                                 {
         parseContext.arrayOfArrayVersionCheck((yyvsp[-1].lex).loc, (yyvsp[0].interm).arraySizes);
 
         (yyval.interm.typeLine).type = new TType(EbtVoid);
@@ -9628,236 +10297,247 @@
         (yyval.interm.typeLine).type->setFieldName(*(yyvsp[-1].lex).string);
         (yyval.interm.typeLine).type->transferArraySizes((yyvsp[0].interm).arraySizes);
     }
-#line 9632 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 10301 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 513:
-#line 3438 "glslang.y" /* yacc.c:1646  */
-    {
+  case 535: /* initializer: assignment_expression  */
+#line 3562 "MachineIndependent/glslang.y"
+                            {
         (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
     }
-#line 9640 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 10309 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 514:
-#line 3442 "glslang.y" /* yacc.c:1646  */
-    {
+  case 536: /* initializer: LEFT_BRACE initializer_list RIGHT_BRACE  */
+#line 3566 "MachineIndependent/glslang.y"
+                                              {
         const char* initFeature = "{ } style initializers";
         parseContext.requireProfile((yyvsp[-2].lex).loc, ~EEsProfile, initFeature);
         parseContext.profileRequires((yyvsp[-2].lex).loc, ~EEsProfile, 420, E_GL_ARB_shading_language_420pack, initFeature);
         (yyval.interm.intermTypedNode) = (yyvsp[-1].interm.intermTypedNode);
     }
-#line 9651 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 10320 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 515:
-#line 3448 "glslang.y" /* yacc.c:1646  */
-    {
+  case 537: /* initializer: LEFT_BRACE initializer_list COMMA RIGHT_BRACE  */
+#line 3572 "MachineIndependent/glslang.y"
+                                                    {
         const char* initFeature = "{ } style initializers";
         parseContext.requireProfile((yyvsp[-3].lex).loc, ~EEsProfile, initFeature);
         parseContext.profileRequires((yyvsp[-3].lex).loc, ~EEsProfile, 420, E_GL_ARB_shading_language_420pack, initFeature);
         (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode);
     }
-#line 9662 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 10331 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 516:
-#line 3459 "glslang.y" /* yacc.c:1646  */
-    {
+  case 538: /* initializer: LEFT_BRACE RIGHT_BRACE  */
+#line 3578 "MachineIndependent/glslang.y"
+                             {
+        const char* initFeature = "empty { } initializer";
+        parseContext.profileRequires((yyvsp[-1].lex).loc, EEsProfile, 0, E_GL_EXT_null_initializer, initFeature);
+        parseContext.profileRequires((yyvsp[-1].lex).loc, ~EEsProfile, 0, E_GL_EXT_null_initializer, initFeature);
+        (yyval.interm.intermTypedNode) = parseContext.intermediate.makeAggregate((yyvsp[-1].lex).loc);
+    }
+#line 10342 "MachineIndependent/glslang_tab.cpp"
+    break;
+
+  case 539: /* initializer_list: initializer  */
+#line 3589 "MachineIndependent/glslang.y"
+                  {
         (yyval.interm.intermTypedNode) = parseContext.intermediate.growAggregate(0, (yyvsp[0].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)->getLoc());
     }
-#line 9670 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 10350 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 517:
-#line 3462 "glslang.y" /* yacc.c:1646  */
-    {
+  case 540: /* initializer_list: initializer_list COMMA initializer  */
+#line 3592 "MachineIndependent/glslang.y"
+                                         {
         (yyval.interm.intermTypedNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
     }
-#line 9678 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 10358 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 518:
-#line 3469 "glslang.y" /* yacc.c:1646  */
-    { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 9684 "glslang_tab.cpp" /* yacc.c:1646  */
+  case 541: /* declaration_statement: declaration  */
+#line 3599 "MachineIndependent/glslang.y"
+                  { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
+#line 10364 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 519:
-#line 3473 "glslang.y" /* yacc.c:1646  */
-    { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 9690 "glslang_tab.cpp" /* yacc.c:1646  */
+  case 542: /* statement: compound_statement  */
+#line 3603 "MachineIndependent/glslang.y"
+                          { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
+#line 10370 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 520:
-#line 3474 "glslang.y" /* yacc.c:1646  */
-    { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 9696 "glslang_tab.cpp" /* yacc.c:1646  */
+  case 543: /* statement: simple_statement  */
+#line 3604 "MachineIndependent/glslang.y"
+                          { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
+#line 10376 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 521:
-#line 3480 "glslang.y" /* yacc.c:1646  */
-    { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 9702 "glslang_tab.cpp" /* yacc.c:1646  */
+  case 544: /* simple_statement: declaration_statement  */
+#line 3610 "MachineIndependent/glslang.y"
+                            { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
+#line 10382 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 522:
-#line 3481 "glslang.y" /* yacc.c:1646  */
-    { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 9708 "glslang_tab.cpp" /* yacc.c:1646  */
+  case 545: /* simple_statement: expression_statement  */
+#line 3611 "MachineIndependent/glslang.y"
+                            { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
+#line 10388 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 523:
-#line 3482 "glslang.y" /* yacc.c:1646  */
-    { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 9714 "glslang_tab.cpp" /* yacc.c:1646  */
+  case 546: /* simple_statement: selection_statement  */
+#line 3612 "MachineIndependent/glslang.y"
+                            { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
+#line 10394 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 524:
-#line 3483 "glslang.y" /* yacc.c:1646  */
-    { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 9720 "glslang_tab.cpp" /* yacc.c:1646  */
+  case 547: /* simple_statement: switch_statement  */
+#line 3613 "MachineIndependent/glslang.y"
+                            { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
+#line 10400 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 525:
-#line 3484 "glslang.y" /* yacc.c:1646  */
-    { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 9726 "glslang_tab.cpp" /* yacc.c:1646  */
+  case 548: /* simple_statement: case_label  */
+#line 3614 "MachineIndependent/glslang.y"
+                            { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
+#line 10406 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 526:
-#line 3485 "glslang.y" /* yacc.c:1646  */
-    { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 9732 "glslang_tab.cpp" /* yacc.c:1646  */
+  case 549: /* simple_statement: iteration_statement  */
+#line 3615 "MachineIndependent/glslang.y"
+                            { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
+#line 10412 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 527:
-#line 3486 "glslang.y" /* yacc.c:1646  */
-    { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 9738 "glslang_tab.cpp" /* yacc.c:1646  */
+  case 550: /* simple_statement: jump_statement  */
+#line 3616 "MachineIndependent/glslang.y"
+                            { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
+#line 10418 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 528:
-#line 3488 "glslang.y" /* yacc.c:1646  */
-    { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 9744 "glslang_tab.cpp" /* yacc.c:1646  */
+  case 551: /* simple_statement: demote_statement  */
+#line 3618 "MachineIndependent/glslang.y"
+                            { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
+#line 10424 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 529:
-#line 3494 "glslang.y" /* yacc.c:1646  */
-    {
+  case 552: /* demote_statement: DEMOTE SEMICOLON  */
+#line 3624 "MachineIndependent/glslang.y"
+                       {
         parseContext.requireStage((yyvsp[-1].lex).loc, EShLangFragment, "demote");
         parseContext.requireExtensions((yyvsp[-1].lex).loc, 1, &E_GL_EXT_demote_to_helper_invocation, "demote");
         (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpDemote, (yyvsp[-1].lex).loc);
     }
-#line 9754 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 10434 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 530:
-#line 3503 "glslang.y" /* yacc.c:1646  */
-    { (yyval.interm.intermNode) = 0; }
-#line 9760 "glslang_tab.cpp" /* yacc.c:1646  */
+  case 553: /* compound_statement: LEFT_BRACE RIGHT_BRACE  */
+#line 3633 "MachineIndependent/glslang.y"
+                             { (yyval.interm.intermNode) = 0; }
+#line 10440 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 531:
-#line 3504 "glslang.y" /* yacc.c:1646  */
-    {
+  case 554: /* $@5: %empty  */
+#line 3634 "MachineIndependent/glslang.y"
+                 {
         parseContext.symbolTable.push();
         ++parseContext.statementNestingLevel;
     }
-#line 9769 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 10449 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 532:
-#line 3508 "glslang.y" /* yacc.c:1646  */
-    {
+  case 555: /* $@6: %empty  */
+#line 3638 "MachineIndependent/glslang.y"
+                     {
         parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]);
         --parseContext.statementNestingLevel;
     }
-#line 9778 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 10458 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 533:
-#line 3512 "glslang.y" /* yacc.c:1646  */
-    {
+  case 556: /* compound_statement: LEFT_BRACE $@5 statement_list $@6 RIGHT_BRACE  */
+#line 3642 "MachineIndependent/glslang.y"
+                  {
         if ((yyvsp[-2].interm.intermNode) && (yyvsp[-2].interm.intermNode)->getAsAggregate())
             (yyvsp[-2].interm.intermNode)->getAsAggregate()->setOperator(EOpSequence);
         (yyval.interm.intermNode) = (yyvsp[-2].interm.intermNode);
     }
-#line 9788 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 10468 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 534:
-#line 3520 "glslang.y" /* yacc.c:1646  */
-    { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 9794 "glslang_tab.cpp" /* yacc.c:1646  */
+  case 557: /* statement_no_new_scope: compound_statement_no_new_scope  */
+#line 3650 "MachineIndependent/glslang.y"
+                                      { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
+#line 10474 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 535:
-#line 3521 "glslang.y" /* yacc.c:1646  */
-    { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 9800 "glslang_tab.cpp" /* yacc.c:1646  */
+  case 558: /* statement_no_new_scope: simple_statement  */
+#line 3651 "MachineIndependent/glslang.y"
+                                      { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
+#line 10480 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 536:
-#line 3525 "glslang.y" /* yacc.c:1646  */
-    {
+  case 559: /* $@7: %empty  */
+#line 3655 "MachineIndependent/glslang.y"
+      {
         ++parseContext.controlFlowNestingLevel;
     }
-#line 9808 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 10488 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 537:
-#line 3528 "glslang.y" /* yacc.c:1646  */
-    {
+  case 560: /* statement_scoped: $@7 compound_statement  */
+#line 3658 "MachineIndependent/glslang.y"
+                          {
         --parseContext.controlFlowNestingLevel;
         (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
     }
-#line 9817 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 10497 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 538:
-#line 3532 "glslang.y" /* yacc.c:1646  */
-    {
+  case 561: /* $@8: %empty  */
+#line 3662 "MachineIndependent/glslang.y"
+      {
         parseContext.symbolTable.push();
         ++parseContext.statementNestingLevel;
         ++parseContext.controlFlowNestingLevel;
     }
-#line 9827 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 10507 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 539:
-#line 3537 "glslang.y" /* yacc.c:1646  */
-    {
+  case 562: /* statement_scoped: $@8 simple_statement  */
+#line 3667 "MachineIndependent/glslang.y"
+                       {
         parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]);
         --parseContext.statementNestingLevel;
         --parseContext.controlFlowNestingLevel;
         (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
     }
-#line 9838 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 10518 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 540:
-#line 3546 "glslang.y" /* yacc.c:1646  */
-    {
+  case 563: /* compound_statement_no_new_scope: LEFT_BRACE RIGHT_BRACE  */
+#line 3676 "MachineIndependent/glslang.y"
+                             {
         (yyval.interm.intermNode) = 0;
     }
-#line 9846 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 10526 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 541:
-#line 3549 "glslang.y" /* yacc.c:1646  */
-    {
+  case 564: /* compound_statement_no_new_scope: LEFT_BRACE statement_list RIGHT_BRACE  */
+#line 3679 "MachineIndependent/glslang.y"
+                                            {
         if ((yyvsp[-1].interm.intermNode) && (yyvsp[-1].interm.intermNode)->getAsAggregate())
             (yyvsp[-1].interm.intermNode)->getAsAggregate()->setOperator(EOpSequence);
         (yyval.interm.intermNode) = (yyvsp[-1].interm.intermNode);
     }
-#line 9856 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 10536 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 542:
-#line 3557 "glslang.y" /* yacc.c:1646  */
-    {
+  case 565: /* statement_list: statement  */
+#line 3687 "MachineIndependent/glslang.y"
+                {
         (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[0].interm.intermNode));
         if ((yyvsp[0].interm.intermNode) && (yyvsp[0].interm.intermNode)->getAsBranchNode() && ((yyvsp[0].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpCase ||
                                             (yyvsp[0].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpDefault)) {
@@ -9865,12 +10545,12 @@
             (yyval.interm.intermNode) = 0;  // start a fresh subsequence for what's after this case
         }
     }
-#line 9869 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 10549 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 543:
-#line 3565 "glslang.y" /* yacc.c:1646  */
-    {
+  case 566: /* statement_list: statement_list statement  */
+#line 3695 "MachineIndependent/glslang.y"
+                               {
         if ((yyvsp[0].interm.intermNode) && (yyvsp[0].interm.intermNode)->getAsBranchNode() && ((yyvsp[0].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpCase ||
                                             (yyvsp[0].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpDefault)) {
             parseContext.wrapupSwitchSubsequence((yyvsp[-1].interm.intermNode) ? (yyvsp[-1].interm.intermNode)->getAsAggregate() : 0, (yyvsp[0].interm.intermNode));
@@ -9878,77 +10558,77 @@
         } else
             (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-1].interm.intermNode), (yyvsp[0].interm.intermNode));
     }
-#line 9882 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 10562 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 544:
-#line 3576 "glslang.y" /* yacc.c:1646  */
-    { (yyval.interm.intermNode) = 0; }
-#line 9888 "glslang_tab.cpp" /* yacc.c:1646  */
+  case 567: /* expression_statement: SEMICOLON  */
+#line 3706 "MachineIndependent/glslang.y"
+                 { (yyval.interm.intermNode) = 0; }
+#line 10568 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 545:
-#line 3577 "glslang.y" /* yacc.c:1646  */
-    { (yyval.interm.intermNode) = static_cast<TIntermNode*>((yyvsp[-1].interm.intermTypedNode)); }
-#line 9894 "glslang_tab.cpp" /* yacc.c:1646  */
+  case 568: /* expression_statement: expression SEMICOLON  */
+#line 3707 "MachineIndependent/glslang.y"
+                            { (yyval.interm.intermNode) = static_cast<TIntermNode*>((yyvsp[-1].interm.intermTypedNode)); }
+#line 10574 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 546:
-#line 3581 "glslang.y" /* yacc.c:1646  */
-    {
+  case 569: /* selection_statement: selection_statement_nonattributed  */
+#line 3711 "MachineIndependent/glslang.y"
+                                        {
         (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
     }
-#line 9902 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 10582 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 547:
-#line 3585 "glslang.y" /* yacc.c:1646  */
-    {
+  case 570: /* selection_statement: attribute selection_statement_nonattributed  */
+#line 3715 "MachineIndependent/glslang.y"
+                                                  {
         parseContext.handleSelectionAttributes(*(yyvsp[-1].interm.attributes), (yyvsp[0].interm.intermNode));
         (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
     }
-#line 9911 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 10591 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 548:
-#line 3592 "glslang.y" /* yacc.c:1646  */
-    {
+  case 571: /* selection_statement_nonattributed: IF LEFT_PAREN expression RIGHT_PAREN selection_rest_statement  */
+#line 3722 "MachineIndependent/glslang.y"
+                                                                    {
         parseContext.boolCheck((yyvsp[-4].lex).loc, (yyvsp[-2].interm.intermTypedNode));
         (yyval.interm.intermNode) = parseContext.intermediate.addSelection((yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.nodePair), (yyvsp[-4].lex).loc);
     }
-#line 9920 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 10600 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 549:
-#line 3599 "glslang.y" /* yacc.c:1646  */
-    {
+  case 572: /* selection_rest_statement: statement_scoped ELSE statement_scoped  */
+#line 3729 "MachineIndependent/glslang.y"
+                                             {
         (yyval.interm.nodePair).node1 = (yyvsp[-2].interm.intermNode);
         (yyval.interm.nodePair).node2 = (yyvsp[0].interm.intermNode);
     }
-#line 9929 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 10609 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 550:
-#line 3603 "glslang.y" /* yacc.c:1646  */
-    {
+  case 573: /* selection_rest_statement: statement_scoped  */
+#line 3733 "MachineIndependent/glslang.y"
+                       {
         (yyval.interm.nodePair).node1 = (yyvsp[0].interm.intermNode);
         (yyval.interm.nodePair).node2 = 0;
     }
-#line 9938 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 10618 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 551:
-#line 3611 "glslang.y" /* yacc.c:1646  */
-    {
+  case 574: /* condition: expression  */
+#line 3741 "MachineIndependent/glslang.y"
+                 {
         (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
         parseContext.boolCheck((yyvsp[0].interm.intermTypedNode)->getLoc(), (yyvsp[0].interm.intermTypedNode));
     }
-#line 9947 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 10627 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 552:
-#line 3615 "glslang.y" /* yacc.c:1646  */
-    {
+  case 575: /* condition: fully_specified_type IDENTIFIER EQUAL initializer  */
+#line 3745 "MachineIndependent/glslang.y"
+                                                        {
         parseContext.boolCheck((yyvsp[-2].lex).loc, (yyvsp[-3].interm.type));
 
         TType type((yyvsp[-3].interm.type));
@@ -9958,29 +10638,29 @@
         else
             (yyval.interm.intermTypedNode) = 0;
     }
-#line 9962 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 10642 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 553:
-#line 3628 "glslang.y" /* yacc.c:1646  */
-    {
+  case 576: /* switch_statement: switch_statement_nonattributed  */
+#line 3758 "MachineIndependent/glslang.y"
+                                     {
         (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
     }
-#line 9970 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 10650 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 554:
-#line 3632 "glslang.y" /* yacc.c:1646  */
-    {
+  case 577: /* switch_statement: attribute switch_statement_nonattributed  */
+#line 3762 "MachineIndependent/glslang.y"
+                                               {
         parseContext.handleSwitchAttributes(*(yyvsp[-1].interm.attributes), (yyvsp[0].interm.intermNode));
         (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
     }
-#line 9979 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 10659 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 555:
-#line 3639 "glslang.y" /* yacc.c:1646  */
-    {
+  case 578: /* $@9: %empty  */
+#line 3769 "MachineIndependent/glslang.y"
+                                               {
         // start new switch sequence on the switch stack
         ++parseContext.controlFlowNestingLevel;
         ++parseContext.statementNestingLevel;
@@ -9988,12 +10668,12 @@
         parseContext.switchLevel.push_back(parseContext.statementNestingLevel);
         parseContext.symbolTable.push();
     }
-#line 9992 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 10672 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 556:
-#line 3647 "glslang.y" /* yacc.c:1646  */
-    {
+  case 579: /* switch_statement_nonattributed: SWITCH LEFT_PAREN expression RIGHT_PAREN $@9 LEFT_BRACE switch_statement_list RIGHT_BRACE  */
+#line 3777 "MachineIndependent/glslang.y"
+                                                 {
         (yyval.interm.intermNode) = parseContext.addSwitch((yyvsp[-7].lex).loc, (yyvsp[-5].interm.intermTypedNode), (yyvsp[-1].interm.intermNode) ? (yyvsp[-1].interm.intermNode)->getAsAggregate() : 0);
         delete parseContext.switchSequenceStack.back();
         parseContext.switchSequenceStack.pop_back();
@@ -10002,28 +10682,28 @@
         --parseContext.statementNestingLevel;
         --parseContext.controlFlowNestingLevel;
     }
-#line 10006 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 10686 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 557:
-#line 3659 "glslang.y" /* yacc.c:1646  */
-    {
+  case 580: /* switch_statement_list: %empty  */
+#line 3789 "MachineIndependent/glslang.y"
+                    {
         (yyval.interm.intermNode) = 0;
     }
-#line 10014 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 10694 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 558:
-#line 3662 "glslang.y" /* yacc.c:1646  */
-    {
+  case 581: /* switch_statement_list: statement_list  */
+#line 3792 "MachineIndependent/glslang.y"
+                     {
         (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
     }
-#line 10022 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 10702 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 559:
-#line 3668 "glslang.y" /* yacc.c:1646  */
-    {
+  case 582: /* case_label: CASE expression COLON  */
+#line 3798 "MachineIndependent/glslang.y"
+                            {
         (yyval.interm.intermNode) = 0;
         if (parseContext.switchLevel.size() == 0)
             parseContext.error((yyvsp[-2].lex).loc, "cannot appear outside switch statement", "case", "");
@@ -10035,12 +10715,12 @@
             (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpCase, (yyvsp[-1].interm.intermTypedNode), (yyvsp[-2].lex).loc);
         }
     }
-#line 10039 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 10719 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 560:
-#line 3680 "glslang.y" /* yacc.c:1646  */
-    {
+  case 583: /* case_label: DEFAULT COLON  */
+#line 3810 "MachineIndependent/glslang.y"
+                    {
         (yyval.interm.intermNode) = 0;
         if (parseContext.switchLevel.size() == 0)
             parseContext.error((yyvsp[-1].lex).loc, "cannot appear outside switch statement", "default", "");
@@ -10049,29 +10729,29 @@
         else
             (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpDefault, (yyvsp[-1].lex).loc);
     }
-#line 10053 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 10733 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 561:
-#line 3692 "glslang.y" /* yacc.c:1646  */
-    {
+  case 584: /* iteration_statement: iteration_statement_nonattributed  */
+#line 3822 "MachineIndependent/glslang.y"
+                                        {
         (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
     }
-#line 10061 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 10741 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 562:
-#line 3696 "glslang.y" /* yacc.c:1646  */
-    {
+  case 585: /* iteration_statement: attribute iteration_statement_nonattributed  */
+#line 3826 "MachineIndependent/glslang.y"
+                                                  {
         parseContext.handleLoopAttributes(*(yyvsp[-1].interm.attributes), (yyvsp[0].interm.intermNode));
         (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
     }
-#line 10070 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 10750 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 563:
-#line 3703 "glslang.y" /* yacc.c:1646  */
-    {
+  case 586: /* $@10: %empty  */
+#line 3833 "MachineIndependent/glslang.y"
+                       {
         if (! parseContext.limits.whileLoops)
             parseContext.error((yyvsp[-1].lex).loc, "while loops not available", "limitation", "");
         parseContext.symbolTable.push();
@@ -10079,34 +10759,34 @@
         ++parseContext.statementNestingLevel;
         ++parseContext.controlFlowNestingLevel;
     }
-#line 10083 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 10763 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 564:
-#line 3711 "glslang.y" /* yacc.c:1646  */
-    {
+  case 587: /* iteration_statement_nonattributed: WHILE LEFT_PAREN $@10 condition RIGHT_PAREN statement_no_new_scope  */
+#line 3841 "MachineIndependent/glslang.y"
+                                                   {
         parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]);
         (yyval.interm.intermNode) = parseContext.intermediate.addLoop((yyvsp[0].interm.intermNode), (yyvsp[-2].interm.intermTypedNode), 0, true, (yyvsp[-5].lex).loc);
         --parseContext.loopNestingLevel;
         --parseContext.statementNestingLevel;
         --parseContext.controlFlowNestingLevel;
     }
-#line 10095 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 10775 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 565:
-#line 3718 "glslang.y" /* yacc.c:1646  */
-    {
+  case 588: /* $@11: %empty  */
+#line 3848 "MachineIndependent/glslang.y"
+         {
         ++parseContext.loopNestingLevel;
         ++parseContext.statementNestingLevel;
         ++parseContext.controlFlowNestingLevel;
     }
-#line 10105 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 10785 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 566:
-#line 3723 "glslang.y" /* yacc.c:1646  */
-    {
+  case 589: /* iteration_statement_nonattributed: DO $@11 statement WHILE LEFT_PAREN expression RIGHT_PAREN SEMICOLON  */
+#line 3853 "MachineIndependent/glslang.y"
+                                                                  {
         if (! parseContext.limits.whileLoops)
             parseContext.error((yyvsp[-7].lex).loc, "do-while loops not available", "limitation", "");
 
@@ -10117,23 +10797,23 @@
         --parseContext.statementNestingLevel;
         --parseContext.controlFlowNestingLevel;
     }
-#line 10121 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 10801 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 567:
-#line 3734 "glslang.y" /* yacc.c:1646  */
-    {
+  case 590: /* $@12: %empty  */
+#line 3864 "MachineIndependent/glslang.y"
+                     {
         parseContext.symbolTable.push();
         ++parseContext.loopNestingLevel;
         ++parseContext.statementNestingLevel;
         ++parseContext.controlFlowNestingLevel;
     }
-#line 10132 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 10812 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 568:
-#line 3740 "glslang.y" /* yacc.c:1646  */
-    {
+  case 591: /* iteration_statement_nonattributed: FOR LEFT_PAREN $@12 for_init_statement for_rest_statement RIGHT_PAREN statement_no_new_scope  */
+#line 3870 "MachineIndependent/glslang.y"
+                                                                               {
         parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]);
         (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[-3].interm.intermNode), (yyvsp[-5].lex).loc);
         TIntermLoop* forLoop = parseContext.intermediate.addLoop((yyvsp[0].interm.intermNode), reinterpret_cast<TIntermTyped*>((yyvsp[-2].interm.nodePair).node1), reinterpret_cast<TIntermTyped*>((yyvsp[-2].interm.nodePair).node2), true, (yyvsp[-6].lex).loc);
@@ -10145,166 +10825,201 @@
         --parseContext.statementNestingLevel;
         --parseContext.controlFlowNestingLevel;
     }
-#line 10149 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 10829 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 569:
-#line 3755 "glslang.y" /* yacc.c:1646  */
-    {
+  case 592: /* for_init_statement: expression_statement  */
+#line 3885 "MachineIndependent/glslang.y"
+                           {
         (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
     }
-#line 10157 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 10837 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 570:
-#line 3758 "glslang.y" /* yacc.c:1646  */
-    {
+  case 593: /* for_init_statement: declaration_statement  */
+#line 3888 "MachineIndependent/glslang.y"
+                            {
         (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
     }
-#line 10165 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 10845 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 571:
-#line 3764 "glslang.y" /* yacc.c:1646  */
-    {
+  case 594: /* conditionopt: condition  */
+#line 3894 "MachineIndependent/glslang.y"
+                {
         (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
     }
-#line 10173 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 10853 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 572:
-#line 3767 "glslang.y" /* yacc.c:1646  */
-    {
+  case 595: /* conditionopt: %empty  */
+#line 3897 "MachineIndependent/glslang.y"
+                        {
         (yyval.interm.intermTypedNode) = 0;
     }
-#line 10181 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 10861 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 573:
-#line 3773 "glslang.y" /* yacc.c:1646  */
-    {
+  case 596: /* for_rest_statement: conditionopt SEMICOLON  */
+#line 3903 "MachineIndependent/glslang.y"
+                             {
         (yyval.interm.nodePair).node1 = (yyvsp[-1].interm.intermTypedNode);
         (yyval.interm.nodePair).node2 = 0;
     }
-#line 10190 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 10870 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 574:
-#line 3777 "glslang.y" /* yacc.c:1646  */
-    {
+  case 597: /* for_rest_statement: conditionopt SEMICOLON expression  */
+#line 3907 "MachineIndependent/glslang.y"
+                                         {
         (yyval.interm.nodePair).node1 = (yyvsp[-2].interm.intermTypedNode);
         (yyval.interm.nodePair).node2 = (yyvsp[0].interm.intermTypedNode);
     }
-#line 10199 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 10879 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 575:
-#line 3784 "glslang.y" /* yacc.c:1646  */
-    {
+  case 598: /* jump_statement: CONTINUE SEMICOLON  */
+#line 3914 "MachineIndependent/glslang.y"
+                         {
         if (parseContext.loopNestingLevel <= 0)
             parseContext.error((yyvsp[-1].lex).loc, "continue statement only allowed in loops", "", "");
         (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpContinue, (yyvsp[-1].lex).loc);
     }
-#line 10209 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 10889 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 576:
-#line 3789 "glslang.y" /* yacc.c:1646  */
-    {
+  case 599: /* jump_statement: BREAK SEMICOLON  */
+#line 3919 "MachineIndependent/glslang.y"
+                      {
         if (parseContext.loopNestingLevel + parseContext.switchSequenceStack.size() <= 0)
             parseContext.error((yyvsp[-1].lex).loc, "break statement only allowed in switch and loops", "", "");
         (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpBreak, (yyvsp[-1].lex).loc);
     }
-#line 10219 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 10899 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 577:
-#line 3794 "glslang.y" /* yacc.c:1646  */
-    {
+  case 600: /* jump_statement: RETURN SEMICOLON  */
+#line 3924 "MachineIndependent/glslang.y"
+                       {
         (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpReturn, (yyvsp[-1].lex).loc);
         if (parseContext.currentFunctionType->getBasicType() != EbtVoid)
             parseContext.error((yyvsp[-1].lex).loc, "non-void function must return a value", "return", "");
         if (parseContext.inMain)
             parseContext.postEntryPointReturn = true;
     }
-#line 10231 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 10911 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 578:
-#line 3801 "glslang.y" /* yacc.c:1646  */
-    {
+  case 601: /* jump_statement: RETURN expression SEMICOLON  */
+#line 3931 "MachineIndependent/glslang.y"
+                                  {
         (yyval.interm.intermNode) = parseContext.handleReturnValue((yyvsp[-2].lex).loc, (yyvsp[-1].interm.intermTypedNode));
     }
-#line 10239 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 10919 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 579:
-#line 3804 "glslang.y" /* yacc.c:1646  */
-    {
+  case 602: /* jump_statement: DISCARD SEMICOLON  */
+#line 3934 "MachineIndependent/glslang.y"
+                        {
         parseContext.requireStage((yyvsp[-1].lex).loc, EShLangFragment, "discard");
         (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpKill, (yyvsp[-1].lex).loc);
     }
-#line 10248 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 10928 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 580:
-#line 3813 "glslang.y" /* yacc.c:1646  */
-    {
+  case 603: /* jump_statement: TERMINATE_INVOCATION SEMICOLON  */
+#line 3938 "MachineIndependent/glslang.y"
+                                     {
+        parseContext.requireStage((yyvsp[-1].lex).loc, EShLangFragment, "terminateInvocation");
+        (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpTerminateInvocation, (yyvsp[-1].lex).loc);
+    }
+#line 10937 "MachineIndependent/glslang_tab.cpp"
+    break;
+
+  case 604: /* jump_statement: TERMINATE_RAY SEMICOLON  */
+#line 3943 "MachineIndependent/glslang.y"
+                              {
+        parseContext.requireStage((yyvsp[-1].lex).loc, EShLangAnyHit, "terminateRayEXT");
+        (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpTerminateRayKHR, (yyvsp[-1].lex).loc);
+    }
+#line 10946 "MachineIndependent/glslang_tab.cpp"
+    break;
+
+  case 605: /* jump_statement: IGNORE_INTERSECTION SEMICOLON  */
+#line 3947 "MachineIndependent/glslang.y"
+                                    {
+        parseContext.requireStage((yyvsp[-1].lex).loc, EShLangAnyHit, "ignoreIntersectionEXT");
+        (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpIgnoreIntersectionKHR, (yyvsp[-1].lex).loc);
+    }
+#line 10955 "MachineIndependent/glslang_tab.cpp"
+    break;
+
+  case 606: /* translation_unit: external_declaration  */
+#line 3957 "MachineIndependent/glslang.y"
+                           {
         (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
         parseContext.intermediate.setTreeRoot((yyval.interm.intermNode));
     }
-#line 10257 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 10964 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 581:
-#line 3817 "glslang.y" /* yacc.c:1646  */
-    {
+  case 607: /* translation_unit: translation_unit external_declaration  */
+#line 3961 "MachineIndependent/glslang.y"
+                                            {
         if ((yyvsp[0].interm.intermNode) != nullptr) {
             (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-1].interm.intermNode), (yyvsp[0].interm.intermNode));
             parseContext.intermediate.setTreeRoot((yyval.interm.intermNode));
         }
     }
-#line 10268 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 10975 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 582:
-#line 3826 "glslang.y" /* yacc.c:1646  */
-    {
+  case 608: /* external_declaration: function_definition  */
+#line 3970 "MachineIndependent/glslang.y"
+                          {
         (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
     }
-#line 10276 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 10983 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 583:
-#line 3829 "glslang.y" /* yacc.c:1646  */
-    {
+  case 609: /* external_declaration: declaration  */
+#line 3973 "MachineIndependent/glslang.y"
+                  {
         (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
     }
-#line 10284 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 10991 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 584:
-#line 3833 "glslang.y" /* yacc.c:1646  */
-    {
+  case 610: /* external_declaration: SEMICOLON  */
+#line 3977 "MachineIndependent/glslang.y"
+                {
         parseContext.requireProfile((yyvsp[0].lex).loc, ~EEsProfile, "extraneous semicolon");
         parseContext.profileRequires((yyvsp[0].lex).loc, ~EEsProfile, 460, nullptr, "extraneous semicolon");
         (yyval.interm.intermNode) = nullptr;
     }
-#line 10294 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 11001 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 585:
-#line 3842 "glslang.y" /* yacc.c:1646  */
-    {
+  case 611: /* $@13: %empty  */
+#line 3986 "MachineIndependent/glslang.y"
+                         {
         (yyvsp[0].interm).function = parseContext.handleFunctionDeclarator((yyvsp[0].interm).loc, *(yyvsp[0].interm).function, false /* not prototype */);
         (yyvsp[0].interm).intermNode = parseContext.handleFunctionDefinition((yyvsp[0].interm).loc, *(yyvsp[0].interm).function);
+
+        // For ES 100 only, according to ES shading language 100 spec: A function
+        // body has a scope nested inside the function's definition.
+        if (parseContext.profile == EEsProfile && parseContext.version == 100)
+        {
+            parseContext.symbolTable.push();
+            ++parseContext.statementNestingLevel;
+        }
     }
-#line 10303 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 11018 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 586:
-#line 3846 "glslang.y" /* yacc.c:1646  */
-    {
+  case 612: /* function_definition: function_prototype $@13 compound_statement_no_new_scope  */
+#line 3998 "MachineIndependent/glslang.y"
+                                    {
         //   May be best done as post process phase on intermediate code
         if (parseContext.currentFunctionType->getBasicType() != EbtVoid && ! parseContext.functionReturnsValue)
             parseContext.error((yyvsp[-2].interm).loc, "function does not return a value:", "", (yyvsp[-2].interm).function->getName().c_str());
@@ -10318,53 +11033,65 @@
         (yyval.interm.intermNode)->getAsAggregate()->setOptimize(parseContext.contextPragma.optimize);
         (yyval.interm.intermNode)->getAsAggregate()->setDebug(parseContext.contextPragma.debug);
         (yyval.interm.intermNode)->getAsAggregate()->setPragmaTable(parseContext.contextPragma.pragmaTable);
+
+        // Set currentFunctionType to empty pointer when goes outside of the function
+        parseContext.currentFunctionType = nullptr;
+
+        // For ES 100 only, according to ES shading language 100 spec: A function
+        // body has a scope nested inside the function's definition.
+        if (parseContext.profile == EEsProfile && parseContext.version == 100)
+        {
+            parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]);
+            --parseContext.statementNestingLevel;
+        }
     }
-#line 10323 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 11049 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 587:
-#line 3865 "glslang.y" /* yacc.c:1646  */
-    {
+  case 613: /* attribute: LEFT_BRACKET LEFT_BRACKET attribute_list RIGHT_BRACKET RIGHT_BRACKET  */
+#line 4028 "MachineIndependent/glslang.y"
+                                                                           {
         (yyval.interm.attributes) = (yyvsp[-2].interm.attributes);
         parseContext.requireExtensions((yyvsp[-4].lex).loc, 1, &E_GL_EXT_control_flow_attributes, "attribute");
     }
-#line 10332 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 11058 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 588:
-#line 3871 "glslang.y" /* yacc.c:1646  */
-    {
+  case 614: /* attribute_list: single_attribute  */
+#line 4034 "MachineIndependent/glslang.y"
+                       {
         (yyval.interm.attributes) = (yyvsp[0].interm.attributes);
     }
-#line 10340 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 11066 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 589:
-#line 3874 "glslang.y" /* yacc.c:1646  */
-    {
+  case 615: /* attribute_list: attribute_list COMMA single_attribute  */
+#line 4037 "MachineIndependent/glslang.y"
+                                            {
         (yyval.interm.attributes) = parseContext.mergeAttributes((yyvsp[-2].interm.attributes), (yyvsp[0].interm.attributes));
     }
-#line 10348 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 11074 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 590:
-#line 3879 "glslang.y" /* yacc.c:1646  */
-    {
+  case 616: /* single_attribute: IDENTIFIER  */
+#line 4042 "MachineIndependent/glslang.y"
+                 {
         (yyval.interm.attributes) = parseContext.makeAttributes(*(yyvsp[0].lex).string);
     }
-#line 10356 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 11082 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 591:
-#line 3882 "glslang.y" /* yacc.c:1646  */
-    {
+  case 617: /* single_attribute: IDENTIFIER LEFT_PAREN constant_expression RIGHT_PAREN  */
+#line 4045 "MachineIndependent/glslang.y"
+                                                            {
         (yyval.interm.attributes) = parseContext.makeAttributes(*(yyvsp[-3].lex).string, (yyvsp[-1].interm.intermTypedNode));
     }
-#line 10364 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 11090 "MachineIndependent/glslang_tab.cpp"
     break;
 
 
-#line 10368 "glslang_tab.cpp" /* yacc.c:1646  */
+#line 11094 "MachineIndependent/glslang_tab.cpp"
+
       default: break;
     }
   /* User semantic actions sometimes alter yychar, and that requires
@@ -10378,25 +11105,23 @@
      case of YYERROR or YYBACKUP, subsequent parser actions might lead
      to an incorrect destructor call or verbose syntax error message
      before the lookahead is translated.  */
-  YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
+  YY_SYMBOL_PRINT ("-> $$ =", YY_CAST (yysymbol_kind_t, yyr1[yyn]), &yyval, &yyloc);
 
   YYPOPSTACK (yylen);
   yylen = 0;
-  YY_STACK_PRINT (yyss, yyssp);
 
   *++yyvsp = yyval;
 
   /* Now 'shift' the result of the reduction.  Determine what state
      that goes to, based on the state we popped back to and the rule
      number reduced by.  */
-
-  yyn = yyr1[yyn];
-
-  yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
-  if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
-    yystate = yytable[yystate];
-  else
-    yystate = yydefgoto[yyn - YYNTOKENS];
+  {
+    const int yylhs = yyr1[yyn] - YYNTOKENS;
+    const int yyi = yypgoto[yylhs] + *yyssp;
+    yystate = (0 <= yyi && yyi <= YYLAST && yycheck[yyi] == *yyssp
+               ? yytable[yyi]
+               : yydefgoto[yylhs]);
+  }
 
   goto yynewstate;
 
@@ -10407,50 +11132,44 @@
 yyerrlab:
   /* Make sure we have latest lookahead translation.  See comments at
      user semantic actions for why this is necessary.  */
-  yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar);
-
+  yytoken = yychar == YYEMPTY ? YYSYMBOL_YYEMPTY : YYTRANSLATE (yychar);
   /* If not already recovering from an error, report this error.  */
   if (!yyerrstatus)
     {
       ++yynerrs;
-#if ! YYERROR_VERBOSE
-      yyerror (pParseContext, YY_("syntax error"));
-#else
-# define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \
-                                        yyssp, yytoken)
       {
+        yypcontext_t yyctx
+          = {yyssp, yytoken};
         char const *yymsgp = YY_("syntax error");
         int yysyntax_error_status;
-        yysyntax_error_status = YYSYNTAX_ERROR;
+        yysyntax_error_status = yysyntax_error (&yymsg_alloc, &yymsg, &yyctx);
         if (yysyntax_error_status == 0)
           yymsgp = yymsg;
-        else if (yysyntax_error_status == 1)
+        else if (yysyntax_error_status == -1)
           {
             if (yymsg != yymsgbuf)
               YYSTACK_FREE (yymsg);
-            yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc);
-            if (!yymsg)
+            yymsg = YY_CAST (char *,
+                             YYSTACK_ALLOC (YY_CAST (YYSIZE_T, yymsg_alloc)));
+            if (yymsg)
               {
-                yymsg = yymsgbuf;
-                yymsg_alloc = sizeof yymsgbuf;
-                yysyntax_error_status = 2;
+                yysyntax_error_status
+                  = yysyntax_error (&yymsg_alloc, &yymsg, &yyctx);
+                yymsgp = yymsg;
               }
             else
               {
-                yysyntax_error_status = YYSYNTAX_ERROR;
-                yymsgp = yymsg;
+                yymsg = yymsgbuf;
+                yymsg_alloc = sizeof yymsgbuf;
+                yysyntax_error_status = YYENOMEM;
               }
           }
         yyerror (pParseContext, yymsgp);
-        if (yysyntax_error_status == 2)
+        if (yysyntax_error_status == YYENOMEM)
           goto yyexhaustedlab;
       }
-# undef YYSYNTAX_ERROR
-#endif
     }
 
-
-
   if (yyerrstatus == 3)
     {
       /* If just tried and failed to reuse lookahead token after an
@@ -10479,12 +11198,10 @@
 | yyerrorlab -- error raised explicitly by YYERROR.  |
 `---------------------------------------------------*/
 yyerrorlab:
-
-  /* Pacify compilers like GCC when the user code never invokes
-     YYERROR and the label yyerrorlab therefore never appears in user
-     code.  */
-  if (/*CONSTCOND*/ 0)
-     goto yyerrorlab;
+  /* Pacify compilers when the user code never invokes YYERROR and the
+     label yyerrorlab therefore never appears in user code.  */
+  if (0)
+    YYERROR;
 
   /* Do not reclaim the symbols of the rule whose action triggered
      this YYERROR.  */
@@ -10501,13 +11218,14 @@
 yyerrlab1:
   yyerrstatus = 3;      /* Each real token shifted decrements this.  */
 
+  /* Pop stack until we find a state that shifts the error token.  */
   for (;;)
     {
       yyn = yypact[yystate];
       if (!yypact_value_is_default (yyn))
         {
-          yyn += YYTERROR;
-          if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
+          yyn += YYSYMBOL_YYerror;
+          if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYSYMBOL_YYerror)
             {
               yyn = yytable[yyn];
               if (0 < yyn)
@@ -10521,7 +11239,7 @@
 
 
       yydestruct ("Error: popping",
-                  yystos[yystate], yyvsp, pParseContext);
+                  YY_ACCESSING_SYMBOL (yystate), yyvsp, pParseContext);
       YYPOPSTACK (1);
       yystate = *yyssp;
       YY_STACK_PRINT (yyss, yyssp);
@@ -10533,7 +11251,7 @@
 
 
   /* Shift the error token.  */
-  YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
+  YY_SYMBOL_PRINT ("Shifting", YY_ACCESSING_SYMBOL (yyn), yyvsp, yylsp);
 
   yystate = yyn;
   goto yynewstate;
@@ -10546,6 +11264,7 @@
   yyresult = 0;
   goto yyreturn;
 
+
 /*-----------------------------------.
 | yyabortlab -- YYABORT comes here.  |
 `-----------------------------------*/
@@ -10553,16 +11272,21 @@
   yyresult = 1;
   goto yyreturn;
 
-#if !defined yyoverflow || YYERROR_VERBOSE
+
+#if 1
 /*-------------------------------------------------.
 | yyexhaustedlab -- memory exhaustion comes here.  |
 `-------------------------------------------------*/
 yyexhaustedlab:
   yyerror (pParseContext, YY_("memory exhausted"));
   yyresult = 2;
-  /* Fall through.  */
+  goto yyreturn;
 #endif
 
+
+/*-------------------------------------------------------.
+| yyreturn -- parsing is finished, clean up and return.  |
+`-------------------------------------------------------*/
 yyreturn:
   if (yychar != YYEMPTY)
     {
@@ -10579,19 +11303,17 @@
   while (yyssp != yyss)
     {
       yydestruct ("Cleanup: popping",
-                  yystos[*yyssp], yyvsp, pParseContext);
+                  YY_ACCESSING_SYMBOL (+*yyssp), yyvsp, pParseContext);
       YYPOPSTACK (1);
     }
 #ifndef yyoverflow
   if (yyss != yyssa)
     YYSTACK_FREE (yyss);
 #endif
-#if YYERROR_VERBOSE
   if (yymsg != yymsgbuf)
     YYSTACK_FREE (yymsg);
-#endif
   return yyresult;
 }
-#line 3887 "glslang.y" /* yacc.c:1906  */
 
+#line 4050 "MachineIndependent/glslang.y"
 
diff --git a/glslang/MachineIndependent/glslang_tab.cpp.h b/glslang/MachineIndependent/glslang_tab.cpp.h
index 31c8f90..d6bc00d 100644
--- a/glslang/MachineIndependent/glslang_tab.cpp.h
+++ b/glslang/MachineIndependent/glslang_tab.cpp.h
@@ -1,8 +1,9 @@
-/* A Bison parser, made by GNU Bison 3.0.4.  */
+/* A Bison parser, made by GNU Bison 3.7.4.  */
 
 /* Bison interface for Yacc-like parsers in C
 
-   Copyright (C) 1984, 1989-1990, 2000-2015 Free Software Foundation, Inc.
+   Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2020 Free Software Foundation,
+   Inc.
 
    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
@@ -30,8 +31,12 @@
    This special exception was added by the Free Software Foundation in
    version 2.2 of Bison.  */
 
-#ifndef YY_YY_GLSLANG_TAB_CPP_H_INCLUDED
-# define YY_YY_GLSLANG_TAB_CPP_H_INCLUDED
+/* DO NOT RELY ON FEATURES THAT ARE NOT DOCUMENTED in the manual,
+   especially those whose name start with YY_ or yy_.  They are
+   private implementation details that can be changed or removed.  */
+
+#ifndef YY_YY_MACHINEINDEPENDENT_GLSLANG_TAB_CPP_H_INCLUDED
+# define YY_YY_MACHINEINDEPENDENT_GLSLANG_TAB_CPP_H_INCLUDED
 /* Debug traces.  */
 #ifndef YYDEBUG
 # define YYDEBUG 1
@@ -40,437 +45,466 @@
 extern int yydebug;
 #endif
 
-/* Token type.  */
+/* Token kinds.  */
 #ifndef YYTOKENTYPE
 # define YYTOKENTYPE
   enum yytokentype
   {
-    CONST = 258,
-    BOOL = 259,
-    INT = 260,
-    UINT = 261,
-    FLOAT = 262,
-    BVEC2 = 263,
-    BVEC3 = 264,
-    BVEC4 = 265,
-    IVEC2 = 266,
-    IVEC3 = 267,
-    IVEC4 = 268,
-    UVEC2 = 269,
-    UVEC3 = 270,
-    UVEC4 = 271,
-    VEC2 = 272,
-    VEC3 = 273,
-    VEC4 = 274,
-    MAT2 = 275,
-    MAT3 = 276,
-    MAT4 = 277,
-    MAT2X2 = 278,
-    MAT2X3 = 279,
-    MAT2X4 = 280,
-    MAT3X2 = 281,
-    MAT3X3 = 282,
-    MAT3X4 = 283,
-    MAT4X2 = 284,
-    MAT4X3 = 285,
-    MAT4X4 = 286,
-    SAMPLER2D = 287,
-    SAMPLER3D = 288,
-    SAMPLERCUBE = 289,
-    SAMPLER2DSHADOW = 290,
-    SAMPLERCUBESHADOW = 291,
-    SAMPLER2DARRAY = 292,
-    SAMPLER2DARRAYSHADOW = 293,
-    ISAMPLER2D = 294,
-    ISAMPLER3D = 295,
-    ISAMPLERCUBE = 296,
-    ISAMPLER2DARRAY = 297,
-    USAMPLER2D = 298,
-    USAMPLER3D = 299,
-    USAMPLERCUBE = 300,
-    USAMPLER2DARRAY = 301,
-    SAMPLER = 302,
-    SAMPLERSHADOW = 303,
-    TEXTURE2D = 304,
-    TEXTURE3D = 305,
-    TEXTURECUBE = 306,
-    TEXTURE2DARRAY = 307,
-    ITEXTURE2D = 308,
-    ITEXTURE3D = 309,
-    ITEXTURECUBE = 310,
-    ITEXTURE2DARRAY = 311,
-    UTEXTURE2D = 312,
-    UTEXTURE3D = 313,
-    UTEXTURECUBE = 314,
-    UTEXTURE2DARRAY = 315,
-    ATTRIBUTE = 316,
-    VARYING = 317,
-    FLOAT16_T = 318,
-    FLOAT32_T = 319,
-    DOUBLE = 320,
-    FLOAT64_T = 321,
-    INT64_T = 322,
-    UINT64_T = 323,
-    INT32_T = 324,
-    UINT32_T = 325,
-    INT16_T = 326,
-    UINT16_T = 327,
-    INT8_T = 328,
-    UINT8_T = 329,
-    I64VEC2 = 330,
-    I64VEC3 = 331,
-    I64VEC4 = 332,
-    U64VEC2 = 333,
-    U64VEC3 = 334,
-    U64VEC4 = 335,
-    I32VEC2 = 336,
-    I32VEC3 = 337,
-    I32VEC4 = 338,
-    U32VEC2 = 339,
-    U32VEC3 = 340,
-    U32VEC4 = 341,
-    I16VEC2 = 342,
-    I16VEC3 = 343,
-    I16VEC4 = 344,
-    U16VEC2 = 345,
-    U16VEC3 = 346,
-    U16VEC4 = 347,
-    I8VEC2 = 348,
-    I8VEC3 = 349,
-    I8VEC4 = 350,
-    U8VEC2 = 351,
-    U8VEC3 = 352,
-    U8VEC4 = 353,
-    DVEC2 = 354,
-    DVEC3 = 355,
-    DVEC4 = 356,
-    DMAT2 = 357,
-    DMAT3 = 358,
-    DMAT4 = 359,
-    F16VEC2 = 360,
-    F16VEC3 = 361,
-    F16VEC4 = 362,
-    F16MAT2 = 363,
-    F16MAT3 = 364,
-    F16MAT4 = 365,
-    F32VEC2 = 366,
-    F32VEC3 = 367,
-    F32VEC4 = 368,
-    F32MAT2 = 369,
-    F32MAT3 = 370,
-    F32MAT4 = 371,
-    F64VEC2 = 372,
-    F64VEC3 = 373,
-    F64VEC4 = 374,
-    F64MAT2 = 375,
-    F64MAT3 = 376,
-    F64MAT4 = 377,
-    DMAT2X2 = 378,
-    DMAT2X3 = 379,
-    DMAT2X4 = 380,
-    DMAT3X2 = 381,
-    DMAT3X3 = 382,
-    DMAT3X4 = 383,
-    DMAT4X2 = 384,
-    DMAT4X3 = 385,
-    DMAT4X4 = 386,
-    F16MAT2X2 = 387,
-    F16MAT2X3 = 388,
-    F16MAT2X4 = 389,
-    F16MAT3X2 = 390,
-    F16MAT3X3 = 391,
-    F16MAT3X4 = 392,
-    F16MAT4X2 = 393,
-    F16MAT4X3 = 394,
-    F16MAT4X4 = 395,
-    F32MAT2X2 = 396,
-    F32MAT2X3 = 397,
-    F32MAT2X4 = 398,
-    F32MAT3X2 = 399,
-    F32MAT3X3 = 400,
-    F32MAT3X4 = 401,
-    F32MAT4X2 = 402,
-    F32MAT4X3 = 403,
-    F32MAT4X4 = 404,
-    F64MAT2X2 = 405,
-    F64MAT2X3 = 406,
-    F64MAT2X4 = 407,
-    F64MAT3X2 = 408,
-    F64MAT3X3 = 409,
-    F64MAT3X4 = 410,
-    F64MAT4X2 = 411,
-    F64MAT4X3 = 412,
-    F64MAT4X4 = 413,
-    ATOMIC_UINT = 414,
-    ACCSTRUCTNV = 415,
-    ACCSTRUCTEXT = 416,
-    RAYQUERYEXT = 417,
-    FCOOPMATNV = 418,
-    ICOOPMATNV = 419,
-    UCOOPMATNV = 420,
-    SAMPLERCUBEARRAY = 421,
-    SAMPLERCUBEARRAYSHADOW = 422,
-    ISAMPLERCUBEARRAY = 423,
-    USAMPLERCUBEARRAY = 424,
-    SAMPLER1D = 425,
-    SAMPLER1DARRAY = 426,
-    SAMPLER1DARRAYSHADOW = 427,
-    ISAMPLER1D = 428,
-    SAMPLER1DSHADOW = 429,
-    SAMPLER2DRECT = 430,
-    SAMPLER2DRECTSHADOW = 431,
-    ISAMPLER2DRECT = 432,
-    USAMPLER2DRECT = 433,
-    SAMPLERBUFFER = 434,
-    ISAMPLERBUFFER = 435,
-    USAMPLERBUFFER = 436,
-    SAMPLER2DMS = 437,
-    ISAMPLER2DMS = 438,
-    USAMPLER2DMS = 439,
-    SAMPLER2DMSARRAY = 440,
-    ISAMPLER2DMSARRAY = 441,
-    USAMPLER2DMSARRAY = 442,
-    SAMPLEREXTERNALOES = 443,
-    SAMPLEREXTERNAL2DY2YEXT = 444,
-    ISAMPLER1DARRAY = 445,
-    USAMPLER1D = 446,
-    USAMPLER1DARRAY = 447,
-    F16SAMPLER1D = 448,
-    F16SAMPLER2D = 449,
-    F16SAMPLER3D = 450,
-    F16SAMPLER2DRECT = 451,
-    F16SAMPLERCUBE = 452,
-    F16SAMPLER1DARRAY = 453,
-    F16SAMPLER2DARRAY = 454,
-    F16SAMPLERCUBEARRAY = 455,
-    F16SAMPLERBUFFER = 456,
-    F16SAMPLER2DMS = 457,
-    F16SAMPLER2DMSARRAY = 458,
-    F16SAMPLER1DSHADOW = 459,
-    F16SAMPLER2DSHADOW = 460,
-    F16SAMPLER1DARRAYSHADOW = 461,
-    F16SAMPLER2DARRAYSHADOW = 462,
-    F16SAMPLER2DRECTSHADOW = 463,
-    F16SAMPLERCUBESHADOW = 464,
-    F16SAMPLERCUBEARRAYSHADOW = 465,
-    IMAGE1D = 466,
-    IIMAGE1D = 467,
-    UIMAGE1D = 468,
-    IMAGE2D = 469,
-    IIMAGE2D = 470,
-    UIMAGE2D = 471,
-    IMAGE3D = 472,
-    IIMAGE3D = 473,
-    UIMAGE3D = 474,
-    IMAGE2DRECT = 475,
-    IIMAGE2DRECT = 476,
-    UIMAGE2DRECT = 477,
-    IMAGECUBE = 478,
-    IIMAGECUBE = 479,
-    UIMAGECUBE = 480,
-    IMAGEBUFFER = 481,
-    IIMAGEBUFFER = 482,
-    UIMAGEBUFFER = 483,
-    IMAGE1DARRAY = 484,
-    IIMAGE1DARRAY = 485,
-    UIMAGE1DARRAY = 486,
-    IMAGE2DARRAY = 487,
-    IIMAGE2DARRAY = 488,
-    UIMAGE2DARRAY = 489,
-    IMAGECUBEARRAY = 490,
-    IIMAGECUBEARRAY = 491,
-    UIMAGECUBEARRAY = 492,
-    IMAGE2DMS = 493,
-    IIMAGE2DMS = 494,
-    UIMAGE2DMS = 495,
-    IMAGE2DMSARRAY = 496,
-    IIMAGE2DMSARRAY = 497,
-    UIMAGE2DMSARRAY = 498,
-    F16IMAGE1D = 499,
-    F16IMAGE2D = 500,
-    F16IMAGE3D = 501,
-    F16IMAGE2DRECT = 502,
-    F16IMAGECUBE = 503,
-    F16IMAGE1DARRAY = 504,
-    F16IMAGE2DARRAY = 505,
-    F16IMAGECUBEARRAY = 506,
-    F16IMAGEBUFFER = 507,
-    F16IMAGE2DMS = 508,
-    F16IMAGE2DMSARRAY = 509,
-    TEXTURECUBEARRAY = 510,
-    ITEXTURECUBEARRAY = 511,
-    UTEXTURECUBEARRAY = 512,
-    TEXTURE1D = 513,
-    ITEXTURE1D = 514,
-    UTEXTURE1D = 515,
-    TEXTURE1DARRAY = 516,
-    ITEXTURE1DARRAY = 517,
-    UTEXTURE1DARRAY = 518,
-    TEXTURE2DRECT = 519,
-    ITEXTURE2DRECT = 520,
-    UTEXTURE2DRECT = 521,
-    TEXTUREBUFFER = 522,
-    ITEXTUREBUFFER = 523,
-    UTEXTUREBUFFER = 524,
-    TEXTURE2DMS = 525,
-    ITEXTURE2DMS = 526,
-    UTEXTURE2DMS = 527,
-    TEXTURE2DMSARRAY = 528,
-    ITEXTURE2DMSARRAY = 529,
-    UTEXTURE2DMSARRAY = 530,
-    F16TEXTURE1D = 531,
-    F16TEXTURE2D = 532,
-    F16TEXTURE3D = 533,
-    F16TEXTURE2DRECT = 534,
-    F16TEXTURECUBE = 535,
-    F16TEXTURE1DARRAY = 536,
-    F16TEXTURE2DARRAY = 537,
-    F16TEXTURECUBEARRAY = 538,
-    F16TEXTUREBUFFER = 539,
-    F16TEXTURE2DMS = 540,
-    F16TEXTURE2DMSARRAY = 541,
-    SUBPASSINPUT = 542,
-    SUBPASSINPUTMS = 543,
-    ISUBPASSINPUT = 544,
-    ISUBPASSINPUTMS = 545,
-    USUBPASSINPUT = 546,
-    USUBPASSINPUTMS = 547,
-    F16SUBPASSINPUT = 548,
-    F16SUBPASSINPUTMS = 549,
-    LEFT_OP = 550,
-    RIGHT_OP = 551,
-    INC_OP = 552,
-    DEC_OP = 553,
-    LE_OP = 554,
-    GE_OP = 555,
-    EQ_OP = 556,
-    NE_OP = 557,
-    AND_OP = 558,
-    OR_OP = 559,
-    XOR_OP = 560,
-    MUL_ASSIGN = 561,
-    DIV_ASSIGN = 562,
-    ADD_ASSIGN = 563,
-    MOD_ASSIGN = 564,
-    LEFT_ASSIGN = 565,
-    RIGHT_ASSIGN = 566,
-    AND_ASSIGN = 567,
-    XOR_ASSIGN = 568,
-    OR_ASSIGN = 569,
-    SUB_ASSIGN = 570,
-    STRING_LITERAL = 571,
-    LEFT_PAREN = 572,
-    RIGHT_PAREN = 573,
-    LEFT_BRACKET = 574,
-    RIGHT_BRACKET = 575,
-    LEFT_BRACE = 576,
-    RIGHT_BRACE = 577,
-    DOT = 578,
-    COMMA = 579,
-    COLON = 580,
-    EQUAL = 581,
-    SEMICOLON = 582,
-    BANG = 583,
-    DASH = 584,
-    TILDE = 585,
-    PLUS = 586,
-    STAR = 587,
-    SLASH = 588,
-    PERCENT = 589,
-    LEFT_ANGLE = 590,
-    RIGHT_ANGLE = 591,
-    VERTICAL_BAR = 592,
-    CARET = 593,
-    AMPERSAND = 594,
-    QUESTION = 595,
-    INVARIANT = 596,
-    HIGH_PRECISION = 597,
-    MEDIUM_PRECISION = 598,
-    LOW_PRECISION = 599,
-    PRECISION = 600,
-    PACKED = 601,
-    RESOURCE = 602,
-    SUPERP = 603,
-    FLOATCONSTANT = 604,
-    INTCONSTANT = 605,
-    UINTCONSTANT = 606,
-    BOOLCONSTANT = 607,
-    IDENTIFIER = 608,
-    TYPE_NAME = 609,
-    CENTROID = 610,
-    IN = 611,
-    OUT = 612,
-    INOUT = 613,
-    STRUCT = 614,
-    VOID = 615,
-    WHILE = 616,
-    BREAK = 617,
-    CONTINUE = 618,
-    DO = 619,
-    ELSE = 620,
-    FOR = 621,
-    IF = 622,
-    DISCARD = 623,
-    RETURN = 624,
-    SWITCH = 625,
-    CASE = 626,
-    DEFAULT = 627,
-    UNIFORM = 628,
-    SHARED = 629,
-    BUFFER = 630,
-    FLAT = 631,
-    SMOOTH = 632,
-    LAYOUT = 633,
-    DOUBLECONSTANT = 634,
-    INT16CONSTANT = 635,
-    UINT16CONSTANT = 636,
-    FLOAT16CONSTANT = 637,
-    INT32CONSTANT = 638,
-    UINT32CONSTANT = 639,
-    INT64CONSTANT = 640,
-    UINT64CONSTANT = 641,
-    SUBROUTINE = 642,
-    DEMOTE = 643,
-    PAYLOADNV = 644,
-    PAYLOADINNV = 645,
-    HITATTRNV = 646,
-    CALLDATANV = 647,
-    CALLDATAINNV = 648,
-    PAYLOADEXT = 649,
-    PAYLOADINEXT = 650,
-    HITATTREXT = 651,
-    CALLDATAEXT = 652,
-    CALLDATAINEXT = 653,
-    PATCH = 654,
-    SAMPLE = 655,
-    NONUNIFORM = 656,
-    COHERENT = 657,
-    VOLATILE = 658,
-    RESTRICT = 659,
-    READONLY = 660,
-    WRITEONLY = 661,
-    DEVICECOHERENT = 662,
-    QUEUEFAMILYCOHERENT = 663,
-    WORKGROUPCOHERENT = 664,
-    SUBGROUPCOHERENT = 665,
-    NONPRIVATE = 666,
-    SHADERCALLCOHERENT = 667,
-    NOPERSPECTIVE = 668,
-    EXPLICITINTERPAMD = 669,
-    PERVERTEXNV = 670,
-    PERPRIMITIVENV = 671,
-    PERVIEWNV = 672,
-    PERTASKNV = 673,
-    PRECISE = 674
+    YYEMPTY = -2,
+    YYEOF = 0,                     /* "end of file"  */
+    YYerror = 256,                 /* error  */
+    YYUNDEF = 257,                 /* "invalid token"  */
+    CONST = 258,                   /* CONST  */
+    BOOL = 259,                    /* BOOL  */
+    INT = 260,                     /* INT  */
+    UINT = 261,                    /* UINT  */
+    FLOAT = 262,                   /* FLOAT  */
+    BVEC2 = 263,                   /* BVEC2  */
+    BVEC3 = 264,                   /* BVEC3  */
+    BVEC4 = 265,                   /* BVEC4  */
+    IVEC2 = 266,                   /* IVEC2  */
+    IVEC3 = 267,                   /* IVEC3  */
+    IVEC4 = 268,                   /* IVEC4  */
+    UVEC2 = 269,                   /* UVEC2  */
+    UVEC3 = 270,                   /* UVEC3  */
+    UVEC4 = 271,                   /* UVEC4  */
+    VEC2 = 272,                    /* VEC2  */
+    VEC3 = 273,                    /* VEC3  */
+    VEC4 = 274,                    /* VEC4  */
+    MAT2 = 275,                    /* MAT2  */
+    MAT3 = 276,                    /* MAT3  */
+    MAT4 = 277,                    /* MAT4  */
+    MAT2X2 = 278,                  /* MAT2X2  */
+    MAT2X3 = 279,                  /* MAT2X3  */
+    MAT2X4 = 280,                  /* MAT2X4  */
+    MAT3X2 = 281,                  /* MAT3X2  */
+    MAT3X3 = 282,                  /* MAT3X3  */
+    MAT3X4 = 283,                  /* MAT3X4  */
+    MAT4X2 = 284,                  /* MAT4X2  */
+    MAT4X3 = 285,                  /* MAT4X3  */
+    MAT4X4 = 286,                  /* MAT4X4  */
+    SAMPLER2D = 287,               /* SAMPLER2D  */
+    SAMPLER3D = 288,               /* SAMPLER3D  */
+    SAMPLERCUBE = 289,             /* SAMPLERCUBE  */
+    SAMPLER2DSHADOW = 290,         /* SAMPLER2DSHADOW  */
+    SAMPLERCUBESHADOW = 291,       /* SAMPLERCUBESHADOW  */
+    SAMPLER2DARRAY = 292,          /* SAMPLER2DARRAY  */
+    SAMPLER2DARRAYSHADOW = 293,    /* SAMPLER2DARRAYSHADOW  */
+    ISAMPLER2D = 294,              /* ISAMPLER2D  */
+    ISAMPLER3D = 295,              /* ISAMPLER3D  */
+    ISAMPLERCUBE = 296,            /* ISAMPLERCUBE  */
+    ISAMPLER2DARRAY = 297,         /* ISAMPLER2DARRAY  */
+    USAMPLER2D = 298,              /* USAMPLER2D  */
+    USAMPLER3D = 299,              /* USAMPLER3D  */
+    USAMPLERCUBE = 300,            /* USAMPLERCUBE  */
+    USAMPLER2DARRAY = 301,         /* USAMPLER2DARRAY  */
+    SAMPLER = 302,                 /* SAMPLER  */
+    SAMPLERSHADOW = 303,           /* SAMPLERSHADOW  */
+    TEXTURE2D = 304,               /* TEXTURE2D  */
+    TEXTURE3D = 305,               /* TEXTURE3D  */
+    TEXTURECUBE = 306,             /* TEXTURECUBE  */
+    TEXTURE2DARRAY = 307,          /* TEXTURE2DARRAY  */
+    ITEXTURE2D = 308,              /* ITEXTURE2D  */
+    ITEXTURE3D = 309,              /* ITEXTURE3D  */
+    ITEXTURECUBE = 310,            /* ITEXTURECUBE  */
+    ITEXTURE2DARRAY = 311,         /* ITEXTURE2DARRAY  */
+    UTEXTURE2D = 312,              /* UTEXTURE2D  */
+    UTEXTURE3D = 313,              /* UTEXTURE3D  */
+    UTEXTURECUBE = 314,            /* UTEXTURECUBE  */
+    UTEXTURE2DARRAY = 315,         /* UTEXTURE2DARRAY  */
+    ATTRIBUTE = 316,               /* ATTRIBUTE  */
+    VARYING = 317,                 /* VARYING  */
+    FLOAT16_T = 318,               /* FLOAT16_T  */
+    FLOAT32_T = 319,               /* FLOAT32_T  */
+    DOUBLE = 320,                  /* DOUBLE  */
+    FLOAT64_T = 321,               /* FLOAT64_T  */
+    INT64_T = 322,                 /* INT64_T  */
+    UINT64_T = 323,                /* UINT64_T  */
+    INT32_T = 324,                 /* INT32_T  */
+    UINT32_T = 325,                /* UINT32_T  */
+    INT16_T = 326,                 /* INT16_T  */
+    UINT16_T = 327,                /* UINT16_T  */
+    INT8_T = 328,                  /* INT8_T  */
+    UINT8_T = 329,                 /* UINT8_T  */
+    I64VEC2 = 330,                 /* I64VEC2  */
+    I64VEC3 = 331,                 /* I64VEC3  */
+    I64VEC4 = 332,                 /* I64VEC4  */
+    U64VEC2 = 333,                 /* U64VEC2  */
+    U64VEC3 = 334,                 /* U64VEC3  */
+    U64VEC4 = 335,                 /* U64VEC4  */
+    I32VEC2 = 336,                 /* I32VEC2  */
+    I32VEC3 = 337,                 /* I32VEC3  */
+    I32VEC4 = 338,                 /* I32VEC4  */
+    U32VEC2 = 339,                 /* U32VEC2  */
+    U32VEC3 = 340,                 /* U32VEC3  */
+    U32VEC4 = 341,                 /* U32VEC4  */
+    I16VEC2 = 342,                 /* I16VEC2  */
+    I16VEC3 = 343,                 /* I16VEC3  */
+    I16VEC4 = 344,                 /* I16VEC4  */
+    U16VEC2 = 345,                 /* U16VEC2  */
+    U16VEC3 = 346,                 /* U16VEC3  */
+    U16VEC4 = 347,                 /* U16VEC4  */
+    I8VEC2 = 348,                  /* I8VEC2  */
+    I8VEC3 = 349,                  /* I8VEC3  */
+    I8VEC4 = 350,                  /* I8VEC4  */
+    U8VEC2 = 351,                  /* U8VEC2  */
+    U8VEC3 = 352,                  /* U8VEC3  */
+    U8VEC4 = 353,                  /* U8VEC4  */
+    DVEC2 = 354,                   /* DVEC2  */
+    DVEC3 = 355,                   /* DVEC3  */
+    DVEC4 = 356,                   /* DVEC4  */
+    DMAT2 = 357,                   /* DMAT2  */
+    DMAT3 = 358,                   /* DMAT3  */
+    DMAT4 = 359,                   /* DMAT4  */
+    F16VEC2 = 360,                 /* F16VEC2  */
+    F16VEC3 = 361,                 /* F16VEC3  */
+    F16VEC4 = 362,                 /* F16VEC4  */
+    F16MAT2 = 363,                 /* F16MAT2  */
+    F16MAT3 = 364,                 /* F16MAT3  */
+    F16MAT4 = 365,                 /* F16MAT4  */
+    F32VEC2 = 366,                 /* F32VEC2  */
+    F32VEC3 = 367,                 /* F32VEC3  */
+    F32VEC4 = 368,                 /* F32VEC4  */
+    F32MAT2 = 369,                 /* F32MAT2  */
+    F32MAT3 = 370,                 /* F32MAT3  */
+    F32MAT4 = 371,                 /* F32MAT4  */
+    F64VEC2 = 372,                 /* F64VEC2  */
+    F64VEC3 = 373,                 /* F64VEC3  */
+    F64VEC4 = 374,                 /* F64VEC4  */
+    F64MAT2 = 375,                 /* F64MAT2  */
+    F64MAT3 = 376,                 /* F64MAT3  */
+    F64MAT4 = 377,                 /* F64MAT4  */
+    DMAT2X2 = 378,                 /* DMAT2X2  */
+    DMAT2X3 = 379,                 /* DMAT2X3  */
+    DMAT2X4 = 380,                 /* DMAT2X4  */
+    DMAT3X2 = 381,                 /* DMAT3X2  */
+    DMAT3X3 = 382,                 /* DMAT3X3  */
+    DMAT3X4 = 383,                 /* DMAT3X4  */
+    DMAT4X2 = 384,                 /* DMAT4X2  */
+    DMAT4X3 = 385,                 /* DMAT4X3  */
+    DMAT4X4 = 386,                 /* DMAT4X4  */
+    F16MAT2X2 = 387,               /* F16MAT2X2  */
+    F16MAT2X3 = 388,               /* F16MAT2X3  */
+    F16MAT2X4 = 389,               /* F16MAT2X4  */
+    F16MAT3X2 = 390,               /* F16MAT3X2  */
+    F16MAT3X3 = 391,               /* F16MAT3X3  */
+    F16MAT3X4 = 392,               /* F16MAT3X4  */
+    F16MAT4X2 = 393,               /* F16MAT4X2  */
+    F16MAT4X3 = 394,               /* F16MAT4X3  */
+    F16MAT4X4 = 395,               /* F16MAT4X4  */
+    F32MAT2X2 = 396,               /* F32MAT2X2  */
+    F32MAT2X3 = 397,               /* F32MAT2X3  */
+    F32MAT2X4 = 398,               /* F32MAT2X4  */
+    F32MAT3X2 = 399,               /* F32MAT3X2  */
+    F32MAT3X3 = 400,               /* F32MAT3X3  */
+    F32MAT3X4 = 401,               /* F32MAT3X4  */
+    F32MAT4X2 = 402,               /* F32MAT4X2  */
+    F32MAT4X3 = 403,               /* F32MAT4X3  */
+    F32MAT4X4 = 404,               /* F32MAT4X4  */
+    F64MAT2X2 = 405,               /* F64MAT2X2  */
+    F64MAT2X3 = 406,               /* F64MAT2X3  */
+    F64MAT2X4 = 407,               /* F64MAT2X4  */
+    F64MAT3X2 = 408,               /* F64MAT3X2  */
+    F64MAT3X3 = 409,               /* F64MAT3X3  */
+    F64MAT3X4 = 410,               /* F64MAT3X4  */
+    F64MAT4X2 = 411,               /* F64MAT4X2  */
+    F64MAT4X3 = 412,               /* F64MAT4X3  */
+    F64MAT4X4 = 413,               /* F64MAT4X4  */
+    ATOMIC_UINT = 414,             /* ATOMIC_UINT  */
+    ACCSTRUCTNV = 415,             /* ACCSTRUCTNV  */
+    ACCSTRUCTEXT = 416,            /* ACCSTRUCTEXT  */
+    RAYQUERYEXT = 417,             /* RAYQUERYEXT  */
+    FCOOPMATNV = 418,              /* FCOOPMATNV  */
+    ICOOPMATNV = 419,              /* ICOOPMATNV  */
+    UCOOPMATNV = 420,              /* UCOOPMATNV  */
+    SAMPLERCUBEARRAY = 421,        /* SAMPLERCUBEARRAY  */
+    SAMPLERCUBEARRAYSHADOW = 422,  /* SAMPLERCUBEARRAYSHADOW  */
+    ISAMPLERCUBEARRAY = 423,       /* ISAMPLERCUBEARRAY  */
+    USAMPLERCUBEARRAY = 424,       /* USAMPLERCUBEARRAY  */
+    SAMPLER1D = 425,               /* SAMPLER1D  */
+    SAMPLER1DARRAY = 426,          /* SAMPLER1DARRAY  */
+    SAMPLER1DARRAYSHADOW = 427,    /* SAMPLER1DARRAYSHADOW  */
+    ISAMPLER1D = 428,              /* ISAMPLER1D  */
+    SAMPLER1DSHADOW = 429,         /* SAMPLER1DSHADOW  */
+    SAMPLER2DRECT = 430,           /* SAMPLER2DRECT  */
+    SAMPLER2DRECTSHADOW = 431,     /* SAMPLER2DRECTSHADOW  */
+    ISAMPLER2DRECT = 432,          /* ISAMPLER2DRECT  */
+    USAMPLER2DRECT = 433,          /* USAMPLER2DRECT  */
+    SAMPLERBUFFER = 434,           /* SAMPLERBUFFER  */
+    ISAMPLERBUFFER = 435,          /* ISAMPLERBUFFER  */
+    USAMPLERBUFFER = 436,          /* USAMPLERBUFFER  */
+    SAMPLER2DMS = 437,             /* SAMPLER2DMS  */
+    ISAMPLER2DMS = 438,            /* ISAMPLER2DMS  */
+    USAMPLER2DMS = 439,            /* USAMPLER2DMS  */
+    SAMPLER2DMSARRAY = 440,        /* SAMPLER2DMSARRAY  */
+    ISAMPLER2DMSARRAY = 441,       /* ISAMPLER2DMSARRAY  */
+    USAMPLER2DMSARRAY = 442,       /* USAMPLER2DMSARRAY  */
+    SAMPLEREXTERNALOES = 443,      /* SAMPLEREXTERNALOES  */
+    SAMPLEREXTERNAL2DY2YEXT = 444, /* SAMPLEREXTERNAL2DY2YEXT  */
+    ISAMPLER1DARRAY = 445,         /* ISAMPLER1DARRAY  */
+    USAMPLER1D = 446,              /* USAMPLER1D  */
+    USAMPLER1DARRAY = 447,         /* USAMPLER1DARRAY  */
+    F16SAMPLER1D = 448,            /* F16SAMPLER1D  */
+    F16SAMPLER2D = 449,            /* F16SAMPLER2D  */
+    F16SAMPLER3D = 450,            /* F16SAMPLER3D  */
+    F16SAMPLER2DRECT = 451,        /* F16SAMPLER2DRECT  */
+    F16SAMPLERCUBE = 452,          /* F16SAMPLERCUBE  */
+    F16SAMPLER1DARRAY = 453,       /* F16SAMPLER1DARRAY  */
+    F16SAMPLER2DARRAY = 454,       /* F16SAMPLER2DARRAY  */
+    F16SAMPLERCUBEARRAY = 455,     /* F16SAMPLERCUBEARRAY  */
+    F16SAMPLERBUFFER = 456,        /* F16SAMPLERBUFFER  */
+    F16SAMPLER2DMS = 457,          /* F16SAMPLER2DMS  */
+    F16SAMPLER2DMSARRAY = 458,     /* F16SAMPLER2DMSARRAY  */
+    F16SAMPLER1DSHADOW = 459,      /* F16SAMPLER1DSHADOW  */
+    F16SAMPLER2DSHADOW = 460,      /* F16SAMPLER2DSHADOW  */
+    F16SAMPLER1DARRAYSHADOW = 461, /* F16SAMPLER1DARRAYSHADOW  */
+    F16SAMPLER2DARRAYSHADOW = 462, /* F16SAMPLER2DARRAYSHADOW  */
+    F16SAMPLER2DRECTSHADOW = 463,  /* F16SAMPLER2DRECTSHADOW  */
+    F16SAMPLERCUBESHADOW = 464,    /* F16SAMPLERCUBESHADOW  */
+    F16SAMPLERCUBEARRAYSHADOW = 465, /* F16SAMPLERCUBEARRAYSHADOW  */
+    IMAGE1D = 466,                 /* IMAGE1D  */
+    IIMAGE1D = 467,                /* IIMAGE1D  */
+    UIMAGE1D = 468,                /* UIMAGE1D  */
+    IMAGE2D = 469,                 /* IMAGE2D  */
+    IIMAGE2D = 470,                /* IIMAGE2D  */
+    UIMAGE2D = 471,                /* UIMAGE2D  */
+    IMAGE3D = 472,                 /* IMAGE3D  */
+    IIMAGE3D = 473,                /* IIMAGE3D  */
+    UIMAGE3D = 474,                /* UIMAGE3D  */
+    IMAGE2DRECT = 475,             /* IMAGE2DRECT  */
+    IIMAGE2DRECT = 476,            /* IIMAGE2DRECT  */
+    UIMAGE2DRECT = 477,            /* UIMAGE2DRECT  */
+    IMAGECUBE = 478,               /* IMAGECUBE  */
+    IIMAGECUBE = 479,              /* IIMAGECUBE  */
+    UIMAGECUBE = 480,              /* UIMAGECUBE  */
+    IMAGEBUFFER = 481,             /* IMAGEBUFFER  */
+    IIMAGEBUFFER = 482,            /* IIMAGEBUFFER  */
+    UIMAGEBUFFER = 483,            /* UIMAGEBUFFER  */
+    IMAGE1DARRAY = 484,            /* IMAGE1DARRAY  */
+    IIMAGE1DARRAY = 485,           /* IIMAGE1DARRAY  */
+    UIMAGE1DARRAY = 486,           /* UIMAGE1DARRAY  */
+    IMAGE2DARRAY = 487,            /* IMAGE2DARRAY  */
+    IIMAGE2DARRAY = 488,           /* IIMAGE2DARRAY  */
+    UIMAGE2DARRAY = 489,           /* UIMAGE2DARRAY  */
+    IMAGECUBEARRAY = 490,          /* IMAGECUBEARRAY  */
+    IIMAGECUBEARRAY = 491,         /* IIMAGECUBEARRAY  */
+    UIMAGECUBEARRAY = 492,         /* UIMAGECUBEARRAY  */
+    IMAGE2DMS = 493,               /* IMAGE2DMS  */
+    IIMAGE2DMS = 494,              /* IIMAGE2DMS  */
+    UIMAGE2DMS = 495,              /* UIMAGE2DMS  */
+    IMAGE2DMSARRAY = 496,          /* IMAGE2DMSARRAY  */
+    IIMAGE2DMSARRAY = 497,         /* IIMAGE2DMSARRAY  */
+    UIMAGE2DMSARRAY = 498,         /* UIMAGE2DMSARRAY  */
+    F16IMAGE1D = 499,              /* F16IMAGE1D  */
+    F16IMAGE2D = 500,              /* F16IMAGE2D  */
+    F16IMAGE3D = 501,              /* F16IMAGE3D  */
+    F16IMAGE2DRECT = 502,          /* F16IMAGE2DRECT  */
+    F16IMAGECUBE = 503,            /* F16IMAGECUBE  */
+    F16IMAGE1DARRAY = 504,         /* F16IMAGE1DARRAY  */
+    F16IMAGE2DARRAY = 505,         /* F16IMAGE2DARRAY  */
+    F16IMAGECUBEARRAY = 506,       /* F16IMAGECUBEARRAY  */
+    F16IMAGEBUFFER = 507,          /* F16IMAGEBUFFER  */
+    F16IMAGE2DMS = 508,            /* F16IMAGE2DMS  */
+    F16IMAGE2DMSARRAY = 509,       /* F16IMAGE2DMSARRAY  */
+    I64IMAGE1D = 510,              /* I64IMAGE1D  */
+    U64IMAGE1D = 511,              /* U64IMAGE1D  */
+    I64IMAGE2D = 512,              /* I64IMAGE2D  */
+    U64IMAGE2D = 513,              /* U64IMAGE2D  */
+    I64IMAGE3D = 514,              /* I64IMAGE3D  */
+    U64IMAGE3D = 515,              /* U64IMAGE3D  */
+    I64IMAGE2DRECT = 516,          /* I64IMAGE2DRECT  */
+    U64IMAGE2DRECT = 517,          /* U64IMAGE2DRECT  */
+    I64IMAGECUBE = 518,            /* I64IMAGECUBE  */
+    U64IMAGECUBE = 519,            /* U64IMAGECUBE  */
+    I64IMAGEBUFFER = 520,          /* I64IMAGEBUFFER  */
+    U64IMAGEBUFFER = 521,          /* U64IMAGEBUFFER  */
+    I64IMAGE1DARRAY = 522,         /* I64IMAGE1DARRAY  */
+    U64IMAGE1DARRAY = 523,         /* U64IMAGE1DARRAY  */
+    I64IMAGE2DARRAY = 524,         /* I64IMAGE2DARRAY  */
+    U64IMAGE2DARRAY = 525,         /* U64IMAGE2DARRAY  */
+    I64IMAGECUBEARRAY = 526,       /* I64IMAGECUBEARRAY  */
+    U64IMAGECUBEARRAY = 527,       /* U64IMAGECUBEARRAY  */
+    I64IMAGE2DMS = 528,            /* I64IMAGE2DMS  */
+    U64IMAGE2DMS = 529,            /* U64IMAGE2DMS  */
+    I64IMAGE2DMSARRAY = 530,       /* I64IMAGE2DMSARRAY  */
+    U64IMAGE2DMSARRAY = 531,       /* U64IMAGE2DMSARRAY  */
+    TEXTURECUBEARRAY = 532,        /* TEXTURECUBEARRAY  */
+    ITEXTURECUBEARRAY = 533,       /* ITEXTURECUBEARRAY  */
+    UTEXTURECUBEARRAY = 534,       /* UTEXTURECUBEARRAY  */
+    TEXTURE1D = 535,               /* TEXTURE1D  */
+    ITEXTURE1D = 536,              /* ITEXTURE1D  */
+    UTEXTURE1D = 537,              /* UTEXTURE1D  */
+    TEXTURE1DARRAY = 538,          /* TEXTURE1DARRAY  */
+    ITEXTURE1DARRAY = 539,         /* ITEXTURE1DARRAY  */
+    UTEXTURE1DARRAY = 540,         /* UTEXTURE1DARRAY  */
+    TEXTURE2DRECT = 541,           /* TEXTURE2DRECT  */
+    ITEXTURE2DRECT = 542,          /* ITEXTURE2DRECT  */
+    UTEXTURE2DRECT = 543,          /* UTEXTURE2DRECT  */
+    TEXTUREBUFFER = 544,           /* TEXTUREBUFFER  */
+    ITEXTUREBUFFER = 545,          /* ITEXTUREBUFFER  */
+    UTEXTUREBUFFER = 546,          /* UTEXTUREBUFFER  */
+    TEXTURE2DMS = 547,             /* TEXTURE2DMS  */
+    ITEXTURE2DMS = 548,            /* ITEXTURE2DMS  */
+    UTEXTURE2DMS = 549,            /* UTEXTURE2DMS  */
+    TEXTURE2DMSARRAY = 550,        /* TEXTURE2DMSARRAY  */
+    ITEXTURE2DMSARRAY = 551,       /* ITEXTURE2DMSARRAY  */
+    UTEXTURE2DMSARRAY = 552,       /* UTEXTURE2DMSARRAY  */
+    F16TEXTURE1D = 553,            /* F16TEXTURE1D  */
+    F16TEXTURE2D = 554,            /* F16TEXTURE2D  */
+    F16TEXTURE3D = 555,            /* F16TEXTURE3D  */
+    F16TEXTURE2DRECT = 556,        /* F16TEXTURE2DRECT  */
+    F16TEXTURECUBE = 557,          /* F16TEXTURECUBE  */
+    F16TEXTURE1DARRAY = 558,       /* F16TEXTURE1DARRAY  */
+    F16TEXTURE2DARRAY = 559,       /* F16TEXTURE2DARRAY  */
+    F16TEXTURECUBEARRAY = 560,     /* F16TEXTURECUBEARRAY  */
+    F16TEXTUREBUFFER = 561,        /* F16TEXTUREBUFFER  */
+    F16TEXTURE2DMS = 562,          /* F16TEXTURE2DMS  */
+    F16TEXTURE2DMSARRAY = 563,     /* F16TEXTURE2DMSARRAY  */
+    SUBPASSINPUT = 564,            /* SUBPASSINPUT  */
+    SUBPASSINPUTMS = 565,          /* SUBPASSINPUTMS  */
+    ISUBPASSINPUT = 566,           /* ISUBPASSINPUT  */
+    ISUBPASSINPUTMS = 567,         /* ISUBPASSINPUTMS  */
+    USUBPASSINPUT = 568,           /* USUBPASSINPUT  */
+    USUBPASSINPUTMS = 569,         /* USUBPASSINPUTMS  */
+    F16SUBPASSINPUT = 570,         /* F16SUBPASSINPUT  */
+    F16SUBPASSINPUTMS = 571,       /* F16SUBPASSINPUTMS  */
+    LEFT_OP = 572,                 /* LEFT_OP  */
+    RIGHT_OP = 573,                /* RIGHT_OP  */
+    INC_OP = 574,                  /* INC_OP  */
+    DEC_OP = 575,                  /* DEC_OP  */
+    LE_OP = 576,                   /* LE_OP  */
+    GE_OP = 577,                   /* GE_OP  */
+    EQ_OP = 578,                   /* EQ_OP  */
+    NE_OP = 579,                   /* NE_OP  */
+    AND_OP = 580,                  /* AND_OP  */
+    OR_OP = 581,                   /* OR_OP  */
+    XOR_OP = 582,                  /* XOR_OP  */
+    MUL_ASSIGN = 583,              /* MUL_ASSIGN  */
+    DIV_ASSIGN = 584,              /* DIV_ASSIGN  */
+    ADD_ASSIGN = 585,              /* ADD_ASSIGN  */
+    MOD_ASSIGN = 586,              /* MOD_ASSIGN  */
+    LEFT_ASSIGN = 587,             /* LEFT_ASSIGN  */
+    RIGHT_ASSIGN = 588,            /* RIGHT_ASSIGN  */
+    AND_ASSIGN = 589,              /* AND_ASSIGN  */
+    XOR_ASSIGN = 590,              /* XOR_ASSIGN  */
+    OR_ASSIGN = 591,               /* OR_ASSIGN  */
+    SUB_ASSIGN = 592,              /* SUB_ASSIGN  */
+    STRING_LITERAL = 593,          /* STRING_LITERAL  */
+    LEFT_PAREN = 594,              /* LEFT_PAREN  */
+    RIGHT_PAREN = 595,             /* RIGHT_PAREN  */
+    LEFT_BRACKET = 596,            /* LEFT_BRACKET  */
+    RIGHT_BRACKET = 597,           /* RIGHT_BRACKET  */
+    LEFT_BRACE = 598,              /* LEFT_BRACE  */
+    RIGHT_BRACE = 599,             /* RIGHT_BRACE  */
+    DOT = 600,                     /* DOT  */
+    COMMA = 601,                   /* COMMA  */
+    COLON = 602,                   /* COLON  */
+    EQUAL = 603,                   /* EQUAL  */
+    SEMICOLON = 604,               /* SEMICOLON  */
+    BANG = 605,                    /* BANG  */
+    DASH = 606,                    /* DASH  */
+    TILDE = 607,                   /* TILDE  */
+    PLUS = 608,                    /* PLUS  */
+    STAR = 609,                    /* STAR  */
+    SLASH = 610,                   /* SLASH  */
+    PERCENT = 611,                 /* PERCENT  */
+    LEFT_ANGLE = 612,              /* LEFT_ANGLE  */
+    RIGHT_ANGLE = 613,             /* RIGHT_ANGLE  */
+    VERTICAL_BAR = 614,            /* VERTICAL_BAR  */
+    CARET = 615,                   /* CARET  */
+    AMPERSAND = 616,               /* AMPERSAND  */
+    QUESTION = 617,                /* QUESTION  */
+    INVARIANT = 618,               /* INVARIANT  */
+    HIGH_PRECISION = 619,          /* HIGH_PRECISION  */
+    MEDIUM_PRECISION = 620,        /* MEDIUM_PRECISION  */
+    LOW_PRECISION = 621,           /* LOW_PRECISION  */
+    PRECISION = 622,               /* PRECISION  */
+    PACKED = 623,                  /* PACKED  */
+    RESOURCE = 624,                /* RESOURCE  */
+    SUPERP = 625,                  /* SUPERP  */
+    FLOATCONSTANT = 626,           /* FLOATCONSTANT  */
+    INTCONSTANT = 627,             /* INTCONSTANT  */
+    UINTCONSTANT = 628,            /* UINTCONSTANT  */
+    BOOLCONSTANT = 629,            /* BOOLCONSTANT  */
+    IDENTIFIER = 630,              /* IDENTIFIER  */
+    TYPE_NAME = 631,               /* TYPE_NAME  */
+    CENTROID = 632,                /* CENTROID  */
+    IN = 633,                      /* IN  */
+    OUT = 634,                     /* OUT  */
+    INOUT = 635,                   /* INOUT  */
+    STRUCT = 636,                  /* STRUCT  */
+    VOID = 637,                    /* VOID  */
+    WHILE = 638,                   /* WHILE  */
+    BREAK = 639,                   /* BREAK  */
+    CONTINUE = 640,                /* CONTINUE  */
+    DO = 641,                      /* DO  */
+    ELSE = 642,                    /* ELSE  */
+    FOR = 643,                     /* FOR  */
+    IF = 644,                      /* IF  */
+    DISCARD = 645,                 /* DISCARD  */
+    RETURN = 646,                  /* RETURN  */
+    SWITCH = 647,                  /* SWITCH  */
+    CASE = 648,                    /* CASE  */
+    DEFAULT = 649,                 /* DEFAULT  */
+    TERMINATE_INVOCATION = 650,    /* TERMINATE_INVOCATION  */
+    TERMINATE_RAY = 651,           /* TERMINATE_RAY  */
+    IGNORE_INTERSECTION = 652,     /* IGNORE_INTERSECTION  */
+    UNIFORM = 653,                 /* UNIFORM  */
+    SHARED = 654,                  /* SHARED  */
+    BUFFER = 655,                  /* BUFFER  */
+    FLAT = 656,                    /* FLAT  */
+    SMOOTH = 657,                  /* SMOOTH  */
+    LAYOUT = 658,                  /* LAYOUT  */
+    DOUBLECONSTANT = 659,          /* DOUBLECONSTANT  */
+    INT16CONSTANT = 660,           /* INT16CONSTANT  */
+    UINT16CONSTANT = 661,          /* UINT16CONSTANT  */
+    FLOAT16CONSTANT = 662,         /* FLOAT16CONSTANT  */
+    INT32CONSTANT = 663,           /* INT32CONSTANT  */
+    UINT32CONSTANT = 664,          /* UINT32CONSTANT  */
+    INT64CONSTANT = 665,           /* INT64CONSTANT  */
+    UINT64CONSTANT = 666,          /* UINT64CONSTANT  */
+    SUBROUTINE = 667,              /* SUBROUTINE  */
+    DEMOTE = 668,                  /* DEMOTE  */
+    PAYLOADNV = 669,               /* PAYLOADNV  */
+    PAYLOADINNV = 670,             /* PAYLOADINNV  */
+    HITATTRNV = 671,               /* HITATTRNV  */
+    CALLDATANV = 672,              /* CALLDATANV  */
+    CALLDATAINNV = 673,            /* CALLDATAINNV  */
+    PAYLOADEXT = 674,              /* PAYLOADEXT  */
+    PAYLOADINEXT = 675,            /* PAYLOADINEXT  */
+    HITATTREXT = 676,              /* HITATTREXT  */
+    CALLDATAEXT = 677,             /* CALLDATAEXT  */
+    CALLDATAINEXT = 678,           /* CALLDATAINEXT  */
+    PATCH = 679,                   /* PATCH  */
+    SAMPLE = 680,                  /* SAMPLE  */
+    NONUNIFORM = 681,              /* NONUNIFORM  */
+    COHERENT = 682,                /* COHERENT  */
+    VOLATILE = 683,                /* VOLATILE  */
+    RESTRICT = 684,                /* RESTRICT  */
+    READONLY = 685,                /* READONLY  */
+    WRITEONLY = 686,               /* WRITEONLY  */
+    DEVICECOHERENT = 687,          /* DEVICECOHERENT  */
+    QUEUEFAMILYCOHERENT = 688,     /* QUEUEFAMILYCOHERENT  */
+    WORKGROUPCOHERENT = 689,       /* WORKGROUPCOHERENT  */
+    SUBGROUPCOHERENT = 690,        /* SUBGROUPCOHERENT  */
+    NONPRIVATE = 691,              /* NONPRIVATE  */
+    SHADERCALLCOHERENT = 692,      /* SHADERCALLCOHERENT  */
+    NOPERSPECTIVE = 693,           /* NOPERSPECTIVE  */
+    EXPLICITINTERPAMD = 694,       /* EXPLICITINTERPAMD  */
+    PERVERTEXNV = 695,             /* PERVERTEXNV  */
+    PERPRIMITIVENV = 696,          /* PERPRIMITIVENV  */
+    PERVIEWNV = 697,               /* PERVIEWNV  */
+    PERTASKNV = 698,               /* PERTASKNV  */
+    PRECISE = 699                  /* PRECISE  */
   };
+  typedef enum yytokentype yytoken_kind_t;
 #endif
 
 /* Value type.  */
 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
-
 union YYSTYPE
 {
-#line 97 "glslang.y" /* yacc.c:1909  */
+#line 97 "MachineIndependent/glslang.y"
 
     struct {
         glslang::TSourceLoc loc;
@@ -506,9 +540,9 @@
         glslang::TArraySizes* typeParameters;
     } interm;
 
-#line 510 "glslang_tab.cpp.h" /* yacc.c:1909  */
-};
+#line 544 "MachineIndependent/glslang_tab.cpp.h"
 
+};
 typedef union YYSTYPE YYSTYPE;
 # define YYSTYPE_IS_TRIVIAL 1
 # define YYSTYPE_IS_DECLARED 1
@@ -518,4 +552,4 @@
 
 int yyparse (glslang::TParseContext* pParseContext);
 
-#endif /* !YY_YY_GLSLANG_TAB_CPP_H_INCLUDED  */
+#endif /* !YY_YY_MACHINEINDEPENDENT_GLSLANG_TAB_CPP_H_INCLUDED  */
diff --git a/glslang/MachineIndependent/intermOut.cpp b/glslang/MachineIndependent/intermOut.cpp
index 86edcfe..c718f94 100644
--- a/glslang/MachineIndependent/intermOut.cpp
+++ b/glslang/MachineIndependent/intermOut.cpp
@@ -36,7 +36,7 @@
 // POSSIBILITY OF SUCH DAMAGE.
 //
 
-#ifndef GLSLANG_WEB
+#if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE)
 
 #include "localintermediate.h"
 #include "../Include/InfoSink.h"
@@ -438,6 +438,9 @@
     case EOpConvUint64ToPtr:  out.debug << "Convert uint64_t to pointer";   break;
     case EOpConvPtrToUint64:  out.debug << "Convert pointer to uint64_t";   break;
 
+    case EOpConvUint64ToAccStruct: out.debug << "Convert uint64_t to acceleration structure"; break;
+    case EOpConvUvec2ToAccStruct:  out.debug << "Convert uvec2 to acceleration strucuture "; break;
+
     case EOpRadians:        out.debug << "radians";              break;
     case EOpDegrees:        out.debug << "degrees";              break;
     case EOpSin:            out.debug << "sine";                 break;
@@ -829,6 +832,7 @@
     case EOpConstructTextureSampler: out.debug << "Construct combined texture-sampler"; break;
     case EOpConstructReference:  out.debug << "Construct reference";  break;
     case EOpConstructCooperativeMatrix:  out.debug << "Construct cooperative matrix";  break;
+    case EOpConstructAccStruct: out.debug << "Construct acceleration structure"; break;
 
     case EOpLessThan:         out.debug << "Compare Less Than";             break;
     case EOpGreaterThan:      out.debug << "Compare Greater Than";          break;
@@ -882,6 +886,7 @@
     case EOpTime:                       out.debug << "time";                  break;
 
     case EOpAtomicAdd:                  out.debug << "AtomicAdd";             break;
+    case EOpAtomicSubtract:             out.debug << "AtomicSubtract";        break;
     case EOpAtomicMin:                  out.debug << "AtomicMin";             break;
     case EOpAtomicMax:                  out.debug << "AtomicMax";             break;
     case EOpAtomicAnd:                  out.debug << "AtomicAnd";             break;
@@ -1079,11 +1084,15 @@
     case EOpSubpassLoad:   out.debug << "subpassLoad";   break;
     case EOpSubpassLoadMS: out.debug << "subpassLoadMS"; break;
 
-    case EOpTrace:                            out.debug << "traceNV"; break;
+    case EOpTraceNV:                          out.debug << "traceNV"; break;
+    case EOpTraceKHR:                         out.debug << "traceRayKHR"; break;
     case EOpReportIntersection:               out.debug << "reportIntersectionNV"; break;
-    case EOpIgnoreIntersection:               out.debug << "ignoreIntersectionNV"; break;
-    case EOpTerminateRay:                     out.debug << "terminateRayNV"; break;
-    case EOpExecuteCallable:                  out.debug << "executeCallableNV"; break;
+    case EOpIgnoreIntersectionNV:             out.debug << "ignoreIntersectionNV"; break;
+    case EOpIgnoreIntersectionKHR:            out.debug << "ignoreIntersectionKHR"; break;
+    case EOpTerminateRayNV:                   out.debug << "terminateRayNV"; break;
+    case EOpTerminateRayKHR:                  out.debug << "terminateRayKHR"; break;
+    case EOpExecuteCallableNV:                out.debug << "executeCallableNV"; break;
+    case EOpExecuteCallableKHR:               out.debug << "executeCallableKHR"; break;
     case EOpWritePackedPrimitiveIndices4x8NV: out.debug << "writePackedPrimitiveIndices4x8NV"; break;
 
     case EOpRayQueryInitialize:                                            out.debug << "rayQueryInitializeEXT"; break;
@@ -1321,6 +1330,9 @@
                 out.debug << buf << "\n";
             }
             break;
+        case EbtString:
+            out.debug << "\"" << constUnion[i].getSConst()->c_str() << "\"\n";
+            break;
         default:
             out.info.message(EPrefixInternalError, "Unknown constant", node->getLoc());
             break;
@@ -1406,14 +1418,17 @@
     OutputTreeText(out, node, depth);
 
     switch (node->getFlowOp()) {
-    case EOpKill:      out.debug << "Branch: Kill";           break;
-    case EOpBreak:     out.debug << "Branch: Break";          break;
-    case EOpContinue:  out.debug << "Branch: Continue";       break;
-    case EOpReturn:    out.debug << "Branch: Return";         break;
-    case EOpCase:      out.debug << "case: ";                 break;
-    case EOpDemote:    out.debug << "Demote";                 break;
-    case EOpDefault:   out.debug << "default: ";              break;
-    default:               out.debug << "Branch: Unknown Branch"; break;
+    case EOpKill:                   out.debug << "Branch: Kill";                  break;
+    case EOpTerminateInvocation:    out.debug << "Branch: TerminateInvocation";   break;
+    case EOpIgnoreIntersectionKHR:  out.debug << "Branch: IgnoreIntersectionKHR"; break;
+    case EOpTerminateRayKHR:        out.debug << "Branch: TerminateRayKHR";       break;
+    case EOpBreak:                  out.debug << "Branch: Break";                 break;
+    case EOpContinue:               out.debug << "Branch: Continue";              break;
+    case EOpReturn:                 out.debug << "Branch: Return";                break;
+    case EOpCase:                   out.debug << "case: ";                        break;
+    case EOpDemote:                 out.debug << "Demote";                        break;
+    case EOpDefault:                out.debug << "default: ";                     break;
+    default:                        out.debug << "Branch: Unknown Branch";        break;
     }
 
     if (node->getExpression()) {
@@ -1466,7 +1481,7 @@
     infoSink.debug << "Shader version: " << version << "\n";
     if (requestedExtensions.size() > 0) {
         for (auto extIt = requestedExtensions.begin(); extIt != requestedExtensions.end(); ++extIt)
-            infoSink.debug << "Requested " << extIt->first << "\n";
+            infoSink.debug << "Requested " << *extIt << "\n";
     }
 
     if (xfbMode)
@@ -1562,4 +1577,4 @@
 
 } // end namespace glslang
 
-#endif // not GLSLANG_WEB
+#endif // !GLSLANG_WEB && !GLSLANG_ANGLE
diff --git a/glslang/MachineIndependent/iomapper.cpp b/glslang/MachineIndependent/iomapper.cpp
index 9859f08..7e12864 100644
--- a/glslang/MachineIndependent/iomapper.cpp
+++ b/glslang/MachineIndependent/iomapper.cpp
@@ -33,13 +33,15 @@
 // POSSIBILITY OF SUCH DAMAGE.
 //
 
-#ifndef GLSLANG_WEB
+#if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE)
 
 #include "../Include/Common.h"
 #include "../Include/InfoSink.h"
+#include "../Include/Types.h"
 
 #include "gl_types.h"
 #include "iomapper.h"
+#include "SymbolTable.h"
 
 //
 // Map IO bindings.
@@ -82,17 +84,17 @@
         // If a global is being visited, then we should also traverse it incase it's evaluation
         // ends up visiting inputs we want to tag as live
         else if (base->getQualifier().storage == EvqGlobal)
-            addGlobalReference(base->getName());
+            addGlobalReference(base->getAccessName());
 
         if (target) {
             TVarEntryInfo ent = {base->getId(), base, ! traverseAll};
             ent.stage = intermediate.getStage();
             TVarLiveMap::iterator at = target->find(
-                ent.symbol->getName()); // std::lower_bound(target->begin(), target->end(), ent, TVarEntryInfo::TOrderById());
+                ent.symbol->getAccessName()); // std::lower_bound(target->begin(), target->end(), ent, TVarEntryInfo::TOrderById());
             if (at != target->end() && at->second.id == ent.id)
                 at->second.live = at->second.live || ! traverseAll; // update live state
             else
-                (*target)[ent.symbol->getName()] = ent;
+                (*target)[ent.symbol->getAccessName()] = ent;
         }
     }
 
@@ -125,7 +127,8 @@
             return;
 
         TVarEntryInfo ent = { base->getId() };
-        TVarLiveMap::const_iterator at = source->find(base->getName());
+        // Fix a defect, when block has no instance name, we need to find its block name
+        TVarLiveMap::const_iterator at = source->find(base->getAccessName());
         if (at == source->end())
             return;
 
@@ -181,7 +184,7 @@
 
     inline void operator()(std::pair<const TString, TVarEntryInfo>& entKey)
     {
-        resolver.notifyInOut(stage, entKey.second);
+        resolver.notifyInOut(entKey.second.stage, entKey.second);
     }
 
 private:
@@ -189,12 +192,13 @@
 };
 
 struct TResolverUniformAdaptor {
-    TResolverUniformAdaptor(EShLanguage s, TIoMapResolver& r, TInfoSink& i, bool& e)
+    TResolverUniformAdaptor(EShLanguage s, TIoMapResolver& r, TVarLiveMap* uniform[EShLangCount], TInfoSink& i, bool& e)
       : stage(s)
       , resolver(r)
       , infoSink(i)
       , error(e)
     {
+        memcpy(uniformVarMap, uniform, EShLangCount * (sizeof(TVarLiveMap*)));
     }
 
     inline void operator()(std::pair<const TString, TVarEntryInfo>& entKey) {
@@ -206,9 +210,9 @@
         ent.newIndex = -1;
         const bool isValid = resolver.validateBinding(stage, ent);
         if (isValid) {
-            resolver.resolveBinding(stage, ent);
-            resolver.resolveSet(stage, ent);
-            resolver.resolveUniformLocation(stage, ent);
+            resolver.resolveSet(ent.stage, ent);
+            resolver.resolveBinding(ent.stage, ent);
+            resolver.resolveUniformLocation(ent.stage, ent);
 
             if (ent.newBinding != -1) {
                 if (ent.newBinding >= int(TQualifier::layoutBindingEnd)) {
@@ -217,6 +221,17 @@
                     infoSink.info.message(EPrefixInternalError, err.c_str());
                     error = true;
                 }
+
+                if (ent.symbol->getQualifier().hasBinding()) {
+                    for (uint32_t idx = EShLangVertex; idx < EShLangCount; ++idx) {
+                        if (idx == ent.stage || uniformVarMap[idx] == nullptr)
+                            continue;
+                        auto entKey2 = uniformVarMap[idx]->find(entKey.first);
+                        if (entKey2 != uniformVarMap[idx]->end()) {
+                            entKey2->second.newBinding = ent.newBinding;
+                        }
+                    }
+                }
             }
             if (ent.newSet != -1) {
                 if (ent.newSet >= int(TQualifier::layoutSetEnd)) {
@@ -225,6 +240,16 @@
                     infoSink.info.message(EPrefixInternalError, err.c_str());
                     error = true;
                 }
+                if (ent.symbol->getQualifier().hasSet()) {
+                    for (uint32_t idx = EShLangVertex; idx < EShLangCount; ++idx) {
+                        if ((idx == stage) || (uniformVarMap[idx] == nullptr))
+                            continue;
+                        auto entKey2 = uniformVarMap[idx]->find(entKey.first);
+                        if (entKey2 != uniformVarMap[idx]->end()) {
+                            entKey2->second.newSet = ent.newSet;
+                        }
+                    }
+                }
             }
         } else {
             TString errorMsg = "Invalid binding: " + entKey.first;
@@ -239,7 +264,7 @@
     TIoMapResolver& resolver;
     TInfoSink&      infoSink;
     bool&           error;
-
+    TVarLiveMap*    uniformVarMap[EShLangCount];
 private:
     TResolverUniformAdaptor& operator=(TResolverUniformAdaptor&) = delete;
 };
@@ -261,7 +286,7 @@
         ent.newBinding = -1;
         ent.newSet = -1;
         ent.newIndex = -1;
-        const bool isValid = resolver.validateInOut(stage, ent);
+        const bool isValid = resolver.validateInOut(ent.stage, ent);
         if (isValid) {
             resolver.resolveInOutLocation(stage, ent);
             resolver.resolveInOutComponent(stage, ent);
@@ -292,21 +317,118 @@
 };
 
 // The class is used for reserving explicit uniform locations and ubo/ssbo/opaque bindings
+// xxTODO: maybe this logic should be moved into the resolver's "validateInOut" and "validateUniform"
 
 struct TSymbolValidater
 {
     TSymbolValidater(TIoMapResolver& r, TInfoSink& i, TVarLiveMap* in[EShLangCount], TVarLiveMap* out[EShLangCount],
-                     TVarLiveMap* uniform[EShLangCount], bool& hadError)
-        : preStage(EShLangCount)
-        , currentStage(EShLangCount)
-        , nextStage(EShLangCount)
-        , resolver(r)
+                     TVarLiveMap* uniform[EShLangCount], bool& hadError, EProfile profile, int version)
+        : resolver(r)
         , infoSink(i)
         , hadError(hadError)
+        , profile(profile)
+        , version(version)
     {
         memcpy(inVarMaps, in, EShLangCount * (sizeof(TVarLiveMap*)));
         memcpy(outVarMaps, out, EShLangCount * (sizeof(TVarLiveMap*)));
         memcpy(uniformVarMap, uniform, EShLangCount * (sizeof(TVarLiveMap*)));
+
+        std::map<TString, TString> anonymousMemberMap;
+        std::vector<TRange> usedUniformLocation;
+        std::vector<TString> usedUniformName;
+        usedUniformLocation.clear();
+        usedUniformName.clear();
+        for (int i = 0; i < EShLangCount; i++) {
+            if (uniformVarMap[i]) {
+                for (auto uniformVar : *uniformVarMap[i])
+                {
+                    TIntermSymbol* pSymbol = uniformVar.second.symbol;
+                    TQualifier qualifier = uniformVar.second.symbol->getQualifier();
+                    TString symbolName = pSymbol->getAccessName();
+
+                    // All the uniform needs multi-stage location check (block/default)
+                    int uniformLocation = qualifier.layoutLocation;
+
+                    if (uniformLocation != TQualifier::layoutLocationEnd) {
+                        // Total size of current uniform, could be block, struct or other types.
+                        int size = TIntermediate::computeTypeUniformLocationSize(pSymbol->getType());
+
+                        TRange locationRange(uniformLocation, uniformLocation + size - 1);
+
+                        // Combine location and component ranges
+                        int overlapLocation = -1;
+                        bool diffLocation = false;
+
+                        // Check for collisions, except for vertex inputs on desktop targeting OpenGL
+                        overlapLocation = checkLocationOverlap(locationRange, usedUniformLocation, symbolName, usedUniformName, diffLocation);
+
+                        // Overlap locations of uniforms, regardless of components (multi stages)
+                        if (overlapLocation == -1) {
+                            usedUniformLocation.push_back(locationRange);
+                            usedUniformName.push_back(symbolName);
+                        }
+                        else if (overlapLocation >= 0) {
+                            if (diffLocation == true) {
+                                TString err = ("Uniform location should be equal for same uniforms: " +std::to_string(overlapLocation)).c_str();
+                                infoSink.info.message(EPrefixInternalError, err.c_str());
+                                hadError = true;
+                                break;
+                            }
+                            else {
+                                TString err = ("Uniform location overlaps across stages: " + std::to_string(overlapLocation)).c_str();
+                                infoSink.info.message(EPrefixInternalError, err.c_str());
+                                hadError = true;
+                                break;
+                            }
+                        }
+                    }
+
+                    if ((uniformVar.second.symbol->getBasicType() == EbtBlock) &&
+                        IsAnonymous(uniformVar.second.symbol->getName()))
+                    {
+                        auto blockType = uniformVar.second.symbol->getType().getStruct();
+                        for (size_t memberIdx = 0; memberIdx < blockType->size(); ++memberIdx) {
+                            auto memberName = (*blockType)[memberIdx].type->getFieldName();
+                            if (anonymousMemberMap.find(memberName) != anonymousMemberMap.end())
+                            {
+                                if (anonymousMemberMap[memberName] != uniformVar.second.symbol->getType().getTypeName())
+                                {
+                                    TString err = "Invalid block member name: " + memberName;
+                                    infoSink.info.message(EPrefixInternalError, err.c_str());
+                                    hadError = true;
+                                    break;
+                                }
+                            }
+                            else
+                            {
+                                anonymousMemberMap[memberName] = uniformVar.second.symbol->getType().getTypeName();
+                            }
+                        }
+                    }
+                    if (hadError)
+                        break;
+                }
+            }
+        }
+    }
+
+    // In case we need to new an intermediate, which costs too much
+    int checkLocationOverlap(const TRange& locationRange, std::vector<TRange>& usedUniformLocation, const TString symbolName, std::vector<TString>& usedUniformName, bool& diffLocation)
+    {
+        for (size_t r = 0; r < usedUniformLocation.size(); ++r) {
+            if (usedUniformName[r] == symbolName) {
+                diffLocation = true;
+                return (usedUniformLocation[r].start == locationRange.start &&
+                        usedUniformLocation[r].last == locationRange.last)
+                       ? -2 : std::max(locationRange.start, usedUniformLocation[r].start);
+            }
+            if (locationRange.overlap(usedUniformLocation[r])) {
+                // there is a collision; pick one
+                return std::max(locationRange.start, usedUniformLocation[r].start);
+            }
+        }
+
+        return -1; // no collision
     }
 
     inline void operator()(std::pair<const TString, TVarEntryInfo>& entKey) {
@@ -314,17 +436,23 @@
         TIntermSymbol* base = ent1.symbol;
         const TType& type = ent1.symbol->getType();
         const TString& name = entKey.first;
-        EShLanguage stage = ent1.stage;
         TString mangleName1, mangleName2;
-        if (currentStage != stage) {
-            preStage = currentStage;
-            currentStage = stage;
-            nextStage = EShLangCount;
-            for (int i = currentStage + 1; i < EShLangCount; i++) {
-                if (inVarMaps[i] != nullptr) {
-                    nextStage = static_cast<EShLanguage>(i);
-                    break;
-                }
+        EShLanguage stage = ent1.stage;
+        EShLanguage preStage, currentStage, nextStage;
+
+        preStage = EShLangCount;
+        for (int i = stage - 1; i >= 0; i--) {
+            if (inVarMaps[i] != nullptr) {
+                preStage = static_cast<EShLanguage>(i);
+                break;
+            }
+        }
+        currentStage = stage;
+        nextStage = EShLangCount;
+        for (int i = stage + 1; i < EShLangCount; i++) {
+            if (inVarMaps[i] != nullptr) {
+                nextStage = static_cast<EShLanguage>(i);
+                break;
             }
         }
 
@@ -335,46 +463,86 @@
             type.appendMangledName(mangleName1);
         }
 
+
+        // basic checking that symbols match
+        // more extensive checking in the link stage
         if (base->getQualifier().storage == EvqVaryingIn) {
             // validate stage in;
             if (preStage == EShLangCount)
                 return;
-            if (name == "gl_PerVertex")
+            if (TSymbolTable::isBuiltInSymbol(base->getId()))
                 return;
             if (outVarMaps[preStage] != nullptr) {
                 auto ent2 = outVarMaps[preStage]->find(name);
+                uint32_t location = base->getType().getQualifier().layoutLocation;
+                if (ent2 == outVarMaps[preStage]->end() &&
+                    location != glslang::TQualifier::layoutLocationEnd) {
+                    for (auto var = outVarMaps[preStage]->begin(); var != ent2; var++) {
+                        if (var->second.symbol->getType().getQualifier().layoutLocation == location) {
+                            ent2 = var;
+                            break;
+                        }
+                    }
+                }
                 if (ent2 != outVarMaps[preStage]->end()) {
+                    auto& type1 = base->getType();
+                    auto& type2 = ent2->second.symbol->getType();
+                    hadError = hadError || typeCheck(&type1, &type2, name.c_str(), false);
                     if (ent2->second.symbol->getType().getQualifier().isArrayedIo(preStage)) {
                         TType subType(ent2->second.symbol->getType(), 0);
                         subType.appendMangledName(mangleName2);
-                    }
-                    else {
+                    } else {
                         ent2->second.symbol->getType().appendMangledName(mangleName2);
                     }
-                    if (mangleName1 == mangleName2)
+
+                    if (mangleName1 == mangleName2) {
+                        // For ES 3.0 only, other versions have no such restrictions
+                        // According to ES 3.0 spec: The type and presence of the interpolation qualifiers and
+                        // storage qualifiers  of variables with the same name declared in all linked shaders must
+                        // match, otherwise the link command will fail.
+                        if (profile == EEsProfile && version == 300) {
+                            // Don't need to check smooth qualifier, as it uses the default interpolation mode
+                            if (ent1.stage == EShLangFragment && type1.isBuiltIn() == false) {
+                                if (type1.getQualifier().flat != type2.getQualifier().flat ||
+                                    type1.getQualifier().nopersp != type2.getQualifier().nopersp) {
+                                    TString err = "Interpolation qualifier mismatch : " + entKey.first;
+                                    infoSink.info.message(EPrefixInternalError, err.c_str());
+                                    hadError = true;
+                                }
+                            }
+                        }
                         return;
+                    }
                     else {
                         TString err = "Invalid In/Out variable type : " + entKey.first;
                         infoSink.info.message(EPrefixInternalError, err.c_str());
                         hadError = true;
                     }
                 }
+                else if (!base->getType().isBuiltIn()) {
+                    // According to spec: A link error is generated if any statically referenced input variable
+                    // or block does not have a matching output
+                    if (profile == EEsProfile && ent1.live) {
+                        hadError = true;
+                        TString errorStr = name + ": not been declare as a output variable in pre shader stage.";
+                        infoSink.info.message(EPrefixError, errorStr.c_str());
+                    }
+                }
                 return;
             }
         } else if (base->getQualifier().storage == EvqVaryingOut) {
             // validate stage out;
             if (nextStage == EShLangCount)
                 return;
-            if (name == "gl_PerVertex")
+            if (TSymbolTable::isBuiltInSymbol(base->getId()))
                 return;
-            if (outVarMaps[nextStage] != nullptr) {
+            if (inVarMaps[nextStage] != nullptr) {
                 auto ent2 = inVarMaps[nextStage]->find(name);
                 if (ent2 != inVarMaps[nextStage]->end()) {
                     if (ent2->second.symbol->getType().getQualifier().isArrayedIo(nextStage)) {
                         TType subType(ent2->second.symbol->getType(), 0);
                         subType.appendMangledName(mangleName2);
-                    }
-                    else {
+                    } else {
                         ent2->second.symbol->getType().appendMangledName(mangleName2);
                     }
                     if (mangleName1 == mangleName2)
@@ -387,7 +555,7 @@
                 }
                 return;
             }
-        } else if (base->getQualifier().isUniformOrBuffer() && ! base->getQualifier().isPushConstant()) {
+        } else if (base->getQualifier().isUniformOrBuffer() && !base->getQualifier().isPushConstant()) {
             // validate uniform type;
             for (int i = 0; i < EShLangCount; i++) {
                 if (i != currentStage && outVarMaps[i] != nullptr) {
@@ -395,26 +563,174 @@
                     if (ent2 != uniformVarMap[i]->end()) {
                         ent2->second.symbol->getType().appendMangledName(mangleName2);
                         if (mangleName1 != mangleName2) {
+                            ent2->second.symbol->getType().sameElementType(type);
                             TString err = "Invalid Uniform variable type : " + entKey.first;
                             infoSink.info.message(EPrefixInternalError, err.c_str());
                             hadError = true;
                         }
                         mangleName2.clear();
+
+                        // validate instance name of blocks
+                        if (hadError == false &&
+                            base->getType().getBasicType() == EbtBlock &&
+                            IsAnonymous(base->getName()) != IsAnonymous(ent2->second.symbol->getName())) {
+                            TString err = "Matched uniform block names must also either all be lacking "
+                                          "an instance name or all having an instance name: " + entKey.first;
+                            infoSink.info.message(EPrefixInternalError, err.c_str());
+                            hadError = true;
+                        }
+
+                        // validate uniform block member qualifier and member names
+                        auto& type1 = base->getType();
+                        auto& type2 = ent2->second.symbol->getType();
+                        if (hadError == false && base->getType().getBasicType() == EbtBlock) {
+                            hadError = hadError || typeCheck(&type1, &type2, name.c_str(), true);
+                        }
+                        else {
+                            hadError = hadError || typeCheck(&type1, &type2, name.c_str(), false);
+                        }
+                    }
+                    else if (base->getBasicType() == EbtBlock)
+                    {
+                        if (IsAnonymous(base->getName()))
+                        {
+                            // The name of anonymous block member can't same with default uniform variable.
+                            auto blockType1 = base->getType().getStruct();
+                            for (size_t memberIdx = 0; memberIdx < blockType1->size(); ++memberIdx) {
+                                auto memberName = (*blockType1)[memberIdx].type->getFieldName();
+                                if (uniformVarMap[i]->find(memberName) != uniformVarMap[i]->end())
+                                {
+                                    TString err = "Invalid Uniform variable name : " + memberName;
+                                    infoSink.info.message(EPrefixInternalError, err.c_str());
+                                    hadError = true;
+                                    break;
+                                }
+                            }
+                        }
                     }
                 }
             }
         }
     }
+
     TVarLiveMap *inVarMaps[EShLangCount], *outVarMaps[EShLangCount], *uniformVarMap[EShLangCount];
-    // Use for mark pre stage, to get more interface symbol information.
-    EShLanguage preStage, currentStage, nextStage;
+
     // Use for mark current shader stage for resolver
     TIoMapResolver& resolver;
     TInfoSink& infoSink;
     bool& hadError;
+    EProfile profile;
+    int version;
 
 private:
     TSymbolValidater& operator=(TSymbolValidater&) = delete;
+
+    bool qualifierCheck(const TType* const type1, const TType* const type2, const std::string& name, bool isBlock)
+    {
+        bool hasError = false;
+        const TQualifier& qualifier1 = type1->getQualifier();
+        const TQualifier& qualifier2 = type2->getQualifier();
+
+        if (((isBlock == false) &&
+            (type1->getQualifier().storage == EvqUniform && type2->getQualifier().storage == EvqUniform)) ||
+            (type1->getQualifier().storage == EvqGlobal && type2->getQualifier().storage == EvqGlobal)) {
+            if (qualifier1.precision != qualifier2.precision) {
+                hasError = true;
+                std::string errorStr = name + ": have precision conflict cross stage.";
+                infoSink.info.message(EPrefixError, errorStr.c_str());
+            }
+            if (qualifier1.hasFormat() && qualifier2.hasFormat()) {
+                if (qualifier1.layoutFormat != qualifier2.layoutFormat) {
+                    hasError = true;
+                    std::string errorStr = name + ": have layout format conflict cross stage.";
+                    infoSink.info.message(EPrefixError, errorStr.c_str());
+                }
+
+            }
+        }
+
+        if (isBlock == true) {
+            if (qualifier1.layoutPacking != qualifier2.layoutPacking) {
+                hasError = true;
+                std::string errorStr = name + ": have layoutPacking conflict cross stage.";
+                infoSink.info.message(EPrefixError, errorStr.c_str());
+            }
+            if (qualifier1.layoutMatrix != qualifier2.layoutMatrix) {
+                hasError = true;
+                std::string errorStr = name + ": have layoutMatrix conflict cross stage.";
+                infoSink.info.message(EPrefixError, errorStr.c_str());
+            }
+            if (qualifier1.layoutOffset != qualifier2.layoutOffset) {
+                hasError = true;
+                std::string errorStr = name + ": have layoutOffset conflict cross stage.";
+                infoSink.info.message(EPrefixError, errorStr.c_str());
+            }
+            if (qualifier1.layoutAlign != qualifier2.layoutAlign) {
+                hasError = true;
+                std::string errorStr = name + ": have layoutAlign conflict cross stage.";
+                infoSink.info.message(EPrefixError, errorStr.c_str());
+            }
+        }
+
+        return hasError;
+    }
+
+    bool typeCheck(const TType* const type1, const TType* const type2, const std::string& name, bool isBlock)
+    {
+        bool hasError = false;
+        if (!(type1->isStruct() && type2->isStruct())) {
+            hasError = hasError || qualifierCheck(type1, type2, name, isBlock);
+        }
+        else {
+            if (type1->getBasicType() == EbtBlock && type2->getBasicType() == EbtBlock)
+                isBlock = true;
+            const TTypeList* typeList1 = type1->getStruct();
+            const TTypeList* typeList2 = type2->getStruct();
+
+            std::string newName = name;
+            size_t memberCount = typeList1->size();
+            size_t index2 = 0;
+            for (size_t index = 0; index < memberCount; index++, index2++) {
+                // Skip inactive member
+                if (typeList1->at(index).type->getBasicType() == EbtVoid)
+                    continue;
+                while (index2 < typeList2->size() && typeList2->at(index2).type->getBasicType() == EbtVoid) {
+                    ++index2;
+                }
+
+                // TypeList1 has more members in list
+                if (index2 == typeList2->size()) {
+                    std::string errorStr = name + ": struct mismatch.";
+                    infoSink.info.message(EPrefixError, errorStr.c_str());
+                    hasError = true;
+                    break;
+                }
+
+                if (typeList1->at(index).type->getFieldName() != typeList2->at(index2).type->getFieldName()) {
+                    std::string errorStr = name + ": member name mismatch.";
+                    infoSink.info.message(EPrefixError, errorStr.c_str());
+                    hasError = true;
+                }
+                else {
+                    newName = typeList1->at(index).type->getFieldName().c_str();
+                }
+                hasError = hasError || typeCheck(typeList1->at(index).type, typeList2->at(index2).type, newName, isBlock);
+            }
+
+            while (index2 < typeList2->size())
+            {
+                // TypeList2 has more members
+                if (typeList2->at(index2).type->getBasicType() != EbtVoid) {
+                    std::string errorStr = name + ": struct mismatch.";
+                    infoSink.info.message(EPrefixError, errorStr.c_str());
+                    hasError = true;
+                    break;
+                }
+                ++index2;
+            }
+        }
+        return hasError;
+    }
 };
 
 struct TSlotCollector {
@@ -438,14 +754,18 @@
     , nextOutputLocation(0)
 {
     memset(stageMask, false, sizeof(bool) * (EShLangCount + 1));
+    memset(stageIntermediates, 0, sizeof(TIntermediate*) * (EShLangCount));
+    stageIntermediates[intermediate.getStage()] = &intermediate;
 }
 
-int TDefaultIoResolverBase::getBaseBinding(TResourceType res, unsigned int set) const {
-    return selectBaseBinding(intermediate.getShiftBinding(res), intermediate.getShiftBindingForSet(res, set));
+int TDefaultIoResolverBase::getBaseBinding(EShLanguage stage, TResourceType res, unsigned int set) const {
+    return stageIntermediates[stage] ? selectBaseBinding(stageIntermediates[stage]->getShiftBinding(res), stageIntermediates[stage]->getShiftBindingForSet(res, set))
+                                     : selectBaseBinding(intermediate.getShiftBinding(res), intermediate.getShiftBindingForSet(res, set));
 }
 
-const std::vector<std::string>& TDefaultIoResolverBase::getResourceSetBinding() const {
-    return intermediate.getResourceSetBinding();
+const std::vector<std::string>& TDefaultIoResolverBase::getResourceSetBinding(EShLanguage stage) const {
+    return stageIntermediates[stage] ? stageIntermediates[stage]->getResourceSetBinding()
+                                     : intermediate.getResourceSetBinding();
 }
 
 bool TDefaultIoResolverBase::doAutoBindingMapping() const { return intermediate.getAutoMapBindings(); }
@@ -486,21 +806,21 @@
     return reserveSlot(set, base, size);
 }
 
-int TDefaultIoResolverBase::resolveSet(EShLanguage /*stage*/, TVarEntryInfo& ent) {
+int TDefaultIoResolverBase::resolveSet(EShLanguage stage, TVarEntryInfo& ent) {
     const TType& type = ent.symbol->getType();
     if (type.getQualifier().hasSet()) {
         return ent.newSet = type.getQualifier().layoutSet;
     }
     // If a command line or API option requested a single descriptor set, use that (if not overrided by spaceN)
-    if (getResourceSetBinding().size() == 1) {
-        return ent.newSet = atoi(getResourceSetBinding()[0].c_str());
+    if (getResourceSetBinding(stage).size() == 1) {
+        return ent.newSet = atoi(getResourceSetBinding(stage)[0].c_str());
     }
     return ent.newSet = 0;
 }
 
 int TDefaultIoResolverBase::resolveUniformLocation(EShLanguage /*stage*/, TVarEntryInfo& ent) {
     const TType& type = ent.symbol->getType();
-    const char* name = ent.symbol->getName().c_str();
+    const char* name =  ent.symbol->getAccessName().c_str();
     // kick out of not doing this
     if (! doAutoLocationMapping()) {
         return ent.newLocation = -1;
@@ -609,12 +929,12 @@
 
 int TDefaultGlslIoResolver::resolveInOutLocation(EShLanguage stage, TVarEntryInfo& ent) {
     const TType& type = ent.symbol->getType();
-    const TString& name = getAccessName(ent.symbol);
+    const TString& name = ent.symbol->getAccessName();
     if (currentStage != stage) {
         preStage = currentStage;
         currentStage = stage;
     }
-    // kick out of not doing this
+    // kick out if not doing this
     if (! doAutoLocationMapping()) {
         return ent.newLocation = -1;
     }
@@ -693,7 +1013,7 @@
 
 int TDefaultGlslIoResolver::resolveUniformLocation(EShLanguage /*stage*/, TVarEntryInfo& ent) {
     const TType& type = ent.symbol->getType();
-    const TString& name = getAccessName(ent.symbol);
+    const TString& name = ent.symbol->getAccessName();
     // kick out of not doing this
     if (! doAutoLocationMapping()) {
         return ent.newLocation = -1;
@@ -762,9 +1082,9 @@
     return ent.newLocation = location;
 }
 
-int TDefaultGlslIoResolver::resolveBinding(EShLanguage /*stage*/, TVarEntryInfo& ent) {
+int TDefaultGlslIoResolver::resolveBinding(EShLanguage stage, TVarEntryInfo& ent) {
     const TType& type = ent.symbol->getType();
-    const TString& name = getAccessName(ent.symbol);
+    const TString& name = ent.symbol->getAccessName();
     // On OpenGL arrays of opaque types take a separate binding for each element
     int numBindings = intermediate.getSpv().openGl != 0 && type.isSizedArray() ? type.getCumulativeArraySize() : 1;
     TResourceType resource = getResourceType(type);
@@ -775,30 +1095,32 @@
     // There is no 'set' qualifier in OpenGL shading language, each resource has its own
     // binding name space, so remap the 'set' to resource type which make each resource
     // binding is valid from 0 to MAX_XXRESOURCE_BINDINGS
-    int set = resource;
+    int set = intermediate.getSpv().openGl != 0 ? resource : ent.newSet;
+    int resourceKey = set;
     if (resource < EResCount) {
         if (type.getQualifier().hasBinding()) {
-            ent.newBinding = reserveSlot(set, getBaseBinding(resource, set) + type.getQualifier().layoutBinding, numBindings);
-            return ent.newBinding;
-        } else if (ent.live && doAutoBindingMapping()) {
+            int newBinding = reserveSlot(resourceKey, getBaseBinding(stage, resource, set) + type.getQualifier().layoutBinding, numBindings);
+            return ent.newBinding = newBinding;
+
+        } else {
             // The resource in current stage is not declared with binding, but it is possible declared
             // with explicit binding in other stages, find the resourceSlotMap firstly to check whether
             // the resource has binding, don't need to allocate if it already has a binding
             bool hasBinding = false;
-            if (! resourceSlotMap[resource].empty()) {
-                TVarSlotMap::iterator iter = resourceSlotMap[resource].find(name);
-                if (iter != resourceSlotMap[resource].end()) {
+            ent.newBinding = -1; // leave as -1 if it isn't set below
+
+            if (! resourceSlotMap[resourceKey].empty()) {
+                TVarSlotMap::iterator iter = resourceSlotMap[resourceKey].find(name);
+                if (iter != resourceSlotMap[resourceKey].end()) {
                     hasBinding = true;
                     ent.newBinding = iter->second;
                 }
             }
-            if (! hasBinding) {
-                TVarSlotMap varSlotMap;
+            if (!hasBinding && (ent.live && doAutoBindingMapping())) {
                 // find free slot, the caller did make sure it passes all vars with binding
                 // first and now all are passed that do not have a binding and needs one
-                int binding = getFreeSlot(resource, getBaseBinding(resource, set), numBindings);
-                varSlotMap[name] = binding;
-                resourceSlotMap[resource] = varSlotMap;
+                int binding = getFreeSlot(resourceKey, getBaseBinding(stage, resource, set), numBindings);
+                resourceSlotMap[resourceKey][name] = binding;
                 ent.newBinding = binding;
             }
             return ent.newBinding;
@@ -839,7 +1161,7 @@
 
 void TDefaultGlslIoResolver::reserverStorageSlot(TVarEntryInfo& ent, TInfoSink& infoSink) {
     const TType& type = ent.symbol->getType();
-    const TString& name = getAccessName(ent.symbol);
+    const TString& name = ent.symbol->getAccessName();
     TStorageQualifier storage = type.getQualifier().storage;
     EShLanguage stage(EShLangCount);
     switch (storage) {
@@ -899,17 +1221,21 @@
 
 void TDefaultGlslIoResolver::reserverResourceSlot(TVarEntryInfo& ent, TInfoSink& infoSink) {
     const TType& type = ent.symbol->getType();
-    const TString& name = getAccessName(ent.symbol);
-    int resource = getResourceType(type);
+    const TString& name = ent.symbol->getAccessName();
+    TResourceType resource = getResourceType(type);
+    int set = intermediate.getSpv().openGl != 0 ? resource : resolveSet(ent.stage, ent);
+    int resourceKey = set;
+
     if (type.getQualifier().hasBinding()) {
-        TVarSlotMap& varSlotMap = resourceSlotMap[resource];
+        TVarSlotMap& varSlotMap = resourceSlotMap[resourceKey];
         TVarSlotMap::iterator iter = varSlotMap.find(name);
-        int binding = type.getQualifier().layoutBinding;
+        int binding = type.getQualifier().layoutBinding + getBaseBinding(ent.stage, resource, set);
+
         if (iter == varSlotMap.end()) {
             // Reserve the slots for the ubo, ssbo and opaques who has explicit binding
-            int numBindings = type.isSizedArray() ? type.getCumulativeArraySize() : 1;
+            int numBindings = intermediate.getSpv().openGl != 0 && type.isSizedArray() ? type.getCumulativeArraySize() : 1;
             varSlotMap[name] = binding;
-            reserveSlot(resource, binding, numBindings);
+            reserveSlot(resourceKey, binding, numBindings);
         } else {
             // Allocate binding by name for OpenGL driver, so the resource in different
             // stages should be declared with the same binding
@@ -922,13 +1248,6 @@
     }
 }
 
-const TString& TDefaultGlslIoResolver::getAccessName(const TIntermSymbol* symbol)
-{
-    return symbol->getBasicType() == EbtBlock ?
-        symbol->getType().getTypeName() :
-        symbol->getName();
-}
-
 //TDefaultGlslIoResolver end
 
 /*
@@ -965,7 +1284,7 @@
         return EResCount;
     }
 
-    int resolveBinding(EShLanguage /*stage*/, TVarEntryInfo& ent) override {
+    int resolveBinding(EShLanguage stage, TVarEntryInfo& ent) override {
         const TType& type = ent.symbol->getType();
         const int set = getLayoutSet(type);
         // On OpenGL arrays of opaque types take a seperate binding for each element
@@ -974,11 +1293,11 @@
         if (resource < EResCount) {
             if (type.getQualifier().hasBinding()) {
                 return ent.newBinding = reserveSlot(
-                           set, getBaseBinding(resource, set) + type.getQualifier().layoutBinding, numBindings);
+                           set, getBaseBinding(stage, resource, set) + type.getQualifier().layoutBinding, numBindings);
             } else if (ent.live && doAutoBindingMapping()) {
                 // find free slot, the caller did make sure it passes all vars with binding
                 // first and now all are passed that do not have a binding and needs one
-                return ent.newBinding = getFreeSlot(set, getBaseBinding(resource, set), numBindings);
+                return ent.newBinding = getFreeSlot(set, getBaseBinding(stage, resource, set), numBindings);
             }
         }
         return ent.newBinding = -1;
@@ -1050,17 +1369,17 @@
         return EResCount;
     }
 
-    int resolveBinding(EShLanguage /*stage*/, TVarEntryInfo& ent) override {
+    int resolveBinding(EShLanguage stage, TVarEntryInfo& ent) override {
         const TType& type = ent.symbol->getType();
         const int set = getLayoutSet(type);
         TResourceType resource = getResourceType(type);
         if (resource < EResCount) {
             if (type.getQualifier().hasBinding()) {
-                return ent.newBinding = reserveSlot(set, getBaseBinding(resource, set) + type.getQualifier().layoutBinding);
+                return ent.newBinding = reserveSlot(set, getBaseBinding(stage, resource, set) + type.getQualifier().layoutBinding);
             } else if (ent.live && doAutoBindingMapping()) {
                 // find free slot, the caller did make sure it passes all vars with binding
                 // first and now all are passed that do not have a binding and needs one
-                return ent.newBinding = getFreeSlot(set, getBaseBinding(resource, set));
+                return ent.newBinding = getFreeSlot(set, getBaseBinding(stage, resource, set));
             }
         }
         return ent.newBinding = -1;
@@ -1099,10 +1418,10 @@
         else
             resolver = &defaultResolver;
     }
-    resolver->addStage(stage);
 #else
     resolver = &defaultResolver;
 #endif
+    resolver->addStage(stage, intermediate);
 
     TVarLiveMap inVarMap, outVarMap, uniformVarMap;
     TVarLiveVector inVector, outVector, uniformVector;
@@ -1117,25 +1436,23 @@
     }
 
     // sort entries by priority. see TVarEntryInfo::TOrderByPriority for info.
-    std::for_each(inVarMap.begin(), inVarMap.end(),
-                  [&inVector](TVarLivePair p) { inVector.push_back(p); });
+    for (auto& var : inVarMap) { inVector.push_back(var); }
     std::sort(inVector.begin(), inVector.end(), [](const TVarLivePair& p1, const TVarLivePair& p2) -> bool {
         return TVarEntryInfo::TOrderByPriority()(p1.second, p2.second);
     });
-    std::for_each(outVarMap.begin(), outVarMap.end(),
-                  [&outVector](TVarLivePair p) { outVector.push_back(p); });
+    for (auto& var : outVarMap) { outVector.push_back(var); }
     std::sort(outVector.begin(), outVector.end(), [](const TVarLivePair& p1, const TVarLivePair& p2) -> bool {
         return TVarEntryInfo::TOrderByPriority()(p1.second, p2.second);
     });
-    std::for_each(uniformVarMap.begin(), uniformVarMap.end(),
-                  [&uniformVector](TVarLivePair p) { uniformVector.push_back(p); });
+    for (auto& var : uniformVarMap) { uniformVector.push_back(var); }
     std::sort(uniformVector.begin(), uniformVector.end(), [](const TVarLivePair& p1, const TVarLivePair& p2) -> bool {
         return TVarEntryInfo::TOrderByPriority()(p1.second, p2.second);
     });
     bool hadError = false;
+    TVarLiveMap* dummyUniformVarMap[EShLangCount] = {};
     TNotifyInOutAdaptor inOutNotify(stage, *resolver);
     TNotifyUniformAdaptor uniformNotify(stage, *resolver);
-    TResolverUniformAdaptor uniformResolve(stage, *resolver, infoSink, hadError);
+    TResolverUniformAdaptor uniformResolve(stage, *resolver, dummyUniformVarMap, infoSink, hadError);
     TResolverInOutAdaptor inOutResolve(stage, *resolver, infoSink, hadError);
     resolver->beginNotifications(stage);
     std::for_each(inVector.begin(), inVector.end(), inOutNotify);
@@ -1143,22 +1460,22 @@
     std::for_each(uniformVector.begin(), uniformVector.end(), uniformNotify);
     resolver->endNotifications(stage);
     resolver->beginResolve(stage);
-    std::for_each(inVector.begin(), inVector.end(), inOutResolve);
+    for (auto& var : inVector) { inOutResolve(var); }
     std::for_each(inVector.begin(), inVector.end(), [&inVarMap](TVarLivePair p) {
-        auto at = inVarMap.find(p.second.symbol->getName());
-        if (at != inVarMap.end())
+        auto at = inVarMap.find(p.second.symbol->getAccessName());
+        if (at != inVarMap.end() && p.second.id == at->second.id)
             at->second = p.second;
     });
-    std::for_each(outVector.begin(), outVector.end(), inOutResolve);
+    for (auto& var : outVector) { inOutResolve(var); }
     std::for_each(outVector.begin(), outVector.end(), [&outVarMap](TVarLivePair p) {
-        auto at = outVarMap.find(p.second.symbol->getName());
-        if (at != outVarMap.end())
+        auto at = outVarMap.find(p.second.symbol->getAccessName());
+        if (at != outVarMap.end() && p.second.id == at->second.id)
             at->second = p.second;
     });
     std::for_each(uniformVector.begin(), uniformVector.end(), uniformResolve);
     std::for_each(uniformVector.begin(), uniformVector.end(), [&uniformVarMap](TVarLivePair p) {
-        auto at = uniformVarMap.find(p.second.symbol->getName());
-        if (at != uniformVarMap.end())
+        auto at = uniformVarMap.find(p.second.symbol->getAccessName());
+        if (at != uniformVarMap.end() && p.second.id == at->second.id)
             at->second = p.second;
     });
     resolver->endResolve(stage);
@@ -1174,9 +1491,14 @@
 //
 // Returns false if the input is too malformed to do this.
 bool TGlslIoMapper::addStage(EShLanguage stage, TIntermediate& intermediate, TInfoSink& infoSink, TIoMapResolver* resolver) {
+    bool somethingToDo = !intermediate.getResourceSetBinding().empty() ||
+        intermediate.getAutoMapBindings() ||
+        intermediate.getAutoMapLocations();
 
-    bool somethingToDo = ! intermediate.getResourceSetBinding().empty() || intermediate.getAutoMapBindings() ||
-                         intermediate.getAutoMapLocations();
+    // Profile and version are use for symbol validate.
+    profile = intermediate.getProfile();
+    version = intermediate.getVersion();
+
     // Restrict the stricter condition to further check 'somethingToDo' only if 'somethingToDo' has not been set, reduce
     // unnecessary or insignificant for-loop operation after 'somethingToDo' have been true.
     for (int res = 0; (res < EResCount && !somethingToDo); ++res) {
@@ -1195,10 +1517,21 @@
     }
     // if no resolver is provided, use the default resolver with the given shifts and auto map settings
     TDefaultGlslIoResolver defaultResolver(intermediate);
+#ifdef ENABLE_HLSL
+    TDefaultHlslIoResolver defaultHlslResolver(intermediate);
+    if (resolver == nullptr) {
+        // TODO: use a passed in IO mapper for this
+        if (intermediate.usingHlslIoMapping())
+            resolver = &defaultHlslResolver;
+        else
+            resolver = &defaultResolver;
+    }
+#else
     if (resolver == nullptr) {
         resolver = &defaultResolver;
     }
-    resolver->addStage(stage);
+#endif
+    resolver->addStage(stage, intermediate);
     inVarMaps[stage] = new TVarLiveMap(); outVarMaps[stage] = new TVarLiveMap(); uniformVarMap[stage] = new TVarLiveMap();
     TVarGatherTraverser iter_binding_all(intermediate, true, *inVarMaps[stage], *outVarMaps[stage],
                                          *uniformVarMap[stage]);
@@ -1236,31 +1569,66 @@
     resolver->endResolve(EShLangCount);
     if (!hadError) {
         //Resolve uniform location, ubo/ssbo/opaque bindings across stages
-        TResolverUniformAdaptor uniformResolve(EShLangCount, *resolver, infoSink, hadError);
+        TResolverUniformAdaptor uniformResolve(EShLangCount, *resolver, uniformVarMap, infoSink, hadError);
         TResolverInOutAdaptor inOutResolve(EShLangCount, *resolver, infoSink, hadError);
-        TSymbolValidater symbolValidater(*resolver, infoSink, inVarMaps, outVarMaps, uniformVarMap, hadError);
+        TSymbolValidater symbolValidater(*resolver, infoSink, inVarMaps,
+                                         outVarMaps, uniformVarMap, hadError, profile, version);
+
+        TVarLiveVector inVectors[EShLangCount];
+        TVarLiveVector outVectors[EShLangCount];
         TVarLiveVector uniformVector;
+
         resolver->beginResolve(EShLangCount);
         for (int stage = EShLangVertex; stage < EShLangCount; stage++) {
             if (inVarMaps[stage] != nullptr) {
                 inOutResolve.setStage(EShLanguage(stage));
-                std::for_each(inVarMaps[stage]->begin(), inVarMaps[stage]->end(), symbolValidater);
-                std::for_each(inVarMaps[stage]->begin(), inVarMaps[stage]->end(), inOutResolve);
-                std::for_each(outVarMaps[stage]->begin(), outVarMaps[stage]->end(), symbolValidater);
-                std::for_each(outVarMaps[stage]->begin(), outVarMaps[stage]->end(), inOutResolve);
+
+                // copy vars into a sorted list
+                std::for_each(inVarMaps[stage]->begin(), inVarMaps[stage]->end(),
+                        [&inVectors, stage](TVarLivePair p) { inVectors[stage].push_back(p); });
+                std::sort(inVectors[stage].begin(), inVectors[stage].end(),
+                        [](const TVarLivePair& p1, const TVarLivePair& p2) -> bool {
+                            return TVarEntryInfo::TOrderByPriority()(p1.second, p2.second);
+                });
+
+                std::for_each(outVarMaps[stage]->begin(), outVarMaps[stage]->end(),
+                        [&outVectors, stage](TVarLivePair p) { outVectors[stage].push_back(p); });
+                std::sort(outVectors[stage].begin(), outVectors[stage].end(),
+                        [](const TVarLivePair& p1, const TVarLivePair& p2) -> bool {
+                            return TVarEntryInfo::TOrderByPriority()(p1.second, p2.second);
+                });
+
+                for (auto& var : inVectors[stage]) { symbolValidater(var); }
+                for (auto& var : inVectors[stage]) { inOutResolve(var); }
+                for (auto& var : outVectors[stage]) { symbolValidater(var); }
+                for (auto& var : outVectors[stage]) { inOutResolve(var); }
+
+                // copy results back into maps
+                std::for_each(inVectors[stage].begin(), inVectors[stage].end(),
+                    [this, stage](TVarLivePair p) {
+                        auto at = inVarMaps[stage]->find(p.first);
+                        if (at != inVarMaps[stage]->end())
+                            at->second = p.second;
+                });
+
+                std::for_each(outVectors[stage].begin(), outVectors[stage].end(),
+                    [this, stage](TVarLivePair p) {
+                        auto at = outVarMaps[stage]->find(p.first);
+                        if (at != outVarMaps[stage]->end())
+                            at->second = p.second;
+                });
+
             }
             if (uniformVarMap[stage] != nullptr) {
                 uniformResolve.setStage(EShLanguage(stage));
-                // sort entries by priority. see TVarEntryInfo::TOrderByPriority for info.
-                std::for_each(uniformVarMap[stage]->begin(), uniformVarMap[stage]->end(),
-                              [&uniformVector](TVarLivePair p) { uniformVector.push_back(p); });
+                for (auto& var : *(uniformVarMap[stage])) { uniformVector.push_back(var); }
             }
         }
         std::sort(uniformVector.begin(), uniformVector.end(), [](const TVarLivePair& p1, const TVarLivePair& p2) -> bool {
-            return TVarEntryInfo::TOrderByPriority()(p1.second, p2.second);
+            return TVarEntryInfo::TOrderByPriorityAndLive()(p1.second, p2.second);
         });
-        std::for_each(uniformVector.begin(), uniformVector.end(), symbolValidater);
-        std::for_each(uniformVector.begin(), uniformVector.end(), uniformResolve);
+        for (auto& var : uniformVector) { symbolValidater(var); }
+        for (auto& var : uniformVector) { uniformResolve(var); }
         std::sort(uniformVector.begin(), uniformVector.end(), [](const TVarLivePair& p1, const TVarLivePair& p2) -> bool {
             return TVarEntryInfo::TOrderByPriority()(p1.second, p2.second);
         });
@@ -1269,14 +1637,18 @@
             if (intermediates[stage] != nullptr) {
                 // traverse each stage, set new location to each input/output and unifom symbol, set new binding to
                 // ubo, ssbo and opaque symbols
-                TVarLiveMap** pUniformVarMap = uniformVarMap;
+                TVarLiveMap** pUniformVarMap = uniformResolve.uniformVarMap;
                 std::for_each(uniformVector.begin(), uniformVector.end(), [pUniformVarMap, stage](TVarLivePair p) {
-                    auto at = pUniformVarMap[stage]->find(p.second.symbol->getName());
-                    if (at != pUniformVarMap[stage]->end())
+                    auto at = pUniformVarMap[stage]->find(p.second.symbol->getAccessName());
+                    if (at != pUniformVarMap[stage]->end() && at->second.id == p.second.id){
+                        int resolvedBinding = at->second.newBinding;
                         at->second = p.second;
+                        if (resolvedBinding > 0)
+                            at->second.newBinding = resolvedBinding;
+                    }
                 });
                 TVarSetTraverser iter_iomap(*intermediates[stage], *inVarMaps[stage], *outVarMaps[stage],
-                                            *uniformVarMap[stage]);
+                                            *uniformResolve.uniformVarMap[stage]);
                 intermediates[stage]->getTreeRoot()->traverse(&iter_iomap);
             }
         }
@@ -1288,4 +1660,4 @@
 
 } // end namespace glslang
 
-#endif // GLSLANG_WEB
+#endif // !GLSLANG_WEB && !GLSLANG_ANGLE
diff --git a/glslang/MachineIndependent/iomapper.h b/glslang/MachineIndependent/iomapper.h
index 7ca18b8..07357c2 100644
--- a/glslang/MachineIndependent/iomapper.h
+++ b/glslang/MachineIndependent/iomapper.h
@@ -33,7 +33,7 @@
 // POSSIBILITY OF SUCH DAMAGE.
 //
 
-#ifndef GLSLANG_WEB
+#if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE)
 
 #ifndef _IOMAPPER_INCLUDED
 #define _IOMAPPER_INCLUDED
@@ -52,7 +52,7 @@
 
 class TIntermediate;
 struct TVarEntryInfo {
-    int id;
+    long long id;
     TIntermSymbol* symbol;
     bool live;
     int newBinding;
@@ -87,6 +87,35 @@
             return lPoints > rPoints;
         }
     };
+
+    struct TOrderByPriorityAndLive {
+        // ordering:
+        // 1) do live variables first
+        // 2) has both binding and set
+        // 3) has binding but no set
+        // 4) has no binding but set
+        // 5) has no binding and no set
+        inline bool operator()(const TVarEntryInfo& l, const TVarEntryInfo& r) {
+
+            const TQualifier& lq = l.symbol->getQualifier();
+            const TQualifier& rq = r.symbol->getQualifier();
+
+            // simple rules:
+            // has binding gives 2 points
+            // has set gives 1 point
+            // who has the most points is more important.
+            int lPoints = (lq.hasBinding() ? 2 : 0) + (lq.hasSet() ? 1 : 0);
+            int rPoints = (rq.hasBinding() ? 2 : 0) + (rq.hasSet() ? 1 : 0);
+
+            if (l.live != r.live)
+                return l.live > r.live;
+
+            if (lPoints != rPoints)
+                return lPoints > rPoints;
+
+            return l.id < r.id;
+        }
+    };
 };
 
 // Base class for shared TIoMapResolver services, used by several derivations.
@@ -107,8 +136,8 @@
     void endCollect(EShLanguage) override {}
     void reserverResourceSlot(TVarEntryInfo& /*ent*/, TInfoSink& /*infoSink*/) override {}
     void reserverStorageSlot(TVarEntryInfo& /*ent*/, TInfoSink& /*infoSink*/) override {}
-    int getBaseBinding(TResourceType res, unsigned int set) const;
-    const std::vector<std::string>& getResourceSetBinding() const;
+    int getBaseBinding(EShLanguage stage, TResourceType res, unsigned int set) const;
+    const std::vector<std::string>& getResourceSetBinding(EShLanguage stage) const;
     virtual TResourceType getResourceType(const glslang::TType& type) = 0;
     bool doAutoBindingMapping() const;
     bool doAutoLocationMapping() const;
@@ -122,9 +151,11 @@
     int resolveInOutLocation(EShLanguage stage, TVarEntryInfo& ent) override;
     int resolveInOutComponent(EShLanguage /*stage*/, TVarEntryInfo& ent) override;
     int resolveInOutIndex(EShLanguage /*stage*/, TVarEntryInfo& ent) override;
-    void addStage(EShLanguage stage) override {
-        if (stage < EShLangCount)
+    void addStage(EShLanguage stage, TIntermediate& stageIntermediate) override {
+        if (stage < EShLangCount) {
             stageMask[stage] = true;
+            stageIntermediates[stage] = &stageIntermediate;
+        }
     }
     uint32_t computeTypeLocationSize(const TType& type, EShLanguage stage);
 
@@ -139,6 +170,8 @@
     int nextInputLocation;
     int nextOutputLocation;
     bool stageMask[EShLangCount + 1];
+    const TIntermediate* stageIntermediates[EShLangCount];
+
     // Return descriptor set specific base if there is one, and the generic base otherwise.
     int selectBaseBinding(int base, int descriptorSetBase) const {
         return descriptorSetBase != -1 ? descriptorSetBase : base;
@@ -186,7 +219,7 @@
     }
 };
 
-// Defaulf I/O resolver for OpenGL
+// Default I/O resolver for OpenGL
 struct TDefaultGlslIoResolver : public TDefaultIoResolverBase {
 public:
     typedef std::map<TString, int> TVarSlotMap;  // <resourceName, location/binding>
@@ -203,7 +236,6 @@
     void endCollect(EShLanguage) override;
     void reserverStorageSlot(TVarEntryInfo& ent, TInfoSink& infoSink) override;
     void reserverResourceSlot(TVarEntryInfo& ent, TInfoSink& infoSink) override;
-    const TString& getAccessName(const TIntermSymbol*);
     // in/out symbol and uniform symbol are stored in the same resourceSlotMap, the storage key is used to identify each type of symbol.
     // We use stage and storage qualifier to construct a storage key. it can help us identify the same storage resource used in different stage.
     // if a resource is a program resource and we don't need know it usage stage, we can use same stage to build storage key.
@@ -263,10 +295,12 @@
 class TGlslIoMapper : public TIoMapper {
 public:
     TGlslIoMapper() {
-        memset(inVarMaps,     0, sizeof(TVarLiveMap*)   * EShLangCount);
-        memset(outVarMaps,    0, sizeof(TVarLiveMap*)   * EShLangCount);
-        memset(uniformVarMap, 0, sizeof(TVarLiveMap*)   * EShLangCount);
-        memset(intermediates, 0, sizeof(TIntermediate*) * EShLangCount);
+        memset(inVarMaps,     0, sizeof(TVarLiveMap*)   * (EShLangCount + 1));
+        memset(outVarMaps,    0, sizeof(TVarLiveMap*)   * (EShLangCount + 1));
+        memset(uniformVarMap, 0, sizeof(TVarLiveMap*)   * (EShLangCount + 1));
+        memset(intermediates, 0, sizeof(TIntermediate*) * (EShLangCount + 1));
+        profile = ENoProfile;
+        version = 0;
     }
     virtual ~TGlslIoMapper() {
         for (size_t stage = 0; stage < EShLangCount; stage++) {
@@ -293,10 +327,12 @@
                 *uniformVarMap[EShLangCount];
     TIntermediate* intermediates[EShLangCount];
     bool hadError = false;
+    EProfile profile;
+    int version;
 };
 
 } // end namespace glslang
 
 #endif // _IOMAPPER_INCLUDED
 
-#endif //  GLSLANG_WEB
+#endif // !GLSLANG_WEB && !GLSLANG_ANGLE
diff --git a/glslang/MachineIndependent/limits.cpp b/glslang/MachineIndependent/limits.cpp
index 51d9300..3915705 100644
--- a/glslang/MachineIndependent/limits.cpp
+++ b/glslang/MachineIndependent/limits.cpp
@@ -63,14 +63,14 @@
 
 class TInductiveTraverser : public TIntermTraverser {
 public:
-    TInductiveTraverser(int id, TSymbolTable& st)
+    TInductiveTraverser(long long id, TSymbolTable& st)
     : loopId(id), symbolTable(st), bad(false)  { }
 
     virtual bool visitBinary(TVisit, TIntermBinary* node);
     virtual bool visitUnary(TVisit, TIntermUnary* node);
     virtual bool visitAggregate(TVisit, TIntermAggregate* node);
 
-    int loopId;           // unique ID of the symbol that's the loop inductive variable
+    long long loopId;           // unique ID of the symbol that's the loop inductive variable
     TSymbolTable& symbolTable;
     bool bad;
     TSourceLoc badLoc;
@@ -129,7 +129,7 @@
 //
 // External function to call for loop check.
 //
-void TParseContext::inductiveLoopBodyCheck(TIntermNode* body, int loopId, TSymbolTable& symbolTable)
+void TParseContext::inductiveLoopBodyCheck(TIntermNode* body, long long loopId, TSymbolTable& symbolTable)
 {
     TInductiveTraverser it(loopId, symbolTable);
 
diff --git a/glslang/MachineIndependent/linkValidate.cpp b/glslang/MachineIndependent/linkValidate.cpp
old mode 100755
new mode 100644
index f0bede5..42b416d
--- a/glslang/MachineIndependent/linkValidate.cpp
+++ b/glslang/MachineIndependent/linkValidate.cpp
@@ -48,6 +48,7 @@
 
 #include "localintermediate.h"
 #include "../Include/InfoSink.h"
+#include "SymbolTable.h"
 
 namespace glslang {
 
@@ -82,13 +83,63 @@
 //
 void TIntermediate::merge(TInfoSink& infoSink, TIntermediate& unit)
 {
-#ifndef GLSLANG_WEB
+#if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE)
     mergeCallGraphs(infoSink, unit);
     mergeModes(infoSink, unit);
     mergeTrees(infoSink, unit);
 #endif
 }
 
+//
+// check that link objects between stages
+//
+void TIntermediate::mergeUniformObjects(TInfoSink& infoSink, TIntermediate& unit) {
+    if (unit.treeRoot == nullptr || treeRoot == nullptr)
+        return;
+
+    // Get the linker-object lists
+    TIntermSequence& linkerObjects = findLinkerObjects()->getSequence();
+    TIntermSequence unitLinkerObjects = unit.findLinkerObjects()->getSequence();
+
+    // filter unitLinkerObjects to only contain uniforms
+    auto end = std::remove_if(unitLinkerObjects.begin(), unitLinkerObjects.end(),
+        [](TIntermNode* node) {return node->getAsSymbolNode()->getQualifier().storage != EvqUniform &&
+                                      node->getAsSymbolNode()->getQualifier().storage != EvqBuffer; });
+    unitLinkerObjects.resize(end - unitLinkerObjects.begin());
+
+    // merge uniforms and do error checking
+    bool mergeExistingOnly = false;
+    mergeGlobalUniformBlocks(infoSink, unit, mergeExistingOnly);
+    mergeLinkerObjects(infoSink, linkerObjects, unitLinkerObjects, unit.getStage());
+}
+
+//
+// do error checking on the shader boundary in / out vars 
+//
+void TIntermediate::checkStageIO(TInfoSink& infoSink, TIntermediate& unit) {
+    if (unit.treeRoot == nullptr || treeRoot == nullptr)
+        return;
+
+    // Get copies of the linker-object lists
+    TIntermSequence linkerObjects = findLinkerObjects()->getSequence();
+    TIntermSequence unitLinkerObjects = unit.findLinkerObjects()->getSequence();
+
+    // filter linkerObjects to only contain out variables
+    auto end = std::remove_if(linkerObjects.begin(), linkerObjects.end(),
+        [](TIntermNode* node) {return node->getAsSymbolNode()->getQualifier().storage != EvqVaryingOut; });
+    linkerObjects.resize(end - linkerObjects.begin());
+
+    // filter unitLinkerObjects to only contain in variables
+    auto unitEnd = std::remove_if(unitLinkerObjects.begin(), unitLinkerObjects.end(),
+        [](TIntermNode* node) {return node->getAsSymbolNode()->getQualifier().storage != EvqVaryingIn; });
+    unitLinkerObjects.resize(unitEnd - unitLinkerObjects.begin());
+
+    // do matching and error checking
+    mergeLinkerObjects(infoSink, linkerObjects, unitLinkerObjects, unit.getStage());
+
+    // TODO: final check; make sure that any statically used `in` have matching `out` written to
+}
+
 void TIntermediate::mergeCallGraphs(TInfoSink& infoSink, TIntermediate& unit)
 {
     if (unit.getNumEntryPoints() > 0) {
@@ -104,7 +155,7 @@
     callGraph.insert(callGraph.end(), unit.callGraph.begin(), unit.callGraph.end());
 }
 
-#ifndef GLSLANG_WEB
+#if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE)
 
 #define MERGE_MAX(member) member = std::max(member, unit.member)
 #define MERGE_TRUE(member) if (unit.member) member = unit.member;
@@ -136,6 +187,7 @@
     MERGE_MAX(spvVersion.vulkanGlsl);
     MERGE_MAX(spvVersion.vulkan);
     MERGE_MAX(spvVersion.openGl);
+    MERGE_TRUE(spvVersion.vulkanRelaxed);
 
     numErrors += unit.getNumErrors();
     // Only one push_constant is allowed, mergeLinkerObjects() will ensure the push_constant
@@ -196,12 +248,14 @@
     MERGE_TRUE(pointMode);
 
     for (int i = 0; i < 3; ++i) {
-        if (!localSizeNotDefault[i] && unit.localSizeNotDefault[i]) {
-            localSize[i] = unit.localSize[i];
-            localSizeNotDefault[i] = true;
+        if (unit.localSizeNotDefault[i]) {
+            if (!localSizeNotDefault[i]) {
+                localSize[i] = unit.localSize[i];
+                localSizeNotDefault[i] = true;
+            }
+            else if (localSize[i] != unit.localSize[i])
+                error(infoSink, "Contradictory local size");
         }
-        else if (localSize[i] != unit.localSize[i])
-            error(infoSink, "Contradictory local size");
 
         if (localSizeSpecId[i] == TQualifier::layoutNotSet)
             localSizeSpecId[i] = unit.localSizeSpecId[i];
@@ -304,12 +358,14 @@
     // Map by global name to unique ID to rationalize the same object having
     // differing IDs in different trees.
     TIdMaps idMaps;
-    int maxId;
-    seedIdMap(idMaps, maxId);
-    remapIds(idMaps, maxId + 1, unit);
+    long long idShift;
+    seedIdMap(idMaps, idShift);
+    remapIds(idMaps, idShift + 1, unit);
 
     mergeBodies(infoSink, globals, unitGlobals);
-    mergeLinkerObjects(infoSink, linkerObjects, unitLinkerObjects);
+    bool mergeExistingOnly = false;
+    mergeGlobalUniformBlocks(infoSink, unit, mergeExistingOnly);
+    mergeLinkerObjects(infoSink, linkerObjects, unitLinkerObjects, unit.getStage());
     ioAccessed.insert(unit.ioAccessed.begin(), unit.ioAccessed.end());
 }
 
@@ -327,14 +383,14 @@
 
 
 // Traverser that seeds an ID map with all built-ins, and tracks the
-// maximum ID used.
+// maximum ID used, currently using (maximum ID + 1) as new symbol id shift seed.
+// Level id will keep same after shifting.
 // (It would be nice to put this in a function, but that causes warnings
 // on having no bodies for the copy-constructor/operator=.)
 class TBuiltInIdTraverser : public TIntermTraverser {
 public:
-    TBuiltInIdTraverser(TIdMaps& idMaps) : idMaps(idMaps), maxId(0) { }
+    TBuiltInIdTraverser(TIdMaps& idMaps) : idMaps(idMaps), idShift(0) { }
     // If it's a built in, add it to the map.
-    // Track the max ID.
     virtual void visitSymbol(TIntermSymbol* symbol)
     {
         const TQualifier& qualifier = symbol->getType().getQualifier();
@@ -342,14 +398,16 @@
             TShaderInterface si = symbol->getType().getShaderInterface();
             idMaps[si][getNameForIdMap(symbol)] = symbol->getId();
         }
-        maxId = std::max(maxId, symbol->getId());
+        idShift = (symbol->getId() & ~TSymbolTable::uniqueIdMask) |
+                std::max(idShift & TSymbolTable::uniqueIdMask,
+                         symbol->getId() & TSymbolTable::uniqueIdMask);
     }
-    int getMaxId() const { return maxId; }
+    long long getIdShift() const { return idShift; }
 protected:
     TBuiltInIdTraverser(TBuiltInIdTraverser&);
     TBuiltInIdTraverser& operator=(TBuiltInIdTraverser&);
     TIdMaps& idMaps;
-    int maxId;
+    long long idShift;
 };
 
 // Traverser that seeds an ID map with non-builtins.
@@ -375,12 +433,12 @@
 };
 
 // Initialize the the ID map with what we know of 'this' AST.
-void TIntermediate::seedIdMap(TIdMaps& idMaps, int& maxId)
+void TIntermediate::seedIdMap(TIdMaps& idMaps, long long& idShift)
 {
     // all built-ins everywhere need to align on IDs and contribute to the max ID
     TBuiltInIdTraverser builtInIdTraverser(idMaps);
     treeRoot->traverse(&builtInIdTraverser);
-    maxId = builtInIdTraverser.getMaxId();
+    idShift = builtInIdTraverser.getIdShift() & TSymbolTable::uniqueIdMask;
 
     // user variables in the linker object list need to align on ids
     TUserIdTraverser userIdTraverser(idMaps);
@@ -392,7 +450,7 @@
 // on having no bodies for the copy-constructor/operator=.)
 class TRemapIdTraverser : public TIntermTraverser {
 public:
-    TRemapIdTraverser(const TIdMaps& idMaps, int idShift) : idMaps(idMaps), idShift(idShift) { }
+    TRemapIdTraverser(const TIdMaps& idMaps, long long idShift) : idMaps(idMaps), idShift(idShift) { }
     // Do the mapping:
     //  - if the same symbol, adopt the 'this' ID
     //  - otherwise, ensure a unique ID by shifting to a new space
@@ -404,7 +462,9 @@
             TShaderInterface si = symbol->getType().getShaderInterface();
             auto it = idMaps[si].find(getNameForIdMap(symbol));
             if (it != idMaps[si].end()) {
-                symbol->changeId(it->second);
+                uint64_t id = (symbol->getId() & ~TSymbolTable::uniqueIdMask) |
+                    (it->second & TSymbolTable::uniqueIdMask);
+                symbol->changeId(id);
                 remapped = true;
             }
         }
@@ -415,10 +475,10 @@
     TRemapIdTraverser(TRemapIdTraverser&);
     TRemapIdTraverser& operator=(TRemapIdTraverser&);
     const TIdMaps& idMaps;
-    int idShift;
+    long long idShift;
 };
 
-void TIntermediate::remapIds(const TIdMaps& idMaps, int idShift, TIntermediate& unit)
+void TIntermediate::remapIds(const TIdMaps& idMaps, long long idShift, TIntermediate& unit)
 {
     // Remap all IDs to either share or be unique, as dictated by the idMap and idShift.
     TRemapIdTraverser idTraverser(idMaps, idShift);
@@ -449,11 +509,193 @@
     globals.insert(globals.end() - 1, unitGlobals.begin(), unitGlobals.end() - 1);
 }
 
+static inline bool isSameInterface(TIntermSymbol* symbol, EShLanguage stage, TIntermSymbol* unitSymbol, EShLanguage unitStage) {
+    return // 1) same stage and same shader interface
+        (stage == unitStage && symbol->getType().getShaderInterface() == unitSymbol->getType().getShaderInterface()) ||
+        // 2) accross stages and both are uniform or buffer
+        (symbol->getQualifier().storage == EvqUniform  && unitSymbol->getQualifier().storage == EvqUniform) ||
+        (symbol->getQualifier().storage == EvqBuffer   && unitSymbol->getQualifier().storage == EvqBuffer) ||
+        // 3) in/out matched across stage boundary
+        (stage < unitStage && symbol->getQualifier().storage == EvqVaryingOut  && unitSymbol->getQualifier().storage == EvqVaryingIn) ||
+        (unitStage < stage && symbol->getQualifier().storage == EvqVaryingIn && unitSymbol->getQualifier().storage == EvqVaryingOut);
+}
+
+//
+// Global Unfiform block stores any default uniforms (i.e. uniforms without a block)
+// If two linked stages declare the same member, they are meant to be the same uniform
+// and need to be in the same block
+// merge the members of different stages to allow them to be linked properly
+// as a single block
+//
+void TIntermediate::mergeGlobalUniformBlocks(TInfoSink& infoSink, TIntermediate& unit, bool mergeExistingOnly)
+{
+    TIntermSequence& linkerObjects = findLinkerObjects()->getSequence();
+    TIntermSequence& unitLinkerObjects = unit.findLinkerObjects()->getSequence();
+
+    // build lists of default blocks from the intermediates
+    TIntermSequence defaultBlocks;
+    TIntermSequence unitDefaultBlocks;
+
+    auto filter = [](TIntermSequence& list, TIntermNode* node) {
+        if (node->getAsSymbolNode()->getQualifier().defaultBlock) {
+            list.push_back(node);
+        }
+    };
+
+    std::for_each(linkerObjects.begin(), linkerObjects.end(),
+        [&defaultBlocks, &filter](TIntermNode* node) {
+            filter(defaultBlocks, node);
+        });
+    std::for_each(unitLinkerObjects.begin(), unitLinkerObjects.end(),
+        [&unitDefaultBlocks, &filter](TIntermNode* node) {
+            filter(unitDefaultBlocks, node);
+    });
+
+    auto itUnitBlock = unitDefaultBlocks.begin();
+    for (; itUnitBlock != unitDefaultBlocks.end(); itUnitBlock++) {
+
+        bool add = !mergeExistingOnly;
+        auto itBlock = defaultBlocks.begin();
+
+        for (; itBlock != defaultBlocks.end(); itBlock++) {
+            TIntermSymbol* block = (*itBlock)->getAsSymbolNode();
+            TIntermSymbol* unitBlock = (*itUnitBlock)->getAsSymbolNode();
+
+            assert(block && unitBlock);
+
+            // if the two default blocks match, then merge their definitions
+            if (block->getType().getTypeName() == unitBlock->getType().getTypeName() &&
+                block->getQualifier().storage == unitBlock->getQualifier().storage) {
+                add = false;
+                mergeBlockDefinitions(infoSink, block, unitBlock, &unit);
+            }
+        }
+        if (add) {
+            // push back on original list; won't change the size of the list we're iterating over
+            linkerObjects.push_back(*itUnitBlock);
+        }
+    }
+}
+
+void TIntermediate::mergeBlockDefinitions(TInfoSink& infoSink, TIntermSymbol* block, TIntermSymbol* unitBlock, TIntermediate* unit) {
+    if (block->getType() == unitBlock->getType()) {
+        return;
+    }
+
+    if (block->getType().getTypeName() != unitBlock->getType().getTypeName() ||
+        block->getType().getBasicType() != unitBlock->getType().getBasicType() ||
+        block->getQualifier().storage != unitBlock->getQualifier().storage ||
+        block->getQualifier().layoutSet != unitBlock->getQualifier().layoutSet) {
+        // different block names likely means different blocks
+        return;
+    }
+
+    // merge the struct
+    // order of declarations doesn't matter and they matched based on member name
+    TTypeList* memberList = block->getType().getWritableStruct();
+    TTypeList* unitMemberList = unitBlock->getType().getWritableStruct();
+
+    // keep track of which members have changed position
+    // so we don't have to search the array again
+    std::map<unsigned int, unsigned int> memberIndexUpdates;
+
+    size_t memberListStartSize = memberList->size();
+    for (unsigned int i = 0; i < unitMemberList->size(); ++i) {
+        bool merge = true;
+        for (unsigned int j = 0; j < memberListStartSize; ++j) {
+            if ((*memberList)[j].type->getFieldName() == (*unitMemberList)[i].type->getFieldName()) {
+                merge = false;
+                const TType* memberType = (*memberList)[j].type;
+                const TType* unitMemberType = (*unitMemberList)[i].type;
+
+                // compare types
+                // don't need as many checks as when merging symbols, since
+                // initializers and most qualifiers are stripped when the member is moved into the block
+                if ((*memberType) != (*unitMemberType)) {
+                    error(infoSink, "Types must match:");
+                    infoSink.info << "    " << memberType->getFieldName() << ": ";
+                    infoSink.info << "\"" << memberType->getCompleteString() << "\" versus ";
+                    infoSink.info << "\"" << unitMemberType->getCompleteString() << "\"\n";
+                }
+
+                memberIndexUpdates[i] = j;
+            }
+        }
+        if (merge) {
+            memberList->push_back((*unitMemberList)[i]);
+            memberIndexUpdates[i] = (unsigned int)memberList->size() - 1;
+        }
+    }
+
+    TType unitType;
+    unitType.shallowCopy(unitBlock->getType());
+
+    // update symbol node in unit tree,
+    // and other nodes that may reference it
+    class TMergeBlockTraverser : public TIntermTraverser {
+    public:
+        TMergeBlockTraverser(const glslang::TType &type, const glslang::TType& unitType,
+                             glslang::TIntermediate& unit,
+                             const std::map<unsigned int, unsigned int>& memberIdxUpdates) :
+            newType(type), unitType(unitType), unit(unit), memberIndexUpdates(memberIdxUpdates)
+        { }
+        virtual ~TMergeBlockTraverser() { }
+
+        const glslang::TType& newType;          // type with modifications
+        const glslang::TType& unitType;         // copy of original type
+        glslang::TIntermediate& unit;           // intermediate that is being updated
+        const std::map<unsigned int, unsigned int>& memberIndexUpdates;
+
+        virtual void visitSymbol(TIntermSymbol* symbol)
+        {
+            glslang::TType& symType = symbol->getWritableType();
+
+            if (symType == unitType) {
+                // each symbol node has a local copy of the unitType
+                //  if merging involves changing properties that aren't shared objects
+                //  they should be updated in all instances
+
+                // e.g. the struct list is a ptr to an object, so it can be updated
+                // once, outside the traverser
+                //*symType.getWritableStruct() = *newType.getStruct();
+            }
+
+        }
+
+        virtual bool visitBinary(TVisit, glslang::TIntermBinary* node)
+        {
+            if (node->getOp() == EOpIndexDirectStruct && node->getLeft()->getType() == unitType) {
+                // this is a dereference to a member of the block since the
+                // member list changed, need to update this to point to the
+                // right index
+                assert(node->getRight()->getAsConstantUnion());
+
+                glslang::TIntermConstantUnion* constNode = node->getRight()->getAsConstantUnion();
+                unsigned int memberIdx = constNode->getConstArray()[0].getUConst();
+                unsigned int newIdx = memberIndexUpdates.at(memberIdx);
+                TIntermTyped* newConstNode = unit.addConstantUnion(newIdx, node->getRight()->getLoc());
+
+                node->setRight(newConstNode);
+                delete constNode;
+
+                return true;
+            }
+            return true;
+        }
+    } finalLinkTraverser(block->getType(), unitType, *unit, memberIndexUpdates);
+
+    // update the tree to use the new type
+    unit->getTreeRoot()->traverse(&finalLinkTraverser);
+
+    // update the member list
+    (*unitMemberList) = (*memberList);
+}
+
 //
 // Merge the linker objects from unitLinkerObjects into linkerObjects.
 // Duplication is expected and filtered out, but contradictions are an error.
 //
-void TIntermediate::mergeLinkerObjects(TInfoSink& infoSink, TIntermSequence& linkerObjects, const TIntermSequence& unitLinkerObjects)
+void TIntermediate::mergeLinkerObjects(TInfoSink& infoSink, TIntermSequence& linkerObjects, const TIntermSequence& unitLinkerObjects, EShLanguage unitStage)
 {
     // Error check and merge the linker objects (duplicates should not be created)
     std::size_t initialNumLinkerObjects = linkerObjects.size();
@@ -468,7 +710,7 @@
             // If they are both blocks in the same shader interface,
             // match by the block-name, not the identifier name.
             if (symbol->getType().getBasicType() == EbtBlock && unitSymbol->getType().getBasicType() == EbtBlock) {
-                if (symbol->getType().getShaderInterface() == unitSymbol->getType().getShaderInterface()) {
+                if (isSameInterface(symbol, getStage(), unitSymbol, unitStage)) {
                     isSameSymbol = symbol->getType().getTypeName() == unitSymbol->getType().getTypeName();
                 }
             }
@@ -488,18 +730,54 @@
                 if (! symbol->getQualifier().hasBinding() && unitSymbol->getQualifier().hasBinding())
                     symbol->getQualifier().layoutBinding = unitSymbol->getQualifier().layoutBinding;
 
+                // Similarly for location
+                if (!symbol->getQualifier().hasLocation() && unitSymbol->getQualifier().hasLocation()) {
+                    symbol->getQualifier().layoutLocation = unitSymbol->getQualifier().layoutLocation;
+                }
+
                 // Update implicit array sizes
                 mergeImplicitArraySizes(symbol->getWritableType(), unitSymbol->getType());
 
                 // Check for consistent types/qualification/initializers etc.
-                mergeErrorCheck(infoSink, *symbol, *unitSymbol, false);
+                mergeErrorCheck(infoSink, *symbol, *unitSymbol, unitStage);
             }
             // If different symbols, verify they arn't push_constant since there can only be one per stage
-            else if (symbol->getQualifier().isPushConstant() && unitSymbol->getQualifier().isPushConstant())
+            else if (symbol->getQualifier().isPushConstant() && unitSymbol->getQualifier().isPushConstant() && getStage() == unitStage)
                 error(infoSink, "Only one push_constant block is allowed per stage");
         }
-        if (merge)
+        if (merge) {
             linkerObjects.push_back(unitLinkerObjects[unitLinkObj]);
+
+            // for anonymous blocks, check that their members don't conflict with other names
+            if (unitLinkerObjects[unitLinkObj]->getAsSymbolNode()->getBasicType() == EbtBlock &&
+                IsAnonymous(unitLinkerObjects[unitLinkObj]->getAsSymbolNode()->getName())) {
+                for (std::size_t linkObj = 0; linkObj < initialNumLinkerObjects; ++linkObj) {
+                    TIntermSymbol* symbol = linkerObjects[linkObj]->getAsSymbolNode();
+                    TIntermSymbol* unitSymbol = unitLinkerObjects[unitLinkObj]->getAsSymbolNode();
+                    assert(symbol && unitSymbol);
+
+                    auto checkName = [this, unitSymbol, &infoSink](const TString& name) {
+                        for (unsigned int i = 0; i < unitSymbol->getType().getStruct()->size(); ++i) {
+                            if (name == (*unitSymbol->getType().getStruct())[i].type->getFieldName()) {
+                                error(infoSink, "Anonymous member name used for global variable or other anonymous member: ");
+                                infoSink.info << (*unitSymbol->getType().getStruct())[i].type->getCompleteString() << "\n";
+                            }
+                        }
+                    };
+
+                    if (isSameInterface(symbol, getStage(), unitSymbol, unitStage)) {
+                        checkName(symbol->getName());
+
+                        // check members of other anonymous blocks
+                        if (symbol->getBasicType() == EbtBlock && IsAnonymous(symbol->getName())) {
+                            for (unsigned int i = 0; i < symbol->getType().getStruct()->size(); ++i) {
+                                checkName((*symbol->getType().getStruct())[i].type->getFieldName());
+                            }
+                        }
+                    }
+                }
+            }
+        }
     }
 }
 
@@ -531,26 +809,75 @@
 //
 // This function only does one of intra- or cross-stage matching per call.
 //
-void TIntermediate::mergeErrorCheck(TInfoSink& infoSink, const TIntermSymbol& symbol, const TIntermSymbol& unitSymbol, bool crossStage)
+void TIntermediate::mergeErrorCheck(TInfoSink& infoSink, const TIntermSymbol& symbol, const TIntermSymbol& unitSymbol, EShLanguage unitStage)
 {
-#ifndef GLSLANG_WEB
+#if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE)
+    bool crossStage = getStage() != unitStage;
     bool writeTypeComparison = false;
 
     // Types have to match
-    if (symbol.getType() != unitSymbol.getType()) {
+    {
         // but, we make an exception if one is an implicit array and the other is sized
-        if (! (symbol.getType().isArray() && unitSymbol.getType().isArray() &&
-                symbol.getType().sameElementType(unitSymbol.getType()) &&
-                (symbol.getType().isUnsizedArray() || unitSymbol.getType().isUnsizedArray()))) {
-            error(infoSink, "Types must match:");
+        // or if the array sizes differ because of the extra array dimension on some in/out boundaries
+        bool arraysMatch = false;
+        if (isIoResizeArray(symbol.getType(), getStage()) || isIoResizeArray(unitSymbol.getType(), unitStage)) {
+            // if the arrays have an extra dimension because of the stage.
+            // compare dimensions while ignoring the outer dimension
+            unsigned int firstDim = isIoResizeArray(symbol.getType(), getStage()) ? 1 : 0;
+            unsigned int numDim = symbol.getArraySizes()
+                ? symbol.getArraySizes()->getNumDims() : 0;
+            unsigned int unitFirstDim = isIoResizeArray(unitSymbol.getType(), unitStage) ? 1 : 0;
+            unsigned int unitNumDim = unitSymbol.getArraySizes()
+                ? unitSymbol.getArraySizes()->getNumDims() : 0;
+            arraysMatch = (numDim - firstDim) == (unitNumDim - unitFirstDim);
+            // check that array sizes match as well
+            for (unsigned int i = 0; i < (numDim - firstDim) && arraysMatch; i++) {
+                if (symbol.getArraySizes()->getDimSize(firstDim + i) !=
+                    unitSymbol.getArraySizes()->getDimSize(unitFirstDim + i)) {
+                    arraysMatch = false;
+                    break;
+                }
+            }
+        }
+        else {
+            arraysMatch = symbol.getType().sameArrayness(unitSymbol.getType()) ||
+                (symbol.getType().isArray() && unitSymbol.getType().isArray() &&
+                (symbol.getType().isUnsizedArray() || unitSymbol.getType().isUnsizedArray()));
+        }
+
+        if (!symbol.getType().sameElementType(unitSymbol.getType()) ||
+            !symbol.getType().sameTypeParameters(unitSymbol.getType()) ||
+            !arraysMatch ) {
             writeTypeComparison = true;
+            error(infoSink, "Types must match:");
         }
     }
 
-    // Qualifiers have to (almost) match
+    // Interface block  member-wise layout qualifiers have to match
+    if (symbol.getType().getBasicType() == EbtBlock && unitSymbol.getType().getBasicType() == EbtBlock &&
+        symbol.getType().getStruct() && unitSymbol.getType().getStruct() &&
+        symbol.getType().sameStructType(unitSymbol.getType())) {
+        for (unsigned int i = 0; i < symbol.getType().getStruct()->size(); ++i) {
+            const TQualifier& qualifier = (*symbol.getType().getStruct())[i].type->getQualifier();
+            const TQualifier& unitQualifier = (*unitSymbol.getType().getStruct())[i].type->getQualifier();
+            if (qualifier.layoutMatrix     != unitQualifier.layoutMatrix ||
+                qualifier.layoutOffset     != unitQualifier.layoutOffset ||
+                qualifier.layoutAlign      != unitQualifier.layoutAlign ||
+                qualifier.layoutLocation   != unitQualifier.layoutLocation ||
+                qualifier.layoutComponent  != unitQualifier.layoutComponent) {
+                error(infoSink, "Interface block member layout qualifiers must match:");
+                writeTypeComparison = true;
+            }
+        }
+    }
 
+    bool isInOut = crossStage &&
+                   ((symbol.getQualifier().storage == EvqVaryingIn && unitSymbol.getQualifier().storage == EvqVaryingOut) ||
+                   (symbol.getQualifier().storage == EvqVaryingOut && unitSymbol.getQualifier().storage == EvqVaryingIn));
+
+    // Qualifiers have to (almost) match
     // Storage...
-    if (symbol.getQualifier().storage != unitSymbol.getQualifier().storage) {
+    if (!isInOut && symbol.getQualifier().storage != unitSymbol.getQualifier().storage) {
         error(infoSink, "Storage qualifiers must match:");
         writeTypeComparison = true;
     }
@@ -572,7 +899,7 @@
     }
 
     // Precision...
-    if (symbol.getQualifier().precision != unitSymbol.getQualifier().precision) {
+    if (!isInOut && symbol.getQualifier().precision != unitSymbol.getQualifier().precision) {
         error(infoSink, "Precision qualifiers must match:");
         writeTypeComparison = true;
     }
@@ -590,12 +917,16 @@
     }
 
     // Auxiliary and interpolation...
-    if (symbol.getQualifier().centroid  != unitSymbol.getQualifier().centroid ||
+    // "interpolation qualification (e.g., flat) and auxiliary qualification (e.g. centroid) may differ.  
+    //  These mismatches are allowed between any pair of stages ...
+    //  those provided in the fragment shader supersede those provided in previous stages."
+    if (!crossStage &&
+        (symbol.getQualifier().centroid  != unitSymbol.getQualifier().centroid ||
         symbol.getQualifier().smooth    != unitSymbol.getQualifier().smooth ||
         symbol.getQualifier().flat      != unitSymbol.getQualifier().flat ||
         symbol.getQualifier().isSample()!= unitSymbol.getQualifier().isSample() ||
         symbol.getQualifier().isPatch() != unitSymbol.getQualifier().isPatch() ||
-        symbol.getQualifier().isNonPerspective() != unitSymbol.getQualifier().isNonPerspective()) {
+        symbol.getQualifier().isNonPerspective() != unitSymbol.getQualifier().isNonPerspective())) {
         error(infoSink, "Interpolation and auxiliary storage qualifiers must match:");
         writeTypeComparison = true;
     }
@@ -651,6 +982,25 @@
 #endif
 }
 
+void TIntermediate::sharedBlockCheck(TInfoSink& infoSink)
+{
+    bool has_shared_block = false;
+    bool has_shared_non_block = false;
+    TIntermSequence& linkObjects = findLinkerObjects()->getSequence();
+    for (size_t i = 0; i < linkObjects.size(); ++i) {
+        const TType& type = linkObjects[i]->getAsTyped()->getType();
+        const TQualifier& qualifier = type.getQualifier();
+        if (qualifier.storage == glslang::EvqShared) {
+            if (type.getBasicType() == glslang::EbtBlock)
+                has_shared_block = true;
+            else
+                has_shared_non_block = true;
+        }
+    }
+    if (has_shared_block && has_shared_non_block)
+        error(infoSink, "cannot mix use of shared variables inside and outside blocks");
+}
+
 //
 // Do final link-time error checking of a complete (merged) intermediate representation.
 // (Much error checking was done during merging).
@@ -736,10 +1086,10 @@
 
         // "The resulting stride (implicit or explicit), when divided by 4, must be less than or equal to the
         // implementation-dependent constant gl_MaxTransformFeedbackInterleavedComponents."
-        if (xfbBuffers[b].stride > (unsigned int)(4 * resources.maxTransformFeedbackInterleavedComponents)) {
+        if (xfbBuffers[b].stride > (unsigned int)(4 * resources->maxTransformFeedbackInterleavedComponents)) {
             error(infoSink, "xfb_stride is too large:");
             infoSink.info.prefix(EPrefixError);
-            infoSink.info << "    xfb_buffer " << (unsigned int)b << ", components (1/4 stride) needed are " << xfbBuffers[b].stride/4 << ", gl_MaxTransformFeedbackInterleavedComponents is " << resources.maxTransformFeedbackInterleavedComponents << "\n";
+            infoSink.info << "    xfb_buffer " << (unsigned int)b << ", components (1/4 stride) needed are " << xfbBuffers[b].stride/4 << ", gl_MaxTransformFeedbackInterleavedComponents is " << resources->maxTransformFeedbackInterleavedComponents << "\n";
         }
     }
 
@@ -776,6 +1126,7 @@
             error(infoSink, "post_depth_coverage requires early_fragment_tests");
         break;
     case EShLangCompute:
+        sharedBlockCheck(infoSink);
         break;
     case EShLangRayGen:
     case EShLangIntersect:
@@ -808,6 +1159,7 @@
     case EShLangTaskNV:
         if (numTaskNVBlocks > 1)
             error(infoSink, "Only one taskNV interface block is allowed per shader");
+        sharedBlockCheck(infoSink);
         break;
     default:
         error(infoSink, "Unknown Stage.");
@@ -1055,8 +1407,8 @@
     return found;
 }
 
-// Accumulate locations used for inputs, outputs, and uniforms, and check for collisions
-// as the accumulation is done.
+// Accumulate locations used for inputs, outputs, and uniforms, payload and callable data
+// and check for collisions as the accumulation is done.
 //
 // Returns < 0 if no collision, >= 0 if collision and the value returned is a colliding value.
 //
@@ -1068,6 +1420,7 @@
     typeCollision = false;
 
     int set;
+    int setRT;
     if (qualifier.isPipeInput())
         set = 0;
     else if (qualifier.isPipeOutput())
@@ -1076,11 +1429,17 @@
         set = 2;
     else if (qualifier.storage == EvqBuffer)
         set = 3;
+    else if (qualifier.isAnyPayload())
+        setRT = 0;
+    else if (qualifier.isAnyCallable())
+        setRT = 1;
     else
         return -1;
 
     int size;
-    if (qualifier.isUniformOrBuffer() || qualifier.isTaskMemory()) {
+    if (qualifier.isAnyPayload() || qualifier.isAnyCallable()) {
+        size = 1;
+    } else if (qualifier.isUniformOrBuffer() || qualifier.isTaskMemory()) {
         if (type.isSizedArray())
             size = type.getCumulativeArraySize();
         else
@@ -1108,10 +1467,17 @@
     // (A vertex shader input will show using only one location, even for a dvec3/4.)
     //
     // So, for the case of dvec3, we need two independent ioRanges.
-
+    //
+    // For raytracing IO (payloads and callabledata) each declaration occupies a single
+    // slot irrespective of type.
     int collision = -1; // no collision
 #ifndef GLSLANG_WEB
-    if (size == 2 && type.getBasicType() == EbtDouble && type.getVectorSize() == 3 &&
+    if (qualifier.isAnyPayload() || qualifier.isAnyCallable()) {
+        TRange range(qualifier.layoutLocation, qualifier.layoutLocation);
+        collision = checkLocationRT(setRT, qualifier.layoutLocation);
+        if (collision < 0)
+            usedIoRT[setRT].push_back(range);
+    } else if (size == 2 && type.getBasicType() == EbtDouble && type.getVectorSize() == 3 &&
         (qualifier.isPipeInput() || qualifier.isPipeOutput())) {
         // Dealing with dvec3 in/out split across two locations.
         // Need two io-ranges.
@@ -1187,6 +1553,16 @@
     return -1; // no collision
 }
 
+int TIntermediate::checkLocationRT(int set, int location) {
+    TRange range(location, location);
+    for (size_t r = 0; r < usedIoRT[set].size(); ++r) {
+        if (range.overlap(usedIoRT[set][r])) {
+            return range.start;
+        }
+    }
+    return -1; // no collision
+}
+
 // Accumulate bindings and offsets, and check for collisions
 // as the accumulation is done.
 //
@@ -1778,4 +2154,17 @@
     return size;
 }
 
+#ifndef GLSLANG_WEB
+bool TIntermediate::isIoResizeArray(const TType& type, EShLanguage language) {
+    return type.isArray() &&
+            ((language == EShLangGeometry    && type.getQualifier().storage == EvqVaryingIn) ||
+            (language == EShLangTessControl && type.getQualifier().storage == EvqVaryingOut &&
+                ! type.getQualifier().patch) ||
+            (language == EShLangFragment && type.getQualifier().storage == EvqVaryingIn &&
+                type.getQualifier().pervertexNV) ||
+            (language == EShLangMeshNV && type.getQualifier().storage == EvqVaryingOut &&
+                !type.getQualifier().perTaskNV));
+}
+#endif // not GLSLANG_WEB
+
 } // end namespace glslang
diff --git a/glslang/MachineIndependent/localintermediate.h b/glslang/MachineIndependent/localintermediate.h
index a3ff886..c9a1d81 100644
--- a/glslang/MachineIndependent/localintermediate.h
+++ b/glslang/MachineIndependent/localintermediate.h
@@ -227,12 +227,54 @@
 
 class TIdMaps {
 public:
-    TMap<TString, int>& operator[](int i) { return maps[i]; }
-    const TMap<TString, int>& operator[](int i) const { return maps[i]; }
+    TMap<TString, long long>& operator[](long long i) { return maps[i]; }
+    const TMap<TString, long long>& operator[](long long i) const { return maps[i]; }
 private:
-    TMap<TString, int> maps[EsiCount];
+    TMap<TString, long long> maps[EsiCount];
 };
 
+class TNumericFeatures {
+public:
+    TNumericFeatures() : features(0) { }
+    TNumericFeatures(const TNumericFeatures&) = delete;
+    TNumericFeatures& operator=(const TNumericFeatures&) = delete;
+    typedef enum : unsigned int {
+        shader_explicit_arithmetic_types          = 1 << 0,
+        shader_explicit_arithmetic_types_int8     = 1 << 1,
+        shader_explicit_arithmetic_types_int16    = 1 << 2,
+        shader_explicit_arithmetic_types_int32    = 1 << 3,
+        shader_explicit_arithmetic_types_int64    = 1 << 4,
+        shader_explicit_arithmetic_types_float16  = 1 << 5,
+        shader_explicit_arithmetic_types_float32  = 1 << 6,
+        shader_explicit_arithmetic_types_float64  = 1 << 7,
+        shader_implicit_conversions               = 1 << 8,
+        gpu_shader_fp64                           = 1 << 9,
+        gpu_shader_int16                          = 1 << 10,
+        gpu_shader_half_float                     = 1 << 11,
+    } feature;
+    void insert(feature f) { features |= f; }
+    void erase(feature f) { features &= ~f; }
+    bool contains(feature f) const { return (features & f) != 0; }
+private:
+    unsigned int features;
+};
+
+// MustBeAssigned wraps a T, asserting that it has been assigned with 
+// operator =() before attempting to read with operator T() or operator ->().
+// Used to catch cases where fields are read before they have been assigned.
+template<typename T>
+class MustBeAssigned
+{
+public:
+    MustBeAssigned() = default;
+    MustBeAssigned(const T& v) : value(v) {}
+    operator const T&() const { assert(isSet); return value; }
+    const T* operator ->() const { assert(isSet); return &value; }
+    MustBeAssigned& operator = (const T& v) { value = v; isSet = true; return *this; } 
+private:
+    T value;
+    bool isSet = false;
+};
 
 //
 // Set of helper functions to help parse and build the tree.
@@ -241,12 +283,22 @@
 public:
     explicit TIntermediate(EShLanguage l, int v = 0, EProfile p = ENoProfile) :
         language(l),
-        profile(p), version(v), treeRoot(0),
+#ifndef GLSLANG_ANGLE
+        profile(p), version(v),
+#endif
+        treeRoot(0),
+        resources(TBuiltInResource{}),
         numEntryPoints(0), numErrors(0), numPushConstants(0), recursive(false),
         invertY(false),
         useStorageBuffer(false),
         nanMinMaxClamp(false),
-        depthReplacing(false)
+        depthReplacing(false),
+        uniqueId(0),
+        globalUniformBlockName(""),
+        atomicCounterBlockName(""),
+        globalUniformBlockSet(TQualifier::layoutSetEnd),
+        globalUniformBlockBinding(TQualifier::layoutBindingEnd),
+        atomicCounterBlockSet(TQualifier::layoutSetEnd)
 #ifndef GLSLANG_WEB
         ,
         implicitThisName("@this"), implicitCounterName("@count"),
@@ -295,9 +347,20 @@
 #endif
     }
 
-    void setVersion(int v) { version = v; }
+    void setVersion(int v)
+    {
+#ifndef GLSLANG_ANGLE
+        version = v;
+#endif
+    }
+    void setProfile(EProfile p)
+    {
+#ifndef GLSLANG_ANGLE
+        profile = p;
+#endif
+    }
+
     int getVersion() const { return version; }
-    void setProfile(EProfile p) { profile = p; }
     EProfile getProfile() const { return profile; }
     void setSpv(const SpvVersion& s)
     {
@@ -357,16 +420,12 @@
     }
     const SpvVersion& getSpv() const { return spvVersion; }
     EShLanguage getStage() const { return language; }
-    void updateRequestedExtension(const char* extension, TExtensionBehavior behavior) { 
-        if(requestedExtensions.find(extension) != requestedExtensions.end()) {
-            requestedExtensions[extension] = behavior; 
-        } else {
-            requestedExtensions.insert(std::make_pair(extension, behavior)); 
-        }
+    void addRequestedExtension(const char* extension) { requestedExtensions.insert(extension); }
+    const std::set<std::string>& getRequestedExtensions() const { return requestedExtensions; }
+    bool isRayTracingStage() const {
+        return language >= EShLangRayGen && language <= EShLangCallableNV;
     }
 
-    const std::map<std::string, TExtensionBehavior>& getRequestedExtensions() const { return requestedExtensions; }
-
     void setTreeRoot(TIntermNode* r) { treeRoot = r; }
     TIntermNode* getTreeRoot() const { return treeRoot; }
     void incrementEntryPointCount() { ++numEntryPoints; }
@@ -374,6 +433,7 @@
     int getNumErrors() const { return numErrors; }
     void addPushConstantCount() { ++numPushConstants; }
     void setLimits(const TBuiltInResource& r) { resources = r; }
+    const TBuiltInResource& getLimits() const { return resources; }
 
     bool postProcess(TIntermNode*, EShLanguage);
     void removeTree();
@@ -411,15 +471,15 @@
     TIntermSymbol* addSymbol(const TType&, const TSourceLoc&);
     TIntermSymbol* addSymbol(const TIntermSymbol&);
     TIntermTyped* addConversion(TOperator, const TType&, TIntermTyped*);
-    std::tuple<TIntermTyped*, TIntermTyped*> addConversion(TOperator op, TIntermTyped* node0, TIntermTyped* node1);
+    std::tuple<TIntermTyped*, TIntermTyped*> addPairConversion(TOperator op, TIntermTyped* node0, TIntermTyped* node1);
     TIntermTyped* addUniShapeConversion(TOperator, const TType&, TIntermTyped*);
     TIntermTyped* addConversion(TBasicType convertTo, TIntermTyped* node) const;
     void addBiShapeConversion(TOperator, TIntermTyped*& lhsNode, TIntermTyped*& rhsNode);
     TIntermTyped* addShapeConversion(const TType&, TIntermTyped*);
-    TIntermTyped* addBinaryMath(TOperator, TIntermTyped* left, TIntermTyped* right, TSourceLoc);
-    TIntermTyped* addAssign(TOperator op, TIntermTyped* left, TIntermTyped* right, TSourceLoc);
-    TIntermTyped* addIndex(TOperator op, TIntermTyped* base, TIntermTyped* index, TSourceLoc);
-    TIntermTyped* addUnaryMath(TOperator, TIntermTyped* child, TSourceLoc);
+    TIntermTyped* addBinaryMath(TOperator, TIntermTyped* left, TIntermTyped* right, const TSourceLoc&);
+    TIntermTyped* addAssign(TOperator op, TIntermTyped* left, TIntermTyped* right, const TSourceLoc&);
+    TIntermTyped* addIndex(TOperator op, TIntermTyped* base, TIntermTyped* index, const TSourceLoc&);
+    TIntermTyped* addUnaryMath(TOperator, TIntermTyped* child, const TSourceLoc&);
     TIntermTyped* addBuiltInFunctionCall(const TSourceLoc& line, TOperator, bool unary, TIntermNode*, const TType& returnType);
     bool canImplicitlyPromote(TBasicType from, TBasicType to, TOperator op = EOpNull) const;
     bool isIntegralPromotion(TBasicType from, TBasicType to) const;
@@ -433,7 +493,7 @@
     TIntermAggregate* makeAggregate(TIntermNode* node);
     TIntermAggregate* makeAggregate(TIntermNode* node, const TSourceLoc&);
     TIntermAggregate* makeAggregate(const TSourceLoc&);
-    TIntermTyped* setAggregateOperator(TIntermNode*, TOperator, const TType& type, TSourceLoc);
+    TIntermTyped* setAggregateOperator(TIntermNode*, TOperator, const TType& type, const TSourceLoc&);
     bool areAllChildConst(TIntermAggregate* aggrNode);
     TIntermSelection* addSelection(TIntermTyped* cond, TIntermNodePair code, const TSourceLoc&);
     TIntermTyped* addSelection(TIntermTyped* cond, TIntermTyped* trueBlock, TIntermTyped* falseBlock, const TSourceLoc&);
@@ -462,10 +522,11 @@
 
     // Low level functions to add nodes (no conversions or other higher level transformations)
     // If a type is provided, the node's type will be set to it.
-    TIntermBinary* addBinaryNode(TOperator op, TIntermTyped* left, TIntermTyped* right, TSourceLoc) const;
-    TIntermBinary* addBinaryNode(TOperator op, TIntermTyped* left, TIntermTyped* right, TSourceLoc, const TType&) const;
-    TIntermUnary* addUnaryNode(TOperator op, TIntermTyped* child, TSourceLoc) const;
-    TIntermUnary* addUnaryNode(TOperator op, TIntermTyped* child, TSourceLoc, const TType&) const;
+    TIntermBinary* addBinaryNode(TOperator op, TIntermTyped* left, TIntermTyped* right, const TSourceLoc&) const;
+    TIntermBinary* addBinaryNode(TOperator op, TIntermTyped* left, TIntermTyped* right, const TSourceLoc&,
+        const TType&) const;
+    TIntermUnary* addUnaryNode(TOperator op, TIntermTyped* child, const TSourceLoc&) const;
+    TIntermUnary* addUnaryNode(TOperator op, TIntermTyped* child, const TSourceLoc&, const TType&) const;
 
     // Constant folding (in Constant.cpp)
     TIntermTyped* fold(TIntermAggregate* aggrNode);
@@ -479,12 +540,22 @@
     // Linkage related
     void addSymbolLinkageNodes(TIntermAggregate*& linkage, EShLanguage, TSymbolTable&);
     void addSymbolLinkageNode(TIntermAggregate*& linkage, const TSymbol&);
+    TIntermAggregate* findLinkerObjects() const;
 
-    void setUseStorageBuffer()
-    {
-        useStorageBuffer = true;
-        processes.addProcess("use-storage-buffer");
-    }
+    void setGlobalUniformBlockName(const char* name) { globalUniformBlockName = std::string(name); }
+    const char* getGlobalUniformBlockName() const { return globalUniformBlockName.c_str(); }
+    void setGlobalUniformSet(unsigned int set) { globalUniformBlockSet = set; }
+    unsigned int getGlobalUniformSet() const { return globalUniformBlockSet; }
+    void setGlobalUniformBinding(unsigned int binding) { globalUniformBlockBinding = binding; }
+    unsigned int getGlobalUniformBinding() const { return globalUniformBlockBinding; }
+
+    void setAtomicCounterBlockName(const char* name) { atomicCounterBlockName = std::string(name); }
+    const char* getAtomicCounterBlockName() const { return atomicCounterBlockName.c_str(); }
+    void setAtomicCounterBlockSet(unsigned int set) { atomicCounterBlockSet = set; }
+    unsigned int getAtomicCounterBlockSet() const { return atomicCounterBlockSet; }
+
+
+    void setUseStorageBuffer() { useStorageBuffer = true; }
     bool usingStorageBuffer() const { return useStorageBuffer; }
     void setDepthReplacing() { depthReplacing = true; }
     bool isDepthReplacing() const { return depthReplacing; }
@@ -497,6 +568,11 @@
         return true;
     }
     unsigned int getLocalSize(int dim) const { return localSize[dim]; }
+    bool isLocalSizeSet() const
+    {
+        // Return true if any component has been set (i.e. any component is not default).
+        return localSizeNotDefault[0] || localSizeNotDefault[1] || localSizeNotDefault[2];
+    }
     bool setLocalSizeSpecId(int dim, int id)
     {
         if (localSizeSpecId[dim] != TQualifier::layoutNotSet)
@@ -505,6 +581,13 @@
         return true;
     }
     int getLocalSizeSpecId(int dim) const { return localSizeSpecId[dim]; }
+    bool isLocalSizeSpecialized() const
+    {
+        // Return true if any component has been specialized.
+        return localSizeSpecId[0] != TQualifier::layoutNotSet ||
+               localSizeSpecId[1] != TQualifier::layoutNotSet ||
+               localSizeSpecId[2] != TQualifier::layoutNotSet;
+    }
 #ifdef GLSLANG_WEB
     void output(TInfoSink&, bool tree) { }
 
@@ -783,6 +866,20 @@
     bool getBinaryDoubleOutput() { return binaryDoubleOutput; }
 #endif // GLSLANG_WEB
 
+    void addBlockStorageOverride(const char* nameStr, TBlockStorageClass backing)
+    {
+        std::string name(nameStr);
+        blockBackingOverrides[name] = backing;
+    }
+    TBlockStorageClass getBlockStorageOverride(const char* nameStr) const
+    {
+        std::string name = nameStr;
+        auto pos = blockBackingOverrides.find(name);
+        if (pos == blockBackingOverrides.end())
+            return EbsNone;
+        else
+            return pos->second;
+    }
 #ifdef ENABLE_HLSL
     void setHlslFunctionality1() { hlslFunctionality1 = true; }
     bool getHlslFunctionality1() const { return hlslFunctionality1; }
@@ -806,10 +903,22 @@
     bool usingHlslIoMapping() { return false; }
 #endif
 
+    bool usingScalarBlockLayout() const {
+        for (auto extIt = requestedExtensions.begin(); extIt != requestedExtensions.end(); ++extIt) {
+            if (*extIt == E_GL_EXT_scalar_block_layout)
+                return true;
+        }
+        return false;
+    }
+
     void addToCallGraph(TInfoSink&, const TString& caller, const TString& callee);
     void merge(TInfoSink&, TIntermediate&);
     void finalCheck(TInfoSink&, bool keepUncalled);
 
+    void mergeGlobalUniformBlocks(TInfoSink& infoSink, TIntermediate& unit, bool mergeExistingOnly);
+    void mergeUniformObjects(TInfoSink& infoSink, TIntermediate& unit);
+    void checkStageIO(TInfoSink&, TIntermediate&);
+
     bool buildConvertOp(TBasicType dst, TBasicType src, TOperator& convertOp) const;
     TIntermTyped* createConversion(TBasicType convertTo, TIntermTyped* node) const;
 
@@ -818,6 +927,7 @@
 
     int addUsedLocation(const TQualifier&, const TType&, bool& typeCollision);
     int checkLocationRange(int set, const TIoRange& range, const TType&, bool& typeCollision);
+    int checkLocationRT(int set, int location);
     int addUsedOffsets(int binding, int offset, int numOffsets);
     bool addUsedConstantId(int id);
     static int computeTypeLocationSize(const TType&, EShLanguage);
@@ -832,6 +942,8 @@
     static int getOffset(const TType& type, int index);
     static int getBlockSize(const TType& blockType);
     static int computeBufferReferenceTypeSize(const TType&);
+    static bool isIoResizeArray(const TType& type, EShLanguage language);
+
     bool promote(TIntermOperator*);
     void setNanMinMaxClamp(bool setting) { nanMinMaxClamp = setting; }
     bool getNanMinMaxClamp() const { return nanMinMaxClamp; }
@@ -850,47 +962,53 @@
     void addProcess(const std::string& process) { processes.addProcess(process); }
     void addProcessArgument(const std::string& arg) { processes.addArgument(arg); }
     const std::vector<std::string>& getProcesses() const { return processes.getProcesses(); }
+    unsigned long long getUniqueId() const { return uniqueId; }
+    void setUniqueId(unsigned long long id) { uniqueId = id; }
 
     // Certain explicit conversions are allowed conditionally
 #ifdef GLSLANG_WEB
     bool getArithemeticInt8Enabled() const { return false; }
     bool getArithemeticInt16Enabled() const { return false; }
     bool getArithemeticFloat16Enabled() const { return false; }
+    void updateNumericFeature(TNumericFeatures::feature f, bool on) { }
 #else
     bool getArithemeticInt8Enabled() const {
-        return extensionRequested(E_GL_EXT_shader_explicit_arithmetic_types) ||
-               extensionRequested(E_GL_EXT_shader_explicit_arithmetic_types_int8);
+        return numericFeatures.contains(TNumericFeatures::shader_explicit_arithmetic_types) ||
+               numericFeatures.contains(TNumericFeatures::shader_explicit_arithmetic_types_int8);
     }
     bool getArithemeticInt16Enabled() const {
-        return extensionRequested(E_GL_EXT_shader_explicit_arithmetic_types) ||
-               extensionRequested(E_GL_AMD_gpu_shader_int16) ||
-               extensionRequested(E_GL_EXT_shader_explicit_arithmetic_types_int16);
+        return numericFeatures.contains(TNumericFeatures::shader_explicit_arithmetic_types) ||
+               numericFeatures.contains(TNumericFeatures::gpu_shader_int16) ||
+               numericFeatures.contains(TNumericFeatures::shader_explicit_arithmetic_types_int16);
     }
 
     bool getArithemeticFloat16Enabled() const {
-        return extensionRequested(E_GL_EXT_shader_explicit_arithmetic_types) ||
-               extensionRequested(E_GL_AMD_gpu_shader_half_float) ||
-               extensionRequested(E_GL_EXT_shader_explicit_arithmetic_types_float16);
+        return numericFeatures.contains(TNumericFeatures::shader_explicit_arithmetic_types) ||
+               numericFeatures.contains(TNumericFeatures::gpu_shader_half_float) ||
+               numericFeatures.contains(TNumericFeatures::shader_explicit_arithmetic_types_float16);
     }
+    void updateNumericFeature(TNumericFeatures::feature f, bool on)
+        { on ? numericFeatures.insert(f) : numericFeatures.erase(f); }
 #endif
 
 protected:
-    TIntermSymbol* addSymbol(int Id, const TString&, const TType&, const TConstUnionArray&, TIntermTyped* subtree, const TSourceLoc&);
+    TIntermSymbol* addSymbol(long long Id, const TString&, const TType&, const TConstUnionArray&, TIntermTyped* subtree, const TSourceLoc&);
     void error(TInfoSink& infoSink, const char*);
     void warn(TInfoSink& infoSink, const char*);
     void mergeCallGraphs(TInfoSink&, TIntermediate&);
     void mergeModes(TInfoSink&, TIntermediate&);
     void mergeTrees(TInfoSink&, TIntermediate&);
-    void seedIdMap(TIdMaps& idMaps, int& maxId);
-    void remapIds(const TIdMaps& idMaps, int idShift, TIntermediate&);
+    void seedIdMap(TIdMaps& idMaps, long long& IdShift);
+    void remapIds(const TIdMaps& idMaps, long long idShift, TIntermediate&);
     void mergeBodies(TInfoSink&, TIntermSequence& globals, const TIntermSequence& unitGlobals);
-    void mergeLinkerObjects(TInfoSink&, TIntermSequence& linkerObjects, const TIntermSequence& unitLinkerObjects);
+    void mergeLinkerObjects(TInfoSink&, TIntermSequence& linkerObjects, const TIntermSequence& unitLinkerObjects, EShLanguage);
+    void mergeBlockDefinitions(TInfoSink&, TIntermSymbol* block, TIntermSymbol* unitBlock, TIntermediate* unitRoot);
     void mergeImplicitArraySizes(TType&, const TType&);
-    void mergeErrorCheck(TInfoSink&, const TIntermSymbol&, const TIntermSymbol&, bool crossStage);
+    void mergeErrorCheck(TInfoSink&, const TIntermSymbol&, const TIntermSymbol&, EShLanguage);
     void checkCallGraphCycles(TInfoSink&);
     void checkCallGraphBodies(TInfoSink&, bool keepUncalled);
     void inOutLocationCheck(TInfoSink&);
-    TIntermAggregate* findLinkerObjects() const;
+    void sharedBlockCheck(TInfoSink&);
     bool userOutputUsed() const;
     bool isSpecializationOperation(const TIntermOperator&) const;
     bool isNonuniformPropagating(TOperator) const;
@@ -903,23 +1021,7 @@
     bool specConstantPropagates(const TIntermTyped&, const TIntermTyped&);
     void performTextureUpgradeAndSamplerRemovalTransformation(TIntermNode* root);
     bool isConversionAllowed(TOperator op, TIntermTyped* node) const;
-    std::tuple<TBasicType, TBasicType> getConversionDestinatonType(TBasicType type0, TBasicType type1, TOperator op) const;
-
-    // JohnK: I think this function should go away.
-    // This data structure is just a log to pass on to back ends.
-    // Versioning and extensions are handled in Version.cpp, with a rich
-    // set of functions for querying stages, versions, extension enable/disabled, etc.
-#ifdef GLSLANG_WEB
-    bool extensionRequested(const char *extension) const { return false; }
-#else
-    bool extensionRequested(const char *extension) const {
-        auto it = requestedExtensions.find(extension);
-        if (it != requestedExtensions.end()) {
-            return (it->second == EBhDisable) ? false : true;
-        }
-        return false;
-    }
-#endif
+    std::tuple<TBasicType, TBasicType> getConversionDestinationType(TBasicType type0, TBasicType type1, TOperator op) const;
 
     static const char* getResourceName(TResourceType);
 
@@ -929,12 +1031,17 @@
     typedef std::list<TCall> TGraph;
     TGraph callGraph;
 
+#ifdef GLSLANG_ANGLE
+    const EProfile profile = ECoreProfile;
+    const int version = 450;
+#else
     EProfile profile;                           // source profile
     int version;                                // source version
+#endif
     SpvVersion spvVersion;
     TIntermNode* treeRoot;
-    std::map<std::string, TExtensionBehavior> requestedExtensions;  // cumulation of all enabled or required extensions; not connected to what subset of the shader used them
-    TBuiltInResource resources;
+    std::set<std::string> requestedExtensions;  // cumulation of all enabled or required extensions; not connected to what subset of the shader used them
+    MustBeAssigned<TBuiltInResource> resources;
     int numEntryPoints;
     int numErrors;
     int numPushConstants;
@@ -946,6 +1053,14 @@
     int localSize[3];
     bool localSizeNotDefault[3];
     int localSizeSpecId[3];
+    unsigned long long uniqueId;
+
+    std::string globalUniformBlockName;
+    std::string atomicCounterBlockName;
+    unsigned int globalUniformBlockSet;
+    unsigned int globalUniformBlockBinding;
+    unsigned int atomicCounterBlockSet;
+
 #ifndef GLSLANG_WEB
 public:
     const char* const implicitThisName;
@@ -1004,11 +1119,15 @@
 
     std::unordered_map<std::string, int> uniformLocationOverrides;
     int uniformLocationBase;
+    TNumericFeatures numericFeatures;
 #endif
+    std::unordered_map<std::string, TBlockStorageClass> blockBackingOverrides;
 
     std::unordered_set<int> usedConstantId; // specialization constant ids used
     std::vector<TOffsetRange> usedAtomics;  // sets of bindings used by atomic counters
     std::vector<TIoRange> usedIo[4];        // sets of used locations, one for each of in, out, uniform, and buffers
+    std::vector<TRange> usedIoRT[2];        // sets of used location, one for rayPayload/rayPayloadIN and other
+                                            // for callableData/callableDataIn
     // set of names of statically read/written I/O that might need extra checking
     std::set<TString> ioAccessed;
     // source code of shader, useful as part of debug information
diff --git a/glslang/MachineIndependent/parseVersions.h b/glslang/MachineIndependent/parseVersions.h
index 0d006a7..7248354 100644
--- a/glslang/MachineIndependent/parseVersions.h
+++ b/glslang/MachineIndependent/parseVersions.h
@@ -58,7 +58,7 @@
                    const SpvVersion& spvVersion, EShLanguage language, TInfoSink& infoSink,
                    bool forwardCompatible, EShMessages messages)
         :
-#ifndef GLSLANG_WEB
+#if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE)
         forwardCompatible(forwardCompatible),
         profile(profile),
 #endif
@@ -117,8 +117,13 @@
     bool suppressWarnings() const { return true; }
     bool isForwardCompatible() const { return false; }
 #else
+#ifdef GLSLANG_ANGLE
+    const bool forwardCompatible = true;
+    const EProfile profile = ECoreProfile;
+#else
     bool forwardCompatible;      // true if errors are to be given for use of deprecated features
     EProfile profile;            // the declared profile in the shader (core by default)
+#endif
     bool isEsProfile() const { return profile == EEsProfile; }
     void requireProfile(const TSourceLoc& loc, int profileMask, const char* featureDesc);
     void profileRequires(const TSourceLoc& loc, int profileMask, int minVersion, int numExtensions,
@@ -224,7 +229,7 @@
     TIntermediate& intermediate; // helper for making and hooking up pieces of the parse tree
 
 protected:
-    TMap<TString, TExtensionBehavior> extensionBehavior;    // for each extension string, what its current behavior is set to
+    TMap<TString, TExtensionBehavior> extensionBehavior;    // for each extension string, what its current behavior is
     TMap<TString, unsigned int> extensionMinSpv;            // for each extension string, store minimum spirv required
     EShMessages messages;        // errors/warnings/rule-sets
     int numErrors;               // number of compile-time errors encountered
diff --git a/glslang/MachineIndependent/preprocessor/Pp.cpp b/glslang/MachineIndependent/preprocessor/Pp.cpp
index ec39356..aa1e0d7 100644
--- a/glslang/MachineIndependent/preprocessor/Pp.cpp
+++ b/glslang/MachineIndependent/preprocessor/Pp.cpp
@@ -422,10 +422,10 @@
             if (! parseContext.isReadingHLSL() && isMacroInput()) {
                 if (parseContext.relaxedErrors())
                     parseContext.ppWarn(ppToken->loc, "nonportable when expanded from macros for preprocessor expression",
-                                                      "defined", "");
+                        "defined", "");
                 else
                     parseContext.ppError(ppToken->loc, "cannot use in preprocessor expression when expanded from macros",
-                                                       "defined", "");
+                        "defined", "");
             }
             bool needclose = 0;
             token = scanToken(ppToken);
@@ -455,6 +455,7 @@
                 token = scanToken(ppToken);
             }
         } else {
+            token = tokenPaste(token, *ppToken);
             token = evalToToken(token, shortCircuit, res, err, ppToken);
             return eval(token, precedence, shortCircuit, res, err, ppToken);
         }
@@ -1184,7 +1185,9 @@
     int macroAtom = atomStrings.getAtom(ppToken->name);
     switch (macroAtom) {
     case PpAtomLineMacro:
-        ppToken->ival = parseContext.getCurrentLoc().line;
+        // Arguments which are macro have been replaced in the first stage.
+        if (ppToken->ival == 0)
+            ppToken->ival = parseContext.getCurrentLoc().line;
         snprintf(ppToken->name, sizeof(ppToken->name), "%d", ppToken->ival);
         UngetToken(PpAtomConstInt, ppToken);
         return MacroExpandStarted;
@@ -1285,6 +1288,11 @@
                     nestStack.push_back('}');
                 else if (nestStack.size() > 0 && token == nestStack.back())
                     nestStack.pop_back();
+
+                //Macro replacement list is expanded in the last stage.
+                if (atomStrings.getAtom(ppToken->name) == PpAtomLineMacro)
+                    ppToken->ival = parseContext.getCurrentLoc().line;
+
                 in->args[arg]->putToken(token, ppToken);
                 tokenRecorded = true;
             }
diff --git a/glslang/MachineIndependent/preprocessor/PpTokens.cpp b/glslang/MachineIndependent/preprocessor/PpTokens.cpp
old mode 100755
new mode 100644
diff --git a/glslang/MachineIndependent/reflection.cpp b/glslang/MachineIndependent/reflection.cpp
index 03d6fe1..9ea48c4 100644
--- a/glslang/MachineIndependent/reflection.cpp
+++ b/glslang/MachineIndependent/reflection.cpp
@@ -33,7 +33,7 @@
 // POSSIBILITY OF SUCH DAMAGE.
 //
 
-#ifndef GLSLANG_WEB
+#if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE)
 
 #include "../Include/Common.h"
 #include "reflection.h"
@@ -639,7 +639,7 @@
 
     int addBlockName(const TString& name, const TType& type, int size)
     {
-        int blockIndex;
+        int blockIndex = 0;
         if (type.isArray()) {
             TType derefType(type, 0);
             for (int e = 0; e < type.getOuterArraySize(); ++e) {
@@ -658,14 +658,17 @@
 
                 blocks.back().numMembers = countAggregateMembers(type);
 
-                EShLanguageMask& stages = blocks.back().stages;
-                stages = static_cast<EShLanguageMask>(stages | 1 << intermediate.getStage());
+                if (updateStageMasks) {
+                    EShLanguageMask& stages = blocks.back().stages;
+                    stages = static_cast<EShLanguageMask>(stages | 1 << intermediate.getStage());
+                }
             }
             else {
                 blockIndex = it->second;
-
-                EShLanguageMask& stages = blocks[blockIndex].stages;
-                stages = static_cast<EShLanguageMask>(stages | 1 << intermediate.getStage());
+                if (updateStageMasks) {
+                    EShLanguageMask& stages = blocks[blockIndex].stages;
+                    stages = static_cast<EShLanguageMask>(stages | 1 << intermediate.getStage());
+                }
             }
         }
 
@@ -904,8 +907,8 @@
             case EbtFloat16:    return GL_FLOAT16_VEC2_NV             + offset;
             case EbtInt:        return GL_INT_VEC2                    + offset;
             case EbtUint:       return GL_UNSIGNED_INT_VEC2           + offset;
-            case EbtInt64:      return GL_INT64_ARB                   + offset;
-            case EbtUint64:     return GL_UNSIGNED_INT64_ARB          + offset;
+            case EbtInt64:      return GL_INT64_VEC2_ARB              + offset;
+            case EbtUint64:     return GL_UNSIGNED_INT64_VEC2_ARB     + offset;
             case EbtBool:       return GL_BOOL_VEC2                   + offset;
             case EbtAtomicUint: return GL_UNSIGNED_INT_ATOMIC_COUNTER + offset;
             default:            return 0;
@@ -1135,6 +1138,8 @@
         if (index >= 0)
             indexToUniformBlock[i].counterIndex = index;
     }
+#else
+    (void)intermediate;
 #endif
 }
 
@@ -1266,4 +1271,4 @@
 
 } // end namespace glslang
 
-#endif // GLSLANG_WEB
+#endif // !GLSLANG_WEB && !GLSLANG_ANGLE
diff --git a/glslang/MachineIndependent/reflection.h b/glslang/MachineIndependent/reflection.h
index 0c33de4..5af4467 100644
--- a/glslang/MachineIndependent/reflection.h
+++ b/glslang/MachineIndependent/reflection.h
@@ -33,7 +33,7 @@
 // POSSIBILITY OF SUCH DAMAGE.
 //
 
-#ifndef GLSLANG_WEB
+#if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE)
 
 #ifndef _REFLECTION_INCLUDED
 #define _REFLECTION_INCLUDED
@@ -220,4 +220,4 @@
 
 #endif // _REFLECTION_INCLUDED
 
-#endif // GLSLANG_WEB
+#endif // !GLSLANG_WEB && !GLSLANG_ANGLE
diff --git a/glslang/Public/ShaderLang.h b/glslang/Public/ShaderLang.h
index e3909f6..14683da 100644
--- a/glslang/Public/ShaderLang.h
+++ b/glslang/Public/ShaderLang.h
@@ -167,7 +167,7 @@
     EShTargetVulkan_1_1 = (1 << 22) | (1 << 12),      // Vulkan 1.1
     EShTargetVulkan_1_2 = (1 << 22) | (2 << 12),      // Vulkan 1.2
     EShTargetOpenGL_450 = 450,                        // OpenGL
-    LAST_ELEMENT_MARKER(EShTargetClientVersionCount),
+    LAST_ELEMENT_MARKER(EShTargetClientVersionCount = 4),
 } EShTargetClientVersion;
 
 typedef EShTargetClientVersion EshTargetClientVersion;
@@ -179,7 +179,7 @@
     EShTargetSpv_1_3 = (1 << 16) | (3 << 8),          // SPIR-V 1.3
     EShTargetSpv_1_4 = (1 << 16) | (4 << 8),          // SPIR-V 1.4
     EShTargetSpv_1_5 = (1 << 16) | (5 << 8),          // SPIR-V 1.5
-    LAST_ELEMENT_MARKER(EShTargetLanguageVersionCount),
+    LAST_ELEMENT_MARKER(EShTargetLanguageVersionCount = 6),
 } EShTargetLanguageVersion;
 
 struct TInputLanguage {
@@ -187,6 +187,7 @@
     EShLanguage stage;        // redundant information with other input, this one overrides when not EShSourceNone
     EShClient dialect;
     int dialectVersion;       // version of client's language definition, not the client (when not EShClientNone)
+    bool vulkanRulesRelaxed;
 };
 
 struct TClient {
@@ -427,6 +428,14 @@
     EResCount
 };
 
+enum TBlockStorageClass
+{
+    EbsUniform = 0,
+    EbsStorageBuffer,
+    EbsPushConstant,
+    EbsNone,    // not a uniform or buffer variable
+    EbsCount,
+};
 
 // Make one TShader per shader that you will link into a program. Then
 //  - provide the shader through setStrings() or setStringsWithLengths()
@@ -458,6 +467,7 @@
     GLSLANG_EXPORT void setEntryPoint(const char* entryPoint);
     GLSLANG_EXPORT void setSourceEntryPoint(const char* sourceEntryPointName);
     GLSLANG_EXPORT void addProcesses(const std::vector<std::string>&);
+    GLSLANG_EXPORT void setUniqueId(unsigned long long id);
 
     // IO resolver binding data: see comments in ShaderLang.cpp
     GLSLANG_EXPORT void setShiftBinding(TResourceType res, unsigned int base);
@@ -482,6 +492,14 @@
     GLSLANG_EXPORT void setNoStorageFormat(bool useUnknownFormat);
     GLSLANG_EXPORT void setNanMinMaxClamp(bool nanMinMaxClamp);
     GLSLANG_EXPORT void setTextureSamplerTransformMode(EShTextureSamplerTransformMode mode);
+    GLSLANG_EXPORT void addBlockStorageOverride(const char* nameStr, glslang::TBlockStorageClass backing);
+
+    GLSLANG_EXPORT void setGlobalUniformBlockName(const char* name);
+    GLSLANG_EXPORT void setAtomicCounterBlockName(const char* name);
+    GLSLANG_EXPORT void setGlobalUniformSet(unsigned int set);
+    GLSLANG_EXPORT void setGlobalUniformBinding(unsigned int binding);
+    GLSLANG_EXPORT void setAtomicCounterBlockSet(unsigned int set);
+    GLSLANG_EXPORT void setAtomicCounterBlockBinding(unsigned int binding);
 
     // For setting up the environment (cleared to nothingness in the constructor).
     // These must be called so that parsing is done for the right source language and
@@ -538,6 +556,9 @@
     bool getEnvTargetHlslFunctionality1() const { return false; }
 #endif
 
+    void setEnvInputVulkanRulesRelaxed() { environment.input.vulkanRulesRelaxed = true; }
+    bool getEnvInputVulkanRulesRelaxed() const { return environment.input.vulkanRulesRelaxed; }
+
     // Interface to #include handlers.
     //
     // To support #include, a client of Glslang does the following:
@@ -690,7 +711,7 @@
     TShader& operator=(TShader&);
 };
 
-#ifndef GLSLANG_WEB
+#if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE)
 
 //
 // A reflection database and its interface, consistent with the OpenGL API reflection queries.
@@ -805,10 +826,10 @@
     // Called by TSlotCollector to resolve resource locations or bindings
     virtual void reserverResourceSlot(TVarEntryInfo& ent, TInfoSink& infoSink) = 0;
     // Called by mapIO.addStage to set shader stage mask to mark a stage be added to this pipeline
-    virtual void addStage(EShLanguage stage) = 0;
+    virtual void addStage(EShLanguage stage, TIntermediate& stageIntermediate) = 0;
 };
 
-#endif // GLSLANG_WEB
+#endif // !GLSLANG_WEB && !GLSLANG_ANGLE
 
 // Make one TProgram per set of shaders that will get linked together.  Add all
 // the shaders that are to be linked together.  After calling shader.parse()
@@ -829,7 +850,7 @@
 
     TIntermediate* getIntermediate(EShLanguage stage) const { return intermediate[stage]; }
 
-#ifndef GLSLANG_WEB
+#if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE)
 
     // Reflection Interface
 
@@ -923,17 +944,18 @@
     // If resolver is not provided it uses the previous approach
     // and respects auto assignment and offsets.
     GLSLANG_EXPORT bool mapIO(TIoMapResolver* pResolver = nullptr, TIoMapper* pIoMapper = nullptr);
-#endif
+#endif // !GLSLANG_WEB && !GLSLANG_ANGLE
 
 protected:
     GLSLANG_EXPORT bool linkStage(EShLanguage, EShMessages);
+    GLSLANG_EXPORT bool crossStageCheck(EShMessages);
 
     TPoolAllocator* pool;
     std::list<TShader*> stages[EShLangCount];
     TIntermediate* intermediate[EShLangCount];
     bool newedIntermediate[EShLangCount];      // track which intermediate were "new" versus reusing a singleton unit in a stage
     TInfoSink* infoSink;
-#ifndef GLSLANG_WEB
+#if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE)
     TReflection* reflection;
 #endif
     bool linked;
diff --git a/gtests/AST.FromFile.cpp b/gtests/AST.FromFile.cpp
index 7627137..8885b29 100644
--- a/gtests/AST.FromFile.cpp
+++ b/gtests/AST.FromFile.cpp
@@ -59,7 +59,7 @@
 }
 
 // clang-format off
-INSTANTIATE_TEST_CASE_P(
+INSTANTIATE_TEST_SUITE_P(
     Glsl, CompileToAstTest,
     ::testing::ValuesIn(std::vector<std::string>({
         "sample.frag",
@@ -278,11 +278,14 @@
         "glsl.es320.subgroupShuffleRelative.comp",
         "glsl.es320.subgroupQuad.comp",
         "glsl.es320.subgroupVote.comp",
+        "terminate.frag",
+        "terminate.vert",
+        "negativeWorkGroupSize.comp",
     })),
     FileNameAsCustomTestSuffix
 );
 
-INSTANTIATE_TEST_CASE_P(
+INSTANTIATE_TEST_SUITE_P(
     Glsl, CompileToAstTestNV,
     ::testing::ValuesIn(std::vector<std::string>({
         "nvShaderNoperspectiveInterpolation.frag",
diff --git a/gtests/CMakeLists.txt b/gtests/CMakeLists.txt
index 6c48d9c..74c9809 100644
--- a/gtests/CMakeLists.txt
+++ b/gtests/CMakeLists.txt
@@ -53,7 +53,9 @@
             ${CMAKE_CURRENT_SOURCE_DIR}/Link.FromFile.cpp
             ${CMAKE_CURRENT_SOURCE_DIR}/Link.FromFile.Vk.cpp
             ${CMAKE_CURRENT_SOURCE_DIR}/Pp.FromFile.cpp
-            ${CMAKE_CURRENT_SOURCE_DIR}/Spv.FromFile.cpp)
+            ${CMAKE_CURRENT_SOURCE_DIR}/Spv.FromFile.cpp
+            ${CMAKE_CURRENT_SOURCE_DIR}/VkRelaxed.FromFile.cpp
+            ${CMAKE_CURRENT_SOURCE_DIR}/GlslMapIO.FromFile.cpp)
 
         if(ENABLE_SPVREMAPPER)
             set(TEST_SOURCES ${TEST_SOURCES}
@@ -83,6 +85,12 @@
                                    ${gmock_SOURCE_DIR}/include
                                    ${gtest_SOURCE_DIR}/include)
 
+        if(ENABLE_OPT)
+            target_include_directories(glslangtests
+                PRIVATE ${spirv-tools_SOURCE_DIR}/include
+            )
+        endif(ENABLE_OPT)
+
         set(LIBRARIES
             glslang OSDependent OGLCompiler glslang
             SPIRV glslang-default-resource-limits)
diff --git a/gtests/Config.FromFile.cpp b/gtests/Config.FromFile.cpp
index d6fbf20..dd18c13 100644
--- a/gtests/Config.FromFile.cpp
+++ b/gtests/Config.FromFile.cpp
@@ -95,7 +95,7 @@
 }
 
 // clang-format off
-INSTANTIATE_TEST_CASE_P(
+INSTANTIATE_TEST_SUITE_P(
     Glsl, ConfigTest,
     ::testing::ValuesIn(std::vector<TestCaseSpec>({
         {"specExamples.vert", "baseResults/test.conf", "specExamplesConf.vert.out", (EShMessages)(EShMsgAST | EShMsgCascadingErrors)},
diff --git a/gtests/GlslMapIO.FromFile.cpp b/gtests/GlslMapIO.FromFile.cpp
new file mode 100644
index 0000000..574e905
--- /dev/null
+++ b/gtests/GlslMapIO.FromFile.cpp
@@ -0,0 +1,306 @@
+//
+// Copyright (C) 2016-2017 Google, Inc.
+// Copyright (C) 2020 The Khronos Group Inc.
+//
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions
+// are met:
+//
+//    Redistributions of source code must retain the above copyright
+//    notice, this list of conditions and the following disclaimer.
+//
+//    Redistributions in binary form must reproduce the above
+//    copyright notice, this list of conditions and the following
+//    disclaimer in the documentation and/or other materials provided
+//    with the distribution.
+//
+//    Neither the name of 3Dlabs Inc. Ltd. nor the names of its
+//    contributors may be used to endorse or promote products derived
+//    from this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+// COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+// BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+// ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+// POSSIBILITY OF SUCH DAMAGE.
+//
+#include <algorithm>
+
+#include <gtest/gtest.h>
+
+#include "TestFixture.h"
+
+#include "glslang/MachineIndependent/iomapper.h"
+#include "glslang/MachineIndependent/reflection.h"
+
+#ifndef GLSLANG_WEB
+namespace glslangtest {
+namespace {
+
+struct IoMapData {
+    std::vector<std::string> fileNames;
+    Semantics semantics;
+};
+
+using GlslMapIOTest = GlslangTest <::testing::TestWithParam<IoMapData>>;
+
+template<class T>
+std::string interfaceName(T symbol) {
+    return symbol.getType()->getBasicType() == glslang::EbtBlock ? std::string(symbol.getType()->getTypeName().c_str()) : symbol.name;
+}
+
+bool verifyIOMapping(std::string& linkingError, glslang::TProgram& program) {
+    bool success = true;
+
+    // Verify IO Mapping by generating reflection for each stage individually
+    // and comparing layout qualifiers on the results
+
+
+    int reflectionOptions = EShReflectionDefault;
+    //reflectionOptions |= EShReflectionStrictArraySuffix;
+    //reflectionOptions |= EShReflectionBasicArraySuffix;
+    reflectionOptions |= EShReflectionIntermediateIO;
+    reflectionOptions |= EShReflectionSeparateBuffers;
+    reflectionOptions |= EShReflectionAllBlockVariables;
+    //reflectionOptions |= EShReflectionUnwrapIOBlocks;
+
+    success &= program.buildReflection(reflectionOptions);
+
+    // check that the reflection output from the individual stages all makes sense..
+    std::vector<glslang::TReflection> stageReflections;
+    for (int s = 0; s < EShLangCount; ++s) {
+        if (program.getIntermediate((EShLanguage)s)) {
+            stageReflections.emplace_back((EShReflectionOptions)reflectionOptions, (EShLanguage)s, (EShLanguage)s);
+            success &= stageReflections.back().addStage((EShLanguage)s, *program.getIntermediate((EShLanguage)s));
+        }
+    }
+
+    // check that input/output locations match between stages
+    auto it = stageReflections.begin();
+    auto nextIt = it + 1;
+    for (; nextIt != stageReflections.end(); it++, nextIt++) {
+        int numOut = it->getNumPipeOutputs();
+        std::map<std::string, const glslang::TObjectReflection*> pipeOut;
+
+        for (int i = 0; i < numOut; i++) {
+            const glslang::TObjectReflection& out = it->getPipeOutput(i);
+            std::string name = interfaceName(out);
+            pipeOut[name] = &out;
+        }
+
+        int numIn = nextIt->getNumPipeInputs();
+        for (int i = 0; i < numIn; i++) {
+            auto in = nextIt->getPipeInput(i);
+            std::string name = interfaceName(in);
+            auto out = pipeOut.find(name);
+
+            if (out != pipeOut.end()) {
+                auto inQualifier = in.getType()->getQualifier();
+                auto outQualifier = out->second->getType()->getQualifier();
+                success &= outQualifier.layoutLocation == inQualifier.layoutLocation;
+            }
+            else {
+                success &= false;
+            }
+        }
+    }
+
+    // compare uniforms in each stage to the program
+    {
+        int totalUniforms = program.getNumUniformVariables();
+        std::map<std::string, const glslang::TObjectReflection*> programUniforms;
+        for (int i = 0; i < totalUniforms; i++) {
+            const glslang::TObjectReflection& uniform = program.getUniform(i);
+            std::string name = interfaceName(uniform);
+            programUniforms[name] = &uniform;
+        }
+        it = stageReflections.begin();
+        for (; it != stageReflections.end(); it++) {
+            int numUniform = it->getNumUniforms();
+            std::map<std::string, glslang::TObjectReflection> uniforms;
+
+            for (int i = 0; i < numUniform; i++) {
+                glslang::TObjectReflection uniform = it->getUniform(i);
+                std::string name = interfaceName(uniform);
+                auto programUniform = programUniforms.find(name);
+
+                if (programUniform != programUniforms.end()) {
+                    auto stageQualifier = uniform.getType()->getQualifier();
+                    auto programQualifier = programUniform->second->getType()->getQualifier();
+
+                    success &= stageQualifier.layoutLocation == programQualifier.layoutLocation;
+                    success &= stageQualifier.layoutBinding == programQualifier.layoutBinding;
+                    success &= stageQualifier.layoutSet == programQualifier.layoutSet;
+                }
+                else {
+                    success &= false;
+                }
+            }
+        }
+    }
+
+    // compare uniform blocks in each stage to the program table
+    {
+        int totalUniforms = program.getNumUniformBlocks();
+        std::map<std::string, const glslang::TObjectReflection*> programUniforms;
+        for (int i = 0; i < totalUniforms; i++) {
+            const glslang::TObjectReflection& uniform = program.getUniformBlock(i);
+            std::string name = interfaceName(uniform);
+            programUniforms[name] = &uniform;
+        }
+        it = stageReflections.begin();
+        for (; it != stageReflections.end(); it++) {
+            int numUniform = it->getNumUniformBlocks();
+            std::map<std::string, glslang::TObjectReflection> uniforms;
+
+            for (int i = 0; i < numUniform; i++) {
+                glslang::TObjectReflection uniform = it->getUniformBlock(i);
+                std::string name = interfaceName(uniform);
+                auto programUniform = programUniforms.find(name);
+
+                if (programUniform != programUniforms.end()) {
+                    auto stageQualifier = uniform.getType()->getQualifier();
+                    auto programQualifier = programUniform->second->getType()->getQualifier();
+
+                    success &= stageQualifier.layoutLocation == programQualifier.layoutLocation;
+                    success &= stageQualifier.layoutBinding == programQualifier.layoutBinding;
+                    success &= stageQualifier.layoutSet == programQualifier.layoutSet;
+                }
+                else {
+                    success &= false;
+                }
+            }
+        }
+    }
+
+    if (!success) {
+        linkingError += "Mismatched cross-stage IO\n";
+    }
+
+    return success;
+}
+
+TEST_P(GlslMapIOTest, FromFile)
+{
+    const auto& fileNames = GetParam().fileNames;
+    Semantics semantics = GetParam().semantics;
+    const size_t fileCount = fileNames.size();
+    const EShMessages controls = DeriveOptions(Source::GLSL, semantics, Target::BothASTAndSpv);
+    GlslangResult result;
+
+    // Compile each input shader file.
+    bool success = true;
+    std::vector<std::unique_ptr<glslang::TShader>> shaders;
+    for (size_t i = 0; i < fileCount; ++i) {
+        std::string contents;
+        tryLoadFile(GlobalTestSettings.testRoot + "/" + fileNames[i],
+            "input", &contents);
+        shaders.emplace_back(
+            new glslang::TShader(GetShaderStage(GetSuffix(fileNames[i]))));
+        auto* shader = shaders.back().get();
+        
+        shader->setAutoMapLocations(true);
+        shader->setAutoMapBindings(true);
+        
+        if (controls & EShMsgSpvRules) {
+            if (controls & EShMsgVulkanRules) {
+                shader->setEnvInput((controls & EShMsgReadHlsl) ? glslang::EShSourceHlsl
+                                                               : glslang::EShSourceGlsl,
+                                    shader->getStage(), glslang::EShClientVulkan, 100);
+                shader->setEnvClient(glslang::EShClientVulkan, glslang::EShTargetVulkan_1_1);
+                shader->setEnvTarget(glslang::EShTargetSpv, glslang::EShTargetSpv_1_0);
+            } else {
+                shader->setEnvInput((controls & EShMsgReadHlsl) ? glslang::EShSourceHlsl
+                                                               : glslang::EShSourceGlsl,
+                                    shader->getStage(), glslang::EShClientOpenGL, 100);
+                shader->setEnvClient(glslang::EShClientOpenGL, glslang::EShTargetOpenGL_450);
+                shader->setEnvTarget(glslang::EshTargetSpv, glslang::EShTargetSpv_1_0);
+            }
+        }
+
+        success &= compile(shader, contents, "", controls);
+        
+        result.shaderResults.push_back(
+            { fileNames[i], shader->getInfoLog(), shader->getInfoDebugLog() });
+    }
+
+    // Link all of them.
+    glslang::TProgram program;
+    for (const auto& shader : shaders) program.addShader(shader.get());
+    success &= program.link(controls);
+    result.linkingOutput = program.getInfoLog();
+    result.linkingError = program.getInfoDebugLog();
+
+    unsigned int stage = 0;
+    glslang::TIntermediate* firstIntermediate = nullptr;
+    while (!program.getIntermediate((EShLanguage)stage) && stage < EShLangCount) { stage++; }
+    firstIntermediate = program.getIntermediate((EShLanguage)stage);
+
+    glslang::TDefaultGlslIoResolver resolver(*firstIntermediate);
+    glslang::TGlslIoMapper ioMapper;
+
+    if (success) {
+        success &= program.mapIO(&resolver, &ioMapper);
+        result.linkingOutput = program.getInfoLog();
+        result.linkingError = program.getInfoDebugLog();
+    }
+
+    success &= verifyIOMapping(result.linkingError, program);
+    result.validationResult = success;
+
+    if (success && (controls & EShMsgSpvRules)) {
+        for (int stage = 0; stage < EShLangCount; ++stage) {
+            if (program.getIntermediate((EShLanguage)stage)) {
+                spv::SpvBuildLogger logger;
+                std::vector<uint32_t> spirv_binary;
+                options().disableOptimizer = false;
+                glslang::GlslangToSpv(*program.getIntermediate((EShLanguage)stage),
+                    spirv_binary, &logger, &options());
+
+                std::ostringstream disassembly_stream;
+                spv::Parameterize();
+                spv::Disassemble(disassembly_stream, spirv_binary);
+                result.spirvWarningsErrors += logger.getAllMessages();
+                result.spirv += disassembly_stream.str();
+                result.validationResult &= !options().validate || logger.getAllMessages().empty();
+            }
+        }
+    }
+
+    std::ostringstream stream;
+    outputResultToStream(&stream, result, controls);
+
+    // Check with expected results.
+    const std::string expectedOutputFname =
+        GlobalTestSettings.testRoot + "/baseResults/" + fileNames.front() + ".out";
+    std::string expectedOutput;
+    tryLoadFile(expectedOutputFname, "expected output", &expectedOutput);
+
+    checkEqAndUpdateIfRequested(expectedOutput, stream.str(), expectedOutputFname,
+        result.spirvWarningsErrors);
+}
+
+// clang-format off
+INSTANTIATE_TEST_SUITE_P(
+    Glsl, GlslMapIOTest,
+    ::testing::ValuesIn(std::vector<IoMapData>({
+        {{"iomap.crossStage.vert", "iomap.crossStage.frag" }, Semantics::OpenGL},
+        {{"iomap.crossStage.2.vert", "iomap.crossStage.2.geom", "iomap.crossStage.2.frag" }, Semantics::OpenGL},
+        // vulkan semantics
+        {{"iomap.crossStage.vk.vert", "iomap.crossStage.vk.geom", "iomap.crossStage.vk.frag" }, Semantics::Vulkan},
+    }))
+);
+// clang-format on
+
+}  // anonymous namespace
+}  // namespace glslangtest
+#endif 
\ No newline at end of file
diff --git a/gtests/HexFloat.cpp b/gtests/HexFloat.cpp
index ead4fd3..0a11d96 100644
--- a/gtests/HexFloat.cpp
+++ b/gtests/HexFloat.cpp
@@ -77,7 +77,7 @@
   EXPECT_THAT(Decode<double>(GetParam().second), Eq(GetParam().first));
 }
 
-INSTANTIATE_TEST_CASE_P(
+INSTANTIATE_TEST_SUITE_P(
     Float32Tests, HexFloatTest,
     ::testing::ValuesIn(std::vector<std::pair<FloatProxy<float>, std::string>>({
         {0.f, "0x0p+0"},
@@ -129,7 +129,7 @@
 
     })));
 
-INSTANTIATE_TEST_CASE_P(
+INSTANTIATE_TEST_SUITE_P(
     Float32NanTests, HexFloatTest,
     ::testing::ValuesIn(std::vector<std::pair<FloatProxy<float>, std::string>>({
         // Various NAN and INF cases
@@ -147,7 +147,7 @@
         {uint32_t(0x7FFFFFFF), "0x1.fffffep+128"},   // +nan
     })));
 
-INSTANTIATE_TEST_CASE_P(
+INSTANTIATE_TEST_SUITE_P(
     Float64Tests, HexDoubleTest,
     ::testing::ValuesIn(
         std::vector<std::pair<FloatProxy<double>, std::string>>({
@@ -220,7 +220,7 @@
 
         })));
 
-INSTANTIATE_TEST_CASE_P(
+INSTANTIATE_TEST_SUITE_P(
     Float64NanTests, HexDoubleTest,
     ::testing::ValuesIn(std::vector<
                         std::pair<FloatProxy<double>, std::string>>({
@@ -262,7 +262,7 @@
   EXPECT_THAT(Decode<double>(GetParam().first), Eq(GetParam().second));
 }
 
-INSTANTIATE_TEST_CASE_P(
+INSTANTIATE_TEST_SUITE_P(
     Float32DecodeTests, DecodeHexFloatTest,
     ::testing::ValuesIn(std::vector<std::pair<std::string, FloatProxy<float>>>({
         {"0x0p+000", 0.f},
@@ -284,7 +284,7 @@
         {"0x0.4p+0", 0.25f},
     })));
 
-INSTANTIATE_TEST_CASE_P(
+INSTANTIATE_TEST_SUITE_P(
     Float32DecodeInfTests, DecodeHexFloatTest,
     ::testing::ValuesIn(std::vector<std::pair<std::string, FloatProxy<float>>>({
         // inf cases
@@ -294,7 +294,7 @@
         {"-0x32p+127", uint32_t(0xFF800000)},  // -inf
     })));
 
-INSTANTIATE_TEST_CASE_P(
+INSTANTIATE_TEST_SUITE_P(
     Float64DecodeTests, DecodeHexDoubleTest,
     ::testing::ValuesIn(
         std::vector<std::pair<std::string, FloatProxy<double>>>({
@@ -317,7 +317,7 @@
             {"0x0.4p+0", 0.25},
         })));
 
-INSTANTIATE_TEST_CASE_P(
+INSTANTIATE_TEST_SUITE_P(
     Float64DecodeInfTests, DecodeHexDoubleTest,
     ::testing::ValuesIn(
         std::vector<std::pair<std::string, FloatProxy<double>>>({
@@ -465,7 +465,7 @@
       Eq(GetParam().second));
 }
 
-INSTANTIATE_TEST_CASE_P(
+INSTANTIATE_TEST_SUITE_P(
     Float32Tests, FloatProxyFloatTest,
     ::testing::ValuesIn(std::vector<std::pair<FloatProxy<float>, std::string>>({
         // Zero
@@ -497,7 +497,7 @@
         {-std::numeric_limits<float>::infinity(), "-0x1p+128"},
     })));
 
-INSTANTIATE_TEST_CASE_P(
+INSTANTIATE_TEST_SUITE_P(
     Float64Tests, FloatProxyDoubleTest,
     ::testing::ValuesIn(
         std::vector<std::pair<FloatProxy<double>, std::string>>({
@@ -747,7 +747,7 @@
 }
 
 // clang-format off
-INSTANTIATE_TEST_CASE_P(F32ToF16, HexFloatRoundTest,
+INSTANTIATE_TEST_SUITE_P(F32ToF16, HexFloatRoundTest,
   ::testing::ValuesIn(std::vector<RoundSignificandCase>(
   {
     {float_fractions({0}), std::make_pair(half_bits_set({}), false), spvutils::kRoundToZero},
@@ -828,7 +828,7 @@
   }
 }
 
-INSTANTIATE_TEST_CASE_P(F16toF32, HexFloatRoundUpSignificandTest,
+INSTANTIATE_TEST_SUITE_P(F16toF32, HexFloatRoundUpSignificandTest,
   // 0xFC00 of the source 16-bit hex value cover the sign and the exponent.
   // They are ignored for this test.
   ::testing::ValuesIn(std::vector<UpCastSignificandCase>(
@@ -879,7 +879,7 @@
 const uint16_t positive_infinity = 0x7C00;
 const uint16_t negative_infinity = 0xFC00;
 
-INSTANTIATE_TEST_CASE_P(F32ToF16, HexFloatFP32To16Tests,
+INSTANTIATE_TEST_SUITE_P(F32ToF16, HexFloatFP32To16Tests,
   ::testing::ValuesIn(std::vector<DownCastTest>(
   {
     // Exactly representable as half.
@@ -944,7 +944,7 @@
   }
 }
 
-INSTANTIATE_TEST_CASE_P(F16ToF32, HexFloatFP16To32Tests,
+INSTANTIATE_TEST_SUITE_P(F16ToF32, HexFloatFP16To32Tests,
   ::testing::ValuesIn(std::vector<UpCastCase>(
   {
     {0x0000, 0.f},
@@ -1039,7 +1039,7 @@
   return FloatParseCase<T>{literal, negate_value, true, proxy_expected_value};
 }
 
-INSTANTIATE_TEST_CASE_P(
+INSTANTIATE_TEST_SUITE_P(
     FloatParse, ParseNormalFloatTest,
     ::testing::ValuesIn(std::vector<FloatParseCase<float>>{
         // Failing cases due to trivially incorrect syntax.
@@ -1090,7 +1090,7 @@
   }
 }
 
-INSTANTIATE_TEST_CASE_P(
+INSTANTIATE_TEST_SUITE_P(
     Float16Parse, ParseNormalFloat16Test,
     ::testing::ValuesIn(std::vector<FloatParseCase<Float16>>{
         // Failing cases due to trivially incorrect syntax.
@@ -1137,7 +1137,7 @@
   }
 }
 
-INSTANTIATE_TEST_CASE_P(
+INSTANTIATE_TEST_SUITE_P(
     FloatOverflow, FloatProxyParseOverflowFloatTest,
     ::testing::ValuesIn(std::vector<OverflowParseCase<float>>({
         {"0", true, 0.0f},
@@ -1164,7 +1164,7 @@
   }
 }
 
-INSTANTIATE_TEST_CASE_P(
+INSTANTIATE_TEST_SUITE_P(
     DoubleOverflow, FloatProxyParseOverflowDoubleTest,
     ::testing::ValuesIn(std::vector<OverflowParseCase<double>>({
         {"0", true, 0.0},
@@ -1193,7 +1193,7 @@
   }
 }
 
-INSTANTIATE_TEST_CASE_P(
+INSTANTIATE_TEST_SUITE_P(
     Float16Overflow, FloatProxyParseOverflowFloat16Test,
     ::testing::ValuesIn(std::vector<OverflowParseCase<uint16_t>>({
         {"0", true, uint16_t{0}},
diff --git a/gtests/Hlsl.FromFile.cpp b/gtests/Hlsl.FromFile.cpp
old mode 100755
new mode 100644
index f3ca0b5..33deef5
--- a/gtests/Hlsl.FromFile.cpp
+++ b/gtests/Hlsl.FromFile.cpp
@@ -129,7 +129,7 @@
 }
 
 // clang-format off
-INSTANTIATE_TEST_CASE_P(
+INSTANTIATE_TEST_SUITE_P(
     ToSpirv, HlslCompileTest,
     ::testing::ValuesIn(std::vector<FileNameEntryPointPair>{
         {"hlsl.amend.frag", "f1"},
@@ -245,7 +245,6 @@
         {"hlsl.isfinite.frag", "main"},
         {"hlsl.intrinsics.barriers.comp", "ComputeShaderFunction"},
         {"hlsl.intrinsics.comp", "ComputeShaderFunction"},
-        {"hlsl.intrinsics.evalfns.frag", "main"},
         {"hlsl.intrinsics.d3dcolortoubyte4.frag", "main"},
         {"hlsl.intrinsics.double.frag", "PixelShaderFunction"},
         {"hlsl.intrinsics.f1632.frag", "main"},
@@ -308,10 +307,12 @@
         {"hlsl.pp.vert", "main"},
         {"hlsl.pp.line.frag", "main"},
         {"hlsl.precise.frag", "main"},
+        {"hlsl.printf.comp", "main"},
         {"hlsl.promote.atomic.frag", "main"},
         {"hlsl.promote.binary.frag", "main"},
         {"hlsl.promote.vec1.frag", "main"},
         {"hlsl.promotions.frag", "main"},
+        {"hlsl.round.dx10.frag", "main"},
         {"hlsl.rw.atomics.frag", "main"},
         {"hlsl.rw.bracket.frag", "main"},
         {"hlsl.rw.register.frag", "main"},
@@ -430,7 +431,7 @@
 // clang-format on
 
 // clang-format off
-INSTANTIATE_TEST_CASE_P(
+INSTANTIATE_TEST_SUITE_P(
     ToSpirv, HlslVulkan1_1CompileTest,
     ::testing::ValuesIn(std::vector<FileNameEntryPointPair>{
         {"hlsl.wavebroadcast.comp", "CSMain"},
@@ -448,7 +449,7 @@
 // clang-format on
 
 // clang-format off
-INSTANTIATE_TEST_CASE_P(
+INSTANTIATE_TEST_SUITE_P(
     ToSpirv, HlslCompileAndFlattenTest,
     ::testing::ValuesIn(std::vector<FileNameEntryPointPair>{
         {"hlsl.array.flatten.frag", "main"},
@@ -460,7 +461,7 @@
 
 #if ENABLE_OPT
 // clang-format off
-INSTANTIATE_TEST_CASE_P(
+INSTANTIATE_TEST_SUITE_P(
     ToSpirv, HlslLegalizeTest,
     ::testing::ValuesIn(std::vector<FileNameEntryPointPair>{
         {"hlsl.aliasOpaque.frag", "main"},
@@ -469,6 +470,7 @@
         {"hlsl.flattenOpaqueInitMix.vert", "main"},
         {"hlsl.flattenSubset.frag", "main"},
         {"hlsl.flattenSubset2.frag", "main"},
+        {"hlsl.intrinsics.evalfns.frag", "main"},
         {"hlsl.partialFlattenLocal.vert", "main"},
         {"hlsl.partialFlattenMixed.vert", "main"}
     }),
@@ -478,7 +480,7 @@
 #endif
 
 // clang-format off
-INSTANTIATE_TEST_CASE_P(
+INSTANTIATE_TEST_SUITE_P(
     ToSpirv, HlslDebugTest,
     ::testing::ValuesIn(std::vector<FileNameEntryPointPair>{
         {"hlsl.pp.line2.frag", "MainPs"}
@@ -486,9 +488,10 @@
     FileNameAsCustomTestSuffix
 );
 
-INSTANTIATE_TEST_CASE_P(
+INSTANTIATE_TEST_SUITE_P(
     ToSpirv, HlslDX9CompatibleTest,
     ::testing::ValuesIn(std::vector<FileNameEntryPointPair>{
+        {"hlsl.round.dx9.frag", "main"},
         {"hlsl.sample.dx9.frag", "main"},
         {"hlsl.sample.dx9.vert", "main"},
     }),
@@ -496,7 +499,7 @@
 );
 
 // clang-format off
-INSTANTIATE_TEST_CASE_P(
+INSTANTIATE_TEST_SUITE_P(
     ToSpirv, HlslLegalDebugTest,
     ::testing::ValuesIn(std::vector<FileNameEntryPointPair>{
         {"hlsl.pp.line4.frag", "MainPs"}
diff --git a/gtests/Link.FromFile.Vk.cpp b/gtests/Link.FromFile.Vk.cpp
old mode 100755
new mode 100644
index ee868c2..4db71c2
--- a/gtests/Link.FromFile.Vk.cpp
+++ b/gtests/Link.FromFile.Vk.cpp
@@ -75,7 +75,7 @@
     result.linkingOutput = program.getInfoLog();
     result.linkingError = program.getInfoDebugLog();
 
-#ifndef GLSLANG_WEB
+#if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE)
         if (success)
             program.mapIO();
 #endif
@@ -109,21 +109,22 @@
 }
 
 // clang-format off
-INSTANTIATE_TEST_CASE_P(
+INSTANTIATE_TEST_SUITE_P(
     Glsl, LinkTestVulkan,
     ::testing::ValuesIn(std::vector<std::vector<std::string>>({
         {"link1.vk.frag", "link2.vk.frag"},
         {"spv.unit1.frag", "spv.unit2.frag", "spv.unit3.frag"},
-		{"link.vk.matchingPC.0.0.frag", "link.vk.matchingPC.0.1.frag",
-			"link.vk.matchingPC.0.2.frag"},
-		{"link.vk.differentPC.0.0.frag", "link.vk.differentPC.0.1.frag",
-			"link.vk.differentPC.0.2.frag"},
-		{"link.vk.differentPC.1.0.frag", "link.vk.differentPC.1.1.frag",
-			"link.vk.differentPC.1.2.frag"},
+        {"link.vk.matchingPC.0.0.frag", "link.vk.matchingPC.0.1.frag",
+            "link.vk.matchingPC.0.2.frag"},
+           {"link.vk.differentPC.0.0.frag", "link.vk.differentPC.0.1.frag",
+            "link.vk.differentPC.0.2.frag"},
+        {"link.vk.differentPC.1.0.frag", "link.vk.differentPC.1.1.frag",
+            "link.vk.differentPC.1.2.frag"},
         {"link.vk.pcNamingValid.0.0.vert", "link.vk.pcNamingValid.0.1.vert"},
         {"link.vk.pcNamingInvalid.0.0.vert", "link.vk.pcNamingInvalid.0.1.vert"},
         {"link.vk.multiBlocksValid.0.0.vert", "link.vk.multiBlocksValid.0.1.vert"},
         {"link.vk.multiBlocksValid.1.0.geom", "link.vk.multiBlocksValid.1.1.geom"},
+        {"link.vk.inconsistentGLPerVertex.0.vert", "link.vk.inconsistentGLPerVertex.0.geom"},
     }))
 );
 // clang-format on
diff --git a/gtests/Link.FromFile.cpp b/gtests/Link.FromFile.cpp
old mode 100755
new mode 100644
index 3e16207..29590c0
--- a/gtests/Link.FromFile.cpp
+++ b/gtests/Link.FromFile.cpp
@@ -86,7 +86,7 @@
 }
 
 // clang-format off
-INSTANTIATE_TEST_CASE_P(
+INSTANTIATE_TEST_SUITE_P(
     Glsl, LinkTest,
     ::testing::ValuesIn(std::vector<std::vector<std::string>>({
         {"mains1.frag", "mains2.frag", "noMain1.geom", "noMain2.geom"},
diff --git a/gtests/Pp.FromFile.cpp b/gtests/Pp.FromFile.cpp
index 1bea877..92b4d24 100644
--- a/gtests/Pp.FromFile.cpp
+++ b/gtests/Pp.FromFile.cpp
@@ -47,7 +47,7 @@
 }
 
 // clang-format off
-INSTANTIATE_TEST_CASE_P(
+INSTANTIATE_TEST_SUITE_P(
     Glsl, PreprocessingTest,
     ::testing::ValuesIn(std::vector<std::string>({
         "preprocessor.bad_arg.vert",
diff --git a/gtests/Remap.FromFile.cpp b/gtests/Remap.FromFile.cpp
index 50bce8e..f014253 100644
--- a/gtests/Remap.FromFile.cpp
+++ b/gtests/Remap.FromFile.cpp
@@ -80,7 +80,7 @@
 }
 
 // clang-format off
-INSTANTIATE_TEST_CASE_P(
+INSTANTIATE_TEST_SUITE_P(
     ToSpirv, RemapTest,
     ::testing::ValuesIn(std::vector<RemapTestArgs>{
             // GLSL remapper tests
diff --git a/gtests/Spv.FromFile.cpp b/gtests/Spv.FromFile.cpp
index af1409b..5456fb8 100644
--- a/gtests/Spv.FromFile.cpp
+++ b/gtests/Spv.FromFile.cpp
@@ -1,6 +1,7 @@
  //
 // Copyright (C) 2016 Google, Inc.
 // Copyright (C) 2019 ARM Limited.
+// Modifications Copyright (C) 2020 Advanced Micro Devices, Inc. All rights reserved.
 //
 // All rights reserved.
 //
@@ -213,7 +214,7 @@
 }
 
 // clang-format off
-INSTANTIATE_TEST_CASE_P(
+INSTANTIATE_TEST_SUITE_P(
     Glsl, CompileVulkanToSpirvTest,
     ::testing::ValuesIn(std::vector<std::string>({
         // Test looping constructs.
@@ -238,6 +239,9 @@
         "rayQuery-committed.Error.rgen",
         "rayQuery-allOps.comp",
         "rayQuery-allOps.frag",
+        "rayQuery-initialization.Error.comp",
+        "rayQuery-global.rgen",
+        "rayQuery-types.comp",
         "spv.set.vert",
         "spv.double.comp",
         "spv.100ops.frag",
@@ -324,6 +328,7 @@
         "spv.demoteDisabled.frag",
         "spv.deepRvalue.frag",
         "spv.depthOut.frag",
+        "spv.depthUnchanged.frag",
         "spv.discard-dce.frag",
         "spv.doWhileLoop.frag",
         "spv.earlyReturnDiscard.frag",
@@ -350,6 +355,7 @@
         "spv.int64.frag",
         "spv.intcoopmat.comp",
         "spv.intOps.vert",
+        "spv.layer.tese",
         "spv.layoutNested.vert",
         "spv.length.frag",
         "spv.localAggregates.frag",
@@ -371,9 +377,11 @@
         "spv.nonuniform4.frag",
         "spv.nonuniform5.frag",
         "spv.noWorkgroup.comp",
+        "spv.nullInit.comp",
         "spv.offsets.frag",
         "spv.Operations.frag",
         "spv.paramMemory.frag",
+        "spv.paramMemory.420.frag",
         "spv.precision.frag",
         "spv.precisionArgs.frag",
         "spv.precisionNonESSamp.frag",
@@ -408,6 +416,7 @@
         "spv.texture.vert",
         "spv.textureBuffer.vert",
         "spv.image.frag",
+        "spv.imageAtomic64.frag",
         "spv.types.frag",
         "spv.uint.frag",
         "spv.uniformArray.frag",
@@ -432,8 +441,10 @@
         "spv.specConstant.int16.comp",
         "spv.specConstant.int8.comp",
         "spv.storageBuffer.vert",
+        "spv.terminate.frag",
         "spv.precise.tese",
         "spv.precise.tesc",
+        "spv.viewportindex.tese",
         "spv.volatileAtomic.comp",
         "spv.vulkan100.subgroupArithmetic.comp",
         "spv.vulkan100.subgroupPartitioned.comp",
@@ -443,6 +454,8 @@
         "spv.samplerlessTextureFunctions.frag",
         "spv.smBuiltins.vert",
         "spv.smBuiltins.frag",
+        "spv.builtin.PrimitiveShadingRateEXT.vert",
+        "spv.builtin.ShadingRateEXT.frag",
     })),
     FileNameAsCustomTestSuffix
 );
@@ -450,7 +463,7 @@
 // Cases with deliberately unreachable code.
 // By default the compiler will aggressively eliminate
 // unreachable merges and continues.
-INSTANTIATE_TEST_CASE_P(
+INSTANTIATE_TEST_SUITE_P(
     GlslWithDeadCode, CompileVulkanToSpirvDeadCodeElimTest,
     ::testing::ValuesIn(std::vector<std::string>({
         "spv.dead-after-continue.vert",
@@ -465,7 +478,7 @@
 );
 
 // clang-format off
-INSTANTIATE_TEST_CASE_P(
+INSTANTIATE_TEST_SUITE_P(
     Glsl, CompileVulkanToDebugSpirvTest,
     ::testing::ValuesIn(std::vector<std::string>({
         "spv.pp.line.frag",
@@ -474,7 +487,7 @@
 );
 
 // clang-format off
-INSTANTIATE_TEST_CASE_P(
+INSTANTIATE_TEST_SUITE_P(
     Glsl, CompileVulkan1_1ToSpirvTest,
     ::testing::ValuesIn(std::vector<std::string>({
         "spv.1.3.8bitstorage-ubo.vert",
@@ -491,6 +504,7 @@
         "spv.memoryScopeSemantics.comp",
         "spv.memoryScopeSemantics_Error.comp",
         "spv.multiView.frag",
+        "spv.queueFamilyScope.comp",
         "spv.RayGenShader11.rgen",
         "spv.subgroup.frag",
         "spv.subgroup.geom",
@@ -530,7 +544,7 @@
 );
 
 // clang-format off
-INSTANTIATE_TEST_CASE_P(
+INSTANTIATE_TEST_SUITE_P(
     Glsl, CompileToSpirv14Test,
     ::testing::ValuesIn(std::vector<std::string>({
         "spv.1.4.LoopControl.frag",
@@ -548,6 +562,7 @@
         "spv.ext.AnyHitShader.rahit",
         "spv.ext.AnyHitShader_Errors.rahit",
         "spv.ext.ClosestHitShader.rchit",
+        "spv.ext.ClosestHitShader_Subgroup.rchit",
         "spv.ext.ClosestHitShader_Errors.rchit",
         "spv.ext.IntersectShader.rint",
         "spv.ext.IntersectShader_Errors.rint",
@@ -558,15 +573,33 @@
         "spv.ext.RayCallable_Errors.rcall",
         "spv.ext.RayConstants.rgen",
         "spv.ext.RayGenShader.rgen",
+        "spv.ext.RayGenShader_Errors.rgen",
         "spv.ext.RayGenShader11.rgen",
         "spv.ext.RayGenShaderArray.rgen",
+        "spv.ext.RayGenSBTlayout.rgen",
+        "spv.ext.RayGenSBTlayout140.rgen",
+        "spv.ext.RayGenSBTlayout430.rgen",
+        "spv.ext.RayGenSBTlayoutscalar.rgen",
         "spv.ext.World3x4.rahit",
+        "spv.ext.AccelDecl.frag",
+        "spv.ext.RayQueryDecl.frag",
+
+        // SPV_KHR_workgroup_memory_explicit_layout depends on SPIR-V 1.4.
+        "spv.WorkgroupMemoryExplicitLayout.SingleBlock.comp",
+        "spv.WorkgroupMemoryExplicitLayout.MultiBlock.comp",
+        "spv.WorkgroupMemoryExplicitLayout.8BitAccess.comp",
+        "spv.WorkgroupMemoryExplicitLayout.16BitAccess.comp",
+        "spv.WorkgroupMemoryExplicitLayout.NonBlock.comp",
+        "spv.WorkgroupMemoryExplicitLayout.MixBlockNonBlock_Errors.comp",
+        "spv.WorkgroupMemoryExplicitLayout.std140.comp",
+        "spv.WorkgroupMemoryExplicitLayout.std430.comp",
+        "spv.WorkgroupMemoryExplicitLayout.scalar.comp",
     })),
     FileNameAsCustomTestSuffix
 );
 
 // clang-format off
-INSTANTIATE_TEST_CASE_P(
+INSTANTIATE_TEST_SUITE_P(
     Hlsl, HlslIoMap,
     ::testing::ValuesIn(std::vector<IoMapData>{
         { "spv.register.autoassign.frag", "main_ep", 5, 10, 0, 20, 30, true, false },
@@ -586,7 +619,7 @@
 );
 
 // clang-format off
-INSTANTIATE_TEST_CASE_P(
+INSTANTIATE_TEST_SUITE_P(
     Hlsl, GlslIoMap,
     ::testing::ValuesIn(std::vector<IoMapData>{
         { "spv.glsl.register.autoassign.frag", "main", 5, 10, 0, 20, 30, true, false },
@@ -596,7 +629,7 @@
 );
 
 // clang-format off
-INSTANTIATE_TEST_CASE_P(
+INSTANTIATE_TEST_SUITE_P(
     Glsl, CompileOpenGLToSpirvTest,
     ::testing::ValuesIn(std::vector<std::string>({
         "spv.460.frag",
@@ -621,7 +654,7 @@
     FileNameAsCustomTestSuffix
 );
 
-INSTANTIATE_TEST_CASE_P(
+INSTANTIATE_TEST_SUITE_P(
     Glsl, VulkanSemantics,
     ::testing::ValuesIn(std::vector<std::string>({
         "vulkan.frag",
@@ -633,7 +666,7 @@
     FileNameAsCustomTestSuffix
 );
 
-INSTANTIATE_TEST_CASE_P(
+INSTANTIATE_TEST_SUITE_P(
     Glsl, OpenGLSemantics,
     ::testing::ValuesIn(std::vector<std::string>({
         "glspv.esversion.vert",
@@ -645,7 +678,7 @@
     FileNameAsCustomTestSuffix
 );
 
-INSTANTIATE_TEST_CASE_P(
+INSTANTIATE_TEST_SUITE_P(
     Glsl, VulkanAstSemantics,
     ::testing::ValuesIn(std::vector<std::string>({
         "vulkan.ast.vert",
@@ -653,7 +686,7 @@
     FileNameAsCustomTestSuffix
 );
 
-INSTANTIATE_TEST_CASE_P(
+INSTANTIATE_TEST_SUITE_P(
     Glsl, CompileVulkanToSpirvTestAMD,
     ::testing::ValuesIn(std::vector<std::string>({
         "spv.16bitxfb.vert",
@@ -669,7 +702,7 @@
     FileNameAsCustomTestSuffix
 );
 
-INSTANTIATE_TEST_CASE_P(
+INSTANTIATE_TEST_SUITE_P(
     Glsl, CompileVulkanToSpirvTestNV,
     ::testing::ValuesIn(std::vector<std::string>({
     "spv.sampleMaskOverrideCoverage.frag",
@@ -681,6 +714,7 @@
     "spv.multiviewPerViewAttributes.vert",
     "spv.multiviewPerViewAttributes.tesc",
     "spv.atomicInt64.comp",
+    "spv.atomicStoreInt64.comp",
     "spv.shadingRate.frag",
     "spv.RayGenShader.rgen",
     "spv.RayGenShaderArray.rgen",
@@ -717,7 +751,7 @@
 FileNameAsCustomTestSuffix
 );
 
-INSTANTIATE_TEST_CASE_P(
+INSTANTIATE_TEST_SUITE_P(
     Glsl, CompileUpgradeTextureToSampledTextureAndDropSamplersTest,
     ::testing::ValuesIn(std::vector<std::string>({
       "spv.texture.sampler.transform.frag",
diff --git a/gtests/TestFixture.h b/gtests/TestFixture.h
old mode 100755
new mode 100644
index c8e72d3..2b057dc
--- a/gtests/TestFixture.h
+++ b/gtests/TestFixture.h
@@ -253,7 +253,7 @@
         glslang::TProgram program;
         program.addShader(&shader);
         success &= program.link(controls);
-#ifndef GLSLANG_WEB
+#if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE)
         if (success)
             program.mapIO();
 #endif
@@ -315,7 +315,7 @@
         program.addShader(&shader);
         
         success &= program.link(controls);
-#ifndef GLSLANG_WEB
+#if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE)
         if (success)
             program.mapIO();
 #endif
@@ -360,7 +360,7 @@
         glslang::TProgram program;
         program.addShader(&shader);
         success &= program.link(controls);
-#ifndef GLSLANG_WEB
+#if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE)
         if (success)
             program.mapIO();
 #endif
diff --git a/gtests/VkRelaxed.FromFile.cpp b/gtests/VkRelaxed.FromFile.cpp
new file mode 100644
index 0000000..777134d
--- /dev/null
+++ b/gtests/VkRelaxed.FromFile.cpp
@@ -0,0 +1,305 @@
+//
+// Copyright (C) 2016-2017 Google, Inc.
+// Copyright (C) 2020 The Khronos Group Inc.
+//
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions
+// are met:
+//
+//    Redistributions of source code must retain the above copyright
+//    notice, this list of conditions and the following disclaimer.
+//
+//    Redistributions in binary form must reproduce the above
+//    copyright notice, this list of conditions and the following
+//    disclaimer in the documentation and/or other materials provided
+//    with the distribution.
+//
+//    Neither the name of 3Dlabs Inc. Ltd. nor the names of its
+//    contributors may be used to endorse or promote products derived
+//    from this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+// COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+// BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+// ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+// POSSIBILITY OF SUCH DAMAGE.
+//
+#include <algorithm>
+
+#include <gtest/gtest.h>
+
+#include "TestFixture.h"
+
+#include "glslang/MachineIndependent/iomapper.h"
+#include "glslang/MachineIndependent/reflection.h"
+
+#ifndef GLSLANG_WEB
+namespace glslangtest {
+namespace {
+
+struct vkRelaxedData {
+    std::vector<std::string> fileNames;
+    std::vector<std::vector<std::string>> resourceSetBindings;
+};
+
+using VulkanRelaxedTest = GlslangTest <::testing::TestWithParam<vkRelaxedData>>;
+
+template<class T>
+std::string interfaceName(T symbol) {
+    return symbol.getType()->getBasicType() == glslang::EbtBlock ? std::string(symbol.getType()->getTypeName().c_str()) : symbol.name;
+}
+
+bool verifyIOMapping(std::string& linkingError, glslang::TProgram& program) {
+    bool success = true;
+
+    // Verify IO Mapping by generating reflection for each stage individually
+    // and comparing layout qualifiers on the results
+
+
+    int reflectionOptions = EShReflectionDefault;
+    //reflectionOptions |= EShReflectionStrictArraySuffix;
+    //reflectionOptions |= EShReflectionBasicArraySuffix;
+    reflectionOptions |= EShReflectionIntermediateIO;
+    reflectionOptions |= EShReflectionSeparateBuffers;
+    reflectionOptions |= EShReflectionAllBlockVariables;
+    //reflectionOptions |= EShReflectionUnwrapIOBlocks;
+
+    success &= program.buildReflection(reflectionOptions);
+
+    // check that the reflection output from the individual stages all makes sense..
+    std::vector<glslang::TReflection> stageReflections;
+    for (int s = 0; s < EShLangCount; ++s) {
+        if (program.getIntermediate((EShLanguage)s)) {
+            stageReflections.emplace_back((EShReflectionOptions)reflectionOptions, (EShLanguage)s, (EShLanguage)s);
+            success &= stageReflections.back().addStage((EShLanguage)s, *program.getIntermediate((EShLanguage)s));
+        }
+    }
+
+    // check that input/output locations match between stages
+    auto it = stageReflections.begin();
+    auto nextIt = it + 1;
+    for (; nextIt != stageReflections.end(); it++, nextIt++) {
+        int numOut = it->getNumPipeOutputs();
+        std::map<std::string, const glslang::TObjectReflection*> pipeOut;
+
+        for (int i = 0; i < numOut; i++) {
+            const glslang::TObjectReflection& out = it->getPipeOutput(i);
+            std::string name = interfaceName(out);
+            pipeOut[name] = &out;
+        }
+
+        int numIn = nextIt->getNumPipeInputs();
+        for (int i = 0; i < numIn; i++) {
+            auto in = nextIt->getPipeInput(i);
+            std::string name = interfaceName(in);
+            auto out = pipeOut.find(name);
+
+            if (out != pipeOut.end()) {
+                auto inQualifier = in.getType()->getQualifier();
+                auto outQualifier = out->second->getType()->getQualifier();
+                success &= outQualifier.layoutLocation == inQualifier.layoutLocation;
+            }
+            else {
+                success &= false;
+            }
+        }
+    }
+
+    // compare uniforms in each stage to the program
+    {
+        int totalUniforms = program.getNumUniformVariables();
+        std::map<std::string, const glslang::TObjectReflection*> programUniforms;
+        for (int i = 0; i < totalUniforms; i++) {
+            const glslang::TObjectReflection& uniform = program.getUniform(i);
+            std::string name = interfaceName(uniform);
+            programUniforms[name] = &uniform;
+        }
+        it = stageReflections.begin();
+        for (; it != stageReflections.end(); it++) {
+            int numUniform = it->getNumUniforms();
+            std::map<std::string, glslang::TObjectReflection> uniforms;
+
+            for (int i = 0; i < numUniform; i++) {
+                glslang::TObjectReflection uniform = it->getUniform(i);
+                std::string name = interfaceName(uniform);
+                auto programUniform = programUniforms.find(name);
+
+                if (programUniform != programUniforms.end()) {
+                    auto stageQualifier = uniform.getType()->getQualifier();
+                    auto programQualifier = programUniform->second->getType()->getQualifier();
+
+                    success &= stageQualifier.layoutLocation == programQualifier.layoutLocation;
+                    success &= stageQualifier.layoutBinding == programQualifier.layoutBinding;
+                    success &= stageQualifier.layoutSet == programQualifier.layoutSet;
+                }
+                else {
+                    success &= false;
+                }
+            }
+        }
+    }
+
+    // compare uniform blocks in each stage to the program table
+    {
+        int totalUniforms = program.getNumUniformBlocks();
+        std::map<std::string, const glslang::TObjectReflection*> programUniforms;
+        for (int i = 0; i < totalUniforms; i++) {
+            const glslang::TObjectReflection& uniform = program.getUniformBlock(i);
+            std::string name = interfaceName(uniform);
+            programUniforms[name] = &uniform;
+        }
+        it = stageReflections.begin();
+        for (; it != stageReflections.end(); it++) {
+            int numUniform = it->getNumUniformBlocks();
+            std::map<std::string, glslang::TObjectReflection> uniforms;
+
+            for (int i = 0; i < numUniform; i++) {
+                glslang::TObjectReflection uniform = it->getUniformBlock(i);
+                std::string name = interfaceName(uniform);
+                auto programUniform = programUniforms.find(name);
+
+                if (programUniform != programUniforms.end()) {
+                    auto stageQualifier = uniform.getType()->getQualifier();
+                    auto programQualifier = programUniform->second->getType()->getQualifier();
+
+                    success &= stageQualifier.layoutLocation == programQualifier.layoutLocation;
+                    success &= stageQualifier.layoutBinding == programQualifier.layoutBinding;
+                    success &= stageQualifier.layoutSet == programQualifier.layoutSet;
+                }
+                else {
+                    success &= false;
+                }
+            }
+        }
+    }
+
+    if (!success) {
+        linkingError += "Mismatched cross-stage IO\n";
+    }
+
+    return success;
+}
+
+TEST_P(VulkanRelaxedTest, FromFile)
+{
+    const auto& fileNames = GetParam().fileNames;
+    const auto& resourceSetBindings = GetParam().resourceSetBindings;
+    Semantics semantics = Semantics::Vulkan;
+    const size_t fileCount = fileNames.size();
+    const EShMessages controls = DeriveOptions(Source::GLSL, semantics, Target::BothASTAndSpv);
+    GlslangResult result;
+
+    // Compile each input shader file.
+    bool success = true;
+    std::vector<std::unique_ptr<glslang::TShader>> shaders;
+    for (size_t i = 0; i < fileCount; ++i) {
+        std::string contents;
+        tryLoadFile(GlobalTestSettings.testRoot + "/" + fileNames[i],
+            "input", &contents);
+        shaders.emplace_back(
+            new glslang::TShader(GetShaderStage(GetSuffix(fileNames[i]))));
+        auto* shader = shaders.back().get();
+        
+        shader->setAutoMapLocations(true);
+        shader->setAutoMapBindings(true);
+
+        shader->setEnvInput(glslang::EShSourceGlsl, shader->getStage(), glslang::EShClientVulkan, 100);
+        shader->setEnvClient(glslang::EShClientVulkan, glslang::EShTargetVulkan_1_1);
+        shader->setEnvTarget(glslang::EShTargetSpv, glslang::EShTargetSpv_1_0);
+
+        // Use vulkan relaxed option
+        shader->setEnvInputVulkanRulesRelaxed();
+
+        success &= compile(shader, contents, "", controls);
+        
+        result.shaderResults.push_back(
+            { fileNames[i], shader->getInfoLog(), shader->getInfoDebugLog() });
+    }
+
+    // Link all of them.
+    glslang::TProgram program;
+    for (const auto& shader : shaders) program.addShader(shader.get());
+    success &= program.link(controls);
+    result.linkingOutput = program.getInfoLog();
+    result.linkingError = program.getInfoDebugLog();
+
+    if (!resourceSetBindings.empty()) {
+        assert(resourceSetBindings.size() == fileNames.size());
+        for (size_t i = 0; i < shaders.size(); i++)
+            shaders[i]->setResourceSetBinding(resourceSetBindings[i]);
+    }
+
+    unsigned int stage = 0;
+    glslang::TIntermediate* firstIntermediate = nullptr;
+    while (!program.getIntermediate((EShLanguage)stage) && stage < EShLangCount) { stage++; }
+    firstIntermediate = program.getIntermediate((EShLanguage)stage);
+
+    glslang::TDefaultGlslIoResolver resolver(*firstIntermediate);
+    glslang::TGlslIoMapper ioMapper;
+
+    if (success) {
+        success &= program.mapIO(&resolver, &ioMapper);
+        result.linkingOutput = program.getInfoLog();
+        result.linkingError = program.getInfoDebugLog();
+    }
+
+    success &= verifyIOMapping(result.linkingError, program);
+    result.validationResult = success;
+
+    if (success && (controls & EShMsgSpvRules)) {
+        for (int stage = 0; stage < EShLangCount; ++stage) {
+            if (program.getIntermediate((EShLanguage)stage)) {
+                spv::SpvBuildLogger logger;
+                std::vector<uint32_t> spirv_binary;
+                options().disableOptimizer = false;
+                glslang::GlslangToSpv(*program.getIntermediate((EShLanguage)stage),
+                    spirv_binary, &logger, &options());
+
+                std::ostringstream disassembly_stream;
+                spv::Parameterize();
+                spv::Disassemble(disassembly_stream, spirv_binary);
+                result.spirvWarningsErrors += logger.getAllMessages();
+                result.spirv += disassembly_stream.str();
+                result.validationResult &= !options().validate || logger.getAllMessages().empty();
+            }
+        }
+    }
+
+    std::ostringstream stream;
+    outputResultToStream(&stream, result, controls);
+
+    // Check with expected results.
+    const std::string expectedOutputFname =
+        GlobalTestSettings.testRoot + "/baseResults/" + fileNames.front() + ".out";
+    std::string expectedOutput;
+    tryLoadFile(expectedOutputFname, "expected output", &expectedOutput);
+
+    checkEqAndUpdateIfRequested(expectedOutput, stream.str(), expectedOutputFname,
+        result.spirvWarningsErrors);
+}
+
+// clang-format off
+INSTANTIATE_TEST_SUITE_P(
+    Glsl, VulkanRelaxedTest,
+    ::testing::ValuesIn(std::vector<vkRelaxedData>({
+        {{"vk.relaxed.frag"}},
+        {{"vk.relaxed.link1.frag", "vk.relaxed.link2.frag"}},
+        {{"vk.relaxed.stagelink.vert", "vk.relaxed.stagelink.frag"}},
+        {{"vk.relaxed.errorcheck.vert", "vk.relaxed.errorcheck.frag"}},
+        {{"vk.relaxed.changeSet.vert", "vk.relaxed.changeSet.frag" }, { {"0"}, {"1"} } },
+    }))
+);
+// clang-format on
+
+}  // anonymous namespace
+}  // namespace glslangtest
+#endif 
diff --git a/known_good.json b/known_good.json
index eca209a..e69a3ae 100644
--- a/known_good.json
+++ b/known_good.json
@@ -5,14 +5,14 @@
       "site" : "github",
       "subrepo" : "KhronosGroup/SPIRV-Tools",
       "subdir" : "External/spirv-tools",
-      "commit" : "895927bd3f2d653f40cebab55aa6c7eabde30a86"
+      "commit" : "48007a5c7f7cc671b391bebd46e87fd6edc6c24b"
     },
     {
       "name" : "spirv-tools/external/spirv-headers",
       "site" : "github",
       "subrepo" : "KhronosGroup/SPIRV-Headers",
       "subdir" : "External/spirv-tools/external/spirv-headers",
-      "commit" : "979924c8bc839e4cb1b69d03d48398551f369ce7"
+      "commit" : "f88a1f98fa7a44ccfcf33d810c72b200e7d9a78a"
     }
   ]
 }
diff --git a/kokoro/linux-clang-gn/build-docker.sh b/kokoro/linux-clang-gn/build-docker.sh
new file mode 100755
index 0000000..1035ab8
--- /dev/null
+++ b/kokoro/linux-clang-gn/build-docker.sh
@@ -0,0 +1,55 @@
+#!/bin/bash
+
+# Copyright (C) 2020 Google, Inc.
+#
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+#    Redistributions of source code must retain the above copyright
+#    notice, this list of conditions and the following disclaimer.
+#
+#    Redistributions in binary form must reproduce the above
+#    copyright notice, this list of conditions and the following
+#    disclaimer in the documentation and/or other materials provided
+#    with the distribution.
+#
+#    Neither the name of Google Inc. nor the names of its
+#    contributors may be used to endorse or promote products derived
+#    from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+# COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+# POSSIBILITY OF SUCH DAMAGE.
+
+set -e # Fail on any error.
+set -x # Display commands being run.
+
+echo "Fetching external projects..."
+./update_glslang_sources.py
+
+echo "Fetching depot_tools..."
+mkdir -p /tmp/depot_tools
+curl https://storage.googleapis.com/chrome-infra/depot_tools.zip -o /tmp/depot_tools.zip
+unzip /tmp/depot_tools.zip -d /tmp/depot_tools
+rm /tmp/depot_tools.zip
+export PATH="/tmp/depot_tools:$PATH"
+
+echo "Syncing client..."
+gclient sync --gclientfile=standalone.gclient
+gn gen out/Default
+
+echo "Building..."
+cd out/Default
+ninja
diff --git a/kokoro/linux-clang-gn/build.sh b/kokoro/linux-clang-gn/build.sh
new file mode 100755
index 0000000..563432a
--- /dev/null
+++ b/kokoro/linux-clang-gn/build.sh
@@ -0,0 +1,49 @@
+#!/bin/bash
+
+# Copyright (C) 2020 Google, Inc.
+#
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+#    Redistributions of source code must retain the above copyright
+#    notice, this list of conditions and the following disclaimer.
+#
+#    Redistributions in binary form must reproduce the above
+#    copyright notice, this list of conditions and the following
+#    disclaimer in the documentation and/or other materials provided
+#    with the distribution.
+#
+#    Neither the name of Google Inc. nor the names of its
+#    contributors may be used to endorse or promote products derived
+#    from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+# COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+# POSSIBILITY OF SUCH DAMAGE.
+
+set -e # Fail on any error.
+
+SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd )"
+ROOT_DIR="$( cd "${SCRIPT_DIR}/../.." >/dev/null 2>&1 && pwd )"
+
+docker run --rm -i \
+  --volume "${ROOT_DIR}:${ROOT_DIR}" \
+  --workdir "${ROOT_DIR}" \
+  --env ROOT_DIR="${ROOT_DIR}" \
+  --env SCRIPT_DIR="${SCRIPT_DIR}" \
+  --entrypoint "${SCRIPT_DIR}/build-docker.sh" \
+  "gcr.io/shaderc-build/radial-build:latest"
+
+sudo chown -R "$(id -u):$(id -g)" "${ROOT_DIR}"
diff --git a/kokoro/linux-clang-gn/continuous.cfg b/kokoro/linux-clang-gn/continuous.cfg
new file mode 100644
index 0000000..1b19146
--- /dev/null
+++ b/kokoro/linux-clang-gn/continuous.cfg
@@ -0,0 +1,35 @@
+# Copyright (C) 2020 Google, Inc.
+#
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+#    Redistributions of source code must retain the above copyright
+#    notice, this list of conditions and the following disclaimer.
+#
+#    Redistributions in binary form must reproduce the above
+#    copyright notice, this list of conditions and the following
+#    disclaimer in the documentation and/or other materials provided
+#    with the distribution.
+#
+#    Neither the name of Google Inc. nor the names of its
+#    contributors may be used to endorse or promote products derived
+#    from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+# COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+# POSSIBILITY OF SUCH DAMAGE.
+
+# Continuous build configuration.
+build_file: "glslang/kokoro/linux-clang-gn/build.sh"
diff --git a/kokoro/linux-clang-gn/presubmit.cfg b/kokoro/linux-clang-gn/presubmit.cfg
new file mode 100644
index 0000000..a72b9a8
--- /dev/null
+++ b/kokoro/linux-clang-gn/presubmit.cfg
@@ -0,0 +1,35 @@
+# Copyright (C) 2020 Google, Inc.
+#
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+#    Redistributions of source code must retain the above copyright
+#    notice, this list of conditions and the following disclaimer.
+#
+#    Redistributions in binary form must reproduce the above
+#    copyright notice, this list of conditions and the following
+#    disclaimer in the documentation and/or other materials provided
+#    with the distribution.
+#
+#    Neither the name of Google Inc. nor the names of its
+#    contributors may be used to endorse or promote products derived
+#    from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+# COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+# POSSIBILITY OF SUCH DAMAGE.
+
+# Presubmit build configuration.
+build_file: "glslang/kokoro/linux-clang-gn/build.sh"
diff --git a/license-checker.cfg b/license-checker.cfg
index 886b335..409f18e 100644
--- a/license-checker.cfg
+++ b/license-checker.cfg
@@ -1,6 +1,7 @@
 [
     {
         "licenses": [
+            "Apache-2.0",
             "Apache-2.0-Header",
             "BSD-2-Clause",
             "BSD-3-Clause",
@@ -29,14 +30,19 @@
                     "build/**",
                     "out/**",
                     "Test/**",
-                    "External/spirv-tools/**"
+                    "External/spirv-tools/**",
+
+                    "SPIRV/GLSL.*.h",
+                    "SPIRV/NonSemanticDebugPrintf.h",
+                    "SPIRV/spirv.hpp"
                 ]
             }
         ]
     },
     {
         "licenses": [
-            "GPL-Header"
+            "GPL-Header",
+            "GPL-3.0-or-later"
         ],
         "paths": [
             { "exclude": [ "**" ] },
diff --git a/parse_version.cmake b/parse_version.cmake
new file mode 100644
index 0000000..b9ba413
--- /dev/null
+++ b/parse_version.cmake
@@ -0,0 +1,41 @@
+# Copyright (C) 2020 Google, Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# parse_version() reads and parses the version string from FILE, assigning the
+# version string to ${PROJECT}_VERSION and the parsed version to
+# ${PROJECT}_VERSION_MAJOR, ${PROJECT}_VERSION_MINOR, ${PROJECT}_VERSION_PATCH,
+# and the optional ${PROJECT}_VERSION_FLAVOR.
+#
+# The version string take one of the forms:
+#    <major>.<minor>.<patch>
+#    <major>.<minor>.<patch>-<flavor>
+function(parse_version FILE PROJECT)
+    configure_file(${FILE} "${CMAKE_CURRENT_BINARY_DIR}/CHANGES.md") # Required to re-run cmake on version change
+    file(READ ${FILE} CHANGES)
+    if(${CHANGES} MATCHES "#+ *([0-9]+)\\.([0-9]+)\\.([0-9]+)(-[a-zA-Z0-9]+)?")
+        set(FLAVOR "")
+        if(NOT "${CMAKE_MATCH_4}" STREQUAL "")
+            string(SUBSTRING ${CMAKE_MATCH_4} 1 -1 FLAVOR)
+        endif()
+        set("${PROJECT}_VERSION_MAJOR"  ${CMAKE_MATCH_1} PARENT_SCOPE)
+        set("${PROJECT}_VERSION_MINOR"  ${CMAKE_MATCH_2} PARENT_SCOPE)
+        set("${PROJECT}_VERSION_PATCH"  ${CMAKE_MATCH_3} PARENT_SCOPE)
+        set("${PROJECT}_VERSION_FLAVOR" ${FLAVOR}        PARENT_SCOPE)
+        set("${PROJECT}_VERSION"
+            "${CMAKE_MATCH_1}.${CMAKE_MATCH_2}.${CMAKE_MATCH_3}${CMAKE_MATCH_4}"
+            PARENT_SCOPE)
+    else()
+        message(FATAL_ERROR "Unable to parse version from '${FILE}'")
+    endif()
+endfunction()
diff --git a/standalone.gclient b/standalone.gclient
new file mode 100644
index 0000000..de067db
--- /dev/null
+++ b/standalone.gclient
@@ -0,0 +1,42 @@
+# Copyright (C) 2020 The Khronos Group Inc.
+#
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+#    Redistributions of source code must retain the above copyright
+#    notice, this list of conditions and the following disclaimer.
+#
+#    Redistributions in binary form must reproduce the above
+#    copyright notice, this list of conditions and the following
+#    disclaimer in the documentation and/or other materials provided
+#    with the distribution.
+#
+#    Neither the name of The Khronos Group Inc. nor the names of its
+#    contributors may be used to endorse or promote products derived
+#    from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+# COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+# POSSIBILITY OF SUCH DAMAGE.
+
+solutions = [
+  { "name"        : ".",
+    "url"         : "https://github.com/KhronosGroup/glslang",
+    "deps_file"   : "DEPS",
+    "managed"     : False,
+    "custom_deps" : {
+    },
+  },
+]
